更新webpack配置、精工车间工序工价/生产计划/派工及移动端界面,新增菜单迁移与工价公式调整SQL脚本

This commit is contained in:
Developer
2026-08-08 16:02:24 +08:00
parent fd84f9d3ca
commit 9fc3aae3e9
15 changed files with 2007 additions and 97 deletions

View File

@@ -0,0 +1,286 @@
USE [ERPTOOL_JY_20250826Back]
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+DI=F*3600/E*AJ=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