更新webpack配置、精工车间工序工价/生产计划/派工及移动端界面,新增菜单迁移与工价公式调整SQL脚本
This commit is contained in:
287
sql/工序工价_公式调整_正式库_20260808.sql
Normal file
287
sql/工序工价_公式调整_正式库_20260808.sql
Normal file
@@ -0,0 +1,287 @@
|
||||
USE [ERPTOOL_JY]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
-- 工序工价编辑保存公式输入 F、G、H,并由触发器统一计算 I、J;修改人:Ld 修改时间:2026-08-08 10:24:44;
|
||||
ALTER PROCEDURE [dbo].[车间生产管理工艺_工序工价_编辑数据]
|
||||
@工价流水号 NVARCHAR(50) = N'',
|
||||
@工艺名称 NVARCHAR(100) = N'',
|
||||
@工序名称 NVARCHAR(100) = N'',
|
||||
@零件名称 NVARCHAR(100) = N'',
|
||||
@图号 NVARCHAR(100) = N'',
|
||||
@机动时间s NVARCHAR(50) = N'',
|
||||
@辅助时间s NVARCHAR(50) = N'',
|
||||
@总时间s NVARCHAR(50) = N'',
|
||||
@单装数量件 NVARCHAR(50) = N'',
|
||||
@操作台数 NVARCHAR(50) = N'',
|
||||
@日产能件 NVARCHAR(50) = N'',
|
||||
@最终单价元件 NVARCHAR(50) = N'',
|
||||
@生效日期 NVARCHAR(50) = N'',
|
||||
@变更次数 NVARCHAR(50) = N'',
|
||||
@是否启用 NVARCHAR(20) = N'',
|
||||
@备注 NVARCHAR(500) = N'',
|
||||
@工序流水号 NVARCHAR(50) = N'',
|
||||
@修改人 NVARCHAR(50) = N'',
|
||||
@工作时间时 NVARCHAR(50) = N'',
|
||||
@宽放时间时 NVARCHAR(50) = N'',
|
||||
@日工资元 NVARCHAR(50) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @Id INT;
|
||||
DECLARE @Safe工序流水号 INT;
|
||||
DECLARE @Safe机动时间s DECIMAL(18, 4);
|
||||
DECLARE @Safe辅助时间s DECIMAL(18, 4);
|
||||
DECLARE @Safe总时间s DECIMAL(18, 4);
|
||||
DECLARE @Safe单装数量件 DECIMAL(18, 4);
|
||||
DECLARE @Safe操作台数 DECIMAL(18, 4);
|
||||
DECLARE @Safe日产能件 DECIMAL(18, 4);
|
||||
DECLARE @Safe最终单价元件 DECIMAL(18, 4);
|
||||
DECLARE @Safe工作时间时 DECIMAL(18, 4);
|
||||
DECLARE @Safe宽放时间时 DECIMAL(18, 4);
|
||||
DECLARE @Safe日工资元 DECIMAL(18, 4);
|
||||
DECLARE @Safe生效日期 DATE;
|
||||
DECLARE @Safe变更次数 INT;
|
||||
DECLARE @Safe是否启用 BIT = CASE WHEN NULLIF(@是否启用, N'') IS NULL THEN 1 WHEN @是否启用 = N'1' THEN 1 ELSE 0 END;
|
||||
DECLARE @操作人 NVARCHAR(50) = NULLIF(@修改人, N'');
|
||||
DECLARE @当前时间 DATETIME = GETDATE();
|
||||
DECLARE @旧数据 NVARCHAR(MAX);
|
||||
DECLARE @新数据 NVARCHAR(MAX);
|
||||
DECLARE @Old工序流水号 INT;
|
||||
|
||||
SET @Id = CASE WHEN ISNUMERIC(NULLIF(@工价流水号, N'')) = 1 THEN CONVERT(INT, @工价流水号) ELSE NULL END;
|
||||
SET @Safe工序流水号 = CASE WHEN ISNUMERIC(NULLIF(@工序流水号, N'')) = 1 THEN CONVERT(INT, @工序流水号) ELSE NULL END;
|
||||
SET @Safe机动时间s = CASE WHEN ISNUMERIC(NULLIF(@机动时间s, N'')) = 1 THEN CONVERT(DECIMAL(18, 4), @机动时间s) ELSE 0 END;
|
||||
SET @Safe辅助时间s = CASE WHEN ISNUMERIC(NULLIF(@辅助时间s, N'')) = 1 THEN CONVERT(DECIMAL(18, 4), @辅助时间s) ELSE 0 END;
|
||||
-- 修改人:Ld 修改时间:2026-08-08 10:24:44; E 固定按 C+D 计算,不使用前端传入的总时间
|
||||
SET @Safe总时间s = @Safe机动时间s + @Safe辅助时间s;
|
||||
SET @Safe单装数量件 = CASE WHEN ISNUMERIC(NULLIF(@单装数量件, N'')) = 1 THEN CONVERT(DECIMAL(18, 4), @单装数量件) ELSE 0 END;
|
||||
SET @Safe操作台数 = CASE WHEN ISNUMERIC(NULLIF(@操作台数, N'')) = 1 THEN CONVERT(DECIMAL(18, 4), @操作台数) ELSE 0 END;
|
||||
SET @Safe日产能件 = CASE WHEN ISNUMERIC(NULLIF(@日产能件, N'')) = 1 THEN CONVERT(DECIMAL(18, 4), @日产能件) ELSE 0 END;
|
||||
SET @Safe最终单价元件 = CASE WHEN ISNUMERIC(NULLIF(@最终单价元件, N'')) = 1 THEN CONVERT(DECIMAL(18, 4), @最终单价元件) ELSE 0 END;
|
||||
-- 修改人:Ld 修改时间:2026-08-08 10:24:44; 兼容旧接口未传 F、G、H 时,按新公式反推输入字段
|
||||
SET @Safe工作时间时 = CASE
|
||||
WHEN ISNUMERIC(NULLIF(@工作时间时, N'')) = 1 THEN CONVERT(DECIMAL(18, 4), @工作时间时)
|
||||
WHEN @Safe日产能件 <> 0 AND @Safe总时间s <> 0 AND @Safe单装数量件 <> 0
|
||||
THEN @Safe日产能件 * @Safe总时间s / (3600 * @Safe单装数量件)
|
||||
ELSE 0
|
||||
END;
|
||||
SET @Safe宽放时间时 = CASE WHEN ISNUMERIC(NULLIF(@宽放时间时, N'')) = 1 THEN CONVERT(DECIMAL(18, 4), @宽放时间时) ELSE 0 END;
|
||||
SET @Safe日工资元 = CASE
|
||||
WHEN ISNUMERIC(NULLIF(@日工资元, N'')) = 1 THEN CONVERT(DECIMAL(18, 4), @日工资元)
|
||||
WHEN @Safe最终单价元件 <> 0 AND @Safe日产能件 <> 0 AND @Safe操作台数 <> 0
|
||||
THEN @Safe最终单价元件 * @Safe操作台数 * @Safe日产能件
|
||||
ELSE 0
|
||||
END;
|
||||
SET @Safe生效日期 = CASE WHEN ISDATE(NULLIF(@生效日期, N'')) = 1 THEN CONVERT(DATE, @生效日期) ELSE NULL END;
|
||||
SET @Safe变更次数 = CASE WHEN ISNUMERIC(NULLIF(@变更次数, N'')) = 1 THEN CONVERT(INT, @变更次数) ELSE 0 END;
|
||||
|
||||
IF @Safe工序流水号 IS NULL
|
||||
BEGIN
|
||||
SELECT N'0' AS result, N'工序流水号不能为空' AS message;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF NULLIF(LTRIM(RTRIM(@工艺名称)), N'') IS NULL
|
||||
OR NULLIF(LTRIM(RTRIM(@工序名称)), N'') IS NULL
|
||||
OR NULLIF(LTRIM(RTRIM(@零件名称)), N'') IS NULL
|
||||
OR NULLIF(LTRIM(RTRIM(@图号)), N'') IS NULL
|
||||
BEGIN
|
||||
SELECT N'0' AS result, N'工艺名称、工序名称、零件名称和图号不能为空' AS message;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF @Id IS NULL
|
||||
BEGIN
|
||||
SELECT TOP 1 @Id = 工价流水号
|
||||
FROM [dbo].[车间生产管理工艺_工序工价]
|
||||
WHERE 工序流水号 = @Safe工序流水号;
|
||||
END;
|
||||
|
||||
IF @Id IS NOT NULL
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[车间生产管理工艺_工序工价]
|
||||
WHERE 工价流水号 = @Id
|
||||
)
|
||||
BEGIN
|
||||
SELECT N'0' AS result, N'工序工价记录不存在' AS message;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRAN;
|
||||
|
||||
IF @Id IS NOT NULL
|
||||
BEGIN
|
||||
SELECT
|
||||
@Old工序流水号 = 工序流水号,
|
||||
@旧数据 = [dbo].[车间生产管理工艺_工序工价_历史快照](
|
||||
[机动时间s],
|
||||
[辅助时间s],
|
||||
[总时间s],
|
||||
[单装数量(件)],
|
||||
[操作台数],
|
||||
[日产能(件)],
|
||||
[最终单价(元/件)],
|
||||
生效日期,
|
||||
变更次数
|
||||
)
|
||||
FROM [dbo].[车间生产管理工艺_工序工价]
|
||||
WHERE 工价流水号 = @Id;
|
||||
|
||||
UPDATE [dbo].[车间生产管理工艺_工序工价]
|
||||
SET 工序流水号 = @Safe工序流水号,
|
||||
工艺名称 = LTRIM(RTRIM(@工艺名称)),
|
||||
工序名称 = LTRIM(RTRIM(@工序名称)),
|
||||
零件名称 = LTRIM(RTRIM(@零件名称)),
|
||||
图号 = LTRIM(RTRIM(@图号)),
|
||||
[机动时间s] = @Safe机动时间s,
|
||||
[辅助时间s] = @Safe辅助时间s,
|
||||
[总时间s] = @Safe总时间s,
|
||||
[单装数量(件)] = @Safe单装数量件,
|
||||
[操作台数] = @Safe操作台数,
|
||||
[日产能(件)] = @Safe日产能件,
|
||||
[最终单价(元/件)] = @Safe最终单价元件,
|
||||
[工作时间(时)] = @Safe工作时间时,
|
||||
[宽放时间(时)] = @Safe宽放时间时,
|
||||
[日工资(元)] = @Safe日工资元,
|
||||
生效日期 = @Safe生效日期,
|
||||
变更次数 = @Safe变更次数,
|
||||
是否启用 = @Safe是否启用,
|
||||
备注 = NULLIF(@备注, N''),
|
||||
计价方式 = N'按件',
|
||||
单件工价 = @Safe最终单价元件,
|
||||
修改人 = @操作人,
|
||||
修改时间 = @当前时间
|
||||
WHERE 工价流水号 = @Id;
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
INSERT INTO [dbo].[车间生产管理工艺_工序工价](
|
||||
工序流水号, 工艺名称, 工序名称, 零件名称, 图号,
|
||||
[机动时间s], [辅助时间s], [总时间s], [单装数量(件)], [操作台数],
|
||||
[日产能(件)], [最终单价(元/件)], [工作时间(时)], [宽放时间(时)], [日工资(元)],
|
||||
生效日期, 变更次数, 是否启用, 备注,
|
||||
创建人, 创建时间, 修改人, 修改时间, 计价方式, 单件工价
|
||||
)
|
||||
VALUES (
|
||||
@Safe工序流水号, LTRIM(RTRIM(@工艺名称)), LTRIM(RTRIM(@工序名称)), LTRIM(RTRIM(@零件名称)), LTRIM(RTRIM(@图号)),
|
||||
@Safe机动时间s, @Safe辅助时间s, @Safe总时间s, @Safe单装数量件, @Safe操作台数,
|
||||
@Safe日产能件, @Safe最终单价元件, @Safe工作时间时, @Safe宽放时间时, @Safe日工资元,
|
||||
@Safe生效日期, @Safe变更次数, @Safe是否启用, NULLIF(@备注, N''),
|
||||
@操作人, @当前时间, @操作人, @当前时间, N'按件', @Safe最终单价元件
|
||||
);
|
||||
|
||||
SET @Id = SCOPE_IDENTITY();
|
||||
SET @Old工序流水号 = @Safe工序流水号;
|
||||
SET @旧数据 = N'';
|
||||
END;
|
||||
|
||||
SET @新数据 = [dbo].[车间生产管理工艺_工序工价_历史快照](
|
||||
@Safe机动时间s, @Safe辅助时间s, @Safe总时间s, @Safe单装数量件, @Safe操作台数,
|
||||
@Safe日产能件, @Safe最终单价元件, @Safe生效日期, @Safe变更次数
|
||||
);
|
||||
|
||||
INSERT INTO [dbo].[车间生产管理工艺_工序工价历史记录](
|
||||
工价流水号, 工序流水号, 工艺名称, 工序名称, 零件名称, 图号,
|
||||
操作类型, 变更前, 变更后, 操作人, 操作时间, 备注
|
||||
)
|
||||
VALUES (
|
||||
@Id, ISNULL(@Safe工序流水号, @Old工序流水号), LTRIM(RTRIM(@工艺名称)), LTRIM(RTRIM(@工序名称)),
|
||||
LTRIM(RTRIM(@零件名称)), LTRIM(RTRIM(@图号)), CASE WHEN @旧数据 = N'' THEN N'新增' ELSE N'编辑' END,
|
||||
@旧数据, @新数据, @操作人, @当前时间, NULLIF(@备注, N'')
|
||||
);
|
||||
|
||||
COMMIT TRAN;
|
||||
SELECT N'1' AS result, @Id AS 工价流水号;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF @@TRANCOUNT > 0
|
||||
ROLLBACK TRAN;
|
||||
SELECT N'0' AS result, ERROR_MESSAGE() AS message;
|
||||
END CATCH;
|
||||
END
|
||||
GO
|
||||
|
||||
-- 工序工价字段公式:E=C+D,I=F*3600/E*A,J=H/B/I;修改人:Ld 修改时间:2026-08-08 10:24:44;
|
||||
IF OBJECT_ID(N'[dbo].[TR_车间生产管理工艺_工序工价_字段公式计算]', N'TR') IS NOT NULL
|
||||
DROP TRIGGER [dbo].[TR_车间生产管理工艺_工序工价_字段公式计算];
|
||||
GO
|
||||
|
||||
CREATE TRIGGER [dbo].[TR_车间生产管理工艺_工序工价_字段公式计算]
|
||||
ON [dbo].[车间生产管理工艺_工序工价]
|
||||
AFTER INSERT, UPDATE
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF TRIGGER_NESTLEVEL() > 1
|
||||
RETURN;
|
||||
|
||||
;WITH FormulaSource AS (
|
||||
SELECT
|
||||
price.工价流水号,
|
||||
ISNULL(price.[机动时间s], 0) + ISNULL(price.[辅助时间s], 0) AS 总时间s,
|
||||
ISNULL(price.[单装数量(件)], 0) AS 单装数量件,
|
||||
ISNULL(price.[操作台数], 0) AS 操作台数,
|
||||
-- 修改人:Ld 修改时间:2026-08-08 10:24:44; F 优先保存页面输入,旧接口仅传日产能时按 I=F*3600/E*A 反推
|
||||
CASE
|
||||
WHEN ISNULL(price.[工作时间(时)], 0) <> 0 THEN ISNULL(price.[工作时间(时)], 0)
|
||||
WHEN ISNULL(price.[日产能(件)], 0) <> 0
|
||||
AND ISNULL(price.[机动时间s], 0) + ISNULL(price.[辅助时间s], 0) <> 0
|
||||
AND ISNULL(price.[单装数量(件)], 0) <> 0
|
||||
THEN ISNULL(price.[日产能(件)], 0) * (ISNULL(price.[机动时间s], 0) + ISNULL(price.[辅助时间s], 0)) / (3600 * ISNULL(price.[单装数量(件)], 0))
|
||||
ELSE 0
|
||||
END AS 工作时间时,
|
||||
ISNULL(price.[宽放时间(时)], 0) AS 宽放时间时,
|
||||
-- 修改人:Ld 修改时间:2026-08-08 10:24:44; H 优先保存页面输入,旧接口仅传工价定额时按 J=H/B/I 反推
|
||||
CASE
|
||||
WHEN ISNULL(price.[日工资(元)], 0) <> 0 THEN ISNULL(price.[日工资(元)], 0)
|
||||
WHEN ISNULL(price.[最终单价(元/件)], 0) <> 0
|
||||
AND ISNULL(price.[日产能(件)], 0) <> 0
|
||||
AND ISNULL(price.[操作台数], 0) <> 0
|
||||
THEN ISNULL(price.[最终单价(元/件)], 0) * ISNULL(price.[操作台数], 0) * ISNULL(price.[日产能(件)], 0)
|
||||
ELSE 0
|
||||
END AS 日工资元
|
||||
FROM [dbo].[车间生产管理工艺_工序工价] price
|
||||
INNER JOIN inserted i ON price.工价流水号 = i.工价流水号
|
||||
),
|
||||
FormulaResult AS (
|
||||
SELECT
|
||||
工价流水号,
|
||||
总时间s,
|
||||
工作时间时,
|
||||
宽放时间时,
|
||||
日工资元,
|
||||
单装数量件,
|
||||
操作台数,
|
||||
CASE WHEN 总时间s <> 0 THEN 工作时间时 * 3600 / 总时间s * 单装数量件 ELSE 0 END AS 标准产能件天
|
||||
FROM FormulaSource
|
||||
)
|
||||
UPDATE price
|
||||
SET price.[总时间s] = calc.总时间s,
|
||||
price.[工作时间(时)] = calc.工作时间时,
|
||||
price.[宽放时间(时)] = calc.宽放时间时,
|
||||
price.[日工资(元)] = calc.日工资元,
|
||||
price.[标准产能(件/天)] = calc.标准产能件天,
|
||||
price.[工价定额] = CASE WHEN calc.操作台数 <> 0 AND calc.标准产能件天 <> 0 THEN calc.日工资元 / calc.操作台数 / calc.标准产能件天 ELSE 0 END,
|
||||
price.[日产能(件)] = calc.标准产能件天,
|
||||
price.[最终单价(元/件)] = CASE WHEN calc.操作台数 <> 0 AND calc.标准产能件天 <> 0 THEN calc.日工资元 / calc.操作台数 / calc.标准产能件天 ELSE 0 END,
|
||||
price.单件工价 = CASE WHEN calc.操作台数 <> 0 AND calc.标准产能件天 <> 0 THEN calc.日工资元 / calc.操作台数 / calc.标准产能件天 ELSE 0 END
|
||||
FROM [dbo].[车间生产管理工艺_工序工价] price
|
||||
INNER JOIN FormulaResult calc ON price.工价流水号 = calc.工价流水号;
|
||||
END
|
||||
GO
|
||||
|
||||
-- 按新公式回算测试库现有数据;修改人:Ld 修改时间:2026-08-08 10:24:44;
|
||||
UPDATE [dbo].[车间生产管理工艺_工序工价]
|
||||
SET [工作时间(时)] = [工作时间(时)];
|
||||
GO
|
||||
|
||||
Reference in New Issue
Block a user