feat: 更新装配任务和质量报表

This commit is contained in:
meswork764
2026-06-18 17:48:36 +08:00
parent 1a781b02c2
commit ab508369c9
54 changed files with 10788 additions and 102 deletions

View File

@@ -0,0 +1,9 @@
IF COL_LENGTH(N'dbo.MES_接口_生产计划', N'预计送检日期') IS NULL
BEGIN
ALTER TABLE [dbo].[MES_接口_生产计划] ADD [预计送检日期] datetime NULL;
END;
IF COL_LENGTH(N'dbo.MES_接口_生产计划', N'销售要求日期') IS NULL
BEGIN
ALTER TABLE [dbo].[MES_接口_生产计划] ADD [销售要求日期] datetime NULL;
END;

View File

@@ -0,0 +1,17 @@
ALTER VIEW dbo.View_生产订单_MES
AS
SELECT a.订单编号, a.合同号, b.订单拆分内码, a.订单类型, a.订单状态, a.物料编号, a.物料描述, b.计划数量 AS 工序计划数量, a.计量单位, a.下达日期,
a.计划开始, a.计划完成, a.项目代码, a.备注, a.重量, a.占用情况, a.加急状态, a.同步时间, b.订单行号, b.物料编码, b.物料名称, b.基本数量, b.计划数量,
b.已发货数量, b.订单发货类型, b.仓库代码, b.可视订单, b.物料类型, b.阶段标识, b.工序名称, b.顺序编号, b.性质, b.总工时, b.行文本备注, b.不装配,
b.指派对象, b.指派数量, b.计划开始时间, b.计划完成时间, b.最晚开始时间, b.派工状态, b.任务状态, b.修改时间, b.外协通知, b.优先级, b.未完成说明,
b.派工特殊说明, b.最后编辑人, b.最后编辑时间, b.可执行, b.收料, b.收料数量, b.开工, b.首检, b.巡检, b.完成数量, b.进度, b.序检, b.测试, b.入库,
b.AID AS TaskAID, b.加工状态, b.操作时间, b.开工时间, b.完工时间, b.合格数量, b.不合格数量, b.让步放行数量, b.报废数量,
a.计划数量 AS 计划数量订单, b.排产状态, a.自制件属性, b.二次派工, a.周转单打印次数, b.外协打印次数, b.单重, b.外协备注, a.齐套, a.单据状态,
a.生产工艺, a.标准工艺, a.任务状态 AS Expr1, b.指派对象编号, dbo.MES_资源主数据.VisCode, a.发料状态, a.拣配状态, a.计划号, b.外协分组,
a.加急数量, a.发货状态, a.要求发货日期, a.加急总数, b.打印数量, a.入库数量, dbo.物料基础数据_零件图纸.worker, b.本次检数, b.任务概述, a.齐套时间,
a.派工时间, a.钣金预达时间, a.预计送检日期, a.销售要求日期
FROM dbo.MES_接口_生产计划_生产任务 AS b LEFT OUTER JOIN
dbo.物料基础数据_零件图纸 ON b.物料编码 = dbo.物料基础数据_零件图纸.num LEFT OUTER JOIN
dbo.MES_资源主数据 ON b.指派对象 = dbo.MES_资源主数据.Name RIGHT OUTER JOIN
dbo.MES_接口_生产计划 AS a ON b.订单编号 = a.订单编号
WHERE (b.物料类型 = 'pit_Resource') AND (a.单据状态 IS NULL)

View File

@@ -0,0 +1,17 @@
CREATE VIEW dbo.View_生产订单_MES
AS
SELECT a.订单编号, a.合同号, b.订单拆分内码, a.订单类型, a.订单状态, a.物料编号, a.物料描述, b.计划数量 AS 工序计划数量, a.计量单位, a.下达日期,
a.计划开始, a.计划完成, a.项目代码, a.备注, a.重量, a.占用情况, a.加急状态, a.同步时间, b.订单行号, b.物料编码, b.物料名称, b.基本数量, b.计划数量,
b.已发货数量, b.订单发货类型, b.仓库代码, b.可视订单, b.物料类型, b.阶段标识, b.工序名称, b.顺序编号, b.性质, b.总工时, b.行文本备注, b.不装配,
b.指派对象, b.指派数量, b.计划开始时间, b.计划完成时间, b.最晚开始时间, b.派工状态, b.任务状态, b.修改时间, b.外协通知, b.优先级, b.未完成说明,
b.派工特殊说明, b.最后编辑人, b.最后编辑时间, b.可执行, b.收料, b.收料数量, b.开工, b.首检, b.巡检, b.完成数量, b.进度, b.序检, b.测试, b.入库,
b.AID AS TaskAID, b.加工状态, b.操作时间, b.开工时间, b.完工时间, b.合格数量, b.不合格数量, b.让步放行数量, b.报废数量,
a.计划数量 AS 计划数量订单, b.排产状态, a.自制件属性, b.二次派工, a.周转单打印次数, b.外协打印次数, b.单重, b.外协备注, a.齐套, a.单据状态,
a.生产工艺, a.标准工艺, a.任务状态 AS Expr1, b.指派对象编号, dbo.MES_资源主数据.VisCode, a.发料状态, a.拣配状态, a.计划号, b.外协分组,
a.加急数量, a.发货状态, a.要求发货日期, a.加急总数, b.打印数量, a.入库数量, dbo.物料基础数据_零件图纸.worker, b.本次检数, b.任务概述, a.齐套时间,
a.派工时间, a.钣金预达时间
FROM dbo.MES_接口_生产计划_生产任务 AS b LEFT OUTER JOIN
dbo.物料基础数据_零件图纸 ON b.物料编码 = dbo.物料基础数据_零件图纸.num LEFT OUTER JOIN
dbo.MES_资源主数据 ON b.指派对象 = dbo.MES_资源主数据.Name RIGHT OUTER JOIN
dbo.MES_接口_生产计划 AS a ON b.订单编号 = a.订单编号
WHERE (b.物料类型 = 'pit_Resource') AND (a.单据状态 IS NULL)

View File

@@ -0,0 +1,30 @@
CREATE OR ALTER PROCEDURE [dbo].[装配中心任务看板_可执行任务数]
AS
BEGIN
SET NOCOUNT ON;
;WITH base AS (
SELECT
CASE WHEN 物料描述 LIKE '%系统%' THEN 1 ELSE 0 END AS 是否系统类,
ISNULL(发料状态, 0) AS 发料状态,
派工时间,
ISNULL(预计送检日期,
CASE
WHEN 物料描述 LIKE '%系统%' THEN DATEADD(DAY, 3, 钣金预达时间)
ELSE DATEADD(DAY, 3, 齐套时间)
END
) AS 预计送检日期
FROM [dbo].[View_生产订单_MES]
WHERE [物料类型] = 'pit_Resource'
AND [自制件属性] LIKE '%装配%'
AND ISNULL(任务状态, 0) < 4
AND [物料描述] NOT LIKE '%软管总成%'
AND [物料描述] NOT LIKE '%发货部件%'
AND [不装配] <> '否'
)
SELECT
SUM(CASE WHEN 是否系统类 = 0 AND 发料状态 = 1 THEN 1 ELSE 0 END) AS 阀类可执行任务数,
SUM(CASE WHEN 是否系统类 = 1 AND 派工时间 IS NOT NULL THEN 1 ELSE 0 END) AS 系统类可执行任务数,
SUM(CASE WHEN CAST(预计送检日期 AS date) < CAST(GETDATE() AS date) THEN 1 ELSE 0 END) AS 及时送检数
FROM base;
END;

View File

@@ -0,0 +1,21 @@
CREATE OR ALTER PROCEDURE [dbo].[装配中心任务看板_可执行任务数]
AS
BEGIN
SET NOCOUNT ON;
SELECT
SUM(CASE WHEN 物料描述 NOT LIKE '%系统%' AND ISNULL(发料状态, 0) = 1 THEN 1 ELSE 0 END) AS 阀类可执行任务数,
SUM(CASE WHEN 物料描述 LIKE '%系统%' AND 派工时间 IS NOT NULL THEN 1 ELSE 0 END) AS 系统类可执行任务数,
SUM(CASE
WHEN 物料描述 NOT LIKE '%系统%' AND ISNULL(发料状态, 0) = 1 THEN 1
WHEN 物料描述 LIKE '%系统%' AND 派工时间 IS NOT NULL THEN 1
ELSE 0
END) AS 可执行任务数
FROM [dbo].[View_生产订单_MES]
WHERE [物料类型] = 'pit_Resource'
AND [自制件属性] LIKE '%装配%'
AND ISNULL(任务状态, 0) < 4
AND [物料描述] NOT LIKE '%软管总成%'
AND [物料描述] NOT LIKE '%发货部件%'
AND [不装配] <> '否';
END;

View File

@@ -0,0 +1,21 @@
CREATE PROCEDURE [dbo].[装配中心任务看板_可执行任务数]
AS
BEGIN
SET NOCOUNT ON;
SELECT
SUM(CASE WHEN 物料描述 NOT LIKE '%系统%' AND ISNULL(发料状态, 0) = 1 THEN 1 ELSE 0 END) AS 阀类可执行任务数,
SUM(CASE WHEN 物料描述 LIKE '%系统%' AND 派工时间 IS NOT NULL THEN 1 ELSE 0 END) AS 系统类可执行任务数,
SUM(CASE
WHEN 物料描述 NOT LIKE '%系统%' AND ISNULL(发料状态, 0) = 1 THEN 1
WHEN 物料描述 LIKE '%系统%' AND 派工时间 IS NOT NULL THEN 1
ELSE 0
END) AS 可执行任务数
FROM [dbo].[View_生产订单_MES]
WHERE [物料类型] = 'pit_Resource'
AND [自制件属性] LIKE '%装配%'
AND ISNULL(任务状态, 0) < 4
AND [物料描述] NOT LIKE '%软管总成%'
AND [物料描述] NOT LIKE '%发货部件%'
AND [不装配] <> '否';
END;

View File

@@ -0,0 +1,21 @@
CREATE OR ALTER PROCEDURE [dbo].[装配中心任务看板_可执行任务数]
AS
BEGIN
SET NOCOUNT ON;
SELECT
SUM(CASE WHEN 物料描述 NOT LIKE '%系统%' AND 齐套时间 IS NOT NULL THEN 1 ELSE 0 END) AS 阀类可执行任务数,
SUM(CASE WHEN 物料描述 LIKE '%系统%' AND 派工时间 IS NOT NULL THEN 1 ELSE 0 END) AS 系统类可执行任务数,
SUM(CASE
WHEN 物料描述 NOT LIKE '%系统%' AND 齐套时间 IS NOT NULL THEN 1
WHEN 物料描述 LIKE '%系统%' AND 派工时间 IS NOT NULL THEN 1
ELSE 0
END) AS 可执行任务数
FROM [dbo].[View_生产订单_MES]
WHERE [物料类型] = 'pit_Resource'
AND [自制件属性] LIKE '%装配%'
AND ISNULL(任务状态, 0) < 4
AND [物料描述] NOT LIKE '%软管总成%'
AND [物料描述] NOT LIKE '%发货部件%'
AND [不装配] <> '否';
END;

View File

@@ -0,0 +1,129 @@
ALTER PROCEDURE [dbo].[计划排产_系统类任务查询]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
declare @selectStr nvarchar(max)
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4'
if(@物料类型='自制件') --自制件
set @selectStr='
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,钣金预达时间,ISNULL(预计送检日期, DATEADD(DAY, 3, 钣金预达时间)) as 预计送检日期,销售要求日期,
ISNULL(zp.装配工时, 0) as 任务装配工时,
ISNULL(zj1.质检工时, 0) as 任务质检工时,
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') as 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') as 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') as 质检进行中 FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT DISTINCT 计划号
FROM dbo.YL_质量检验_质检记录
WHERE 质检类型 = ''终检''
) zj ON v.[订单编号] = zj.计划号
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
ON v.[订单编号] = g.订单编号
AND v.[订单行号] = g.工艺顺序
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and v.[合同号] like ''%'+@合同号+'%'''
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END,
钣金预达时间,v.[合同号] '
set @selectStr=@selectStr+@selectStrWhere
print @selectStr
EXEC sp_executesql @selectStr
END

View File

@@ -0,0 +1,129 @@
ALTER PROCEDURE [dbo].[计划排产_系统类任务查询]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
declare @selectStr nvarchar(max)
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4'
if(@物料类型='自制件') --自制件
set @selectStr='
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,钣金预达时间,
ISNULL(zp.装配工时, 0) as 任务装配工时,
ISNULL(zj1.质检工时, 0) as 任务质检工时,
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') as 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') as 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') as 质检进行中 FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT DISTINCT 计划号
FROM dbo.YL_质量检验_质检记录
WHERE 质检类型 = ''终检''
) zj ON v.[订单编号] = zj.计划号
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
ON v.[订单编号] = g.订单编号
AND v.[订单行号] = g.工艺顺序
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%'''
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END,
钣金预达时间,v.计划开始时间 '
set @selectStr=@selectStr+@selectStrWhere
print @selectStr
EXEC sp_executesql @selectStr
END

View File

@@ -0,0 +1,129 @@
ALTER PROCEDURE [dbo].[计划排产_系统类任务查询]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
declare @selectStr nvarchar(max)
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4'
if(@物料类型='自制件') --自制件
set @selectStr='
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,钣金预达时间,ISNULL(预计送检日期, DATEADD(DAY, 3, 钣金预达时间)) as 预计送检日期,ISNULL(销售要求日期, s.交货日期理论齐套日期) as 销售要求日期,
ISNULL(zp.装配工时, 0) as 任务装配工时,
ISNULL(zj1.质检工时, 0) as 任务质检工时,
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') as 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') as 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') as 质检进行中 FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT DISTINCT 计划号
FROM dbo.YL_质量检验_质检记录
WHERE 质检类型 = ''终检''
) zj ON v.[订单编号] = zj.计划号
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
ON v.[订单编号] = g.订单编号
AND v.[订单行号] = g.工艺顺序
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and v.[合同号] like ''%'+@合同号+'%'''
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END,
钣金预达时间,v.[合同号] '
set @selectStr=@selectStr+@selectStrWhere
print @selectStr
EXEC sp_executesql @selectStr
END

View File

@@ -0,0 +1,133 @@
ALTER PROCEDURE [dbo].[计划排产_系统类任务查询]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
declare @selectStr nvarchar(max)
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4'
if(@物料类型='自制件') --自制件
set @selectStr='
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,钣金预达时间,ISNULL(预计送检日期, DATEADD(DAY, 3, 钣金预达时间)) as 预计送检日期,ISNULL(销售要求日期, s.交货日期理论齐套日期) as 销售要求日期,
ISNULL(zp.装配工时, 0) as 任务装配工时,
ISNULL(zj1.质检工时, 0) as 任务质检工时,
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') as 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') as 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') as 质检进行中 FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT DISTINCT 计划号
FROM dbo.YL_质量检验_质检记录
WHERE 质检类型 = ''终检''
) zj ON v.[订单编号] = zj.计划号
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
ON v.[订单编号] = g.订单编号
AND v.[订单行号] = g.工艺顺序
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
left join (
SELECT 项目号, 物料号, MIN(交货日期理论齐套日期) as 交货日期理论齐套日期
FROM SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2
GROUP BY 项目号, 物料号
) s
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and v.[合同号] like ''%'+@合同号+'%'''
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END,
钣金预达时间,v.[合同号] '
set @selectStr=@selectStr+@selectStrWhere
print @selectStr
EXEC sp_executesql @selectStr
END

View File

@@ -0,0 +1,129 @@
CREATE PROCEDURE [dbo].[计划排产_系统类任务查询]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
declare @selectStr nvarchar(max)
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4'
if(@物料类型='自制件') --自制件
set @selectStr='
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,钣金预达时间,
ISNULL(zp.装配工时, 0) as 任务装配工时,
ISNULL(zj1.质检工时, 0) as 任务质检工时,
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') as 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') as 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') as 质检进行中 FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT DISTINCT 计划号
FROM dbo.YL_质量检验_质检记录
WHERE 质检类型 = ''终检''
) zj ON v.[订单编号] = zj.计划号
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
ON v.[订单编号] = g.订单编号
AND v.[订单行号] = g.工艺顺序
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and v.[合同号] like ''%'+@合同号+'%'''
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END,
钣金预达时间,v.[合同号] '
set @selectStr=@selectStr+@selectStrWhere
print @selectStr
EXEC sp_executesql @selectStr
END

View File

@@ -0,0 +1,98 @@
CREATE PROCEDURE [dbo].[计划排产_系统类任务查询]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
declare @selectStr nvarchar(4000)
declare @selectStrWhere nvarchar(4000)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4'
if(@物料类型='自制件') --自制件
set @selectStr='
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,钣金预达时间,
ISNULL(zp.装配工时, 0) as 任务装配工时,
ISNULL(zj1.质检工时, 0) as 任务质检工时,
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
ISNULL(zj1.质检工序说明, '''') as 质检工序说明
FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT DISTINCT 计划号
FROM dbo.YL_质量检验_质检记录
WHERE 质检类型 = ''终检''
) zj ON v.[订单编号] = zj.计划号
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
ON v.[订单编号] = g.订单编号
AND v.[订单行号] = g.工艺顺序
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%'''
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END,
钣金预达时间,v.计划开始时间 '
set @selectStr=@selectStr+@selectStrWhere
print @selectStr
EXEC sp_executesql @selectStr
END

View File

@@ -0,0 +1,129 @@
CREATE PROCEDURE [dbo].[计划排产_系统类任务查询]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
declare @selectStr nvarchar(max)
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4'
if(@物料类型='自制件') --自制件
set @selectStr='
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,钣金预达时间,ISNULL(预计送检日期, DATEADD(DAY, 3, 钣金预达时间)) as 预计送检日期,销售要求日期,
ISNULL(zp.装配工时, 0) as 任务装配工时,
ISNULL(zj1.质检工时, 0) as 任务质检工时,
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') as 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') as 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') as 质检进行中 FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT DISTINCT 计划号
FROM dbo.YL_质量检验_质检记录
WHERE 质检类型 = ''终检''
) zj ON v.[订单编号] = zj.计划号
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
ON v.[订单编号] = g.订单编号
AND v.[订单行号] = g.工艺顺序
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and v.[合同号] like ''%'+@合同号+'%'''
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END,
钣金预达时间,v.[合同号] '
set @selectStr=@selectStr+@selectStrWhere
print @selectStr
EXEC sp_executesql @selectStr
END

View File

@@ -0,0 +1,129 @@
CREATE PROCEDURE [dbo].[计划排产_系统类任务查询]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
declare @selectStr nvarchar(max)
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4'
if(@物料类型='自制件') --自制件
set @selectStr='
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,钣金预达时间,ISNULL(预计送检日期, DATEADD(DAY, 3, 钣金预达时间)) as 预计送检日期,ISNULL(销售要求日期, s.交货日期理论齐套日期) as 销售要求日期,
ISNULL(zp.装配工时, 0) as 任务装配工时,
ISNULL(zj1.质检工时, 0) as 任务质检工时,
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') as 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') as 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') as 质检进行中 FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT DISTINCT 计划号
FROM dbo.YL_质量检验_质检记录
WHERE 质检类型 = ''终检''
) zj ON v.[订单编号] = zj.计划号
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
ON v.[订单编号] = g.订单编号
AND v.[订单行号] = g.工艺顺序
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and v.[合同号] like ''%'+@合同号+'%'''
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END,
钣金预达时间,v.[合同号] '
set @selectStr=@selectStr+@selectStrWhere
print @selectStr
EXEC sp_executesql @selectStr
END

View File

@@ -0,0 +1,213 @@
ALTER PROCEDURE [dbo].[计划排产_系统类任务查询_导出]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
SET NOCOUNT ON;
SELECT '系统类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT 256*18 AS 钣金预达时间,
256*14 AS 销售订单,
256*10 AS 生产订单,
256*24 AS 物料编码,
256*24 AS 物料名称,
256*10 AS 计划数,
256*8 AS 齐套,
256*12 AS 发料齐套,
256*18 AS 计划开始,
256*12 AS 派工时间,
256*20 AS 二次派工,
256*14 AS 预计送检日期,
256*14 AS 销售要求日期,
256*14 AS 发货要求日期,
256*40 AS 异常报警信息,
256*40 AS 装配进行中,
256*40 AS 质检进行中,
256*14 AS 任务装配工时,
256*14 AS 任务质检工时,
256*14 AS 合同装配工时,
256*14 AS 合同质检工时,
256*24 AS 装配工序说明,
256*24 AS 质检工序说明,
256*14 AS 要求完工日期,
256*12 AS 工序名称,
256*10 AS 计划号,
256*18 AS 指派对象,
256*12 AS 指派数量,
256*10 AS 优先级,
256*20 AS 未完成说明,
256*20 AS 派工特殊备注,
256*14 AS 占用情况,
256*14 AS 最后编辑人,
256*20 AS 最后编辑时间;
SELECT 0 AS 钣金预达时间,
0 AS 销售订单,
0 AS 生产订单,
0 AS 物料编码,
0 AS 物料名称,
0 AS 计划数,
0 AS 齐套,
0 AS 发料齐套,
0 AS 计划开始,
0 AS 派工时间,
0 AS 二次派工,
0 AS 预计送检日期,
0 AS 销售要求日期,
0 AS 发货要求日期,
0 AS 异常报警信息,
0 AS 装配进行中,
0 AS 质检进行中,
0 AS 任务装配工时,
0 AS 任务质检工时,
0 AS 合同装配工时,
0 AS 合同质检工时,
0 AS 装配工序说明,
0 AS 质检工序说明,
0 AS 要求完工日期,
0 AS 工序名称,
0 AS 计划号,
0 AS 指派对象,
0 AS 指派数量,
0 AS 优先级,
0 AS 未完成说明,
0 AS 派工特殊备注,
0 AS 占用情况,
0 AS 最后编辑人,
0 AS 最后编辑时间;
DECLARE @selectStr nvarchar(max);
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4';
IF(@物料类型='自制件')
SET @selectStr='
SELECT
CONVERT(varchar(10), v.钣金预达时间, 120) AS 钣金预达时间,
v.[合同号] AS 销售订单,
v.[订单编号] AS 生产订单,
v.[物料编号] AS 物料编码,
v.[物料描述] AS 物料名称,
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
[二次派工] AS 二次派工,
CONVERT(varchar(10), ISNULL(v.预计送检日期, DATEADD(DAY, 3, v.钣金预达时间)), 120) AS 预计送检日期,
CONVERT(varchar(10), v.销售要求日期, 120) AS 销售要求日期,
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') AS 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') AS 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') AS 质检进行中,
CAST(ISNULL(zp.装配工时, 0) / 60.0 AS decimal(18,2)) AS 任务装配工时,
CAST(ISNULL(zj1.质检工时, 0) / 60.0 AS decimal(18,2)) AS 任务质检工时,
CAST(ISNULL(htzp.合同装配工时, 0) / 60.0 AS decimal(18,2)) AS 合同装配工时,
CAST(ISNULL(htzj.合同质检工时, 0) / 60.0 AS decimal(18,2)) AS 合同质检工时,
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
[工序名称] AS 工序名称,
v.计划号 AS 计划号,
指派对象 AS 指派对象,
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
[优先级] AS 优先级,
[未完成说明] AS 未完成说明,
[派工特殊说明] AS 派工特殊备注,
[占用情况] AS 占用情况,
[最后编辑人] AS 最后编辑人,
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END, 钣金预达时间, v.计划开始时间';
SET @selectStr=@selectStr+@selectStrWhere;
PRINT @selectStr;
EXEC sp_executesql @selectStr;
END

View File

@@ -0,0 +1,213 @@
ALTER PROCEDURE [dbo].[计划排产_系统类任务查询_导出]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
SET NOCOUNT ON;
SELECT '系统类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT 256*18 AS 钣金预达时间,
256*14 AS 销售订单,
256*10 AS 生产订单,
256*24 AS 物料编码,
256*24 AS 物料名称,
256*10 AS 计划数,
256*8 AS 齐套,
256*12 AS 发料齐套,
256*18 AS 计划开始,
256*12 AS 派工时间,
256*20 AS 二次派工,
256*14 AS 预计送检日期,
256*14 AS 销售要求日期,
256*14 AS 发货要求日期,
256*40 AS 异常报警信息,
256*40 AS 装配进行中,
256*40 AS 质检进行中,
256*14 AS 任务装配工时,
256*14 AS 任务质检工时,
256*14 AS 合同装配工时,
256*14 AS 合同质检工时,
256*24 AS 装配工序说明,
256*24 AS 质检工序说明,
256*14 AS 要求完工日期,
256*12 AS 工序名称,
256*10 AS 计划号,
256*18 AS 指派对象,
256*12 AS 指派数量,
256*10 AS 优先级,
256*20 AS 未完成说明,
256*20 AS 派工特殊备注,
256*14 AS 占用情况,
256*14 AS 最后编辑人,
256*20 AS 最后编辑时间;
SELECT 0 AS 钣金预达时间,
0 AS 销售订单,
0 AS 生产订单,
0 AS 物料编码,
0 AS 物料名称,
0 AS 计划数,
0 AS 齐套,
0 AS 发料齐套,
0 AS 计划开始,
0 AS 派工时间,
0 AS 二次派工,
0 AS 预计送检日期,
0 AS 销售要求日期,
0 AS 发货要求日期,
0 AS 异常报警信息,
0 AS 装配进行中,
0 AS 质检进行中,
0 AS 任务装配工时,
0 AS 任务质检工时,
0 AS 合同装配工时,
0 AS 合同质检工时,
0 AS 装配工序说明,
0 AS 质检工序说明,
0 AS 要求完工日期,
0 AS 工序名称,
0 AS 计划号,
0 AS 指派对象,
0 AS 指派数量,
0 AS 优先级,
0 AS 未完成说明,
0 AS 派工特殊备注,
0 AS 占用情况,
0 AS 最后编辑人,
0 AS 最后编辑时间;
DECLARE @selectStr nvarchar(max);
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4';
IF(@物料类型='自制件')
SET @selectStr='
SELECT
CONVERT(varchar(10), v.钣金预达时间, 120) AS 钣金预达时间,
v.[合同号] AS 销售订单,
v.[订单编号] AS 生产订单,
v.[物料编号] AS 物料编码,
v.[物料描述] AS 物料名称,
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
[二次派工] AS 二次派工,
CONVERT(varchar(10), ISNULL(v.预计送检日期, DATEADD(DAY, 3, v.钣金预达时间)), 120) AS 预计送检日期,
CONVERT(varchar(10), v.销售要求日期, 120) AS 销售要求日期,
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') AS 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') AS 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') AS 质检进行中,
CAST(ISNULL(zp.装配工时, 0) / 3600.0 AS decimal(18,2)) AS 任务装配工时,
CAST(ISNULL(zj1.质检工时, 0) / 3600.0 AS decimal(18,2)) AS 任务质检工时,
CAST(ISNULL(htzp.合同装配工时, 0) / 3600.0 AS decimal(18,2)) AS 合同装配工时,
CAST(ISNULL(htzj.合同质检工时, 0) / 3600.0 AS decimal(18,2)) AS 合同质检工时,
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
[工序名称] AS 工序名称,
v.计划号 AS 计划号,
指派对象 AS 指派对象,
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
[优先级] AS 优先级,
[未完成说明] AS 未完成说明,
[派工特殊说明] AS 派工特殊备注,
[占用情况] AS 占用情况,
[最后编辑人] AS 最后编辑人,
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END, 钣金预达时间, v.计划开始时间';
SET @selectStr=@selectStr+@selectStrWhere;
PRINT @selectStr;
EXEC sp_executesql @selectStr;
END

View File

@@ -0,0 +1,213 @@
ALTER PROCEDURE [dbo].[计划排产_系统类任务查询_导出]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
SET NOCOUNT ON;
SELECT '系统类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT 256*18 AS 钣金预达时间,
256*14 AS 销售订单,
256*10 AS 生产订单,
256*24 AS 物料编码,
256*24 AS 物料名称,
256*10 AS 计划数,
256*8 AS 齐套,
256*12 AS 发料齐套,
256*18 AS 计划开始,
256*12 AS 派工时间,
256*20 AS 二次派工,
256*14 AS 预计送检日期,
256*14 AS 销售要求日期,
256*14 AS 发货要求日期,
256*40 AS 异常报警信息,
256*40 AS 装配进行中,
256*40 AS 质检进行中,
256*14 AS 任务装配工时,
256*14 AS 任务质检工时,
256*14 AS 合同装配工时,
256*14 AS 合同质检工时,
256*24 AS 装配工序说明,
256*24 AS 质检工序说明,
256*14 AS 要求完工日期,
256*12 AS 工序名称,
256*10 AS 计划号,
256*18 AS 指派对象,
256*12 AS 指派数量,
256*10 AS 优先级,
256*20 AS 未完成说明,
256*20 AS 派工特殊备注,
256*14 AS 占用情况,
256*14 AS 最后编辑人,
256*20 AS 最后编辑时间;
SELECT 0 AS 钣金预达时间,
0 AS 销售订单,
0 AS 生产订单,
0 AS 物料编码,
0 AS 物料名称,
0 AS 计划数,
0 AS 齐套,
0 AS 发料齐套,
0 AS 计划开始,
0 AS 派工时间,
0 AS 二次派工,
0 AS 预计送检日期,
0 AS 销售要求日期,
0 AS 发货要求日期,
0 AS 异常报警信息,
0 AS 装配进行中,
0 AS 质检进行中,
0 AS 任务装配工时,
0 AS 任务质检工时,
0 AS 合同装配工时,
0 AS 合同质检工时,
0 AS 装配工序说明,
0 AS 质检工序说明,
0 AS 要求完工日期,
0 AS 工序名称,
0 AS 计划号,
0 AS 指派对象,
0 AS 指派数量,
0 AS 优先级,
0 AS 未完成说明,
0 AS 派工特殊备注,
0 AS 占用情况,
0 AS 最后编辑人,
0 AS 最后编辑时间;
DECLARE @selectStr nvarchar(max);
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4';
IF(@物料类型='自制件')
SET @selectStr='
SELECT
CONVERT(varchar(10), v.钣金预达时间, 120) AS 钣金预达时间,
v.[合同号] AS 销售订单,
v.[订单编号] AS 生产订单,
v.[物料编号] AS 物料编码,
v.[物料描述] AS 物料名称,
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
[二次派工] AS 二次派工,
CONVERT(varchar(10), ISNULL(v.预计送检日期, DATEADD(DAY, 3, v.钣金预达时间)), 120) AS 预计送检日期,
CONVERT(varchar(10), ISNULL(v.销售要求日期, s.交货日期理论齐套日期), 120) AS 销售要求日期,
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') AS 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') AS 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') AS 质检进行中,
CAST(ISNULL(zp.装配工时, 0) / 3600.0 AS decimal(18,2)) AS 任务装配工时,
CAST(ISNULL(zj1.质检工时, 0) / 3600.0 AS decimal(18,2)) AS 任务质检工时,
CAST(ISNULL(htzp.合同装配工时, 0) / 3600.0 AS decimal(18,2)) AS 合同装配工时,
CAST(ISNULL(htzj.合同质检工时, 0) / 3600.0 AS decimal(18,2)) AS 合同质检工时,
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
[工序名称] AS 工序名称,
v.计划号 AS 计划号,
指派对象 AS 指派对象,
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
[优先级] AS 优先级,
[未完成说明] AS 未完成说明,
[派工特殊说明] AS 派工特殊备注,
[占用情况] AS 占用情况,
[最后编辑人] AS 最后编辑人,
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END, 钣金预达时间, v.计划开始时间';
SET @selectStr=@selectStr+@selectStrWhere;
PRINT @selectStr;
EXEC sp_executesql @selectStr;
END

View File

@@ -0,0 +1,217 @@
ALTER PROCEDURE [dbo].[计划排产_系统类任务查询_导出]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
SET NOCOUNT ON;
SELECT '系统类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT 256*18 AS 钣金预达时间,
256*14 AS 销售订单,
256*10 AS 生产订单,
256*24 AS 物料编码,
256*24 AS 物料名称,
256*10 AS 计划数,
256*8 AS 齐套,
256*12 AS 发料齐套,
256*18 AS 计划开始,
256*12 AS 派工时间,
256*20 AS 二次派工,
256*14 AS 预计送检日期,
256*14 AS 销售要求日期,
256*14 AS 发货要求日期,
256*40 AS 异常报警信息,
256*40 AS 装配进行中,
256*40 AS 质检进行中,
256*14 AS 任务装配工时,
256*14 AS 任务质检工时,
256*14 AS 合同装配工时,
256*14 AS 合同质检工时,
256*24 AS 装配工序说明,
256*24 AS 质检工序说明,
256*14 AS 要求完工日期,
256*12 AS 工序名称,
256*10 AS 计划号,
256*18 AS 指派对象,
256*12 AS 指派数量,
256*10 AS 优先级,
256*20 AS 未完成说明,
256*20 AS 派工特殊备注,
256*14 AS 占用情况,
256*14 AS 最后编辑人,
256*20 AS 最后编辑时间;
SELECT 0 AS 钣金预达时间,
0 AS 销售订单,
0 AS 生产订单,
0 AS 物料编码,
0 AS 物料名称,
0 AS 计划数,
0 AS 齐套,
0 AS 发料齐套,
0 AS 计划开始,
0 AS 派工时间,
0 AS 二次派工,
0 AS 预计送检日期,
0 AS 销售要求日期,
0 AS 发货要求日期,
0 AS 异常报警信息,
0 AS 装配进行中,
0 AS 质检进行中,
0 AS 任务装配工时,
0 AS 任务质检工时,
0 AS 合同装配工时,
0 AS 合同质检工时,
0 AS 装配工序说明,
0 AS 质检工序说明,
0 AS 要求完工日期,
0 AS 工序名称,
0 AS 计划号,
0 AS 指派对象,
0 AS 指派数量,
0 AS 优先级,
0 AS 未完成说明,
0 AS 派工特殊备注,
0 AS 占用情况,
0 AS 最后编辑人,
0 AS 最后编辑时间;
DECLARE @selectStr nvarchar(max);
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4';
IF(@物料类型='自制件')
SET @selectStr='
SELECT
CONVERT(varchar(10), v.钣金预达时间, 120) AS 钣金预达时间,
v.[合同号] AS 销售订单,
v.[订单编号] AS 生产订单,
v.[物料编号] AS 物料编码,
v.[物料描述] AS 物料名称,
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
[二次派工] AS 二次派工,
CONVERT(varchar(10), ISNULL(v.预计送检日期, DATEADD(DAY, 3, v.钣金预达时间)), 120) AS 预计送检日期,
CONVERT(varchar(10), ISNULL(v.销售要求日期, s.交货日期理论齐套日期), 120) AS 销售要求日期,
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') AS 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') AS 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') AS 质检进行中,
CAST(ISNULL(zp.装配工时, 0) / 3600.0 AS decimal(18,2)) AS 任务装配工时,
CAST(ISNULL(zj1.质检工时, 0) / 3600.0 AS decimal(18,2)) AS 任务质检工时,
CAST(ISNULL(htzp.合同装配工时, 0) / 3600.0 AS decimal(18,2)) AS 合同装配工时,
CAST(ISNULL(htzj.合同质检工时, 0) / 3600.0 AS decimal(18,2)) AS 合同质检工时,
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
[工序名称] AS 工序名称,
v.计划号 AS 计划号,
指派对象 AS 指派对象,
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
[优先级] AS 优先级,
[未完成说明] AS 未完成说明,
[派工特殊说明] AS 派工特殊备注,
[占用情况] AS 占用情况,
[最后编辑人] AS 最后编辑人,
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
LEFT JOIN (
SELECT 项目号, 物料号, MIN(交货日期理论齐套日期) as 交货日期理论齐套日期
FROM SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2
GROUP BY 项目号, 物料号
) s
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END, 钣金预达时间, v.计划开始时间';
SET @selectStr=@selectStr+@selectStrWhere;
PRINT @selectStr;
EXEC sp_executesql @selectStr;
END

View File

@@ -0,0 +1,213 @@
CREATE PROCEDURE [dbo].[计划排产_系统类任务查询_导出]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
SET NOCOUNT ON;
SELECT '系统类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT 256*18 AS 钣金预达时间,
256*14 AS 销售订单,
256*10 AS 生产订单,
256*24 AS 物料编码,
256*24 AS 物料名称,
256*10 AS 计划数,
256*8 AS 齐套,
256*12 AS 发料齐套,
256*18 AS 计划开始,
256*12 AS 派工时间,
256*20 AS 二次派工,
256*14 AS 预计送检日期,
256*14 AS 销售要求日期,
256*14 AS 发货要求日期,
256*40 AS 异常报警信息,
256*40 AS 装配进行中,
256*40 AS 质检进行中,
256*14 AS 任务装配工时,
256*14 AS 任务质检工时,
256*14 AS 合同装配工时,
256*14 AS 合同质检工时,
256*24 AS 装配工序说明,
256*24 AS 质检工序说明,
256*14 AS 要求完工日期,
256*12 AS 工序名称,
256*10 AS 计划号,
256*18 AS 指派对象,
256*12 AS 指派数量,
256*10 AS 优先级,
256*20 AS 未完成说明,
256*20 AS 派工特殊备注,
256*14 AS 占用情况,
256*14 AS 最后编辑人,
256*20 AS 最后编辑时间;
SELECT 0 AS 钣金预达时间,
0 AS 销售订单,
0 AS 生产订单,
0 AS 物料编码,
0 AS 物料名称,
0 AS 计划数,
0 AS 齐套,
0 AS 发料齐套,
0 AS 计划开始,
0 AS 派工时间,
0 AS 二次派工,
0 AS 预计送检日期,
0 AS 销售要求日期,
0 AS 发货要求日期,
0 AS 异常报警信息,
0 AS 装配进行中,
0 AS 质检进行中,
0 AS 任务装配工时,
0 AS 任务质检工时,
0 AS 合同装配工时,
0 AS 合同质检工时,
0 AS 装配工序说明,
0 AS 质检工序说明,
0 AS 要求完工日期,
0 AS 工序名称,
0 AS 计划号,
0 AS 指派对象,
0 AS 指派数量,
0 AS 优先级,
0 AS 未完成说明,
0 AS 派工特殊备注,
0 AS 占用情况,
0 AS 最后编辑人,
0 AS 最后编辑时间;
DECLARE @selectStr nvarchar(max);
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4';
IF(@物料类型='自制件')
SET @selectStr='
SELECT
CONVERT(varchar(10), v.钣金预达时间, 120) AS 钣金预达时间,
v.[合同号] AS 销售订单,
v.[订单编号] AS 生产订单,
v.[物料编号] AS 物料编码,
v.[物料描述] AS 物料名称,
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
[二次派工] AS 二次派工,
CONVERT(varchar(10), DATEADD(DAY, 3, CONVERT(date, v.齐套时间)), 120) AS 预计送检日期,
CONVERT(varchar(10), s.交货日期理论齐套日期, 120) AS 销售要求日期,
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') AS 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') AS 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') AS 质检进行中,
CAST(ISNULL(zp.装配工时, 0) / 60.0 AS decimal(18,2)) AS 任务装配工时,
CAST(ISNULL(zj1.质检工时, 0) / 60.0 AS decimal(18,2)) AS 任务质检工时,
CAST(ISNULL(htzp.合同装配工时, 0) / 60.0 AS decimal(18,2)) AS 合同装配工时,
CAST(ISNULL(htzj.合同质检工时, 0) / 60.0 AS decimal(18,2)) AS 合同质检工时,
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
[工序名称] AS 工序名称,
v.计划号 AS 计划号,
指派对象 AS 指派对象,
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
[优先级] AS 优先级,
[未完成说明] AS 未完成说明,
[派工特殊说明] AS 派工特殊备注,
[占用情况] AS 占用情况,
[最后编辑人] AS 最后编辑人,
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END, 钣金预达时间, v.计划开始时间';
SET @selectStr=@selectStr+@selectStrWhere;
PRINT @selectStr;
EXEC sp_executesql @selectStr;
END

View File

@@ -0,0 +1,213 @@
CREATE PROCEDURE [dbo].[计划排产_系统类任务查询_导出]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
SET NOCOUNT ON;
SELECT '系统类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT 256*18 AS 钣金预达时间,
256*14 AS 销售订单,
256*10 AS 生产订单,
256*24 AS 物料编码,
256*24 AS 物料名称,
256*10 AS 计划数,
256*8 AS 齐套,
256*12 AS 发料齐套,
256*18 AS 计划开始,
256*12 AS 派工时间,
256*20 AS 二次派工,
256*14 AS 预计送检日期,
256*14 AS 销售要求日期,
256*14 AS 发货要求日期,
256*40 AS 异常报警信息,
256*40 AS 装配进行中,
256*40 AS 质检进行中,
256*14 AS 任务装配工时,
256*14 AS 任务质检工时,
256*14 AS 合同装配工时,
256*14 AS 合同质检工时,
256*24 AS 装配工序说明,
256*24 AS 质检工序说明,
256*14 AS 要求完工日期,
256*12 AS 工序名称,
256*10 AS 计划号,
256*18 AS 指派对象,
256*12 AS 指派数量,
256*10 AS 优先级,
256*20 AS 未完成说明,
256*20 AS 派工特殊备注,
256*14 AS 占用情况,
256*14 AS 最后编辑人,
256*20 AS 最后编辑时间;
SELECT 0 AS 钣金预达时间,
0 AS 销售订单,
0 AS 生产订单,
0 AS 物料编码,
0 AS 物料名称,
0 AS 计划数,
0 AS 齐套,
0 AS 发料齐套,
0 AS 计划开始,
0 AS 派工时间,
0 AS 二次派工,
0 AS 预计送检日期,
0 AS 销售要求日期,
0 AS 发货要求日期,
0 AS 异常报警信息,
0 AS 装配进行中,
0 AS 质检进行中,
0 AS 任务装配工时,
0 AS 任务质检工时,
0 AS 合同装配工时,
0 AS 合同质检工时,
0 AS 装配工序说明,
0 AS 质检工序说明,
0 AS 要求完工日期,
0 AS 工序名称,
0 AS 计划号,
0 AS 指派对象,
0 AS 指派数量,
0 AS 优先级,
0 AS 未完成说明,
0 AS 派工特殊备注,
0 AS 占用情况,
0 AS 最后编辑人,
0 AS 最后编辑时间;
DECLARE @selectStr nvarchar(max);
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4';
IF(@物料类型='自制件')
SET @selectStr='
SELECT
CONVERT(varchar(10), v.钣金预达时间, 120) AS 钣金预达时间,
v.[合同号] AS 销售订单,
v.[订单编号] AS 生产订单,
v.[物料编号] AS 物料编码,
v.[物料描述] AS 物料名称,
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
[二次派工] AS 二次派工,
CONVERT(varchar(10), ISNULL(v.预计送检日期, DATEADD(DAY, 3, v.钣金预达时间)), 120) AS 预计送检日期,
CONVERT(varchar(10), v.销售要求日期, 120) AS 销售要求日期,
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') AS 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') AS 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') AS 质检进行中,
CAST(ISNULL(zp.装配工时, 0) / 60.0 AS decimal(18,2)) AS 任务装配工时,
CAST(ISNULL(zj1.质检工时, 0) / 60.0 AS decimal(18,2)) AS 任务质检工时,
CAST(ISNULL(htzp.合同装配工时, 0) / 60.0 AS decimal(18,2)) AS 合同装配工时,
CAST(ISNULL(htzj.合同质检工时, 0) / 60.0 AS decimal(18,2)) AS 合同质检工时,
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
[工序名称] AS 工序名称,
v.计划号 AS 计划号,
指派对象 AS 指派对象,
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
[优先级] AS 优先级,
[未完成说明] AS 未完成说明,
[派工特殊说明] AS 派工特殊备注,
[占用情况] AS 占用情况,
[最后编辑人] AS 最后编辑人,
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END, 钣金预达时间, v.计划开始时间';
SET @selectStr=@selectStr+@selectStrWhere;
PRINT @selectStr;
EXEC sp_executesql @selectStr;
END

View File

@@ -0,0 +1,213 @@
CREATE PROCEDURE [dbo].[计划排产_系统类任务查询_导出]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
SET NOCOUNT ON;
SELECT '系统类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT 256*18 AS 钣金预达时间,
256*14 AS 销售订单,
256*10 AS 生产订单,
256*24 AS 物料编码,
256*24 AS 物料名称,
256*10 AS 计划数,
256*8 AS 齐套,
256*12 AS 发料齐套,
256*18 AS 计划开始,
256*12 AS 派工时间,
256*20 AS 二次派工,
256*14 AS 预计送检日期,
256*14 AS 销售要求日期,
256*14 AS 发货要求日期,
256*40 AS 异常报警信息,
256*40 AS 装配进行中,
256*40 AS 质检进行中,
256*14 AS 任务装配工时,
256*14 AS 任务质检工时,
256*14 AS 合同装配工时,
256*14 AS 合同质检工时,
256*24 AS 装配工序说明,
256*24 AS 质检工序说明,
256*14 AS 要求完工日期,
256*12 AS 工序名称,
256*10 AS 计划号,
256*18 AS 指派对象,
256*12 AS 指派数量,
256*10 AS 优先级,
256*20 AS 未完成说明,
256*20 AS 派工特殊备注,
256*14 AS 占用情况,
256*14 AS 最后编辑人,
256*20 AS 最后编辑时间;
SELECT 0 AS 钣金预达时间,
0 AS 销售订单,
0 AS 生产订单,
0 AS 物料编码,
0 AS 物料名称,
0 AS 计划数,
0 AS 齐套,
0 AS 发料齐套,
0 AS 计划开始,
0 AS 派工时间,
0 AS 二次派工,
0 AS 预计送检日期,
0 AS 销售要求日期,
0 AS 发货要求日期,
0 AS 异常报警信息,
0 AS 装配进行中,
0 AS 质检进行中,
0 AS 任务装配工时,
0 AS 任务质检工时,
0 AS 合同装配工时,
0 AS 合同质检工时,
0 AS 装配工序说明,
0 AS 质检工序说明,
0 AS 要求完工日期,
0 AS 工序名称,
0 AS 计划号,
0 AS 指派对象,
0 AS 指派数量,
0 AS 优先级,
0 AS 未完成说明,
0 AS 派工特殊备注,
0 AS 占用情况,
0 AS 最后编辑人,
0 AS 最后编辑时间;
DECLARE @selectStr nvarchar(max);
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4';
IF(@物料类型='自制件')
SET @selectStr='
SELECT
CONVERT(varchar(10), v.钣金预达时间, 120) AS 钣金预达时间,
v.[合同号] AS 销售订单,
v.[订单编号] AS 生产订单,
v.[物料编号] AS 物料编码,
v.[物料描述] AS 物料名称,
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
[二次派工] AS 二次派工,
CONVERT(varchar(10), ISNULL(v.预计送检日期, DATEADD(DAY, 3, v.钣金预达时间)), 120) AS 预计送检日期,
CONVERT(varchar(10), v.销售要求日期, 120) AS 销售要求日期,
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') AS 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') AS 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') AS 质检进行中,
CAST(ISNULL(zp.装配工时, 0) / 3600.0 AS decimal(18,2)) AS 任务装配工时,
CAST(ISNULL(zj1.质检工时, 0) / 3600.0 AS decimal(18,2)) AS 任务质检工时,
CAST(ISNULL(htzp.合同装配工时, 0) / 3600.0 AS decimal(18,2)) AS 合同装配工时,
CAST(ISNULL(htzj.合同质检工时, 0) / 3600.0 AS decimal(18,2)) AS 合同质检工时,
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
[工序名称] AS 工序名称,
v.计划号 AS 计划号,
指派对象 AS 指派对象,
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
[优先级] AS 优先级,
[未完成说明] AS 未完成说明,
[派工特殊说明] AS 派工特殊备注,
[占用情况] AS 占用情况,
[最后编辑人] AS 最后编辑人,
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END, 钣金预达时间, v.计划开始时间';
SET @selectStr=@selectStr+@selectStrWhere;
PRINT @selectStr;
EXEC sp_executesql @selectStr;
END

View File

@@ -0,0 +1,213 @@
CREATE PROCEDURE [dbo].[计划排产_系统类任务查询_导出]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
SET NOCOUNT ON;
SELECT '系统类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT 256*18 AS 钣金预达时间,
256*14 AS 销售订单,
256*10 AS 生产订单,
256*24 AS 物料编码,
256*24 AS 物料名称,
256*10 AS 计划数,
256*8 AS 齐套,
256*12 AS 发料齐套,
256*18 AS 计划开始,
256*12 AS 派工时间,
256*20 AS 二次派工,
256*14 AS 预计送检日期,
256*14 AS 销售要求日期,
256*14 AS 发货要求日期,
256*40 AS 异常报警信息,
256*40 AS 装配进行中,
256*40 AS 质检进行中,
256*14 AS 任务装配工时,
256*14 AS 任务质检工时,
256*14 AS 合同装配工时,
256*14 AS 合同质检工时,
256*24 AS 装配工序说明,
256*24 AS 质检工序说明,
256*14 AS 要求完工日期,
256*12 AS 工序名称,
256*10 AS 计划号,
256*18 AS 指派对象,
256*12 AS 指派数量,
256*10 AS 优先级,
256*20 AS 未完成说明,
256*20 AS 派工特殊备注,
256*14 AS 占用情况,
256*14 AS 最后编辑人,
256*20 AS 最后编辑时间;
SELECT 0 AS 钣金预达时间,
0 AS 销售订单,
0 AS 生产订单,
0 AS 物料编码,
0 AS 物料名称,
0 AS 计划数,
0 AS 齐套,
0 AS 发料齐套,
0 AS 计划开始,
0 AS 派工时间,
0 AS 二次派工,
0 AS 预计送检日期,
0 AS 销售要求日期,
0 AS 发货要求日期,
0 AS 异常报警信息,
0 AS 装配进行中,
0 AS 质检进行中,
0 AS 任务装配工时,
0 AS 任务质检工时,
0 AS 合同装配工时,
0 AS 合同质检工时,
0 AS 装配工序说明,
0 AS 质检工序说明,
0 AS 要求完工日期,
0 AS 工序名称,
0 AS 计划号,
0 AS 指派对象,
0 AS 指派数量,
0 AS 优先级,
0 AS 未完成说明,
0 AS 派工特殊备注,
0 AS 占用情况,
0 AS 最后编辑人,
0 AS 最后编辑时间;
DECLARE @selectStr nvarchar(max);
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4';
IF(@物料类型='自制件')
SET @selectStr='
SELECT
CONVERT(varchar(10), v.钣金预达时间, 120) AS 钣金预达时间,
v.[合同号] AS 销售订单,
v.[订单编号] AS 生产订单,
v.[物料编号] AS 物料编码,
v.[物料描述] AS 物料名称,
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
[二次派工] AS 二次派工,
CONVERT(varchar(10), ISNULL(v.预计送检日期, DATEADD(DAY, 3, v.钣金预达时间)), 120) AS 预计送检日期,
CONVERT(varchar(10), ISNULL(v.销售要求日期, s.交货日期理论齐套日期), 120) AS 销售要求日期,
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') AS 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') AS 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') AS 质检进行中,
CAST(ISNULL(zp.装配工时, 0) / 3600.0 AS decimal(18,2)) AS 任务装配工时,
CAST(ISNULL(zj1.质检工时, 0) / 3600.0 AS decimal(18,2)) AS 任务质检工时,
CAST(ISNULL(htzp.合同装配工时, 0) / 3600.0 AS decimal(18,2)) AS 合同装配工时,
CAST(ISNULL(htzj.合同质检工时, 0) / 3600.0 AS decimal(18,2)) AS 合同质检工时,
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
[工序名称] AS 工序名称,
v.计划号 AS 计划号,
指派对象 AS 指派对象,
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
[优先级] AS 优先级,
[未完成说明] AS 未完成说明,
[派工特殊说明] AS 派工特殊备注,
[占用情况] AS 占用情况,
[最后编辑人] AS 最后编辑人,
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END, 钣金预达时间, v.计划开始时间';
SET @selectStr=@selectStr+@selectStrWhere;
PRINT @selectStr;
EXEC sp_executesql @selectStr;
END

View File

@@ -0,0 +1,213 @@
CREATE PROCEDURE [dbo].[计划排产_系统类任务查询_导出]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
SET NOCOUNT ON;
SELECT '系统类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT 256*18 AS 钣金预达时间,
256*14 AS 销售订单,
256*10 AS 生产订单,
256*24 AS 物料编码,
256*24 AS 物料名称,
256*10 AS 计划数,
256*8 AS 齐套,
256*12 AS 发料齐套,
256*18 AS 计划开始,
256*12 AS 派工时间,
256*20 AS 二次派工,
256*14 AS 预计送检日期,
256*14 AS 销售要求日期,
256*14 AS 发货要求日期,
256*40 AS 异常报警信息,
256*40 AS 装配进行中,
256*40 AS 质检进行中,
256*14 AS 任务装配工时,
256*14 AS 任务质检工时,
256*14 AS 合同装配工时,
256*14 AS 合同质检工时,
256*24 AS 装配工序说明,
256*24 AS 质检工序说明,
256*14 AS 要求完工日期,
256*12 AS 工序名称,
256*10 AS 计划号,
256*18 AS 指派对象,
256*12 AS 指派数量,
256*10 AS 优先级,
256*20 AS 未完成说明,
256*20 AS 派工特殊备注,
256*14 AS 占用情况,
256*14 AS 最后编辑人,
256*20 AS 最后编辑时间;
SELECT 0 AS 钣金预达时间,
0 AS 销售订单,
0 AS 生产订单,
0 AS 物料编码,
0 AS 物料名称,
0 AS 计划数,
0 AS 齐套,
0 AS 发料齐套,
0 AS 计划开始,
0 AS 派工时间,
0 AS 二次派工,
0 AS 预计送检日期,
0 AS 销售要求日期,
0 AS 发货要求日期,
0 AS 异常报警信息,
0 AS 装配进行中,
0 AS 质检进行中,
0 AS 任务装配工时,
0 AS 任务质检工时,
0 AS 合同装配工时,
0 AS 合同质检工时,
0 AS 装配工序说明,
0 AS 质检工序说明,
0 AS 要求完工日期,
0 AS 工序名称,
0 AS 计划号,
0 AS 指派对象,
0 AS 指派数量,
0 AS 优先级,
0 AS 未完成说明,
0 AS 派工特殊备注,
0 AS 占用情况,
0 AS 最后编辑人,
0 AS 最后编辑时间;
DECLARE @selectStr nvarchar(max);
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4';
IF(@物料类型='自制件')
SET @selectStr='
SELECT
CONVERT(varchar(10), v.钣金预达时间, 120) AS 钣金预达时间,
v.[合同号] AS 销售订单,
v.[订单编号] AS 生产订单,
v.[物料编号] AS 物料编码,
v.[物料描述] AS 物料名称,
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
[二次派工] AS 二次派工,
CONVERT(varchar(10), DATEADD(DAY, 3, CONVERT(date, v.齐套时间)), 120) AS 预计送检日期,
CONVERT(varchar(10), s.交货日期理论齐套日期, 120) AS 销售要求日期,
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') AS 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') AS 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') AS 质检进行中,
CAST(ISNULL(zp.装配工时, 0) / 60.0 AS decimal(18,2)) AS 任务装配工时,
CAST(ISNULL(zj1.质检工时, 0) / 60.0 AS decimal(18,2)) AS 任务质检工时,
CAST(ISNULL(htzp.合同装配工时, 0) / 60.0 AS decimal(18,2)) AS 合同装配工时,
CAST(ISNULL(htzj.合同质检工时, 0) / 60.0 AS decimal(18,2)) AS 合同质检工时,
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
[工序名称] AS 工序名称,
v.计划号 AS 计划号,
指派对象 AS 指派对象,
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
[优先级] AS 优先级,
[未完成说明] AS 未完成说明,
[派工特殊说明] AS 派工特殊备注,
[占用情况] AS 占用情况,
[最后编辑人] AS 最后编辑人,
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END, 钣金预达时间, v.计划开始时间';
SET @selectStr=@selectStr+@selectStrWhere;
PRINT @selectStr;
EXEC sp_executesql @selectStr;
END

View File

@@ -0,0 +1,40 @@
CREATE OR ALTER PROCEDURE [dbo].[计划排产_系统类装配任务_修改预计送检日期]
@editstr nvarchar(100),
@订单号 int=0
AS
BEGIN
SET NOCOUNT ON;
DECLARE @whereStr nvarchar(max)=' where 1=1 ';
DECLARE @updateStr nvarchar(max)='update [MES_接口_生产计划] set ';
DECLARE @selStr nvarchar(max)='';
IF(@订单号>0) SET @whereStr=@whereStr + ' and [订单编号]='+CONVERT(varchar(10),@订单号);
IF(@editstr<>'') SET @updateStr = @updateStr + @editstr;
SET @selStr=@updateStr+@whereStr;
PRINT @selStr;
EXEC sp_executesql @selStr;
SELECT '1' AS result;
END;
GO
CREATE OR ALTER PROCEDURE [dbo].[计划排产_系统类装配任务_修改销售要求日期]
@editstr nvarchar(100),
@订单号 int=0
AS
BEGIN
SET NOCOUNT ON;
DECLARE @whereStr nvarchar(max)=' where 1=1 ';
DECLARE @updateStr nvarchar(max)='update [MES_接口_生产计划] set ';
DECLARE @selStr nvarchar(max)='';
IF(@订单号>0) SET @whereStr=@whereStr + ' and [订单编号]='+CONVERT(varchar(10),@订单号);
IF(@editstr<>'') SET @updateStr = @updateStr + @editstr;
SET @selStr=@updateStr+@whereStr;
PRINT @selStr;
EXEC sp_executesql @selStr;
SELECT '1' AS result;
END;

View File

@@ -0,0 +1,26 @@
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
create PROCEDURE [dbo].[计划排产_系统类装配任务_修改钣金预达时间]
@editstr nvarchar(50),
@订单号 int=0
AS
declare @whereStr nvarchar(max)=' where 1=1 '
declare @updateStr nvarchar(max)='update [MES_接口_生产计划] set '
declare @selStr nvarchar(max)=''
-- update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号=@订单号 and 订单行号=@订单行号 and 订单拆分内码<>@订单拆分内码 and isnull(派工状态,0)=0
if(@订单号>0)set @whereStr=@whereStr + ' and [订单编号]='+Convert(VARCHAR(10),@订单号)
if(@editstr<>'')set @updateStr = @updateStr + @editstr
set @selStr=@updateStr+@whereStr
print @selStr
EXEC sp_executesql @selStr

View File

@@ -0,0 +1,102 @@
ALTER PROCEDURE [dbo].[计划排产_阀类任务查询]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
declare @selectStr nvarchar(max)
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4'
if(@物料类型='自制件') --自制件
set @selectStr='
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,
ISNULL(zp.装配工时, 0) as 任务装配工时,
ISNULL(zj1.质检工时, 0) as 任务质检工时,
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') as 异常报警信息
FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT DISTINCT 计划号
FROM dbo.YL_质量检验_质检记录
WHERE 质检类型 = ''终检''
) zj ON v.[订单编号] = zj.计划号
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
ON v.[订单编号] = g.订单编号
AND v.[订单行号] = g.工艺顺序
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%'''
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END,
齐套时间,计划开始时间 '
set @selectStr=@selectStr+@selectStrWhere
print @selectStr
EXEC sp_executesql @selectStr
END

View File

@@ -0,0 +1,129 @@
ALTER PROCEDURE [dbo].[计划排产_阀类任务查询]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
declare @selectStr nvarchar(max)
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4'
if(@物料类型='自制件') --自制件
set @selectStr='
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,
ISNULL(zp.装配工时, 0) as 任务装配工时,
ISNULL(zj1.质检工时, 0) as 任务质检工时,
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') as 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') as 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') as 质检进行中 FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT DISTINCT 计划号
FROM dbo.YL_质量检验_质检记录
WHERE 质检类型 = ''终检''
) zj ON v.[订单编号] = zj.计划号
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
ON v.[订单编号] = g.订单编号
AND v.[订单行号] = g.工艺顺序
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%'''
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END,
齐套时间,计划开始时间 '
set @selectStr=@selectStr+@selectStrWhere
print @selectStr
EXEC sp_executesql @selectStr
END

View File

@@ -0,0 +1,133 @@
ALTER PROCEDURE [dbo].[计划排产_阀类任务查询]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
declare @selectStr nvarchar(max)
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4'
if(@物料类型='自制件') --自制件
set @selectStr='
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,ISNULL(预计送检日期, DATEADD(DAY, 3, 齐套时间)) as 预计送检日期,ISNULL(销售要求日期, s.交货日期理论齐套日期) as 销售要求日期,
ISNULL(zp.装配工时, 0) as 任务装配工时,
ISNULL(zj1.质检工时, 0) as 任务质检工时,
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') as 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') as 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') as 质检进行中 FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT DISTINCT 计划号
FROM dbo.YL_质量检验_质检记录
WHERE 质检类型 = ''终检''
) zj ON v.[订单编号] = zj.计划号
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
ON v.[订单编号] = g.订单编号
AND v.[订单行号] = g.工艺顺序
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
left join (
SELECT 项目号, 物料号, MIN(交货日期理论齐套日期) as 交货日期理论齐套日期
FROM SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2
GROUP BY 项目号, 物料号
) s
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and v.[合同号] like ''%'+@合同号+'%'''
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END,
齐套时间,计划开始时间 '
set @selectStr=@selectStr+@selectStrWhere
print @selectStr
EXEC sp_executesql @selectStr
END

View File

@@ -0,0 +1,129 @@
ALTER PROCEDURE [dbo].[计划排产_阀类任务查询]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
declare @selectStr nvarchar(max)
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4'
if(@物料类型='自制件') --自制件
set @selectStr='
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,ISNULL(预计送检日期, DATEADD(DAY, 3, 齐套时间)) as 预计送检日期,ISNULL(销售要求日期, s.交货日期理论齐套日期) as 销售要求日期,
ISNULL(zp.装配工时, 0) as 任务装配工时,
ISNULL(zj1.质检工时, 0) as 任务质检工时,
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') as 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') as 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') as 质检进行中 FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT DISTINCT 计划号
FROM dbo.YL_质量检验_质检记录
WHERE 质检类型 = ''终检''
) zj ON v.[订单编号] = zj.计划号
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
ON v.[订单编号] = g.订单编号
AND v.[订单行号] = g.工艺顺序
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and v.[合同号] like ''%'+@合同号+'%'''
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END,
齐套时间,计划开始时间 '
set @selectStr=@selectStr+@selectStrWhere
print @selectStr
EXEC sp_executesql @selectStr
END

View File

@@ -0,0 +1,98 @@
CREATE PROCEDURE [dbo].[计划排产_阀类任务查询]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
declare @selectStr nvarchar(4000)
declare @selectStrWhere nvarchar(4000)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4'
if(@物料类型='自制件') --自制件
set @selectStr='
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,
ISNULL(zp.装配工时, 0) as 任务装配工时,
ISNULL(zj1.质检工时, 0) as 任务质检工时,
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
ISNULL(zj1.质检工序说明, '''') as 质检工序说明
FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT DISTINCT 计划号
FROM dbo.YL_质量检验_质检记录
WHERE 质检类型 = ''终检''
) zj ON v.[订单编号] = zj.计划号
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
ON v.[订单编号] = g.订单编号
AND v.[订单行号] = g.工艺顺序
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%'''
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END,
齐套时间,计划开始时间 '
set @selectStr=@selectStr+@selectStrWhere
print @selectStr
EXEC sp_executesql @selectStr
END

View File

@@ -0,0 +1,102 @@
CREATE PROCEDURE [dbo].[计划排产_阀类任务查询]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
declare @selectStr nvarchar(max)
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4'
if(@物料类型='自制件') --自制件
set @selectStr='
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,
ISNULL(zp.装配工时, 0) as 任务装配工时,
ISNULL(zj1.质检工时, 0) as 任务质检工时,
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') as 异常报警信息
FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT DISTINCT 计划号
FROM dbo.YL_质量检验_质检记录
WHERE 质检类型 = ''终检''
) zj ON v.[订单编号] = zj.计划号
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
ON v.[订单编号] = g.订单编号
AND v.[订单行号] = g.工艺顺序
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%'''
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END,
齐套时间,计划开始时间 '
set @selectStr=@selectStr+@selectStrWhere
print @selectStr
EXEC sp_executesql @selectStr
END

View File

@@ -0,0 +1,129 @@
CREATE PROCEDURE [dbo].[计划排产_阀类任务查询]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
declare @selectStr nvarchar(max)
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4'
if(@物料类型='自制件') --自制件
set @selectStr='
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,ISNULL(预计送检日期, DATEADD(DAY, 3, 齐套时间)) as 预计送检日期,ISNULL(销售要求日期, s.交货日期理论齐套日期) as 销售要求日期,
ISNULL(zp.装配工时, 0) as 任务装配工时,
ISNULL(zj1.质检工时, 0) as 任务质检工时,
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') as 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') as 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') as 质检进行中 FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT DISTINCT 计划号
FROM dbo.YL_质量检验_质检记录
WHERE 质检类型 = ''终检''
) zj ON v.[订单编号] = zj.计划号
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
ON v.[订单编号] = g.订单编号
AND v.[订单行号] = g.工艺顺序
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and v.[合同号] like ''%'+@合同号+'%'''
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END,
齐套时间,计划开始时间 '
set @selectStr=@selectStr+@selectStrWhere
print @selectStr
EXEC sp_executesql @selectStr
END

View File

@@ -0,0 +1,129 @@
CREATE PROCEDURE [dbo].[计划排产_阀类任务查询]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
declare @selectStr nvarchar(max)
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4'
if(@物料类型='自制件') --自制件
set @selectStr='
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,
ISNULL(zp.装配工时, 0) as 任务装配工时,
ISNULL(zj1.质检工时, 0) as 任务质检工时,
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') as 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') as 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') as 质检进行中 FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT DISTINCT 计划号
FROM dbo.YL_质量检验_质检记录
WHERE 质检类型 = ''终检''
) zj ON v.[订单编号] = zj.计划号
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
ON v.[订单编号] = g.订单编号
AND v.[订单行号] = g.工艺顺序
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and v.[合同号] like ''%'+@合同号+'%'''
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END,
齐套时间,计划开始时间 '
set @selectStr=@selectStr+@selectStrWhere
print @selectStr
EXEC sp_executesql @selectStr
END

View File

@@ -0,0 +1,210 @@
ALTER PROCEDURE [dbo].[计划排产_阀类任务查询_导出]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
SET NOCOUNT ON;
SELECT '阀类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT 256*12 AS 发料齐套,
256*18 AS 计划开始,
256*12 AS 派工时间,
256*8 AS 齐套,
256*14 AS 销售订单,
256*10 AS 生产订单,
256*24 AS 物料编码,
256*24 AS 物料名称,
256*10 AS 计划数,
256*20 AS 二次派工,
256*14 AS 预计送检日期,
256*14 AS 销售要求日期,
256*14 AS 发货要求日期,
256*40 AS 异常报警信息,
256*40 AS 装配进行中,
256*40 AS 质检进行中,
256*14 AS 任务装配工时,
256*14 AS 任务质检工时,
256*14 AS 合同装配工时,
256*14 AS 合同质检工时,
256*24 AS 装配工序说明,
256*24 AS 质检工序说明,
256*14 AS 要求完工日期,
256*12 AS 工序名称,
256*10 AS 计划号,
256*18 AS 指派对象,
256*12 AS 指派数量,
256*10 AS 优先级,
256*20 AS 未完成说明,
256*20 AS 派工特殊备注,
256*14 AS 占用情况,
256*14 AS 最后编辑人,
256*20 AS 最后编辑时间;
SELECT 0 AS 发料齐套,
0 AS 计划开始,
0 AS 派工时间,
0 AS 齐套,
0 AS 销售订单,
0 AS 生产订单,
0 AS 物料编码,
0 AS 物料名称,
0 AS 计划数,
0 AS 二次派工,
0 AS 预计送检日期,
0 AS 销售要求日期,
0 AS 发货要求日期,
0 AS 异常报警信息,
0 AS 装配进行中,
0 AS 质检进行中,
0 AS 任务装配工时,
0 AS 任务质检工时,
0 AS 合同装配工时,
0 AS 合同质检工时,
0 AS 装配工序说明,
0 AS 质检工序说明,
0 AS 要求完工日期,
0 AS 工序名称,
0 AS 计划号,
0 AS 指派对象,
0 AS 指派数量,
0 AS 优先级,
0 AS 未完成说明,
0 AS 派工特殊备注,
0 AS 占用情况,
0 AS 最后编辑人,
0 AS 最后编辑时间;
DECLARE @selectStr nvarchar(max);
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4';
IF(@物料类型='自制件')
SET @selectStr='
SELECT
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
v.[合同号] AS 销售订单,
v.[订单编号] AS 生产订单,
v.[物料编号] AS 物料编码,
v.[物料描述] AS 物料名称,
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
[二次派工] AS 二次派工,
CONVERT(varchar(10), DATEADD(DAY, 3, CONVERT(date, v.齐套时间)), 120) AS 预计送检日期,
CONVERT(varchar(10), s.交货日期理论齐套日期, 120) AS 销售要求日期,
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') AS 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') AS 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') AS 质检进行中,
CAST(ISNULL(zp.装配工时, 0) / 60.0 AS decimal(18,2)) AS 任务装配工时,
CAST(ISNULL(zj1.质检工时, 0) / 60.0 AS decimal(18,2)) AS 任务质检工时,
CAST(ISNULL(htzp.合同装配工时, 0) / 60.0 AS decimal(18,2)) AS 合同装配工时,
CAST(ISNULL(htzj.合同质检工时, 0) / 60.0 AS decimal(18,2)) AS 合同质检工时,
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
[工序名称] AS 工序名称,
v.计划号 AS 计划号,
指派对象 AS 指派对象,
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
[优先级] AS 优先级,
[未完成说明] AS 未完成说明,
[派工特殊说明] AS 派工特殊备注,
[占用情况] AS 占用情况,
[最后编辑人] AS 最后编辑人,
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END, 齐套时间, 计划开始时间';
SET @selectStr=@selectStr+@selectStrWhere;
PRINT @selectStr;
EXEC sp_executesql @selectStr;
END

View File

@@ -0,0 +1,214 @@
ALTER PROCEDURE [dbo].[计划排产_阀类任务查询_导出]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
SET NOCOUNT ON;
SELECT '阀类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT 256*12 AS 发料齐套,
256*18 AS 计划开始,
256*12 AS 派工时间,
256*8 AS 齐套,
256*14 AS 销售订单,
256*10 AS 生产订单,
256*24 AS 物料编码,
256*24 AS 物料名称,
256*10 AS 计划数,
256*20 AS 二次派工,
256*14 AS 预计送检日期,
256*14 AS 销售要求日期,
256*14 AS 发货要求日期,
256*40 AS 异常报警信息,
256*40 AS 装配进行中,
256*40 AS 质检进行中,
256*14 AS 任务装配工时,
256*14 AS 任务质检工时,
256*14 AS 合同装配工时,
256*14 AS 合同质检工时,
256*24 AS 装配工序说明,
256*24 AS 质检工序说明,
256*14 AS 要求完工日期,
256*12 AS 工序名称,
256*10 AS 计划号,
256*18 AS 指派对象,
256*12 AS 指派数量,
256*10 AS 优先级,
256*20 AS 未完成说明,
256*20 AS 派工特殊备注,
256*14 AS 占用情况,
256*14 AS 最后编辑人,
256*20 AS 最后编辑时间;
SELECT 0 AS 发料齐套,
0 AS 计划开始,
0 AS 派工时间,
0 AS 齐套,
0 AS 销售订单,
0 AS 生产订单,
0 AS 物料编码,
0 AS 物料名称,
0 AS 计划数,
0 AS 二次派工,
0 AS 预计送检日期,
0 AS 销售要求日期,
0 AS 发货要求日期,
0 AS 异常报警信息,
0 AS 装配进行中,
0 AS 质检进行中,
0 AS 任务装配工时,
0 AS 任务质检工时,
0 AS 合同装配工时,
0 AS 合同质检工时,
0 AS 装配工序说明,
0 AS 质检工序说明,
0 AS 要求完工日期,
0 AS 工序名称,
0 AS 计划号,
0 AS 指派对象,
0 AS 指派数量,
0 AS 优先级,
0 AS 未完成说明,
0 AS 派工特殊备注,
0 AS 占用情况,
0 AS 最后编辑人,
0 AS 最后编辑时间;
DECLARE @selectStr nvarchar(max);
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4';
IF(@物料类型='自制件')
SET @selectStr='
SELECT
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
v.[合同号] AS 销售订单,
v.[订单编号] AS 生产订单,
v.[物料编号] AS 物料编码,
v.[物料描述] AS 物料名称,
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
[二次派工] AS 二次派工,
CONVERT(varchar(10), ISNULL(v.预计送检日期, DATEADD(DAY, 3, v.齐套时间)), 120) AS 预计送检日期,
CONVERT(varchar(10), ISNULL(v.销售要求日期, s.交货日期理论齐套日期), 120) AS 销售要求日期,
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') AS 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') AS 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') AS 质检进行中,
CAST(ISNULL(zp.装配工时, 0) / 3600.0 AS decimal(18,2)) AS 任务装配工时,
CAST(ISNULL(zj1.质检工时, 0) / 3600.0 AS decimal(18,2)) AS 任务质检工时,
CAST(ISNULL(htzp.合同装配工时, 0) / 3600.0 AS decimal(18,2)) AS 合同装配工时,
CAST(ISNULL(htzj.合同质检工时, 0) / 3600.0 AS decimal(18,2)) AS 合同质检工时,
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
[工序名称] AS 工序名称,
v.计划号 AS 计划号,
指派对象 AS 指派对象,
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
[优先级] AS 优先级,
[未完成说明] AS 未完成说明,
[派工特殊说明] AS 派工特殊备注,
[占用情况] AS 占用情况,
[最后编辑人] AS 最后编辑人,
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
LEFT JOIN (
SELECT 项目号, 物料号, MIN(交货日期理论齐套日期) as 交货日期理论齐套日期
FROM SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2
GROUP BY 项目号, 物料号
) s
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END, 齐套时间, 计划开始时间';
SET @selectStr=@selectStr+@selectStrWhere;
PRINT @selectStr;
EXEC sp_executesql @selectStr;
END

View File

@@ -0,0 +1,210 @@
ALTER PROCEDURE [dbo].[计划排产_阀类任务查询_导出]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
SET NOCOUNT ON;
SELECT '阀类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT 256*12 AS 发料齐套,
256*18 AS 计划开始,
256*12 AS 派工时间,
256*8 AS 齐套,
256*14 AS 销售订单,
256*10 AS 生产订单,
256*24 AS 物料编码,
256*24 AS 物料名称,
256*10 AS 计划数,
256*20 AS 二次派工,
256*14 AS 预计送检日期,
256*14 AS 销售要求日期,
256*14 AS 发货要求日期,
256*40 AS 异常报警信息,
256*40 AS 装配进行中,
256*40 AS 质检进行中,
256*14 AS 任务装配工时,
256*14 AS 任务质检工时,
256*14 AS 合同装配工时,
256*14 AS 合同质检工时,
256*24 AS 装配工序说明,
256*24 AS 质检工序说明,
256*14 AS 要求完工日期,
256*12 AS 工序名称,
256*10 AS 计划号,
256*18 AS 指派对象,
256*12 AS 指派数量,
256*10 AS 优先级,
256*20 AS 未完成说明,
256*20 AS 派工特殊备注,
256*14 AS 占用情况,
256*14 AS 最后编辑人,
256*20 AS 最后编辑时间;
SELECT 0 AS 发料齐套,
0 AS 计划开始,
0 AS 派工时间,
0 AS 齐套,
0 AS 销售订单,
0 AS 生产订单,
0 AS 物料编码,
0 AS 物料名称,
0 AS 计划数,
0 AS 二次派工,
0 AS 预计送检日期,
0 AS 销售要求日期,
0 AS 发货要求日期,
0 AS 异常报警信息,
0 AS 装配进行中,
0 AS 质检进行中,
0 AS 任务装配工时,
0 AS 任务质检工时,
0 AS 合同装配工时,
0 AS 合同质检工时,
0 AS 装配工序说明,
0 AS 质检工序说明,
0 AS 要求完工日期,
0 AS 工序名称,
0 AS 计划号,
0 AS 指派对象,
0 AS 指派数量,
0 AS 优先级,
0 AS 未完成说明,
0 AS 派工特殊备注,
0 AS 占用情况,
0 AS 最后编辑人,
0 AS 最后编辑时间;
DECLARE @selectStr nvarchar(max);
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4';
IF(@物料类型='自制件')
SET @selectStr='
SELECT
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
v.[合同号] AS 销售订单,
v.[订单编号] AS 生产订单,
v.[物料编号] AS 物料编码,
v.[物料描述] AS 物料名称,
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
[二次派工] AS 二次派工,
CONVERT(varchar(10), ISNULL(v.预计送检日期, DATEADD(DAY, 3, v.齐套时间)), 120) AS 预计送检日期,
CONVERT(varchar(10), ISNULL(v.销售要求日期, s.交货日期理论齐套日期), 120) AS 销售要求日期,
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') AS 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') AS 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') AS 质检进行中,
CAST(ISNULL(zp.装配工时, 0) / 3600.0 AS decimal(18,2)) AS 任务装配工时,
CAST(ISNULL(zj1.质检工时, 0) / 3600.0 AS decimal(18,2)) AS 任务质检工时,
CAST(ISNULL(htzp.合同装配工时, 0) / 3600.0 AS decimal(18,2)) AS 合同装配工时,
CAST(ISNULL(htzj.合同质检工时, 0) / 3600.0 AS decimal(18,2)) AS 合同质检工时,
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
[工序名称] AS 工序名称,
v.计划号 AS 计划号,
指派对象 AS 指派对象,
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
[优先级] AS 优先级,
[未完成说明] AS 未完成说明,
[派工特殊说明] AS 派工特殊备注,
[占用情况] AS 占用情况,
[最后编辑人] AS 最后编辑人,
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END, 齐套时间, 计划开始时间';
SET @selectStr=@selectStr+@selectStrWhere;
PRINT @selectStr;
EXEC sp_executesql @selectStr;
END

View File

@@ -0,0 +1,65 @@
CREATE PROCEDURE [dbo].[计划排产_阀类任务查询_导出]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
SET NOCOUNT ON;
-- 导出文件名和类型
SELECT '阀类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
-- 字段宽度
SELECT 256*20 AS 齐套时间, 256*20 AS 计划开始时间, 256*20 AS 派工时间, 256*10 AS 齐套, 256*10 AS 合同号,
256*10 AS 订单号, 256*40 AS 产品编码, 256*20 AS 产品名称, 256*10 AS 计划数量, 256*10 AS 二次派工, 256*20 AS 预计送检时间, 256*20 AS 销售要求日期,
256*20 AS 要求发货日期
-- 是否计算列
SELECT 0 AS 齐套时间, 0 AS 计划开始时间, 0 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)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4'
if(@物料类型='自制件') --自制件
set @selectStr='
SELECT v.齐套时间,计划开始时间,v.派工时间,v.齐套,[合同号],v.[订单编号] as 订单号,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
[二次派工],DATEADD(DAY, 3, CONVERT(DATE, v.齐套时间)),1,要求发货日期
FROM [View_生产订单_MES] v'
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%'''
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END,
齐套时间 '
set @selectStr=@selectStr+@selectStrWhere
print @selectStr
EXEC sp_executesql @selectStr
END

View File

@@ -0,0 +1,210 @@
CREATE PROCEDURE [dbo].[计划排产_阀类任务查询_导出]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
SET NOCOUNT ON;
SELECT '阀类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT 256*12 AS 发料齐套,
256*18 AS 计划开始,
256*12 AS 派工时间,
256*8 AS 齐套,
256*14 AS 销售订单,
256*10 AS 生产订单,
256*24 AS 物料编码,
256*24 AS 物料名称,
256*10 AS 计划数,
256*20 AS 二次派工,
256*14 AS 预计送检日期,
256*14 AS 销售要求日期,
256*14 AS 发货要求日期,
256*40 AS 异常报警信息,
256*40 AS 装配进行中,
256*40 AS 质检进行中,
256*14 AS 任务装配工时,
256*14 AS 任务质检工时,
256*14 AS 合同装配工时,
256*14 AS 合同质检工时,
256*24 AS 装配工序说明,
256*24 AS 质检工序说明,
256*14 AS 要求完工日期,
256*12 AS 工序名称,
256*10 AS 计划号,
256*18 AS 指派对象,
256*12 AS 指派数量,
256*10 AS 优先级,
256*20 AS 未完成说明,
256*20 AS 派工特殊备注,
256*14 AS 占用情况,
256*14 AS 最后编辑人,
256*20 AS 最后编辑时间;
SELECT 0 AS 发料齐套,
0 AS 计划开始,
0 AS 派工时间,
0 AS 齐套,
0 AS 销售订单,
0 AS 生产订单,
0 AS 物料编码,
0 AS 物料名称,
0 AS 计划数,
0 AS 二次派工,
0 AS 预计送检日期,
0 AS 销售要求日期,
0 AS 发货要求日期,
0 AS 异常报警信息,
0 AS 装配进行中,
0 AS 质检进行中,
0 AS 任务装配工时,
0 AS 任务质检工时,
0 AS 合同装配工时,
0 AS 合同质检工时,
0 AS 装配工序说明,
0 AS 质检工序说明,
0 AS 要求完工日期,
0 AS 工序名称,
0 AS 计划号,
0 AS 指派对象,
0 AS 指派数量,
0 AS 优先级,
0 AS 未完成说明,
0 AS 派工特殊备注,
0 AS 占用情况,
0 AS 最后编辑人,
0 AS 最后编辑时间;
DECLARE @selectStr nvarchar(max);
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4';
IF(@物料类型='自制件')
SET @selectStr='
SELECT
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
v.[合同号] AS 销售订单,
v.[订单编号] AS 生产订单,
v.[物料编号] AS 物料编码,
v.[物料描述] AS 物料名称,
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
[二次派工] AS 二次派工,
CONVERT(varchar(10), ISNULL(v.预计送检日期, DATEADD(DAY, 3, v.齐套时间)), 120) AS 预计送检日期,
CONVERT(varchar(10), ISNULL(v.销售要求日期, s.交货日期理论齐套日期), 120) AS 销售要求日期,
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') AS 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') AS 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') AS 质检进行中,
CAST(ISNULL(zp.装配工时, 0) / 3600.0 AS decimal(18,2)) AS 任务装配工时,
CAST(ISNULL(zj1.质检工时, 0) / 3600.0 AS decimal(18,2)) AS 任务质检工时,
CAST(ISNULL(htzp.合同装配工时, 0) / 3600.0 AS decimal(18,2)) AS 合同装配工时,
CAST(ISNULL(htzj.合同质检工时, 0) / 3600.0 AS decimal(18,2)) AS 合同质检工时,
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
[工序名称] AS 工序名称,
v.计划号 AS 计划号,
指派对象 AS 指派对象,
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
[优先级] AS 优先级,
[未完成说明] AS 未完成说明,
[派工特殊说明] AS 派工特殊备注,
[占用情况] AS 占用情况,
[最后编辑人] AS 最后编辑人,
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END, 齐套时间, 计划开始时间';
SET @selectStr=@selectStr+@selectStrWhere;
PRINT @selectStr;
EXEC sp_executesql @selectStr;
END

View File

@@ -0,0 +1,210 @@
CREATE PROCEDURE [dbo].[计划排产_阀类任务查询_导出]
@订单号 int=0,
@物料类型 nvarchar(50)='', --自制件、装配件
@合同号 nvarchar(50)='',
@产品编码 nvarchar(50)='',
@产品名称 nvarchar(50)='',
@工序名称 nvarchar(50)='',
@要求完工日期1 nvarchar(50)='',
@要求完工日期2 nvarchar(50)='',
@计划开始 nvarchar(50)='',
@计划完成 nvarchar(50)='',
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
@指派对象 nvarchar(50)='全部',
@辅助配件 nvarchar(50)='不含'
AS
BEGIN
SET NOCOUNT ON;
SELECT '阀类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT 256*12 AS 发料齐套,
256*18 AS 计划开始,
256*12 AS 派工时间,
256*8 AS 齐套,
256*14 AS 销售订单,
256*10 AS 生产订单,
256*24 AS 物料编码,
256*24 AS 物料名称,
256*10 AS 计划数,
256*20 AS 二次派工,
256*14 AS 预计送检日期,
256*14 AS 销售要求日期,
256*14 AS 发货要求日期,
256*40 AS 异常报警信息,
256*40 AS 装配进行中,
256*40 AS 质检进行中,
256*14 AS 任务装配工时,
256*14 AS 任务质检工时,
256*14 AS 合同装配工时,
256*14 AS 合同质检工时,
256*24 AS 装配工序说明,
256*24 AS 质检工序说明,
256*14 AS 要求完工日期,
256*12 AS 工序名称,
256*10 AS 计划号,
256*18 AS 指派对象,
256*12 AS 指派数量,
256*10 AS 优先级,
256*20 AS 未完成说明,
256*20 AS 派工特殊备注,
256*14 AS 占用情况,
256*14 AS 最后编辑人,
256*20 AS 最后编辑时间;
SELECT 0 AS 发料齐套,
0 AS 计划开始,
0 AS 派工时间,
0 AS 齐套,
0 AS 销售订单,
0 AS 生产订单,
0 AS 物料编码,
0 AS 物料名称,
0 AS 计划数,
0 AS 二次派工,
0 AS 预计送检日期,
0 AS 销售要求日期,
0 AS 发货要求日期,
0 AS 异常报警信息,
0 AS 装配进行中,
0 AS 质检进行中,
0 AS 任务装配工时,
0 AS 任务质检工时,
0 AS 合同装配工时,
0 AS 合同质检工时,
0 AS 装配工序说明,
0 AS 质检工序说明,
0 AS 要求完工日期,
0 AS 工序名称,
0 AS 计划号,
0 AS 指派对象,
0 AS 指派数量,
0 AS 优先级,
0 AS 未完成说明,
0 AS 派工特殊备注,
0 AS 占用情况,
0 AS 最后编辑人,
0 AS 最后编辑时间;
DECLARE @selectStr nvarchar(max);
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4';
IF(@物料类型='自制件')
SET @selectStr='
SELECT
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
v.[合同号] AS 销售订单,
v.[订单编号] AS 生产订单,
v.[物料编号] AS 物料编码,
v.[物料描述] AS 物料名称,
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
[二次派工] AS 二次派工,
CONVERT(varchar(10), DATEADD(DAY, 3, CONVERT(date, v.齐套时间)), 120) AS 预计送检日期,
CONVERT(varchar(10), s.交货日期理论齐套日期, 120) AS 销售要求日期,
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
FROM [YL_MESDB].[dbo].[流程表] lc
WHERE lc.已关联计划号 = v.[订单编号]
), '''') AS 异常报警信息,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''装配''
) jxz
), '''') AS 装配进行中,
ISNULL((
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
FROM (
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
FROM [dbo].[YL_加工中心_操作记录表] t
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
WHERE t.操作类别 = ''开始加工''
AND t.结束时间 IS NULL
AND t.操作数值 IS NOT NULL
AND pt.订单编号 = v.[订单编号]
AND ry.班组 = ''质检''
) jxz
), '''') AS 质检进行中,
CAST(ISNULL(zp.装配工时, 0) / 60.0 AS decimal(18,2)) AS 任务装配工时,
CAST(ISNULL(zj1.质检工时, 0) / 60.0 AS decimal(18,2)) AS 任务质检工时,
CAST(ISNULL(htzp.合同装配工时, 0) / 60.0 AS decimal(18,2)) AS 合同装配工时,
CAST(ISNULL(htzj.合同质检工时, 0) / 60.0 AS decimal(18,2)) AS 合同质检工时,
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
[工序名称] AS 工序名称,
v.计划号 AS 计划号,
指派对象 AS 指派对象,
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
[优先级] AS 优先级,
[未完成说明] AS 未完成说明,
[派工特殊说明] AS 派工特殊备注,
[占用情况] AS 占用情况,
[最后编辑人] AS 最后编辑人,
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
FROM [View_生产订单_MES] v
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.订单号
) zp ON v.[订单编号] = zp.订单号
LEFT JOIN (
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.订单号
) zj1 ON v.[订单编号] = zj1.订单号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''装配''
GROUP BY gs.合同号
) htzp ON v.[合同号] = htzp.合同号
LEFT JOIN (
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
FROM [dbo].[View_生产工时视图] gs
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
WHERE ry.班组 = ''质检''
GROUP BY gs.合同号
) htzj ON v.[合同号] = htzj.合同号
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END, 齐套时间, 计划开始时间';
SET @selectStr=@selectStr+@selectStrWhere;
PRINT @selectStr;
EXEC sp_executesql @selectStr;
END

View File

@@ -0,0 +1,40 @@
CREATE OR ALTER PROCEDURE [dbo].[计划排产_阀类装配任务_修改预计送检日期]
@editstr nvarchar(100),
@订单号 int=0
AS
BEGIN
SET NOCOUNT ON;
DECLARE @whereStr nvarchar(max)=' where 1=1 ';
DECLARE @updateStr nvarchar(max)='update [MES_接口_生产计划] set ';
DECLARE @selStr nvarchar(max)='';
IF(@订单号>0) SET @whereStr=@whereStr + ' and [订单编号]='+CONVERT(varchar(10),@订单号);
IF(@editstr<>'') SET @updateStr = @updateStr + @editstr;
SET @selStr=@updateStr+@whereStr;
PRINT @selStr;
EXEC sp_executesql @selStr;
SELECT '1' AS result;
END;
GO
CREATE OR ALTER PROCEDURE [dbo].[计划排产_阀类装配任务_修改销售要求日期]
@editstr nvarchar(100),
@订单号 int=0
AS
BEGIN
SET NOCOUNT ON;
DECLARE @whereStr nvarchar(max)=' where 1=1 ';
DECLARE @updateStr nvarchar(max)='update [MES_接口_生产计划] set ';
DECLARE @selStr nvarchar(max)='';
IF(@订单号>0) SET @whereStr=@whereStr + ' and [订单编号]='+CONVERT(varchar(10),@订单号);
IF(@editstr<>'') SET @updateStr = @updateStr + @editstr;
SET @selStr=@updateStr+@whereStr;
PRINT @selStr;
EXEC sp_executesql @selStr;
SELECT '1' AS result;
END;