Files
ShiErFeng/shierfeng-fastapi-backend/sql/patches/20261005_tunnel_material_flow_mysql.sql
T

112 lines
6.5 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 隧道物料流转:MySQL 增量补丁
-- 前置条件:已执行 20260922_test_data_batch_mysql.sql,且数据库中存在 biz_test_batch。
-- 本补丁只生成脚本,不在应用启动时自动执行;执行前请备份数据库并由 DBA 审核。
-- 业务层将新托盘/新装填固定为 100 包,数据库不增加 capacity_packages = 100
-- 约束,以兼容已有历史非 100 包托盘数据。
-- 隧道主数据:一个客户现场下的隧道编号唯一;current_trace_no 表示当前混批溯源号。
CREATE TABLE biz_tunnel (
tunnel_id BIGINT NOT NULL AUTO_INCREMENT COMMENT '隧道ID',
test_batch_id BIGINT NULL COMMENT '测试数据批次ID;NULL表示正式数据',
site_id BIGINT NOT NULL COMMENT '现场ID',
tunnel_code VARCHAR(64) NOT NULL COMMENT '隧道编号',
tunnel_name VARCHAR(100) NOT NULL COMMENT '隧道名称',
current_trace_no VARCHAR(64) NULL COMMENT '当前隧道物料溯源号',
current_trace_started_at DATETIME NULL COMMENT '当前溯源批次开始时间',
status CHAR(1) NOT NULL DEFAULT '0' COMMENT '状态(0正常 1停用)',
create_by VARCHAR(64) NULL DEFAULT '' COMMENT '创建者',
create_time DATETIME NULL COMMENT '创建时间',
update_by VARCHAR(64) NULL DEFAULT '' COMMENT '更新者',
update_time DATETIME NULL COMMENT '更新时间',
remark VARCHAR(500) NULL COMMENT '备注',
PRIMARY KEY (tunnel_id),
KEY idx_biz_tunnel_test_batch_id (test_batch_id),
CONSTRAINT uq_biz_tunnel_site_code UNIQUE (site_id, tunnel_code),
CONSTRAINT fk_biz_tunnel_test_batch_id FOREIGN KEY (test_batch_id) REFERENCES biz_test_batch (batch_id),
CONSTRAINT fk_biz_tunnel_site FOREIGN KEY (site_id) REFERENCES biz_customer_site (site_id),
CONSTRAINT ck_biz_tunnel_status CHECK (status IN ('0', '1'))
) ENGINE=InnoDB COMMENT='客户现场隧道主数据表';
-- 使用记录:保留入隧隧道、溯源号和生产批次快照;产线改为可选。
ALTER TABLE biz_usage_record
ADD COLUMN tunnel_id BIGINT NULL COMMENT '隧道ID;历史记录可能为空' AFTER site_id,
ADD COLUMN trace_no VARCHAR(64) NULL COMMENT '隧道物料内部溯源号;历史记录可能为空' AFTER tunnel_id,
ADD COLUMN batch_no_snapshot VARCHAR(64) NULL COMMENT '生产批次快照;历史记录可能为空' AFTER trace_no,
MODIFY COLUMN line_id BIGINT NULL COMMENT '产线ID(可选)',
ADD CONSTRAINT fk_biz_usage_record_tunnel FOREIGN KEY (tunnel_id) REFERENCES biz_tunnel (tunnel_id);
-- 退回明细:保存申请时的隧道、溯源号和批次快照。
ALTER TABLE biz_return_item
ADD COLUMN tunnel_id_snapshot BIGINT NULL COMMENT '申请时隧道ID快照' AFTER active_filling_id_snapshot,
ADD COLUMN trace_no_snapshot VARCHAR(64) NULL COMMENT '申请时物料溯源号快照' AFTER tunnel_id_snapshot,
ADD COLUMN batch_no_snapshot VARCHAR(64) NULL COMMENT '申请时生产批次快照' AFTER trace_no_snapshot,
ADD CONSTRAINT fk_biz_return_item_tunnel FOREIGN KEY (tunnel_id_snapshot) REFERENCES biz_tunnel (tunnel_id);
-- 当前库存:隧道归属和当前溯源号随托盘一起锁定维护。
ALTER TABLE biz_pallet_inventory
ADD COLUMN tunnel_id BIGINT NULL COMMENT '当前隧道ID' AFTER site_id,
ADD COLUMN trace_no VARCHAR(64) NULL COMMENT '当前隧道物料溯源号' AFTER tunnel_id,
ADD CONSTRAINT fk_biz_pallet_inventory_tunnel FOREIGN KEY (tunnel_id) REFERENCES biz_tunnel (tunnel_id);
-- 流转事件:为入隧、使用、退回保留隧道和溯源快照。
ALTER TABLE biz_pallet_event
ADD COLUMN before_tunnel_id BIGINT NULL COMMENT '变更前隧道ID' AFTER before_site_id,
ADD COLUMN after_tunnel_id BIGINT NULL COMMENT '变更后隧道ID' AFTER after_site_id,
ADD COLUMN trace_no VARCHAR(64) NULL COMMENT '事件关联物料溯源号' AFTER after_remaining_packages,
ADD COLUMN batch_no_snapshot VARCHAR(64) NULL COMMENT '事件生产批次快照' AFTER trace_no,
ADD CONSTRAINT fk_biz_pallet_event_before_tunnel FOREIGN KEY (before_tunnel_id) REFERENCES biz_tunnel (tunnel_id),
ADD CONSTRAINT fk_biz_pallet_event_after_tunnel FOREIGN KEY (after_tunnel_id) REFERENCES biz_tunnel (tunnel_id);
ALTER TABLE biz_pallet_event
DROP CHECK ck_biz_pallet_event_event_type,
ADD CONSTRAINT ck_biz_pallet_event_event_type CHECK (
event_type IN (
'INBOUND_CONFIRMED',
'FILLING_CONFIRMED',
'SHIPMENT_CONFIRMED',
'TUNNEL_ENTERED',
'USAGE_RECORDED',
'RETURN_REQUESTED',
'RETURN_CONFIRMED'
)
);
-- 菜单:只提供隧道查询/新增/修改权限,不提供物理删除权限。
INSERT INTO sys_menu (
menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
is_frame, is_cache, menu_type, visible, status, perms, icon, create_by,
create_time, update_by, update_time, remark
)
SELECT 520, '隧道资料', 121, 7, 'tunnel', 'master/tunnel/index', '', '',
1, 0, 'C', '0', '0', 'master:tunnel:list', '#', 'admin', SYSDATE(), '', NULL, '隧道资料菜单'
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 520);
INSERT INTO sys_menu (
menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
is_frame, is_cache, menu_type, visible, status, perms, icon, create_by,
create_time, update_by, update_time, remark
)
SELECT 1116, '隧道查询', 520, 1, '#', '', '', '',
1, 0, 'F', '0', '0', 'master:tunnel:query', '#', 'admin', SYSDATE(), '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 1116);
INSERT INTO sys_menu (
menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
is_frame, is_cache, menu_type, visible, status, perms, icon, create_by,
create_time, update_by, update_time, remark
)
SELECT 1117, '隧道新增', 520, 2, '#', '', '', '',
1, 0, 'F', '0', '0', 'master:tunnel:add', '#', 'admin', SYSDATE(), '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 1117);
INSERT INTO sys_menu (
menu_id, menu_name, parent_id, order_num, path, component, query, route_name,
is_frame, is_cache, menu_type, visible, status, perms, icon, create_by,
create_time, update_by, update_time, remark
)
SELECT 1118, '隧道修改', 520, 3, '#', '', '', '',
1, 0, 'F', '0', '0', 'master:tunnel:edit', '#', 'admin', SYSDATE(), '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 1118);
-- 重要:DDL 会隐式提交,不能依赖事务整体回滚;本文件未执行任何数据库操作。