Files
JY1.0/sql/库房管理_库位归类规则_测试库_20260731.sql

99 lines
4.3 KiB
Transact-SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
库房管理库位归类规则脚本(测试库 ERPTOOL_JY_20250826Back
修改人:Ld 修改时间:2026-07-31 14:26:30;
说明毛坯库归一楼毛坯库耗材归耗材库其余未归类库位归库房A区。
*/
SET NOCOUNT ON;
GO
IF NOT EXISTS (SELECT 1 FROM dbo.库房管理_库房主文件 WHERE 库房编号 = N'KF-A')
BEGIN
INSERT INTO dbo.库房管理_库房主文件(库房编号, 库房名称, 库房类型, 地址, 状态, 排数, 每排列数, 层数, 备注, 创建人)
VALUES(N'KF-A', N'库房A区', N'标准库房', N'库房A区', N'启用', 1, 99, 1, N'未归类库位默认归属库房', 0);
END
GO
IF NOT EXISTS (SELECT 1 FROM dbo.库房管理_库房主文件 WHERE 库房编号 = N'KF-MP')
BEGIN
INSERT INTO dbo.库房管理_库房主文件(库房编号, 库房名称, 库房类型, 地址, 状态, 排数, 每排列数, 层数, 备注, 创建人)
VALUES(N'KF-MP', N'一楼毛坯库', N'毛坯库', N'一楼毛坯库', N'启用', 1, 99, 1, N'毛坯库库位归属', 0);
END
GO
IF NOT EXISTS (SELECT 1 FROM dbo.库房管理_库房主文件 WHERE 库房编号 = N'KF-HC')
BEGIN
INSERT INTO dbo.库房管理_库房主文件(库房编号, 库房名称, 库房类型, 地址, 状态, 排数, 每排列数, 层数, 备注, 创建人)
VALUES(N'KF-HC', N'耗材库', N'耗材库', N'耗材库', N'启用', 1, 99, 1, N'耗材库位归属', 0);
END
GO
;WITH DefaultArea AS
(
SELECT N'KF-A' AS 库房编号, N'A01' AS 库区编号, N'标准库位区' AS 库区名称, N'标准库区' AS 库区类型, N'未归类库位默认库区' AS 备注
UNION ALL SELECT N'KF-MP', N'MP', N'一楼毛坯库区', N'毛坯库区', N'毛坯库库位默认库区'
UNION ALL SELECT N'KF-HC', N'HC', N'耗材库区', N'耗材库区', N'耗材库位默认库区'
)
INSERT INTO dbo.库房管理_库区主文件(库房流水号, 库区编号, 库区名称, 库区类型, 排序, 备注, 创建人)
SELECT k.库房流水号, a.库区编号, a.库区名称, a.库区类型, 1, a.备注, 0
FROM DefaultArea a
INNER JOIN dbo.库房管理_库房主文件 k ON a.库房编号 = k.库房编号
WHERE NOT EXISTS
(
SELECT 1
FROM dbo.库房管理_库区主文件 x
WHERE x.库房流水号 = k.库房流水号
AND x.库区编号 = a.库区编号
);
GO
DECLARE @库房A INT;
DECLARE @库区A INT;
DECLARE @毛坯库 INT;
DECLARE @毛坯库区 INT;
DECLARE @耗材库 INT;
DECLARE @耗材库区 INT;
SELECT @库房A = 库房流水号 FROM dbo.库房管理_库房主文件 WHERE 库房编号 = N'KF-A';
SELECT @库区A = 库区流水号 FROM dbo.库房管理_库区主文件 WHERE 库房流水号 = @库房A AND 库区编号 = N'A01';
SELECT @毛坯库 = 库房流水号 FROM dbo.库房管理_库房主文件 WHERE 库房编号 = N'KF-MP';
SELECT @毛坯库区 = 库区流水号 FROM dbo.库房管理_库区主文件 WHERE 库房流水号 = @毛坯库 AND 库区编号 = N'MP';
SELECT @耗材库 = 库房流水号 FROM dbo.库房管理_库房主文件 WHERE 库房编号 = N'KF-HC';
SELECT @耗材库区 = 库区流水号 FROM dbo.库房管理_库区主文件 WHERE 库房流水号 = @耗材库 AND 库区编号 = N'HC';
UPDATE h
SET 库房流水号 = @毛坯库,
库区流水号 = @毛坯库区,
库位状态 = ISNULL(h.库位状态, N'空库位'),
修改人 = 0,
修改时间 = GETDATE()
FROM dbo.库存管理_货位主文件 h
WHERE h.货位名称 LIKE N'%毛坯%';
UPDATE h
SET 库房流水号 = @耗材库,
库区流水号 = @耗材库区,
库位状态 = ISNULL(h.库位状态, N'空库位'),
修改人 = 0,
修改时间 = GETDATE()
FROM dbo.库存管理_货位主文件 h
WHERE h.货位名称 LIKE N'%耗材%';
UPDATE h
SET 库房流水号 = @库房A,
库区流水号 = @库区A,
库位状态 = ISNULL(h.库位状态, N'空库位'),
修改人 = 0,
修改时间 = GETDATE()
FROM dbo.库存管理_货位主文件 h
LEFT JOIN dbo.库房管理_库房主文件 k ON h.库房流水号 = k.库房流水号
WHERE k.库房流水号 IS NULL;
SELECT
SUM(CASE WHEN h.库房流水号 = @毛坯库 THEN 1 ELSE 0 END) AS 一楼毛坯库库位数,
SUM(CASE WHEN h.库房流水号 = @耗材库 THEN 1 ELSE 0 END) AS 耗材库库位数,
SUM(CASE WHEN h.库房流水号 = @库房A THEN 1 ELSE 0 END) AS 库房A区库位数,
SUM(CASE WHEN h.库房流水号 IS NULL THEN 1 ELSE 0 END) AS 未归类库位数
FROM dbo.库存管理_货位主文件 h;
GO