-- 批次追溯数据模型补强
|
-- 说明:字段先允许为空,历史数据回填完成后再评估是否收紧约束。
|
-- 注意:项目不使用 tenant_id;执行前请确认字段和索引不存在。
|
|
ALTER TABLE mes_wm_batch
|
ADD COLUMN pro_batch_id BIGINT NULL COMMENT '对应生产批次ID' AFTER id;
|
ALTER TABLE mes_wm_batch
|
ADD INDEX idx_mes_wm_batch_pro_batch_id (pro_batch_id);
|
|
ALTER TABLE mes_wm_sn
|
ADD COLUMN pro_batch_id BIGINT NULL COMMENT '生产批次ID' AFTER id;
|
ALTER TABLE mes_wm_sn
|
ADD COLUMN bag_code_id BIGINT NULL COMMENT '袋码ID' AFTER pro_batch_id;
|
ALTER TABLE mes_wm_sn
|
ADD COLUMN pallet_id BIGINT NULL COMMENT '托盘ID' AFTER bag_code_id;
|
ALTER TABLE mes_wm_sn
|
ADD COLUMN sales_id BIGINT NULL COMMENT '销售出库单ID' AFTER pallet_id;
|
ALTER TABLE mes_wm_sn
|
ADD INDEX idx_mes_wm_sn_pro_batch_id (pro_batch_id);
|
ALTER TABLE mes_wm_sn
|
ADD INDEX idx_mes_wm_sn_bag_code_id (bag_code_id);
|
|
ALTER TABLE mes_qc_seed_quality
|
ADD COLUMN batch_id BIGINT NULL COMMENT '生产批次ID' AFTER item_id;
|
ALTER TABLE mes_qc_seed_quality
|
ADD INDEX idx_mes_qc_seed_quality_batch_id (batch_id);
|
|
CREATE TABLE mes_trace_event (
|
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
event_no VARCHAR(64) NOT NULL COMMENT '事件编号',
|
event_type VARCHAR(32) NOT NULL COMMENT '事件类型',
|
event_category VARCHAR(32) NULL COMMENT '事件分类',
|
event_time DATETIME NOT NULL COMMENT '事件时间',
|
pro_batch_id BIGINT NULL COMMENT '生产批次ID',
|
wm_batch_id BIGINT NULL COMMENT '仓储批次ID',
|
bag_code_id BIGINT NULL COMMENT '袋码ID',
|
pallet_id BIGINT NULL COMMENT '托盘ID',
|
sn_id BIGINT NULL COMMENT 'SN ID',
|
item_id BIGINT NULL COMMENT '物料ID',
|
biz_type VARCHAR(32) NULL COMMENT '业务类型',
|
biz_id BIGINT NULL COMMENT '业务ID',
|
biz_code VARCHAR(100) NULL COMMENT '业务编码',
|
biz_line_id BIGINT NULL COMMENT '业务明细ID',
|
from_node_type VARCHAR(32) NULL COMMENT '来源节点类型',
|
from_node_id BIGINT NULL COMMENT '来源节点ID',
|
from_node_code VARCHAR(100) NULL COMMENT '来源节点编码',
|
to_node_type VARCHAR(32) NULL COMMENT '目标节点类型',
|
to_node_id BIGINT NULL COMMENT '目标节点ID',
|
to_node_code VARCHAR(100) NULL COMMENT '目标节点编码',
|
quantity DECIMAL(18, 6) NULL COMMENT '数量',
|
warehouse_id BIGINT NULL COMMENT '仓库ID',
|
location_id BIGINT NULL COMMENT '库区ID',
|
area_id BIGINT NULL COMMENT '库位ID',
|
line_id BIGINT NULL COMMENT '产线ID',
|
work_order_id BIGINT NULL COMMENT '工单ID',
|
process_id BIGINT NULL COMMENT '工序ID',
|
sales_id BIGINT NULL COMMENT '销售出库单ID',
|
quality_id BIGINT NULL COMMENT '质检记录ID',
|
operator_id BIGINT NULL COMMENT '操作人ID',
|
payload_json JSON NULL COMMENT '事件扩展数据',
|
content_hash VARCHAR(64) NULL COMMENT '事件内容SHA-256摘要',
|
prev_hash VARCHAR(64) NULL COMMENT '前一事件摘要',
|
creator VARCHAR(64) NULL DEFAULT '' COMMENT '创建者',
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
updater VARCHAR(64) NULL DEFAULT '' COMMENT '更新者',
|
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
deleted BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
PRIMARY KEY (id),
|
UNIQUE KEY uk_mes_trace_event_no (event_no),
|
KEY idx_mes_trace_event_batch_time (pro_batch_id, event_time),
|
KEY idx_mes_trace_event_biz (biz_type, biz_id, biz_line_id),
|
KEY idx_mes_trace_event_nodes (from_node_id, to_node_id)
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='MES统一追溯事件';
|
|
-- 历史数据回填示例,确认数据质量后执行:
|
-- UPDATE mes_wm_batch w JOIN mes_pro_batch p ON p.code = w.code AND p.deleted = b'0'
|
-- SET w.pro_batch_id = p.id WHERE w.pro_batch_id IS NULL AND w.deleted = b'0';
|
-- UPDATE mes_qc_seed_quality q JOIN mes_pro_batch p ON p.code = q.batch_code AND p.deleted = b'0'
|
-- SET q.batch_id = p.id WHERE q.batch_id IS NULL AND q.deleted = b'0';
|