更新装配、精工车间、技术中心、仓储模块,新增工序工价、生产审核、三楼仓库可视化等功能及文档SQL

This commit is contained in:
Developer
2026-07-06 11:21:59 +08:00
parent be0ff91e24
commit 9c1f52078d
43 changed files with 8566 additions and 233 deletions

View File

@@ -0,0 +1,94 @@
-- 三楼仓库可视化 - 库位查询存储过程
-- 创建时间: 2026-06-30
-- 说明: 查询三楼仓库库位列表及状态(三段式库位编码: 排号-列号-层号)
-- 状态: 0=空闲, 1=有物料无库存, 2=有库存
-- 矩阵布局: 竖向排号,横向列号
IF EXISTS (SELECT name FROM sys.procedures WHERE name = '仓储管理_三楼仓库库位_查询数据')
DROP PROCEDURE 仓储管理_三楼仓库库位_查询数据
GO
CREATE PROCEDURE [dbo].[仓储管理_三楼仓库库位_查询数据]
@排号_check bit = 0,
@排号 nvarchar(50) = NULL,
@库位编号_check bit = 0,
@库位编号 nvarchar(50) = NULL,
@库位状态_check bit = 0,
@库位状态 int = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT
h.货位名称 AS 库位编号,
h.货位名称 AS 库位名称,
CASE
WHEN EXISTS (SELECT 1 FROM 库存管理_物料与货位对照表 ml WHERE ml.货位流水号 = h.货位流水号 AND ml.货位存量 > 0) THEN 2
WHEN EXISTS (SELECT 1 FROM 库存管理_物料主文件_基本 m WHERE m.货位流水号 = h.货位流水号) THEN 1
ELSE 0
END AS 状态,
PARSENAME(REPLACE(h.货位名称, '-', '.'), 3) AS 排号,
CAST(PARSENAME(REPLACE(h.货位名称, '-', '.'), 2) AS int) AS 列号,
PARSENAME(REPLACE(h.货位名称, '-', '.'), 1) AS 层号,
h.货位流水号
INTO #TempLocations
FROM 库存管理_货位主文件 h
WHERE LEN(h.货位名称) - LEN(REPLACE(h.货位名称, '-', '')) = 2
AND ISNUMERIC(PARSENAME(REPLACE(h.货位名称, '-', '.'), 3)) = 1
DECLARE @sql nvarchar(4000)
SET @sql = 'SELECT 库位编号, 库位名称, 状态, 排号, 列号, 层号, 货位流水号 FROM #TempLocations WHERE 1=1'
IF @排号_check = 1 AND @排号 IS NOT NULL
SET @sql = @sql + ' AND 排号 = @p_row'
IF @库位编号_check = 1 AND @库位编号 IS NOT NULL
SET @sql = @sql + ' AND 库位编号 LIKE ''%'' + @p_code + ''%'''
IF @库位状态_check = 1 AND @库位状态 IS NOT NULL
SET @sql = @sql + ' AND 状态 = @p_status'
SET @sql = @sql + ' ORDER BY 排号, 列号, 层号'
EXEC sp_executesql @sql,
N'@p_row nvarchar(50), @p_code nvarchar(50), @p_status int',
@p_row = @排号, @p_code = @库位编号, @p_status = @库位状态
DROP TABLE #TempLocations
END
GO
-- 三楼仓库可视化 - 库位物料查询存储过程
-- 创建时间: 2026-06-30
-- 说明: 按库位编号查询三楼仓库库位上的物料明细
IF EXISTS (SELECT name FROM sys.procedures WHERE name = '仓储管理_三楼仓库库位物料_查询数据')
DROP PROCEDURE 仓储管理_三楼仓库库位物料_查询数据
GO
CREATE PROCEDURE [dbo].[仓储管理_三楼仓库库位物料_查询数据]
@库位编号_check bit = 0,
@库位编号 nvarchar(50) = NULL
AS
BEGIN
SET NOCOUNT ON;
IF @库位编号_check = 1 AND @库位编号 IS NOT NULL
BEGIN
SELECT
m.物料编码 AS 物料编号,
m.名称 AS 物料名称,
m.代号 AS 图号,
m.规格 AS 规格型号,
ISNULL(ml.货位存量, 0) AS 库存数量,
ISNULL(m.库存计量单位, '台') AS 单位,
ISNULL(ml.批次号, '') AS 批次
FROM 库存管理_货位主文件 h
INNER JOIN 库存管理_物料主文件_基本 m ON h.货位流水号 = m.货位流水号
LEFT JOIN 库存管理_物料与货位对照表 ml ON m.物料流水号 = ml.物料流水号 AND ml.货位流水号 = h.货位流水号
WHERE h.货位名称 = @库位编号
ORDER BY m.物料编码
END
END
GO

View File

@@ -0,0 +1,238 @@
-- 入库记录查询关联入库单去重修正
-- 修改人:Ld 修改时间:2026-07-02 16:50:22;
ALTER PROCEDURE [dbo].[仓储管理_入库记录_查询]
@物料名称_check bit = null,
@物料名称 nvarchar(50)=null,
@物料编码_check bit = null,
@物料编码 nvarchar(50) = null,
@订单号_check bit = null,
@订单号 nvarchar(50) = null,
@类型_check bit = null,
@类型 nvarchar(50) = null,
@入库时间_check bit = null,
@开始时间 datetime = null,
@结束时间 datetime = null,
@采购合同_check bit = null,
@采购合同流水号 int = null,
@供应商_check bit = null,
@供应商名称 nvarchar(50) = null,
@排序名称 int =null,
@排序方式 int =null,
@入库单号_check bit = null,
@入库单号 varchar(50) = null
AS
declare @selectStr nvarchar(4000)
declare @selectStrWhere nvarchar(4000)
set @selectStr =
-- 修改人:Ld 修改时间:2026-07-02 16:50:22; 入库单先按采购合同流水号聚合,避免一合同多入库单行导致入库记录重复。
' select A.*,1 as 打印条码数,库存管理_物料主文件_基本.物料编码,采购管理_供应商.供应商编号,货位名称,isnull(累计库存,0) as 库存,入库单去重.入库单号 from (SELECT *
FROM 仓储管理_采购入库记录_视图
UNION ALL
SELECT *
FROM 仓储管理_自制入库记录_视图
UNION ALL
SELECT *
FROM 仓储管理_退料入库记录_视图
UNION ALL
SELECT *
FROM 仓储管理_通用入库记录_视图
UNION ALL
SELECT *
FROM 仓储管理_耗材采购入库记录_视图
UNION ALL
SELECT *
FROM 仓储管理_备货入库记录_视图) AS A LEFT JOIN
库存管理_物料主文件_基本 ON A.物料流水号 = 库存管理_物料主文件_基本.物料流水号 LEFT JOIN
采购管理_供应商 ON A.供应商流水号 = 采购管理_供应商.供应商流水号 LEFT JOIN
库存管理_货位主文件 ON 库存管理_物料主文件_基本.货位流水号 = 库存管理_货位主文件.货位流水号 LEFT JOIN
库存管理_外购件累计库存 ON 库存管理_物料主文件_基本.物料流水号 = 库存管理_外购件累计库存.物料流水号 LEFT JOIN
(SELECT 采购合同流水号, MAX(入库单号) AS 入库单号 FROM 仓储管理_入库单 GROUP BY 采购合同流水号) AS 入库单去重 ON A.采购合同流水号 = 入库单去重.采购合同流水号 '
set @selectStrWhere = 'where 1 = 1 '
if(@物料名称_check = 1)
set @selectStrWhere = @selectStrWhere+' and replace(isnull(物料名称,''''),'' '','''') + replace(isnull(图号或型号,''''),'' '','''') + 批次编号 like + ''%'' + replace(@物料名称,'' '','''') + ''%'' '
if(@物料编码_check = 1)
set @selectStrWhere = @selectStrWhere+' and replace(isnull(库存管理_物料主文件_基本.物料编码,''''),'' '','''') like + ''%'' + replace(@物料编码,'' '','''') + ''%'' '
if(@入库时间_check = 1)
set @selectStrWhere = @selectStrWhere+' and 入库日期 >=@开始时间 and 入库日期 <=@结束时间 '
if(@订单号_check = 1)
set @selectStrWhere = @selectStrWhere+' and 订单号 like + ''%'' + @订单号 + ''%'' '
if(@类型_check = 1)
set @selectStrWhere = @selectStrWhere+' and A.类型 = @类型 '
if(@采购合同_check = 1)
set @selectStrWhere = @selectStrWhere+' and A.采购合同流水号 = @采购合同流水号 '
if(@供应商_check = 1)
set @selectStrWhere = @selectStrWhere+' and 供应商 = @供应商名称 '
if(@入库单号_check = 1)
set @selectStrWhere = @selectStrWhere+' and 入库单号 like + ''%'' + @入库单号 + ''%'' '
if @排序名称 = 1
begin
if @排序方式 = 1
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 物料编码 DESC'
end
else
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 物料编码 ASC'
end
end
else if @排序名称 = 2
begin
if @排序方式 = 1
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 物料名称 DESC'
end
else
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 物料名称 ASC'
end
end
else if @排序名称 = 3
begin
if @排序方式 = 1
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 图号或型号 DESC'
end
else
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 图号或型号 ASC'
end
end
else if @排序名称 = 4
begin
if @排序方式 = 1
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 货位名称 DESC'
end
else
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 货位名称 ASC'
end
end
else if @排序名称 = 5
begin
if @排序方式 = 1
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 批次编号 DESC'
end
else
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 批次编号 ASC'
end
end
else if @排序名称 = 6
begin
if @排序方式 = 1
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 供应商编号 DESC'
end
else
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 供应商编号 ASC'
end
end
else if @排序名称 = 7
begin
if @排序方式 = 1
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 采购合同编号 DESC'
end
else
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 采购合同编号 ASC'
end
end
else
begin
set @selectStr = @selectStr+@selectStrWhere + ' order by 入库日期 desc '
end
EXEC sp_executesql @selectStr,N'@物料名称 nvarchar(50),@物料编码 nvarchar(50),@开始时间 datetime,@结束时间 datetime,@订单号 nvarchar(50),@类型 nvarchar(50),@采购合同流水号 int,@供应商名称 nvarchar(50),@入库单号 nvarchar(50) ',
@物料名称,@物料编码,@开始时间,@结束时间,@订单号,@类型,@采购合同流水号,@供应商名称,@入库单号
GO
ALTER PROCEDURE [dbo].[仓储管理_入库记录_导出表格_查询]
@入库单号_check bit = null,
@入库单号 nvarchar(50) = null,
@物料名称_check bit = null,
@物料名称 nvarchar(50)=null,
@物料编码_check bit = null,
@物料编码 nvarchar(50) = null,
@订单号_check bit = null,
@订单号 nvarchar(50) = null,
@类型_check bit = null,
@类型 nvarchar(50) = null,
@入库时间_check bit = null,
@开始时间 datetime = null,
@结束时间 datetime = null,
@采购合同_check bit = null,
@采购合同流水号 int = null,
@供应商_check bit = null,
@供应商名称 nvarchar(50) = null
AS
select '入库记录_'+replace(replace(replace(CONVERT(nvarchar(19),GETDATE(),21),':',''),'-',''),' ','-') as tablename,'15' as tabletype
select 256*15 as 类型,256*30 as 物料编号,256*30 as 物料名称,256*20 as [图号/型号],256*15 as 单位,256*15 as 入库数,256*15 as 库位,246*20 as 入库日期,256*30 as 入库单号,
256*30 as 批次编号,256*15 as 供应商编号,256*30 as 供应商,256*20 as 采购合同,256*30 as 订单号,256*20 as [产品/组件名称],256*20 as 采购备注
select 0 as 类型,0 as 物料编号,0 as 物料名称,0 as [图号/型号],0 as 单位,1 as 入库数,0 as 库位,0 as 入库日期,0 as 入库单号
,0 as 批次编号,0 as 供应商编号,0 as 供应商,0 as 采购合同,0 as 订单号,0 as [产品/组件名称],0 as 采购备注
declare @selectStr nvarchar(4000)
declare @selectStrWhere nvarchar(4000)
set @selectStr =
-- 修改人:Ld 修改时间:2026-07-02 16:50:22; 入库单先按采购合同流水号聚合,保持导出与页面查询去重口径一致。
' select A.类型,库存管理_物料主文件_基本.物料编码 AS 物料编号,A.物料名称,A.图号或型号 AS [图号/型号],A.单位,A.入库数,货位名称,A.入库日期,
A.批次编号,采购管理_供应商.供应商编号,A.供应商,A.采购合同编号 AS 采购合同,A.订单号,A.产品名称 AS [产品/组件名称],A.备注,入库单去重.入库单号 from (SELECT *
FROM 仓储管理_采购入库记录_视图
UNION ALL
SELECT *
FROM 仓储管理_自制入库记录_视图
UNION ALL
SELECT *
FROM 仓储管理_退料入库记录_视图
UNION ALL
SELECT *
FROM 仓储管理_通用入库记录_视图
UNION ALL
SELECT *
FROM 仓储管理_耗材采购入库记录_视图
UNION ALL
SELECT *
FROM 仓储管理_备货入库记录_视图) AS A LEFT JOIN
库存管理_物料主文件_基本 ON A.物料流水号 = 库存管理_物料主文件_基本.物料流水号 LEFT JOIN
采购管理_供应商 ON A.供应商流水号 = 采购管理_供应商.供应商流水号 LEFT JOIN
库存管理_货位主文件 ON 库存管理_物料主文件_基本.货位流水号 = 库存管理_货位主文件.货位流水号 LEFT JOIN
(SELECT 采购合同流水号, MAX(入库单号) AS 入库单号 FROM 仓储管理_入库单 GROUP BY 采购合同流水号) AS 入库单去重 ON A.采购合同流水号 = 入库单去重.采购合同流水号 '
set @selectStrWhere = 'where 1 = 1 '
if(@物料名称_check = 1)
set @selectStrWhere = @selectStrWhere+' and replace(isnull(物料名称,''''),'' '','''') + replace(isnull(图号或型号,''''),'' '','''') like + ''%'' + replace(@物料名称,'' '','''') + ''%'' '
if(@物料编码_check = 1)
set @selectStrWhere = @selectStrWhere+' and replace(isnull(库存管理_物料主文件_基本.物料编码,''''),'' '','''') like + ''%'' + replace(@物料编码,'' '','''') + ''%'' '
if(@入库时间_check = 1)
set @selectStrWhere = @selectStrWhere+' and 入库日期 >=@开始时间 and 入库日期 <=@结束时间 '
if(@订单号_check = 1)
set @selectStrWhere = @selectStrWhere+' and 订单号 like + ''%'' + @订单号 + ''%'' '
if(@类型_check = 1)
set @selectStrWhere = @selectStrWhere+' and A.类型 = @类型 '
if(@采购合同_check = 1)
set @selectStrWhere = @selectStrWhere+' and 采购合同流水号 = @采购合同流水号 '
if(@供应商_check = 1)
set @selectStrWhere = @selectStrWhere+' and 供应商 = @供应商名称 '
if(@入库单号_check = 1)
set @selectStrWhere = @selectStrWhere+' and 入库单号 like + ''%'' + @入库单号 + ''%'' '
set @selectStr = @selectStr+@selectStrWhere+'order by 入库日期 DESC'
EXEC sp_executesql @selectStr,N'@物料名称 nvarchar(50),@物料编码 nvarchar(50),@开始时间 datetime,@结束时间 datetime,@订单号 nvarchar(50),@类型 nvarchar(50),@采购合同流水号 int,@供应商名称 nvarchar(50),@入库单号 nvarchar(50) ',
@物料名称,@物料编码,@开始时间,@结束时间,@订单号,@类型,@采购合同流水号,@供应商名称,@入库单号
GO

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,236 @@
USE [ERPTOOL_JY_20250826Back]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- 员工工时汇总增加工价总价,工价取工序工价当前启用最终单价,总价=完成数量*工价;修改人:Ld 修改时间:2026-07-06 09:12:38;
ALTER PROCEDURE [dbo].[车间生产管理_工人工时统计_查询数据]
@开始时间 DATETIME = NULL,
@结束时间 DATETIME = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT
SUM(a.工时) AS 加工工时,
SUM(a.完成数量) AS 总数量,
SUM(a.总价) AS 总价,
a.姓名 AS 操作者,
a.操作者编号
FROM (
SELECT
ISNULL(f.扫码工时, 0) AS 工时,
p.姓名,
f.操作者编号,
f.完成日期,
f.完成数量,
ISNULL(f.完成数量, 0) * ISNULL(price.工价, 0) AS 总价
FROM dbo.设备管理_零件工序_工序完成过程情况 f
INNER JOIN dbo.人事档案管理_人员名单 p ON f.操作者编号 = p.人员编号
OUTER APPLY (
SELECT TOP 1 ISNULL(pp.[最终单价(元/件)], 0) AS 工价
FROM dbo.车间生产管理工艺_工序工价 pp
WHERE pp.工序流水号 = f.工序流水号
AND ISNULL(pp.是否启用, 1) = 1
ORDER BY ISNULL(pp.生效日期, CONVERT(DATE, '1900-01-01')) DESC, pp.修改时间 DESC, pp.工价流水号 DESC
) price
WHERE f.完成日期 >= @开始时间
AND f.完成日期 <= @结束时间
) a
GROUP BY a.姓名, a.操作者编号;
END
GO
-- 员工工时明细增加工价总价,明细按零件名称+图号+工序匹配工序工价;修改人:Ld 修改时间:2026-07-06 09:12:38;
ALTER PROCEDURE [dbo].[精工车间_员工工时统计_详情_查询数据]
@操作者编号 INT = 62,
@开始时间 DATETIME = NULL,
@结束时间 DATETIME = NULL,
@排序名称 INT = NULL,
@排序方式 INT = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT
data.*,
data.加工时长 / NULLIF(data.完成数, 0) AS 单个工时,
ISNULL(price.工价, 0) AS 工价,
ISNULL(data.完成数, 0) * ISNULL(price.工价, 0) AS 总价
FROM dbo.车间生产管理_零件工序加工时长_视图 data
OUTER APPLY (
SELECT TOP 1 ISNULL(pp.[最终单价(元/件)], 0) AS 工价
FROM dbo.车间生产管理工艺_工序工价 pp
WHERE pp.零件名称 = data.零件名称
AND pp.图号 = data.图号
AND pp.工序名称 = data.工序
AND ISNULL(pp.是否启用, 1) = 1
ORDER BY ISNULL(pp.生效日期, CONVERT(DATE, '1900-01-01')) DESC, pp.修改时间 DESC, pp.工价流水号 DESC
) price
WHERE data.操作者编号 = @操作者编号
AND data.结束加工 >= @开始时间
AND data.结束加工 < DATEADD(DAY, 1, @结束时间)
ORDER BY
CASE WHEN @排序名称 = 1 AND @排序方式 = 1 THEN data.结束加工 END DESC,
CASE WHEN @排序名称 = 1 AND @排序方式 <> 1 THEN data.结束加工 END ASC,
CASE WHEN ISNULL(@排序名称, 0) <> 1 THEN data.结束加工 END DESC;
END
GO
-- 设备工时汇总增加工价总价,工价取工序工价当前启用最终单价,总价=完成数量*工价;修改人:Ld 修改时间:2026-07-06 09:12:38;
ALTER PROCEDURE [dbo].[车间生产管理_设备工时统计_查询数据]
@开始时间 DATETIME = NULL,
@结束时间 DATETIME = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT
SUM(a.工时) AS 加工工时,
a.工位号 AS 设备,
SUM(a.完成数量) AS 总数量,
SUM(a.总价) AS 总价
FROM (
SELECT
ISNULL(f.扫码工时, 0) AS 工时,
e.设备名称 + N'-' + f.工位号 AS 工位号,
f.完成数量,
ISNULL(f.完成数量, 0) * ISNULL(price.工价, 0) AS 总价
FROM dbo.设备管理_零件工序_工序完成过程情况 f
INNER JOIN dbo.基础数据_设备工位点检表 e ON f.工位号 = e.工位号
OUTER APPLY (
SELECT TOP 1 ISNULL(pp.[最终单价(元/件)], 0) AS 工价
FROM dbo.车间生产管理工艺_工序工价 pp
WHERE pp.工序流水号 = f.工序流水号
AND ISNULL(pp.是否启用, 1) = 1
ORDER BY ISNULL(pp.生效日期, CONVERT(DATE, '1900-01-01')) DESC, pp.修改时间 DESC, pp.工价流水号 DESC
) price
WHERE f.完成日期 >= @开始时间
AND f.完成日期 <= @结束时间
) a
GROUP BY a.工位号;
END
GO
-- 设备工时明细增加工价总价,明细按零件名称+图号+工序匹配工序工价;修改人:Ld 修改时间:2026-07-06 09:12:38;
ALTER PROCEDURE [dbo].[精工车间_设备工时统计_详情_查询数据]
@设备 NVARCHAR(50) = NULL,
@开始时间 DATETIME = NULL,
@结束时间 DATETIME = NULL,
@排序名称 INT = NULL,
@排序方式 INT = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT
data.*,
ISNULL(price.工价, 0) AS 工价,
ISNULL(data.完成数, 0) * ISNULL(price.工价, 0) AS 总价
FROM dbo.车间生产管理_零件工序加工时长_视图 data
OUTER APPLY (
SELECT TOP 1 ISNULL(pp.[最终单价(元/件)], 0) AS 工价
FROM dbo.车间生产管理工艺_工序工价 pp
WHERE pp.零件名称 = data.零件名称
AND pp.图号 = data.图号
AND pp.工序名称 = data.工序
AND ISNULL(pp.是否启用, 1) = 1
ORDER BY ISNULL(pp.生效日期, CONVERT(DATE, '1900-01-01')) DESC, pp.修改时间 DESC, pp.工价流水号 DESC
) price
WHERE data.工位号 = @设备
AND data.结束加工 >= @开始时间
AND data.结束加工 <= @结束时间
ORDER BY
CASE WHEN @排序名称 = 1 AND @排序方式 = 1 THEN data.结束加工 END DESC,
CASE WHEN @排序名称 = 1 AND @排序方式 <> 1 THEN data.结束加工 END ASC,
CASE WHEN ISNULL(@排序名称, 0) <> 1 THEN data.结束加工 END DESC;
END
GO
-- 员工工时导出增加工价总价列,保持与页面明细一致;修改人:Ld 修改时间:2026-07-06 09:12:38;
ALTER PROCEDURE [dbo].[报表_精工车间_员工工时统计_查询数据]
@开始时间 DATETIME = NULL,
@结束时间 DATETIME = NULL,
@排序名称 INT = NULL,
@排序方式 INT = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT N'库存_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '17' AS tabletype;
SELECT
256 * 15 AS 工序,
256 * 10 AS 工序顺序,
256 * 30 AS 零件名称,
256 * 30 AS 零件图号,
256 * 20 AS 物料编码,
256 * 10 AS 加工数,
256 * 15 AS 加工工时M,
256 * 10 AS 暂停时长,
256 * 10 AS 工价,
256 * 12 AS 总价,
256 * 30 AS 开始加工时间,
256 * 30 AS 完成时间,
256 * 10 AS 操作者,
256 * 25 AS 设备,
246 * 25 AS 订单编号,
246 * 25 AS 产品名称;
SELECT
0 AS 工序,
1 AS 工序顺序,
0 AS 零件名称,
0 AS 零件图号,
0 AS 物料编号,
1 AS 加工数,
1 AS 加工工时M,
1 AS 暂停时长,
1 AS 工价,
1 AS 总价,
0 AS 开始加工时间,
0 AS 完成时间,
0 AS 操作者,
0 AS 设备,
0 AS 订单编号,
0 AS 产品名称;
SELECT
data.工序,
data.工序顺序,
data.零件名称,
data.图号 AS 零件图号,
data.物料编码,
data.完成数 AS 加工数,
data.加工时长 AS 加工工时M,
data.暂停时间 AS 暂停时长,
ISNULL(price.工价, 0) AS 工价,
ISNULL(data.完成数, 0) * ISNULL(price.工价, 0) AS 总价,
data.开始加工 AS 开始加工时间,
data.结束加工 AS 完成时间,
data.操作者,
data.工位号 AS 设备,
data.订单编号,
data.产品名称
FROM dbo.车间生产管理_零件工序加工时长_视图 data
OUTER APPLY (
SELECT TOP 1 ISNULL(pp.[最终单价(元/件)], 0) AS 工价
FROM dbo.车间生产管理工艺_工序工价 pp
WHERE pp.零件名称 = data.零件名称
AND pp.图号 = data.图号
AND pp.工序名称 = data.工序
AND ISNULL(pp.是否启用, 1) = 1
ORDER BY ISNULL(pp.生效日期, CONVERT(DATE, '1900-01-01')) DESC, pp.修改时间 DESC, pp.工价流水号 DESC
) price
WHERE data.结束加工 >= @开始时间
AND data.结束加工 <= @结束时间
ORDER BY
CASE WHEN @排序名称 = 1 AND @排序方式 = 1 THEN data.结束加工 END DESC,
CASE WHEN @排序名称 = 1 AND @排序方式 <> 1 THEN data.结束加工 END ASC,
CASE WHEN ISNULL(@排序名称, 0) <> 1 THEN data.结束加工 END DESC;
END
GO

View File

@@ -0,0 +1,381 @@
-- 生产完成审核查询与审核处理 修改人:Ld 修改时间:2026-07-02 13:57:18;
IF OBJECT_ID(N'[dbo].[机加工MES_加工完成整修审核_查询数据]', N'P') IS NOT NULL
DROP PROCEDURE [dbo].[机加工MES_加工完成整修审核_查询数据];
GO
CREATE PROCEDURE [dbo].[机加工MES_加工完成整修审核_查询数据]
@审核状态_check INT = 0,
@审核状态 NVARCHAR(20) = N'',
@审核类型_check INT = 0,
@审核类型 NVARCHAR(50) = N'',
@操作者_check INT = 0,
@操作者 NVARCHAR(100) = N'',
@时间_check INT = 0,
@开始时间 NVARCHAR(20) = N'',
@结束时间 NVARCHAR(20) = 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 AuditData AS (
SELECT
ROW_NUMBER() OVER (
ORDER BY
CASE WHEN A.审核状态 = N'待审核' THEN 0 ELSE 1 END,
A.提交时间 DESC,
A.id DESC
) AS RowNum,
A.id,
A.审核类型,
A.审核状态,
V.订单号,
V.产品名称,
V.零件名称,
V.零件图号,
V.工序,
V.工艺计划流水号,
V.数量 AS 投产数量,
V.已完成数,
V.工序顺序,
V.物料编码,
V.材料,
A.工序流水号,
A.工作者考勤编号,
工作者.姓名 AS 工作者姓名,
A.完成数量,
A.完成类型,
A.录工票人员编号,
录工票人员.姓名 AS 录工票人员姓名,
A.工位号,
ISNULL(SB.设备名称, A.设备名) AS 工位设备名称,
A.备注,
A.剩余工时,
A.剩余数量,
A.设备号,
A.设备名,
A.操作者,
ISNULL(操作者人员.姓名, A.操作者) AS 操作者姓名,
A.整修状态,
A.整修记录id,
A.整修方案,
CONVERT(VARCHAR(19), A.开始时间, 120) AS 开始时间,
CONVERT(VARCHAR(19), A.结束时间, 120) AS 结束时间,
CONVERT(VARCHAR(19), A.提交时间, 120) AS 提交时间,
A.审核人,
审核人员.姓名 AS 审核人姓名,
CONVERT(VARCHAR(19), A.审核时间, 120) AS 审核时间,
A.审核意见,
A.修改人,
CONVERT(VARCHAR(19), A.修改时间, 120) AS 修改时间
FROM [dbo].[MES_机加工MES_加工完成整修审核表] AS A
LEFT JOIN [dbo].[车间生产管理_零件工序_视图] AS V
ON A.工序流水号 = V.工序流水号
LEFT JOIN [dbo].[人事档案管理_人员名单] AS 工作者
ON A.工作者考勤编号 = 工作者.考勤编号
LEFT JOIN [dbo].[人事档案管理_人员名单] AS 录工票人员
ON A.录工票人员编号 = 录工票人员.序号
OR A.录工票人员编号 = 录工票人员.人员编号
LEFT JOIN [dbo].[人事档案管理_人员名单] AS 操作者人员
ON A.操作者 = CONVERT(NVARCHAR(100), 操作者人员.人员编号)
OR A.操作者 = CONVERT(NVARCHAR(100), 操作者人员.序号)
OR A.操作者 = 操作者人员.姓名
LEFT JOIN [dbo].[人事档案管理_人员名单] AS 审核人员
ON A.审核人 = CONVERT(NVARCHAR(100), 审核人员.人员编号)
OR A.审核人 = CONVERT(NVARCHAR(100), 审核人员.序号)
OR A.审核人 = 审核人员.姓名
LEFT JOIN [dbo].[基础数据_设备工位点检表] AS SB
ON A.工位号 = SB.工位号
WHERE (@审核状态_check = 0 OR A.审核状态 = @审核状态)
AND (@审核类型_check = 0 OR A.审核类型 = @审核类型)
AND (@操作者_check = 0 OR ISNULL(操作者人员.姓名, ISNULL(A.操作者, N'')) LIKE N'%' + @操作者 + N'%')
AND (@时间_check = 0 OR CONVERT(DATE, A.提交时间) BETWEEN CONVERT(DATE, @开始时间) AND CONVERT(DATE, @结束时间))
)
SELECT
id,
审核类型,
审核状态,
订单号,
产品名称,
零件名称,
零件图号,
工序,
工艺计划流水号,
投产数量,
已完成数,
工序顺序,
物料编码,
材料,
工序流水号,
工作者考勤编号,
工作者姓名,
完成数量,
完成类型,
录工票人员编号,
录工票人员姓名,
工位号,
工位设备名称,
备注,
剩余工时,
剩余数量,
设备号,
设备名,
操作者,
操作者姓名,
整修状态,
整修记录id,
整修方案,
开始时间,
结束时间,
提交时间,
审核人,
审核人姓名,
审核时间,
审核意见,
修改人,
修改时间
FROM AuditData
WHERE RowNum BETWEEN ((@PageCurrent - 1) * @PageSize + 1) AND (@PageCurrent * @PageSize)
ORDER BY RowNum;
SELECT COUNT(1) AS total
FROM [dbo].[MES_机加工MES_加工完成整修审核表] AS A
LEFT JOIN [dbo].[人事档案管理_人员名单] AS 操作者人员
ON A.操作者 = CONVERT(NVARCHAR(100), 操作者人员.人员编号)
OR A.操作者 = CONVERT(NVARCHAR(100), 操作者人员.序号)
OR A.操作者 = 操作者人员.姓名
WHERE (@审核状态_check = 0 OR A.审核状态 = @审核状态)
AND (@审核类型_check = 0 OR A.审核类型 = @审核类型)
AND (@操作者_check = 0 OR ISNULL(操作者人员.姓名, ISNULL(A.操作者, N'')) LIKE N'%' + @操作者 + N'%')
AND (@时间_check = 0 OR CONVERT(DATE, A.提交时间) BETWEEN CONVERT(DATE, @开始时间) AND CONVERT(DATE, @结束时间));
END;
GO
-- 生产完成审核状态更新,审核通过时接入原 MES 完工链路 修改人:Ld 修改时间:2026-07-02 14:55:23;
IF OBJECT_ID(N'[dbo].[机加工MES_加工完成整修审核_审核数据]', N'P') IS NOT NULL
DROP PROCEDURE [dbo].[机加工MES_加工完成整修审核_审核数据];
GO
CREATE PROCEDURE [dbo].[机加工MES_加工完成整修审核_审核数据]
@审核流水号 INT,
@审核状态 NVARCHAR(20),
@审核人 NVARCHAR(100) = NULL,
@审核意见 NVARCHAR(1000) = NULL,
@审核完成数量 FLOAT = NULL,
@审核加工开始时间 DATETIME = NULL,
@审核加工完成时间 DATETIME = NULL,
@审核整修开始时间 DATETIME = NULL,
@审核整修结束时间 DATETIME = NULL,
@审核整修方案 NVARCHAR(1000) = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @审核类型 NVARCHAR(50);
DECLARE @工序流水号 INT;
DECLARE @工作者考勤编号 NVARCHAR(50);
DECLARE @完成数量 FLOAT;
DECLARE @完成类型 INT;
DECLARE @录工票人员编号 INT;
DECLARE @工位号 NVARCHAR(100);
DECLARE @备注 NVARCHAR(500);
DECLARE @设备号 NVARCHAR(100);
DECLARE @整修记录id INT;
DECLARE @整修方案 NVARCHAR(1000);
DECLARE @剩余工时 FLOAT;
DECLARE @剩余数量 INT;
DECLARE @原流程结果 NVARCHAR(100);
DECLARE @完成过程流水号 INT;
DECLARE @是否本过程开启事务 BIT;
DECLARE @原流程返回 TABLE (result NVARCHAR(100));
IF NOT EXISTS (
SELECT 1
FROM [dbo].[MES_机加工MES_加工完成整修审核表]
WHERE id = @审核流水号
AND 审核状态 = N'待审核'
)
BEGIN
SELECT N'0' AS result, N'该审核记录不存在或已审核' AS message;
RETURN;
END;
IF @审核状态 NOT IN (N'审核通过', N'审核不通过')
BEGIN
SELECT N'0' AS result, N'审核状态不正确' AS message;
RETURN;
END;
SELECT
@审核类型 = 审核类型,
@工序流水号 = 工序流水号,
@工作者考勤编号 = 工作者考勤编号,
@完成数量 = ISNULL(@审核完成数量, 完成数量),
@完成类型 = 完成类型,
@录工票人员编号 = 录工票人员编号,
@工位号 = 工位号,
@备注 = 备注,
@设备号 = 设备号,
@整修记录id = 整修记录id,
@整修方案 = ISNULL(@审核整修方案, 整修方案)
FROM [dbo].[MES_机加工MES_加工完成整修审核表]
WHERE id = @审核流水号
AND 审核状态 = N'待审核';
BEGIN TRY
SET @是否本过程开启事务 = CASE WHEN @@TRANCOUNT = 0 THEN 1 ELSE 0 END;
IF @是否本过程开启事务 = 1
BEGIN
BEGIN TRAN;
END
ELSE
BEGIN
SAVE TRAN 生产完成审核保存点;
END;
IF @审核状态 = N'审核通过' AND @审核类型 = N'加工完成'
BEGIN
IF @工序流水号 IS NULL OR @工作者考勤编号 IS NULL OR @完成数量 IS NULL OR @完成类型 IS NULL OR @录工票人员编号 IS NULL
BEGIN
IF @是否本过程开启事务 = 1 ROLLBACK TRAN ELSE ROLLBACK TRAN 生产完成审核保存点;
SELECT N'0' AS result, N'审核记录缺少原 MES 完工必需参数' AS message;
RETURN;
END;
IF @完成数量 <= 0 OR @完成数量 <> FLOOR(@完成数量)
BEGIN
IF @是否本过程开启事务 = 1 ROLLBACK TRAN ELSE ROLLBACK TRAN 生产完成审核保存点;
SELECT N'0' AS result, N'完成数量必须为大于 0 的整数' AS message;
RETURN;
END;
INSERT INTO @原流程返回(result)
EXEC [dbo].[设备管理_零件工序_工序完成过程情况_增加数据]
@工序流水号 = @工序流水号,
@工作者考勤编号 = @工作者考勤编号,
@完成数量 = @完成数量,
@完成类型 = @完成类型,
@录工票人员编号 = @录工票人员编号,
@工位号 = @工位号,
@备注 = @备注,
@剩余工时 = @剩余工时 OUTPUT,
@剩余数量 = @剩余数量 OUTPUT;
SELECT TOP 1 @原流程结果 = result FROM @原流程返回;
IF ISNULL(@原流程结果, N'') <> N'成功'
BEGIN
IF @是否本过程开启事务 = 1 ROLLBACK TRAN ELSE ROLLBACK TRAN 生产完成审核保存点;
SELECT N'0' AS result, ISNULL(@原流程结果, N'原 MES 完工流程执行失败') AS message;
RETURN;
END;
IF @审核加工完成时间 IS NOT NULL
BEGIN
SELECT @完成过程流水号 = MAX(完成过程流水号)
FROM [dbo].[设备管理_零件工序_工序完成过程情况]
WHERE 工序流水号 = @工序流水号
AND 录工票人员编号 = @录工票人员编号
AND 完成数量 = @完成数量;
UPDATE [dbo].[设备管理_零件工序_工序完成过程情况]
SET 加工开始时间 = ISNULL(@审核加工开始时间, 加工开始时间),
加工完成时间 = @审核加工完成时间,
完成日期 = CONVERT(DATE, @审核加工完成时间),
操作日期 = @审核加工完成时间,
修改人员 = CASE WHEN ISNUMERIC(@审核人) = 1 THEN CAST(@审核人 AS INT) ELSE 修改人员 END,
修改时间 = GETDATE()
WHERE 完成过程流水号 = @完成过程流水号;
UPDATE [dbo].[车间生产管理工艺_零件工序]
SET 完成日期 = CASE WHEN 完成日期 IS NULL OR 完成数量 >= ISNULL(完成数量, 0) THEN @审核加工完成时间 ELSE 完成日期 END
WHERE 工序流水号 = @工序流水号;
END;
IF @审核加工开始时间 IS NOT NULL AND @审核加工完成时间 IS NULL
BEGIN
SELECT @完成过程流水号 = MAX(完成过程流水号)
FROM [dbo].[设备管理_零件工序_工序完成过程情况]
WHERE 工序流水号 = @工序流水号
AND 录工票人员编号 = @录工票人员编号
AND 完成数量 = @完成数量;
UPDATE [dbo].[设备管理_零件工序_工序完成过程情况]
SET 加工开始时间 = @审核加工开始时间,
修改人员 = CASE WHEN ISNUMERIC(@审核人) = 1 THEN CAST(@审核人 AS INT) ELSE 修改人员 END,
修改时间 = GETDATE()
WHERE 完成过程流水号 = @完成过程流水号;
END;
END;
IF @审核状态 = N'审核通过' AND @审核类型 = N'结束整修'
BEGIN
IF @整修记录id IS NULL OR @设备号 IS NULL
BEGIN
IF @是否本过程开启事务 = 1 ROLLBACK TRAN ELSE ROLLBACK TRAN 生产完成审核保存点;
SELECT N'0' AS result, N'审核记录缺少整修结束必需参数' AS message;
RETURN;
END;
UPDATE [dbo].[设备管理_整修]
SET 整修开始时间 = CASE WHEN @审核整修开始时间 IS NULL THEN 整修开始时间 ELSE CONVERT(VARCHAR(20), @审核整修开始时间, 120) END,
整修结束时间 = CONVERT(VARCHAR(20), ISNULL(@审核整修结束时间, GETDATE()), 120),
整修状态 = N'1',
整修方案 = @整修方案
WHERE id = @整修记录id
AND 设备号 = @设备号;
END;
UPDATE [dbo].[MES_机加工MES_加工完成整修审核表]
SET 审核状态 = @审核状态,
审核人 = @审核人,
审核时间 = GETDATE(),
审核意见 = ISNULL(@审核意见, N''),
完成数量 = CASE WHEN @审核状态 = N'审核通过' AND @审核类型 = N'加工完成' THEN @完成数量 ELSE 完成数量 END,
开始时间 = CASE
WHEN @审核状态 = N'审核通过' AND @审核类型 = N'加工完成' AND @审核加工开始时间 IS NOT NULL THEN @审核加工开始时间
WHEN @审核状态 = N'审核通过' AND @审核类型 = N'结束整修' AND @审核整修开始时间 IS NOT NULL THEN @审核整修开始时间
ELSE 开始时间
END,
结束时间 = CASE
WHEN @审核状态 = N'审核通过' AND @审核类型 = N'加工完成' AND @审核加工完成时间 IS NOT NULL THEN @审核加工完成时间
WHEN @审核状态 = N'审核通过' AND @审核类型 = N'结束整修' THEN ISNULL(@审核整修结束时间, GETDATE())
ELSE 结束时间
END,
整修方案 = CASE WHEN @审核状态 = N'审核通过' AND @审核类型 = N'结束整修' THEN @整修方案 ELSE 整修方案 END,
剩余工时 = CASE WHEN @审核状态 = N'审核通过' AND @审核类型 = N'加工完成' THEN @剩余工时 ELSE 剩余工时 END,
剩余数量 = CASE WHEN @审核状态 = N'审核通过' AND @审核类型 = N'加工完成' THEN @剩余数量 ELSE 剩余数量 END,
修改人 = N'Ld',
修改时间 = GETDATE()
WHERE id = @审核流水号
AND 审核状态 = N'待审核';
IF @是否本过程开启事务 = 1
BEGIN
COMMIT TRAN;
END;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
BEGIN
IF ISNULL(@是否本过程开启事务, 1) = 1
BEGIN
ROLLBACK TRAN;
END
ELSE
BEGIN
ROLLBACK TRAN 生产完成审核保存点;
END;
END;
SELECT N'0' AS result, ERROR_MESSAGE() AS message;
RETURN;
END CATCH;
SELECT N'1' AS result;
END;
GO

View File

@@ -0,0 +1,259 @@
USE [ERPTOOL_JY_20250826Back]
GO
-- 核心物料搜索栏增加物料编码查询条件
-- 需求提出人:罗伟
-- 说明:以下过程补充 @物料编码_check、@物料编码 可选参数。未传入物料编码时保持原查询逻辑不变。
-- 备注:修改人:Ld 修改时间:2026-06-29 14:30:00
ALTER PROCEDURE [dbo].[仓储管理_物料记录_查询新]
@物料名称_check bit = null,
@物料名称 nvarchar(50) = null,
@物料编码_check bit = null,
@物料编码 nvarchar(50) = null,
@时间_check bit = null,
@开始时间 datetime = null,
@结束时间 datetime = null
AS
BEGIN
declare @selectStr nvarchar(4000)
declare @selectStrWhere nvarchar(4000)
set @selectStr =
'SELECT row_number() OVER (ORDER BY b.记录时间) AS id, d.*, CONVERT(int, isnull(出库数, 0)) AS 出库数, isnull(入库数, 0) AS 入库数, 库存管理_货位主文件.货位名称, 单位名称_基础表.单位, isnull(库存数, 0) AS 库存数, 记录时间
FROM (SELECT 物料流水号, 库存数, CONVERT(varchar(10), 操作日期, 23) AS 记录时间 FROM 库存管理_每日库存结余表) AS b
LEFT JOIN (SELECT sum(领料数) AS 出库数, 物料流水号, 领料日期 FROM 仓储管理_出库记录_视图 GROUP BY 物料流水号, 领料日期) AS c ON b.物料流水号 = c.物料流水号 AND c.领料日期 = b.记录时间
LEFT JOIN (SELECT sum(入库数) AS 入库数, 物料流水号, 入库日期 FROM 仓储管理_入库记录_视图 GROUP BY 物料流水号, 入库日期) AS a ON b.物料流水号 = a.物料流水号 AND a.入库日期 = b.记录时间
INNER JOIN (SELECT 物料编码, 名称, 代号, 物料流水号, 货位流水号, 单位流水号 FROM 库存管理_物料主文件_基本) AS d ON b.物料流水号 = d.物料流水号
LEFT JOIN 单位名称_基础表 ON d.单位流水号 = 单位名称_基础表.单位流水号
LEFT JOIN 库存管理_货位主文件 ON d.货位流水号 = 库存管理_货位主文件.货位流水号 '
set @selectStrWhere = ' where 1 = 1 '
if(@物料名称_check = 1)
set @selectStrWhere = @selectStrWhere + ' and replace(isnull(名称,''''),'' '','''') + replace(isnull(代号,''''),'' '','''') + replace(isnull(物料编码,''''),'' '','''') like ''%'' + replace(@物料名称,'' '','''') + ''%'' '
if(@物料编码_check = 1)
set @selectStrWhere = @selectStrWhere + ' and replace(isnull(物料编码,''''),'' '','''') like ''%'' + replace(@物料编码,'' '','''') + ''%'' '
if(@时间_check = 1)
set @selectStrWhere = @selectStrWhere + ' and 记录时间 >= convert(varchar(10),@开始时间,23) and 记录时间 <= convert(varchar(10),@结束时间,23) '
set @selectStr = @selectStr + @selectStrWhere + ' order by 记录时间 desc'
EXEC sp_executesql @selectStr,
N'@物料名称 nvarchar(50),@物料编码 nvarchar(50),@开始时间 datetime,@结束时间 datetime',
@物料名称,@物料编码,@开始时间,@结束时间
END
GO
ALTER PROCEDURE [dbo].[仓储管理_物料记录_查询]
@物料名称_check bit = null,
@物料名称 nvarchar(50) = null,
@物料编码_check bit = null,
@物料编码 nvarchar(50) = null,
@时间_check bit = null,
@开始时间 datetime = null,
@结束时间 datetime = null
AS
BEGIN
declare @selectStr nvarchar(4000)
set @selectStr =
' select sum(convert(int,isnull(出库数,0))) as 出库数,sum(isnull(入库数,0)) as 入库数,sum(isnull(库存数,0)) as 库存数 from (select 物料流水号,库存数,convert(varchar(10),操作日期,23) as 记录时间 from 库存管理_每日库存结余表 where 1 = 1 '
if(@时间_check = 1)
set @selectStr = @selectStr + ' and convert(varchar(10),操作日期,23) >= @开始时间 and convert(varchar(10),操作日期,23) <= @结束时间 '
set @selectStr = @selectStr +
' ) as b left join (select sum(领料数) as 出库数,物料流水号,领料日期 from 仓储管理_出库记录_视图 where 1=1 '
if(@时间_check = 1)
set @selectStr = @selectStr + ' and 领料日期 >= @开始时间 and 领料日期 <= @结束时间 '
set @selectStr = @selectStr +
' group by 物料流水号,领料日期 ) as c on b.物料流水号 = c.物料流水号 and c.领料日期 = b.记录时间 left join (select sum(入库数) as 入库数,物料流水号,入库日期 from 仓储管理_入库记录_视图 where 1=1 '
if(@时间_check = 1)
set @selectStr = @selectStr + ' and 入库日期 >= @开始时间 and 入库日期 <= @结束时间 '
set @selectStr = @selectStr +
' group by 物料流水号,入库日期 ) as a on b.物料流水号 = a.物料流水号 and a.入库日期 = b.记录时间
inner join (select 物料编码,名称,代号,物料流水号,货位流水号,单位流水号 from 库存管理_物料主文件_基本 where 1 = 1 '
if(@物料名称_check = 1)
set @selectStr = @selectStr + ' and replace(isnull(名称,''''),'' '','''') + replace(isnull(代号,''''),'' '','''') + replace(isnull(物料编码,''''),'' '','''') like ''%'' + replace(@物料名称,'' '','''') + ''%'' '
if(@物料编码_check = 1)
set @selectStr = @selectStr + ' and replace(isnull(物料编码,''''),'' '','''') like ''%'' + replace(@物料编码,'' '','''') + ''%'' '
set @selectStr = @selectStr +
' ) as d on b.物料流水号 = d.物料流水号 left join 单位名称_基础表 on d.单位流水号 = 单位名称_基础表.单位流水号
left join 库存管理_货位主文件 on d.货位流水号 = 库存管理_货位主文件.货位流水号 '
EXEC sp_executesql @selectStr,
N'@物料名称 nvarchar(50),@物料编码 nvarchar(50),@开始时间 datetime,@结束时间 datetime',
@物料名称,@物料编码,@开始时间,@结束时间
END
GO
ALTER PROCEDURE [dbo].[报表_仓储管理_物料记录_查询]
@物料名称_check bit = null,
@物料名称 nvarchar(50) = null,
@物料编码_check bit = null,
@物料编码 nvarchar(50) = null,
@时间_check bit = null,
@开始时间 datetime = null,
@结束时间 datetime = null
AS
BEGIN
select '物料记录_' + replace(replace(replace(CONVERT(nvarchar(19),GETDATE(),21),':',''),'-',''),' ','-') as tablename,'15' as tabletype
select 256*15 as 物料编码,256*30 as 名称,256*30 as 代号,256*10 as 单位,256*15 as 出库数,256*15 as 入库数,256*15 as 库存数,256*15 as 库位,256*15 as 记录日期
select 0 as 物料编码,0 as 名称,0 as 代号,0 as 单位,1 as 出库数,1 as 入库数,1 as 库存数,0 as 库位,0 as 记录日期
declare @selectStr nvarchar(4000)
set @selectStr =
' select d.物料编码,名称,代号,单位名称_基础表.单位,isnull(出库数,0) as 出库数,isnull(入库数,0) as 入库数,isnull(库存数,0) as 库存数,库存管理_货位主文件.货位名称 as 库位,记录时间 from (select 物料流水号,库存数,convert(varchar(10),操作日期,23) as 记录时间 from 库存管理_每日库存结余表 where 1 = 1 '
if(@时间_check = 1)
set @selectStr = @selectStr + ' and convert(varchar(10),操作日期,23) >= @开始时间 and convert(varchar(10),操作日期,23) <= @结束时间 '
set @selectStr = @selectStr +
' ) as b left join (select sum(领料数) as 出库数,物料流水号,领料日期 from 仓储管理_出库记录_视图 where 1=1 '
if(@时间_check = 1)
set @selectStr = @selectStr + ' and 领料日期 >= @开始时间 and 领料日期 <= @结束时间 '
set @selectStr = @selectStr +
' group by 物料流水号,领料日期 ) as c on b.物料流水号 = c.物料流水号 and c.领料日期 = b.记录时间 left join (select sum(入库数) as 入库数,物料流水号,入库日期 from 仓储管理_入库记录_视图 where 1=1 '
if(@时间_check = 1)
set @selectStr = @selectStr + ' and 入库日期 >= @开始时间 and 入库日期 <= @结束时间 '
set @selectStr = @selectStr +
' group by 物料流水号,入库日期 ) as a on b.物料流水号 = a.物料流水号 and a.入库日期 = b.记录时间
inner join (select 物料编码,名称,代号,物料流水号,货位流水号,单位流水号 from 库存管理_物料主文件_基本 where 1 = 1 '
if(@物料名称_check = 1)
set @selectStr = @selectStr + ' and replace(isnull(名称,''''),'' '','''') + replace(isnull(代号,''''),'' '','''') + replace(isnull(物料编码,''''),'' '','''') like ''%'' + replace(@物料名称,'' '','''') + ''%'' '
if(@物料编码_check = 1)
set @selectStr = @selectStr + ' and replace(isnull(物料编码,''''),'' '','''') like ''%'' + replace(@物料编码,'' '','''') + ''%'' '
set @selectStr = @selectStr +
' ) as d on b.物料流水号 = d.物料流水号 left join 单位名称_基础表 on d.单位流水号 = 单位名称_基础表.单位流水号
left join 库存管理_货位主文件 on d.货位流水号 = 库存管理_货位主文件.货位流水号 '
EXEC sp_executesql @selectStr,
N'@物料名称 nvarchar(50),@物料编码 nvarchar(50),@开始时间 datetime,@结束时间 datetime',
@物料名称,@物料编码,@开始时间,@结束时间
END
GO
ALTER PROCEDURE [dbo].[仓储管理_盘点记录_查询]
@物料名称_check bit = null,
@物料名称 nvarchar(50) = null,
@物料编码_check bit = null,
@物料编码 nvarchar(50) = null,
@时间_check bit = null,
@开始时间 datetime = null,
@结束时间 datetime = null
AS
BEGIN
declare @selectStr nvarchar(4000)
set @selectStr = ' select * from 库存管理_盘点记录_视图 where 1 = 1 '
if(@物料名称_check = 1)
set @selectStr = @selectStr + ' and replace(isnull(名称,''''),'' '','''') + replace(isnull(代号,''''),'' '','''') + replace(isnull(物料编码,''''),'' '','''') like ''%'' + replace(@物料名称,'' '','''') + ''%'' '
if(@物料编码_check = 1)
set @selectStr = @selectStr + ' and replace(isnull(物料编码,''''),'' '','''') like ''%'' + replace(@物料编码,'' '','''') + ''%'' '
if(@时间_check = 1)
set @selectStr = @selectStr + ' and convert(varchar(10),修改时间,23) >= @开始时间 and convert(varchar(10),修改时间,23) <= @结束时间 '
set @selectStr = @selectStr + ' order by 修改时间 desc '
EXEC sp_executesql @selectStr,
N'@物料名称 nvarchar(50),@物料编码 nvarchar(50),@开始时间 datetime,@结束时间 datetime',
@物料名称,@物料编码,@开始时间,@结束时间
END
GO
ALTER PROCEDURE [dbo].[报表_仓储管理_盘点记录_查询]
@物料名称_check bit = null,
@物料名称 nvarchar(50) = null,
@物料编码_check bit = null,
@物料编码 nvarchar(50) = null,
@时间_check bit = null,
@开始时间 datetime = null,
@结束时间 datetime = null
AS
BEGIN
select '盘点记录_' + replace(replace(replace(CONVERT(nvarchar(19),GETDATE(),21),':',''),'-',''),' ','-') as tablename,'15' as tabletype
select 256*15 as 物料编码,256*30 as 名称,256*30 as 代号,256*10 as 单位,256*15 as 原库存,256*15 as 盘点后库存,256*15 as 盘点人,256*25 as 盘点时间
select 0 as 物料编码,0 as 名称,0 as 代号,0 as 单位,1 as 原库存,1 as 盘点后库存,0 as 盘点人,0 as 盘点时间
declare @selectStr nvarchar(4000)
set @selectStr = ' select * from 库存管理_盘点记录_视图 where 1 = 1 '
if(@物料名称_check = 1)
set @selectStr = @selectStr + ' and replace(isnull(名称,''''),'' '','''') + replace(isnull(代号,''''),'' '','''') + replace(isnull(物料编码,''''),'' '','''') like ''%'' + replace(@物料名称,'' '','''') + ''%'' '
if(@物料编码_check = 1)
set @selectStr = @selectStr + ' and replace(isnull(物料编码,''''),'' '','''') like ''%'' + replace(@物料编码,'' '','''') + ''%'' '
if(@时间_check = 1)
set @selectStr = @selectStr + ' and convert(varchar(10),修改时间,23) >= @开始时间 and convert(varchar(10),修改时间,23) <= @结束时间 '
EXEC sp_executesql @selectStr,
N'@物料名称 nvarchar(50),@物料编码 nvarchar(50),@开始时间 datetime,@结束时间 datetime',
@物料名称,@物料编码,@开始时间,@结束时间
END
GO
ALTER PROCEDURE [dbo].[仓储管理_入库记录退货_条件查询]
@物料名称_check bit = null,
@物料名称 nvarchar(50) = null,
@采购合同_check bit = null,
@采购合同 nvarchar(50) = null,
@供应商_check bit = null,
@供应商 nvarchar(50) = null,
@物料编码_check bit = null,
@物料编码 nvarchar(50) = null,
@时间_check bit = null,
@开始时间 nvarchar(50) = null,
@结束时间 nvarchar(50) = null
AS
BEGIN
declare @selectStr nvarchar(4000)
declare @selectStrWhere nvarchar(4000)
set @selectStr = ' select * from [dbo].[仓储管理_入库记录退货_视图] '
set @selectStrWhere = ' where 1 = 1 '
if(@物料名称_check = 1)
set @selectStrWhere = @selectStrWhere + ' and 物料名称 + 图号或型号 like ''%'' + @物料名称 + ''%'' '
if(@采购合同_check = 1)
set @selectStrWhere = @selectStrWhere + ' and 采购合同 like ''%'' + @采购合同 + ''%'' '
if(@供应商_check = 1)
set @selectStrWhere = @selectStrWhere + ' and 供应商 like ''%'' + @供应商 + ''%'' '
if(@物料编码_check = 1)
set @selectStrWhere = @selectStrWhere + ' and replace(isnull(物料编码,''''),'' '','''') like ''%'' + replace(@物料编码,'' '','''') + ''%'' '
if(@时间_check = 1)
set @selectStrWhere = @selectStrWhere + ' and convert(varchar(10),退货时间,23) >= @开始时间 and convert(varchar(10),退货时间,23) <= @结束时间 '
set @selectStr = @selectStr + @selectStrWhere + ' order by 退货时间 desc '
EXEC sp_executesql @selectStr,
N'@物料名称 nvarchar(50),@采购合同 nvarchar(50),@供应商 nvarchar(50),@物料编码 nvarchar(50),@开始时间 nvarchar(50),@结束时间 nvarchar(50)',
@物料名称,@采购合同,@供应商,@物料编码,@开始时间,@结束时间
END
GO

View File

@@ -0,0 +1,11 @@
-- 修正生产审核菜单组件路径,避免动态路由加载不存在的 ProductionCompletionAudi 目录 修改人:Ld 修改时间:2026-07-02 14:12:00;
UPDATE dbo.基础表_模块信息
SET path = N'SeikoWorkshop/ProductionCompletionAudit',
component = N'/SeikoWorkshop/ProductionCompletionAudit',
name = N'ProductionCompletionAudit'
WHERE id = 152
AND title = N'生产审核';
SELECT id, path, component, name, title
FROM dbo.基础表_模块信息
WHERE id = 152;

View File

@@ -0,0 +1,50 @@
-- 采购入库合同明细关联未入库最新到货记录
-- 修改人:Ld 修改时间:2026-07-02 17:11:48;
ALTER VIEW dbo.采购管理_采购合同明细_视图
AS
SELECT dbo.采购管理_采购合同明细.采购合同明细流水号, dbo.库存管理_物料主文件_基本.名称 AS 物料名称,
dbo.库存管理_物料主文件_基本.代号 AS 图号或型号, dbo.采购管理_采购合同明细.单位, CASE WHEN isnull(是否主轴,
0) = 1 THEN 采购管理_采购批次.数量 ELSE 采购管理_采购合同明细.数量 END AS 采购数, CASE WHEN isnull(是否主轴,
0) = 1 THEN 采购管理_采购批次.已到数 ELSE 已到货数量 END AS 已到数,
dbo.合同管理_订单信息_基础表.订单编号 AS 订单号, dbo.合同管理_订单信息_基础表.订单流水号,
dbo.采购管理_采购合同明细.采购合同流水号, dbo.采购管理_采购合同明细.标准件和外购件流水号,
dbo.PDM_零件明细表_标准件和外购件.组件流水号, dbo.采购管理_采购合同.供应商流水号,
dbo.PDM_零件明细表_标准件和外购件.物料流水号, dbo.采购管理_合同审批.审批情况流水号,
ISNULL(dbo.库存管理_物料主文件_基本.货位流水号, 0) AS 货位流水号, dbo.库存管理_货位主文件.货位名称,
dbo.采购管理_采购批次.批号, dbo.采购管理_采购批次.是否主轴, dbo.采购管理_采购合同明细.备注,
dbo.PDM_零件明细表_标准件和外购件.是否使用库存, dbo.库存管理_物料主文件_基本.物料编码,
dbo.采购管理_手动完成记录.id AS 手动完成id, 到货最新.到货数 AS 采购到货数,
dbo.采购管理_采购合同.采购合同编号 AS 合同号, dbo.采购管理_供应商.供应商名称, 到货最新.已检数量,
到货最新.等待入库数量
FROM dbo.采购管理_采购合同明细 INNER JOIN
dbo.PDM_零件明细表_标准件和外购件 ON
dbo.采购管理_采购合同明细.标准件和外购件流水号 = dbo.PDM_零件明细表_标准件和外购件.标准件和外购件流水号 INNER
JOIN
dbo.库存管理_物料主文件_基本 ON
dbo.PDM_零件明细表_标准件和外购件.物料流水号 = dbo.库存管理_物料主文件_基本.物料流水号 INNER JOIN
dbo.PDM_组件名称 ON
dbo.PDM_零件明细表_标准件和外购件.组件流水号 = dbo.PDM_组件名称.组件流水号 INNER JOIN
dbo.PDM_机床名称 ON dbo.PDM_组件名称.机床流水号 = dbo.PDM_机床名称.机床流水号 INNER JOIN
dbo.PDM_项目名称 ON dbo.PDM_机床名称.项目流水号 = dbo.PDM_项目名称.项目流水号 INNER JOIN
dbo.合同管理_订单信息_基础表 ON
dbo.PDM_项目名称.项目流水号 = dbo.合同管理_订单信息_基础表.项目流水号 INNER JOIN
dbo.采购管理_采购合同 ON
dbo.采购管理_采购合同明细.采购合同流水号 = dbo.采购管理_采购合同.采购合同流水号 INNER JOIN
dbo.采购管理_采购批次 ON
dbo.采购管理_采购合同明细.采购合同明细流水号 = dbo.采购管理_采购批次.采购合同明细流水号 INNER JOIN
dbo.采购管理_供应商 ON
dbo.采购管理_采购合同.供应商流水号 = dbo.采购管理_供应商.供应商流水号 OUTER APPLY
(SELECT TOP 1 *
FROM dbo.采购管理_采购到货
WHERE 采购合同流水号 = dbo.采购管理_采购合同明细.采购合同流水号
AND 物料流水号 = dbo.库存管理_物料主文件_基本.物料流水号
AND ISNULL(质检状态, '') <> N'已入库'
ORDER BY ISNULL(id, 0) DESC) AS 到货最新 LEFT OUTER JOIN
dbo.库存管理_货位主文件 ON
dbo.库存管理_物料主文件_基本.货位流水号 = dbo.库存管理_货位主文件.货位流水号 LEFT OUTER JOIN
dbo.采购管理_合同审批 ON
dbo.采购管理_采购合同.采购合同流水号 = dbo.采购管理_合同审批.采购合同流水号 LEFT OUTER JOIN
dbo.采购管理_手动完成记录 ON
dbo.采购管理_采购合同明细.采购合同明细流水号 = dbo.采购管理_手动完成记录.采购合同明细流水号
GO

View File

@@ -0,0 +1,315 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[技术中心_改制订单_发起改制]
@原订单流水号 int = null,
@原组件流水号 int = null,
@改制零件名称 nvarchar(50) = null,
@改制零件图号 nvarchar(50) = null,
@改制数量 int = null,
@精工期限 date = null,
@发起人 int = null,
@原零件名称 nvarchar(50) = null,
@原零件图号 nvarchar(50) = null,
@原基本件流水号 int = null
AS
BEGIN
SET NOCOUNT ON;
DECLARE @工艺计划流水号 int;
DECLARE @改制订单流水号 int;
DECLARE @改制订单编号 varchar(100);
DECLARE @改制工艺编号 int;
DECLARE @工序流水号 int;
DECLARE @改制物料流水号 int;
DECLARE @单号排序代码 varchar(100);
DECLARE @年份 varchar(100);
DECLARE @n int;
IF ISNULL(LTRIM(RTRIM(@原零件图号)), '') <> ''
AND ISNULL(LTRIM(RTRIM(@改制零件图号)), '') <> ''
AND LTRIM(RTRIM(@原零件图号)) = LTRIM(RTRIM(@改制零件图号))
BEGIN
SELECT '0' AS result, '改制零件图号不能与原零件图号相同' AS msg;
RETURN;
END;
IF @原订单流水号 IS NULL OR @原组件流水号 IS NULL
BEGIN
SELECT '0' AS result, '原订单流水号或原组件流水号不能为空' AS msg;
RETURN;
END;
IF ISNULL(@改制零件名称, '') = '' OR ISNULL(@改制零件图号, '') = ''
BEGIN
SELECT '0' AS result, '改制零件名称或改制零件图号不能为空' AS msg;
RETURN;
END;
IF ISNULL(@改制数量, 0) <= 0
BEGIN
SELECT '0' AS result, '改制数量必须大于0' AS msg;
RETURN;
END;
-- 修改人:Ld 修改时间:2026-07-01 14:45:00; 优先使用前端点击行传入的原基本件流水号,避免同组件内重复零件或历史流水号导致改制记录回显错位。
IF @原基本件流水号 IS NULL
BEGIN
SELECT TOP 1
@原基本件流水号 = B.流水号
FROM dbo.PDM_零件明细表_所有视图 AS B
WHERE B.订单流水号 = @原订单流水号
AND B.组件流水号 = @原组件流水号
AND (ISNULL(@原零件名称, '') = '' OR B.零件名称 = @原零件名称)
AND (ISNULL(@原零件图号, '') = '' OR B.[图号或型号] = @原零件图号)
ORDER BY B.流水号 DESC;
END;
IF @原基本件流水号 IS NULL
BEGIN
SELECT TOP 1
@原基本件流水号 = 基本件流水号
FROM dbo.PDM_零件明细表_基本件
WHERE 组件流水号 = @原组件流水号
ORDER BY 基本件流水号 DESC;
END;
IF @原基本件流水号 IS NULL
BEGIN
SELECT '0' AS result, '未找到原零件基本件流水号' AS msg;
RETURN;
END;
SELECT TOP 1
@改制物料流水号 = 物料流水号
FROM dbo.库存管理_物料主文件_基本
WHERE LTRIM(RTRIM(名称)) = LTRIM(RTRIM(@改制零件名称))
AND LTRIM(RTRIM(代号)) = LTRIM(RTRIM(@改制零件图号))
AND ISNULL(是否禁用, 0) = 0
ORDER BY 物料流水号 DESC;
IF @改制物料流水号 IS NULL
BEGIN
SELECT '0' AS result, '未找到改制零件对应的新物料,请先维护物料信息' AS msg;
RETURN;
END;
IF @精工期限 IS NULL
SET @精工期限 = CONVERT(date, GETDATE());
BEGIN TRY
BEGIN TRAN;
SELECT @n = COUNT(*)
FROM dbo.技术中心_改制订单排序
WHERE 年份 = CONVERT(varchar(4), GETDATE(), 23);
IF @n = 0
BEGIN
SET @年份 = CONVERT(varchar(4), GETDATE(), 23);
INSERT INTO dbo.技术中心_改制订单排序(年份, 数量)
VALUES(@年份, 1);
SET @单号排序代码 = 1;
END
ELSE
BEGIN
UPDATE dbo.技术中心_改制订单排序
SET 数量 = 数量 + 1
WHERE 年份 = CONVERT(varchar(4), GETDATE(), 23);
SELECT @单号排序代码 = 数量
FROM dbo.技术中心_改制订单排序
WHERE 年份 = CONVERT(varchar(4), GETDATE(), 23);
END;
SET @单号排序代码 = RIGHT(10000 + CONVERT(varchar(100), @单号排序代码), 4);
SET @改制订单编号 =
'BHGZ' + '-'
+ DATENAME(year, GETDATE())
+ DATENAME(month, GETDATE())
+ RIGHT(100 + DAY(GETDATE()), 2)
+ CONVERT(varchar, @单号排序代码);
INSERT INTO dbo.技术中心_改制订单记录
(
改制订单编号,
原订单流水号,
原组件流水号,
原基本件流水号,
原零件名称,
原零件图号,
改制零件名称,
改制零件图号,
改制物料流水号,
改制数量,
精工期限,
状态,
发起人,
发起时间,
是否删除
)
VALUES
(
@改制订单编号,
@原订单流水号,
@原组件流水号,
@原基本件流水号,
@原零件名称,
@原零件图号,
@改制零件名称,
@改制零件图号,
@改制物料流水号,
@改制数量,
@精工期限,
N'待生成任务',
@发起人,
GETDATE(),
0
);
SET @改制订单流水号 = SCOPE_IDENTITY();
INSERT INTO dbo.车间生产管理工艺_零件工艺计划
(
基本件流水号,
零件图号,
批次数量,
操作日期,
考核状态,
工艺更新时间,
工艺员编号,
计划完成
)
VALUES
(
@原基本件流水号,
@改制零件图号,
@改制数量,
GETDATE(),
2,
GETDATE(),
@发起人,
@精工期限
);
SET @工艺计划流水号 = SCOPE_IDENTITY();
UPDATE dbo.技术中心_改制订单记录
SET 工艺计划流水号 = @工艺计划流水号,
状态 = N'工艺完成'
WHERE 改制订单流水号 = @改制订单流水号;
SELECT TOP 1
@改制工艺编号 = 工艺编号
FROM dbo.车间生产管理工艺_基础表_工艺名称
WHERE 工艺名称 = N'改制'
AND ISNULL(是否启用, 1) = 1;
IF @改制工艺编号 IS NULL
BEGIN
INSERT INTO dbo.车间生产管理工艺_基础表_工艺名称(工艺名称, 是否启用)
VALUES(N'改制', 1);
SET @改制工艺编号 = SCOPE_IDENTITY();
END;
SELECT TOP 1
@工序流水号 = 工序流水号
FROM dbo.车间生产管理工艺_零件工序
WHERE 工艺计划流水号 = @工艺计划流水号
ORDER BY 工序顺序;
IF @工序流水号 IS NOT NULL
BEGIN
UPDATE dbo.车间生产管理工艺_零件工序
SET 工艺编号 = @改制工艺编号,
工序顺序 = 1,
工艺要求 = N'改制',
工序间是否外协 = 0,
外协数量 = 0,
是否最后一序 = 1,
定额工时 = 0,
准结工时 = 0,
已分配数 = 0,
已外协数 = 0,
是否允许变更 = 1
WHERE 工序流水号 = @工序流水号;
END
ELSE
BEGIN
INSERT INTO dbo.车间生产管理工艺_零件工序
(
工艺计划流水号,
工艺编号,
工序顺序,
工艺要求,
工序间是否外协,
外协数量,
是否最后一序,
定额工时,
准结工时,
已分配数,
已外协数,
是否允许变更
)
VALUES
(
@工艺计划流水号,
@改制工艺编号,
1,
N'改制',
0,
0,
1,
0,
0,
0,
0,
1
);
END;
EXEC dbo.精工车间_工艺保存_派工
@工艺计划流水号 = @工艺计划流水号,
@人员编号 = @发起人;
UPDATE dbo.PDM_组件名称
SET 组件精工车间 = 1,
是否分配 = 1
WHERE 组件流水号 = @原组件流水号;
UPDATE dbo.合同管理_订单信息_基础表
SET 精工车间 = 1,
是否下达 = 1,
技术审核 = 0,
下达人 = @发起人,
下达日期 = GETDATE(),
精工期限 = @精工期限
WHERE 订单流水号 = @原订单流水号;
COMMIT TRAN;
SELECT
'1' AS result,
'改制订单已生成' AS msg,
@改制订单流水号 AS 改制订单流水号,
@改制订单编号 AS 改制订单编号,
@工艺计划流水号 AS 工艺计划流水号,
@改制物料流水号 AS 改制物料流水号;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRAN;
SELECT
'0' AS result,
ERROR_MESSAGE() AS msg;
END CATCH;
END;
GO