This commit is contained in:
2026-08-17 11:23:28 +08:00
parent d51e054def
commit 6b416621bb
19 changed files with 327 additions and 222 deletions
@@ -16,14 +16,56 @@ ON DUPLICATE KEY UPDATE
color=VALUES(color),
remark=VALUES(remark);
-- 每个国内作业仓初始化一个普通库位和一个系统共享溢出位 A0。
-- 义乌仓初始化 A-F 六个库区,每区 A1-A15 共 90 个普通库位。
-- A0 仍是系统共享溢出位;东莞仓继续保留最小 A1 + A0 基线。
-- 这里只创建公共资源,不初始化预占、占用或业务单据。
INSERT INTO wh_location(
id,tenant_id,warehouse_id,zone_code,zone_name,location_code,location_name,
location_type,max_weight_kg,shared_overflow,status,remark,created_by,updated_by
)
WITH RECURSIVE
zones AS (
SELECT 0 AS zone_index
UNION ALL
SELECT zone_index + 1 FROM zones WHERE zone_index < 5
),
slots AS (
SELECT 1 AS slot_number
UNION ALL
SELECT slot_number + 1 FROM slots WHERE slot_number < 15
)
SELECT
CAST(190000000000000000 + CASE
WHEN zones.zone_index = 0 AND slots.slot_number = 1 THEN 201
ELSE 203 + zones.zone_index * 15 + slots.slot_number
END AS UNSIGNED),
0,
190000000000000001,
CHAR(65 + zones.zone_index),
CONCAT(CHAR(65 + zones.zone_index), '区'),
CONCAT(CHAR(65 + zones.zone_index), slots.slot_number),
CONCAT(CHAR(65 + zones.zone_index), slots.slot_number, ' 普通库位'),
'PALLET',1000.000,0,'AVAILABLE',NULL,0,0
FROM zones
CROSS JOIN slots
ON DUPLICATE KEY UPDATE
tenant_id=0,
warehouse_id=VALUES(warehouse_id),
zone_code=VALUES(zone_code),
zone_name=VALUES(zone_name),
location_name=VALUES(location_name),
location_type=VALUES(location_type),
max_weight_kg=VALUES(max_weight_kg),
shared_overflow=VALUES(shared_overflow),
status='AVAILABLE',
remark=VALUES(remark),
deleted=0;
INSERT INTO wh_location(
id,tenant_id,warehouse_id,zone_code,zone_name,location_code,location_name,
location_type,max_weight_kg,shared_overflow,status,remark,created_by,updated_by
)
VALUES
(190000000000000201,0,190000000000000001,'A','A区','A1','A1 普通库位','PALLET',1000.000,0,'AVAILABLE',NULL,0,0),
(190000000000000202,0,190000000000000001,'A','A区','A0','A0 共享溢出位','PALLET',NULL,1,'AVAILABLE','系统共享临时溢出位',0,0),
(190000000000000203,0,190000000000000002,'A','A区','A1','A1 普通库位','PALLET',1000.000,0,'AVAILABLE',NULL,0,0),
(190000000000000204,0,190000000000000002,'A','A区','A0','A0 共享溢出位','PALLET',NULL,1,'AVAILABLE','系统共享临时溢出位',0,0)
@@ -39,3 +81,32 @@ ON DUPLICATE KEY UPDATE
status='AVAILABLE',
remark=VALUES(remark),
deleted=0;
DROP PROCEDURE IF EXISTS assert_yiwu_location_seed;
DELIMITER //
CREATE PROCEDURE assert_yiwu_location_seed()
BEGIN
IF (SELECT COUNT(*)
FROM wh_location
WHERE tenant_id=0
AND warehouse_id=190000000000000001
AND deleted=0
AND shared_overflow=0
AND zone_code IN ('A','B','C','D','E','F')
AND location_code REGEXP '^[A-F]([1-9]|1[0-5])$'
AND LEFT(location_code,1)=zone_code) <> 90 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='义乌仓 A-F 每区 15 个普通库位初始化不完整';
END IF;
IF (SELECT COUNT(*)
FROM wh_location
WHERE tenant_id=0
AND warehouse_id=190000000000000001
AND location_code='A0'
AND shared_overflow=1
AND deleted=0) <> 1 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='义乌仓系统共享溢出位 A0 初始化不完整';
END IF;
END//
DELIMITER ;
CALL assert_yiwu_location_seed();
DROP PROCEDURE IF EXISTS assert_yiwu_location_seed;