/* 库房管理库位分页查询脚本(测试库 ERPTOOL_JY_20250826Back) 修改人:Ld 修改时间:2026-07-31 14:19:37; 说明:将库房管理新模块使用的库位查询过程改为分页版,不修改原仓储库位页面。 */ SET NOCOUNT ON; GO IF OBJECT_ID(N'dbo.库房管理_库位_查询', N'P') IS NOT NULL DROP PROCEDURE dbo.库房管理_库位_查询; GO CREATE PROCEDURE dbo.库房管理_库位_查询 @库房流水号 INT = NULL, @库区流水号 INT = NULL, @库位名称_check BIT = 0, @库位名称 NVARCHAR(50) = NULL, @库位状态_check BIT = 0, @库位状态 NVARCHAR(20) = NULL, @PageCurrent INT = NULL, @PageSize INT = NULL, @PageCount INT = NULL OUTPUT, @ItemCount INT = NULL OUTPUT AS BEGIN SET NOCOUNT ON; DECLARE @tbname NVARCHAR(MAX); DECLARE @fieldkey NVARCHAR(1000); DECLARE @where NVARCHAR(1000); DECLARE @fieldshow NVARCHAR(MAX); DECLARE @fieldOrder NVARCHAR(1000); DECLARE @locationName NVARCHAR(100); DECLARE @locationStatus NVARCHAR(100); SET @库房流水号 = NULLIF(@库房流水号, 0); SET @库区流水号 = NULLIF(@库区流水号, 0); SET @locationName = REPLACE(ISNULL(@库位名称, N''), N'''', N''''''); SET @locationStatus = REPLACE(ISNULL(@库位状态, N''), N'''', N''''''); SET @PageCurrent = ISNULL(NULLIF(@PageCurrent, 0), 1); SET @PageSize = ISNULL(NULLIF(@PageSize, 0), 20); SET @tbname = N'( SELECT h.货位流水号 AS 库位流水号, h.货位名称 AS 库位名称, h.库房流水号, k.库房名称, h.库区流水号, q.库区名称, h.排号, h.列号, h.层号, CASE WHEN ISNULL(h.是否启用, 1) = 0 THEN N''停用'' WHEN ISNULL(s.库存数量, 0) > 0 AND ISNULL(h.库位容量, 0) > 0 AND ISNULL(s.库存数量, 0) >= ISNULL(h.库位容量, 0) THEN N''满库位'' WHEN ISNULL(s.库存数量, 0) > 0 THEN N''有库存'' ELSE ISNULL(h.库位状态, N''空库位'') END AS 库位状态, ISNULL(h.库位容量, 0) AS 库位容量, ISNULL(s.物料种类, 0) AS 物料种类, ISNULL(s.库存数量, 0) AS 库存数量, h.操作日期, h.修改时间 FROM dbo.库存管理_货位主文件 h LEFT JOIN dbo.库房管理_库房主文件 k ON h.库房流水号 = k.库房流水号 LEFT JOIN dbo.库房管理_库区主文件 q ON h.库区流水号 = q.库区流水号 LEFT JOIN ( SELECT 货位流水号, COUNT(DISTINCT 物料流水号) AS 物料种类, SUM(ISNULL(货位存量, 0)) AS 库存数量 FROM dbo.库存管理_物料与货位对照表 WHERE ISNULL(货位存量, 0) > 0 GROUP BY 货位流水号 ) s ON h.货位流水号 = s.货位流水号 ) AS T'; SET @fieldkey = N'库位流水号'; SET @fieldshow = N'库位流水号,库位名称,库房流水号,库房名称,库区流水号,库区名称,排号,列号,层号,库位状态,库位容量,物料种类,库存数量,操作日期,修改时间'; SET @fieldOrder = N'排号 ASC, 列号 ASC, 层号 ASC, 库位名称 ASC, 库位流水号 ASC'; SET @where = N'1 = 1'; IF @库房流水号 IS NOT NULL SET @where = @where + N' AND 库房流水号 = ' + CAST(@库房流水号 AS NVARCHAR(20)); IF @库区流水号 IS NOT NULL SET @where = @where + N' AND 库区流水号 = ' + CAST(@库区流水号 AS NVARCHAR(20)); IF @库位名称_check = 1 AND @locationName <> N'' SET @where = @where + N' AND 库位名称 LIKE N''%' + @locationName + N'%'''; IF @库位状态_check = 1 AND @locationStatus <> N'' SET @where = @where + N' AND 库位状态 = N''' + @locationStatus + N''''; EXEC dbo.sp_xt_pagesplit2 @tbname, @fieldkey, @where, @fieldshow, @fieldOrder, @PageCurrent, @PageSize, @PageCount OUTPUT, @ItemCount OUTPUT; END GO