feat: 完善WCS调度、库存追溯和出库分配
This commit is contained in:
117
sql/20260714_warehouse_03_inbound_lane_allocation.sql
Normal file
117
sql/20260714_warehouse_03_inbound_lane_allocation.sql
Normal file
@@ -0,0 +1,117 @@
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
IF OBJECT_ID(N'dbo.bas_cargo_area_config', N'U') IS NULL
|
||||
THROW 51100, N'缺少bas_cargo_area_config,请先执行货区方向迁移。', 1;
|
||||
|
||||
DECLARE @direction TABLE
|
||||
(
|
||||
warehouse_id nvarchar(80) NOT NULL,
|
||||
cargo_area_code nvarchar(10) NOT NULL,
|
||||
direction_type nvarchar(2) NOT NULL,
|
||||
PRIMARY KEY (warehouse_id, cargo_area_code)
|
||||
);
|
||||
|
||||
INSERT INTO @direction(warehouse_id, cargo_area_code, direction_type)
|
||||
VALUES
|
||||
(N'03', N'A', N'1'),
|
||||
(N'03', N'B', N'1'),
|
||||
(N'03', N'C', N'1'),
|
||||
(N'03', N'D', N'2'),
|
||||
(N'03', N'E', N'1'),
|
||||
(N'03', N'F', N'2'),
|
||||
(N'03', N'G', N'2'),
|
||||
(N'03', N'H', N'2');
|
||||
|
||||
MERGE dbo.bas_cargo_area_config AS target
|
||||
USING @direction AS source
|
||||
ON target.warehouse_id = source.warehouse_id
|
||||
AND target.cargo_area_code = source.cargo_area_code
|
||||
WHEN MATCHED THEN UPDATE
|
||||
SET direction_type = source.direction_type,
|
||||
is_active = N'1',
|
||||
update_by = N'admin',
|
||||
update_time = SYSDATETIME(),
|
||||
remark = N'03密集库固定方向;A/B/C/E小到大,D/F/G/H大到小'
|
||||
WHEN NOT MATCHED THEN INSERT
|
||||
(warehouse_id, cargo_area_code, cargo_area_name, direction_type, is_active,
|
||||
create_by, create_time, remark)
|
||||
VALUES
|
||||
(source.warehouse_id, source.cargo_area_code, source.cargo_area_code + N'货区',
|
||||
source.direction_type, N'1', N'admin', SYSDATETIME(),
|
||||
N'03密集库固定方向;A/B/C/E小到大,D/F/G/H大到小');
|
||||
|
||||
UPDATE dbo.bas_cargo_space
|
||||
SET the_height = CASE WHEN the_floor = 1 THEN 2 ELSE 1 END
|
||||
WHERE warehouse_id = N'03'
|
||||
AND status = N'1'
|
||||
AND (the_height IS NULL
|
||||
OR the_height != CASE WHEN the_floor = 1 THEN 2 ELSE 1 END);
|
||||
|
||||
IF (SELECT COUNT(*) FROM dbo.bas_cargo_space
|
||||
WHERE warehouse_id = N'03' AND status = N'1') != 1028
|
||||
THROW 51102, N'03仓普通货位数量异常,拒绝配置高度。', 1;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.bas_cargo_space
|
||||
WHERE warehouse_id = N'03'
|
||||
AND status = N'1'
|
||||
AND (the_height IS NULL
|
||||
OR the_height != CASE WHEN the_floor = 1 THEN 2 ELSE 1 END)
|
||||
)
|
||||
THROW 51103, N'03仓普通货位高度配置失败。', 1;
|
||||
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1 FROM sys.indexes
|
||||
WHERE object_id = OBJECT_ID(N'dbo.bas_cargo_space')
|
||||
AND name = N'IX_bas_cargo_space_dense_lane'
|
||||
)
|
||||
CREATE NONCLUSTERED INDEX IX_bas_cargo_space_dense_lane
|
||||
ON dbo.bas_cargo_space(warehouse_id, roadway_id, group_coding, status)
|
||||
INCLUDE(cargo_space_id, this_cargo_area, the_type, the_height, the_column,
|
||||
the_floor, the_platoon, locked, tray_code);
|
||||
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1 FROM sys.indexes
|
||||
WHERE object_id = OBJECT_ID(N'dbo.bas_stock')
|
||||
AND name = N'IX_bas_stock_cargo_space_id'
|
||||
)
|
||||
CREATE NONCLUSTERED INDEX IX_bas_stock_cargo_space_id
|
||||
ON dbo.bas_stock(cargo_space_id)
|
||||
INCLUDE(stock_id, warehouse_id, in_type, project_no);
|
||||
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1 FROM sys.indexes
|
||||
WHERE object_id = OBJECT_ID(N'dbo.mydo_job')
|
||||
AND name = N'IX_mydo_job_dense_reservation'
|
||||
)
|
||||
CREATE NONCLUSTERED INDEX IX_mydo_job_dense_reservation
|
||||
ON dbo.mydo_job(warehouse_id, tray_code, status, in_or_out)
|
||||
INCLUDE(job_id, cargo_space_id, roadway_id);
|
||||
|
||||
IF (SELECT COUNT(*) FROM dbo.bas_cargo_area_config
|
||||
WHERE warehouse_id = N'03' AND cargo_area_code BETWEEN N'A' AND N'H'
|
||||
AND is_active = N'1') != 8
|
||||
THROW 51101, N'03仓A-H货区方向配置数量异常。', 1;
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF XACT_STATE() != 0
|
||||
ROLLBACK TRANSACTION;
|
||||
THROW;
|
||||
END CATCH;
|
||||
|
||||
SELECT warehouse_id, cargo_area_code, direction_type, is_active
|
||||
FROM dbo.bas_cargo_area_config
|
||||
WHERE warehouse_id = N'03'
|
||||
AND cargo_area_code BETWEEN N'A' AND N'H'
|
||||
ORDER BY cargo_area_code;
|
||||
Reference in New Issue
Block a user