Files
nxxmdata/bank-backend/scripts/seed-supervision-tasks.js

262 lines
8.3 KiB
JavaScript

/**
* 监管任务测试数据种子文件
* @file seed-supervision-tasks.js
* @description 为监管任务表添加测试数据
*/
const { sequelize, SupervisionTask, User } = require('../models');
async function seedSupervisionTasks() {
try {
console.log('🌱 开始添加监管任务测试数据...');
// 检查是否已有数据
const existingCount = await SupervisionTask.count();
if (existingCount > 0) {
console.log(`⚠️ 监管任务表已有 ${existingCount} 条数据,跳过种子数据添加`);
return;
}
// 获取管理员用户ID
const adminUser = await User.findOne({ where: { username: 'admin' } });
if (!adminUser) {
console.log('❌ 未找到管理员用户,请先运行用户种子数据');
return;
}
const adminId = adminUser.id;
// 监管任务测试数据
const supervisionTasks = [
{
applicationNumber: 'APP001',
contractNumber: 'CONTRACT001',
productName: '农业贷款产品A',
customerName: '张三',
idType: 'id_card',
idNumber: '110101199001011234',
assetType: 'cattle',
assetQuantity: 10,
supervisionStatus: 'supervising',
importTime: new Date('2024-01-15 10:30:00'),
startTime: '2024-01-15',
endTime: '2024-12-15',
loanAmount: 500000.00,
interestRate: 0.0650,
loanTerm: 12,
supervisorName: '李监管员',
supervisorPhone: '13800138001',
farmAddress: '北京市朝阳区某某养殖场',
remarks: '重点监管项目,需要定期检查',
createdBy: adminId,
updatedBy: adminId
},
{
applicationNumber: 'APP002',
contractNumber: 'CONTRACT002',
productName: '农业贷款产品B',
customerName: '李四',
idType: 'id_card',
idNumber: '110101199002021234',
assetType: 'sheep',
assetQuantity: 20,
supervisionStatus: 'pending',
importTime: new Date('2024-01-16 14:20:00'),
startTime: '2024-01-16',
endTime: '2024-12-16',
loanAmount: 300000.00,
interestRate: 0.0600,
loanTerm: 12,
supervisorName: '王监管员',
supervisorPhone: '13800138002',
farmAddress: '北京市海淀区某某农场',
remarks: '新申请项目,待开始监管',
createdBy: adminId,
updatedBy: adminId
},
{
applicationNumber: 'APP003',
contractNumber: 'CONTRACT003',
productName: '农业贷款产品C',
customerName: '王五',
idType: 'id_card',
idNumber: '110101199003031234',
assetType: 'pig',
assetQuantity: 15,
supervisionStatus: 'completed',
importTime: new Date('2024-01-10 09:15:00'),
startTime: '2024-01-10',
endTime: '2024-01-20',
loanAmount: 200000.00,
interestRate: 0.0550,
loanTerm: 6,
supervisorName: '赵监管员',
supervisorPhone: '13800138003',
farmAddress: '北京市丰台区某某猪场',
remarks: '监管任务已完成,客户还款正常',
createdBy: adminId,
updatedBy: adminId
},
{
applicationNumber: 'APP004',
contractNumber: 'CONTRACT004',
productName: '农业贷款产品D',
customerName: '赵六',
idType: 'id_card',
idNumber: '110101199004041234',
assetType: 'poultry',
assetQuantity: 50,
supervisionStatus: 'supervising',
importTime: new Date('2024-01-20 11:45:00'),
startTime: '2024-01-20',
endTime: '2024-06-20',
loanAmount: 150000.00,
interestRate: 0.0700,
loanTerm: 6,
supervisorName: '孙监管员',
supervisorPhone: '13800138004',
farmAddress: '北京市通州区某某鸡场',
remarks: '家禽养殖项目,需要特别关注防疫情况',
createdBy: adminId,
updatedBy: adminId
},
{
applicationNumber: 'APP005',
contractNumber: 'CONTRACT005',
productName: '农业贷款产品E',
customerName: '孙七',
idType: 'id_card',
idNumber: '110101199005051234',
assetType: 'cattle',
assetQuantity: 25,
supervisionStatus: 'suspended',
importTime: new Date('2024-01-25 16:30:00'),
startTime: '2024-01-25',
endTime: '2024-12-25',
loanAmount: 800000.00,
interestRate: 0.0625,
loanTerm: 18,
supervisorName: '周监管员',
supervisorPhone: '13800138005',
farmAddress: '北京市昌平区某某牧场',
remarks: '因客户原因暂停监管,等待进一步通知',
createdBy: adminId,
updatedBy: adminId
},
{
applicationNumber: 'APP006',
contractNumber: 'CONTRACT006',
productName: '农业贷款产品F',
customerName: '周八',
idType: 'passport',
idNumber: 'P123456789',
assetType: 'other',
assetQuantity: 30,
supervisionStatus: 'supervising',
importTime: new Date('2024-02-01 08:20:00'),
startTime: '2024-02-01',
endTime: '2024-08-01',
loanAmount: 400000.00,
interestRate: 0.0680,
loanTerm: 6,
supervisorName: '吴监管员',
supervisorPhone: '13800138006',
farmAddress: '北京市顺义区某某特种养殖场',
remarks: '特种养殖项目,需要专业监管',
createdBy: adminId,
updatedBy: adminId
},
{
applicationNumber: 'APP007',
contractNumber: 'CONTRACT007',
productName: '农业贷款产品G',
customerName: '吴九',
idType: 'id_card',
idNumber: '110101199007071234',
assetType: 'sheep',
assetQuantity: 40,
supervisionStatus: 'pending',
importTime: new Date('2024-02-05 13:10:00'),
startTime: '2024-02-05',
endTime: '2024-12-05',
loanAmount: 600000.00,
interestRate: 0.0590,
loanTerm: 12,
supervisorName: '郑监管员',
supervisorPhone: '13800138007',
farmAddress: '北京市房山区某某羊场',
remarks: '大规模羊群养殖,需要加强监管',
createdBy: adminId,
updatedBy: adminId
},
{
applicationNumber: 'APP008',
contractNumber: 'CONTRACT008',
productName: '农业贷款产品H',
customerName: '郑十',
idType: 'id_card',
idNumber: '110101199008081234',
assetType: 'pig',
assetQuantity: 35,
supervisionStatus: 'completed',
importTime: new Date('2024-01-05 15:45:00'),
startTime: '2024-01-05',
endTime: '2024-03-05',
loanAmount: 350000.00,
interestRate: 0.0575,
loanTerm: 3,
supervisorName: '冯监管员',
supervisorPhone: '13800138008',
farmAddress: '北京市大兴区某某养猪场',
remarks: '短期养殖项目,已顺利完成监管',
createdBy: adminId,
updatedBy: adminId
}
];
// 批量创建监管任务
await SupervisionTask.bulkCreate(supervisionTasks);
console.log(`✅ 成功添加 ${supervisionTasks.length} 条监管任务测试数据`);
// 显示统计信息
const stats = await SupervisionTask.findAll({
attributes: [
'supervisionStatus',
[sequelize.fn('COUNT', sequelize.col('id')), 'count']
],
group: ['supervisionStatus'],
raw: true
});
console.log('📊 监管任务状态统计:');
stats.forEach(stat => {
const statusNames = {
'pending': '待监管',
'supervising': '监管中',
'completed': '已完成',
'suspended': '已暂停'
};
console.log(` ${statusNames[stat.supervisionStatus] || stat.supervisionStatus}: ${stat.count}`);
});
} catch (error) {
console.error('❌ 添加监管任务测试数据失败:', error);
throw error;
}
}
// 如果直接运行此文件
if (require.main === module) {
seedSupervisionTasks()
.then(() => {
console.log('🎉 监管任务种子数据添加完成');
process.exit(0);
})
.catch((error) => {
console.error('💥 监管任务种子数据添加失败:', error);
process.exit(1);
});
}
module.exports = seedSupervisionTasks;