Files
nxxmdata/government-backend/controllers/HarmlessRegistrationController.js

235 lines
6.0 KiB
JavaScript

const { validationResult } = require('express-validator');
const { Op } = require('sequelize');
const HarmlessRegistration = require('../models/HarmlessRegistration');
// 获取无害化登记列表
exports.getList = async (req, res) => {
try {
const { page = 1, pageSize = 10, keyword = '', startDate = '', endDate = '' } = req.query;
const offset = (page - 1) * pageSize;
const where = {};
if (keyword) {
where.registrationNumber = { [Op.like]: `%${keyword}%` };
}
if (startDate) {
where.processingDate = where.processingDate || {};
where.processingDate[Op.gte] = startDate;
}
if (endDate) {
where.processingDate = where.processingDate || {};
where.processingDate[Op.lte] = endDate;
}
const result = await HarmlessRegistration.findAndCountAll({
where,
limit: parseInt(pageSize),
offset: parseInt(offset),
order: [['createTime', 'DESC']]
});
res.json({
code: 200,
message: '获取成功',
data: {
list: result.rows,
total: result.count
}
});
} catch (error) {
console.error('获取无害化登记列表失败:', error);
res.status(500).json({
code: 500,
message: '获取失败',
error: error.message
});
}
};
// 获取无害化登记详情
exports.getDetail = async (req, res) => {
try {
const { id } = req.params;
const registration = await HarmlessRegistration.findByPk(id);
if (!registration) {
return res.status(404).json({
code: 404,
message: '无害化登记不存在'
});
}
res.json({
code: 200,
message: '获取成功',
data: registration
});
} catch (error) {
console.error('获取无害化登记详情失败:', error);
res.status(500).json({
code: 500,
message: '获取失败',
error: error.message
});
}
};
// 创建无害化登记
exports.create = async (req, res) => {
try {
// 验证请求参数
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({
code: 400,
message: '参数验证失败',
errors: errors.array()
});
}
const { registrationNumber, animalType, quantity, reason,
processingMethod, processingPlace, processingDate, registrant, status } = req.body;
// 检查登记编号是否已存在
const existingRegistration = await HarmlessRegistration.findOne({
where: { registrationNumber }
});
if (existingRegistration) {
return res.status(400).json({
code: 400,
message: '登记编号已存在'
});
}
const registration = await HarmlessRegistration.create({
registrationNumber,
animalType,
quantity: parseInt(quantity),
reason,
processingMethod,
processingPlace,
processingDate,
registrant,
status: status || '待处理',
createTime: new Date(),
updateTime: new Date()
});
res.json({
code: 200,
message: '创建成功',
data: registration
});
} catch (error) {
console.error('创建无害化登记失败:', error);
res.status(500).json({
code: 500,
message: '创建失败',
error: error.message
});
}
};
// 更新无害化登记
exports.update = async (req, res) => {
try {
const { id } = req.params;
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({
code: 400,
message: '参数验证失败',
errors: errors.array()
});
}
const registration = await HarmlessRegistration.findByPk(id);
if (!registration) {
return res.status(404).json({
code: 404,
message: '无害化登记不存在'
});
}
const { registrationNumber, animalType, quantity, reason,
processingMethod, processingPlace, processingDate, registrant, status } = req.body;
// 检查登记编号是否已被其他记录使用
if (registrationNumber && registrationNumber !== registration.registrationNumber) {
const existingRegistration = await HarmlessRegistration.findOne({
where: {
registrationNumber,
id: { [Op.ne]: id }
}
});
if (existingRegistration) {
return res.status(400).json({
code: 400,
message: '登记编号已存在'
});
}
}
await registration.update({
registrationNumber: registrationNumber || registration.registrationNumber,
animalType: animalType || registration.animalType,
quantity: quantity !== undefined ? parseInt(quantity) : registration.quantity,
reason: reason || registration.reason,
processingMethod: processingMethod || registration.processingMethod,
processingPlace: processingPlace || registration.processingPlace,
processingDate: processingDate || registration.processingDate,
registrant: registrant || registration.registrant,
status: status !== undefined ? status : registration.status,
updateTime: new Date()
});
res.json({
code: 200,
message: '更新成功',
data: registration
});
} catch (error) {
console.error('更新无害化登记失败:', error);
res.status(500).json({
code: 500,
message: '更新失败',
error: error.message
});
}
};
// 删除无害化登记
exports.delete = async (req, res) => {
try {
const { id } = req.params;
const registration = await HarmlessRegistration.findByPk(id);
if (!registration) {
return res.status(404).json({
code: 404,
message: '无害化登记不存在'
});
}
await registration.destroy();
res.json({
code: 200,
message: '删除成功'
});
} catch (error) {
console.error('删除无害化登记失败:', error);
res.status(500).json({
code: 500,
message: '删除失败',
error: error.message
});
}
};