贴标申请,仓储转运
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
-- Target only an explicitly authorized local/dev connection and baiyue_iam.
|
||||
-- Preserve existing customer rows and never reset an existing sequence backwards.
|
||||
USE baiyue_iam;
|
||||
CREATE TABLE IF NOT EXISTS iam_number_sequence (
|
||||
sequence_key VARCHAR(64) NOT NULL COMMENT '业务编号类型',
|
||||
next_value BIGINT UNSIGNED NOT NULL COMMENT '下一待分配数字',
|
||||
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
|
||||
PRIMARY KEY (sequence_key)
|
||||
) ENGINE=InnoDB COMMENT='IAM业务编号序列表';
|
||||
START TRANSACTION;
|
||||
INSERT IGNORE INTO iam_number_sequence(sequence_key, next_value) VALUES ('CUSTOMER_CODE', 1);
|
||||
SELECT next_value FROM iam_number_sequence WHERE sequence_key='CUSTOMER_CODE' FOR UPDATE;
|
||||
SET @customer_code_floor = (
|
||||
SELECT COALESCE(MAX(CAST(tenant_code AS UNSIGNED)), 0) + 1
|
||||
FROM iam_tenant WHERE tenant_code REGEXP '^[0-9]{5}$'
|
||||
);
|
||||
UPDATE iam_number_sequence SET next_value=GREATEST(next_value,@customer_code_floor)
|
||||
WHERE sequence_key='CUSTOMER_CODE';
|
||||
COMMIT;
|
||||
SHOW CREATE TABLE iam_number_sequence;
|
||||
SELECT sequence_key,next_value FROM iam_number_sequence;
|
||||
@@ -0,0 +1,19 @@
|
||||
-- Local baiyue_lastleg only; retain every application and all idempotency constraints.
|
||||
USE baiyue_lastleg;
|
||||
SET @relabel_has_unique = (SELECT COUNT(*) FROM information_schema.statistics
|
||||
WHERE table_schema = DATABASE() AND table_name = 'll_relabel_application'
|
||||
AND index_name = 'uk_ll_relabel_application_order');
|
||||
SET @relabel_has_index = (SELECT COUNT(*) FROM information_schema.statistics
|
||||
WHERE table_schema = DATABASE() AND table_name = 'll_relabel_application'
|
||||
AND index_name = 'idx_ll_relabel_application_order');
|
||||
SET @relabel_index_sql = CASE
|
||||
WHEN @relabel_has_unique > 0 AND @relabel_has_index = 0 THEN
|
||||
'ALTER TABLE ll_relabel_application DROP INDEX uk_ll_relabel_application_order, ADD INDEX idx_ll_relabel_application_order (lastleg_order_id)'
|
||||
WHEN @relabel_has_unique > 0 THEN
|
||||
'ALTER TABLE ll_relabel_application DROP INDEX uk_ll_relabel_application_order'
|
||||
WHEN @relabel_has_index = 0 THEN
|
||||
'ALTER TABLE ll_relabel_application ADD INDEX idx_ll_relabel_application_order (lastleg_order_id)'
|
||||
ELSE 'SELECT 1' END;
|
||||
PREPARE relabel_index_migration FROM @relabel_index_sql;
|
||||
EXECUTE relabel_index_migration;
|
||||
DEALLOCATE PREPARE relabel_index_migration;
|
||||
@@ -13,4 +13,41 @@ WHERE o.order_type='RELABEL_APPLICATION' AND o.current_status='PENDING_ASSIGNMEN
|
||||
AND o.inbound_order_no IS NULL
|
||||
AND (a.status IN ('PENDING_PROCESSING','PROCESSING','CUSTOMER_CONFIRM_PENDING')
|
||||
OR (a.status='READY_FOR_OUTBOUND' AND a.fulfillment_status IN ('WAIT_PRE_DISPATCH','WAIT_OUTBOUND_CREATION','OUTBOUND_CREATED')));
|
||||
|
||||
-- 仓储转运已完成入库和换标后不得回到“待分配”;按是否已有目的仓恢复后续状态。
|
||||
UPDATE ll_warehouse_transfer_order t
|
||||
JOIN ll_relabel_application a ON a.id=t.relabel_application_id
|
||||
AND a.customer_id=t.customer_id AND a.relabel_no=t.relabel_no
|
||||
SET t.status=CASE
|
||||
WHEN COALESCE(t.fba_warehouse_code,'')<>'' THEN 'READY_FOR_DISPATCH'
|
||||
ELSE 'WAIT_FBA_DESTINATION' END,
|
||||
t.relabel_completed_at=COALESCE(t.relabel_completed_at,a.customer_confirmed_at),
|
||||
t.updated_at=CURRENT_TIMESTAMP(3)
|
||||
WHERE t.status='WAIT_RELABEL'
|
||||
AND a.customer_confirmed_at IS NOT NULL
|
||||
AND a.status IN ('READY_FOR_OUTBOUND','COMPLETED');
|
||||
|
||||
UPDATE ll_order o
|
||||
JOIN ll_warehouse_transfer_order t ON t.lastleg_order_id=o.id AND t.customer_id=o.customer_id
|
||||
JOIN ll_relabel_application a ON a.id=t.relabel_application_id AND a.customer_id=t.customer_id
|
||||
SET o.current_status=t.status,
|
||||
o.relabel_status='COMPLETED',
|
||||
o.sub_order_status=CONCAT('WAREHOUSE_TRANSFER:',t.status,';RELABEL:COMPLETED'),
|
||||
o.updated_at=CURRENT_TIMESTAMP(3)
|
||||
WHERE o.order_type='WAREHOUSE_TRANSFER'
|
||||
AND o.current_status IN ('PENDING_ASSIGNMENT','WAIT_OUTBOUND','INBOUND_COMPLETED')
|
||||
AND t.status IN ('READY_FOR_DISPATCH','WAIT_FBA_DESTINATION')
|
||||
AND a.customer_confirmed_at IS NOT NULL
|
||||
AND a.status IN ('READY_FOR_OUTBOUND','COMPLETED');
|
||||
|
||||
UPDATE ll_relabel_application a
|
||||
JOIN ll_warehouse_transfer_order t ON t.relabel_application_id=a.id AND t.customer_id=a.customer_id
|
||||
SET a.fulfillment_status=CASE
|
||||
WHEN t.status='READY_FOR_DISPATCH' THEN 'WAIT_PRE_DISPATCH'
|
||||
ELSE 'WAIT_FBA_DESTINATION' END,
|
||||
a.updated_at=CURRENT_TIMESTAMP(3)
|
||||
WHERE a.customer_confirmed_at IS NOT NULL
|
||||
AND a.status IN ('READY_FOR_OUTBOUND','COMPLETED')
|
||||
AND t.status IN ('READY_FOR_DISPATCH','WAIT_FBA_DESTINATION')
|
||||
AND a.fulfillment_status IN ('WAIT_RELABEL','WAIT_OUTBOUND_CREATION','WAIT_PRE_DISPATCH','READY_FOR_DISPATCH','WAIT_FBA_DESTINATION');
|
||||
COMMIT;
|
||||
|
||||
Reference in New Issue
Block a user