From f6605a1ab06ac8399a8d8cc3214ee663ae8035ab Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Fri, 9 Oct 2026 16:20:50 +0800 Subject: [PATCH] fix(sql): keep return counting in clean initialization definitions --- deploy/sql/海外区域统一增量-MySQL8.sql | 39 ++++---------------------- 1 file changed, 6 insertions(+), 33 deletions(-) diff --git a/deploy/sql/海外区域统一增量-MySQL8.sql b/deploy/sql/海外区域统一增量-MySQL8.sql index d6649d9e3..e08c3b3f5 100644 --- a/deploy/sql/海外区域统一增量-MySQL8.sql +++ b/deploy/sql/海外区域统一增量-MySQL8.sql @@ -2365,6 +2365,9 @@ CREATE TABLE ll_return_inventory_carton ( relabel_status varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '换标状态', relabel_completed_at datetime(3) DEFAULT NULL COMMENT '换标完成时间', status varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'AVAILABLE可用或MERGED已合箱', + count_status VARCHAR(16) NOT NULL DEFAULT 'CONFIRMED' COMMENT '箱内清点状态 PENDING待清点 CONFIRMED已确认', + counted_at DATETIME(3) NULL COMMENT '箱内清点确认时间', + counted_by VARCHAR(128) NULL COMMENT '箱内清点确认操作人', sku_types int NOT NULL COMMENT '箱内SKU种类数', total_quantity bigint NOT NULL COMMENT '箱内总件数', length decimal(12,3) DEFAULT NULL COMMENT '箱长CM', @@ -2375,6 +2378,7 @@ CREATE TABLE ll_return_inventory_carton ( updated_at datetime(3) NOT NULL COMMENT '最后更新时间', merged_at datetime(3) DEFAULT NULL COMMENT '合箱完成时间', PRIMARY KEY (id), + KEY idx_ll_return_count (overseas_warehouse_id,count_status,status,source_receipt_id), UNIQUE KEY uk_ll_return_inventory_carton_mark (carton_mark), KEY idx_ll_return_inventory_carton_customer (customer_id,overseas_warehouse_id,status,created_at), CONSTRAINT chk_ll_return_inventory_carton_quantity CHECK((status IN('AVAILABLE','PACKING_RESERVED','RELABEL_PENDING','OUTBOUND_PENDING','OUTBOUNDED','DISCARD_PENDING') AND sku_types>0 AND total_quantity>0) OR (status IN('MERGED','DISCARDED') AND sku_types=0 AND total_quantity=0)), @@ -3586,32 +3590,7 @@ CREATE TABLE event_delivery_attempt ( KEY idx_delivery_attempt_outcome (outcome,started_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='本服务业务事件逐次投递审计'; -SELECT 'PASS' AS initialization_status, 'OVERSEAS' AS region, 159 AS initialized_tables; - --- 退货托盘签收箱内清点;MySQL 8;仅在目标尾程库执行,可重复运行。 -USE baiyue_lastleg; -SET @rc_count_ddl = IF(EXISTS(SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_return_inventory_carton' AND column_name='count_status'),'SELECT 1','ALTER TABLE ll_return_inventory_carton ADD COLUMN count_status VARCHAR(16) NOT NULL DEFAULT ''CONFIRMED'' COMMENT ''箱内清点状态 PENDING待清点 CONFIRMED已确认'''); -PREPARE rc_count_stmt FROM @rc_count_ddl; EXECUTE rc_count_stmt; DEALLOCATE PREPARE rc_count_stmt; -SET @rc_count_ddl = IF(EXISTS(SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_return_inventory_carton' AND column_name='counted_at'),'SELECT 1','ALTER TABLE ll_return_inventory_carton ADD COLUMN counted_at DATETIME(3) NULL COMMENT ''箱内清点确认时间'''); -PREPARE rc_count_stmt FROM @rc_count_ddl; EXECUTE rc_count_stmt; DEALLOCATE PREPARE rc_count_stmt; -SET @rc_count_ddl = IF(EXISTS(SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_return_inventory_carton' AND column_name='counted_by'),'SELECT 1','ALTER TABLE ll_return_inventory_carton ADD COLUMN counted_by VARCHAR(128) NULL COMMENT ''箱内清点确认操作人'''); -PREPARE rc_count_stmt FROM @rc_count_ddl; EXECUTE rc_count_stmt; DEALLOCATE PREPARE rc_count_stmt; -SET @rc_count_ddl = IF(EXISTS(SELECT 1 FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='ll_return_inventory_carton' AND index_name='idx_ll_return_count'),'SELECT 1','CREATE INDEX idx_ll_return_count ON ll_return_inventory_carton(overseas_warehouse_id,count_status,status,source_receipt_id)'); -PREPARE rc_count_stmt FROM @rc_count_ddl; EXECUTE rc_count_stmt; DEALLOCATE PREPARE rc_count_stmt; --- 历史箱:只迁移整批仍可用、没有换标/合箱占用、未确认清点的托盘签收箱。 --- 已进入履约或合箱的批次不回退;后续需要逐批人工核实。 -UPDATE ll_return_inventory_carton c -JOIN (SELECT source_receipt_id FROM (SELECT a.source_receipt_id - FROM ll_return_inventory_carton a WHERE a.source_receipt_id IS NOT NULL AND a.source_unit_type='PALLET' - GROUP BY a.source_receipt_id - HAVING SUM(a.status<>'AVAILABLE' OR a.relabel_application_id IS NOT NULL OR a.relabel_no IS NOT NULL OR a.counted_at IS NOT NULL)=0 - AND SUM(EXISTS(SELECT 1 FROM ll_return_inventory_carton_item i WHERE i.carton_id=a.id AND COALESCE(i.packing_reserved_quantity,0)>0))=0 - AND SUM(EXISTS(SELECT 1 FROM ll_return_packing_trace t WHERE t.source_carton_mark=a.carton_mark OR t.target_carton_mark=a.carton_mark))=0 -) pending) p ON p.source_receipt_id=c.source_receipt_id -SET c.count_status='PENDING' WHERE c.source_unit_type='PALLET' AND c.counted_at IS NULL; - --- 退货箱内清点作业会话:每位操作员只能认领一个批次,每个批次只能被一人认领。 -CREATE TABLE IF NOT EXISTS ll_return_carton_count_session ( +CREATE TABLE ll_return_carton_count_session ( operator_id VARCHAR(128) NOT NULL COMMENT '平台PDA操作员标识', warehouse_id VARCHAR(128) NOT NULL COMMENT '认领时绑定海外仓标识', receipt_id BIGINT NULL COMMENT '正在清点的签收批次,完成后释放为NULL', @@ -3622,10 +3601,4 @@ CREATE TABLE IF NOT EXISTS ll_return_carton_count_session ( UNIQUE KEY uk_ll_return_count_session_receipt(receipt_id) ) ENGINE=InnoDB COMMENT='退货箱内清点单人单任务持久会话'; --- 退货尾程与来源退货单统一业务单号,保留ID及库存/履约状态。 -USE baiyue_lastleg; -UPDATE ll_order o -JOIN ll_return_order r ON r.lastleg_order_id=o.id AND r.customer_id=o.customer_id -SET o.order_no=r.return_no, r.lastleg_order_no=r.return_no -WHERE o.order_type='RETURN_RELABEL' AND o.source_order_no=r.return_no - AND (NOT (o.order_no <=> r.return_no) OR NOT (r.lastleg_order_no <=> r.return_no)); +SELECT 'PASS' AS initialization_status, 'OVERSEAS' AS region, 160 AS initialized_tables;