diff --git a/MES_Manage_View_V20/src/views/AnomalousManagement/UrgentTask/index.vue b/MES_Manage_View_V20/src/views/AnomalousManagement/UrgentTask/index.vue index 624bc69..15840c5 100644 --- a/MES_Manage_View_V20/src/views/AnomalousManagement/UrgentTask/index.vue +++ b/MES_Manage_View_V20/src/views/AnomalousManagement/UrgentTask/index.vue @@ -307,9 +307,7 @@ export default { .replace(/'/g, ''') }, isOutsourceProcess(process) { - return process.指派对象 === '外协' || - String(process.工序名称 || '').includes('(外协)') || - String(process.工序名称 || '').includes('(外协)') + return process.指派对象 === '外协' }, getProcessStatusNum(status) { const statusNum = parseInt(status) @@ -333,8 +331,10 @@ export default { return statusNum === 6 || statusNum === 3 || countNum > 0 }, isGreenProcess(process) { + console.log(process) + console.log( this.toProcessNumber(process.收料数量), this.toProcessNumber(process.完成数量),this.isOutsourceProcess(process)) return this.isOutsourceProcess(process) && - this.toProcessNumber(process.收料数量) > this.toProcessNumber(process.收检合格数) + this.toProcessNumber(process.收检不合格数) + this.toProcessNumber(process.收料数量) > this.toProcessNumber(process.完成数量) + this.toProcessNumber(process.收检不合格数) }, getProcessBaseClass(process) { if (this.isGreenProcess(process)) { @@ -375,7 +375,6 @@ export default { return lineNo === lastLineNo + 1 && String(process.外协分组 || '') === String(lastProcess.外协分组 || '') } - processes.forEach((process, index) => { if (!this.isOutsourceProcess(process)) { flushOutsourceRun() @@ -388,8 +387,9 @@ export default { lastProcess = process }) flushOutsourceRun() - + console.log(classes) return classes + }, getProcessClass(process, index, outsourceGroupClasses) { if (this.isOutsourceProcess(process)) { diff --git a/MES_Manage_View_V20/src/views/PlanManagement/SystemInstallTask/index.vue b/MES_Manage_View_V20/src/views/PlanManagement/SystemInstallTask/index.vue new file mode 100644 index 0000000..6ac42b9 --- /dev/null +++ b/MES_Manage_View_V20/src/views/PlanManagement/SystemInstallTask/index.vue @@ -0,0 +1,1583 @@ + + + + + + diff --git a/MES_Manage_View_V20/src/views/PlanManagement/ValueInstallTask/index.vue b/MES_Manage_View_V20/src/views/PlanManagement/ValueInstallTask/index.vue new file mode 100644 index 0000000..8208882 --- /dev/null +++ b/MES_Manage_View_V20/src/views/PlanManagement/ValueInstallTask/index.vue @@ -0,0 +1,1534 @@ + + + + + + diff --git a/MES_Manage_View_V20/src/views/ProductionManagement/AGVtask/index.vue b/MES_Manage_View_V20/src/views/ProductionManagement/AGVtask/index.vue index 77b1d45..7b1a245 100644 --- a/MES_Manage_View_V20/src/views/ProductionManagement/AGVtask/index.vue +++ b/MES_Manage_View_V20/src/views/ProductionManagement/AGVtask/index.vue @@ -132,7 +132,7 @@ - + @@ -172,14 +172,14 @@ style="color: #E6A23C;" @click="pauseTask(scope.row)" :disabled="scope.row.TaskStatus !== 'RUNNING'" - >暂停 + >暂停 --> 取消 --> + >取消 @@ -373,6 +373,10 @@ + + \ No newline at end of file diff --git a/MES_Manage_View_V20/src/views/ProductionManagement/WorkHoursCheck/index.vue b/MES_Manage_View_V20/src/views/ProductionManagement/WorkHoursCheck/index.vue index fae1714..0f87a08 100644 --- a/MES_Manage_View_V20/src/views/ProductionManagement/WorkHoursCheck/index.vue +++ b/MES_Manage_View_V20/src/views/ProductionManagement/WorkHoursCheck/index.vue @@ -731,6 +731,40 @@ async uploadToSAP(record, detail) { // ========== 9. 提交工时单据到SAP ========== if (params.length > 0) { + try { + await new Promise(resolve => setTimeout(resolve, 500)) + + const reorderResult = await getB1("/ProductionOrders", { + "$filter": `AbsoluteEntry eq ${record.订单编号}` + }) + + if (!reorderResult.success || !reorderResult.data?.value?.length) { + return { success: false, error: '重新获取生产订单失败' } + } + + const updatedOrder = reorderResult.data.value[0] + const lines = updatedOrder.ProductionOrderLines || [] + + lines.forEach(line => { + const matched = params.find(param => Number(line.LineNumber) === Number(param.BaseLine)) + if (matched) { + line.PlannedQuantity = Number(line.IssuedQuantity) + Number(matched.Quantity) + } + }) + + const patchResult = await patchB1(`ProductionOrders(${updatedOrder.AbsoluteEntry})`, { + ProductionOrderLines: lines, + ProductionOrdersStages: updatedOrder.ProductionOrdersStages || [] + }) + + if (!patchResult.success) { + this.$message.error(patchResult.message) + return { success: false, error: patchResult.message || '更新生产订单PlannedQuantity失败' } + } + } catch (reorderError) { + console.warn(`重新获取订单数据失败:`, reorderError) + return { success: false, error: reorderError.message || '更新生产订单PlannedQuantity异常' } + } try { const startDate = record.开始时间 ? record.开始时间.split(' ')[0] : this.currentdate const result = await postB1("/InventoryGenExits", { diff --git a/MES_Manage_View_V20/src/views/ProductionManagement/WorkhoursEdit/index.vue b/MES_Manage_View_V20/src/views/ProductionManagement/WorkhoursEdit/index.vue index d70fbbb..3f577bf 100644 --- a/MES_Manage_View_V20/src/views/ProductionManagement/WorkhoursEdit/index.vue +++ b/MES_Manage_View_V20/src/views/ProductionManagement/WorkhoursEdit/index.vue @@ -215,7 +215,7 @@ - + @@ -167,7 +193,8 @@ export default { PersonalName: '', account: '', password: '', - PersonalroleValue: '' + PersonalroleValue: '', + team:'' }, rules1: { PersonalName: [{ required: true, message: '请输入姓名', trigger: 'blur' }], @@ -179,7 +206,8 @@ export default { tableData: [], total: 0, // 总条数 pageSize: 10, // 每页显示条数 - pageList: 1 // 后台获取页 + pageList: 1, // 后台获取页 + team:'' } }, created() { @@ -251,7 +279,8 @@ export default { password: response.data.result[i].password, roles_number: parseInt(response.data.result[i].Roles_number), roles_function: response.data.result[i].Roles_Function, - isClient: response.data.result[i].isClient + isClient: response.data.result[i].isClient, + 班组:response.data.result[i].班组 }) } } @@ -270,6 +299,7 @@ export default { this.form1.account = row.account this.form1.password = row.password this.form1.PersonalroleValue = row.roles_number + this.form1.team = row.班组 this.title1 = '编辑人员' this.dialogFormVisible1 = true }, @@ -284,6 +314,7 @@ export default { param[2] = ['password', this.form1.password] param[3] = ['Personnel_Name', this.form1.PersonalName] param[4] = ['Roles_number', this.form1.PersonalroleValue] + param[5] = ['班组', this.form1.team] if (this.form1.account === '' || this.form1.account === null) { this.$message.error('请输入工号') } else if (this.form1.password === '' || this.form1.password === null) { diff --git a/db_backups/MES_接口_生产计划_add_date_fields_20260618_140209.sql b/db_backups/MES_接口_生产计划_add_date_fields_20260618_140209.sql new file mode 100644 index 0000000..340132d --- /dev/null +++ b/db_backups/MES_接口_生产计划_add_date_fields_20260618_140209.sql @@ -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; \ No newline at end of file diff --git a/db_backups/View_生产订单_MES_alter_date_fields_20260618_140239.sql b/db_backups/View_生产订单_MES_alter_date_fields_20260618_140239.sql new file mode 100644 index 0000000..8fe92fc --- /dev/null +++ b/db_backups/View_生产订单_MES_alter_date_fields_20260618_140239.sql @@ -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) diff --git a/db_backups/View_生产订单_MES_before_date_fields_20260618_140125.sql b/db_backups/View_生产订单_MES_before_date_fields_20260618_140125.sql new file mode 100644 index 0000000..961df25 --- /dev/null +++ b/db_backups/View_生产订单_MES_before_date_fields_20260618_140125.sql @@ -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) diff --git a/db_backups/装配中心任务看板_可执行任务数_alter_split_exec_inspection_20260618_164122.sql b/db_backups/装配中心任务看板_可执行任务数_alter_split_exec_inspection_20260618_164122.sql new file mode 100644 index 0000000..d63718d --- /dev/null +++ b/db_backups/装配中心任务看板_可执行任务数_alter_split_exec_inspection_20260618_164122.sql @@ -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; \ No newline at end of file diff --git a/db_backups/装配中心任务看板_可执行任务数_alter_status_20260618_162248.sql b/db_backups/装配中心任务看板_可执行任务数_alter_status_20260618_162248.sql new file mode 100644 index 0000000..552edc1 --- /dev/null +++ b/db_backups/装配中心任务看板_可执行任务数_alter_status_20260618_162248.sql @@ -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; \ No newline at end of file diff --git a/db_backups/装配中心任务看板_可执行任务数_before_split_exec_inspection_20260618_164032.sql b/db_backups/装配中心任务看板_可执行任务数_before_split_exec_inspection_20260618_164032.sql new file mode 100644 index 0000000..007e4ec --- /dev/null +++ b/db_backups/装配中心任务看板_可执行任务数_before_split_exec_inspection_20260618_164032.sql @@ -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; \ No newline at end of file diff --git a/db_backups/装配中心任务看板_可执行任务数_create_20260618_162141.sql b/db_backups/装配中心任务看板_可执行任务数_create_20260618_162141.sql new file mode 100644 index 0000000..07a1ea7 --- /dev/null +++ b/db_backups/装配中心任务看板_可执行任务数_create_20260618_162141.sql @@ -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; \ No newline at end of file diff --git a/db_backups/计划排产_系统类任务查询_alter_date_fields_20260618_140257.sql b/db_backups/计划排产_系统类任务查询_alter_date_fields_20260618_140257.sql new file mode 100644 index 0000000..e350b36 --- /dev/null +++ b/db_backups/计划排产_系统类任务查询_alter_date_fields_20260618_140257.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_系统类任务查询_alter_progress_20260618_102524.sql b/db_backups/计划排产_系统类任务查询_alter_progress_20260618_102524.sql new file mode 100644 index 0000000..59e17ed --- /dev/null +++ b/db_backups/计划排产_系统类任务查询_alter_progress_20260618_102524.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_系统类任务查询_alter_sales_date_fallback_20260618_140817.sql b/db_backups/计划排产_系统类任务查询_alter_sales_date_fallback_20260618_140817.sql new file mode 100644 index 0000000..7b3a7fe --- /dev/null +++ b/db_backups/计划排产_系统类任务查询_alter_sales_date_fallback_20260618_140817.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_系统类任务查询_alter_sap_min_date_20260618_143140.sql b/db_backups/计划排产_系统类任务查询_alter_sap_min_date_20260618_143140.sql new file mode 100644 index 0000000..7d22ee4 --- /dev/null +++ b/db_backups/计划排产_系统类任务查询_alter_sap_min_date_20260618_143140.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_系统类任务查询_before_date_fields_20260618_140125.sql b/db_backups/计划排产_系统类任务查询_before_date_fields_20260618_140125.sql new file mode 100644 index 0000000..5a36451 --- /dev/null +++ b/db_backups/计划排产_系统类任务查询_before_date_fields_20260618_140125.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_系统类任务查询_before_progress_20260618_102446.sql b/db_backups/计划排产_系统类任务查询_before_progress_20260618_102446.sql new file mode 100644 index 0000000..cd016d1 --- /dev/null +++ b/db_backups/计划排产_系统类任务查询_before_progress_20260618_102446.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_系统类任务查询_before_sales_date_fallback_20260618_140650.sql b/db_backups/计划排产_系统类任务查询_before_sales_date_fallback_20260618_140650.sql new file mode 100644 index 0000000..5220a0a --- /dev/null +++ b/db_backups/计划排产_系统类任务查询_before_sales_date_fallback_20260618_140650.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_系统类任务查询_before_sap_min_date_20260618_143032.sql b/db_backups/计划排产_系统类任务查询_before_sap_min_date_20260618_143032.sql new file mode 100644 index 0000000..e2aa233 --- /dev/null +++ b/db_backups/计划排产_系统类任务查询_before_sap_min_date_20260618_143032.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_系统类任务查询_导出_alter_date_fields_20260618_140416.sql b/db_backups/计划排产_系统类任务查询_导出_alter_date_fields_20260618_140416.sql new file mode 100644 index 0000000..76a50fa --- /dev/null +++ b/db_backups/计划排产_系统类任务查询_导出_alter_date_fields_20260618_140416.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_系统类任务查询_导出_alter_hours_3600_20260618_140521.sql b/db_backups/计划排产_系统类任务查询_导出_alter_hours_3600_20260618_140521.sql new file mode 100644 index 0000000..d50497f --- /dev/null +++ b/db_backups/计划排产_系统类任务查询_导出_alter_hours_3600_20260618_140521.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_系统类任务查询_导出_alter_sales_date_fallback_20260618_140817.sql b/db_backups/计划排产_系统类任务查询_导出_alter_sales_date_fallback_20260618_140817.sql new file mode 100644 index 0000000..643bfb3 --- /dev/null +++ b/db_backups/计划排产_系统类任务查询_导出_alter_sales_date_fallback_20260618_140817.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_系统类任务查询_导出_alter_sap_min_date_20260618_143140.sql b/db_backups/计划排产_系统类任务查询_导出_alter_sap_min_date_20260618_143140.sql new file mode 100644 index 0000000..811b729 --- /dev/null +++ b/db_backups/计划排产_系统类任务查询_导出_alter_sap_min_date_20260618_143140.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_系统类任务查询_导出_before_date_fields_20260618_140416.sql b/db_backups/计划排产_系统类任务查询_导出_before_date_fields_20260618_140416.sql new file mode 100644 index 0000000..6c4219f --- /dev/null +++ b/db_backups/计划排产_系统类任务查询_导出_before_date_fields_20260618_140416.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_系统类任务查询_导出_before_hours_3600_20260618_140521.sql b/db_backups/计划排产_系统类任务查询_导出_before_hours_3600_20260618_140521.sql new file mode 100644 index 0000000..716943d --- /dev/null +++ b/db_backups/计划排产_系统类任务查询_导出_before_hours_3600_20260618_140521.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_系统类任务查询_导出_before_sales_date_fallback_20260618_140650.sql b/db_backups/计划排产_系统类任务查询_导出_before_sales_date_fallback_20260618_140650.sql new file mode 100644 index 0000000..3d281af --- /dev/null +++ b/db_backups/计划排产_系统类任务查询_导出_before_sales_date_fallback_20260618_140650.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_系统类任务查询_导出_before_sap_min_date_20260618_143032.sql b/db_backups/计划排产_系统类任务查询_导出_before_sap_min_date_20260618_143032.sql new file mode 100644 index 0000000..c8f39e2 --- /dev/null +++ b/db_backups/计划排产_系统类任务查询_导出_before_sap_min_date_20260618_143032.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_系统类任务查询_导出_create_20260618_103626.sql b/db_backups/计划排产_系统类任务查询_导出_create_20260618_103626.sql new file mode 100644 index 0000000..6c4219f --- /dev/null +++ b/db_backups/计划排产_系统类任务查询_导出_create_20260618_103626.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_系统类装配任务_修改日期_create_20260618_140324.sql b/db_backups/计划排产_系统类装配任务_修改日期_create_20260618_140324.sql new file mode 100644 index 0000000..7275828 --- /dev/null +++ b/db_backups/计划排产_系统类装配任务_修改日期_create_20260618_140324.sql @@ -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; \ No newline at end of file diff --git a/db_backups/计划排产_系统类装配任务_修改钣金预达时间_before_date_fields_20260618_140125.sql b/db_backups/计划排产_系统类装配任务_修改钣金预达时间_before_date_fields_20260618_140125.sql new file mode 100644 index 0000000..191b979 --- /dev/null +++ b/db_backups/计划排产_系统类装配任务_修改钣金预达时间_before_date_fields_20260618_140125.sql @@ -0,0 +1,26 @@ + + + + +-- ============================================= +-- Author: +-- Create date: +-- 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 + + diff --git a/db_backups/计划排产_阀类任务查询_alter_20260618_100448.sql b/db_backups/计划排产_阀类任务查询_alter_20260618_100448.sql new file mode 100644 index 0000000..da6c39f --- /dev/null +++ b/db_backups/计划排产_阀类任务查询_alter_20260618_100448.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_阀类任务查询_alter_progress_20260618_102046.sql b/db_backups/计划排产_阀类任务查询_alter_progress_20260618_102046.sql new file mode 100644 index 0000000..8a51196 --- /dev/null +++ b/db_backups/计划排产_阀类任务查询_alter_progress_20260618_102046.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_阀类任务查询_alter_sap_min_date_20260618_143447.sql b/db_backups/计划排产_阀类任务查询_alter_sap_min_date_20260618_143447.sql new file mode 100644 index 0000000..be07a0a --- /dev/null +++ b/db_backups/计划排产_阀类任务查询_alter_sap_min_date_20260618_143447.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_阀类任务查询_alter_value_date_fields_20260618_141123.sql b/db_backups/计划排产_阀类任务查询_alter_value_date_fields_20260618_141123.sql new file mode 100644 index 0000000..8e1e641 --- /dev/null +++ b/db_backups/计划排产_阀类任务查询_alter_value_date_fields_20260618_141123.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_阀类任务查询_before_20260618_100413.sql b/db_backups/计划排产_阀类任务查询_before_20260618_100413.sql new file mode 100644 index 0000000..25c635c --- /dev/null +++ b/db_backups/计划排产_阀类任务查询_before_20260618_100413.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_阀类任务查询_before_progress_20260618_101940.sql b/db_backups/计划排产_阀类任务查询_before_progress_20260618_101940.sql new file mode 100644 index 0000000..2ce4e6b --- /dev/null +++ b/db_backups/计划排产_阀类任务查询_before_progress_20260618_101940.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_阀类任务查询_before_sap_min_date_20260618_143411.sql b/db_backups/计划排产_阀类任务查询_before_sap_min_date_20260618_143411.sql new file mode 100644 index 0000000..c7e8c6f --- /dev/null +++ b/db_backups/计划排产_阀类任务查询_before_sap_min_date_20260618_143411.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_阀类任务查询_before_value_date_fields_20260618_141017.sql b/db_backups/计划排产_阀类任务查询_before_value_date_fields_20260618_141017.sql new file mode 100644 index 0000000..3c63051 --- /dev/null +++ b/db_backups/计划排产_阀类任务查询_before_value_date_fields_20260618_141017.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_阀类任务查询_导出_alter_match_page_20260618_103122.sql b/db_backups/计划排产_阀类任务查询_导出_alter_match_page_20260618_103122.sql new file mode 100644 index 0000000..55f3cf0 --- /dev/null +++ b/db_backups/计划排产_阀类任务查询_导出_alter_match_page_20260618_103122.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_阀类任务查询_导出_alter_sap_min_date_20260618_143447.sql b/db_backups/计划排产_阀类任务查询_导出_alter_sap_min_date_20260618_143447.sql new file mode 100644 index 0000000..b8a9d3a --- /dev/null +++ b/db_backups/计划排产_阀类任务查询_导出_alter_sap_min_date_20260618_143447.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_阀类任务查询_导出_alter_value_date_fields_20260618_141141.sql b/db_backups/计划排产_阀类任务查询_导出_alter_value_date_fields_20260618_141141.sql new file mode 100644 index 0000000..4adddf0 --- /dev/null +++ b/db_backups/计划排产_阀类任务查询_导出_alter_value_date_fields_20260618_141141.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_阀类任务查询_导出_before_match_page_20260618_102959.sql b/db_backups/计划排产_阀类任务查询_导出_before_match_page_20260618_102959.sql new file mode 100644 index 0000000..2559e8e --- /dev/null +++ b/db_backups/计划排产_阀类任务查询_导出_before_match_page_20260618_102959.sql @@ -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 diff --git a/db_backups/计划排产_阀类任务查询_导出_before_sap_min_date_20260618_143411.sql b/db_backups/计划排产_阀类任务查询_导出_before_sap_min_date_20260618_143411.sql new file mode 100644 index 0000000..ec50a83 --- /dev/null +++ b/db_backups/计划排产_阀类任务查询_导出_before_sap_min_date_20260618_143411.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_阀类任务查询_导出_before_value_date_fields_20260618_141017.sql b/db_backups/计划排产_阀类任务查询_导出_before_value_date_fields_20260618_141017.sql new file mode 100644 index 0000000..ef1fd0c --- /dev/null +++ b/db_backups/计划排产_阀类任务查询_导出_before_value_date_fields_20260618_141017.sql @@ -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 \ No newline at end of file diff --git a/db_backups/计划排产_阀类装配任务_修改日期_create_20260618_141211.sql b/db_backups/计划排产_阀类装配任务_修改日期_create_20260618_141211.sql new file mode 100644 index 0000000..52db53a --- /dev/null +++ b/db_backups/计划排产_阀类装配任务_修改日期_create_20260618_141211.sql @@ -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; \ No newline at end of file diff --git a/装配任务看板/src/views/index.vue b/装配任务看板/src/views/index.vue index f98dc97..ff2db06 100644 --- a/装配任务看板/src/views/index.vue +++ b/装配任务看板/src/views/index.vue @@ -12,7 +12,14 @@
{{ item.title }}
-
+
+
+ {{ metric.label }} + {{ metric.value }} + {{ item.unit }} +
+
+
{{ item.value }}{{ item.unit }}
@@ -143,7 +150,7 @@ onMounted(() => { searchDashboardData() startAllScroll() setInterval(function(){ - searchDashboardData + searchDashboardData() },600000) }) @@ -221,6 +228,7 @@ const stopAllScroll = () => { // ============ 数据查询 ============ const searchDashboardData = () => { + searchExecutableData() searchUnclosedData() searchMaterialshortageData() searchUrgentData() @@ -229,6 +237,9 @@ const searchDashboardData = () => { searchPassRateData() searchDoneTaskData() } +const searchExecutableData = () => { + queryDashboardData('装配中心任务看板_可执行任务数', applyExecutableData) +} const searchUnclosedData = () => { queryDashboardData('装配中心任务看板_异常未关闭总数', applyUnclosedData) } @@ -250,8 +261,14 @@ const searchPassRateData = () => { const searchDoneTaskData = () => { queryDashboardData('装配中心任务看板_已完成任务', applyDoneTaskData) } +const applyExecutableData = rows => { + const row = rows[0] || {} + summaryCards[0].metrics[0].value = row.阀类可执行任务数 || 0 + summaryCards[0].metrics[1].value = row.系统类可执行任务数 || 0 + summaryCards[1].value = row.及时送检数 || 0 +} const applyUnclosedData = rows => { - summaryCards[3].value = rows[0].装配异常未关闭总数 + summaryCards[4].value = rows[0].装配异常未关闭总数 } const applyDeliveryData = rows => { deliveryRows.value = rows.map(item => { @@ -286,7 +303,7 @@ const applyDeliveryData = rows => { }) } const applyUrgentData = rows => { - summaryCards[1].value = rows[0].加急总数 + summaryCards[3].value = rows[0].加急总数 } const applyPassRateData = rows => { summaryCards[2].value = rows[0].总合格率+'%' @@ -380,11 +397,11 @@ const icons = { done: svgIcon('#47eaa0', '#0da76b', '') } const summaryCards = [ - { title: '及时送检数', value: 18, unit: '条', icon: icons.pending }, - { title: '加急任务数', value: 125, unit: '条', icon: icons.urgent, valueClass: 'red-text' }, + { title: '可执行任务数', unit: '条', className: 'executable-card', metrics: [{ label: '阀类', value: 0 }, { label: '系统类', value: 0 }] }, + { title: '及时送检数', value: 0, unit: '条', icon: icons.pending , valueClass: 'red-text'}, { title: '装配合格率', value: '100%', icon: icons.finalCheck, valueClass: 'green-text full-value' }, - { title: '异常未关闭消息数', value: 5, unit: '条', icon: icons.urgent, valueClass: 'red-text' }, - { title: '缺勤人员', value: 0, unit: '人', icon:icons.returnDown, valueClass: 'orange-text', className: 'absence-card', people: [{ name: '全勤', group: '装配1班' }, { name: '全勤', group: '装配2班' }, { name: '全勤', group: '装配3班' }] }, + { title: '加急任务数', value: 125, unit: '条', icon: icons.urgent, valueClass: 'red-text' }, + { title: '异常未关闭消息数', value: 5, unit: '条', icon: icons.urgent, valueClass: 'red-text', className: 'exception-card' }, ] const taskColumns = [ { label: '生产订单', key: 'productionOrder', width: '72px' }, @@ -504,7 +521,7 @@ const doneColumns = [ .summary-row { display: grid; - grid-template-columns: 1.05fr 1.05fr 1fr 1.2fr 1.55fr; + grid-template-columns: 1.28fr 1fr 1fr 1fr .82fr; gap: 17px; } @@ -594,6 +611,90 @@ const doneColumns = [ text-align: left; } +.executable-card { + padding: 8px 16px; +} + +.executable-card .summary-title { + margin-bottom: 8px; + font-size: 21px; + text-align: left; +} + +.summary-metrics { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 14px; + align-items: center; + width: 100%; +} + +.summary-metric { + position: relative; + display: grid; + grid-template-columns: minmax(0, 1fr) auto; + grid-template-rows: 22px 48px; + align-items: baseline; + min-width: 0; + padding: 6px 10px 4px; + color: #fff; + font-weight: 800; +} + +.summary-metric span { + grid-column: 1 / -1; + color: #89d4ff; + font-size: 18px; + line-height: 22px; + white-space: nowrap; +} + +.summary-metric b { + color: #18c65b; + font-size: 50px; + line-height: 1; + text-align: right; + text-shadow: 0 0 10px rgba(24, 198, 91, .32); +} + +.summary-metric small { + color: #fff; + font-size: 18px; + font-weight: 700; + text-align: left; + white-space: nowrap; +} + +.exception-card { + padding: 8px 12px; +} + +.exception-card .summary-title { + font-size: 18px; +} + +.exception-card .summary-body { + grid-template-columns: 54px 150px; + column-gap: 16px; +} + +.exception-card .summary-icon { + width: 54px; + height: 54px; +} + +.exception-card .summary-value { + grid-template-columns: 105px 28px; +} + +.exception-card .summary-value span { + font-size: 48px; +} + +.exception-card .summary-value small { + font-size: 20px; +} + .summary-title { margin-bottom: 5px; color: #89d4ff;