更新设备维修、发货、精工车间工序工价/生产审核/工时统计、仓储盘点/库存查询/库位/入库,新增车间派工移动端及SQL脚本
This commit is contained in:
231
sql/生产审核_通过仅更新审核状态.sql
Normal file
231
sql/生产审核_通过仅更新审核状态.sql
Normal file
@@ -0,0 +1,231 @@
|
||||
-- 生产审核普通通过只改审核状态为已审核;修改数量/时间才修正生产完成数据。修改人:Ld 修改时间:2026-07-17 09:10:08;
|
||||
ALTER PROCEDURE [dbo].[机加工MES_加工完成整修审核_审核数据]
|
||||
@审核流水号 INT,
|
||||
@审核状态 NVARCHAR(20),
|
||||
@审核人 NVARCHAR(100) = NULL,
|
||||
@审核意见 NVARCHAR(1000) = NULL,
|
||||
@审核完成数量 FLOAT = NULL,
|
||||
@审核加工开始时间 DATETIME = NULL,
|
||||
@审核加工完成时间 DATETIME = NULL,
|
||||
@审核整修开始时间 DATETIME = NULL,
|
||||
@审核整修结束时间 DATETIME = NULL,
|
||||
@审核整修方案 NVARCHAR(1000) = NULL,
|
||||
@计价方式 NVARCHAR(20) = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @目标审核状态 NVARCHAR(20);
|
||||
DECLARE @审核类型 NVARCHAR(50);
|
||||
DECLARE @工序流水号 INT;
|
||||
DECLARE @原完成数量 FLOAT;
|
||||
DECLARE @最终完成数量 FLOAT;
|
||||
DECLARE @数量差 FLOAT;
|
||||
DECLARE @录工票人员编号 INT;
|
||||
DECLARE @工位号 NVARCHAR(100);
|
||||
DECLARE @设备流水号 INT;
|
||||
DECLARE @完成过程流水号 INT;
|
||||
DECLARE @设备号 NVARCHAR(100);
|
||||
DECLARE @整修记录id INT;
|
||||
DECLARE @整修方案 NVARCHAR(1000);
|
||||
DECLARE @Safe计价方式 NVARCHAR(20);
|
||||
DECLARE @单件工价 DECIMAL(18, 4);
|
||||
DECLARE @单时工价 DECIMAL(18, 4);
|
||||
DECLARE @是否修改加工 BIT = 0;
|
||||
DECLARE @是否修改整修 BIT = 0;
|
||||
DECLARE @是否本过程开启事务 BIT;
|
||||
|
||||
SET @目标审核状态 = CASE WHEN @审核状态 IN (N'审核通过', N'已审核') THEN N'已审核' ELSE @审核状态 END;
|
||||
|
||||
IF @目标审核状态 NOT IN (N'已审核', N'审核不通过')
|
||||
BEGIN
|
||||
SELECT N'0' AS result, N'审核状态不正确' AS message;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[MES_机加工MES_加工完成整修审核表]
|
||||
WHERE id = @审核流水号
|
||||
AND 审核状态 = N'待审核'
|
||||
)
|
||||
BEGIN
|
||||
SELECT N'0' AS result, N'该审核记录不存在或已审核' AS message;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
SELECT
|
||||
@审核类型 = 审核类型,
|
||||
@工序流水号 = 工序流水号,
|
||||
@原完成数量 = ISNULL(完成数量, 0),
|
||||
@录工票人员编号 = 录工票人员编号,
|
||||
@工位号 = 工位号,
|
||||
@设备号 = 设备号,
|
||||
@整修记录id = 整修记录id,
|
||||
@整修方案 = ISNULL(@审核整修方案, 整修方案),
|
||||
@Safe计价方式 = ISNULL(NULLIF(@计价方式, N''), ISNULL(NULLIF(计价方式, N''), N'计件')),
|
||||
@单时工价 = ISNULL(单时工价, 0)
|
||||
FROM [dbo].[MES_机加工MES_加工完成整修审核表]
|
||||
WHERE id = @审核流水号
|
||||
AND 审核状态 = N'待审核';
|
||||
|
||||
IF @Safe计价方式 NOT IN (N'计件', N'计时')
|
||||
SET @Safe计价方式 = N'计件';
|
||||
|
||||
SET @最终完成数量 = ISNULL(@审核完成数量, @原完成数量);
|
||||
SET @数量差 = ISNULL(@最终完成数量, 0) - ISNULL(@原完成数量, 0);
|
||||
SET @是否修改加工 = CASE
|
||||
WHEN @目标审核状态 = N'已审核'
|
||||
AND @审核类型 = N'加工完成'
|
||||
AND (@审核完成数量 IS NOT NULL OR @审核加工开始时间 IS NOT NULL OR @审核加工完成时间 IS NOT NULL OR @计价方式 IS NOT NULL)
|
||||
THEN 1 ELSE 0 END;
|
||||
SET @是否修改整修 = CASE
|
||||
WHEN @目标审核状态 = N'已审核'
|
||||
AND @审核类型 = N'结束整修'
|
||||
AND (@审核整修开始时间 IS NOT NULL OR @审核整修结束时间 IS NOT NULL OR @审核整修方案 IS NOT NULL)
|
||||
THEN 1 ELSE 0 END;
|
||||
|
||||
IF @是否修改加工 = 1 AND (@最终完成数量 < 0 OR @最终完成数量 <> FLOOR(@最终完成数量))
|
||||
BEGIN
|
||||
SELECT N'0' AS result, N'完成数量必须为大于等于 0 的整数' AS message;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
SELECT TOP 1 @单件工价 = CASE
|
||||
WHEN ISNULL(price.[单件工价], 0) <> 0 THEN price.[单件工价]
|
||||
ELSE ISNULL(price.[最终单价(元/件)], 0)
|
||||
END
|
||||
FROM [dbo].[车间生产管理工艺_工序工价] price
|
||||
WHERE price.工序流水号 = @工序流水号
|
||||
AND ISNULL(price.是否启用, 1) = 1
|
||||
ORDER BY ISNULL(price.生效日期, CONVERT(DATE, '1900-01-01')) DESC, price.修改时间 DESC, price.工价流水号 DESC;
|
||||
|
||||
SET @单件工价 = ISNULL(@单件工价, 0);
|
||||
SET @单时工价 = ISNULL(@单时工价, 0);
|
||||
|
||||
BEGIN TRY
|
||||
SET @是否本过程开启事务 = CASE WHEN @@TRANCOUNT = 0 THEN 1 ELSE 0 END;
|
||||
IF @是否本过程开启事务 = 1
|
||||
BEGIN TRAN;
|
||||
ELSE
|
||||
SAVE TRAN 生产完成审核保存点;
|
||||
|
||||
IF @是否修改加工 = 1
|
||||
BEGIN
|
||||
SELECT @设备流水号 = [设备流水号]
|
||||
FROM [dbo].[基础数据_设备工位点检表]
|
||||
WHERE [工位号] = @工位号;
|
||||
|
||||
SELECT TOP 1 @完成过程流水号 = [完成过程流水号]
|
||||
FROM [dbo].[设备管理_零件工序_工序完成过程情况]
|
||||
WHERE [工序流水号] = @工序流水号
|
||||
AND [录工票人员编号] = @录工票人员编号
|
||||
AND [工位号] = @工位号
|
||||
AND [完成数量] = @原完成数量
|
||||
ORDER BY [完成过程流水号] DESC;
|
||||
|
||||
IF @完成过程流水号 IS NULL
|
||||
BEGIN
|
||||
SELECT TOP 1 @完成过程流水号 = [完成过程流水号]
|
||||
FROM [dbo].[设备管理_零件工序_工序完成过程情况]
|
||||
WHERE [工序流水号] = @工序流水号
|
||||
AND [录工票人员编号] = @录工票人员编号
|
||||
AND [工位号] = @工位号
|
||||
ORDER BY [完成过程流水号] DESC;
|
||||
END;
|
||||
|
||||
IF @完成过程流水号 IS NULL
|
||||
BEGIN
|
||||
IF @是否本过程开启事务 = 1 ROLLBACK TRAN ELSE ROLLBACK TRAN 生产完成审核保存点;
|
||||
SELECT N'0' AS result, N'未找到对应生产完成记录' AS message;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
UPDATE [dbo].[设备管理_零件工序_工序完成过程情况]
|
||||
SET [完成数量] = @最终完成数量,
|
||||
[加工开始时间] = ISNULL(@审核加工开始时间, [加工开始时间]),
|
||||
[加工完成时间] = ISNULL(@审核加工完成时间, [加工完成时间]),
|
||||
[完成日期] = CASE WHEN @审核加工完成时间 IS NULL THEN [完成日期] ELSE CONVERT(DATE, @审核加工完成时间) END,
|
||||
[操作日期] = ISNULL(@审核加工完成时间, [操作日期]),
|
||||
[计价方式] = @Safe计价方式,
|
||||
[单件工价] = @单件工价,
|
||||
[单时工价] = CASE WHEN @Safe计价方式 = N'计时' THEN ISNULL([单时工价], @单时工价) ELSE 0 END,
|
||||
[修改人员] = CASE WHEN ISNUMERIC(@审核人) = 1 THEN CAST(@审核人 AS INT) ELSE [修改人员] END,
|
||||
[修改时间] = GETDATE()
|
||||
WHERE [完成过程流水号] = @完成过程流水号;
|
||||
|
||||
IF ISNULL(@数量差, 0) <> 0
|
||||
BEGIN
|
||||
UPDATE [dbo].[车间生产管理工艺_零件工序]
|
||||
SET [完成数量] = ISNULL([完成数量], 0) + @数量差
|
||||
WHERE [工序流水号] = @工序流水号;
|
||||
|
||||
UPDATE [dbo].[车间生产管理工艺_零件工序_任务分配]
|
||||
SET [加工数量] = ISNULL([加工数量], 0) + @数量差
|
||||
WHERE [工序流水号] = @工序流水号
|
||||
AND [人员编号] = @录工票人员编号
|
||||
AND [设备流水号] = @设备流水号;
|
||||
END;
|
||||
|
||||
IF @审核加工完成时间 IS NOT NULL
|
||||
BEGIN
|
||||
UPDATE [dbo].[车间生产管理工艺_零件工序]
|
||||
SET [完成日期] = @审核加工完成时间
|
||||
WHERE [工序流水号] = @工序流水号;
|
||||
END;
|
||||
END;
|
||||
|
||||
IF @是否修改整修 = 1
|
||||
BEGIN
|
||||
UPDATE [dbo].[设备管理_整修]
|
||||
SET [整修开始时间] = CASE WHEN @审核整修开始时间 IS NULL THEN [整修开始时间] ELSE CONVERT(VARCHAR(20), @审核整修开始时间, 120) END,
|
||||
[整修结束时间] = CASE WHEN @审核整修结束时间 IS NULL THEN [整修结束时间] ELSE CONVERT(VARCHAR(20), @审核整修结束时间, 120) END,
|
||||
[整修方案] = @整修方案
|
||||
WHERE [id] = @整修记录id
|
||||
AND [设备号] = @设备号;
|
||||
END;
|
||||
|
||||
UPDATE [dbo].[MES_机加工MES_加工完成整修审核表]
|
||||
SET [审核状态] = @目标审核状态,
|
||||
[审核人] = @审核人,
|
||||
[审核时间] = GETDATE(),
|
||||
[审核意见] = ISNULL(@审核意见, N''),
|
||||
[完成数量] = CASE WHEN @是否修改加工 = 1 THEN @最终完成数量 ELSE [完成数量] END,
|
||||
[开始时间] = CASE
|
||||
WHEN @是否修改加工 = 1 AND @审核加工开始时间 IS NOT NULL THEN @审核加工开始时间
|
||||
WHEN @是否修改整修 = 1 AND @审核整修开始时间 IS NOT NULL THEN @审核整修开始时间
|
||||
ELSE [开始时间]
|
||||
END,
|
||||
[结束时间] = CASE
|
||||
WHEN @是否修改加工 = 1 AND @审核加工完成时间 IS NOT NULL THEN @审核加工完成时间
|
||||
WHEN @是否修改整修 = 1 AND @审核整修结束时间 IS NOT NULL THEN @审核整修结束时间
|
||||
ELSE [结束时间]
|
||||
END,
|
||||
[整修方案] = CASE WHEN @是否修改整修 = 1 THEN @整修方案 ELSE [整修方案] END,
|
||||
[计价方式] = CASE WHEN @是否修改加工 = 1 THEN @Safe计价方式 ELSE [计价方式] END,
|
||||
[单件工价] = CASE WHEN @是否修改加工 = 1 THEN @单件工价 ELSE [单件工价] END,
|
||||
[单时工价] = CASE WHEN @是否修改加工 = 1 THEN @单时工价 ELSE [单时工价] END,
|
||||
[修改人] = N'Ld',
|
||||
[修改时间] = GETDATE()
|
||||
WHERE [id] = @审核流水号
|
||||
AND [审核状态] = N'待审核';
|
||||
|
||||
IF @是否本过程开启事务 = 1
|
||||
COMMIT TRAN;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF @@TRANCOUNT > 0
|
||||
BEGIN
|
||||
IF ISNULL(@是否本过程开启事务, 1) = 1
|
||||
ROLLBACK TRAN;
|
||||
ELSE
|
||||
ROLLBACK TRAN 生产完成审核保存点;
|
||||
END;
|
||||
|
||||
SELECT N'0' AS result, ERROR_MESSAGE() AS message;
|
||||
RETURN;
|
||||
END CATCH;
|
||||
|
||||
SELECT N'1' AS result;
|
||||
END;
|
||||
GO
|
||||
Reference in New Issue
Block a user