Files
yunrui_asset/backend/models/ConsumableLog.js
T

102 lines
2.3 KiB
JavaScript

const { DataTypes } = require('sequelize');
const { sequelize } = require('../db');
const Consumable = require('./Consumable');
const ConsumableLog = sequelize.define('ConsumableLog', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
consumableId: {
type: DataTypes.STRING,
allowNull: false,
comment: '耗材ID'
},
consumableName: {
type: DataTypes.STRING,
allowNull: false,
comment: '耗材名称'
},
operationType: {
type: DataTypes.ENUM('in', 'out', 'create', 'update', 'delete', 'adjust', 'import'),
allowNull: false,
comment: '操作类型'
},
quantity: {
type: DataTypes.INTEGER,
defaultValue: 0,
comment: '变动数量(入库为正,出库为负)'
},
previousStock: {
type: DataTypes.INTEGER,
allowNull: false,
comment: '操作前库存'
},
currentStock: {
type: DataTypes.INTEGER,
allowNull: false,
comment: '操作后库存'
},
operator: {
type: DataTypes.STRING,
comment: '操作人'
},
reason: {
type: DataTypes.STRING,
comment: '操作原因'
},
notes: {
type: DataTypes.TEXT,
comment: '备注'
},
relatedId: {
type: DataTypes.STRING,
comment: '关联ID(如订单号、盘点ID等)'
},
isEditable: {
type: DataTypes.BOOLEAN,
defaultValue: true,
comment: '是否可编辑(创建、导入的记录可编辑,系统生成的出入库记录不可编辑)'
},
originalLogId: {
type: DataTypes.INTEGER,
allowNull: true,
comment: '原始日志ID(用于追踪修改历史链)'
},
modifiedBy: {
type: DataTypes.STRING,
allowNull: true,
comment: '修改人'
},
modifiedAt: {
type: DataTypes.DATE,
allowNull: true,
comment: '修改时间'
},
modificationReason: {
type: DataTypes.STRING,
allowNull: true,
comment: '修改原因'
}
}, {
tableName: 'consumable_logs',
timestamps: true,
comment: '耗材操作日志表',
indexes: [
{ fields: ['consumableId'] },
{ fields: ['operationType'] },
{ fields: ['createdAt'] },
{ fields: ['consumableId', 'createdAt'] },
{ fields: ['originalLogId'] },
{ fields: ['isEditable'] }
]
});
ConsumableLog.belongsTo(Consumable, {
foreignKey: 'consumableId',
onDelete: 'CASCADE'
});
module.exports = ConsumableLog;