Test #1
@@ -17494,6 +17494,140 @@ CREATE TABLE IF NOT EXISTS fl_dropship_pallet_carton (
|
||||
CONSTRAINT fk_dropship_carton_label FOREIGN KEY (carton_label_id) REFERENCES fl_inbound_carton_label(id)
|
||||
) ENGINE=InnoDB COMMENT='一件代发托盘内逐箱SKU和入仓单明细';
|
||||
|
||||
-- 已存在开发库直接收敛到逐箱清点与整托分柜结构;新建库由上面的最新定义一次完成。
|
||||
DROP PROCEDURE IF EXISTS converge_dropship_palletization_schema;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE converge_dropship_palletization_schema()
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema='baiyue_firstleg' AND table_name='fl_inbound_carton_label'
|
||||
AND column_name='units_per_carton') THEN
|
||||
ALTER TABLE fl_inbound_carton_label
|
||||
ADD COLUMN units_per_carton INT UNSIGNED NULL
|
||||
COMMENT '每箱SKU数量快照;一件代发必须为正数' AFTER sku_code;
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema='baiyue_firstleg' AND table_name='fl_dropship_pallet_task'
|
||||
AND column_name='counted_cartons') THEN
|
||||
ALTER TABLE fl_dropship_pallet_task
|
||||
ADD COLUMN counted_cartons INT UNSIGNED NOT NULL DEFAULT 0
|
||||
COMMENT '已逐箱确认实收数量的箱数' AFTER total_cartons;
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema='baiyue_firstleg' AND table_name='fl_dropship_pallet_task'
|
||||
AND column_name='discrepancy_cartons') THEN
|
||||
ALTER TABLE fl_dropship_pallet_task
|
||||
ADD COLUMN discrepancy_cartons INT UNSIGNED NOT NULL DEFAULT 0
|
||||
COMMENT '已确认差异箱数' AFTER allocated_cartons;
|
||||
END IF;
|
||||
UPDATE fl_dropship_pallet_task
|
||||
SET counted_cartons=GREATEST(counted_cartons,allocated_cartons);
|
||||
IF EXISTS (SELECT 1 FROM information_schema.table_constraints
|
||||
WHERE constraint_schema='baiyue_firstleg' AND table_name='fl_dropship_pallet_task'
|
||||
AND constraint_name='chk_dropship_task_cartons') THEN
|
||||
ALTER TABLE fl_dropship_pallet_task DROP CHECK chk_dropship_task_cartons;
|
||||
END IF;
|
||||
ALTER TABLE fl_dropship_pallet_task
|
||||
ADD CONSTRAINT chk_dropship_task_cartons
|
||||
CHECK (allocated_cartons<=counted_cartons AND counted_cartons<=total_cartons);
|
||||
|
||||
IF EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema='baiyue_firstleg' AND table_name='fl_dropship_pallet_carton'
|
||||
AND column_name='operation_id')
|
||||
AND NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema='baiyue_firstleg' AND table_name='fl_dropship_pallet_carton'
|
||||
AND column_name='count_operation_id') THEN
|
||||
ALTER TABLE fl_dropship_pallet_carton
|
||||
CHANGE COLUMN operation_id count_operation_id VARCHAR(128) NOT NULL
|
||||
COMMENT '逐箱清点幂等操作ID';
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema='baiyue_firstleg' AND table_name='fl_dropship_pallet_carton'
|
||||
AND column_name='expected_sku_quantity') THEN
|
||||
ALTER TABLE fl_dropship_pallet_carton
|
||||
ADD COLUMN expected_sku_quantity INT UNSIGNED NULL AFTER box_code,
|
||||
ADD COLUMN actual_sku_quantity INT UNSIGNED NULL AFTER expected_sku_quantity,
|
||||
ADD COLUMN discrepancy_status VARCHAR(24) NULL AFTER actual_sku_quantity,
|
||||
ADD COLUMN discrepancy_remark VARCHAR(500) NULL AFTER discrepancy_status,
|
||||
ADD COLUMN bind_operation_id VARCHAR(128) NULL AFTER count_operation_id,
|
||||
ADD COLUMN last_operation_id VARCHAR(128) NULL AFTER bind_operation_id,
|
||||
ADD COLUMN counted_by BIGINT UNSIGNED NULL AFTER last_operation_id,
|
||||
ADD COLUMN counted_by_name VARCHAR(64) NULL AFTER counted_by,
|
||||
ADD COLUMN counted_at DATETIME(3) NULL AFTER counted_by_name;
|
||||
END IF;
|
||||
UPDATE fl_dropship_pallet_carton carton
|
||||
LEFT JOIN fl_inbound_carton_label label ON label.id=carton.carton_label_id
|
||||
SET carton.expected_sku_quantity=COALESCE(carton.expected_sku_quantity,label.units_per_carton,1),
|
||||
carton.actual_sku_quantity=COALESCE(carton.actual_sku_quantity,label.units_per_carton,1),
|
||||
carton.discrepancy_status=COALESCE(carton.discrepancy_status,'MATCH'),
|
||||
carton.bind_operation_id=COALESCE(carton.bind_operation_id,carton.count_operation_id),
|
||||
carton.last_operation_id=COALESCE(carton.last_operation_id,carton.count_operation_id),
|
||||
carton.counted_by=COALESCE(carton.counted_by,carton.bound_by),
|
||||
carton.counted_by_name=COALESCE(carton.counted_by_name,carton.bound_by_name),
|
||||
carton.counted_at=COALESCE(carton.counted_at,carton.bound_at);
|
||||
ALTER TABLE fl_dropship_pallet_carton
|
||||
MODIFY COLUMN pallet_id BIGINT UNSIGNED NULL COMMENT '所属组托托盘ID;已清点待绑托时为空',
|
||||
MODIFY COLUMN box_code VARCHAR(80) NOT NULL COMMENT '稳定箱码',
|
||||
MODIFY COLUMN expected_sku_quantity INT UNSIGNED NOT NULL COMMENT '箱唛冻结的应收SKU数量',
|
||||
MODIFY COLUMN actual_sku_quantity INT UNSIGNED NOT NULL COMMENT 'PDA确认的实收SKU数量',
|
||||
MODIFY COLUMN discrepancy_status VARCHAR(24) NOT NULL COMMENT '差异状态:MATCH或ACCEPTED_VARIANCE',
|
||||
MODIFY COLUMN last_operation_id VARCHAR(128) NOT NULL COMMENT '最后一次绑托或换托操作幂等号',
|
||||
MODIFY COLUMN counted_by BIGINT UNSIGNED NOT NULL COMMENT '清点操作人ID',
|
||||
MODIFY COLUMN counted_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '清点时间',
|
||||
MODIFY COLUMN bound_by BIGINT UNSIGNED NULL COMMENT '上托操作人ID',
|
||||
MODIFY COLUMN bound_at DATETIME(3) NULL COMMENT '上托时间';
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.statistics
|
||||
WHERE table_schema='baiyue_firstleg' AND table_name='fl_dropship_pallet_carton'
|
||||
AND index_name='uk_dropship_carton_count_operation') THEN
|
||||
ALTER TABLE fl_dropship_pallet_carton
|
||||
ADD UNIQUE KEY uk_dropship_carton_count_operation (count_operation_id);
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.statistics
|
||||
WHERE table_schema='baiyue_firstleg' AND table_name='fl_dropship_pallet_carton'
|
||||
AND index_name='idx_dropship_carton_bind_operation') THEN
|
||||
ALTER TABLE fl_dropship_pallet_carton
|
||||
ADD KEY idx_dropship_carton_bind_operation (task_id,bind_operation_id);
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema='baiyue_firstleg' AND table_name='fl_loading_plan_item'
|
||||
AND column_name='unit_type') THEN
|
||||
ALTER TABLE fl_loading_plan_item
|
||||
ADD COLUMN unit_type VARCHAR(24) NOT NULL DEFAULT 'PACKAGE' AFTER product_quantity,
|
||||
ADD COLUMN pallet_id BIGINT UNSIGNED NULL AFTER unit_type,
|
||||
ADD COLUMN pallet_no VARCHAR(32) NULL AFTER pallet_id,
|
||||
ADD COLUMN indivisible TINYINT(1) NOT NULL DEFAULT 0 AFTER pallet_no;
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema='baiyue_firstleg' AND table_name='fl_loading_plan_item'
|
||||
AND column_name='active_assignment_key') THEN
|
||||
ALTER TABLE fl_loading_plan_item
|
||||
ADD COLUMN active_assignment_key VARCHAR(96)
|
||||
GENERATED ALWAYS AS (CASE WHEN deleted=0 THEN CONCAT(CASE WHEN pallet_id IS NULL THEN 'D:0' ELSE CONCAT('P:',pallet_id) END,':',inbound_detail_id) ELSE NULL END) STORED
|
||||
COMMENT '普通明细或已封托托盘明细的有效唯一锁' AFTER active_inbound_detail_id;
|
||||
END IF;
|
||||
IF EXISTS (SELECT 1 FROM information_schema.statistics
|
||||
WHERE table_schema='baiyue_firstleg' AND table_name='fl_loading_plan_item'
|
||||
AND index_name='uk_loading_item_plan_detail') THEN
|
||||
ALTER TABLE fl_loading_plan_item DROP INDEX uk_loading_item_plan_detail;
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.statistics
|
||||
WHERE table_schema='baiyue_firstleg' AND table_name='fl_loading_plan_item'
|
||||
AND index_name='uk_loading_item_plan_assignment') THEN
|
||||
ALTER TABLE fl_loading_plan_item
|
||||
ADD UNIQUE KEY uk_loading_item_plan_assignment (loading_plan_id,active_assignment_key);
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.statistics
|
||||
WHERE table_schema='baiyue_firstleg' AND table_name='fl_loading_plan_item'
|
||||
AND index_name='idx_loading_item_pallet') THEN
|
||||
ALTER TABLE fl_loading_plan_item ADD KEY idx_loading_item_pallet (pallet_id,deleted);
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
CALL converge_dropship_palletization_schema();
|
||||
DROP PROCEDURE IF EXISTS converge_dropship_palletization_schema;
|
||||
|
||||
-- Auth 登录手机号只从 IAM 中唯一归属的中国大陆手机号回填;存量重复号保持 NULL。
|
||||
USE baiyue_auth;
|
||||
DROP PROCEDURE IF EXISTS auth_add_login_phone;
|
||||
|
||||
@@ -72,5 +72,11 @@ public interface OrderCargoClient {
|
||||
this(cargoId, orderId, itemNo, cargoName, null,
|
||||
packageCount, null, lengthCm, widthCm, heightCm, null);
|
||||
}
|
||||
public CargoLabelBinding(Long cargoId, Long orderId, Integer itemNo, String cargoName,
|
||||
String skuNo, Integer packageCount, BigDecimal lengthCm,
|
||||
BigDecimal widthCm, BigDecimal heightCm, String shipmentId) {
|
||||
this(cargoId, orderId, itemNo, cargoName, skuNo,
|
||||
packageCount, null, lengthCm, widthCm, heightCm, shipmentId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+5
@@ -38,5 +38,10 @@ class DropshipPalletizationSqlContractTest {
|
||||
.doesNotContain("CREATE TABLE IF NOT EXISTS fl_loading_work_pallet (")
|
||||
.doesNotContain("CREATE TABLE IF NOT EXISTS fl_loading_work_pallet_carton (");
|
||||
}
|
||||
assertThat(unified)
|
||||
.contains("CREATE PROCEDURE converge_dropship_palletization_schema()")
|
||||
.contains("CHANGE COLUMN operation_id count_operation_id")
|
||||
.contains("DROP INDEX uk_loading_item_plan_detail")
|
||||
.contains("ADD UNIQUE KEY uk_loading_item_plan_assignment (loading_plan_id,active_assignment_key)");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user