119 lines
3.4 KiB
JavaScript
119 lines
3.4 KiB
JavaScript
/**
|
|
* 耗材操作日志表结构迁移脚本
|
|
* 添加修改记录相关字段
|
|
*/
|
|
|
|
const { sequelize } = require('../db');
|
|
|
|
async function migrate() {
|
|
try {
|
|
console.log('开始迁移耗材操作日志表...');
|
|
|
|
// 检查并添加 isEditable 字段
|
|
try {
|
|
await sequelize.query(`
|
|
ALTER TABLE consumable_logs ADD COLUMN isEditable BOOLEAN DEFAULT 1
|
|
`);
|
|
console.log('✓ 添加 isEditable 字段成功');
|
|
} catch (err) {
|
|
if (err.message.includes('duplicate column name')) {
|
|
console.log('✓ isEditable 字段已存在');
|
|
} else {
|
|
throw err;
|
|
}
|
|
}
|
|
|
|
// 检查并添加 originalLogId 字段
|
|
try {
|
|
await sequelize.query(`
|
|
ALTER TABLE consumable_logs ADD COLUMN originalLogId INTEGER
|
|
`);
|
|
console.log('✓ 添加 originalLogId 字段成功');
|
|
} catch (err) {
|
|
if (err.message.includes('duplicate column name')) {
|
|
console.log('✓ originalLogId 字段已存在');
|
|
} else {
|
|
throw err;
|
|
}
|
|
}
|
|
|
|
// 检查并添加 modifiedBy 字段
|
|
try {
|
|
await sequelize.query(`
|
|
ALTER TABLE consumable_logs ADD COLUMN modifiedBy VARCHAR(255)
|
|
`);
|
|
console.log('✓ 添加 modifiedBy 字段成功');
|
|
} catch (err) {
|
|
if (err.message.includes('duplicate column name')) {
|
|
console.log('✓ modifiedBy 字段已存在');
|
|
} else {
|
|
throw err;
|
|
}
|
|
}
|
|
|
|
// 检查并添加 modifiedAt 字段
|
|
try {
|
|
await sequelize.query(`
|
|
ALTER TABLE consumable_logs ADD COLUMN modifiedAt DATETIME
|
|
`);
|
|
console.log('✓ 添加 modifiedAt 字段成功');
|
|
} catch (err) {
|
|
if (err.message.includes('duplicate column name')) {
|
|
console.log('✓ modifiedAt 字段已存在');
|
|
} else {
|
|
throw err;
|
|
}
|
|
}
|
|
|
|
// 检查并添加 modificationReason 字段
|
|
try {
|
|
await sequelize.query(`
|
|
ALTER TABLE consumable_logs ADD COLUMN modificationReason VARCHAR(255)
|
|
`);
|
|
console.log('✓ 添加 modificationReason 字段成功');
|
|
} catch (err) {
|
|
if (err.message.includes('duplicate column name')) {
|
|
console.log('✓ modificationReason 字段已存在');
|
|
} else {
|
|
throw err;
|
|
}
|
|
}
|
|
|
|
// 创建索引
|
|
try {
|
|
await sequelize.query(`
|
|
CREATE INDEX IF NOT EXISTS idx_consumable_logs_original_log_id ON consumable_logs(originalLogId)
|
|
`);
|
|
console.log('✓ 创建 originalLogId 索引成功');
|
|
} catch (err) {
|
|
console.log('! originalLogId 索引创建失败:', err.message);
|
|
}
|
|
|
|
try {
|
|
await sequelize.query(`
|
|
CREATE INDEX IF NOT EXISTS idx_consumable_logs_is_editable ON consumable_logs(isEditable)
|
|
`);
|
|
console.log('✓ 创建 isEditable 索引成功');
|
|
} catch (err) {
|
|
console.log('! isEditable 索引创建失败:', err.message);
|
|
}
|
|
|
|
// 更新现有记录:将出入库、调整等系统生成的记录标记为不可编辑
|
|
const [result] = await sequelize.query(`
|
|
UPDATE consumable_logs
|
|
SET isEditable = 0
|
|
WHERE operationType IN ('in', 'out', 'adjust')
|
|
AND (isEditable IS NULL OR isEditable = 1)
|
|
`);
|
|
console.log(`✓ 更新 ${result.changes || 0} 条系统生成记录为不可编辑状态`);
|
|
|
|
console.log('\n迁移完成!');
|
|
process.exit(0);
|
|
} catch (error) {
|
|
console.error('迁移失败:', error);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
migrate();
|