1038 lines
40 KiB
Transact-SQL
1038 lines
40 KiB
Transact-SQL
USE [ERPTOOL_JY_20250826Back]
|
|
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].[车间生产管理工艺_工序工价]')
|
|
)
|
|
BEGIN
|
|
CREATE UNIQUE NONCLUSTERED INDEX [UX_车间生产管理工艺_工序工价_工序流水号]
|
|
ON [dbo].[车间生产管理工艺_工序工价]([工序流水号])
|
|
WHERE [工序流水号] IS NOT NULL;
|
|
END
|
|
GO
|
|
|
|
-- 工序工价历史表,仅记录最终单价前后数据;修改人:Ld 修改时间:2026-07-06 09:27:09;
|
|
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
|
|
|
|
-- 清理旧历史中的多字段内容,历史弹窗只保留最终单价数据;修改人:Ld 修改时间:2026-07-06 09:27:09;
|
|
IF 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-06 09:27:09; 历史数据只存储最终单价
|
|
@旧数据 = N'最终单价(元/件)=' + CONVERT(NVARCHAR(50), ISNULL([最终单价(元/件)], 0))
|
|
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-06 09:27:09; 历史数据只存储最终单价
|
|
SET @新数据 = N'最终单价(元/件)=' + CONVERT(NVARCHAR(50), @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);
|
|
|
|
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
|
|
@工序流水号 = 工序流水号,
|
|
@工艺名称 = 工艺名称,
|
|
@工序名称 = 工序名称,
|
|
@零件名称 = 零件名称,
|
|
@图号 = 图号,
|
|
-- 修改人:Ld 修改时间:2026-07-06 09:27:09; 停用历史只记录最终单价
|
|
@旧数据 = N'最终单价(元/件)=' + CONVERT(NVARCHAR(50), ISNULL([最终单价(元/件)], 0))
|
|
FROM [dbo].[车间生产管理工艺_工序工价]
|
|
WHERE 工价流水号 = @Id;
|
|
|
|
UPDATE [dbo].[车间生产管理工艺_工序工价]
|
|
SET 是否启用 = 0,
|
|
修改人 = @操作人,
|
|
修改时间 = @当前时间
|
|
WHERE 工价流水号 = @Id;
|
|
|
|
-- 修改人:Ld 修改时间:2026-07-06 09:27:09; 停用历史只记录最终单价
|
|
SET @变更后 = @旧数据;
|
|
|
|
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''),
|
|
N'最终单价(元/件)=' + CONVERT(NVARCHAR(50), 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
|