USE [ERPTOOL_JY] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- 同步正式库历史工序工价总时间,确保总时间等于机动时间加辅助时间;修改人:Ld 修改时间:2026-08-03 15:24:31; IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL BEGIN UPDATE [dbo].[车间生产管理工艺_工序工价] SET [总时间s] = ISNULL([机动时间s], 0) + ISNULL([辅助时间s], 0), 修改时间 = GETDATE() WHERE ISNULL([总时间s], 0) <> ISNULL([机动时间s], 0) + ISNULL([辅助时间s], 0); END GO -- 工序工价总时间数据库兜底,后续新增或修改时自动保持总时间=机动时间+辅助时间;修改人:Ld 修改时间:2026-08-03 15:24:31; 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; -- 修改人:Ld 修改时间:2026-08-03 15:24:31; 仅修正本次变动行,避免人工或接口传入错误总时间。 UPDATE price SET price.[总时间s] = ISNULL(price.[机动时间s], 0) + ISNULL(price.[辅助时间s], 0) FROM [dbo].[车间生产管理工艺_工序工价] price INNER JOIN inserted i ON price.工价流水号 = i.工价流水号 WHERE ISNULL(price.[总时间s], 0) <> ISNULL(price.[机动时间s], 0) + ISNULL(price.[辅助时间s], 0); END GO -- 工序工价导出,正式库复用页面查询筛选口径并导出全部匹配数据;修改人:Ld 修改时间:2026-08-03 15:24:31; IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价_导出表格_查询]', N'P') IS NOT NULL DROP PROCEDURE [dbo].[车间生产管理工艺_工序工价_导出表格_查询]; GO CREATE PROCEDURE [dbo].[车间生产管理工艺_工序工价_导出表格_查询] @订单流水号_check INT = 0, @订单流水号 INT = NULL, @组件流水号_check INT = 0, @组件流水号 INT = NULL, @工艺计划流水号_check INT = 0, @工艺计划流水号 INT = NULL, @工艺名称_check INT = 0, @工艺名称 NVARCHAR(100) = N'', @工序名称_check INT = 0, @工序名称 NVARCHAR(100) = N'', @零件名称_check INT = 0, @零件名称 NVARCHAR(100) = N'', @图号_check INT = 0, @图号 NVARCHAR(100) = N'', @是否启用_check INT = 0, @是否启用 NVARCHAR(20) = N'' AS BEGIN SET NOCOUNT ON; SELECT N'工序工价_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype; SELECT 256 * 20 AS 订单号, 256 * 20 AS 产品名称, 256 * 20 AS 工艺名称, 256 * 20 AS 工序名称, 256 * 24 AS 零件名称, 256 * 20 AS 图号, 256 * 12 AS 工序顺序, 256 * 12 AS 定额工时, 256 * 12 AS 准结工时, 256 * 12 AS [机动时间s], 256 * 12 AS [辅助时间s], 256 * 12 AS [总时间s], 256 * 16 AS [单装数量(件)], 256 * 12 AS 操作台数, 256 * 14 AS [日产能(件)], 256 * 18 AS [最终单价(元/件)], 256 * 14 AS 生效日期, 256 * 12 AS 变更次数, 256 * 12 AS 启用状态, 256 * 24 AS 备注, 256 * 14 AS 创建人, 256 * 20 AS 创建时间, 256 * 14 AS 修改人, 256 * 20 AS 修改时间; SELECT 0 AS 订单号, 0 AS 产品名称, 0 AS 工艺名称, 0 AS 工序名称, 0 AS 零件名称, 0 AS 图号, 1 AS 工序顺序, 1 AS 定额工时, 1 AS 准结工时, 1 AS [机动时间s], 1 AS [辅助时间s], 1 AS [总时间s], 1 AS [单装数量(件)], 1 AS 操作台数, 1 AS [日产能(件)], 1 AS [最终单价(元/件)], 0 AS 生效日期, 1 AS 变更次数, 0 AS 启用状态, 0 AS 备注, 0 AS 创建人, 0 AS 创建时间, 0 AS 修改人, 0 AS 修改时间; ;WITH PlanData AS ( -- 页面查询同源工艺计划数据源,确保正式库导出与列表一致;修改人:Ld 修改时间:2026-08-03 15:24:31; SELECT gp.* FROM [dbo].[车间生产管理_零件工艺计划_视图] gp WHERE gp.考核状态 >= 1 AND (@订单流水号_check = 0 OR gp.订单流水号 = @订单流水号) AND (@组件流水号_check = 0 OR gp.组件流水号 = @组件流水号) AND (@工艺计划流水号_check = 0 OR gp.工艺计划流水号 = @工艺计划流水号) AND (@零件名称_check = 0 OR gp.零件名称 + gp.零件图号 LIKE N'%' + @零件名称 + N'%') AND (@图号_check = 0 OR gp.零件图号 LIKE N'%' + @图号 + N'%') ) SELECT gp.订单号, gp.产品名称, base.工艺名称 AS 工艺名称, base.工艺名称 AS 工序名称, gp.零件名称, gp.零件图号 AS 图号, gx.工序顺序, gx.定额工时, gx.准结工时, ISNULL(price.[机动时间s], 0) AS [机动时间s], ISNULL(price.[辅助时间s], 0) AS [辅助时间s], ISNULL(price.[机动时间s], 0) + ISNULL(price.[辅助时间s], 0) AS [总时间s], ISNULL(price.[单装数量(件)], 0) AS [单装数量(件)], ISNULL(price.[操作台数], 0) AS 操作台数, ISNULL(price.[日产能(件)], 0) AS [日产能(件)], ISNULL(price.[最终单价(元/件)], 0) AS [最终单价(元/件)], CONVERT(VARCHAR(10), price.生效日期, 23) AS 生效日期, ISNULL(price.变更次数, 0) AS 变更次数, CASE WHEN ISNULL(price.是否启用, 1) = 1 THEN N'启用' ELSE N'停用' END AS 启用状态, price.备注, price.创建人, CONVERT(VARCHAR(19), price.创建时间, 120) AS 创建时间, price.修改人, CONVERT(VARCHAR(19), price.修改时间, 120) AS 修改时间 FROM PlanData gp INNER JOIN [dbo].[车间生产管理工艺_零件工序] gx ON gp.工艺计划流水号 = gx.工艺计划流水号 LEFT JOIN [dbo].[车间生产管理工艺_基础表_工艺名称] base ON gx.工艺编号 = base.工艺编号 LEFT JOIN [dbo].[车间生产管理工艺_工序工价] price ON gx.工序流水号 = price.工序流水号 WHERE NULLIF(LTRIM(RTRIM(base.工艺名称)), N'') IS NOT NULL AND (@工艺名称_check = 0 OR base.工艺名称 LIKE N'%' + @工艺名称 + N'%') AND (@工序名称_check = 0 OR base.工艺名称 LIKE N'%' + @工序名称 + N'%') AND (@是否启用_check = 0 OR CAST(ISNULL(price.是否启用, 1) AS NVARCHAR(20)) = @是否启用) ORDER BY gp.工艺更新时间 DESC, gp.工艺计划流水号 DESC, gx.工序顺序 ASC, gx.工序流水号 ASC; END GO