更新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,592 @@
/* 修改人:Ld 修改时间:2026-08-06 09:50:27; 在测试库新增ERP经营管理、MES制造执行、PLM产品生产周期、QMS质量管理、WMS仓储管理、APS计划排产一级菜单并给系统管理角色2追加权限 */
SET XACT_ABORT ON;
BEGIN TRAN;
DECLARE @RoleId INT = 2;
DECLARE @ModuleId INT;
/* ERP经营管理 */
SET @ModuleId = NULL;
SELECT @ModuleId = id
FROM dbo._模块信息
WHERE title = N'ERP经营管理'
AND [path] = N'/';
IF @ModuleId IS NULL
BEGIN
INSERT INTO dbo._模块信息
(
[path],
component,
redirect,
name,
title,
icon,
,
,
,
dashboardIcon,
)
VALUES
(
N'/',
N'/layout/Layout',
NULL,
N'ERPManagement',
N'ERP经营管理',
N'SystemRrolemaintenance',
NULL,
NULL,
NULL,
NULL,
0
);
SET @ModuleId = SCOPE_IDENTITY();
END
ELSE
BEGIN
UPDATE dbo._模块信息
SET component = N'/layout/Layout',
redirect = NULL,
name = N'ERPManagement',
title = N'ERP经营管理',
icon = N'SystemRrolemaintenance',
= 0
WHERE id = @ModuleId;
END;
IF NOT EXISTS
(
SELECT 1
FROM dbo._角色模块信息
WHERE id = @ModuleId
AND pid = 0
AND = @RoleId
)
BEGIN
INSERT INTO dbo._角色模块信息
(
id,
pid,
,
,
,
)
SELECT
@ModuleId,
0,
@ModuleId,
@RoleId,
1,
ISNULL(MAX(), 0) + 1
FROM dbo._角色模块信息
WHERE = @RoleId
AND pid = 0;
END
ELSE
BEGIN
UPDATE dbo._角色模块信息
SET = 1
WHERE id = @ModuleId
AND pid = 0
AND = @RoleId;
END;
/* MES制造执行 */
SET @ModuleId = NULL;
SELECT @ModuleId = id
FROM dbo._模块信息
WHERE title = N'MES制造执行'
AND [path] = N'/';
IF @ModuleId IS NULL
BEGIN
INSERT INTO dbo._模块信息
(
[path],
component,
redirect,
name,
title,
icon,
,
,
,
dashboardIcon,
)
VALUES
(
N'/',
N'/layout/Layout',
NULL,
N'MESExecution',
N'MES制造执行',
N'车间',
NULL,
NULL,
NULL,
NULL,
0
);
SET @ModuleId = SCOPE_IDENTITY();
END
ELSE
BEGIN
UPDATE dbo._模块信息
SET component = N'/layout/Layout',
redirect = NULL,
name = N'MESExecution',
title = N'MES制造执行',
icon = N'车间',
= 0
WHERE id = @ModuleId;
END;
IF NOT EXISTS
(
SELECT 1
FROM dbo._角色模块信息
WHERE id = @ModuleId
AND pid = 0
AND = @RoleId
)
BEGIN
INSERT INTO dbo._角色模块信息
(
id,
pid,
,
,
,
)
SELECT
@ModuleId,
0,
@ModuleId,
@RoleId,
1,
ISNULL(MAX(), 0) + 1
FROM dbo._角色模块信息
WHERE = @RoleId
AND pid = 0;
END
ELSE
BEGIN
UPDATE dbo._角色模块信息
SET = 1
WHERE id = @ModuleId
AND pid = 0
AND = @RoleId;
END;
/* PLM产品生产周期 */
SET @ModuleId = NULL;
SELECT @ModuleId = id
FROM dbo._模块信息
WHERE title = N'PLM产品生产周期'
AND [path] = N'/';
IF @ModuleId IS NULL
BEGIN
INSERT INTO dbo._模块信息
(
[path],
component,
redirect,
name,
title,
icon,
,
,
,
dashboardIcon,
)
VALUES
(
N'/',
N'/layout/Layout',
NULL,
N'PLMProductLifecycle',
N'PLM产品生产周期',
N'ProductMaintenance',
NULL,
NULL,
NULL,
NULL,
0
);
SET @ModuleId = SCOPE_IDENTITY();
END
ELSE
BEGIN
UPDATE dbo._模块信息
SET component = N'/layout/Layout',
redirect = NULL,
name = N'PLMProductLifecycle',
title = N'PLM产品生产周期',
icon = N'ProductMaintenance',
= 0
WHERE id = @ModuleId;
END;
IF NOT EXISTS
(
SELECT 1
FROM dbo._角色模块信息
WHERE id = @ModuleId
AND pid = 0
AND = @RoleId
)
BEGIN
INSERT INTO dbo._角色模块信息
(
id,
pid,
,
,
,
)
SELECT
@ModuleId,
0,
@ModuleId,
@RoleId,
1,
ISNULL(MAX(), 0) + 1
FROM dbo._角色模块信息
WHERE = @RoleId
AND pid = 0;
END
ELSE
BEGIN
UPDATE dbo._角色模块信息
SET = 1
WHERE id = @ModuleId
AND pid = 0
AND = @RoleId;
END;
/* QMS质量管理 */
SET @ModuleId = NULL;
SELECT @ModuleId = id
FROM dbo._模块信息
WHERE title = N'QMS质量管理'
AND [path] = N'/';
IF @ModuleId IS NULL
BEGIN
INSERT INTO dbo._模块信息
(
[path],
component,
redirect,
name,
title,
icon,
,
,
,
dashboardIcon,
)
VALUES
(
N'/',
N'/layout/Layout',
NULL,
N'QMSQualityManagement',
N'QMS质量管理',
N'QualityInspectionQuery',
NULL,
NULL,
NULL,
NULL,
0
);
SET @ModuleId = SCOPE_IDENTITY();
END
ELSE
BEGIN
UPDATE dbo._模块信息
SET component = N'/layout/Layout',
redirect = NULL,
name = N'QMSQualityManagement',
title = N'QMS质量管理',
icon = N'QualityInspectionQuery',
= 0
WHERE id = @ModuleId;
END;
IF NOT EXISTS
(
SELECT 1
FROM dbo._角色模块信息
WHERE id = @ModuleId
AND pid = 0
AND = @RoleId
)
BEGIN
INSERT INTO dbo._角色模块信息
(
id,
pid,
,
,
,
)
SELECT
@ModuleId,
0,
@ModuleId,
@RoleId,
1,
ISNULL(MAX(), 0) + 1
FROM dbo._角色模块信息
WHERE = @RoleId
AND pid = 0;
END
ELSE
BEGIN
UPDATE dbo._角色模块信息
SET = 1
WHERE id = @ModuleId
AND pid = 0
AND = @RoleId;
END;
/* WMS仓储管理 */
SET @ModuleId = NULL;
SELECT @ModuleId = id
FROM dbo._模块信息
WHERE title = N'WMS仓储管理'
AND [path] = N'/';
IF @ModuleId IS NULL
BEGIN
INSERT INTO dbo._模块信息
(
[path],
component,
redirect,
name,
title,
icon,
,
,
,
dashboardIcon,
)
VALUES
(
N'/',
N'/layout/Layout',
NULL,
N'WMSWarehouseManagement',
N'WMS仓储管理',
N'仓储管理',
NULL,
NULL,
NULL,
NULL,
0
);
SET @ModuleId = SCOPE_IDENTITY();
END
ELSE
BEGIN
UPDATE dbo._模块信息
SET component = N'/layout/Layout',
redirect = NULL,
name = N'WMSWarehouseManagement',
title = N'WMS仓储管理',
icon = N'仓储管理',
= 0
WHERE id = @ModuleId;
END;
IF NOT EXISTS
(
SELECT 1
FROM dbo._角色模块信息
WHERE id = @ModuleId
AND pid = 0
AND = @RoleId
)
BEGIN
INSERT INTO dbo._角色模块信息
(
id,
pid,
,
,
,
)
SELECT
@ModuleId,
0,
@ModuleId,
@RoleId,
1,
ISNULL(MAX(), 0) + 1
FROM dbo._角色模块信息
WHERE = @RoleId
AND pid = 0;
END
ELSE
BEGIN
UPDATE dbo._角色模块信息
SET = 1
WHERE id = @ModuleId
AND pid = 0
AND = @RoleId;
END;
/* APS计划排产 */
SET @ModuleId = NULL;
SELECT @ModuleId = id
FROM dbo._模块信息
WHERE title = N'APS计划排产'
AND [path] = N'/';
IF @ModuleId IS NULL
BEGIN
INSERT INTO dbo._模块信息
(
[path],
component,
redirect,
name,
title,
icon,
,
,
,
dashboardIcon,
)
VALUES
(
N'/',
N'/layout/Layout',
NULL,
N'APSPlanScheduling',
N'APS计划排产',
N'ShopScheduling',
NULL,
NULL,
NULL,
NULL,
0
);
SET @ModuleId = SCOPE_IDENTITY();
END
ELSE
BEGIN
UPDATE dbo._模块信息
SET component = N'/layout/Layout',
redirect = NULL,
name = N'APSPlanScheduling',
title = N'APS计划排产',
icon = N'ShopScheduling',
= 0
WHERE id = @ModuleId;
END;
IF NOT EXISTS
(
SELECT 1
FROM dbo._角色模块信息
WHERE id = @ModuleId
AND pid = 0
AND = @RoleId
)
BEGIN
INSERT INTO dbo._角色模块信息
(
id,
pid,
,
,
,
)
SELECT
@ModuleId,
0,
@ModuleId,
@RoleId,
1,
ISNULL(MAX(), 0) + 1
FROM dbo._角色模块信息
WHERE = @RoleId
AND pid = 0;
END
ELSE
BEGIN
UPDATE dbo._角色模块信息
SET = 1
WHERE id = @ModuleId
AND pid = 0
AND = @RoleId;
END;
/* 修改人:Ld 修改时间:2026-08-06 09:50:27; 固定系统管理角色2下新增一级菜单的显示顺序 */
DECLARE @BaseRoleOrder INT;
SELECT @BaseRoleOrder = ISNULL(MAX(r.), 0)
FROM dbo._角色模块信息 r
INNER JOIN dbo._模块信息 m ON m.id = r.id
WHERE r. = @RoleId
AND r.pid = 0
AND m.title NOT IN (N'ERP经营管理', N'MES制造执行', N'PLM产品生产周期', N'QMS质量管理', N'WMS仓储管理', N'APS计划排产');
;WITH MenuOrder AS
(
SELECT N'ERP经营管理' AS title, 1 AS SortNo
UNION ALL SELECT N'MES制造执行', 2
UNION ALL SELECT N'PLM产品生产周期', 3
UNION ALL SELECT N'QMS质量管理', 4
UNION ALL SELECT N'WMS仓储管理', 5
UNION ALL SELECT N'APS计划排产', 6
)
UPDATE r
SET = @BaseRoleOrder + MenuOrder.SortNo,
= 1
FROM dbo._角色模块信息 r
INNER JOIN dbo._模块信息 m ON m.id = r.id
INNER JOIN MenuOrder ON MenuOrder.title = m.title
WHERE r. = @RoleId
AND r.pid = 0;
SELECT id, [path], component, name, title, icon,
FROM dbo._模块信息
WHERE title IN (N'ERP经营管理', N'MES制造执行', N'PLM产品生产周期', N'QMS质量管理', N'WMS仓储管理', N'APS计划排产')
ORDER BY id;
SELECT id, pid, , , ,
FROM dbo._角色模块信息
WHERE id IN
(
SELECT id
FROM dbo._模块信息
WHERE title IN (N'ERP经营管理', N'MES制造执行', N'PLM产品生产周期', N'QMS质量管理', N'WMS仓储管理', N'APS计划排产')
)
AND pid = 0
ORDER BY , , id;
COMMIT TRAN;

View File

@@ -0,0 +1,140 @@
/* 修改人:Ld 修改时间:2026-08-06 15:22:59; 将测试库角色2下可明确归属的二级组件迁移到新一级菜单下 */
SET XACT_ABORT ON;
BEGIN TRAN;
DECLARE @MoveMap TABLE
(
id INT PRIMARY KEY,
pid INT NOT NULL,
INT NOT NULL
);
INSERT INTO @MoveMap (id, pid, )
VALUES
(67, 160, 1),
(11, 160, 2),
(12, 160, 3),
(13, 160, 4),
(14, 160, 5),
(147, 160, 6),
(68, 160, 7),
(17, 160, 8),
(16, 160, 9),
(18, 160, 10),
(81, 160, 11),
(19, 160, 12),
(15, 160, 13),
(99, 160, 14),
(86, 160, 15),
(87, 160, 16),
(108, 160, 17),
(114, 160, 18),
(120, 160, 19),
(82, 160, 20),
(129, 160, 21),
(155, 160, 22),
(156, 160, 23),
(35, 160, 24),
(36, 160, 25),
(37, 160, 26),
(41, 160, 27),
(124, 160, 28),
(157, 160, 29),
(94, 161, 1),
(78, 161, 2),
(28, 161, 3),
(98, 161, 4),
(80, 161, 5),
(29, 161, 6),
(79, 161, 7),
(30, 161, 8),
(100, 161, 9),
(84, 161, 10),
(95, 161, 11),
(153, 161, 12),
(154, 161, 13),
(25, 162, 1),
(69, 162, 2),
(24, 162, 3),
(102, 162, 4),
(21, 162, 5),
(22, 162, 6),
(23, 162, 7),
(117, 162, 8),
(134, 162, 9),
(150, 162, 10),
(104, 163, 1),
(110, 163, 2),
(103, 163, 3),
(121, 163, 4),
(128, 163, 5),
(131, 163, 6),
(135, 163, 7),
(43, 164, 1),
(112, 164, 2),
(44, 164, 3),
(46, 164, 4),
(47, 164, 5),
(48, 164, 6),
(49, 164, 7),
(75, 164, 8),
(51, 164, 9),
(76, 164, 10),
(77, 164, 11),
(50, 164, 12),
(92, 164, 13),
(93, 164, 14),
(96, 164, 15),
(118, 164, 16),
(122, 164, 17),
(123, 164, 18),
(130, 164, 19),
(138, 164, 20),
(143, 164, 21),
(151, 164, 22),
(158, 164, 23),
(45, 164, 24),
(132, 159, 1);
DECLARE @PidOrder TABLE
(
pid INT PRIMARY KEY,
INT NOT NULL
);
INSERT INTO @PidOrder (pid, )
SELECT
m.pid,
ISNULL(MAX(r.), 0) AS
FROM @MoveMap m
LEFT JOIN dbo._角色模块信息 r
ON r.pid = m.pid
AND r. = 2
AND ISNULL(r., 1) = 1
AND NOT EXISTS
(
SELECT 1
FROM @MoveMap mm
WHERE mm.id = r.id
)
GROUP BY m.pid;
UPDATE r
SET r.pid = m.pid,
r. = r.id,
r. = 1,
r. = p. + m.
FROM dbo._角色模块信息 r
INNER JOIN @MoveMap m
ON m.id = r.id
INNER JOIN @PidOrder p
ON p.pid = m.pid
WHERE r. = 2;
SELECT p.title AS , m.id AS ID, m.pid, m., r.
FROM @MoveMap m
INNER JOIN dbo._模块信息 p ON p.id = m.pid
INNER JOIN dbo._角色模块信息 r ON r.id = m.id AND r. = 2
ORDER BY m.pid, r., m.id;
COMMIT TRAN;

View File

@@ -0,0 +1,34 @@
/* 修改人:Ld 修改时间:2026-08-06 16:15:15; 精确修正角色2新一级菜单下误迁的占位授权记录 */
SET XACT_ABORT ON;
BEGIN TRAN;
UPDATE dbo._角色模块信息
SET pid = 161,
= 1,
= CASE IDD
WHEN 1184 THEN 1
WHEN 1181 THEN 3
WHEN 1183 THEN 10
WHEN 1185 THEN 11
WHEN 1187 THEN 12
WHEN 1182 THEN 7
WHEN 1186 THEN 13
ELSE
END
WHERE = 2
AND IDD IN (1184, 1181, 1183, 1185, 1187, 1182, 1186);
UPDATE dbo._角色模块信息
SET = 0
WHERE = 2
AND IDD = 1177;
SELECT p.title AS , c.id AS ID, c.title AS , r.IDD, r., r.
FROM dbo._角色模块信息 r
INNER JOIN dbo._模块信息 c ON c.id = r.id
LEFT JOIN dbo._模块信息 p ON p.id = r.pid
WHERE r. = 2
AND r.IDD IN (1184, 1181, 1183, 1185, 1187, 1182, 1186, 1177)
ORDER BY r. DESC, p.id, r., c.id;
COMMIT TRAN;

View File

@@ -0,0 +1,199 @@
/* 修改人:Ld 修改时间:2026-08-06 16:15:15; 补回建议清单缺项并重排角色2新一级菜单下二级组件顺序 */
SET XACT_ABORT ON;
BEGIN TRAN;
IF NOT EXISTS
(
SELECT 1
FROM dbo._角色模块信息
WHERE id = 135
AND pid = 163
AND = 2
)
BEGIN
INSERT INTO dbo._角色模块信息
(
id,
pid,
,
,
,
)
VALUES
(
135,
163,
135,
2,
1,
7
);
END
ELSE
BEGIN
UPDATE dbo._角色模块信息
SET = 1,
= 7
WHERE id = 135
AND pid = 163
AND = 2;
END;
IF NOT EXISTS
(
SELECT 1
FROM dbo._角色模块信息
WHERE id = 45
AND pid = 164
AND = 2
)
BEGIN
INSERT INTO dbo._角色模块信息
(
id,
pid,
,
,
,
)
VALUES
(
45,
164,
45,
2,
1,
24
);
END
ELSE
BEGIN
UPDATE dbo._角色模块信息
SET = 1,
= 24
WHERE id = 45
AND pid = 164
AND = 2;
END;
DECLARE @OrderMap TABLE
(
id INT PRIMARY KEY,
pid INT NOT NULL,
INT NOT NULL
);
INSERT INTO @OrderMap (id, pid, )
VALUES
(132, 159, 1),
(67, 160, 1),
(11, 160, 2),
(12, 160, 3),
(13, 160, 4),
(14, 160, 5),
(147, 160, 6),
(68, 160, 7),
(17, 160, 8),
(16, 160, 9),
(18, 160, 10),
(81, 160, 11),
(19, 160, 12),
(15, 160, 13),
(99, 160, 14),
(86, 160, 15),
(87, 160, 16),
(108, 160, 17),
(114, 160, 18),
(120, 160, 19),
(82, 160, 20),
(129, 160, 21),
(155, 160, 22),
(156, 160, 23),
(35, 160, 24),
(36, 160, 25),
(37, 160, 26),
(41, 160, 27),
(124, 160, 28),
(157, 160, 29),
(88, 160, 30),
(94, 161, 1),
(78, 161, 2),
(28, 161, 3),
(98, 161, 4),
(80, 161, 5),
(29, 161, 6),
(79, 161, 7),
(30, 161, 8),
(100, 161, 9),
(84, 161, 10),
(95, 161, 11),
(153, 161, 12),
(154, 161, 13),
(149, 161, 14),
(25, 162, 1),
(69, 162, 2),
(24, 162, 3),
(102, 162, 4),
(21, 162, 5),
(22, 162, 6),
(23, 162, 7),
(117, 162, 8),
(134, 162, 9),
(150, 162, 10),
(125, 162, 11),
(126, 162, 12),
(133, 162, 13),
(104, 163, 1),
(110, 163, 2),
(103, 163, 3),
(121, 163, 4),
(128, 163, 5),
(131, 163, 6),
(135, 163, 7),
(43, 164, 1),
(112, 164, 2),
(44, 164, 3),
(46, 164, 4),
(47, 164, 5),
(48, 164, 6),
(49, 164, 7),
(75, 164, 8),
(51, 164, 9),
(76, 164, 10),
(77, 164, 11),
(50, 164, 12),
(92, 164, 13),
(93, 164, 14),
(96, 164, 15),
(118, 164, 16),
(122, 164, 17),
(123, 164, 18),
(130, 164, 19),
(138, 164, 20),
(143, 164, 21),
(151, 164, 22),
(158, 164, 23),
(45, 164, 24);
UPDATE r
SET r.pid = o.pid,
r. = r.id,
r. = 1,
r. = o.
FROM dbo._角色模块信息 r
INNER JOIN @OrderMap o ON o.id = r.id
WHERE r. = 2
AND r.pid IN (159, 160, 161, 162, 163, 164);
SELECT p.title AS , COUNT(*) AS
FROM dbo._角色模块信息 r
INNER JOIN dbo._模块信息 p ON p.id = r.pid
WHERE r. = 2
AND ISNULL(r., 1) = 1
AND r.pid IN (159, 160, 161, 162, 163, 164)
GROUP BY p.title, r.pid
ORDER BY r.pid;
COMMIT TRAN;

View 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+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

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

View File

@@ -0,0 +1,56 @@
/* 修改人:Ld 修改时间:2026-08-06 16:23:41; 将工艺查询、工艺管理迁到APS并将通用件装配、专机装配下二级菜单迁到MES */
SET XACT_ABORT ON;
BEGIN TRAN;
DECLARE @MoveMap TABLE
(
id INT PRIMARY KEY,
pid INT NOT NULL,
INT NOT NULL
);
INSERT INTO @MoveMap (id, pid, )
VALUES
(84, 159, 2),
(95, 159, 3),
(94, 161, 1),
(78, 161, 2),
(28, 161, 3),
(98, 161, 4),
(80, 161, 5),
(29, 161, 6),
(79, 161, 7),
(30, 161, 8),
(100, 161, 9),
(153, 161, 10),
(154, 161, 11),
(149, 161, 12),
(64, 161, 13),
(65, 161, 14),
(66, 161, 15),
(70, 161, 16),
(89, 161, 17),
(90, 161, 18),
(91, 161, 19),
(101, 161, 20),
(72, 161, 21),
(73, 161, 22),
(74, 161, 23);
UPDATE r
SET r.pid = m.pid,
r. = r.id,
r. = 1,
r. = m.
FROM dbo._角色模块信息 r
INNER JOIN @MoveMap m ON m.id = r.id
WHERE r. = 2;
SELECT p.title AS , c.id AS ID, c.title AS , r.
FROM @MoveMap m
INNER JOIN dbo._角色模块信息 r ON r.id = m.id AND r. = 2
INNER JOIN dbo._模块信息 c ON c.id = r.id
INNER JOIN dbo._模块信息 p ON p.id = r.pid
ORDER BY p.id, r., c.id;
COMMIT TRAN;

View File

@@ -0,0 +1,83 @@
ALTER PROCEDURE [dbo].[_零件工序_派工]
@ int = null,
@ int = null,
@ int = null,
@ int = null,
@ int = null,
@ nvarchar(50)=null,
@ nvarchar(50)=null
AS
declare @ int
declare @ int
declare @ int
declare @ nvarchar(50)
declare @ int
declare @ int=0
-- 修改人:Ld 修改时间:2026-08-05 09:35:00; 后端兜底校验派工数量,避免空值或非正数落入任务分配表。
if @ is null or @ <= 0
begin
RAISERROR(N'派工数量不能为空且必须大于0', 16, 1)
return
end
update _零件工序 set = ISNULL(,0) + @ where =@
select @=,@=,@=ISNULL(,0) from _零件工序 where =@
select @ = from _零件工艺计划 where =@
if @ is null
begin
update _零件工艺计划 set = getdate() where =@
end
if @ = 16
begin
update _零件工序 set = 1,=@ where =@
end
else
begin
update _零件工序 set = 0,=0 where =@
end
if @ = 1
begin
if @ > @ and @ > 0
begin
set @ = @
update _零件工序 set =0 where =@
end
else if @ <= @ and @ > 0
begin
set @ = @
update _零件工序 set =isnull(,0)-@ where =@
end
end
if (select COUNT(*) from _零件工序_任务分配 where =@ and =@ and =@) = 1
begin
-- 修改人:Ld 修改时间:2026-08-05 09:35:00; 累加时对历史空值做默认值处理,避免 NULL + 新数量 仍然为 NULL。
update _零件工序_任务分配 set =ISNULL(,0)+@,=GETDATE(),=isnull(,0)+@,=@,=@,=@ where =@ and =@ and =@
end
else
begin
insert into _零件工序_任务分配(,,,,,,,,)values(@,@,@,@,GETDATE(),@,@,@,@)
if @ <> 16
begin
select @ = IDENT_CURRENT('车间生产管理工艺_零件工序_任务分配')
exec _零件工序_派工_生产计划_增加 @,@,@,@
end
end

View File

@@ -0,0 +1,36 @@
/* 修改人:Ld 修改时间:2026-08-06 16:15:15; 按确认归属补迁订单投产、物料采购进度和新产品合同类二级组件 */
SET XACT_ABORT ON;
BEGIN TRAN;
DECLARE @MoveMap TABLE
(
id INT PRIMARY KEY,
pid INT NOT NULL,
INT NOT NULL
);
INSERT INTO @MoveMap (id, pid, )
VALUES
(88, 160, 31),
(149, 161, 15),
(125, 162, 12),
(126, 162, 13),
(133, 162, 14);
UPDATE r
SET r.pid = m.pid,
r. = r.id,
r. = 1,
r. = m.
FROM dbo._角色模块信息 r
INNER JOIN @MoveMap m ON m.id = r.id
WHERE r. = 2;
SELECT p.title AS , c.id AS ID, c.title AS , r.
FROM @MoveMap m
INNER JOIN dbo._角色模块信息 r ON r.id = m.id AND r. = 2
INNER JOIN dbo._模块信息 c ON c.id = r.id
INNER JOIN dbo._模块信息 p ON p.id = r.pid
ORDER BY p.id, r., c.id;
COMMIT TRAN;