更新人事/采购/销售/精工/仓储/技术等模块,新增出库单/PDA采购入库页面,补充生产计划需求文档及多项SQL脚本
This commit is contained in:
416
sql/PDA采购扫码入库_测试库_20260907.sql
Normal file
416
sql/PDA采购扫码入库_测试库_20260907.sql
Normal file
@@ -0,0 +1,416 @@
|
||||
/*
|
||||
修改人:Ld 修改时间:2026-09-07 15:42:36;
|
||||
用途: 测试库新增仓库 PDA 扫码采购入库后端过程。
|
||||
数据库: ERPTOOL_JY_20250826Back
|
||||
说明: 仅部署测试库;PDA 入库提交复用现有 dbo.仓储管理_采购件入库_循环执行,保持库存和采购合同状态更新口径一致。
|
||||
*/
|
||||
|
||||
IF COL_LENGTH(N'dbo.仓储管理_入库单标签', N'入库状态') IS NULL
|
||||
BEGIN
|
||||
-- 修改人:Ld 修改时间:2026-09-07 15:42:36; 标签主表增加PDA入库状态:0待入库、1部分入库、2已入库。
|
||||
ALTER TABLE dbo.仓储管理_入库单标签 ADD 入库状态 INT NOT NULL CONSTRAINT DF_仓储管理_入库单标签_入库状态 DEFAULT(0)
|
||||
END
|
||||
GO
|
||||
|
||||
IF COL_LENGTH(N'dbo.仓储管理_入库单标签', N'入库人') IS NULL
|
||||
BEGIN
|
||||
-- 修改人:Ld 修改时间:2026-09-07 15:42:36; 标签主表记录PDA最终入库人。
|
||||
ALTER TABLE dbo.仓储管理_入库单标签 ADD 入库人 INT NULL
|
||||
END
|
||||
GO
|
||||
|
||||
IF COL_LENGTH(N'dbo.仓储管理_入库单标签', N'入库时间') IS NULL
|
||||
BEGIN
|
||||
-- 修改人:Ld 修改时间:2026-09-07 15:42:36; 标签主表记录PDA最终入库时间。
|
||||
ALTER TABLE dbo.仓储管理_入库单标签 ADD 入库时间 DATETIME NULL
|
||||
END
|
||||
GO
|
||||
|
||||
IF COL_LENGTH(N'dbo.仓储管理_入库单标签明细', N'标准件和外购件流水号') IS NULL
|
||||
BEGIN
|
||||
-- 修改人:Ld 修改时间:2026-09-07 15:42:36; 标签明细补充原采购入库过程所需标准件/外购件流水号。
|
||||
ALTER TABLE dbo.仓储管理_入库单标签明细 ADD 标准件和外购件流水号 INT NULL
|
||||
END
|
||||
GO
|
||||
|
||||
IF COL_LENGTH(N'dbo.仓储管理_入库单标签明细', N'采购类型') IS NULL
|
||||
BEGIN
|
||||
-- 修改人:Ld 修改时间:2026-09-07 15:42:36; 标签明细补充采购类型:1普通采购、2耗材采购。
|
||||
ALTER TABLE dbo.仓储管理_入库单标签明细 ADD 采购类型 INT NULL
|
||||
END
|
||||
GO
|
||||
|
||||
IF COL_LENGTH(N'dbo.仓储管理_入库单标签明细', N'批号') IS NULL
|
||||
BEGIN
|
||||
-- 修改人:Ld 修改时间:2026-09-07 15:42:36; 标签明细补充批号,兼容主轴入库。
|
||||
ALTER TABLE dbo.仓储管理_入库单标签明细 ADD 批号 INT NULL
|
||||
END
|
||||
GO
|
||||
|
||||
IF COL_LENGTH(N'dbo.仓储管理_入库单标签明细', N'批次编码') IS NULL
|
||||
BEGIN
|
||||
-- 修改人:Ld 修改时间:2026-09-07 15:42:36; 标签明细补充批次编码,用于PDA入库和后续条码追溯。
|
||||
ALTER TABLE dbo.仓储管理_入库单标签明细 ADD 批次编码 NVARCHAR(100) NULL
|
||||
END
|
||||
GO
|
||||
|
||||
IF COL_LENGTH(N'dbo.仓储管理_入库单标签明细', N'已入库数量') IS NULL
|
||||
BEGIN
|
||||
-- 修改人:Ld 修改时间:2026-09-07 15:42:36; 标签明细记录PDA已入库数量,支持防重复入库和后续部分入库。
|
||||
ALTER TABLE dbo.仓储管理_入库单标签明细 ADD 已入库数量 DECIMAL(18,4) NOT NULL CONSTRAINT DF_仓储管理_入库单标签明细_已入库数量 DEFAULT(0)
|
||||
END
|
||||
GO
|
||||
|
||||
IF COL_LENGTH(N'dbo.仓储管理_入库单标签明细', N'货位流水号') IS NULL
|
||||
BEGIN
|
||||
-- 修改人:Ld 修改时间:2026-09-07 15:42:36; 标签明细记录PDA入库选择的货位流水号。
|
||||
ALTER TABLE dbo.仓储管理_入库单标签明细 ADD 货位流水号 INT NULL
|
||||
END
|
||||
GO
|
||||
|
||||
IF COL_LENGTH(N'dbo.仓储管理_入库单标签明细', N'货位名称') IS NULL
|
||||
BEGIN
|
||||
-- 修改人:Ld 修改时间:2026-09-07 15:42:36; 标签明细记录PDA入库选择的货位名称。
|
||||
ALTER TABLE dbo.仓储管理_入库单标签明细 ADD 货位名称 NVARCHAR(100) NULL
|
||||
END
|
||||
GO
|
||||
|
||||
IF COL_LENGTH(N'dbo.仓储管理_入库单标签明细', N'入库状态') IS NULL
|
||||
BEGIN
|
||||
-- 修改人:Ld 修改时间:2026-09-07 15:42:36; 标签明细增加PDA入库状态:0待入库、1部分入库、2已入库。
|
||||
ALTER TABLE dbo.仓储管理_入库单标签明细 ADD 入库状态 INT NOT NULL CONSTRAINT DF_仓储管理_入库单标签明细_入库状态 DEFAULT(0)
|
||||
END
|
||||
GO
|
||||
|
||||
IF COL_LENGTH(N'dbo.仓储管理_入库单标签明细', N'入库人') IS NULL
|
||||
BEGIN
|
||||
-- 修改人:Ld 修改时间:2026-09-07 15:42:36; 标签明细记录PDA入库人。
|
||||
ALTER TABLE dbo.仓储管理_入库单标签明细 ADD 入库人 INT NULL
|
||||
END
|
||||
GO
|
||||
|
||||
IF COL_LENGTH(N'dbo.仓储管理_入库单标签明细', N'入库时间') IS NULL
|
||||
BEGIN
|
||||
-- 修改人:Ld 修改时间:2026-09-07 15:42:36; 标签明细记录PDA入库时间。
|
||||
ALTER TABLE dbo.仓储管理_入库单标签明细 ADD 入库时间 DATETIME NULL
|
||||
END
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.TR_仓储管理_入库单标签明细_补充采购入库参数', N'TR') IS NOT NULL
|
||||
DROP TRIGGER dbo.TR_仓储管理_入库单标签明细_补充采购入库参数
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
-- 修改人:Ld 修改时间:2026-09-07 15:42:36; 标签明细新增后自动补齐原采购入库过程所需参数。
|
||||
CREATE TRIGGER dbo.TR_仓储管理_入库单标签明细_补充采购入库参数
|
||||
ON dbo.仓储管理_入库单标签明细
|
||||
AFTER INSERT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
UPDATE d
|
||||
SET 标准件和外购件流水号 = ISNULL(d.标准件和外购件流水号, ISNULL(cg.标准件和外购件流水号, hc.标准件和外购件流水号)),
|
||||
采购类型 = ISNULL(d.采购类型, CASE WHEN cg.采购合同明细流水号 IS NOT NULL THEN 1 WHEN hc.采购合同明细流水号 IS NOT NULL THEN 2 ELSE NULL END),
|
||||
批号 = ISNULL(d.批号, ISNULL(cg.批号, hc.批号)),
|
||||
批次编码 = ISNULL(d.批次编码, ISNULL(cg.批次编码, hc.批次编码))
|
||||
FROM dbo.仓储管理_入库单标签明细 d
|
||||
INNER JOIN inserted i ON d.入库单标签明细流水号 = i.入库单标签明细流水号
|
||||
INNER JOIN dbo.仓储管理_入库单标签 t ON d.入库单标签流水号 = t.入库单标签流水号
|
||||
OUTER APPLY (
|
||||
SELECT TOP 1
|
||||
v.采购合同明细流水号,
|
||||
v.标准件和外购件流水号,
|
||||
v.批号,
|
||||
(CONVERT(VARCHAR(10), GETDATE(), 23) + '-CG' + CONVERT(NVARCHAR(50), v.采购合同明细流水号))
|
||||
+ CASE WHEN ISNULL(v.是否主轴, 0) = 1 THEN '.' + CONVERT(NVARCHAR(50), v.批号) ELSE '' END AS 批次编码
|
||||
FROM dbo.采购管理_采购合同明细_视图 v
|
||||
WHERE v.采购合同流水号 = t.采购合同流水号
|
||||
AND v.物料流水号 = d.物料流水号
|
||||
AND (d.采购合同明细流水号 IS NULL OR v.采购合同明细流水号 = d.采购合同明细流水号)
|
||||
ORDER BY v.采购合同明细流水号
|
||||
) cg
|
||||
OUTER APPLY (
|
||||
SELECT TOP 1
|
||||
v.采购合同明细流水号,
|
||||
0 AS 标准件和外购件流水号,
|
||||
1 AS 批号,
|
||||
CONVERT(VARCHAR(10), GETDATE(), 23) + '-HC' + CONVERT(NVARCHAR(50), v.采购合同明细流水号) AS 批次编码
|
||||
FROM dbo.采购管理_耗材采购合同明细_查询视图 v
|
||||
WHERE v.采购合同流水号 = t.采购合同流水号
|
||||
AND v.物料流水号 = d.物料流水号
|
||||
AND (d.采购合同明细流水号 IS NULL OR v.采购合同明细流水号 = d.采购合同明细流水号)
|
||||
ORDER BY v.采购合同明细流水号
|
||||
) hc
|
||||
END
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.仓储管理_PDA货位_查询', N'P') IS NOT NULL
|
||||
DROP PROCEDURE dbo.仓储管理_PDA货位_查询
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
-- 修改人:Ld 修改时间:2026-09-07 15:42:36; PDA查询可用货位,供扫码入库选择库位。
|
||||
CREATE PROCEDURE dbo.仓储管理_PDA货位_查询
|
||||
@货位名称 NVARCHAR(100) = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT TOP 200
|
||||
货位流水号,
|
||||
货位名称,
|
||||
仓库流水号
|
||||
FROM dbo.库存管理_货位主文件
|
||||
WHERE ISNULL(是否启用, 1) = 1
|
||||
AND (ISNULL(@货位名称, N'') = N'' OR 货位名称 LIKE N'%' + @货位名称 + N'%')
|
||||
ORDER BY 货位名称
|
||||
END
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.仓储管理_PDA采购扫码入库_查询', N'P') IS NOT NULL
|
||||
DROP PROCEDURE dbo.仓储管理_PDA采购扫码入库_查询
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
-- 修改人:Ld 修改时间:2026-09-07 15:42:36; PDA扫码后查询标签和剩余待入库数量。
|
||||
CREATE PROCEDURE dbo.仓储管理_PDA采购扫码入库_查询
|
||||
@扫码内容 NVARCHAR(500) = NULL,
|
||||
@标签ID INT = NULL,
|
||||
@入库单号 NVARCHAR(100) = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @标签编号 NVARCHAR(100)
|
||||
SET @标签编号 = @扫码内容
|
||||
|
||||
IF @标签编号 LIKE N'JYRK|%'
|
||||
BEGIN
|
||||
SET @标签编号 = SUBSTRING(@标签编号, 6, 100)
|
||||
END
|
||||
|
||||
SELECT
|
||||
t.入库单标签流水号 AS 标签ID,
|
||||
t.标签编号,
|
||||
t.入库单号,
|
||||
t.采购合同流水号,
|
||||
t.采购合同号,
|
||||
t.供应商流水号,
|
||||
t.供应商,
|
||||
t.批次号,
|
||||
t.入库状态 AS 标签入库状态,
|
||||
d.入库单标签明细流水号 AS 标签明细ID,
|
||||
d.物料流水号,
|
||||
d.采购合同明细流水号,
|
||||
d.标准件和外购件流水号,
|
||||
d.采购类型,
|
||||
d.批号,
|
||||
d.批次编码,
|
||||
d.物料名称,
|
||||
d.图号,
|
||||
d.数量 AS 标签数量,
|
||||
d.已入库数量,
|
||||
CONVERT(DECIMAL(18,4), ISNULL(d.数量, 0) - ISNULL(d.已入库数量, 0)) AS 剩余入库数量,
|
||||
d.货位流水号,
|
||||
ISNULL(d.货位名称, h.货位名称) AS 货位名称,
|
||||
d.入库状态 AS 明细入库状态,
|
||||
d.是否需要质检
|
||||
FROM dbo.仓储管理_入库单标签 t
|
||||
INNER JOIN dbo.仓储管理_入库单标签明细 d
|
||||
ON t.入库单标签流水号 = d.入库单标签流水号
|
||||
LEFT JOIN dbo.库存管理_货位主文件 h
|
||||
ON d.货位流水号 = h.货位流水号
|
||||
WHERE t.是否启用 = 1
|
||||
AND (
|
||||
(@标签ID IS NOT NULL AND t.入库单标签流水号 = @标签ID)
|
||||
OR (ISNULL(@标签编号, N'') <> N'' AND t.标签编号 = @标签编号)
|
||||
OR (ISNULL(@入库单号, N'') <> N'' AND t.入库单号 = @入库单号)
|
||||
OR (ISNULL(@扫码内容, N'') <> N'' AND t.入库单号 = @扫码内容)
|
||||
)
|
||||
ORDER BY d.入库单标签明细流水号
|
||||
END
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.仓储管理_PDA采购扫码入库_提交', N'P') IS NOT NULL
|
||||
DROP PROCEDURE dbo.仓储管理_PDA采购扫码入库_提交
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
-- 修改人:Ld 修改时间:2026-09-07 15:42:36; PDA确认入库提交,复用原采购入库循环过程并更新标签入库状态。
|
||||
CREATE PROCEDURE dbo.仓储管理_PDA采购扫码入库_提交
|
||||
@扫码内容 NVARCHAR(500) = NULL,
|
||||
@标签ID INT = NULL,
|
||||
@标签明细流水号组 NVARCHAR(4000) = NULL,
|
||||
@入库数量组 NVARCHAR(4000) = NULL,
|
||||
@货位流水号组 NVARCHAR(4000) = NULL,
|
||||
@入库人 INT = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @实际标签ID INT
|
||||
DECLARE @标签编号 NVARCHAR(100)
|
||||
|
||||
SET @标签编号 = @扫码内容
|
||||
|
||||
IF @标签编号 LIKE N'JYRK|%'
|
||||
BEGIN
|
||||
SET @标签编号 = SUBSTRING(@标签编号, 6, 100)
|
||||
END
|
||||
|
||||
SELECT TOP 1 @实际标签ID = 入库单标签流水号
|
||||
FROM dbo.仓储管理_入库单标签
|
||||
WHERE 是否启用 = 1
|
||||
AND (
|
||||
(@标签ID IS NOT NULL AND 入库单标签流水号 = @标签ID)
|
||||
OR (ISNULL(@标签编号, N'') <> N'' AND 标签编号 = @标签编号)
|
||||
OR (ISNULL(@扫码内容, N'') <> N'' AND 入库单号 = @扫码内容)
|
||||
)
|
||||
|
||||
IF @实际标签ID IS NULL
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'未找到有效入库标签' AS message
|
||||
RETURN
|
||||
END
|
||||
|
||||
DECLARE @提交明细 TABLE
|
||||
(
|
||||
RowNum INT NOT NULL,
|
||||
标签明细ID INT NULL,
|
||||
入库数量 DECIMAL(18,4) NULL,
|
||||
货位流水号 INT NULL
|
||||
)
|
||||
|
||||
;WITH 明细表 AS (
|
||||
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS RowNum, CAST(Value AS INT) AS 标签明细ID
|
||||
FROM dbo.SplitString(@标签明细流水号组, ',')
|
||||
),
|
||||
数量表 AS (
|
||||
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS RowNum, CAST(Value AS DECIMAL(18,4)) AS 入库数量
|
||||
FROM dbo.SplitString(@入库数量组, ',')
|
||||
),
|
||||
货位表 AS (
|
||||
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS RowNum, CAST(Value AS INT) AS 货位流水号
|
||||
FROM dbo.SplitString(@货位流水号组, ',')
|
||||
)
|
||||
INSERT INTO @提交明细(RowNum, 标签明细ID, 入库数量, 货位流水号)
|
||||
SELECT m.RowNum, m.标签明细ID, q.入库数量, h.货位流水号
|
||||
FROM 明细表 m
|
||||
LEFT JOIN 数量表 q ON m.RowNum = q.RowNum
|
||||
LEFT JOIN 货位表 h ON m.RowNum = h.RowNum
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM @提交明细 WHERE ISNULL(入库数量, 0) > 0)
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'请提交至少一条入库数量大于0的明细' AS message
|
||||
RETURN
|
||||
END
|
||||
|
||||
IF EXISTS (SELECT 1 FROM @提交明细 WHERE ISNULL(入库数量, 0) <= 0 OR 货位流水号 IS NULL)
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'存在入库数量为空、数量小于等于0或未选择货位的明细' AS message
|
||||
RETURN
|
||||
END
|
||||
|
||||
IF EXISTS (
|
||||
SELECT 1
|
||||
FROM @提交明细 s
|
||||
LEFT JOIN dbo.仓储管理_入库单标签明细 d ON s.标签明细ID = d.入库单标签明细流水号
|
||||
WHERE d.入库单标签明细流水号 IS NULL
|
||||
OR d.入库单标签流水号 <> @实际标签ID
|
||||
OR s.入库数量 > CONVERT(DECIMAL(18,4), ISNULL(d.数量, 0) - ISNULL(d.已入库数量, 0))
|
||||
)
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'存在无效明细或入库数量超过标签剩余数量' AS message
|
||||
RETURN
|
||||
END
|
||||
|
||||
IF EXISTS (
|
||||
SELECT 1
|
||||
FROM @提交明细 s
|
||||
LEFT JOIN dbo.库存管理_货位主文件 h ON s.货位流水号 = h.货位流水号
|
||||
WHERE h.货位流水号 IS NULL OR ISNULL(h.是否启用, 1) <> 1
|
||||
)
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'存在无效或停用货位' AS message
|
||||
RETURN
|
||||
END
|
||||
|
||||
DECLARE @物料流水号组 NVARCHAR(4000)
|
||||
DECLARE @实际到货数量组 NVARCHAR(4000)
|
||||
DECLARE @标准件和外购件流水号组 NVARCHAR(4000)
|
||||
DECLARE @采购合同明细流水号组 NVARCHAR(4000)
|
||||
DECLARE @是否采购组 NVARCHAR(4000)
|
||||
DECLARE @批号组 NVARCHAR(4000)
|
||||
DECLARE @批次编码组 NVARCHAR(4000)
|
||||
|
||||
SELECT
|
||||
@物料流水号组 = STUFF((SELECT ',' + CONVERT(NVARCHAR(50), d.物料流水号) FROM @提交明细 s INNER JOIN dbo.仓储管理_入库单标签明细 d ON s.标签明细ID = d.入库单标签明细流水号 ORDER BY s.RowNum FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, ''),
|
||||
@实际到货数量组 = STUFF((SELECT ',' + CONVERT(NVARCHAR(50), CONVERT(FLOAT, s.入库数量)) FROM @提交明细 s ORDER BY s.RowNum FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, ''),
|
||||
@标准件和外购件流水号组 = STUFF((SELECT ',' + CONVERT(NVARCHAR(50), ISNULL(d.标准件和外购件流水号, 0)) FROM @提交明细 s INNER JOIN dbo.仓储管理_入库单标签明细 d ON s.标签明细ID = d.入库单标签明细流水号 ORDER BY s.RowNum FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, ''),
|
||||
@采购合同明细流水号组 = STUFF((SELECT ',' + CONVERT(NVARCHAR(50), ISNULL(d.采购合同明细流水号, 0)) FROM @提交明细 s INNER JOIN dbo.仓储管理_入库单标签明细 d ON s.标签明细ID = d.入库单标签明细流水号 ORDER BY s.RowNum FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, ''),
|
||||
@是否采购组 = STUFF((SELECT ',' + CONVERT(NVARCHAR(50), ISNULL(d.采购类型, 1)) FROM @提交明细 s INNER JOIN dbo.仓储管理_入库单标签明细 d ON s.标签明细ID = d.入库单标签明细流水号 ORDER BY s.RowNum FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, ''),
|
||||
@批号组 = STUFF((SELECT ',' + CONVERT(NVARCHAR(50), ISNULL(d.批号, 1)) FROM @提交明细 s INNER JOIN dbo.仓储管理_入库单标签明细 d ON s.标签明细ID = d.入库单标签明细流水号 ORDER BY s.RowNum FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, ''),
|
||||
@批次编码组 = STUFF((SELECT ',' + ISNULL(d.批次编码, t.批次号) FROM @提交明细 s INNER JOIN dbo.仓储管理_入库单标签明细 d ON s.标签明细ID = d.入库单标签明细流水号 INNER JOIN dbo.仓储管理_入库单标签 t ON d.入库单标签流水号 = t.入库单标签流水号 ORDER BY s.RowNum FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRAN
|
||||
|
||||
EXEC dbo.仓储管理_采购件入库_循环执行
|
||||
@物料流水号组 = @物料流水号组,
|
||||
@实际到货数量组 = @实际到货数量组,
|
||||
@货位流水号组 = @货位流水号组,
|
||||
@入库人员流水号 = @入库人,
|
||||
@采购合同明细流水号组 = @采购合同明细流水号组,
|
||||
@标准件和外购件流水号组 = @标准件和外购件流水号组,
|
||||
@是否采购组 = @是否采购组,
|
||||
@批号组 = @批号组,
|
||||
@批次编码组 = @批次编码组
|
||||
|
||||
UPDATE d
|
||||
SET 已入库数量 = CONVERT(DECIMAL(18,4), ISNULL(d.已入库数量, 0)) + s.入库数量,
|
||||
货位流水号 = s.货位流水号,
|
||||
货位名称 = h.货位名称,
|
||||
入库状态 = CASE WHEN CONVERT(DECIMAL(18,4), ISNULL(d.已入库数量, 0)) + s.入库数量 >= CONVERT(DECIMAL(18,4), ISNULL(d.数量, 0)) THEN 2 ELSE 1 END,
|
||||
入库人 = @入库人,
|
||||
入库时间 = GETDATE()
|
||||
FROM dbo.仓储管理_入库单标签明细 d
|
||||
INNER JOIN @提交明细 s ON d.入库单标签明细流水号 = s.标签明细ID
|
||||
INNER JOIN dbo.库存管理_货位主文件 h ON s.货位流水号 = h.货位流水号
|
||||
|
||||
UPDATE t
|
||||
SET 入库状态 = CASE
|
||||
WHEN NOT EXISTS (SELECT 1 FROM dbo.仓储管理_入库单标签明细 d WHERE d.入库单标签流水号 = t.入库单标签流水号 AND CONVERT(DECIMAL(18,4), ISNULL(d.已入库数量, 0)) < CONVERT(DECIMAL(18,4), ISNULL(d.数量, 0))) THEN 2
|
||||
WHEN EXISTS (SELECT 1 FROM dbo.仓储管理_入库单标签明细 d WHERE d.入库单标签流水号 = t.入库单标签流水号 AND CONVERT(DECIMAL(18,4), ISNULL(d.已入库数量, 0)) > 0) THEN 1
|
||||
ELSE 0
|
||||
END,
|
||||
入库人 = @入库人,
|
||||
入库时间 = CASE
|
||||
WHEN NOT EXISTS (SELECT 1 FROM dbo.仓储管理_入库单标签明细 d WHERE d.入库单标签流水号 = t.入库单标签流水号 AND CONVERT(DECIMAL(18,4), ISNULL(d.已入库数量, 0)) < CONVERT(DECIMAL(18,4), ISNULL(d.数量, 0))) THEN GETDATE()
|
||||
ELSE t.入库时间
|
||||
END
|
||||
FROM dbo.仓储管理_入库单标签 t
|
||||
WHERE t.入库单标签流水号 = @实际标签ID
|
||||
|
||||
COMMIT TRAN
|
||||
|
||||
SELECT '1' AS result, N'入库成功' AS message, @实际标签ID AS 标签ID
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF @@TRANCOUNT > 0 ROLLBACK TRAN
|
||||
SELECT '0' AS result, ERROR_MESSAGE() AS message, @实际标签ID AS 标签ID
|
||||
END CATCH
|
||||
END
|
||||
GO
|
||||
129
sql/PDA采购扫码入库页面菜单_测试库_20260908.sql
Normal file
129
sql/PDA采购扫码入库页面菜单_测试库_20260908.sql
Normal file
@@ -0,0 +1,129 @@
|
||||
/* 修改人:Ld 修改时间:2026-09-08 10:04:25; 测试库新增PDA采购扫码入库页面菜单,并跟随物料入库权限授权 */
|
||||
SET XACT_ABORT ON;
|
||||
BEGIN TRAN;
|
||||
|
||||
DECLARE @ModuleId INT;
|
||||
|
||||
SELECT @ModuleId = id
|
||||
FROM dbo.基础表_模块信息
|
||||
WHERE [path] = N'WarehouseManagement/PDAPurchaseInbound'
|
||||
OR component = N'/WarehouseManagement/PDAPurchaseInbound'
|
||||
OR name = N'PDAPurchaseInbound'
|
||||
OR title = N'PDA扫码入库';
|
||||
|
||||
IF @ModuleId IS NULL
|
||||
BEGIN
|
||||
INSERT INTO dbo.基础表_模块信息
|
||||
(
|
||||
[path],
|
||||
component,
|
||||
redirect,
|
||||
name,
|
||||
title,
|
||||
icon,
|
||||
是否通知,
|
||||
消息通知来源,
|
||||
通知条件,
|
||||
dashboardIcon,
|
||||
是否禁用
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
N'WarehouseManagement/PDAPurchaseInbound',
|
||||
N'/WarehouseManagement/PDAPurchaseInbound',
|
||||
NULL,
|
||||
N'PDAPurchaseInbound',
|
||||
N'PDA扫码入库',
|
||||
N'PurchasePartsStorage',
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
0
|
||||
);
|
||||
|
||||
SET @ModuleId = SCOPE_IDENTITY();
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
UPDATE dbo.基础表_模块信息
|
||||
SET [path] = N'WarehouseManagement/PDAPurchaseInbound',
|
||||
component = N'/WarehouseManagement/PDAPurchaseInbound',
|
||||
redirect = NULL,
|
||||
name = N'PDAPurchaseInbound',
|
||||
title = N'PDA扫码入库',
|
||||
icon = N'PurchasePartsStorage',
|
||||
是否禁用 = 0
|
||||
WHERE id = @ModuleId;
|
||||
END;
|
||||
|
||||
;WITH RoleList AS
|
||||
(
|
||||
SELECT
|
||||
r.角色编号,
|
||||
r.pid,
|
||||
r.角色模块顺序 AS 物料入库顺序
|
||||
FROM dbo.基础表_角色模块信息 r
|
||||
WHERE r.id = 44
|
||||
AND ISNULL(r.是否启用, 1) = 1
|
||||
)
|
||||
INSERT INTO dbo.基础表_角色模块信息
|
||||
(
|
||||
id,
|
||||
pid,
|
||||
模块顺序,
|
||||
角色编号,
|
||||
是否启用,
|
||||
角色模块顺序
|
||||
)
|
||||
SELECT
|
||||
@ModuleId,
|
||||
RoleList.pid,
|
||||
@ModuleId,
|
||||
RoleList.角色编号,
|
||||
1,
|
||||
ISNULL(RoleOrder.MaxOrder, RoleList.物料入库顺序) + 1
|
||||
FROM RoleList
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT MAX(角色模块顺序) AS MaxOrder
|
||||
FROM dbo.基础表_角色模块信息
|
||||
WHERE 角色编号 = RoleList.角色编号
|
||||
AND pid = RoleList.pid
|
||||
) RoleOrder
|
||||
WHERE NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.基础表_角色模块信息
|
||||
WHERE id = @ModuleId
|
||||
AND pid = RoleList.pid
|
||||
AND 角色编号 = RoleList.角色编号
|
||||
);
|
||||
|
||||
UPDATE r
|
||||
SET 是否启用 = 1
|
||||
FROM dbo.基础表_角色模块信息 r
|
||||
WHERE r.id = @ModuleId
|
||||
AND EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.基础表_角色模块信息 sourceRole
|
||||
WHERE sourceRole.id = 44
|
||||
AND sourceRole.角色编号 = r.角色编号
|
||||
AND sourceRole.pid = r.pid
|
||||
AND ISNULL(sourceRole.是否启用, 1) = 1
|
||||
);
|
||||
|
||||
SELECT @ModuleId AS PDA扫码入库模块ID;
|
||||
|
||||
SELECT id, [path], component, name, title, icon, 是否禁用
|
||||
FROM dbo.基础表_模块信息
|
||||
WHERE id = @ModuleId;
|
||||
|
||||
SELECT r.IDD, r.id, r.pid, r.角色编号, r.是否启用, r.角色模块顺序, m.title, m.component
|
||||
FROM dbo.基础表_角色模块信息 r
|
||||
INNER JOIN dbo.基础表_模块信息 m ON r.id = m.id
|
||||
WHERE r.id = @ModuleId
|
||||
ORDER BY r.角色编号, r.pid, r.角色模块顺序;
|
||||
|
||||
COMMIT TRAN;
|
||||
80
sql/PDM_组件名称_确认更改新_BOM数量重算_20260812.sql
Normal file
80
sql/PDM_组件名称_确认更改新_BOM数量重算_20260812.sql
Normal file
@@ -0,0 +1,80 @@
|
||||
USE [ERPTOOL_JY]
|
||||
GO
|
||||
|
||||
DECLARE @sql NVARCHAR(MAX)
|
||||
DECLARE @new NVARCHAR(MAX)
|
||||
DECLARE @start INT
|
||||
DECLARE @afterStatus INT
|
||||
DECLARE @finish INT
|
||||
DECLARE @replaceLength INT
|
||||
|
||||
SELECT @sql = OBJECT_DEFINITION(OBJECT_ID(N'dbo.PDM_组件名称_确认更改新'))
|
||||
|
||||
IF @sql IS NULL
|
||||
BEGIN
|
||||
RAISERROR(N'未找到存储过程 PDM_组件名称_确认更改新', 16, 1)
|
||||
RETURN
|
||||
END
|
||||
|
||||
SET @new = N' -- 修改人:Ld 修改时间:2026-08-12 13:16:31; 合同查询修改数量时按产品基础BOM重新计算订单BOM,避免在已乘组件数量的订单BOM上再次相乘。
|
||||
IF EXISTS (
|
||||
SELECT 1
|
||||
FROM PDM_零件明细表_基本件 b
|
||||
INNER JOIN 产品信息_基本件_基础表 p ON p.产品流水号 = @产品流水号临时 AND p.物料流水号 = b.物料流水号
|
||||
WHERE b.组件流水号 = @orderN AND ISNULL(b.零件数量, 0) <> ISNULL(CONVERT(INT, p.零件数量 * @数量临时), 0)
|
||||
)
|
||||
OR EXISTS (
|
||||
SELECT 1
|
||||
FROM PDM_零件明细表_标准件和外购件 w
|
||||
INNER JOIN 产品信息_外购件_基础表 p ON p.产品流水号 = @产品流水号临时 AND p.物料流水号 = w.物料流水号
|
||||
WHERE w.组件流水号 = @orderN AND ISNULL(w.零件数量, 0) <> ISNULL(CONVERT(INT, p.零件数量 * @数量临时), 0)
|
||||
)
|
||||
begin
|
||||
update b
|
||||
set b.零件数量 = CONVERT(INT, p.零件数量 * @数量临时),
|
||||
b.零件类型 = p.零件类型,
|
||||
b.材料流水号 = p.材料流水号,
|
||||
b.导入人员编号 = p.导入人员编号
|
||||
from PDM_零件明细表_基本件 b
|
||||
inner join 产品信息_基本件_基础表 p on p.产品流水号 = @产品流水号临时 and p.物料流水号 = b.物料流水号
|
||||
where b.组件流水号 = @orderN
|
||||
|
||||
update w
|
||||
set w.零件数量 = CONVERT(INT, p.零件数量 * @数量临时),
|
||||
w.零件类型 = p.零件类型,
|
||||
w.材料流水号 = p.材料流水号,
|
||||
w.导入人员编号 = p.导入人员编号
|
||||
from PDM_零件明细表_标准件和外购件 w
|
||||
inner join 产品信息_外购件_基础表 p on p.产品流水号 = @产品流水号临时 and p.物料流水号 = w.物料流水号
|
||||
where w.组件流水号 = @orderN
|
||||
|
||||
-- 只有修改数量才将合同打回至 订单分配界面 重新分配 且有物料待分配
|
||||
update PDM_组件名称 SET 是否分配 = 0 where 组件流水号 = @orderN
|
||||
update 合同管理_订单信息_基础表 set 是否下达 = 0,是否提交=1 where 项目流水号=@项目流水号
|
||||
end'
|
||||
|
||||
SET @start = CHARINDEX(N'declare @零件数量改前 int', @sql)
|
||||
SET @afterStatus = CHARINDEX(N'update 合同管理_订单信息_基础表 set 是否下达 = 0,是否提交=1 where 项目流水号=@项目流水号', @sql, @start)
|
||||
SET @finish = CASE WHEN @afterStatus > 0 THEN CHARINDEX(N'end', @sql, @afterStatus) ELSE 0 END
|
||||
|
||||
IF @start = 0 OR @afterStatus = 0 OR @finish = 0
|
||||
BEGIN
|
||||
IF CHARINDEX(N'合同查询修改数量时按产品基础BOM重新计算订单BOM', @sql) > 0
|
||||
BEGIN
|
||||
PRINT N'过程已包含本次BOM数量重算修复,无需重复修改'
|
||||
RETURN
|
||||
END
|
||||
|
||||
RAISERROR(N'未找到预期的BOM数量缩放旧片段,未执行修改', 16, 1)
|
||||
RETURN
|
||||
END
|
||||
|
||||
SET @replaceLength = @finish - @start + LEN(N'end')
|
||||
SET @sql = STUFF(@sql, @start, @replaceLength, @new)
|
||||
SET @sql = REPLACE(@sql, N'CREATE PROCEDURE [dbo].[PDM_组件名称_确认更改新]', N'ALTER PROCEDURE [dbo].[PDM_组件名称_确认更改新]')
|
||||
SET @sql = REPLACE(@sql, N'CREATE PROCEDURE [dbo].[PDM_组件名称_确认更改新]', N'ALTER PROCEDURE [dbo].[PDM_组件名称_确认更改新]')
|
||||
SET @sql = REPLACE(@sql, N'CREATE PROCEDURE [dbo].[PDM_组件名称_确认更改新]', N'ALTER PROCEDURE [dbo].[PDM_组件名称_确认更改新]')
|
||||
SET @sql = REPLACE(@sql, N'CREATE PROCEDURE [dbo].[PDM_组件名称_确认更改新]', N'ALTER PROCEDURE [dbo].[PDM_组件名称_确认更改新]')
|
||||
|
||||
EXEC sp_executesql @sql
|
||||
GO
|
||||
341
sql/PDM_组件名称_确认更改新_ERPTOOL_JY_before_20260812.sql
Normal file
341
sql/PDM_组件名称_确认更改新_ERPTOOL_JY_before_20260812.sql
Normal file
@@ -0,0 +1,341 @@
|
||||
CREATE PROCEDURE [dbo].[PDM_组件名称_确认更改新]
|
||||
@项目流水号 int = '17412',
|
||||
@机床流水号 int = '17448',
|
||||
@修改人 int = '5',
|
||||
@合同备注 nvarchar(200)=null
|
||||
AS
|
||||
declare @合同类型 int
|
||||
declare @订单流水号 int
|
||||
declare @组件流水号 int
|
||||
declare @产品流水号 int
|
||||
declare @机床流水号游标 int
|
||||
declare @产品名称 nvarchar(200) = null
|
||||
declare @数量 float = null
|
||||
declare @单位 nvarchar(50) = null
|
||||
declare @单价 float = null
|
||||
declare @产品详情 nvarchar(500) = null
|
||||
declare @产品位置 nvarchar(50) = null
|
||||
declare @是否可选 int
|
||||
declare @物料流水号 int
|
||||
declare @是否滑台 int
|
||||
declare @是否分配 int
|
||||
declare @是否接收 int
|
||||
declare @顺序 int
|
||||
|
||||
declare @组件流水号临时 int
|
||||
declare @产品流水号临时 int
|
||||
declare @机床流水号游标临时 int
|
||||
declare @产品名称临时 nvarchar(200) = null
|
||||
declare @数量临时 float = null
|
||||
declare @配置数临时 float = null
|
||||
declare @单位临时 nvarchar(50) = null
|
||||
declare @单价临时 float = null
|
||||
declare @产品详情临时 nvarchar(500) = null
|
||||
declare @产品位置临时 nvarchar(50) = null
|
||||
declare @是否可选临时 int
|
||||
declare @物料流水号临时 int
|
||||
declare @是否滑台临时 int
|
||||
declare @顺序临时 int
|
||||
|
||||
select @合同类型=合同类型 from PDM_项目名称 where 项目流水号=@项目流水号
|
||||
select @订单流水号=订单流水号 from 合同管理_订单信息_基础表 where 项目流水号=@项目流水号
|
||||
|
||||
declare @改前数量 int
|
||||
select top 1 @组件流水号 = 组件流水号 from PDM_组件名称_修改记录_临时表 where PDM_组件名称_修改记录_临时表.机床流水号 = @机床流水号
|
||||
select @改前数量 = count(1) from PDM_组件名称 where 组件流水号 = @组件流水号
|
||||
|
||||
declare @项目修改记录流水号 int
|
||||
|
||||
insert into PDM_项目名称_修改记录(项目流水号,修改人,合同备注)values(@项目流水号,@修改人,@合同备注)
|
||||
set @项目修改记录流水号 = @@IDENTITY
|
||||
|
||||
if @合同类型 = 2
|
||||
begin
|
||||
insert into PDM_机床名称_修改记录(项目修改记录流水号,机床流水号,机床名称,数量,单位,单价,详情)
|
||||
select @项目修改记录流水号,机床流水号,机床名称,数量,单位,单价,详情 from PDM_机床名称 where 项目流水号=@项目流水号
|
||||
|
||||
update PDM_机床名称 set PDM_机床名称.机床名称=a.机床名称,PDM_机床名称.数量=a.数量,PDM_机床名称.单位=a.单位,
|
||||
PDM_机床名称.单价=a.单价,PDM_机床名称.详情=a.详情 from PDM_机床名称_修改记录_临时表 as a where PDM_机床名称.机床流水号=a.机床流水号
|
||||
|
||||
declare @机床数 int
|
||||
select @机床数 = 数量 from PDM_机床名称_修改记录_临时表 where 机床流水号 = @机床流水号
|
||||
update PDM_组件名称_修改记录_临时表 set 数量 = 配置数 * @机床数 where 机床流水号 = @机床流水号
|
||||
|
||||
-- 然后删除机床
|
||||
--DELETE FROM PDM_机床名称
|
||||
--WHERE 项目流水号 = @项目流水号
|
||||
-- AND 机床流水号 NOT IN (SELECT 机床流水号 FROM PDM_机床名称_修改记录_临时表 WHERE 项目流水号 = @项目流水号)
|
||||
|
||||
-- 由于考虑到专机合同删除问题 实际删除临时表放到后面
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-07-23 允许合同修改时删除未领料机床,已领料机床保留,避免误删已领料数据
|
||||
IF EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 WHERE 项目流水号 = @项目流水号)
|
||||
BEGIN
|
||||
DELETE r FROM 车间装配管理_装配任务 r
|
||||
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
|
||||
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
|
||||
WHERE m.项目流水号 = @项目流水号
|
||||
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
|
||||
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
|
||||
|
||||
DELETE r FROM 车间装配管理_装配执行_临时领料明细 r
|
||||
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
|
||||
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
|
||||
WHERE m.项目流水号 = @项目流水号
|
||||
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
|
||||
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
|
||||
|
||||
DELETE r FROM 车间装配管理_领料单明细 r
|
||||
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
|
||||
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
|
||||
WHERE m.项目流水号 = @项目流水号
|
||||
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
|
||||
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
|
||||
|
||||
DELETE r FROM 车间装配管理_领料单 r
|
||||
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
|
||||
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
|
||||
WHERE m.项目流水号 = @项目流水号
|
||||
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
|
||||
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
|
||||
|
||||
DELETE r FROM PDM_零件明细表_基本件 r
|
||||
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
|
||||
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
|
||||
WHERE m.项目流水号 = @项目流水号
|
||||
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
|
||||
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
|
||||
|
||||
DELETE r FROM PDM_零件明细表_标准件和外购件 r
|
||||
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
|
||||
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
|
||||
WHERE m.项目流水号 = @项目流水号
|
||||
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
|
||||
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
|
||||
|
||||
DELETE c FROM PDM_组件名称 c
|
||||
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
|
||||
WHERE m.项目流水号 = @项目流水号
|
||||
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
|
||||
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
|
||||
|
||||
DELETE m FROM PDM_机床名称 m
|
||||
WHERE m.项目流水号 = @项目流水号
|
||||
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
|
||||
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c WHERE c.机床流水号 = m.机床流水号 AND ISNULL(c.是否领料, 0) <> 0)
|
||||
END
|
||||
|
||||
delete from PDM_机床名称_修改记录_临时表 where 项目流水号 = @项目流水号
|
||||
end
|
||||
|
||||
insert into PDM_组件名称_修改记录(项目修改记录流水号,组件流水号,产品流水号,机床流水号,产品名称,数量,单位,单价,产品详情)
|
||||
select @项目修改记录流水号,组件流水号,产品流水号,机床流水号,产品名称,数量,单位,单价,产品详情 from PDM_组件名称 where 机床流水号=@机床流水号 and 是否合同创建 = 1 and 已删= 0
|
||||
|
||||
|
||||
declare @orderN int--临时变量,用来保存游标值
|
||||
declare y_curr cursor for --申明游标 为orderNum
|
||||
select 组件流水号 from PDM_组件名称_修改记录_临时表 where PDM_组件名称_修改记录_临时表.机床流水号 = @机床流水号
|
||||
open y_curr --打开游标
|
||||
fetch next from y_curr into @orderN ----开始循环游标变量
|
||||
while(@@fetch_status=0)---返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。
|
||||
begin
|
||||
select @产品流水号临时=ISNULL([PDM_组件名称_修改记录_临时表].产品流水号,0),
|
||||
@机床流水号游标临时 =[PDM_组件名称_修改记录_临时表].机床流水号,
|
||||
@产品名称临时=[PDM_组件名称_修改记录_临时表].产品名称,
|
||||
@数量临时=[PDM_组件名称_修改记录_临时表].数量,
|
||||
@配置数临时=[PDM_组件名称_修改记录_临时表].配置数,
|
||||
@单位临时=[PDM_组件名称_修改记录_临时表].单位,
|
||||
@单价临时=[PDM_组件名称_修改记录_临时表].单价,
|
||||
@产品详情临时=[PDM_组件名称_修改记录_临时表].产品详情,
|
||||
@产品位置临时=[PDM_组件名称_修改记录_临时表].产品位置,
|
||||
@是否可选临时=[PDM_组件名称_修改记录_临时表].是否可选,
|
||||
@物料流水号临时=ISNULL( [PDM_组件名称_修改记录_临时表].物料流水号,0),
|
||||
@是否滑台临时=ISNULL( 产品信息_基础表.是否滑台,0 ),
|
||||
@顺序临时=[PDM_组件名称_修改记录_临时表].顺序
|
||||
from [dbo].[PDM_组件名称_修改记录_临时表] LEFT JOIN 产品信息_基础表
|
||||
ON 产品信息_基础表.产品流水号 = [PDM_组件名称_修改记录_临时表].产品流水号 where 组件流水号 = @orderN
|
||||
|
||||
select @产品流水号=ISNULL( PDM_组件名称.产品流水号,0),
|
||||
@机床流水号游标 =PDM_组件名称.机床流水号,
|
||||
@产品名称=PDM_组件名称.产品名称,
|
||||
@数量=PDM_组件名称.数量,
|
||||
@是否分配=PDM_组件名称.是否分配,
|
||||
@是否接收 = 是否接收,
|
||||
--@单位=PDM_组件名称.单位,
|
||||
--@产品详情=PDM_组件名称.产品详情,
|
||||
--@产品位置=PDM_组件名称.产品位置,
|
||||
--@是否可选=PDM_组件名称.是否可选,
|
||||
@物料流水号=ISNULL( PDM_组件名称.物料流水号,0),
|
||||
@是否滑台=ISNULL( 产品信息_基础表.是否滑台,0)
|
||||
from [dbo].PDM_组件名称 LEFT JOIN 产品信息_基础表
|
||||
ON 产品信息_基础表.产品流水号 = PDM_组件名称.产品流水号 where 组件流水号 = @orderN
|
||||
|
||||
|
||||
if @产品流水号临时 <> @产品流水号
|
||||
begin
|
||||
update dbo.PDM_组件名称 set 修改状态 = 2,是否分配 = 0 where 组件流水号 = @orderN
|
||||
delete from 车间装配管理_领料单明细 where 组件流水号 = @orderN
|
||||
delete from 车间装配管理_领料单 where 组件流水号 = @orderN
|
||||
delete from 车间装配管理_装配执行_临时领料明细 where 组件流水号=@orderN
|
||||
delete from PDM_零件明细表_基本件 where 组件流水号 = @orderN
|
||||
delete from PDM_零件明细表_基本件_数据导入保存 where 订单流水号 = @订单流水号 and 产品名称 = @产品名称
|
||||
delete from PDM_零件明细表_标准件和外购件 where 组件流水号 = @orderN
|
||||
delete from PDM_零件明细表_外购件和标准件_数据导入保存 where 订单流水号 = @订单流水号 and 产品名称 = @产品名称
|
||||
end
|
||||
else
|
||||
begin
|
||||
-- 只有数量发生改动 才会修改 是否分配状态
|
||||
--update dbo.PDM_组件名称 set 修改状态 = 1,是否分配 = 0 where 组件流水号 = @orderN
|
||||
update dbo.PDM_组件名称 set 修改状态 = 1 where 组件流水号 = @orderN
|
||||
if @数量临时 <> @数量 and @是否分配 = 1
|
||||
begin
|
||||
if @数量临时 <> @数量 and @是否分配 = 1
|
||||
begin
|
||||
declare @零件数量改前 int
|
||||
declare @零件数量改后 int
|
||||
SELECT @零件数量改前 = 零件数量 FROM PDM_零件明细表_基本件 where 组件流水号 = @orderN
|
||||
SET @零件数量改后 = @零件数量改前/@数量 * @数量临时
|
||||
IF(@零件数量改前 != @零件数量改后)
|
||||
begin
|
||||
update PDM_零件明细表_基本件 set 零件数量 = 零件数量/@数量 * @数量临时 where 组件流水号 = @orderN
|
||||
update PDM_零件明细表_标准件和外购件 set 零件数量 = 零件数量/@数量 * @数量临时 where 组件流水号 = @orderN
|
||||
-- 只有修改数量才将合同打回至 订单分配界面 重新分配 且有物料待分配
|
||||
update PDM_组件名称 SET 是否分配 = 0 where 组件流水号 = @orderN
|
||||
update 合同管理_订单信息_基础表 set 是否下达 = 0,是否提交=1 where 项目流水号=@项目流水号
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
if (
|
||||
((@是否滑台临时 = 2 or @是否滑台临时 =4) and @物料流水号临时 = 0 and @产品流水号临时 <> 0 and (@是否滑台 = 2 or @是否滑台 =4) and @物料流水号 = 0 and @产品流水号 <> 0)
|
||||
OR ((@是否滑台临时 = 1 or @是否滑台临时 =3) and @物料流水号临时 = 0 and @产品流水号临时 <> 0 and (@是否滑台 = 1 or @是否滑台 =3) and @物料流水号 = 0 and @产品流水号 <> 0)
|
||||
OR (@是否滑台临时 = 0 and @物料流水号临时 = 0 and @产品流水号临时 = 0 and @是否滑台 = 0 and @物料流水号 = 0 and @产品流水号 = 0)
|
||||
OR (@是否滑台临时 = 0 and @物料流水号临时 <> 0 and @产品流水号临时 = 0 and @是否滑台 = 0 and @物料流水号 <> 0 and @产品流水号 = 0)
|
||||
OR (@是否滑台临时 = 0 and @物料流水号临时 = 0 and @产品流水号临时 <> 0 and @是否滑台 = 0 and @物料流水号 = 0 and @产品流水号 <> 0)
|
||||
OR (@是否滑台临时 = 5 and @物料流水号临时 = 0 and @产品流水号临时 <> 0 and @是否滑台 = 5 and @物料流水号 = 0 and @产品流水号 <> 0)
|
||||
)
|
||||
begin
|
||||
update PDM_组件名称 set PDM_组件名称.产品流水号=@产品流水号临时,
|
||||
PDM_组件名称.产品名称=@产品名称临时,
|
||||
PDM_组件名称.数量=@数量临时,
|
||||
PDM_组件名称.配置数=@配置数临时,
|
||||
PDM_组件名称.单位=@单位临时,
|
||||
PDM_组件名称.单价=@单价临时,
|
||||
PDM_组件名称.产品详情=@产品详情临时,
|
||||
PDM_组件名称.产品位置=@产品位置临时,
|
||||
PDM_组件名称.物料流水号=@物料流水号临时,
|
||||
顺序 = @顺序临时
|
||||
where PDM_组件名称.组件流水号 = @orderN
|
||||
END
|
||||
ELSE
|
||||
begin
|
||||
-- 先判断是否接收,如果接收过的就不修改它的状态到未下达 如果没接受过 零部件物料变为 未分配状态 订单也需要同步未分配
|
||||
--if(@是否接收 = 1)
|
||||
--begin
|
||||
--update PDM_组件名称 set PDM_组件名称.产品流水号=@产品流水号临时,
|
||||
-- PDM_组件名称.产品名称=@产品名称临时,
|
||||
-- PDM_组件名称.数量=@数量临时,
|
||||
-- PDM_组件名称.配置数=@配置数临时,
|
||||
-- PDM_组件名称.单位=@单位临时,
|
||||
-- PDM_组件名称.单价=@单价临时,
|
||||
-- PDM_组件名称.产品详情=@产品详情临时,
|
||||
-- PDM_组件名称.产品位置=@产品位置临时,
|
||||
-- PDM_组件名称.物料流水号=@物料流水号临时,[电机联接板文本]=NULL,[联轴器文本]=NULL,
|
||||
-- 轴承位置=NULL,轴承位置文本=NULL,安装方向=NULL,电机位置=NULL,电机位置文本=NULL,
|
||||
-- 传动方式位置=NULL,传动方式位置文本=NULL,
|
||||
-- [滑台电机位置]=NULL, [滑台电机文本]=NULL, 主轴轮=NULL,电机轮=NULL,皮带轮=NULL,其它=NULL,输出转速=NULL,
|
||||
-- 中心内冷=NULL,防护类型=NULL,电机联接板=NULL,联轴器=NULL,组件采购=0,
|
||||
-- 组件仓库=0,组件动力头=0,组件滑台=0,组件精工车间=0,组件专机=0,是否分配=0,是否接收=0,是否领料=0,装配进度=0,产品状态=0, 顺序 = @顺序临时
|
||||
-- where PDM_组件名称.组件流水号 = @orderN
|
||||
--end
|
||||
--else
|
||||
--begin
|
||||
update PDM_组件名称 set PDM_组件名称.产品流水号=@产品流水号临时,
|
||||
PDM_组件名称.产品名称=@产品名称临时,
|
||||
PDM_组件名称.数量=@数量临时,
|
||||
PDM_组件名称.配置数=@配置数临时,
|
||||
PDM_组件名称.单位=@单位临时,
|
||||
PDM_组件名称.单价=@单价临时,
|
||||
PDM_组件名称.产品详情=@产品详情临时,
|
||||
PDM_组件名称.产品位置=@产品位置临时,
|
||||
PDM_组件名称.物料流水号=@物料流水号临时,[电机联接板文本]=NULL,[联轴器文本]=NULL,
|
||||
轴承位置=NULL,轴承位置文本=NULL,安装方向=NULL,电机位置=NULL,电机位置文本=NULL,
|
||||
传动方式位置=NULL,传动方式位置文本=NULL,
|
||||
[滑台电机位置]=NULL, [滑台电机文本]=NULL, 主轴轮=NULL,电机轮=NULL,皮带轮=NULL,其它=NULL,输出转速=NULL,
|
||||
中心内冷=NULL,防护类型=NULL,电机联接板=NULL,联轴器=NULL,组件采购=0,
|
||||
组件仓库=0,组件动力头=0,组件滑台=0,组件精工车间=0,组件专机=0,是否分配=0,是否接收=0,是否领料=0,装配进度=0,产品状态=0, 顺序 = @顺序临时
|
||||
where PDM_组件名称.组件流水号 = @orderN
|
||||
update 合同管理_订单信息_基础表 set 是否下达 = 0,是否提交=1 where 项目流水号=@项目流水号
|
||||
--end
|
||||
END
|
||||
|
||||
--end
|
||||
fetch next from y_curr into @orderN --开始循环游标变量
|
||||
end
|
||||
close y_curr--关闭游标
|
||||
deallocate y_curr --释放游标
|
||||
|
||||
--update PDM_组件名称 set PDM_组件名称.产品流水号=a.产品流水号,PDM_组件名称.产品名称=a.产品名称,PDM_组件名称.数量=a.数量,PDM_组件名称.单位=a.单位,
|
||||
--PDM_组件名称.单价=a.单价,PDM_组件名称.产品详情=a.产品详情,PDM_组件名称.物料流水号=a.物料流水号,轴承位置=NULL,轴承位置文本=NULL,安装方向=NULL,电机位置=NULL,电机位置文本=NULL,传动方式位置=NULL,传动方式位置文本=NULL,
|
||||
--主轴轮=NULL,电机轮=NULL,皮带轮=NULL,其它=NULL,输出转速=NULL,中心内冷=NULL,防护类型=NULL,电机联接板=NULL,联轴器=NULL,组件采购=0,组件仓库=0,组件动力头=0,组件滑台=0,组件精工车间=0,
|
||||
--组件专机=0,是否分配=0,是否接收=0,是否领料=0,装配进度=0,产品状态=0 from PDM_组件名称_修改记录_临时表 as a
|
||||
--where PDM_组件名称.组件流水号=a.组件流水号 and PDM_组件名称.机床流水号 = @机床流水号
|
||||
delete from 车间装配管理_装配任务 where 组件流水号 in (select 组件流水号 from PDM_组件名称 where 组件流水号 not in (select 组件流水号 from PDM_组件名称_修改记录_临时表 where 机床流水号=@机床流水号 and 组件流水号 is not null) and 机床流水号=@机床流水号 and 是否合同创建 = 1 and 产品状态 = 0)
|
||||
delete from 车间装配管理_装配执行_临时领料明细 where 组件流水号 in (select 组件流水号 from PDM_组件名称 where 组件流水号 not in (select 组件流水号 from PDM_组件名称_修改记录_临时表 where 机床流水号=@机床流水号 and 组件流水号 is not null) and 机床流水号=@机床流水号 and 是否合同创建 = 1 and 产品状态 = 0)
|
||||
|
||||
delete from 车间装配管理_领料单明细 where 组件流水号 in (select 组件流水号 from PDM_组件名称 where 组件流水号 not in (select 组件流水号 from PDM_组件名称_修改记录_临时表 where 机床流水号=@机床流水号 and 组件流水号 is not null) and 机床流水号=@机床流水号 and 是否合同创建 = 1 and 产品状态 = 0)
|
||||
delete from 车间装配管理_领料单 where 组件流水号 in (select 组件流水号 from PDM_组件名称 where 组件流水号 not in (select 组件流水号 from PDM_组件名称_修改记录_临时表 where 机床流水号=@机床流水号 and 组件流水号 is not null) and 机床流水号=@机床流水号 and 是否合同创建 = 1 and 产品状态 = 0)
|
||||
delete from PDM_零件明细表_基本件 where 组件流水号 in (select 组件流水号 from PDM_组件名称 where 组件流水号 not in (select 组件流水号 from PDM_组件名称_修改记录_临时表 where 机床流水号=@机床流水号 and 组件流水号 is not null) and 机床流水号=@机床流水号 and 是否合同创建 = 1 and 产品状态 = 0)
|
||||
delete from PDM_零件明细表_基本件_数据导入保存 where 订单流水号 = @订单流水号 and 产品名称 not in (select 产品名称 from PDM_组件名称_修改记录_临时表 where 机床流水号=@机床流水号 and 组件流水号 is not null)
|
||||
delete from PDM_零件明细表_标准件和外购件 where 组件流水号 in (select 组件流水号 from PDM_组件名称 where 组件流水号 not in (select 组件流水号 from PDM_组件名称_修改记录_临时表 where 机床流水号=@机床流水号 and 组件流水号 is not null) and 机床流水号=@机床流水号 and 是否合同创建 = 1 and 产品状态 = 0)
|
||||
delete from PDM_零件明细表_外购件和标准件_数据导入保存 where 订单流水号 = @订单流水号 and 产品名称 not in (select 产品名称 from PDM_组件名称_修改记录_临时表 where 机床流水号=@机床流水号 and 组件流水号 is not null)
|
||||
delete from PDM_组件名称 where 组件流水号 not in (select 组件流水号 from PDM_组件名称_修改记录_临时表 where 机床流水号=@机床流水号 and 组件流水号 is not null) and 机床流水号=@机床流水号 and 是否合同创建 = 1 and 产品状态 = 0
|
||||
|
||||
update PDM_组件名称 set 已删 = 1 where 组件流水号 not in (select 组件流水号 from PDM_组件名称_修改记录_临时表 where 机床流水号=@机床流水号 and 组件流水号 is not null) and 机床流水号=@机床流水号 and 是否合同创建 = 1 and 产品状态 > 0
|
||||
|
||||
insert into PDM_组件名称(产品流水号,机床流水号,产品名称,产品详情,单位,单价,数量,是否合同创建,产品位置,是否可选,物料流水号,配置数,顺序)
|
||||
select 产品流水号,机床流水号,产品名称,产品详情,单位,单价,数量,1,产品位置,是否可选,物料流水号,配置数,顺序 from PDM_组件名称_修改记录_临时表 where 机床流水号=@机床流水号 and 组件流水号 is null
|
||||
-- 如果有 insert into 就将这个订单改为未下发 增加时将订单整体打回未下发
|
||||
if(select count(1) from PDM_组件名称_修改记录_临时表 where 机床流水号=@机床流水号 and 组件流水号 is null) > 0
|
||||
begin
|
||||
update 合同管理_订单信息_基础表 set 是否下达 = 0,是否提交=1 where 项目流水号=@项目流水号
|
||||
end
|
||||
|
||||
|
||||
-- 不在最后判断,在前面如果在游标遍历中 数量改变了才重置是否下达
|
||||
--declare @n int
|
||||
--select @n=COUNT(*) from PDM_组件名称_修改记录_临时表 where 机床流水号=@机床流水号 and 组件流水号 is null
|
||||
--if @n > 0
|
||||
--begin
|
||||
-- update 合同管理_订单信息_基础表 set 是否下达 = 0,是否提交=1 where 项目流水号=@项目流水号
|
||||
--end
|
||||
declare @n int
|
||||
select @n=COUNT(*) from PDM_组件名称_修改记录_临时表 where 组件流水号 = @组件流水号--机床流水号=@机床流水号 --and 组件流水号 is null
|
||||
if @n > @改前数量 -- 新增了物料
|
||||
begin
|
||||
update 合同管理_订单信息_基础表 set 是否下达 = 0,是否提交=1 where 项目流水号=@项目流水号
|
||||
end
|
||||
|
||||
|
||||
declare @金额 float
|
||||
if @合同类型 = 2
|
||||
begin
|
||||
select @金额=SUM(ISNULL(单价,0)*ISNULL(数量,0)) from PDM_机床名称 where 项目流水号 = @项目流水号
|
||||
|
||||
update PDM_项目名称 set 合同金额 = @金额,合同备注=@合同备注 where 项目流水号=@项目流水号
|
||||
end
|
||||
else
|
||||
begin
|
||||
select @金额=SUM(ISNULL(单价,0)*ISNULL(数量,0)) from PDM_组件名称 where 机床流水号 = @机床流水号 and 已删 = 0
|
||||
|
||||
update PDM_项目名称 set 合同金额 = @金额,合同备注=@合同备注 where 项目流水号=@项目流水号
|
||||
end
|
||||
|
||||
|
||||
delete from PDM_组件名称_修改记录_临时表 where 机床流水号 = @机床流水号
|
||||
|
||||
update 合同管理_订单信息_基础表 set 确认日期 = NULL,是否确认=0,技术审核=1 where 项目流水号=@项目流水号
|
||||
|
||||
53
sql/after_sales_contract_commission_type_prod_20260813.sql
Normal file
53
sql/after_sales_contract_commission_type_prod_20260813.sql
Normal file
@@ -0,0 +1,53 @@
|
||||
-- 售后合同提成类型保存支持(正式库)
|
||||
-- 修改人:Ld 修改时间:2026-08-13 07:47:17;
|
||||
|
||||
USE [ERPTOOL_JY]
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.PDM_项目名称_售后合同_编辑数据', N'P') IS NOT NULL
|
||||
DROP PROCEDURE [dbo].[PDM_项目名称_售后合同_编辑数据]
|
||||
GO
|
||||
|
||||
--CREATE 李显
|
||||
--2021-08-31
|
||||
-- 修改人:Ld 修改时间:2026-08-13 07:47:17; 增加售后合同提成类型参数并保存到项目主表
|
||||
CREATE PROCEDURE [dbo].[PDM_项目名称_售后合同_编辑数据]
|
||||
@项目流水号 int,
|
||||
@客户流水号 int=null,
|
||||
@售后客户流水号 int=null,
|
||||
@付款方式流水号 int=null,
|
||||
@交货期限 nvarchar(50)=null,
|
||||
@客户要求 nvarchar(200)=null,
|
||||
@操作者 int=null,
|
||||
@原项目流水号 int=null,
|
||||
@收货人 nvarchar(50)=null,
|
||||
@签订日期 nvarchar(50)=null,
|
||||
@税率 float=null,
|
||||
@售后原因 nvarchar(MAX)=null,
|
||||
@解决方案 nvarchar(MAX)=null,
|
||||
@合同备注 nvarchar(50)=null,
|
||||
@提成类型 nvarchar(50)=null
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
UPDATE PDM_项目名称
|
||||
SET 客户流水号=@客户流水号,
|
||||
付款方式流水号=@付款方式流水号,
|
||||
交货期限=@交货期限,
|
||||
操作者=@操作者,
|
||||
客户要求=@客户要求,
|
||||
合同备注=@合同备注,
|
||||
提成类型=@提成类型,
|
||||
签订日期=@签订日期,
|
||||
税率=@税率,
|
||||
收货人员=@收货人,
|
||||
售后原因=@售后原因,
|
||||
解决方案=@解决方案,
|
||||
原项目流水号=@原项目流水号,
|
||||
售后客户流水号=@售后客户流水号
|
||||
WHERE 项目流水号=@项目流水号;
|
||||
|
||||
SELECT '1' AS result;
|
||||
END
|
||||
GO
|
||||
53
sql/after_sales_contract_commission_type_test_20260812.sql
Normal file
53
sql/after_sales_contract_commission_type_test_20260812.sql
Normal file
@@ -0,0 +1,53 @@
|
||||
-- 售后合同提成类型保存支持
|
||||
-- 修改人:Ld 修改时间:2026-08-12 17:07:03;
|
||||
|
||||
USE [ERPTOOL_JY_20250826Back]
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.PDM_项目名称_售后合同_编辑数据', N'P') IS NOT NULL
|
||||
DROP PROCEDURE [dbo].[PDM_项目名称_售后合同_编辑数据]
|
||||
GO
|
||||
|
||||
--CREATE 李显
|
||||
--2021-08-31
|
||||
-- 修改人:Ld 修改时间:2026-08-12 17:07:03; 增加售后合同提成类型参数并保存到项目主表
|
||||
CREATE PROCEDURE [dbo].[PDM_项目名称_售后合同_编辑数据]
|
||||
@项目流水号 int,
|
||||
@客户流水号 int=null,
|
||||
@售后客户流水号 int=null,
|
||||
@付款方式流水号 int=null,
|
||||
@交货期限 nvarchar(50)=null,
|
||||
@客户要求 nvarchar(200)=null,
|
||||
@操作者 int=null,
|
||||
@原项目流水号 int=null,
|
||||
@收货人 nvarchar(50)=null,
|
||||
@签订日期 nvarchar(50)=null,
|
||||
@税率 float=null,
|
||||
@售后原因 nvarchar(MAX)=null,
|
||||
@解决方案 nvarchar(MAX)=null,
|
||||
@合同备注 nvarchar(50)=null,
|
||||
@提成类型 nvarchar(50)=null
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
UPDATE PDM_项目名称
|
||||
SET 客户流水号=@客户流水号,
|
||||
付款方式流水号=@付款方式流水号,
|
||||
交货期限=@交货期限,
|
||||
操作者=@操作者,
|
||||
客户要求=@客户要求,
|
||||
合同备注=@合同备注,
|
||||
提成类型=@提成类型,
|
||||
签订日期=@签订日期,
|
||||
税率=@税率,
|
||||
收货人员=@收货人,
|
||||
售后原因=@售后原因,
|
||||
解决方案=@解决方案,
|
||||
原项目流水号=@原项目流水号,
|
||||
售后客户流水号=@售后客户流水号
|
||||
WHERE 项目流水号=@项目流水号;
|
||||
|
||||
SELECT '1' AS result;
|
||||
END
|
||||
GO
|
||||
@@ -16,6 +16,7 @@ AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-08-11 10:09:42; 合同查询改为按合同去重,并将合同编号前缀匹配优先,避免BH开头合同被同合同多订单记录挤出列表。
|
||||
SELECT TOP 50
|
||||
p.项目流水号,
|
||||
p.合同编号,
|
||||
@@ -28,8 +29,23 @@ BEGIN
|
||||
FROM dbo.PDM_项目名称 AS p
|
||||
LEFT JOIN dbo.客户关系管理系统_客户名称 AS c
|
||||
ON p.客户流水号 = c.客户流水号
|
||||
LEFT JOIN dbo.合同管理_订单信息_基础表 AS o
|
||||
ON p.项目流水号 = o.项目流水号
|
||||
OUTER APPLY (
|
||||
SELECT TOP 1
|
||||
oi.订单流水号,
|
||||
oi.订单编号,
|
||||
oi.完成期限
|
||||
FROM dbo.合同管理_订单信息_基础表 AS oi
|
||||
WHERE oi.项目流水号 = p.项目流水号
|
||||
AND (ISNULL(@关键字, N'') = N''
|
||||
OR ISNULL(oi.订单编号, N'') LIKE N'%' + @关键字 + N'%'
|
||||
OR p.合同编号 LIKE N'%' + @关键字 + N'%'
|
||||
OR ISNULL(c.客户名称, N'') LIKE N'%' + @关键字 + N'%'
|
||||
OR ISNULL(c.简称, N'') LIKE N'%' + @关键字 + N'%')
|
||||
AND (ISNULL(@订单编号, N'') = N'' OR ISNULL(oi.订单编号, N'') LIKE N'%' + @订单编号 + N'%')
|
||||
ORDER BY
|
||||
CASE WHEN ISNULL(@关键字, N'') <> N'' AND ISNULL(oi.订单编号, N'') LIKE @关键字 + N'%' THEN 0 ELSE 1 END,
|
||||
oi.订单流水号 DESC
|
||||
) AS o
|
||||
WHERE ISNULL(p.是否启用, 1) = 1
|
||||
AND ISNULL(p.合同编号, N'') <> N''
|
||||
AND (ISNULL(@关键字, N'') = N''
|
||||
@@ -40,7 +56,10 @@ BEGIN
|
||||
AND (ISNULL(@合同编号, N'') = N'' OR p.合同编号 LIKE N'%' + @合同编号 + N'%')
|
||||
AND (ISNULL(@客户, N'') = N'' OR ISNULL(c.客户名称, N'') LIKE N'%' + @客户 + N'%' OR ISNULL(c.简称, N'') LIKE N'%' + @客户 + N'%')
|
||||
AND (ISNULL(@订单编号, N'') = N'' OR ISNULL(o.订单编号, N'') LIKE N'%' + @订单编号 + N'%')
|
||||
ORDER BY p.项目流水号 DESC, o.订单流水号 DESC;
|
||||
ORDER BY
|
||||
CASE WHEN ISNULL(@关键字, N'') <> N'' AND p.合同编号 LIKE @关键字 + N'%' THEN 0 ELSE 1 END,
|
||||
CASE WHEN ISNULL(@合同编号, N'') <> N'' AND p.合同编号 LIKE @合同编号 + N'%' THEN 0 ELSE 1 END,
|
||||
p.项目流水号 DESC;
|
||||
END;
|
||||
GO
|
||||
|
||||
@@ -71,6 +90,8 @@ BEGIN
|
||||
DECLARE @仓库备货合同编号 NVARCHAR(50);
|
||||
DECLARE @补货类型名称 NVARCHAR(50);
|
||||
DECLARE @订单类型 INT = 3;
|
||||
DECLARE @补货锁资源 NVARCHAR(255);
|
||||
DECLARE @补货锁结果 INT;
|
||||
|
||||
IF @补货期限 IS NULL
|
||||
BEGIN
|
||||
@@ -108,6 +129,41 @@ BEGIN
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-08-11 09:42:28; 同一类补货提交加事务级应用锁,避免重复点击或并发请求消费同一份补货单生成多张订单。
|
||||
SET @补货锁资源 = N'报缺补货_提交_关联合同_' + CASE WHEN @是否外购 = 1 THEN N'外购' ELSE N'自制' END;
|
||||
EXEC @补货锁结果 = sys.sp_getapplock
|
||||
@Resource = @补货锁资源,
|
||||
@LockMode = 'Exclusive',
|
||||
@LockOwner = 'Transaction',
|
||||
@LockTimeout = 10000;
|
||||
|
||||
IF @补货锁结果 < 0
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'补货单正在提交,请稍后重试' AS message;
|
||||
ROLLBACK TRANSACTION;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-08-11 09:42:28; 获得锁后重新检查中间表,第一笔提交删除后,后续重复请求不再继续创建订单。
|
||||
IF @是否外购 = 1
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.外购件补货明细中间表 WITH (UPDLOCK, HOLDLOCK))
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'外购补货单为空' AS message;
|
||||
ROLLBACK TRANSACTION;
|
||||
RETURN;
|
||||
END;
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.自制件补货明细中间表 WITH (UPDLOCK, HOLDLOCK))
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'自制补货单为空' AS message;
|
||||
ROLLBACK TRANSACTION;
|
||||
RETURN;
|
||||
END;
|
||||
END;
|
||||
|
||||
IF @来源类型 = N'仓库备货'
|
||||
BEGIN
|
||||
-- 仓库备货每次创建独立CKBH合同,编号规则按补货单日期+三位序号生成;修改人:Ld 修改时间:2026-08-04 08:29:13;
|
||||
|
||||
143
sql/修复_MK202607210883_BOM数量_按组件数量_20260817.sql
Normal file
143
sql/修复_MK202607210883_BOM数量_按组件数量_20260817.sql
Normal file
@@ -0,0 +1,143 @@
|
||||
USE [ERPTOOL_JY]
|
||||
GO
|
||||
|
||||
BEGIN TRANSACTION
|
||||
|
||||
BEGIN TRY
|
||||
-- 修改人:Ld 修改时间:2026-08-17 08:35:19; 备份订单MK202607210883修复前BOM数量,恢复口径为新增保存数量乘当前组件数量。
|
||||
IF OBJECT_ID(N'dbo.GPT_BOM数量修复备份_20260817', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.GPT_BOM数量修复备份_20260817
|
||||
(
|
||||
备份流水号 int IDENTITY(1,1) NOT NULL PRIMARY KEY,
|
||||
订单编号 nvarchar(50) NULL,
|
||||
组件流水号 int NULL,
|
||||
来源表 nvarchar(100) NULL,
|
||||
明细流水号 int NULL,
|
||||
物料流水号 int NULL,
|
||||
产品名称 nvarchar(200) NULL,
|
||||
零件名称 nvarchar(200) NULL,
|
||||
图号或型号 nvarchar(200) NULL,
|
||||
修复前数量 int NULL,
|
||||
新增保存数量 float NULL,
|
||||
组件数量 float NULL,
|
||||
应改数量 int NULL,
|
||||
已领数量 int NULL,
|
||||
备份时间 datetime NOT NULL DEFAULT(GETDATE()),
|
||||
修改人 nvarchar(50) NOT NULL DEFAULT(N'Ld'),
|
||||
备注 nvarchar(500) NULL
|
||||
)
|
||||
END
|
||||
|
||||
INSERT INTO dbo.GPT_BOM数量修复备份_20260817
|
||||
(
|
||||
订单编号, 组件流水号, 来源表, 明细流水号, 物料流水号,
|
||||
产品名称, 零件名称, 图号或型号, 修复前数量, 新增保存数量,
|
||||
组件数量, 应改数量, 已领数量, 备注
|
||||
)
|
||||
SELECT
|
||||
c.订单编号,
|
||||
c.组件流水号,
|
||||
N'PDM_零件明细表_基本件',
|
||||
b.基本件流水号,
|
||||
b.物料流水号,
|
||||
c.产品名称,
|
||||
m.名称,
|
||||
m.代号,
|
||||
b.零件数量,
|
||||
s.数量,
|
||||
c.数量,
|
||||
CONVERT(int, s.数量 * c.数量),
|
||||
b.已领数量,
|
||||
N'按新增保存数量乘当前组件数量恢复订单BOM'
|
||||
FROM dbo.PDM_零件明细表_基本件 b
|
||||
INNER JOIN dbo.PDM_组件名称_视图 c ON c.组件流水号 = b.组件流水号
|
||||
INNER JOIN dbo.PDM_零件明细表_基本件_数据导入保存 s ON s.订单流水号 = c.订单流水号 AND s.产品名称 = c.产品名称 AND s.物料流水号 = b.物料流水号
|
||||
LEFT JOIN dbo.库存管理_物料主文件_基本 m ON m.物料流水号 = b.物料流水号
|
||||
WHERE c.订单编号 = N'MK202607210883'
|
||||
AND c.组件流水号 IN (31253, 31254)
|
||||
AND ISNULL(b.零件数量, 0) <> ISNULL(CONVERT(int, s.数量 * c.数量), 0)
|
||||
AND NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.GPT_BOM数量修复备份_20260817 bak
|
||||
WHERE bak.订单编号 = c.订单编号
|
||||
AND bak.来源表 = N'PDM_零件明细表_基本件'
|
||||
AND bak.明细流水号 = b.基本件流水号
|
||||
AND bak.备注 = N'按新增保存数量乘当前组件数量恢复订单BOM'
|
||||
)
|
||||
|
||||
INSERT INTO dbo.GPT_BOM数量修复备份_20260817
|
||||
(
|
||||
订单编号, 组件流水号, 来源表, 明细流水号, 物料流水号,
|
||||
产品名称, 零件名称, 图号或型号, 修复前数量, 新增保存数量,
|
||||
组件数量, 应改数量, 已领数量, 备注
|
||||
)
|
||||
SELECT
|
||||
c.订单编号,
|
||||
c.组件流水号,
|
||||
N'PDM_零件明细表_标准件和外购件',
|
||||
w.标准件和外购件流水号,
|
||||
w.物料流水号,
|
||||
c.产品名称,
|
||||
m.名称,
|
||||
m.代号,
|
||||
w.零件数量,
|
||||
s.数量,
|
||||
c.数量,
|
||||
CONVERT(int, s.数量 * c.数量),
|
||||
w.已领数量,
|
||||
N'按新增保存数量乘当前组件数量恢复订单BOM'
|
||||
FROM dbo.PDM_零件明细表_标准件和外购件 w
|
||||
INNER JOIN dbo.PDM_组件名称_视图 c ON c.组件流水号 = w.组件流水号
|
||||
INNER JOIN dbo.PDM_零件明细表_外购件和标准件_数据导入保存 s ON s.订单流水号 = c.订单流水号 AND s.产品名称 = c.产品名称 AND s.物料流水号 = w.物料流水号
|
||||
LEFT JOIN dbo.库存管理_物料主文件_基本 m ON m.物料流水号 = w.物料流水号
|
||||
WHERE c.订单编号 = N'MK202607210883'
|
||||
AND c.组件流水号 IN (31253, 31254)
|
||||
AND ISNULL(w.零件数量, 0) <> ISNULL(CONVERT(int, s.数量 * c.数量), 0)
|
||||
AND NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.GPT_BOM数量修复备份_20260817 bak
|
||||
WHERE bak.订单编号 = c.订单编号
|
||||
AND bak.来源表 = N'PDM_零件明细表_标准件和外购件'
|
||||
AND bak.明细流水号 = w.标准件和外购件流水号
|
||||
AND bak.备注 = N'按新增保存数量乘当前组件数量恢复订单BOM'
|
||||
)
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-08-17 08:35:19; 自制基本件按新增保存数量乘当前组件数量恢复。
|
||||
UPDATE b
|
||||
SET b.零件数量 = CONVERT(int, s.数量 * c.数量),
|
||||
b.修改人员 = 0,
|
||||
b.修改时间 = GETDATE()
|
||||
FROM dbo.PDM_零件明细表_基本件 b
|
||||
INNER JOIN dbo.PDM_组件名称_视图 c ON c.组件流水号 = b.组件流水号
|
||||
INNER JOIN dbo.PDM_零件明细表_基本件_数据导入保存 s ON s.订单流水号 = c.订单流水号 AND s.产品名称 = c.产品名称 AND s.物料流水号 = b.物料流水号
|
||||
WHERE c.订单编号 = N'MK202607210883'
|
||||
AND c.组件流水号 IN (31253, 31254)
|
||||
AND ISNULL(b.零件数量, 0) <> ISNULL(CONVERT(int, s.数量 * c.数量), 0)
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-08-17 08:35:19; 标准件和外购件按新增保存数量乘当前组件数量恢复。
|
||||
UPDATE w
|
||||
SET w.零件数量 = CONVERT(int, s.数量 * c.数量),
|
||||
w.修改人员 = 0,
|
||||
w.修改时间 = GETDATE()
|
||||
FROM dbo.PDM_零件明细表_标准件和外购件 w
|
||||
INNER JOIN dbo.PDM_组件名称_视图 c ON c.组件流水号 = w.组件流水号
|
||||
INNER JOIN dbo.PDM_零件明细表_外购件和标准件_数据导入保存 s ON s.订单流水号 = c.订单流水号 AND s.产品名称 = c.产品名称 AND s.物料流水号 = w.物料流水号
|
||||
WHERE c.订单编号 = N'MK202607210883'
|
||||
AND c.组件流水号 IN (31253, 31254)
|
||||
AND ISNULL(w.零件数量, 0) <> ISNULL(CONVERT(int, s.数量 * c.数量), 0)
|
||||
|
||||
COMMIT TRANSACTION
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF @@TRANCOUNT > 0
|
||||
BEGIN
|
||||
ROLLBACK TRANSACTION
|
||||
END
|
||||
|
||||
DECLARE @ErrorMessage nvarchar(4000) = ERROR_MESSAGE()
|
||||
RAISERROR(@ErrorMessage, 16, 1)
|
||||
END CATCH
|
||||
GO
|
||||
101
sql/修复_MK202608070966_BOM数量_20260812.sql
Normal file
101
sql/修复_MK202608070966_BOM数量_20260812.sql
Normal file
@@ -0,0 +1,101 @@
|
||||
USE [ERPTOOL_JY]
|
||||
GO
|
||||
|
||||
BEGIN TRANSACTION
|
||||
|
||||
BEGIN TRY
|
||||
-- 修改人:Ld 修改时间:2026-08-12 13:27:21; 备份订单MK202608070966修复前BOM数量,便于回溯。
|
||||
IF OBJECT_ID(N'dbo.GPT_BOM数量修复备份_20260812', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.GPT_BOM数量修复备份_20260812
|
||||
(
|
||||
备份流水号 int IDENTITY(1,1) NOT NULL PRIMARY KEY,
|
||||
订单编号 nvarchar(50) NULL,
|
||||
组件流水号 int NULL,
|
||||
来源表 nvarchar(100) NULL,
|
||||
明细流水号 int NULL,
|
||||
物料流水号 int NULL,
|
||||
产品流水号 int NULL,
|
||||
产品名称 nvarchar(200) NULL,
|
||||
零件名称 nvarchar(200) NULL,
|
||||
图号或型号 nvarchar(200) NULL,
|
||||
修复前数量 int NULL,
|
||||
应改数量 int NULL,
|
||||
组件数量 float NULL,
|
||||
产品基础BOM数量 float NULL,
|
||||
备份时间 datetime NOT NULL DEFAULT(GETDATE()),
|
||||
修改人 nvarchar(50) NOT NULL DEFAULT(N'Ld'),
|
||||
备注 nvarchar(500) NULL
|
||||
)
|
||||
END
|
||||
|
||||
INSERT INTO dbo.GPT_BOM数量修复备份_20260812
|
||||
(
|
||||
订单编号, 组件流水号, 来源表, 明细流水号, 物料流水号, 产品流水号,
|
||||
产品名称, 零件名称, 图号或型号, 修复前数量, 应改数量,
|
||||
组件数量, 产品基础BOM数量, 备注
|
||||
)
|
||||
SELECT
|
||||
c.订单编号,
|
||||
c.组件流水号,
|
||||
CASE WHEN v.类型 = N'自制' THEN N'PDM_零件明细表_基本件' ELSE N'PDM_零件明细表_标准件和外购件' END,
|
||||
v.流水号,
|
||||
v.物料流水号,
|
||||
c.产品流水号,
|
||||
c.产品名称,
|
||||
v.零件名称,
|
||||
v.图号或型号,
|
||||
v.数量,
|
||||
CONVERT(int, p.数量 * c.数量),
|
||||
c.数量,
|
||||
p.数量,
|
||||
N'修复合同查询修改数量导致订单BOM重复乘组件数量'
|
||||
FROM dbo.PDM_组件名称_视图 c
|
||||
INNER JOIN dbo.PDM_零件明细表_所有视图 v ON v.组件流水号 = c.组件流水号
|
||||
INNER JOIN dbo.产品信息_零件视图 p ON p.产品流水号 = c.产品流水号 AND p.物料流水号 = v.物料流水号
|
||||
WHERE c.订单编号 = N'MK202608070966'
|
||||
AND ISNULL(v.数量, 0) <> ISNULL(CONVERT(int, p.数量 * c.数量), 0)
|
||||
AND NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.GPT_BOM数量修复备份_20260812 b
|
||||
WHERE b.订单编号 = c.订单编号
|
||||
AND b.组件流水号 = c.组件流水号
|
||||
AND b.明细流水号 = v.流水号
|
||||
AND b.备注 = N'修复合同查询修改数量导致订单BOM重复乘组件数量'
|
||||
)
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-08-12 13:27:21; 自制基本件按产品基础BOM数量乘组件数量修回正常订单BOM总数量。
|
||||
UPDATE b
|
||||
SET b.零件数量 = CONVERT(int, p.零件数量 * c.数量),
|
||||
b.修改人员 = 0,
|
||||
b.修改时间 = GETDATE()
|
||||
FROM dbo.PDM_零件明细表_基本件 b
|
||||
INNER JOIN dbo.PDM_组件名称_视图 c ON c.组件流水号 = b.组件流水号
|
||||
INNER JOIN dbo.产品信息_基本件_基础表 p ON p.产品流水号 = c.产品流水号 AND p.物料流水号 = b.物料流水号
|
||||
WHERE c.订单编号 = N'MK202608070966'
|
||||
AND ISNULL(b.零件数量, 0) <> ISNULL(CONVERT(int, p.零件数量 * c.数量), 0)
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-08-12 13:27:21; 标准件和外购件按产品基础BOM数量乘组件数量修回正常订单BOM总数量。
|
||||
UPDATE w
|
||||
SET w.零件数量 = CONVERT(int, p.零件数量 * c.数量),
|
||||
w.修改人员 = 0,
|
||||
w.修改时间 = GETDATE()
|
||||
FROM dbo.PDM_零件明细表_标准件和外购件 w
|
||||
INNER JOIN dbo.PDM_组件名称_视图 c ON c.组件流水号 = w.组件流水号
|
||||
INNER JOIN dbo.产品信息_外购件_基础表 p ON p.产品流水号 = c.产品流水号 AND p.物料流水号 = w.物料流水号
|
||||
WHERE c.订单编号 = N'MK202608070966'
|
||||
AND ISNULL(w.零件数量, 0) <> ISNULL(CONVERT(int, p.零件数量 * c.数量), 0)
|
||||
|
||||
COMMIT TRANSACTION
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF @@TRANCOUNT > 0
|
||||
BEGIN
|
||||
ROLLBACK TRANSACTION
|
||||
END
|
||||
|
||||
DECLARE @ErrorMessage nvarchar(4000) = ERROR_MESSAGE()
|
||||
RAISERROR(@ErrorMessage, 16, 1)
|
||||
END CATCH
|
||||
GO
|
||||
143
sql/修正_三个毛坯物料超退库存_正式库_20260812.sql
Normal file
143
sql/修正_三个毛坯物料超退库存_正式库_20260812.sql
Normal file
@@ -0,0 +1,143 @@
|
||||
USE [ERPTOOL_JY];
|
||||
GO
|
||||
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
-- 修正三个毛坯物料因取消派工重复/超量退料导致的库存虚增;修改人:Ld 修改时间:2026-08-12 14:48:00;
|
||||
DECLARE @修改时间 DATETIME = GETDATE();
|
||||
|
||||
IF OBJECT_ID(N'dbo.GPT_三个毛坯物料超退修正备份_20260812_出库记录', N'U') IS NULL
|
||||
BEGIN
|
||||
SELECT *
|
||||
INTO dbo.GPT_三个毛坯物料超退修正备份_20260812_出库记录
|
||||
FROM dbo.库存管理_物料出库_出库记录
|
||||
WHERE 出库记录流水号 IN (181876, 150374, 191087);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.GPT_三个毛坯物料超退修正备份_20260812_退料入库记录', N'U') IS NULL
|
||||
BEGIN
|
||||
SELECT *
|
||||
INTO dbo.GPT_三个毛坯物料超退修正备份_20260812_退料入库记录
|
||||
FROM dbo.库存管理_退料_入库记录
|
||||
WHERE 入库记录流水号 IN (3903, 3774, 3775, 3779, 3780, 3781);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.GPT_三个毛坯物料超退修正备份_20260812_库位库存', N'U') IS NULL
|
||||
BEGIN
|
||||
SELECT *
|
||||
INTO dbo.GPT_三个毛坯物料超退修正备份_20260812_库位库存
|
||||
FROM dbo.库存管理_物料与货位对照表
|
||||
WHERE 物料与货位流水号 IN (79925, 73361, 89701);
|
||||
END;
|
||||
|
||||
IF OBJECT_ID(N'dbo.GPT_三个毛坯物料超退修正备份_20260812_累计库存', N'U') IS NULL
|
||||
BEGIN
|
||||
SELECT *
|
||||
INTO dbo.GPT_三个毛坯物料超退修正备份_20260812_累计库存
|
||||
FROM dbo.库存管理_外购件累计库存
|
||||
WHERE 物料流水号 IN (12350, 3627, 2215);
|
||||
END;
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-08-12 14:48:00; 前置校验,避免当前数据已变化时误修正。
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.库存管理_外购件累计库存 WHERE 物料流水号 = 12350 AND 累计库存 = 537)
|
||||
RAISERROR(N'01.026.001.0007 当前累计库存不是 537,停止修正。', 16, 1);
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.库存管理_外购件累计库存 WHERE 物料流水号 = 3627 AND 累计库存 = 660)
|
||||
RAISERROR(N'01.026.001.0030 当前累计库存不是 660,停止修正。', 16, 1);
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.库存管理_外购件累计库存 WHERE 物料流水号 = 2215 AND 累计库存 = 1072)
|
||||
RAISERROR(N'01.026.001.0043 当前累计库存不是 1072,停止修正。', 16, 1);
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.库存管理_物料与货位对照表 WHERE 物料与货位流水号 = 79925 AND 货位存量 = 500)
|
||||
RAISERROR(N'01.026.001.0007 异常库位行当前库存不是 500,停止修正。', 16, 1);
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.库存管理_物料与货位对照表 WHERE 物料与货位流水号 = 73361 AND 货位存量 = 636)
|
||||
RAISERROR(N'01.026.001.0030 异常库位行当前库存不是 636,停止修正。', 16, 1);
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.库存管理_物料与货位对照表 WHERE 物料与货位流水号 = 89701 AND 货位存量 = 900)
|
||||
RAISERROR(N'01.026.001.0043 异常库位行当前库存不是 900,停止修正。', 16, 1);
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.库存管理_物料出库_出库记录 WHERE 出库记录流水号 = 181876 AND 出库数量 = 6 AND 退料数量 = 500)
|
||||
RAISERROR(N'出库记录 181876 当前数量不符合预期,停止修正。', 16, 1);
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.库存管理_物料出库_出库记录 WHERE 出库记录流水号 = 150374 AND 出库数量 = 17 AND 退料数量 = 317)
|
||||
RAISERROR(N'出库记录 150374 当前数量不符合预期,停止修正。', 16, 1);
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.库存管理_物料出库_出库记录 WHERE 出库记录流水号 = 191087 AND 出库数量 = 156 AND 退料数量 = 300)
|
||||
RAISERROR(N'出库记录 191087 当前数量不符合预期,停止修正。', 16, 1);
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.库存管理_退料_入库记录 WHERE 入库记录流水号 = 3903 AND 实际到货数量 = 500)
|
||||
RAISERROR(N'退料入库记录 3903 当前数量不符合预期,停止修正。', 16, 1);
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.库存管理_退料_入库记录 WHERE 入库记录流水号 = 3774 AND 实际到货数量 = 317)
|
||||
RAISERROR(N'退料入库记录 3774 当前数量不符合预期,停止修正。', 16, 1);
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.库存管理_退料_入库记录 WHERE 入库记录流水号 = 3775 AND 实际到货数量 = 317)
|
||||
RAISERROR(N'退料入库记录 3775 当前数量不符合预期,停止修正。', 16, 1);
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.库存管理_退料_入库记录 WHERE 入库记录流水号 = 3779 AND 实际到货数量 = 300)
|
||||
RAISERROR(N'退料入库记录 3779 当前数量不符合预期,停止修正。', 16, 1);
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.库存管理_退料_入库记录 WHERE 入库记录流水号 = 3780 AND 实际到货数量 = 300)
|
||||
RAISERROR(N'退料入库记录 3780 当前数量不符合预期,停止修正。', 16, 1);
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.库存管理_退料_入库记录 WHERE 入库记录流水号 = 3781 AND 实际到货数量 = 300)
|
||||
RAISERROR(N'退料入库记录 3781 当前数量不符合预期,停止修正。', 16, 1);
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-08-12 14:48:00; 出库记录退料数量修正为该出库记录实际可退数量。
|
||||
UPDATE dbo.库存管理_物料出库_出库记录 SET 退料数量 = 6 WHERE 出库记录流水号 = 181876;
|
||||
UPDATE dbo.库存管理_物料出库_出库记录 SET 退料数量 = 17 WHERE 出库记录流水号 = 150374;
|
||||
UPDATE dbo.库存管理_物料出库_出库记录 SET 退料数量 = 156 WHERE 出库记录流水号 = 191087;
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-08-12 14:48:00; 保留历史退料记录流水号,将重复超退记录数量归零,最后一笔保留正常退料数量。
|
||||
UPDATE dbo.库存管理_退料_入库记录 SET 实际到货数量 = 6 WHERE 入库记录流水号 = 3903;
|
||||
UPDATE dbo.库存管理_退料_入库记录 SET 实际到货数量 = 0 WHERE 入库记录流水号 = 3774;
|
||||
UPDATE dbo.库存管理_退料_入库记录 SET 实际到货数量 = 17 WHERE 入库记录流水号 = 3775;
|
||||
UPDATE dbo.库存管理_退料_入库记录 SET 实际到货数量 = 0 WHERE 入库记录流水号 = 3779;
|
||||
UPDATE dbo.库存管理_退料_入库记录 SET 实际到货数量 = 0 WHERE 入库记录流水号 = 3780;
|
||||
UPDATE dbo.库存管理_退料_入库记录 SET 实际到货数量 = 156 WHERE 入库记录流水号 = 3781;
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-08-12 14:48:00; 同步扣减异常虚增库存到毛坯库对应明细行。
|
||||
UPDATE dbo.库存管理_物料与货位对照表 SET 货位存量 = 6, 操作日期 = @修改时间 WHERE 物料与货位流水号 = 79925;
|
||||
UPDATE dbo.库存管理_物料与货位对照表 SET 货位存量 = 19, 操作日期 = @修改时间 WHERE 物料与货位流水号 = 73361;
|
||||
UPDATE dbo.库存管理_物料与货位对照表 SET 货位存量 = 156, 操作日期 = @修改时间 WHERE 物料与货位流水号 = 89701;
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-08-12 14:48:00; 累计库存按库位合计的正常库存同步修正。
|
||||
UPDATE dbo.库存管理_外购件累计库存 SET 累计库存 = 43 WHERE 物料流水号 = 12350;
|
||||
UPDATE dbo.库存管理_外购件累计库存 SET 累计库存 = 43 WHERE 物料流水号 = 3627;
|
||||
UPDATE dbo.库存管理_外购件累计库存 SET 累计库存 = 328 WHERE 物料流水号 = 2215;
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF @@TRANCOUNT > 0
|
||||
ROLLBACK TRANSACTION;
|
||||
DECLARE @错误信息 NVARCHAR(4000) = ERROR_MESSAGE();
|
||||
RAISERROR(@错误信息, 16, 1);
|
||||
END CATCH;
|
||||
|
||||
SELECT N'修正后库存' AS 类型,
|
||||
m.物料编码,
|
||||
m.物料流水号,
|
||||
k.累计库存 AS 累计库存,
|
||||
SUM(d.货位存量) AS 货位库存合计
|
||||
FROM dbo.库存管理_物料主文件_基本 m
|
||||
LEFT JOIN dbo.库存管理_外购件累计库存 k ON m.物料流水号 = k.物料流水号
|
||||
LEFT JOIN dbo.库存管理_物料与货位对照表 d ON m.物料流水号 = d.物料流水号
|
||||
WHERE m.物料流水号 IN (12350, 3627, 2215)
|
||||
GROUP BY m.物料编码, m.物料流水号, k.累计库存
|
||||
ORDER BY m.物料编码;
|
||||
|
||||
SELECT N'修正后出库记录' AS 类型,
|
||||
出库记录流水号,
|
||||
物料流水号,
|
||||
出库数量,
|
||||
退料数量,
|
||||
订单流水号,
|
||||
退料时间
|
||||
FROM dbo.库存管理_物料出库_出库记录
|
||||
WHERE 出库记录流水号 IN (181876, 150374, 191087)
|
||||
ORDER BY 出库记录流水号;
|
||||
|
||||
SELECT N'修正后退料入库记录' AS 类型,
|
||||
入库记录流水号,
|
||||
物料流水号,
|
||||
实际到货数量,
|
||||
入库时间,
|
||||
货位流水号
|
||||
FROM dbo.库存管理_退料_入库记录
|
||||
WHERE 入库记录流水号 IN (3903, 3774, 3775, 3779, 3780, 3781)
|
||||
ORDER BY 入库记录流水号;
|
||||
115
sql/出库单展示页面菜单_测试库_20260825.sql
Normal file
115
sql/出库单展示页面菜单_测试库_20260825.sql
Normal file
@@ -0,0 +1,115 @@
|
||||
/* 修改人:Ld 修改时间:2026-08-25 17:18:00; 测试库新增出库单展示页面菜单,并跟随已有出库记录权限授权 */
|
||||
SET XACT_ABORT ON;
|
||||
BEGIN TRAN;
|
||||
|
||||
DECLARE @ModuleId INT;
|
||||
|
||||
SELECT @ModuleId = id
|
||||
FROM dbo.基础表_模块信息
|
||||
WHERE [path] = N'WarehouseManagement/OutboundOrder'
|
||||
OR component = N'/WarehouseManagement/OutboundOrder'
|
||||
OR title = N'出库单';
|
||||
|
||||
IF @ModuleId IS NULL
|
||||
BEGIN
|
||||
INSERT INTO dbo.基础表_模块信息
|
||||
(
|
||||
[path],
|
||||
component,
|
||||
redirect,
|
||||
name,
|
||||
title,
|
||||
icon,
|
||||
是否通知,
|
||||
消息通知来源,
|
||||
通知条件,
|
||||
dashboardIcon,
|
||||
是否禁用
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
N'WarehouseManagement/OutboundOrder',
|
||||
N'/WarehouseManagement/OutboundOrder',
|
||||
NULL,
|
||||
N'OutboundOrder',
|
||||
N'出库单',
|
||||
N'PurchaseOutRecord',
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
0
|
||||
);
|
||||
|
||||
SET @ModuleId = SCOPE_IDENTITY();
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
UPDATE dbo.基础表_模块信息
|
||||
SET [path] = N'WarehouseManagement/OutboundOrder',
|
||||
component = N'/WarehouseManagement/OutboundOrder',
|
||||
redirect = NULL,
|
||||
name = N'OutboundOrder',
|
||||
title = N'出库单',
|
||||
icon = N'PurchaseOutRecord',
|
||||
是否禁用 = 0
|
||||
WHERE id = @ModuleId;
|
||||
END;
|
||||
|
||||
;WITH RoleList AS
|
||||
(
|
||||
SELECT
|
||||
r.角色编号,
|
||||
r.pid,
|
||||
MAX(r.角色模块顺序) AS 出库记录顺序
|
||||
FROM dbo.基础表_角色模块信息 r
|
||||
WHERE r.id = 48
|
||||
AND ISNULL(r.是否启用, 1) = 1
|
||||
GROUP BY r.角色编号, r.pid
|
||||
)
|
||||
INSERT INTO dbo.基础表_角色模块信息
|
||||
(
|
||||
id,
|
||||
pid,
|
||||
模块顺序,
|
||||
角色编号,
|
||||
是否启用,
|
||||
角色模块顺序
|
||||
)
|
||||
SELECT
|
||||
@ModuleId,
|
||||
RoleList.pid,
|
||||
@ModuleId,
|
||||
RoleList.角色编号,
|
||||
1,
|
||||
ISNULL(RoleOrder.MaxOrder, RoleList.出库记录顺序) + 1
|
||||
FROM RoleList
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT MAX(角色模块顺序) AS MaxOrder
|
||||
FROM dbo.基础表_角色模块信息
|
||||
WHERE 角色编号 = RoleList.角色编号
|
||||
AND pid = RoleList.pid
|
||||
) RoleOrder
|
||||
WHERE NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.基础表_角色模块信息
|
||||
WHERE id = @ModuleId
|
||||
AND pid = RoleList.pid
|
||||
AND 角色编号 = RoleList.角色编号
|
||||
);
|
||||
|
||||
SELECT @ModuleId AS 出库单模块ID;
|
||||
|
||||
SELECT id, [path], component, name, title, icon, 是否禁用
|
||||
FROM dbo.基础表_模块信息
|
||||
WHERE id = @ModuleId;
|
||||
|
||||
SELECT r.IDD, r.id, r.pid, r.角色编号, r.是否启用, r.角色模块顺序, m.title, m.component
|
||||
FROM dbo.基础表_角色模块信息 r
|
||||
INNER JOIN dbo.基础表_模块信息 m ON r.id = m.id
|
||||
WHERE r.id = @ModuleId
|
||||
ORDER BY r.角色编号, r.pid, r.角色模块顺序;
|
||||
|
||||
COMMIT TRAN;
|
||||
@@ -232,7 +232,9 @@ ALTER PROCEDURE [dbo].[机加工MES_加工完成整修审核_审核数据]
|
||||
@审核整修开始时间 DATETIME = NULL,
|
||||
@审核整修结束时间 DATETIME = NULL,
|
||||
@审核整修方案 NVARCHAR(1000) = NULL,
|
||||
@计价方式 NVARCHAR(20) = NULL
|
||||
-- 修改人:Ld 修改时间:2026-08-20 13:20:11; 传入角色编号以支持系统管理员重审已审核记录
|
||||
@计价方式 NVARCHAR(20) = NULL,
|
||||
@角色编号 INT = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
@@ -258,6 +260,8 @@ BEGIN
|
||||
DECLARE @单时工价 DECIMAL(18, 4);
|
||||
DECLARE @是否修改加工 BIT = 0;
|
||||
DECLARE @是否修改整修 BIT = 0;
|
||||
-- 修改人:Ld 修改时间:2026-08-20 13:20:11; 系统管理员可对已审核记录再次提交修改
|
||||
DECLARE @是否管理员重审 BIT = CASE WHEN ISNULL(@角色编号, 0) = 2 THEN 1 ELSE 0 END;
|
||||
DECLARE @是否本过程开启事务 BIT;
|
||||
|
||||
SET @目标审核状态 = CASE WHEN @审核状态 IN (N'审核通过', N'已审核') THEN N'已审核' ELSE @审核状态 END;
|
||||
@@ -272,7 +276,8 @@ BEGIN
|
||||
SELECT 1
|
||||
FROM [dbo].[MES_机加工MES_加工完成整修审核表]
|
||||
WHERE id = @审核流水号
|
||||
AND 审核状态 = N'待审核'
|
||||
-- 修改人:Ld 修改时间:2026-08-20 13:20:11; 管理员重审时允许命中已审核记录
|
||||
AND (审核状态 = N'待审核' OR (@是否管理员重审 = 1 AND 审核状态 = N'已审核'))
|
||||
)
|
||||
BEGIN
|
||||
SELECT N'0' AS result, N'该审核记录不存在或已审核' AS message;
|
||||
@@ -292,7 +297,8 @@ BEGIN
|
||||
@单时工价 = ISNULL(单时工价, 0)
|
||||
FROM [dbo].[MES_机加工MES_加工完成整修审核表]
|
||||
WHERE id = @审核流水号
|
||||
AND 审核状态 = N'待审核';
|
||||
-- 修改人:Ld 修改时间:2026-08-20 13:20:11; 管理员重审时允许读取已审核记录
|
||||
AND (审核状态 = N'待审核' OR (@是否管理员重审 = 1 AND 审核状态 = N'已审核'));
|
||||
|
||||
IF @Safe计价方式 NOT IN (N'计件', N'计时')
|
||||
SET @Safe计价方式 = N'计件';
|
||||
@@ -451,7 +457,8 @@ BEGIN
|
||||
[修改人] = N'Ld',
|
||||
[修改时间] = GETDATE()
|
||||
WHERE [id] = @审核流水号
|
||||
AND [审核状态] = N'待审核';
|
||||
-- 修改人:Ld 修改时间:2026-08-20 13:20:11; 管理员重审时允许更新已审核记录
|
||||
AND ([审核状态] = N'待审核' OR (@是否管理员重审 = 1 AND [审核状态] = N'已审核'));
|
||||
|
||||
IF @是否本过程开启事务 = 1
|
||||
COMMIT TRAN;
|
||||
|
||||
314
sql/物料管理_增加_批量_物料类型按编码前缀_20260903.sql
Normal file
314
sql/物料管理_增加_批量_物料类型按编码前缀_20260903.sql
Normal file
@@ -0,0 +1,314 @@
|
||||
/*
|
||||
用途:修改 dbo.物料管理_增加_批量,根据物料编码前两位写入物料类型,并修正现有物料类型。
|
||||
规则:01毛坯,02自制,03采购,04原材料,05耗材,06设备,07质检,08半成品,09模具,10成品。
|
||||
备份:执行前备份原存储过程定义、物料类型基础表、物料主文件全表快照。
|
||||
修改人:Ld 修改时间:2026-09-03 13:47:51;
|
||||
*/
|
||||
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRAN;
|
||||
|
||||
IF OBJECT_ID(N'dbo.GPT备份_物料管理_增加_批量_过程_20260903_134751', N'U') IS NULL
|
||||
BEGIN
|
||||
SELECT
|
||||
DB_NAME() AS 数据库名,
|
||||
SCHEMA_NAME(o.schema_id) AS 架构名,
|
||||
o.name AS 过程名,
|
||||
m.definition AS 过程定义,
|
||||
GETDATE() AS 备份时间,
|
||||
N'修改人:Ld 修改时间:2026-09-03 13:47:51; 物料管理_增加_批量修改前过程定义备份' AS 备份说明
|
||||
INTO dbo.GPT备份_物料管理_增加_批量_过程_20260903_134751
|
||||
FROM sys.objects o
|
||||
INNER JOIN sys.sql_modules m ON o.object_id = m.object_id
|
||||
WHERE o.type = 'P'
|
||||
AND o.object_id = OBJECT_ID(N'dbo.物料管理_增加_批量');
|
||||
END
|
||||
|
||||
IF OBJECT_ID(N'dbo.GPT备份_物料类型_基础表_20260903_134751', N'U') IS NULL
|
||||
BEGIN
|
||||
SELECT
|
||||
*,
|
||||
GETDATE() AS 备份时间,
|
||||
N'修改人:Ld 修改时间:2026-09-03 13:47:51; 物料类型基础表修改前备份' AS 备份说明
|
||||
INTO dbo.GPT备份_物料类型_基础表_20260903_134751
|
||||
FROM dbo.物料类型_基础表;
|
||||
END
|
||||
|
||||
IF OBJECT_ID(N'dbo.GPT备份_库存管理_物料主文件_基本_20260903_134751', N'U') IS NULL
|
||||
BEGIN
|
||||
SELECT
|
||||
*,
|
||||
GETDATE() AS 备份时间,
|
||||
N'修改人:Ld 修改时间:2026-09-03 13:47:51; 按物料编码前两位修正类型前全表备份' AS 备份说明
|
||||
INTO dbo.GPT备份_库存管理_物料主文件_基本_20260903_134751
|
||||
FROM dbo.库存管理_物料主文件_基本;
|
||||
END
|
||||
|
||||
UPDATE t
|
||||
SET t.类型 = v.类型
|
||||
FROM dbo.物料类型_基础表 t
|
||||
INNER JOIN (VALUES
|
||||
(1, N'毛坯'),
|
||||
(2, N'自制'),
|
||||
(3, N'采购'),
|
||||
(4, N'原材料'),
|
||||
(5, N'耗材'),
|
||||
(6, N'设备'),
|
||||
(7, N'质检'),
|
||||
(8, N'半成品'),
|
||||
(9, N'模具'),
|
||||
(10, N'成品')
|
||||
) v(类型流水号, 类型) ON t.类型流水号 = v.类型流水号; -- 修改人:Ld 修改时间:2026-09-03 13:47:51; 同步编码前缀对应的物料类型名称。
|
||||
|
||||
INSERT INTO dbo.物料类型_基础表(类型流水号, 类型)
|
||||
SELECT v.类型流水号, v.类型
|
||||
FROM (VALUES
|
||||
(1, N'毛坯'),
|
||||
(2, N'自制'),
|
||||
(3, N'采购'),
|
||||
(4, N'原材料'),
|
||||
(5, N'耗材'),
|
||||
(6, N'设备'),
|
||||
(7, N'质检'),
|
||||
(8, N'半成品'),
|
||||
(9, N'模具'),
|
||||
(10, N'成品')
|
||||
) v(类型流水号, 类型)
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM dbo.物料类型_基础表 t
|
||||
WHERE t.类型流水号 = v.类型流水号
|
||||
); -- 修改人:Ld 修改时间:2026-09-03 13:47:51; 补齐编码前缀对应的物料类型字典。
|
||||
|
||||
UPDATE m
|
||||
SET m.类型 = r.规则类型,
|
||||
m.修改日期 = GETDATE()
|
||||
FROM dbo.库存管理_物料主文件_基本 m
|
||||
CROSS APPLY (
|
||||
SELECT CASE LEFT(LTRIM(RTRIM(ISNULL(m.物料编码, N''))), 2)
|
||||
WHEN N'01' THEN 1
|
||||
WHEN N'02' THEN 2
|
||||
WHEN N'03' THEN 3
|
||||
WHEN N'04' THEN 4
|
||||
WHEN N'05' THEN 5
|
||||
WHEN N'06' THEN 6
|
||||
WHEN N'07' THEN 7
|
||||
WHEN N'08' THEN 8
|
||||
WHEN N'09' THEN 9
|
||||
WHEN N'10' THEN 10
|
||||
END AS 规则类型
|
||||
) r
|
||||
WHERE r.规则类型 IS NOT NULL
|
||||
AND ISNULL(m.类型, -1) <> r.规则类型; -- 修改人:Ld 修改时间:2026-09-03 13:47:51; 按物料编码前两位回写现有物料类型。
|
||||
|
||||
COMMIT TRAN;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF @@TRANCOUNT > 0
|
||||
ROLLBACK TRAN;
|
||||
DECLARE @错误消息 nvarchar(4000);
|
||||
DECLARE @错误严重级别 int;
|
||||
DECLARE @错误状态 int;
|
||||
SELECT
|
||||
@错误消息 = ERROR_MESSAGE(),
|
||||
@错误严重级别 = ERROR_SEVERITY(),
|
||||
@错误状态 = ERROR_STATE();
|
||||
RAISERROR(@错误消息, @错误严重级别, @错误状态); -- 修改人:Ld 修改时间:2026-09-03 13:47:51; 兼容当前 SQL Server 版本的异常抛出方式。
|
||||
END CATCH;
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[物料管理_增加_批量]
|
||||
@材料 nvarchar(50)=null,
|
||||
@货位 nvarchar(50)=null,
|
||||
@单位 nvarchar(50)=null,
|
||||
@类型 nvarchar(50)=null,
|
||||
@物料名称 nvarchar(50)=null,
|
||||
@图号 nvarchar(50)=null,
|
||||
@物料说明 nvarchar(MAX)=null,
|
||||
@物料库 nvarchar(50) =null,
|
||||
@人员编号 int = null,
|
||||
@曾用物料编码 nvarchar(50) = null,
|
||||
@物料编码 nvarchar(50) = null,
|
||||
@规格 nvarchar(50) = null,
|
||||
@创建时间 DATETIME = NULL
|
||||
|
||||
AS
|
||||
|
||||
DECLARE @物料流水号 INT
|
||||
DECLARE @材料流水号 INT
|
||||
DECLARE @货位流水号 INT
|
||||
DECLARE @单位流水号 INT
|
||||
DECLARE @类型流水号 INT
|
||||
DECLARE @物料库流水号 INT
|
||||
DECLARE @物料编码前缀 nvarchar(2) -- 修改人:Ld 修改时间:2026-09-03 13:47:51; 用物料编码前两位判断物料类型。
|
||||
--DECLARE @物料编码1 nvarchar(50) = null
|
||||
--DECLARE @物料编码2 nvarchar(50) = null
|
||||
|
||||
SET @物料编码前缀 = LEFT(LTRIM(RTRIM(ISNULL(@物料编码, N''))), 2) -- 修改人:Ld 修改时间:2026-09-03 13:47:51; 统一取物料编码前缀。
|
||||
SET @类型流水号 = CASE @物料编码前缀 -- 修改人:Ld 修改时间:2026-09-03 13:47:51; 01毛坯、02自制、03采购、04原材料、05耗材、06设备、07质检、08半成品、09模具、10成品。
|
||||
WHEN N'01' THEN 1
|
||||
WHEN N'02' THEN 2
|
||||
WHEN N'03' THEN 3
|
||||
WHEN N'04' THEN 4
|
||||
WHEN N'05' THEN 5
|
||||
WHEN N'06' THEN 6
|
||||
WHEN N'07' THEN 7
|
||||
WHEN N'08' THEN 8
|
||||
WHEN N'09' THEN 9
|
||||
WHEN N'10' THEN 10
|
||||
END
|
||||
|
||||
IF @类型流水号 IS NULL
|
||||
BEGIN
|
||||
IF @类型 = N'自制'
|
||||
BEGIN
|
||||
SET @类型流水号 = 2
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
SET @类型流水号 = 1
|
||||
END
|
||||
END
|
||||
|
||||
IF @曾用物料编码 IS NOT NULL AND @曾用物料编码 <> ''
|
||||
BEGIN
|
||||
-- 检查是否存在物料编码 = @曾用物料编码 的记录
|
||||
IF EXISTS (SELECT 1 FROM 库存管理_物料主文件_基本 WHERE 物料编码 = @曾用物料编码)
|
||||
BEGIN
|
||||
-- 更新该记录的物料编码为新编码,同时记录曾用物料编码(可选,也可以将旧编码存入曾用物料编码列)
|
||||
UPDATE 库存管理_物料主文件_基本
|
||||
SET 物料编码 = @物料编码,
|
||||
类型 = @类型流水号, -- 修改人:Ld 修改时间:2026-09-03 13:47:51; 编码变更时同步按新编码前两位更新物料类型。
|
||||
曾用物料编码 = @曾用物料编码, -- 将旧编码存入曾用物料编码字段,便于追溯
|
||||
修改人 = @人员编号,
|
||||
修改日期 = GETDATE()
|
||||
WHERE 物料编码 = @曾用物料编码;
|
||||
|
||||
-- 注意:如果同一个物料编码出现在多个表中(如库存表),可能需要同步更新,此处仅更新主文件
|
||||
-- 如果有需要,也可以更新 库存管理_物料与货位对照表 或 库存管理_外购件累计库存 中的关联字段(通常不需要,因为流水号不变)
|
||||
|
||||
PRINT '物料编码更新成功:' + @曾用物料编码 + ' -> ' + @物料编码;
|
||||
RETURN; -- 更新完成后直接退出,不再执行后面的新增逻辑
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
-- 如果曾用物料编码不存在,可以报错或者继续执行新增逻辑,这里选择报错
|
||||
RAISERROR('曾用物料编码 %s 在系统中不存在,无法更新。', 16, 1, @曾用物料编码);
|
||||
RETURN;
|
||||
END
|
||||
END
|
||||
|
||||
--获得材料流水号
|
||||
select @材料流水号 = 材料流水号 from dbo.PDM_零件明细表_材料
|
||||
where 材料=@材料
|
||||
|
||||
if @材料流水号 is null
|
||||
begin
|
||||
insert into PDM_零件明细表_材料(材料,操作日期) values (@材料,getdate())
|
||||
set @材料流水号=IDENT_CURRENT('PDM_零件明细表_材料')
|
||||
end
|
||||
|
||||
--获得货位流水号
|
||||
select @货位流水号 = 货位流水号 from dbo.库存管理_货位主文件
|
||||
where 货位名称=@货位
|
||||
|
||||
if @货位流水号 is null
|
||||
begin
|
||||
set @货位流水号 = 2514
|
||||
end
|
||||
|
||||
--获得单位流水号
|
||||
select @单位流水号 = 单位流水号 from dbo.单位名称_基础表
|
||||
where 单位=@单位
|
||||
|
||||
if @单位流水号 is null
|
||||
begin
|
||||
set @单位流水号 = 1
|
||||
end
|
||||
|
||||
--获得物料库流水号
|
||||
if @物料库 = '通用'
|
||||
begin
|
||||
set @物料库流水号 = 1
|
||||
end
|
||||
else
|
||||
begin
|
||||
set @物料库流水号 = 2
|
||||
end
|
||||
|
||||
IF EXISTS (SELECT 1 FROM 库存管理_物料主文件_基本 WHERE 物料编码 = @物料编码)
|
||||
BEGIN
|
||||
-- 存在则更新(覆盖)
|
||||
UPDATE 库存管理_物料主文件_基本
|
||||
SET 名称 = @物料名称,
|
||||
代号 = @图号,
|
||||
单位流水号 = @单位流水号,
|
||||
材料流水号 = @材料流水号,
|
||||
类型 = @类型流水号,
|
||||
货位流水号 = @货位流水号,
|
||||
物料库流水号 = @物料库流水号,
|
||||
修改人 = @人员编号,
|
||||
修改日期 = GETDATE(),
|
||||
物料说明 = @物料说明,
|
||||
规格 = @规格,
|
||||
曾用物料编码 = ISNULL(曾用物料编码, @曾用物料编码) -- 保留原有曾用编码,如果没有则设置
|
||||
WHERE 物料编码 = @物料编码;
|
||||
|
||||
-- 获取流水号用于更新关联表
|
||||
SELECT @物料流水号 = 物料流水号 FROM 库存管理_物料主文件_基本 WHERE 物料编码 = @物料编码;
|
||||
|
||||
PRINT '物料编码 ' + @物料编码 + ' 已存在,已执行覆盖更新。';
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
--select @物料编码2 = 'LJ'+ right(cast(power(10,8) as varchar) + (SUBSTRING((select 物料编码 from 库存管理_物料主文件_基本 WHERE 物料流水号 = (select Max(物料流水号) from 库存管理_物料主文件_基本)),3,8) + 1),8)
|
||||
insert into 库存管理_物料主文件_基本(名称,代号,单位流水号,材料流水号,类型,物料编码,货位流水号,物料库流水号,修改人,修改日期,物料说明,曾用物料编码,规格,创建人)
|
||||
values(@物料名称,@图号,@单位流水号,@材料流水号,@类型流水号,@物料编码,@货位流水号,@物料库流水号,@人员编号,GETDATE(),@物料说明,@曾用物料编码,@规格,@人员编号)
|
||||
set @物料流水号 = IDENT_CURRENT(N'库存管理_物料主文件_基本')
|
||||
insert into 库存管理_物料与货位对照表(物料流水号,货位存量,货位流水号)values(@物料流水号,0,@货位流水号)
|
||||
insert into 库存管理_外购件累计库存(物料流水号,累计库存)values(@物料流水号,0)
|
||||
END
|
||||
GO
|
||||
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT N'物料类型字典' AS 检查项, 类型流水号, 类型
|
||||
FROM dbo.物料类型_基础表
|
||||
WHERE 类型流水号 BETWEEN 1 AND 10
|
||||
ORDER BY 类型流水号;
|
||||
|
||||
WITH R AS (
|
||||
SELECT
|
||||
LEFT(LTRIM(RTRIM(ISNULL(物料编码, N''))), 2) AS 前两位,
|
||||
类型,
|
||||
CASE LEFT(LTRIM(RTRIM(ISNULL(物料编码, N''))), 2)
|
||||
WHEN N'01' THEN 1
|
||||
WHEN N'02' THEN 2
|
||||
WHEN N'03' THEN 3
|
||||
WHEN N'04' THEN 4
|
||||
WHEN N'05' THEN 5
|
||||
WHEN N'06' THEN 6
|
||||
WHEN N'07' THEN 7
|
||||
WHEN N'08' THEN 8
|
||||
WHEN N'09' THEN 9
|
||||
WHEN N'10' THEN 10
|
||||
END AS 规则类型
|
||||
FROM dbo.库存管理_物料主文件_基本
|
||||
)
|
||||
SELECT
|
||||
前两位,
|
||||
规则类型,
|
||||
COUNT(*) AS 总数,
|
||||
SUM(CASE WHEN ISNULL(类型, -1) <> 规则类型 THEN 1 ELSE 0 END) AS 未匹配数量
|
||||
FROM R
|
||||
WHERE 规则类型 IS NOT NULL
|
||||
GROUP BY 前两位, 规则类型
|
||||
ORDER BY 前两位;
|
||||
|
||||
SELECT
|
||||
OBJECT_ID(N'dbo.GPT备份_物料管理_增加_批量_过程_20260903_134751', N'U') AS 过程备份表ID,
|
||||
OBJECT_ID(N'dbo.GPT备份_物料类型_基础表_20260903_134751', N'U') AS 类型备份表ID,
|
||||
OBJECT_ID(N'dbo.GPT备份_库存管理_物料主文件_基本_20260903_134751', N'U') AS 物料备份表ID;
|
||||
85
sql/物料管理_增加_批量_物料类型按编码前缀_回滚_20260903.sql
Normal file
85
sql/物料管理_增加_批量_物料类型按编码前缀_回滚_20260903.sql
Normal file
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
用途:回滚 2026-09-03 13:47:51 物料类型按物料编码前缀修正。
|
||||
说明:请在需要回滚的数据库中执行,本脚本依赖同库备份表:
|
||||
1. dbo.GPT备份_物料管理_增加_批量_过程_20260903_134751
|
||||
2. dbo.GPT备份_物料类型_基础表_20260903_134751
|
||||
3. dbo.GPT备份_库存管理_物料主文件_基本_20260903_134751
|
||||
修改人:Ld 修改时间:2026-09-03 13:47:51;
|
||||
*/
|
||||
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
IF OBJECT_ID(N'dbo.GPT备份_物料管理_增加_批量_过程_20260903_134751', N'U') IS NULL
|
||||
OR OBJECT_ID(N'dbo.GPT备份_物料类型_基础表_20260903_134751', N'U') IS NULL
|
||||
OR OBJECT_ID(N'dbo.GPT备份_库存管理_物料主文件_基本_20260903_134751', N'U') IS NULL
|
||||
BEGIN
|
||||
RAISERROR(N'缺少本次变更备份表,无法自动回滚。', 16, 1);
|
||||
RETURN;
|
||||
END
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRAN;
|
||||
|
||||
UPDATE m
|
||||
SET m.类型 = b.类型,
|
||||
m.修改日期 = b.修改日期
|
||||
FROM dbo.库存管理_物料主文件_基本 m
|
||||
INNER JOIN dbo.GPT备份_库存管理_物料主文件_基本_20260903_134751 b
|
||||
ON m.物料流水号 = b.物料流水号
|
||||
WHERE ISNULL(m.类型, -1) <> ISNULL(b.类型, -1); -- 修改人:Ld 修改时间:2026-09-03 13:47:51; 使用备份恢复物料主文件类型。
|
||||
|
||||
DELETE t
|
||||
FROM dbo.物料类型_基础表 t
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM dbo.GPT备份_物料类型_基础表_20260903_134751 b
|
||||
WHERE b.类型流水号 = t.类型流水号
|
||||
); -- 修改人:Ld 修改时间:2026-09-03 13:47:51; 删除本次新增的类型字典行。
|
||||
|
||||
UPDATE t
|
||||
SET t.类型 = b.类型
|
||||
FROM dbo.物料类型_基础表 t
|
||||
INNER JOIN dbo.GPT备份_物料类型_基础表_20260903_134751 b
|
||||
ON t.类型流水号 = b.类型流水号; -- 修改人:Ld 修改时间:2026-09-03 13:47:51; 恢复原类型字典名称。
|
||||
|
||||
COMMIT TRAN;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF @@TRANCOUNT > 0
|
||||
ROLLBACK TRAN;
|
||||
DECLARE @错误消息 nvarchar(4000);
|
||||
DECLARE @错误严重级别 int;
|
||||
DECLARE @错误状态 int;
|
||||
SELECT
|
||||
@错误消息 = ERROR_MESSAGE(),
|
||||
@错误严重级别 = ERROR_SEVERITY(),
|
||||
@错误状态 = ERROR_STATE();
|
||||
RAISERROR(@错误消息, @错误严重级别, @错误状态); -- 修改人:Ld 修改时间:2026-09-03 13:47:51; 兼容当前 SQL Server 版本的异常抛出方式。
|
||||
END CATCH;
|
||||
GO
|
||||
|
||||
DECLARE @过程定义 nvarchar(max);
|
||||
SELECT TOP 1 @过程定义 = 过程定义
|
||||
FROM dbo.GPT备份_物料管理_增加_批量_过程_20260903_134751
|
||||
ORDER BY 备份时间 DESC;
|
||||
|
||||
IF @过程定义 IS NULL
|
||||
BEGIN
|
||||
RAISERROR(N'未找到原存储过程定义,无法恢复过程。', 16, 1);
|
||||
RETURN;
|
||||
END
|
||||
|
||||
SET @过程定义 = REPLACE(@过程定义, N'CREATE PROCEDURE', N'ALTER PROCEDURE');
|
||||
SET @过程定义 = REPLACE(@过程定义, N'CREATE PROCEDURE', N'ALTER PROCEDURE');
|
||||
SET @过程定义 = REPLACE(@过程定义, N'CREATE PROCEDURE', N'ALTER PROCEDURE');
|
||||
SET @过程定义 = REPLACE(@过程定义, N'CREATE PROCEDURE', N'ALTER PROCEDURE');
|
||||
SET @过程定义 = REPLACE(@过程定义, N'CREATE PROC', N'ALTER PROC');
|
||||
|
||||
EXEC sp_executesql @过程定义; -- 修改人:Ld 修改时间:2026-09-03 13:47:51; 使用备份定义恢复存储过程。
|
||||
GO
|
||||
|
||||
SELECT N'回滚检查-类型字典' AS 检查项, 类型流水号, 类型
|
||||
FROM dbo.物料类型_基础表
|
||||
ORDER BY 类型流水号;
|
||||
|
||||
89
sql/物料视图_类型名称CASE安全版_20260903.sql
Normal file
89
sql/物料视图_类型名称CASE安全版_20260903.sql
Normal file
@@ -0,0 +1,89 @@
|
||||
/*
|
||||
用途:安全修正物料标准维护页面的类型名称显示。
|
||||
设计:不改变 dbo.物料视图 的字段名和主要关联结构,不新增 dbo.物料类型_基础表 关联,仅将原 CASE 扩展为 1-10 类型。
|
||||
规则:1毛坯、2自制、3采购、4原材料、5耗材、6设备、7质检、8半成品、9模具、10成品。
|
||||
修改人:Ld 修改时间:2026-09-03 14:18:27;
|
||||
*/
|
||||
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF OBJECT_ID(N'dbo.GPT备份_物料视图_CASE安全版前_20260903_141827', N'U') IS NULL
|
||||
BEGIN
|
||||
SELECT
|
||||
DB_NAME() AS 数据库名,
|
||||
OBJECT_SCHEMA_NAME(object_id) AS 架构名,
|
||||
name AS 对象名,
|
||||
type_desc AS 对象类型,
|
||||
OBJECT_DEFINITION(object_id) AS 对象定义,
|
||||
GETDATE() AS 备份时间,
|
||||
N'修改人:Ld 修改时间:2026-09-03 14:18:27; 物料视图改为CASE安全版前备份' AS 备份说明
|
||||
INTO dbo.GPT备份_物料视图_CASE安全版前_20260903_141827
|
||||
FROM sys.objects
|
||||
WHERE object_id = OBJECT_ID(N'dbo.物料视图');
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER VIEW dbo.物料视图
|
||||
AS
|
||||
SELECT dbo.库存管理_物料主文件_基本.名称, dbo.库存管理_物料主文件_基本.代号, dbo.PDM_零件明细表_材料.材料,
|
||||
dbo.单位名称_基础表.单位, CONVERT(varchar(10), dbo.库存管理_物料主文件_基本.修改日期, 23) AS 修改日期,
|
||||
dbo.人事档案管理_人员名单.姓名 AS 修改人, dbo.库存管理_物料主文件_基本.物料流水号,
|
||||
dbo.库存管理_物料主文件_基本.是否禁用, dbo.库存管理_物料主文件_基本.类型,
|
||||
CASE dbo.库存管理_物料主文件_基本.类型
|
||||
WHEN 1 THEN N'毛坯'
|
||||
WHEN 2 THEN N'自制'
|
||||
WHEN 3 THEN N'采购'
|
||||
WHEN 4 THEN N'原材料'
|
||||
WHEN 5 THEN N'耗材'
|
||||
WHEN 6 THEN N'设备'
|
||||
WHEN 7 THEN N'质检'
|
||||
WHEN 8 THEN N'半成品'
|
||||
WHEN 9 THEN N'模具'
|
||||
WHEN 10 THEN N'成品'
|
||||
END AS 类型名称, -- 修改人:Ld 修改时间:2026-09-03 14:18:27; 原位置扩展CASE类型名称,避免新增JOIN影响页面。
|
||||
dbo.库存管理_物料主文件_基本.操作日期,
|
||||
dbo.库存管理_物料主文件_基本.材料流水号, dbo.库存管理_物料主文件_基本.单位流水号,
|
||||
dbo.库存管理_物料主文件_基本.物料编码, dbo.库存管理_物料_图片.文件后缀, dbo.库存管理_物料_图片.是否启用,
|
||||
dbo.库存管理_物料_图片.文件内容, dbo.库存管理_物料主文件_基本.货位流水号,
|
||||
dbo.库存管理_货位主文件.货位名称 AS 库位, dbo.库存管理_物料主文件_基本.物料库流水号,
|
||||
dbo.物料库_基础表.物料类型, dbo.库存管理_物料主文件_基本.物料说明,
|
||||
dbo.库存管理_物料主文件_基本.曾用物料编码, dbo.库存管理_物料主文件_基本.规格, ISNULL(creator.姓名,
|
||||
dbo.库存管理_物料主文件_基本.创建人) AS Expr1, dbo.库存管理_物料主文件_基本.最高库存,
|
||||
dbo.库存管理_物料主文件_基本.安全库存, dbo.库存管理_物料主文件_基本.最低库存
|
||||
FROM dbo.库存管理_物料主文件_基本 LEFT OUTER JOIN
|
||||
dbo.物料库_基础表 ON
|
||||
dbo.库存管理_物料主文件_基本.物料库流水号 = dbo.物料库_基础表.物料库流水号 LEFT OUTER JOIN
|
||||
dbo.库存管理_货位主文件 ON
|
||||
dbo.库存管理_物料主文件_基本.货位流水号 = dbo.库存管理_货位主文件.货位流水号 LEFT OUTER JOIN
|
||||
dbo.库存管理_物料_图片 ON
|
||||
dbo.库存管理_物料主文件_基本.物料流水号 = dbo.库存管理_物料_图片.物料流水号 LEFT OUTER JOIN
|
||||
dbo.PDM_零件明细表_材料 ON
|
||||
dbo.库存管理_物料主文件_基本.材料流水号 = dbo.PDM_零件明细表_材料.材料流水号 LEFT OUTER JOIN
|
||||
dbo.单位名称_基础表 ON
|
||||
dbo.库存管理_物料主文件_基本.单位流水号 = dbo.单位名称_基础表.单位流水号 LEFT OUTER JOIN
|
||||
dbo.人事档案管理_人员名单 ON
|
||||
dbo.库存管理_物料主文件_基本.修改人 = dbo.人事档案管理_人员名单.人员编号 LEFT OUTER JOIN
|
||||
dbo.人事档案管理_人员名单 AS creator ON dbo.库存管理_物料主文件_基本.创建人 = creator.人员编号
|
||||
GO
|
||||
|
||||
SELECT TOP 20
|
||||
物料编码,
|
||||
名称,
|
||||
类型,
|
||||
类型名称,
|
||||
物料类型
|
||||
FROM dbo.物料视图
|
||||
WHERE LEFT(LTRIM(RTRIM(ISNULL(物料编码, N''))), 2) IN (N'01', N'02', N'03', N'04', N'05', N'06', N'07', N'08', N'09', N'10')
|
||||
ORDER BY 物料编码;
|
||||
|
||||
DECLARE @PageCount int;
|
||||
DECLARE @ItemCount int;
|
||||
EXEC dbo.物料管理_查询数据_分页
|
||||
@PageCurrent = 1,
|
||||
@PageSize = 20,
|
||||
@PageCount = @PageCount OUTPUT,
|
||||
@ItemCount = @ItemCount OUTPUT;
|
||||
SELECT @PageCount AS PageCount, @ItemCount AS ItemCount;
|
||||
|
||||
SELECT OBJECT_ID(N'dbo.GPT备份_物料视图_CASE安全版前_20260903_141827', N'U') AS CASE安全版前备份表ID;
|
||||
|
||||
33
sql/物料视图_类型名称CASE安全版_回滚_20260903.sql
Normal file
33
sql/物料视图_类型名称CASE安全版_回滚_20260903.sql
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
用途:回滚 2026-09-03 14:18:27 物料视图类型名称 CASE 安全版修正。
|
||||
说明:请在需要回滚的数据库中执行,本脚本依赖同库备份表 dbo.GPT备份_物料视图_CASE安全版前_20260903_141827。
|
||||
修改人:Ld 修改时间:2026-09-03 14:18:27;
|
||||
*/
|
||||
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF OBJECT_ID(N'dbo.GPT备份_物料视图_CASE安全版前_20260903_141827', N'U') IS NULL
|
||||
BEGIN
|
||||
RAISERROR(N'缺少物料视图 CASE 安全版前备份表,无法自动回滚。', 16, 1);
|
||||
RETURN;
|
||||
END
|
||||
|
||||
DECLARE @视图定义 nvarchar(max);
|
||||
SELECT TOP 1 @视图定义 = 对象定义
|
||||
FROM dbo.GPT备份_物料视图_CASE安全版前_20260903_141827
|
||||
ORDER BY 备份时间 DESC;
|
||||
|
||||
IF @视图定义 IS NULL
|
||||
BEGIN
|
||||
RAISERROR(N'未找到备份的物料视图定义,无法恢复视图。', 16, 1);
|
||||
RETURN;
|
||||
END
|
||||
|
||||
SET @视图定义 = REPLACE(@视图定义, N'CREATE VIEW', N'ALTER VIEW');
|
||||
EXEC sp_executesql @视图定义; -- 修改人:Ld 修改时间:2026-09-03 14:18:27; 使用安全版前备份恢复物料视图。
|
||||
GO
|
||||
|
||||
SELECT TOP 20 物料编码, 名称, 类型, 类型名称, 物料类型
|
||||
FROM dbo.物料视图
|
||||
ORDER BY 物料编码;
|
||||
|
||||
@@ -10,7 +10,9 @@ ALTER PROCEDURE [dbo].[机加工MES_加工完成整修审核_审核数据]
|
||||
@审核整修开始时间 DATETIME = NULL,
|
||||
@审核整修结束时间 DATETIME = NULL,
|
||||
@审核整修方案 NVARCHAR(1000) = NULL,
|
||||
@计价方式 NVARCHAR(20) = NULL
|
||||
-- 修改人:Ld 修改时间:2026-08-20 13:20:11; 传入角色编号以支持系统管理员重审已审核记录
|
||||
@计价方式 NVARCHAR(20) = NULL,
|
||||
@角色编号 INT = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
@@ -36,6 +38,8 @@ BEGIN
|
||||
DECLARE @单时工价 DECIMAL(18, 4);
|
||||
DECLARE @是否修改加工 BIT = 0;
|
||||
DECLARE @是否修改整修 BIT = 0;
|
||||
-- 修改人:Ld 修改时间:2026-08-20 13:20:11; 系统管理员可对已审核记录再次提交修改
|
||||
DECLARE @是否管理员重审 BIT = CASE WHEN ISNULL(@角色编号, 0) = 2 THEN 1 ELSE 0 END;
|
||||
DECLARE @是否本过程开启事务 BIT;
|
||||
|
||||
SET @目标审核状态 = CASE WHEN @审核状态 IN (N'审核通过', N'已审核') THEN N'已审核' ELSE @审核状态 END;
|
||||
@@ -50,7 +54,8 @@ BEGIN
|
||||
SELECT 1
|
||||
FROM [dbo].[MES_机加工MES_加工完成整修审核表]
|
||||
WHERE id = @审核流水号
|
||||
AND 审核状态 = N'待审核'
|
||||
-- 修改人:Ld 修改时间:2026-08-20 13:20:11; 管理员重审时允许命中已审核记录
|
||||
AND (审核状态 = N'待审核' OR (@是否管理员重审 = 1 AND 审核状态 = N'已审核'))
|
||||
)
|
||||
BEGIN
|
||||
SELECT N'0' AS result, N'该审核记录不存在或已审核' AS message;
|
||||
@@ -70,7 +75,8 @@ BEGIN
|
||||
@单时工价 = ISNULL(单时工价, 0)
|
||||
FROM [dbo].[MES_机加工MES_加工完成整修审核表]
|
||||
WHERE id = @审核流水号
|
||||
AND 审核状态 = N'待审核';
|
||||
-- 修改人:Ld 修改时间:2026-08-20 13:20:11; 管理员重审时允许读取已审核记录
|
||||
AND (审核状态 = N'待审核' OR (@是否管理员重审 = 1 AND 审核状态 = N'已审核'));
|
||||
|
||||
IF @Safe计价方式 NOT IN (N'计件', N'计时')
|
||||
SET @Safe计价方式 = N'计件';
|
||||
@@ -229,7 +235,8 @@ BEGIN
|
||||
[修改人] = N'Ld',
|
||||
[修改时间] = GETDATE()
|
||||
WHERE [id] = @审核流水号
|
||||
AND [审核状态] = N'待审核';
|
||||
-- 修改人:Ld 修改时间:2026-08-20 13:20:11; 管理员重审时允许更新已审核记录
|
||||
AND ([审核状态] = N'待审核' OR (@是否管理员重审 = 1 AND [审核状态] = N'已审核'));
|
||||
|
||||
IF @是否本过程开启事务 = 1
|
||||
COMMIT TRAN;
|
||||
|
||||
147
sql/生产计划后端开发_测试库_20260820.sql
Normal file
147
sql/生产计划后端开发_测试库_20260820.sql
Normal file
@@ -0,0 +1,147 @@
|
||||
-- 生产计划后端开发测试库脚本;修改人:Ld 修改时间:2026-08-20 13:24:00;
|
||||
USE [ERPTOOL_JY_20250826Back];
|
||||
GO
|
||||
|
||||
/* 修改人:Ld 修改时间:2026-08-20 13:24:00; 工况查询增加计划开始时间字段,保留原有返回字段,兼容现有前端。 */
|
||||
ALTER PROCEDURE [dbo].[精工车间_工况_分页查询]
|
||||
@人员编号 int = null,
|
||||
@人员编号_check int = null,
|
||||
@设备流水号 nvarchar(50) = null,
|
||||
@设备流水号_check int = null,
|
||||
@零件名称_check int = null,
|
||||
@零件名称 nvarchar(50) = null,
|
||||
@排序名称 int = null,
|
||||
@排序方式 int = null,
|
||||
@时间_check bit = null,
|
||||
@开始时间 datetime = null,
|
||||
@结束时间 datetime = null,
|
||||
@PageCurrent int = 1,
|
||||
@PageSize int = 20,
|
||||
@PageCount int OUTPUT,
|
||||
@ItemCount int OUTPUT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @selectStrWhere nvarchar(4000);
|
||||
SET @selectStrWhere = N'数量 > 完成数';
|
||||
|
||||
IF (@人员编号_check = 1)
|
||||
SET @selectStrWhere += N' AND 人员编号 = ' + CONVERT(nvarchar(20), @人员编号);
|
||||
|
||||
IF (@设备流水号_check = 1 AND ISNULL(@设备流水号, N'') <> N'')
|
||||
SET @selectStrWhere += N' AND 设备 LIKE N''%' + REPLACE(@设备流水号, N'''', N'''''') + N'%''';
|
||||
|
||||
IF (@零件名称_check = 1 AND ISNULL(@零件名称, N'') <> N'')
|
||||
SET @selectStrWhere += N' AND 零件名称 LIKE N''%' + REPLACE(@零件名称, N'''', N'''''') + N'%''';
|
||||
|
||||
IF (@时间_check = 1)
|
||||
SET @selectStrWhere += N' AND 分配时间 >= ''' + CONVERT(nvarchar(30), @开始时间, 120) + N''' AND 分配时间 <= ''' + CONVERT(nvarchar(30), @结束时间, 120) + N'''';
|
||||
|
||||
DECLARE @fieldOrder nvarchar(1000);
|
||||
IF (@排序名称 = 1)
|
||||
SET @fieldOrder = CASE WHEN @排序方式 = 1 THEN N'零件名称 DESC' ELSE N'零件名称 ASC' END;
|
||||
ELSE IF (@排序名称 = 2)
|
||||
SET @fieldOrder = CASE WHEN @排序方式 = 1 THEN N'工序 DESC' ELSE N'工序 ASC' END;
|
||||
ELSE IF (@排序名称 = 3)
|
||||
SET @fieldOrder = CASE WHEN @排序方式 = 1 THEN N'姓名 DESC' ELSE N'姓名 ASC' END;
|
||||
ELSE IF (@排序名称 = 4)
|
||||
SET @fieldOrder = CASE WHEN @排序方式 = 1 THEN N'设备 DESC' ELSE N'设备 ASC' END;
|
||||
ELSE
|
||||
SET @fieldOrder = N'分配时间 DESC';
|
||||
|
||||
EXEC sp_xt_pagesplit
|
||||
N'车间生产管理工艺_零件工序_已派工_视图',
|
||||
N'工艺任务流水号',
|
||||
@selectStrWhere,
|
||||
N'[工艺任务流水号], [工序顺序], [数量], [姓名], [设备], [分配时间], [计划开始日期] AS [计划开始时间], [工艺计划流水号], [工序], [工序流水号], [人员编号], [设备流水号], [完成数], [是否加工中], [零件图号], [零件名称], [订单号], [精工期限], [报废数量], [工序状态], [加工开始时间], [加工完成时间]',
|
||||
@fieldOrder,
|
||||
N'',
|
||||
@PageCurrent,
|
||||
@PageSize,
|
||||
@PageCount OUTPUT,
|
||||
@ItemCount OUTPUT;
|
||||
END;
|
||||
GO
|
||||
|
||||
/* 修改人:Ld 修改时间:2026-08-20 13:24:00; 新增设备门牌队列查询,按设备返回当前任务、下一项任务和后续队列。 */
|
||||
CREATE OR ALTER PROCEDURE [dbo].[车间生产管理_设备门牌看板_查询数据]
|
||||
@设备流水号 nvarchar(50) = NULL,
|
||||
@设备流水号_check bit = 0,
|
||||
@仅未完成 bit = 1
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH BaseTask AS (
|
||||
SELECT
|
||||
v.工艺任务流水号,
|
||||
v.工艺计划流水号,
|
||||
v.工序流水号,
|
||||
v.设备流水号,
|
||||
v.设备,
|
||||
v.姓名,
|
||||
v.订单号,
|
||||
v.零件名称,
|
||||
v.零件图号,
|
||||
v.工序顺序,
|
||||
v.工序,
|
||||
v.数量,
|
||||
v.完成数,
|
||||
v.是否加工中,
|
||||
v.工序状态,
|
||||
v.分配时间,
|
||||
v.计划开始日期 AS 计划开始时间,
|
||||
v.精工期限,
|
||||
v.加工开始时间,
|
||||
v.加工完成时间,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY v.设备流水号
|
||||
ORDER BY
|
||||
CASE WHEN ISNULL(v.是否加工中, 0) = 1 THEN 0 ELSE 1 END,
|
||||
ISNULL(v.计划开始日期, TRY_CONVERT(datetime, v.分配时间)),
|
||||
ISNULL(v.精工期限, N'9999-12-31'),
|
||||
v.工序顺序,
|
||||
v.工艺任务流水号
|
||||
) AS 设备队列序号,
|
||||
COUNT(1) OVER (PARTITION BY v.设备流水号) AS 后续任务数
|
||||
FROM dbo.车间生产管理工艺_零件工序_已派工_视图 v
|
||||
WHERE (@仅未完成 = 0 OR ISNULL(v.数量, 0) > ISNULL(v.完成数, 0))
|
||||
AND (@设备流水号_check = 0 OR CONVERT(nvarchar(50), v.设备流水号) LIKE N'%' + ISNULL(@设备流水号, N'') + N'%')
|
||||
)
|
||||
SELECT
|
||||
工艺任务流水号,
|
||||
工艺计划流水号,
|
||||
工序流水号,
|
||||
设备流水号,
|
||||
设备,
|
||||
姓名,
|
||||
订单号,
|
||||
零件名称,
|
||||
零件图号,
|
||||
工序顺序,
|
||||
工序,
|
||||
数量,
|
||||
完成数,
|
||||
是否加工中,
|
||||
工序状态,
|
||||
分配时间,
|
||||
计划开始时间,
|
||||
精工期限,
|
||||
加工开始时间,
|
||||
加工完成时间,
|
||||
设备队列序号,
|
||||
后续任务数,
|
||||
CASE
|
||||
WHEN 设备队列序号 = 1 AND ISNULL(是否加工中, 0) = 1 THEN N'生产中'
|
||||
WHEN 设备队列序号 = 1 THEN N'下一项'
|
||||
ELSE N'排队中'
|
||||
END AS 门牌状态,
|
||||
CASE WHEN 设备队列序号 = 1 THEN 1 ELSE 0 END AS 是否当前任务,
|
||||
CASE WHEN 设备队列序号 = 2 THEN 1 ELSE 0 END AS 是否下一任务
|
||||
FROM BaseTask
|
||||
ORDER BY 设备流水号, 设备队列序号;
|
||||
END;
|
||||
GO
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-08-20 13:24:00;
|
||||
232
sql/生产计划销售合同字段_测试库_20260910.sql
Normal file
232
sql/生产计划销售合同字段_测试库_20260910.sql
Normal file
@@ -0,0 +1,232 @@
|
||||
-- 生产计划查询补充销售合同计划字段测试库脚本;修改人:Ld 修改时间:2026-09-10 08:34:52;
|
||||
USE [ERPTOOL_JY_20250826Back];
|
||||
GO
|
||||
|
||||
/* 修改人:Ld 修改时间:2026-09-10 08:34:52; 生产计划查询返回部件名称和买方名称,供销售合同计划展示使用。 */
|
||||
ALTER PROCEDURE [dbo].[车间生产管理_生产计划_查询数据]
|
||||
@合同编号_check bit = null,
|
||||
@合同编号 nvarchar(50) = null,
|
||||
@零件名称_check bit = null,
|
||||
@零件名称 nvarchar(50) = null,
|
||||
@产品名称_check bit = null,
|
||||
@产品名称 nvarchar(50) = null,
|
||||
@状态_check bit = null,
|
||||
@状态 nvarchar(50) = null,
|
||||
@月份 nvarchar(50) = '2026-5'
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @年 nvarchar(50);
|
||||
DECLARE @月 nvarchar(50);
|
||||
DECLARE @selectStr nvarchar(MAX);
|
||||
DECLARE @selectStrWhere nvarchar(MAX);
|
||||
|
||||
IF CHARINDEX('-', @月份) > 0
|
||||
BEGIN
|
||||
SET @年 = LEFT(@月份, CHARINDEX('-', @月份) - 1);
|
||||
SET @月 = SUBSTRING(@月份, CHARINDEX('-', @月份) + 1, LEN(@月份) - CHARINDEX('-', @月份));
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
SET @年 = LEFT(@月份, 4);
|
||||
SET @月 = RIGHT(@月份, 2);
|
||||
END;
|
||||
|
||||
SELECT TOP (0) *
|
||||
INTO #生产计划
|
||||
FROM dbo.车间生产管理_生产计划_视图_新;
|
||||
|
||||
SET @selectStr = N'INSERT INTO #生产计划 SELECT * FROM dbo.车间生产管理_生产计划_视图_新 ';
|
||||
SET @selectStrWhere = N' WHERE 年 = @年 AND 月 = @月 ';
|
||||
|
||||
IF (@零件名称_check = 1 AND ISNULL(@零件名称, N'') <> N'')
|
||||
SET @selectStrWhere += N' AND (零件名称 + ISNULL(零件图号, N'''')) LIKE N''%'' + @零件名称 + N''%'' ';
|
||||
|
||||
IF (@合同编号_check = 1 AND ISNULL(@合同编号, N'') <> N'')
|
||||
SET @selectStrWhere += N' AND 订单号 LIKE N''%'' + @合同编号 + N''%'' ';
|
||||
|
||||
IF (@产品名称_check = 1 AND ISNULL(@产品名称, N'') <> N'')
|
||||
SET @selectStrWhere += N' AND 产品名称 LIKE N''%'' + @产品名称 + N''%'' ';
|
||||
|
||||
IF (@状态_check = 1 AND ISNULL(@状态, N'') <> N'')
|
||||
SET @selectStrWhere += N' AND 状态 LIKE N''%'' + @状态 + N''%'' ';
|
||||
|
||||
SET @selectStr += @selectStrWhere + N';';
|
||||
|
||||
EXEC sp_executesql
|
||||
@selectStr,
|
||||
N'@零件名称 nvarchar(50), @合同编号 nvarchar(50), @产品名称 nvarchar(50), @状态 nvarchar(50), @年 nvarchar(50), @月 nvarchar(50)',
|
||||
@零件名称 = @零件名称,
|
||||
@合同编号 = @合同编号,
|
||||
@产品名称 = @产品名称,
|
||||
@状态 = @状态,
|
||||
@年 = @年,
|
||||
@月 = @月;
|
||||
|
||||
CREATE TABLE #BHZZOrders (
|
||||
订单流水号 int,
|
||||
订单编号 nvarchar(100),
|
||||
订单备注 nvarchar(500),
|
||||
合同日期 date,
|
||||
备注中数字 nvarchar(50),
|
||||
备注中人名 nvarchar(50)
|
||||
);
|
||||
|
||||
CREATE TABLE #MKOrders (
|
||||
订单流水号 int,
|
||||
订单编号 nvarchar(100),
|
||||
订单备注 nvarchar(500),
|
||||
合同日期 date,
|
||||
备注数字部分 nvarchar(50),
|
||||
备注人名部分 nvarchar(50)
|
||||
);
|
||||
|
||||
CREATE TABLE #收货人信息 (
|
||||
订单流水号 int,
|
||||
订单编号 nvarchar(100),
|
||||
收货人 nvarchar(100),
|
||||
地址 nvarchar(500)
|
||||
);
|
||||
|
||||
INSERT INTO #BHZZOrders
|
||||
SELECT DISTINCT
|
||||
o.订单流水号,
|
||||
o.订单编号,
|
||||
o.订单备注,
|
||||
CAST(o.合同日期 AS date) AS 合同日期,
|
||||
dbo.提取备注中的数字(o.订单备注) AS 备注中数字,
|
||||
dbo.提取备注中的中文(o.订单备注) AS 备注中人名
|
||||
FROM dbo.PDM_订单信息_视图 o
|
||||
WHERE o.订单编号 LIKE N'BHZZ%'
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM #生产计划 p
|
||||
WHERE NULLIF(LTRIM(RTRIM(CONVERT(nvarchar(100), p.订单号))), N'') = o.订单编号
|
||||
);
|
||||
|
||||
INSERT INTO #MKOrders
|
||||
SELECT
|
||||
o.订单流水号,
|
||||
o.订单编号,
|
||||
o.订单备注,
|
||||
CAST(o.合同日期 AS date) AS 合同日期,
|
||||
dbo.提取备注中的数字(o.订单备注) AS 备注数字部分,
|
||||
dbo.提取备注中的中文(o.订单备注) AS 备注人名部分
|
||||
FROM dbo.PDM_订单信息_视图 o
|
||||
WHERE o.订单编号 LIKE N'%MK%';
|
||||
|
||||
INSERT INTO #收货人信息
|
||||
SELECT DISTINCT
|
||||
o.订单流水号,
|
||||
o.订单编号,
|
||||
c.收货人,
|
||||
c.地址
|
||||
FROM dbo.PDM_订单信息_视图 o
|
||||
LEFT JOIN dbo.客户关系管理系统_客户名称 c ON o.客户流水号 = c.客户流水号
|
||||
WHERE o.订单编号 LIKE N'%MK%'
|
||||
OR EXISTS (SELECT 1 FROM #BHZZOrders b WHERE b.订单编号 = o.订单编号);
|
||||
|
||||
;WITH AllMatches AS (
|
||||
SELECT
|
||||
B.订单流水号 AS BHZZ订单流水号,
|
||||
B.订单编号 AS BHZZ订单编号,
|
||||
B.合同日期 AS BHZZ合同日期,
|
||||
B.订单备注 AS BHZZ订单备注,
|
||||
B.备注中数字 AS BHZZ备注提取数字,
|
||||
B.备注中人名 AS BHZZ备注提取人名,
|
||||
M.订单流水号 AS MK订单流水号,
|
||||
M.订单编号 AS MK订单编号,
|
||||
M.合同日期 AS MK合同日期,
|
||||
M.订单备注 AS MK订单备注,
|
||||
M.备注数字部分 AS MK备注数字部分,
|
||||
M.备注人名部分 AS MK备注提取人名,
|
||||
R.收货人 AS MK订单收货人,
|
||||
R.地址 AS MK订单收货地址,
|
||||
DATEDIFF(DAY, M.合同日期, B.合同日期) AS 日期差天数,
|
||||
CASE
|
||||
WHEN B.备注中数字 IS NOT NULL AND M.备注数字部分 IS NOT NULL
|
||||
AND B.备注中数字 = M.备注数字部分 THEN N'数字匹配'
|
||||
WHEN B.备注中数字 IS NOT NULL AND CHARINDEX(B.备注中数字, M.订单编号) > 0 THEN N'订单编号包含数字'
|
||||
WHEN B.备注中人名 IS NOT NULL AND M.备注人名部分 IS NOT NULL
|
||||
AND B.备注中人名 = M.备注人名部分 THEN N'人名匹配'
|
||||
WHEN B.备注中人名 IS NOT NULL AND R.收货人 IS NOT NULL
|
||||
AND B.备注中人名 = R.收货人 THEN N'人名与收货人匹配'
|
||||
WHEN M.备注人名部分 IS NOT NULL AND R.收货人 IS NOT NULL
|
||||
AND M.备注人名部分 = R.收货人 THEN N'MK备注人名与收货人匹配'
|
||||
ELSE N'其他关联'
|
||||
END AS 关联类型
|
||||
FROM #BHZZOrders B
|
||||
INNER JOIN #MKOrders M ON
|
||||
(B.备注中数字 IS NOT NULL AND M.备注数字部分 IS NOT NULL AND B.备注中数字 = M.备注数字部分)
|
||||
OR (B.备注中数字 IS NOT NULL AND CHARINDEX(B.备注中数字, M.订单编号) > 0)
|
||||
OR (B.备注中人名 IS NOT NULL AND M.备注人名部分 IS NOT NULL AND B.备注中人名 = M.备注人名部分)
|
||||
LEFT JOIN #收货人信息 R ON M.订单流水号 = R.订单流水号
|
||||
),
|
||||
RankedMatches AS (
|
||||
SELECT
|
||||
*,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY BHZZ订单流水号
|
||||
ORDER BY
|
||||
CASE
|
||||
WHEN 关联类型 = N'人名与收货人匹配' THEN 1
|
||||
WHEN 关联类型 = N'数字匹配' THEN 2
|
||||
WHEN 关联类型 = N'订单编号包含数字' THEN 3
|
||||
WHEN 关联类型 = N'人名匹配' THEN 4
|
||||
WHEN 关联类型 = N'MK备注人名与收货人匹配' THEN 5
|
||||
ELSE 6
|
||||
END,
|
||||
ABS(日期差天数)
|
||||
) AS rn
|
||||
FROM AllMatches
|
||||
)
|
||||
SELECT *
|
||||
INTO #ClosestMatches
|
||||
FROM RankedMatches
|
||||
WHERE rn = 1;
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-09-10 08:34:52; 从组件视图按MK订单补充部件名称和买方名称,客户名称不再取收货人。
|
||||
EXEC sp_executesql N'
|
||||
SELECT
|
||||
p.*,
|
||||
ISNULL(componentInfo.部件名称, p.产品名称) AS 部件名称,
|
||||
componentInfo.买方名称,
|
||||
linkProject.合同编号 AS 关联合同编号,
|
||||
c.BHZZ订单流水号,
|
||||
c.BHZZ订单编号,
|
||||
c.BHZZ合同日期,
|
||||
c.BHZZ订单备注,
|
||||
c.BHZZ备注提取数字,
|
||||
c.BHZZ备注提取人名,
|
||||
c.MK订单流水号,
|
||||
c.MK订单编号,
|
||||
c.MK合同日期,
|
||||
c.MK订单备注,
|
||||
c.MK备注数字部分,
|
||||
c.MK备注提取人名,
|
||||
c.MK订单收货人,
|
||||
c.MK订单收货地址,
|
||||
c.日期差天数,
|
||||
c.关联类型
|
||||
FROM #生产计划 p
|
||||
LEFT JOIN #ClosestMatches c ON c.BHZZ订单编号 = CONVERT(nvarchar(100), p.订单号)
|
||||
LEFT JOIN dbo.合同管理_订单信息_基础表 linkOrder
|
||||
ON linkOrder.订单编号 = CONVERT(nvarchar(100), p.订单号)
|
||||
LEFT JOIN dbo.PDM_项目名称 linkProject
|
||||
ON linkOrder.项目流水号 = linkProject.项目流水号
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1)
|
||||
comp.产品名称 AS 部件名称,
|
||||
comp.买方名称
|
||||
FROM dbo.PDM_组件名称_视图 comp
|
||||
WHERE comp.订单编号 = ISNULL(NULLIF(c.MK订单编号, N''''), CONVERT(nvarchar(100), p.订单号))
|
||||
ORDER BY
|
||||
CASE WHEN comp.产品名称 = p.产品名称 THEN 0 ELSE 1 END,
|
||||
comp.组件流水号
|
||||
) componentInfo
|
||||
ORDER BY p.订单号, p.工序顺序;';
|
||||
END;
|
||||
GO
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-09-10 08:34:52;
|
||||
248
sql/设备门牌看板存储过程_正式库_20260910.sql
Normal file
248
sql/设备门牌看板存储过程_正式库_20260910.sql
Normal file
@@ -0,0 +1,248 @@
|
||||
-- 设备门牌看板存储过程从测试库同步到正式库;修改人:Ld 修改时间:2026-09-10 08:18:13;
|
||||
USE [ERPTOOL_JY];
|
||||
GO
|
||||
|
||||
/* 修改人:Ld 修改时间:2026-09-10 08:18:13; 同步测试库设备门牌看板过程,下一项按待加工区原过程口径,由任务分配设备流水号匹配工位后取可以加工第一项。 */
|
||||
ALTER PROCEDURE [dbo].[车间生产管理_设备门牌看板_查询数据]
|
||||
@设备流水号 nvarchar(50) = NULL,
|
||||
@设备流水号_check bit = 0,
|
||||
@仅未完成 bit = 1
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
/* 修改人:Ld 修改时间:2026-09-10 08:18:13; 正式库同步测试库设备门牌看板逻辑,过程体内保留追溯注释。 */
|
||||
|
||||
;WITH WorkStation AS (
|
||||
SELECT
|
||||
sb.设备流水号,
|
||||
sb.工位号,
|
||||
sb.设备名称,
|
||||
rt.工艺计划流水号 AS 当前工艺计划流水号,
|
||||
rt.工序流水号 AS 当前工序流水号,
|
||||
rt.人员编号 AS 当前人员编号,
|
||||
rt.操作时间 AS 当前操作时间
|
||||
FROM dbo.基础数据_设备工位点检表 sb
|
||||
LEFT JOIN dbo.MES_机加工MES_实时监控信息表 rt
|
||||
ON rt.终端编号 = sb.工位号
|
||||
WHERE sb.工位号 IS NOT NULL
|
||||
AND (@设备流水号_check = 0
|
||||
OR CONVERT(nvarchar(50), sb.设备流水号) LIKE N'%' + ISNULL(@设备流水号, N'') + N'%'
|
||||
OR sb.工位号 LIKE N'%' + ISNULL(@设备流水号, N'') + N'%'
|
||||
OR sb.设备名称 LIKE N'%' + ISNULL(@设备流水号, N'') + N'%')
|
||||
),
|
||||
CurrentTask AS (
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT
|
||||
ws.设备流水号,
|
||||
ws.工位号,
|
||||
ws.设备名称,
|
||||
ws.当前操作时间,
|
||||
v.工艺任务流水号,
|
||||
ws.当前工艺计划流水号 AS 工艺计划流水号,
|
||||
ws.当前工序流水号 AS 工序流水号,
|
||||
ws.当前人员编号 AS 人员编号,
|
||||
v.操作者 AS 姓名,
|
||||
v.订单号,
|
||||
v.零件名称,
|
||||
v.零件图号,
|
||||
v.工序顺序,
|
||||
v.工序,
|
||||
v.数量,
|
||||
v.已完成数 AS 完成数,
|
||||
v.剩余数量,
|
||||
v.工序状态,
|
||||
v.派工日期,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY ws.工位号
|
||||
ORDER BY v.订单号, v.工艺任务流水号
|
||||
) AS rn
|
||||
FROM WorkStation ws
|
||||
INNER JOIN dbo.车间生产管理工艺_零件工序_派工任务_加工视图 v
|
||||
ON v.工位号 = ws.工位号
|
||||
AND v.工艺计划流水号 = ws.当前工艺计划流水号
|
||||
AND v.工序流水号 = ws.当前工序流水号
|
||||
WHERE ISNULL(ws.当前工艺计划流水号, 0) > 0
|
||||
AND ISNULL(ws.当前工序流水号, 0) > 0
|
||||
) c
|
||||
WHERE c.rn = 1
|
||||
),
|
||||
CanProcess AS (
|
||||
SELECT DISTINCT
|
||||
gx1.工艺计划流水号,
|
||||
1 AS 可以加工
|
||||
FROM dbo.车间生产管理工艺_零件工序 gx1
|
||||
WHERE gx1.工序顺序 = 1
|
||||
AND (
|
||||
ISNULL(gx1.完成数量, 0) > 0
|
||||
OR EXISTS (
|
||||
SELECT 1
|
||||
FROM dbo.MES_机加工MES_加工完成整修审核表 aud1
|
||||
WHERE aud1.工序流水号 = gx1.工序流水号
|
||||
AND aud1.审核类型 = N'加工完成'
|
||||
AND aud1.审核状态 = N'待审核'
|
||||
AND ISNULL(aud1.完成数量, 0) > 0
|
||||
)
|
||||
)
|
||||
),
|
||||
PendingArea AS (
|
||||
SELECT
|
||||
ws.设备流水号,
|
||||
ws.工位号,
|
||||
ws.设备名称,
|
||||
fp.工艺任务流水号,
|
||||
v.工艺计划流水号,
|
||||
v.工序流水号,
|
||||
fp.人员编号,
|
||||
v.操作者 AS 姓名,
|
||||
ISNULL(gz.改制订单编号, v.订单号) AS 订单号,
|
||||
v.零件名称,
|
||||
v.零件图号,
|
||||
v.工序顺序,
|
||||
v.工序,
|
||||
fp.数量,
|
||||
ISNULL(fp.加工数量, 0) AS 完成数,
|
||||
fp.数量 - ISNULL(fp.加工数量, 0) AS 剩余数量,
|
||||
v.工序状态,
|
||||
fp.分配时间 AS 派工日期,
|
||||
v.精工期限,
|
||||
v.计划完成日期,
|
||||
CASE WHEN v.工序顺序 = 1 THEN 1 ELSE ISNULL(cp.可以加工, 0) END AS 可以加工
|
||||
FROM WorkStation ws
|
||||
INNER JOIN dbo.车间生产管理工艺_零件工序_任务分配 fp
|
||||
ON fp.设备流水号 = ws.设备流水号
|
||||
INNER JOIN dbo.车间生产管理_零件工序_视图 v
|
||||
ON v.工序流水号 = fp.工序流水号
|
||||
LEFT JOIN CanProcess cp
|
||||
ON cp.工艺计划流水号 = v.工艺计划流水号
|
||||
LEFT JOIN dbo.技术中心_改制订单记录 gz
|
||||
ON gz.工艺计划流水号 = v.工艺计划流水号
|
||||
AND ISNULL(gz.是否删除, 0) = 0
|
||||
WHERE v.工艺编号 IS NOT NULL
|
||||
AND v.考核状态 = 2
|
||||
AND ISNULL(v.工序状态, 0) < 3
|
||||
AND (@仅未完成 = 0 OR fp.数量 - ISNULL(fp.加工数量, 0) > 0)
|
||||
AND CASE WHEN v.工序顺序 = 1 THEN 1 ELSE ISNULL(cp.可以加工, 0) END = 1
|
||||
AND NOT (
|
||||
ISNULL(v.工艺计划流水号, 0) = ISNULL(ws.当前工艺计划流水号, 0)
|
||||
AND ISNULL(v.工序流水号, 0) = ISNULL(ws.当前工序流水号, 0)
|
||||
)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM dbo.MES_机加工MES_加工完成整修审核表 aud
|
||||
WHERE aud.工序流水号 = v.工序流水号
|
||||
AND aud.录工票人员编号 = fp.人员编号
|
||||
AND aud.审核类型 = N'加工完成'
|
||||
AND aud.审核状态 = N'待审核'
|
||||
AND ISNULL(aud.完成类型, 0) = 1
|
||||
)
|
||||
),
|
||||
NextTask AS (
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT
|
||||
p.*,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY p.工位号
|
||||
ORDER BY
|
||||
p.计划完成日期,
|
||||
p.派工日期,
|
||||
p.工艺任务流水号
|
||||
) AS rn
|
||||
FROM PendingArea p
|
||||
) n
|
||||
WHERE n.rn = 1
|
||||
),
|
||||
DoorTask AS (
|
||||
SELECT
|
||||
c.工艺任务流水号,
|
||||
c.工艺计划流水号,
|
||||
c.工序流水号,
|
||||
c.设备流水号,
|
||||
c.工位号 + N':' + ISNULL(c.设备名称, N'') AS 设备,
|
||||
c.姓名,
|
||||
c.订单号,
|
||||
c.零件名称,
|
||||
c.零件图号,
|
||||
c.工序顺序,
|
||||
c.工序,
|
||||
c.数量,
|
||||
c.完成数,
|
||||
1 AS 是否加工中,
|
||||
c.工序状态,
|
||||
CONVERT(varchar(19), c.派工日期, 120) AS 分配时间,
|
||||
c.当前操作时间 AS 计划开始时间,
|
||||
CONVERT(varchar(10), NULL) AS 精工期限,
|
||||
c.当前操作时间 AS 加工开始时间,
|
||||
CONVERT(datetime, NULL) AS 加工完成时间,
|
||||
1 AS 设备队列序号,
|
||||
c.工位号,
|
||||
N'生产中' AS 门牌状态,
|
||||
1 AS 是否当前任务,
|
||||
0 AS 是否下一任务
|
||||
FROM CurrentTask c
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
n.工艺任务流水号,
|
||||
n.工艺计划流水号,
|
||||
n.工序流水号,
|
||||
n.设备流水号,
|
||||
n.工位号 + N':' + ISNULL(n.设备名称, N'') AS 设备,
|
||||
n.姓名,
|
||||
n.订单号,
|
||||
n.零件名称,
|
||||
n.零件图号,
|
||||
n.工序顺序,
|
||||
n.工序,
|
||||
n.数量,
|
||||
n.完成数,
|
||||
0 AS 是否加工中,
|
||||
n.工序状态,
|
||||
CONVERT(varchar(19), n.派工日期, 120) AS 分配时间,
|
||||
n.派工日期 AS 计划开始时间,
|
||||
n.精工期限,
|
||||
CONVERT(datetime, NULL) AS 加工开始时间,
|
||||
CONVERT(datetime, NULL) AS 加工完成时间,
|
||||
CASE WHEN c.工位号 IS NULL THEN 1 ELSE 2 END AS 设备队列序号,
|
||||
n.工位号,
|
||||
N'下一项' AS 门牌状态,
|
||||
CASE WHEN c.工位号 IS NULL THEN 1 ELSE 0 END AS 是否当前任务,
|
||||
CASE WHEN c.工位号 IS NULL THEN 0 ELSE 1 END AS 是否下一任务
|
||||
FROM NextTask n
|
||||
LEFT JOIN CurrentTask c
|
||||
ON c.工位号 = n.工位号
|
||||
)
|
||||
SELECT
|
||||
工艺任务流水号,
|
||||
工艺计划流水号,
|
||||
工序流水号,
|
||||
设备流水号,
|
||||
设备,
|
||||
姓名,
|
||||
订单号,
|
||||
零件名称,
|
||||
零件图号,
|
||||
工序顺序,
|
||||
工序,
|
||||
数量,
|
||||
完成数,
|
||||
是否加工中,
|
||||
工序状态,
|
||||
分配时间,
|
||||
计划开始时间,
|
||||
精工期限,
|
||||
加工开始时间,
|
||||
加工完成时间,
|
||||
设备队列序号,
|
||||
COUNT(1) OVER (PARTITION BY 工位号) - 1 AS 后续任务数,
|
||||
门牌状态,
|
||||
是否当前任务,
|
||||
是否下一任务
|
||||
FROM DoorTask
|
||||
ORDER BY 工位号, 设备队列序号;
|
||||
END;
|
||||
GO
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-09-10 08:18:13;
|
||||
361
sql/采购入库单标签_测试库_20260903.sql
Normal file
361
sql/采购入库单标签_测试库_20260903.sql
Normal file
@@ -0,0 +1,361 @@
|
||||
/*
|
||||
修改人:Ld 修改时间:2026-09-03 14:56:40;
|
||||
用途: 测试库采购生成入库单时同步生成入库单标签信息,并提供扫码查询过程。
|
||||
数据库: ERPTOOL_JY_20250826Back
|
||||
说明: 本脚本只部署测试库,不包含正式库发布。
|
||||
*/
|
||||
|
||||
IF OBJECT_ID(N'dbo.仓储管理_入库单标签明细', N'U') IS NULL
|
||||
BEGIN
|
||||
-- 修改人:Ld 修改时间:2026-09-03 14:56:40; 新增入库单标签明细表,保存扫码展示所需物料信息。
|
||||
CREATE TABLE dbo.仓储管理_入库单标签明细
|
||||
(
|
||||
入库单标签明细流水号 INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
|
||||
入库单标签流水号 INT NOT NULL,
|
||||
物料流水号 INT NULL,
|
||||
采购合同明细流水号 INT NULL,
|
||||
物料名称 NVARCHAR(100) NULL,
|
||||
图号 NVARCHAR(100) NULL,
|
||||
数量 DECIMAL(18,4) NULL,
|
||||
是否需要质检 BIT NULL,
|
||||
创建时间 DATETIME NOT NULL CONSTRAINT DF_仓储管理_入库单标签明细_创建时间 DEFAULT(GETDATE())
|
||||
)
|
||||
END
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.仓储管理_入库单标签', N'U') IS NULL
|
||||
BEGIN
|
||||
-- 修改人:Ld 修改时间:2026-09-03 14:56:40; 新增入库单标签主表,二维码以标签ID或入库单号查询该表。
|
||||
CREATE TABLE dbo.仓储管理_入库单标签
|
||||
(
|
||||
入库单标签流水号 INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
|
||||
标签编号 NVARCHAR(100) NOT NULL,
|
||||
入库单号 NVARCHAR(100) NULL,
|
||||
批次号 NVARCHAR(100) NULL,
|
||||
采购合同流水号 INT NULL,
|
||||
采购合同号 NVARCHAR(100) NULL,
|
||||
供应商流水号 NVARCHAR(100) NULL,
|
||||
供应商 NVARCHAR(100) NULL,
|
||||
二维码内容 NVARCHAR(500) NULL,
|
||||
创建人 INT NULL,
|
||||
创建时间 DATETIME NOT NULL CONSTRAINT DF_仓储管理_入库单标签_创建时间 DEFAULT(GETDATE()),
|
||||
是否启用 BIT NOT NULL CONSTRAINT DF_仓储管理_入库单标签_是否启用 DEFAULT(1)
|
||||
)
|
||||
END
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM sys.foreign_keys
|
||||
WHERE name = N'FK_仓储管理_入库单标签明细_标签'
|
||||
AND parent_object_id = OBJECT_ID(N'dbo.仓储管理_入库单标签明细')
|
||||
)
|
||||
BEGIN
|
||||
-- 修改人:Ld 修改时间:2026-09-03 14:56:40; 为标签明细增加主表外键,便于后续重打和追溯。
|
||||
ALTER TABLE dbo.仓储管理_入库单标签明细
|
||||
ADD CONSTRAINT FK_仓储管理_入库单标签明细_标签
|
||||
FOREIGN KEY (入库单标签流水号) REFERENCES dbo.仓储管理_入库单标签(入库单标签流水号)
|
||||
END
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM sys.indexes
|
||||
WHERE name = N'IX_仓储管理_入库单标签_入库单号'
|
||||
AND object_id = OBJECT_ID(N'dbo.仓储管理_入库单标签')
|
||||
)
|
||||
BEGIN
|
||||
-- 修改人:Ld 修改时间:2026-09-03 14:56:40; 增加入库单号索引,提升扫码查询速度。
|
||||
CREATE INDEX IX_仓储管理_入库单标签_入库单号 ON dbo.仓储管理_入库单标签(入库单号)
|
||||
END
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM sys.indexes
|
||||
WHERE name = N'IX_仓储管理_入库单标签_标签编号'
|
||||
AND object_id = OBJECT_ID(N'dbo.仓储管理_入库单标签')
|
||||
)
|
||||
BEGIN
|
||||
-- 修改人:Ld 修改时间:2026-09-03 14:56:40; 增加标签编号索引,支持二维码按标签编号查询。
|
||||
CREATE INDEX IX_仓储管理_入库单标签_标签编号 ON dbo.仓储管理_入库单标签(标签编号)
|
||||
END
|
||||
GO
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-09-03 14:56:40; 改造生成入库单过程,同步写入标签主表和明细表,并返回标签字段。
|
||||
ALTER PROCEDURE [dbo].[采购管理_到货内容_新增]
|
||||
@发起人 int = null,
|
||||
@通知内容 nvarchar(500) = null,
|
||||
@采购合同流水号 int = null,
|
||||
@到货数组 varchar(500) = null,
|
||||
@物料流水号组 varchar(500) = null,
|
||||
@质检标志组 varchar(500) = null,
|
||||
@采购合同 nvarchar(50) = null,
|
||||
@供应商流水号 nvarchar(50) = null,
|
||||
@入库单号 nvarchar(50) = null
|
||||
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
update 采购管理_采购合同 set 是否到货 = 3 where 采购合同流水号 = @采购合同流水号
|
||||
|
||||
DECLARE @实际入库单号 NVARCHAR(100)
|
||||
DECLARE @批次号 NVARCHAR(100)
|
||||
DECLARE @标签编号 NVARCHAR(100)
|
||||
DECLARE @入库单标签流水号 INT
|
||||
DECLARE @供应商 NVARCHAR(100)
|
||||
|
||||
SET @实际入库单号 = NULLIF(LTRIM(RTRIM(@入库单号)), N'')
|
||||
|
||||
IF @实际入库单号 IS NULL
|
||||
BEGIN
|
||||
DECLARE @TodayDate VARCHAR(8) = CONVERT(VARCHAR(8), GETDATE(), 112)
|
||||
DECLARE @Sequence INT
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-09-03 14:56:40; 兼容测试库旧SQL Server版本,不使用TRY_CAST。
|
||||
SELECT @Sequence = ISNULL(MAX(CASE WHEN ISNUMERIC(RIGHT(入库单号, 3)) = 1 THEN CAST(RIGHT(入库单号, 3) AS INT) ELSE 0 END), 0) + 1
|
||||
FROM 仓储管理_入库单
|
||||
WHERE 入库单号 LIKE 'RK' + @TodayDate + CAST(@采购合同流水号 AS VARCHAR(20)) + '%'
|
||||
|
||||
SET @实际入库单号 = 'RK' + @TodayDate + CAST(@采购合同流水号 AS VARCHAR(20)) + RIGHT('000' + CAST(@Sequence AS VARCHAR(10)), 3)
|
||||
END
|
||||
|
||||
SET @批次号 = @实际入库单号
|
||||
SET @标签编号 = 'JYRK待生成'
|
||||
|
||||
SELECT TOP 1 @供应商 = 供应商名称
|
||||
FROM 采购管理_采购合同明细_视图
|
||||
WHERE 采购合同流水号 = @采购合同流水号
|
||||
|
||||
IF @供应商 IS NULL
|
||||
BEGIN
|
||||
SELECT TOP 1 @供应商 = 供应商
|
||||
FROM 采购管理_耗材采购合同明细_查询视图
|
||||
WHERE 采购合同流水号 = @采购合同流水号
|
||||
END
|
||||
|
||||
-- 声明临时表变量
|
||||
DECLARE @物料明细表 TABLE (
|
||||
RowNum INT,
|
||||
到货数 INT,
|
||||
物料流水号 INT,
|
||||
需要质检 INT
|
||||
)
|
||||
|
||||
-- 解析质检标志数组
|
||||
;WITH 质检标志表 AS (
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS RowNum,
|
||||
CAST(Value AS INT) AS 需要质检
|
||||
FROM dbo.SplitString(@质检标志组, ',')
|
||||
),
|
||||
-- 解析到货数组
|
||||
到货表 AS (
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS RowNum,
|
||||
CAST(Value AS INT) AS 到货数
|
||||
FROM dbo.SplitString(@到货数组, ',')
|
||||
),
|
||||
-- 解析物料流水号组
|
||||
物料表 AS (
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS RowNum,
|
||||
CAST(Value AS INT) AS 物料流水号
|
||||
FROM dbo.SplitString(@物料流水号组, ',')
|
||||
)
|
||||
-- 插入到物料明细表
|
||||
INSERT INTO @物料明细表
|
||||
SELECT
|
||||
到货表.RowNum,
|
||||
到货表.到货数,
|
||||
物料表.物料流水号,
|
||||
ISNULL(质检标志表.需要质检, 0) AS 需要质检
|
||||
FROM 到货表
|
||||
INNER JOIN 物料表 ON 到货表.RowNum = 物料表.RowNum
|
||||
LEFT JOIN 质检标志表 ON 到货表.RowNum = 质检标志表.RowNum
|
||||
WHERE 到货表.到货数 > 0
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-09-03 14:56:40; 先生成标签主表,明细按本次提交物料写入,扫码可直接读取。
|
||||
IF EXISTS (SELECT 1 FROM @物料明细表)
|
||||
BEGIN
|
||||
INSERT INTO dbo.仓储管理_入库单标签
|
||||
(
|
||||
标签编号,
|
||||
入库单号,
|
||||
批次号,
|
||||
采购合同流水号,
|
||||
采购合同号,
|
||||
供应商流水号,
|
||||
供应商,
|
||||
二维码内容,
|
||||
创建人
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
@标签编号,
|
||||
@实际入库单号,
|
||||
@批次号,
|
||||
@采购合同流水号,
|
||||
@采购合同,
|
||||
@供应商流水号,
|
||||
@供应商,
|
||||
N'JYRK|' + @标签编号,
|
||||
@发起人
|
||||
)
|
||||
|
||||
SET @入库单标签流水号 = SCOPE_IDENTITY()
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-09-03 14:56:40; 标签编号使用自增标签ID生成,避免同一秒并发生成重复编号。
|
||||
SET @标签编号 = 'JYRK' + RIGHT('0000000000' + CAST(@入库单标签流水号 AS VARCHAR(20)), 10)
|
||||
|
||||
UPDATE dbo.仓储管理_入库单标签
|
||||
SET 标签编号 = @标签编号,
|
||||
二维码内容 = N'JYRK|' + @标签编号
|
||||
WHERE 入库单标签流水号 = @入库单标签流水号
|
||||
|
||||
INSERT INTO dbo.仓储管理_入库单标签明细
|
||||
(
|
||||
入库单标签流水号,
|
||||
物料流水号,
|
||||
采购合同明细流水号,
|
||||
物料名称,
|
||||
图号,
|
||||
数量,
|
||||
是否需要质检
|
||||
)
|
||||
SELECT
|
||||
@入库单标签流水号,
|
||||
m.物料流水号,
|
||||
ISNULL(d1.采购合同明细流水号, d2.采购合同明细流水号),
|
||||
ISNULL(d1.物料名称, d2.采购件),
|
||||
ISNULL(d1.图号或型号, d2.图号或型号),
|
||||
m.到货数,
|
||||
m.需要质检
|
||||
FROM @物料明细表 m
|
||||
OUTER APPLY (
|
||||
SELECT TOP 1 采购合同明细流水号, 物料名称, 图号或型号
|
||||
FROM 采购管理_采购合同明细_视图
|
||||
WHERE 采购合同流水号 = @采购合同流水号
|
||||
AND 物料流水号 = m.物料流水号
|
||||
ORDER BY 采购合同明细流水号
|
||||
) d1
|
||||
OUTER APPLY (
|
||||
SELECT TOP 1 采购合同明细流水号, 采购件, 图号或型号
|
||||
FROM 采购管理_耗材采购合同明细_查询视图
|
||||
WHERE 采购合同流水号 = @采购合同流水号
|
||||
AND 物料流水号 = m.物料流水号
|
||||
ORDER BY 采购合同明细流水号
|
||||
) d2
|
||||
END
|
||||
|
||||
-- 判断是否有质检物料(需要质检的物料)
|
||||
IF EXISTS (SELECT 1 FROM @物料明细表 WHERE 需要质检 = 1)
|
||||
BEGIN
|
||||
-- 发送通知给质检部门
|
||||
INSERT INTO 采购管理_到货通知记录(通知内容,通知日期,发起人,接收角色)
|
||||
VALUES(@通知内容, GETDATE(), @发起人, 20) -- 20为质检部门角色ID
|
||||
|
||||
-- 质检物料到货记录
|
||||
INSERT INTO 采购管理_采购到货(采购合同流水号, 到货数, 物料流水号, 是否需要质检, 质检状态)
|
||||
SELECT
|
||||
@采购合同流水号,
|
||||
到货数,
|
||||
物料流水号,
|
||||
1, -- 需要质检
|
||||
'待质检'
|
||||
FROM @物料明细表
|
||||
WHERE 需要质检 = 1
|
||||
END
|
||||
|
||||
-- 判断是否有免检物料(不需要质检的物料)
|
||||
IF EXISTS (SELECT 1 FROM @物料明细表 WHERE 需要质检 = 0)
|
||||
BEGIN
|
||||
-- 发送通知给仓库部门
|
||||
INSERT INTO 采购管理_到货通知记录(通知内容,通知日期,发起人,接收角色)
|
||||
VALUES(@通知内容, GETDATE(), @发起人, 7) -- 7为仓库部门角色ID
|
||||
|
||||
-- 免检物料到货记录(直接入库)
|
||||
INSERT INTO 采购管理_采购到货(采购合同流水号,到货数,物料流水号,是否需要质检,质检状态,等待入库数量)
|
||||
SELECT
|
||||
@采购合同流水号,
|
||||
到货数,
|
||||
物料流水号,
|
||||
0, -- 不需要质检
|
||||
'已入库',
|
||||
到货数
|
||||
FROM @物料明细表
|
||||
WHERE 需要质检 = 0
|
||||
|
||||
-- 插入入库单,并生成带序号的入库单号
|
||||
INSERT INTO 仓储管理_入库单(入库单号,采购合同流水号,采购合同号,供应商流水号,供应商名称,到货数,是否入库)
|
||||
SELECT
|
||||
@实际入库单号,
|
||||
@采购合同流水号,
|
||||
@采购合同,
|
||||
@供应商流水号,
|
||||
@供应商,
|
||||
到货数,
|
||||
0
|
||||
FROM @物料明细表
|
||||
WHERE 需要质检 = 0
|
||||
END
|
||||
|
||||
-- 返回执行结果
|
||||
SELECT
|
||||
'1' AS result,
|
||||
@实际入库单号 AS 入库单号,
|
||||
@批次号 AS 批次号,
|
||||
@入库单标签流水号 AS 标签ID,
|
||||
@标签编号 AS 标签编号,
|
||||
N'JYRK|' + @标签编号 AS 二维码内容
|
||||
END
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.采购管理_入库单标签_扫码查询', N'P') IS NOT NULL
|
||||
DROP PROCEDURE dbo.采购管理_入库单标签_扫码查询
|
||||
GO
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-09-03 14:56:40; 新增扫码查询过程,扫码后按标签编号、标签ID或入库单号返回入库明细。
|
||||
CREATE PROCEDURE dbo.采购管理_入库单标签_扫码查询
|
||||
@扫码内容 NVARCHAR(500) = NULL,
|
||||
@标签ID INT = NULL,
|
||||
@入库单号 NVARCHAR(100) = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @标签编号 NVARCHAR(100)
|
||||
|
||||
SET @标签编号 = @扫码内容
|
||||
|
||||
IF @标签编号 LIKE N'JYRK|%'
|
||||
BEGIN
|
||||
SET @标签编号 = SUBSTRING(@标签编号, 6, 100)
|
||||
END
|
||||
|
||||
SELECT
|
||||
t.入库单标签流水号 AS 标签ID,
|
||||
t.标签编号,
|
||||
t.入库单号,
|
||||
t.采购合同号,
|
||||
t.供应商,
|
||||
t.批次号,
|
||||
d.物料名称,
|
||||
d.图号,
|
||||
d.数量,
|
||||
d.是否需要质检,
|
||||
t.创建时间
|
||||
FROM dbo.仓储管理_入库单标签 t
|
||||
INNER JOIN dbo.仓储管理_入库单标签明细 d
|
||||
ON t.入库单标签流水号 = d.入库单标签流水号
|
||||
WHERE t.是否启用 = 1
|
||||
AND (
|
||||
(@标签ID IS NOT NULL AND t.入库单标签流水号 = @标签ID)
|
||||
OR (ISNULL(@标签编号, N'') <> N'' AND t.标签编号 = @标签编号)
|
||||
OR (ISNULL(@入库单号, N'') <> N'' AND t.入库单号 = @入库单号)
|
||||
OR (ISNULL(@扫码内容, N'') <> N'' AND t.入库单号 = @扫码内容)
|
||||
)
|
||||
ORDER BY d.入库单标签明细流水号
|
||||
END
|
||||
GO
|
||||
Reference in New Issue
Block a user