118 lines
4.0 KiB
Transact-SQL
118 lines
4.0 KiB
Transact-SQL
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;
|