自动化立体仓库 - WMS系统
zwl
2 天以前 fb57e7836338304b16c09fec4fb5c68fb688c39e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
IF COL_LENGTH('dbo.asr_loc_mast', 'area_id') IS NULL
BEGIN
    ALTER TABLE [dbo].[asr_loc_mast]
        ADD [area_id] INT NULL;
END;
 
IF COL_LENGTH('dbo.asr_loc_mast', 'loc_alias') IS NULL
BEGIN
    ALTER TABLE [dbo].[asr_loc_mast]
        ADD [loc_alias] NVARCHAR(32) NULL;
END;
 
EXEC sys.sp_executesql N'
UPDATE [dbo].[asr_loc_mast]
SET [area_id] =
    CASE
        WHEN [crn_no] BETWEEN 1 AND 6 THEN 1
        WHEN [crn_no] BETWEEN 7 AND 18 THEN 2
        WHEN [crn_no] BETWEEN 19 AND 28 THEN 3
        ELSE [area_id]
    END
WHERE [area_id] IS NULL
  AND [crn_no] BETWEEN 1 AND 28;
';
 
EXEC sys.sp_executesql N'
;WITH area_min AS (
    SELECT [area_id], MIN([row1]) AS [min_row]
    FROM [dbo].[asr_loc_mast]
    WHERE [area_id] IN (1, 2, 3)
      AND [row1] IS NOT NULL
    GROUP BY [area_id]
)
UPDATE lm
SET [loc_alias] =
    CASE lm.[area_id]
        WHEN 1 THEN N''A-''
        WHEN 2 THEN N''B-''
        WHEN 3 THEN N''C-''
    END
    + RIGHT(''00'' + CAST(lm.[row1] - area_min.[min_row] + 1 AS VARCHAR(10)), 2)
    + RIGHT(''000'' + CAST(lm.[bay1] AS VARCHAR(10)), 3)
    + RIGHT(''00'' + CAST(lm.[lev1] AS VARCHAR(10)), 2)
FROM [dbo].[asr_loc_mast] lm
INNER JOIN area_min ON lm.[area_id] = area_min.[area_id]
WHERE lm.[area_id] IN (1, 2, 3)
  AND lm.[row1] IS NOT NULL
  AND lm.[bay1] IS NOT NULL
  AND lm.[lev1] IS NOT NULL;
';