From 8655501ffb8dbdaf2508e575933063e6731be714 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 28 八月 2026 17:14:40 +0800
Subject: [PATCH] refactor(mes): 重构MES生产批次和袋码管理功能

---
 sql/mysql/mes_pro_batch_bag_code_init.sql |   67 ++++++++++++++++++++++++++++-----
 1 files changed, 57 insertions(+), 10 deletions(-)

diff --git a/sql/mysql/mes_pro_batch_bag_code_init.sql b/sql/mysql/mes_pro_batch_bag_code_init.sql
index a3a1a03..ed7fc6c 100644
--- a/sql/mysql/mes_pro_batch_bag_code_init.sql
+++ b/sql/mysql/mes_pro_batch_bag_code_init.sql
@@ -12,8 +12,10 @@
 -- ----------------------------
 CREATE TABLE IF NOT EXISTS `mes_pro_batch` (
     `id`              BIGINT       NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
-    `code`            VARCHAR(64)  NOT NULL COMMENT '鎵规鍙凤紙鑷姩鐢熸垚锛氬墠缂�+鏃ユ湡+浜х嚎+鍝佺+娴佹按鍙凤級',
+    `code`            VARCHAR(64)  DEFAULT NULL COMMENT '鎵规鍙凤紙琛ュ綍涓氬姟淇℃伅鍚庤嚜鍔ㄧ敓鎴愶紱鍗曟褰曞叆鎴栬ˉ褰曟祦绋嬪繀濉級',
+    `temp_code`       VARCHAR(64)  DEFAULT NULL COMMENT '涓存椂鎵规鐮侊紙PB-8浣嶅叏灞�搴忓彿锛岄鐢熸垚浜岀淮鐮侀樁娈典娇鐢級',
     `item_id`         BIGINT       NOT NULL COMMENT '鍝佺锛堜骇鍝佺墿鏂欙級缂栧彿锛屽叧鑱� mdm_item.id',
+    `line_id`         BIGINT       DEFAULT NULL COMMENT '浜х嚎缂栧彿锛屽叧鑱� mes_pro_line.id',
     `line_code`       VARCHAR(32)  DEFAULT NULL COMMENT '浜х嚎缂栫爜锛堟墜濉紝鍙備笌鎵规鍙风敓鎴愶級',
     `line_name`       VARCHAR(64)  DEFAULT NULL COMMENT '浜х嚎鍚嶇О锛堟墜濉級',
     `machinery_id`    BIGINT       DEFAULT NULL COMMENT '鐢熶骇璁惧缂栧彿锛堟満锛夛紝鍏宠仈 mes_dv_machinery.id',
@@ -23,6 +25,11 @@
     `owner_user_id`   BIGINT       DEFAULT NULL COMMENT '璐d换浜虹敤鎴风紪鍙凤紙璐d换钀藉疄鍒颁汉锛夛紝鍏宠仈 system_users.id',
     `bag_quantity`    INT          NOT NULL DEFAULT 0 COMMENT '宸茬敓鎴愯鐮佹暟閲忥紙涓�琚嬩竴鐮侊級',
     `pallet_quantity` INT          NOT NULL DEFAULT 0 COMMENT '宸茬敓鎴愭墭鐩樼爜鏁伴噺',
+    `inbound_time`    DATETIME     DEFAULT NULL COMMENT '鍏ュ簱鏃堕棿',
+    `inbound_bag_quantity` INT      DEFAULT NULL COMMENT '绱鍏ュ簱琚嬫暟',
+    `inbound_event_id` BIGINT      DEFAULT NULL COMMENT '鏈�杩戝叆搴撲簨浠剁紪鍙�',
+    `inbound_device_code` VARCHAR(64) DEFAULT NULL COMMENT '鍏ュ簱璁惧缂栫爜',
+    `inbound_line_code` VARCHAR(64) DEFAULT NULL COMMENT '鍏ュ簱浜х嚎缂栫爜',
     `status`          TINYINT      NOT NULL DEFAULT 10 COMMENT '鎵规鐘舵�侊紙瀛楀吀 mes_pro_batch_status锛�10 鑽夌 20 鐢熶骇涓� 30 宸插畬鎴� 40 宸蹭綔搴燂級',
     `remark`          VARCHAR(500) DEFAULT NULL COMMENT '澶囨敞',
     `creator`         VARCHAR(64)  DEFAULT '' COMMENT '鍒涘缓鑰�',
@@ -32,6 +39,7 @@
     `deleted`         BIT(1)       NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
     PRIMARY KEY (`id`),
     UNIQUE KEY `uk_code` (`code`),
+    UNIQUE KEY `uk_temp_code` (`temp_code`),
     KEY `idx_item_id` (`item_id`),
     KEY `idx_work_order_id` (`work_order_id`),
     KEY `idx_status` (`status`)
@@ -61,12 +69,14 @@
 -- ----------------------------
 CREATE TABLE IF NOT EXISTS `mes_pro_pallet` (
     `id`         BIGINT       NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
-    `code`       VARCHAR(64)  NOT NULL COMMENT '鎵樼洏鐮侊紙鎵规鍙�-P+鎵樼洏搴忓彿锛屽叏灞�鍞竴锛�',
-    `batch_id`   BIGINT       NOT NULL COMMENT '鐢熶骇鎵规缂栧彿锛屽叧鑱� mes_pro_batch.id',
+    `code`       VARCHAR(64)  DEFAULT NULL COMMENT '鎵樼洏鐮侊紙鎵规鍙�-P+鎵樼洏搴忓彿锛岀粦瀹氭壒娆″悗鐢熸垚锛�',
+    `temp_code`  VARCHAR(64)  DEFAULT NULL COMMENT '涓存椂鎵樼洏鐮侊紙PL-8浣嶅叏灞�搴忓彿锛岄鐢熸垚浜岀淮鐮侀樁娈典娇鐢級',
+    `batch_id`   BIGINT       DEFAULT NULL COMMENT '鐢熶骇鎵规缂栧彿锛岀粦瀹氭壒娆″悗鍏宠仈 mes_pro_batch.id',
     `batch_code` VARCHAR(64)  DEFAULT NULL COMMENT '鎵规鍙凤紙鍐椾綑锛屼究浜庡睍绀猴級',
-    `pallet_no`  INT          NOT NULL COMMENT '鎵规鍐呮墭鐩樺簭鍙�',
+    `pallet_no`  INT          DEFAULT NULL COMMENT '鎵规鍐呮墭鐩樺簭鍙凤紙缁戝畾鎵规鍚庣敓鎴愶級',
     `capacity`   INT          DEFAULT NULL COMMENT '鍙琚嬫暟锛堣/鎵樼洏锛�',
     `bag_count`  INT          NOT NULL DEFAULT 0 COMMENT '宸茬粦瀹氳鐮佹暟閲�',
+    `auto_generated` BIT(1)    NOT NULL DEFAULT b'0' COMMENT '鏄惁鑷姩鐢熸垚',
     `status`     TINYINT      NOT NULL DEFAULT 10 COMMENT '鐘舵�侊紙瀛楀吀 mes_pro_pallet_status锛�10 鍚敤 20 浣滃簾锛�',
     `remark`     VARCHAR(255) DEFAULT NULL COMMENT '澶囨敞',
     `creator`    VARCHAR(64)  DEFAULT '' COMMENT '鍒涘缓鑰�',
@@ -76,6 +86,7 @@
     `deleted`    BIT(1)       NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
     PRIMARY KEY (`id`),
     UNIQUE KEY `uk_code` (`code`),
+    UNIQUE KEY `uk_temp_code` (`temp_code`),
     KEY `idx_batch_id` (`batch_id`)
 ) ENGINE = InnoDB COMMENT = 'MES 鎵樼洏鐮�';
 
@@ -85,15 +96,17 @@
 CREATE TABLE IF NOT EXISTS `mes_pro_bag_code` (
     `id`          BIGINT       NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
     `uuid`        VARCHAR(32)  DEFAULT NULL COMMENT '鐢熸垚缁� UUID锛堟爣璁板悓涓�娆$敓鎴愮殑鏁版嵁鍖咃級',
-    `code`        VARCHAR(64)  NOT NULL COMMENT '琚嬬爜锛堜簩缁寸爜鍐呭锛氭壒娆″彿-琚嬪簭鍙凤紝鍏ㄥ眬鍞竴锛�',
-    `bag_no`      INT          NOT NULL COMMENT '鎵规鍐呰搴忓彿',
-    `batch_id`    BIGINT       NOT NULL COMMENT '鐢熶骇鎵规缂栧彿锛屽叧鑱� mes_pro_batch.id',
+    `code`        VARCHAR(64)  NOT NULL COMMENT '琚嬬爜锛堜簩缁寸爜鍐呭锛屽叏灞�鍞竴锛�',
+    `bag_no`      INT          NOT NULL COMMENT '鍏ㄥ眬琚嬪簭鍙�',
+    `batch_id`    BIGINT       DEFAULT NULL COMMENT '鐢熶骇鎵规缂栧彿锛屽綍鍏ヤ俊鎭悗鍏宠仈 mes_pro_batch.id',
     `batch_code`  VARCHAR(64)  DEFAULT NULL COMMENT '鎵规鍙凤紙鍐椾綑锛屼究浜庡睍绀猴級',
     `item_id`     BIGINT       DEFAULT NULL COMMENT '鍝佺锛堜骇鍝佺墿鏂欙級缂栧彿锛堝啑浣欒嚜鎵规锛�',
     `pallet_id`   BIGINT       DEFAULT NULL COMMENT '缁戝畾鎵樼洏缂栧彿锛屽叧鑱� mes_pro_pallet.id',
     `pallet_code` VARCHAR(64)  DEFAULT NULL COMMENT '鎵樼洏鐮侊紙鍐椾綑锛屼究浜庡睍绀猴級',
     `status`      TINYINT      NOT NULL DEFAULT 10 COMMENT '鐘舵�侊紙瀛楀吀 mes_pro_bag_code_status锛�10 宸茬敓鎴� 20 宸插鍑哄嵃鍒� 30 宸蹭綔搴燂級',
     `print_time`  DATETIME     DEFAULT NULL COMMENT '瀵煎嚭锛堜氦浠樺嵃鍒凤級鏃堕棿',
+    `cancel_time` DATETIME     DEFAULT NULL COMMENT '浣滃簾鏃堕棿',
+    `cancel_reason` VARCHAR(255) DEFAULT NULL COMMENT '浣滃簾鍘熷洜',
     `remark`      VARCHAR(255) DEFAULT NULL COMMENT '澶囨敞',
     `creator`     VARCHAR(64)  DEFAULT '' COMMENT '鍒涘缓鑰�',
     `create_time` DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
@@ -105,10 +118,43 @@
     KEY `idx_batch_id` (`batch_id`),
     KEY `idx_uuid` (`uuid`),
     KEY `idx_pallet_id` (`pallet_id`)
-) ENGINE = InnoDB COMMENT = 'MES 琚嬬爜璧嬬爜锛堜竴琚嬩竴鐮侊級';
+ ) ENGINE = InnoDB COMMENT = 'MES 琚嬬爜璧嬬爜锛堜竴琚嬩竴鐮侊級';
 
 -- ----------------------------
--- 5. 鎵规鍙疯嚜鍔ㄧ紪鐮佽鍒欙細PRO_BATCH_CODE
+-- 5. 琚嬬爜鏇挎崲璁板綍琛�
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS `mes_pro_bag_code_replace` (
+    `id`              BIGINT       NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+    `replace_uuid`    VARCHAR(32)  NOT NULL COMMENT '鏇挎崲缁� UUID',
+    `batch_id`        BIGINT       NOT NULL COMMENT '鐢熶骇鎵规缂栧彿',
+    `batch_code`      VARCHAR(64)  DEFAULT NULL COMMENT '鐢熶骇鎵规鍙�',
+    `old_bag_code_id` BIGINT       NOT NULL COMMENT '鏃ц鐮佺紪鍙�',
+    `old_code`        VARCHAR(64)  NOT NULL COMMENT '鏃ц鐮�',
+    `old_bag_no`      INT          NOT NULL COMMENT '鏃ц搴忓彿',
+    `old_status`      TINYINT      NOT NULL COMMENT '鏃ц鐮佷綔搴熷墠鐘舵��',
+    `old_pallet_id`   BIGINT       DEFAULT NULL COMMENT '鏃ц鐮佸師鎵樼洏缂栧彿',
+    `old_pallet_code` VARCHAR(64)  DEFAULT NULL COMMENT '鏃ц鐮佸師鎵樼洏鐮�',
+    `new_bag_code_id` BIGINT       NOT NULL COMMENT '鏂拌鐮佺紪鍙�',
+    `new_code`        VARCHAR(64)  NOT NULL COMMENT '鏂拌鐮�',
+    `new_bag_no`      INT          NOT NULL COMMENT '鏂拌搴忓彿',
+    `reason`          VARCHAR(255) NOT NULL COMMENT '鏇挎崲鍘熷洜',
+    `replace_time`    DATETIME     NOT NULL COMMENT '鏇挎崲鏃堕棿',
+    `creator`         VARCHAR(64)  DEFAULT '' COMMENT '鍒涘缓鑰�',
+    `create_time`     DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+    `updater`         VARCHAR(64)  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_old_bag_code_id` (`old_bag_code_id`),
+    UNIQUE KEY `uk_new_bag_code_id` (`new_bag_code_id`),
+    KEY `idx_replace_uuid` (`replace_uuid`),
+    KEY `idx_batch_id` (`batch_id`),
+    KEY `idx_old_code` (`old_code`),
+    KEY `idx_new_code` (`new_code`)
+) ENGINE = InnoDB COMMENT = 'MES 琚嬬爜鏇挎崲璁板綍';
+
+-- ----------------------------
+-- 6. 鎵规鍙疯嚜鍔ㄧ紪鐮佽鍒欙細PRO_BATCH_CODE
 --    缁撴瀯锛氬浐瀹氬瓧绗�(PC) + 鏃ユ湡(yyyyMMdd) + 杈撳叆瀛楃(浜х嚎缂栫爜+鍝佺缂栫爜) + 娴佹按鍙�(3浣嶏紝鎸夋棩寰幆)
 --    绀轰緥锛歅C20260818L01NY001
 -- ----------------------------
@@ -189,7 +235,8 @@
 (602620, '鐢熸垚浜岀淮鐮佹暟鎹寘', 'mes:pro-bag-code:generate', 3, 2, 602618, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
 (602621, '琚嬬爜鍒犻櫎', 'mes:pro-bag-code:delete', 3, 3, 602618, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
 (602622, '琚嬬爜瀵煎嚭', 'mes:pro-bag-code:export', 3, 4, 602618, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
-(602623, '琚嬬爜缁戝畾鎵樼洏', 'mes:pro-bag-code:bind', 3, 5, 602618, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');
+(602623, '琚嬬爜缁戝畾鎵樼洏', 'mes:pro-bag-code:bind', 3, 5, 602618, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
+(602629, '琚嬬爜鐮存崯鏇挎崲', 'mes:pro-bag-code:replace', 3, 6, 602618, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');
 
 -- 鎵樼洏鐮佺鐞�
 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)

--
Gitblit v1.9.3