USE [ERPTOOL_JY] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- 工序工价基础表,维护现场确认的 9 个工价字段;修改人:Ld 修改时间:2026-07-03 08:02:29; IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NULL BEGIN CREATE TABLE [dbo].[车间生产管理工艺_工序工价]( [工价流水号] [int] IDENTITY(1,1) NOT NULL, [工序流水号] [int] NULL, [工艺名称] [nvarchar](100) NOT NULL, [工序名称] [nvarchar](100) NOT NULL, [零件名称] [nvarchar](100) NOT NULL, [图号] [nvarchar](100) NOT NULL, [机动时间s] [decimal](18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_机动时间s] DEFAULT ((0)), [辅助时间s] [decimal](18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_辅助时间s] DEFAULT ((0)), [总时间s] [decimal](18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_总时间s] DEFAULT ((0)), [单装数量(件)] [decimal](18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_单装数量件] DEFAULT ((0)), [操作台数] [decimal](18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_操作台数] DEFAULT ((0)), [日产能(件)] [decimal](18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_日产能件] DEFAULT ((0)), [最终单价(元/件)] [decimal](18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_最终单价元件] DEFAULT ((0)), [生效日期] [date] NULL, [变更次数] [int] NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_变更次数] DEFAULT ((0)), [是否启用] [bit] NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_是否启用] DEFAULT ((1)), [备注] [nvarchar](500) NULL, [创建人] [nvarchar](50) NULL, [创建时间] [datetime] NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_创建时间] DEFAULT (GETDATE()), [修改人] [nvarchar](50) NULL, [修改时间] [datetime] NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_修改时间] DEFAULT (GETDATE()), [计价方式] [nvarchar](20) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_计价方式] DEFAULT (N'按件'), [单件工价] [decimal](18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_单件工价] DEFAULT ((0)), [单时工价] [decimal](18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_单时工价] DEFAULT ((0)), [准结工价] [decimal](18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_准结工价] DEFAULT ((0)), [难度系数] [decimal](18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_难度系数] DEFAULT ((1)), [质量系数] [decimal](18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_质量系数] DEFAULT ((1)), [设备系数] [decimal](18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_设备系数] DEFAULT ((1)), [失效日期] [date] NULL, CONSTRAINT [PK_车间生产管理工艺_工序工价] PRIMARY KEY CLUSTERED ([工价流水号] ASC) ); END GO -- 兼容已建旧表,补齐现场确认字段;修改人:Ld 修改时间:2026-07-03 08:02:29; IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'机动时间s') IS NULL ALTER TABLE [dbo].[车间生产管理工艺_工序工价] ADD [机动时间s] [decimal](18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_机动时间s] DEFAULT ((0)); GO IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'辅助时间s') IS NULL ALTER TABLE [dbo].[车间生产管理工艺_工序工价] ADD [辅助时间s] [decimal](18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_辅助时间s] DEFAULT ((0)); GO IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'总时间s') IS NULL ALTER TABLE [dbo].[车间生产管理工艺_工序工价] ADD [总时间s] [decimal](18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_总时间s] DEFAULT ((0)); GO IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'单装数量(件)') IS NULL ALTER TABLE [dbo].[车间生产管理工艺_工序工价] ADD [单装数量(件)] [decimal](18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_单装数量件] DEFAULT ((0)); GO IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'操作台数') IS NULL ALTER TABLE [dbo].[车间生产管理工艺_工序工价] ADD [操作台数] [decimal](18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_操作台数] DEFAULT ((0)); GO IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'日产能(件)') IS NULL ALTER TABLE [dbo].[车间生产管理工艺_工序工价] ADD [日产能(件)] [decimal](18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_日产能件] DEFAULT ((0)); GO IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'最终单价(元/件)') IS NULL ALTER TABLE [dbo].[车间生产管理工艺_工序工价] ADD [最终单价(元/件)] [decimal](18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_最终单价元件] DEFAULT ((0)); GO IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'变更次数') IS NULL ALTER TABLE [dbo].[车间生产管理工艺_工序工价] ADD [变更次数] [int] NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_变更次数] DEFAULT ((0)); GO -- 工序流水号唯一索引,避免同一工序重复维护当前工价;修改人:Ld 修改时间:2026-07-03 08:02:29; IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM sys.indexes WHERE name = N'UX_车间生产管理工艺_工序工价_工序流水号' AND object_id = OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]') ) -- 修改人:Ld 修改时间:2026-07-31 10:53:08; 测试库存在历史重复工序流水号时跳过唯一索引创建,避免阻断存储过程部署 AND NOT EXISTS ( SELECT 1 FROM [dbo].[车间生产管理工艺_工序工价] WHERE 工序流水号 IS NOT NULL GROUP BY 工序流水号 HAVING COUNT(1) > 1 ) BEGIN CREATE UNIQUE NONCLUSTERED INDEX [UX_车间生产管理工艺_工序工价_工序流水号] ON [dbo].[车间生产管理工艺_工序工价]([工序流水号]) WHERE [工序流水号] IS NOT NULL; END GO -- 工序工价历史表,记录设置弹窗完整字段变更前后数据;修改人:Ld 修改时间:2026-07-31 10:53:08; IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价历史记录]', N'U') IS NULL BEGIN CREATE TABLE [dbo].[车间生产管理工艺_工序工价历史记录]( [历史流水号] [int] IDENTITY(1,1) NOT NULL, [工价流水号] [int] NULL, [工序流水号] [int] NULL, [工艺名称] [nvarchar](100) NULL, [工序名称] [nvarchar](100) NULL, [零件名称] [nvarchar](100) NULL, [图号] [nvarchar](100) NULL, [操作类型] [nvarchar](20) NOT NULL, [变更前] [nvarchar](max) NULL, [变更后] [nvarchar](max) NULL, [操作人] [nvarchar](50) NULL, [操作时间] [datetime] NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价历史记录_操作时间] DEFAULT (GETDATE()), [备注] [nvarchar](500) NULL, CONSTRAINT [PK_车间生产管理工艺_工序工价历史记录] PRIMARY KEY CLUSTERED ([历史流水号] ASC) ); END GO IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价_历史快照]', N'FN') IS NOT NULL DROP FUNCTION [dbo].[车间生产管理工艺_工序工价_历史快照]; GO -- 设置弹窗完整字段历史快照;修改人:Ld 修改时间:2026-07-31 10:53:08; CREATE FUNCTION [dbo].[车间生产管理工艺_工序工价_历史快照]( @机动时间s DECIMAL(18, 4), @辅助时间s DECIMAL(18, 4), @总时间s DECIMAL(18, 4), @单装数量件 DECIMAL(18, 4), @操作台数 DECIMAL(18, 4), @日产能件 DECIMAL(18, 4), @最终单价元件 DECIMAL(18, 4), @生效日期 DATE, @变更次数 INT ) RETURNS NVARCHAR(MAX) AS BEGIN RETURN N'机动时间s=' + CONVERT(NVARCHAR(50), ISNULL(@机动时间s, 0)) + N';辅助时间s=' + CONVERT(NVARCHAR(50), ISNULL(@辅助时间s, 0)) + N';总时间s=' + CONVERT(NVARCHAR(50), ISNULL(@总时间s, 0)) + N';单装数量(件)=' + CONVERT(NVARCHAR(50), ISNULL(@单装数量件, 0)) + N';操作台数=' + CONVERT(NVARCHAR(50), ISNULL(@操作台数, 0)) + N';日产能(件)=' + CONVERT(NVARCHAR(50), ISNULL(@日产能件, 0)) + N';最终单价(元/件)=' + CONVERT(NVARCHAR(50), ISNULL(@最终单价元件, 0)) + N';生效日期=' + ISNULL(CONVERT(NVARCHAR(10), @生效日期, 120), N'') + N';变更次数=' + CONVERT(NVARCHAR(50), ISNULL(@变更次数, 0)); END GO -- 旧历史不再压缩字段,保留后续完整字段快照;修改人:Ld 修改时间:2026-07-31 10:53:08; IF 1 = 0 AND OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价历史记录]', N'U') IS NOT NULL BEGIN UPDATE [dbo].[车间生产管理工艺_工序工价历史记录] SET 变更前 = CASE WHEN 变更前 IS NULL OR 变更前 = N'' THEN 变更前 WHEN CHARINDEX(N'最终单价(元/件)=', 变更前) > 0 THEN SUBSTRING( 变更前, CHARINDEX(N'最终单价(元/件)=', 变更前), CASE WHEN CHARINDEX(N';', 变更前 + N';', CHARINDEX(N'最终单价(元/件)=', 变更前)) > 0 THEN CHARINDEX(N';', 变更前 + N';', CHARINDEX(N'最终单价(元/件)=', 变更前)) - CHARINDEX(N'最终单价(元/件)=', 变更前) ELSE LEN(变更前) END ) ELSE 变更前 END, 变更后 = CASE WHEN 变更后 IS NULL OR 变更后 = N'' THEN 变更后 WHEN CHARINDEX(N'最终单价(元/件)=', 变更后) > 0 THEN SUBSTRING( 变更后, CHARINDEX(N'最终单价(元/件)=', 变更后), CASE WHEN CHARINDEX(N';', 变更后 + N';', CHARINDEX(N'最终单价(元/件)=', 变更后)) > 0 THEN CHARINDEX(N';', 变更后 + N';', CHARINDEX(N'最终单价(元/件)=', 变更后)) - CHARINDEX(N'最终单价(元/件)=', 变更后) ELSE LEN(变更后) END ) ELSE 变更后 END WHERE (变更前 LIKE N'%最终单价(元/件)=%' AND 变更前 LIKE N'%;%') OR (变更后 LIKE N'%最终单价(元/件)=%' AND 变更后 LIKE N'%;%'); -- 修改人:Ld 修改时间:2026-07-06 09:27:09; 兼容早期历史中的单件工价字段并统一为最终单价 UPDATE [dbo].[车间生产管理工艺_工序工价历史记录] SET 变更前 = CASE WHEN 变更前 IS NULL OR 变更前 = N'' THEN 变更前 WHEN CHARINDEX(N'单件工价=', 变更前) > 0 THEN N'最终单价(元/件)=' + SUBSTRING( 变更前, CHARINDEX(N'单件工价=', 变更前) + LEN(N'单件工价='), CASE WHEN CHARINDEX(N';', 变更前 + N';', CHARINDEX(N'单件工价=', 变更前)) > 0 THEN CHARINDEX(N';', 变更前 + N';', CHARINDEX(N'单件工价=', 变更前)) - CHARINDEX(N'单件工价=', 变更前) - LEN(N'单件工价=') ELSE LEN(变更前) END ) ELSE 变更前 END, 变更后 = CASE WHEN 变更后 IS NULL OR 变更后 = N'' THEN 变更后 WHEN CHARINDEX(N'单件工价=', 变更后) > 0 THEN N'最终单价(元/件)=' + SUBSTRING( 变更后, CHARINDEX(N'单件工价=', 变更后) + LEN(N'单件工价='), CASE WHEN CHARINDEX(N';', 变更后 + N';', CHARINDEX(N'单件工价=', 变更后)) > 0 THEN CHARINDEX(N';', 变更后 + N';', CHARINDEX(N'单件工价=', 变更后)) - CHARINDEX(N'单件工价=', 变更后) - LEN(N'单件工价=') ELSE LEN(变更后) END ) ELSE 变更后 END WHERE 变更前 LIKE N'%单件工价=%' OR 变更后 LIKE N'%单件工价=%'; END GO -- 工序工价分页查询,参考制定工艺组件订单、产品、零件数据源后再展开有工序名称的数据;修改人:Ld 修改时间:2026-07-06 09:00:29; 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'', @PageCurrent INT = 1, @PageSize INT = 1000 AS BEGIN SET NOCOUNT ON; IF @PageCurrent IS NULL OR @PageCurrent < 1 SET @PageCurrent = 1; -- 修改人:Ld 修改时间:2026-07-06 08:52:37; -- 工序工价数据超过 100 条,默认页大小放大,页面仍可按分页参数控制 IF @PageSize IS NULL OR @PageSize < 1 SET @PageSize = 1000; ;WITH PlanData AS ( -- 修改人:Ld 修改时间:2026-07-06 08:36:02; -- 与制定工艺组件订单、产品、零件选择保持同一工艺计划来源口径 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'%') ), ProcessData AS ( SELECT ROW_NUMBER() OVER ( ORDER BY gp.工艺更新时间 DESC, gp.工艺计划流水号 DESC, gx.工序顺序 ASC, gx.工序流水号 ASC ) AS RowNum, price.工价流水号, gx.工序流水号, gx.工艺计划流水号, 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) 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 变更次数, ISNULL(price.是否启用, 1) 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)) = @是否启用) ) SELECT 工价流水号, 工序流水号, 工艺计划流水号, 订单号, 产品名称, 工艺名称, 工序名称, 零件名称, 图号, 工序顺序, 定额工时, 准结工时, [机动时间s], [辅助时间s], [总时间s], [单装数量(件)], 操作台数, [日产能(件)], [最终单价(元/件)], 生效日期, 变更次数, 是否启用, 备注, 创建人, 创建时间, 修改人, 修改时间 FROM ProcessData WHERE RowNum BETWEEN ((@PageCurrent - 1) * @PageSize + 1) AND (@PageCurrent * @PageSize) ORDER BY RowNum; SELECT COUNT(1) AS total FROM [dbo].[车间生产管理_零件工艺计划_视图] gp INNER JOIN [dbo].[车间生产管理工艺_零件工序] gx ON gp.工艺计划流水号 = gx.工艺计划流水号 LEFT JOIN [dbo].[车间生产管理工艺_基础表_工艺名称] base ON gx.工艺编号 = base.工艺编号 LEFT JOIN [dbo].[车间生产管理工艺_工序工价] price ON gx.工序流水号 = price.工序流水号 WHERE gp.考核状态 >= 1 AND (@订单流水号_check = 0 OR gp.订单流水号 = @订单流水号) AND (@组件流水号_check = 0 OR gp.组件流水号 = @组件流水号) AND (@工艺计划流水号_check = 0 OR gp.工艺计划流水号 = @工艺计划流水号) AND 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 gp.零件名称 + gp.零件图号 LIKE N'%' + @零件名称 + N'%') AND (@图号_check = 0 OR gp.零件图号 LIKE N'%' + @图号 + N'%') AND (@是否启用_check = 0 OR CAST(ISNULL(price.是否启用, 1) AS NVARCHAR(20)) = @是否启用); END GO -- 工序工价新增;修改人:Ld 修改时间:2026-07-03 08:02:29; IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价_增加数据]', N'P') IS NOT NULL DROP PROCEDURE [dbo].[车间生产管理工艺_工序工价_增加数据]; GO CREATE 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'' AS BEGIN EXEC [dbo].[车间生产管理工艺_工序工价_编辑数据] @工价流水号 = @工价流水号, @工艺名称 = @工艺名称, @工序名称 = @工序名称, @零件名称 = @零件名称, @图号 = @图号, @机动时间s = @机动时间s, @辅助时间s = @辅助时间s, @总时间s = @总时间s, @单装数量件 = @单装数量件, @操作台数 = @操作台数, @日产能件 = @日产能件, @最终单价元件 = @最终单价元件, @生效日期 = @生效日期, @变更次数 = @变更次数, @是否启用 = @是否启用, @备注 = @备注, @工序流水号 = @工序流水号, @修改人 = @修改人; END GO -- 工序工价编辑,按已有工序流水号新增或更新工价记录;修改人:Ld 修改时间:2026-07-03 08:02:29; IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价_编辑数据]', N'P') IS NOT NULL DROP PROCEDURE [dbo].[车间生产管理工艺_工序工价_编辑数据]; GO CREATE 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'' 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生效日期 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; SET @Safe总时间s = CASE WHEN ISNUMERIC(NULLIF(@总时间s, N'')) = 1 THEN CONVERT(DECIMAL(18, 4), @总时间s) 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; SET @Safe最终单价元件 = CASE WHEN ISNUMERIC(NULLIF(@最终单价元件, N'')) = 1 THEN CONVERT(DECIMAL(18, 4), @最终单价元件) 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工序流水号 = 工序流水号, -- 修改人:Ld 修改时间:2026-07-31 10:53:08; 历史记录保留设置弹窗全部字段 @旧数据 = [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是否启用, 备注 = 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是否启用, NULLIF(@备注, N''), @操作人, @当前时间, @操作人, @当前时间, N'按件', @Safe最终单价元件 ); SET @Id = SCOPE_IDENTITY(); SET @Old工序流水号 = @Safe工序流水号; SET @旧数据 = N''; END; -- 修改人:Ld 修改时间:2026-07-31 10:53:08; 历史记录保留设置弹窗全部字段 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 -- 工序工价停用;修改人:Ld 修改时间:2026-07-03 08:02:29; IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价_删除数据]', N'P') IS NOT NULL DROP PROCEDURE [dbo].[车间生产管理工艺_工序工价_删除数据]; GO CREATE PROCEDURE [dbo].[车间生产管理工艺_工序工价_删除数据] @工价流水号 NVARCHAR(50) = N'', @修改人 NVARCHAR(50) = N'' AS BEGIN SET NOCOUNT ON; DECLARE @Id INT; DECLARE @操作人 NVARCHAR(50) = NULLIF(@修改人, N''); DECLARE @当前时间 DATETIME = GETDATE(); DECLARE @旧数据 NVARCHAR(MAX); DECLARE @工序流水号 INT; DECLARE @工艺名称 NVARCHAR(100); DECLARE @工序名称 NVARCHAR(100); DECLARE @零件名称 NVARCHAR(100); DECLARE @图号 NVARCHAR(100); DECLARE @变更后 NVARCHAR(MAX); DECLARE @机动时间s DECIMAL(18, 4); DECLARE @辅助时间s DECIMAL(18, 4); DECLARE @总时间s DECIMAL(18, 4); DECLARE @单装数量件 DECIMAL(18, 4); DECLARE @操作台数 DECIMAL(18, 4); DECLARE @日产能件 DECIMAL(18, 4); DECLARE @最终单价元件 DECIMAL(18, 4); DECLARE @生效日期 DATE; DECLARE @变更次数 INT; SET @Id = CASE WHEN ISNUMERIC(NULLIF(@工价流水号, N'')) = 1 THEN CONVERT(INT, @工价流水号) ELSE NULL END; IF @Id IS NULL BEGIN SELECT N'0' AS result, N'工价流水号不能为空' AS message; RETURN; END; IF NOT EXISTS ( SELECT 1 FROM [dbo].[车间生产管理工艺_工序工价] WHERE 工价流水号 = @Id ) BEGIN SELECT N'0' AS result, N'工序工价记录不存在' AS message; RETURN; END; BEGIN TRY BEGIN TRAN; SELECT @工序流水号 = 工序流水号, @工艺名称 = 工艺名称, @工序名称 = 工序名称, @零件名称 = 零件名称, @图号 = 图号, @机动时间s = [机动时间s], @辅助时间s = [辅助时间s], @总时间s = [总时间s], @单装数量件 = [单装数量(件)], @操作台数 = [操作台数], @日产能件 = [日产能(件)], @最终单价元件 = [最终单价(元/件)], @生效日期 = 生效日期, @变更次数 = 变更次数, -- 修改人:Ld 修改时间:2026-07-31 10:53:08; 停用历史记录设置弹窗全部字段 @旧数据 = [dbo].[车间生产管理工艺_工序工价_历史快照]( [机动时间s], [辅助时间s], [总时间s], [单装数量(件)], [操作台数], [日产能(件)], [最终单价(元/件)], 生效日期, 变更次数 ) FROM [dbo].[车间生产管理工艺_工序工价] WHERE 工价流水号 = @Id; UPDATE [dbo].[车间生产管理工艺_工序工价] SET 是否启用 = 0, 修改人 = @操作人, 修改时间 = @当前时间 WHERE 工价流水号 = @Id; -- 修改人:Ld 修改时间:2026-07-31 10:53:08; 停用后历史仍展示设置弹窗字段快照 SET @变更后 = [dbo].[车间生产管理工艺_工序工价_历史快照]( @机动时间s, @辅助时间s, @总时间s, @单装数量件, @操作台数, @日产能件, @最终单价元件, @生效日期, @变更次数 ); INSERT INTO [dbo].[车间生产管理工艺_工序工价历史记录]( 工价流水号, 工序流水号, 工艺名称, 工序名称, 零件名称, 图号, 操作类型, 变更前, 变更后, 操作人, 操作时间, 备注 ) VALUES ( @Id, @工序流水号, @工艺名称, @工序名称, @零件名称, @图号, N'停用', @旧数据, @变更后, @操作人, @当前时间, N'' ); COMMIT TRAN; SELECT N'1' AS result; END TRY BEGIN CATCH IF @@TRANCOUNT > 0 ROLLBACK TRAN; SELECT N'0' AS result, ERROR_MESSAGE() AS message; END CATCH; END GO -- 工序工价复制源查询,仅返回零件名称、工序号和工艺名称;修改人:Ld 修改时间:2026-07-06 08:45:45; IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价_复制源_查询数据]', N'P') IS NOT NULL DROP PROCEDURE [dbo].[车间生产管理工艺_工序工价_复制源_查询数据]; GO CREATE PROCEDURE [dbo].[车间生产管理工艺_工序工价_复制源_查询数据] @零件图号 NVARCHAR(100) = N'' AS BEGIN SET NOCOUNT ON; DECLARE @源工艺计划流水号 INT; SELECT TOP 1 @源工艺计划流水号 = 工艺计划流水号 FROM [dbo].[车间生产管理_零件工艺计划_视图] WHERE 零件图号 = @零件图号 AND 考核状态 >= 1 ORDER BY 工艺更新时间 DESC, 工艺计划流水号 DESC; SELECT gp.零件名称, gx.工序顺序, ISNULL(base.工艺名称, N'未设置工序') AS 工艺名称 FROM [dbo].[车间生产管理工艺_零件工序] gx LEFT JOIN [dbo].[车间生产管理工艺_基础表_工艺名称] base ON gx.工艺编号 = base.工艺编号 LEFT JOIN [dbo].[车间生产管理_零件工艺计划_视图] gp ON gx.工艺计划流水号 = gp.工艺计划流水号 WHERE gx.工艺计划流水号 = @源工艺计划流水号 ORDER BY gx.工序顺序; END GO -- 工序工价复制,按工序号和工艺名称匹配源零件已维护工价;修改人:Ld 修改时间:2026-07-06 08:45:45; IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价_复制数据]', N'P') IS NOT NULL DROP PROCEDURE [dbo].[车间生产管理工艺_工序工价_复制数据]; GO CREATE PROCEDURE [dbo].[车间生产管理工艺_工序工价_复制数据] @目标工艺计划流水号 NVARCHAR(50) = N'', @源零件图号 NVARCHAR(100) = N'', @修改人 NVARCHAR(50) = N'' AS BEGIN SET NOCOUNT ON; DECLARE @TargetPlanId INT; DECLARE @SourcePlanId INT; DECLARE @操作人 NVARCHAR(50) = NULLIF(@修改人, N''); DECLARE @当前时间 DATETIME = GETDATE(); SET @TargetPlanId = CASE WHEN ISNUMERIC(NULLIF(@目标工艺计划流水号, N'')) = 1 THEN CONVERT(INT, @目标工艺计划流水号) ELSE NULL END; IF @TargetPlanId IS NULL BEGIN SELECT N'0' AS result, N'目标零件不能为空' AS message; RETURN; END; SELECT TOP 1 @SourcePlanId = 工艺计划流水号 FROM [dbo].[车间生产管理_零件工艺计划_视图] WHERE 零件图号 = @源零件图号 AND 考核状态 >= 1 ORDER BY 工艺更新时间 DESC, 工艺计划流水号 DESC; IF @SourcePlanId IS NULL BEGIN SELECT N'0' AS result, N'源零件没有可复制的工序数据' AS message; RETURN; END; IF @SourcePlanId = @TargetPlanId BEGIN SELECT N'0' AS result, N'不能复制当前零件自身' AS message; RETURN; END; IF OBJECT_ID(N'tempdb..#CopyRows') IS NOT NULL DROP TABLE #CopyRows; CREATE TABLE #CopyRows( 工序流水号 INT NOT NULL, 工艺名称 NVARCHAR(100) NOT NULL, 工序名称 NVARCHAR(100) NOT NULL, 零件名称 NVARCHAR(100) NOT NULL, 图号 NVARCHAR(100) NOT NULL, [机动时间s] DECIMAL(18, 4) NOT NULL, [辅助时间s] DECIMAL(18, 4) NOT NULL, [总时间s] DECIMAL(18, 4) NOT NULL, [单装数量(件)] DECIMAL(18, 4) NOT NULL, [操作台数] DECIMAL(18, 4) NOT NULL, [日产能(件)] DECIMAL(18, 4) NOT NULL, [最终单价(元/件)] DECIMAL(18, 4) NOT NULL, 生效日期 DATE NULL, 变更次数 INT NOT NULL, 是否启用 BIT NOT NULL, 备注 NVARCHAR(500) NULL ); -- 修改人:Ld 修改时间:2026-07-06 08:45:45; -- 源与目标仅按工序号和工艺名称匹配,避免带入制定工艺的其他工艺编辑数据 INSERT INTO #CopyRows( 工序流水号, 工艺名称, 工序名称, 零件名称, 图号, [机动时间s], [辅助时间s], [总时间s], [单装数量(件)], [操作台数], [日产能(件)], [最终单价(元/件)], 生效日期, 变更次数, 是否启用, 备注 ) SELECT targetGx.工序流水号, ISNULL(targetBase.工艺名称, N'未设置工序') AS 工艺名称, ISNULL(targetBase.工艺名称, N'未设置工序') AS 工序名称, targetGp.零件名称, targetGp.零件图号 AS 图号, sourcePrice.[机动时间s], sourcePrice.[辅助时间s], sourcePrice.[总时间s], sourcePrice.[单装数量(件)], sourcePrice.[操作台数], sourcePrice.[日产能(件)], sourcePrice.[最终单价(元/件)], sourcePrice.生效日期, sourcePrice.变更次数, sourcePrice.是否启用, sourcePrice.备注 FROM [dbo].[车间生产管理工艺_零件工序] targetGx LEFT JOIN [dbo].[车间生产管理工艺_基础表_工艺名称] targetBase ON targetGx.工艺编号 = targetBase.工艺编号 LEFT JOIN [dbo].[车间生产管理_零件工艺计划_视图] targetGp ON targetGx.工艺计划流水号 = targetGp.工艺计划流水号 INNER JOIN [dbo].[车间生产管理工艺_零件工序] sourceGx ON sourceGx.工艺计划流水号 = @SourcePlanId AND sourceGx.工序顺序 = targetGx.工序顺序 LEFT JOIN [dbo].[车间生产管理工艺_基础表_工艺名称] sourceBase ON sourceGx.工艺编号 = sourceBase.工艺编号 INNER JOIN [dbo].[车间生产管理工艺_工序工价] sourcePrice ON sourceGx.工序流水号 = sourcePrice.工序流水号 WHERE targetGx.工艺计划流水号 = @TargetPlanId AND ISNULL(sourceBase.工艺名称, N'未设置工序') = ISNULL(targetBase.工艺名称, N'未设置工序'); IF NOT EXISTS (SELECT 1 FROM #CopyRows) BEGIN SELECT N'0' AS result, N'源零件没有可匹配的工价记录' AS message; RETURN; END; BEGIN TRY BEGIN TRAN; UPDATE price SET price.工艺名称 = copyData.工艺名称, price.工序名称 = copyData.工序名称, price.零件名称 = copyData.零件名称, price.图号 = copyData.图号, price.[机动时间s] = copyData.[机动时间s], price.[辅助时间s] = copyData.[辅助时间s], price.[总时间s] = copyData.[总时间s], price.[单装数量(件)] = copyData.[单装数量(件)], price.[操作台数] = copyData.[操作台数], price.[日产能(件)] = copyData.[日产能(件)], price.[最终单价(元/件)] = copyData.[最终单价(元/件)], price.生效日期 = copyData.生效日期, price.变更次数 = copyData.变更次数, price.是否启用 = copyData.是否启用, price.备注 = copyData.备注, price.计价方式 = N'按件', price.单件工价 = copyData.[最终单价(元/件)], price.修改人 = @操作人, price.修改时间 = @当前时间 FROM [dbo].[车间生产管理工艺_工序工价] price INNER JOIN #CopyRows copyData ON price.工序流水号 = copyData.工序流水号; INSERT INTO [dbo].[车间生产管理工艺_工序工价]( 工序流水号, 工艺名称, 工序名称, 零件名称, 图号, [机动时间s], [辅助时间s], [总时间s], [单装数量(件)], [操作台数], [日产能(件)], [最终单价(元/件)], 生效日期, 变更次数, 是否启用, 备注, 创建人, 创建时间, 修改人, 修改时间, 计价方式, 单件工价 ) SELECT copyData.工序流水号, copyData.工艺名称, copyData.工序名称, copyData.零件名称, copyData.图号, copyData.[机动时间s], copyData.[辅助时间s], copyData.[总时间s], copyData.[单装数量(件)], copyData.[操作台数], copyData.[日产能(件)], copyData.[最终单价(元/件)], copyData.生效日期, copyData.变更次数, copyData.是否启用, copyData.备注, @操作人, @当前时间, @操作人, @当前时间, N'按件', copyData.[最终单价(元/件)] FROM #CopyRows copyData WHERE NOT EXISTS ( SELECT 1 FROM [dbo].[车间生产管理工艺_工序工价] price WHERE price.工序流水号 = copyData.工序流水号 ); INSERT INTO [dbo].[车间生产管理工艺_工序工价历史记录]( 工价流水号, 工序流水号, 工艺名称, 工序名称, 零件名称, 图号, 操作类型, 变更前, 变更后, 操作人, 操作时间, 备注 ) SELECT price.工价流水号, price.工序流水号, price.工艺名称, price.工序名称, price.零件名称, price.图号, N'拷贝', N'源零件图号=' + ISNULL(@源零件图号, N''), -- 修改人:Ld 修改时间:2026-07-31 10:53:08; 拷贝历史记录设置弹窗全部字段 [dbo].[车间生产管理工艺_工序工价_历史快照]( price.[机动时间s], price.[辅助时间s], price.[总时间s], price.[单装数量(件)], price.[操作台数], price.[日产能(件)], price.[最终单价(元/件)], price.生效日期, price.变更次数 ), @操作人, @当前时间, N'工序工价拷贝' FROM [dbo].[车间生产管理工艺_工序工价] price INNER JOIN #CopyRows copyData ON price.工序流水号 = copyData.工序流水号; COMMIT TRAN; SELECT N'1' AS result, COUNT(1) AS 复制数量 FROM #CopyRows; END TRY BEGIN CATCH IF @@TRANCOUNT > 0 ROLLBACK TRAN; SELECT N'0' AS result, ERROR_MESSAGE() AS message; END CATCH; END GO -- 工序工价历史查询,按该零件的该工序名称查看历史;修改人:Ld 修改时间:2026-07-06 09:00:29; IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价_历史_查询数据]', N'P') IS NOT NULL DROP PROCEDURE [dbo].[车间生产管理工艺_工序工价_历史_查询数据]; GO CREATE PROCEDURE [dbo].[车间生产管理工艺_工序工价_历史_查询数据] @零件名称_check INT = 0, @零件名称 NVARCHAR(100) = N'', @图号_check INT = 0, @图号 NVARCHAR(100) = N'', @工序名称_check INT = 0, @工序名称 NVARCHAR(100) = N'', @PageCurrent INT = 1, @PageSize INT = 100 AS BEGIN SET NOCOUNT ON; IF @PageCurrent IS NULL OR @PageCurrent < 1 SET @PageCurrent = 1; IF @PageSize IS NULL OR @PageSize < 1 SET @PageSize = 100; ;WITH HistoryData AS ( SELECT ROW_NUMBER() OVER (ORDER BY 操作时间 DESC, 历史流水号 DESC) AS RowNum, 历史流水号, 工价流水号, 工序流水号, 工艺名称, 工序名称, 零件名称, 图号, 操作类型, 变更前, 变更后, 操作人, CONVERT(VARCHAR(19), 操作时间, 120) AS 操作时间, 备注 FROM [dbo].[车间生产管理工艺_工序工价历史记录] WHERE (@零件名称_check = 0 OR 零件名称 = @零件名称) AND (@图号_check = 0 OR 图号 = @图号) AND (@工序名称_check = 0 OR 工序名称 = @工序名称) ) SELECT 历史流水号, 工价流水号, 工序流水号, 工艺名称, 工序名称, 零件名称, 图号, 操作类型, 变更前, 变更后, 操作人, 操作时间, 备注 FROM HistoryData WHERE RowNum BETWEEN ((@PageCurrent - 1) * @PageSize + 1) AND (@PageCurrent * @PageSize) ORDER BY RowNum; SELECT COUNT(1) AS total FROM [dbo].[车间生产管理工艺_工序工价历史记录] WHERE (@零件名称_check = 0 OR 零件名称 = @零件名称) AND (@图号_check = 0 OR 图号 = @图号) AND (@工序名称_check = 0 OR 工序名称 = @工序名称); END GO -- 修改人:Ld 修改时间:2026-07-31 11:03:00; 正式库部署副本,由工序工价测试库脚本替换库名生成。