From f6dce5daa8cd1ade2616c6d560c717d2bdfe7fd9 Mon Sep 17 00:00:00 2001 From: zhangxinyang Date: Thu, 25 Jun 2026 15:49:15 +0800 Subject: [PATCH] chore: save local MES snapshot --- ...nee_to_timesheet_export_procs_20260622.sql | 188 + ...gnee_to_timesheet_query_procs_20260622.sql | 492 + ...ours_to_production_plan_track_20260622.sql | 186 + ...uality_details_query_fieldkey_20260625.sql | 81 + ...nqty_project_task_processdesc_20260623.sql | 426 + ...perator_task_worktype_planqty_20260623.sql | 328 + ...备工时_查询_add_shift_reporttype_20260623.sql | 152 + ..._项目工时_查询_add_workhour_type_20260623.sql | 132 + ...t_before_qualitydetails_check_20260625.sql | 94 + ...时_查询_before_add_assignee_20260622_172419.sql | 94 + ..._查询_导出_before_add_assignee_20260622_172419.sql | 49 + ...工时_查询_before_add_assignee_20260622_172419.sql | 164 + ..._查询_导出_before_add_assignee_20260622_172419.sql | 50 + ...时_查询_before_add_assignee_20260622_172419.sql | 129 + ..._查询_导出_before_add_assignee_20260622_172419.sql | 50 + ...时_查询_before_add_assignee_20260622_172419.sql | 90 + ..._查询_导出_before_add_assignee_20260622_172419.sql | 48 + ...跟踪_before_add_standard_hours_20260622_173740.sql | 196 + ...理_质检明细_查询_before_fieldkey_20260625.sql | 94 + .../MES_功能列表_页面_存储过程映射.md | 0 .../MES_技术分析报告.md | 0 .../MES_用户操作手册.md | 0 .../MES_程序使用说明书.md | 0 doc_old/MacroinfManage_MES.code-workspace | 7 + .../fix_机加设备生产运营看板_加急任务查询.sql | 69 + .../fix_生产管理_外协报表_查询.sql | 0 .../fix_质量管理_入库质检任务_查询.sql | 0 doc_old/index.html | 16 + doc_old/sql_异常提醒_装配及时送检_查询.sql | 81 + ...开发计划与新增需求分析记录_2026-05-27.docx | Bin 0 -> 162 bytes doc_old/今后开发计划_2026-05-27.md | 77 + ...开发计划与新增需求分析记录_2026-05-27.docx | Bin 0 -> 54727 bytes doc_old/今日工作汇报_2026-05-23.txt | 137 + doc_old/今日工作汇报_2026-05-25.md | 151 + doc_old/今日工作汇报_2026-05-26.md | 143 + .../今日工作汇报_20260522.md | 28 - 修改注意事项.txt => doc_old/修改注意事项.txt | 0 doc_old/元利项目详细分析.md | 9794 +++++++++++++++++ doc_old/元利项目详细流程图.Mermaid | 551 + doc_old/元利项目详细流程图.md | 2929 +++++ doc_old/元利项目详细用户使用说明书.md | 7410 +++++++++++++ doc_old/技术开发详细方案_2026-05-27.docx | Bin 0 -> 138355 bytes doc_old/技术开发详细方案_2026-05-27.md | 3441 ++++++ doc_old/新增需求分析与开发记录_2026-05-23.md | 1555 +++ doc_old/新增需求界面原型设计_2026-05-25.md | 524 + .../问题修复方案与今日沟通规划.md | 0 doc_old/隐性需求综合分析_2026-05-25.md | 860 ++ .../需求分析_自制件与工位汇总表.md | 0 ...目功能技术路线数据库分析报告_2026-05-22.md | 942 ++ script.sql | Bin 1606748 -> 0 bytes .../AssemblyPunctualInspection/index.vue | 267 + .../OutPunctualWork/index.vue | 489 + .../PunctualWork/index.vue | 11 + .../AnomalousManagement/UrgentTask/index.vue | 966 ++ .../DeviceManagement/DeviceRealData/index.vue | 144 +- .../InstallMakePlanDone/index.vue | 1394 +++ .../PlanManagement/SelfMakePlando/index.vue | 4 +- .../PlanManagement/SelfMakePlandone/index.vue | 63 +- .../SystemInstallTask/index.vue | 1583 +++ .../PlanManagement/ValueInstallTask/index.vue | 1534 +++ .../PlanManagement/WorkstationPlan/index.vue | 1678 +++ .../ProcessProduct/index.vue | 4 +- .../ProcessesDevelop/index.vue | 1 + .../ProductionManagement/AGVtask/index.vue | 1057 ++ .../AssemblyCenter/index.vue | 38 +- .../MachiningCenter/index.vue | 75 +- .../OutsourceMange/index.vue | 4 +- .../OutsourceSheet/index.vue | 2 +- .../ProductionPlanTrack/index.vue | 294 +- .../SaleOutsourceMange/index.vue | 1 + .../ProductionManagement/Timesheet/index.vue | 311 +- .../WorkHoursCheck/index - 副本 (2).vue | 1978 ++++ .../WorkHoursCheck/index.vue | 43 +- .../WorkhoursEdit/index.vue | 4 +- .../CheckTask/materialReturn.vue | 30 +- .../CheckTask/processReceive.vue | 67 +- .../CheckTask/purchaseIncoming.vue | 1 + .../QualityDetails/index.vue | 31 +- .../TestAssemblyTask/index.vue | 247 + .../PersonnelManagement/index.vue | 37 +- .../ProcessProduct/01_模块总览框图.mmd | 68 + .../ProcessProduct/01_模块总览框图.png | Bin 0 -> 24060 bytes .../02_编辑生产工艺详细流程.mmd | 56 + .../02_编辑生产工艺详细流程.png | Bin 0 -> 63272 bytes .../03_工序维护与明细编辑流程.mmd | 53 + .../03_工序维护与明细编辑流程.png | Bin 0 -> 76202 bytes .../04_批量生成拷贝保存下发流程.mmd | 57 + .../04_批量生成拷贝保存下发流程.png | Bin 0 -> 12486 bytes .../ProcessProduct/05_后台过程关系框图.mmd | 79 + .../ProcessProduct/05_后台过程关系框图.png | Bin 0 -> 146317 bytes .../ProcessProduct/ProcessProduct_详细框图.md | 338 + work/ProcessManagement/ProcessProduct/i.txt | 547 + .../ProcessProduct/高清图/01_模块总览框图.svg | 1 + .../高清图/01_模块总览框图高清.png | Bin 0 -> 422351 bytes .../高清图/02_编辑生产工艺详细流程.svg | 1 + .../高清图/02_编辑生产工艺详细流程高清.png | Bin 0 -> 759842 bytes .../高清图/03_工序维护与明细编辑流程.svg | 1 + .../高清图/03_工序维护与明细编辑流程高清.png | Bin 0 -> 645143 bytes .../高清图/04_批量生成拷贝保存下发流程.svg | 1 + .../04_批量生成拷贝保存下发流程高清.png | Bin 0 -> 245086 bytes .../高清图/05_后台过程关系框图.svg | 1 + .../高清图/05_后台过程关系框图高清.png | Bin 0 -> 1003404 bytes 102 files changed, 45101 insertions(+), 218 deletions(-) create mode 100644 db_backups/add_assignee_to_timesheet_export_procs_20260622.sql create mode 100644 db_backups/add_assignee_to_timesheet_query_procs_20260622.sql create mode 100644 db_backups/add_standard_hours_to_production_plan_track_20260622.sql create mode 100644 db_backups/alter_quality_details_query_fieldkey_20260625.sql create mode 100644 db_backups/alter_timesheet_device_planqty_project_task_processdesc_20260623.sql create mode 100644 db_backups/alter_timesheet_operator_task_worktype_planqty_20260623.sql create mode 100644 db_backups/alter_工时统计_设备工时_查询_add_shift_reporttype_20260623.sql create mode 100644 db_backups/alter_工时统计_项目工时_查询_add_workhour_type_20260623.sql create mode 100644 db_backups/sp_xt_pagesplit_before_qualitydetails_check_20260625.sql create mode 100644 db_backups/工时统计_任务工时_查询_before_add_assignee_20260622_172419.sql create mode 100644 db_backups/工时统计_任务工时_查询_导出_before_add_assignee_20260622_172419.sql create mode 100644 db_backups/工时统计_作业者工时_查询_before_add_assignee_20260622_172419.sql create mode 100644 db_backups/工时统计_作业者工时_查询_导出_before_add_assignee_20260622_172419.sql create mode 100644 db_backups/工时统计_设备工时_查询_before_add_assignee_20260622_172419.sql create mode 100644 db_backups/工时统计_设备工时_查询_导出_before_add_assignee_20260622_172419.sql create mode 100644 db_backups/工时统计_项目工时_查询_before_add_assignee_20260622_172419.sql create mode 100644 db_backups/工时统计_项目工时_查询_导出_before_add_assignee_20260622_172419.sql create mode 100644 db_backups/生产管理_生产计划跟踪_before_add_standard_hours_20260622_173740.sql create mode 100644 db_backups/质量管理_质检明细_查询_before_fieldkey_20260625.sql rename MES_功能列表_页面_存储过程映射.md => doc_old/MES_功能列表_页面_存储过程映射.md (100%) rename MES_技术分析报告.md => doc_old/MES_技术分析报告.md (100%) rename MES_用户操作手册.md => doc_old/MES_用户操作手册.md (100%) rename MES_程序使用说明书.md => doc_old/MES_程序使用说明书.md (100%) create mode 100644 doc_old/MacroinfManage_MES.code-workspace create mode 100644 doc_old/fix_机加设备生产运营看板_加急任务查询.sql rename fix_生产管理_外协报表_查询.sql => doc_old/fix_生产管理_外协报表_查询.sql (100%) rename fix_质量管理_入库质检任务_查询.sql => doc_old/fix_质量管理_入库质检任务_查询.sql (100%) create mode 100644 doc_old/index.html create mode 100644 doc_old/sql_异常提醒_装配及时送检_查询.sql create mode 100644 doc_old/~$开发计划与新增需求分析记录_2026-05-27.docx create mode 100644 doc_old/今后开发计划_2026-05-27.md create mode 100644 doc_old/今后开发计划与新增需求分析记录_2026-05-27.docx create mode 100644 doc_old/今日工作汇报_2026-05-23.txt create mode 100644 doc_old/今日工作汇报_2026-05-25.md create mode 100644 doc_old/今日工作汇报_2026-05-26.md rename 今日工作汇报_20260522.md => doc_old/今日工作汇报_20260522.md (89%) rename 修改注意事项.txt => doc_old/修改注意事项.txt (100%) create mode 100644 doc_old/元利项目详细分析.md create mode 100644 doc_old/元利项目详细流程图.Mermaid create mode 100644 doc_old/元利项目详细流程图.md create mode 100644 doc_old/元利项目详细用户使用说明书.md create mode 100644 doc_old/技术开发详细方案_2026-05-27.docx create mode 100644 doc_old/技术开发详细方案_2026-05-27.md create mode 100644 doc_old/新增需求分析与开发记录_2026-05-23.md create mode 100644 doc_old/新增需求界面原型设计_2026-05-25.md rename 问题修复方案与今日沟通规划.md => doc_old/问题修复方案与今日沟通规划.md (100%) create mode 100644 doc_old/隐性需求综合分析_2026-05-25.md rename 需求分析_自制件与工位汇总表.md => doc_old/需求分析_自制件与工位汇总表.md (100%) create mode 100644 doc_old/项目功能技术路线数据库分析报告_2026-05-22.md delete mode 100644 script.sql create mode 100644 src/views/AnomalousManagement/AssemblyPunctualInspection/index.vue create mode 100644 src/views/AnomalousManagement/OutPunctualWork/index.vue create mode 100644 src/views/AnomalousManagement/UrgentTask/index.vue create mode 100644 src/views/PlanManagement/InstallMakePlanDone/index.vue create mode 100644 src/views/PlanManagement/SystemInstallTask/index.vue create mode 100644 src/views/PlanManagement/ValueInstallTask/index.vue create mode 100644 src/views/PlanManagement/WorkstationPlan/index.vue create mode 100644 src/views/ProductionManagement/AGVtask/index.vue create mode 100644 src/views/ProductionManagement/WorkHoursCheck/index - 副本 (2).vue create mode 100644 src/views/QualityManagement/TestAssemblyTask/index.vue create mode 100644 work/ProcessManagement/ProcessProduct/01_模块总览框图.mmd create mode 100644 work/ProcessManagement/ProcessProduct/01_模块总览框图.png create mode 100644 work/ProcessManagement/ProcessProduct/02_编辑生产工艺详细流程.mmd create mode 100644 work/ProcessManagement/ProcessProduct/02_编辑生产工艺详细流程.png create mode 100644 work/ProcessManagement/ProcessProduct/03_工序维护与明细编辑流程.mmd create mode 100644 work/ProcessManagement/ProcessProduct/03_工序维护与明细编辑流程.png create mode 100644 work/ProcessManagement/ProcessProduct/04_批量生成拷贝保存下发流程.mmd create mode 100644 work/ProcessManagement/ProcessProduct/04_批量生成拷贝保存下发流程.png create mode 100644 work/ProcessManagement/ProcessProduct/05_后台过程关系框图.mmd create mode 100644 work/ProcessManagement/ProcessProduct/05_后台过程关系框图.png create mode 100644 work/ProcessManagement/ProcessProduct/ProcessProduct_详细框图.md create mode 100644 work/ProcessManagement/ProcessProduct/i.txt create mode 100644 work/ProcessManagement/ProcessProduct/高清图/01_模块总览框图.svg create mode 100644 work/ProcessManagement/ProcessProduct/高清图/01_模块总览框图高清.png create mode 100644 work/ProcessManagement/ProcessProduct/高清图/02_编辑生产工艺详细流程.svg create mode 100644 work/ProcessManagement/ProcessProduct/高清图/02_编辑生产工艺详细流程高清.png create mode 100644 work/ProcessManagement/ProcessProduct/高清图/03_工序维护与明细编辑流程.svg create mode 100644 work/ProcessManagement/ProcessProduct/高清图/03_工序维护与明细编辑流程高清.png create mode 100644 work/ProcessManagement/ProcessProduct/高清图/04_批量生成拷贝保存下发流程.svg create mode 100644 work/ProcessManagement/ProcessProduct/高清图/04_批量生成拷贝保存下发流程高清.png create mode 100644 work/ProcessManagement/ProcessProduct/高清图/05_后台过程关系框图.svg create mode 100644 work/ProcessManagement/ProcessProduct/高清图/05_后台过程关系框图高清.png diff --git a/db_backups/add_assignee_to_timesheet_export_procs_20260622.sql b/db_backups/add_assignee_to_timesheet_export_procs_20260622.sql new file mode 100644 index 0000000..aa399fa --- /dev/null +++ b/db_backups/add_assignee_to_timesheet_export_procs_20260622.sql @@ -0,0 +1,188 @@ +USE [YL_MESDB] +GO + +ALTER PROCEDURE [dbo].[工时统计_项目工时_查询_导出] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +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*30 AS 产品名称, 256*40 AS 产品编码, 256*15 AS 工序名称, 256*12 AS 操作人, + 256*12 AS 指派对象, 256*12 AS 计划数量, 256*12 AS 完成数量, 256*10 AS 报工数量, 256*15 AS 计划开始, 256*15 AS 计划完成, 256*12 AS '工时(h)' + + 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 '工时(h)' + + SELECT + v.订单合同号 AS 合同号, + v.订单号, + v.产品名称, + v.产品编码, + v.工序名称, + v.操作人, + ISNULL(v.工位名称, '') AS 指派对象, + CASE WHEN v.计划数量 IS NULL THEN '' WHEN v.计划数量 = FLOOR(v.计划数量) THEN CAST(CAST(v.计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(v.计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 计划数量, + CASE WHEN v.完成数量 IS NULL THEN '' WHEN v.完成数量 = FLOOR(v.完成数量) THEN CAST(CAST(v.完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(v.完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 完成数量, + CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN CAST(v.操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量, + CONVERT(VARCHAR(10), v.报工日期, 120) AS 计划开始, + CONVERT(VARCHAR(10), v.报工日期, 120) AS 计划完成, + CAST(CAST(v.加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)' + FROM View_生产工时视图 v + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%') + ORDER BY v.订单合同号, v.产品编码, v.工序名称, v.操作人, v.订单号 +END +GO + +ALTER PROCEDURE [dbo].[工时统计_作业者工时_查询_导出] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +AS +BEGIN + SET NOCOUNT ON; + + SELECT '作业者工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype + + SELECT 256*12 AS 操作人, 256*15 AS 工作日期, 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码, + 256*25 AS 产品名称, 256*15 AS 工序名称, 256*12 AS 指派对象, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)' + + 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 '工时(h)' + + SELECT + 操作人, + CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期, + ISNULL(订单合同号, '') AS 合同号, + ISNULL(订单号, '') AS 订单号, + ISNULL(产品编码, '') AS 产品编码, + ISNULL(产品名称, '') AS 产品名称, + ISNULL(工序名称, '') AS 工序名称, + ISNULL(工位名称, '') AS 指派对象, + CASE WHEN 操作类别 IN ('报工', '辅助结束', '加班', '异常', '开始加工') THEN CAST(操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量, + CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间, + CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间, + CAST(CAST(总时长 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)' + FROM [dbo].[View_生产工时视图] + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND 操作人 IS NOT NULL AND 操作人 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + AND ISNULL(阶段标识, 0) != -1 + ORDER BY 操作人, 开始时间 +END +GO + +ALTER PROCEDURE [dbo].[工时统计_任务工时_查询_导出] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +AS +BEGIN + SET NOCOUNT ON; + + SELECT '任务工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype + + SELECT 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码, 256*25 AS 产品名称, 256*15 AS 工序名称, + 256*12 AS 操作人, 256*12 AS 指派对象, 256*12 AS 计划数量, 256*12 AS 完成数量, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)' + + 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 '工时(h)' + + SELECT + ISNULL(订单合同号, '') AS 合同号, + ISNULL(订单号, '') AS 订单号, + ISNULL(产品编码, '') AS 产品编码, + ISNULL(产品名称, '') AS 产品名称, + ISNULL(工序名称, '') AS 工序名称, + ISNULL(操作人, '') AS 操作人, + ISNULL(工位名称, '') AS 指派对象, + CASE WHEN 计划数量 IS NULL THEN '' WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 计划数量, + CASE WHEN 完成数量 IS NULL THEN '' WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 完成数量, + CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN CAST(操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量, + CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间, + CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间, + CAST(CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)' + FROM View_生产工时视图 + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + ORDER BY 订单合同号, 订单号, 产品编码, 工序名称, 开始时间 +END +GO + +ALTER PROCEDURE [dbo].[工时统计_设备工时_查询_导出] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +AS +BEGIN + SET NOCOUNT ON; + + SELECT '设备工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype + + SELECT 256*12 AS 操作人, 256*15 AS 工作日期, 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码, + 256*25 AS 产品名称, 256*15 AS 工序名称, 256*12 AS 指派对象, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)' + + 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 '工时(h)' + + SELECT + 工位名称, + CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期, + ISNULL(订单合同号, '') AS 合同号, + ISNULL(订单号, '') AS 订单号, + ISNULL(产品编码, '') AS 产品编码, + ISNULL(产品名称, '') AS 产品名称, + ISNULL(工序名称, '') AS 工序名称, + ISNULL(工位名称, '') AS 指派对象, + CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN CAST(操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量, + CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间, + CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间, + CAST(CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)' + FROM View_生产工时视图 + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 报工日期 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 报工日期 <= @结束日期) + AND 工位名称 IS NOT NULL AND 工位名称 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + AND ISNULL(阶段标识, 0) = -1 + ORDER BY 工位名称, 开始时间 +END +GO diff --git a/db_backups/add_assignee_to_timesheet_query_procs_20260622.sql b/db_backups/add_assignee_to_timesheet_query_procs_20260622.sql new file mode 100644 index 0000000..8ed69ee --- /dev/null +++ b/db_backups/add_assignee_to_timesheet_query_procs_20260622.sql @@ -0,0 +1,492 @@ +USE [YL_MESDB] +GO + +ALTER PROCEDURE [dbo].[工时统计_项目工时_查询] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +AS +BEGIN + SET NOCOUNT ON; + + ;WITH 订单工时汇总 AS ( + SELECT + v.订单合同号 AS 合同号, + v.产品编码, + v.产品名称, + MAX(v.计划数量) AS 计划数量, + MAX(v.完成数量) AS 完成数量, + SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量, + MIN(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划开始, + MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成, + CAST(SUM(v.加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时 + FROM View_生产工时视图 v + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%') + GROUP BY v.订单合同号, v.产品编码, v.产品名称 + ), + 工序工时明细 AS ( + SELECT + v.订单合同号 AS 合同号, + v.产品编码, + v.工序名称, + v.操作人, + MAX(v.工位名称) AS 指派对象, + v.订单号, + SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量, + CAST(SUM(v.加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时, + MIN(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划开始, + MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成 + FROM View_生产工时视图 v + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%') + GROUP BY v.订单合同号, v.产品编码, v.工序名称, v.操作人, v.订单号 + ) + SELECT + 1 AS [Level], + 合同号 AS contractNo, + 产品名称 AS materialDesc, + 产品编码 AS materialCode, + '' AS processName, + '' AS operator, + '' AS 指派对象, + CASE WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' + + CASE WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + ISNULL(计划开始, '') AS planStart, + ISNULL(计划完成, '') AS planEnd, + CAST(总工时小时 AS VARCHAR(20)) AS workHours, + '' AS 订单号 + FROM 订单工时汇总 + + UNION ALL + + SELECT + 2 AS [Level], + d.合同号 AS contractNo, + '' AS materialDesc, + d.产品编码 AS materialCode, + d.工序名称 AS processName, + d.操作人 AS operator, + ISNULL(d.指派对象, '') AS 指派对象, + '' AS qty, + CAST(d.报工数量 AS VARCHAR(20)) AS reportQty, + d.计划开始 AS planStart, + d.计划完成 AS planEnd, + CAST(d.工时小时 AS VARCHAR(20)) AS workHours, + d.订单号 AS 订单号 + FROM 工序工时明细 d + + ORDER BY contractNo, materialCode, [Level], processName +END +GO + +ALTER PROCEDURE [dbo].[工时统计_作业者工时_查询] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +AS +BEGIN + SET NOCOUNT ON; + + ;WITH 操作人汇总 AS ( + SELECT + 操作人, + COUNT(*) AS 报工次数, + SUM(CASE + WHEN 操作类别 NOT IN ('异常') THEN 操作数值 + WHEN 操作类别 = '异常' THEN -操作数值 + ELSE 0 + END) AS 报工数量, + CAST(SUM(CASE + WHEN 操作类别 = '异常' THEN -总时长 + ELSE 总时长 + END) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时 + FROM [dbo].[View_生产工时视图] + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期) + AND 操作人 IS NOT NULL AND 操作人 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + AND ISNULL(阶段标识, 0) != -1 + GROUP BY 操作人 + ), + 日期汇总 AS ( + SELECT + 操作人, + CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期, + COUNT(*) AS 报工次数, + SUM(CASE + WHEN 操作类别 NOT IN ('异常') THEN 操作数值 + WHEN 操作类别 = '异常' THEN -操作数值 + ELSE 0 + END) AS 报工数量, + CAST(SUM(CASE + WHEN 操作类别 = '异常' THEN -总时长 + ELSE 总时长 + END) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时 + FROM [dbo].[View_生产工时视图] + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期) + AND 操作人 IS NOT NULL AND 操作人 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + AND ISNULL(阶段标识, 0) != -1 + GROUP BY 操作人, CONVERT(VARCHAR(10), 开始时间, 120) + ), + 报工明细 AS ( + SELECT + 操作人, + CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期, + 订单合同号 AS 合同号, + 订单号, + 产品编码, + 产品名称, + 工序名称, + 工位名称 AS 指派对象, + CASE + WHEN 操作类别 NOT IN ('异常') THEN 操作数值 + WHEN 操作类别 = '异常' THEN -操作数值 + ELSE 0 + END AS 报工数量, + CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间, + CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间, + CAST(CASE + WHEN 操作类别 = '异常' THEN -总时长 + ELSE 总时长 + END / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时, + 异常说明, + 工序说明, + 操作类别 + FROM [dbo].[View_生产工时视图] + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期) + AND 操作人 IS NOT NULL AND 操作人 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + AND ISNULL(阶段标识, 0) != -1 + ) + SELECT + 1 AS [Level], + 操作人 AS operator, + '' AS dateLabel, + CAST(报工次数 AS VARCHAR(20)) AS reportCount, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + '' AS contractNo, + '' AS orderNo, + '' AS productCode, + '' AS productName, + '' AS processName, + '' AS 指派对象, + '' AS startTime, + '' AS endTime, + '' AS 异常说明, + '' AS 工序说明, + '' AS 操作类别, + CAST(总工时小时 AS VARCHAR(20)) AS workHours + FROM 操作人汇总 + + UNION ALL + + SELECT + 2 AS [Level], + 操作人 AS operator, + 工作日期 AS dateLabel, + CAST(报工次数 AS VARCHAR(20)) AS reportCount, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + '' AS contractNo, + '' AS orderNo, + '' AS productCode, + '' AS productName, + '' AS processName, + '' AS 指派对象, + '' AS startTime, + '' AS endTime, + '' AS 异常说明, + '' AS 工序说明, + '' AS 操作类别, + CAST(工时小时 AS VARCHAR(20)) AS workHours + FROM 日期汇总 + + UNION ALL + + SELECT + 3 AS [Level], + 操作人 AS operator, + 工作日期 AS dateLabel, + '' AS reportCount, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + ISNULL(合同号, '') AS contractNo, + ISNULL(订单号, '') AS orderNo, + ISNULL(产品编码, '') AS productCode, + ISNULL(产品名称, '') AS productName, + ISNULL(工序名称, '') AS processName, + ISNULL(指派对象, '') AS 指派对象, + ISNULL(开始时间, '') AS startTime, + ISNULL(结束时间, '') AS endTime, + ISNULL(异常说明, '') AS 异常说明, + ISNULL(工序说明, '') AS 工序说明, + ISNULL(操作类别, '') AS 操作类别, + CAST(工时小时 AS VARCHAR(20)) AS workHours + FROM 报工明细 + + ORDER BY operator, dateLabel, [Level] +END +GO + +ALTER PROCEDURE [dbo].[工时统计_任务工时_查询] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +AS +BEGIN + SET NOCOUNT ON; + + ;WITH 任务汇总 AS ( + SELECT + 订单合同号 AS 合同号, + 订单号, + 产品编码, + 产品名称, + 工序名称, + 操作类别, + MAX(计划数量) AS 计划数量, + MAX(完成数量) AS 完成数量, + SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量, + CAST(SUM(总时长) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时 + FROM View_生产工时视图 + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + GROUP BY 订单合同号, 订单号, 产品编码, 产品名称, 工序名称, 操作类别 + ), + 报工明细 AS ( + SELECT + 订单合同号 AS 合同号, + 订单号, + 产品编码, + 工序名称, + 操作人, + 工位名称 AS 指派对象, + 操作类别, + CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量, + CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间, + CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间, + CAST(总时长 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时 + FROM View_生产工时视图 + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + ) + SELECT + 1 AS [Level], + ISNULL(合同号, '') AS contractNo, + ISNULL(订单号, '') AS orderNo, + ISNULL(产品编码, '') AS productCode, + ISNULL(产品名称, '') AS productName, + ISNULL(工序名称, '') AS processName, + '' AS operator, + '' AS 指派对象, + CASE WHEN 计划数量 IS NULL THEN '0' WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' + + CASE WHEN 完成数量 IS NULL THEN '0' WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + '' AS startTime, + '' AS endTime, + CAST(总工时小时 AS VARCHAR(20)) AS workHours, + 操作类别 + FROM 任务汇总 + + UNION ALL + + SELECT + 2 AS [Level], + ISNULL(合同号, '') AS contractNo, + ISNULL(订单号, '') AS orderNo, + ISNULL(产品编码, '') AS productCode, + '' AS productName, + ISNULL(工序名称, '') AS processName, + ISNULL(操作人, '') AS operator, + ISNULL(指派对象, '') AS 指派对象, + '' AS qty, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + ISNULL(开始时间, '') AS startTime, + ISNULL(结束时间, '') AS endTime, + CAST(工时小时 AS VARCHAR(20)) AS workHours, + 操作类别 + FROM 报工明细 + + ORDER BY contractNo, orderNo, productCode, processName, [Level], startTime +END +GO + +ALTER PROCEDURE [dbo].[工时统计_设备工时_查询] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +AS +BEGIN + SET NOCOUNT ON; + + ;WITH 操作人汇总 AS ( + SELECT + 工位名称, + COUNT(*) AS 报工次数, + SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量, + CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时 + FROM View_生产工时视图 + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND 操作人 IS NOT NULL AND 操作人 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + AND ISNULL(阶段标识, 0) = -1 + GROUP BY 工位名称 + ), + 日期汇总 AS ( + SELECT + 工位名称, + CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期, + COUNT(*) AS 报工次数, + SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量, + CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时 + FROM View_生产工时视图 + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND 工位名称 IS NOT NULL AND 工位名称 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + AND ISNULL(阶段标识, 0) = -1 + GROUP BY 工位名称, CONVERT(VARCHAR(10), 开始时间, 120) + ), + 报工明细 AS ( + SELECT + 工位名称, + CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期, + 订单合同号 AS 合同号, + 订单号, + 产品编码, + 产品名称, + 工序名称, + 工位名称 AS 指派对象, + CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量, + CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间, + CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间, + CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时 + FROM View_生产工时视图 + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND 操作人 IS NOT NULL AND 操作人 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + AND ISNULL(阶段标识, 0) = -1 + ) + SELECT + 1 AS [Level], + 工位名称 AS operator, + '' AS dateLabel, + CAST(报工次数 AS VARCHAR(20)) AS reportCount, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + '' AS contractNo, + '' AS orderNo, + '' AS productCode, + '' AS productName, + '' AS processName, + '' AS 指派对象, + '' AS startTime, + '' AS endTime, + CAST(总工时小时 AS VARCHAR(20)) AS workHours + FROM 操作人汇总 + + UNION ALL + + SELECT + 2 AS [Level], + 工位名称 AS operator, + 工作日期 AS dateLabel, + CAST(报工次数 AS VARCHAR(20)) AS reportCount, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + '' AS contractNo, + '' AS orderNo, + '' AS productCode, + '' AS productName, + '' AS processName, + '' AS 指派对象, + '' AS startTime, + '' AS endTime, + CAST(工时小时 AS VARCHAR(20)) AS workHours + FROM 日期汇总 + + UNION ALL + + SELECT + 3 AS [Level], + 工位名称 AS operator, + 工作日期 AS dateLabel, + '' AS reportCount, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + ISNULL(合同号, '') AS contractNo, + ISNULL(订单号, '') AS orderNo, + ISNULL(产品编码, '') AS productCode, + ISNULL(产品名称, '') AS productName, + ISNULL(工序名称, '') AS processName, + ISNULL(指派对象, '') AS 指派对象, + ISNULL(开始时间, '') AS startTime, + ISNULL(结束时间, '') AS endTime, + CAST(工时小时 AS VARCHAR(20)) AS workHours + FROM 报工明细 + + ORDER BY operator, dateLabel, [Level] +END +GO diff --git a/db_backups/add_standard_hours_to_production_plan_track_20260622.sql b/db_backups/add_standard_hours_to_production_plan_track_20260622.sql new file mode 100644 index 0000000..6d7e346 --- /dev/null +++ b/db_backups/add_standard_hours_to_production_plan_track_20260622.sql @@ -0,0 +1,186 @@ +USE [YL_MESDB] +GO + +ALTER PROCEDURE [dbo].[生产管理_生产计划跟踪] + @订单号 int = 0, + @物料类型 nvarchar(50) = '', + @合同号 nvarchar(50) = '', + @产品编码 nvarchar(50) = '', + @产品名称 nvarchar(50) = '', + @工序名称 nvarchar(50) = '', + @要求完工日期1 nvarchar(50) = '', + @要求完工日期2 nvarchar(50) = '', + @计划开始1 nvarchar(50) = '', + @计划开始2 nvarchar(50) = '', + @计划完成1 nvarchar(50) = '', + @计划完成2 nvarchar(50) = '', + @排产状态 nvarchar(50) = '全部', + @指派对象 nvarchar(50) = '全部', + @自制件属性 nvarchar(50) = '全部', + @计划号 nvarchar(50) = '', + @加急状态 nvarchar(50) = '', + @单据状态 nvarchar(50) = '' +AS +BEGIN + DECLARE @selectStr NVARCHAR(MAX) + DECLARE @selectStrWhere NVARCHAR(4000) = ' WHERE [物料类型] = ''pit_Resource'' ' + + SET @selectStr = N' + SELECT top 500 + v.计划号, + 加急总数, + 拣配状态, + 自制件属性, + 入库数量, + 外协分组, + case + when isnull(任务状态,0)=4 then ''已完成'' + when isnull(任务状态,0)=2 then ''已开工'' + when isnull(任务状态,0)=0 then ''待执行'' + when isnull(任务状态,0)=1 then ''可执行'' + else '''' + end as [任务状态], + case + when isnull(加工状态,0)=2 then ''辅助开始'' + when isnull(加工状态,0)=3 then ''辅助结束'' + when isnull(加工状态,0)=4 then ''开始加工'' + when isnull(加工状态,0)=5 then ''暂停'' + when isnull(加工状态,0)=6 then ''报工'' + else '''' + end as [加工状态], + [计划数量订单], + ISNULL(开工时间, 0) AS 开工时间, + ISNULL(进度, 0) AS 进度, + v.[TaskAID], + [合同号], + v.[订单编号] AS 订单号, + [订单行号], + [订单拆分内码] AS 拆分内码, + [物料编号] AS 产品编码, + [物料描述] AS 产品名称, + TRIM(''.'' FROM TRIM(''0'' FROM CAST([计划数量] AS VARCHAR(30)))) AS 计划数量, + ISNULL(gy.标准工时, 0) AS 标准工时, + [计划完成] AS 要求完工日期, + [工序名称], + 完成数量, + 收料数量, + CASE + WHEN [加急状态] = 1 THEN ''加急'' + ELSE '''' + END AS 加急状态, + 加急数量, + 性质, + ISNULL(总工时, 0) AS 总工时, + [占用情况], + [排产状态], + [工序计划数量], + 指派对象编号, + 指派对象, + TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量, + 计划开始时间, + 计划完成时间, + 最晚开始时间, + [派工状态], + [外协通知], + [优先级], + [未完成说明], + [派工特殊说明], + [最后编辑人], + [最后编辑时间], + [二次派工], + CASE + WHEN zj_终检.计划号 IS NOT NULL THEN ''是'' + ELSE ''否'' + END AS 终检, + ISNULL(zj_收检.合格数合计, 0) AS 收检合格数, + ISNULL(zj_收检.不合格数合计, 0) AS 收检不合格数, + ISNULL(zj_收检.合格数合计, 0) + ISNULL(zj_收检.不合格数合计, 0) AS 收检总数, + ISNULL(jl.开始时间, 0) AS 开始时间, + ISNULL(jl.结束时间, 0) AS 结束时间, + ISNULL(jl.外协结束时间, 0) AS 外协结束时间, + STUFF(( + SELECT '','' + d2.工序名称 + FROM [dbo].[View_生产订单_MES] d2 + WHERE d2.订单编号 = v.订单编号 order by d2.订单行号 + FOR XML PATH('''') + ), 1, 1, '''') AS 工艺路线 + FROM [dbo].[View_生产订单全部(包括已关闭)] v + LEFT JOIN ( + SELECT DISTINCT 计划号 + FROM dbo.YL_质量检验_质检记录 + WHERE 质检类型 = ''终检'' + ) zj_终检 ON v.[订单编号] = zj_终检.计划号 + LEFT JOIN ( + SELECT + TaskAID, + SUM(ISNULL(合格数, 0)) AS 合格数合计, + SUM(ISNULL(不合格数, 0)) AS 不合格数合计 + FROM dbo.YL_质量检验_质检记录 + WHERE 质检类型 = ''收检'' + GROUP BY TaskAID + ) zj_收检 ON v.[TaskAID] = zj_收检.TaskAID + LEFT JOIN ( + SELECT + TaskAID, + min(ISNULL(开始时间, 0)) AS 开始时间, + MAX(CASE WHEN 操作类别 = ''报工'' THEN ISNULL(开始时间, 0) ELSE NULL END) AS 外协结束时间, + MAX(CASE WHEN 操作类别 = ''报工'' THEN ISNULL(结束时间, 0) ELSE NULL END) AS 结束时间 + FROM [dbo].[YL_加工中心_操作记录表] + GROUP BY TaskAID + ) jl ON v.[TaskAID] = jl.TaskAID + LEFT JOIN ( + SELECT + 订单编号, + 工艺顺序, + MAX(ISNULL(标准工时, 0)) AS 标准工时 + FROM dbo.[车间生产管理工艺_零件生产工艺_工艺库] + GROUP BY 订单编号, 工艺顺序 + ) gy ON v.[订单编号] = gy.[订单编号] AND v.[订单行号] = gy.[工艺顺序]' + + IF (@订单号 > 0) + SET @selectStrWhere = @selectStrWhere + ' AND v.[订单编号] = ' + CONVERT(VARCHAR(10), @订单号) + IF (@计划号 > 0) + SET @selectStrWhere = @selectStrWhere + ' AND v.[计划号] = '''+@计划号+'''' + IF (@合同号 <> '') + SET @selectStrWhere = @selectStrWhere + ' AND [合同号] LIKE ''%' + @合同号 + '%''' + IF (@产品编码 <> '') + SET @selectStrWhere = @selectStrWhere + ' AND [物料编号] LIKE ''%' + @产品编码 + '%''' + IF (@产品名称 <> '') + SET @selectStrWhere = @selectStrWhere + ' AND [物料描述] LIKE ''%' + @产品名称 + '%''' + IF (@工序名称 <> '') + SET @selectStrWhere = @selectStrWhere + ' AND [工序名称] = ''' + @工序名称 + '''' + IF (@要求完工日期1 <> '') + SET @selectStrWhere = @selectStrWhere + ' AND [计划完成] >= ''' + @要求完工日期1 + '''' + IF (@要求完工日期2 <> '') + SET @selectStrWhere = @selectStrWhere + ' AND [计划完成] <= ''' + @要求完工日期2 + '''' + IF (@计划开始1 <> '') + SET @selectStrWhere = @selectStrWhere + ' AND [计划开始时间] >= ''' + @计划开始1 + '''' + IF (@计划开始2 <> '') + SET @selectStrWhere = @selectStrWhere + ' AND [计划开始时间] <= ''' + @计划开始2 + '''' + IF (@计划完成1 <> '') + SET @selectStrWhere = @selectStrWhere + ' AND [计划完成时间] >= ''' + @计划完成1 + '''' + IF (@计划完成2 <> '') + SET @selectStrWhere = @selectStrWhere + ' AND [计划完成时间] <= ''' + @计划完成2 + '''' + IF (@排产状态 = '未完成') + SET @selectStrWhere = @selectStrWhere + ' AND ISNULL([排产状态], 0) = 0' + ELSE IF (@排产状态 = '已完成') + SET @selectStrWhere = @selectStrWhere + ' AND [排产状态] = 1' + IF (@自制件属性 = '机加') + SET @selectStrWhere = @selectStrWhere + ' AND [自制件属性] = ''机加件''' + ELSE IF (@自制件属性 = '装配') + SET @selectStrWhere = @selectStrWhere + ' AND [自制件属性] LIKE ''%装配''' + IF (@加急状态 = '加急') + SET @selectStrWhere = @selectStrWhere + ' AND [加急状态] = 1' + IF (@单据状态 = '正常') + SET @selectStrWhere = @selectStrWhere + ' AND [单据状态] is null' + ELSE IF (@单据状态 = '关闭') + SET @selectStrWhere = @selectStrWhere + ' AND [单据状态] is not null' + IF (@指派对象 <> '全部') + SET @selectStrWhere = @selectStrWhere + ' AND [指派对象] IN (SELECT value FROM STRING_SPLIT(''' + @指派对象 + ''', '',''))' + + SET @selectStrWhere = @selectStrWhere + ' ORDER BY v.[计划完成] ASC, v.[订单编号] ASC' + SET @selectStr = @selectStr + @selectStrWhere + PRINT @selectStr + EXEC sp_executesql @selectStr +END +GO diff --git a/db_backups/alter_quality_details_query_fieldkey_20260625.sql b/db_backups/alter_quality_details_query_fieldkey_20260625.sql new file mode 100644 index 0000000..edaa2a4 --- /dev/null +++ b/db_backups/alter_quality_details_query_fieldkey_20260625.sql @@ -0,0 +1,81 @@ +ALTER PROCEDURE [dbo].[质量管理_质检明细_查询] + @质检类型 nvarchar(4000) = '10', + @开始日期 datetime = NULL, + @结束日期 datetime = NULL, + @订单号 nvarchar(4000) = '0', + @合同号 nvarchar(4000) = '0', + @零件编码 nvarchar(4000) = '0', + @零件名称 nvarchar(4000) = '0', + @PageCurrent int = 1, + @PageSize int = 20, + @PageCount int OUTPUT, + @ItemCount int OUTPUT +AS +BEGIN + SET NOCOUNT ON; + + DECLARE @tbname sysname = ' [dbo].[View_质检明细] ' + DECLARE @fieldkey sysname = 'QT_AID' + DECLARE @where nvarchar(4000) + DECLARE @fieldshow nvarchar(1000) + DECLARE @fieldOrder nvarchar(1000) = ' 检测时间 DESC, QT_AID DESC ' + + SET @where = ' (1=1) ' + + IF @质检类型 = '10' + SET @where = @where + ' AND (1=1) ' + ELSE IF @质检类型 = '0' + SET @where = @where + ' AND 质检类型 = ''收检'' ' + ELSE IF @质检类型 = '1' + SET @where = @where + ' AND 质检类型 = ''终检'' ' + ELSE IF @质检类型 = '2' + SET @where = @where + ' AND 质检类型 = ''来料检验'' ' + ELSE IF @质检类型 = '3' + SET @where = @where + ' AND 质检类型 = ''退库检验'' ' + + IF @订单号 <> '0' + SET @where = @where + ' AND 计划号 LIKE ''%' + @订单号 + '%'' ' + + --IF @合同号 <> '0' + -- SET @where = @where + ' AND 内部合同号 LIKE ''%' + @合同号 + '%'' ' + + IF @零件编码 <> '0' + SET @where = @where + ' AND 零件编码 LIKE ''%' + @零件编码 + '%'' ' + + IF @零件名称 <> '0' + SET @where = @where + ' AND 零件名称 LIKE ''%' + @零件名称 + '%'' ' + + IF @开始日期 IS NOT NULL + SET @where = @where + ' AND 检测时间 >= ''' + CONVERT(nvarchar(30), @开始日期, 120) + ''' ' + + IF @结束日期 IS NOT NULL + SET @where = @where + ' AND 检测时间 <= ''' + CONVERT(nvarchar(30), @结束日期, 120) + ''' ' + + SET @fieldshow = ' + [QT_AID] + ,[质检类型] + ,[零件编码] + ,[零件名称] + ,[内部合同号] + ,[计划号] + ,[工序名称] + ,[检验数量] + ,[合格数] + ,[不合格数] + ,[检测人] + ,[检测时间] + ,[检测说明] + ,[工位名称] + ,[订单类型]' + + EXEC [dbo].[sp_xt_pagesplit] + @tbname, + @fieldkey, + @where, + @fieldshow, + @fieldOrder, + @PageCurrent, + @PageSize, + @PageCount OUTPUT, + @ItemCount OUTPUT +END diff --git a/db_backups/alter_timesheet_device_planqty_project_task_processdesc_20260623.sql b/db_backups/alter_timesheet_device_planqty_project_task_processdesc_20260623.sql new file mode 100644 index 0000000..da611ec --- /dev/null +++ b/db_backups/alter_timesheet_device_planqty_project_task_processdesc_20260623.sql @@ -0,0 +1,426 @@ +USE [YL_MESDB] +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +ALTER PROCEDURE [dbo].[工时统计_设备工时_查询] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +AS +BEGIN + SET NOCOUNT ON; + + IF @开始日期 = CONVERT(DATE, '19000101', 112) SET @开始日期 = NULL; + IF @结束日期 = CONVERT(DATE, '19000101', 112) SET @结束日期 = NULL; + + ;WITH 操作人汇总 AS ( + SELECT + 工位名称, + COUNT(*) AS 报工次数, + SUM(CASE WHEN 操作类别 IN (N'报工', N'辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量, + CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时 + FROM View_生产工时视图全部 + WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR 开始时间 <= @结束日期) + AND 操作人 IS NOT NULL AND 操作人 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + AND ISNULL(阶段标识, 0) = -1 + GROUP BY 工位名称 + ), + 日期汇总 AS ( + SELECT + 工位名称, + CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期, + COUNT(*) AS 报工次数, + SUM(CASE WHEN 操作类别 IN (N'报工', N'辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量, + CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时 + FROM View_生产工时视图全部 + WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR 开始时间 <= @结束日期) + AND 工位名称 IS NOT NULL AND 工位名称 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + AND ISNULL(阶段标识, 0) = -1 + GROUP BY 工位名称, CONVERT(VARCHAR(10), 开始时间, 120) + ), + 报工明细 AS ( + SELECT + 工位名称, + CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期, + 订单合同号 AS 合同号, + 订单号, + 产品编码, + 产品名称, + CAST(计划数量 AS DECIMAL(19,6)) AS 计划数量, + 工序名称, + 工位名称 AS 指派对象, + CASE + WHEN 操作描述 LIKE N'%白班%' THEN N'白班' + WHEN 操作描述 LIKE N'%夜班%' THEN N'夜班' + ELSE N'' + END AS 班次, + 操作类别 AS 报工类型, + CASE WHEN 操作类别 IN (N'报工', N'辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量, + CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间, + CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间, + CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时 + FROM View_生产工时视图全部 + WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR 开始时间 <= @结束日期) + AND 操作人 IS NOT NULL AND 操作人 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + AND ISNULL(阶段标识, 0) = -1 + ) + SELECT + 1 AS [Level], + 工位名称 AS operator, + '' AS dateLabel, + CAST(报工次数 AS VARCHAR(20)) AS reportCount, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + '' AS contractNo, + '' AS orderNo, + '' AS productCode, + '' AS productName, + CAST(NULL AS DECIMAL(19,6)) AS 计划数量, + '' AS processName, + '' AS 班次, + '' AS 报工类型, + '' AS 指派对象, + '' AS startTime, + '' AS endTime, + CAST(总工时小时 AS VARCHAR(20)) AS workHours + FROM 操作人汇总 + + UNION ALL + + SELECT + 2 AS [Level], + 工位名称 AS operator, + 工作日期 AS dateLabel, + CAST(报工次数 AS VARCHAR(20)) AS reportCount, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + '' AS contractNo, + '' AS orderNo, + '' AS productCode, + '' AS productName, + CAST(NULL AS DECIMAL(19,6)) AS 计划数量, + '' AS processName, + '' AS 班次, + '' AS 报工类型, + '' AS 指派对象, + '' AS startTime, + '' AS endTime, + CAST(工时小时 AS VARCHAR(20)) AS workHours + FROM 日期汇总 + + UNION ALL + + SELECT + 3 AS [Level], + 工位名称 AS operator, + 工作日期 AS dateLabel, + '' AS reportCount, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + ISNULL(合同号, '') AS contractNo, + ISNULL(订单号, '') AS orderNo, + ISNULL(产品编码, '') AS productCode, + ISNULL(产品名称, '') AS productName, + 计划数量 AS 计划数量, + ISNULL(工序名称, '') AS processName, + ISNULL(班次, '') AS 班次, + ISNULL(报工类型, '') AS 报工类型, + ISNULL(指派对象, '') AS 指派对象, + ISNULL(开始时间, '') AS startTime, + ISNULL(结束时间, '') AS endTime, + CAST(工时小时 AS VARCHAR(20)) AS workHours + FROM 报工明细 + + ORDER BY operator, dateLabel, [Level] +END +GO + +ALTER PROCEDURE [dbo].[工时统计_项目工时_查询] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @工时类型 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +AS +BEGIN + SET NOCOUNT ON; + + IF @开始日期 = CONVERT(DATE, '19000101', 112) SET @开始日期 = NULL; + IF @结束日期 = CONVERT(DATE, '19000101', 112) SET @结束日期 = NULL; + + ;WITH 人员班组 AS ( + SELECT + LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name, + MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组 + FROM [YL_MESDB].[dbo].[登录基础数据_人员信息] + WHERE Personnel_Name IS NOT NULL + GROUP BY LTRIM(RTRIM(Personnel_Name)) + ), + 工时基础 AS ( + SELECT + v.*, + ISNULL(p.班组, '未分类') AS 工时类型, + CASE + WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0) + WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0) + WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0) + WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0) + ELSE 0 + END AS 有效工时秒 + FROM View_生产工时视图全部 v + LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name + ), + 订单工时汇总 AS ( + SELECT + v.订单合同号 AS 合同号, + v.产品编码, + v.产品名称, + MAX(v.计划数量) AS 计划数量, + MAX(v.完成数量) AS 完成数量, + SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量, + MIN(CONVERT(VARCHAR(10), v.开始时间, 120)) AS 计划开始, + MAX(CONVERT(VARCHAR(10), v.结束时间, 120)) AS 计划完成, + CAST(SUM(v.有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时 + FROM 工时基础 v + WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR 开始时间 <= @结束日期) + AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%') + AND (@工时类型 IS NULL OR @工时类型 = '' OR v.工时类型 = @工时类型) + GROUP BY v.订单合同号, v.产品编码, v.产品名称 + ), + 工序工时明细 AS ( + SELECT + v.订单合同号 AS 合同号, + v.产品编码, + v.工序名称, + MAX(v.工序说明) AS 工序说明, + v.工时类型, + v.操作人, + MAX(v.工位名称) AS 指派对象, + v.订单号, + SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量, + CAST(SUM(v.有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时, + MIN(CONVERT(VARCHAR(10), v.开始时间, 120)) AS 计划开始, + MAX(CONVERT(VARCHAR(10), v.结束时间, 120)) AS 计划完成, + MAX(v.计划数量) AS 计划数量 + FROM 工时基础 v + WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR 开始时间 <= @结束日期) + AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%') + AND (@工时类型 IS NULL OR @工时类型 = '' OR v.工时类型 = @工时类型) + GROUP BY v.订单合同号, v.产品编码, v.工序名称, v.工时类型, v.操作人, v.订单号 + ) + SELECT + 1 AS [Level], + 合同号 AS contractNo, + 产品名称 AS materialDesc, + 产品编码 AS materialCode, + CAST(NULL AS DECIMAL(19,6)) AS 计划数量, + '' AS processName, + '' AS 工序说明, + '' AS 工时类型, + '' AS operator, + '' AS 指派对象, + CASE WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' + + CASE WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + ISNULL(计划开始, '') AS planStart, + ISNULL(计划完成, '') AS planEnd, + CAST(总工时小时 AS VARCHAR(20)) AS workHours, + '' AS 订单号 + FROM 订单工时汇总 + + UNION ALL + + SELECT + 2 AS [Level], + d.合同号 AS contractNo, + '' AS materialDesc, + d.产品编码 AS materialCode, + d.计划数量 AS 计划数量, + d.工序名称 AS processName, + ISNULL(d.工序说明, '') AS 工序说明, + d.工时类型 AS 工时类型, + d.操作人 AS operator, + ISNULL(d.指派对象, '') AS 指派对象, + '' AS qty, + CAST(d.报工数量 AS VARCHAR(20)) AS reportQty, + d.计划开始 AS planStart, + d.计划完成 AS planEnd, + CAST(d.工时小时 AS VARCHAR(20)) AS workHours, + d.订单号 AS 订单号 + FROM 工序工时明细 d + + ORDER BY contractNo, materialCode, [Level], processName, 工时类型 +END +GO + +ALTER PROCEDURE [dbo].[工时统计_任务工时_查询] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @工时类型 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +AS +BEGIN + SET NOCOUNT ON; + + IF @开始日期 = CONVERT(DATE, '19000101', 112) SET @开始日期 = NULL; + IF @结束日期 = CONVERT(DATE, '19000101', 112) SET @结束日期 = NULL; + + ;WITH 人员班组 AS ( + SELECT + LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name, + MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组 + FROM [YL_MESDB].[dbo].[登录基础数据_人员信息] + WHERE Personnel_Name IS NOT NULL + GROUP BY LTRIM(RTRIM(Personnel_Name)) + ), + 工时基础 AS ( + SELECT + v.*, + ISNULL(p.班组, '未分类') AS 工时类型, + CASE + WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0) + WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0) + WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0) + WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0) + ELSE 0 + END AS 有效工时秒 + FROM View_生产工时视图全部 v + LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name + ), + 任务汇总 AS ( + SELECT + 订单合同号 AS 合同号, + 订单号, + 产品编码, + 产品名称, + 工序名称, + MAX(工序说明) AS 工序说明, + 工时类型, + 操作类别, + MAX(计划数量) AS 计划数量, + MAX(完成数量) AS 完成数量, + SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量, + CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时 + FROM 工时基础 + WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR 开始时间 <= @结束日期) + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型) + GROUP BY 订单合同号, 订单号, 产品编码, 产品名称, 工序名称, 工时类型, 操作类别 + ), + 报工明细 AS ( + SELECT + 订单合同号 AS 合同号, + 订单号, + 产品编码, + 工序名称, + 工序说明, + 操作人, + 工位名称 AS 指派对象, + 工时类型, + 计划数量, + 操作类别, + CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量, + CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间, + CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间, + CAST(有效工时秒 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时 + FROM 工时基础 + WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR 开始时间 <= @结束日期) + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型) + ) + SELECT + 1 AS [Level], + ISNULL(合同号, '') AS contractNo, + ISNULL(订单号, '') AS orderNo, + ISNULL(产品编码, '') AS productCode, + ISNULL(产品名称, '') AS productName, + ISNULL(工序名称, '') AS processName, + ISNULL(工序说明, '') AS 工序说明, + CAST(计划数量 AS DECIMAL(19,6)) AS 计划数量, + ISNULL(工时类型, '') AS 工时类型, + '' AS operator, + '' AS 指派对象, + CASE WHEN 计划数量 IS NULL THEN '0' WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' + + CASE WHEN 完成数量 IS NULL THEN '0' WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + '' AS startTime, + '' AS endTime, + CAST(总工时小时 AS VARCHAR(20)) AS workHours, + 操作类别 + FROM 任务汇总 + + UNION ALL + + SELECT + 2 AS [Level], + ISNULL(合同号, '') AS contractNo, + ISNULL(订单号, '') AS orderNo, + ISNULL(产品编码, '') AS productCode, + '' AS productName, + ISNULL(工序名称, '') AS processName, + ISNULL(工序说明, '') AS 工序说明, + CAST(计划数量 AS DECIMAL(19,6)) AS 计划数量, + ISNULL(工时类型, '') AS 工时类型, + ISNULL(操作人, '') AS operator, + ISNULL(指派对象, '') AS 指派对象, + '' AS qty, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + ISNULL(开始时间, '') AS startTime, + ISNULL(结束时间, '') AS endTime, + CAST(工时小时 AS VARCHAR(20)) AS workHours, + 操作类别 + FROM 报工明细 + + ORDER BY contractNo, orderNo, productCode, processName, [Level], startTime +END +GO diff --git a/db_backups/alter_timesheet_operator_task_worktype_planqty_20260623.sql b/db_backups/alter_timesheet_operator_task_worktype_planqty_20260623.sql new file mode 100644 index 0000000..367de29 --- /dev/null +++ b/db_backups/alter_timesheet_operator_task_worktype_planqty_20260623.sql @@ -0,0 +1,328 @@ +USE [YL_MESDB] +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER OFF +GO + +ALTER PROCEDURE [dbo].[工时统计_作业者工时_查询] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @工时类型 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +AS +BEGIN + SET NOCOUNT ON; + + ;WITH 人员班组 AS ( + SELECT + LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name, + MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组 + FROM [YL_MESDB].[dbo].[登录基础数据_人员信息] + WHERE Personnel_Name IS NOT NULL + GROUP BY LTRIM(RTRIM(Personnel_Name)) + ), + 工时基础 AS ( + SELECT + v.*, + ISNULL(p.班组, '未分类') AS 工时类型, + CASE + WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0) + WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0) + WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0) + WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0) + WHEN v.操作类别 = '异常' THEN -ISNULL(v.总时长, 0) + ELSE 0 + END AS 有效工时秒 + FROM [dbo].[View_生产工时视图] v + LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name + ), + 操作人汇总 AS ( + SELECT + 操作人, + COUNT(*) AS 报工次数, + SUM(CASE + WHEN 操作类别 NOT IN ('异常') THEN 操作数值 + WHEN 操作类别 = '异常' THEN -操作数值 + ELSE 0 + END) AS 报工数量, + CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时 + FROM 工时基础 + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期) + AND 操作人 IS NOT NULL AND 操作人 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型) + AND ISNULL(阶段标识, 0) != -1 + GROUP BY 操作人 + ), + 日期汇总 AS ( + SELECT + 操作人, + CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期, + COUNT(*) AS 报工次数, + SUM(CASE + WHEN 操作类别 NOT IN ('异常') THEN 操作数值 + WHEN 操作类别 = '异常' THEN -操作数值 + ELSE 0 + END) AS 报工数量, + CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时 + FROM 工时基础 + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期) + AND 操作人 IS NOT NULL AND 操作人 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型) + AND ISNULL(阶段标识, 0) != -1 + GROUP BY 操作人, CONVERT(VARCHAR(10), 开始时间, 120) + ), + 报工明细 AS ( + SELECT + 操作人, + CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期, + 订单合同号 AS 合同号, + 订单号, + 产品编码, + 产品名称, + 工序名称, + 工时类型, + 计划数量, + 工位名称 AS 指派对象, + CASE + WHEN 操作类别 NOT IN ('异常') THEN 操作数值 + WHEN 操作类别 = '异常' THEN -操作数值 + ELSE 0 + END AS 报工数量, + CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间, + CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间, + CAST(有效工时秒 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时, + 异常说明, + 工序说明, + 操作类别 + FROM 工时基础 + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期) + AND 操作人 IS NOT NULL AND 操作人 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型) + AND ISNULL(阶段标识, 0) != -1 + ) + SELECT + 1 AS [Level], + 操作人 AS operator, + '' AS dateLabel, + CAST(报工次数 AS VARCHAR(20)) AS reportCount, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + '' AS contractNo, + '' AS orderNo, + '' AS productCode, + '' AS productName, + '' AS processName, + CAST(NULL AS DECIMAL(19,6)) AS 计划数量, + '' AS 工时类型, + '' AS 指派对象, + '' AS startTime, + '' AS endTime, + '' AS 异常说明, + '' AS 工序说明, + '' AS 操作类别, + CAST(总工时小时 AS VARCHAR(20)) AS workHours + FROM 操作人汇总 + + UNION ALL + + SELECT + 2 AS [Level], + 操作人 AS operator, + 工作日期 AS dateLabel, + CAST(报工次数 AS VARCHAR(20)) AS reportCount, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + '' AS contractNo, + '' AS orderNo, + '' AS productCode, + '' AS productName, + '' AS processName, + CAST(NULL AS DECIMAL(19,6)) AS 计划数量, + '' AS 工时类型, + '' AS 指派对象, + '' AS startTime, + '' AS endTime, + '' AS 异常说明, + '' AS 工序说明, + '' AS 操作类别, + CAST(工时小时 AS VARCHAR(20)) AS workHours + FROM 日期汇总 + + UNION ALL + + SELECT + 3 AS [Level], + 操作人 AS operator, + 工作日期 AS dateLabel, + '' AS reportCount, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + ISNULL(合同号, '') AS contractNo, + ISNULL(订单号, '') AS orderNo, + ISNULL(产品编码, '') AS productCode, + ISNULL(产品名称, '') AS productName, + ISNULL(工序名称, '') AS processName, + 计划数量 AS 计划数量, + ISNULL(工时类型, '') AS 工时类型, + ISNULL(指派对象, '') AS 指派对象, + ISNULL(开始时间, '') AS startTime, + ISNULL(结束时间, '') AS endTime, + ISNULL(异常说明, '') AS 异常说明, + ISNULL(工序说明, '') AS 工序说明, + ISNULL(操作类别, '') AS 操作类别, + CAST(工时小时 AS VARCHAR(20)) AS workHours + FROM 报工明细 + + ORDER BY operator, dateLabel, [Level] +END +GO + +ALTER PROCEDURE [dbo].[工时统计_任务工时_查询] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @工时类型 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +AS +BEGIN + SET NOCOUNT ON; + + ;WITH 人员班组 AS ( + SELECT + LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name, + MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组 + FROM [YL_MESDB].[dbo].[登录基础数据_人员信息] + WHERE Personnel_Name IS NOT NULL + GROUP BY LTRIM(RTRIM(Personnel_Name)) + ), + 工时基础 AS ( + SELECT + v.*, + ISNULL(p.班组, '未分类') AS 工时类型, + CASE + WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0) + WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0) + WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0) + WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0) + ELSE 0 + END AS 有效工时秒 + FROM View_生产工时视图 v + LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name + ), + 任务汇总 AS ( + SELECT + 订单合同号 AS 合同号, + 订单号, + 产品编码, + 产品名称, + 工序名称, + 工时类型, + 操作类别, + MAX(计划数量) AS 计划数量, + MAX(完成数量) AS 完成数量, + SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量, + CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时 + FROM 工时基础 + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型) + GROUP BY 订单合同号, 订单号, 产品编码, 产品名称, 工序名称, 工时类型, 操作类别 + ), + 报工明细 AS ( + SELECT + 订单合同号 AS 合同号, + 订单号, + 产品编码, + 工序名称, + 操作人, + 工位名称 AS 指派对象, + 工时类型, + 计划数量, + 操作类别, + CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量, + CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间, + CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间, + CAST(有效工时秒 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时 + FROM 工时基础 + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型) + ) + SELECT + 1 AS [Level], + ISNULL(合同号, '') AS contractNo, + ISNULL(订单号, '') AS orderNo, + ISNULL(产品编码, '') AS productCode, + ISNULL(产品名称, '') AS productName, + ISNULL(工序名称, '') AS processName, + CAST(计划数量 AS DECIMAL(19,6)) AS 计划数量, + ISNULL(工时类型, '') AS 工时类型, + '' AS operator, + '' AS 指派对象, + CASE WHEN 计划数量 IS NULL THEN '0' WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' + + CASE WHEN 完成数量 IS NULL THEN '0' WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + '' AS startTime, + '' AS endTime, + CAST(总工时小时 AS VARCHAR(20)) AS workHours, + 操作类别 + FROM 任务汇总 + + UNION ALL + + SELECT + 2 AS [Level], + ISNULL(合同号, '') AS contractNo, + ISNULL(订单号, '') AS orderNo, + ISNULL(产品编码, '') AS productCode, + '' AS productName, + ISNULL(工序名称, '') AS processName, + CAST(计划数量 AS DECIMAL(19,6)) AS 计划数量, + ISNULL(工时类型, '') AS 工时类型, + ISNULL(操作人, '') AS operator, + ISNULL(指派对象, '') AS 指派对象, + '' AS qty, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + ISNULL(开始时间, '') AS startTime, + ISNULL(结束时间, '') AS endTime, + CAST(工时小时 AS VARCHAR(20)) AS workHours, + 操作类别 + FROM 报工明细 + + ORDER BY contractNo, orderNo, productCode, processName, [Level], startTime +END +GO diff --git a/db_backups/alter_工时统计_设备工时_查询_add_shift_reporttype_20260623.sql b/db_backups/alter_工时统计_设备工时_查询_add_shift_reporttype_20260623.sql new file mode 100644 index 0000000..b4ac439 --- /dev/null +++ b/db_backups/alter_工时统计_设备工时_查询_add_shift_reporttype_20260623.sql @@ -0,0 +1,152 @@ +USE [YL_MESDB] +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +ALTER PROCEDURE [dbo].[工时统计_设备工时_查询] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +AS +BEGIN + SET NOCOUNT ON; + + ;WITH 操作人汇总 AS ( + SELECT + 工位名称, + COUNT(*) AS 报工次数, + SUM(CASE WHEN 操作类别 IN (N'报工', N'辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量, + CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时 + FROM View_生产工时视图 + WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR 开始时间 <= @结束日期) + AND 操作人 IS NOT NULL AND 操作人 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + AND ISNULL(阶段标识, 0) = -1 + GROUP BY 工位名称 + ), + 日期汇总 AS ( + SELECT + 工位名称, + CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期, + COUNT(*) AS 报工次数, + SUM(CASE WHEN 操作类别 IN (N'报工', N'辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量, + CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时 + FROM View_生产工时视图 + WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR 开始时间 <= @结束日期) + AND 工位名称 IS NOT NULL AND 工位名称 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + AND ISNULL(阶段标识, 0) = -1 + GROUP BY 工位名称, CONVERT(VARCHAR(10), 开始时间, 120) + ), + 报工明细 AS ( + SELECT + 工位名称, + CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期, + 订单合同号 AS 合同号, + 订单号, + 产品编码, + 产品名称, + 工序名称, + 工位名称 AS 指派对象, + CASE + WHEN 操作描述 LIKE N'%白班%' THEN N'白班' + WHEN 操作描述 LIKE N'%夜班%' THEN N'夜班' + ELSE N'' + END AS 班次, + 操作类别 AS 报工类型, + CASE WHEN 操作类别 IN (N'报工', N'辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量, + CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间, + CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间, + CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时 + FROM View_生产工时视图 + WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR 开始时间 <= @结束日期) + AND 操作人 IS NOT NULL AND 操作人 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + AND ISNULL(阶段标识, 0) = -1 + ) + SELECT + 1 AS [Level], + 工位名称 AS operator, + '' AS dateLabel, + CAST(报工次数 AS VARCHAR(20)) AS reportCount, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + '' AS contractNo, + '' AS orderNo, + '' AS productCode, + '' AS productName, + '' AS processName, + '' AS 班次, + '' AS 报工类型, + '' AS 指派对象, + '' AS startTime, + '' AS endTime, + CAST(总工时小时 AS VARCHAR(20)) AS workHours + FROM 操作人汇总 + + UNION ALL + + SELECT + 2 AS [Level], + 工位名称 AS operator, + 工作日期 AS dateLabel, + CAST(报工次数 AS VARCHAR(20)) AS reportCount, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + '' AS contractNo, + '' AS orderNo, + '' AS productCode, + '' AS productName, + '' AS processName, + '' AS 班次, + '' AS 报工类型, + '' AS 指派对象, + '' AS startTime, + '' AS endTime, + CAST(工时小时 AS VARCHAR(20)) AS workHours + FROM 日期汇总 + + UNION ALL + + SELECT + 3 AS [Level], + 工位名称 AS operator, + 工作日期 AS dateLabel, + '' AS reportCount, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + ISNULL(合同号, '') AS contractNo, + ISNULL(订单号, '') AS orderNo, + ISNULL(产品编码, '') AS productCode, + ISNULL(产品名称, '') AS productName, + ISNULL(工序名称, '') AS processName, + ISNULL(班次, '') AS 班次, + ISNULL(报工类型, '') AS 报工类型, + ISNULL(指派对象, '') AS 指派对象, + ISNULL(开始时间, '') AS startTime, + ISNULL(结束时间, '') AS endTime, + CAST(工时小时 AS VARCHAR(20)) AS workHours + FROM 报工明细 + + ORDER BY operator, dateLabel, [Level] +END +GO diff --git a/db_backups/alter_工时统计_项目工时_查询_add_workhour_type_20260623.sql b/db_backups/alter_工时统计_项目工时_查询_add_workhour_type_20260623.sql new file mode 100644 index 0000000..a81b07a --- /dev/null +++ b/db_backups/alter_工时统计_项目工时_查询_add_workhour_type_20260623.sql @@ -0,0 +1,132 @@ +USE [YL_MESDB] +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER OFF +GO + +ALTER PROCEDURE [dbo].[工时统计_项目工时_查询] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @工时类型 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +AS +BEGIN + SET NOCOUNT ON; + + ;WITH 人员班组 AS ( + SELECT + LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name, + MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组 + FROM [YL_MESDB].[dbo].[登录基础数据_人员信息] + WHERE Personnel_Name IS NOT NULL + GROUP BY LTRIM(RTRIM(Personnel_Name)) + ), + 工时基础 AS ( + SELECT + v.*, + ISNULL(p.班组, '未分类') AS 工时类型, + CASE + WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0) + WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0) + WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0) + WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0) + ELSE 0 + END AS 有效工时秒 + FROM View_生产工时视图 v + LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name + ), + 订单工时汇总 AS ( + SELECT + v.订单合同号 AS 合同号, + v.产品编码, + v.产品名称, + MAX(v.计划数量) AS 计划数量, + MAX(v.完成数量) AS 完成数量, + SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量, + MIN(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划开始, + MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成, + CAST(SUM(v.有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时 + FROM 工时基础 v + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%') + AND (@工时类型 IS NULL OR @工时类型 = '' OR v.工时类型 = @工时类型) + GROUP BY v.订单合同号, v.产品编码, v.产品名称 + ), + 工序工时明细 AS ( + SELECT + v.订单合同号 AS 合同号, + v.产品编码, + v.工序名称, + v.工时类型, + v.操作人, + MAX(v.工位名称) AS 指派对象, + v.订单号, + SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量, + CAST(SUM(v.有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时, + MIN(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划开始, + MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成, + MAX(v.计划数量) AS 计划数量 + FROM 工时基础 v + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%') + AND (@工时类型 IS NULL OR @工时类型 = '' OR v.工时类型 = @工时类型) + GROUP BY v.订单合同号, v.产品编码, v.工序名称, v.工时类型, v.操作人, v.订单号 + ) + SELECT + 1 AS [Level], + 合同号 AS contractNo, + 产品名称 AS materialDesc, + 产品编码 AS materialCode, + CAST(NULL AS DECIMAL(19,6)) AS 计划数量, + '' AS processName, + '' AS 工时类型, + '' AS operator, + '' AS 指派对象, + CASE WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' + + CASE WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + ISNULL(计划开始, '') AS planStart, + ISNULL(计划完成, '') AS planEnd, + CAST(总工时小时 AS VARCHAR(20)) AS workHours, + '' AS 订单号 + FROM 订单工时汇总 + + UNION ALL + + SELECT + 2 AS [Level], + d.合同号 AS contractNo, + '' AS materialDesc, + d.产品编码 AS materialCode, + d.计划数量 AS 计划数量, + d.工序名称 AS processName, + d.工时类型 AS 工时类型, + d.操作人 AS operator, + ISNULL(d.指派对象, '') AS 指派对象, + '' AS qty, + CAST(d.报工数量 AS VARCHAR(20)) AS reportQty, + d.计划开始 AS planStart, + d.计划完成 AS planEnd, + CAST(d.工时小时 AS VARCHAR(20)) AS workHours, + d.订单号 AS 订单号 + FROM 工序工时明细 d + + ORDER BY contractNo, materialCode, [Level], processName, 工时类型 +END +GO diff --git a/db_backups/sp_xt_pagesplit_before_qualitydetails_check_20260625.sql b/db_backups/sp_xt_pagesplit_before_qualitydetails_check_20260625.sql new file mode 100644 index 0000000..ee1b3ef --- /dev/null +++ b/db_backups/sp_xt_pagesplit_before_qualitydetails_check_20260625.sql @@ -0,0 +1,94 @@ +CREATE PROCEDURE [dbo].[sp_xt_pagesplit] +@tbname sysname, +@fieldkey sysname, +@where nvarchar(1000), +@fieldshow nvarchar(max), +@fieldOrder nvarchar(1000), +@PageCurrent int=1, +@PageSize int=30, +@PageCount int OUTPUT, +@ItemCount int output +AS +BEGIN + SET NOCOUNT ON + + -- 参数检查 + IF ISNULL(@PageCurrent,0)<1 SET @PageCurrent=1 + IF ISNULL(@PageSize,0)<1 SET @PageSize=10 + IF ISNULL(@FieldShow,N'')=N'' SET @FieldShow=N'*' + + -- 处理排序 + DECLARE @OrderBy nvarchar(1000) + IF ISNULL(@FieldOrder,N'')=N'' + SET @OrderBy = N'' + ELSE + SET @OrderBy = N'ORDER BY ' + LTRIM(@FieldOrder) + + -- 处理条件 - 重要:去掉WHERE关键字,只保留条件内容 + DECLARE @WhereCondition nvarchar(1000) + IF ISNULL(@Where,N'')=N'' + SET @WhereCondition = N'' + ELSE + SET @WhereCondition = @Where -- 只保存条件内容,不加WHERE + + -- 清理字段名 + SET @fieldkey = LTRIM(RTRIM(@fieldkey)) + DECLARE @quotedKey NVARCHAR(128) = QUOTENAME(@fieldkey) + + -- 计算总记录数 + DECLARE @sql nvarchar(MAX) + IF @WhereCondition = N'' + SET @sql = N'SELECT @ItemCount = COUNT(*) FROM ' + @tbname + ELSE + SET @sql = N'SELECT @ItemCount = COUNT(*) FROM ' + @tbname + N' WHERE ' + @WhereCondition + + EXEC sp_executesql @sql, N'@ItemCount int OUTPUT', @ItemCount OUTPUT + + -- 计算总页数 + SET @PageCount = CEILING((@ItemCount + 0.0) / @PageSize) + IF @PageCount = 0 SET @PageCount = 1 + + -- 返回当前页数据 + DECLARE @TopRows INT = (@PageCurrent - 1) * @PageSize + + IF @PageCurrent = 1 + BEGIN + -- 第一页 + IF @WhereCondition = N'' + SET @sql = N'SELECT TOP ' + CONVERT(NVARCHAR, @PageSize) + N' ' + @FieldShow + N' + FROM ' + @tbname + N' ' + @OrderBy + ELSE + SET @sql = N'SELECT TOP ' + CONVERT(NVARCHAR, @PageSize) + N' ' + @FieldShow + N' + FROM ' + @tbname + N' WHERE ' + @WhereCondition + N' ' + @OrderBy + END + ELSE + BEGIN + -- 其他页 + IF @WhereCondition = N'' + BEGIN + -- 无条件的情况 + SET @sql = N'SELECT TOP ' + CONVERT(NVARCHAR, @PageSize) + N' ' + @FieldShow + N' + FROM ' + @tbname + N' + WHERE ' + @quotedKey + N' NOT IN ( + SELECT TOP ' + CONVERT(NVARCHAR, @TopRows) + N' ' + @quotedKey + N' + FROM ' + @tbname + N' ' + @OrderBy + N' + ) ' + @OrderBy + END + ELSE + BEGIN + -- 有条件的情况 + SET @sql = N'SELECT TOP ' + CONVERT(NVARCHAR, @PageSize) + N' ' + @FieldShow + N' + FROM ' + @tbname + N' + WHERE ' + @quotedKey + N' NOT IN ( + SELECT TOP ' + CONVERT(NVARCHAR, @TopRows) + N' ' + @quotedKey + N' + FROM ' + @tbname + N' WHERE ' + @WhereCondition + N' ' + @OrderBy + N' + ) AND ' + @WhereCondition + N' ' + @OrderBy + END + END + + -- 调试用,可以注释掉 + -- PRINT @sql + + -- 执行 + EXEC(@sql) +END diff --git a/db_backups/工时统计_任务工时_查询_before_add_assignee_20260622_172419.sql b/db_backups/工时统计_任务工时_查询_before_add_assignee_20260622_172419.sql new file mode 100644 index 0000000..c0e8318 --- /dev/null +++ b/db_backups/工时统计_任务工时_查询_before_add_assignee_20260622_172419.sql @@ -0,0 +1,94 @@ + +CREATE PROCEDURE [dbo].[工时统计_任务工时_查询] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +AS +BEGIN + SET NOCOUNT ON; + + ;WITH 任务汇总 AS ( + SELECT + 订单合同号 AS 合同号, + 订单号, + 产品编码, + 产品名称, + 工序名称, + 操作类别, + MAX(计划数量) AS 计划数量, + MAX(完成数量) AS 完成数量, + SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量, + CAST(SUM(总时长) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时 + FROM View_生产工时视图 + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + GROUP BY 订单合同号, 订单号, 产品编码, 产品名称, 工序名称,操作类别 + ), + 报工明细 AS ( + SELECT + 订单合同号 AS 合同号, + 订单号, + 产品编码, + 工序名称, + 操作人, + 操作类别, + CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量, + CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间, + CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间, + CAST(总时长 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时 + FROM View_生产工时视图 + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + ) + SELECT + 1 AS [Level], + ISNULL(合同号, '') AS contractNo, + ISNULL(订单号, '') AS orderNo, + ISNULL(产品编码, '') AS productCode, + ISNULL(产品名称, '') AS productName, + ISNULL(工序名称, '') AS processName, + '' AS operator, + CASE WHEN 计划数量 IS NULL THEN '0' WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' + + CASE WHEN 完成数量 IS NULL THEN '0' WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + '' AS startTime, + '' AS endTime, + CAST(总工时小时 AS VARCHAR(20)) AS workHours, + 操作类别 + FROM 任务汇总 + + UNION ALL + + SELECT + 2 AS [Level], + ISNULL(合同号, '') AS contractNo, + ISNULL(订单号, '') AS orderNo, + ISNULL(产品编码, '') AS productCode, + '' AS productName, + ISNULL(工序名称, '') AS processName, + ISNULL(操作人, '') AS operator, + '' AS qty, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + ISNULL(开始时间, '') AS startTime, + ISNULL(结束时间, '') AS endTime, + CAST(工时小时 AS VARCHAR(20)) AS workHours, + 操作类别 + FROM 报工明细 + + ORDER BY contractNo, orderNo, productCode, processName, [Level], startTime +END + diff --git a/db_backups/工时统计_任务工时_查询_导出_before_add_assignee_20260622_172419.sql b/db_backups/工时统计_任务工时_查询_导出_before_add_assignee_20260622_172419.sql new file mode 100644 index 0000000..eeff329 --- /dev/null +++ b/db_backups/工时统计_任务工时_查询_导出_before_add_assignee_20260622_172419.sql @@ -0,0 +1,49 @@ + +CREATE PROCEDURE [dbo].[工时统计_任务工时_查询_导出] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +AS +BEGIN + SET NOCOUNT ON; + + -- 导出文件名和类型 + SELECT '任务工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype + + -- 字段宽度 + SELECT 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码, 256*25 AS 产品名称, 256*15 AS 工序名称, + 256*12 AS 操作人, 256*12 AS 计划数量, 256*12 AS 完成数量, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)' + + -- 是否计算列 + 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 '工时(h)' + + -- 导出数据:每行都填满完整信息 + SELECT + ISNULL(订单合同号, '') AS 合同号, + ISNULL(订单号, '') AS 订单号, + ISNULL(产品编码, '') AS 产品编码, + ISNULL(产品名称, '') AS 产品名称, + ISNULL(工序名称, '') AS 工序名称, + ISNULL(操作人, '') AS 操作人, + CASE WHEN 计划数量 IS NULL THEN '' WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 计划数量, + CASE WHEN 完成数量 IS NULL THEN '' WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 完成数量, + CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN CAST(操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量, + CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间, + CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间, + CAST(CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)' + FROM View_生产工时视图 + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + ORDER BY 订单合同号, 订单号, 产品编码, 工序名称, 开始时间 +END + diff --git a/db_backups/工时统计_作业者工时_查询_before_add_assignee_20260622_172419.sql b/db_backups/工时统计_作业者工时_查询_before_add_assignee_20260622_172419.sql new file mode 100644 index 0000000..4d977bb --- /dev/null +++ b/db_backups/工时统计_作业者工时_查询_before_add_assignee_20260622_172419.sql @@ -0,0 +1,164 @@ + +CREATE PROCEDURE [dbo].[工时统计_作业者工时_查询] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +AS +BEGIN + SET NOCOUNT ON; + + ;WITH 操作人汇总 AS ( + SELECT + 操作人, + COUNT(*) AS 报工次数, + SUM(CASE + --WHEN 操作类别 IN ('报工', '辅助结束', '加班', '开始加工') THEN 操作数值 + WHEN 操作类别 NOT IN ('异常') THEN 操作数值 + WHEN 操作类别 = '异常' THEN -操作数值 -- 异常工时记为负数 + ELSE 0 + END) AS 报工数量, + CAST(SUM(CASE + WHEN 操作类别 = '异常' THEN -总时长 -- 异常时长记为负数 + ELSE 总时长 + END) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时 + FROM [dbo].[View_生产工时视图] + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期) + AND 操作人 IS NOT NULL AND 操作人 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + and isNull(阶段标识,0) != -1 + GROUP BY 操作人 + ), + 日期汇总 AS ( + SELECT + 操作人, + CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期, + COUNT(*) AS 报工次数, + SUM(CASE + --WHEN 操作类别 IN ('报工', '辅助结束', '加班', '开始加工') THEN 操作数值 + WHEN 操作类别 NOT IN ('异常') THEN 操作数值 + WHEN 操作类别 = '异常' THEN -操作数值 -- 异常工时记为负数 + ELSE 0 + END) AS 报工数量, + CAST(SUM(CASE + WHEN 操作类别 = '异常' THEN -总时长 -- 异常时长记为负数 + ELSE 总时长 + END) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时 + FROM [dbo].[View_生产工时视图] + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期) + AND 操作人 IS NOT NULL AND 操作人 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + and isNull(阶段标识,0) != -1 + GROUP BY 操作人, CONVERT(VARCHAR(10), 开始时间, 120) + ), + 报工明细 AS ( + SELECT + 操作人, + CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期, + 订单合同号 AS 合同号, + 订单号, + 产品编码, + 产品名称, + 工序名称, + CASE + --WHEN 操作类别 IN ('报工', '辅助结束', '加班', '开始加工') THEN 操作数值 + WHEN 操作类别 NOT IN ('异常') THEN 操作数值 + WHEN 操作类别 = '异常' THEN -操作数值 -- 异常数量记为负数 + ELSE 0 + END AS 报工数量, + CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间, + CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间, + CAST(CASE + WHEN 操作类别 = '异常' THEN -总时长 -- 异常时长记为负数 + ELSE 总时长 + END / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时, + 异常说明, + 工序说明, + 操作类别 + FROM [dbo].[View_生产工时视图] + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期) + AND 操作人 IS NOT NULL AND 操作人 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + and isNull(阶段标识,0) != -1 + ) + SELECT + 1 AS [Level], + 操作人 AS operator, + '' AS dateLabel, + CAST(报工次数 AS VARCHAR(20)) AS reportCount, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + '' AS contractNo, + '' AS orderNo, + '' AS productCode, + '' AS productName, + '' AS processName, + '' AS startTime, + '' AS endTime, + '' AS 异常说明, + '' AS 工序说明, + '' AS 操作类别, + CAST(总工时小时 AS VARCHAR(20)) AS workHours + FROM 操作人汇总 + + UNION ALL + + SELECT + 2 AS [Level], + 操作人 AS operator, + 工作日期 AS dateLabel, + CAST(报工次数 AS VARCHAR(20)) AS reportCount, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + '' AS contractNo, + '' AS orderNo, + '' AS productCode, + '' AS productName, + '' AS processName, + '' AS startTime, + '' AS endTime, + '' AS 异常说明, + '' AS 工序说明, + '' AS 操作类别, + CAST(工时小时 AS VARCHAR(20)) AS workHours + FROM 日期汇总 + + UNION ALL + + SELECT + 3 AS [Level], + 操作人 AS operator, + 工作日期 AS dateLabel, + '' AS reportCount, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + ISNULL(合同号, '') AS contractNo, + ISNULL(订单号, '') AS orderNo, + ISNULL(产品编码, '') AS productCode, + ISNULL(产品名称, '') AS productName, + ISNULL(工序名称, '') AS processName, + ISNULL(开始时间, '') AS startTime, + ISNULL(结束时间, '') AS endTime, + ISNULL(异常说明, '') AS 异常说明, + ISNULL(工序说明, '') AS 工序说明, + ISNULL(操作类别, '') AS 操作类别, + CAST(工时小时 AS VARCHAR(20)) AS workHours + FROM 报工明细 + + ORDER BY operator, dateLabel, [Level] +END diff --git a/db_backups/工时统计_作业者工时_查询_导出_before_add_assignee_20260622_172419.sql b/db_backups/工时统计_作业者工时_查询_导出_before_add_assignee_20260622_172419.sql new file mode 100644 index 0000000..4af8454 --- /dev/null +++ b/db_backups/工时统计_作业者工时_查询_导出_before_add_assignee_20260622_172419.sql @@ -0,0 +1,50 @@ + +CREATE PROCEDURE [dbo].[工时统计_作业者工时_查询_导出] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +AS +BEGIN + SET NOCOUNT ON; + + -- 导出文件名和类型 + SELECT '作业者工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype + + -- 字段宽度 + SELECT 256*12 AS 操作人, 256*15 AS 工作日期, 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码, + 256*25 AS 产品名称, 256*15 AS 工序名称, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)' + + -- 是否计算列 + SELECT 0 AS 操作人, 0 AS 工作日期, 0 AS 合同号, 0 AS 订单号, 0 AS 产品编码, + 0 AS 产品名称, 0 AS 工序名称, 0 AS 报工数量, 0 AS 开始时间, 0 AS 结束时间, 0 AS '工时(h)' + + -- 导出数据:每行都填满完整信息 + SELECT + 操作人, + CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期, + ISNULL(订单合同号, '') AS 合同号, + ISNULL(订单号, '') AS 订单号, + ISNULL(产品编码, '') AS 产品编码, + ISNULL(产品名称, '') AS 产品名称, + ISNULL(工序名称, '') AS 工序名称, + CASE WHEN 操作类别 IN ('报工', '辅助结束','加班','异常','开始加工') THEN CAST(操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量, + CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间, + CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间, + CAST(CAST(总时长 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)' + FROM [dbo].[View_生产工时视图] + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND 操作人 IS NOT NULL AND 操作人 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + and isNull(阶段标识,0) != -1 + ORDER BY 操作人, 开始时间 +END + diff --git a/db_backups/工时统计_设备工时_查询_before_add_assignee_20260622_172419.sql b/db_backups/工时统计_设备工时_查询_before_add_assignee_20260622_172419.sql new file mode 100644 index 0000000..1a730a7 --- /dev/null +++ b/db_backups/工时统计_设备工时_查询_before_add_assignee_20260622_172419.sql @@ -0,0 +1,129 @@ + +CREATE PROCEDURE [dbo].[工时统计_设备工时_查询] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +AS +BEGIN + SET NOCOUNT ON; + + ;WITH 操作人汇总 AS ( + SELECT + 工位名称, + COUNT(*) AS 报工次数, + SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量, + CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时 + FROM View_生产工时视图 + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND 操作人 IS NOT NULL AND 操作人 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + and isNull(阶段标识,0) = -1 + GROUP BY 工位名称 + ), + 日期汇总 AS ( + SELECT + 工位名称, + CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期, + COUNT(*) AS 报工次数, + SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量, + CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时 + FROM View_生产工时视图 + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND 工位名称 IS NOT NULL AND 工位名称 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + and isNull(阶段标识,0) = -1 + GROUP BY 工位名称, CONVERT(VARCHAR(10), 开始时间, 120) + ), + 报工明细 AS ( + SELECT + 工位名称, + CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期, + 订单合同号 AS 合同号, + 订单号, + 产品编码, + 产品名称, + 工序名称, + CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量, + CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间, + CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间, + CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时 + FROM View_生产工时视图 + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND 操作人 IS NOT NULL AND 操作人 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + and isNull(阶段标识,0) = -1 + ) + SELECT + 1 AS [Level], + 工位名称 AS operator, + '' AS dateLabel, + CAST(报工次数 AS VARCHAR(20)) AS reportCount, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + '' AS contractNo, + '' AS orderNo, + '' AS productCode, + '' AS productName, + '' AS processName, + '' AS startTime, + '' AS endTime, + CAST(总工时小时 AS VARCHAR(20)) AS workHours + FROM 操作人汇总 + + UNION ALL + + SELECT + 2 AS [Level], + 工位名称 AS operator, + 工作日期 AS dateLabel, + CAST(报工次数 AS VARCHAR(20)) AS reportCount, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + '' AS contractNo, + '' AS orderNo, + '' AS productCode, + '' AS productName, + '' AS processName, + '' AS startTime, + '' AS endTime, + CAST(工时小时 AS VARCHAR(20)) AS workHours + FROM 日期汇总 + + UNION ALL + + SELECT + 3 AS [Level], + 工位名称 AS operator, + 工作日期 AS dateLabel, + '' AS reportCount, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + ISNULL(合同号, '') AS contractNo, + ISNULL(订单号, '') AS orderNo, + ISNULL(产品编码, '') AS productCode, + ISNULL(产品名称, '') AS productName, + ISNULL(工序名称, '') AS processName, + ISNULL(开始时间, '') AS startTime, + ISNULL(结束时间, '') AS endTime, + CAST(工时小时 AS VARCHAR(20)) AS workHours + FROM 报工明细 + + ORDER BY operator, dateLabel, [Level] +END + diff --git a/db_backups/工时统计_设备工时_查询_导出_before_add_assignee_20260622_172419.sql b/db_backups/工时统计_设备工时_查询_导出_before_add_assignee_20260622_172419.sql new file mode 100644 index 0000000..99c138d --- /dev/null +++ b/db_backups/工时统计_设备工时_查询_导出_before_add_assignee_20260622_172419.sql @@ -0,0 +1,50 @@ + +CREATE PROCEDURE [dbo].[工时统计_设备工时_查询_导出] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +AS +BEGIN + SET NOCOUNT ON; + + -- 导出文件名和类型 + SELECT '设备工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype + + -- 字段宽度 + SELECT 256*12 AS 操作人, 256*15 AS 工作日期, 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码, + 256*25 AS 产品名称, 256*15 AS 工序名称, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)' + + -- 是否计算列 + SELECT 0 AS 操作人, 0 AS 工作日期, 0 AS 合同号, 0 AS 订单号, 0 AS 产品编码, + 0 AS 产品名称, 0 AS 工序名称, 0 AS 报工数量, 0 AS 开始时间, 0 AS 结束时间, 0 AS '工时(h)' + + -- 导出数据:每行都填满完整信息 + SELECT + 工位名称, + CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期, + ISNULL(订单合同号, '') AS 合同号, + ISNULL(订单号, '') AS 订单号, + ISNULL(产品编码, '') AS 产品编码, + ISNULL(产品名称, '') AS 产品名称, + ISNULL(工序名称, '') AS 工序名称, + CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN CAST(操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量, + CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间, + CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间, + CAST(CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)' + FROM View_生产工时视图 + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 报工日期 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 报工日期 <= @结束日期) + AND 工位名称 IS NOT NULL AND 工位名称 != '' + AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%') + and isNull(阶段标识,0) = -1 + ORDER BY 工位名称, 开始时间 +END + diff --git a/db_backups/工时统计_项目工时_查询_before_add_assignee_20260622_172419.sql b/db_backups/工时统计_项目工时_查询_before_add_assignee_20260622_172419.sql new file mode 100644 index 0000000..f722360 --- /dev/null +++ b/db_backups/工时统计_项目工时_查询_before_add_assignee_20260622_172419.sql @@ -0,0 +1,90 @@ +CREATE PROCEDURE [dbo].[工时统计_项目工时_查询] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +AS +BEGIN + SET NOCOUNT ON; + + ;WITH 订单工时汇总 AS ( + SELECT + v.订单合同号 AS 合同号, + v.产品编码, + v.产品名称, + MAX(v.计划数量) AS 计划数量, + MAX(v.完成数量) AS 完成数量, + SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量, + MIN(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划开始, + MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成, + CAST(SUM(v.加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时 + FROM View_生产工时视图 v + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%') + GROUP BY v.订单合同号, v.产品编码, v.产品名称 + ), + 工序工时明细 AS ( + SELECT + v.订单合同号 AS 合同号, + v.产品编码, + v.工序名称, + v.操作人, + v.订单号, + SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量, + CAST(SUM(v.加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时, + MIN(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划开始, + MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成 + FROM View_生产工时视图 v + WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%') + GROUP BY v.订单合同号, v.产品编码, v.工序名称, v.操作人,v.订单号 + ) + SELECT + 1 AS [Level], + 合同号 AS contractNo, + 产品名称 AS materialDesc, + 产品编码 AS materialCode, + '' AS processName, + '' AS operator, + CASE WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' + + CASE WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty, + CAST(报工数量 AS VARCHAR(20)) AS reportQty, + ISNULL(计划开始, '') AS planStart, + ISNULL(计划完成, '') AS planEnd, + CAST(总工时小时 AS VARCHAR(20)) AS workHours, + '' AS 订单号 + FROM 订单工时汇总 + + UNION ALL + + SELECT + 2 AS [Level], + d.合同号 AS contractNo, + '' AS materialDesc, + d.产品编码 AS materialCode, + d.工序名称 AS processName, + d.操作人 AS operator, + '' AS qty, + CAST(d.报工数量 AS VARCHAR(20)) AS reportQty, + d.计划开始 AS planStart, + d.计划完成 AS planEnd, + CAST(d.工时小时 AS VARCHAR(20)) AS workHours, + d.订单号 AS 订单号 + FROM 工序工时明细 d + + ORDER BY contractNo, materialCode, [Level], processName +END + diff --git a/db_backups/工时统计_项目工时_查询_导出_before_add_assignee_20260622_172419.sql b/db_backups/工时统计_项目工时_查询_导出_before_add_assignee_20260622_172419.sql new file mode 100644 index 0000000..a57fb15 --- /dev/null +++ b/db_backups/工时统计_项目工时_查询_导出_before_add_assignee_20260622_172419.sql @@ -0,0 +1,48 @@ +CREATE PROCEDURE [dbo].[工时统计_项目工时_查询_导出] + @合同号 NVARCHAR(50) = NULL, + @操作人 NVARCHAR(50) = NULL, + @产品编码 NVARCHAR(100) = NULL, + @工序名称 NVARCHAR(50) = NULL, + @订单号 NVARCHAR(50) = NULL, + @开始日期 DATE = NULL, + @结束日期 DATE = NULL +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*30 AS 产品名称, 256*40 AS 产品编码, 256*15 AS 工序名称, 256*12 AS 操作人, + 256*12 AS 计划数量, 256*12 AS 完成数量, 256*10 AS 报工数量, 256*15 AS 计划开始, 256*15 AS 计划完成, 256*12 AS '工时(h)' + + -- 是否计算列 + 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 '工时(h)' + + -- 导出数据:每行都填满完整信息 + SELECT + v.订单合同号 AS 合同号, + v.订单号, + v.产品名称, + v.产品编码, + v.工序名称, + v.操作人, + CASE WHEN v.计划数量 IS NULL THEN '' WHEN v.计划数量 = FLOOR(v.计划数量) THEN CAST(CAST(v.计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(v.计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 计划数量, + CASE WHEN v.完成数量 IS NULL THEN '' WHEN v.完成数量 = FLOOR(v.完成数量) THEN CAST(CAST(v.完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(v.完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 完成数量, + CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN CAST(v.操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量, + CONVERT(VARCHAR(10), v.报工日期, 120) AS 计划开始, + CONVERT(VARCHAR(10), v.报工日期, 120) AS 计划完成, + CAST(CAST(v.加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)' + FROM View_生产工时视图 v + WHERE(@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期) + AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期) + AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%') + AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%') + AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%') + AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%') + AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%') + ORDER BY v.订单合同号, v.产品编码, v.工序名称, v.操作人,v.订单号 +END + diff --git a/db_backups/生产管理_生产计划跟踪_before_add_standard_hours_20260622_173740.sql b/db_backups/生产管理_生产计划跟踪_before_add_standard_hours_20260622_173740.sql new file mode 100644 index 0000000..7974e70 --- /dev/null +++ b/db_backups/生产管理_生产计划跟踪_before_add_standard_hours_20260622_173740.sql @@ -0,0 +1,196 @@ + +CREATE PROCEDURE [dbo].[生产管理_生产计划跟踪] + @订单号 int = 0, + @物料类型 nvarchar(50) = '', --自制件、装配件 + @合同号 nvarchar(50) = '', + @产品编码 nvarchar(50) = '', + @产品名称 nvarchar(50) = '', + @工序名称 nvarchar(50) = '', + @要求完工日期1 nvarchar(50) = '', + @要求完工日期2 nvarchar(50) = '', + @计划开始1 nvarchar(50) = '', + @计划开始2 nvarchar(50) = '', + @计划完成1 nvarchar(50) = '', + @计划完成2 nvarchar(50) = '', + @排产状态 nvarchar(50) = '全部', --全部,已完成、未完成 + @指派对象 nvarchar(50) = '全部', + @自制件属性 nvarchar(50) = '全部', + @计划号 nvarchar(50) = '', + @加急状态 nvarchar(50) = '', + @单据状态 nvarchar(50) = '' +AS +BEGIN + DECLARE @selectStr NVARCHAR(MAX) + DECLARE @selectStrWhere NVARCHAR(4000) = ' WHERE [物料类型] = ''pit_Resource'' ' + + SET @selectStr = N' + SELECT top 500 + v.计划号, + 加急总数, + 拣配状态, + 自制件属性, + 入库数量, + 外协分组, + case + when isnull(任务状态,0)=4 then ''已完成'' + when isnull(任务状态,0)=2 then ''已开工'' + when isnull(任务状态,0)=0 then ''待执行'' + when isnull(任务状态,0)=1 then ''可执行'' + else '''' + end as [任务状态], + case + when isnull(加工状态,0)=2 then ''辅助开始'' + when isnull(加工状态,0)=3 then ''辅助结束'' + when isnull(加工状态,0)=4 then ''开始加工'' + when isnull(加工状态,0)=5 then ''暂停'' + when isnull(加工状态,0)=6 then ''报工'' + else '''' + end as [加工状态], + [计划数量订单], + ISNULL(开工时间, 0) AS 开工时间, + ISNULL(进度, 0) AS 进度, + v.[TaskAID], + [合同号], + v.[订单编号] AS 订单号, + [订单行号], + [订单拆分内码] AS 拆分内码, + [物料编号] AS 产品编码, + [物料描述] AS 产品名称, + TRIM(''.'' FROM TRIM(''0'' FROM CAST([计划数量] AS VARCHAR(30)))) AS 计划数量, + [计划完成] AS 要求完工日期, + [工序名称], + 完成数量, + 收料数量, + CASE + WHEN [加急状态] = 1 THEN ''加急'' + ELSE '''' + END AS 加急状态, + 加急数量, + 性质, + ISNULL(总工时, 0) AS 总工时, + [占用情况], + [排产状态], + [工序计划数量], + 指派对象编号, + 指派对象, + TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量, + 计划开始时间, + 计划完成时间, + 最晚开始时间, + [派工状态], + [外协通知], + [优先级], + [未完成说明], + [派工特殊说明], + [最后编辑人], + [最后编辑时间], + [二次派工], + CASE + WHEN zj_终检.计划号 IS NOT NULL THEN ''是'' + ELSE ''否'' + END AS 终检, + -- 新增收检相关字段 + ISNULL(zj_收检.合格数合计, 0) AS 收检合格数, + ISNULL(zj_收检.不合格数合计, 0) AS 收检不合格数, + ISNULL(zj_收检.合格数合计, 0) + ISNULL(zj_收检.不合格数合计, 0) AS 收检总数, + ISNULL(jl.开始时间, 0) AS 开始时间, + ISNULL(jl.结束时间, 0) AS 结束时间, + ISNULL(jl.外协结束时间, 0) AS 外协结束时间, + STUFF(( + SELECT '','' + d2.工序名称 + FROM [dbo].[View_生产订单_MES] d2 + WHERE d2.订单编号 = v.订单编号 order by d2.订单行号 + FOR XML PATH('''') + ), 1, 1, '''') AS 工艺路线 + FROM [dbo].[View_生产订单全部(包括已关闭)] v + -- 终检判断 + LEFT JOIN ( + SELECT DISTINCT 计划号 + FROM dbo.YL_质量检验_质检记录 + WHERE 质检类型 = ''终检'' + ) zj_终检 ON v.[订单编号] = zj_终检.计划号 + -- 收检数量统计 + LEFT JOIN ( + SELECT + TaskAID, + SUM(ISNULL(合格数, 0)) AS 合格数合计, + SUM(ISNULL(不合格数, 0)) AS 不合格数合计 + FROM dbo.YL_质量检验_质检记录 + WHERE 质检类型 = ''收检'' + GROUP BY TaskAID + ) zj_收检 ON v.[TaskAID] = zj_收检.TaskAID + LEFT JOIN ( + SELECT + TaskAID, + min(ISNULL(开始时间, 0)) AS 开始时间, + MAX(CASE WHEN 操作类别 = ''报工'' THEN ISNULL(开始时间, 0) ELSE NULL END) AS 外协结束时间, + MAX(CASE WHEN 操作类别 = ''报工'' THEN ISNULL(结束时间, 0) ELSE NULL END) AS 结束时间 + FROM [dbo].[YL_加工中心_操作记录表] + GROUP BY TaskAID + ) jl ON v.[TaskAID] = jl.TaskAID' + + -- 添加筛选条件 + IF (@订单号 > 0) + SET @selectStrWhere = @selectStrWhere + ' AND [订单编号] = ' + CONVERT(VARCHAR(10), @订单号) + IF (@计划号 > 0) + SET @selectStrWhere = @selectStrWhere + ' AND v.[计划号] = '''+@计划号+'''' + IF (@合同号 <> '') + SET @selectStrWhere = @selectStrWhere + ' AND [合同号] LIKE ''%' + @合同号 + '%''' + + IF (@产品编码 <> '') + SET @selectStrWhere = @selectStrWhere + ' AND [物料编号] LIKE ''%' + @产品编码 + '%''' + + IF (@产品名称 <> '') + SET @selectStrWhere = @selectStrWhere + ' AND [物料描述] LIKE ''%' + @产品名称 + '%''' + + IF (@工序名称 <> '') + SET @selectStrWhere = @selectStrWhere + ' AND [工序名称] = ''' + @工序名称 + '''' + + IF (@要求完工日期1 <> '') + SET @selectStrWhere = @selectStrWhere + ' AND [计划完成] >= ''' + @要求完工日期1 + '''' + + IF (@要求完工日期2 <> '') + SET @selectStrWhere = @selectStrWhere + ' AND [计划完成] <= ''' + @要求完工日期2 + '''' + + IF (@计划开始1 <> '') + SET @selectStrWhere = @selectStrWhere + ' AND [计划开始时间] >= ''' + @计划开始1 + '''' + + IF (@计划开始2 <> '') + SET @selectStrWhere = @selectStrWhere + ' AND [计划开始时间] <= ''' + @计划开始2 + '''' + + IF (@计划完成1 <> '') + SET @selectStrWhere = @selectStrWhere + ' AND [计划完成时间] >= ''' + @计划完成1 + '''' + + IF (@计划完成2 <> '') + SET @selectStrWhere = @selectStrWhere + ' AND [计划完成时间] <= ''' + @计划完成2 + '''' + + IF (@排产状态 = '未完成') + SET @selectStrWhere = @selectStrWhere + ' AND ISNULL([排产状态], 0) = 0' + ELSE IF (@排产状态 = '已完成') + SET @selectStrWhere = @selectStrWhere + ' AND [排产状态] = 1' + IF (@自制件属性 = '机加') + SET @selectStrWhere = @selectStrWhere + ' AND [自制件属性] = ''机加件''' + ELSE IF (@自制件属性 = '装配') + SET @selectStrWhere = @selectStrWhere + ' AND [自制件属性] LIKE ''%装配''' + + IF (@加急状态 = '加急') + SET @selectStrWhere = @selectStrWhere + ' AND [加急状态] = 1' + IF (@单据状态 = '正常') + SET @selectStrWhere = @selectStrWhere + ' AND [单据状态] is null' + ELSE IF (@单据状态 = '关闭') + SET @selectStrWhere = @selectStrWhere + ' AND [单据状态] is not null' + IF (@指派对象 <> '全部') + SET @selectStrWhere = @selectStrWhere + ' AND [指派对象] IN (SELECT value FROM STRING_SPLIT(''' + @指派对象 + ''', '',''))' + + -- 添加排序 + SET @selectStrWhere = @selectStrWhere + ' ORDER BY [计划完成] ASC, [订单编号] ASC' + + -- 合并SQL + SET @selectStr = @selectStr + @selectStrWhere + + -- 打印SQL(调试用) + PRINT @selectStr + + -- 执行查询 + EXEC sp_executesql @selectStr +END diff --git a/db_backups/质量管理_质检明细_查询_before_fieldkey_20260625.sql b/db_backups/质量管理_质检明细_查询_before_fieldkey_20260625.sql new file mode 100644 index 0000000..2e50973 --- /dev/null +++ b/db_backups/质量管理_质检明细_查询_before_fieldkey_20260625.sql @@ -0,0 +1,94 @@ + +-- 质量管理_质检明细_查询 +CREATE PROCEDURE [dbo].[质量管理_质检明细_查询] + @质检类型 nvarchar(4000) = '10', -- 修改为字符串类型,因为传入的是字符串 + @开始日期 datetime = NULL, + @结束日期 datetime = NULL, + @订单号 nvarchar(4000) = '0', -- 修改为字符串类型,避免类型转换问题 + @合同号 nvarchar(4000) = '0', + @零件编码 nvarchar(4000) = '0', + @零件名称 nvarchar(4000) = '0', + @PageCurrent int = 1, -- 要显示的页码 + @PageSize int = 20, -- 每页的大小(记录数) + @PageCount int OUTPUT, -- 总页数 + @ItemCount int OUTPUT -- 数据总数 +AS +BEGIN + SET NOCOUNT ON; + + DECLARE @tbname sysname = ' [dbo].[View_质检明细] ' -- 要分页显示的表名 + DECLARE @fieldkey sysname = ' ' -- 用于定位记录的主键(惟一键)字段 + DECLARE @where nvarchar(4000) -- 查询条件 + DECLARE @fieldshow nvarchar(1000) -- 要显示的字段列表 + DECLARE @fieldOrder nvarchar(1000) = ' 检测时间 DESC ' -- 排序字段 + + -- 构建查询条件(使用参数化方式,避免SQL注入) + SET @where = ' (1=1) ' + + -- 质检类型过滤 + IF @质检类型 = '10' -- 全部 + SET @where = @where + ' AND (1=1) ' + ELSE IF @质检类型 = '0' + SET @where = @where + ' AND 质检类型 = ''收检'' ' + ELSE IF @质检类型 = '1' + SET @where = @where + ' AND 质检类型 = ''终检'' ' + ELSE IF @质检类型 = '2' + SET @where = @where + ' AND 质检类型 = ''来料检验'' ' + ELSE IF @质检类型 = '3' + SET @where = @where + ' AND 质检类型 = ''退库检验'' ' + + -- 订单号过滤条件(修正:使用LIKE时加引号) + IF @订单号 <> '0' + SET @where = @where + ' AND 计划号 LIKE ''%' + @订单号 + '%'' ' + + -- 合同号过滤条件 + --IF @合同号 <> '0' + -- SET @where = @where + ' AND 内部合同号 LIKE ''%' + @合同号 + '%'' ' + + -- 零件编码过滤条件 + IF @零件编码 <> '0' + SET @where = @where + ' AND 零件编码 LIKE ''%' + @零件编码 + '%'' ' + + -- 零件名称过滤条件 + IF @零件名称 <> '0' + SET @where = @where + ' AND 零件名称 LIKE ''%' + @零件名称 + '%'' ' + + -- 日期范围过滤(如果提供了日期参数) + IF @开始日期 IS NOT NULL + SET @where = @where + ' AND 检测时间 >= ''' + CONVERT(nvarchar(30), @开始日期, 120) + ''' ' + + IF @结束日期 IS NOT NULL + SET @where = @where + ' AND 检测时间 <= ''' + CONVERT(nvarchar(30), @结束日期, 120) + ''' ' + + SET @fieldshow = ' + [QT_AID] + ,[质检类型] + ,[零件编码] + ,[零件名称] + ,[内部合同号] + ,[计划号] + ,[工序名称] + ,[检验数量] + ,[合格数] + ,[不合格数] + ,[检测人] + ,[检测时间] + ,[检测说明] + ,[工位名称] + ,[订单类型]' + + -- 调试用(可以注释掉) + PRINT @where + + -- 执行分页存储过程 + EXEC [dbo].[sp_xt_pagesplit] + @tbname, + @fieldkey, + @where, + @fieldshow, + @fieldOrder, + @PageCurrent, + @PageSize, + @PageCount OUTPUT, + @ItemCount OUTPUT +END diff --git a/MES_功能列表_页面_存储过程映射.md b/doc_old/MES_功能列表_页面_存储过程映射.md similarity index 100% rename from MES_功能列表_页面_存储过程映射.md rename to doc_old/MES_功能列表_页面_存储过程映射.md diff --git a/MES_技术分析报告.md b/doc_old/MES_技术分析报告.md similarity index 100% rename from MES_技术分析报告.md rename to doc_old/MES_技术分析报告.md diff --git a/MES_用户操作手册.md b/doc_old/MES_用户操作手册.md similarity index 100% rename from MES_用户操作手册.md rename to doc_old/MES_用户操作手册.md diff --git a/MES_程序使用说明书.md b/doc_old/MES_程序使用说明书.md similarity index 100% rename from MES_程序使用说明书.md rename to doc_old/MES_程序使用说明书.md diff --git a/doc_old/MacroinfManage_MES.code-workspace b/doc_old/MacroinfManage_MES.code-workspace new file mode 100644 index 0000000..2a0ed79 --- /dev/null +++ b/doc_old/MacroinfManage_MES.code-workspace @@ -0,0 +1,7 @@ +{ + "folders": [ + { + "path": ".." + } + ] +} \ No newline at end of file diff --git a/doc_old/fix_机加设备生产运营看板_加急任务查询.sql b/doc_old/fix_机加设备生产运营看板_加急任务查询.sql new file mode 100644 index 0000000..55ac683 --- /dev/null +++ b/doc_old/fix_机加设备生产运营看板_加急任务查询.sql @@ -0,0 +1,69 @@ +USE [YL_MESDB] +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +ALTER PROCEDURE [dbo].[机加设备生产运营看板_加急任务查询] +AS +BEGIN + SET NOCOUNT ON; + + SELECT + [订单编号] + ,[合同号] + ,[订单类型] + ,[订单状态] + ,[物料编号] + ,[物料描述] + ,[计划数量] + ,[计量单位] + ,[下达日期] + ,[计划开始时间] + ,[计划完成] + ,[自制件属性] + ,加急总数 as 加急数量 + ,工序名称 + ,指派对象 + ,外协分组 + ,REPLACE(STUFF(( + SELECT + ' -> ' + ISNULL(d2.工序名称, '') + '(' + ISNULL(d2.指派对象, '') + ')' + + '|' + ISNULL(CAST(d2.加工状态 AS VARCHAR(10)), '0') + + '|' + ISNULL(CAST(CAST(ISNULL(( + SELECT SUM(合格数) + FROM [dbo].[YL_质量检验_质检记录] + WHERE TaskAID = d2.TaskAID + ), 0) AS INT) AS VARCHAR(10)), '0') + + '|' + ISNULL(CONVERT(VARCHAR(2), MONTH(d2.计划开始时间)) + '月' + CONVERT(VARCHAR(2), DAY(d2.计划开始时间)) + '日', '') + + '|' + ISNULL(CAST(d2.订单行号 AS VARCHAR(10)), '') + + '|' + ISNULL(CAST(d2.外协分组 AS NVARCHAR(50)), '') + + '|' + ISNULL(CAST(CAST(ISNULL(( + SELECT SUM(操作数值) + FROM [dbo].[YL_加工中心_操作记录表] + WHERE TaskAID = d2.TaskAID + AND 操作类别 = '收料' + ), 0) AS INT) AS VARCHAR(10)), '0') + + '|' + ISNULL(CAST(CAST(ISNULL(( + SELECT SUM(不合格数) + FROM [dbo].[YL_质量检验_质检记录] + WHERE TaskAID = d2.TaskAID + ), 0) AS INT) AS VARCHAR(10)), '0') + FROM [dbo].[View_生产订单_MES] d2 + WHERE d2.订单编号 = v.订单编号 + ORDER BY d2.订单行号 + FOR XML PATH('') + ), 1, 6, ''), '>', '>') AS 工序进度详情 + ,(SELECT COUNT(DISTINCT 订单编号) FROM [YL_MESDB].[dbo].[View_生产订单_MES] WHERE 加急总数 > 0 AND 指派对象 NOT LIKE '%装配%') AS [加急订单总数] +FROM [YL_MESDB].[dbo].[View_生产订单_MES] v +WHERE 加急总数 > 0 +AND 指派对象 NOT LIKE '%装配%' +AND 订单行号 = ( + SELECT MIN(订单行号) + FROM [YL_MESDB].[dbo].[View_生产订单_MES] + WHERE 订单编号 = v.订单编号 +) + +END diff --git a/fix_生产管理_外协报表_查询.sql b/doc_old/fix_生产管理_外协报表_查询.sql similarity index 100% rename from fix_生产管理_外协报表_查询.sql rename to doc_old/fix_生产管理_外协报表_查询.sql diff --git a/fix_质量管理_入库质检任务_查询.sql b/doc_old/fix_质量管理_入库质检任务_查询.sql similarity index 100% rename from fix_质量管理_入库质检任务_查询.sql rename to doc_old/fix_质量管理_入库质检任务_查询.sql diff --git a/doc_old/index.html b/doc_old/index.html new file mode 100644 index 0000000..e726634 --- /dev/null +++ b/doc_old/index.html @@ -0,0 +1,16 @@ + + + + + + <%= htmlWebpackPlugin.options.title %> + + + + + +
+ + + + diff --git a/doc_old/sql_异常提醒_装配及时送检_查询.sql b/doc_old/sql_异常提醒_装配及时送检_查询.sql new file mode 100644 index 0000000..0723a24 --- /dev/null +++ b/doc_old/sql_异常提醒_装配及时送检_查询.sql @@ -0,0 +1,81 @@ +USE [YL_MESDB] +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +CREATE OR ALTER PROCEDURE [dbo].[异常提醒_装配及时送检_查询] + @订单号 int = 0, + @合同号 nvarchar(50) = N'', + @产品编码 nvarchar(50) = N'', + @产品名称 nvarchar(50) = N'', + @工序名称 nvarchar(50) = N'', + @辅助配件 nvarchar(50) = N'不含' +AS +BEGIN + SET NOCOUNT ON; + + ;WITH 装配任务 AS ( + SELECT + CASE WHEN v.[物料描述] LIKE N'%系统%' THEN N'系统类' ELSE N'阀类' END AS 任务类型, + v.[合同号], + v.[订单编号] AS 订单号, + v.[物料编号] AS 产品编码, + v.[物料描述] AS 产品名称, + TRIM('.' FROM TRIM('0' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数量, + v.[工序名称], + v.[指派对象], + v.[计划开始时间], + v.[计划完成时间], + v.[齐套时间], + v.[钣金预达时间], + CASE + WHEN v.[物料描述] LIKE N'%系统%' + THEN ISNULL(v.[预计送检日期], DATEADD(DAY, 3, v.[钣金预达时间])) + ELSE ISNULL(v.[预计送检日期], DATEADD(DAY, 3, v.[齐套时间])) + END AS 预计送检日期, + CASE WHEN ISNULL(v.[加急状态], 0) = 1 THEN N'加急' ELSE N'' END AS 加急状态 + FROM [dbo].[View_生产订单_MES] v + WHERE v.[物料类型] = 'pit_Resource' + AND v.[自制件属性] LIKE N'%装配%' + AND ISNULL(v.[任务状态], 0) < 4 + AND (@订单号 <= 0 OR v.[订单编号] = @订单号) + AND (@合同号 = N'' OR v.[合同号] LIKE N'%' + @合同号 + N'%') + AND (@产品编码 = N'' OR v.[物料编号] LIKE N'%' + @产品编码 + N'%') + AND (@产品名称 = N'' OR v.[物料描述] LIKE N'%' + @产品名称 + N'%') + AND (@工序名称 = N'' OR v.[工序名称] = @工序名称) + AND ( + @辅助配件 <> N'不含' + OR ( + v.[物料描述] NOT LIKE N'%软管总成%' + AND v.[物料描述] NOT LIKE N'%发货部件%' + ) + ) + AND v.[不装配] <> N'否' + ) + SELECT + 任务类型, + 合同号, + 订单号, + 产品编码, + 产品名称, + 计划数量, + 工序名称, + 指派对象, + 计划开始时间, + 计划完成时间, + 齐套时间, + 钣金预达时间, + 预计送检日期, + 加急状态 + FROM 装配任务 + WHERE 预计送检日期 IS NOT NULL + AND CONVERT(date, 预计送检日期) <= CONVERT(date, GETDATE()) + ORDER BY + CONVERT(date, 预计送检日期), + CASE WHEN 加急状态 = N'加急' THEN 0 ELSE 1 END, + 订单号; +END +GO diff --git a/doc_old/~$开发计划与新增需求分析记录_2026-05-27.docx b/doc_old/~$开发计划与新增需求分析记录_2026-05-27.docx new file mode 100644 index 0000000000000000000000000000000000000000..68d0529c8092e5d11722199d9efb2214bd2c92ea GIT binary patch literal 162 vcmdn-~}XvKI$u literal 0 HcmV?d00001 diff --git a/doc_old/今后开发计划_2026-05-27.md b/doc_old/今后开发计划_2026-05-27.md new file mode 100644 index 0000000..8a5bdc5 --- /dev/null +++ b/doc_old/今后开发计划_2026-05-27.md @@ -0,0 +1,77 @@ +# 今后开发计划与新增需求分析记录 + +生成日期:2026-05-27 +项目:MES_Manage_View_V20 + +## 一、排期口径 + +- 按“最终调整”数字从小到大排序。 +- 从 2026-05-28 开始排期。 +- 按工作日递推,跳过周六、周日。 +- 跳过端午节、中秋节、国庆节法定放假日期。 +- 调休日按工作日处理。 +- 暂按单开发线串行排期。 + +节假日口径: + +- 端午节:2026-06-19 至 2026-06-21。 +- 中秋节:2026-09-25 至 2026-09-27。 +- 国庆节:2026-10-01 至 2026-10-07。 +- 调休上班日:2026-09-20、2026-10-10。 + +## 二、开发计划排期 + +| 顺序 | 需求 | 预估 | 开始 | 结束 | 备注 | +|---:|---|---:|---|---|---| +| 1 | 及时开工报表 | 1天 | 5.28 | 5.29 | 增加正选/反选查询 | +| 2 | 机加件排产-表单 | 4天 | 5.29 | 6.04 | 日期筛选优化 + 历史工时查询;SAP新增字段不算MES开发 | +| 3 | 装配已排产需求 | 12天 | 6.04 | 6.23 | 大需求,建议分阶段交付 | +| 4 | 生产日报-送检(机加/装配) | 3天 | 6.23 | 6.26 | 建议统一报表,部门做筛选维度 | +| 5 | 及时齐套跟踪结果报表 | 5天 | 6.26 | 7.03 | 依赖SAP缺件明细实时接口 | +| 6 | 生产计划跟踪 | 3天 | 7.03 | 7.08 | 工序状态、颜色、标准工时、订单状态 | +| 7 | 外协任务检验 | 3天 | 7.08 | 7.13 | 增加指派对象、供应商、SAP采购收货单号 | +| 8 | 异常管控 | 5天 | 7.13 | 7.20 | 报工页面直接报异常,多审批人可见一人处理 | +| 9 | 机加班次产量表 | 3天 | 7.20 | 7.23 | 新增报表 | +| 10 | 发货通知列表 | 1天 | 7.23 | 7.24 | SAP数据已提供,可新增查询报表 | +| 11 | 质检任务早知道 | 1天 | 7.24 | 7.27 | 依赖“装配已排产需求”的装配完成时间 | +| 12 | 生产工艺 | 2天 | 7.27 | 7.29 | 无生产工艺时自动带出标准工艺 | +| 13 | 工时报表 + 备注类小改 | 2天 | 7.29 | 7.31 | 指派对象、机加领料备注、机加/装配退库备注、保存提示等合并处理 | +| 14 | 生产订单关闭 | 4天 | 7.31 | 8.06 | 批量更新SAP订单状态,风险较高 | +| 15 | 及时检验报表 | 4天 | 8.06 | 8.12 | 报工超过2天未检验 | +| 16 | 工序流转卡 | 1天 | 8.12 | 8.13 | 增加打印原料编码 | +| 17 | 一楼质检大屏幕 | 4天 | 8.13 | 8.19 | 及时率、关键工序 | +| 18 | 机加现场大屏幕 | 3天 | 8.19 | 8.24 | 缺勤、关键工序 | +| 19 | 装配现场大屏幕 | 4天 | 8.24 | 8.28 | 缺勤、及时送检 | +| 20 | 编程任务清单 | 4天 | 8.28 | 9.03 | 按装配类似逻辑做编程报工 | +| 21 | 设备档案管理 | 2天 | 9.03 | 9.07 | 需先确认字段归属 | +| 22 | 设备数据采集 | 8天 | 9.07 | 9.17 | 采集接口、落库、状态汇总 | +| 23 | 设备指标/OEE | 6天 | 9.17 | 9.24 | 依赖设备采集和标准工时口径 | +| 24 | 工时查询-设备采集联动 | 2天 | 9.24 | 9.29 | 程序工时字段对接采集数据 | +| 25 | 手续确认报表 | 3天 | 9.29 | 10.09 | 装配/电气齐套列表 + 手续确认 | +| 26 | 产品合格率(工位) | 3天 | 10.09 | 10.13 | 需确认良品/总产量口径 | +| 27 | 让步接收记录 | 2天 | 10.13 | 10.15 | 新增查询页面 | +| 28 | 设计任务报工模块 | 6天 | 10.15 | 10.23 | MES自建设计任务、设计工时 | +| 29 | 工时异常报表 | 2天 | 10.23 | 10.27 | 依赖标准工时和实际单件工时 | +| 30 | 正在加工状态 | 1天 | 10.27 | 10.28 | 机加正在进行中状态 | + +## 三、暂不直接排期 / 需等前置条件 + +| 需求 | 原因 | +|---|---| +| 及时拣配(机加)MES | 等SAP数据、条码规则、状态写回规则 | +| 及时拣配(装配)MES | 等SAP数据、条码规则、状态写回规则 | +| 及时送检报表 | 需确认发料齐套时间/SAP字段是否稳定;若SAP数据已到,可插入0.5天 | +| 工艺内容修改 | 已开工任务怎么处理未定 | +| 标牌打印操作 | 需求未确定 | +| 首检、巡检 | 需求内容为空,无法估时 | +| 外协采购订单收检结果 | 需求内容为空,无法估时 | +| 不合格品单据打印 | 需求内容为空,无法估时 | + +## 四、排期结论 + +按以上单线工作日计划,已明确可做事项预计到 2026-10-28 完成。 + +实际执行建议先做 5.28 到 6.23 的前三项,因为它们优先级最高,且“装配已排产需求”会影响后面的质检早知道、日计划、及时送检等需求。 + +## 五、新增需求分析与开发记录原文 + diff --git a/doc_old/今后开发计划与新增需求分析记录_2026-05-27.docx b/doc_old/今后开发计划与新增需求分析记录_2026-05-27.docx new file mode 100644 index 0000000000000000000000000000000000000000..10399e1d6293fc0eb97b4ac97c3cd04d96dd7db8 GIT binary patch literal 54727 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 X_H*Dw$Ll*jtf>IQ`1yVuIezzV#0e)> literal 0 HcmV?d00001 diff --git a/doc_old/今日工作汇报_2026-05-23.txt b/doc_old/今日工作汇报_2026-05-23.txt new file mode 100644 index 0000000..274d21a --- /dev/null +++ b/doc_old/今日工作汇报_2026-05-23.txt @@ -0,0 +1,137 @@ +今日工作汇报 + +日期:2026年5月23日 + +一、今日已处理问题 + +1. 修复采购收货检备注问题 +已处理采购收货检验相关备注字段异常,保证备注信息能够正常记录、查询和展示。 + +2. 查询序检因已入库导致质检失败的原因 +已排查序检过程中因生产订单或物料已入库导致质检失败的问题,明确该类失败与当前入库状态校验逻辑有关,后续如需优化,需要结合入库状态、质检状态和业务允许范围进一步确认处理规则。 + +3. 修改生产任务看板未按期齐套任务数据 +已调整生产任务看板中“未按期齐套任务”相关数据逻辑,修正看板展示数据与实际业务状态不一致的问题。 + +二、今日需求分析记录 + +1. 工艺内容修改 +已分析该需求。由于涉及已开工任务,当前结论是不允许直接修改。后续如要支持,需要设计工艺版本、任务快照和已开工任务处理规则,目前暂不开发。 + +2. 机加件排产-表单 +已分析计划开始时间、计划完成时间筛选逻辑,后续改为按单日期查询。 +同时分析新增历史工时查询:在机加件已排产页面增加总工时字段,点击后弹窗查看明细,按设备、日期分组显示生产任务和工时合计,查询方式参考工时查询页面。 + +3. 工序流转卡 +已确认打印内容需要增加原料编码,开发周期约0.2天。 + +4. 生产计划跟踪 +已分析当前序展示逻辑。后续需要在当前序中显示完整工艺路线,并根据任务状态判断哪道序正在加工、哪些序等待加工。 +进度显示规则示例:当前工序加工中显示“打磨中”,当前工序完成后显示“打磨毕待喷漆”。 +括号内容为指派对象,外协工序括号中也显示指派对象。 +同时需要增加标准工时和订单状态字段。 + +5. 设计任务报工模块 +已分析该模块为MES自建任务,不依赖生产订单,不上传SAP。 +设计工时单独记录,后续用于报表和工时统计。 +质量、装配、机加工时分别来自各自业务模块,后续可按系统角色权限区分。 + +6. 工时报表 +已确认作业者工时新增指派对象字段,开发周期约0.1天。 +作业者工时一对多计算问题当前暂不修改,因为当前版本已不再按旧逻辑计算,需要后续重新确认规则。 + +7. 工时查询 +程序工时字段需要结合设备数据采集计算,后续可能新增设备信息。目前等待设备采集数据,不进入开发。 + +8. 生产领料(补充)-机加 +已确认领料单需要新增备注字段,开发周期约0.2天。 + +9. 生产退库-机加 +已确认按照装配退库方式增加备注字段,开发周期约0.2天。 + +10. 生产退库-装配 +已确认需要增加备注字段,开发周期约0.1天。 + +11. 机加班次产量表 +已分析为新增报表,按设备分组,设备下按日期、班次展示每天每班次干了哪些任务,支持时间和班次筛选。 + +12. 外协任务报表(采购) +已确认增加采购到货期说明字段,开发周期约0.1天。 + +13. 外协任务检验 / 序检 +已分析需要记录指派对象、供应商、SAP采购收货单号。 +当前表中没有记录设备,只记录工序,所以后续如果要做设备合格率暂时无法实现;增加供应商后,可以支持外协供应商合格率相关统计。 + +14. 手续确认报表 +已分析为新增页面。装配、电气发料齐套时间列表合并显示,展示内容参考装配中心。 +新增“手续确认”字段,点击选择已完成后消失。 +消失条件包括:手续确认已完成、生产订单取消/关闭、整单已入库。 + +15. 及时检验报表 +已分析为新增报表。统计生产报工完成后超过2天未检验的任务。 +数据依据为[YL_加工中心_操作记录表],条件包括操作类别为报工、操作数值大于0,并以结束时间作为起算时间。 + +16. 及时齐套跟踪结果报表 +已分析为新增报表。缺件明细为实时数据,来源SAP,通过生产订单号查询加急件明细。 +缺料物料的生产订单号需要绑定主生产订单号,支持多个子订单包含关系。 +页面需要支持展开查看缺件明细,并显示当前进度、排序、预计完成时间、预计可执行时间等信息。 + +17. 及时送检报表 +已确认为新需求,基于发料齐套时间,SAP数据已到,预计开发周期约0.5天。 + +18. 生产日报-送检(机加 / 装配) +已分析后续可能根据多个部门拆分多个报表,也可以先按部门筛选方式设计,避免重复开发。 + +19. 编程任务清单 +已分析本质为编程报工,类似装配中心的任务列表算法。 +后续需要按设备展示任务清单,并支持编程开始、结束、工时统计等功能。 + +20. 标牌打印操作 +当前需求未确定,暂不排开发周期。 + +21. 发货通知列表 +SAP已提供数据,大屏已显示,后续需要新增报表页面,预计开发周期约0.5天。 + +22. 生产订单关闭 +已分析需要新增批量更新SAP订单状态功能。 +后续开发时需要支持批量选择、调用SAP、记录成功失败结果,并防止重复关闭。 + +23. 制定标准工艺 +已确认点击保存时增加提示信息,开发周期约0.1天。 + +24. 生产工艺 +已分析编辑时如果没有生产工艺,需要自动带出标准工艺。 +带出内容作为编辑草稿,不应直接覆盖保存,避免误改生产工艺。 + +25. 异常管控 +已分析报工页面需要支持选择任务后直接报异常,不再进入异常页面后重新选择任务。 +审批人改为多选,一人处理即可,其他被选审批人也能看到任务。 +审批人来源不固定,可能来自部门、角色、组织层级或任意人员,因此都需要支持。 + +26. 及时开工报表 +已分析当前是指派对象反选查询,客户还需要正选查询页面。 +后续需要支持指派对象正选和反选两种查询方式。 + +27. 让步接收记录 +已分析为新增查询页面。数据来源为质检记录中让步接收字段不为空的数据。 + +28. 装配已排产需求 +已完成重点分析。该需求需要新增装配已排产需求界面,增加系统/非系统筛选。 +高压单元为系统,阀类为非系统,判断方式暂按物料名称关键字。 +新增装配完成时间,来源为发料齐套时间加3天,可手动修改,字段落库到生产计划表。 +还需要显示SAP派工时间、合同交货期,增加钣金预达、钣金到达、泵、当前对应人员、当前对应内容、累计工时、预计总工时、合同工时汇总、合同进度参考、预计剩余工时、生产异常等字段。 +工时按装配、质量、设计分类,装配来自装配报工,质量来自质检报工,设计来自新设计任务报工模块。 +同步需要做日计划报表,按装配完成时间分组,支持导出和打印。 + +29. 质检任务早知道 +已分析为新增页面,基于装配已排产需求中的装配完成时间,去掉已完成任务后,按装配完成时间分组展示。 + +三、今日分析结论 + +今日除已处理的三个问题外,主要完成了新增需求的逐项梳理,明确了哪些可以直接开发、哪些依赖SAP、哪些依赖设备采集、哪些需求暂不明确、哪些当前无法修改。 + +其中可直接进入开发的小项包括:工序流转卡原料编码、工时报表指派对象、领料/退库备注、外协采购到货期说明、发货通知列表、标准工艺保存提示等。 + +需要重点设计后再开发的需求包括:装配已排产需求、生产计划跟踪、及时齐套跟踪结果报表、设计任务报工、异常管控、手续确认报表。 + +依赖外部数据的需求包括:SAP派工时间、合同交货期、发料齐套时间、及时齐套缺件明细、设备数据采集工时。 diff --git a/doc_old/今日工作汇报_2026-05-25.md b/doc_old/今日工作汇报_2026-05-25.md new file mode 100644 index 0000000..b6105f1 --- /dev/null +++ b/doc_old/今日工作汇报_2026-05-25.md @@ -0,0 +1,151 @@ +# 元利 MES 项目 — 今日工作汇报 + +日期:2026-05-25 +项目:MES_Manage_View_V20 + +## 一、今日主要工作 + +### 1. 完成 `src/views` 页面与 SAP 交互分析整理 + +基于 `元利项目详细分析.md`,对主系统 `src/views` 中涉及 SAP 的页面调用进行了梳理,明确了 SAP 交互主要集中在以下业务链路: + +| 业务链路 | 涉及页面 | SAP 交互内容 | +|---|---|---| +| 机加/装配排产 | `SelfMakePlan`、`SelfMakePlando`、`SelfMakePlandone`、`InstallMakePlan`、`InstallMakePlanDo` | 回写 SAP 生产订单计划日期、派工信息、优先级、未完成说明 | +| 生产订单关闭 | `PlannOrderClose` | 更新 SAP 生产订单关闭状态 | +| 工序基础数据 | `ProcedureManagement` | 新增、查询、修改 SAP RouteStages | +| 工位资源维护 | `WorkstationManagement` | 新增、修改 SAP Resources | +| 外协业务 | `OutsourceMange`、`SaleOutsourceMange`、装配排产相关页面 | 创建 SAP 采购申请 | +| 工时校验/投料 | `WorkHoursCheck` | 查询 SAP 生产订单、更新工序资源、提交 InventoryGenExits | +| 质检/收货 | `processReceive`、`materialReturn`、`QualityCenter` | 查询 SAP 订单、创建采购收货单、生成库存任务 | + +分析结论: +- 当前系统不是单点 SAP 对接,而是计划、工艺、工位、生产、外协、质检、工时多个模块共同对接 SAP。 +- SAP 写操作失败会造成 MES 与 SAP 状态不一致,需要在后续开发中保留失败原因、同步状态和重试依据。 +- 生产订单关闭、工时校验、外协采购申请、采购收货是高风险操作,需要重点检查重复提交和半成功问题。 + +### 2. 生成元利项目详细流程图 + +已根据 `元利项目详细分析.md` 生成: + +- `元利项目详细流程图.md` + +内容包括: +- 系统总体架构流程 +- 登录、菜单、权限流程 +- 基础资料维护流程 +- 标准工艺/生产工艺流程 +- 机加排产与 SAP 回写流程 +- 装配排产与采购申请流程 +- 机加生产执行流程 +- 装配中心执行流程 +- 质检流程 +- 外协流程 +- 工时校验与 SAP 投料流程 +- 异常管控流程 +- 生产订单关闭与 SAP 状态同步流程 +- 看板数据汇总流程 +- 新增需求与维护入口判断流程 + +### 3. 生成新增需求界面原型设计 + +已根据 `新增需求分析与开发记录_2026-05-23.md` 生成: + +- `新增需求界面原型设计_2026-05-25.md` + +主要覆盖以下页面原型: +- 设计任务报工 +- 机加班次产量表 +- 手续确认报表 +- 及时检验报表 +- 及时齐套跟踪结果报表 +- 生产日报-送检 +- 编程任务清单/编程报工 +- 让步接收记录 +- 装配已排产需求 +- 质检任务早知道 +- 及时送检报表 +- 发货通知列表 +- 工时异常报表 + +同时补充了现有页面改造说明,包括机加已排产、生产计划跟踪、序检收检、生产订单关闭、生产工艺、异常管控、及时开工报表、工时报表、领料/退库/外协小字段等。 + +### 4. 生成元利项目详细用户使用说明书 + +已根据 `元利项目详细分析.md` 生成: + +- `元利项目详细用户使用说明书.md` + +内容覆盖: +- 登录与通用操作 +- 基础资料维护 +- 工艺与图纸管理 +- 计划排产管理 +- 生产执行管理 +- 外协业务 +- 质检管理 +- 工时与报表 +- 异常管控 +- 设备管理与采集 +- 看板使用 +- 销售与交付查询 +- 新增需求相关页面使用 +- 系统维护 +- 常见问题和名词解释 + +### 5. 修正新增需求分析口径 + +对前期新增需求分析进行了补充修正,重点明确不能只判断“是否新增页面”,还必须判断: + +1. 数据来源是什么。 +2. 字段在哪里维护。 +3. 是否已有业务页面承载。 +4. 是否需要新增维护页面。 +5. 是否影响历史任务、报表和看板。 + +已补充的关键结论: +- 缺勤人员不能从“没有报工”反推,必须有应到人员和实到人员来源。 +- 关键工序应在标准工艺和生产工艺中维护,任务下发时做快照。 +- 看板只读取缺勤、关键工序、OEE、及时率等指标,不作为主维护入口。 + +## 二、今日修改工作 + +### 1. 工时校验报工培训 + +今日进行了工时校验和报工相关培训,重点说明: +- 报工数据与工时校验之间的关系。 +- MES 工时与 SAP 工时提交的关系。 +- 工时校验页面中 SAP 订单、工序、资源、投料的核对方式。 +- SAP 提交失败时需要查看失败原因,避免重复提交。 + +### 2. 质检历史数据修复 + +已处理质检历史数据修复工作,重点围绕历史质检记录、任务状态和相关查询口径进行校正,减少历史数据对当前质检查询和报表统计的影响。 + +### 3. 修改生产订单关闭判断条件 + +已修改生产订单关闭相关判断条件,调整关闭前校验逻辑,避免不符合条件的订单被错误关闭,同时减少已完成、已入库、已取消等状态判断不一致带来的问题。 + +### 4. 修复休息日加班和法定加班计算 Bug + +已修复休息日加班和法定加班计算异常问题,调整加班类型对应的计算逻辑,避免休息日加班和法定加班工时统计错误。 + +## 三、今日产出文档 + +| 文档 | 说明 | +|---|---| +| `元利项目详细流程图.md` | 根据详细分析生成系统级和业务级流程图 | +| `新增需求界面原型设计_2026-05-25.md` | 根据新增需求生成界面原型和页面说明 | +| `元利项目详细用户使用说明书.md` | 根据详细分析生成面向用户的完整操作说明 | +| `新增需求分析与开发记录_2026-05-23.md` | 补充数据来源、维护入口、是否新建页面等分析 | +| `隐性需求综合分析_2026-05-25.md` | 补充维护入口和隐性需求判断规则 | +| `MES_Manage_View_V20_src_views_逐页面详细分析.md` | 补充页面归属、缺勤、关键工序、看板维护边界说明 | + +## 四、当前结论 + +1. 元利 MES 与 SAP 的交互范围较广,后续所有涉及 SAP 写操作的功能都需要补同步状态、失败原因和重试机制。 +2. 新增需求不能简单按“新增页面”评估,要同步判断维护入口、数据来源、历史数据和看板影响。 +3. 工时、质检、订单关闭、加班计算属于当前重点稳定性工作,已完成培训和部分修复。 +4. 后续开发建议优先处理低风险、小范围功能,再推进装配已排产需求、及时齐套、设计/编程报工、OEE 等跨模块功能。 + + diff --git a/doc_old/今日工作汇报_2026-05-26.md b/doc_old/今日工作汇报_2026-05-26.md new file mode 100644 index 0000000..28a883a --- /dev/null +++ b/doc_old/今日工作汇报_2026-05-26.md @@ -0,0 +1,143 @@ +# 元利 MES 项目 — 今日工作汇报 + +日期:2026-05-26 +项目:MES_Manage_View_V20 + +## 一、今日主要工作 + +### 1. 丰富并修改元利项目详细流程图 + +今日继续完善 `元利项目详细流程图.md`,在原有系统级流程基础上,进一步补充页面级、业务级流程说明。 + +重点补充内容: +- 登录、菜单权限、动态路由生成流程。 +- 工艺、图纸、生产订单、排产、生产执行、质检、外协、工时校验、生产订单关闭等模块之间的衔接关系。 +- 机加排产、装配排产、机加中心、装配中心、质量中心、工时校验等关键页面的详细业务流。 +- SAP 回写、SAP 查询、WMS/库存任务、MES 存储过程之间的数据流转关系。 +- 将流程图尽量调整为“框 + 箭头 + 文字”的形式,减少字母节点指引,便于培训和现场讲解。 + +本次调整后,流程图更适合用于: +- 给客户讲解整体 MES 业务闭环。 +- 给实施人员定位页面与数据流关系。 +- 给开发人员判断新增需求影响范围。 + +### 2. 工时校验数据对接梳理 + +今日继续梳理工时校验页面与 MES/SAP 数据之间的对接关系,重点围绕 `ProductionManagement/WorkHoursCheck`。 + +已梳理内容: +- 对接数据时发现装配人员工时数据错误,经检查由于用户重复提交导致的问题 +- 在排查过程中发现装配人员报工加班时,同时生成了正常报工的工时 + + +### 3. 生产订单关闭培训与相关数据处理 + +今日进行了生产订单关闭相关培训和数据处理,重点说明生产订单关闭页面的使用边界。 + +培训内容: +- 生产订单关闭前需要先确认订单在 MES 中的任务完成情况。 +- 关闭前需要核对生产订单状态、入库情况、报工情况和 SAP 状态。 +- 批量关闭时要区分已成功关闭、关闭失败、不能关闭三类结果。 +- SAP 关闭失败时不应重复点击,应先确认 SAP 返回原因。 + +数据处理内容: +- 协助检查生产订单关闭相关数据。 +- 梳理关闭条件与当前订单状态之间的关系。 +- 对异常数据进行核对,避免误关或重复关闭。 + +### 4. 沟通报工结果数据上传到 SAP 的影响 + +今日围绕报工结果上传 SAP 的影响进行了沟通和确认。 + +沟通重点: +- 超过班次工作时间部分的工时 如果不选择加班,系统自动记录这段工时 +- 这段工时如果上次到SAP会导致其他生成订单工时不准确的问题,因为计算方法核算的是当日总报工时间记为8小时 +- 这段时间如果上传,就会导致其他工时减少 +- 休息日/法定时选择不加班工时记录的问题,讨论结果是MES正常记录 但是不传输给SAP + + +### 5. 修改装配报工数据重复问题 + +今日处理装配报工数据重复问题。 + +处理重点: +- 排查装配报工过程中可能重复写入的数据链路。 +- 核对装配任务、报工记录、质检/送检记录之间的关联关系。 +- 调整重复数据产生场景,避免同一任务重复形成报工结果。 +- 修改后重点关注装配中心报工、送检、任务完成状态的回显是否一致。 + +处理结果: +- 已针对装配报工重复问题进行修正。 +- 后续需要继续观察现场报工数据,确认是否仍存在重复写入或重复统计。 + +### 6. 丰富并修改用户使用说明书 + +今日重点丰富 `元利项目详细用户使用说明书.md`。 + +主要修改内容: +- 将第 21 章逐页说明整体扩展,不再只写笼统功能说明。 +- 对 78 个页面按源码逐页补充: + - 页面用途 + - 具体操作步骤 + - 查询条件/输入项 + - 结果表重点列 + - 页面按钮/状态/页签 + - 弹窗/表单重点项 + - 后台处理/外部接口 + - 操作注意事项 +- 将第 21 章页面标题从英文页面名改为中文页面名,例如: + - `WorkHoursCheck` 改为 `工时校验` + - `SelfMakePlandone` 改为 `机加已排产` + - `MachiningCenter` 改为 `机加中心` + - `QualityCenter` 改为 `质量中心` +- 对 `机加已排产` 章节进行了重点细化,补充日程拖拽、指派数量、拆分派工、二次派工、原料状态、图纸、外协分组、最晚开始、红色加急排序、SAP 日期同步等操作。 + +说明书修改后更适合: +- 现场用户培训。 +- 新员工快速熟悉页面。 +- 实施人员按页面排查问题。 +- 后续新增需求评审时对照现有功能。 + +### 7. 修改原料退库检,增加加急显示 + +今日处理原料退库检页面加急显示需求。 + +涉及页面: +- `QualityManagement/CheckTask/materialReturn.vue` + +处理内容: +- 在原料退库检任务中增加加急状态/加急信息显示。 +- 方便质检人员优先识别加急退库检任务。 +- 便于后续按加急任务排序、提醒或优先处理。 + +业务影响: +- 质检人员在原料退库检页面可以更直观看到加急任务。 +- 加急退库检任务可优先处理,减少对生产或后续流程的影响。 + +## 二、今日产出与修改文件 + +| 文件 | 今日处理内容 | +|---|---| +| `元利项目详细流程图.md` | 丰富业务流程图,补充多页面、多模块数据流 | +| `元利项目详细用户使用说明书.md` | 扩展第 21 章逐页操作说明,标题改为中文页面名 | +| `ProductionManagement/WorkHoursCheck` | 梳理工时校验与 SAP 上传关系 | +| `PlanManagement/PlannOrderClose` | 生产订单关闭培训与数据处理 | +| 装配报工相关页面/数据 | 修正装配报工重复数据问题 | +| `QualityManagement/CheckTask/materialReturn.vue` | 原料退库检增加加急显示 | + +## 三、今日沟通事项 + +1. 与相关人员沟通工时校验数据上传 SAP 的影响,明确报工结果、工时、SAP 工序资源之间的关系。 +2. 对生产订单关闭进行培训,说明关闭前校验、关闭失败处理和数据风险。 +3. 结合装配报工重复问题,沟通现场报工操作和后台数据写入逻辑。 +4. 结合用户说明书和流程图,明确后续培训资料需要按页面逐步讲解,不能只写功能概述。 + +## 四、当前风险与注意事项 + +| 风险点 | 影响 | 处理建议 | +|---|---|---| +| 工时上传 SAP 重复提交 | 可能造成 SAP 工时或库存单据重复 | 上传失败时先查失败原因,不要连续重复提交 | +| 生产订单关闭条件不一致 | 可能误关订单或关闭失败 | 关闭前核对 MES 任务、入库、报工和 SAP 状态 | +| 装配报工重复 | 影响工时、任务进度、质检/送检统计 | 修复后继续观察现场数据 | +| 加急任务未突出显示 | 质检处理优先级不明确 | 原料退库检已增加加急显示,后续可扩展排序 | +| 用户手册仍需继续细化 | 培训时可能仍有页面操作细节不足 | 后续按重点业务页面继续逐页补强 | diff --git a/今日工作汇报_20260522.md b/doc_old/今日工作汇报_20260522.md similarity index 89% rename from 今日工作汇报_20260522.md rename to doc_old/今日工作汇报_20260522.md index 1c5192e..c324308 100644 --- a/今日工作汇报_20260522.md +++ b/doc_old/今日工作汇报_20260522.md @@ -137,34 +137,6 @@ --- -## 五、明日工作计划(建议) - -### 上午 - -| 优先级 | 事项 | -|:--:|------| -| 🔴 | 与甲方沟通 GM-01(已开工任务工艺修改方案) | -| 🔴 | 与甲方沟通 BG-01~04(设计任务报工模块详细需求) | -| 🟠 | 启动 RP-01(手续确认报表)存储过程开发 | -| 🟠 | 启动 BG-08(工位任务汇总表)— 见《需求分析_自制件与工位汇总表》 | - -### 下午 - -| 优先级 | 事项 | -|:--:|------| -| 🟠 | JH-01~04 生产计划跟踪(颜色/状态/字段)前端改动 | -| 🟡 | LL-01~03 领料退库备注字段添加 | -| 🟡 | BG-05~06 工时报表字段修改 | -| 🟡 | WX-01 外协报表增加采购到货期说明 | - -### 需SAP协调 - -| 事项 | 对接人 | -|------|:--:| -| PC-01 SAP增加字段 | SAP顾问 | -| RP-04/05/06/07 SAP数据接口 | SAP顾问 | - ---- > 📅 日期: 2026-05-22 > 📊 需求总数: 34项 | 已修复: 9项 | 待处理: 25项 diff --git a/修改注意事项.txt b/doc_old/修改注意事项.txt similarity index 100% rename from 修改注意事项.txt rename to doc_old/修改注意事项.txt diff --git a/doc_old/元利项目详细分析.md b/doc_old/元利项目详细分析.md new file mode 100644 index 0000000..c0afb48 --- /dev/null +++ b/doc_old/元利项目详细分析.md @@ -0,0 +1,9794 @@ +# MES_Manage_View_V20 src/views 逐页面详细分析 + +生成日期:2026-05-25 + +分析范围:`MES_Manage_View_V20/src/views` 下 78 个 .vue/.js 文件;辅助读取 `src/api`、`config/index.js`、`static/config.js` 和 SQL 脚本。 + +## 重要说明 + +- 页面功能不是只按文件名猜测,报告同时参考页面路径、按钮/字段文案、方法名、存储过程名和 SQL 过程体。 +- 存储过程处理说明来自 SQL 静态解析:读写对象、参数、返回字段、过滤条件、更新语句、分组分页、JSON、事务、SAP 链接库等。 +- 如果某个过程没有解析到过程体,报告会明确说明不能准确判断内部表/视图和处理逻辑。 + +## 技术路线总览 + +- 前端:Vue 2.7、Vue Router、Vuex、Element UI,页面以 Options API 为主。 +- 数据访问:页面调用 `this.CreateData(type, procedureName, params[, pageSize, pageCurrent])` 组包,再调用 `this.ExecDatabase(data)` 访问后端。 +- 后端:统一接口接收 type/name/param,执行 SQL Server 存储过程,返回 `response.data` 和分页信息。 +- 数据库:`YL_MESDB`,核心对象包括生产计划/生产任务、加工中心操作记录、质检记录、设备数据、权限菜单等表和视图。 +- SAP:`src/api/b1s.js` 通过 `window.dt_Config.baseURLB1` 访问 B1 Service Layer;部分过程也跨库读取 `SAP.SBO_YL.dbo.*`。 + +## 模块汇总 + +| 模块 | 页面数 | 主要能力 | +|---|---:|---| +| 404.vue | 1 | 布局/静态页面 | +| AnomalousManagement | 1 | 过程 4 个 | +| CraftManagement | 1 | 过程 4 个 | +| DeviceManagement | 4 | 过程 11 个 | +| PlanManagement | 8 | 过程 22 个、直接 SAP 调用 8 处 | +| ProcessManagement | 9 | 过程 55 个、直接 SAP 调用 3 处 | +| ProductionManagement | 23 | 过程 111 个、直接 SAP 调用 15 处 | +| QualityManagement | 13 | 过程 54 个、直接 SAP 调用 7 处 | +| SaleManagement | 1 | 过程 4 个 | +| SystemMaintenance | 6 | 过程 20 个、直接 SAP 调用 2 处 | +| dashboard | 1 | 布局/静态页面 | +| layout | 9 | 过程 4 个 | +| login | 1 | 布局/静态页面 | + +## SAP 交互总清单 + +| 页面 | 行号 | 方法 | 接口 | 提交字段线索 | +|---|---:|---|---|---| +| `src/views/PlanManagement/InstallMakePlanDo/index.vue` | 1332 | `postB1` | `/PurchaseRequests` | `ReqType`、`Requester`、`PriceMode`、`RequesterBranch`、`RequesterDepartment`、`DocDate`、`DocDueDate`、`TaxDate`、`RequriedDate`、`Comments` | +| `src/views/PlanManagement/InstallMakePlanDo/index.vue` | 1523 | `patchB1` | `/ProductionOrders(` | `AbsoluteEntry`、`U_MODueDate`、`U_MOStartDate`、`U_YJQTdate`、`优先级`、`未完成说明`、`派工特殊说明` | +| `src/views/PlanManagement/InstallMakePlan/index.vue` | 1332 | `postB1` | `/PurchaseRequests` | `ReqType`、`Requester`、`PriceMode`、`RequesterBranch`、`RequesterDepartment`、`DocDate`、`DocDueDate`、`TaxDate`、`RequriedDate`、`Comments` | +| `src/views/PlanManagement/InstallMakePlan/index.vue` | 1523 | `patchB1` | `/ProductionOrders(` | `AbsoluteEntry`、`U_MODueDate`、`U_MOStartDate`、`U_YJQTdate`、`优先级`、`未完成说明`、`派工特殊说明` | +| `src/views/PlanManagement/PlannOrderClose/index.vue` | 117 | `patchB1` | `/ProductionOrders(` | `AbsoluteEntry`、`ProductionOrderStatus` | +| `src/views/PlanManagement/SelfMakePlan/index.vue` | 1500 | `patchB1` | `/ProductionOrders(` | `AbsoluteEntry`、`U_MODueDate`、`U_MOStartDate`、`优先级`、`未完成说明`、`派工特殊说明` | +| `src/views/PlanManagement/SelfMakePlando/index.vue` | 1433 | `patchB1` | `/ProductionOrders(` | `AbsoluteEntry`、`U_MODueDate`、`U_MOStartDate`、`优先级`、`未完成说明`、`派工特殊说明` | +| `src/views/PlanManagement/SelfMakePlandone/index.vue` | 1259 | `patchB1` | `/ProductionOrders(` | `AbsoluteEntry`、`U_MODueDate`、`U_MOStartDate`、`优先级`、`未完成说明`、`派工特殊说明` | +| `src/views/ProcessManagement/ProcedureManagement/index.vue` | 155 | `postB1` | `/RouteStages` | `Code`、`Description`、`CreationDate`、`DateOfUpdate` | +| `src/views/ProcessManagement/ProcedureManagement/index.vue` | 192 | `getB1` | `/RouteStages` | `filter`、`Description`、`DateOfUpdate`、`confirmButtonText`、`cancelButtonText`、`type` | +| `src/views/ProcessManagement/ProcedureManagement/index.vue` | 198 | `patchB1` | `/RouteStages(` | `Description`、`DateOfUpdate`、`confirmButtonText`、`cancelButtonText`、`type`、`top` | +| `src/views/ProductionManagement/AssemblyCenter/index.vue` | 3561 | `getB1` | `/ProductionOrders` | `filter`、`数据`、`lines`、`请求失败` | +| `src/views/ProductionManagement/AssemblyCenter/index.vue` | 3730 | `posttm` | `/stocktask/task/issueordertask` | `原始数据`、`doc_date`、`doc_type`、`external_num`、`task_items` | +| `src/views/ProductionManagement/MachiningCenter/index.vue` | 5751 | `posttm` | `/stocktask/task/receiptordertask` | `label` | +| `src/views/ProductionManagement/MachiningCenter/index.vue` | 6409 | `getB1` | `/ProductionOrders` | `filter`、`数据`、`lines`、`请求失败` | +| `src/views/ProductionManagement/MachiningCenter/index.vue` | 6560 | `posttm` | `/stocktask/task/issueordertask` | `原始数据`、`doc_date`、`doc_type`、`external_num`、`task_items` | +| `src/views/ProductionManagement/OutsourceMange/index.vue` | 966 | `postB1` | `/PurchaseRequests` | `ReqType`、`Requester`、`PriceMode`、`RequesterBranch`、`RequesterDepartment`、`DocDate`、`DocDueDate`、`TaxDate`、`RequriedDate`、`Comments` | +| `src/views/ProductionManagement/SaleOutsourceMange/index.vue` | 1041 | `postB1` | `/PurchaseRequests` | `ReqType`、`Requester`、`PriceMode`、`RequesterBranch`、`RequesterDepartment`、`DocDate`、`DocDueDate`、`TaxDate`、`RequriedDate`、`Comments` | +| `src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` | 1105 | `patchB1` | `ProductionOrders(${order.AbsoluteEntry})` | `ProductionOrderLines`、`ProductionOrdersStages`、`更新SAP失败`、`更新SAP工序和资源失败` | +| `src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` | 2124 | `getB1` | `/ProductionOrders` | `filter` | +| `src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` | 2255 | `getB1` | `/ProductionOrders` | `filter`、`加班记录`、`记录` | +| `src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` | 2311 | `postB1` | `/InventoryGenExits` | `DocDate`、`DocDueDate`、`Comments`、`DocumentLines`、`处理记录失败` | +| `src/views/ProductionManagement/WorkHoursCheck/index.vue` | 577 | `getB1` | `/ProductionOrders` | `filter`、`获取订单数据失败`、`获取到工序数据`、`success`、`error`、`结构异常`、`获取到订单` | +| `src/views/ProductionManagement/WorkHoursCheck/index.vue` | 672 | `getB1` | `/ProductionOrders` | `filter`、`使用原订单` | +| `src/views/ProductionManagement/WorkHoursCheck/index.vue` | 733 | `postB1` | `/InventoryGenExits` | `DocDate`、`DocDueDate`、`Comments`、`AID`、`DocumentLines`、`success`、`error`、`提交工时单据失败`、`warning` | +| `src/views/ProductionManagement/WorkHoursCheck/index.vue` | 1482 | `patchB1` | `ProductionOrders(${order.AbsoluteEntry})` | `ProductionOrderLines`、`ProductionOrdersStages`、`更新SAP失败`、`查找设备资源`、`StageID` | +| `src/views/QualityManagement/CheckTask/materialReturn.vue` | 878 | `getB1` | `/ProductionOrders` | `filter`、`lines`、`doc_date`、`doc_type`、`external_num`、`target_type`、`task_items`、`base_type`、`item_code`、`item_name` | +| `src/views/QualityManagement/CheckTask/materialReturn.vue` | 921 | `posttm` | `/stocktask/task/receiptordertask` | `原始数据`、`doc_date`、`doc_type`、`external_num`、`task_items` | +| `src/views/QualityManagement/CheckTask/processReceive.vue` | 820 | `postB1` | `/QueryService_PostQuery` | `QueryPath`、`QueryOption` | +| `src/views/QualityManagement/CheckTask/processReceive.vue` | 842 | `postB1` | `/PurchaseDeliveryNotes` | `CardCode`、`CardName`、`DocDate`、`DocumentLines`、`BaseEntry`、`BaseLine`、`BaseType`、`Quantity`、`U_WWPassedQty` | +| `src/views/QualityManagement/CheckTask/salesReturn.vue` | 623 | `posttm` | `/stocktask/task/issueordertask` | `原始数据`、`doc_date`、`doc_type`、`external_num`、`task_items` | +| `src/views/QualityManagement/QualityCenter/index.vue` | 3415 | `getB1` | `/ProductionOrders` | `filter`、`数据`、`lines`、`请求失败` | +| `src/views/QualityManagement/QualityCenter/index.vue` | 3584 | `posttm` | `/stocktask/task/issueordertask` | `原始数据`、`doc_date`、`doc_type`、`external_num`、`task_items` | +| `src/views/SystemMaintenance/WorkstationManagement/index.vue` | 201 | `patchB1` | `/Resources('` | `Name`、`message`、`type`、`VisCode`、`ForeignName` | +| `src/views/SystemMaintenance/WorkstationManagement/index.vue` | 235 | `postB1` | `/Resources` | `VisCode`、`Name`、`ForeignName`、`Type`、`Group`、`UnitOfMeasure`、`IssueMethod`、`Active`、`Inactive`、`Remarks` | + +## 1. src/views/404.vue + +**页面位置**:`src/views/404.vue` +**所属模块**:404.vue +**源码行数**:255 + +### 页面功能 + +该页面是 404 错误页,用于路由不存在时展示错误信息。 + +### 页面流程图 + +该页面未发现后端存储过程调用,通常不形成完整业务流程。 + +### 用户操作与页面线索 + +可见按钮/字段线索:无 + +主要方法线索:`data`、`message` + +### 字段映射表 + +未从页面模板中抽取到明确的 `v-model`、表格列或 `param.push` 字段映射。 + +### 技术路线 + +- Vue 2 Options API +- Element UI +- 未发现页面级后端存储过程调用 + +### 调用的存储过程总览 + +未发现 `CreateData(...)` 存储过程调用。 + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +无数据库调用链。 + +### 存储过程处理逻辑明细 + +无页面级存储过程调用。 + +## 2. src/views/AnomalousManagement/PunctualWork/index.vue + +**页面位置**:`src/views/AnomalousManagement/PunctualWork/index.vue` +**所属模块**:AnomalousManagement / PunctualWork +**源码行数**:697 + +### 页面功能 + +该页面用于发现“计划应开工但现场未及时开工”的任务。用户按任务状态、工位、工序、异常原因等条件筛选,页面展示生产订单、销售订单、物料、工序、指派对象、分配数量、上序合格数、加工/收料状态和加急数量,服务于生产异常提醒和催办。 + +页面可见的操作/字段包括 “全部”、“待执行”、“可执行”、“已开工”、“已完成”、“item.指南工位号”、“指派对象”、“生产订单”、“销售订单”、“物料名称”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `异常提醒_及时开工_查询`、`MES_登录_工位与名称_查询`、`Prog_MES_LoadProcess`、`查询字典` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `异常提醒_及时开工_查询` -> `MES_登录_工位与名称_查询` -> `Prog_MES_LoadProcess` -> `查询字典` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`全部`、`待执行`、`可执行`、`已开工`、`已完成`、`item.指南工位号`、`指派对象`、`生产订单`、`销售订单`、`物料名称`、`物料编码`、`顺序`、`工序名称`、`分配数`、`上序合格数`、`加工状态`、`收料状态`、`加急数量` + +主要方法线索:`searchTable` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.TaskAID ` | `@TaskAID` | `TaskAID, ` | +| 参数 | `this.orderNo2 ` | `@订单号` | `[订单编号] as 订单号, ` | +| 参数 | `this.productCode2` | `@零件编号` | - | +| 参数 | `this.completionTime ? this.completionTime[0` | `@计划开工_Start` | - | +| 参数 | `this.completionTime ? this.completionTime[1` | `@计划开工_End` | - | +| 参数 | `this.productionStatus2` | `@生产状态` | - | +| 参数 | `this.Doing` | `@工位名称` | - | +| 参数 | `this.$store.state.user.id` | `@用户ID` | - | +| 参数 | `this.plannum` | `@计划号` | - | +| 参数 | `this.salenum` | `@销售订单` | - | +| 显示列 | `指派对象` | - | `指派对象` | +| 显示列 | `生产订单` | - | `[订单编号] as 订单号, ` | +| 显示列 | `销售订单` | - | `合同号, ` | +| 显示列 | `物料名称` | - | `[物料描述] as 零件名称, ` | +| 显示列 | `物料编码` | - | `[物料编号] as 零件编码, ` | +| 显示列 | `顺序` | - | `顺序` | +| 显示列 | `工序名称` | - | `[工艺编号], [工序名称]` | +| 显示列 | `分配数` | - | `分配数` | +| 显示列 | `上序合格数` | - | `上序合格数` | +| 显示列 | `加工状态` | - | `加工状态` | +| 显示列 | `收料状态` | - | `收料状态` | +| 显示列 | `加急数量` | - | `加急数量` | +| 显示列 | `下序名称` | - | `下序名称` | +| 显示列 | `加急` | - | `加急总数, ` | +| 显示列 | `优先` | - | `优先` | +| 显示列 | `首检` | - | `首检` | +| 显示列 | `序检` | - | `序检` | +| 显示列 | `内码` | - | `[订单拆分内码], ` | +| 显示列 | `完成数` | - | `完成数量` | +| 显示列 | `任务状态` | - | `任务状态` | +| 显示列 | `计划号` | - | `计划号` | +| 显示列 | `计划开始` | - | `计划开始` | +| 显示列 | `计划完成` | - | `计划完成` | +| 显示列 | `开工时间` | - | `[开工时间], ` | +| 显示列 | `备注` | - | `派工特殊说明, ` | +| 显示列 | `收料数` | - | `收料` | +| 输入字段 | `TaskAID` | `@TaskAID` | - | +| 输入字段 | `orderNo2` | `@订单号` | - | +| 输入字段 | `productCode2` | `@零件编号` | - | +| 输入字段 | `plannum` | `@计划号` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 555 | 11(当前通用存储过程查询/执行) | `异常提醒_及时开工_查询` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`登录基础数据_人员信息`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 610 | 11(当前通用存储过程查询/执行) | `MES_登录_工位与名称_查询` | 查询/读取数据 | 查询 | 视图:`View_基础数据_工位` | +| 663 | 11(当前通用存储过程查询/执行) | `Prog_MES_LoadProcess` | 查询/读取数据 | 查询 | 表:`基础表_工序` | +| 675 | 11(当前通用存储过程查询/执行) | `查询字典` | 查询/读取数据 | 查询 | 表:`YL_基础表_数据字典` | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `异常提醒_及时开工_查询`:`@生产状态 int = -1, `;`DECLARE @whereStr nvarchar(max) = ' WHERE 排产状态 = 1 '`;`派工特殊说明, `;`case when isnull([加急状态], 0) = 1 then ''加急'' else ''否'' end as [加急], `;`[二次派工], `;`[计划完成时间] as 计划完成, `;`isnull([完成数量], 0) as 完成数量, `;`when isnull(发料状态, 0) = 1 then ''发料齐套''` + +### 数据库调用链 + +- `src/views/AnomalousManagement/PunctualWork/index.vue` -> `异常提醒_及时开工_查询` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`登录基础数据_人员信息`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/AnomalousManagement/PunctualWork/index.vue` -> `MES_登录_工位与名称_查询` -> 视图:`View_基础数据_工位` -> 查询/读取数据 +- `src/views/AnomalousManagement/PunctualWork/index.vue` -> `Prog_MES_LoadProcess` -> 表:`基础表_工序` -> 查询/读取数据 +- `src/views/AnomalousManagement/PunctualWork/index.vue` -> `查询字典` -> 表:`YL_基础表_数据字典` -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `异常提醒_及时开工_查询` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`登录基础数据_人员信息`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@TaskAID int`、`@订单号 int`、`@零件编号 nvarchar(50)`、`@计划开工_Start nvarchar(50)`、`@计划开工_End nvarchar(50)`、`@生产状态 int`、`@工位名称 nvarchar(500)`、`@用户ID nvarchar(50)`、`@计划号 nvarchar(50)`、`@销售订单 nvarchar(50)`。 主要返回字段线索:`TaskAID, `、`[订单编号] as 订单号, `、`合同号, `、`加急总数, `、`派工特殊说明, `、`[订单拆分内码], `、`[订单行号], `、`[开工时间], `、`[物料编号] as 零件编码, `、`[物料描述] as 零件名称, `。 关键过滤/匹配条件:`DECLARE @whereStr nvarchar(max) = ' WHERE 排产状态 = 1 '`;`WHERE next_task.[订单编号] = main.[订单编号]`;`AND next_task.[订单行号] = main.[订单行号] + 1`;`AND next_task.[排产状态] = 1`;`WHERE b.订单编号 = main.[订单编号]`;`AND b.订单行号 = main.[订单行号] - 1`;`AND a.检测类型编号 = 6`;`WHERE EXISTS (`;`WHERE b.订单编号 = main.订单编号`;`AND b.订单行号 = main.订单行号`。 关键写入/状态处理语句线索:`SET @whereStr = @whereStr + ' AND [指派对象] ''外协'' AND [指派对象] NOT LIKE ''%装配%'' AND [指派对象] ''期初物料'' and (计划开始时间 < 开工时间 or 开工时间 is null) and isnull(加工状态, 0) = 0 '`;`SET @whereStr = @whereStr + ' AND [订单编号] = ' + CONVERT(VARCHAR(10), @订单号)`;`SET @whereStr = @whereStr + ' AND [计划号] = '''+@计划号+''''`;`SET @whereStr = @whereStr + ' AND [合同号] LIKE ''%' + @销售订单 + '%'''`;`SET @whereStr = @whereStr + ' AND [TaskAID] = ' + CONVERT(VARCHAR(10), @TaskAID)`;`SET @whereStr = @whereStr + ' AND [物料编号] LIKE ''%' + @零件编号 + '%'''`;`SET @whereStr = @whereStr + ' AND [计划开始时间] < = ''' + @计划开工_End + ''''`;`SET @whereStr = @whereStr +`;`SET @whereStr = @whereStr + ' AND ISNULL(任务状态, 0) IN (0, 1, 2) '`;`SET @whereStr = @whereStr + ' AND ISNULL(任务状态, 0) = 0 '`;`SET @whereStr = @whereStr + ' AND ISNULL(任务状态, 0) = 1 '`;`SET @whereStr = @whereStr + ' AND ISNULL(任务状态, 0) = 2 '`。 排序/分组/分页线索:`ORDER BY next_task.[订单行号]) AS 下序名称, `;`SET @selStr = @selStr + @whereStr + ' ORDER BY [计划开始时间], 指派对象'`。 +- `MES_登录_工位与名称_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_基础数据_工位`。 主要返回字段线索:`[VisCode] as 工位代码`、`[VisCode] as MesWebCode`、`[VisCode] as 工位号`、`[Name] as 指南工位号`、`[Name] as 工位名称`。 排序/分组/分页线索:`order by [VisCode]`。 +- `Prog_MES_LoadProcess` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`基础表_工序`。 主要返回字段线索:`[工艺编号], [工序名称]`。 排序/分组/分页线索:`SELECT [工艺编号], [工序名称] FROM [基础表_工序] ORDER BY [工艺编号]`。 +- `查询字典` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`YL_基础表_数据字典`。 主要返回字段线索:`*`。 + +## 3. src/views/CraftManagement/CraftMaintain/index.vue + +**页面位置**:`src/views/CraftManagement/CraftMaintain/index.vue` +**所属模块**:CraftManagement / CraftMaintain +**源码行数**:302 + +### 页面功能 + +该页面维护产品结构树。用户可以新增、编辑、删除产品结构节点,查询现有产品结构,并为后续工艺、物料、BOM 或生产任务提供层级基础数据。 + +页面可见的操作/字段包括 “新增”、“编辑”、“删除”、“展开”、“产品结构维护”、“产品材料维护”、“工艺参数维护”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `WEB_基本表_产品结构_新增`、`WEB_基本表_产品结构_查询`、`WEB_基本表_产品结构_删除`、`WEB_基本表_产品结构_修改` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `WEB_基本表_产品结构_新增` -> `WEB_基本表_产品结构_查询` -> `WEB_基本表_产品结构_删除` -> `WEB_基本表_产品结构_修改` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`新增`、`编辑`、`删除`、`展开`、`产品结构维护`、`产品材料维护`、`工艺参数维护` + +主要方法线索:`handleAdd` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.productId` | `@父节点` | - | +| 参数 | `value` | `@节点名称` | - | +| 参数 | `this.PartType.substring(0, 4)` | `@节点类型` | - | +| 参数 | `this.productId` | `@子节点` | - | +| 输入字段 | `PartType` | `@节点类型` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 97 | 11(当前通用存储过程查询/执行) | `WEB_基本表_产品结构_新增` | 新增业务数据 | 未找到过程体 | 未知 | +| 110 | 11(当前通用存储过程查询/执行) | `WEB_基本表_产品结构_查询` | 查询/读取数据 | 未找到过程体 | 未知 | +| 129 | 11(当前通用存储过程查询/执行) | `WEB_基本表_产品结构_删除` | 删除业务数据 | 未找到过程体 | 未知 | +| 161 | 11(当前通用存储过程查询/执行) | `WEB_基本表_产品结构_修改` | 更新/保存业务数据 | 未找到过程体 | 未知 | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +- `src/views/CraftManagement/CraftMaintain/index.vue` -> `WEB_基本表_产品结构_新增` -> 过程体未解析 -> 新增业务数据 +- `src/views/CraftManagement/CraftMaintain/index.vue` -> `WEB_基本表_产品结构_查询` -> 过程体未解析 -> 查询/读取数据 +- `src/views/CraftManagement/CraftMaintain/index.vue` -> `WEB_基本表_产品结构_删除` -> 过程体未解析 -> 删除业务数据 +- `src/views/CraftManagement/CraftMaintain/index.vue` -> `WEB_基本表_产品结构_修改` -> 过程体未解析 -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `WEB_基本表_产品结构_新增` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 新增业务数据。 当前工作区 SQL 中没有解析到该过程体,因此只能确认前端调用关系,不能准确说明内部读写表、过滤条件和状态变更。 +- `WEB_基本表_产品结构_查询` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 当前工作区 SQL 中没有解析到该过程体,因此只能确认前端调用关系,不能准确说明内部读写表、过滤条件和状态变更。 +- `WEB_基本表_产品结构_删除` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 删除业务数据。 当前工作区 SQL 中没有解析到该过程体,因此只能确认前端调用关系,不能准确说明内部读写表、过滤条件和状态变更。 +- `WEB_基本表_产品结构_修改` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 当前工作区 SQL 中没有解析到该过程体,因此只能确认前端调用关系,不能准确说明内部读写表、过滤条件和状态变更。 + +## 4. src/views/DeviceManagement/DeviceDataHistory/index.vue + +**页面位置**:`src/views/DeviceManagement/DeviceDataHistory/index.vue` +**所属模块**:DeviceManagement / DeviceDataHistory +**源码行数**:183 + +### 页面功能 + +该页面查询设备历史采集数据。用户按工位/设备、参数名称、起止时间分页查询历史记录,用于追溯设备运行参数。 + +页面可见的操作/字段包括 “查询”、“item.name”、“设备名称”、“参数名称”、“设备编号”、“数值”、“单位”、“采集时间”、“结束日期”、“开始日期”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `MES_登录_工位与名称_查询`、`设备管理_设备数据_历史查询` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `MES_登录_工位与名称_查询` -> `设备管理_设备数据_历史查询` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`item.name`、`设备名称`、`参数名称`、`设备编号`、`数值`、`单位`、`采集时间`、`结束日期`、`开始日期`、`请选择设备`、`请输入参数名称` + +主要方法线索:`getbasedata` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.pageCurrent` | `@PageCurrent` | - | +| 参数 | `this.pageSize` | `@PageSize` | - | +| 参数 | `'1111', 'int', '1'` | `@PageCount` | - | +| 参数 | `'1111', 'int', '1'` | `@ItemCount` | - | +| 参数 | `this.completionTime[0` | `@开始时间` | - | +| 参数 | `this.completionTime[1` | `@结束时间` | - | +| 参数 | `this.equipmentType` | `@设备名称` | - | +| 参数 | `this.dataname` | `@参数名称` | - | +| 显示列 | `设备名称` | - | `Zone` | +| 显示列 | `参数名称` | - | `TagName` | +| 显示列 | `设备编号` | - | `TagID` | +| 显示列 | `数值` | - | `数值` | +| 显示列 | `单位` | - | `TagUnit` | +| 显示列 | `采集时间` | - | `采集时间` | +| 输入字段 | `completionTime` | `@开始时间` | - | +| 输入字段 | `equipmentType` | `@设备名称` | - | +| 输入字段 | `dataname` | `@参数名称` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 142 | 11(当前通用存储过程查询/执行) | `MES_登录_工位与名称_查询` | 查询/读取数据 | 查询 | 视图:`View_基础数据_工位` | +| 162 | 11(当前通用存储过程查询/执行) | `设备管理_设备数据_历史查询` | 查询/读取数据 | 分页 | 未在 SQL 中解析到明确依赖 | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `设备管理_设备数据_历史查询`:`, [在线状态]` + +### 数据库调用链 + +- `src/views/DeviceManagement/DeviceDataHistory/index.vue` -> `MES_登录_工位与名称_查询` -> 视图:`View_基础数据_工位` -> 查询/读取数据 +- `src/views/DeviceManagement/DeviceDataHistory/index.vue` -> `设备管理_设备数据_历史查询` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `MES_登录_工位与名称_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_基础数据_工位`。 主要返回字段线索:`[VisCode] as 工位代码`、`[VisCode] as MesWebCode`、`[VisCode] as 工位号`、`[Name] as 指南工位号`、`[Name] as 工位名称`。 排序/分组/分页线索:`order by [VisCode]`。 +- `设备管理_设备数据_历史查询` 属于 设备与实时数据,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:分页。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@PageCurrent int`、`@PageSize int`、`@PageCount int`、`@ItemCount int`、`@结束时间 nvarchar(50),`、`@开始时间 nvarchar(50),`、`@设备名称 nvarchar(50),`、`@参数名称 nvarchar(50)`。 关键过滤/匹配条件:`declare @where nvarchar(1000)`;`set @where = ' 1 = 1 '`;`SET @where = @where + N' AND 工位号 = ''' + REPLACE(@设备名称, '''', '''''') + '''';`;`SET @where = @where + N' AND 变量名称 LIKE ''%' + REPLACE(@参数名称, '''', '''''') + '%''';`;`SET @where = @where + N' AND 创建时间 > = ''' + REPLACE(@开始时间, '''', '''''') + '''';`;`SET @where = @where + N' AND 创建时间 < = ''' + REPLACE(@结束时间, '''', '''''') + '''';`;`exec [dbo].[sp_xt_pagesplit] @tbname, @fieldkey, @where, @fieldshow, @fieldOrder, @PageCurrent, @PageSize, @PageCount out, @ItemCount out`。 关键写入/状态处理语句线索:`set @tbname = '历史_设备数据_定时'`;`set @fieldkey = 'AID'`;`set @where = ' 1 = 1 '`;`set @fieldOrder = ''`;`set @fieldshow = '[AID]`;`SET @where = @where + N' AND 工位号 = ''' + REPLACE(@设备名称, '''', '''''') + '''';`;`SET @where = @where + N' AND 变量名称 LIKE ''%' + REPLACE(@参数名称, '''', '''''') + '%''';`;`SET @开始时间 = @开始时间 + ' 00:00:00.000'`;`SET @结束时间 = @结束时间 + ' 23:59:59.999'`;`SET @where = @where + N' AND 创建时间 > = ''' + REPLACE(@开始时间, '''', '''''') + '''';`;`SET @where = @where + N' AND 创建时间 < = ''' + REPLACE(@结束时间, '''', '''''') + '''';`。 实现特征:分页。 + +## 5. src/views/DeviceManagement/DeviceInformation/index.vue + +**页面位置**:`src/views/DeviceManagement/DeviceInformation/index.vue` +**所属模块**:DeviceManagement / DeviceInformation +**源码行数**:434 + +### 页面功能 + +该页面维护设备台账和设备相关基础资料。用户可以查询设备信息,新增、修改、删除设备,维护维修记录、工时记录或点检配置。 + +页面可见的操作/字段包括 “查询”、“设备”、“--> 取消”、“确定”、“item.name”、“设备名称”、“设备型号”、“设备类型”、“加工工艺”、“工位”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `查询字典`、`设备管理_设备信息_查询`、`设备管理_设备信息_增加`、`设备管理_设备信息_编辑`、`设备管理_设备信息_删除` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `查询字典` -> `设备管理_设备信息_查询` -> `设备管理_设备信息_增加` -> `设备管理_设备信息_编辑` -> `设备管理_设备信息_删除` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`设备`、`--> 取消`、`确定`、`item.name`、`设备名称`、`设备型号`、`设备类型`、`加工工艺`、`工位`、`工时单价(元/小时)`、`月设备加工能力`、`点检类型名称`、`操作`、`item.label`、`工位号`、`工时单价`、`点检类型` + +主要方法线索:`getbasedata`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 显示列 | `设备名称` | - | `设备名称` | +| 显示列 | `设备型号` | - | `设备型号` | +| 显示列 | `设备类型` | - | `*, [dbo].[YL_基础表_数据字典].词条名称 as 设备类型名称` | +| 显示列 | `加工工艺` | - | `加工工艺` | +| 显示列 | `工位` | - | `工位` | +| 显示列 | `工时单价(元/小时)` | - | `工时单价(元/小时)` | +| 显示列 | `月设备加工能力` | - | `月设备加工能力` | +| 显示列 | `点检类型名称` | - | `点检类型名称` | +| 显示列 | `操作` | - | `操作` | +| 输入字段 | `equipmentName` | - | - | +| 输入字段 | `equipmentType` | - | - | +| 输入字段 | `opName` | - | - | +| 输入字段 | `form.设备名称` | - | - | +| 输入字段 | `form.设备型号` | - | - | +| 输入字段 | `form.设备类型` | - | - | +| 输入字段 | `form.加工工艺` | - | - | +| 输入字段 | `form.工位号` | - | - | +| 输入字段 | `form.工时单价` | - | - | +| 输入字段 | `form.月设备加工能力` | - | - | +| 输入字段 | `form.点检类型` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 235 | 11(当前通用存储过程查询/执行) | `查询字典` | 查询/读取数据 | 查询 | 表:`YL_基础表_数据字典` | +| 257 | 11(当前通用存储过程查询/执行) | `设备管理_设备信息_查询` | 查询/读取数据 | 查询 | 表:`YL_基础表_数据字典` | +| 318 | 12(当前通用存储过程写入/业务动作) | `设备管理_设备信息_增加` | 新增业务数据 | 查询、新增、处理报工/工时、处理计划/派工 | 未在 SQL 中解析到明确依赖 | +| 351 | 12(当前通用存储过程写入/业务动作) | `设备管理_设备信息_编辑` | 更新/保存业务数据 | 更新、处理报工/工时 | 未在 SQL 中解析到明确依赖 | +| 378 | 12(当前通用存储过程写入/业务动作) | `设备管理_设备信息_编辑` | 更新/保存业务数据 | 更新、处理报工/工时 | 未在 SQL 中解析到明确依赖 | +| 404 | 12(当前通用存储过程写入/业务动作) | `设备管理_设备信息_删除` | 删除业务数据 | 查询、删除 | 未在 SQL 中解析到明确依赖 | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +- `src/views/DeviceManagement/DeviceInformation/index.vue` -> `查询字典` -> 表:`YL_基础表_数据字典` -> 查询/读取数据 +- `src/views/DeviceManagement/DeviceInformation/index.vue` -> `设备管理_设备信息_查询` -> 表:`YL_基础表_数据字典` -> 查询/读取数据 +- `src/views/DeviceManagement/DeviceInformation/index.vue` -> `设备管理_设备信息_增加` -> 未在 SQL 中解析到明确依赖 -> 新增业务数据 +- `src/views/DeviceManagement/DeviceInformation/index.vue` -> `设备管理_设备信息_编辑` -> 未在 SQL 中解析到明确依赖 -> 更新/保存业务数据 +- `src/views/DeviceManagement/DeviceInformation/index.vue` -> `设备管理_设备信息_编辑` -> 未在 SQL 中解析到明确依赖 -> 更新/保存业务数据 +- `src/views/DeviceManagement/DeviceInformation/index.vue` -> `设备管理_设备信息_删除` -> 未在 SQL 中解析到明确依赖 -> 删除业务数据 + +### 存储过程处理逻辑明细 + +- `查询字典` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`YL_基础表_数据字典`。 主要返回字段线索:`*`。 +- `设备管理_设备信息_查询` 属于 设备与实时数据,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`YL_基础表_数据字典`。 入参/分页参数:`@设备名称_check bit`、`@设备名称 nvarchar(50)`、`@设备类型_check bit`、`@设备类型 int`、`@工位_check bit`、`@工位 nvarchar(50)`。 主要返回字段线索:`*, [dbo].[YL_基础表_数据字典].词条名称 as 设备类型名称`。 关键过滤/匹配条件:`set @selectStrWhere = 'where 1 = 1 '`;`set @selectStrWhere = @selectStrWhere+' and 设备名称 like + ''%'' + @设备名称 + ''%'' '`;`set @selectStrWhere = @selectStrWhere+' and 基础数据_设备工位点检表.设备类型 = @设备类型'`。 关键写入/状态处理语句线索:`set @selectStr = `;`set @selectStrWhere = 'where 1 = 1 '`;`set @selectStrWhere = @selectStrWhere+' and 设备名称 like + ''%'' + @设备名称 + ''%'' '`;`set @selectStrWhere = @selectStrWhere+' and 基础数据_设备工位点检表.设备类型 = @设备类型'`;`set @selectStr = @selectStr+@selectStrWhere`。 +- `设备管理_设备信息_增加` 属于 设备与实时数据,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 新增业务数据。 数据库处理摘要:查询、新增、处理报工/工时、处理计划/派工。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`基础数据_设备工位点检表`。 入参/分页参数:`@设备名称 nvarchar(50)`、`@设备类型 nvarchar(50)`、`@设备型号 nvarchar(50)`、`@加工工艺 int`、`@点检类型 int`、`@工位 nvarchar(50)`、`@工时单价 float`、`@月设备加工能力 float`。 关键写入/状态处理语句线索:`insert into 基础数据_设备工位点检表(设备名称, 设备型号, 设备类型)values(@设备名称, @设备型号, @设备类型)`。 +- `设备管理_设备信息_编辑` 属于 设备与实时数据,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理报工/工时。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`基础数据_设备工位点检表`。 入参/分页参数:`@设备流水号 int`、`@设备名称 nvarchar(50)`、`@设备类型 nvarchar(50)`、`@设备型号 nvarchar(50)`、`@加工工艺 int`、`@点检类型 int`、`@工位 nvarchar(50)`、`@原工位 nvarchar(50)`、`@工时单价 float`、`@月设备加工能力 float`。 关键过滤/匹配条件:`update 基础数据_设备工位点检表 set 设备名称 = @设备名称, 设备型号 = @设备型号, 设备类型 = @设备类型 where 设备流水号 = @设备流水号`。 关键写入/状态处理语句线索:`update 基础数据_设备工位点检表 set 设备名称 = @设备名称, 设备型号 = @设备型号, 设备类型 = @设备类型 where 设备流水号 = @设备流水号`。 +- `设备管理_设备信息_编辑` 属于 设备与实时数据,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理报工/工时。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`基础数据_设备工位点检表`。 入参/分页参数:`@设备流水号 int`、`@设备名称 nvarchar(50)`、`@设备类型 nvarchar(50)`、`@设备型号 nvarchar(50)`、`@加工工艺 int`、`@点检类型 int`、`@工位 nvarchar(50)`、`@原工位 nvarchar(50)`、`@工时单价 float`、`@月设备加工能力 float`。 关键过滤/匹配条件:`update 基础数据_设备工位点检表 set 设备名称 = @设备名称, 设备型号 = @设备型号, 设备类型 = @设备类型 where 设备流水号 = @设备流水号`。 关键写入/状态处理语句线索:`update 基础数据_设备工位点检表 set 设备名称 = @设备名称, 设备型号 = @设备型号, 设备类型 = @设备类型 where 设备流水号 = @设备流水号`。 +- `设备管理_设备信息_删除` 属于 设备与实时数据,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 删除业务数据。 数据库处理摘要:查询、删除。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`基础数据_设备工位点检表`。 入参/分页参数:`@设备流水号 int`。 关键过滤/匹配条件:`delete from 基础数据_设备工位点检表 where 设备流水号 = @设备流水号`。 关键写入/状态处理语句线索:`delete from 基础数据_设备工位点检表 where 设备流水号 = @设备流水号`。 + +## 6. src/views/DeviceManagement/DeviceRealData/index.vue + +**页面位置**:`src/views/DeviceManagement/DeviceRealData/index.vue` +**所属模块**:DeviceManagement / DeviceRealData +**源码行数**:306 + +### 页面功能 + +该页面展示设备实时或近实时数据。用户按工位和数据类型查询当前采集值、统计值或状态,通常用于设备运行监控。 + +页面可见的操作/字段包括 “查询”、“item.name”、“设备名称”、“参数名称”、“参数值”、“操作”、“开始时间”、“结束时间”、“状态”、“时长(m)”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `设备管理_设备数据_工位信息_查询`、`设备管理_设备数据_统计数据查询`、`设备管理_设备数据_统计数据查询_通过类型` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `设备管理_设备数据_工位信息_查询` -> `设备管理_设备数据_统计数据查询` -> `设备管理_设备数据_统计数据查询_通过类型` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`item.name`、`设备名称`、`参数名称`、`参数值`、`操作`、`开始时间`、`结束时间`、`状态`、`时长(m)`、`订单编号`、`加工时长`、`采集时间`、`结束日期`、`开始日期`、`请选择设备` + +主要方法线索:`getbasedata` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.pageCurrent` | `@PageCurrent` | - | +| 参数 | `this.pageSize` | `@PageSize` | - | +| 参数 | `'1111', 'int', '1'` | `@PageCount` | - | +| 参数 | `'1111', 'int', '1'` | `@ItemCount` | - | +| 参数 | `this.completionTime[0` | `@开始时间` | - | +| 参数 | `this.completionTime[1` | `@结束时间` | - | +| 参数 | `this.equipmentType` | `@设备名称` | - | +| 参数 | `row.参数名称` | `@参数名称` | - | +| 参数 | `row.数据类型` | `@数据类型` | - | +| 显示列 | `设备名称` | - | `Zone` | +| 显示列 | `参数名称` | - | `TagName` | +| 显示列 | `参数值` | - | `参数值` | +| 显示列 | `操作` | - | `操作` | +| 显示列 | `开始时间` | - | `Zone` | +| 显示列 | `结束时间` | - | `TagName` | +| 显示列 | `状态` | - | `工位号, 设备状态, @状态名称 as 状态名称, convert(varchar(16), 创建时间, 121) as 创建时间` | +| 显示列 | `时长(m)` | - | `时长(m)` | +| 显示列 | `订单编号` | - | `Zone` | +| 显示列 | `加工时长` | - | `TagName` | +| 显示列 | `采集时间` | - | `采集时间` | +| 输入字段 | `completionTime` | `@开始时间` | - | +| 输入字段 | `equipmentType` | `@设备名称` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 170 | 11(当前通用存储过程查询/执行) | `设备管理_设备数据_工位信息_查询` | 查询/读取数据 | 查询、新增 | 未在 SQL 中解析到明确依赖 | +| 200 | 11(当前通用存储过程查询/执行) | `设备管理_设备数据_统计数据查询` | 查询/读取数据 | 查询、新增、处理报工/工时 | 表:`YL_设备管理_工时记录` | +| 283 | 11(当前通用存储过程查询/执行) | `设备管理_设备数据_统计数据查询_通过类型` | 查询/读取数据 | 查询、处理报工/工时 | 表:`YL_设备管理_工时记录` | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `设备管理_设备数据_统计数据查询`:`select top 1 @开机时刻 = convert(varchar(19), 创建时间, 121) from 历史_工位设备状态每分钟记录 where [工位号] = @设备名称 and 创建时间 > = @开始时间 and 创建时间 < = @结束时间 and 设备状态 = 1 order by 创建时间`;`select @停机时长 = count(1) from 历史_工位设备状态每分钟记录 where [工位号] = @设备名称 and 创建时间 > = @开始时间 and 创建时间 < = @结束时间 and 设备状态 = 0`;`select @报警时长 = count(1) from 历史_工位设备状态每分钟记录 where [工位号] = @设备名称 and 创建时间 > = @开始时间 and 创建时间 < = @结束时间 and 设备状态 = 2`;`select @关机时长 = count(1) from 历史_工位设备状态每分钟记录 where [工位号] = @设备名称 and 创建时间 > = @开始时间 and 创建时间 < = @结束时间 and 设备状态 = -1` +- `设备管理_设备数据_统计数据查询_通过类型`:`declare @设备状态 int = -999`;`declare @状态名称 nvarchar(50) = '未知'`;`if(@参数名称 = '开机时刻') begin set @设备状态 = 0 set @状态名称 = '开机' end`;`if(@参数名称 = '停机时长') begin set @设备状态 = 0 set @状态名称 = '停机' end`;`if(@参数名称 = '报警时长') begin set @设备状态 = 2 set @状态名称 = '报警' end`;`if(@参数名称 = '关机时长') begin set @设备状态 = -1 set @状态名称 = '关机' end`;`select 工位号, 设备状态, @状态名称 as 状态名称, convert(varchar(16), 创建时间, 121) as 创建时间 from 历史_工位设备状态每分钟记录 where [工位号] = @设备名称 and 创建时间 > = @开始时间 and 创建时间 < = @结束时间 and 设备状态 = @设备状态 order by 创建时间` + +### 数据库调用链 + +- `src/views/DeviceManagement/DeviceRealData/index.vue` -> `设备管理_设备数据_工位信息_查询` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/DeviceManagement/DeviceRealData/index.vue` -> `设备管理_设备数据_统计数据查询` -> 表:`YL_设备管理_工时记录` -> 查询/读取数据 +- `src/views/DeviceManagement/DeviceRealData/index.vue` -> `设备管理_设备数据_统计数据查询_通过类型` -> 表:`YL_设备管理_工时记录` -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `设备管理_设备数据_工位信息_查询` 属于 设备与实时数据,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、新增。 读取/关联对象:未在 SQL 中解析到明确依赖。 主要返回字段线索:`*`。 关键写入/状态处理语句线索:`insert into @TempTable (工位名称, 工位号)values('加3', '加3')`。 +- `设备管理_设备数据_统计数据查询` 属于 设备与实时数据,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、新增、处理报工/工时。 读取/关联对象:表:`YL_设备管理_工时记录`。 入参/分页参数:`@结束时间 nvarchar(50),`、`@开始时间 nvarchar(50),`、`@设备名称 nvarchar(50)`。 主要返回字段线索:`top 1 @开机时刻 = convert(varchar(19), 创建时间, 121)`。 关键过滤/匹配条件:`select top 1 @开机时刻 = convert(varchar(19), 创建时间, 121) from 历史_工位设备状态每分钟记录 where [工位号] = @设备名称 and 创建时间 > = @开始时间 and 创建时间 < = @结束时间 and 设备状态 = 1 order by 创建时间`;`select @停机时长 = count(1) from 历史_工位设备状态每分钟记录 where [工位号] = @设备名称 and 创建时间 > = @开始时间 and 创建时间 < = @结束时间 and 设备状态 = 0`;`select @报警时长 = count(1) from 历史_工位设备状态每分钟记录 where [工位号] = @设备名称 and 创建时间 > = @开始时间 and 创建时间 < = @结束时间 and 设备状态 = 2`;`select @关机时长 = count(1) from 历史_工位设备状态每分钟记录 where [工位号] = @设备名称 and 创建时间 > = @开始时间 and 创建时间 < = @结束时间 and 设备状态 = -1`;`select @程序时长 = sum(循环时间) from [YL_设备管理_工时记录] where 指派对象 = @设备名称 and 采集时间 > = @开始时间 and 采集时间 < = @结束时间`。 关键写入/状态处理语句线索:`set @开始时间 = @开始时间 + ' 00:00:00.000'`;`set @结束时间 = @结束时间 + ' 23:59:59.999'`;`insert into @TempTable (设备名称, 参数名称, 参数值, 数据类型)values(@设备名称, '开机时刻', @开机时刻, 0)`;`insert into @TempTable (设备名称, 参数名称, 参数值, 数据类型)values(@设备名称, '停机时长', @停机时长, 1)`;`insert into @TempTable (设备名称, 参数名称, 参数值, 数据类型)values(@设备名称, '关机时长', @关机时长, 1)`;`insert into @TempTable (设备名称, 参数名称, 参数值, 数据类型)values(@设备名称, '报警时长', @报警时长, 1)`;`insert into @TempTable (设备名称, 参数名称, 参数值, 数据类型)values(@设备名称, '程序时长', @程序时长, 2)`。 排序/分组/分页线索:`select top 1 @开机时刻 = convert(varchar(19), 创建时间, 121) from 历史_工位设备状态每分钟记录 where [工位号] = @设备名称 and 创建时间 > = @开始时间 and 创建时间 < = @结束时间 and 设备状态 = 1 order by 创建时间`。 +- `设备管理_设备数据_统计数据查询_通过类型` 属于 设备与实时数据,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:表:`YL_设备管理_工时记录`。 入参/分页参数:`@结束时间 nvarchar(50),`、`@开始时间 nvarchar(50),`、`@设备名称 nvarchar(50),`、`@参数名称 nvarchar(50),`、`@数据类型 int`。 主要返回字段线索:`工位号, 设备状态, @状态名称 as 状态名称, convert(varchar(16), 创建时间, 121) as 创建时间`。 关键过滤/匹配条件:`select 工位号, 设备状态, @状态名称 as 状态名称, convert(varchar(16), 创建时间, 121) as 创建时间 from 历史_工位设备状态每分钟记录 where [工位号] = @设备名称 and 创建时间 > = @开始时间 and 创建时间 < = @结束时间 and 设备状态 = @设备状态 order by 创建时间`;`select * from [YL_设备管理_工时记录] where 指派对象 = @设备名称 and 采集时间 > = @开始时间 and 采集时间 < = @结束时间 order by 采集时间`。 关键写入/状态处理语句线索:`SET @开始时间 = @开始时间 + ' 00:00:00.000'`;`SET @结束时间 = @结束时间 + ' 23:59:59.999'`;`if(@参数名称 = '开机时刻') begin set @设备状态 = 0 set @状态名称 = '开机' end`;`if(@参数名称 = '停机时长') begin set @设备状态 = 0 set @状态名称 = '停机' end`;`if(@参数名称 = '报警时长') begin set @设备状态 = 2 set @状态名称 = '报警' end`;`if(@参数名称 = '关机时长') begin set @设备状态 = -1 set @状态名称 = '关机' end`。 排序/分组/分页线索:`select 工位号, 设备状态, @状态名称 as 状态名称, convert(varchar(16), 创建时间, 121) as 创建时间 from 历史_工位设备状态每分钟记录 where [工位号] = @设备名称 and 创建时间 > = @开始时间 and 创建时间 < = @结束时间 and 设备状态 = @设备状态 order by 创建时间`;`select * from [YL_设备管理_工时记录] where 指派对象 = @设备名称 and 采集时间 > = @开始时间 and 采集时间 < = @结束时间 order by 采集时间`。 + +## 7. src/views/DeviceManagement/Devicedata/index.vue + +**页面位置**:`src/views/DeviceManagement/Devicedata/index.vue` +**所属模块**:DeviceManagement / Devicedata +**源码行数**:165 + +### 页面功能 + +该页面面向设备采集数据管理,查询缓存变量和设备数据,支持按设备、参数、时间等维度查看实时或历史采集结果。 + +页面可见的操作/字段包括 “查询”、“item.name”、“设备名称”、“参数名称”、“设备编号”、“数值”、“单位”、“更新时间”、“请选择设备”、“请输入参数名称”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `MES_登录_工位与名称_查询`、`设备管理_设备数据查询` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `MES_登录_工位与名称_查询` -> `设备管理_设备数据查询` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`item.name`、`设备名称`、`参数名称`、`设备编号`、`数值`、`单位`、`更新时间`、`请选择设备`、`请输入参数名称` + +主要方法线索:`getbasedata` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.pageCurrent` | `@PageCurrent` | - | +| 参数 | `this.pageSize` | `@PageSize` | - | +| 参数 | `'1111', 'int', '1'` | `@PageCount` | - | +| 参数 | `'1111', 'int', '1'` | `@ItemCount` | - | +| 参数 | `this.equipmentType` | `@设备名称` | - | +| 参数 | `this.dataname` | `@参数名称` | - | +| 显示列 | `设备名称` | - | `[Zone], ` | +| 显示列 | `参数名称` | - | `[TagName], ` | +| 显示列 | `设备编号` | - | `[TagID], ` | +| 显示列 | `数值` | - | `数值` | +| 显示列 | `单位` | - | `TagUnit` | +| 显示列 | `更新时间` | - | `更新时间` | +| 输入字段 | `equipmentType` | `@设备名称` | - | +| 输入字段 | `dataname` | `@参数名称` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 126 | 11(当前通用存储过程查询/执行) | `MES_登录_工位与名称_查询` | 查询/读取数据 | 查询 | 视图:`View_基础数据_工位` | +| 144 | 11(当前通用存储过程查询/执行) | `设备管理_设备数据查询` | 查询/读取数据 | 查询、分页 | 表:`CaChe_Var` | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `设备管理_设备数据查询`:`WHEN [TagName] = N''设备状态'' THEN` + +### 数据库调用链 + +- `src/views/DeviceManagement/Devicedata/index.vue` -> `MES_登录_工位与名称_查询` -> 视图:`View_基础数据_工位` -> 查询/读取数据 +- `src/views/DeviceManagement/Devicedata/index.vue` -> `设备管理_设备数据查询` -> 表:`CaChe_Var` -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `MES_登录_工位与名称_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_基础数据_工位`。 主要返回字段线索:`[VisCode] as 工位代码`、`[VisCode] as MesWebCode`、`[VisCode] as 工位号`、`[Name] as 指南工位号`、`[Name] as 工位名称`。 排序/分组/分页线索:`order by [VisCode]`。 +- `设备管理_设备数据查询` 属于 设备与实时数据,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、分页。 读取/关联对象:表:`CaChe_Var`。 入参/分页参数:`@PageCurrent int`、`@PageSize int`、`@PageCount int`、`@ItemCount int`、`@设备名称 nvarchar(50),`、`@参数名称 nvarchar(50)`。 主要返回字段线索:`[AID], `、`[CreateTime], `、`[UpdateTime], `、`[Zone], `、`[Sort], `、`[TagID], `、`[TagName], `、`CASE`、`WHEN [TagName] = N''操作模式'' THEN`、`CASE TRY_CAST([TagValue] AS INT)`。 关键过滤/匹配条件:`DECLARE @where NVARCHAR(4000) = N' WHERE 1 = 1 ';`;`SET @where = @where + N' AND Zone = ''' + REPLACE(@设备名称, '''', '''''') + '''';`;`SET @where = @where + N' AND TagName LIKE ''%' + REPLACE(@参数名称, '''', '''''') + '%''';`;`SET @selectStr = @selectStr + @where;`。 关键写入/状态处理语句线索:`SET @where = @where + N' AND Zone = ''' + REPLACE(@设备名称, '''', '''''') + '''';`;`SET @where = @where + N' AND TagName LIKE ''%' + REPLACE(@参数名称, '''', '''''') + '%''';`;`SET @selectStr = N'`;`SET @selectStr = @selectStr + @where;`。 + +## 8. src/views/PlanManagement/InstallMakePlanDo/index.vue + +**页面位置**:`src/views/PlanManagement/InstallMakePlanDo/index.vue` +**所属模块**:PlanManagement / InstallMakePlanDo +**源码行数**:1763 + +### 页面功能 + +该页面处理装配件排产。用户查询待排产/已排产装配任务,选择工位和人员,修改计划开工/完成时间、优先级、说明,执行单条派工、二次派工、批量确认排产,并在确认时同步 SAP 生产订单状态或创建相关请求。 + +页面可见的操作/字段包括 “查询”、“批量排产”、“排产完成”、“确定”、“派工”、“计划排产”、“编辑”、“取 消”、“确 定”、“全部”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Queryzp`、`Prog_MES_LoadStations`、`系统管理_人员管理_所有有效人员查询`、`MES_OrderPlanned_EditTaskPlanned` 等过程 取数或提交业务动作。 + +### 页面流程图 + +装配排产流程: + +```mermaid +flowchart LR + A[输入订单/合同/物料/工序/时间条件] --> B[MES_OrderPlanned_Queryzp 查询装配任务] + B --> C[选择任务] + C --> D[Prog_MES_LoadStations 选择工位] + D --> E[系统管理_人员管理_所有有效人员查询 选择人员] + E --> F[计划排产_派工 或 MES_OrderPlanned_SingleTaskPlanned] + F --> G[计划排产_二次派工] + G --> H[MES_OrderPlanned_Finish 确认排产] + H --> I[PATCH /ProductionOrders(...) 或 POST SAP 请求] + I --> J[刷新排产结果] +``` + + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`批量排产`、`排产完成`、`确定`、`派工`、`计划排产`、`编辑`、`取 消`、`确 定`、`全部`、`已完成`、`未完成`、`item.指南工位号`、`表单`、`序号`、`生产订单`、`计划号`、`物料编码` + +主要方法线索:`getCurrentTime` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.orderNo ` | `@订单号` | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `'自制件'` | `@物料类型` | - | +| 参数 | `this.contractNo` | `@合同号` | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `this.productCode` | `@产品编码` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.productName` | `@产品名称` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.processName` | `@工序名称` | - | +| 参数 | `this.nature` | `@性质` | - | +| 参数 | `this.completionTime[0` | `@要求完工日期1` | - | +| 参数 | `this.completionTime[1` | `@要求完工日期2` | - | +| 参数 | `this.planStartTime[0` | `@计划开始1` | - | +| 参数 | `this.planStartTime[1` | `@计划开始2` | - | +| 参数 | `this.planendTime[0` | `@计划完成1` | - | +| 参数 | `this.planendTime[1` | `@计划完成2` | - | +| 参数 | `this.productionStatus` | `@排产状态` | - | +| 参数 | `this.station` | `@指派对象` | - | +| 参数 | `this.doneorderNo ` | `@订单号` | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `this.donecontractNo` | `@合同号` | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `this.doneproductCode` | `@产品编码` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.doneproductName` | `@产品名称` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.doneprocessName` | `@工序名称` | - | +| 参数 | `this.donenature` | `@性质` | - | +| 参数 | `this.doneproductionStatus` | `@排产状态` | - | +| 参数 | `editstr` | `@editstr` | - | +| 参数 | `row.订单号` | `@订单号` | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `row.订单行号` | `@订单行号` | - | +| 参数 | `row.拆分内码` | `@订单拆分内码` | - | +| 参数 | `row.taskaid` | `@TaskAID` | - | +| 参数 | `row.二次派工` | `@personnel` | - | +| 参数 | `row.派工特殊说明` | `@派工特殊说明` | - | +| 参数 | `this.$store.state.user.name` | `@派工操作人` | - | +| 参数 | `row.指派对象编号` | `@指派对象编号` | - | +| 参数 | `row.指派对象` | `@指派对象` | - | +| 参数 | `this.editnumber` | `@指派数量` | - | +| 参数 | `row.计划开始时间` | `@计划开始时间` | - | +| 参数 | `row.计划完成时间` | `@计划完成时间` | - | +| 参数 | `row.最晚开始时间` | `@最晚开始时间` | - | +| 参数 | `item.订单号` | `@订单号` | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `item.订单行号` | `@订单行号` | - | +| 参数 | `item.拆分内码` | `@订单拆分内码` | - | +| 参数 | `item.指派对象编号` | `@指派对象编号` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- SAP B1 Service Layer(`src/api/b1s.js`) +- FullCalendar + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 816 | 11(当前通用存储过程查询/执行) | `计划排产_生产订单_已排产订单查询` | 查询/读取数据 | 查询、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 965 | 11(当前通用存储过程查询/执行) | `MES_登录_工位与名称_查询` | 查询/读取数据 | 查询 | 视图:`View_基础数据_工位` | +| 1034 | 11(当前通用存储过程查询/执行) | `MES_OrderPlanned_Queryzp` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` | +| 1089 | 11(当前通用存储过程查询/执行) | `MES_OrderPlanned_Queryzp` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` | +| 1124 | 11(当前通用存储过程查询/执行) | `Prog_MES_LoadStations` | 查询/读取数据 | 查询、处理外协业务 | 表:`MES_资源主数据` | +| 1137 | 11(当前通用存储过程查询/执行) | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 查询 | 视图:`登录基础数据_管理人员权限视图` | +| 1177 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1194 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1211 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1228 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1242 | 12(当前通用存储过程写入/业务动作) | `计划排产_二次派工` | 计划排产或派工 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1251 | 12(当前通用存储过程写入/业务动作) | `计划排产_二次派工` | 计划排产或派工 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1325 | 12(当前通用存储过程写入/业务动作) | `计划排产_派工` | 计划排产或派工 | 查询、新增、更新、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1378 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 查询、新增、更新、删除、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1409 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 查询、新增、更新、删除、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1531 | 11(当前通用存储过程查询/执行) | `MES_OrderPlanned_Finish` | 确认/关闭/完成业务动作 | 查询、更新、解析 JSON 批量数据、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1560 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1641 | 12(当前通用存储过程写入/业务动作) | `计划排产_自制件_日程时间修改` | 更新/保存业务数据 | 查询、更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | + +### 与 SAP 的交互 + +页面直接 SAP/接口调用: +- 第 1332 行:`postB1("/PurchaseRequests")` +- 第 1523 行:`patchB1("/ProductionOrders(")` + +### SAP 接口级说明 + +| 行号 | 方法 | 接口 | 调用时机/影响判断 | 提交字段线索 | +|---:|---|---|---|---| +| 1332 | `postB1` | `/PurchaseRequests` | 调用外部接口,失败会影响对应外部系统同步。 | `ReqType`、`Requester`、`PriceMode`、`RequesterBranch`、`RequesterDepartment`、`DocDate`、`DocDueDate`、`TaxDate`、`RequriedDate`、`Comments`、`DocumentLines`、`ItemCode` | +| 1523 | `patchB1` | `/ProductionOrders(` | 读取或更新 SAP 生产订单。失败会导致 MES 与 SAP 订单状态/工序资源不同步。 | `AbsoluteEntry`、`U_MODueDate`、`U_MOStartDate`、`U_YJQTdate`、`优先级`、`未完成说明`、`派工特殊说明` | + +### 状态流转说明 + +- `计划排产_生产订单_已排产订单查询`:`CREATE PROCEDURE [dbo].[计划排产_生产订单_已排产订单查询]`;`select * from [dbo].[MES_接口_生产计划_生产任务] where 排产状态 = 1` +- `MES_OrderPlanned_Queryzp`:`@计划完成1 nvarchar(50) = '', `;`@计划完成2 nvarchar(50) = '', `;`@排产状态 nvarchar(50) = '全部', `;`[计划完成] as 要求完工日期, [工序名称], 完成数量, v.计划号, 收料数量, 外协分组, v.任务状态, `;`case when [加急状态] = 1 then ''加急'' else '''' end as 加急状态, 性质, isnull(总工时, 0) as 总工时, [占用情况]`;`, [排产状态], [工序计划数量], 指派对象编号, 指派对象, TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, `;`[派工状态], [外协通知], [优先级], [未完成说明], [派工特殊说明], [最后编辑人], [最后编辑时间], [二次派工], `;`FROM dbo.YL_质量检验_质检记录` +- `MES_OrderPlanned_Queryzp`:`@计划完成1 nvarchar(50) = '', `;`@计划完成2 nvarchar(50) = '', `;`@排产状态 nvarchar(50) = '全部', `;`[计划完成] as 要求完工日期, [工序名称], 完成数量, v.计划号, 收料数量, 外协分组, v.任务状态, `;`case when [加急状态] = 1 then ''加急'' else '''' end as 加急状态, 性质, isnull(总工时, 0) as 总工时, [占用情况]`;`, [排产状态], [工序计划数量], 指派对象编号, 指派对象, TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, `;`[派工状态], [外协通知], [优先级], [未完成说明], [派工特殊说明], [最后编辑人], [最后编辑时间], [二次派工], `;`FROM dbo.YL_质量检验_质检记录` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `计划排产_二次派工`:`create PROCEDURE [dbo].[计划排产_二次派工]`;`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID` +- `计划排产_二次派工`:`create PROCEDURE [dbo].[计划排产_二次派工]`;`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID` +- `计划排产_派工`:`CREATE PROCEDURE [dbo].[计划排产_派工]`;`@派工操作人 NVARCHAR(50)`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`[派工状态] = 1`;`, [派工时间] = getdate()`;`, [派工操作人] = @派工操作人`;`'成功' AS 状态, ` +- `MES_OrderPlanned_SingleTaskPlanned`:`@派工特殊说明 nvarchar(500) = '', `;`@计划完成时间 nvarchar(50) = '', `;`@派工操作人 nvarchar(50) = ''`;`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`INSERT INTO [MES_接口_生产计划_生产任务]` +- `MES_OrderPlanned_SingleTaskPlanned`:`@派工特殊说明 nvarchar(500) = '', `;`@计划完成时间 nvarchar(50) = '', `;`@派工操作人 nvarchar(50) = ''`;`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`INSERT INTO [MES_接口_生产计划_生产任务]` +- `MES_OrderPlanned_Finish`:`@任务列表 NVARCHAR(MAX), `;`@派工操作人 NVARCHAR(MAX)`;`t.[排产状态] = 1, `;`t.[任务状态] = 0, `;`t.派工特殊说明 = j.派工特殊说明, `;`t.计划完成时间 = j.计划完成时间, `;`t.派工操作人 = @派工操作人, `;`t.最后编辑人 = @派工操作人, ` +- `MES_OrderPlanned_DescriptionEdit`:`@未完成说明 nvarchar(50) = '', `;`@派工特殊说明 nvarchar(500) = '', `;`Update [MES_接口_生产计划_生产任务] set`;`未完成说明 = @未完成说明, `;`派工特殊说明 = @派工特殊说明, ` +- `计划排产_自制件_日程时间修改`:`CREATE PROCEDURE [dbo].[计划排产_自制件_日程时间修改]`;`@计划完成时间 nvarchar(50) = ''`;`IF @计划完成时间 ''`;`SET @EndTime = CONVERT(datetime, @计划完成时间, 120)`;`UPDATE [MES_接口_生产计划_生产任务]`;`计划完成时间 = @EndTime`;`AND ISNULL(派工状态, 0) = 0`;`SELECT '0' AS result, '未找到符合条件的记录或派工状态不为0' AS message` + +### 数据库调用链 + +- `src/views/PlanManagement/InstallMakePlanDo/index.vue` -> `计划排产_生产订单_已排产订单查询` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 查询/读取数据 +- `src/views/PlanManagement/InstallMakePlanDo/index.vue` -> `MES_登录_工位与名称_查询` -> 视图:`View_基础数据_工位` -> 查询/读取数据 +- `src/views/PlanManagement/InstallMakePlanDo/index.vue` -> `MES_OrderPlanned_Queryzp` -> 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/PlanManagement/InstallMakePlanDo/index.vue` -> `MES_OrderPlanned_Queryzp` -> 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/PlanManagement/InstallMakePlanDo/index.vue` -> `Prog_MES_LoadStations` -> 表:`MES_资源主数据` -> 查询/读取数据 +- `src/views/PlanManagement/InstallMakePlanDo/index.vue` -> `系统管理_人员管理_所有有效人员查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/PlanManagement/InstallMakePlanDo/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/InstallMakePlanDo/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/InstallMakePlanDo/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/InstallMakePlanDo/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/InstallMakePlanDo/index.vue` -> `计划排产_二次派工` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/InstallMakePlanDo/index.vue` -> `计划排产_二次派工` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/InstallMakePlanDo/index.vue` -> `计划排产_派工` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/InstallMakePlanDo/index.vue` -> `MES_OrderPlanned_SingleTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/InstallMakePlanDo/index.vue` -> `MES_OrderPlanned_SingleTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/InstallMakePlanDo/index.vue` -> `MES_OrderPlanned_Finish` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 确认/关闭/完成业务动作 +- `src/views/PlanManagement/InstallMakePlanDo/index.vue` -> `MES_OrderPlanned_DescriptionEdit` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/InstallMakePlanDo/index.vue` -> `计划排产_自制件_日程时间修改` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `计划排产_生产订单_已排产订单查询` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`select * from [dbo].[MES_接口_生产计划_生产任务] where 排产状态 = 1`。 +- `MES_登录_工位与名称_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_基础数据_工位`。 主要返回字段线索:`[VisCode] as 工位代码`、`[VisCode] as MesWebCode`、`[VisCode] as 工位号`、`[Name] as 指南工位号`、`[Name] as 工位名称`。 排序/分组/分页线索:`order by [VisCode]`。 +- `MES_OrderPlanned_Queryzp` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES`。 入参/分页参数:`@订单号 int`、`@物料类型 nvarchar(50)`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@要求完工日期1 nvarchar(50)`、`@要求完工日期2 nvarchar(50)`、`@计划开始1 nvarchar(50)`、`@计划开始2 nvarchar(50)`、`@计划完成1 nvarchar(50)`、`@计划完成2 nvarchar(50)`、`@排产状态 nvarchar(50)`、`@指派对象 nvarchar(50)`。 主要返回字段线索:`top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, `、`[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''`。 关键过滤/匹配条件:`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and [自制件属性] like ''%装配%'''`;`WHERE 质检类型 = ''终检''`;`AND v.[订单行号] = g.工艺顺序'`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`。 关键写入/状态处理语句线索:`set @selectStr = '`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@计划开始1 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] > = '''+@计划开始1+''''`;`if(@计划开始2 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] < = '''+@计划开始2+''''`;`if(@计划完成1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] > = '''+@计划完成1+''''`;`if(@计划完成2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] < = '''+@计划完成2+''''`。 +- `MES_OrderPlanned_Queryzp` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES`。 入参/分页参数:`@订单号 int`、`@物料类型 nvarchar(50)`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@要求完工日期1 nvarchar(50)`、`@要求完工日期2 nvarchar(50)`、`@计划开始1 nvarchar(50)`、`@计划开始2 nvarchar(50)`、`@计划完成1 nvarchar(50)`、`@计划完成2 nvarchar(50)`、`@排产状态 nvarchar(50)`、`@指派对象 nvarchar(50)`。 主要返回字段线索:`top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, `、`[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''`。 关键过滤/匹配条件:`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and [自制件属性] like ''%装配%'''`;`WHERE 质检类型 = ''终检''`;`AND v.[订单行号] = g.工艺顺序'`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`。 关键写入/状态处理语句线索:`set @selectStr = '`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@计划开始1 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] > = '''+@计划开始1+''''`;`if(@计划开始2 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] < = '''+@计划开始2+''''`;`if(@计划完成1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] > = '''+@计划完成1+''''`;`if(@计划完成2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] < = '''+@计划完成2+''''`。 +- `Prog_MES_LoadStations` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理外协业务。 读取/关联对象:表:`MES_资源主数据`。 主要返回字段线索:`[VisCode], [Name] as OPName`。 关键过滤/匹配条件:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 排序/分组/分页线索:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 +- `系统管理_人员管理_所有有效人员查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`Personnel_Number AS 人员编号, `、`Personnel_Name AS 人员姓名, `、`account AS 账号, `、`Roles_Function AS 角色, `、`部门名称`。 关键过滤/匹配条件:`WHERE Quit = 0`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY Personnel_Name;`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `计划排产_二次派工` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID int,`、`@personnel nvarchar(500)`。 关键过滤/匹配条件:`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID`。 关键写入/状态处理语句线索:`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID`。 +- `计划排产_二次派工` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID int,`、`@personnel nvarchar(500)`。 关键过滤/匹配条件:`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID`。 关键写入/状态处理语句线索:`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID`。 +- `计划排产_派工` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:查询、新增、更新、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单编号列表 NVARCHAR(MAX),`、`@派工操作人 NVARCHAR(50)`。 主要返回字段线索:`value`。 关键过滤/匹配条件:`WHERE LTRIM(RTRIM(value)) '';`;`WHERE AID IN (SELECT 订单编号 FROM #TempOrders);`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO #TempOrders (订单编号)`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET`。 实现特征:事务控制、临时表 `#TempOrders`。 +- `MES_OrderPlanned_SingleTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:查询、新增、更新、删除、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`、`@指派对象编号 nvarchar(50)`、`@指派对象 nvarchar(50)`、`@指派数量 int`、`@派工特殊说明 nvarchar(500)`、`@计划开始时间 nvarchar(50)`、`@计划完成时间 nvarchar(50)`、`@最晚开始时间 nvarchar(50)`、`@派工操作人 nvarchar(50)`。 主要返回字段线索:`@计划数量 = 计划数量`。 关键过滤/匹配条件:`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`FROM [MES_接口_生产计划_生产任务] WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`select @未指派数量_剩余 = 计划数量+@指派数量_Free from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`WHERE [订单编号] = @订单号 AND [订单行号] = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`set @指派数量_Free = @计划数量-@指派数量`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`INSERT INTO [MES_接口_生产计划_生产任务]`;`set @ErrMsg = '指派数量大于剩余未分配数量,派工失败'`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`if(@最晚开始时间 = '') set @最晚开始时间 = NULL`;`if(@计划开始时间 = '') set @计划开始时间 = NULL`;`if(@计划完成时间 = '') set @计划完成时间 = NULL`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET [指派对象编号] = @指派对象编号`。 +- `MES_OrderPlanned_SingleTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:查询、新增、更新、删除、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`、`@指派对象编号 nvarchar(50)`、`@指派对象 nvarchar(50)`、`@指派数量 int`、`@派工特殊说明 nvarchar(500)`、`@计划开始时间 nvarchar(50)`、`@计划完成时间 nvarchar(50)`、`@最晚开始时间 nvarchar(50)`、`@派工操作人 nvarchar(50)`。 主要返回字段线索:`@计划数量 = 计划数量`。 关键过滤/匹配条件:`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`FROM [MES_接口_生产计划_生产任务] WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`select @未指派数量_剩余 = 计划数量+@指派数量_Free from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`WHERE [订单编号] = @订单号 AND [订单行号] = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`set @指派数量_Free = @计划数量-@指派数量`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`INSERT INTO [MES_接口_生产计划_生产任务]`;`set @ErrMsg = '指派数量大于剩余未分配数量,派工失败'`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`if(@最晚开始时间 = '') set @最晚开始时间 = NULL`;`if(@计划开始时间 = '') set @计划开始时间 = NULL`;`if(@计划完成时间 = '') set @计划完成时间 = NULL`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET [指派对象编号] = @指派对象编号`。 +- `MES_OrderPlanned_Finish` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 确认/关闭/完成业务动作。 数据库处理摘要:查询、更新、解析 JSON 批量数据、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 入参/分页参数:`@任务列表 NVARCHAR(MAX),`、`@派工操作人 NVARCHAR(MAX)`。 主要返回字段线索:`TaskAID = JSON_VALUE(value, '$.taskaid'), `、`指派对象 = JSON_VALUE(value, '$."指派对象"'), `、`指派数量 = JSON_VALUE(value, '$."指派数量"'), `、`指派对象编号 = JSON_VALUE(value, '$."指派对象编号"'), `、`派工特殊说明 = JSON_VALUE(value, '$."派工特殊说明"'), `、`计划开始时间 = JSON_VALUE(value, '$."计划开始时间"'), `、`计划完成时间 = JSON_VALUE(value, '$."计划完成时间"'), `、`最晚开始时间 = JSON_VALUE(value, '$."最晚开始时间"')`。 关键写入/状态处理语句线索:`UPDATE t`;`SET`。 实现特征:JSON 批量解析。 +- `MES_OrderPlanned_DescriptionEdit` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int,`、`@订单行号 int,`、`@订单拆分内码 int,`、`@优先级 nvarchar(50)`、`@未完成说明 nvarchar(50)`、`@派工特殊说明 nvarchar(500)`、`@最后编辑人 nvarchar(500)`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`Update [MES_接口_生产计划_生产任务] set`。 +- `计划排产_自制件_日程时间修改` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int,`、`@订单行号 int`、`@订单拆分内码 int`、`@计划开始时间 nvarchar(50)`、`@计划完成时间 nvarchar(50)`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单号`;`AND 订单行号 = @订单行号`;`AND 订单拆分内码 = @订单拆分内码`;`AND ISNULL(派工状态, 0) = 0`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @StartTime = CONVERT(datetime, @计划开始时间, 120)`;`SET @StartTime = NULL`;`SET @EndTime = CONVERT(datetime, @计划完成时间, 120)`;`SET @EndTime = NULL`;`UPDATE [MES_接口_生产计划_生产任务]`;`SET 计划开始时间 = @StartTime, `。 实现特征:异常捕获。 + +## 9. src/views/PlanManagement/InstallMakePlan/index.vue + +**页面位置**:`src/views/PlanManagement/InstallMakePlan/index.vue` +**所属模块**:PlanManagement / InstallMakePlan +**源码行数**:1763 + +### 页面功能 + +该页面处理装配件排产。用户查询待排产/已排产装配任务,选择工位和人员,修改计划开工/完成时间、优先级、说明,执行单条派工、二次派工、批量确认排产,并在确认时同步 SAP 生产订单状态或创建相关请求。 + +页面可见的操作/字段包括 “查询”、“批量排产”、“排产完成”、“确定”、“派工”、“计划排产”、“编辑”、“取 消”、“确 定”、“全部”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Queryzp`、`Prog_MES_LoadStations`、`系统管理_人员管理_所有有效人员查询`、`MES_OrderPlanned_EditTaskPlanned` 等过程 取数或提交业务动作。 + +### 页面流程图 + +装配排产流程: + +```mermaid +flowchart LR + A[输入订单/合同/物料/工序/时间条件] --> B[MES_OrderPlanned_Queryzp 查询装配任务] + B --> C[选择任务] + C --> D[Prog_MES_LoadStations 选择工位] + D --> E[系统管理_人员管理_所有有效人员查询 选择人员] + E --> F[计划排产_派工 或 MES_OrderPlanned_SingleTaskPlanned] + F --> G[计划排产_二次派工] + G --> H[MES_OrderPlanned_Finish 确认排产] + H --> I[PATCH /ProductionOrders(...) 或 POST SAP 请求] + I --> J[刷新排产结果] +``` + + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`批量排产`、`排产完成`、`确定`、`派工`、`计划排产`、`编辑`、`取 消`、`确 定`、`全部`、`已完成`、`未完成`、`item.指南工位号`、`表单`、`序号`、`生产订单`、`计划号`、`物料编码` + +主要方法线索:`getCurrentTime` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.orderNo ` | `@订单号` | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `'自制件'` | `@物料类型` | - | +| 参数 | `this.contractNo` | `@合同号` | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `this.productCode` | `@产品编码` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.productName` | `@产品名称` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.processName` | `@工序名称` | - | +| 参数 | `this.nature` | `@性质` | - | +| 参数 | `this.completionTime[0` | `@要求完工日期1` | - | +| 参数 | `this.completionTime[1` | `@要求完工日期2` | - | +| 参数 | `this.planStartTime[0` | `@计划开始1` | - | +| 参数 | `this.planStartTime[1` | `@计划开始2` | - | +| 参数 | `this.planendTime[0` | `@计划完成1` | - | +| 参数 | `this.planendTime[1` | `@计划完成2` | - | +| 参数 | `this.productionStatus` | `@排产状态` | - | +| 参数 | `this.station` | `@指派对象` | - | +| 参数 | `this.doneorderNo ` | `@订单号` | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `this.donecontractNo` | `@合同号` | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `this.doneproductCode` | `@产品编码` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.doneproductName` | `@产品名称` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.doneprocessName` | `@工序名称` | - | +| 参数 | `this.donenature` | `@性质` | - | +| 参数 | `this.doneproductionStatus` | `@排产状态` | - | +| 参数 | `editstr` | `@editstr` | - | +| 参数 | `row.订单号` | `@订单号` | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `row.订单行号` | `@订单行号` | - | +| 参数 | `row.拆分内码` | `@订单拆分内码` | - | +| 参数 | `row.taskaid` | `@TaskAID` | - | +| 参数 | `row.二次派工` | `@personnel` | - | +| 参数 | `row.派工特殊说明` | `@派工特殊说明` | - | +| 参数 | `this.$store.state.user.name` | `@派工操作人` | - | +| 参数 | `row.指派对象编号` | `@指派对象编号` | - | +| 参数 | `row.指派对象` | `@指派对象` | - | +| 参数 | `this.editnumber` | `@指派数量` | - | +| 参数 | `row.计划开始时间` | `@计划开始时间` | - | +| 参数 | `row.计划完成时间` | `@计划完成时间` | - | +| 参数 | `row.最晚开始时间` | `@最晚开始时间` | - | +| 参数 | `item.订单号` | `@订单号` | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `item.订单行号` | `@订单行号` | - | +| 参数 | `item.拆分内码` | `@订单拆分内码` | - | +| 参数 | `item.指派对象编号` | `@指派对象编号` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- SAP B1 Service Layer(`src/api/b1s.js`) +- FullCalendar + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 816 | 11(当前通用存储过程查询/执行) | `计划排产_生产订单_已排产订单查询` | 查询/读取数据 | 查询、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 965 | 11(当前通用存储过程查询/执行) | `MES_登录_工位与名称_查询` | 查询/读取数据 | 查询 | 视图:`View_基础数据_工位` | +| 1034 | 11(当前通用存储过程查询/执行) | `MES_OrderPlanned_Queryzp` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` | +| 1089 | 11(当前通用存储过程查询/执行) | `MES_OrderPlanned_Queryzp` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` | +| 1124 | 11(当前通用存储过程查询/执行) | `Prog_MES_LoadStations` | 查询/读取数据 | 查询、处理外协业务 | 表:`MES_资源主数据` | +| 1137 | 11(当前通用存储过程查询/执行) | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 查询 | 视图:`登录基础数据_管理人员权限视图` | +| 1177 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1194 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1211 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1228 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1242 | 12(当前通用存储过程写入/业务动作) | `计划排产_二次派工` | 计划排产或派工 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1251 | 12(当前通用存储过程写入/业务动作) | `计划排产_二次派工` | 计划排产或派工 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1325 | 12(当前通用存储过程写入/业务动作) | `计划排产_派工` | 计划排产或派工 | 查询、新增、更新、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1378 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 查询、新增、更新、删除、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1409 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 查询、新增、更新、删除、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1531 | 11(当前通用存储过程查询/执行) | `MES_OrderPlanned_Finish` | 确认/关闭/完成业务动作 | 查询、更新、解析 JSON 批量数据、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1560 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1641 | 12(当前通用存储过程写入/业务动作) | `计划排产_自制件_日程时间修改` | 更新/保存业务数据 | 查询、更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | + +### 与 SAP 的交互 + +页面直接 SAP/接口调用: +- 第 1332 行:`postB1("/PurchaseRequests")` +- 第 1523 行:`patchB1("/ProductionOrders(")` + +### SAP 接口级说明 + +| 行号 | 方法 | 接口 | 调用时机/影响判断 | 提交字段线索 | +|---:|---|---|---|---| +| 1332 | `postB1` | `/PurchaseRequests` | 调用外部接口,失败会影响对应外部系统同步。 | `ReqType`、`Requester`、`PriceMode`、`RequesterBranch`、`RequesterDepartment`、`DocDate`、`DocDueDate`、`TaxDate`、`RequriedDate`、`Comments`、`DocumentLines`、`ItemCode` | +| 1523 | `patchB1` | `/ProductionOrders(` | 读取或更新 SAP 生产订单。失败会导致 MES 与 SAP 订单状态/工序资源不同步。 | `AbsoluteEntry`、`U_MODueDate`、`U_MOStartDate`、`U_YJQTdate`、`优先级`、`未完成说明`、`派工特殊说明` | + +### 状态流转说明 + +- `计划排产_生产订单_已排产订单查询`:`CREATE PROCEDURE [dbo].[计划排产_生产订单_已排产订单查询]`;`select * from [dbo].[MES_接口_生产计划_生产任务] where 排产状态 = 1` +- `MES_OrderPlanned_Queryzp`:`@计划完成1 nvarchar(50) = '', `;`@计划完成2 nvarchar(50) = '', `;`@排产状态 nvarchar(50) = '全部', `;`[计划完成] as 要求完工日期, [工序名称], 完成数量, v.计划号, 收料数量, 外协分组, v.任务状态, `;`case when [加急状态] = 1 then ''加急'' else '''' end as 加急状态, 性质, isnull(总工时, 0) as 总工时, [占用情况]`;`, [排产状态], [工序计划数量], 指派对象编号, 指派对象, TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, `;`[派工状态], [外协通知], [优先级], [未完成说明], [派工特殊说明], [最后编辑人], [最后编辑时间], [二次派工], `;`FROM dbo.YL_质量检验_质检记录` +- `MES_OrderPlanned_Queryzp`:`@计划完成1 nvarchar(50) = '', `;`@计划完成2 nvarchar(50) = '', `;`@排产状态 nvarchar(50) = '全部', `;`[计划完成] as 要求完工日期, [工序名称], 完成数量, v.计划号, 收料数量, 外协分组, v.任务状态, `;`case when [加急状态] = 1 then ''加急'' else '''' end as 加急状态, 性质, isnull(总工时, 0) as 总工时, [占用情况]`;`, [排产状态], [工序计划数量], 指派对象编号, 指派对象, TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, `;`[派工状态], [外协通知], [优先级], [未完成说明], [派工特殊说明], [最后编辑人], [最后编辑时间], [二次派工], `;`FROM dbo.YL_质量检验_质检记录` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `计划排产_二次派工`:`create PROCEDURE [dbo].[计划排产_二次派工]`;`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID` +- `计划排产_二次派工`:`create PROCEDURE [dbo].[计划排产_二次派工]`;`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID` +- `计划排产_派工`:`CREATE PROCEDURE [dbo].[计划排产_派工]`;`@派工操作人 NVARCHAR(50)`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`[派工状态] = 1`;`, [派工时间] = getdate()`;`, [派工操作人] = @派工操作人`;`'成功' AS 状态, ` +- `MES_OrderPlanned_SingleTaskPlanned`:`@派工特殊说明 nvarchar(500) = '', `;`@计划完成时间 nvarchar(50) = '', `;`@派工操作人 nvarchar(50) = ''`;`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`INSERT INTO [MES_接口_生产计划_生产任务]` +- `MES_OrderPlanned_SingleTaskPlanned`:`@派工特殊说明 nvarchar(500) = '', `;`@计划完成时间 nvarchar(50) = '', `;`@派工操作人 nvarchar(50) = ''`;`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`INSERT INTO [MES_接口_生产计划_生产任务]` +- `MES_OrderPlanned_Finish`:`@任务列表 NVARCHAR(MAX), `;`@派工操作人 NVARCHAR(MAX)`;`t.[排产状态] = 1, `;`t.[任务状态] = 0, `;`t.派工特殊说明 = j.派工特殊说明, `;`t.计划完成时间 = j.计划完成时间, `;`t.派工操作人 = @派工操作人, `;`t.最后编辑人 = @派工操作人, ` +- `MES_OrderPlanned_DescriptionEdit`:`@未完成说明 nvarchar(50) = '', `;`@派工特殊说明 nvarchar(500) = '', `;`Update [MES_接口_生产计划_生产任务] set`;`未完成说明 = @未完成说明, `;`派工特殊说明 = @派工特殊说明, ` +- `计划排产_自制件_日程时间修改`:`CREATE PROCEDURE [dbo].[计划排产_自制件_日程时间修改]`;`@计划完成时间 nvarchar(50) = ''`;`IF @计划完成时间 ''`;`SET @EndTime = CONVERT(datetime, @计划完成时间, 120)`;`UPDATE [MES_接口_生产计划_生产任务]`;`计划完成时间 = @EndTime`;`AND ISNULL(派工状态, 0) = 0`;`SELECT '0' AS result, '未找到符合条件的记录或派工状态不为0' AS message` + +### 数据库调用链 + +- `src/views/PlanManagement/InstallMakePlan/index.vue` -> `计划排产_生产订单_已排产订单查询` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 查询/读取数据 +- `src/views/PlanManagement/InstallMakePlan/index.vue` -> `MES_登录_工位与名称_查询` -> 视图:`View_基础数据_工位` -> 查询/读取数据 +- `src/views/PlanManagement/InstallMakePlan/index.vue` -> `MES_OrderPlanned_Queryzp` -> 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/PlanManagement/InstallMakePlan/index.vue` -> `MES_OrderPlanned_Queryzp` -> 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/PlanManagement/InstallMakePlan/index.vue` -> `Prog_MES_LoadStations` -> 表:`MES_资源主数据` -> 查询/读取数据 +- `src/views/PlanManagement/InstallMakePlan/index.vue` -> `系统管理_人员管理_所有有效人员查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/PlanManagement/InstallMakePlan/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/InstallMakePlan/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/InstallMakePlan/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/InstallMakePlan/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/InstallMakePlan/index.vue` -> `计划排产_二次派工` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/InstallMakePlan/index.vue` -> `计划排产_二次派工` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/InstallMakePlan/index.vue` -> `计划排产_派工` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/InstallMakePlan/index.vue` -> `MES_OrderPlanned_SingleTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/InstallMakePlan/index.vue` -> `MES_OrderPlanned_SingleTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/InstallMakePlan/index.vue` -> `MES_OrderPlanned_Finish` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 确认/关闭/完成业务动作 +- `src/views/PlanManagement/InstallMakePlan/index.vue` -> `MES_OrderPlanned_DescriptionEdit` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/InstallMakePlan/index.vue` -> `计划排产_自制件_日程时间修改` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `计划排产_生产订单_已排产订单查询` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`select * from [dbo].[MES_接口_生产计划_生产任务] where 排产状态 = 1`。 +- `MES_登录_工位与名称_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_基础数据_工位`。 主要返回字段线索:`[VisCode] as 工位代码`、`[VisCode] as MesWebCode`、`[VisCode] as 工位号`、`[Name] as 指南工位号`、`[Name] as 工位名称`。 排序/分组/分页线索:`order by [VisCode]`。 +- `MES_OrderPlanned_Queryzp` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES`。 入参/分页参数:`@订单号 int`、`@物料类型 nvarchar(50)`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@要求完工日期1 nvarchar(50)`、`@要求完工日期2 nvarchar(50)`、`@计划开始1 nvarchar(50)`、`@计划开始2 nvarchar(50)`、`@计划完成1 nvarchar(50)`、`@计划完成2 nvarchar(50)`、`@排产状态 nvarchar(50)`、`@指派对象 nvarchar(50)`。 主要返回字段线索:`top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, `、`[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''`。 关键过滤/匹配条件:`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and [自制件属性] like ''%装配%'''`;`WHERE 质检类型 = ''终检''`;`AND v.[订单行号] = g.工艺顺序'`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`。 关键写入/状态处理语句线索:`set @selectStr = '`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@计划开始1 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] > = '''+@计划开始1+''''`;`if(@计划开始2 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] < = '''+@计划开始2+''''`;`if(@计划完成1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] > = '''+@计划完成1+''''`;`if(@计划完成2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] < = '''+@计划完成2+''''`。 +- `MES_OrderPlanned_Queryzp` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES`。 入参/分页参数:`@订单号 int`、`@物料类型 nvarchar(50)`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@要求完工日期1 nvarchar(50)`、`@要求完工日期2 nvarchar(50)`、`@计划开始1 nvarchar(50)`、`@计划开始2 nvarchar(50)`、`@计划完成1 nvarchar(50)`、`@计划完成2 nvarchar(50)`、`@排产状态 nvarchar(50)`、`@指派对象 nvarchar(50)`。 主要返回字段线索:`top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, `、`[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''`。 关键过滤/匹配条件:`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and [自制件属性] like ''%装配%'''`;`WHERE 质检类型 = ''终检''`;`AND v.[订单行号] = g.工艺顺序'`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`。 关键写入/状态处理语句线索:`set @selectStr = '`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@计划开始1 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] > = '''+@计划开始1+''''`;`if(@计划开始2 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] < = '''+@计划开始2+''''`;`if(@计划完成1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] > = '''+@计划完成1+''''`;`if(@计划完成2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] < = '''+@计划完成2+''''`。 +- `Prog_MES_LoadStations` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理外协业务。 读取/关联对象:表:`MES_资源主数据`。 主要返回字段线索:`[VisCode], [Name] as OPName`。 关键过滤/匹配条件:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 排序/分组/分页线索:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 +- `系统管理_人员管理_所有有效人员查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`Personnel_Number AS 人员编号, `、`Personnel_Name AS 人员姓名, `、`account AS 账号, `、`Roles_Function AS 角色, `、`部门名称`。 关键过滤/匹配条件:`WHERE Quit = 0`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY Personnel_Name;`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `计划排产_二次派工` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID int,`、`@personnel nvarchar(500)`。 关键过滤/匹配条件:`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID`。 关键写入/状态处理语句线索:`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID`。 +- `计划排产_二次派工` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID int,`、`@personnel nvarchar(500)`。 关键过滤/匹配条件:`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID`。 关键写入/状态处理语句线索:`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID`。 +- `计划排产_派工` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:查询、新增、更新、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单编号列表 NVARCHAR(MAX),`、`@派工操作人 NVARCHAR(50)`。 主要返回字段线索:`value`。 关键过滤/匹配条件:`WHERE LTRIM(RTRIM(value)) '';`;`WHERE AID IN (SELECT 订单编号 FROM #TempOrders);`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO #TempOrders (订单编号)`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET`。 实现特征:事务控制、临时表 `#TempOrders`。 +- `MES_OrderPlanned_SingleTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:查询、新增、更新、删除、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`、`@指派对象编号 nvarchar(50)`、`@指派对象 nvarchar(50)`、`@指派数量 int`、`@派工特殊说明 nvarchar(500)`、`@计划开始时间 nvarchar(50)`、`@计划完成时间 nvarchar(50)`、`@最晚开始时间 nvarchar(50)`、`@派工操作人 nvarchar(50)`。 主要返回字段线索:`@计划数量 = 计划数量`。 关键过滤/匹配条件:`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`FROM [MES_接口_生产计划_生产任务] WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`select @未指派数量_剩余 = 计划数量+@指派数量_Free from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`WHERE [订单编号] = @订单号 AND [订单行号] = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`set @指派数量_Free = @计划数量-@指派数量`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`INSERT INTO [MES_接口_生产计划_生产任务]`;`set @ErrMsg = '指派数量大于剩余未分配数量,派工失败'`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`if(@最晚开始时间 = '') set @最晚开始时间 = NULL`;`if(@计划开始时间 = '') set @计划开始时间 = NULL`;`if(@计划完成时间 = '') set @计划完成时间 = NULL`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET [指派对象编号] = @指派对象编号`。 +- `MES_OrderPlanned_SingleTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:查询、新增、更新、删除、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`、`@指派对象编号 nvarchar(50)`、`@指派对象 nvarchar(50)`、`@指派数量 int`、`@派工特殊说明 nvarchar(500)`、`@计划开始时间 nvarchar(50)`、`@计划完成时间 nvarchar(50)`、`@最晚开始时间 nvarchar(50)`、`@派工操作人 nvarchar(50)`。 主要返回字段线索:`@计划数量 = 计划数量`。 关键过滤/匹配条件:`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`FROM [MES_接口_生产计划_生产任务] WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`select @未指派数量_剩余 = 计划数量+@指派数量_Free from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`WHERE [订单编号] = @订单号 AND [订单行号] = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`set @指派数量_Free = @计划数量-@指派数量`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`INSERT INTO [MES_接口_生产计划_生产任务]`;`set @ErrMsg = '指派数量大于剩余未分配数量,派工失败'`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`if(@最晚开始时间 = '') set @最晚开始时间 = NULL`;`if(@计划开始时间 = '') set @计划开始时间 = NULL`;`if(@计划完成时间 = '') set @计划完成时间 = NULL`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET [指派对象编号] = @指派对象编号`。 +- `MES_OrderPlanned_Finish` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 确认/关闭/完成业务动作。 数据库处理摘要:查询、更新、解析 JSON 批量数据、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 入参/分页参数:`@任务列表 NVARCHAR(MAX),`、`@派工操作人 NVARCHAR(MAX)`。 主要返回字段线索:`TaskAID = JSON_VALUE(value, '$.taskaid'), `、`指派对象 = JSON_VALUE(value, '$."指派对象"'), `、`指派数量 = JSON_VALUE(value, '$."指派数量"'), `、`指派对象编号 = JSON_VALUE(value, '$."指派对象编号"'), `、`派工特殊说明 = JSON_VALUE(value, '$."派工特殊说明"'), `、`计划开始时间 = JSON_VALUE(value, '$."计划开始时间"'), `、`计划完成时间 = JSON_VALUE(value, '$."计划完成时间"'), `、`最晚开始时间 = JSON_VALUE(value, '$."最晚开始时间"')`。 关键写入/状态处理语句线索:`UPDATE t`;`SET`。 实现特征:JSON 批量解析。 +- `MES_OrderPlanned_DescriptionEdit` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int,`、`@订单行号 int,`、`@订单拆分内码 int,`、`@优先级 nvarchar(50)`、`@未完成说明 nvarchar(50)`、`@派工特殊说明 nvarchar(500)`、`@最后编辑人 nvarchar(500)`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`Update [MES_接口_生产计划_生产任务] set`。 +- `计划排产_自制件_日程时间修改` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int,`、`@订单行号 int`、`@订单拆分内码 int`、`@计划开始时间 nvarchar(50)`、`@计划完成时间 nvarchar(50)`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单号`;`AND 订单行号 = @订单行号`;`AND 订单拆分内码 = @订单拆分内码`;`AND ISNULL(派工状态, 0) = 0`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @StartTime = CONVERT(datetime, @计划开始时间, 120)`;`SET @StartTime = NULL`;`SET @EndTime = CONVERT(datetime, @计划完成时间, 120)`;`SET @EndTime = NULL`;`UPDATE [MES_接口_生产计划_生产任务]`;`SET 计划开始时间 = @StartTime, `。 实现特征:异常捕获。 + +## 10. src/views/PlanManagement/PlanShell/index.vue + +**页面位置**:`src/views/PlanManagement/PlanShell/index.vue` +**所属模块**:PlanManagement / PlanShell +**源码行数**:850 + +### 页面功能 + +该页面是计划外壳/计划跟踪类页面,按缺料、发货通知、完成状态等条件查询计划或装配相关任务,用于计划人员集中查看订单齐套、发货和关闭情况。 + +页面可见的操作/字段包括 “查询”、“缺料”、“关闭”、“全部”、“已下达发货通知”、“未下达发货通知”、“是”、“否”、“已完成”、“未完成”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `生产管理_装配中心_缺料查询`、`计划排产_查询计划信息`、`MES_OrderPlanned_DescriptionEdit`、`Prog_MES_LoadStations` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `生产管理_装配中心_缺料查询` -> `计划排产_查询计划信息` -> `MES_OrderPlanned_DescriptionEdit` -> `Prog_MES_LoadStations` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`缺料`、`关闭`、`全部`、`已下达发货通知`、`未下达发货通知`、`是`、`否`、`已完成`、`未完成`、`发料齐套`、`发料缺件`、`未发料`、`机加`、`装配`、`加急`、`正常`、`序号` + +主要方法线索:`miss` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `row.产品编码` | `@ItemCode` | - | +| 参数 | `row.订单号` | `@订单号` | - | +| 参数 | `this.orderNo ` | `@订单号` | - | +| 参数 | `'自制件'` | `@物料类型` | - | +| 参数 | `this.contractNo` | `@合同号` | - | +| 参数 | `this.productCode` | `@产品编码` | - | +| 参数 | `this.productName` | `@产品名称` | - | +| 参数 | `this.processName` | `@工序名称` | - | +| 参数 | `this.planStartTime` | `@计划开始` | - | +| 参数 | `this.planendTime` | `@计划完成` | - | +| 参数 | `this.productionStatus` | `@排产状态` | - | +| 参数 | `'全部'` | `@指派对象` | - | +| 参数 | `this.plannum` | `@计划号` | `v.计划号, ` | +| 参数 | `this.ShipmentStatus` | `@发货状态` | `isnull(发货状态, 0) as [发货状态], ` | +| 参数 | `this.complete` | `@齐套` | `when isnull(发料状态, 0) = 1 then ''发料齐套''` | +| 参数 | `this.checkstatus` | `@检验状态` | - | +| 参数 | `this.sendstatus` | `@发料状态` | `when isnull(发料状态, 0) = 1 then ''发料齐套''` | +| 参数 | `this.selfStatus` | `@自制件属性` | - | +| 参数 | `this.outsourceStatus === '是' ? 1 : 0` | `@是否外协` | - | +| 参数 | `this.currentRow.订单号` | `@订单号` | - | +| 参数 | `this.currentRow.订单行号` | `@订单行号` | - | +| 参数 | `this.currentRow.拆分内码` | `@订单拆分内码` | - | +| 参数 | `this.editForm.优先级` | `@优先级` | - | +| 参数 | `this.editForm.未完成说明` | `@未完成说明` | - | +| 参数 | `this.editForm.派工特殊说明` | `@派工特殊说明` | - | +| 参数 | `this.$store.state.user.name` | `@最后编辑人` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `工序名称` | - | `工序名称` | +| 显示列 | `计划数量` | - | `计划数量` | +| 显示列 | `指派对象` | - | `指派对象` | +| 显示列 | `开始时间` | - | `计划开始时间` | +| 显示列 | `结束时间` | - | `计划完成时间` | +| 显示列 | `完成进度` | - | `进度` | +| 显示列 | `完成数量` | - | `完成数量` | +| 显示列 | `合格数` | - | `收检合格数` | +| 显示列 | `不良数` | - | `收检不合格数` | +| 显示列 | `任务状态` | - | `任务状态` | +| 显示列 | `加工状态` | - | `加工状态` | +| 显示列 | `操作` | - | `操作` | +| 显示列 | `发货通知` | - | `发货通知` | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 355 | 11(当前通用存储过程查询/执行) | `生产管理_装配中心_缺料查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_OPKL_MissQty` | +| 630 | 11(当前通用存储过程查询/执行) | `计划排产_查询计划信息` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 视图:`View_生产订单_MES` | +| 664 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 723 | 11(当前通用存储过程查询/执行) | `Prog_MES_LoadStations` | 查询/读取数据 | 查询、处理外协业务 | 表:`MES_资源主数据` | + +### 与 SAP 的交互 + +存储过程内读取 SAP B1 数据库对象: +- 生产管理_装配中心_缺料查询: SAP.SBO_YL.dbo.UBT_OPKL_MissQty + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `生产管理_装配中心_缺料查询`:`select * from SAP.SBO_YL.dbo.UBT_OPKL_MissQty where DocEntry = @订单号` +- `计划排产_查询计划信息`:`CREATE PROCEDURE [dbo].[计划排产_查询计划信息]`;`@计划完成 nvarchar(50) = '', `;`@排产状态 nvarchar(50) = '全部', `;`@发货状态 nvarchar(50) = '全部', `;`@检验状态 nvarchar(50) = '', `;`@发料状态 nvarchar(50) = '全部', `;`DECLARE @selectStrWhere NVARCHAR(4000) = ' WHERE [物料类型] = ''pit_Resource'' and [排产状态] = 1 '`;`拣配状态, ` +- `MES_OrderPlanned_DescriptionEdit`:`@未完成说明 nvarchar(50) = '', `;`@派工特殊说明 nvarchar(500) = '', `;`Update [MES_接口_生产计划_生产任务] set`;`未完成说明 = @未完成说明, `;`派工特殊说明 = @派工特殊说明, ` + +### 数据库调用链 + +- `src/views/PlanManagement/PlanShell/index.vue` -> `生产管理_装配中心_缺料查询` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_OPKL_MissQty` -> 查询/读取数据 +- `src/views/PlanManagement/PlanShell/index.vue` -> `计划排产_查询计划信息` -> 视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/PlanManagement/PlanShell/index.vue` -> `MES_OrderPlanned_DescriptionEdit` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/PlanShell/index.vue` -> `Prog_MES_LoadStations` -> 表:`MES_资源主数据` -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `生产管理_装配中心_缺料查询` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_OPKL_MissQty`。 入参/分页参数:`@ItemCode nvarchar(500),`、`@订单号 int`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`select * from SAP.SBO_YL.dbo.UBT_OPKL_MissQty where DocEntry = @订单号`。 实现特征:读取 SAP 数据库对象。 +- `计划排产_查询计划信息` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:视图:`View_生产订单_MES`。 入参/分页参数:`@订单号 int`、`@物料类型 nvarchar(50)`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@计划开始 nvarchar(50)`、`@计划完成 nvarchar(50)`、`@排产状态 nvarchar(50)`、`@指派对象 nvarchar(50)`、`@计划号 nvarchar(50)`、`@发货状态 nvarchar(50)`、`@齐套 nvarchar(50)`、`@检验状态 nvarchar(50)`、`@发料状态 nvarchar(50)`、`@自制件属性 nvarchar(50)`。 主要返回字段线索:`top 300`、`v.计划号, `、`拣配状态, `、`入库数量, `、`要求发货日期, `、`isnull(发货状态, 0) as [发货状态], `、`case`、`when isnull(发料状态, 0) = 1 then ''发料齐套''`、`when isnull(发料状态, 0) = 2 then ''发料缺件''`、`when isnull(发料状态, 0) = 0 then ''未发料''`。 关键过滤/匹配条件:`DECLARE @selectStrWhere NVARCHAR(4000) = ' WHERE [物料类型] = ''pit_Resource'' and [排产状态] = 1 '`;`WHEN qt.检验数量_8 > 0 AND qt.检验数量_6 > 0 AND qt.检验数量_8 > = qt.检验数量_6 THEN ''已完成''`;`WHEN qt.检验数量_8 > 0 AND qt.检验数量_6 > 0 AND qt.检验数量_8 < qt.检验数量_6 THEN ''未完成''`;`WHEN qt.检验数量_8 = 0 AND qt.检验数量_6 > 0 THEN ''未完成''`;`WHEN qt.检验数量_8 > 0 AND qt.检验数量_6 = 0 THEN ''已完成''`;`WHERE 质检类型 = ''终检''`;`WHERE 质检类型 = ''收检''`;`SET @selectStrWhere = @selectStrWhere + ' AND [订单编号] = ' + CONVERT(VARCHAR(10), @订单号)`;`SET @selectStrWhere = @selectStrWhere + ' AND v.[计划号] = '''+@计划号+''''`;`SET @selectStrWhere = @selectStrWhere + ' AND [合同号] LIKE ''%' + @合同号 + '%'''`。 关键写入/状态处理语句线索:`SET @selectStr = N'`;`SET @selectStrWhere = @selectStrWhere + ' AND [订单编号] = ' + CONVERT(VARCHAR(10), @订单号)`;`SET @selectStrWhere = @selectStrWhere + ' AND v.[计划号] = '''+@计划号+''''`;`SET @selectStrWhere = @selectStrWhere + ' AND [合同号] LIKE ''%' + @合同号 + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND [物料编号] LIKE ''%' + @产品编码 + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND [物料描述] LIKE ''%' + @产品名称 + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND [工序名称] = ''' + @工序名称 + ''''`;`SET @selectStrWhere = @selectStrWhere + ' AND [计划开始时间] > = ''' + @计划开始 + ''''`;`SET @selectStrWhere = @selectStrWhere + ' AND [计划开始时间] < = ''' + @计划完成 + ''''`;`SET @selectStrWhere = @selectStrWhere + ' AND ISNULL([发货状态], 0) = 0'`;`SET @selectStrWhere = @selectStrWhere + ' AND [发货状态] = 1'`;`SET @selectStrWhere = @selectStrWhere + ' AND ISNULL([自制件属性], 0) = ''机加件'''`。 排序/分组/分页线索:`GROUP BY TaskAID`;`SET @selectStrWhere = @selectStrWhere + ' ORDER BY 计划开始时间 asc'`。 +- `MES_OrderPlanned_DescriptionEdit` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int,`、`@订单行号 int,`、`@订单拆分内码 int,`、`@优先级 nvarchar(50)`、`@未完成说明 nvarchar(50)`、`@派工特殊说明 nvarchar(500)`、`@最后编辑人 nvarchar(500)`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`Update [MES_接口_生产计划_生产任务] set`。 +- `Prog_MES_LoadStations` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理外协业务。 读取/关联对象:表:`MES_资源主数据`。 主要返回字段线索:`[VisCode], [Name] as OPName`。 关键过滤/匹配条件:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 排序/分组/分页线索:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 + +## 11. src/views/PlanManagement/PlannOrderClose/index.vue + +**页面位置**:`src/views/PlanManagement/PlannOrderClose/index.vue` +**所属模块**:PlanManagement / PlannOrderClose +**源码行数**:151 + +### 页面功能 + +该页面用于生产订单关闭。用户筛选 SAP 未关闭或 MES 待确认订单,执行 SAP 生产订单关闭,并调用 MES 过程记录或确认订单关闭状态。 + +页面可见的操作/字段包括 “查询”、“确认”、“关闭”、“全部”、“已关闭”、“未关闭”、“可关闭”、“SAP未关闭”、“机加”、“装配”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `计划排产_生产订单关闭_查询全部订单`、`计划排产_生产订单关闭_关闭订单`、`计划排产_生产订单关闭_确认订单` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `计划排产_生产订单关闭_查询全部订单` -> `计划排产_生产订单关闭_关闭订单` -> `计划排产_生产订单关闭_确认订单` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`确认`、`关闭`、`全部`、`已关闭`、`未关闭`、`可关闭`、`SAP未关闭`、`机加`、`装配`、`订单编号`、`合同号`、`产品编码`、`产品名称`、`计划数量`、`入库数量`、`终检不合格`、`终检合格` + +主要方法线索:`searchTable` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.equipmentName` | `@订单号` | `v.订单号 as 订单编号, ` | +| 参数 | `this.equipmentType` | `@单据状态` | - | +| 参数 | `this.orderType` | `@属性` | - | +| 显示列 | `订单编号` | - | `v.订单号 as 订单编号, ` | +| 显示列 | `合同号` | - | `MAX(合同号) as 合同号, ` | +| 显示列 | `产品编码` | - | `MAX(产品编码) as 产品编码, ` | +| 显示列 | `产品名称` | - | `MAX(产品名称) as 产品名称, ` | +| 显示列 | `计划数量` | - | `MAX(计划数量) as 计划数量, ` | +| 显示列 | `入库数量` | - | `MAX(入库数量) as 入库数量, ` | +| 显示列 | `终检不合格` | - | `MAX(终检不合格数合计) as 终检不合格数合计, ` | +| 显示列 | `终检合格` | - | `MAX(终检合格数合计) as 终检合格数合计, ` | +| 显示列 | `收检合格` | - | `MAX(终检不合格数合计) as 终检不合格数合计, ` | +| 显示列 | `收检不合格` | - | `MAX(终检不合格数合计) as 终检不合格数合计, ` | +| 显示列 | `操作` | - | `操作` | +| 输入字段 | `equipmentName` | `@订单号` | - | +| 输入字段 | `equipmentType` | `@单据状态` | - | +| 输入字段 | `orderType` | `@属性` | - | +| 输入字段 | `opName` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- SAP B1 Service Layer(`src/api/b1s.js`) + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 102 | 11(当前通用存储过程查询/执行) | `计划排产_生产订单关闭_查询全部订单` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工 | 表:`MES_接口_生产计划`、`YL_质量检验_质检记录` | +| 111 | 11(当前通用存储过程查询/执行) | `计划排产_生产订单关闭_关闭订单` | 确认/关闭/完成业务动作 | 查询、更新、处理报工/工时、处理质检数据、处理计划/派工 | 表:`MES_接口_生产计划`;视图:`View_生产工时视图` | +| 129 | 12(当前通用存储过程写入/业务动作) | `计划排产_生产订单关闭_确认订单` | 确认/关闭/完成业务动作 | 更新、处理计划/派工 | 表:`MES_接口_生产计划` | + +### 与 SAP 的交互 + +页面直接 SAP/接口调用: +- 第 117 行:`patchB1("/ProductionOrders(")` + +### SAP 接口级说明 + +| 行号 | 方法 | 接口 | 调用时机/影响判断 | 提交字段线索 | +|---:|---|---|---|---| +| 117 | `patchB1` | `/ProductionOrders(` | 读取或更新 SAP 生产订单。失败会导致 MES 与 SAP 订单状态/工序资源不同步。 | `AbsoluteEntry`、`ProductionOrderStatus` | + +### 状态流转说明 + +- `计划排产_生产订单关闭_查询全部订单`:`CREATE PROCEDURE [dbo].[计划排产_生产订单关闭_查询全部订单]`;`@单据状态 nvarchar(100) = '', `;`if(@单据状态 = '可关闭')`;`MAX(确认状态) as 确认状态, `;`MAX(单据状态) as 单据状态, `;`FROM dbo.YL_质量检验_质检记录`;`WHERE (质检类型 = ''收检'')`;`FROM dbo.YL_质量检验_质检记录 AS YL_质量检验_质检记录_1` +- `计划排产_生产订单关闭_关闭订单`:`CREATE PROCEDURE [dbo].[计划排产_生产订单关闭_关闭订单]`;`declare @selectStrWhere nvarchar(4000) = ' WHERE (v.加工工时 > 0 OR v.总时长 > 0)`;`min(完成数量) as 完成数量, `;`MAX(确认状态) as 确认状态, `;`MAX(单据状态) as 单据状态`;`FROM dbo.YL_质量检验_质检记录`;`WHERE 质检类型 = ''收检''`;`WHERE 质检类型 = ''终检''` +- `计划排产_生产订单关闭_确认订单`:`create PROCEDURE [dbo].[计划排产_生产订单关闭_确认订单]`;`update [dbo].[MES_接口_生产计划] set 确认状态 = 1 where 订单编号 = @订单号` + +### 数据库调用链 + +- `src/views/PlanManagement/PlannOrderClose/index.vue` -> `计划排产_生产订单关闭_查询全部订单` -> 表:`MES_接口_生产计划`、`YL_质量检验_质检记录` -> 查询/读取数据 +- `src/views/PlanManagement/PlannOrderClose/index.vue` -> `计划排产_生产订单关闭_关闭订单` -> 表:`MES_接口_生产计划`;视图:`View_生产工时视图` -> 确认/关闭/完成业务动作 +- `src/views/PlanManagement/PlannOrderClose/index.vue` -> `计划排产_生产订单关闭_确认订单` -> 表:`MES_接口_生产计划` -> 确认/关闭/完成业务动作 + +### 存储过程处理逻辑明细 + +- `计划排产_生产订单关闭_查询全部订单` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`YL_质量检验_质检记录`。 入参/分页参数:`@订单号 nvarchar(100)`、`@单据状态 nvarchar(100)`、`@属性 nvarchar(100)`。 主要返回字段线索:`top 100`、`v.订单号 as 订单编号, `、`MAX(产品名称) as 产品名称, `、`MAX(产品编码) as 产品编码, `、`MAX(入库数量) as 入库数量, `、`MAX(合同号) as 合同号, `、`MAX(终检不合格数合计) as 终检不合格数合计, `、`MAX(终检合格数合计) as 终检合格数合计, `、`MAX(计划数量) as 计划数量, `、`MAX(确认状态) as 确认状态, `。 关键过滤/匹配条件:`declare @selectStrWhere nvarchar(4000) = ' WHERE 1 = 1 '`;`WHERE (质检类型 = ''收检'')`;`WHERE (质检类型 = ''终检'')`;`WHERE`;`set @selectStr = @selectStr + ' and v.订单号 = ''' + @订单号 + ''''`;`set @selectStr = @selectStr + ' and ([自制件属性] = ''机加件'') '`;`set @selectStr = @selectStr + ' and [自制件属性] like ''%装配%'' '`;`AND MAX(终检不合格数合计) + MAX(终检合格数合计) + MAX(不合格数合计) = MAX(计划数量)`;`AND max(ISNULL(v.入库数量, 0)) = max(ISNULL(zj_终检数量.终检合格数合计, 0)) ORDER BY v.订单号'`;`WHERE 质检类型 = ''终检''`。 关键写入/状态处理语句线索:`set @selectStr = '`;`set @selectStr = @selectStr + ' and v.订单号 = ''' + @订单号 + ''''`;`set @selectStr = @selectStr + ' and ([自制件属性] = ''机加件'') '`;`set @selectStr = @selectStr + ' and [自制件属性] like ''%装配%'' '`;`set @selectStr = @selectStr + 'GROUP BY v.订单号`;`set @selectStrWhere = @selectStrWhere + ' and v.[订单编号] = ''' + @订单号 + ''''`;`set @selectStrWhere = @selectStrWhere + ' and ([单据状态] = ''已关闭'') '`;`set @selectStrWhere = @selectStrWhere + ' and ([单据状态] = ''已关闭'' or [单据状态] = ''已取消'') '`;`set @selectStrWhere = @selectStrWhere + ' and [单据状态] is null'`;`set @selectStrWhere = @selectStrWhere + ' and ([自制件属性] = ''机加件'') '`;`set @selectStrWhere = @selectStrWhere + ' and [自制件属性] like ''%装配%'' '`;`set @selectStrWhere = @selectStrWhere + ' group by v.订单编号'`。 排序/分组/分页线索:`GROUP BY 计划号) AS zj_收检 ON v.订单号 = zj_收检.计划号 LEFT OUTER JOIN`;`GROUP BY 计划号) AS zj_终检数量 ON v.订单号 = zj_终检数量.计划号`;`set @selectStr = @selectStr + 'GROUP BY v.订单号`;`HAVING`;`AND max(ISNULL(v.入库数量, 0)) = max(ISNULL(zj_终检数量.终检合格数合计, 0)) ORDER BY v.订单号'`;`GROUP BY 计划号`;`set @selectStrWhere = @selectStrWhere + ' group by v.订单编号'`。 +- `计划排产_生产订单关闭_关闭订单` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 确认/关闭/完成业务动作。 数据库处理摘要:查询、更新、处理报工/工时、处理质检数据、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`;视图:`View_生产工时视图`。 写入或更新对象:`MES_接口_生产计划`。 入参/分页参数:`@订单号 nvarchar(100)`。 主要返回字段线索:`v.订单号, `、`MAX(产品名称) as 产品名称, `、`MAX(产品编码) as 产品编码, `、`MAX(入库数量) as 入库数量, `、`MAX(合同号) as 合同号, `、`MAX(终检不合格数合计) as 终检不合格数合计, `、`MAX(终检合格数合计) as 终检合格数合计, `、`MAX(合格数合计) as 合格数合计, `、`MAX(不合格数合计) as 不合格数合计, `、`MAX(计划数量) as 计划数量, `。 关键过滤/匹配条件:`declare @selectStrWhere nvarchar(4000) = ' WHERE (v.加工工时 > 0 OR v.总时长 > 0)`;`AND v.Expr1 IS NULL`;`WHERE 质检类型 = ''收检''`;`WHERE 质检类型 = ''终检''`;`set @selectStrWhere = ' WHERE (v.加工工时 > 0 OR v.总时长 > 0)`;`AND v.订单号 = ''' + @订单号 + '''`;`where 订单编号 = @订单号`。 关键写入/状态处理语句线索:`set @selectStr = '`;`set @selectStrWhere = @selectStrWhere + ' group by v.订单号'`;`set @selectStr = @selectStr + @selectStrWhere`;`set @selectStrWhere = ' WHERE (v.加工工时 > 0 OR v.总时长 > 0)`;`update [dbo].[MES_接口_生产计划]`;`set 单据状态 = '已关闭'`。 排序/分组/分页线索:`GROUP BY TaskAID`;`set @selectStrWhere = @selectStrWhere + ' group by v.订单号'`;`group by v.订单号'`。 +- `计划排产_生产订单关闭_确认订单` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 确认/关闭/完成业务动作。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`。 入参/分页参数:`@订单号 int`。 关键过滤/匹配条件:`update [dbo].[MES_接口_生产计划] set 确认状态 = 1 where 订单编号 = @订单号`。 关键写入/状态处理语句线索:`update [dbo].[MES_接口_生产计划] set 确认状态 = 1 where 订单编号 = @订单号`。 + +## 12. src/views/PlanManagement/SelfMakePlan/index.vue + +**页面位置**:`src/views/PlanManagement/SelfMakePlan/index.vue` +**所属模块**:PlanManagement / SelfMakePlan +**源码行数**:1736 + +### 页面功能 + +该页面处理自制件/机加件排产。用户查询生产订单工序任务,筛选订单、合同、物料、工序、计划时间、排产状态和指派对象,完成工位派工、人员二次派工、外协分组、计划说明维护和排产确认。 + +页面可见的操作/字段包括 “查询”、“批量排产”、“排产完成”、“确定”、“派工”、“计划排产”、“编辑”、“取 消”、“确 定”、“全部”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Query`、`Prog_MES_LoadStations`、`系统管理_人员管理_所有有效人员查询`、`MES_OrderPlanned_EditTaskPlanned` 等过程 取数或提交业务动作。 + +### 页面流程图 + +自制/机加排产流程: + +```mermaid +flowchart LR + A[输入订单/合同/物料/工序/时间条件] --> B[调用 MES_OrderPlanned_Query 查询待排产任务] + B --> C[选择任务行] + C --> D{派工方式} + D --> E[MES_OrderPlanned_SingleTaskPlanned 单任务派工] + D --> F[计划排产_二次派工 绑定人员] + D --> G[计划排产_外协分组] + E --> H[MES_OrderPlanned_EditTaskPlanned/DescriptionEdit 修改计划字段] + F --> H + G --> H + H --> I[MES_OrderPlanned_Finish 确认排产] + I --> J[PATCH /ProductionOrders(...) 回写 SAP 生产订单状态] + J --> K[页面刷新任务状态] +``` + + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`批量排产`、`排产完成`、`确定`、`派工`、`计划排产`、`编辑`、`取 消`、`确 定`、`全部`、`已完成`、`未完成`、`item.指南工位号`、`表单`、`序号`、`生产订单`、`计划号`、`物料编码` + +主要方法线索:`getCurrentTime` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.orderNo ` | `@订单号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `'自制件'` | `@物料类型` | - | +| 参数 | `this.contractNo` | `@合同号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `this.productCode` | `@产品编码` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.productName` | `@产品名称` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.processName` | `@工序名称` | - | +| 参数 | `this.nature` | `@性质` | - | +| 参数 | `this.completionTime[0` | `@要求完工日期1` | - | +| 参数 | `this.completionTime[1` | `@要求完工日期2` | - | +| 参数 | `this.planStartTime[0` | `@计划开始1` | - | +| 参数 | `this.planStartTime[1` | `@计划开始2` | - | +| 参数 | `this.planendTime[0` | `@计划完成1` | - | +| 参数 | `this.planendTime[1` | `@计划完成2` | - | +| 参数 | `this.productionStatus` | `@排产状态` | - | +| 参数 | `this.station` | `@指派对象` | - | +| 参数 | `this.doneorderNo ` | `@订单号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `this.donecontractNo` | `@合同号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `this.doneproductCode` | `@产品编码` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.doneproductName` | `@产品名称` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.doneprocessName` | `@工序名称` | - | +| 参数 | `this.donenature` | `@性质` | - | +| 参数 | `this.doneproductionStatus` | `@排产状态` | - | +| 参数 | `editstr` | `@editstr` | - | +| 参数 | `row.订单号` | `@订单号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `row.订单行号` | `@订单行号` | - | +| 参数 | `row.拆分内码` | `@订单拆分内码` | - | +| 参数 | `row.taskaid` | `@TaskAID` | - | +| 参数 | `row.二次派工` | `@personnel` | - | +| 参数 | `row.派工特殊说明` | `@派工特殊说明` | - | +| 参数 | `this.$store.state.user.name` | `@派工操作人` | - | +| 参数 | `row.指派对象编号` | `@指派对象编号` | - | +| 参数 | `row.指派对象` | `@指派对象` | - | +| 参数 | `this.editnumber` | `@指派数量` | - | +| 参数 | `row.计划开始时间` | `@计划开始时间` | - | +| 参数 | `row.计划完成时间` | `@计划完成时间` | - | +| 参数 | `row.最晚开始时间` | `@最晚开始时间` | - | +| 参数 | `item.订单号` | `@订单号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `item.订单行号` | `@订单行号` | - | +| 参数 | `item.拆分内码` | `@订单拆分内码` | - | +| 参数 | `item.指派对象编号` | `@指派对象编号` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- SAP B1 Service Layer(`src/api/b1s.js`) +- FullCalendar + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 815 | 11(当前通用存储过程查询/执行) | `计划排产_生产订单_已排产订单查询` | 查询/读取数据 | 查询、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 965 | 11(当前通用存储过程查询/执行) | `MES_登录_工位与名称_查询` | 查询/读取数据 | 查询 | 视图:`View_基础数据_工位` | +| 1034 | 11(当前通用存储过程查询/执行) | `MES_OrderPlanned_Query` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` | +| 1092 | 11(当前通用存储过程查询/执行) | `MES_OrderPlanned_Query` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` | +| 1130 | 11(当前通用存储过程查询/执行) | `Prog_MES_LoadStations` | 查询/读取数据 | 查询、处理外协业务 | 表:`MES_资源主数据` | +| 1143 | 11(当前通用存储过程查询/执行) | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 查询 | 视图:`登录基础数据_管理人员权限视图` | +| 1183 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1200 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1217 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1234 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1248 | 12(当前通用存储过程写入/业务动作) | `计划排产_二次派工` | 计划排产或派工 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1257 | 12(当前通用存储过程写入/业务动作) | `计划排产_二次派工` | 计划排产或派工 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1361 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 查询、新增、更新、删除、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1392 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 查询、新增、更新、删除、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1507 | 11(当前通用存储过程查询/执行) | `MES_OrderPlanned_Finish` | 确认/关闭/完成业务动作 | 查询、更新、解析 JSON 批量数据、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1536 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1617 | 12(当前通用存储过程写入/业务动作) | `计划排产_自制件_日程时间修改` | 更新/保存业务数据 | 查询、更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | + +### 与 SAP 的交互 + +页面直接 SAP/接口调用: +- 第 1500 行:`patchB1("/ProductionOrders(")` + +### SAP 接口级说明 + +| 行号 | 方法 | 接口 | 调用时机/影响判断 | 提交字段线索 | +|---:|---|---|---|---| +| 1500 | `patchB1` | `/ProductionOrders(` | 读取或更新 SAP 生产订单。失败会导致 MES 与 SAP 订单状态/工序资源不同步。 | `AbsoluteEntry`、`U_MODueDate`、`U_MOStartDate`、`优先级`、`未完成说明`、`派工特殊说明` | + +### 状态流转说明 + +- `计划排产_生产订单_已排产订单查询`:`CREATE PROCEDURE [dbo].[计划排产_生产订单_已排产订单查询]`;`select * from [dbo].[MES_接口_生产计划_生产任务] where 排产状态 = 1` +- `MES_OrderPlanned_Query`:`@计划完成1 nvarchar(50) = '', `;`@计划完成2 nvarchar(50) = '', `;`@排产状态 nvarchar(50) = '全部', `;`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and [自制件属性] = ''机加件'' and isnull(v.任务状态, 0) < 4'`;`[计划完成] as 要求完工日期, [工序名称], 完成数量, v.计划号, 收料数量, 外协分组, v.任务状态, v.备注, `;`case when [加急状态] = 1 then ''加急'' else '''' end as 加急状态, 性质, isnull(总工时, 0) as 总工时, [占用情况]`;`, [排产状态], [工序计划数量], 指派对象编号, 指派对象, TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, `;`[派工状态], [外协通知], [优先级], [未完成说明], [派工特殊说明], [最后编辑人], [最后编辑时间], [二次派工], isnull(g.标准工时, 0) as 标准工时, ` +- `MES_OrderPlanned_Query`:`@计划完成1 nvarchar(50) = '', `;`@计划完成2 nvarchar(50) = '', `;`@排产状态 nvarchar(50) = '全部', `;`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and [自制件属性] = ''机加件'' and isnull(v.任务状态, 0) < 4'`;`[计划完成] as 要求完工日期, [工序名称], 完成数量, v.计划号, 收料数量, 外协分组, v.任务状态, v.备注, `;`case when [加急状态] = 1 then ''加急'' else '''' end as 加急状态, 性质, isnull(总工时, 0) as 总工时, [占用情况]`;`, [排产状态], [工序计划数量], 指派对象编号, 指派对象, TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, `;`[派工状态], [外协通知], [优先级], [未完成说明], [派工特殊说明], [最后编辑人], [最后编辑时间], [二次派工], isnull(g.标准工时, 0) as 标准工时, ` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `计划排产_二次派工`:`create PROCEDURE [dbo].[计划排产_二次派工]`;`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID` +- `计划排产_二次派工`:`create PROCEDURE [dbo].[计划排产_二次派工]`;`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID` +- `MES_OrderPlanned_SingleTaskPlanned`:`@派工特殊说明 nvarchar(500) = '', `;`@计划完成时间 nvarchar(50) = '', `;`@派工操作人 nvarchar(50) = ''`;`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`INSERT INTO [MES_接口_生产计划_生产任务]` +- `MES_OrderPlanned_SingleTaskPlanned`:`@派工特殊说明 nvarchar(500) = '', `;`@计划完成时间 nvarchar(50) = '', `;`@派工操作人 nvarchar(50) = ''`;`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`INSERT INTO [MES_接口_生产计划_生产任务]` +- `MES_OrderPlanned_Finish`:`@任务列表 NVARCHAR(MAX), `;`@派工操作人 NVARCHAR(MAX)`;`t.[排产状态] = 1, `;`t.[任务状态] = 0, `;`t.派工特殊说明 = j.派工特殊说明, `;`t.计划完成时间 = j.计划完成时间, `;`t.派工操作人 = @派工操作人, `;`t.最后编辑人 = @派工操作人, ` +- `MES_OrderPlanned_DescriptionEdit`:`@未完成说明 nvarchar(50) = '', `;`@派工特殊说明 nvarchar(500) = '', `;`Update [MES_接口_生产计划_生产任务] set`;`未完成说明 = @未完成说明, `;`派工特殊说明 = @派工特殊说明, ` +- `计划排产_自制件_日程时间修改`:`CREATE PROCEDURE [dbo].[计划排产_自制件_日程时间修改]`;`@计划完成时间 nvarchar(50) = ''`;`IF @计划完成时间 ''`;`SET @EndTime = CONVERT(datetime, @计划完成时间, 120)`;`UPDATE [MES_接口_生产计划_生产任务]`;`计划完成时间 = @EndTime`;`AND ISNULL(派工状态, 0) = 0`;`SELECT '0' AS result, '未找到符合条件的记录或派工状态不为0' AS message` + +### 数据库调用链 + +- `src/views/PlanManagement/SelfMakePlan/index.vue` -> `计划排产_生产订单_已排产订单查询` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 查询/读取数据 +- `src/views/PlanManagement/SelfMakePlan/index.vue` -> `MES_登录_工位与名称_查询` -> 视图:`View_基础数据_工位` -> 查询/读取数据 +- `src/views/PlanManagement/SelfMakePlan/index.vue` -> `MES_OrderPlanned_Query` -> 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/PlanManagement/SelfMakePlan/index.vue` -> `MES_OrderPlanned_Query` -> 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/PlanManagement/SelfMakePlan/index.vue` -> `Prog_MES_LoadStations` -> 表:`MES_资源主数据` -> 查询/读取数据 +- `src/views/PlanManagement/SelfMakePlan/index.vue` -> `系统管理_人员管理_所有有效人员查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/PlanManagement/SelfMakePlan/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/SelfMakePlan/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/SelfMakePlan/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/SelfMakePlan/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/SelfMakePlan/index.vue` -> `计划排产_二次派工` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/SelfMakePlan/index.vue` -> `计划排产_二次派工` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/SelfMakePlan/index.vue` -> `MES_OrderPlanned_SingleTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/SelfMakePlan/index.vue` -> `MES_OrderPlanned_SingleTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/SelfMakePlan/index.vue` -> `MES_OrderPlanned_Finish` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 确认/关闭/完成业务动作 +- `src/views/PlanManagement/SelfMakePlan/index.vue` -> `MES_OrderPlanned_DescriptionEdit` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/SelfMakePlan/index.vue` -> `计划排产_自制件_日程时间修改` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `计划排产_生产订单_已排产订单查询` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`select * from [dbo].[MES_接口_生产计划_生产任务] where 排产状态 = 1`。 +- `MES_登录_工位与名称_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_基础数据_工位`。 主要返回字段线索:`[VisCode] as 工位代码`、`[VisCode] as MesWebCode`、`[VisCode] as 工位号`、`[Name] as 指南工位号`、`[Name] as 工位名称`。 排序/分组/分页线索:`order by [VisCode]`。 +- `MES_OrderPlanned_Query` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES`。 入参/分页参数:`@订单号 int`、`@物料类型 nvarchar(50)`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@要求完工日期1 nvarchar(50)`、`@要求完工日期2 nvarchar(50)`、`@计划开始1 nvarchar(50)`、`@计划开始2 nvarchar(50)`、`@计划完成1 nvarchar(50)`、`@计划完成2 nvarchar(50)`、`@排产状态 nvarchar(50)`、`@指派对象 nvarchar(50)`。 主要返回字段线索:`[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, `、`[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''`。 关键过滤/匹配条件:`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and [自制件属性] = ''机加件'' and isnull(v.任务状态, 0) < 4'`;`WHERE 质检类型 = ''终检''`;`AND v.[订单行号] = g.工艺顺序'`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`。 关键写入/状态处理语句线索:`set @selectStr = '`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@计划开始1 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] > = '''+@计划开始1+''''`;`if(@计划开始2 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] < = '''+@计划开始2+''''`;`if(@计划完成1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] > = '''+@计划完成1+''''`;`if(@计划完成2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] < = '''+@计划完成2+''''`。 +- `MES_OrderPlanned_Query` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES`。 入参/分页参数:`@订单号 int`、`@物料类型 nvarchar(50)`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@要求完工日期1 nvarchar(50)`、`@要求完工日期2 nvarchar(50)`、`@计划开始1 nvarchar(50)`、`@计划开始2 nvarchar(50)`、`@计划完成1 nvarchar(50)`、`@计划完成2 nvarchar(50)`、`@排产状态 nvarchar(50)`、`@指派对象 nvarchar(50)`。 主要返回字段线索:`[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, `、`[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''`。 关键过滤/匹配条件:`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and [自制件属性] = ''机加件'' and isnull(v.任务状态, 0) < 4'`;`WHERE 质检类型 = ''终检''`;`AND v.[订单行号] = g.工艺顺序'`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`。 关键写入/状态处理语句线索:`set @selectStr = '`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@计划开始1 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] > = '''+@计划开始1+''''`;`if(@计划开始2 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] < = '''+@计划开始2+''''`;`if(@计划完成1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] > = '''+@计划完成1+''''`;`if(@计划完成2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] < = '''+@计划完成2+''''`。 +- `Prog_MES_LoadStations` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理外协业务。 读取/关联对象:表:`MES_资源主数据`。 主要返回字段线索:`[VisCode], [Name] as OPName`。 关键过滤/匹配条件:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 排序/分组/分页线索:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 +- `系统管理_人员管理_所有有效人员查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`Personnel_Number AS 人员编号, `、`Personnel_Name AS 人员姓名, `、`account AS 账号, `、`Roles_Function AS 角色, `、`部门名称`。 关键过滤/匹配条件:`WHERE Quit = 0`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY Personnel_Name;`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `计划排产_二次派工` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID int,`、`@personnel nvarchar(500)`。 关键过滤/匹配条件:`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID`。 关键写入/状态处理语句线索:`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID`。 +- `计划排产_二次派工` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID int,`、`@personnel nvarchar(500)`。 关键过滤/匹配条件:`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID`。 关键写入/状态处理语句线索:`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID`。 +- `MES_OrderPlanned_SingleTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:查询、新增、更新、删除、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`、`@指派对象编号 nvarchar(50)`、`@指派对象 nvarchar(50)`、`@指派数量 int`、`@派工特殊说明 nvarchar(500)`、`@计划开始时间 nvarchar(50)`、`@计划完成时间 nvarchar(50)`、`@最晚开始时间 nvarchar(50)`、`@派工操作人 nvarchar(50)`。 主要返回字段线索:`@计划数量 = 计划数量`。 关键过滤/匹配条件:`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`FROM [MES_接口_生产计划_生产任务] WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`select @未指派数量_剩余 = 计划数量+@指派数量_Free from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`WHERE [订单编号] = @订单号 AND [订单行号] = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`set @指派数量_Free = @计划数量-@指派数量`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`INSERT INTO [MES_接口_生产计划_生产任务]`;`set @ErrMsg = '指派数量大于剩余未分配数量,派工失败'`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`if(@最晚开始时间 = '') set @最晚开始时间 = NULL`;`if(@计划开始时间 = '') set @计划开始时间 = NULL`;`if(@计划完成时间 = '') set @计划完成时间 = NULL`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET [指派对象编号] = @指派对象编号`。 +- `MES_OrderPlanned_SingleTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:查询、新增、更新、删除、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`、`@指派对象编号 nvarchar(50)`、`@指派对象 nvarchar(50)`、`@指派数量 int`、`@派工特殊说明 nvarchar(500)`、`@计划开始时间 nvarchar(50)`、`@计划完成时间 nvarchar(50)`、`@最晚开始时间 nvarchar(50)`、`@派工操作人 nvarchar(50)`。 主要返回字段线索:`@计划数量 = 计划数量`。 关键过滤/匹配条件:`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`FROM [MES_接口_生产计划_生产任务] WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`select @未指派数量_剩余 = 计划数量+@指派数量_Free from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`WHERE [订单编号] = @订单号 AND [订单行号] = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`set @指派数量_Free = @计划数量-@指派数量`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`INSERT INTO [MES_接口_生产计划_生产任务]`;`set @ErrMsg = '指派数量大于剩余未分配数量,派工失败'`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`if(@最晚开始时间 = '') set @最晚开始时间 = NULL`;`if(@计划开始时间 = '') set @计划开始时间 = NULL`;`if(@计划完成时间 = '') set @计划完成时间 = NULL`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET [指派对象编号] = @指派对象编号`。 +- `MES_OrderPlanned_Finish` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 确认/关闭/完成业务动作。 数据库处理摘要:查询、更新、解析 JSON 批量数据、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 入参/分页参数:`@任务列表 NVARCHAR(MAX),`、`@派工操作人 NVARCHAR(MAX)`。 主要返回字段线索:`TaskAID = JSON_VALUE(value, '$.taskaid'), `、`指派对象 = JSON_VALUE(value, '$."指派对象"'), `、`指派数量 = JSON_VALUE(value, '$."指派数量"'), `、`指派对象编号 = JSON_VALUE(value, '$."指派对象编号"'), `、`派工特殊说明 = JSON_VALUE(value, '$."派工特殊说明"'), `、`计划开始时间 = JSON_VALUE(value, '$."计划开始时间"'), `、`计划完成时间 = JSON_VALUE(value, '$."计划完成时间"'), `、`最晚开始时间 = JSON_VALUE(value, '$."最晚开始时间"')`。 关键写入/状态处理语句线索:`UPDATE t`;`SET`。 实现特征:JSON 批量解析。 +- `MES_OrderPlanned_DescriptionEdit` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int,`、`@订单行号 int,`、`@订单拆分内码 int,`、`@优先级 nvarchar(50)`、`@未完成说明 nvarchar(50)`、`@派工特殊说明 nvarchar(500)`、`@最后编辑人 nvarchar(500)`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`Update [MES_接口_生产计划_生产任务] set`。 +- `计划排产_自制件_日程时间修改` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int,`、`@订单行号 int`、`@订单拆分内码 int`、`@计划开始时间 nvarchar(50)`、`@计划完成时间 nvarchar(50)`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单号`;`AND 订单行号 = @订单行号`;`AND 订单拆分内码 = @订单拆分内码`;`AND ISNULL(派工状态, 0) = 0`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @StartTime = CONVERT(datetime, @计划开始时间, 120)`;`SET @StartTime = NULL`;`SET @EndTime = CONVERT(datetime, @计划完成时间, 120)`;`SET @EndTime = NULL`;`UPDATE [MES_接口_生产计划_生产任务]`;`SET 计划开始时间 = @StartTime, `。 实现特征:异常捕获。 + +## 13. src/views/PlanManagement/SelfMakePlando/index.vue + +**页面位置**:`src/views/PlanManagement/SelfMakePlando/index.vue` +**所属模块**:PlanManagement / SelfMakePlando +**源码行数**:1669 + +### 页面功能 + +该页面处理自制件/机加件排产。用户查询生产订单工序任务,筛选订单、合同、物料、工序、计划时间、排产状态和指派对象,完成工位派工、人员二次派工、外协分组、计划说明维护和排产确认。 + +页面可见的操作/字段包括 “查询”、“批量排产”、“排产完成”、“确定”、“查看”、“零件图纸”、“工艺图纸”、“编辑”、“计划排产”、“取 消”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `工艺管理_图纸维护_查看图纸`、`工艺管理_工艺维护_查看图纸`、`工艺管理_获取物料原料信息`、`计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Query` 等过程 取数或提交业务动作。 + +### 页面流程图 + +自制/机加排产流程: + +```mermaid +flowchart LR + A[输入订单/合同/物料/工序/时间条件] --> B[调用 MES_OrderPlanned_Query 查询待排产任务] + B --> C[选择任务行] + C --> D{派工方式} + D --> E[MES_OrderPlanned_SingleTaskPlanned 单任务派工] + D --> F[计划排产_二次派工 绑定人员] + D --> G[计划排产_外协分组] + E --> H[MES_OrderPlanned_EditTaskPlanned/DescriptionEdit 修改计划字段] + F --> H + G --> H + H --> I[MES_OrderPlanned_Finish 确认排产] + I --> J[PATCH /ProductionOrders(...) 回写 SAP 生产订单状态] + J --> K[页面刷新任务状态] +``` + + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`批量排产`、`排产完成`、`确定`、`查看`、`零件图纸`、`工艺图纸`、`编辑`、`计划排产`、`取 消`、`确 定`、`关闭`、`全部`、`已完成`、`未完成`、`item.指南工位号`、`表单`、`序号` + +主要方法线索:`getitemdraw`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `item` | `@订单编号` | - | +| 参数 | `this.orderNo ` | `@订单号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `'自制件'` | `@物料类型` | - | +| 参数 | `this.contractNo` | `@合同号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `this.productCode` | `@产品编码` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.productName` | `@产品名称` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.processName` | `@工序名称` | - | +| 参数 | `this.nature` | `@性质` | - | +| 参数 | `this.completionTime[0` | `@要求完工日期1` | - | +| 参数 | `this.completionTime[1` | `@要求完工日期2` | - | +| 参数 | `this.planStartTime[0` | `@计划开始1` | - | +| 参数 | `this.planStartTime[1` | `@计划开始2` | - | +| 参数 | `this.planendTime[0` | `@计划完成1` | - | +| 参数 | `this.planendTime[1` | `@计划完成2` | - | +| 参数 | `this.productionStatus` | `@排产状态` | - | +| 参数 | `this.station` | `@指派对象` | - | +| 参数 | `this.doneorderNo ` | `@订单号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `this.donecontractNo` | `@合同号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `this.doneproductCode` | `@产品编码` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.doneproductName` | `@产品名称` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.doneprocessName` | `@工序名称` | - | +| 参数 | `this.donenature` | `@性质` | - | +| 参数 | `this.doneproductionStatus` | `@排产状态` | - | +| 参数 | `editstr` | `@editstr` | - | +| 参数 | `row.订单号` | `@订单号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `row.订单行号` | `@订单行号` | - | +| 参数 | `row.拆分内码` | `@订单拆分内码` | - | +| 参数 | `row.taskaid` | `@TaskAID` | - | +| 参数 | `row.二次派工` | `@personnel` | - | +| 参数 | `row.派工特殊说明` | `@派工特殊说明` | - | +| 参数 | `this.$store.state.user.name` | `@派工操作人` | - | +| 参数 | `row.指派对象编号` | `@指派对象编号` | - | +| 参数 | `row.指派对象` | `@指派对象` | - | +| 参数 | `this.editnumber` | `@指派数量` | - | +| 参数 | `row.计划开始时间` | `@计划开始时间` | - | +| 参数 | `row.计划完成时间` | `@计划完成时间` | - | +| 参数 | `row.最晚开始时间` | `@最晚开始时间` | - | +| 参数 | `item.订单号` | `@订单号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `item.订单行号` | `@订单行号` | - | +| 参数 | `item.拆分内码` | `@订单拆分内码` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- SAP B1 Service Layer(`src/api/b1s.js`) +- FullCalendar +- PDF/图纸预览或导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 632 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_零件图纸` | +| 663 | 11(当前通用存储过程查询/执行) | `工艺管理_工艺维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_工艺图纸` | +| 680 | 11(当前通用存储过程查询/执行) | `工艺管理_获取物料原料信息` | 业务存储过程调用 | 查询、读取 SAP B1 数据库对象 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_OWOR_material` | +| 710 | 11(当前通用存储过程查询/执行) | `计划排产_生产订单_已排产订单查询` | 查询/读取数据 | 查询、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 860 | 11(当前通用存储过程查询/执行) | `MES_登录_工位与名称_查询` | 查询/读取数据 | 查询 | 视图:`View_基础数据_工位` | +| 929 | 11(当前通用存储过程查询/执行) | `MES_OrderPlanned_Query` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` | +| 987 | 11(当前通用存储过程查询/执行) | `MES_OrderPlanned_Query` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` | +| 1025 | 11(当前通用存储过程查询/执行) | `Prog_MES_LoadStations` | 查询/读取数据 | 查询、处理外协业务 | 表:`MES_资源主数据` | +| 1038 | 11(当前通用存储过程查询/执行) | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 查询 | 视图:`登录基础数据_管理人员权限视图` | +| 1078 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1095 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1112 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1129 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1143 | 12(当前通用存储过程写入/业务动作) | `计划排产_二次派工` | 计划排产或派工 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1152 | 12(当前通用存储过程写入/业务动作) | `计划排产_二次派工` | 计划排产或派工 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1278 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 查询、新增、更新、删除、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1309 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 查询、新增、更新、删除、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1345 | 12(当前通用存储过程写入/业务动作) | `计划排产_外协分组` | 计划排产或派工 | 更新、处理计划/派工、处理外协业务 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1440 | 11(当前通用存储过程查询/执行) | `MES_OrderPlanned_Finish` | 确认/关闭/完成业务动作 | 查询、更新、解析 JSON 批量数据、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1469 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1550 | 12(当前通用存储过程写入/业务动作) | `计划排产_自制件_日程时间修改` | 更新/保存业务数据 | 查询、更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | + +### 与 SAP 的交互 + +页面直接 SAP/接口调用: +- 第 1433 行:`patchB1("/ProductionOrders(")` +存储过程内读取 SAP B1 数据库对象: +- 工艺管理_获取物料原料信息: SAP.SBO_YL.dbo.UBT_OWOR_material + +### SAP 接口级说明 + +| 行号 | 方法 | 接口 | 调用时机/影响判断 | 提交字段线索 | +|---:|---|---|---|---| +| 1433 | `patchB1` | `/ProductionOrders(` | 读取或更新 SAP 生产订单。失败会导致 MES 与 SAP 订单状态/工序资源不同步。 | `AbsoluteEntry`、`U_MODueDate`、`U_MOStartDate`、`优先级`、`未完成说明`、`派工特殊说明` | + +### 状态流转说明 + +- `工艺管理_获取物料原料信息`:`SELECT * FROM SAP.SBO_YL.dbo.UBT_OWOR_material where Docentry = @订单编号` +- `计划排产_生产订单_已排产订单查询`:`CREATE PROCEDURE [dbo].[计划排产_生产订单_已排产订单查询]`;`select * from [dbo].[MES_接口_生产计划_生产任务] where 排产状态 = 1` +- `MES_OrderPlanned_Query`:`@计划完成1 nvarchar(50) = '', `;`@计划完成2 nvarchar(50) = '', `;`@排产状态 nvarchar(50) = '全部', `;`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and [自制件属性] = ''机加件'' and isnull(v.任务状态, 0) < 4'`;`[计划完成] as 要求完工日期, [工序名称], 完成数量, v.计划号, 收料数量, 外协分组, v.任务状态, v.备注, `;`case when [加急状态] = 1 then ''加急'' else '''' end as 加急状态, 性质, isnull(总工时, 0) as 总工时, [占用情况]`;`, [排产状态], [工序计划数量], 指派对象编号, 指派对象, TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, `;`[派工状态], [外协通知], [优先级], [未完成说明], [派工特殊说明], [最后编辑人], [最后编辑时间], [二次派工], isnull(g.标准工时, 0) as 标准工时, ` +- `MES_OrderPlanned_Query`:`@计划完成1 nvarchar(50) = '', `;`@计划完成2 nvarchar(50) = '', `;`@排产状态 nvarchar(50) = '全部', `;`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and [自制件属性] = ''机加件'' and isnull(v.任务状态, 0) < 4'`;`[计划完成] as 要求完工日期, [工序名称], 完成数量, v.计划号, 收料数量, 外协分组, v.任务状态, v.备注, `;`case when [加急状态] = 1 then ''加急'' else '''' end as 加急状态, 性质, isnull(总工时, 0) as 总工时, [占用情况]`;`, [排产状态], [工序计划数量], 指派对象编号, 指派对象, TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, `;`[派工状态], [外协通知], [优先级], [未完成说明], [派工特殊说明], [最后编辑人], [最后编辑时间], [二次派工], isnull(g.标准工时, 0) as 标准工时, ` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `计划排产_二次派工`:`create PROCEDURE [dbo].[计划排产_二次派工]`;`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID` +- `计划排产_二次派工`:`create PROCEDURE [dbo].[计划排产_二次派工]`;`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID` +- `MES_OrderPlanned_SingleTaskPlanned`:`@派工特殊说明 nvarchar(500) = '', `;`@计划完成时间 nvarchar(50) = '', `;`@派工操作人 nvarchar(50) = ''`;`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`INSERT INTO [MES_接口_生产计划_生产任务]` +- `MES_OrderPlanned_SingleTaskPlanned`:`@派工特殊说明 nvarchar(500) = '', `;`@计划完成时间 nvarchar(50) = '', `;`@派工操作人 nvarchar(50) = ''`;`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`INSERT INTO [MES_接口_生产计划_生产任务]` +- `计划排产_外协分组`:`create PROCEDURE [dbo].[计划排产_外协分组]`;`update [dbo].[MES_接口_生产计划_生产任务] set 外协分组 = @外协分组 where AID = @TaskAID` +- `MES_OrderPlanned_Finish`:`@任务列表 NVARCHAR(MAX), `;`@派工操作人 NVARCHAR(MAX)`;`t.[排产状态] = 1, `;`t.[任务状态] = 0, `;`t.派工特殊说明 = j.派工特殊说明, `;`t.计划完成时间 = j.计划完成时间, `;`t.派工操作人 = @派工操作人, `;`t.最后编辑人 = @派工操作人, ` +- `MES_OrderPlanned_DescriptionEdit`:`@未完成说明 nvarchar(50) = '', `;`@派工特殊说明 nvarchar(500) = '', `;`Update [MES_接口_生产计划_生产任务] set`;`未完成说明 = @未完成说明, `;`派工特殊说明 = @派工特殊说明, ` +- `计划排产_自制件_日程时间修改`:`CREATE PROCEDURE [dbo].[计划排产_自制件_日程时间修改]`;`@计划完成时间 nvarchar(50) = ''`;`IF @计划完成时间 ''`;`SET @EndTime = CONVERT(datetime, @计划完成时间, 120)`;`UPDATE [MES_接口_生产计划_生产任务]`;`计划完成时间 = @EndTime`;`AND ISNULL(派工状态, 0) = 0`;`SELECT '0' AS result, '未找到符合条件的记录或派工状态不为0' AS message` + +### 数据库调用链 + +- `src/views/PlanManagement/SelfMakePlando/index.vue` -> `工艺管理_图纸维护_查看图纸` -> 表:`物料基础数据_零件图纸` -> 查询/读取数据 +- `src/views/PlanManagement/SelfMakePlando/index.vue` -> `工艺管理_工艺维护_查看图纸` -> 表:`物料基础数据_工艺图纸` -> 查询/读取数据 +- `src/views/PlanManagement/SelfMakePlando/index.vue` -> `工艺管理_获取物料原料信息` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_OWOR_material` -> 业务存储过程调用 +- `src/views/PlanManagement/SelfMakePlando/index.vue` -> `计划排产_生产订单_已排产订单查询` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 查询/读取数据 +- `src/views/PlanManagement/SelfMakePlando/index.vue` -> `MES_登录_工位与名称_查询` -> 视图:`View_基础数据_工位` -> 查询/读取数据 +- `src/views/PlanManagement/SelfMakePlando/index.vue` -> `MES_OrderPlanned_Query` -> 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/PlanManagement/SelfMakePlando/index.vue` -> `MES_OrderPlanned_Query` -> 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/PlanManagement/SelfMakePlando/index.vue` -> `Prog_MES_LoadStations` -> 表:`MES_资源主数据` -> 查询/读取数据 +- `src/views/PlanManagement/SelfMakePlando/index.vue` -> `系统管理_人员管理_所有有效人员查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/PlanManagement/SelfMakePlando/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/SelfMakePlando/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/SelfMakePlando/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/SelfMakePlando/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/SelfMakePlando/index.vue` -> `计划排产_二次派工` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/SelfMakePlando/index.vue` -> `计划排产_二次派工` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/SelfMakePlando/index.vue` -> `MES_OrderPlanned_SingleTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/SelfMakePlando/index.vue` -> `MES_OrderPlanned_SingleTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/SelfMakePlando/index.vue` -> `计划排产_外协分组` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/SelfMakePlando/index.vue` -> `MES_OrderPlanned_Finish` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 确认/关闭/完成业务动作 +- `src/views/PlanManagement/SelfMakePlando/index.vue` -> `MES_OrderPlanned_DescriptionEdit` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/SelfMakePlando/index.vue` -> `计划排产_自制件_日程时间修改` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `工艺管理_图纸维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_零件图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`、`worker`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `工艺管理_工艺维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_工艺图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `工艺管理_获取物料原料信息` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、读取 SAP B1 数据库对象。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_OWOR_material`。 入参/分页参数:`@订单编号 nvarchar(50)`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`SELECT * FROM SAP.SBO_YL.dbo.UBT_OWOR_material where Docentry = @订单编号`。 实现特征:读取 SAP 数据库对象。 +- `计划排产_生产订单_已排产订单查询` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`select * from [dbo].[MES_接口_生产计划_生产任务] where 排产状态 = 1`。 +- `MES_登录_工位与名称_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_基础数据_工位`。 主要返回字段线索:`[VisCode] as 工位代码`、`[VisCode] as MesWebCode`、`[VisCode] as 工位号`、`[Name] as 指南工位号`、`[Name] as 工位名称`。 排序/分组/分页线索:`order by [VisCode]`。 +- `MES_OrderPlanned_Query` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES`。 入参/分页参数:`@订单号 int`、`@物料类型 nvarchar(50)`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@要求完工日期1 nvarchar(50)`、`@要求完工日期2 nvarchar(50)`、`@计划开始1 nvarchar(50)`、`@计划开始2 nvarchar(50)`、`@计划完成1 nvarchar(50)`、`@计划完成2 nvarchar(50)`、`@排产状态 nvarchar(50)`、`@指派对象 nvarchar(50)`。 主要返回字段线索:`[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, `、`[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''`。 关键过滤/匹配条件:`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and [自制件属性] = ''机加件'' and isnull(v.任务状态, 0) < 4'`;`WHERE 质检类型 = ''终检''`;`AND v.[订单行号] = g.工艺顺序'`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`。 关键写入/状态处理语句线索:`set @selectStr = '`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@计划开始1 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] > = '''+@计划开始1+''''`;`if(@计划开始2 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] < = '''+@计划开始2+''''`;`if(@计划完成1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] > = '''+@计划完成1+''''`;`if(@计划完成2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] < = '''+@计划完成2+''''`。 +- `MES_OrderPlanned_Query` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES`。 入参/分页参数:`@订单号 int`、`@物料类型 nvarchar(50)`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@要求完工日期1 nvarchar(50)`、`@要求完工日期2 nvarchar(50)`、`@计划开始1 nvarchar(50)`、`@计划开始2 nvarchar(50)`、`@计划完成1 nvarchar(50)`、`@计划完成2 nvarchar(50)`、`@排产状态 nvarchar(50)`、`@指派对象 nvarchar(50)`。 主要返回字段线索:`[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, `、`[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''`。 关键过滤/匹配条件:`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and [自制件属性] = ''机加件'' and isnull(v.任务状态, 0) < 4'`;`WHERE 质检类型 = ''终检''`;`AND v.[订单行号] = g.工艺顺序'`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`。 关键写入/状态处理语句线索:`set @selectStr = '`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@计划开始1 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] > = '''+@计划开始1+''''`;`if(@计划开始2 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] < = '''+@计划开始2+''''`;`if(@计划完成1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] > = '''+@计划完成1+''''`;`if(@计划完成2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] < = '''+@计划完成2+''''`。 +- `Prog_MES_LoadStations` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理外协业务。 读取/关联对象:表:`MES_资源主数据`。 主要返回字段线索:`[VisCode], [Name] as OPName`。 关键过滤/匹配条件:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 排序/分组/分页线索:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 +- `系统管理_人员管理_所有有效人员查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`Personnel_Number AS 人员编号, `、`Personnel_Name AS 人员姓名, `、`account AS 账号, `、`Roles_Function AS 角色, `、`部门名称`。 关键过滤/匹配条件:`WHERE Quit = 0`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY Personnel_Name;`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `计划排产_二次派工` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID int,`、`@personnel nvarchar(500)`。 关键过滤/匹配条件:`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID`。 关键写入/状态处理语句线索:`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID`。 +- `计划排产_二次派工` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID int,`、`@personnel nvarchar(500)`。 关键过滤/匹配条件:`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID`。 关键写入/状态处理语句线索:`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID`。 +- `MES_OrderPlanned_SingleTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:查询、新增、更新、删除、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`、`@指派对象编号 nvarchar(50)`、`@指派对象 nvarchar(50)`、`@指派数量 int`、`@派工特殊说明 nvarchar(500)`、`@计划开始时间 nvarchar(50)`、`@计划完成时间 nvarchar(50)`、`@最晚开始时间 nvarchar(50)`、`@派工操作人 nvarchar(50)`。 主要返回字段线索:`@计划数量 = 计划数量`。 关键过滤/匹配条件:`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`FROM [MES_接口_生产计划_生产任务] WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`select @未指派数量_剩余 = 计划数量+@指派数量_Free from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`WHERE [订单编号] = @订单号 AND [订单行号] = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`set @指派数量_Free = @计划数量-@指派数量`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`INSERT INTO [MES_接口_生产计划_生产任务]`;`set @ErrMsg = '指派数量大于剩余未分配数量,派工失败'`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`if(@最晚开始时间 = '') set @最晚开始时间 = NULL`;`if(@计划开始时间 = '') set @计划开始时间 = NULL`;`if(@计划完成时间 = '') set @计划完成时间 = NULL`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET [指派对象编号] = @指派对象编号`。 +- `MES_OrderPlanned_SingleTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:查询、新增、更新、删除、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`、`@指派对象编号 nvarchar(50)`、`@指派对象 nvarchar(50)`、`@指派数量 int`、`@派工特殊说明 nvarchar(500)`、`@计划开始时间 nvarchar(50)`、`@计划完成时间 nvarchar(50)`、`@最晚开始时间 nvarchar(50)`、`@派工操作人 nvarchar(50)`。 主要返回字段线索:`@计划数量 = 计划数量`。 关键过滤/匹配条件:`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`FROM [MES_接口_生产计划_生产任务] WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`select @未指派数量_剩余 = 计划数量+@指派数量_Free from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`WHERE [订单编号] = @订单号 AND [订单行号] = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`set @指派数量_Free = @计划数量-@指派数量`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`INSERT INTO [MES_接口_生产计划_生产任务]`;`set @ErrMsg = '指派数量大于剩余未分配数量,派工失败'`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`if(@最晚开始时间 = '') set @最晚开始时间 = NULL`;`if(@计划开始时间 = '') set @计划开始时间 = NULL`;`if(@计划完成时间 = '') set @计划完成时间 = NULL`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET [指派对象编号] = @指派对象编号`。 +- `计划排产_外协分组` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:更新、处理计划/派工、处理外协业务。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID int,`、`@外协分组 NVARCHAR(50)`。 关键过滤/匹配条件:`update [dbo].[MES_接口_生产计划_生产任务] set 外协分组 = @外协分组 where AID = @TaskAID`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`update [dbo].[MES_接口_生产计划_生产任务] set 外协分组 = @外协分组 where AID = @TaskAID`。 +- `MES_OrderPlanned_Finish` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 确认/关闭/完成业务动作。 数据库处理摘要:查询、更新、解析 JSON 批量数据、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 入参/分页参数:`@任务列表 NVARCHAR(MAX),`、`@派工操作人 NVARCHAR(MAX)`。 主要返回字段线索:`TaskAID = JSON_VALUE(value, '$.taskaid'), `、`指派对象 = JSON_VALUE(value, '$."指派对象"'), `、`指派数量 = JSON_VALUE(value, '$."指派数量"'), `、`指派对象编号 = JSON_VALUE(value, '$."指派对象编号"'), `、`派工特殊说明 = JSON_VALUE(value, '$."派工特殊说明"'), `、`计划开始时间 = JSON_VALUE(value, '$."计划开始时间"'), `、`计划完成时间 = JSON_VALUE(value, '$."计划完成时间"'), `、`最晚开始时间 = JSON_VALUE(value, '$."最晚开始时间"')`。 关键写入/状态处理语句线索:`UPDATE t`;`SET`。 实现特征:JSON 批量解析。 +- `MES_OrderPlanned_DescriptionEdit` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int,`、`@订单行号 int,`、`@订单拆分内码 int,`、`@优先级 nvarchar(50)`、`@未完成说明 nvarchar(50)`、`@派工特殊说明 nvarchar(500)`、`@最后编辑人 nvarchar(500)`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`Update [MES_接口_生产计划_生产任务] set`。 +- `计划排产_自制件_日程时间修改` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int,`、`@订单行号 int`、`@订单拆分内码 int`、`@计划开始时间 nvarchar(50)`、`@计划完成时间 nvarchar(50)`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单号`;`AND 订单行号 = @订单行号`;`AND 订单拆分内码 = @订单拆分内码`;`AND ISNULL(派工状态, 0) = 0`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @StartTime = CONVERT(datetime, @计划开始时间, 120)`;`SET @StartTime = NULL`;`SET @EndTime = CONVERT(datetime, @计划完成时间, 120)`;`SET @EndTime = NULL`;`UPDATE [MES_接口_生产计划_生产任务]`;`SET 计划开始时间 = @StartTime, `。 实现特征:异常捕获。 + +## 14. src/views/PlanManagement/SelfMakePlandone/index.vue + +**页面位置**:`src/views/PlanManagement/SelfMakePlandone/index.vue` +**所属模块**:PlanManagement / SelfMakePlandone +**源码行数**:1495 + +### 页面功能 + +该页面处理自制件/机加件排产。用户查询生产订单工序任务,筛选订单、合同、物料、工序、计划时间、排产状态和指派对象,完成工位派工、人员二次派工、外协分组、计划说明维护和排产确认。 + +页面可见的操作/字段包括 “查询”、“确定”、“查看”、“派工”、“编辑”、“取 消”、“确 定”、“全部”、“已完成”、“未完成”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `工艺管理_获取物料原料信息`、`计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Query`、`Prog_MES_LoadStations`、`系统管理_人员管理_所有有效人员查询` 等过程 取数或提交业务动作。 + +### 页面流程图 + +自制/机加排产流程: + +```mermaid +flowchart LR + A[输入订单/合同/物料/工序/时间条件] --> B[调用 MES_OrderPlanned_Query 查询待排产任务] + B --> C[选择任务行] + C --> D{派工方式} + D --> E[MES_OrderPlanned_SingleTaskPlanned 单任务派工] + D --> F[计划排产_二次派工 绑定人员] + D --> G[计划排产_外协分组] + E --> H[MES_OrderPlanned_EditTaskPlanned/DescriptionEdit 修改计划字段] + F --> H + G --> H + H --> I[MES_OrderPlanned_Finish 确认排产] + I --> J[PATCH /ProductionOrders(...) 回写 SAP 生产订单状态] + J --> K[页面刷新任务状态] +``` + + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`确定`、`查看`、`派工`、`编辑`、`取 消`、`确 定`、`全部`、`已完成`、`未完成`、`item.指南工位号`、`表单`、`生产订单`、`计划号`、`物料编码`、`物料名称`、`计划数`、`要求完工日期` + +主要方法线索:`getitemdata`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `item` | `@订单编号` | - | +| 参数 | `this.orderNo ` | `@订单号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `'自制件'` | `@物料类型` | - | +| 参数 | `this.contractNo` | `@合同号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `this.productCode` | `@产品编码` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.productName` | `@产品名称` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.processName` | `@工序名称` | - | +| 参数 | `this.nature` | `@性质` | - | +| 参数 | `this.completionTime[0` | `@要求完工日期1` | - | +| 参数 | `this.completionTime[1` | `@要求完工日期2` | - | +| 参数 | `this.planStartTime[0` | `@计划开始1` | - | +| 参数 | `this.planStartTime[1` | `@计划开始2` | - | +| 参数 | `this.planendTime[0` | `@计划完成1` | - | +| 参数 | `this.planendTime[1` | `@计划完成2` | - | +| 参数 | `this.productionStatus` | `@排产状态` | - | +| 参数 | `this.station` | `@指派对象` | - | +| 参数 | `this.doneorderNo ` | `@订单号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `this.donecontractNo` | `@合同号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `this.doneproductCode` | `@产品编码` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.doneproductName` | `@产品名称` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.doneprocessName` | `@工序名称` | - | +| 参数 | `this.donenature` | `@性质` | - | +| 参数 | `this.doneproductionStatus` | `@排产状态` | - | +| 参数 | `editstr` | `@editstr` | - | +| 参数 | `row.订单号` | `@订单号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `row.订单行号` | `@订单行号` | - | +| 参数 | `row.拆分内码` | `@订单拆分内码` | - | +| 参数 | `row.taskaid` | `@TaskAID` | - | +| 参数 | `row.二次派工` | `@personnel` | - | +| 参数 | `row.派工特殊说明` | `@派工特殊说明` | - | +| 参数 | `this.$store.state.user.name` | `@派工操作人` | - | +| 参数 | `row.指派对象编号` | `@指派对象编号` | - | +| 参数 | `row.指派对象` | `@指派对象` | - | +| 参数 | `this.editnumber` | `@指派数量` | - | +| 参数 | `row.计划开始时间` | `@计划开始时间` | - | +| 参数 | `row.计划完成时间` | `@计划完成时间` | - | +| 参数 | `row.最晚开始时间` | `@最晚开始时间` | - | +| 参数 | `item.订单号` | `@订单号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `item.订单行号` | `@订单行号` | - | +| 参数 | `item.拆分内码` | `@订单拆分内码` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- SAP B1 Service Layer(`src/api/b1s.js`) +- FullCalendar + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 600 | 11(当前通用存储过程查询/执行) | `工艺管理_获取物料原料信息` | 业务存储过程调用 | 查询、读取 SAP B1 数据库对象 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_OWOR_material` | +| 630 | 11(当前通用存储过程查询/执行) | `计划排产_生产订单_已排产订单查询` | 查询/读取数据 | 查询、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 710 | 11(当前通用存储过程查询/执行) | `MES_登录_工位与名称_查询` | 查询/读取数据 | 查询 | 视图:`View_基础数据_工位` | +| 779 | 11(当前通用存储过程查询/执行) | `MES_OrderPlanned_Query` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` | +| 837 | 11(当前通用存储过程查询/执行) | `MES_OrderPlanned_Query` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` | +| 874 | 11(当前通用存储过程查询/执行) | `Prog_MES_LoadStations` | 查询/读取数据 | 查询、处理外协业务 | 表:`MES_资源主数据` | +| 887 | 11(当前通用存储过程查询/执行) | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 查询 | 视图:`登录基础数据_管理人员权限视图` | +| 927 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 944 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 961 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 978 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 992 | 12(当前通用存储过程写入/业务动作) | `计划排产_二次派工` | 计划排产或派工 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1001 | 12(当前通用存储过程写入/业务动作) | `计划排产_二次派工` | 计划排产或派工 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1105 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 查询、新增、更新、删除、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1136 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 查询、新增、更新、删除、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1172 | 12(当前通用存储过程写入/业务动作) | `计划排产_外协分组` | 计划排产或派工 | 更新、处理计划/派工、处理外协业务 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1266 | 11(当前通用存储过程查询/执行) | `MES_OrderPlanned_Finish` | 确认/关闭/完成业务动作 | 查询、更新、解析 JSON 批量数据、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1295 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1376 | 12(当前通用存储过程写入/业务动作) | `计划排产_自制件_日程时间修改` | 更新/保存业务数据 | 查询、更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | + +### 与 SAP 的交互 + +页面直接 SAP/接口调用: +- 第 1259 行:`patchB1("/ProductionOrders(")` +存储过程内读取 SAP B1 数据库对象: +- 工艺管理_获取物料原料信息: SAP.SBO_YL.dbo.UBT_OWOR_material + +### SAP 接口级说明 + +| 行号 | 方法 | 接口 | 调用时机/影响判断 | 提交字段线索 | +|---:|---|---|---|---| +| 1259 | `patchB1` | `/ProductionOrders(` | 读取或更新 SAP 生产订单。失败会导致 MES 与 SAP 订单状态/工序资源不同步。 | `AbsoluteEntry`、`U_MODueDate`、`U_MOStartDate`、`优先级`、`未完成说明`、`派工特殊说明` | + +### 状态流转说明 + +- `工艺管理_获取物料原料信息`:`SELECT * FROM SAP.SBO_YL.dbo.UBT_OWOR_material where Docentry = @订单编号` +- `计划排产_生产订单_已排产订单查询`:`CREATE PROCEDURE [dbo].[计划排产_生产订单_已排产订单查询]`;`select * from [dbo].[MES_接口_生产计划_生产任务] where 排产状态 = 1` +- `MES_OrderPlanned_Query`:`@计划完成1 nvarchar(50) = '', `;`@计划完成2 nvarchar(50) = '', `;`@排产状态 nvarchar(50) = '全部', `;`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and [自制件属性] = ''机加件'' and isnull(v.任务状态, 0) < 4'`;`[计划完成] as 要求完工日期, [工序名称], 完成数量, v.计划号, 收料数量, 外协分组, v.任务状态, v.备注, `;`case when [加急状态] = 1 then ''加急'' else '''' end as 加急状态, 性质, isnull(总工时, 0) as 总工时, [占用情况]`;`, [排产状态], [工序计划数量], 指派对象编号, 指派对象, TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, `;`[派工状态], [外协通知], [优先级], [未完成说明], [派工特殊说明], [最后编辑人], [最后编辑时间], [二次派工], isnull(g.标准工时, 0) as 标准工时, ` +- `MES_OrderPlanned_Query`:`@计划完成1 nvarchar(50) = '', `;`@计划完成2 nvarchar(50) = '', `;`@排产状态 nvarchar(50) = '全部', `;`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and [自制件属性] = ''机加件'' and isnull(v.任务状态, 0) < 4'`;`[计划完成] as 要求完工日期, [工序名称], 完成数量, v.计划号, 收料数量, 外协分组, v.任务状态, v.备注, `;`case when [加急状态] = 1 then ''加急'' else '''' end as 加急状态, 性质, isnull(总工时, 0) as 总工时, [占用情况]`;`, [排产状态], [工序计划数量], 指派对象编号, 指派对象, TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, `;`[派工状态], [外协通知], [优先级], [未完成说明], [派工特殊说明], [最后编辑人], [最后编辑时间], [二次派工], isnull(g.标准工时, 0) as 标准工时, ` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `计划排产_二次派工`:`create PROCEDURE [dbo].[计划排产_二次派工]`;`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID` +- `计划排产_二次派工`:`create PROCEDURE [dbo].[计划排产_二次派工]`;`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID` +- `MES_OrderPlanned_SingleTaskPlanned`:`@派工特殊说明 nvarchar(500) = '', `;`@计划完成时间 nvarchar(50) = '', `;`@派工操作人 nvarchar(50) = ''`;`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`INSERT INTO [MES_接口_生产计划_生产任务]` +- `MES_OrderPlanned_SingleTaskPlanned`:`@派工特殊说明 nvarchar(500) = '', `;`@计划完成时间 nvarchar(50) = '', `;`@派工操作人 nvarchar(50) = ''`;`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`INSERT INTO [MES_接口_生产计划_生产任务]` +- `计划排产_外协分组`:`create PROCEDURE [dbo].[计划排产_外协分组]`;`update [dbo].[MES_接口_生产计划_生产任务] set 外协分组 = @外协分组 where AID = @TaskAID` +- `MES_OrderPlanned_Finish`:`@任务列表 NVARCHAR(MAX), `;`@派工操作人 NVARCHAR(MAX)`;`t.[排产状态] = 1, `;`t.[任务状态] = 0, `;`t.派工特殊说明 = j.派工特殊说明, `;`t.计划完成时间 = j.计划完成时间, `;`t.派工操作人 = @派工操作人, `;`t.最后编辑人 = @派工操作人, ` +- `MES_OrderPlanned_DescriptionEdit`:`@未完成说明 nvarchar(50) = '', `;`@派工特殊说明 nvarchar(500) = '', `;`Update [MES_接口_生产计划_生产任务] set`;`未完成说明 = @未完成说明, `;`派工特殊说明 = @派工特殊说明, ` +- `计划排产_自制件_日程时间修改`:`CREATE PROCEDURE [dbo].[计划排产_自制件_日程时间修改]`;`@计划完成时间 nvarchar(50) = ''`;`IF @计划完成时间 ''`;`SET @EndTime = CONVERT(datetime, @计划完成时间, 120)`;`UPDATE [MES_接口_生产计划_生产任务]`;`计划完成时间 = @EndTime`;`AND ISNULL(派工状态, 0) = 0`;`SELECT '0' AS result, '未找到符合条件的记录或派工状态不为0' AS message` + +### 数据库调用链 + +- `src/views/PlanManagement/SelfMakePlandone/index.vue` -> `工艺管理_获取物料原料信息` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_OWOR_material` -> 业务存储过程调用 +- `src/views/PlanManagement/SelfMakePlandone/index.vue` -> `计划排产_生产订单_已排产订单查询` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 查询/读取数据 +- `src/views/PlanManagement/SelfMakePlandone/index.vue` -> `MES_登录_工位与名称_查询` -> 视图:`View_基础数据_工位` -> 查询/读取数据 +- `src/views/PlanManagement/SelfMakePlandone/index.vue` -> `MES_OrderPlanned_Query` -> 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/PlanManagement/SelfMakePlandone/index.vue` -> `MES_OrderPlanned_Query` -> 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/PlanManagement/SelfMakePlandone/index.vue` -> `Prog_MES_LoadStations` -> 表:`MES_资源主数据` -> 查询/读取数据 +- `src/views/PlanManagement/SelfMakePlandone/index.vue` -> `系统管理_人员管理_所有有效人员查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/PlanManagement/SelfMakePlandone/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/SelfMakePlandone/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/SelfMakePlandone/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/SelfMakePlandone/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/SelfMakePlandone/index.vue` -> `计划排产_二次派工` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/SelfMakePlandone/index.vue` -> `计划排产_二次派工` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/SelfMakePlandone/index.vue` -> `MES_OrderPlanned_SingleTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/SelfMakePlandone/index.vue` -> `MES_OrderPlanned_SingleTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/SelfMakePlandone/index.vue` -> `计划排产_外协分组` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/PlanManagement/SelfMakePlandone/index.vue` -> `MES_OrderPlanned_Finish` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 确认/关闭/完成业务动作 +- `src/views/PlanManagement/SelfMakePlandone/index.vue` -> `MES_OrderPlanned_DescriptionEdit` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/SelfMakePlandone/index.vue` -> `计划排产_自制件_日程时间修改` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `工艺管理_获取物料原料信息` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、读取 SAP B1 数据库对象。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_OWOR_material`。 入参/分页参数:`@订单编号 nvarchar(50)`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`SELECT * FROM SAP.SBO_YL.dbo.UBT_OWOR_material where Docentry = @订单编号`。 实现特征:读取 SAP 数据库对象。 +- `计划排产_生产订单_已排产订单查询` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`select * from [dbo].[MES_接口_生产计划_生产任务] where 排产状态 = 1`。 +- `MES_登录_工位与名称_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_基础数据_工位`。 主要返回字段线索:`[VisCode] as 工位代码`、`[VisCode] as MesWebCode`、`[VisCode] as 工位号`、`[Name] as 指南工位号`、`[Name] as 工位名称`。 排序/分组/分页线索:`order by [VisCode]`。 +- `MES_OrderPlanned_Query` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES`。 入参/分页参数:`@订单号 int`、`@物料类型 nvarchar(50)`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@要求完工日期1 nvarchar(50)`、`@要求完工日期2 nvarchar(50)`、`@计划开始1 nvarchar(50)`、`@计划开始2 nvarchar(50)`、`@计划完成1 nvarchar(50)`、`@计划完成2 nvarchar(50)`、`@排产状态 nvarchar(50)`、`@指派对象 nvarchar(50)`。 主要返回字段线索:`[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, `、`[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''`。 关键过滤/匹配条件:`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and [自制件属性] = ''机加件'' and isnull(v.任务状态, 0) < 4'`;`WHERE 质检类型 = ''终检''`;`AND v.[订单行号] = g.工艺顺序'`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`。 关键写入/状态处理语句线索:`set @selectStr = '`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@计划开始1 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] > = '''+@计划开始1+''''`;`if(@计划开始2 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] < = '''+@计划开始2+''''`;`if(@计划完成1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] > = '''+@计划完成1+''''`;`if(@计划完成2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] < = '''+@计划完成2+''''`。 +- `MES_OrderPlanned_Query` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES`。 入参/分页参数:`@订单号 int`、`@物料类型 nvarchar(50)`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@要求完工日期1 nvarchar(50)`、`@要求完工日期2 nvarchar(50)`、`@计划开始1 nvarchar(50)`、`@计划开始2 nvarchar(50)`、`@计划完成1 nvarchar(50)`、`@计划完成2 nvarchar(50)`、`@排产状态 nvarchar(50)`、`@指派对象 nvarchar(50)`。 主要返回字段线索:`[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, `、`[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''`。 关键过滤/匹配条件:`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and [自制件属性] = ''机加件'' and isnull(v.任务状态, 0) < 4'`;`WHERE 质检类型 = ''终检''`;`AND v.[订单行号] = g.工艺顺序'`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`。 关键写入/状态处理语句线索:`set @selectStr = '`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@计划开始1 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] > = '''+@计划开始1+''''`;`if(@计划开始2 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] < = '''+@计划开始2+''''`;`if(@计划完成1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] > = '''+@计划完成1+''''`;`if(@计划完成2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] < = '''+@计划完成2+''''`。 +- `Prog_MES_LoadStations` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理外协业务。 读取/关联对象:表:`MES_资源主数据`。 主要返回字段线索:`[VisCode], [Name] as OPName`。 关键过滤/匹配条件:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 排序/分组/分页线索:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 +- `系统管理_人员管理_所有有效人员查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`Personnel_Number AS 人员编号, `、`Personnel_Name AS 人员姓名, `、`account AS 账号, `、`Roles_Function AS 角色, `、`部门名称`。 关键过滤/匹配条件:`WHERE Quit = 0`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY Personnel_Name;`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `计划排产_二次派工` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID int,`、`@personnel nvarchar(500)`。 关键过滤/匹配条件:`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID`。 关键写入/状态处理语句线索:`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID`。 +- `计划排产_二次派工` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID int,`、`@personnel nvarchar(500)`。 关键过滤/匹配条件:`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID`。 关键写入/状态处理语句线索:`update [dbo].[MES_接口_生产计划_生产任务] set 二次派工 = @personnel where AID = @TaskAID`。 +- `MES_OrderPlanned_SingleTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:查询、新增、更新、删除、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`、`@指派对象编号 nvarchar(50)`、`@指派对象 nvarchar(50)`、`@指派数量 int`、`@派工特殊说明 nvarchar(500)`、`@计划开始时间 nvarchar(50)`、`@计划完成时间 nvarchar(50)`、`@最晚开始时间 nvarchar(50)`、`@派工操作人 nvarchar(50)`。 主要返回字段线索:`@计划数量 = 计划数量`。 关键过滤/匹配条件:`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`FROM [MES_接口_生产计划_生产任务] WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`select @未指派数量_剩余 = 计划数量+@指派数量_Free from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`WHERE [订单编号] = @订单号 AND [订单行号] = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`set @指派数量_Free = @计划数量-@指派数量`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`INSERT INTO [MES_接口_生产计划_生产任务]`;`set @ErrMsg = '指派数量大于剩余未分配数量,派工失败'`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`if(@最晚开始时间 = '') set @最晚开始时间 = NULL`;`if(@计划开始时间 = '') set @计划开始时间 = NULL`;`if(@计划完成时间 = '') set @计划完成时间 = NULL`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET [指派对象编号] = @指派对象编号`。 +- `MES_OrderPlanned_SingleTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:查询、新增、更新、删除、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`、`@指派对象编号 nvarchar(50)`、`@指派对象 nvarchar(50)`、`@指派数量 int`、`@派工特殊说明 nvarchar(500)`、`@计划开始时间 nvarchar(50)`、`@计划完成时间 nvarchar(50)`、`@最晚开始时间 nvarchar(50)`、`@派工操作人 nvarchar(50)`。 主要返回字段线索:`@计划数量 = 计划数量`。 关键过滤/匹配条件:`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`FROM [MES_接口_生产计划_生产任务] WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`select @未指派数量_剩余 = 计划数量+@指派数量_Free from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`WHERE [订单编号] = @订单号 AND [订单行号] = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`set @指派数量_Free = @计划数量-@指派数量`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`INSERT INTO [MES_接口_生产计划_生产任务]`;`set @ErrMsg = '指派数量大于剩余未分配数量,派工失败'`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`if(@最晚开始时间 = '') set @最晚开始时间 = NULL`;`if(@计划开始时间 = '') set @计划开始时间 = NULL`;`if(@计划完成时间 = '') set @计划完成时间 = NULL`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET [指派对象编号] = @指派对象编号`。 +- `计划排产_外协分组` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:更新、处理计划/派工、处理外协业务。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID int,`、`@外协分组 NVARCHAR(50)`。 关键过滤/匹配条件:`update [dbo].[MES_接口_生产计划_生产任务] set 外协分组 = @外协分组 where AID = @TaskAID`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`update [dbo].[MES_接口_生产计划_生产任务] set 外协分组 = @外协分组 where AID = @TaskAID`。 +- `MES_OrderPlanned_Finish` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 确认/关闭/完成业务动作。 数据库处理摘要:查询、更新、解析 JSON 批量数据、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 入参/分页参数:`@任务列表 NVARCHAR(MAX),`、`@派工操作人 NVARCHAR(MAX)`。 主要返回字段线索:`TaskAID = JSON_VALUE(value, '$.taskaid'), `、`指派对象 = JSON_VALUE(value, '$."指派对象"'), `、`指派数量 = JSON_VALUE(value, '$."指派数量"'), `、`指派对象编号 = JSON_VALUE(value, '$."指派对象编号"'), `、`派工特殊说明 = JSON_VALUE(value, '$."派工特殊说明"'), `、`计划开始时间 = JSON_VALUE(value, '$."计划开始时间"'), `、`计划完成时间 = JSON_VALUE(value, '$."计划完成时间"'), `、`最晚开始时间 = JSON_VALUE(value, '$."最晚开始时间"')`。 关键写入/状态处理语句线索:`UPDATE t`;`SET`。 实现特征:JSON 批量解析。 +- `MES_OrderPlanned_DescriptionEdit` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int,`、`@订单行号 int,`、`@订单拆分内码 int,`、`@优先级 nvarchar(50)`、`@未完成说明 nvarchar(50)`、`@派工特殊说明 nvarchar(500)`、`@最后编辑人 nvarchar(500)`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`Update [MES_接口_生产计划_生产任务] set`。 +- `计划排产_自制件_日程时间修改` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int,`、`@订单行号 int`、`@订单拆分内码 int`、`@计划开始时间 nvarchar(50)`、`@计划完成时间 nvarchar(50)`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单号`;`AND 订单行号 = @订单行号`;`AND 订单拆分内码 = @订单拆分内码`;`AND ISNULL(派工状态, 0) = 0`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @StartTime = CONVERT(datetime, @计划开始时间, 120)`;`SET @StartTime = NULL`;`SET @EndTime = CONVERT(datetime, @计划完成时间, 120)`;`SET @EndTime = NULL`;`UPDATE [MES_接口_生产计划_生产任务]`;`SET 计划开始时间 = @StartTime, `。 实现特征:异常捕获。 + +## 15. src/views/PlanManagement/priorityinstall/index.vue + +**页面位置**:`src/views/PlanManagement/priorityinstall/index.vue` +**所属模块**:PlanManagement / priorityinstall +**源码行数**:1127 + +### 页面功能 + +该页面用于装配优先级调整。用户查询装配计划任务,修改计划开工/完成时间、派工对象或优先级,用于插单和重点订单排序。 + +页面可见的操作/字段包括 “查询”、“月”、“周”、“日”、“今天”、“表单”、“生产订单”、“计划号”、“物料编码”、“物料名称”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `MES_OrderPlanned_Queryzp`、`MES_OrderPlanned_EditTaskPlanned` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `MES_OrderPlanned_Queryzp` -> `MES_OrderPlanned_EditTaskPlanned` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`月`、`周`、`日`、`今天`、`表单`、`生产订单`、`计划号`、`物料编码`、`物料名称`、`计划数`、`要求完工日期`、`工时`、`工序名称`、`指派对象`、`指派数量`、`计划开始`、`计划完成` + +主要方法线索:`handleWindowResize`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.doneorderNo ` | `@订单号` | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `'自制件'` | `@物料类型` | - | +| 参数 | `this.donecontractNo` | `@合同号` | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `this.doneproductCode` | `@产品编码` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.doneproductName` | `@产品名称` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.doneprocessName` | `@工序名称` | - | +| 参数 | `this.planStartTime[0` | `@计划开始1` | - | +| 参数 | `this.planStartTime[1` | `@计划开始2` | - | +| 参数 | `this.doneproductionStatus` | `@排产状态` | - | +| 参数 | `this.station` | `@指派对象` | - | +| 参数 | ``[计划开始时间` | `@editstr` | - | +| 参数 | `row.订单号` | `@订单号` | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `row.订单行号` | `@订单行号` | - | +| 参数 | `row.拆分内码` | `@订单拆分内码` | - | +| 参数 | `订单号` | `@订单号` | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `订单行号` | `@订单行号` | - | +| 参数 | `拆分内码` | `@订单拆分内码` | - | +| 参数 | ``[标准工时` | `@editstr` | - | +| 显示列 | `生产订单` | - | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 显示列 | `计划号` | - | `计划号` | +| 显示列 | `物料编码` | - | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 显示列 | `物料名称` | - | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 显示列 | `计划数` | - | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 显示列 | `要求完工日期` | - | `要求完工日期` | +| 显示列 | `工时` | - | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 显示列 | `工序名称` | - | `工序名称` | +| 显示列 | `指派对象` | - | `指派对象` | +| 显示列 | `指派数量` | - | `指派数量` | +| 显示列 | `计划开始` | - | `计划开始` | +| 显示列 | `计划完成` | - | `计划完成` | +| 输入字段 | `doneorderNo` | `@订单号` | - | +| 输入字段 | `donecontractNo` | `@合同号` | - | +| 输入字段 | `doneproductCode` | `@产品编码` | - | +| 输入字段 | `doneproductName` | `@产品名称` | - | +| 输入字段 | `doneprocessName` | `@工序名称` | - | +| 输入字段 | `planStartTime` | `@计划开始1` | - | +| 输入字段 | `doneactiveTab` | - | - | +| 输入字段 | `scope.row.计划开始时间` | `@editstr` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- FullCalendar + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 471 | 11(当前通用存储过程查询/执行) | `MES_OrderPlanned_Queryzp` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` | +| 581 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 732 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 798 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `MES_OrderPlanned_Queryzp`:`@计划完成1 nvarchar(50) = '', `;`@计划完成2 nvarchar(50) = '', `;`@排产状态 nvarchar(50) = '全部', `;`[计划完成] as 要求完工日期, [工序名称], 完成数量, v.计划号, 收料数量, 外协分组, v.任务状态, `;`case when [加急状态] = 1 then ''加急'' else '''' end as 加急状态, 性质, isnull(总工时, 0) as 总工时, [占用情况]`;`, [排产状态], [工序计划数量], 指派对象编号, 指派对象, TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, `;`[派工状态], [外协通知], [优先级], [未完成说明], [派工特殊说明], [最后编辑人], [最后编辑时间], [二次派工], `;`FROM dbo.YL_质量检验_质检记录` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` + +### 数据库调用链 + +- `src/views/PlanManagement/priorityinstall/index.vue` -> `MES_OrderPlanned_Queryzp` -> 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/PlanManagement/priorityinstall/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/priorityinstall/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/PlanManagement/priorityinstall/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `MES_OrderPlanned_Queryzp` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES`。 入参/分页参数:`@订单号 int`、`@物料类型 nvarchar(50)`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@要求完工日期1 nvarchar(50)`、`@要求完工日期2 nvarchar(50)`、`@计划开始1 nvarchar(50)`、`@计划开始2 nvarchar(50)`、`@计划完成1 nvarchar(50)`、`@计划完成2 nvarchar(50)`、`@排产状态 nvarchar(50)`、`@指派对象 nvarchar(50)`。 主要返回字段线索:`top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, `、`[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''`。 关键过滤/匹配条件:`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and [自制件属性] like ''%装配%'''`;`WHERE 质检类型 = ''终检''`;`AND v.[订单行号] = g.工艺顺序'`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`。 关键写入/状态处理语句线索:`set @selectStr = '`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@计划开始1 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] > = '''+@计划开始1+''''`;`if(@计划开始2 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] < = '''+@计划开始2+''''`;`if(@计划完成1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] > = '''+@计划完成1+''''`;`if(@计划完成2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] < = '''+@计划完成2+''''`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 + +## 16. src/views/ProcessManagement/PartDrawing/index.vue + +**页面位置**:`src/views/ProcessManagement/PartDrawing/index.vue` +**所属模块**:ProcessManagement / PartDrawing +**源码行数**:905 + +### 页面功能 + +该页面维护零件图纸。用户按物料查询图纸、查看文件、验证名称、删除图纸并保留删除记录。 + +页面可见的操作/字段包括 “查询”、“零件图”、“选零件上传零件图”、“查看删除记录”、“查看”、“删除”、“取消”、“确定”、“关闭”、“查看信息”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `工艺管理_图纸维护_查询删除记录`、`工艺管理_图纸维护_零件图查询`、`工艺管理_图纸维护_物料查询`、`工艺管理_图纸维护_验证名称`、`工艺管理_图纸维护_查看图纸`、`工艺管理_图纸维护_删除图纸` 等过程 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `工艺管理_图纸维护_查询删除记录` -> `工艺管理_图纸维护_零件图查询` -> `工艺管理_图纸维护_物料查询` -> `工艺管理_图纸维护_验证名称` -> `工艺管理_图纸维护_查看图纸` -> `工艺管理_图纸维护_删除图纸` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`零件图`、`选零件上传零件图`、`查看删除记录`、`查看`、`删除`、`取消`、`确定`、`关闭`、`查看信息`、`关 闭`、`item.物料编码`、`序号`、`物料编号`、`物料名称`、`文件名称`、`导入人`、`导入时间` + +主要方法线索:`showDeleteRecords` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.itemnum` | `@物料编码` | - | +| 参数 | `query` | `@过滤` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `物料编号` | - | `物料编号, ` | +| 显示列 | `物料名称` | - | `物料描述` | +| 显示列 | `文件名称` | - | `文件名称, ` | +| 显示列 | `导入人` | - | `worker` | +| 显示列 | `导入时间` | - | `WHEN uploadTime IS NOT NULL` | +| 显示列 | `操作` | - | `操作人, ` | +| 显示列 | `操作人` | - | `操作人, ` | +| 显示列 | `删除时间` | - | `CONVERT(NVARCHAR(19), 删除时间, 120) AS 删除时间, ` | +| 显示列 | `备注` | - | `ISNULL(备注, '''') AS 备注` | +| 显示列 | `物料编码` | - | `物料编码` | +| 显示列 | `现有图纸导入人` | - | `导入人` | +| 输入字段 | `stationNumberValues` | - | - | +| 输入字段 | `selectedMaterials` | - | - | +| 输入字段 | `itemnum` | `@物料编码` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- PDF/图纸预览或导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 323 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_查询删除记录` | 查询/读取数据 | 查询 | 未在 SQL 中解析到明确依赖 | +| 355 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_零件图查询` | 查询/读取数据 | 查询 | 视图:`View_图纸视图` | +| 366 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_物料查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM` | +| 398 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_验证名称` | 业务存储过程调用 | 查询 | 表:`物料数据` | +| 442 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_零件图纸` | +| 471 | 12(当前通用存储过程写入/业务动作) | `工艺管理_图纸维护_删除图纸` | 删除业务数据 | 查询、新增 | 表:`物料基础数据_零件图纸` | +| 556 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_零件图纸` | +| 838 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_零件图查询` | 查询/读取数据 | 查询 | 视图:`View_图纸视图` | +| 851 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_零件图查询` | 查询/读取数据 | 查询 | 视图:`View_图纸视图` | + +### 与 SAP 的交互 + +存储过程内读取 SAP B1 数据库对象: +- 工艺管理_图纸维护_物料查询: SAP.SBO_YL.dbo.UBT_OITM + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `工艺管理_图纸维护_物料查询`:`SELECT top 100 * FROM SAP.SBO_YL.dbo.UBT_OITM where 物料编码 like '' +'%'+@过滤+'%' +''` + +### 数据库调用链 + +- `src/views/ProcessManagement/PartDrawing/index.vue` -> `工艺管理_图纸维护_查询删除记录` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/ProcessManagement/PartDrawing/index.vue` -> `工艺管理_图纸维护_零件图查询` -> 视图:`View_图纸视图` -> 查询/读取数据 +- `src/views/ProcessManagement/PartDrawing/index.vue` -> `工艺管理_图纸维护_物料查询` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM` -> 查询/读取数据 +- `src/views/ProcessManagement/PartDrawing/index.vue` -> `工艺管理_图纸维护_验证名称` -> 表:`物料数据` -> 业务存储过程调用 +- `src/views/ProcessManagement/PartDrawing/index.vue` -> `工艺管理_图纸维护_查看图纸` -> 表:`物料基础数据_零件图纸` -> 查询/读取数据 +- `src/views/ProcessManagement/PartDrawing/index.vue` -> `工艺管理_图纸维护_删除图纸` -> 表:`物料基础数据_零件图纸` -> 删除业务数据 +- `src/views/ProcessManagement/PartDrawing/index.vue` -> `工艺管理_图纸维护_查看图纸` -> 表:`物料基础数据_零件图纸` -> 查询/读取数据 +- `src/views/ProcessManagement/PartDrawing/index.vue` -> `工艺管理_图纸维护_零件图查询` -> 视图:`View_图纸视图` -> 查询/读取数据 +- `src/views/ProcessManagement/PartDrawing/index.vue` -> `工艺管理_图纸维护_零件图查询` -> 视图:`View_图纸视图` -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `工艺管理_图纸维护_查询删除记录` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@物料编码 nvarchar(200)`。 主要返回字段线索:`top 50`、`物料编号, `、`文件名称, `、`操作人, `、`CONVERT(NVARCHAR(19), 删除时间, 120) AS 删除时间, `、`ISNULL(备注, '''') AS 备注`。 关键过滤/匹配条件:`DECLARE @selectStrWhere NVARCHAR(4000) = ' WHERE 1 = 1 '`;`SET @selectStrWhere = @selectStrWhere + ' AND [物料编号] LIKE ''%' + @物料编码 + '%'''`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @selectStr = N' SELECT top 50`;`SET @selectStrWhere = @selectStrWhere + ' AND [物料编号] LIKE ''%' + @物料编码 + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' ORDER BY 删除时间 DESC'`;`SET @selectStr = @selectStr + @selectStrWhere`。 排序/分组/分页线索:`SET @selectStrWhere = @selectStrWhere + ' ORDER BY 删除时间 DESC'`。 +- `工艺管理_图纸维护_零件图查询` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_图纸视图`。 入参/分页参数:`@零件图号_check int`、`@零件图号 nvarchar(50)`、`@导入人 nvarchar(50)`。 主要返回字段线索:`TOP 50 *`。 关键过滤/匹配条件:`IF @导入人 IS NOT NULL AND LTRIM(RTRIM(@导入人)) ! = ''`;`WHERE num LIKE '%' + @零件图号 + '%'`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY`;`ORDER BY uploadTime DESC`。 +- `工艺管理_图纸维护_物料查询` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM`。 入参/分页参数:`@过滤 NVARCHAR(200)`。 主要返回字段线索:`top 100 *`。 关键过滤/匹配条件:`SELECT top 100 * FROM SAP.SBO_YL.dbo.UBT_OITM where 物料编码 like '' +'%'+@过滤+'%' +''`。 实现特征:读取 SAP 数据库对象。 +- `工艺管理_图纸维护_验证名称` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询。 读取/关联对象:表:`物料数据`。 入参/分页参数:`@零件图号 nvarchar(50)`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`SELECT * FROM [dbo].[物料数据] where 物料编码 = @零件图号`。 关键写入/状态处理语句线索:`set nocount on;`。 +- `工艺管理_图纸维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_零件图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`、`worker`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `工艺管理_图纸维护_删除图纸` 属于 工艺与图纸,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 删除业务数据。 数据库处理摘要:查询、新增。 读取/关联对象:表:`物料基础数据_零件图纸`。 写入或更新对象:`物料基础数据_零件图纸`、`物料基础数据_零件图纸删除记录`。 入参/分页参数:`@物料编号 NVARCHAR(100),`、`@文件名称 NVARCHAR(255)`、`@操作人 NVARCHAR(50)`。 关键过滤/匹配条件:`delete [dbo].[物料基础数据_零件图纸] where num = @物料编号`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO 物料基础数据_零件图纸删除记录 (`。 实现特征:事务控制、异常捕获。 +- `工艺管理_图纸维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_零件图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`、`worker`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `工艺管理_图纸维护_零件图查询` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_图纸视图`。 入参/分页参数:`@零件图号_check int`、`@零件图号 nvarchar(50)`、`@导入人 nvarchar(50)`。 主要返回字段线索:`TOP 50 *`。 关键过滤/匹配条件:`IF @导入人 IS NOT NULL AND LTRIM(RTRIM(@导入人)) ! = ''`;`WHERE num LIKE '%' + @零件图号 + '%'`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY`;`ORDER BY uploadTime DESC`。 +- `工艺管理_图纸维护_零件图查询` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_图纸视图`。 入参/分页参数:`@零件图号_check int`、`@零件图号 nvarchar(50)`、`@导入人 nvarchar(50)`。 主要返回字段线索:`TOP 50 *`。 关键过滤/匹配条件:`IF @导入人 IS NOT NULL AND LTRIM(RTRIM(@导入人)) ! = ''`;`WHERE num LIKE '%' + @零件图号 + '%'`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY`;`ORDER BY uploadTime DESC`。 + +## 17. src/views/ProcessManagement/PartDrawlook/index.vue + +**页面位置**:`src/views/ProcessManagement/PartDrawlook/index.vue` +**所属模块**:ProcessManagement / PartDrawlook +**源码行数**:463 + +### 页面功能 + +该页面偏只读查看零件图纸,通常给生产或质检人员按物料快速打开图纸。 + +页面可见的操作/字段包括 “查询”、“查看”、“删除”、“取消”、“确定”、“关闭”、“item.物料编码”、“序号”、“物料编号”、“物料名称”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `工艺管理_图纸维护_查询删除记录`、`工艺管理_图纸维护_零件图查询全部`、`工艺管理_图纸维护_物料查询`、`工艺管理_图纸维护_验证名称`、`工艺管理_图纸维护_查看图纸`、`工艺管理_图纸维护_删除图纸` 等过程 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `工艺管理_图纸维护_查询删除记录` -> `工艺管理_图纸维护_零件图查询全部` -> `工艺管理_图纸维护_物料查询` -> `工艺管理_图纸维护_验证名称` -> `工艺管理_图纸维护_查看图纸` -> `工艺管理_图纸维护_删除图纸` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`查看`、`删除`、`取消`、`确定`、`关闭`、`item.物料编码`、`序号`、`物料编号`、`物料名称`、`文件名称`、`导入人`、`导入时间`、`操作`、`操作人`、`删除时间`、`备注`、`请选择物料` + +主要方法线索:`showDeleteRecords` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.itemnum` | `@物料编码` | - | +| 参数 | `query` | `@过滤` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `物料编号` | - | `物料编号, ` | +| 显示列 | `物料名称` | - | `物料描述` | +| 显示列 | `文件名称` | - | `文件名称, ` | +| 显示列 | `导入人` | - | `worker` | +| 显示列 | `导入时间` | - | `WHEN uploadTime IS NOT NULL` | +| 显示列 | `操作` | - | `操作人, ` | +| 显示列 | `操作人` | - | `操作人, ` | +| 显示列 | `删除时间` | - | `CONVERT(NVARCHAR(19), 删除时间, 120) AS 删除时间, ` | +| 显示列 | `备注` | - | `ISNULL(备注, '''') AS 备注` | +| 输入字段 | `stationNumberValue` | - | - | +| 输入字段 | `uploadValue` | - | - | +| 输入字段 | `itemnum` | `@物料编码` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- PDF/图纸预览或导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 174 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_查询删除记录` | 查询/读取数据 | 查询 | 未在 SQL 中解析到明确依赖 | +| 205 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_零件图查询全部` | 查询/读取数据 | 查询 | 视图:`View_图纸视图` | +| 216 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_物料查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM` | +| 248 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_验证名称` | 业务存储过程调用 | 查询 | 表:`物料数据` | +| 294 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_零件图纸` | +| 317 | 12(当前通用存储过程写入/业务动作) | `工艺管理_图纸维护_删除图纸` | 删除业务数据 | 查询、新增 | 表:`物料基础数据_零件图纸` | +| 386 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_零件图纸` | +| 414 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_零件图查询全部` | 查询/读取数据 | 查询 | 视图:`View_图纸视图` | +| 425 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_零件图查询全部` | 查询/读取数据 | 查询 | 视图:`View_图纸视图` | + +### 与 SAP 的交互 + +存储过程内读取 SAP B1 数据库对象: +- 工艺管理_图纸维护_物料查询: SAP.SBO_YL.dbo.UBT_OITM + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `工艺管理_图纸维护_物料查询`:`SELECT top 100 * FROM SAP.SBO_YL.dbo.UBT_OITM where 物料编码 like '' +'%'+@过滤+'%' +''` + +### 数据库调用链 + +- `src/views/ProcessManagement/PartDrawlook/index.vue` -> `工艺管理_图纸维护_查询删除记录` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/ProcessManagement/PartDrawlook/index.vue` -> `工艺管理_图纸维护_零件图查询全部` -> 视图:`View_图纸视图` -> 查询/读取数据 +- `src/views/ProcessManagement/PartDrawlook/index.vue` -> `工艺管理_图纸维护_物料查询` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM` -> 查询/读取数据 +- `src/views/ProcessManagement/PartDrawlook/index.vue` -> `工艺管理_图纸维护_验证名称` -> 表:`物料数据` -> 业务存储过程调用 +- `src/views/ProcessManagement/PartDrawlook/index.vue` -> `工艺管理_图纸维护_查看图纸` -> 表:`物料基础数据_零件图纸` -> 查询/读取数据 +- `src/views/ProcessManagement/PartDrawlook/index.vue` -> `工艺管理_图纸维护_删除图纸` -> 表:`物料基础数据_零件图纸` -> 删除业务数据 +- `src/views/ProcessManagement/PartDrawlook/index.vue` -> `工艺管理_图纸维护_查看图纸` -> 表:`物料基础数据_零件图纸` -> 查询/读取数据 +- `src/views/ProcessManagement/PartDrawlook/index.vue` -> `工艺管理_图纸维护_零件图查询全部` -> 视图:`View_图纸视图` -> 查询/读取数据 +- `src/views/ProcessManagement/PartDrawlook/index.vue` -> `工艺管理_图纸维护_零件图查询全部` -> 视图:`View_图纸视图` -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `工艺管理_图纸维护_查询删除记录` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@物料编码 nvarchar(200)`。 主要返回字段线索:`top 50`、`物料编号, `、`文件名称, `、`操作人, `、`CONVERT(NVARCHAR(19), 删除时间, 120) AS 删除时间, `、`ISNULL(备注, '''') AS 备注`。 关键过滤/匹配条件:`DECLARE @selectStrWhere NVARCHAR(4000) = ' WHERE 1 = 1 '`;`SET @selectStrWhere = @selectStrWhere + ' AND [物料编号] LIKE ''%' + @物料编码 + '%'''`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @selectStr = N' SELECT top 50`;`SET @selectStrWhere = @selectStrWhere + ' AND [物料编号] LIKE ''%' + @物料编码 + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' ORDER BY 删除时间 DESC'`;`SET @selectStr = @selectStr + @selectStrWhere`。 排序/分组/分页线索:`SET @selectStrWhere = @selectStrWhere + ' ORDER BY 删除时间 DESC'`。 +- `工艺管理_图纸维护_零件图查询全部` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_图纸视图`。 入参/分页参数:`@零件图号_check int`、`@零件图号 nvarchar(50)`。 主要返回字段线索:`top 50 *`。 关键过滤/匹配条件:`WHERE num LIKE '%' + @零件图号 + '%'`。 关键写入/状态处理语句线索:`set nocount on;`。 +- `工艺管理_图纸维护_物料查询` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM`。 入参/分页参数:`@过滤 NVARCHAR(200)`。 主要返回字段线索:`top 100 *`。 关键过滤/匹配条件:`SELECT top 100 * FROM SAP.SBO_YL.dbo.UBT_OITM where 物料编码 like '' +'%'+@过滤+'%' +''`。 实现特征:读取 SAP 数据库对象。 +- `工艺管理_图纸维护_验证名称` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询。 读取/关联对象:表:`物料数据`。 入参/分页参数:`@零件图号 nvarchar(50)`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`SELECT * FROM [dbo].[物料数据] where 物料编码 = @零件图号`。 关键写入/状态处理语句线索:`set nocount on;`。 +- `工艺管理_图纸维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_零件图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`、`worker`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `工艺管理_图纸维护_删除图纸` 属于 工艺与图纸,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 删除业务数据。 数据库处理摘要:查询、新增。 读取/关联对象:表:`物料基础数据_零件图纸`。 写入或更新对象:`物料基础数据_零件图纸`、`物料基础数据_零件图纸删除记录`。 入参/分页参数:`@物料编号 NVARCHAR(100),`、`@文件名称 NVARCHAR(255)`、`@操作人 NVARCHAR(50)`。 关键过滤/匹配条件:`delete [dbo].[物料基础数据_零件图纸] where num = @物料编号`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO 物料基础数据_零件图纸删除记录 (`。 实现特征:事务控制、异常捕获。 +- `工艺管理_图纸维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_零件图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`、`worker`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `工艺管理_图纸维护_零件图查询全部` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_图纸视图`。 入参/分页参数:`@零件图号_check int`、`@零件图号 nvarchar(50)`。 主要返回字段线索:`top 50 *`。 关键过滤/匹配条件:`WHERE num LIKE '%' + @零件图号 + '%'`。 关键写入/状态处理语句线索:`set nocount on;`。 +- `工艺管理_图纸维护_零件图查询全部` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_图纸视图`。 入参/分页参数:`@零件图号_check int`、`@零件图号 nvarchar(50)`。 主要返回字段线索:`top 50 *`。 关键过滤/匹配条件:`WHERE num LIKE '%' + @零件图号 + '%'`。 关键写入/状态处理语句线索:`set nocount on;`。 + +## 18. src/views/ProcessManagement/ProcedureManagement/index.vue + +**页面位置**:`src/views/ProcessManagement/ProcedureManagement/index.vue` +**所属模块**:ProcessManagement / ProcedureManagement +**源码行数**:268 + +### 页面功能 + +该页面维护工序/路线阶段主数据。新增或修改工序时会同步 SAP B1 的 RouteStages,保证 MES 工序与 SAP 工艺阶段一致。 + +页面可见的操作/字段包括 “新增工艺”、“--> 取 消”、“确 定”、“序号”、“工艺名称”、“操作”、“请输入工艺名称”、“title”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `MES_ProcessManagement_ProcessGet`、`MES_ProcessManagement_ProcessAdd`、`MES_ProcessManagement_ProcessEdit`、`MES_ProcessManagement_Processdel` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `MES_ProcessManagement_ProcessGet` -> `MES_ProcessManagement_ProcessAdd` -> `MES_ProcessManagement_ProcessEdit` -> `MES_ProcessManagement_Processdel` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`新增工艺`、`--> 取 消`、`确 定`、`序号`、`工艺名称`、`操作`、`请输入工艺名称`、`title` + +主要方法线索:`getProcess` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 显示列 | `序号` | - | `序号` | +| 显示列 | `工艺名称` | - | `工艺编号 as 工艺编号, 工序名称 as 工艺名称` | +| 显示列 | `操作` | - | `操作` | +| 输入字段 | `searchName` | - | - | +| 输入字段 | `form1.ProcessClassification` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- SAP B1 Service Layer(`src/api/b1s.js`) + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 112 | 11(当前通用存储过程查询/执行) | `MES_ProcessManagement_ProcessGet` | 查询/读取数据 | 查询 | 表:`基础表_工序` | +| 151 | 11(当前通用存储过程查询/执行) | `MES_ProcessManagement_ProcessAdd` | 新增业务数据 | 查询、新增 | 未在 SQL 中解析到明确依赖 | +| 188 | 12(当前通用存储过程写入/业务动作) | `MES_ProcessManagement_ProcessEdit` | 更新/保存业务数据 | 更新 | 未在 SQL 中解析到明确依赖 | +| 225 | 12(当前通用存储过程写入/业务动作) | `MES_ProcessManagement_Processdel` | 业务存储过程调用 | 未找到过程体 | 未知 | + +### 与 SAP 的交互 + +页面直接 SAP/接口调用: +- 第 155 行:`postB1("/RouteStages")` +- 第 192 行:`getB1("/RouteStages")` +- 第 198 行:`patchB1("/RouteStages(")` + +### SAP 接口级说明 + +| 行号 | 方法 | 接口 | 调用时机/影响判断 | 提交字段线索 | +|---:|---|---|---|---| +| 155 | `postB1` | `/RouteStages` | 新增或更新 SAP 工序阶段。失败会导致 MES 工序与 SAP RouteStages 不一致。 | `Code`、`Description`、`CreationDate`、`DateOfUpdate` | +| 192 | `getB1` | `/RouteStages` | 新增或更新 SAP 工序阶段。失败会导致 MES 工序与 SAP RouteStages 不一致。 | `filter`、`Description`、`DateOfUpdate`、`confirmButtonText`、`cancelButtonText`、`type` | +| 198 | `patchB1` | `/RouteStages(` | 新增或更新 SAP 工序阶段。失败会导致 MES 工序与 SAP RouteStages 不一致。 | `Description`、`DateOfUpdate`、`confirmButtonText`、`cancelButtonText`、`type`、`top` | + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +- `src/views/ProcessManagement/ProcedureManagement/index.vue` -> `MES_ProcessManagement_ProcessGet` -> 表:`基础表_工序` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcedureManagement/index.vue` -> `MES_ProcessManagement_ProcessAdd` -> 未在 SQL 中解析到明确依赖 -> 新增业务数据 +- `src/views/ProcessManagement/ProcedureManagement/index.vue` -> `MES_ProcessManagement_ProcessEdit` -> 未在 SQL 中解析到明确依赖 -> 更新/保存业务数据 +- `src/views/ProcessManagement/ProcedureManagement/index.vue` -> `MES_ProcessManagement_Processdel` -> 过程体未解析 -> 业务存储过程调用 + +### 存储过程处理逻辑明细 + +- `MES_ProcessManagement_ProcessGet` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`基础表_工序`。 入参/分页参数:`@工艺编号 nvarchar(50)`。 主要返回字段线索:`工艺编号 as 工艺编号, 工序名称 as 工艺名称`。 关键过滤/匹配条件:`IF @工艺编号 IS NOT NULL AND @工艺编号 ! = ''`;`SELECT 工艺编号 as 工艺编号, 工序名称 as 工艺名称 FROM [基础表_工序] WHERE 工艺编号 IN (SELECT value FROM STRING_SPLIT(@工艺编号, ', '))`。 排序/分组/分页线索:`SELECT 工艺编号 as 工艺编号, 工序名称 as 工艺名称 FROM [基础表_工序] ORDER BY 工艺编号`。 +- `MES_ProcessManagement_ProcessAdd` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 新增业务数据。 数据库处理摘要:查询、新增。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`基础表_工序`。 入参/分页参数:`@工艺名称 nvarchar(50)`。 主要返回字段线索:`ISNULL(MAX(工艺编号), 0) +1`。 关键过滤/匹配条件:`select 工艺编号 from 基础表_工序 where 工序名称 = @工艺名称`。 关键写入/状态处理语句线索:`INSERT INTO 基础表_工序 (工艺编号, 工序名称) VALUES((select ISNULL(MAX(工艺编号), 0) +1 from 基础表_工序 ), @工艺名称)`。 +- `MES_ProcessManagement_ProcessEdit` 属于 工艺与图纸,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`基础表_工序`。 入参/分页参数:`@工艺名称 nvarchar(50)`、`@工艺编号 int`。 关键过滤/匹配条件:`update 基础表_工序 set 工序名称 = @工艺名称 where 工艺编号 = @工艺编号`。 关键写入/状态处理语句线索:`update 基础表_工序 set 工序名称 = @工艺名称 where 工艺编号 = @工艺编号`。 +- `MES_ProcessManagement_Processdel` 属于 工艺与图纸,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 业务存储过程调用。 当前工作区 SQL 中没有解析到该过程体,因此只能确认前端调用关系,不能准确说明内部读写表、过滤条件和状态变更。 + +## 19. src/views/ProcessManagement/ProcessDrawing/index.vue + +**页面位置**:`src/views/ProcessManagement/ProcessDrawing/index.vue` +**所属模块**:ProcessManagement / ProcessDrawing +**源码行数**:417 + +### 页面功能 + +该页面维护工艺图纸。用户按物料/工艺条件查询工艺图,验证名称,查看或删除工艺图纸。 + +页面可见的操作/字段包括 “查询”、“工艺图”、“选零件上传工艺图”、“选订单上传工艺图”、“查看”、“删除”、“取消”、“确定”、“item.物料编码”、“序号”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `工艺管理_工艺维护_工艺图查询`、`工艺管理_图纸维护_物料查询`、`工艺管理_工艺维护_验证名称`、`工艺管理_工艺维护_查看图纸`、`工艺管理_工艺维护_删除图纸` 等过程 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `工艺管理_工艺维护_工艺图查询` -> `工艺管理_图纸维护_物料查询` -> `工艺管理_工艺维护_验证名称` -> `工艺管理_工艺维护_查看图纸` -> `工艺管理_工艺维护_删除图纸` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`工艺图`、`选零件上传工艺图`、`选订单上传工艺图`、`查看`、`删除`、`取消`、`确定`、`item.物料编码`、`序号`、`物料编号`、`物料名称`、`文件名称`、`导入人`、`导入时间`、`操作`、`请选择物料`、`请选择` + +主要方法线索:`queryitem` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `query` | `@过滤` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `物料编号` | - | `num` | +| 显示列 | `物料名称` | - | `t2.物料描述` | +| 显示列 | `文件名称` | - | `THEN name` | +| 显示列 | `导入人` | - | `worker` | +| 显示列 | `导入时间` | - | `WHEN uploadTime IS NOT NULL` | +| 显示列 | `操作` | - | `操作` | +| 输入字段 | `stationNumberValue` | - | - | +| 输入字段 | `uploadValue` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- PDF/图纸预览或导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 165 | 11(当前通用存储过程查询/执行) | `工艺管理_工艺维护_工艺图查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM` | +| 176 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_物料查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM` | +| 208 | 11(当前通用存储过程查询/执行) | `工艺管理_工艺维护_验证名称` | 业务存储过程调用 | 查询 | 表:`物料数据` | +| 250 | 11(当前通用存储过程查询/执行) | `工艺管理_工艺维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_工艺图纸` | +| 271 | 12(当前通用存储过程写入/业务动作) | `工艺管理_工艺维护_删除图纸` | 删除业务数据 | 执行数据库业务逻辑 | 表:`物料基础数据_工艺图纸` | +| 340 | 11(当前通用存储过程查询/执行) | `工艺管理_工艺维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_工艺图纸` | +| 368 | 11(当前通用存储过程查询/执行) | `工艺管理_工艺维护_工艺图查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM` | +| 379 | 11(当前通用存储过程查询/执行) | `工艺管理_工艺维护_工艺图查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM` | + +### 与 SAP 的交互 + +存储过程内读取 SAP B1 数据库对象: +- 工艺管理_工艺维护_工艺图查询: SAP.SBO_YL.dbo.UBT_OITM +- 工艺管理_图纸维护_物料查询: SAP.SBO_YL.dbo.UBT_OITM +- 工艺管理_工艺维护_工艺图查询: SAP.SBO_YL.dbo.UBT_OITM +- 工艺管理_工艺维护_工艺图查询: SAP.SBO_YL.dbo.UBT_OITM + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `工艺管理_工艺维护_工艺图查询`:`SAP.SBO_YL.dbo.UBT_OITM AS t2 ON t1.num = t2.物料编码 where num = @零件图号`;`SAP.SBO_YL.dbo.UBT_OITM AS t2 ON t1.num = t2.物料编码` +- `工艺管理_图纸维护_物料查询`:`SELECT top 100 * FROM SAP.SBO_YL.dbo.UBT_OITM where 物料编码 like '' +'%'+@过滤+'%' +''` +- `工艺管理_工艺维护_工艺图查询`:`SAP.SBO_YL.dbo.UBT_OITM AS t2 ON t1.num = t2.物料编码 where num = @零件图号`;`SAP.SBO_YL.dbo.UBT_OITM AS t2 ON t1.num = t2.物料编码` +- `工艺管理_工艺维护_工艺图查询`:`SAP.SBO_YL.dbo.UBT_OITM AS t2 ON t1.num = t2.物料编码 where num = @零件图号`;`SAP.SBO_YL.dbo.UBT_OITM AS t2 ON t1.num = t2.物料编码` + +### 数据库调用链 + +- `src/views/ProcessManagement/ProcessDrawing/index.vue` -> `工艺管理_工艺维护_工艺图查询` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessDrawing/index.vue` -> `工艺管理_图纸维护_物料查询` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessDrawing/index.vue` -> `工艺管理_工艺维护_验证名称` -> 表:`物料数据` -> 业务存储过程调用 +- `src/views/ProcessManagement/ProcessDrawing/index.vue` -> `工艺管理_工艺维护_查看图纸` -> 表:`物料基础数据_工艺图纸` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessDrawing/index.vue` -> `工艺管理_工艺维护_删除图纸` -> 表:`物料基础数据_工艺图纸` -> 删除业务数据 +- `src/views/ProcessManagement/ProcessDrawing/index.vue` -> `工艺管理_工艺维护_查看图纸` -> 表:`物料基础数据_工艺图纸` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessDrawing/index.vue` -> `工艺管理_工艺维护_工艺图查询` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessDrawing/index.vue` -> `工艺管理_工艺维护_工艺图查询` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM` -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `工艺管理_工艺维护_工艺图查询` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM`。 入参/分页参数:`@零件图号_check int`、`@零件图号 nvarchar(50)`。 主要返回字段线索:`top 50`、`t1.*, `、`t2.物料描述`。 关键过滤/匹配条件:`SAP.SBO_YL.dbo.UBT_OITM AS t2 ON t1.num = t2.物料编码 where num = @零件图号`。 关键写入/状态处理语句线索:`set nocount on;`。 实现特征:读取 SAP 数据库对象。 +- `工艺管理_图纸维护_物料查询` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM`。 入参/分页参数:`@过滤 NVARCHAR(200)`。 主要返回字段线索:`top 100 *`。 关键过滤/匹配条件:`SELECT top 100 * FROM SAP.SBO_YL.dbo.UBT_OITM where 物料编码 like '' +'%'+@过滤+'%' +''`。 实现特征:读取 SAP 数据库对象。 +- `工艺管理_工艺维护_验证名称` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询。 读取/关联对象:表:`物料数据`。 入参/分页参数:`@零件图号 nvarchar(50)`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`SELECT * FROM [dbo].[物料数据] where 物料编码 = @零件图号`。 关键写入/状态处理语句线索:`set nocount on;`。 +- `工艺管理_工艺维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_工艺图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `工艺管理_工艺维护_删除图纸` 属于 工艺与图纸,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 删除业务数据。 数据库处理摘要:执行数据库业务逻辑。 读取/关联对象:表:`物料基础数据_工艺图纸`。 入参/分页参数:`@物料编号 nvarchar(50)`。 关键过滤/匹配条件:`delete [dbo].[物料基础数据_工艺图纸] where num = @物料编号`。 关键写入/状态处理语句线索:`set nocount on;`。 +- `工艺管理_工艺维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_工艺图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `工艺管理_工艺维护_工艺图查询` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM`。 入参/分页参数:`@零件图号_check int`、`@零件图号 nvarchar(50)`。 主要返回字段线索:`top 50`、`t1.*, `、`t2.物料描述`。 关键过滤/匹配条件:`SAP.SBO_YL.dbo.UBT_OITM AS t2 ON t1.num = t2.物料编码 where num = @零件图号`。 关键写入/状态处理语句线索:`set nocount on;`。 实现特征:读取 SAP 数据库对象。 +- `工艺管理_工艺维护_工艺图查询` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM`。 入参/分页参数:`@零件图号_check int`、`@零件图号 nvarchar(50)`。 主要返回字段线索:`top 50`、`t1.*, `、`t2.物料描述`。 关键过滤/匹配条件:`SAP.SBO_YL.dbo.UBT_OITM AS t2 ON t1.num = t2.物料编码 where num = @零件图号`。 关键写入/状态处理语句线索:`set nocount on;`。 实现特征:读取 SAP 数据库对象。 + +## 20. src/views/ProcessManagement/ProcessInquiry/index.vue + +**页面位置**:`src/views/ProcessManagement/ProcessInquiry/index.vue` +**所属模块**:ProcessManagement / ProcessInquiry +**源码行数**:802 + +### 页面功能 + +该页面用于工艺路线查询。用户按物料、产品、工序等条件查看标准工艺或生产工艺,服务于排产、生产和质检核对。 + +页面可见的操作/字段包括 “查询”、“打印”、“item.物料编码”、“全部”、“已打印”、“未打印”、“已拣配”、“未拣配”、“机加件”、“装配件”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `MES_ProcessManagement_PartGet`、`工艺管理_工艺查询_查询生产工艺`、`工艺管理_工艺查询_更新打印次数` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `MES_ProcessManagement_PartGet` -> `工艺管理_工艺查询_查询生产工艺` -> `工艺管理_工艺查询_更新打印次数` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`打印`、`item.物料编码`、`全部`、`已打印`、`未打印`、`已拣配`、`未拣配`、`机加件`、`装配件`、`序号`、`生产订单`、`计划号`、`物料名称`、`物料编码`、`加工数量`、`打印次数`、`生产工艺物料名称` + +主要方法线索:`handleSelectionChange` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 显示列 | `序号` | - | `序号` | +| 显示列 | `生产订单` | - | `c.[订单编号]` | +| 显示列 | `计划号` | - | `计划号` | +| 显示列 | `物料名称` | - | `零件名称` | +| 显示列 | `物料编码` | - | `[零件图号]` | +| 显示列 | `加工数量` | - | `c.[计划数量]` | +| 显示列 | `打印次数` | - | `周转单打印次数` | +| 输入字段 | `partNameValue3` | - | - | +| 输入字段 | `orderNo` | - | - | +| 输入字段 | `plannum` | - | - | +| 输入字段 | `taskstatus` | - | - | +| 输入字段 | `pickingstatus` | - | - | +| 输入字段 | `orderstatus` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 297 | 11(当前通用存储过程查询/执行) | `MES_ProcessManagement_PartGet` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM` | +| 350 | 11(当前通用存储过程查询/执行) | `工艺管理_工艺查询_查询生产工艺` | 查询/读取数据 | 查询、处理报工/工时、处理计划/派工 | 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` | +| 646 | 11(当前通用存储过程查询/执行) | `工艺管理_工艺查询_更新打印次数` | 查询/读取数据 | 查询、新增、更新、处理计划/派工 | 表:`MES_接口_生产计划` | + +### 与 SAP 的交互 + +存储过程内读取 SAP B1 数据库对象: +- MES_ProcessManagement_PartGet: SAP.SBO_YL.dbo.UBT_OITM + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `MES_ProcessManagement_PartGet`:`SELECT top 100 * FROM SAP.SBO_YL.dbo.UBT_OITM where 物料编码 like '' +'%'+@过滤+'%' +''` +- `工艺管理_工艺查询_查询生产工艺`:`, c.计划完成`;`, c.加急状态` +- `工艺管理_工艺查询_更新打印次数`:`'成功' AS 状态, `;`'错误' AS 状态, ` + +### 数据库调用链 + +- `src/views/ProcessManagement/ProcessInquiry/index.vue` -> `MES_ProcessManagement_PartGet` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessInquiry/index.vue` -> `工艺管理_工艺查询_查询生产工艺` -> 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessInquiry/index.vue` -> `工艺管理_工艺查询_更新打印次数` -> 表:`MES_接口_生产计划` -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `MES_ProcessManagement_PartGet` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM`。 入参/分页参数:`@过滤 NVARCHAR(200)`。 主要返回字段线索:`top 100 *`。 关键过滤/匹配条件:`SELECT top 100 * FROM SAP.SBO_YL.dbo.UBT_OITM where 物料编码 like '' +'%'+@过滤+'%' +''`。 实现特征:读取 SAP 数据库对象。 +- `工艺管理_工艺查询_查询生产工艺` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES`。 入参/分页参数:`@物料编号 nvarchar(50),`、`@订单编号 int`。 主要返回字段线索:`[id]`、`[零件图号]`、`[工艺顺序]`、`[工艺要求]`、`[是否最后一序]`、`c.[订单编号]`、`c.[计划数量]`、`isnull(准备工时, 0) as 准备工时`、`isnull(标准工时, 0) as 标准工时`、`isnull(工时合计, 0) as 工时合计`。 关键过滤/匹配条件:`FROM [dbo].[View_生产订单_MES] as c inner join [车间生产管理工艺_零件生产工艺_工艺库] as a on a.订单编号 = c.订单编号 and a.工艺顺序 = c.订单行号`;`where c.[订单编号] = @订单编号`。 排序/分组/分页线索:`ORDER BY TaskAID`。 +- `工艺管理_工艺查询_更新打印次数` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、新增、更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`。 入参/分页参数:`@订单编号列表 NVARCHAR(MAX)`。 主要返回字段线索:`value`。 关键过滤/匹配条件:`WHERE LTRIM(RTRIM(value)) '';`;`WHERE 订单编号 IN (SELECT 订单编号 FROM #TempOrders);`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO #TempOrders (订单编号)`;`UPDATE [dbo].[MES_接口_生产计划]`;`SET 周转单打印次数 = ISNULL(周转单打印次数, 0) + 1`。 实现特征:事务控制、异常捕获、临时表 `#TempOrders`。 + +## 21. src/views/ProcessManagement/ProcessProduct/index.vue + +**页面位置**:`src/views/ProcessManagement/ProcessProduct/index.vue` +**所属模块**:ProcessManagement / ProcessProduct +**源码行数**:1232 + +### 页面功能 + +该页面维护产品与工艺/图纸的关系,使产品、物料、工序、图纸等基础数据形成可查询的工艺资料。 + +页面可见的操作/字段包括 “查询”、“批量生成生产工艺”、“编辑工艺”、“拷贝”、“零件图纸”、“工艺图纸”、“保存为标准工艺”、“下发任务”、“已保存”、“保存”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `工艺管理_获取物料原料信息`、`工艺管理_生产工艺_查询生产工艺`、`工艺管理_生产工艺_工艺拷贝`、`工艺管理_生产工艺_生产工艺拷贝`、`工艺管理_生产工艺_标准工艺拷贝`、`计划排产_生产订单_订单查询` 等过程 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `工艺管理_获取物料原料信息` -> `工艺管理_生产工艺_查询生产工艺` -> `工艺管理_生产工艺_工艺拷贝` -> `工艺管理_生产工艺_生产工艺拷贝` -> `工艺管理_生产工艺_标准工艺拷贝` -> `计划排产_生产订单_订单查询` -> `计划排产_生产订单_订单任务_生产工艺任务下发` -> `计划排产_生产订单_订单任务_单条生产工艺任务下发` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`批量生成生产工艺`、`编辑工艺`、`拷贝`、`零件图纸`、`工艺图纸`、`保存为标准工艺`、`下发任务`、`已保存`、`保存`、`取消`、`确定`、`关闭`、`全部`、`未下发`、`已下发`、`机加件`、`装配件` + +主要方法线索:`getitemdata`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `item` | `@订单编号` | - | +| 参数 | `this.orderNo ` | `@订单号` | - | +| 参数 | `this.contractNo` | `@合同号` | - | +| 参数 | `this.productCode` | `@产品编码` | - | +| 参数 | `this.productName` | `@产品名称` | - | +| 参数 | `this.completionTime[0` | `@下达日期1` | - | +| 参数 | `this.completionTime[1` | `@下达日期2` | - | +| 参数 | `this.taskstatus` | `@任务状态` | - | +| 参数 | `this.orderstatus` | `@订单状态` | - | +| 参数 | `this.standardprocess` | `@工艺状态` | - | +| 参数 | `this.plannum` | `@计划号` | - | +| 参数 | `this.pageCurrent` | `@PageCurrent` | - | +| 参数 | `this.pageSize` | `@PageSize` | - | +| 参数 | `'1111', 'int', '1'` | `@PageCount` | - | +| 参数 | `'1111', 'int', '1'` | `@ItemCount` | - | +| 参数 | `this.selectedRow.订单编号` | `@订单编号` | - | +| 参数 | `this.selectedRow.物料编号` | `@物料编号` | - | +| 参数 | `this.selectedRow.计划数量` | `@计划数量` | - | +| 参数 | `row.工艺顺序` | `@工艺顺序` | `g.工艺顺序 AS 订单行号, ` | +| 参数 | `orderids` | `@订单编号` | - | +| 参数 | `orderitems` | `@零件图号` | - | +| 参数 | `ordernums` | `@计划数量` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `销售订单` | - | `合同号` | +| 显示列 | `计划号` | - | `计划号` | +| 显示列 | `生产订单` | - | `[订单编号]` | +| 显示列 | `物料编码` | - | `g.零件图号 AS 物料编码, ` | +| 显示列 | `物料名称` | - | `mp.物料描述 AS 物料名称, ` | +| 显示列 | `属性` | - | `自制件属性` | +| 显示列 | `计划数` | - | `[计划数量]` | +| 显示列 | `下达日期` | - | `下达日期` | +| 显示列 | `计划开始` | - | `计划开始` | +| 显示列 | `计划完成` | - | `计划完成` | +| 显示列 | `加急状态` | - | `加急状态` | +| 显示列 | `标准工艺` | - | `标准工艺` | +| 显示列 | `生产工艺` | - | `生产工艺` | +| 显示列 | `图纸` | - | `图纸` | +| 显示列 | `备注` | - | `备注` | +| 显示列 | `操作` | - | `操作` | +| 显示列 | `工序` | - | `xg.工序名称, ` | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- PDF/图纸预览或导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 546 | 11(当前通用存储过程查询/执行) | `工艺管理_获取物料原料信息` | 业务存储过程调用 | 查询、读取 SAP B1 数据库对象 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_OWOR_material` | +| 575 | 11(当前通用存储过程查询/执行) | `工艺管理_生产工艺_查询生产工艺` | 查询/读取数据 | 查询、处理报工/工时、处理计划/派工 | 表:`车间生产管理工艺_零件生产工艺_工艺库` | +| 601 | 12(当前通用存储过程写入/业务动作) | `工艺管理_生产工艺_工艺拷贝` | 业务存储过程调用 | 查询、新增、更新、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划` | +| 618 | 11(当前通用存储过程查询/执行) | `工艺管理_生产工艺_生产工艺拷贝` | 业务存储过程调用 | 查询、分页、处理计划/派工 | 表:`MES_接口_生产计划` | +| 624 | 11(当前通用存储过程查询/执行) | `工艺管理_生产工艺_标准工艺拷贝` | 业务存储过程调用 | 查询、分页 | 表:`车间生产管理工艺_零件工序_工艺库`、`物料数据` | +| 669 | 11(当前通用存储过程查询/执行) | `计划排产_生产订单_订单查询` | 查询/读取数据 | 查询、分页、处理计划/派工 | 表:`MES_接口_生产计划`;视图:`View_生产计划零件图纸视图` | +| 696 | 11(当前通用存储过程查询/执行) | `计划排产_生产订单_订单任务_生产工艺任务下发` | 计划排产或派工 | 查询、新增、更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 721 | 12(当前通用存储过程写入/业务动作) | `计划排产_生产订单_订单任务_单条生产工艺任务下发` | 计划排产或派工 | 查询、新增、更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 753 | 12(当前通用存储过程写入/业务动作) | `工艺管理_零件工序_生产工艺_批量生成生产工艺` | 业务存储过程调用 | 查询、新增、更新、分页、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划` | +| 765 | 11(当前通用存储过程查询/执行) | `设备管理_设备信息_查询` | 查询/读取数据 | 查询 | 表:`YL_基础表_数据字典` | +| 801 | 11(当前通用存储过程查询/执行) | `MES_ProcessManagement_ProcessBindGet` | 查询/读取数据 | 查询 | 表:`车间生产管理工艺_零件工序_工艺库` | +| 814 | 11(当前通用存储过程查询/执行) | `工艺管理_制定标准工艺_拷贝生产工艺` | 业务存储过程调用 | 查询 | 表:`车间生产管理工艺_零件生产工艺_工艺库` | +| 841 | 11(当前通用存储过程查询/执行) | `MES_ProcessManagement_ProcessGet` | 查询/读取数据 | 查询 | 表:`基础表_工序` | +| 863 | 12(当前通用存储过程写入/业务动作) | `车间生产管理工艺_零件工序_保存为标准工艺` | 更新/保存业务数据 | 查询、新增、更新、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划` | +| 883 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_零件图纸` | +| 905 | 11(当前通用存储过程查询/执行) | `工艺管理_工艺维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_工艺图纸` | +| 961 | 11(当前通用存储过程查询/执行) | `工艺管理_零件工序_生产工艺_修改数据` | 更新/保存业务数据 | 查询、新增、更新、处理计划/派工 | 表:`MES_接口_生产计划` | +| 966 | 11(当前通用存储过程查询/执行) | `工艺管理_生产工艺_查询生产工艺` | 查询/读取数据 | 查询、处理报工/工时、处理计划/派工 | 表:`车间生产管理工艺_零件生产工艺_工艺库` | +| 1015 | 11(当前通用存储过程查询/执行) | `工艺管理_零件工序_生产工艺_编辑` | 更新/保存业务数据 | 更新、处理报工/工时 | 未在 SQL 中解析到明确依赖 | +| 1036 | 11(当前通用存储过程查询/执行) | `工艺管理_零件工序_生产工艺_编辑插入工序` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划` | +| 1042 | 11(当前通用存储过程查询/执行) | `工艺管理_生产工艺_查询生产工艺` | 查询/读取数据 | 查询、处理报工/工时、处理计划/派工 | 表:`车间生产管理工艺_零件生产工艺_工艺库` | +| 1059 | 11(当前通用存储过程查询/执行) | `工艺管理_零件工序_生产工艺_删除工序` | 删除业务数据 | 查询、更新、删除、处理计划/派工 | 表:`MES_接口_生产计划` | +| 1065 | 11(当前通用存储过程查询/执行) | `工艺管理_生产工艺_查询生产工艺` | 查询/读取数据 | 查询、处理报工/工时、处理计划/派工 | 表:`车间生产管理工艺_零件生产工艺_工艺库` | +| 1081 | 11(当前通用存储过程查询/执行) | `工艺管理_零件工序_生产工艺_上移工序` | 业务存储过程调用 | 查询、更新、处理计划/派工 | 表:`MES_接口_生产计划` | +| 1087 | 11(当前通用存储过程查询/执行) | `工艺管理_生产工艺_查询生产工艺` | 查询/读取数据 | 查询、处理报工/工时、处理计划/派工 | 表:`车间生产管理工艺_零件生产工艺_工艺库` | +| 1103 | 11(当前通用存储过程查询/执行) | `工艺管理_零件工序_生产工艺_下移工序` | 业务存储过程调用 | 查询、更新、处理计划/派工 | 表:`MES_接口_生产计划` | +| 1109 | 11(当前通用存储过程查询/执行) | `工艺管理_生产工艺_查询生产工艺` | 查询/读取数据 | 查询、处理报工/工时、处理计划/派工 | 表:`车间生产管理工艺_零件生产工艺_工艺库` | +| 1123 | 11(当前通用存储过程查询/执行) | `工艺管理_零件工序_生产工艺_插入工序` | 业务存储过程调用 | 查询、更新、处理计划/派工 | 表:`MES_接口_生产计划` | +| 1129 | 11(当前通用存储过程查询/执行) | `工艺管理_生产工艺_查询生产工艺` | 查询/读取数据 | 查询、处理报工/工时、处理计划/派工 | 表:`车间生产管理工艺_零件生产工艺_工艺库` | +| 1140 | 11(当前通用存储过程查询/执行) | `工艺管理_生产工艺_启用` | 业务存储过程调用 | 更新、处理计划/派工 | 表:`MES_接口_生产计划` | + +### 与 SAP 的交互 + +存储过程内读取 SAP B1 数据库对象: +- 工艺管理_获取物料原料信息: SAP.SBO_YL.dbo.UBT_OWOR_material + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `工艺管理_获取物料原料信息`:`SELECT * FROM SAP.SBO_YL.dbo.UBT_OWOR_material where Docentry = @订单编号` +- `计划排产_生产订单_订单查询`:`CREATE PROCEDURE [dbo].[计划排产_生产订单_订单查询]`;`@任务状态 int = 1, `;`@订单状态 int = 1, `;`@工艺状态 int, `;`set @where = ' (单据状态 ''已取消'' OR 单据状态 IS NULL) '`;`IF @任务状态 = 2`;`SET @where = @where + ' AND ISNULL(任务状态, 0) = '+ CAST(@任务状态 AS VARCHAR(10));`;`IF @任务状态 = 1` +- `计划排产_生产订单_订单任务_生产工艺任务下发`:`CREATE PROCEDURE [dbo].[计划排产_生产订单_订单任务_生产工艺任务下发]`;`declare @任务状态 int`;`select @任务状态 = isnull(任务状态, 0) from [dbo].[MES_接口_生产计划] where 订单编号 = @订单编号`;`if (@任务状态 2 and @自制件属性 = '机加件')`;`'insert into [dbo].[MES_接口_生产计划_生产任务] (不装配, 订单编号, 计划数量, 物料编码, 订单行号, 顺序编号, 工序名称, 物料名称, 订单发货类型, 物料类型, 基本数量, 已发货数量, 订单拆分内码, 阶段标识, 可视订单)`;`update [dbo].[MES_接口_生产计划] set 任务状态 = 2 where 订单编号 = @订单编号`;`if (@任务状态 2 and @自制件属性 like '%装配%')`;`'insert into [dbo].[MES_接口_生产计划_生产任务] (不装配, 订单编号, 计划数量, 物料编码, 订单行号, ` +- `计划排产_生产订单_订单任务_单条生产工艺任务下发`:`CREATE PROCEDURE [dbo].[计划排产_生产订单_订单任务_单条生产工艺任务下发]`;`UPDATE dbo.MES_接口_生产计划_生产任务`;`INSERT INTO [dbo].[MES_接口_生产计划_生产任务]`;`update [dbo].[MES_接口_生产计划] set 任务状态 = 2 where 订单编号 = @订单编号` + +### 数据库调用链 + +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_获取物料原料信息` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_OWOR_material` -> 业务存储过程调用 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_生产工艺_查询生产工艺` -> 表:`车间生产管理工艺_零件生产工艺_工艺库` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_生产工艺_工艺拷贝` -> 表:`MES_接口_生产计划` -> 业务存储过程调用 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_生产工艺_生产工艺拷贝` -> 表:`MES_接口_生产计划` -> 业务存储过程调用 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_生产工艺_标准工艺拷贝` -> 表:`车间生产管理工艺_零件工序_工艺库`、`物料数据` -> 业务存储过程调用 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `计划排产_生产订单_订单查询` -> 表:`MES_接口_生产计划`;视图:`View_生产计划零件图纸视图` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `计划排产_生产订单_订单任务_生产工艺任务下发` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `计划排产_生产订单_订单任务_单条生产工艺任务下发` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_零件工序_生产工艺_批量生成生产工艺` -> 表:`MES_接口_生产计划` -> 业务存储过程调用 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `设备管理_设备信息_查询` -> 表:`YL_基础表_数据字典` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `MES_ProcessManagement_ProcessBindGet` -> 表:`车间生产管理工艺_零件工序_工艺库` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_制定标准工艺_拷贝生产工艺` -> 表:`车间生产管理工艺_零件生产工艺_工艺库` -> 业务存储过程调用 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `MES_ProcessManagement_ProcessGet` -> 表:`基础表_工序` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `车间生产管理工艺_零件工序_保存为标准工艺` -> 表:`MES_接口_生产计划` -> 更新/保存业务数据 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_图纸维护_查看图纸` -> 表:`物料基础数据_零件图纸` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_工艺维护_查看图纸` -> 表:`物料基础数据_工艺图纸` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_零件工序_生产工艺_修改数据` -> 表:`MES_接口_生产计划` -> 更新/保存业务数据 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_生产工艺_查询生产工艺` -> 表:`车间生产管理工艺_零件生产工艺_工艺库` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_零件工序_生产工艺_编辑` -> 未在 SQL 中解析到明确依赖 -> 更新/保存业务数据 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_零件工序_生产工艺_编辑插入工序` -> 表:`MES_接口_生产计划` -> 更新/保存业务数据 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_生产工艺_查询生产工艺` -> 表:`车间生产管理工艺_零件生产工艺_工艺库` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_零件工序_生产工艺_删除工序` -> 表:`MES_接口_生产计划` -> 删除业务数据 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_生产工艺_查询生产工艺` -> 表:`车间生产管理工艺_零件生产工艺_工艺库` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_零件工序_生产工艺_上移工序` -> 表:`MES_接口_生产计划` -> 业务存储过程调用 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_生产工艺_查询生产工艺` -> 表:`车间生产管理工艺_零件生产工艺_工艺库` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_零件工序_生产工艺_下移工序` -> 表:`MES_接口_生产计划` -> 业务存储过程调用 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_生产工艺_查询生产工艺` -> 表:`车间生产管理工艺_零件生产工艺_工艺库` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_零件工序_生产工艺_插入工序` -> 表:`MES_接口_生产计划` -> 业务存储过程调用 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_生产工艺_查询生产工艺` -> 表:`车间生产管理工艺_零件生产工艺_工艺库` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessProduct/index.vue` -> `工艺管理_生产工艺_启用` -> 表:`MES_接口_生产计划` -> 业务存储过程调用 + +### 存储过程处理逻辑明细 + +- `工艺管理_获取物料原料信息` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、读取 SAP B1 数据库对象。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_OWOR_material`。 入参/分页参数:`@订单编号 nvarchar(50)`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`SELECT * FROM SAP.SBO_YL.dbo.UBT_OWOR_material where Docentry = @订单编号`。 实现特征:读取 SAP 数据库对象。 +- `工艺管理_生产工艺_查询生产工艺` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50),`、`@订单编号 int`。 主要返回字段线索:`[id]`、`[零件图号]`、`a.[工艺编号]`、`[工艺顺序]`、`[工艺要求]`、`[是否最后一序]`、`[订单编号]`、`[计划数量]`、`isnull(准备工时, 0) as 准备工时`、`isnull(标准工时, 0) as 标准工时`。 关键过滤/匹配条件:`on a.工艺编号 = b.工艺编号 where 零件图号 = @物料编号 and 订单编号 = @订单编号 ORDER BY [工艺顺序]`。 排序/分组/分页线索:`on a.工艺编号 = b.工艺编号 where 零件图号 = @物料编号 and 订单编号 = @订单编号 ORDER BY [工艺顺序]`。 +- `工艺管理_生产工艺_工艺拷贝` 属于 工艺与图纸,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、新增、更新、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50)`、`@零件图号 nvarchar(50)`、`@订单编号 int,`、`@计划数量 int,`、`@工艺类型 int`。 主要返回字段线索:`@工艺数量 = count(*)`。 关键过滤/匹配条件:`select @工艺数量 = count(*) from 车间生产管理工艺_零件工序_工艺库 where 零件图号 = @零件图号`;`select @工艺数量 = count(*) from 车间生产管理工艺_零件生产工艺_工艺库 where 零件图号 = @零件图号`;`delete 车间生产管理工艺_零件生产工艺_工艺库 where 订单编号 = @订单编号`;`where 订单编号 = @订单编号`;`update [dbo].[MES_接口_生产计划] set 生产工艺 = 1 where 订单编号 = @订单编号`;`WHERE 零件图号 = @零件图号 and 工艺顺序 = @i and 启用 = 1`;`where 零件图号 = @物料编号 and 工艺顺序 = @i and 订单编号 = @订单编号`。 关键写入/状态处理语句线索:`set @l = 1`;`set @新增条数 = @工艺数量`;`insert into 车间生产管理工艺_零件生产工艺_工艺库(订单编号, 计划数量, 零件图号, 工艺顺序, 启用)values(@订单编号, @计划数量, @物料编号, ISNULL(@最大顺序, 0)+1, 0)`;`update [dbo].[MES_接口_生产计划] set 生产工艺 = 1 where 订单编号 = @订单编号`;`set @l = @l+1`;`set @i = 1`;`update 车间生产管理工艺_零件生产工艺_工艺库`;`set 工艺编号 = @工艺编号, `;`set @i = @i+1`。 +- `工艺管理_生产工艺_生产工艺拷贝` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、分页、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`from [MES_接口_生产计划] where 生产工艺 = 1) t WHERE rn = 1;`。 排序/分组/分页线索:`ROW_NUMBER() OVER (PARTITION BY [物料编号] ORDER BY (SELECT NULL)) AS rn`。 实现特征:分页。 +- `工艺管理_生产工艺_标准工艺拷贝` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、分页。 读取/关联对象:表:`车间生产管理工艺_零件工序_工艺库`、`物料数据`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`from [dbo].[车间生产管理工艺_零件工序_工艺库] a left join [dbo].[物料数据] b on a.零件图号 = b.物料编码 where a.启用 = 1) t WHERE rn = 1;`。 排序/分组/分页线索:`ROW_NUMBER() OVER (PARTITION BY a.[零件图号] ORDER BY (SELECT NULL)) AS rn`。 实现特征:分页。 +- `计划排产_生产订单_订单查询` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、分页、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`;视图:`View_生产计划零件图纸视图`。 入参/分页参数:`@订单号 int`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@下达日期1 nvarchar(50)`、`@下达日期2 nvarchar(50)`、`@任务状态 int`、`@订单状态 int`、`@工艺状态 int,`、`@计划号 nvarchar(50)`、`@PageCurrent int`、`@PageSize int`、`@PageCount int`、`@ItemCount int`。 关键过滤/匹配条件:`declare @where nvarchar(4000)`;`set @where = ' (单据状态 ''已取消'' OR 单据状态 IS NULL) '`;`SET @where = @where + ' AND [订单编号] = ' + CAST(@订单号 AS VARCHAR(10));`;`IF @计划号 IS NOT NULL AND @计划号 0`;`SET @where = @where + ' AND 计划号 = '''+@计划号+''''`;`SET @where = @where + ' AND [合同号] LIKE ''%' + @合同号 + '%''';`;`SET @where = @where + ' AND [物料编号] LIKE ''%' + @产品编码 + '%''';`;`SET @where = @where + ' AND [物料描述] LIKE ''%' + @产品名称 + '%''';`;`SET @where = @where + ' AND 下达日期 > = ''' + @下达日期1 + '''';`;`SET @where = @where + ' AND 下达日期 < = ''' + @下达日期2 + '''';`。 关键写入/状态处理语句线索:`set @tbname = '[dbo].[View_生产计划零件图纸视图]'`;`set @fieldkey = ' 订单编号 '`;`set @where = ' (单据状态 ''已取消'' OR 单据状态 IS NULL) '`;`set @fieldshow = ''`;`set @fieldOrder = '订单编号 DESC'`;`SET @where = @where + ' AND [订单编号] = ' + CAST(@订单号 AS VARCHAR(10));`;`SET @where = @where + ' AND 计划号 = '''+@计划号+''''`;`SET @where = @where + ' AND [合同号] LIKE ''%' + @合同号 + '%''';`;`SET @where = @where + ' AND [物料编号] LIKE ''%' + @产品编码 + '%''';`;`SET @where = @where + ' AND [物料描述] LIKE ''%' + @产品名称 + '%''';`;`SET @where = @where + ' AND 下达日期 > = ''' + @下达日期1 + '''';`;`SET @where = @where + ' AND 下达日期 < = ''' + @下达日期2 + '''';`。 实现特征:分页。 +- `计划排产_生产订单_订单任务_生产工艺任务下发` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 计划排产或派工。 数据库处理摘要:查询、新增、更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@订单编号 nvarchar(max),`、`@物料编号 nvarchar(max),`、`@计划数量 int`。 主要返回字段线索:`@任务状态 = isnull(任务状态, 0)`。 关键过滤/匹配条件:`select @任务状态 = isnull(任务状态, 0) from [dbo].[MES_接口_生产计划] where 订单编号 = @订单编号`;`select @自制件属性 = isnull(自制件属性, 0) from [dbo].[MES_接口_生产计划] where 订单编号 = @订单编号`;`if (@任务状态 2 and @自制件属性 = '机加件')`;`where 车间生产管理工艺_零件生产工艺_工艺库.零件图号 = '''+@物料编号+'''and MES_接口_生产计划.订单编号 = '''+@订单编号+''''`;`update [dbo].[MES_接口_生产计划] set 任务状态 = 2 where 订单编号 = @订单编号`;`update [dbo].[MES_接口_生产计划] set 生产工艺 = 1 where 订单编号 = @订单编号`;`update 车间生产管理工艺_零件生产工艺_工艺库 set 启用 = 1 where 订单编号 = @订单编号`;`if (@任务状态 2 and @自制件属性 like '%装配%')`。 关键写入/状态处理语句线索:`set @selectStr2 = `;`'insert into [dbo].[MES_接口_生产计划_生产任务] (不装配, 订单编号, 计划数量, 物料编码, 订单行号, 顺序编号, 工序名称, 物料名称, 订单发货类型, 物料类型, 基本数量, 已发货数量, 订单拆分内码, 阶段标识, 可视订单)`;`update [dbo].[MES_接口_生产计划] set 任务状态 = 2 where 订单编号 = @订单编号`;`update [dbo].[MES_接口_生产计划] set 生产工艺 = 1 where 订单编号 = @订单编号`;`update 车间生产管理工艺_零件生产工艺_工艺库 set 启用 = 1 where 订单编号 = @订单编号`;`'insert into [dbo].[MES_接口_生产计划_生产任务] (不装配, 订单编号, 计划数量, 物料编码, 订单行号, `。 +- `计划排产_生产订单_订单任务_单条生产工艺任务下发` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:查询、新增、更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@订单编号 NVARCHAR(50),`、`@物料编号 NVARCHAR(50),`、`@计划数量 INT,`、`@工艺顺序 INT`。 主要返回字段线索:`''4'' AS 不装配, `、`g.订单编号, `、`g.计划数量, `、`g.零件图号 AS 物料编码, `、`g.工艺顺序 AS 订单行号, `、`g.工艺编号 AS 顺序编号, `、`xg.工序名称, `、`mp.物料描述 AS 物料名称, `、`''im_Manual'' AS 订单发货类型, `、`''pit_Resource'' AS 物料类型, `。 关键过滤/匹配条件:`WHERE 订单编号 = @订单编号`;`AND 物料编码 = @物料编号`;`AND 订单行号 > = @工艺顺序;`;`LEFT JOIN dbo.MES_接口_生产计划 mp ON g.零件图号 = mp.物料编号 AND mp.订单编号 = g.订单编号`;`WHERE g.零件图号 = ''' + @Safe物料编号 + '''`;`AND mp.订单编号 = ''' + @Safe订单编号 + '''`;`AND g.工艺顺序 = ' + @Safe工艺顺序 + ';'`;`update [dbo].[MES_接口_生产计划] set 任务状态 = 2 where 订单编号 = @订单编号`;`update [dbo].[MES_接口_生产计划] set 生产工艺 = 1 where 订单编号 = @订单编号`;`update 车间生产管理工艺_零件生产工艺_工艺库 set 启用 = 1 where 订单编号 = @订单编号`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`UPDATE dbo.MES_接口_生产计划_生产任务`;`SET 订单行号 = 订单行号 + 1`;`SET @SQL = '`;`INSERT INTO [dbo].[MES_接口_生产计划_生产任务]`;`update [dbo].[MES_接口_生产计划] set 任务状态 = 2 where 订单编号 = @订单编号`;`update [dbo].[MES_接口_生产计划] set 生产工艺 = 1 where 订单编号 = @订单编号`;`update 车间生产管理工艺_零件生产工艺_工艺库 set 启用 = 1 where 订单编号 = @订单编号`。 实现特征:事务控制、异常捕获。 +- `工艺管理_零件工序_生产工艺_批量生成生产工艺` 属于 工艺与图纸,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、新增、更新、分页、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@零件图号 NVARCHAR(MAX),`、`@订单编号 NVARCHAR(MAX),`、`@计划数量 NVARCHAR(MAX)`。 主要返回字段线索:`TRIM(value)`。 关键过滤/匹配条件:`IF @零件图号 IS NULL OR @订单编号 IS NULL OR @计划数量 IS NULL`;`WHERE 订单编号 IN (SELECT TRIM(value) FROM STRING_SPLIT(@订单编号, '', '')) ;';`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @sql1 = N'`;`UPDATE [dbo].[MES_接口_生产计划]`;`SET 生产工艺 = 1`;`SET @sql2 = N'`;`INSERT INTO 车间生产管理工艺_零件生产工艺_工艺库`。 排序/分组/分页线索:`SELECT TRIM(value) AS PartID, ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS rn`;`SELECT TRIM(value) AS OrderID, ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS rn`;`SELECT TRIM(value) AS Qty, ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS rn`。 实现特征:分页。 +- `设备管理_设备信息_查询` 属于 设备与实时数据,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`YL_基础表_数据字典`。 入参/分页参数:`@设备名称_check bit`、`@设备名称 nvarchar(50)`、`@设备类型_check bit`、`@设备类型 int`、`@工位_check bit`、`@工位 nvarchar(50)`。 主要返回字段线索:`*, [dbo].[YL_基础表_数据字典].词条名称 as 设备类型名称`。 关键过滤/匹配条件:`set @selectStrWhere = 'where 1 = 1 '`;`set @selectStrWhere = @selectStrWhere+' and 设备名称 like + ''%'' + @设备名称 + ''%'' '`;`set @selectStrWhere = @selectStrWhere+' and 基础数据_设备工位点检表.设备类型 = @设备类型'`。 关键写入/状态处理语句线索:`set @selectStr = `;`set @selectStrWhere = 'where 1 = 1 '`;`set @selectStrWhere = @selectStrWhere+' and 设备名称 like + ''%'' + @设备名称 + ''%'' '`;`set @selectStrWhere = @selectStrWhere+' and 基础数据_设备工位点检表.设备类型 = @设备类型'`;`set @selectStr = @selectStr+@selectStrWhere`。 +- `MES_ProcessManagement_ProcessBindGet` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`车间生产管理工艺_零件工序_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50)`。 主要返回字段线索:`*, dbo.基础表_工序.工序名称 as 工艺名称`。 关键过滤/匹配条件:`on 车间生产管理工艺_零件工序_工艺库.工艺编号 = dbo.基础表_工序.工艺编号 where 零件图号 = @物料编号 ORDER BY [工艺顺序]`。 排序/分组/分页线索:`on 车间生产管理工艺_零件工序_工艺库.工艺编号 = dbo.基础表_工序.工艺编号 where 零件图号 = @物料编号 ORDER BY [工艺顺序]`。 +- `工艺管理_制定标准工艺_拷贝生产工艺` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50)`。 主要返回字段线索:`@最大订单 = max(订单编号)`。 关键过滤/匹配条件:`select @最大订单 = max(订单编号) from 车间生产管理工艺_零件生产工艺_工艺库 where 零件图号 = @物料编号 and 启用 = 1`;`on [车间生产管理工艺_零件生产工艺_工艺库].工艺编号 = dbo.基础表_工序.工艺编号 where 零件图号 = @物料编号 and 启用 = 1 and 订单编号 = @最大订单 ORDER BY [工艺顺序]`。 排序/分组/分页线索:`on [车间生产管理工艺_零件生产工艺_工艺库].工艺编号 = dbo.基础表_工序.工艺编号 where 零件图号 = @物料编号 and 启用 = 1 and 订单编号 = @最大订单 ORDER BY [工艺顺序]`。 +- `MES_ProcessManagement_ProcessGet` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`基础表_工序`。 入参/分页参数:`@工艺编号 nvarchar(50)`。 主要返回字段线索:`工艺编号 as 工艺编号, 工序名称 as 工艺名称`。 关键过滤/匹配条件:`IF @工艺编号 IS NOT NULL AND @工艺编号 ! = ''`;`SELECT 工艺编号 as 工艺编号, 工序名称 as 工艺名称 FROM [基础表_工序] WHERE 工艺编号 IN (SELECT value FROM STRING_SPLIT(@工艺编号, ', '))`。 排序/分组/分页线索:`SELECT 工艺编号 as 工艺编号, 工序名称 as 工艺名称 FROM [基础表_工序] ORDER BY 工艺编号`。 +- `车间生产管理工艺_零件工序_保存为标准工艺` 属于 工艺与图纸,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`车间生产管理工艺_零件工序_工艺库`。 入参/分页参数:`@物料编号 nvarchar(500),`、`@订单编号 int`。 主要返回字段线索:`[零件图号]`、`[工艺编号]`、`[工艺顺序]`、`[工艺要求]`、`[是否最后一序]`、`[计划数量]`、`[准备工时]`、`[标准工时]`、`[工时合计]`、`[工卡量具]`。 关键过滤/匹配条件:`delete 车间生产管理工艺_零件工序_工艺库 where 零件图号 = @物料编号`;`from 车间生产管理工艺_零件生产工艺_工艺库 where 订单编号 = @订单编号`;`update [dbo].[MES_接口_生产计划] set 标准工艺 = 1 where 物料编号 = @物料编号`。 关键写入/状态处理语句线索:`insert into 车间生产管理工艺_零件工序_工艺库 ( [零件图号]`;`update [dbo].[MES_接口_生产计划] set 标准工艺 = 1 where 物料编号 = @物料编号`。 +- `工艺管理_图纸维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_零件图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`、`worker`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `工艺管理_工艺维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_工艺图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `工艺管理_零件工序_生产工艺_修改数据` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50)`、`@工艺编号 int`、`@计划数量 int`、`@订单编号 int`。 主要返回字段线索:`top 1 @工序顺序 = 工艺顺序`。 关键过滤/匹配条件:`select top 1 @工序顺序 = 工艺顺序 from 车间生产管理工艺_零件生产工艺_工艺库 where 零件图号 = @物料编号 and 订单编号 = @订单编号 order by 工艺顺序 desc`;`update 车间生产管理工艺_零件生产工艺_工艺库 set 启用 = 0 where 订单编号 = @订单编号`;`update [dbo].[MES_接口_生产计划] set 生产工艺 = 0 where 订单编号 = @订单编号`。 关键写入/状态处理语句线索:`insert into dbo.车间生产管理工艺_零件生产工艺_工艺库(计划数量, 零件图号, 工艺顺序, 工艺编号, 订单编号)values(@计划数量, @物料编号, @工序顺序+1, @工艺编号, @订单编号)`;`update 车间生产管理工艺_零件生产工艺_工艺库 set 启用 = 0 where 订单编号 = @订单编号`;`update [dbo].[MES_接口_生产计划] set 生产工艺 = 0 where 订单编号 = @订单编号`。 排序/分组/分页线索:`select top 1 @工序顺序 = 工艺顺序 from 车间生产管理工艺_零件生产工艺_工艺库 where 零件图号 = @物料编号 and 订单编号 = @订单编号 order by 工艺顺序 desc`。 +- `工艺管理_生产工艺_查询生产工艺` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50),`、`@订单编号 int`。 主要返回字段线索:`[id]`、`[零件图号]`、`a.[工艺编号]`、`[工艺顺序]`、`[工艺要求]`、`[是否最后一序]`、`[订单编号]`、`[计划数量]`、`isnull(准备工时, 0) as 准备工时`、`isnull(标准工时, 0) as 标准工时`。 关键过滤/匹配条件:`on a.工艺编号 = b.工艺编号 where 零件图号 = @物料编号 and 订单编号 = @订单编号 ORDER BY [工艺顺序]`。 排序/分组/分页线索:`on a.工艺编号 = b.工艺编号 where 零件图号 = @物料编号 and 订单编号 = @订单编号 ORDER BY [工艺顺序]`。 +- `工艺管理_零件工序_生产工艺_编辑` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理报工/工时。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@idd int,`、`@工艺要求 nvarchar(500)`、`@准备工时 int`、`@标准工时 int`、`@工时合计 int`、`@工卡量具 nvarchar(500)`、`@指定机床 nvarchar(500)`、`@车间 nvarchar(500)`、`@备注 nvarchar(500)`、`@属性 nvarchar(500)`。 关键过滤/匹配条件:`工时合计 = @工时合计, 工卡量具 = @工卡量具, 指定机床 = @指定机床, 车间 = @车间, 备注 = @备注, 属性 = @属性 where id = @idd`。 关键写入/状态处理语句线索:`update 车间生产管理工艺_零件生产工艺_工艺库 set 工艺要求 = @工艺要求, 准备工时 = @准备工时, 标准工时 = @标准工时, `。 +- `工艺管理_零件工序_生产工艺_编辑插入工序` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@idd int,`、`@工艺编号 int,`、`@计划数量 int,`、`@订单编号 int`。 关键过滤/匹配条件:`update 车间生产管理工艺_零件生产工艺_工艺库 set 工艺编号 = @工艺编号, 计划数量 = @计划数量 where id = @idd`;`update 车间生产管理工艺_零件生产工艺_工艺库 set 启用 = 0 where 订单编号 = @订单编号`;`update [dbo].[MES_接口_生产计划] set 生产工艺 = 0 where 订单编号 = @订单编号`。 关键写入/状态处理语句线索:`update 车间生产管理工艺_零件生产工艺_工艺库 set 工艺编号 = @工艺编号, 计划数量 = @计划数量 where id = @idd`;`update 车间生产管理工艺_零件生产工艺_工艺库 set 启用 = 0 where 订单编号 = @订单编号`;`update [dbo].[MES_接口_生产计划] set 生产工艺 = 0 where 订单编号 = @订单编号`。 +- `工艺管理_生产工艺_查询生产工艺` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50),`、`@订单编号 int`。 主要返回字段线索:`[id]`、`[零件图号]`、`a.[工艺编号]`、`[工艺顺序]`、`[工艺要求]`、`[是否最后一序]`、`[订单编号]`、`[计划数量]`、`isnull(准备工时, 0) as 准备工时`、`isnull(标准工时, 0) as 标准工时`。 关键过滤/匹配条件:`on a.工艺编号 = b.工艺编号 where 零件图号 = @物料编号 and 订单编号 = @订单编号 ORDER BY [工艺顺序]`。 排序/分组/分页线索:`on a.工艺编号 = b.工艺编号 where 零件图号 = @物料编号 and 订单编号 = @订单编号 ORDER BY [工艺顺序]`。 +- `工艺管理_零件工序_生产工艺_删除工序` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 删除业务数据。 数据库处理摘要:查询、更新、删除、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50)`、`@idd int`、`@订单编号 int`。 主要返回字段线索:`@工序顺序 = 工艺顺序`。 关键过滤/匹配条件:`select @工序顺序 = 工艺顺序 from 车间生产管理工艺_零件生产工艺_工艺库 where id = @idd`;`where 工艺顺序>@工序顺序 and 零件图号 = @物料编号 and 订单编号 = @订单编号`;`delete from 车间生产管理工艺_零件生产工艺_工艺库 where id = @idd`;`update 车间生产管理工艺_零件生产工艺_工艺库 set 启用 = 0 where 订单编号 = @订单编号`;`update [dbo].[MES_接口_生产计划] set 生产工艺 = 0 where 订单编号 = @订单编号`。 关键写入/状态处理语句线索:`update 车间生产管理工艺_零件生产工艺_工艺库 set 工艺顺序 = 工艺顺序 - 1`;`delete from 车间生产管理工艺_零件生产工艺_工艺库 where id = @idd`;`update 车间生产管理工艺_零件生产工艺_工艺库 set 启用 = 0 where 订单编号 = @订单编号`;`update [dbo].[MES_接口_生产计划] set 生产工艺 = 0 where 订单编号 = @订单编号`。 +- `工艺管理_生产工艺_查询生产工艺` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50),`、`@订单编号 int`。 主要返回字段线索:`[id]`、`[零件图号]`、`a.[工艺编号]`、`[工艺顺序]`、`[工艺要求]`、`[是否最后一序]`、`[订单编号]`、`[计划数量]`、`isnull(准备工时, 0) as 准备工时`、`isnull(标准工时, 0) as 标准工时`。 关键过滤/匹配条件:`on a.工艺编号 = b.工艺编号 where 零件图号 = @物料编号 and 订单编号 = @订单编号 ORDER BY [工艺顺序]`。 排序/分组/分页线索:`on a.工艺编号 = b.工艺编号 where 零件图号 = @物料编号 and 订单编号 = @订单编号 ORDER BY [工艺顺序]`。 +- `工艺管理_零件工序_生产工艺_上移工序` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50)`、`@idd int`、`@订单编号 int`。 主要返回字段线索:`@工序顺序 = 工艺顺序`。 关键过滤/匹配条件:`where id = @idd`;`where 零件图号 = @物料编号 and 工艺顺序 = @工序顺序-1 and 订单编号 = @订单编号`;`where id = @前idd`;`update 车间生产管理工艺_零件生产工艺_工艺库 set 启用 = 0 where 订单编号 = @订单编号`;`update [dbo].[MES_接口_生产计划] set 生产工艺 = 0 where 订单编号 = @订单编号`。 关键写入/状态处理语句线索:`update dbo.车间生产管理工艺_零件生产工艺_工艺库`;`set 工艺顺序 = @工序顺序-1`;`set 工艺顺序 = @工序顺序`;`update 车间生产管理工艺_零件生产工艺_工艺库 set 启用 = 0 where 订单编号 = @订单编号`;`update [dbo].[MES_接口_生产计划] set 生产工艺 = 0 where 订单编号 = @订单编号`。 +- `工艺管理_生产工艺_查询生产工艺` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50),`、`@订单编号 int`。 主要返回字段线索:`[id]`、`[零件图号]`、`a.[工艺编号]`、`[工艺顺序]`、`[工艺要求]`、`[是否最后一序]`、`[订单编号]`、`[计划数量]`、`isnull(准备工时, 0) as 准备工时`、`isnull(标准工时, 0) as 标准工时`。 关键过滤/匹配条件:`on a.工艺编号 = b.工艺编号 where 零件图号 = @物料编号 and 订单编号 = @订单编号 ORDER BY [工艺顺序]`。 排序/分组/分页线索:`on a.工艺编号 = b.工艺编号 where 零件图号 = @物料编号 and 订单编号 = @订单编号 ORDER BY [工艺顺序]`。 +- `工艺管理_零件工序_生产工艺_下移工序` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50)`、`@idd int`、`@订单编号 int`。 主要返回字段线索:`@工序顺序 = 工艺顺序`。 关键过滤/匹配条件:`where id = @idd`;`where 零件图号 = @物料编号 and 工艺顺序 = @工序顺序+1 and 订单编号 = @订单编号`;`where id = @后idd`;`update 车间生产管理工艺_零件生产工艺_工艺库 set 启用 = 0 where 订单编号 = @订单编号`;`update [dbo].[MES_接口_生产计划] set 生产工艺 = 0 where 订单编号 = @订单编号`。 关键写入/状态处理语句线索:`update dbo.车间生产管理工艺_零件生产工艺_工艺库`;`set 工艺顺序 = @工序顺序+1`;`set 工艺顺序 = @工序顺序`;`update 车间生产管理工艺_零件生产工艺_工艺库 set 启用 = 0 where 订单编号 = @订单编号`;`update [dbo].[MES_接口_生产计划] set 生产工艺 = 0 where 订单编号 = @订单编号`。 +- `工艺管理_生产工艺_查询生产工艺` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50),`、`@订单编号 int`。 主要返回字段线索:`[id]`、`[零件图号]`、`a.[工艺编号]`、`[工艺顺序]`、`[工艺要求]`、`[是否最后一序]`、`[订单编号]`、`[计划数量]`、`isnull(准备工时, 0) as 准备工时`、`isnull(标准工时, 0) as 标准工时`。 关键过滤/匹配条件:`on a.工艺编号 = b.工艺编号 where 零件图号 = @物料编号 and 订单编号 = @订单编号 ORDER BY [工艺顺序]`。 排序/分组/分页线索:`on a.工艺编号 = b.工艺编号 where 零件图号 = @物料编号 and 订单编号 = @订单编号 ORDER BY [工艺顺序]`。 +- `工艺管理_零件工序_生产工艺_插入工序` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@零件图号 nvarchar(50)`、`@idd int`、`@订单编号 int`。 主要返回字段线索:`@工序顺序 = 工艺顺序`。 关键过滤/匹配条件:`select @工序顺序 = 工艺顺序 from dbo.车间生产管理工艺_零件生产工艺_工艺库 where id = @idd`;`where 工艺顺序> = @工序顺序 and 零件图号 = @零件图号 and 订单编号 = @订单编号`;`update 车间生产管理工艺_零件生产工艺_工艺库 set 启用 = 0 where 订单编号 = @订单编号`;`update [dbo].[MES_接口_生产计划] set 生产工艺 = 0 where 订单编号 = @订单编号`。 关键写入/状态处理语句线索:`update dbo.车间生产管理工艺_零件生产工艺_工艺库`;`set 工艺顺序 = 工艺顺序+1`;`update 车间生产管理工艺_零件生产工艺_工艺库 set 启用 = 0 where 订单编号 = @订单编号`;`update [dbo].[MES_接口_生产计划] set 生产工艺 = 0 where 订单编号 = @订单编号`。 +- `工艺管理_生产工艺_查询生产工艺` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50),`、`@订单编号 int`。 主要返回字段线索:`[id]`、`[零件图号]`、`a.[工艺编号]`、`[工艺顺序]`、`[工艺要求]`、`[是否最后一序]`、`[订单编号]`、`[计划数量]`、`isnull(准备工时, 0) as 准备工时`、`isnull(标准工时, 0) as 标准工时`。 关键过滤/匹配条件:`on a.工艺编号 = b.工艺编号 where 零件图号 = @物料编号 and 订单编号 = @订单编号 ORDER BY [工艺顺序]`。 排序/分组/分页线索:`on a.工艺编号 = b.工艺编号 where 零件图号 = @物料编号 and 订单编号 = @订单编号 ORDER BY [工艺顺序]`。 +- `工艺管理_生产工艺_启用` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@订单编号 nvarchar(50)`。 关键过滤/匹配条件:`update 车间生产管理工艺_零件生产工艺_工艺库 set 启用 = 1 where 订单编号 = @订单编号`;`update [dbo].[MES_接口_生产计划] set 生产工艺 = 1 where 订单编号 = @订单编号`。 关键写入/状态处理语句线索:`update 车间生产管理工艺_零件生产工艺_工艺库 set 启用 = 1 where 订单编号 = @订单编号`;`update [dbo].[MES_接口_生产计划] set 生产工艺 = 1 where 订单编号 = @订单编号`。 + +## 22. src/views/ProcessManagement/ProcessesDevelop/index.vue + +**页面位置**:`src/views/ProcessManagement/ProcessesDevelop/index.vue` +**所属模块**:ProcessManagement / ProcessesDevelop +**源码行数**:918 + +### 页面功能 + +该页面用于工艺开发和生产工艺路线维护。用户围绕物料、工序、顺序、工艺参数、图纸等信息维护标准或生产用工艺路线。 + +页面可见的操作/字段包括 “查询”、“拷贝”、“图纸”、“已保存”、“保存”、“导出”、“--> 生产工艺 取消”、“确定”、“item.物料编码”、“工序”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `工艺管理_获取物料原料信息`、`设备管理_设备信息_查询`、`工艺管理_生产计划物料查询`、`工艺管理_生产工艺_生产工艺拷贝`、`工艺管理_生产工艺_标准工艺拷贝`、`MES_ProcessManagement_ProcessBindGet` 等过程 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `工艺管理_获取物料原料信息` -> `设备管理_设备信息_查询` -> `工艺管理_生产计划物料查询` -> `工艺管理_生产工艺_生产工艺拷贝` -> `工艺管理_生产工艺_标准工艺拷贝` -> `MES_ProcessManagement_ProcessBindGet` -> `工艺管理_制定标准工艺_拷贝生产工艺` -> `MES_ProcessManagement_ProcessGet` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`拷贝`、`图纸`、`已保存`、`保存`、`导出`、`--> 生产工艺 取消`、`确定`、`item.物料编码`、`工序`、`序号`、`工序名称`、`准备工时`、`标准工时`、`工时合计`、`工装量具`、`item.name`、`指定机床` + +主要方法线索:`getitemdata`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `item` | `@订单编号` | - | +| 参数 | `query` | `@过滤` | - | +| 显示列 | `工序` | - | `*, dbo.基础表_工序.工序名称 as 工艺名称` | +| 显示列 | `序号` | - | `top 1 @工序顺序 = 工艺顺序` | +| 显示列 | `工序名称` | - | `*, dbo.基础表_工序.工序名称 as 工艺名称` | +| 显示列 | `准备工时` | - | `dbo.车间生产管理工艺_零件工序_工艺库.准备工时, ` | +| 显示列 | `标准工时` | - | `dbo.车间生产管理工艺_零件工序_工艺库.标准工时, ` | +| 显示列 | `工时合计` | - | `dbo.车间生产管理工艺_零件工序_工艺库.工时合计, ` | +| 显示列 | `工装量具` | - | `工装量具` | +| 显示列 | `指定机床` | - | `指定机床` | +| 显示列 | `车间` | - | `dbo.车间生产管理工艺_零件工序_工艺库.id, ` | +| 显示列 | `工序说明` | - | `工序说明` | +| 显示列 | `备注` | - | `备注` | +| 显示列 | `操作` | - | `操作` | +| 显示列 | `工序说明` | - | `dbo.车间生产管理工艺_零件工序_工艺库.工艺要求, ` | +| 输入字段 | `partNameValue3` | - | - | +| 输入字段 | `processSearchName` | - | - | +| 输入字段 | `scope.row.准备工时` | - | - | +| 输入字段 | `scope.row.标准工时` | - | - | +| 输入字段 | `scope.row.工时合计` | - | - | +| 输入字段 | `scope.row.工卡量具` | - | - | +| 输入字段 | `scope.row.指定机床` | - | - | +| 输入字段 | `scope.row.车间` | - | - | +| 输入字段 | `scope.row.工艺要求` | - | - | +| 输入字段 | `scope.row.备注` | - | - | +| 输入字段 | `processprodutc` | - | - | +| 输入字段 | `partNameValue2` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- PDF/图纸预览或导出 +- Excel/报表导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 333 | 11(当前通用存储过程查询/执行) | `工艺管理_获取物料原料信息` | 业务存储过程调用 | 查询、读取 SAP B1 数据库对象 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_OWOR_material` | +| 352 | 11(当前通用存储过程查询/执行) | `设备管理_设备信息_查询` | 查询/读取数据 | 查询 | 表:`YL_基础表_数据字典` | +| 385 | 11(当前通用存储过程查询/执行) | `工艺管理_生产计划物料查询` | 查询/读取数据 | 查询、处理计划/派工 | 未在 SQL 中解析到明确依赖 | +| 402 | 11(当前通用存储过程查询/执行) | `工艺管理_生产工艺_生产工艺拷贝` | 业务存储过程调用 | 查询、分页、处理计划/派工 | 表:`MES_接口_生产计划` | +| 409 | 11(当前通用存储过程查询/执行) | `工艺管理_生产工艺_标准工艺拷贝` | 业务存储过程调用 | 查询、分页 | 表:`车间生产管理工艺_零件工序_工艺库`、`物料数据` | +| 452 | 11(当前通用存储过程查询/执行) | `MES_ProcessManagement_ProcessBindGet` | 查询/读取数据 | 查询 | 表:`车间生产管理工艺_零件工序_工艺库` | +| 468 | 11(当前通用存储过程查询/执行) | `MES_ProcessManagement_ProcessBindGet` | 查询/读取数据 | 查询 | 表:`车间生产管理工艺_零件工序_工艺库` | +| 482 | 11(当前通用存储过程查询/执行) | `工艺管理_制定标准工艺_拷贝生产工艺` | 业务存储过程调用 | 查询 | 表:`车间生产管理工艺_零件生产工艺_工艺库` | +| 538 | 11(当前通用存储过程查询/执行) | `MES_ProcessManagement_ProcessGet` | 查询/读取数据 | 查询 | 表:`基础表_工序` | +| 568 | 12(当前通用存储过程写入/业务动作) | `工艺管理_制定标准工艺_拷贝工艺保存` | 更新/保存业务数据 | 查询、新增、更新、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划` | +| 587 | 11(当前通用存储过程查询/执行) | `工艺管理_工艺维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_工艺图纸` | +| 634 | 11(当前通用存储过程查询/执行) | `车间生产管理工艺_零件工序_修改数据_工艺库` | 更新/保存业务数据 | 查询、新增、更新、处理计划/派工 | 表:`MES_接口_生产计划` | +| 638 | 11(当前通用存储过程查询/执行) | `车间生产管理工艺_零件工序_查询工序信息_工艺库` | 查询/读取数据 | 查询、处理报工/工时 | 未在 SQL 中解析到明确依赖 | +| 687 | 11(当前通用存储过程查询/执行) | `车间生产管理工艺_零件工序_编辑_工艺库` | 更新/保存业务数据 | 更新、处理报工/工时 | 未在 SQL 中解析到明确依赖 | +| 695 | 11(当前通用存储过程查询/执行) | `车间生产管理工艺_零件工序_编辑插入行` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划` | +| 700 | 11(当前通用存储过程查询/执行) | `车间生产管理工艺_零件工序_查询工序信息_工艺库` | 查询/读取数据 | 查询、处理报工/工时 | 未在 SQL 中解析到明确依赖 | +| 715 | 11(当前通用存储过程查询/执行) | `车间生产管理工艺_零件工序_删除工序_工艺库` | 删除业务数据 | 查询、更新、删除、处理计划/派工 | 表:`MES_接口_生产计划` | +| 720 | 11(当前通用存储过程查询/执行) | `车间生产管理工艺_零件工序_查询工序信息_工艺库` | 查询/读取数据 | 查询、处理报工/工时 | 未在 SQL 中解析到明确依赖 | +| 734 | 11(当前通用存储过程查询/执行) | `车间生产管理工艺_零件工序_上移工序_工艺库` | 业务存储过程调用 | 查询、更新、处理计划/派工 | 表:`MES_接口_生产计划` | +| 739 | 11(当前通用存储过程查询/执行) | `车间生产管理工艺_零件工序_查询工序信息_工艺库` | 查询/读取数据 | 查询、处理报工/工时 | 未在 SQL 中解析到明确依赖 | +| 754 | 11(当前通用存储过程查询/执行) | `车间生产管理工艺_零件工序_下移工序_工艺库` | 业务存储过程调用 | 查询、更新、处理计划/派工 | 表:`MES_接口_生产计划` | +| 759 | 11(当前通用存储过程查询/执行) | `车间生产管理工艺_零件工序_查询工序信息_工艺库` | 查询/读取数据 | 查询、处理报工/工时 | 未在 SQL 中解析到明确依赖 | +| 774 | 11(当前通用存储过程查询/执行) | `车间生产管理工艺_零件工序_插入工序_工艺库` | 业务存储过程调用 | 查询、更新 | 未在 SQL 中解析到明确依赖 | +| 780 | 11(当前通用存储过程查询/执行) | `车间生产管理工艺_零件工序_查询工序信息_工艺库` | 查询/读取数据 | 查询、处理报工/工时 | 未在 SQL 中解析到明确依赖 | +| 795 | 11(当前通用存储过程查询/执行) | `车间生产管理工艺_零件工序_启用` | 业务存储过程调用 | 更新、处理计划/派工 | 表:`MES_接口_生产计划` | + +### 与 SAP 的交互 + +存储过程内读取 SAP B1 数据库对象: +- 工艺管理_获取物料原料信息: SAP.SBO_YL.dbo.UBT_OWOR_material + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `工艺管理_获取物料原料信息`:`SELECT * FROM SAP.SBO_YL.dbo.UBT_OWOR_material where Docentry = @订单编号` +- `工艺管理_生产计划物料查询`:`SELECT top 100 * FROM [SAP].[SBO_YL].[dbo].[UBT_OITM] where 物料编码 like '' +'%'+@过滤+'%' +''` + +### 数据库调用链 + +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `工艺管理_获取物料原料信息` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_OWOR_material` -> 业务存储过程调用 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `设备管理_设备信息_查询` -> 表:`YL_基础表_数据字典` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `工艺管理_生产计划物料查询` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `工艺管理_生产工艺_生产工艺拷贝` -> 表:`MES_接口_生产计划` -> 业务存储过程调用 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `工艺管理_生产工艺_标准工艺拷贝` -> 表:`车间生产管理工艺_零件工序_工艺库`、`物料数据` -> 业务存储过程调用 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `MES_ProcessManagement_ProcessBindGet` -> 表:`车间生产管理工艺_零件工序_工艺库` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `MES_ProcessManagement_ProcessBindGet` -> 表:`车间生产管理工艺_零件工序_工艺库` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `工艺管理_制定标准工艺_拷贝生产工艺` -> 表:`车间生产管理工艺_零件生产工艺_工艺库` -> 业务存储过程调用 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `MES_ProcessManagement_ProcessGet` -> 表:`基础表_工序` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `工艺管理_制定标准工艺_拷贝工艺保存` -> 表:`MES_接口_生产计划` -> 更新/保存业务数据 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `工艺管理_工艺维护_查看图纸` -> 表:`物料基础数据_工艺图纸` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `车间生产管理工艺_零件工序_修改数据_工艺库` -> 表:`MES_接口_生产计划` -> 更新/保存业务数据 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `车间生产管理工艺_零件工序_查询工序信息_工艺库` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `车间生产管理工艺_零件工序_编辑_工艺库` -> 未在 SQL 中解析到明确依赖 -> 更新/保存业务数据 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `车间生产管理工艺_零件工序_编辑插入行` -> 表:`MES_接口_生产计划` -> 更新/保存业务数据 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `车间生产管理工艺_零件工序_查询工序信息_工艺库` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `车间生产管理工艺_零件工序_删除工序_工艺库` -> 表:`MES_接口_生产计划` -> 删除业务数据 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `车间生产管理工艺_零件工序_查询工序信息_工艺库` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `车间生产管理工艺_零件工序_上移工序_工艺库` -> 表:`MES_接口_生产计划` -> 业务存储过程调用 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `车间生产管理工艺_零件工序_查询工序信息_工艺库` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `车间生产管理工艺_零件工序_下移工序_工艺库` -> 表:`MES_接口_生产计划` -> 业务存储过程调用 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `车间生产管理工艺_零件工序_查询工序信息_工艺库` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `车间生产管理工艺_零件工序_插入工序_工艺库` -> 未在 SQL 中解析到明确依赖 -> 业务存储过程调用 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `车间生产管理工艺_零件工序_查询工序信息_工艺库` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/ProcessManagement/ProcessesDevelop/index.vue` -> `车间生产管理工艺_零件工序_启用` -> 表:`MES_接口_生产计划` -> 业务存储过程调用 + +### 存储过程处理逻辑明细 + +- `工艺管理_获取物料原料信息` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、读取 SAP B1 数据库对象。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_OWOR_material`。 入参/分页参数:`@订单编号 nvarchar(50)`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`SELECT * FROM SAP.SBO_YL.dbo.UBT_OWOR_material where Docentry = @订单编号`。 实现特征:读取 SAP 数据库对象。 +- `设备管理_设备信息_查询` 属于 设备与实时数据,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`YL_基础表_数据字典`。 入参/分页参数:`@设备名称_check bit`、`@设备名称 nvarchar(50)`、`@设备类型_check bit`、`@设备类型 int`、`@工位_check bit`、`@工位 nvarchar(50)`。 主要返回字段线索:`*, [dbo].[YL_基础表_数据字典].词条名称 as 设备类型名称`。 关键过滤/匹配条件:`set @selectStrWhere = 'where 1 = 1 '`;`set @selectStrWhere = @selectStrWhere+' and 设备名称 like + ''%'' + @设备名称 + ''%'' '`;`set @selectStrWhere = @selectStrWhere+' and 基础数据_设备工位点检表.设备类型 = @设备类型'`。 关键写入/状态处理语句线索:`set @selectStr = `;`set @selectStrWhere = 'where 1 = 1 '`;`set @selectStrWhere = @selectStrWhere+' and 设备名称 like + ''%'' + @设备名称 + ''%'' '`;`set @selectStrWhere = @selectStrWhere+' and 基础数据_设备工位点检表.设备类型 = @设备类型'`;`set @selectStr = @selectStr+@selectStrWhere`。 +- `工艺管理_生产计划物料查询` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理计划/派工。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@过滤 NVARCHAR(200)`。 主要返回字段线索:`top 100 *`。 关键过滤/匹配条件:`SELECT top 100 * FROM [SAP].[SBO_YL].[dbo].[UBT_OITM] where 物料编码 like '' +'%'+@过滤+'%' +''`。 +- `工艺管理_生产工艺_生产工艺拷贝` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、分页、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`from [MES_接口_生产计划] where 生产工艺 = 1) t WHERE rn = 1;`。 排序/分组/分页线索:`ROW_NUMBER() OVER (PARTITION BY [物料编号] ORDER BY (SELECT NULL)) AS rn`。 实现特征:分页。 +- `工艺管理_生产工艺_标准工艺拷贝` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、分页。 读取/关联对象:表:`车间生产管理工艺_零件工序_工艺库`、`物料数据`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`from [dbo].[车间生产管理工艺_零件工序_工艺库] a left join [dbo].[物料数据] b on a.零件图号 = b.物料编码 where a.启用 = 1) t WHERE rn = 1;`。 排序/分组/分页线索:`ROW_NUMBER() OVER (PARTITION BY a.[零件图号] ORDER BY (SELECT NULL)) AS rn`。 实现特征:分页。 +- `MES_ProcessManagement_ProcessBindGet` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`车间生产管理工艺_零件工序_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50)`。 主要返回字段线索:`*, dbo.基础表_工序.工序名称 as 工艺名称`。 关键过滤/匹配条件:`on 车间生产管理工艺_零件工序_工艺库.工艺编号 = dbo.基础表_工序.工艺编号 where 零件图号 = @物料编号 ORDER BY [工艺顺序]`。 排序/分组/分页线索:`on 车间生产管理工艺_零件工序_工艺库.工艺编号 = dbo.基础表_工序.工艺编号 where 零件图号 = @物料编号 ORDER BY [工艺顺序]`。 +- `MES_ProcessManagement_ProcessBindGet` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`车间生产管理工艺_零件工序_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50)`。 主要返回字段线索:`*, dbo.基础表_工序.工序名称 as 工艺名称`。 关键过滤/匹配条件:`on 车间生产管理工艺_零件工序_工艺库.工艺编号 = dbo.基础表_工序.工艺编号 where 零件图号 = @物料编号 ORDER BY [工艺顺序]`。 排序/分组/分页线索:`on 车间生产管理工艺_零件工序_工艺库.工艺编号 = dbo.基础表_工序.工艺编号 where 零件图号 = @物料编号 ORDER BY [工艺顺序]`。 +- `工艺管理_制定标准工艺_拷贝生产工艺` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50)`。 主要返回字段线索:`@最大订单 = max(订单编号)`。 关键过滤/匹配条件:`select @最大订单 = max(订单编号) from 车间生产管理工艺_零件生产工艺_工艺库 where 零件图号 = @物料编号 and 启用 = 1`;`on [车间生产管理工艺_零件生产工艺_工艺库].工艺编号 = dbo.基础表_工序.工艺编号 where 零件图号 = @物料编号 and 启用 = 1 and 订单编号 = @最大订单 ORDER BY [工艺顺序]`。 排序/分组/分页线索:`on [车间生产管理工艺_零件生产工艺_工艺库].工艺编号 = dbo.基础表_工序.工艺编号 where 零件图号 = @物料编号 and 启用 = 1 and 订单编号 = @最大订单 ORDER BY [工艺顺序]`。 +- `MES_ProcessManagement_ProcessGet` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`基础表_工序`。 入参/分页参数:`@工艺编号 nvarchar(50)`。 主要返回字段线索:`工艺编号 as 工艺编号, 工序名称 as 工艺名称`。 关键过滤/匹配条件:`IF @工艺编号 IS NOT NULL AND @工艺编号 ! = ''`;`SELECT 工艺编号 as 工艺编号, 工序名称 as 工艺名称 FROM [基础表_工序] WHERE 工艺编号 IN (SELECT value FROM STRING_SPLIT(@工艺编号, ', '))`。 排序/分组/分页线索:`SELECT 工艺编号 as 工艺编号, 工序名称 as 工艺名称 FROM [基础表_工序] ORDER BY 工艺编号`。 +- `工艺管理_制定标准工艺_拷贝工艺保存` 属于 工艺与图纸,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`车间生产管理工艺_零件工序_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50)`、`@零件图号 nvarchar(50)`、`@工艺类型 int`。 主要返回字段线索:`@工艺数量 = count(*)`。 关键过滤/匹配条件:`select @工艺数量 = count(*) from 车间生产管理工艺_零件工序_工艺库 where 零件图号 = @零件图号`;`select @工艺数量 = count(*) from 车间生产管理工艺_零件生产工艺_工艺库 where 零件图号 = @零件图号`;`delete 车间生产管理工艺_零件工序_工艺库 where 零件图号 = @物料编号`;`where 零件图号 = @物料编号`;`update [dbo].[MES_接口_生产计划] set 标准工艺 = 1 where 物料编号 = @物料编号`;`WHERE 零件图号 = @零件图号 and 工艺顺序 = @i and 启用 = 1`;`where 零件图号 = @物料编号 and 工艺顺序 = @i`。 关键写入/状态处理语句线索:`set @l = 1`;`set @新增条数 = @工艺数量`;`insert into 车间生产管理工艺_零件工序_工艺库(零件图号, 工艺顺序, 启用)values(@物料编号, ISNULL(@最大顺序, 0)+1, 0)`;`update [dbo].[MES_接口_生产计划] set 标准工艺 = 1 where 物料编号 = @物料编号`;`set @l = @l+1`;`set @i = 1`;`update 车间生产管理工艺_零件工序_工艺库`;`set 工艺编号 = @工艺编号, `;`set @i = @i+1`。 +- `工艺管理_工艺维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_工艺图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `车间生产管理工艺_零件工序_修改数据_工艺库` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`车间生产管理工艺_零件工序_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50)`、`@工艺编号 int`。 主要返回字段线索:`top 1 @工序顺序 = 工艺顺序`。 关键过滤/匹配条件:`select top 1 @工序顺序 = 工艺顺序 from 车间生产管理工艺_零件工序_工艺库 where 零件图号 = @物料编号 order by 工艺顺序 desc`;`update 车间生产管理工艺_零件工序_工艺库 set 工艺编号 = @工艺编号 where id = @idd`;`update 车间生产管理工艺_零件工序_工艺库 set 启用 = 0 where 零件图号 = @物料编号`。 关键写入/状态处理语句线索:`insert into dbo.车间生产管理工艺_零件工序_工艺库(零件图号, 工艺顺序, 工艺编号)values(@物料编号, @工序顺序+1, @工艺编号)`;`update 车间生产管理工艺_零件工序_工艺库 set 工艺编号 = @工艺编号 where id = @idd`;`update 车间生产管理工艺_零件工序_工艺库 set 启用 = 0 where 零件图号 = @物料编号`。 排序/分组/分页线索:`select top 1 @工序顺序 = 工艺顺序 from 车间生产管理工艺_零件工序_工艺库 where 零件图号 = @物料编号 order by 工艺顺序 desc`。 +- `车间生产管理工艺_零件工序_查询工序信息_工艺库` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@物料编号 nvarchar(50)`。 主要返回字段线索:`dbo.车间生产管理工艺_零件工序_工艺库.id, `、`dbo.车间生产管理工艺_零件工序_工艺库.工艺要求, `、`dbo.车间生产管理工艺_零件工序_工艺库.工艺编号, `、`dbo.基础表_工序.工序名称 as 工艺名称, `、`dbo.车间生产管理工艺_零件工序_工艺库.工艺顺序, `、`零件图号, `、`dbo.车间生产管理工艺_零件工序_工艺库.准备工时, `、`dbo.车间生产管理工艺_零件工序_工艺库.标准工时, `、`dbo.车间生产管理工艺_零件工序_工艺库.工时合计, `、`dbo.车间生产管理工艺_零件工序_工艺库.工卡量具, `。 关键过滤/匹配条件:`where 零件图号 = @物料编号`。 排序/分组/分页线索:`order by dbo.车间生产管理工艺_零件工序_工艺库.工艺顺序`。 +- `车间生产管理工艺_零件工序_编辑_工艺库` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理报工/工时。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`车间生产管理工艺_零件工序_工艺库`。 入参/分页参数:`@idd int,`、`@工艺要求 nvarchar(500)`、`@准备工时 int`、`@标准工时 int`、`@工时合计 int`、`@工卡量具 nvarchar(500)`、`@指定机床 nvarchar(500)`、`@车间 nvarchar(500)`、`@备注 nvarchar(500)`。 关键过滤/匹配条件:`update 车间生产管理工艺_零件工序_工艺库 set 工艺要求 = @工艺要求, 准备工时 = @准备工时, 标准工时 = @标准工时, 工时合计 = @工时合计, 工卡量具 = @工卡量具, 指定机床 = @指定机床, 车间 = @车间, 备注 = @备注 where id = @idd`。 关键写入/状态处理语句线索:`update 车间生产管理工艺_零件工序_工艺库 set 工艺要求 = @工艺要求, 准备工时 = @准备工时, 标准工时 = @标准工时, 工时合计 = @工时合计, 工卡量具 = @工卡量具, 指定机床 = @指定机床, 车间 = @车间, 备注 = @备注 where id = @idd`。 +- `车间生产管理工艺_零件工序_编辑插入行` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`车间生产管理工艺_零件工序_工艺库`。 入参/分页参数:`@idd int,`、`@工艺编号 int,`、`@物料编号 nvarchar(50)`。 关键过滤/匹配条件:`update 车间生产管理工艺_零件工序_工艺库 set 工艺编号 = @工艺编号 where id = @idd`;`update 车间生产管理工艺_零件工序_工艺库 set 启用 = 0 where 零件图号 = @物料编号`;`update [dbo].[MES_接口_生产计划] set 标准工艺 = 0 where 物料编号 = @物料编号`。 关键写入/状态处理语句线索:`update 车间生产管理工艺_零件工序_工艺库 set 工艺编号 = @工艺编号 where id = @idd`;`update 车间生产管理工艺_零件工序_工艺库 set 启用 = 0 where 零件图号 = @物料编号`;`update [dbo].[MES_接口_生产计划] set 标准工艺 = 0 where 物料编号 = @物料编号`。 +- `车间生产管理工艺_零件工序_查询工序信息_工艺库` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@物料编号 nvarchar(50)`。 主要返回字段线索:`dbo.车间生产管理工艺_零件工序_工艺库.id, `、`dbo.车间生产管理工艺_零件工序_工艺库.工艺要求, `、`dbo.车间生产管理工艺_零件工序_工艺库.工艺编号, `、`dbo.基础表_工序.工序名称 as 工艺名称, `、`dbo.车间生产管理工艺_零件工序_工艺库.工艺顺序, `、`零件图号, `、`dbo.车间生产管理工艺_零件工序_工艺库.准备工时, `、`dbo.车间生产管理工艺_零件工序_工艺库.标准工时, `、`dbo.车间生产管理工艺_零件工序_工艺库.工时合计, `、`dbo.车间生产管理工艺_零件工序_工艺库.工卡量具, `。 关键过滤/匹配条件:`where 零件图号 = @物料编号`。 排序/分组/分页线索:`order by dbo.车间生产管理工艺_零件工序_工艺库.工艺顺序`。 +- `车间生产管理工艺_零件工序_删除工序_工艺库` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 删除业务数据。 数据库处理摘要:查询、更新、删除、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`车间生产管理工艺_零件工序_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50)`、`@idd int`。 主要返回字段线索:`@工序顺序 = 工艺顺序`。 关键过滤/匹配条件:`select @工序顺序 = 工艺顺序 from 车间生产管理工艺_零件工序_工艺库 where id = @idd`;`where 工艺顺序>@工序顺序 and 零件图号 = @物料编号`;`delete from 车间生产管理工艺_零件工序_工艺库 where id = @idd`;`update 车间生产管理工艺_零件工序_工艺库 set 启用 = 0 where 零件图号 = @物料编号`;`update [dbo].[MES_接口_生产计划] set 标准工艺 = 0 where 物料编号 = @物料编号`。 关键写入/状态处理语句线索:`update 车间生产管理工艺_零件工序_工艺库 set 工艺顺序 = 工艺顺序 - 1`;`delete from 车间生产管理工艺_零件工序_工艺库 where id = @idd`;`update 车间生产管理工艺_零件工序_工艺库 set 启用 = 0 where 零件图号 = @物料编号`;`update [dbo].[MES_接口_生产计划] set 标准工艺 = 0 where 物料编号 = @物料编号`。 +- `车间生产管理工艺_零件工序_查询工序信息_工艺库` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@物料编号 nvarchar(50)`。 主要返回字段线索:`dbo.车间生产管理工艺_零件工序_工艺库.id, `、`dbo.车间生产管理工艺_零件工序_工艺库.工艺要求, `、`dbo.车间生产管理工艺_零件工序_工艺库.工艺编号, `、`dbo.基础表_工序.工序名称 as 工艺名称, `、`dbo.车间生产管理工艺_零件工序_工艺库.工艺顺序, `、`零件图号, `、`dbo.车间生产管理工艺_零件工序_工艺库.准备工时, `、`dbo.车间生产管理工艺_零件工序_工艺库.标准工时, `、`dbo.车间生产管理工艺_零件工序_工艺库.工时合计, `、`dbo.车间生产管理工艺_零件工序_工艺库.工卡量具, `。 关键过滤/匹配条件:`where 零件图号 = @物料编号`。 排序/分组/分页线索:`order by dbo.车间生产管理工艺_零件工序_工艺库.工艺顺序`。 +- `车间生产管理工艺_零件工序_上移工序_工艺库` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`车间生产管理工艺_零件工序_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50)`、`@idd int`。 主要返回字段线索:`@工序顺序 = 工艺顺序`。 关键过滤/匹配条件:`where id = @idd`;`where 零件图号 = @物料编号 and 工艺顺序 = @工序顺序-1`;`where id = @前idd`;`update 车间生产管理工艺_零件工序_工艺库 set 启用 = 0 where 零件图号 = @物料编号`;`update [dbo].[MES_接口_生产计划] set 标准工艺 = 0 where 物料编号 = @物料编号`。 关键写入/状态处理语句线索:`update dbo.车间生产管理工艺_零件工序_工艺库`;`set 工艺顺序 = @工序顺序-1`;`set 工艺顺序 = @工序顺序`;`update 车间生产管理工艺_零件工序_工艺库 set 启用 = 0 where 零件图号 = @物料编号`;`update [dbo].[MES_接口_生产计划] set 标准工艺 = 0 where 物料编号 = @物料编号`。 +- `车间生产管理工艺_零件工序_查询工序信息_工艺库` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@物料编号 nvarchar(50)`。 主要返回字段线索:`dbo.车间生产管理工艺_零件工序_工艺库.id, `、`dbo.车间生产管理工艺_零件工序_工艺库.工艺要求, `、`dbo.车间生产管理工艺_零件工序_工艺库.工艺编号, `、`dbo.基础表_工序.工序名称 as 工艺名称, `、`dbo.车间生产管理工艺_零件工序_工艺库.工艺顺序, `、`零件图号, `、`dbo.车间生产管理工艺_零件工序_工艺库.准备工时, `、`dbo.车间生产管理工艺_零件工序_工艺库.标准工时, `、`dbo.车间生产管理工艺_零件工序_工艺库.工时合计, `、`dbo.车间生产管理工艺_零件工序_工艺库.工卡量具, `。 关键过滤/匹配条件:`where 零件图号 = @物料编号`。 排序/分组/分页线索:`order by dbo.车间生产管理工艺_零件工序_工艺库.工艺顺序`。 +- `车间生产管理工艺_零件工序_下移工序_工艺库` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`车间生产管理工艺_零件工序_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50)`、`@idd int`。 主要返回字段线索:`@工序顺序 = 工艺顺序`。 关键过滤/匹配条件:`where id = @idd`;`where 零件图号 = @物料编号 and 工艺顺序 = @工序顺序+1`;`where id = @后idd`;`update 车间生产管理工艺_零件工序_工艺库 set 启用 = 0 where 零件图号 = @物料编号`;`update [dbo].[MES_接口_生产计划] set 标准工艺 = 0 where 物料编号 = @物料编号`。 关键写入/状态处理语句线索:`update dbo.车间生产管理工艺_零件工序_工艺库`;`set 工艺顺序 = @工序顺序+1`;`set 工艺顺序 = @工序顺序`;`update 车间生产管理工艺_零件工序_工艺库 set 启用 = 0 where 零件图号 = @物料编号`;`update [dbo].[MES_接口_生产计划] set 标准工艺 = 0 where 物料编号 = @物料编号`。 +- `车间生产管理工艺_零件工序_查询工序信息_工艺库` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@物料编号 nvarchar(50)`。 主要返回字段线索:`dbo.车间生产管理工艺_零件工序_工艺库.id, `、`dbo.车间生产管理工艺_零件工序_工艺库.工艺要求, `、`dbo.车间生产管理工艺_零件工序_工艺库.工艺编号, `、`dbo.基础表_工序.工序名称 as 工艺名称, `、`dbo.车间生产管理工艺_零件工序_工艺库.工艺顺序, `、`零件图号, `、`dbo.车间生产管理工艺_零件工序_工艺库.准备工时, `、`dbo.车间生产管理工艺_零件工序_工艺库.标准工时, `、`dbo.车间生产管理工艺_零件工序_工艺库.工时合计, `、`dbo.车间生产管理工艺_零件工序_工艺库.工卡量具, `。 关键过滤/匹配条件:`where 零件图号 = @物料编号`。 排序/分组/分页线索:`order by dbo.车间生产管理工艺_零件工序_工艺库.工艺顺序`。 +- `车间生产管理工艺_零件工序_插入工序_工艺库` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、更新。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@零件图号 nvarchar(50)`、`@idd int`。 主要返回字段线索:`@工序顺序 = 工艺顺序`。 关键过滤/匹配条件:`select @工序顺序 = 工艺顺序 from dbo.车间生产管理工艺_零件工序_工艺库 where id = @idd`;`where 工艺顺序> = @工序顺序 and 零件图号 = @零件图号`。 关键写入/状态处理语句线索:`update dbo.车间生产管理工艺_零件工序_工艺库`;`set 工艺顺序 = 工艺顺序+1`。 +- `车间生产管理工艺_零件工序_查询工序信息_工艺库` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@物料编号 nvarchar(50)`。 主要返回字段线索:`dbo.车间生产管理工艺_零件工序_工艺库.id, `、`dbo.车间生产管理工艺_零件工序_工艺库.工艺要求, `、`dbo.车间生产管理工艺_零件工序_工艺库.工艺编号, `、`dbo.基础表_工序.工序名称 as 工艺名称, `、`dbo.车间生产管理工艺_零件工序_工艺库.工艺顺序, `、`零件图号, `、`dbo.车间生产管理工艺_零件工序_工艺库.准备工时, `、`dbo.车间生产管理工艺_零件工序_工艺库.标准工时, `、`dbo.车间生产管理工艺_零件工序_工艺库.工时合计, `、`dbo.车间生产管理工艺_零件工序_工艺库.工卡量具, `。 关键过滤/匹配条件:`where 零件图号 = @物料编号`。 排序/分组/分页线索:`order by dbo.车间生产管理工艺_零件工序_工艺库.工艺顺序`。 +- `车间生产管理工艺_零件工序_启用` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`车间生产管理工艺_零件工序_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50)`。 关键过滤/匹配条件:`update 车间生产管理工艺_零件工序_工艺库 set 启用 = 1 where 零件图号 = @物料编号`;`update [dbo].[MES_接口_生产计划] set 标准工艺 = 1 where 物料编号 = @物料编号`。 关键写入/状态处理语句线索:`update 车间生产管理工艺_零件工序_工艺库 set 启用 = 1 where 零件图号 = @物料编号`;`update [dbo].[MES_接口_生产计划] set 标准工艺 = 1 where 物料编号 = @物料编号`。 + +## 23. src/views/ProcessManagement/ProcurementDrawlook/index.vue + +**页面位置**:`src/views/ProcessManagement/ProcurementDrawlook/index.vue` +**所属模块**:ProcessManagement / ProcurementDrawlook +**源码行数**:463 + +### 页面功能 + +该页面提供采购场景的图纸查看。用户按采购物料查询图纸,查看或删除图纸记录,支持采购、外协、来料检验时查阅技术文件。 + +页面可见的操作/字段包括 “查询”、“查看”、“删除”、“取消”、“确定”、“关闭”、“item.物料编码”、“序号”、“物料编号”、“物料名称”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `工艺管理_图纸维护_查询删除记录`、`工艺管理_图纸维护_零件图查询采购`、`工艺管理_图纸维护_物料查询_采购`、`工艺管理_图纸维护_验证名称`、`工艺管理_图纸维护_查看图纸`、`工艺管理_图纸维护_删除图纸` 等过程 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `工艺管理_图纸维护_查询删除记录` -> `工艺管理_图纸维护_零件图查询采购` -> `工艺管理_图纸维护_物料查询_采购` -> `工艺管理_图纸维护_验证名称` -> `工艺管理_图纸维护_查看图纸` -> `工艺管理_图纸维护_删除图纸` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`查看`、`删除`、`取消`、`确定`、`关闭`、`item.物料编码`、`序号`、`物料编号`、`物料名称`、`文件名称`、`导入人`、`导入时间`、`操作`、`操作人`、`删除时间`、`备注`、`请选择物料` + +主要方法线索:`showDeleteRecords` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.itemnum` | `@物料编码` | - | +| 参数 | `query` | `@过滤` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `物料编号` | - | `物料编号, ` | +| 显示列 | `物料名称` | - | `物料描述` | +| 显示列 | `文件名称` | - | `文件名称, ` | +| 显示列 | `导入人` | - | `worker` | +| 显示列 | `导入时间` | - | `WHEN uploadTime IS NOT NULL` | +| 显示列 | `操作` | - | `操作人, ` | +| 显示列 | `操作人` | - | `操作人, ` | +| 显示列 | `删除时间` | - | `CONVERT(NVARCHAR(19), 删除时间, 120) AS 删除时间, ` | +| 显示列 | `备注` | - | `ISNULL(备注, '''') AS 备注` | +| 输入字段 | `stationNumberValue` | - | - | +| 输入字段 | `uploadValue` | - | - | +| 输入字段 | `itemnum` | `@物料编码` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- PDF/图纸预览或导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 174 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_查询删除记录` | 查询/读取数据 | 查询 | 未在 SQL 中解析到明确依赖 | +| 205 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_零件图查询采购` | 查询/读取数据 | 查询 | 视图:`View_图纸视图` | +| 216 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_物料查询_采购` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM` | +| 248 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_验证名称` | 业务存储过程调用 | 查询 | 表:`物料数据` | +| 294 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_零件图纸` | +| 317 | 12(当前通用存储过程写入/业务动作) | `工艺管理_图纸维护_删除图纸` | 删除业务数据 | 查询、新增 | 表:`物料基础数据_零件图纸` | +| 386 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_零件图纸` | +| 414 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_零件图查询采购` | 查询/读取数据 | 查询 | 视图:`View_图纸视图` | +| 425 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_零件图查询采购` | 查询/读取数据 | 查询 | 视图:`View_图纸视图` | + +### 与 SAP 的交互 + +存储过程内读取 SAP B1 数据库对象: +- 工艺管理_图纸维护_物料查询_采购: SAP.SBO_YL.dbo.UBT_OITM + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `工艺管理_图纸维护_物料查询_采购`:`SELECT top 100 * FROM SAP.SBO_YL.dbo.UBT_OITM where 物料编码 like '' +'%'+@过滤+'%' +'' and U_BuyToPrint = 'Y'` + +### 数据库调用链 + +- `src/views/ProcessManagement/ProcurementDrawlook/index.vue` -> `工艺管理_图纸维护_查询删除记录` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/ProcessManagement/ProcurementDrawlook/index.vue` -> `工艺管理_图纸维护_零件图查询采购` -> 视图:`View_图纸视图` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcurementDrawlook/index.vue` -> `工艺管理_图纸维护_物料查询_采购` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcurementDrawlook/index.vue` -> `工艺管理_图纸维护_验证名称` -> 表:`物料数据` -> 业务存储过程调用 +- `src/views/ProcessManagement/ProcurementDrawlook/index.vue` -> `工艺管理_图纸维护_查看图纸` -> 表:`物料基础数据_零件图纸` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcurementDrawlook/index.vue` -> `工艺管理_图纸维护_删除图纸` -> 表:`物料基础数据_零件图纸` -> 删除业务数据 +- `src/views/ProcessManagement/ProcurementDrawlook/index.vue` -> `工艺管理_图纸维护_查看图纸` -> 表:`物料基础数据_零件图纸` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcurementDrawlook/index.vue` -> `工艺管理_图纸维护_零件图查询采购` -> 视图:`View_图纸视图` -> 查询/读取数据 +- `src/views/ProcessManagement/ProcurementDrawlook/index.vue` -> `工艺管理_图纸维护_零件图查询采购` -> 视图:`View_图纸视图` -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `工艺管理_图纸维护_查询删除记录` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@物料编码 nvarchar(200)`。 主要返回字段线索:`top 50`、`物料编号, `、`文件名称, `、`操作人, `、`CONVERT(NVARCHAR(19), 删除时间, 120) AS 删除时间, `、`ISNULL(备注, '''') AS 备注`。 关键过滤/匹配条件:`DECLARE @selectStrWhere NVARCHAR(4000) = ' WHERE 1 = 1 '`;`SET @selectStrWhere = @selectStrWhere + ' AND [物料编号] LIKE ''%' + @物料编码 + '%'''`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @selectStr = N' SELECT top 50`;`SET @selectStrWhere = @selectStrWhere + ' AND [物料编号] LIKE ''%' + @物料编码 + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' ORDER BY 删除时间 DESC'`;`SET @selectStr = @selectStr + @selectStrWhere`。 排序/分组/分页线索:`SET @selectStrWhere = @selectStrWhere + ' ORDER BY 删除时间 DESC'`。 +- `工艺管理_图纸维护_零件图查询采购` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_图纸视图`。 入参/分页参数:`@零件图号_check int`、`@零件图号 nvarchar(50)`。 主要返回字段线索:`top 50 *`。 关键过滤/匹配条件:`WHERE num LIKE '%' + @零件图号 + '%' and U_BuyToPrint = 'Y'`;`[dbo].[View_图纸视图] WHERE U_BuyToPrint = 'Y'`。 关键写入/状态处理语句线索:`set nocount on;`。 +- `工艺管理_图纸维护_物料查询_采购` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM`。 入参/分页参数:`@过滤 NVARCHAR(200)`。 主要返回字段线索:`top 100 *`。 关键过滤/匹配条件:`SELECT top 100 * FROM SAP.SBO_YL.dbo.UBT_OITM where 物料编码 like '' +'%'+@过滤+'%' +'' and U_BuyToPrint = 'Y'`。 实现特征:读取 SAP 数据库对象。 +- `工艺管理_图纸维护_验证名称` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询。 读取/关联对象:表:`物料数据`。 入参/分页参数:`@零件图号 nvarchar(50)`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`SELECT * FROM [dbo].[物料数据] where 物料编码 = @零件图号`。 关键写入/状态处理语句线索:`set nocount on;`。 +- `工艺管理_图纸维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_零件图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`、`worker`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `工艺管理_图纸维护_删除图纸` 属于 工艺与图纸,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 删除业务数据。 数据库处理摘要:查询、新增。 读取/关联对象:表:`物料基础数据_零件图纸`。 写入或更新对象:`物料基础数据_零件图纸`、`物料基础数据_零件图纸删除记录`。 入参/分页参数:`@物料编号 NVARCHAR(100),`、`@文件名称 NVARCHAR(255)`、`@操作人 NVARCHAR(50)`。 关键过滤/匹配条件:`delete [dbo].[物料基础数据_零件图纸] where num = @物料编号`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO 物料基础数据_零件图纸删除记录 (`。 实现特征:事务控制、异常捕获。 +- `工艺管理_图纸维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_零件图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`、`worker`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `工艺管理_图纸维护_零件图查询采购` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_图纸视图`。 入参/分页参数:`@零件图号_check int`、`@零件图号 nvarchar(50)`。 主要返回字段线索:`top 50 *`。 关键过滤/匹配条件:`WHERE num LIKE '%' + @零件图号 + '%' and U_BuyToPrint = 'Y'`;`[dbo].[View_图纸视图] WHERE U_BuyToPrint = 'Y'`。 关键写入/状态处理语句线索:`set nocount on;`。 +- `工艺管理_图纸维护_零件图查询采购` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_图纸视图`。 入参/分页参数:`@零件图号_check int`、`@零件图号 nvarchar(50)`。 主要返回字段线索:`top 50 *`。 关键过滤/匹配条件:`WHERE num LIKE '%' + @零件图号 + '%' and U_BuyToPrint = 'Y'`;`[dbo].[View_图纸视图] WHERE U_BuyToPrint = 'Y'`。 关键写入/状态处理语句线索:`set nocount on;`。 + +## 24. src/views/ProcessManagement/ProductionOrder/index.vue + +**页面位置**:`src/views/ProcessManagement/ProductionOrder/index.vue` +**所属模块**:ProcessManagement / ProductionOrder +**源码行数**:594 + +### 页面功能 + +该页面处理生产订单资料。用户查询 ERP/MES 生产订单,并通过过程把 SAP 生产订单同步成 MES 生产计划和工序任务。 + +页面可见的操作/字段包括 “查询”、“批量生成任务”、“查看生产工艺”、“查看标准工艺”、“全部”、“未下发”、“已下发”、“机加件”、“装配件”、“序号”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `设备管理_设备信息_查询`、`工艺管理_生产工艺_查询生产工艺`、`工艺管理_生产工艺_查询标准工艺`、`工艺管理_工艺任务_订单查询`、`计划排产_生产订单_订单任务` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `设备管理_设备信息_查询` -> `工艺管理_生产工艺_查询生产工艺` -> `工艺管理_生产工艺_查询标准工艺` -> `工艺管理_工艺任务_订单查询` -> `计划排产_生产订单_订单任务` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`批量生成任务`、`查看生产工艺`、`查看标准工艺`、`全部`、`未下发`、`已下发`、`机加件`、`装配件`、`序号`、`销售订单`、`生产订单`、`物料编码`、`物料名称`、`属性`、`计划数`、`下达日期`、`计划开始` + +主要方法线索:`getbasedata`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.orderNo ` | `@订单号` | - | +| 参数 | `this.contractNo` | `@合同号` | - | +| 参数 | `this.productCode` | `@产品编码` | - | +| 参数 | `this.productName` | `@产品名称` | - | +| 参数 | `this.completionTime[0` | `@要求完工日期1` | - | +| 参数 | `this.completionTime[1` | `@要求完工日期2` | - | +| 参数 | `this.orderstatus` | `@订单状态` | - | +| 参数 | `this.taskstatus` | `@任务状态` | - | +| 参数 | `ordernums` | `@订单编号` | `[订单编号]` | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `销售订单` | - | `合同号` | +| 显示列 | `生产订单` | - | `[订单编号]` | +| 显示列 | `物料编码` | - | `物料编号` | +| 显示列 | `物料名称` | - | `物料描述` | +| 显示列 | `属性` | - | `TOP 1 @自制件属性 = ISNULL(自制件属性, '0')` | +| 显示列 | `计划数` | - | `[计划数量]` | +| 显示列 | `下达日期` | - | `下达日期` | +| 显示列 | `计划开始` | - | `计划开始` | +| 显示列 | `计划完成` | - | `计划完成` | +| 显示列 | `加急状态` | - | `加急状态` | +| 显示列 | `标准工艺` | - | `标准工艺` | +| 显示列 | `生产工艺` | - | `生产工艺` | +| 显示列 | `操作` | - | `操作` | +| 显示列 | `序号` | - | `[工艺顺序]` | +| 显示列 | `工序名称` | - | `*, dbo.基础表_工序.工序名称 as 工艺名称` | +| 显示列 | `工序说明` | - | `[工艺要求]` | +| 显示列 | `准备工时` | - | `isnull(准备工时, 0) as 准备工时` | +| 显示列 | `标准工时` | - | `isnull(标准工时, 0) as 标准工时` | +| 显示列 | `工时合计` | - | `工时合计` | +| 显示列 | `工装量具` | - | `工装量具` | +| 显示列 | `指定机床` | - | `指定机床` | +| 显示列 | `车间` | - | `车间` | +| 显示列 | `备注` | - | `备注` | +| 输入字段 | `orderNo` | `@订单号` | - | +| 输入字段 | `contractNo` | `@合同号` | - | +| 输入字段 | `productCode` | `@产品编码` | - | +| 输入字段 | `productName` | `@产品名称` | - | +| 输入字段 | `taskstatus` | `@任务状态` | - | +| 输入字段 | `orderstatus` | `@订单状态` | - | +| 输入字段 | `completionTime` | `@要求完工日期1` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 354 | 11(当前通用存储过程查询/执行) | `设备管理_设备信息_查询` | 查询/读取数据 | 查询 | 表:`YL_基础表_数据字典` | +| 401 | 11(当前通用存储过程查询/执行) | `工艺管理_生产工艺_查询生产工艺` | 查询/读取数据 | 查询、处理报工/工时、处理计划/派工 | 表:`车间生产管理工艺_零件生产工艺_工艺库` | +| 437 | 11(当前通用存储过程查询/执行) | `工艺管理_生产工艺_查询标准工艺` | 查询/读取数据 | 查询 | 表:`车间生产管理工艺_零件工序_工艺库` | +| 460 | 11(当前通用存储过程查询/执行) | `工艺管理_工艺任务_订单查询` | 查询/读取数据 | 查询、处理计划/派工 | 表:`MES_接口_生产计划` | +| 498 | 12(当前通用存储过程写入/业务动作) | `计划排产_生产订单_订单任务` | 计划排产或派工 | 查询、新增、更新、分页、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `工艺管理_工艺任务_订单查询`:`CREATE PROCEDURE [dbo].[工艺管理_工艺任务_订单查询]`;`@订单状态 int = 1, `;`@任务状态 int = 0`;`DECLARE @selectStrWhere NVARCHAR(MAX) = ' WHERE p.[生产工艺] = 1 and (单据状态 ''已取消'' OR 单据状态 IS NULL) ';`;`SET @selectStrWhere = @selectStrWhere + ' AND p.[计划完成] > = ''' + @要求完工日期1 + '''';`;`SET @selectStrWhere = @selectStrWhere + ' AND p.[计划完成] < = ''' + @要求完工日期2 + '''';`;`IF @任务状态 = 2`;`SET @selectStrWhere = @selectStrWhere + ' AND ISNULL(p.任务状态, 0) = '+ CAST(@任务状态 AS VARCHAR(10));` +- `计划排产_生产订单_订单任务`:`CREATE PROCEDURE [dbo].[计划排产_生产订单_订单任务]`;`INSERT INTO [dbo].[MES_接口_生产计划_生产任务] (`;`SET 任务状态 = 2`;`已发货数量, 订单拆分内码, 阶段标识, 可视订单, 计划开始时间, 计划完成时间, 指派对象`;`ms.计划完成, ` + +### 数据库调用链 + +- `src/views/ProcessManagement/ProductionOrder/index.vue` -> `设备管理_设备信息_查询` -> 表:`YL_基础表_数据字典` -> 查询/读取数据 +- `src/views/ProcessManagement/ProductionOrder/index.vue` -> `工艺管理_生产工艺_查询生产工艺` -> 表:`车间生产管理工艺_零件生产工艺_工艺库` -> 查询/读取数据 +- `src/views/ProcessManagement/ProductionOrder/index.vue` -> `工艺管理_生产工艺_查询标准工艺` -> 表:`车间生产管理工艺_零件工序_工艺库` -> 查询/读取数据 +- `src/views/ProcessManagement/ProductionOrder/index.vue` -> `工艺管理_工艺任务_订单查询` -> 表:`MES_接口_生产计划` -> 查询/读取数据 +- `src/views/ProcessManagement/ProductionOrder/index.vue` -> `计划排产_生产订单_订单任务` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 + +### 存储过程处理逻辑明细 + +- `设备管理_设备信息_查询` 属于 设备与实时数据,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`YL_基础表_数据字典`。 入参/分页参数:`@设备名称_check bit`、`@设备名称 nvarchar(50)`、`@设备类型_check bit`、`@设备类型 int`、`@工位_check bit`、`@工位 nvarchar(50)`。 主要返回字段线索:`*, [dbo].[YL_基础表_数据字典].词条名称 as 设备类型名称`。 关键过滤/匹配条件:`set @selectStrWhere = 'where 1 = 1 '`;`set @selectStrWhere = @selectStrWhere+' and 设备名称 like + ''%'' + @设备名称 + ''%'' '`;`set @selectStrWhere = @selectStrWhere+' and 基础数据_设备工位点检表.设备类型 = @设备类型'`。 关键写入/状态处理语句线索:`set @selectStr = `;`set @selectStrWhere = 'where 1 = 1 '`;`set @selectStrWhere = @selectStrWhere+' and 设备名称 like + ''%'' + @设备名称 + ''%'' '`;`set @selectStrWhere = @selectStrWhere+' and 基础数据_设备工位点检表.设备类型 = @设备类型'`;`set @selectStr = @selectStr+@selectStrWhere`。 +- `工艺管理_生产工艺_查询生产工艺` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50),`、`@订单编号 int`。 主要返回字段线索:`[id]`、`[零件图号]`、`a.[工艺编号]`、`[工艺顺序]`、`[工艺要求]`、`[是否最后一序]`、`[订单编号]`、`[计划数量]`、`isnull(准备工时, 0) as 准备工时`、`isnull(标准工时, 0) as 标准工时`。 关键过滤/匹配条件:`on a.工艺编号 = b.工艺编号 where 零件图号 = @物料编号 and 订单编号 = @订单编号 ORDER BY [工艺顺序]`。 排序/分组/分页线索:`on a.工艺编号 = b.工艺编号 where 零件图号 = @物料编号 and 订单编号 = @订单编号 ORDER BY [工艺顺序]`。 +- `工艺管理_生产工艺_查询标准工艺` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`车间生产管理工艺_零件工序_工艺库`。 入参/分页参数:`@物料编号 nvarchar(50)`。 主要返回字段线索:`*, dbo.基础表_工序.工序名称 as 工艺名称`。 关键过滤/匹配条件:`on [车间生产管理工艺_零件工序_工艺库].工艺编号 = dbo.基础表_工序.工艺编号 where 零件图号 = @物料编号 and 启用 = 1 ORDER BY [工艺顺序]`。 排序/分组/分页线索:`on [车间生产管理工艺_零件工序_工艺库].工艺编号 = dbo.基础表_工序.工艺编号 where 零件图号 = @物料编号 and 启用 = 1 ORDER BY [工艺顺序]`。 +- `工艺管理_工艺任务_订单查询` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 入参/分页参数:`@订单号 int`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@要求完工日期1 nvarchar(50)`、`@要求完工日期2 nvarchar(50)`、`@订单状态 int`、`@任务状态 int`。 主要返回字段线索:`p.*`。 关键过滤/匹配条件:`DECLARE @selectStrWhere NVARCHAR(MAX) = ' WHERE p.[生产工艺] = 1 and (单据状态 ''已取消'' OR 单据状态 IS NULL) ';`;`SET @selectStrWhere = @selectStrWhere + ' AND p.[订单编号] = ' + CAST(@订单号 AS VARCHAR(10));`;`SET @selectStrWhere = @selectStrWhere + ' AND p.[合同号] LIKE ''%' + @合同号 + '%''';`;`SET @selectStrWhere = @selectStrWhere + ' AND p.[物料编号] LIKE ''%' + @产品编码 + '%''';`;`SET @selectStrWhere = @selectStrWhere + ' AND p.[物料描述] LIKE ''%' + @产品名称 + '%''';`;`SET @selectStrWhere = @selectStrWhere + ' AND p.[计划完成] > = ''' + @要求完工日期1 + '''';`;`SET @selectStrWhere = @selectStrWhere + ' AND p.[计划完成] < = ''' + @要求完工日期2 + '''';`;`SET @selectStrWhere = @selectStrWhere + ' AND ISNULL(p.任务状态, 0) = '+ CAST(@任务状态 AS VARCHAR(10));`;`SET @selectStrWhere = @selectStrWhere + ' AND ISNULL(p.任务状态, 0) = 0'`;`SET @selectStrWhere = @selectStrWhere + ' AND ISNULL(p.自制件属性, '''') LIKE ''%装配%'''`。 关键写入/状态处理语句线索:`SET @selectStr = N'`;`SET @selectStrWhere = @selectStrWhere + ' AND p.[订单编号] = ' + CAST(@订单号 AS VARCHAR(10));`;`SET @selectStrWhere = @selectStrWhere + ' AND p.[合同号] LIKE ''%' + @合同号 + '%''';`;`SET @selectStrWhere = @selectStrWhere + ' AND p.[物料编号] LIKE ''%' + @产品编码 + '%''';`;`SET @selectStrWhere = @selectStrWhere + ' AND p.[物料描述] LIKE ''%' + @产品名称 + '%''';`;`SET @selectStrWhere = @selectStrWhere + ' AND p.[计划完成] > = ''' + @要求完工日期1 + '''';`;`SET @selectStrWhere = @selectStrWhere + ' AND p.[计划完成] < = ''' + @要求完工日期2 + '''';`;`SET @selectStrWhere = @selectStrWhere + ' AND ISNULL(p.任务状态, 0) = '+ CAST(@任务状态 AS VARCHAR(10));`;`SET @selectStrWhere = @selectStrWhere + ' AND ISNULL(p.任务状态, 0) = 0'`;`SET @selectStrWhere = @selectStrWhere + ' AND ISNULL(p.自制件属性, '''') LIKE ''%装配%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND ISNULL(p.自制件属性, 0) = ''机加件'''`;`SET @selectStr = @selectStr + @selectStrWhere;`。 +- `计划排产_生产订单_订单任务` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:查询、新增、更新、分页、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单编号 nvarchar(max)`。 主要返回字段线索:`TOP 1 @自制件属性 = ISNULL(自制件属性, '0')`。 关键过滤/匹配条件:`WHERE 订单编号 IN (SELECT TRIM(value) FROM STRING_SPLIT(@订单编号, ', '));`;`WHERE 订单编号 IN (SELECT TRIM(value) FROM STRING_SPLIT(@订单编号, '', ''))`;`WHERE src.rn = 1;';`;`WHERE 订单编号 IN (SELECT TRIM(value) FROM STRING_SPLIT(@订单编号, '', ''));';`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @selectStr2 = N'`;`INSERT INTO [dbo].[MES_接口_生产计划_生产任务] (`;`SET @selectStr1 = N'`;`UPDATE [dbo].[MES_接口_生产计划]`;`SET 任务状态 = 2`。 排序/分组/分页线索:`ROW_NUMBER() OVER (`;`ORDER BY (SELECT NULL)`。 实现特征:分页。 + +## 25. src/views/ProductionManagement/AbnormalControl/index.vue + +**页面位置**:`src/views/ProductionManagement/AbnormalControl/index.vue` +**所属模块**:ProductionManagement / AbnormalControl +**源码行数**:1015 + +### 页面功能 + +该页面管理生产异常。用户查询异常记录,推进异常处理、关闭或记录处理结果。 + +页面可见的操作/字段包括 “处理”、“转办”、“发起新流程”、“查看进度”、“完结”、“查看详情”、“点击上传”、“添加审批人”、“查询”、“取 消”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `sp_获取最近处理任务`、`人员管理_人员信息查询`、`sp_获取我的流程`、`sp_获取待处理任务`、`MES_ProductAdmin_Query`、`sp_创建流程_简化版` 等过程 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `sp_获取最近处理任务` -> `人员管理_人员信息查询` -> `sp_获取我的流程` -> `sp_获取待处理任务` -> `MES_ProductAdmin_Query` -> `sp_创建流程_简化版` -> `sp_处理审批` -> `sp_转办流程` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`处理`、`转办`、`发起新流程`、`查看进度`、`完结`、`查看详情`、`点击上传`、`添加审批人`、`查询`、`取 消`、`提 交`、`确 定`、`确 认 完 结`、`取消`、`确定`、`待我处理`、`紧急`、`高` + +主要方法线索:`uploadSuccessPDF` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.$store.state.user.id` | `@审批人ID` | - | +| 参数 | `this.$store.state.user.id` | `@发起人ID` | - | +| 参数 | `null` | `@状态` | `p.状态, ` | +| 参数 | `this.orderNo ` | `@订单号` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `'自制件'` | `@物料类型` | - | +| 参数 | `this.contractNo` | `@合同号` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.productCode` | `@产品编码` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.productName` | `@产品名称` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.processName` | `@工序名称` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.nature` | `@性质` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.completionTime ? this.completionTime[0` | `@要求完工日期1` | - | +| 参数 | `this.completionTime ? this.completionTime[1` | `@要求完工日期2` | - | +| 参数 | `this.productionStatus` | `@排产状态` | `[排产状态], [工序计划数量], 指派对象编号, 指派对象, 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, [派工状态], [外协通知]` | +| 参数 | `''` | `@工位` | - | +| 参数 | `this.newProcessForm.title` | `@流程标题` | - | +| 参数 | `this.newProcessForm.description` | `@流程描述` | - | +| 参数 | `this.newProcessForm.priority ` | `@优先级` | - | +| 参数 | `this.$store.state.user.name` | `@发起人姓名` | - | +| 参数 | `approverId` | `@审批人ID` | - | +| 参数 | `approverName` | `@审批人姓名` | - | +| 参数 | `'0'` | `@新流程ID` | - | +| 参数 | `this.tableOrderNum ` | `@已关联计划号` | - | +| 参数 | `this.tableProductName ` | `@零件名称` | - | +| 参数 | `this.tableProductCode ` | `@零件编号` | - | +| 参数 | `this.tableProcessName ` | `@工序名称` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `task.流程ID` | `@流程ID` | - | +| 参数 | `task.节点ID` | `@节点ID` | - | +| 参数 | `this.$store.state.user.name` | `@审批人姓名` | - | +| 参数 | `this.$refs.approvalForm.model.result` | `@处理结果` | - | +| 参数 | `this.$refs.approvalForm.model.comment` | `@审批意见` | - | +| 参数 | `''` | `@成功` | - | +| 参数 | `this.currentTask.流程ID` | `@流程ID` | - | +| 参数 | `this.currentTask.节点ID` | `@节点ID` | - | +| 参数 | `this.$store.state.user.id` | `@原审批人ID` | - | +| 参数 | `this.$store.state.user.name` | `@原审批人姓名` | - | +| 参数 | `this.transferForm.newApproverId` | `@新审批人ID` | - | +| 参数 | `this.transferForm.newApproverName` | `@新审批人姓名` | - | +| 参数 | `this.transferForm.reason` | `@转办原因` | - | +| 参数 | `this.selectProcess.流程ID` | `@流程ID` | - | +| 参数 | `this.completeForm.result` | `@完成类型` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- PDF/图纸预览或导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 559 | 11(当前通用存储过程查询/执行) | `sp_获取最近处理任务` | 业务存储过程调用 | 查询 | 未在 SQL 中解析到明确依赖 | +| 567 | 11(当前通用存储过程查询/执行) | `人员管理_人员信息查询` | 查询/读取数据 | 查询 | 视图:`登录基础数据_管理人员权限视图` | +| 583 | 11(当前通用存储过程查询/执行) | `sp_获取我的流程` | 业务存储过程调用 | 查询 | 未在 SQL 中解析到明确依赖 | +| 598 | 11(当前通用存储过程查询/执行) | `sp_获取待处理任务` | 业务存储过程调用 | 查询、处理计划/派工 | 未在 SQL 中解析到明确依赖 | +| 624 | 11(当前通用存储过程查询/执行) | `MES_ProductAdmin_Query` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 视图:`View_生产订单_MES` | +| 749 | 11(当前通用存储过程查询/执行) | `sp_创建流程_简化版` | 业务存储过程调用 | 查询、新增、处理计划/派工 | 未在 SQL 中解析到明确依赖 | +| 783 | 12(当前通用存储过程写入/业务动作) | `sp_处理审批` | 业务存储过程调用 | 查询、新增、更新 | 未在 SQL 中解析到明确依赖 | +| 824 | 12(当前通用存储过程写入/业务动作) | `sp_转办流程` | 业务存储过程调用 | 查询、新增、更新 | 未在 SQL 中解析到明确依赖 | +| 852 | 11(当前通用存储过程查询/执行) | `sp_完成流程` | 业务存储过程调用 | 查询、新增、更新 | 未在 SQL 中解析到明确依赖 | +| 869 | 11(当前通用存储过程查询/执行) | `sp_获取流程详情` | 业务存储过程调用 | 查询、处理计划/派工 | 未在 SQL 中解析到明确依赖 | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `sp_获取最近处理任务`:`create PROCEDURE [dbo].[sp_获取最近处理任务]` +- `sp_获取我的流程`:`@状态 NVARCHAR(20) = NULL`;`p.状态, `;`AND (@状态 IS NULL OR p.状态 = @状态)` +- `sp_获取待处理任务`:`create PROCEDURE [dbo].[sp_获取待处理任务]`;`AND pn.状态 = 'processing'`;`AND p.状态 = 'processing'` +- `MES_ProductAdmin_Query`:`@排产状态 nvarchar(50) = '全部', `;`SELECT top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]`;`, [排产状态], [工序计划数量], 指派对象编号, 指派对象, 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, [派工状态], [外协通知]`;`, [优先级], [未完成说明], [序检], isnull([测试], 0) as [测试], isnull([入库], 0) as [入库], TaskAID`;`SELECT top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], '''' as 合同交货期, [计划完成] as 预计齐套时间, ''齐'' as 是否齐套, '''' as 齐套检测, ''是'' as 齐套锁料, [计划开始] as 备料日期, 0 as 加急`;`, [优先级], [未完成说明], [派工特殊说明], [最后编辑人], [最后编辑时间], TaskAID`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''` +- `sp_创建流程_简化版`:`状态, ` +- `sp_处理审批`:`SET 状态 = @处理结果, `;`SET 状态 = 'rejected', `;`SET 状态 = 'processing', `;`SET 状态 = 'completed', `;`当前节点 = '已完成', ` +- `sp_转办流程`:`AND pn.状态 = 'processing'`;`AND p.状态 = 'processing'` +- `sp_完成流程`:`create PROCEDURE [dbo].[sp_完成流程]`;`@完成类型 NVARCHAR(20), `;`@完成原因 NVARCHAR(500), `;`AND 状态 IN ('draft', 'processing')`;`INSERT INTO 流程完成记录表 (`;`流程ID, 发起人ID, 发起人姓名, 完成类型, 完成原因`;`VALUES (@流程ID, @发起人ID, @发起人姓名, @完成类型, @完成原因);`;`SET 状态 = @完成类型, ` +- `sp_获取流程详情`:`p.状态, `;`状态, `;`WHEN 步骤序号 < (SELECT 当前步骤 FROM 流程表 WHERE 流程ID = @流程ID) THEN '已完成'`;`END as 状态描述, ` + +### 数据库调用链 + +- `src/views/ProductionManagement/AbnormalControl/index.vue` -> `sp_获取最近处理任务` -> 未在 SQL 中解析到明确依赖 -> 业务存储过程调用 +- `src/views/ProductionManagement/AbnormalControl/index.vue` -> `人员管理_人员信息查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/ProductionManagement/AbnormalControl/index.vue` -> `sp_获取我的流程` -> 未在 SQL 中解析到明确依赖 -> 业务存储过程调用 +- `src/views/ProductionManagement/AbnormalControl/index.vue` -> `sp_获取待处理任务` -> 未在 SQL 中解析到明确依赖 -> 业务存储过程调用 +- `src/views/ProductionManagement/AbnormalControl/index.vue` -> `MES_ProductAdmin_Query` -> 视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/AbnormalControl/index.vue` -> `sp_创建流程_简化版` -> 未在 SQL 中解析到明确依赖 -> 业务存储过程调用 +- `src/views/ProductionManagement/AbnormalControl/index.vue` -> `sp_处理审批` -> 未在 SQL 中解析到明确依赖 -> 业务存储过程调用 +- `src/views/ProductionManagement/AbnormalControl/index.vue` -> `sp_转办流程` -> 未在 SQL 中解析到明确依赖 -> 业务存储过程调用 +- `src/views/ProductionManagement/AbnormalControl/index.vue` -> `sp_完成流程` -> 未在 SQL 中解析到明确依赖 -> 业务存储过程调用 +- `src/views/ProductionManagement/AbnormalControl/index.vue` -> `sp_获取流程详情` -> 未在 SQL 中解析到明确依赖 -> 业务存储过程调用 + +### 存储过程处理逻辑明细 + +- `sp_获取最近处理任务` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@审批人ID NVARCHAR(100)`。 主要返回字段线索:`ar.记录ID, `、`p.流程ID, `、`p.流程标题 as 流程名称, `、`p.发起人姓名 as 申请人, `、`ar.审批人姓名 as 处理人, `、`ar.处理结果, `、`CASE ar.处理结果`、`WHEN 'approved' THEN '同意'`、`WHEN 'rejected' THEN '拒绝'`、`ELSE ar.处理结果`。 关键过滤/匹配条件:`WHERE ar.审批人ID = @审批人ID`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY ar.处理时间 DESC;`。 +- `人员管理_人员信息查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`*`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `sp_获取我的流程` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@发起人ID NVARCHAR(100),`、`@状态 NVARCHAR(20)`。 主要返回字段线索:`p.流程ID, `、`p.流程标题, `、`p.流程描述, `、`p.优先级, `、`p.状态, `、`p.当前节点, `、`p.当前步骤, `、`p.总步骤数, `、`p.创建时间 as 发起时间, `、`p.更新时间`。 关键过滤/匹配条件:`WHERE p.发起人ID = @发起人ID`;`AND (@状态 IS NULL OR p.状态 = @状态)`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY p.更新时间 DESC;`。 +- `sp_获取待处理任务` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、处理计划/派工。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@审批人ID NVARCHAR(100)`。 主要返回字段线索:`p.流程ID, `、`p.流程标题, `、`p.流程描述, `、`p.优先级, `、`p.发起人姓名 as 申请人, `、`p.创建时间 as 申请时间, `、`p.已关联计划号, `、`p.零件名称, `、`p.零件编号, `、`p.工序名称, `。 关键过滤/匹配条件:`WHERE pn.审批人ID = @审批人ID`;`AND pn.状态 = 'processing'`;`AND p.状态 = 'processing'`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY`。 +- `MES_ProductAdmin_Query` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:视图:`View_生产订单_MES`。 入参/分页参数:`@订单号 int`、`@物料类型 nvarchar(50)`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@性质 nvarchar(50)`、`@要求完工日期1 nvarchar(50)`、`@要求完工日期2 nvarchar(50)`、`@排产状态 nvarchar(50)`、`@工位 nvarchar(500)`。 主要返回字段线索:`top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]`、`[排产状态], [工序计划数量], 指派对象编号, 指派对象, 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, [派工状态], [外协通知]`、`[优先级], [未完成说明], [序检], isnull([测试], 0) as [测试], isnull([入库], 0) as [入库], TaskAID`。 关键过滤/匹配条件:`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'''`;`if(@订单号>0)set @selectStrWhere = @selectStrWhere + ' and [订单编号] = '+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 [工序名称] = '''+@工序名称+''''`;`if(@性质'')set @selectStrWhere = @selectStrWhere + ' and [性质] = '''+@性质+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@排产状态 = '未完成')set @selectStrWhere = @selectStrWhere + ' and isnull([排产状态], 0) = 0'`。 关键写入/状态处理语句线索:`set @selectStr = '`;`if(@订单号>0)set @selectStrWhere = @selectStrWhere + ' and [订单编号] = '+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 [工序名称] = '''+@工序名称+''''`;`if(@性质'')set @selectStrWhere = @selectStrWhere + ' and [性质] = '''+@性质+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@排产状态 = '未完成')set @selectStrWhere = @selectStrWhere + ' and isnull([排产状态], 0) = 0'`;`else if(@排产状态 = '已完成')set @selectStrWhere = @selectStrWhere + ' and [排产状态] = 1'`;`if(@物料类型 = '自制件') set @selectStrWhere = @selectStrWhere + ' and [不装配] ''否'''`。 +- `sp_创建流程_简化版` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、新增、处理计划/派工。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`流程表`、`流程节点表`。 入参/分页参数:`@流程标题 NVARCHAR(200),`、`@流程描述 NVARCHAR(MAX)`、`@优先级 NVARCHAR(20)`、`@发起人ID NVARCHAR(100),`、`@发起人姓名 NVARCHAR(100),`、`@审批人ID NVARCHAR(100),`、`@审批人姓名 NVARCHAR(100),`、`@新流程ID INT`、`@已关联计划号 NVARCHAR(100)`、`@零件名称 NVARCHAR(100)`、`@零件编号 NVARCHAR(100)`、`@工序名称 NVARCHAR(100)`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO 流程表 (`;`SET @新流程ID = SCOPE_IDENTITY();`;`INSERT INTO 流程节点表 (`;`SET @结果 = 1;`;`SET @消息 = '流程创建成功,流程ID: ' + CAST(@新流程ID AS NVARCHAR(10));`;`SET @结果 = 0;`;`SET @消息 = '错误: ' + ERROR_MESSAGE();`。 实现特征:事务控制、异常捕获。 +- `sp_处理审批` 属于 通用业务,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、新增、更新。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`流程表`、`流程节点表`、`审批记录表`。 入参/分页参数:`@流程ID INT,`、`@节点ID INT,`、`@审批人ID NVARCHAR(100),`、`@审批人姓名 NVARCHAR(100),`、`@处理结果 NVARCHAR(20),`、`@审批意见 NVARCHAR(MAX)`、`@成功 BIT`。 主要返回字段线索:`@当前步骤 = 步骤序号`。 关键过滤/匹配条件:`WHERE 节点ID = @节点ID;`;`WHERE 流程ID = @流程ID;`;`SELECT @当前步骤 = 步骤序号 FROM 流程节点表 WHERE 节点ID = @节点ID;`;`WHERE 流程ID = @流程ID AND 步骤序号 = @当前步骤 + 1;`;`WHERE 节点ID = @下一节点ID;`;`当前节点 = (SELECT 节点名称 FROM 流程节点表 WHERE 节点ID = @下一节点ID), `。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO 审批记录表 (流程ID, 节点ID, 审批人ID, 审批人姓名, 处理结果, 审批意见)`;`UPDATE 流程节点表`;`SET 状态 = @处理结果, `;`UPDATE 流程表`;`SET 状态 = 'rejected', `;`SET 状态 = 'processing', `;`SET 当前步骤 = @当前步骤 + 1, `;`SET 状态 = 'completed', `;`SET @成功 = 1;`;`SET @成功 = 0;`。 实现特征:事务控制、异常捕获。 +- `sp_转办流程` 属于 通用业务,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、新增、更新。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`流程节点表`、`流程转办表`、`审批记录表`。 入参/分页参数:`@流程ID INT,`、`@节点ID INT,`、`@原审批人ID NVARCHAR(100),`、`@原审批人姓名 NVARCHAR(100),`、`@新审批人ID NVARCHAR(100),`、`@新审批人姓名 NVARCHAR(100),`、`@转办原因 NVARCHAR(500),`、`@成功 BIT`。 主要返回字段线索:`1`。 关键过滤/匹配条件:`WHERE p.流程ID = @流程ID`;`AND pn.节点ID = @节点ID`;`AND pn.状态 = 'processing'`;`AND p.状态 = 'processing'`;`AND pn.审批人ID = @原审批人ID`;`WHERE 节点ID = @节点ID;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @成功 = 0;`;`INSERT INTO 流程转办表 (`;`UPDATE 流程节点表`;`SET 审批人ID = @新审批人ID, `;`INSERT INTO 审批记录表 (流程ID, 节点ID, 审批人ID, 审批人姓名, 处理结果, 审批意见)`;`SET @成功 = 1;`。 实现特征:事务控制、异常捕获。 +- `sp_完成流程` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、新增、更新。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`流程表`、`流程节点表`、`流程完成记录表`、`审批记录表`。 入参/分页参数:`@流程ID INT,`、`@发起人ID NVARCHAR(100),`、`@发起人姓名 NVARCHAR(100),`、`@完成类型 NVARCHAR(20),`、`@完成原因 NVARCHAR(500),`、`@成功 BIT`。 主要返回字段线索:`1`。 关键过滤/匹配条件:`WHERE 流程ID = @流程ID`;`AND 发起人ID = @发起人ID`;`AND 状态 IN ('draft', 'processing')`;`WHERE 流程ID = @流程ID;`;`AND 状态 = 'processing';`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @成功 = 0;`;`INSERT INTO 流程完成记录表 (`;`UPDATE 流程表`;`SET 状态 = @完成类型, `;`UPDATE 流程节点表`;`SET 状态 = 'cancelled', `;`INSERT INTO 审批记录表 (流程ID, 节点ID, 审批人ID, 审批人姓名, 处理结果, 审批意见)`;`SET @成功 = 1;`。 实现特征:事务控制、异常捕获。 +- `sp_获取流程详情` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、处理计划/派工。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@流程ID INT`。 主要返回字段线索:`@流程信息 = (`、`SELECT`、`p.流程ID, `、`p.流程标题, `、`p.流程描述, `、`p.优先级, `、`p.状态, `、`p.发起人姓名, `、`p.当前节点, `、`p.当前步骤, `。 关键过滤/匹配条件:`WHERE p.流程ID = @流程ID`;`WHEN 步骤序号 < (SELECT 当前步骤 FROM 流程表 WHERE 流程ID = @流程ID) THEN '已完成'`;`WHEN 步骤序号 = (SELECT 当前步骤 FROM 流程表 WHERE 流程ID = @流程ID) THEN '进行中'`;`WHERE 流程ID = @流程ID`;`WHERE ar.流程ID = @流程ID`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY 步骤序号`;`ORDER BY ar.处理时间 DESC`。 + +## 26. src/views/ProductionManagement/AssemblePlanTrack/index.vue + +**页面位置**:`src/views/ProductionManagement/AssemblePlanTrack/index.vue` +**所属模块**:ProductionManagement / AssemblePlanTrack +**源码行数**:514 + +### 页面功能 + +该页面跟踪装配计划执行,展示装配任务进度、计划完成情况和异常。 + +页面可见的操作/字段包括 “查询”、“全部”、“已完成”、“未完成”、“序号”、“工序名称”、“计划数量”、“指派对象”、“开始时间”、“结束时间”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `MES_OrderPlanned_Queryzp`、`MES_OrderPlanned_DescriptionEdit`、`Prog_MES_LoadStations` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `MES_OrderPlanned_Queryzp` -> `MES_OrderPlanned_DescriptionEdit` -> `Prog_MES_LoadStations` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`全部`、`已完成`、`未完成`、`序号`、`工序名称`、`计划数量`、`指派对象`、`开始时间`、`结束时间`、`完成进度`、`拆分内码`、`销售订单`、`生产订单`、`产品编码`、`产品名称`、`要求完工日`、`当前序` + +主要方法线索:`getHeaderClass`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.orderNo ` | `@订单号` | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `'自制件'` | `@物料类型` | - | +| 参数 | `this.contractNo` | `@合同号` | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `this.productCode` | `@产品编码` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.productName` | `@产品名称` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.processName` | `@工序名称` | - | +| 参数 | `this.planStartTime[0` | `@计划开始1` | - | +| 参数 | `this.planStartTime[1` | `@计划开始2` | - | +| 参数 | `this.planendTime[0` | `@计划完成1` | - | +| 参数 | `this.planendTime[1` | `@计划完成2` | - | +| 参数 | `this.completionTime ? this.completionTime[0` | `@要求完工日期1` | - | +| 参数 | `this.completionTime ? this.completionTime[1` | `@要求完工日期2` | - | +| 参数 | `this.productionStatus` | `@排产状态` | - | +| 参数 | `'全部'` | `@指派对象` | - | +| 参数 | `this.currentRow.订单号` | `@订单号` | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `this.currentRow.订单行号` | `@订单行号` | - | +| 参数 | `this.currentRow.拆分内码` | `@订单拆分内码` | - | +| 参数 | `this.editForm.优先级` | `@优先级` | - | +| 参数 | `this.editForm.未完成说明` | `@未完成说明` | - | +| 参数 | `this.editForm.派工特殊说明` | `@派工特殊说明` | - | +| 参数 | `this.$store.state.user.name` | `@最后编辑人` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `工序名称` | - | `工序名称` | +| 显示列 | `计划数量` | - | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 显示列 | `指派对象` | - | `指派对象` | +| 显示列 | `开始时间` | - | `计划开始时间` | +| 显示列 | `结束时间` | - | `计划完成时间` | +| 显示列 | `完成进度` | - | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 显示列 | `拆分内码` | - | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 显示列 | `销售订单` | - | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 显示列 | `生产订单` | - | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 显示列 | `产品编码` | - | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 显示列 | `产品名称` | - | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 显示列 | `要求完工日` | - | `要求完工日` | +| 显示列 | `当前序` | - | `当前序` | +| 显示列 | `排产` | - | `排产` | +| 显示列 | `开工` | - | `top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 显示列 | `终检` | - | `终检` | +| 显示列 | `加急` | - | `加急` | +| 显示列 | `优先级` | - | `优先级` | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 347 | 11(当前通用存储过程查询/执行) | `MES_OrderPlanned_Queryzp` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` | +| 380 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 439 | 11(当前通用存储过程查询/执行) | `Prog_MES_LoadStations` | 查询/读取数据 | 查询、处理外协业务 | 表:`MES_资源主数据` | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `MES_OrderPlanned_Queryzp`:`@计划完成1 nvarchar(50) = '', `;`@计划完成2 nvarchar(50) = '', `;`@排产状态 nvarchar(50) = '全部', `;`[计划完成] as 要求完工日期, [工序名称], 完成数量, v.计划号, 收料数量, 外协分组, v.任务状态, `;`case when [加急状态] = 1 then ''加急'' else '''' end as 加急状态, 性质, isnull(总工时, 0) as 总工时, [占用情况]`;`, [排产状态], [工序计划数量], 指派对象编号, 指派对象, TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, `;`[派工状态], [外协通知], [优先级], [未完成说明], [派工特殊说明], [最后编辑人], [最后编辑时间], [二次派工], `;`FROM dbo.YL_质量检验_质检记录` +- `MES_OrderPlanned_DescriptionEdit`:`@未完成说明 nvarchar(50) = '', `;`@派工特殊说明 nvarchar(500) = '', `;`Update [MES_接口_生产计划_生产任务] set`;`未完成说明 = @未完成说明, `;`派工特殊说明 = @派工特殊说明, ` + +### 数据库调用链 + +- `src/views/ProductionManagement/AssemblePlanTrack/index.vue` -> `MES_OrderPlanned_Queryzp` -> 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/AssemblePlanTrack/index.vue` -> `MES_OrderPlanned_DescriptionEdit` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/ProductionManagement/AssemblePlanTrack/index.vue` -> `Prog_MES_LoadStations` -> 表:`MES_资源主数据` -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `MES_OrderPlanned_Queryzp` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES`。 入参/分页参数:`@订单号 int`、`@物料类型 nvarchar(50)`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@要求完工日期1 nvarchar(50)`、`@要求完工日期2 nvarchar(50)`、`@计划开始1 nvarchar(50)`、`@计划开始2 nvarchar(50)`、`@计划完成1 nvarchar(50)`、`@计划完成2 nvarchar(50)`、`@排产状态 nvarchar(50)`、`@指派对象 nvarchar(50)`。 主要返回字段线索:`top 100 [计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, `、`[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''`。 关键过滤/匹配条件:`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and [自制件属性] like ''%装配%'''`;`WHERE 质检类型 = ''终检''`;`AND v.[订单行号] = g.工艺顺序'`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`。 关键写入/状态处理语句线索:`set @selectStr = '`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@计划开始1 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] > = '''+@计划开始1+''''`;`if(@计划开始2 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] < = '''+@计划开始2+''''`;`if(@计划完成1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] > = '''+@计划完成1+''''`;`if(@计划完成2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] < = '''+@计划完成2+''''`。 +- `MES_OrderPlanned_DescriptionEdit` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int,`、`@订单行号 int,`、`@订单拆分内码 int,`、`@优先级 nvarchar(50)`、`@未完成说明 nvarchar(50)`、`@派工特殊说明 nvarchar(500)`、`@最后编辑人 nvarchar(500)`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`Update [MES_接口_生产计划_生产任务] set`。 +- `Prog_MES_LoadStations` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理外协业务。 读取/关联对象:表:`MES_资源主数据`。 主要返回字段线索:`[VisCode], [Name] as OPName`。 关键过滤/匹配条件:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 排序/分组/分页线索:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 + +## 27. src/views/ProductionManagement/AssembleStatus/index.vue + +**页面位置**:`src/views/ProductionManagement/AssembleStatus/index.vue` +**所属模块**:ProductionManagement / AssembleStatus +**源码行数**:354 + +### 页面功能 + +该页面查看装配现场状态,重点展示进行中任务和当前工位状态。 + +页面可见的操作/字段包括 “查询”、“item.label”、“序号”、“人员名称”、“工位”、“生产订单”、“计划号”、“销售订单”、“物料名称”、“物料编码”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `人员管理_人员信息查询_质检部门_查询`、`MES_登录_工位与名称_查询`、`生产管理_装配状态_获取进行中任务` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `人员管理_人员信息查询_质检部门_查询` -> `MES_登录_工位与名称_查询` -> `生产管理_装配状态_获取进行中任务` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`item.label`、`序号`、`人员名称`、`工位`、`生产订单`、`计划号`、`销售订单`、`物料名称`、`物料编码`、`顺序`、`工序名称`、`分配数`、`上序合格数`、`加工状态`、`送检数`、`收检合格数`、`收检不合格数` + +主要方法线索:`getCheckerList`、`for` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `selectedChecker ? selectedChecker.label : ''` | `@操作人` | `t.操作人 AS UserName, ` | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `人员名称` | - | `t.操作人 AS UserName, ` | +| 显示列 | `工位` | - | `[VisCode] as 工位代码` | +| 显示列 | `生产订单` | - | `订单号` | +| 显示列 | `计划号` | - | `计划号` | +| 显示列 | `销售订单` | - | `合同号` | +| 显示列 | `物料名称` | - | `零件名称` | +| 显示列 | `物料编码` | - | `零件编码` | +| 显示列 | `顺序` | - | `顺序` | +| 显示列 | `工序名称` | - | `t.工序名称, ` | +| 显示列 | `分配数` | - | `分配数` | +| 显示列 | `上序合格数` | - | `上序合格数` | +| 显示列 | `加工状态` | - | `加工状态` | +| 显示列 | `送检数` | - | `完成数量` | +| 显示列 | `收检合格数` | - | `收检合格数` | +| 显示列 | `收检不合格数` | - | `收检不合格数` | +| 显示列 | `入库数量` | - | `入库数量` | +| 显示列 | `发料状态` | - | `发料状态` | +| 显示列 | `拣配状态` | - | `拣配状态` | +| 显示列 | `齐套` | - | `齐套` | +| 显示列 | `开始时间` | - | `t.开始时间 AS StartTime, ` | +| 显示列 | `计划开始` | - | `计划开始` | +| 显示列 | `计划完成` | - | `计划完成` | +| 显示列 | `备注` | - | `派工特殊说明` | +| 输入字段 | `checker` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 267 | 11(当前通用存储过程查询/执行) | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 查询、处理质检数据 | 视图:`登录基础数据_管理人员权限视图` | +| 278 | 11(当前通用存储过程查询/执行) | `MES_登录_工位与名称_查询` | 查询/读取数据 | 查询 | 视图:`View_基础数据_工位` | +| 296 | 11(当前通用存储过程查询/执行) | `生产管理_装配状态_获取进行中任务` | 业务存储过程调用 | 查询、处理质检数据、处理计划/派工 | 表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES` | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `人员管理_人员信息查询_质检部门_查询`:`create PROCEDURE [dbo].[人员管理_人员信息查询_质检部门_查询]` +- `生产管理_装配状态_获取进行中任务`:`CREATE PROCEDURE [dbo].[生产管理_装配状态_获取进行中任务]`;`mes.工序名称 AS 任务工序名称, `;`mes.任务状态, `;`mes.完成数量, `;`mes.计划完成时间 AS 计划完成, `;`when isnull(mes.发料状态, 0) = 1 then '发料齐套'`;`when isnull(mes.发料状态, 0) = 2 then '发料缺件'`;`end as [发料状态], ` + +### 数据库调用链 + +- `src/views/ProductionManagement/AssembleStatus/index.vue` -> `人员管理_人员信息查询_质检部门_查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/ProductionManagement/AssembleStatus/index.vue` -> `MES_登录_工位与名称_查询` -> 视图:`View_基础数据_工位` -> 查询/读取数据 +- `src/views/ProductionManagement/AssembleStatus/index.vue` -> `生产管理_装配状态_获取进行中任务` -> 表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES` -> 业务存储过程调用 + +### 存储过程处理逻辑明细 + +- `人员管理_人员信息查询_质检部门_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`*`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `MES_登录_工位与名称_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_基础数据_工位`。 主要返回字段线索:`[VisCode] as 工位代码`、`[VisCode] as MesWebCode`、`[VisCode] as 工位号`、`[Name] as 指南工位号`、`[Name] as 工位名称`。 排序/分组/分页线索:`order by [VisCode]`。 +- `生产管理_装配状态_获取进行中任务` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、处理质检数据、处理计划/派工。 读取/关联对象:表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES`。 入参/分页参数:`@操作人 nvarchar(50)`。 主要返回字段线索:`t.AID AS 操作记录ID, `、`t.TaskAID, `、`t.操作人 AS UserName, `、`t.开始时间 AS StartTime, `、`t.操作类别, `、`t.操作类别编号, `、`t.工序名称, `、`t.工位名称, `、`t.订单编号, `、`t.物料编号, `。 关键过滤/匹配条件:`WHERE 质检类型 = '收检'`;`WHERE`;`AND t.结束时间 IS NULL`;`and t.工位名称 like '%装配%'`;`and t.操作数值 is not null`;`AND (@操作人 = '' OR t.操作人 = @操作人)`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`GROUP BY TaskAID`;`ORDER BY t.操作人, t.开始时间 DESC;`。 实现特征:异常捕获。 + +## 28. src/views/ProductionManagement/AssembleTaskManage/index.vue + +**页面位置**:`src/views/ProductionManagement/AssembleTaskManage/index.vue` +**所属模块**:ProductionManagement / AssembleTaskManage +**源码行数**:1041 + +### 页面功能 + +该页面管理装配任务。用户查询装配生产任务、查看工时汇总,进行派工、任务说明维护和外协/生产通知。 + +页面可见的操作/字段包括 “查询”、“批量排产”、“排产完成”、“确认修改”、“拆分子任务”、“确定”、“编辑”、“取 消”、“确 定”、“全部”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `MES_登录_工位与名称_查询`、`MES_OrderPlanned_Finish`、`MES_OrderPlanned_ChildTask_Add`、`MES_OrderPlanned_ChildTask_Get`、`MES_OrderPlanned_Query`、`Prog_MES_LoadStations` 等过程 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `MES_登录_工位与名称_查询` -> `MES_OrderPlanned_Finish` -> `MES_OrderPlanned_ChildTask_Add` -> `MES_OrderPlanned_ChildTask_Get` -> `MES_OrderPlanned_Query` -> `Prog_MES_LoadStations` -> `MES_OrderPlanned_EditTaskPlanned` -> `MES_OrderPlanned_SingleTaskPlanned` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`批量排产`、`排产完成`、`确认修改`、`拆分子任务`、`确定`、`编辑`、`取 消`、`确 定`、`全部`、`已完成`、`未完成`、`表单`、`序号`、`销售订单`、`生产订单`、`订单行号`、`拆分内码` + +主要方法线索:`getDoing`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `row.订单号` | `@订单号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `this.$store.state.user.name` | `@派工操作人` | - | +| 参数 | `this.$refs.formData.model.TaskAID` | `@TaskAID` | - | +| 参数 | `this.$refs.formData.model.装配任务概述` | `@任务描述` | - | +| 参数 | `this.$refs.formData.model.指派对象` | `@指派对象` | - | +| 参数 | `this.$refs.formData.model.指派对象编号` | `@指派对象编号` | - | +| 参数 | `this.$refs.formData.model.指派数量` | `@指派数量` | - | +| 参数 | `this.$refs.formData.model.计划开始时间` | `@计划开始时间` | - | +| 参数 | `this.$refs.formData.model.计划完成时间` | `@计划结束时间` | - | +| 参数 | `this.$refs.formData.model.最晚开始时间` | `@最晚开始时间` | - | +| 参数 | `0` | `@TaskAID` | - | +| 参数 | `this.orderNo ` | `@订单号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `'装配件'` | `@物料类型` | - | +| 参数 | `this.contractNo` | `@合同号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `this.productCode` | `@产品编码` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.productName` | `@产品名称` | `[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''` | +| 参数 | `this.processName` | `@工序名称` | - | +| 参数 | `this.nature` | `@性质` | - | +| 参数 | `this.completionTime[0` | `@要求完工日期1` | - | +| 参数 | `this.completionTime[1` | `@要求完工日期2` | - | +| 参数 | `this.productionStatus` | `@排产状态` | - | +| 参数 | `editstr` | `@editstr` | - | +| 参数 | `row.订单行号` | `@订单行号` | - | +| 参数 | `row.拆分内码` | `@订单拆分内码` | - | +| 参数 | `row.指派对象编号` | `@指派对象编号` | - | +| 参数 | `row.指派对象` | `@指派对象` | - | +| 参数 | `this.editnumber` | `@指派数量` | - | +| 参数 | `row.派工特殊说明` | `@派工特殊说明` | - | +| 参数 | `row.计划开始时间` | `@计划开始时间` | - | +| 参数 | `row.计划完成时间` | `@计划完成时间` | - | +| 参数 | `row.最晚开始时间` | `@最晚开始时间` | - | +| 参数 | `item.订单号` | `@订单号` | `[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, ` | +| 参数 | `item.订单行号` | `@订单行号` | - | +| 参数 | `item.拆分内码` | `@订单拆分内码` | - | +| 参数 | `item.指派对象编号` | `@指派对象编号` | - | +| 参数 | `item.指派对象` | `@指派对象` | - | +| 参数 | `item.指派数量` | `@指派数量` | - | +| 参数 | `item.派工特殊说明` | `@派工特殊说明` | - | +| 参数 | `item.计划开始时间` | `@计划开始时间` | - | +| 参数 | `item.计划完成时间` | `@计划完成时间` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- FullCalendar + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 500 | 11(当前通用存储过程查询/执行) | `MES_登录_工位与名称_查询` | 查询/读取数据 | 查询 | 视图:`View_基础数据_工位` | +| 528 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_Finish` | 确认/关闭/完成业务动作 | 查询、更新、解析 JSON 批量数据、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 568 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_ChildTask_Add` | 新增业务数据 | 查询、新增、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 583 | 11(当前通用存储过程查询/执行) | `MES_OrderPlanned_ChildTask_Get` | 查询/读取数据 | 查询、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 634 | 11(当前通用存储过程查询/执行) | `MES_OrderPlanned_Query` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` | +| 649 | 11(当前通用存储过程查询/执行) | `Prog_MES_LoadStations` | 查询/读取数据 | 查询、处理外协业务 | 表:`MES_资源主数据` | +| 675 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 692 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 709 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 726 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 780 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 查询、新增、更新、删除、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 810 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 查询、新增、更新、删除、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 882 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 963 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `MES_OrderPlanned_Finish`:`@任务列表 NVARCHAR(MAX), `;`@派工操作人 NVARCHAR(MAX)`;`t.[排产状态] = 1, `;`t.[任务状态] = 0, `;`t.派工特殊说明 = j.派工特殊说明, `;`t.计划完成时间 = j.计划完成时间, `;`t.派工操作人 = @派工操作人, `;`t.最后编辑人 = @派工操作人, ` +- `MES_OrderPlanned_ChildTask_Add`:`@任务描述 NVARCHAR(500) = NULL, `;`INSERT INTO [dbo].[MES_接口_生产计划_生产任务_子任务]`;`[任务描述], `;`@任务描述, ` +- `MES_OrderPlanned_ChildTask_Get`:`[任务描述], `;`[计划结束时间] as 计划完成时间, `;`from [MES_接口_生产计划_生产任务_子任务]` +- `MES_OrderPlanned_Query`:`@计划完成1 nvarchar(50) = '', `;`@计划完成2 nvarchar(50) = '', `;`@排产状态 nvarchar(50) = '全部', `;`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and [自制件属性] = ''机加件'' and isnull(v.任务状态, 0) < 4'`;`[计划完成] as 要求完工日期, [工序名称], 完成数量, v.计划号, 收料数量, 外协分组, v.任务状态, v.备注, `;`case when [加急状态] = 1 then ''加急'' else '''' end as 加急状态, 性质, isnull(总工时, 0) as 总工时, [占用情况]`;`, [排产状态], [工序计划数量], 指派对象编号, 指派对象, TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, `;`[派工状态], [外协通知], [优先级], [未完成说明], [派工特殊说明], [最后编辑人], [最后编辑时间], [二次派工], isnull(g.标准工时, 0) as 标准工时, ` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` +- `MES_OrderPlanned_SingleTaskPlanned`:`@派工特殊说明 nvarchar(500) = '', `;`@计划完成时间 nvarchar(50) = '', `;`@派工操作人 nvarchar(50) = ''`;`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`INSERT INTO [MES_接口_生产计划_生产任务]` +- `MES_OrderPlanned_SingleTaskPlanned`:`@派工特殊说明 nvarchar(500) = '', `;`@计划完成时间 nvarchar(50) = '', `;`@派工操作人 nvarchar(50) = ''`;`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`INSERT INTO [MES_接口_生产计划_生产任务]` +- `MES_OrderPlanned_DescriptionEdit`:`@未完成说明 nvarchar(50) = '', `;`@派工特殊说明 nvarchar(500) = '', `;`Update [MES_接口_生产计划_生产任务] set`;`未完成说明 = @未完成说明, `;`派工特殊说明 = @派工特殊说明, ` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` + +### 数据库调用链 + +- `src/views/ProductionManagement/AssembleTaskManage/index.vue` -> `MES_登录_工位与名称_查询` -> 视图:`View_基础数据_工位` -> 查询/读取数据 +- `src/views/ProductionManagement/AssembleTaskManage/index.vue` -> `MES_OrderPlanned_Finish` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 确认/关闭/完成业务动作 +- `src/views/ProductionManagement/AssembleTaskManage/index.vue` -> `MES_OrderPlanned_ChildTask_Add` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 新增业务数据 +- `src/views/ProductionManagement/AssembleTaskManage/index.vue` -> `MES_OrderPlanned_ChildTask_Get` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 查询/读取数据 +- `src/views/ProductionManagement/AssembleTaskManage/index.vue` -> `MES_OrderPlanned_Query` -> 表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/AssembleTaskManage/index.vue` -> `Prog_MES_LoadStations` -> 表:`MES_资源主数据` -> 查询/读取数据 +- `src/views/ProductionManagement/AssembleTaskManage/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/ProductionManagement/AssembleTaskManage/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/ProductionManagement/AssembleTaskManage/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/ProductionManagement/AssembleTaskManage/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/ProductionManagement/AssembleTaskManage/index.vue` -> `MES_OrderPlanned_SingleTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/ProductionManagement/AssembleTaskManage/index.vue` -> `MES_OrderPlanned_SingleTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/ProductionManagement/AssembleTaskManage/index.vue` -> `MES_OrderPlanned_DescriptionEdit` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/ProductionManagement/AssembleTaskManage/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `MES_登录_工位与名称_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_基础数据_工位`。 主要返回字段线索:`[VisCode] as 工位代码`、`[VisCode] as MesWebCode`、`[VisCode] as 工位号`、`[Name] as 指南工位号`、`[Name] as 工位名称`。 排序/分组/分页线索:`order by [VisCode]`。 +- `MES_OrderPlanned_Finish` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 确认/关闭/完成业务动作。 数据库处理摘要:查询、更新、解析 JSON 批量数据、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 入参/分页参数:`@任务列表 NVARCHAR(MAX),`、`@派工操作人 NVARCHAR(MAX)`。 主要返回字段线索:`TaskAID = JSON_VALUE(value, '$.taskaid'), `、`指派对象 = JSON_VALUE(value, '$."指派对象"'), `、`指派数量 = JSON_VALUE(value, '$."指派数量"'), `、`指派对象编号 = JSON_VALUE(value, '$."指派对象编号"'), `、`派工特殊说明 = JSON_VALUE(value, '$."派工特殊说明"'), `、`计划开始时间 = JSON_VALUE(value, '$."计划开始时间"'), `、`计划完成时间 = JSON_VALUE(value, '$."计划完成时间"'), `、`最晚开始时间 = JSON_VALUE(value, '$."最晚开始时间"')`。 关键写入/状态处理语句线索:`UPDATE t`;`SET`。 实现特征:JSON 批量解析。 +- `MES_OrderPlanned_ChildTask_Add` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 新增业务数据。 数据库处理摘要:查询、新增、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID BIGINT,`、`@任务描述 NVARCHAR(500)`、`@指派对象 NVARCHAR(50)`、`@指派对象编号 NVARCHAR(50)`、`@指派数量 INT`、`@计划开始时间 DATETIME`、`@计划结束时间 DATETIME`、`@最晚开始时间 DATETIME`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO [dbo].[MES_接口_生产计划_生产任务_子任务]`。 实现特征:事务控制、异常捕获。 +- `MES_OrderPlanned_ChildTask_Get` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID BIGINT`。 主要返回字段线索:`[AID], `、`[TaskAID], `、`[任务描述], `、`[指派对象], `、`[指派对象编号], `、`[指派数量], `、`[计划开始时间], `、`[计划结束时间] as 计划完成时间, `、`[最晚开始时间]`。 +- `MES_OrderPlanned_Query` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`车间生产管理工艺_零件生产工艺_工艺库`;视图:`View_生产订单_MES`。 入参/分页参数:`@订单号 int`、`@物料类型 nvarchar(50)`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@要求完工日期1 nvarchar(50)`、`@要求完工日期2 nvarchar(50)`、`@计划开始1 nvarchar(50)`、`@计划开始2 nvarchar(50)`、`@计划完成1 nvarchar(50)`、`@计划完成2 nvarchar(50)`、`@排产状态 nvarchar(50)`、`@指派对象 nvarchar(50)`。 主要返回字段线索:`[计划数量订单], isnull(开工时间, 0) as 开工时间, isnull(进度, 0) as 进度, [TaskAID], [合同号], v.[订单编号] as 订单号, `、`[订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, TRIM(''.''`。 关键过滤/匹配条件:`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and [自制件属性] = ''机加件'' and isnull(v.任务状态, 0) < 4'`;`WHERE 质检类型 = ''终检''`;`AND v.[订单行号] = g.工艺顺序'`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`。 关键写入/状态处理语句线索:`set @selectStr = '`;`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 [工序名称] = '''+@工序名称+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@计划开始1 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] > = '''+@计划开始1+''''`;`if(@计划开始2 '')set @selectStrWhere = @selectStrWhere + ' and [计划开始时间] < = '''+@计划开始2+''''`;`if(@计划完成1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] > = '''+@计划完成1+''''`;`if(@计划完成2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成时间] < = '''+@计划完成2+''''`。 +- `Prog_MES_LoadStations` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理外协业务。 读取/关联对象:表:`MES_资源主数据`。 主要返回字段线索:`[VisCode], [Name] as OPName`。 关键过滤/匹配条件:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 排序/分组/分页线索:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 +- `MES_OrderPlanned_SingleTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:查询、新增、更新、删除、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`、`@指派对象编号 nvarchar(50)`、`@指派对象 nvarchar(50)`、`@指派数量 int`、`@派工特殊说明 nvarchar(500)`、`@计划开始时间 nvarchar(50)`、`@计划完成时间 nvarchar(50)`、`@最晚开始时间 nvarchar(50)`、`@派工操作人 nvarchar(50)`。 主要返回字段线索:`@计划数量 = 计划数量`。 关键过滤/匹配条件:`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`FROM [MES_接口_生产计划_生产任务] WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`select @未指派数量_剩余 = 计划数量+@指派数量_Free from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`WHERE [订单编号] = @订单号 AND [订单行号] = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`set @指派数量_Free = @计划数量-@指派数量`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`INSERT INTO [MES_接口_生产计划_生产任务]`;`set @ErrMsg = '指派数量大于剩余未分配数量,派工失败'`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`if(@最晚开始时间 = '') set @最晚开始时间 = NULL`;`if(@计划开始时间 = '') set @计划开始时间 = NULL`;`if(@计划完成时间 = '') set @计划完成时间 = NULL`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET [指派对象编号] = @指派对象编号`。 +- `MES_OrderPlanned_SingleTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:查询、新增、更新、删除、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`、`@指派对象编号 nvarchar(50)`、`@指派对象 nvarchar(50)`、`@指派数量 int`、`@派工特殊说明 nvarchar(500)`、`@计划开始时间 nvarchar(50)`、`@计划完成时间 nvarchar(50)`、`@最晚开始时间 nvarchar(50)`、`@派工操作人 nvarchar(50)`。 主要返回字段线索:`@计划数量 = 计划数量`。 关键过滤/匹配条件:`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`FROM [MES_接口_生产计划_生产任务] WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`select @未指派数量_剩余 = 计划数量+@指派数量_Free from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`WHERE [订单编号] = @订单号 AND [订单行号] = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`set @指派数量_Free = @计划数量-@指派数量`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`INSERT INTO [MES_接口_生产计划_生产任务]`;`set @ErrMsg = '指派数量大于剩余未分配数量,派工失败'`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`if(@最晚开始时间 = '') set @最晚开始时间 = NULL`;`if(@计划开始时间 = '') set @计划开始时间 = NULL`;`if(@计划完成时间 = '') set @计划完成时间 = NULL`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET [指派对象编号] = @指派对象编号`。 +- `MES_OrderPlanned_DescriptionEdit` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int,`、`@订单行号 int,`、`@订单拆分内码 int,`、`@优先级 nvarchar(50)`、`@未完成说明 nvarchar(50)`、`@派工特殊说明 nvarchar(500)`、`@最后编辑人 nvarchar(500)`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`Update [MES_接口_生产计划_生产任务] set`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 + +## 29. src/views/ProductionManagement/AssembleTasksSum/index.vue + +**页面位置**:`src/views/ProductionManagement/AssembleTasksSum/index.vue` +**所属模块**:ProductionManagement / AssembleTasksSum +**源码行数**:532 + +### 页面功能 + +该页面汇总装配任务,按订单、工位、人员或状态统计装配执行情况。 + +页面可见的操作/字段包括 “查询”、“编辑”、“取 消”、“确 定”、“item.指南工位号”、“表单”、“序号”、“销售订单”、“生产订单”、“零件编码”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `MES_登录_工位与名称_查询`、`MES_ProductTask_WorkTimeSum`、`MES_ProductAdmin_Query`、`Prog_MES_LoadStations`、`MES_OrderPlanned_DescriptionEdit`、`MES_OrderPlanned_EditTaskPlanned` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `MES_登录_工位与名称_查询` -> `MES_ProductTask_WorkTimeSum` -> `MES_ProductAdmin_Query` -> `Prog_MES_LoadStations` -> `MES_OrderPlanned_DescriptionEdit` -> `MES_OrderPlanned_EditTaskPlanned` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`编辑`、`取 消`、`确 定`、`item.指南工位号`、`表单`、`序号`、`销售订单`、`生产订单`、`零件编码`、`产品名称`、`计划数`、`工序名称`、`总工时`、`占用情况`、`计划开始时间`、`计划完成时间`、`最晚开始时间` + +主要方法线索:`getDoing`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.completionTime ? this.completionTime[0` | `@计划开工_Start` | - | +| 参数 | `this.completionTime ? this.completionTime[1` | `@计划开工_End` | - | +| 参数 | `this.orderNo ` | `@订单号` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `'装配件'` | `@物料类型` | - | +| 参数 | `this.contractNo` | `@合同号` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.productCode` | `@产品编码` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.productName` | `@产品名称` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.processName` | `@工序名称` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.nature` | `@性质` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.completionTime ? this.completionTime[0` | `@要求完工日期1` | - | +| 参数 | `this.completionTime ? this.completionTime[1` | `@要求完工日期2` | - | +| 参数 | `this.productionStatus` | `@排产状态` | `[排产状态], [工序计划数量], 指派对象编号, 指派对象, 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, [派工状态], [外协通知]` | +| 参数 | `this.Doing.toString()` | `@工位` | - | +| 参数 | `this.currentRow.订单号` | `@订单号` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.currentRow.订单行号` | `@订单行号` | - | +| 参数 | `this.currentRow.拆分内码` | `@订单拆分内码` | - | +| 参数 | `this.editForm.优先级` | `@优先级` | - | +| 参数 | `this.editForm.未完成说明` | `@未完成说明` | - | +| 参数 | `this.editForm.派工特殊说明` | `@派工特殊说明` | - | +| 参数 | `this.$store.state.user.name` | `@最后编辑人` | - | +| 参数 | `editstr` | `@editstr` | - | +| 参数 | `taskInfo.订单号` | `@订单号` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `taskInfo.订单行号` | `@订单行号` | - | +| 参数 | `taskInfo.拆分内码` | `@订单拆分内码` | - | +| 参数 | `startTime` | `@计划开始时间` | - | +| 参数 | `endTime` | `@计划完成时间` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `销售订单` | - | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 显示列 | `生产订单` | - | `生产订单` | +| 显示列 | `零件编码` | - | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 显示列 | `产品名称` | - | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 显示列 | `计划数` | - | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 显示列 | `工序名称` | - | `TaskAID, 工序名称, sum(工时) as 总工时` | +| 显示列 | `总工时` | - | `TaskAID, 工序名称, sum(工时) as 总工时` | +| 显示列 | `占用情况` | - | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 显示列 | `计划开始时间` | - | `[排产状态], [工序计划数量], 指派对象编号, 指派对象, 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, [派工状态], [外协通知]` | +| 显示列 | `计划完成时间` | - | `[排产状态], [工序计划数量], 指派对象编号, 指派对象, 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, [派工状态], [外协通知]` | +| 显示列 | `最晚开始时间` | - | `[排产状态], [工序计划数量], 指派对象编号, 指派对象, 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, [派工状态], [外协通知]` | +| 显示列 | `要求完工日期` | - | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 显示列 | `收料` | - | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- FullCalendar + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 254 | 11(当前通用存储过程查询/执行) | `MES_登录_工位与名称_查询` | 查询/读取数据 | 查询 | 视图:`View_基础数据_工位` | +| 274 | 11(当前通用存储过程查询/执行) | `MES_ProductTask_WorkTimeSum` | 报工或工时处理 | 查询、处理报工/工时、处理计划/派工 | 未在 SQL 中解析到明确依赖 | +| 318 | 11(当前通用存储过程查询/执行) | `MES_ProductAdmin_Query` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 视图:`View_生产订单_MES` | +| 336 | 11(当前通用存储过程查询/执行) | `Prog_MES_LoadStations` | 查询/读取数据 | 查询、处理外协业务 | 表:`MES_资源主数据` | +| 373 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 453 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `MES_ProductTask_WorkTimeSum`:`select TaskAID, 工序名称, sum(工时) as 总工时 from YL_加工中心_操作记录表 where 工时 >0 group by TaskAID, 工序名称` +- `MES_ProductAdmin_Query`:`@排产状态 nvarchar(50) = '全部', `;`SELECT top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]`;`, [排产状态], [工序计划数量], 指派对象编号, 指派对象, 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, [派工状态], [外协通知]`;`, [优先级], [未完成说明], [序检], isnull([测试], 0) as [测试], isnull([入库], 0) as [入库], TaskAID`;`SELECT top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], '''' as 合同交货期, [计划完成] as 预计齐套时间, ''齐'' as 是否齐套, '''' as 齐套检测, ''是'' as 齐套锁料, [计划开始] as 备料日期, 0 as 加急`;`, [优先级], [未完成说明], [派工特殊说明], [最后编辑人], [最后编辑时间], TaskAID`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''` +- `MES_OrderPlanned_DescriptionEdit`:`@未完成说明 nvarchar(50) = '', `;`@派工特殊说明 nvarchar(500) = '', `;`Update [MES_接口_生产计划_生产任务] set`;`未完成说明 = @未完成说明, `;`派工特殊说明 = @派工特殊说明, ` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` + +### 数据库调用链 + +- `src/views/ProductionManagement/AssembleTasksSum/index.vue` -> `MES_登录_工位与名称_查询` -> 视图:`View_基础数据_工位` -> 查询/读取数据 +- `src/views/ProductionManagement/AssembleTasksSum/index.vue` -> `MES_ProductTask_WorkTimeSum` -> 未在 SQL 中解析到明确依赖 -> 报工或工时处理 +- `src/views/ProductionManagement/AssembleTasksSum/index.vue` -> `MES_ProductAdmin_Query` -> 视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/AssembleTasksSum/index.vue` -> `Prog_MES_LoadStations` -> 表:`MES_资源主数据` -> 查询/读取数据 +- `src/views/ProductionManagement/AssembleTasksSum/index.vue` -> `MES_OrderPlanned_DescriptionEdit` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/ProductionManagement/AssembleTasksSum/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `MES_登录_工位与名称_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_基础数据_工位`。 主要返回字段线索:`[VisCode] as 工位代码`、`[VisCode] as MesWebCode`、`[VisCode] as 工位号`、`[Name] as 指南工位号`、`[Name] as 工位名称`。 排序/分组/分页线索:`order by [VisCode]`。 +- `MES_ProductTask_WorkTimeSum` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@计划开工_Start nvarchar(50)`、`@计划开工_End nvarchar(50)`。 主要返回字段线索:`TaskAID, 工序名称, sum(工时) as 总工时`。 关键过滤/匹配条件:`select TaskAID, 工序名称, sum(工时) as 总工时 from YL_加工中心_操作记录表 where 工时 >0 group by TaskAID, 工序名称`。 排序/分组/分页线索:`select TaskAID, 工序名称, sum(工时) as 总工时 from YL_加工中心_操作记录表 where 工时 >0 group by TaskAID, 工序名称`。 +- `MES_ProductAdmin_Query` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:视图:`View_生产订单_MES`。 入参/分页参数:`@订单号 int`、`@物料类型 nvarchar(50)`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@性质 nvarchar(50)`、`@要求完工日期1 nvarchar(50)`、`@要求完工日期2 nvarchar(50)`、`@排产状态 nvarchar(50)`、`@工位 nvarchar(500)`。 主要返回字段线索:`top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]`、`[排产状态], [工序计划数量], 指派对象编号, 指派对象, 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, [派工状态], [外协通知]`、`[优先级], [未完成说明], [序检], isnull([测试], 0) as [测试], isnull([入库], 0) as [入库], TaskAID`。 关键过滤/匹配条件:`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'''`;`if(@订单号>0)set @selectStrWhere = @selectStrWhere + ' and [订单编号] = '+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 [工序名称] = '''+@工序名称+''''`;`if(@性质'')set @selectStrWhere = @selectStrWhere + ' and [性质] = '''+@性质+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@排产状态 = '未完成')set @selectStrWhere = @selectStrWhere + ' and isnull([排产状态], 0) = 0'`。 关键写入/状态处理语句线索:`set @selectStr = '`;`if(@订单号>0)set @selectStrWhere = @selectStrWhere + ' and [订单编号] = '+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 [工序名称] = '''+@工序名称+''''`;`if(@性质'')set @selectStrWhere = @selectStrWhere + ' and [性质] = '''+@性质+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@排产状态 = '未完成')set @selectStrWhere = @selectStrWhere + ' and isnull([排产状态], 0) = 0'`;`else if(@排产状态 = '已完成')set @selectStrWhere = @selectStrWhere + ' and [排产状态] = 1'`;`if(@物料类型 = '自制件') set @selectStrWhere = @selectStrWhere + ' and [不装配] ''否'''`。 +- `Prog_MES_LoadStations` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理外协业务。 读取/关联对象:表:`MES_资源主数据`。 主要返回字段线索:`[VisCode], [Name] as OPName`。 关键过滤/匹配条件:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 排序/分组/分页线索:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 +- `MES_OrderPlanned_DescriptionEdit` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int,`、`@订单行号 int,`、`@订单拆分内码 int,`、`@优先级 nvarchar(50)`、`@未完成说明 nvarchar(50)`、`@派工特殊说明 nvarchar(500)`、`@最后编辑人 nvarchar(500)`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`Update [MES_接口_生产计划_生产任务] set`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 + +## 30. src/views/ProductionManagement/AssemblyCenter/index.vue + +**页面位置**:`src/views/ProductionManagement/AssemblyCenter/index.vue` +**所属模块**:ProductionManagement / AssemblyCenter +**源码行数**:4838 + +### 页面功能 + +该页面是装配生产执行主界面。装配人员按工位查询装配任务,处理开工、结束/报工、送检、缺料查询、收检记录、图纸查看和退库等动作,并会读取 SAP 生产订单信息辅助判断。 + +页面可见的操作/字段包括 “查询 --> 缺料”、“上一个 下一个”、“删除当前记录 关闭”、“上一个 下一个 保存当前记录 删除当前记录 关闭”、“确定 关闭”、“取 消”、“确 定”、“新增异常工时”、“编辑”、“取消”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `生产管理_获取人员绑定`、`加急订单_加急明细查询`、`MES_人员工时记录_获取进行中任务2`、`MES_人员工时记录_获取进行中任务`、`工时校验_获取订单列表`、`异常工时_新增操作记录` 等过程 取数或提交业务动作。 + +### 页面流程图 + +装配中心执行流程: + +```mermaid +flowchart LR + A[选择工位/人员] --> B[MES_ProductCenter_GetTask_zp 查询装配任务] + B --> C[查看缺料/图纸/工序] + C --> D[MES_人员工时记录_开始 或生产任务开始] + D --> E[执行装配] + E --> F[MES_ProductTask_SendInspection 送检/报工] + F --> G[收检记录/质检数据] + G --> H[读取 SAP ProductionOrders 辅助判断] + H --> I[刷新装配任务] +``` + + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询 --> 缺料`、`上一个 下一个`、`删除当前记录 关闭`、`上一个 下一个 保存当前记录 删除当前记录 关闭`、`确定 关闭`、`取 消`、`确 定`、`新增异常工时`、`编辑`、`取消`、`关闭`、`确定`、`全部`、`待执行`、`可执行`、`已开工`、`已完成`、`item.指南工位号` + +主要方法线索:`handletaskChange` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `row.零件编码` | `@物料编号` | `docentry as 订单编号, itemcode as 物料编号, 加急数量` | +| 参数 | `userName` | `@用户ID` | - | +| 参数 | `orderId` | `@订单编号` | `订单编号, ` | +| 参数 | `this.TaskAID ` | `@TaskAID` | - | +| 参数 | `this.orderNo2 ` | `@订单号` | `[订单编号] as 订单号, ` | +| 参数 | `this.productCode2` | `@零件编号` | - | +| 参数 | `this.productionStatus2 ` | `@生产状态` | - | +| 参数 | `this.Doing` | `@工位名称` | - | +| 参数 | `this.$store.state.user.id` | `@用户ID` | - | +| 参数 | `this.plannum` | `@计划号` | - | +| 参数 | `this.salenum` | `@销售订单` | - | +| 参数 | `""` | `@计划开工_Start` | - | +| 参数 | `""` | `@计划开工_End` | - | +| 参数 | `this.completionTime ? this.completionTime[0` | `@计划开工_Start` | - | +| 参数 | `this.completionTime ? this.completionTime[1` | `@计划开工_End` | - | +| 参数 | `row.零件编码` | `@ItemCode` | - | +| 参数 | `row.订单号` | `@订单号` | `[订单编号] as 订单号, ` | +| 参数 | `taskAID` | `@TaskAID` | - | +| 参数 | `userId` | `@用户ID` | - | +| 参数 | `userName` | `@用户名` | - | +| 参数 | `userName` | `@操作人` | - | +| 参数 | `this.workendData.备注` | `@备注` | - | +| 参数 | `this.workendData.工序说明` | `@工序说明` | - | +| 参数 | `this.workendData.异常说明` | `@异常说明` | - | +| 参数 | `0` | `@本次检数` | `@检验数 = ISNULL(本次检数, 0)` | +| 参数 | `isOvertime` | `@是否加班` | - | +| 参数 | `ordinaryPersons` | `@加班人员` | - | +| 参数 | `specialPersons` | `@特殊加班人员` | - | +| 参数 | `isRestDay` | `@是否休息日` | - | +| 参数 | `isLegalRestDay` | `@是否法定休息日` | - | +| 参数 | `shiftStandardHours` | `@班次标准工时` | - | +| 参数 | `row.TaskAID` | `@TaskAID` | - | +| 参数 | `this.$store.state.user.name` | `@optor` | - | +| 参数 | `this.assistNumber` | `@recievCount` | - | +| 参数 | `this.receiveCheckData.TaskAID` | `@TaskAID` | - | +| 参数 | `6` | `@检测类型编号` | - | +| 参数 | `"收检"` | `@质检类型` | - | +| 参数 | `this.receiveCheckData.零件名称` | `@零件名称` | - | +| 参数 | `this.receiveCheckData.内部合同号` | `@内部合同号` | - | +| 参数 | `this.receiveCheckData.零件编码` | `@零件编码` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- SAP B1 Service Layer(`src/api/b1s.js`) +- TM/OpenAPI 接口(`src/api/tm.js`) +- PDF/图纸预览或导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 2196 | 11(当前通用存储过程查询/执行) | `生产管理_获取人员绑定` | 基础权限/人员数据处理 | 查询 | 表:`MES_资源主数据`、`工位人员绑定表` | +| 2277 | 11(当前通用存储过程查询/执行) | `加急订单_加急明细查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象、处理计划/派工 | 表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` | +| 2290 | 11(当前通用存储过程查询/执行) | `MES_人员工时记录_获取进行中任务2` | 报工或工时处理 | 查询、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表` | +| 2324 | 11(当前通用存储过程查询/执行) | `MES_人员工时记录_获取进行中任务` | 报工或工时处理 | 查询、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表` | +| 2398 | 11(当前通用存储过程查询/执行) | `工时校验_获取订单列表` | 报工或工时处理 | 查询、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划` | +| 2444 | 11(当前通用存储过程查询/执行) | `异常工时_新增操作记录` | 新增业务数据 | 查询、新增、处理报工/工时 | 表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES` | +| 2477 | 11(当前通用存储过程查询/执行) | `工时校验_获取订单工序` | 报工或工时处理 | 查询、处理报工/工时 | 视图:`View_生产订单_MES` | +| 2521 | 11(当前通用存储过程查询/执行) | `MES_登录_工位与名称_查询` | 查询/读取数据 | 查询 | 视图:`View_基础数据_工位` | +| 2575 | 11(当前通用存储过程查询/执行) | `Prog_MES_LoadProcess` | 查询/读取数据 | 查询 | 表:`基础表_工序` | +| 2714 | 11(当前通用存储过程查询/执行) | `MES_ProductCenter_GetTask_zp` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`登录基础数据_人员信息`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 2818 | 11(当前通用存储过程查询/执行) | `MES_ProductTask_WorkTimeSum` | 报工或工时处理 | 查询、处理报工/工时、处理计划/派工 | 未在 SQL 中解析到明确依赖 | +| 2850 | 11(当前通用存储过程查询/执行) | `生产管理_装配中心_缺料查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_OPKL_MissQty` | +| 2883 | 12(当前通用存储过程写入/业务动作) | `MES_人员工时记录_开始` | 报工或工时处理 | 查询、新增、更新、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`;视图:`View_生产订单_MES` | +| 3204 | 12(当前通用存储过程写入/业务动作) | `MES_人员工时记录_结束` | 报工或工时处理 | 查询、新增、更新、处理报工/工时、处理质检数据、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表`、`班次表`、`YL_加工中心_报工记录` | +| 3276 | 12(当前通用存储过程写入/业务动作) | `MES_ProductTask_SendInspection` | 业务存储过程调用 | 查询、新增、更新、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`YL_加工中心_操作记录表`、`YL_加工中心_报工记录`;视图:`View_生产订单_MES` | +| 3323 | 11(当前通用存储过程查询/执行) | `加工中心_收检_读取收检记录` | 查询/读取数据 | 查询、处理质检数据、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 3412 | 12(当前通用存储过程写入/业务动作) | `MES_QulityInspection_ReceiveCheck` | 质量检验处理 | 查询、新增、更新、处理质检数据、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录` | +| 3450 | 11(当前通用存储过程查询/执行) | `加工中心_异常工时_获取操作记录列表` | 报工或工时处理 | 查询、处理报工/工时 | 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` | +| 3504 | 11(当前通用存储过程查询/执行) | `加工中心_修改工时_保存修改记录` | 更新/保存业务数据 | 更新、处理报工/工时 | 表:`YL_加工中心_操作记录表` | +| 3539 | 11(当前通用存储过程查询/执行) | `生产管理_加工中心_生产发料查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_OWOR_OIGE` | +| 3593 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_零件图纸` | +| 3627 | 11(当前通用存储过程查询/执行) | `工艺管理_工艺维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_工艺图纸` | +| 3668 | 12(当前通用存储过程写入/业务动作) | `生产管理_加工中心_退库` | 业务存储过程调用 | 查询、新增、处理质检数据 | 表:`质量检验_质检任务_SAP` | +| 3914 | 11(当前通用存储过程查询/执行) | `Prog_MES_GetProductOrder_byAID` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 4144 | 12(当前通用存储过程写入/业务动作) | `MES_QulityInspection_CheckItemData_Save` | 更新/保存业务数据 | 查询、新增、更新、处理质检数据、处理计划/派工 | 表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据` | +| 4232 | 11(当前通用存储过程查询/执行) | `MES_QulityInspection_GetItemStandard` | 查询/读取数据 | 查询、处理质检数据 | 表:`YL_质量检验_检测标准` | +| 4284 | 11(当前通用存储过程查询/执行) | `Prog_MES_GetProductOrder_byAID` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 4327 | 11(当前通用存储过程查询/执行) | `MES_QulityInspection_GetItemStandard` | 查询/读取数据 | 查询、处理质检数据 | 表:`YL_质量检验_检测标准` | +| 4529 | 12(当前通用存储过程写入/业务动作) | `MES_QulityInspection_CheckItemData_Save` | 更新/保存业务数据 | 查询、新增、更新、处理质检数据、处理计划/派工 | 表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据` | + +### 与 SAP 的交互 + +页面直接 SAP/接口调用: +- 第 3561 行:`getB1("/ProductionOrders")` +- 第 3730 行:`posttm("/stocktask/task/issueordertask")` +存储过程内读取 SAP B1 数据库对象: +- 加急订单_加急明细查询: SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL +- 生产管理_装配中心_缺料查询: SAP.SBO_YL.dbo.UBT_OPKL_MissQty +- 生产管理_加工中心_生产发料查询: SAP.SBO_YL.dbo.UBT_OWOR_OIGE + +### SAP 接口级说明 + +| 行号 | 方法 | 接口 | 调用时机/影响判断 | 提交字段线索 | +|---:|---|---|---|---| +| 3561 | `getB1` | `/ProductionOrders` | 读取或更新 SAP 生产订单。失败会导致 MES 与 SAP 订单状态/工序资源不同步。 | `filter`、`数据`、`lines`、`请求失败` | +| 3730 | `posttm` | `/stocktask/task/issueordertask` | 调用外部接口,失败会影响对应外部系统同步。 | `原始数据`、`doc_date`、`doc_type`、`external_num`、`task_items` | + +### 状态流转说明 + +- `生产管理_获取人员绑定`:`AND b.绑定状态 = 1;` +- `加急订单_加急明细查询`:`SELECT docentry as 订单编号, itemcode as 物料编号, 加急数量 from SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` +- `MES_人员工时记录_获取进行中任务2`:`CREATE PROCEDURE [dbo].[MES_人员工时记录_获取进行中任务2]`;`pt.工序名称 AS 任务工序名称, `;`pt.任务状态, `;`pt.完成数量, `;`pt.计划完成时间 AS 计划完成, `;`FROM [dbo].[YL_加工中心_操作记录表] t`;`LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID`;`t.操作类别 = '开始加工'` +- `MES_人员工时记录_获取进行中任务`:`CREATE PROCEDURE [dbo].[MES_人员工时记录_获取进行中任务]`;`pt.工序名称 AS 任务工序名称, `;`pt.任务状态, `;`pt.完成数量, `;`pt.计划完成时间 AS 计划完成, `;`FROM [dbo].[YL_加工中心_操作记录表] t`;`LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID`;`AND t.操作类别 = '开始加工'` +- `异常工时_新增操作记录`:`INSERT INTO [dbo].[YL_加工中心_操作记录表] (`;`操作描述, 开始时间, 结束时间, 总时长, 报工日期, 已报工, 不装配, ` +- `MES_ProductCenter_GetTask_zp`:`@生产状态 int = -1, `;`DECLARE @whereStr nvarchar(max) = ' WHERE 排产状态 = 1 '`;`派工特殊说明, `;`case when isnull([加急状态], 0) = 1 then ''加急'' else ''否'' end as [加急], `;`[二次派工], `;`[计划完成时间] as 计划完成, `;`isnull([完成数量], 0) as 完成数量, `;`when isnull(发料状态, 0) = 1 then ''发料齐套''` +- `MES_ProductTask_WorkTimeSum`:`select TaskAID, 工序名称, sum(工时) as 总工时 from YL_加工中心_操作记录表 where 工时 >0 group by TaskAID, 工序名称` +- `生产管理_装配中心_缺料查询`:`select * from SAP.SBO_YL.dbo.UBT_OPKL_MissQty where DocEntry = @订单号` +- `MES_人员工时记录_开始`:`declare @任务状态 int = -1`;`FROM[dbo].[MES_接口_生产计划_生产任务]`;`SELECT 1 FROM YL_加工中心_操作记录表`;`AND 操作类别 = '开始加工'`;`select @任务状态 = isnull(任务状态, 0)from View_生产订单_MES where TaskAID = @TaskAID`;`if(@任务状态 = 1)`;`UPDATE MES_接口_生产计划_生产任务`;`任务状态 = '2', ` +- `MES_人员工时记录_结束`:`FROM [dbo].[MES_接口_生产计划_生产任务]`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`FROM YL_加工中心_操作记录表`;`AND 操作类别 = '开始加工'`;`UPDATE YL_加工中心_操作记录表`;`操作描述 = '用户 ' + @用户名 + ' 结束加工,' +`;`INSERT INTO [dbo].[YL_加工中心_报工记录]`;`INSERT INTO [dbo].[YL_加工中心_操作记录表] (` +- `MES_ProductTask_SendInspection`:`declare @任务状态 int`;`declare @完成数量 int`;`Update MES_接口_生产计划_生产任务`;`set 完成数量 = isnull(完成数量, 0)+@recievCount, `;`select @分配数量 = 指派数量, @完成数量 = 完成数量, @订单编号 = 订单编号, @工位名称 = 指派对象 from MES_接口_生产计划_生产任务 where AID = @TaskAID`;`if(@完成数量 = @分配数量)`;`set 任务状态 = 4, `;`INSERT INTO [dbo].[YL_加工中心_操作记录表]` +- `加工中心_收检_读取收检记录`:`CREATE PROCEDURE [dbo].[加工中心_收检_读取收检记录]`;`declare @完成数量 int`;`select @已检验数量 = sum(检验数量) OVER() from YL_质量检验_质检记录 where TaskAID = @TaskAID and 质检类型 = '收检'`;`select @完成数量 = 完成数量 from [dbo].[MES_接口_生产计划_生产任务] where AID = @TaskAID`;`FROM [dbo].[YL_质量检验_质检记录] qc`;`select isnull(@已检验数量, 0), isnull(@完成数量, 0), isnull(@上序合格数, 0), @订单行号` +- `MES_QulityInspection_ReceiveCheck`:`@质检类型 NVARCHAR(50), `;`FROM [dbo].[MES_接口_生产计划_生产任务]`;`FROM [YL_MESDB].[dbo].[YL_质量检验_质检记录] qc`;`0 AS 清零任务数`;`INSERT INTO [YL_MESDB].[dbo].[YL_质量检验_质检记录] (`;`[质检类型], `;`@质检类型, `;`INNER JOIN [dbo].[MES_接口_生产计划_生产任务] task ON qc.TaskAID = task.AID` +- `加工中心_异常工时_获取操作记录列表`:`CREATE PROCEDURE [dbo].[加工中心_异常工时_获取操作记录列表]`;`o.实际工时 as 加工工时, `;`o.已报工, `;`FROM [dbo].[YL_加工中心_操作记录表] o` +- `加工中心_修改工时_保存修改记录`:`CREATE PROCEDURE [dbo].[加工中心_修改工时_保存修改记录]`;`update [dbo].[YL_加工中心_操作记录表]` +- `生产管理_加工中心_生产发料查询`:`CREATE PROCEDURE [dbo].[生产管理_加工中心_生产发料查询]`;`select * from SAP.SBO_YL.dbo.UBT_OWOR_OIGE where 生产订单号 = @生产订单号` +- `生产管理_加工中心_退库`:`CREATE PROCEDURE [dbo].[生产管理_加工中心_退库]`;`select @行号 = max(isnull(行号, 0)) from [dbo].[质量检验_质检任务_SAP] where [订单编号] = @生产订单号 and [订单类型] = '202-60'`;`insert into [dbo].[质量检验_质检任务_SAP] ( [订单编号]` +- `Prog_MES_GetProductOrder_byAID`:`, [加急状态]`;`, [排产状态]`;`, [计划完成时间]`;`, [派工状态]`;`, [派工时间]`;`, [任务状态]`;`, [未完成说明]`;`, [派工特殊说明]` +- `MES_QulityInspection_CheckItemData_Save`:`@质检类型 nvarchar(100) = '', `;`FROM [dbo].[YL_质量检验_质检记录]`;`AND 质检类型 = @质检类型`;`INSERT INTO [dbo].[YL_质量检验_质检记录](`;`TaskAID, 质检类型, 检测类型编号, 零件名称, 内部合同号, `;`@TaskAID, @质检类型, @检测类型编号, @零件名称, @内部合同号, `;`UPDATE [dbo].[YL_质量检验_质检记录]`;`FROM [dbo].[YL_质量检验_质检记录_检测零件]` +- `Prog_MES_GetProductOrder_byAID`:`, [加急状态]`;`, [排产状态]`;`, [计划完成时间]`;`, [派工状态]`;`, [派工时间]`;`, [任务状态]`;`, [未完成说明]`;`, [派工特殊说明]` +- `MES_QulityInspection_CheckItemData_Save`:`@质检类型 nvarchar(100) = '', `;`FROM [dbo].[YL_质量检验_质检记录]`;`AND 质检类型 = @质检类型`;`INSERT INTO [dbo].[YL_质量检验_质检记录](`;`TaskAID, 质检类型, 检测类型编号, 零件名称, 内部合同号, `;`@TaskAID, @质检类型, @检测类型编号, @零件名称, @内部合同号, `;`UPDATE [dbo].[YL_质量检验_质检记录]`;`FROM [dbo].[YL_质量检验_质检记录_检测零件]` + +### 数据库调用链 + +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `生产管理_获取人员绑定` -> 表:`MES_资源主数据`、`工位人员绑定表` -> 基础权限/人员数据处理 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `加急订单_加急明细查询` -> 表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` -> 查询/读取数据 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `MES_人员工时记录_获取进行中任务2` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表` -> 报工或工时处理 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `MES_人员工时记录_获取进行中任务` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表` -> 报工或工时处理 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `工时校验_获取订单列表` -> 表:`MES_接口_生产计划` -> 报工或工时处理 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `异常工时_新增操作记录` -> 表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES` -> 新增业务数据 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `工时校验_获取订单工序` -> 视图:`View_生产订单_MES` -> 报工或工时处理 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `MES_登录_工位与名称_查询` -> 视图:`View_基础数据_工位` -> 查询/读取数据 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `Prog_MES_LoadProcess` -> 表:`基础表_工序` -> 查询/读取数据 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `MES_ProductCenter_GetTask_zp` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`登录基础数据_人员信息`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `MES_ProductTask_WorkTimeSum` -> 未在 SQL 中解析到明确依赖 -> 报工或工时处理 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `生产管理_装配中心_缺料查询` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_OPKL_MissQty` -> 查询/读取数据 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `MES_人员工时记录_开始` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`;视图:`View_生产订单_MES` -> 报工或工时处理 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `MES_人员工时记录_结束` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表`、`班次表`、`YL_加工中心_报工记录` -> 报工或工时处理 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `MES_ProductTask_SendInspection` -> 表:`MES_接口_生产计划`、`YL_加工中心_操作记录表`、`YL_加工中心_报工记录`;视图:`View_生产订单_MES` -> 业务存储过程调用 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `加工中心_收检_读取收检记录` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `MES_QulityInspection_ReceiveCheck` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录` -> 质量检验处理 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `加工中心_异常工时_获取操作记录列表` -> 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` -> 报工或工时处理 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `加工中心_修改工时_保存修改记录` -> 表:`YL_加工中心_操作记录表` -> 更新/保存业务数据 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `生产管理_加工中心_生产发料查询` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_OWOR_OIGE` -> 查询/读取数据 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `工艺管理_图纸维护_查看图纸` -> 表:`物料基础数据_零件图纸` -> 查询/读取数据 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `工艺管理_工艺维护_查看图纸` -> 表:`物料基础数据_工艺图纸` -> 查询/读取数据 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `生产管理_加工中心_退库` -> 表:`质量检验_质检任务_SAP` -> 业务存储过程调用 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `Prog_MES_GetProductOrder_byAID` -> 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `MES_QulityInspection_CheckItemData_Save` -> 表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据` -> 更新/保存业务数据 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `MES_QulityInspection_GetItemStandard` -> 表:`YL_质量检验_检测标准` -> 查询/读取数据 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `Prog_MES_GetProductOrder_byAID` -> 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `MES_QulityInspection_GetItemStandard` -> 表:`YL_质量检验_检测标准` -> 查询/读取数据 +- `src/views/ProductionManagement/AssemblyCenter/index.vue` -> `MES_QulityInspection_CheckItemData_Save` -> 表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据` -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `生产管理_获取人员绑定` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 基础权限/人员数据处理。 数据库处理摘要:查询。 读取/关联对象:表:`MES_资源主数据`、`工位人员绑定表`。 入参/分页参数:`@操作人ID NVARCHAR(50)`。 主要返回字段线索:`m.[name] AS 工位名称`。 关键过滤/匹配条件:`WHERE`;`AND b.绑定状态 = 1;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `加急订单_加急明细查询` 属于 加急任务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL`。 入参/分页参数:`@物料编号 nvarchar(50)`。 主要返回字段线索:`docentry as 订单编号, itemcode as 物料编号, 加急数量`。 关键过滤/匹配条件:`where itemcode = @物料编号`。 实现特征:读取 SAP 数据库对象。 +- `MES_人员工时记录_获取进行中任务2` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表`。 入参/分页参数:`@用户ID NVARCHAR(50)`。 主要返回字段线索:`t.AID AS 操作记录ID, `、`t.TaskAID, `、`t.操作人 AS UserName, `、`t.开始时间 AS StartTime, `、`t.操作类别, `、`t.操作类别编号, `、`t.工序名称, `、`t.工位名称, `、`t.订单编号, `、`t.物料编号, `。 关键过滤/匹配条件:`WHERE`;`AND t.结束时间 IS NULL`;`and t.工位名称 like '%装配%'`;`and t.操作数值 is not null`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY t.开始时间 DESC;`。 实现特征:异常捕获。 +- `MES_人员工时记录_获取进行中任务` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表`。 入参/分页参数:`@用户ID NVARCHAR(50)`。 主要返回字段线索:`t.AID AS 操作记录ID, `、`t.TaskAID, `、`t.操作人 AS UserName, `、`t.开始时间 AS StartTime, `、`t.操作类别, `、`t.操作类别编号, `、`t.工序名称, `、`t.工位名称, `、`t.订单编号, `、`t.物料编号, `。 关键过滤/匹配条件:`WHERE t.操作人 = @用户ID`;`AND t.操作类别 = '开始加工'`;`AND t.结束时间 IS NULL`;`and t.工位名称 like '%装配%'`;`and t.操作数值 is not null`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY t.开始时间 DESC;`。 实现特征:异常捕获。 +- `工时校验_获取订单列表` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 入参/分页参数:`@订单编号 nvarchar(50)`。 主要返回字段线索:`DISTINCT top 20`、`订单编号, `、`物料编号 as 零件编码, `、`物料描述 as 零件名称`。 关键过滤/匹配条件:`FROM [dbo].[MES_接口_生产计划] WHERE 订单编号 LIKE '%' + @订单编号 + '%' OR @订单编号 = ''`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY 订单编号 ;`。 +- `异常工时_新增操作记录` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 新增业务数据。 数据库处理摘要:查询、新增、处理报工/工时。 读取/关联对象:表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES`。 写入或更新对象:`YL_加工中心_操作记录表`。 入参/分页参数:`@操作类别 nvarchar(50),`、`@订单编号 nvarchar(50),`、`@物料编号 nvarchar(50),`、`@物料描述 nvarchar(50),`、`@工序名称 nvarchar(50),`、`@操作人 nvarchar(50),`、`@开始时间 datetime,`、`@结束时间 datetime,`、`@操作内容 nvarchar(500)`、`@操作描述 nvarchar(2000)`、`@TaskAID nvarchar(2000)`。 主要返回字段线索:`@工位名称 = 指派对象`。 关键过滤/匹配条件:`select @工位名称 = 指派对象 from [dbo].[View_生产订单_MES] where TaskAID = @TaskAID`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @工时 = DATEDIFF(SECOND, @开始时间, @结束时间);`;`INSERT INTO [dbo].[YL_加工中心_操作记录表] (`。 实现特征:异常捕获。 +- `工时校验_获取订单工序` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:视图:`View_生产订单_MES`。 入参/分页参数:`@订单编号 int`。 主要返回字段线索:`工序名称, 订单行号 as 工艺顺序, 指派对象, TaskAID, 顺序编号, 指派对象 as 工位名称, VisCode`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单编号`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY 订单行号;`。 +- `MES_登录_工位与名称_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_基础数据_工位`。 主要返回字段线索:`[VisCode] as 工位代码`、`[VisCode] as MesWebCode`、`[VisCode] as 工位号`、`[Name] as 指南工位号`、`[Name] as 工位名称`。 排序/分组/分页线索:`order by [VisCode]`。 +- `Prog_MES_LoadProcess` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`基础表_工序`。 主要返回字段线索:`[工艺编号], [工序名称]`。 排序/分组/分页线索:`SELECT [工艺编号], [工序名称] FROM [基础表_工序] ORDER BY [工艺编号]`。 +- `MES_ProductCenter_GetTask_zp` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`登录基础数据_人员信息`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@TaskAID int`、`@订单号 int`、`@零件编号 nvarchar(50)`、`@计划开工_Start nvarchar(50)`、`@计划开工_End nvarchar(50)`、`@生产状态 int`、`@工位名称 nvarchar(50)`、`@用户ID nvarchar(50)`、`@计划号 nvarchar(50)`、`@销售订单 nvarchar(50)`。 主要返回字段线索:`TaskAID, `、`[订单编号] as 订单号, `、`合同号, `、`自制件属性, `、`加急总数, `、`派工特殊说明, `、`[订单拆分内码], `、`[订单行号], `、`[开工时间], `、`[物料编号] as 零件编码, `。 关键过滤/匹配条件:`DECLARE @whereStr nvarchar(max) = ' WHERE 排产状态 = 1 '`;`WHERE next_task.[订单编号] = main.[订单编号]`;`AND next_task.[订单行号] = main.[订单行号] + 1`;`AND next_task.[排产状态] = 1`;`WHERE b.订单编号 = main.[订单编号]`;`AND b.订单行号 = main.[订单行号] - 1`;`AND a.检测类型编号 = 6`;`WHERE EXISTS (`;`WHERE b.订单编号 = main.订单编号`;`AND b.订单行号 = main.订单行号`。 关键写入/状态处理语句线索:`SET @whereStr = @whereStr + ' AND [指派对象] ''外协'' AND [指派对象] LIKE ''%装配%'''`;`SET @whereStr = @whereStr + ' AND [订单编号] = ' + CONVERT(VARCHAR(10), @订单号)`;`SET @whereStr = @whereStr + ' AND [计划号] = '''+@计划号+''''`;`SET @whereStr = @whereStr + ' AND [合同号] LIKE ''%' + @销售订单 + '%'''`;`SET @whereStr = @whereStr + ' AND [TaskAID] = ' + CONVERT(VARCHAR(10), @TaskAID)`;`SET @whereStr = @whereStr + ' AND [物料编号] LIKE ''%' + @零件编号 + '%'''`;`SET @whereStr = @whereStr + ' AND [计划开始时间] > = ''' + @计划开工_Start + ''''`;`SET @whereStr = @whereStr + ' AND [计划开始时间] < = ''' + @计划开工_End + ''''`;`SET @whereStr = @whereStr +`;`SET @whereStr = @whereStr + ' AND ISNULL(任务状态, 0) IN (0, 1, 2) '`;`SET @whereStr = @whereStr + ' AND ISNULL(任务状态, 0) = 0 '`;`SET @whereStr = @whereStr + ' AND ISNULL(任务状态, 0) = 1 '`。 排序/分组/分页线索:`ORDER BY next_task.[订单行号]) AS 下序名称, `;`SET @selStr = @selStr + @whereStr + ' ORDER BY [计划开始时间], [订单编号], [阶段标识]'`。 +- `MES_ProductTask_WorkTimeSum` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@计划开工_Start nvarchar(50)`、`@计划开工_End nvarchar(50)`。 主要返回字段线索:`TaskAID, 工序名称, sum(工时) as 总工时`。 关键过滤/匹配条件:`select TaskAID, 工序名称, sum(工时) as 总工时 from YL_加工中心_操作记录表 where 工时 >0 group by TaskAID, 工序名称`。 排序/分组/分页线索:`select TaskAID, 工序名称, sum(工时) as 总工时 from YL_加工中心_操作记录表 where 工时 >0 group by TaskAID, 工序名称`。 +- `生产管理_装配中心_缺料查询` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_OPKL_MissQty`。 入参/分页参数:`@ItemCode nvarchar(500),`、`@订单号 int`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`select * from SAP.SBO_YL.dbo.UBT_OPKL_MissQty where DocEntry = @订单号`。 实现特征:读取 SAP 数据库对象。 +- `MES_人员工时记录_开始` 属于 系统基础资料/权限,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、新增、更新、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`;视图:`View_生产订单_MES`。 写入或更新对象:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表`。 入参/分页参数:`@TaskAID INT,`、`@用户ID NVARCHAR(50),`、`@用户名 NVARCHAR(50),`、`@操作人 NVARCHAR(50)`。 主要返回字段线索:`@订单编号 = ISNULL(订单编号, ''), `、`@物料编号 = ISNULL(物料编码, ''), `、`@物料描述 = ISNULL(物料名称, ''), `、`@工序名称 = ISNULL(工序名称, ''), `、`@工位名称 = ISNULL(指派对象, ''), `、`@阶段标识 = ISNULL(顺序编号, -1)`。 关键过滤/匹配条件:`WHERE AID = @TaskAID`;`WHERE TaskAID = @TaskAID`;`AND 操作人 = @用户名`;`AND 操作类别 = '开始加工'`;`AND 结束时间 IS NULL`;`select @任务状态 = isnull(任务状态, 0)from View_生产订单_MES where TaskAID = @TaskAID`。 关键写入/状态处理语句线索:`UPDATE MES_接口_生产计划_生产任务`;`SET`;`INSERT INTO YL_加工中心_操作记录表 (`。 实现特征:异常捕获。 +- `MES_人员工时记录_结束` 属于 系统基础资料/权限,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、新增、更新、处理报工/工时、处理质检数据、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表`、`班次表`、`YL_加工中心_报工记录`。 写入或更新对象:`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表`、`YL_加工中心_报工记录`。 入参/分页参数:`@TaskAID INT,`、`@用户ID NVARCHAR(50),`、`@用户名 NVARCHAR(50),`、`@操作人 NVARCHAR(50),`、`@备注 NVARCHAR(200)`、`@工序说明 NVARCHAR(200)`、`@异常说明 NVARCHAR(200)`、`@本次检数 NVARCHAR(200)`、`@是否加班 INT`、`@加班人员 NVARCHAR(500)`、`@特殊加班人员 NVARCHAR(500)`、`@是否休息日 INT`、`@是否法定休息日 INT`、`@班次标准工时 NVARCHAR`。 主要返回字段线索:`@订单编号 = ISNULL(订单编号, ''), `、`@物料编号 = ISNULL(物料编码, ''), `、`@物料描述 = ISNULL(物料名称, ''), `、`@工序名称 = ISNULL(工序名称, ''), `、`@工位名称 = ISNULL(指派对象, ''), `、`@阶段标识 = ISNULL(顺序编号, -1), `、`@检验数 = ISNULL(本次检数, 0)`。 关键过滤/匹配条件:`WHERE AID = @TaskAID`;`WHERE TaskAID = @TaskAID`;`AND 操作人 = @用户名`;`AND 操作类别 = '开始加工'`;`AND 结束时间 IS NULL`;`WHERE 班次名称 = '白班'`;`IF @是否休息日 = 1 OR @是否法定休息日 = 1`;`WHERE AID = @开始记录ID`;`IF @是否法定休息日 = 1 AND @是否加班 = 0`;`ELSE IF @是否休息日 = 1 AND @是否加班 = 0`。 关键写入/状态处理语句线索:`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET 本次检数 = ISNULL(@检验数, 0) + ISNULL(@本次检数, 0)`;`SET @白班结束时间 = '16:30:00'`;`SET @白班结束时间_完整 = CAST(CAST(@结束时间 AS DATE) AS DATETIME) + CAST(@白班结束时间 AS DATETIME)`;`SET @加班时长秒 = @总工时`;`SET @加班开始时间 = @开始时间`;`SET @工作时间 = 0`;`SET @工作时间 = @总工时`;`SET @报工开始时间 = @开始时间`;`SET @报工结束时间 = @结束时间`;`SET @加班时长秒 = 0`;`SET @加班开始时间 = NULL`。 排序/分组/分页线索:`ORDER BY 开始时间 DESC`。 实现特征:异常捕获、临时表 `#TempOvertimePersons`。 +- `MES_ProductTask_SendInspection` 属于 生产执行/工时,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、新增、更新、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`YL_加工中心_操作记录表`、`YL_加工中心_报工记录`;视图:`View_生产订单_MES`。 写入或更新对象:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表`、`YL_加工中心_报工记录`。 入参/分页参数:`@TaskAID bigint,`、`@recievCount int,`、`@optor nvarchar(50)`。 主要返回字段线索:`@分配数量 = 指派数量, @完成数量 = 完成数量, @订单编号 = 订单编号, @工位名称 = 指派对象`。 关键过滤/匹配条件:`where AID = @TaskAID`;`select @分配数量 = 指派数量, @完成数量 = 完成数量, @订单编号 = 订单编号, @工位名称 = 指派对象 from MES_接口_生产计划_生产任务 where AID = @TaskAID`;`select @dicItemID = 词条编号 from YL_基础表_数据字典 where 词条名称 = @词条名称 and 数据类别 = @数据类别`;`from View_生产订单_MES where TaskAID = @TaskAID`。 关键写入/状态处理语句线索:`Update MES_接口_生产计划_生产任务`;`set 完成数量 = isnull(完成数量, 0)+@recievCount, `;`set 任务状态 = 4, `;`INSERT INTO [dbo].[YL_加工中心_操作记录表]`;`INSERT INTO [dbo].[YL_加工中心_报工记录]`。 +- `加工中心_收检_读取收检记录` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@TaskAID int`。 主要返回字段线索:`@订单编号 = [订单编号], @订单行号 = 订单行号`。 关键过滤/匹配条件:`select @订单编号 = [订单编号], @订单行号 = 订单行号 FROM [View_生产订单_MES] where TaskAID = @TaskAID`;`select @已检验数量 = sum(检验数量) OVER() from YL_质量检验_质检记录 where TaskAID = @TaskAID and 质检类型 = '收检'`;`select @完成数量 = 完成数量 from [dbo].[MES_接口_生产计划_生产任务] where AID = @TaskAID`;`WHERE vt.[订单编号] = @订单编号`;`AND vt.[订单行号] = @订单行号-1`;`AND qc.检测类型编号 = '6'`。 +- `MES_QulityInspection_ReceiveCheck` 属于 质量检验,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 质量检验处理。 数据库处理摘要:查询、新增、更新、处理质检数据、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID bigint,`、`@检测类型编号 int,`、`@质检类型 NVARCHAR(50),`、`@零件名称 NVARCHAR(200),`、`@内部合同号 int,`、`@零件编码 NVARCHAR(200),`、`@计划号 int,`、`@工序名称 NVARCHAR(100),`、`@检测数量 INT,`、`@合格数 INT,`、`@不合格数 INT,`、`@检测人 NVARCHAR(50),`、`@检测时间 DATETIME,`、`@计划生产数 INT,`、`@检测说明 NVARCHAR(MAX)`。 主要返回字段线索:`@分配数量 = ISNULL(指派数量, 0)`。 关键过滤/匹配条件:`WHERE AID = @TaskAID`;`WHERE qc.TaskAID = @TaskAID`;`WHERE task.订单编号 = @计划号`;`AND task.订单行号 = @当前订单行号`;`AND qc.质检类型 = '收检'`;`WHERE 订单编号 = @计划号`;`AND 订单行号 = @当前订单行号 + 1`;`AND ISNULL(订单拆分内码, 1) = 1`;`IF @下一道工序AID IS NOT NULL and @合格数 > 0`;`WHERE AID = @下一道工序AID and isnull(任务状态, 0) < 1`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO [YL_MESDB].[dbo].[YL_质量检验_质检记录] (`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET 任务状态 = 4`;`SET 任务状态 = 1`。 实现特征:事务控制、异常捕获。 +- `加工中心_异常工时_获取操作记录列表` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表`。 入参/分页参数:`@操作人 nvarchar(50)`。 主要返回字段线索:`o.AID, `、`o.操作类别编号, `、`o.操作类别, `、`o.阶段标识, `、`o.工序名称, `、`o.工位编号, `、`o.工位名称, `、`o.操作人 as 指派对象, `、`o.合同号, `、`o.订单编号 as 订单号, `。 关键过滤/匹配条件:`WHERE c.AID IS NULL and o.操作人 = @操作人 and o.操作类别编号 in ('8', '9')`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `加工中心_修改工时_保存修改记录` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理报工/工时。 读取/关联对象:表:`YL_加工中心_操作记录表`。 写入或更新对象:`YL_加工中心_操作记录表`。 入参/分页参数:`@TaskAID bigint,`、`@开始时间 datetime,`、`@结束时间 datetime,`、`@工时 int,`、`@操作人 nvarchar(50),`、`@最后编辑人 nvarchar(50)`。 关键过滤/匹配条件:`where AID = @TaskAID`。 关键写入/状态处理语句线索:`update [dbo].[YL_加工中心_操作记录表]`;`set 最后编辑时间 = GETDATE(), 最后编辑人 = @最后编辑人, 实际工时 = @工时, 开始时间 = @开始时间, 结束时间 = @结束时间`。 +- `生产管理_加工中心_生产发料查询` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_OWOR_OIGE`。 入参/分页参数:`@生产订单号 nvarchar(50)`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`select * from SAP.SBO_YL.dbo.UBT_OWOR_OIGE where 生产订单号 = @生产订单号`。 关键写入/状态处理语句线索:`set nocount on;`。 实现特征:读取 SAP 数据库对象。 +- `工艺管理_图纸维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_零件图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`、`worker`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `工艺管理_工艺维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_工艺图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `生产管理_加工中心_退库` 属于 生产执行/工时,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、新增、处理质检数据。 读取/关联对象:表:`质量检验_质检任务_SAP`。 写入或更新对象:`质量检验_质检任务_SAP`。 入参/分页参数:`@生产订单号 bigint,`、`@编码 nvarchar(500),`、`@名称 nvarchar(500),`、`@数量 float,`、`@单位 nvarchar(50),`、`@批次信息 nvarchar(50),`、`@最后编辑人 nvarchar(50)`。 主要返回字段线索:`@行号 = max(isnull(行号, 0))`。 关键过滤/匹配条件:`select @行号 = max(isnull(行号, 0)) from [dbo].[质量检验_质检任务_SAP] where [订单编号] = @生产订单号 and [订单类型] = '202-60'`。 关键写入/状态处理语句线索:`insert into [dbo].[质量检验_质检任务_SAP] ( [订单编号]`。 +- `Prog_MES_GetProductOrder_byAID` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@TaskAID bigint`。 主要返回字段线索:`@订单编号 = [订单编号], @订单行号 = 订单行号`。 关键过滤/匹配条件:`select @订单编号 = [订单编号], @订单行号 = 订单行号 FROM [View_生产订单_MES] where TaskAID = @TaskAID`;`WHERE vt.[订单编号] = vo.[订单编号]`;`AND vt.[订单行号] = vo.[订单行号]-1`;`AND qc.检测类型编号 = '6'`;`WHERE [TaskAID] = @TaskAID`。 +- `MES_QulityInspection_CheckItemData_Save` 属于 质量检验,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新、处理质检数据、处理计划/派工。 读取/关联对象:表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据`。 写入或更新对象:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据`。 入参/分页参数:`@TaskAID bigint`、`@物料编号 nvarchar(100)`、`@阶段标识 int`、`@工序名称 nvarchar(100)`、`@计划号 int`、`@检测项目 nvarchar(500)`、`@理论值 nvarchar(50)`、`@上限值 nvarchar(50)`、`@下限值 nvarchar(50)`、`@实测值 nvarchar(50)`、`@测量单位 nvarchar(50)`、`@检验比例 nvarchar(50)`、`@检具 nvarchar(50)`、`@检测结果 int`、`@合格数 int`、`@不合格数 int`、`@备注 nvarchar(200)`、`@检测人 nvarchar(50)`、`@检测时间 datetime`、`@当前检测零件编号 int`、`@质检类型 nvarchar(100)`、`@检测类型编号 nvarchar(100)`、`@零件名称 nvarchar(100)`、`@内部合同号 nvarchar(100)`。 主要返回字段线索:`@ExistingQT_AID = QT_AID`。 关键过滤/匹配条件:`WHERE TaskAID = @TaskAID`;`AND 零件编码 = @零件编码`;`AND 工序名称 = @工序名称`;`AND 质检类型 = @质检类型`;`AND 检测人 = @检测人`;`AND CONVERT(DATE, 检测时间) = CONVERT(DATE, @检测时间);`;`WHERE QT_AID = @ExistingQT_AID;`;`WHERE QT_AID = @ExistingQT_AID`;`AND 零件编号 = @零件编码`;`AND 当前检测零件编号 = @当前检测零件编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO [dbo].[YL_质量检验_质检记录](`;`SET @QT_AID = SCOPE_IDENTITY();`;`SET @ExistingQT_AID = @QT_AID;`;`SET @CurrentQualifiedCount = @CurrentQualifiedCount + @合格数;`;`SET @CurrentUnqualifiedCount = @CurrentUnqualifiedCount + @不合格数;`;`SET @CurrentInspectionCount = @CurrentInspectionCount + @检验数量;`;`UPDATE [dbo].[YL_质量检验_质检记录]`;`SET`;`SET @QT_AID = @ExistingQT_AID;`;`SET @PartResult = 0;`;`INSERT INTO [dbo].[YL_质量检验_质检记录_检测零件](`。 实现特征:事务控制、异常捕获。 +- `MES_QulityInspection_GetItemStandard` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:表:`YL_质量检验_检测标准`。 入参/分页参数:`@物料编号 nvarchar(50)`、`@工序名称编号 int`、`@检测类别编号 int`。 主要返回字段线索:`[物料编号]`、`[工序名称编号]`、`[检测项目]`、`[理论值]`、`[上限值]`、`[下限值]`、`[测量单位]`、`[检验比例]`、`[检具]`、`[备注]`。 关键过滤/匹配条件:`where [物料编号] = @物料编号 and [工序名称编号] = @工序名称编号 and [检测类别编号] = @检测类别编号`。 +- `Prog_MES_GetProductOrder_byAID` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@TaskAID bigint`。 主要返回字段线索:`@订单编号 = [订单编号], @订单行号 = 订单行号`。 关键过滤/匹配条件:`select @订单编号 = [订单编号], @订单行号 = 订单行号 FROM [View_生产订单_MES] where TaskAID = @TaskAID`;`WHERE vt.[订单编号] = vo.[订单编号]`;`AND vt.[订单行号] = vo.[订单行号]-1`;`AND qc.检测类型编号 = '6'`;`WHERE [TaskAID] = @TaskAID`。 +- `MES_QulityInspection_GetItemStandard` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:表:`YL_质量检验_检测标准`。 入参/分页参数:`@物料编号 nvarchar(50)`、`@工序名称编号 int`、`@检测类别编号 int`。 主要返回字段线索:`[物料编号]`、`[工序名称编号]`、`[检测项目]`、`[理论值]`、`[上限值]`、`[下限值]`、`[测量单位]`、`[检验比例]`、`[检具]`、`[备注]`。 关键过滤/匹配条件:`where [物料编号] = @物料编号 and [工序名称编号] = @工序名称编号 and [检测类别编号] = @检测类别编号`。 +- `MES_QulityInspection_CheckItemData_Save` 属于 质量检验,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新、处理质检数据、处理计划/派工。 读取/关联对象:表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据`。 写入或更新对象:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据`。 入参/分页参数:`@TaskAID bigint`、`@物料编号 nvarchar(100)`、`@阶段标识 int`、`@工序名称 nvarchar(100)`、`@计划号 int`、`@检测项目 nvarchar(500)`、`@理论值 nvarchar(50)`、`@上限值 nvarchar(50)`、`@下限值 nvarchar(50)`、`@实测值 nvarchar(50)`、`@测量单位 nvarchar(50)`、`@检验比例 nvarchar(50)`、`@检具 nvarchar(50)`、`@检测结果 int`、`@合格数 int`、`@不合格数 int`、`@备注 nvarchar(200)`、`@检测人 nvarchar(50)`、`@检测时间 datetime`、`@当前检测零件编号 int`、`@质检类型 nvarchar(100)`、`@检测类型编号 nvarchar(100)`、`@零件名称 nvarchar(100)`、`@内部合同号 nvarchar(100)`。 主要返回字段线索:`@ExistingQT_AID = QT_AID`。 关键过滤/匹配条件:`WHERE TaskAID = @TaskAID`;`AND 零件编码 = @零件编码`;`AND 工序名称 = @工序名称`;`AND 质检类型 = @质检类型`;`AND 检测人 = @检测人`;`AND CONVERT(DATE, 检测时间) = CONVERT(DATE, @检测时间);`;`WHERE QT_AID = @ExistingQT_AID;`;`WHERE QT_AID = @ExistingQT_AID`;`AND 零件编号 = @零件编码`;`AND 当前检测零件编号 = @当前检测零件编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO [dbo].[YL_质量检验_质检记录](`;`SET @QT_AID = SCOPE_IDENTITY();`;`SET @ExistingQT_AID = @QT_AID;`;`SET @CurrentQualifiedCount = @CurrentQualifiedCount + @合格数;`;`SET @CurrentUnqualifiedCount = @CurrentUnqualifiedCount + @不合格数;`;`SET @CurrentInspectionCount = @CurrentInspectionCount + @检验数量;`;`UPDATE [dbo].[YL_质量检验_质检记录]`;`SET`;`SET @QT_AID = @ExistingQT_AID;`;`SET @PartResult = 0;`;`INSERT INTO [dbo].[YL_质量检验_质检记录_检测零件](`。 实现特征:事务控制、异常捕获。 + +## 31. src/views/ProductionManagement/DeviceStatus/index.vue + +**页面位置**:`src/views/ProductionManagement/DeviceStatus/index.vue` +**所属模块**:ProductionManagement / DeviceStatus +**源码行数**:352 + +### 页面功能 + +该页面查看设备/工位生产状态,通常用于判断设备是否在加工、待机、报警或空闲。 + +页面可见的操作/字段包括 “查询”、“item.name”、“序号”、“工位”、“生产订单”、“计划号”、“销售订单”、“物料名称”、“物料编码”、“顺序”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `MES_登录_工位与名称_查询`、`设备管理_设备状态_查询` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `MES_登录_工位与名称_查询` -> `设备管理_设备状态_查询` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`item.name`、`序号`、`工位`、`生产订单`、`计划号`、`销售订单`、`物料名称`、`物料编码`、`顺序`、`工序名称`、`分配数`、`上序合格数`、`加工状态`、`收料状态`、`下序名称`、`优先`、`完成数` + +主要方法线索:`getbasedata` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.equipmentType` | `@设备名称` | - | +| 参数 | `this.dataname` | `@参数名称` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `工位` | - | `[VisCode] as 工位代码` | +| 显示列 | `生产订单` | - | `订单号` | +| 显示列 | `计划号` | - | `计划号` | +| 显示列 | `销售订单` | - | `合同号, ` | +| 显示列 | `物料名称` | - | `零件名称` | +| 显示列 | `物料编码` | - | `零件编码` | +| 显示列 | `顺序` | - | `顺序` | +| 显示列 | `工序名称` | - | `工序名称` | +| 显示列 | `分配数` | - | `分配数` | +| 显示列 | `上序合格数` | - | `上序合格数` | +| 显示列 | `加工状态` | - | `加工状态` | +| 显示列 | `收料状态` | - | `收料状态` | +| 显示列 | `下序名称` | - | `下序名称` | +| 显示列 | `优先` | - | `优先` | +| 显示列 | `完成数` | - | `完成数量` | +| 显示列 | `收检合格数` | - | `收检合格数` | +| 显示列 | `收检不合格数` | - | `收检不合格数` | +| 显示列 | `人员名称` | - | `人员名称` | +| 显示列 | `加急数量` | - | `加急总数, ` | +| 显示列 | `任务状态` | - | `任务状态` | +| 显示列 | `开工时间` | - | `[开工时间], ` | +| 显示列 | `计划开始` | - | `计划开始` | +| 显示列 | `计划完成` | - | `计划完成` | +| 显示列 | `备注` | - | `派工特殊说明, ` | +| 显示列 | `收料数` | - | `收料` | +| 输入字段 | `equipmentType` | `@设备名称` | - | +| 输入字段 | `dataname` | `@参数名称` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 276 | 11(当前通用存储过程查询/执行) | `MES_登录_工位与名称_查询` | 查询/读取数据 | 查询 | 视图:`View_基础数据_工位` | +| 293 | 11(当前通用存储过程查询/执行) | `设备管理_设备状态_查询` | 查询/读取数据 | 查询、分页、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`MES_资源主数据`、`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES`、`View_设备工位人员` | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `设备管理_设备状态_查询`:`CREATE PROCEDURE [dbo].[设备管理_设备状态_查询]`;`DECLARE @where NVARCHAR(4000) = N' WHERE 1 = 1 and isnull(加工状态, 0) in (2, 4) ';`;`派工特殊说明, `;`[加急状态], `;`[二次派工], `;`[计划完成时间], `;`[完成数量], `;`发料状态, ` + +### 数据库调用链 + +- `src/views/ProductionManagement/DeviceStatus/index.vue` -> `MES_登录_工位与名称_查询` -> 视图:`View_基础数据_工位` -> 查询/读取数据 +- `src/views/ProductionManagement/DeviceStatus/index.vue` -> `设备管理_设备状态_查询` -> 表:`MES_资源主数据`、`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES`、`View_设备工位人员` -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `MES_登录_工位与名称_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_基础数据_工位`。 主要返回字段线索:`[VisCode] as 工位代码`、`[VisCode] as MesWebCode`、`[VisCode] as 工位号`、`[Name] as 指南工位号`、`[Name] as 工位名称`。 排序/分组/分页线索:`order by [VisCode]`。 +- `设备管理_设备状态_查询` 属于 设备与实时数据,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、分页、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`MES_资源主数据`、`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES`、`View_设备工位人员`。 入参/分页参数:`@设备名称 nvarchar(50)`。 主要返回字段线索:`main.TaskAID, `、`[订单编号], `、`合同号, `、`加急总数, `、`派工特殊说明, `、`[订单拆分内码], `、`[订单行号], `、`[开工时间], `、`[物料编号], `、`[物料描述], `。 关键过滤/匹配条件:`DECLARE @where NVARCHAR(4000) = N' WHERE 1 = 1 and isnull(加工状态, 0) in (2, 4) ';`;`IF @时间值 > = @夜班开始阈值 OR @时间值 < @白班开始阈值`;`SET @班次条件 = N' AND d2.班次名称 = N''夜班''';`;`SET @班次条件 = N' AND d2.班次名称 = N''白班''';`;`WHERE b.订单编号 = main.[订单编号]`;`AND b.订单行号 = main.[订单行号] - 1`;`AND a.检测类型编号 = 6`;`WHERE d2.工位名称 = main.指派对象 ' + @班次条件 + N'`;`WHERE 质检类型 = ''收检''`;`' + @where + N'`。 关键写入/状态处理语句线索:`SET @班次条件 = N' AND d2.班次名称 = N''夜班''';`;`SET @班次条件 = N' AND d2.班次名称 = N''白班''';`;`SET @selectStr = N'`。 排序/分组/分页线索:`ROW_NUMBER() OVER (PARTITION BY [指派对象] ORDER BY ISNULL([开工时间], ''1900-01-01'') DESC) AS rn, `;`ROW_NUMBER() OVER (PARTITION BY`;`ORDER BY ISNULL([开工时间], ''1900-01-01'') DESC) AS duplicate_rn`;`GROUP BY TaskAID`;`ORDER BY [指派对象];'`。 实现特征:分页。 + +## 32. src/views/ProductionManagement/MachiningCenter/index.vue + +**页面位置**:`src/views/ProductionManagement/MachiningCenter/index.vue` +**所属模块**:ProductionManagement / MachiningCenter +**源码行数**:6909 + +### 页面功能 + +该页面是机加生产执行主界面。操作员按工位查看可执行任务和进行中任务,完成收料、开始加工、暂停/恢复、报工、辅助工序、首检/巡检/序检、生产发料查询、退库、图纸查看等动作,并写入加工中心操作记录和报工记录。 + +页面可见的操作/字段包括 “取 消”、“确 定”、“上一个 下一个”、“删除当前记录 关闭”、“上一个 下一个 保存当前记录 删除当前记录 关闭”、“确定 关闭”、“关闭”、“新增异常工时”、“编辑”、“取消”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `生产管理_加工中心_获取设备人员`、`生产管理_加工中心_获取班次信息`、`加急订单_加急明细查询`、`生产管理_获取人员绑定`、`工时校验_获取订单工序`、`工时校验_获取订单列表` 等过程 取数或提交业务动作。 + +### 页面流程图 + +机加中心执行流程: + +```mermaid +flowchart LR + A[选择工位/人员/任务条件] --> B[MES_ProductCenter_GetTask 查询可执行任务] + B --> C[选择任务] + C --> D[收料 MES_ProductTask_MaterialRecieved] + D --> E[开始加工 MES_ProductTask_WorkingStart] + E --> F{生产过程} + F --> G[暂停/恢复 MES_ProductTask_Rest] + F --> H[首检/巡检/序检] + F --> I[报工 MES_ProductTask_ProdReport] + I --> J[写入操作记录/报工记录] + J --> K[必要时读取 SAP ProductionOrders] + K --> L[刷新任务和进行中状态] +``` + + +### 用户操作与页面线索 + +可见按钮/字段线索:`取 消`、`确 定`、`上一个 下一个`、`删除当前记录 关闭`、`上一个 下一个 保存当前记录 删除当前记录 关闭`、`确定 关闭`、`关闭`、`新增异常工时`、`编辑`、`取消`、`处理`、`转办`、`发起新流程`、`查看进度`、`完结`、`查看详情`、`点击上传`、`添加审批人` + +主要方法线索:`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.selectedRow.指派对象` | `@指派对象` | - | +| 参数 | `shiftName` | `@班次` | - | +| 参数 | `row.零件编码` | `@物料编号` | `docentry as 订单编号, itemcode as 物料编号, 加急数量` | +| 参数 | `orderId` | `@订单编号` | - | +| 参数 | `this.$store.state.user.name` | `@操作人` | - | +| 参数 | `taskAID` | `@TaskAID` | - | +| 参数 | `row.TaskAID` | `@TaskAID` | - | +| 参数 | `this.$store.state.user.name` | `@optor` | - | +| 参数 | `this.TaskAID ` | `@TaskAID` | - | +| 参数 | `this.orderNo2 ` | `@订单号` | `[订单编号] as 订单号, ` | +| 参数 | `this.productCode2` | `@零件编号` | - | +| 参数 | `this.productionStatus2` | `@生产状态` | - | +| 参数 | `this.Doing` | `@工位名称` | - | +| 参数 | `this.$store.state.user.id` | `@用户ID` | - | +| 参数 | `this.plannum` | `@计划号` | - | +| 参数 | `this.salenum` | `@销售订单` | - | +| 参数 | `this.completionTime ? this.completionTime[0` | `@计划开工_Start` | - | +| 参数 | `this.completionTime ? this.completionTime[1` | `@计划开工_End` | - | +| 参数 | `this.assistNumber` | `@partCount` | - | +| 参数 | `row.分配数` | `@指派数量` | - | +| 参数 | `this.selectedOperators` | `@selectedOperators` | - | +| 参数 | `ordinaryPersons` | `@加班人员` | - | +| 参数 | `specialPersons` | `@特殊加班人员` | - | +| 参数 | `isOvertime` | `@是否加班` | - | +| 参数 | `isRestDay` | `@是否休息日` | - | +| 参数 | `isLegalRestDay` | `@是否法定休息日` | - | +| 参数 | `selectedShiftName` | `@用户选择班次` | - | +| 参数 | `shiftStandardHours` | `@班次标准工时` | - | +| 参数 | `this.receiveNum` | `@recievCount` | - | +| 参数 | `row.指派对象` | `@指派对象` | - | +| 参数 | `row.收料` | `@收料` | - | +| 参数 | `row.分配数` | `@分配数` | - | +| 参数 | `this.workStartNum` | `@辅助数` | - | +| 参数 | `前序不合格总数` | `@前序不合格总数` | - | +| 参数 | `BindRpt_ALLtaskids` | `@BindRpt_ALLtaskids` | - | +| 参数 | `this.currentTime` | `@rptDate` | - | +| 参数 | `this.shift` | `@rptShift` | - | +| 参数 | `this.proReportNum` | `@partCount` | - | +| 参数 | `this.rptDesc` | `@rptDesc` | - | +| 参数 | `this.currentShift.班次名称` | `@班次` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- SAP B1 Service Layer(`src/api/b1s.js`) +- TM/OpenAPI 接口(`src/api/tm.js`) +- PDF/图纸预览或导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 3212 | 11(当前通用存储过程查询/执行) | `生产管理_加工中心_获取设备人员` | 基础权限/人员数据处理 | 查询 | 视图:`View_设备工位人员` | +| 3348 | 11(当前通用存储过程查询/执行) | `生产管理_加工中心_获取班次信息` | 业务存储过程调用 | 查询 | 表:`班次表` | +| 3366 | 11(当前通用存储过程查询/执行) | `加急订单_加急明细查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象、处理计划/派工 | 表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` | +| 3373 | 11(当前通用存储过程查询/执行) | `生产管理_获取人员绑定` | 基础权限/人员数据处理 | 查询 | 表:`MES_资源主数据`、`工位人员绑定表` | +| 3384 | 11(当前通用存储过程查询/执行) | `工时校验_获取订单工序` | 报工或工时处理 | 查询、处理报工/工时 | 视图:`View_生产订单_MES` | +| 3400 | 11(当前通用存储过程查询/执行) | `工时校验_获取订单列表` | 报工或工时处理 | 查询、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划` | +| 3445 | 11(当前通用存储过程查询/执行) | `异常工时_新增操作记录` | 新增业务数据 | 查询、新增、处理报工/工时 | 表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES` | +| 3501 | 11(当前通用存储过程查询/执行) | `MES_操作记录_获取暂停状态` | 业务存储过程调用 | 查询 | 表:`YL_加工中心_操作记录表` | +| 3571 | 11(当前通用存储过程查询/执行) | `MES_操作记录_获取任务暂停状态` | 业务存储过程调用 | 查询 | 表:`YL_加工中心_操作记录表` | +| 3626 | 11(当前通用存储过程查询/执行) | `MES_登录_工位与名称_查询` | 查询/读取数据 | 查询 | 视图:`View_基础数据_工位` | +| 3679 | 11(当前通用存储过程查询/执行) | `Prog_MES_LoadProcess` | 查询/读取数据 | 查询 | 表:`基础表_工序` | +| 3691 | 11(当前通用存储过程查询/执行) | `查询字典` | 查询/读取数据 | 查询 | 表:`YL_基础表_数据字典` | +| 3706 | 11(当前通用存储过程查询/执行) | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 查询、处理质检数据 | 视图:`登录基础数据_管理人员权限视图` | +| 3744 | 12(当前通用存储过程写入/业务动作) | `MES_ProductTask_HelpStart` | 业务存储过程调用 | 查询、更新、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`;视图:`View_生产订单_MES` | +| 3773 | 11(当前通用存储过程查询/执行) | `Prog_MES_GetProductOrder_byAID` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 3794 | 11(当前通用存储过程查询/执行) | `Prog_MES_GetProductOrder_byAID` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 3857 | 11(当前通用存储过程查询/执行) | `MES_ProductCenter_GetTask` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`登录基础数据_人员信息`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 3959 | 11(当前通用存储过程查询/执行) | `MES_ProductTask_WorkTimeSum` | 报工或工时处理 | 查询、处理报工/工时、处理计划/派工 | 未在 SQL 中解析到明确依赖 | +| 4054 | 11(当前通用存储过程查询/执行) | `MES_ProductTask_HelpEnd` | 业务存储过程调用 | 查询、新增、更新、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`YL_加工中心_操作记录表`、`班次表`;视图:`View_生产订单_MES` | +| 4088 | 12(当前通用存储过程写入/业务动作) | `MES_ProductTask_MaterialRecieved` | 业务存储过程调用 | 查询、更新、处理计划/派工 | 表:`MES_接口_生产计划` | +| 4148 | 11(当前通用存储过程查询/执行) | `生产管理_加工中心_设备是否正在加工` | 设备/工位/资源数据处理 | 查询、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 4180 | 11(当前通用存储过程查询/执行) | `Prog_MES_GetProductOrder_byAID` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 4205 | 12(当前通用存储过程写入/业务动作) | `MES_ProductTask_WorkingStart` | 业务存储过程调用 | 查询、更新、处理报工/工时、处理质检数据、处理计划/派工 | 表:`MES_接口_生产计划`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 4239 | 11(当前通用存储过程查询/执行) | `MES_ProductCenter_GetOrderTasks` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工 | 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 4258 | 11(当前通用存储过程查询/执行) | `生产管理_加工中心_班次信息` | 业务存储过程调用 | 查询 | 视图:`View_设备工位人员` | +| 4269 | 11(当前通用存储过程查询/执行) | `生产管理_加工中心_开始时间` | 业务存储过程调用 | 查询 | 表:`YL_加工中心_操作记录表` | +| 4460 | 11(当前通用存储过程查询/执行) | `MES_ProductTask_ProdReport` | 报工或工时处理 | 查询、新增、更新、处理报工/工时、处理质检数据、处理计划/派工 | 表:`MES_接口_生产计划`、`YL_加工中心_操作记录表`、`班次表`、`YL_加工中心_报工记录`;视图:`View_生产订单_MES` | +| 4828 | 11(当前通用存储过程查询/执行) | `Prog_MES_GetProductOrder_byAID` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 5058 | 12(当前通用存储过程写入/业务动作) | `MES_QulityInspection_CheckItemData_Save` | 更新/保存业务数据 | 查询、新增、更新、处理质检数据、处理计划/派工 | 表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据` | +| 5146 | 11(当前通用存储过程查询/执行) | `MES_QulityInspection_GetItemStandard` | 查询/读取数据 | 查询、处理质检数据 | 表:`YL_质量检验_检测标准` | +| 5198 | 11(当前通用存储过程查询/执行) | `Prog_MES_GetProductOrder_byAID` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 5241 | 11(当前通用存储过程查询/执行) | `MES_QulityInspection_GetItemStandard` | 查询/读取数据 | 查询、处理质检数据 | 表:`YL_质量检验_检测标准` | +| 5443 | 12(当前通用存储过程写入/业务动作) | `MES_QulityInspection_CheckItemData_Save` | 更新/保存业务数据 | 查询、新增、更新、处理质检数据、处理计划/派工 | 表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据` | +| 5566 | 11(当前通用存储过程查询/执行) | `加工中心_收检_读取收检记录` | 查询/读取数据 | 查询、处理质检数据、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 5658 | 12(当前通用存储过程写入/业务动作) | `MES_QulityInspection_ReceiveCheck` | 质量检验处理 | 查询、新增、更新、处理质检数据、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录` | +| 5800 | 11(当前通用存储过程查询/执行) | `MES_QualityInspection_CheckRecord_Query` | 查询/读取数据 | 查询、处理质检数据、处理计划/派工 | 表:`YL_质量检验_质检记录`、`基础表_工序` | +| 5835 | 11(当前通用存储过程查询/执行) | `MES_QualityInspection_GetInspectionParts` | 查询/读取数据 | 查询、处理质检数据 | 表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件` | +| 5870 | 11(当前通用存储过程查询/执行) | `MES_QualityInspection_GetInspectionDetails` | 查询/读取数据 | 查询、处理质检数据、处理计划/派工 | 表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测数据` | +| 5906 | 11(当前通用存储过程查询/执行) | `加工中心_异常工时_获取操作记录列表` | 报工或工时处理 | 查询、处理报工/工时 | 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` | +| 5957 | 11(当前通用存储过程查询/执行) | `加工中心_修改工时_保存修改记录` | 更新/保存业务数据 | 更新、处理报工/工时 | 表:`YL_加工中心_操作记录表` | +| 6026 | 11(当前通用存储过程查询/执行) | `sp_获取最近处理任务` | 业务存储过程调用 | 查询 | 未在 SQL 中解析到明确依赖 | +| 6034 | 11(当前通用存储过程查询/执行) | `人员管理_人员信息查询` | 查询/读取数据 | 查询 | 视图:`登录基础数据_管理人员权限视图` | +| 6050 | 11(当前通用存储过程查询/执行) | `sp_获取我的流程` | 业务存储过程调用 | 查询 | 未在 SQL 中解析到明确依赖 | +| 6065 | 11(当前通用存储过程查询/执行) | `sp_获取待处理任务` | 业务存储过程调用 | 查询、处理计划/派工 | 未在 SQL 中解析到明确依赖 | +| 6091 | 11(当前通用存储过程查询/执行) | `MES_ProductAdmin_Query` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 视图:`View_生产订单_MES` | +| 6216 | 11(当前通用存储过程查询/执行) | `sp_创建流程_简化版` | 业务存储过程调用 | 查询、新增、处理计划/派工 | 未在 SQL 中解析到明确依赖 | +| 6250 | 12(当前通用存储过程写入/业务动作) | `sp_处理审批` | 业务存储过程调用 | 查询、新增、更新 | 未在 SQL 中解析到明确依赖 | +| 6291 | 12(当前通用存储过程写入/业务动作) | `sp_转办流程` | 业务存储过程调用 | 查询、新增、更新 | 未在 SQL 中解析到明确依赖 | +| 6319 | 11(当前通用存储过程查询/执行) | `sp_完成流程` | 业务存储过程调用 | 查询、新增、更新 | 未在 SQL 中解析到明确依赖 | +| 6336 | 11(当前通用存储过程查询/执行) | `sp_获取流程详情` | 业务存储过程调用 | 查询、处理计划/派工 | 未在 SQL 中解析到明确依赖 | +| 6394 | 11(当前通用存储过程查询/执行) | `生产管理_加工中心_生产发料查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_OWOR_OIGE` | +| 6443 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_零件图纸` | +| 6478 | 11(当前通用存储过程查询/执行) | `工艺管理_工艺维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_工艺图纸` | +| 6503 | 12(当前通用存储过程写入/业务动作) | `生产管理_加工中心_退库` | 业务存储过程调用 | 查询、新增、处理质检数据 | 表:`质量检验_质检任务_SAP` | + +### 与 SAP 的交互 + +页面直接 SAP/接口调用: +- 第 5751 行:`posttm("/stocktask/task/receiptordertask")` +- 第 6409 行:`getB1("/ProductionOrders")` +- 第 6560 行:`posttm("/stocktask/task/issueordertask")` +存储过程内读取 SAP B1 数据库对象: +- 加急订单_加急明细查询: SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL +- 生产管理_加工中心_生产发料查询: SAP.SBO_YL.dbo.UBT_OWOR_OIGE + +### SAP 接口级说明 + +| 行号 | 方法 | 接口 | 调用时机/影响判断 | 提交字段线索 | +|---:|---|---|---|---| +| 5751 | `posttm` | `/stocktask/task/receiptordertask` | 调用外部接口,失败会影响对应外部系统同步。 | `label` | +| 6409 | `getB1` | `/ProductionOrders` | 读取或更新 SAP 生产订单。失败会导致 MES 与 SAP 订单状态/工序资源不同步。 | `filter`、`数据`、`lines`、`请求失败` | +| 6560 | `posttm` | `/stocktask/task/issueordertask` | 调用外部接口,失败会影响对应外部系统同步。 | `原始数据`、`doc_date`、`doc_type`、`external_num`、`task_items` | + +### 状态流转说明 + +- `生产管理_加工中心_获取设备人员`:`create PROCEDURE [dbo].[生产管理_加工中心_获取设备人员]` +- `生产管理_加工中心_获取班次信息`:`create PROCEDURE [dbo].[生产管理_加工中心_获取班次信息]` +- `加急订单_加急明细查询`:`SELECT docentry as 订单编号, itemcode as 物料编号, 加急数量 from SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` +- `生产管理_获取人员绑定`:`AND b.绑定状态 = 1;` +- `异常工时_新增操作记录`:`INSERT INTO [dbo].[YL_加工中心_操作记录表] (`;`操作描述, 开始时间, 结束时间, 总时长, 报工日期, 已报工, 不装配, ` +- `MES_操作记录_获取暂停状态`:`CREATE PROCEDURE [dbo].[MES_操作记录_获取暂停状态]`;`FROM [YL_加工中心_操作记录表] p` +- `MES_操作记录_获取任务暂停状态`:`CREATE PROCEDURE [dbo].[MES_操作记录_获取任务暂停状态]`;`FROM [YL_加工中心_操作记录表] p` +- `人员管理_人员信息查询_质检部门_查询`:`create PROCEDURE [dbo].[人员管理_人员信息查询_质检部门_查询]` +- `MES_ProductTask_HelpStart`:`declare @任务状态 int = -1`;`select @任务状态 = isnull(任务状态, 0)from View_生产订单_MES where TaskAID = @TaskAID`;`if(@任务状态 = 1)`;`Update MES_接口_生产计划_生产任务 set 可执行 = 1, 加工状态 = @词条ID, 开工时间 = @操作时间, 操作时间 = @操作时间 where AID = @TaskAID`;`if(@任务状态 = 2)` +- `Prog_MES_GetProductOrder_byAID`:`, [加急状态]`;`, [排产状态]`;`, [计划完成时间]`;`, [派工状态]`;`, [派工时间]`;`, [任务状态]`;`, [未完成说明]`;`, [派工特殊说明]` +- `Prog_MES_GetProductOrder_byAID`:`, [加急状态]`;`, [排产状态]`;`, [计划完成时间]`;`, [派工状态]`;`, [派工时间]`;`, [任务状态]`;`, [未完成说明]`;`, [派工特殊说明]` +- `MES_ProductCenter_GetTask`:`@生产状态 int = -1, `;`DECLARE @whereStr nvarchar(max) = ' WHERE 排产状态 = 1 '`;`派工特殊说明, `;`case when isnull([加急状态], 0) = 1 then ''加急'' else ''否'' end as [加急], `;`[二次派工], `;`[计划完成时间] as 计划完成, `;`isnull([完成数量], 0) as 完成数量, `;`when isnull(发料状态, 0) = 1 then ''发料齐套''` +- `MES_ProductTask_WorkTimeSum`:`select TaskAID, 工序名称, sum(工时) as 总工时 from YL_加工中心_操作记录表 where 工时 >0 group by TaskAID, 工序名称` +- `MES_ProductTask_HelpEnd`:`declare @完成数量_New int = -1`;`declare @任务状态 int = -1`;`Select @完成数量_New = isnull(完成数量, 0) + @partCount, `;`select @任务状态 = isnull(任务状态, 0) from View_生产订单_MES where TaskAID = @TaskAID`;`FROM [YL_加工中心_操作记录表]`;`AND ISNULL([已报工], 0) = 0`;`if(@指派数量 > = @完成数量_New)`;`Update MES_接口_生产计划_生产任务` +- `MES_ProductTask_MaterialRecieved`:`declare @任务状态 int`;`select @任务状态 = 任务状态 from MES_接口_生产计划_生产任务 where AID = @TaskAID`;`if(@任务状态 < = 1 )`;`Update MES_接口_生产计划_生产任务`;`set 任务状态 = case when isnull(收料数量, 0)+@recievCount>0 then 1 else 0 end, `;`if(@任务状态 > 1 )` +- `生产管理_加工中心_设备是否正在加工`:`CREATE PROCEDURE [dbo].[生产管理_加工中心_设备是否正在加工]`;`select * from [dbo].[MES_接口_生产计划_生产任务] where 指派对象 = @指派对象 AND 加工状态 in ( 2, 4 )` +- `Prog_MES_GetProductOrder_byAID`:`, [加急状态]`;`, [排产状态]`;`, [计划完成时间]`;`, [派工状态]`;`, [派工时间]`;`, [任务状态]`;`, [未完成说明]`;`, [派工特殊说明]` +- `MES_ProductTask_WorkingStart`:`declare @任务状态 int = -1`;`declare @词条名称 nvarchar(50) = '开始加工'`;`select @任务状态 = isnull(任务状态, 0), @开工 = isnull(开工, 0) from View_生产订单_MES where TaskAID = @TaskAID`;`if(@任务状态 = 1)`;`Update MES_接口_生产计划_生产任务 set 任务状态 = 2, 可执行 = 1, 开工 = 1, 加工状态 = @词条ID, 开工时间 = @操作时间, 操作时间 = @操作时间 where AID = @TaskAID`;`if(@任务状态 = 2)`;`FROM [dbo].[YL_质量检验_质检记录] qc`;`Update MES_接口_生产计划_生产任务 set 收料 = 1, 收料数量 = @合格数, 操作时间 = @操作时间 where AID = @TaskAID` +- `MES_ProductCenter_GetOrderTasks`:`, [计划完成时间]`;`, isnull([完成数量], 0) as [完成数量]`;`when isnull(任务状态, 0) = 2 then '已开工'`;`else '''' end as [任务状态]`;`FROM [dbo].[YL_质量检验_质检记录] qc` +- `生产管理_加工中心_班次信息`:`create PROCEDURE [dbo].[生产管理_加工中心_班次信息]` +- `生产管理_加工中心_开始时间`:`create PROCEDURE [dbo].[生产管理_加工中心_开始时间]`;`from [YL_加工中心_操作记录表]` +- `MES_ProductTask_ProdReport`:`declare @完成数量_New int = -1`;`@完成数量_New = isnull(完成数量, 0) + @partCount, `;`FROM [YL_加工中心_操作记录表]`;`AND 操作类别 = '开始加工'`;`AND ISNULL([已报工], 0) = 0`;`IF (@完成数量_New + @最新不合格数 < = @指派数量)`;`IF (@完成数量_New + @最新不合格数 < @指派数量)`;`UPDATE MES_接口_生产计划_生产任务` +- `Prog_MES_GetProductOrder_byAID`:`, [加急状态]`;`, [排产状态]`;`, [计划完成时间]`;`, [派工状态]`;`, [派工时间]`;`, [任务状态]`;`, [未完成说明]`;`, [派工特殊说明]` +- `MES_QulityInspection_CheckItemData_Save`:`@质检类型 nvarchar(100) = '', `;`FROM [dbo].[YL_质量检验_质检记录]`;`AND 质检类型 = @质检类型`;`INSERT INTO [dbo].[YL_质量检验_质检记录](`;`TaskAID, 质检类型, 检测类型编号, 零件名称, 内部合同号, `;`@TaskAID, @质检类型, @检测类型编号, @零件名称, @内部合同号, `;`UPDATE [dbo].[YL_质量检验_质检记录]`;`FROM [dbo].[YL_质量检验_质检记录_检测零件]` +- `Prog_MES_GetProductOrder_byAID`:`, [加急状态]`;`, [排产状态]`;`, [计划完成时间]`;`, [派工状态]`;`, [派工时间]`;`, [任务状态]`;`, [未完成说明]`;`, [派工特殊说明]` +- `MES_QulityInspection_CheckItemData_Save`:`@质检类型 nvarchar(100) = '', `;`FROM [dbo].[YL_质量检验_质检记录]`;`AND 质检类型 = @质检类型`;`INSERT INTO [dbo].[YL_质量检验_质检记录](`;`TaskAID, 质检类型, 检测类型编号, 零件名称, 内部合同号, `;`@TaskAID, @质检类型, @检测类型编号, @零件名称, @内部合同号, `;`UPDATE [dbo].[YL_质量检验_质检记录]`;`FROM [dbo].[YL_质量检验_质检记录_检测零件]` +- `加工中心_收检_读取收检记录`:`CREATE PROCEDURE [dbo].[加工中心_收检_读取收检记录]`;`declare @完成数量 int`;`select @已检验数量 = sum(检验数量) OVER() from YL_质量检验_质检记录 where TaskAID = @TaskAID and 质检类型 = '收检'`;`select @完成数量 = 完成数量 from [dbo].[MES_接口_生产计划_生产任务] where AID = @TaskAID`;`FROM [dbo].[YL_质量检验_质检记录] qc`;`select isnull(@已检验数量, 0), isnull(@完成数量, 0), isnull(@上序合格数, 0), @订单行号` +- `MES_QulityInspection_ReceiveCheck`:`@质检类型 NVARCHAR(50), `;`FROM [dbo].[MES_接口_生产计划_生产任务]`;`FROM [YL_MESDB].[dbo].[YL_质量检验_质检记录] qc`;`0 AS 清零任务数`;`INSERT INTO [YL_MESDB].[dbo].[YL_质量检验_质检记录] (`;`[质检类型], `;`@质检类型, `;`INNER JOIN [dbo].[MES_接口_生产计划_生产任务] task ON qc.TaskAID = task.AID` +- `MES_QualityInspection_CheckRecord_Query`:`a.[质检类型], `;`FROM [dbo].[YL_质量检验_质检记录] a`;`WHERE 质检类型 ''来料检验''` +- `MES_QualityInspection_GetInspectionParts`:`FROM [dbo].[YL_质量检验_质检记录_检测零件]` +- `MES_QualityInspection_GetInspectionDetails`:`FROM [dbo].[YL_质量检验_质检记录_检测数据]` +- `加工中心_异常工时_获取操作记录列表`:`CREATE PROCEDURE [dbo].[加工中心_异常工时_获取操作记录列表]`;`o.实际工时 as 加工工时, `;`o.已报工, `;`FROM [dbo].[YL_加工中心_操作记录表] o` +- `加工中心_修改工时_保存修改记录`:`CREATE PROCEDURE [dbo].[加工中心_修改工时_保存修改记录]`;`update [dbo].[YL_加工中心_操作记录表]` +- `sp_获取最近处理任务`:`create PROCEDURE [dbo].[sp_获取最近处理任务]` +- `sp_获取我的流程`:`@状态 NVARCHAR(20) = NULL`;`p.状态, `;`AND (@状态 IS NULL OR p.状态 = @状态)` +- `sp_获取待处理任务`:`create PROCEDURE [dbo].[sp_获取待处理任务]`;`AND pn.状态 = 'processing'`;`AND p.状态 = 'processing'` +- `MES_ProductAdmin_Query`:`@排产状态 nvarchar(50) = '全部', `;`SELECT top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]`;`, [排产状态], [工序计划数量], 指派对象编号, 指派对象, 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, [派工状态], [外协通知]`;`, [优先级], [未完成说明], [序检], isnull([测试], 0) as [测试], isnull([入库], 0) as [入库], TaskAID`;`SELECT top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], '''' as 合同交货期, [计划完成] as 预计齐套时间, ''齐'' as 是否齐套, '''' as 齐套检测, ''是'' as 齐套锁料, [计划开始] as 备料日期, 0 as 加急`;`, [优先级], [未完成说明], [派工特殊说明], [最后编辑人], [最后编辑时间], TaskAID`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''` +- `sp_创建流程_简化版`:`状态, ` +- `sp_处理审批`:`SET 状态 = @处理结果, `;`SET 状态 = 'rejected', `;`SET 状态 = 'processing', `;`SET 状态 = 'completed', `;`当前节点 = '已完成', ` +- `sp_转办流程`:`AND pn.状态 = 'processing'`;`AND p.状态 = 'processing'` +- `sp_完成流程`:`create PROCEDURE [dbo].[sp_完成流程]`;`@完成类型 NVARCHAR(20), `;`@完成原因 NVARCHAR(500), `;`AND 状态 IN ('draft', 'processing')`;`INSERT INTO 流程完成记录表 (`;`流程ID, 发起人ID, 发起人姓名, 完成类型, 完成原因`;`VALUES (@流程ID, @发起人ID, @发起人姓名, @完成类型, @完成原因);`;`SET 状态 = @完成类型, ` +- `sp_获取流程详情`:`p.状态, `;`状态, `;`WHEN 步骤序号 < (SELECT 当前步骤 FROM 流程表 WHERE 流程ID = @流程ID) THEN '已完成'`;`END as 状态描述, ` +- `生产管理_加工中心_生产发料查询`:`CREATE PROCEDURE [dbo].[生产管理_加工中心_生产发料查询]`;`select * from SAP.SBO_YL.dbo.UBT_OWOR_OIGE where 生产订单号 = @生产订单号` +- `生产管理_加工中心_退库`:`CREATE PROCEDURE [dbo].[生产管理_加工中心_退库]`;`select @行号 = max(isnull(行号, 0)) from [dbo].[质量检验_质检任务_SAP] where [订单编号] = @生产订单号 and [订单类型] = '202-60'`;`insert into [dbo].[质量检验_质检任务_SAP] ( [订单编号]` + +### 数据库调用链 + +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `生产管理_加工中心_获取设备人员` -> 视图:`View_设备工位人员` -> 基础权限/人员数据处理 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `生产管理_加工中心_获取班次信息` -> 表:`班次表` -> 业务存储过程调用 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `加急订单_加急明细查询` -> 表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `生产管理_获取人员绑定` -> 表:`MES_资源主数据`、`工位人员绑定表` -> 基础权限/人员数据处理 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `工时校验_获取订单工序` -> 视图:`View_生产订单_MES` -> 报工或工时处理 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `工时校验_获取订单列表` -> 表:`MES_接口_生产计划` -> 报工或工时处理 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `异常工时_新增操作记录` -> 表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES` -> 新增业务数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `MES_操作记录_获取暂停状态` -> 表:`YL_加工中心_操作记录表` -> 业务存储过程调用 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `MES_操作记录_获取任务暂停状态` -> 表:`YL_加工中心_操作记录表` -> 业务存储过程调用 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `MES_登录_工位与名称_查询` -> 视图:`View_基础数据_工位` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `Prog_MES_LoadProcess` -> 表:`基础表_工序` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `查询字典` -> 表:`YL_基础表_数据字典` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `人员管理_人员信息查询_质检部门_查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `MES_ProductTask_HelpStart` -> 表:`MES_接口_生产计划`;视图:`View_生产订单_MES` -> 业务存储过程调用 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `Prog_MES_GetProductOrder_byAID` -> 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `Prog_MES_GetProductOrder_byAID` -> 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `MES_ProductCenter_GetTask` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`登录基础数据_人员信息`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `MES_ProductTask_WorkTimeSum` -> 未在 SQL 中解析到明确依赖 -> 报工或工时处理 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `MES_ProductTask_HelpEnd` -> 表:`MES_接口_生产计划`、`YL_加工中心_操作记录表`、`班次表`;视图:`View_生产订单_MES` -> 业务存储过程调用 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `MES_ProductTask_MaterialRecieved` -> 表:`MES_接口_生产计划` -> 业务存储过程调用 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `生产管理_加工中心_设备是否正在加工` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 设备/工位/资源数据处理 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `Prog_MES_GetProductOrder_byAID` -> 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `MES_ProductTask_WorkingStart` -> 表:`MES_接口_生产计划`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 业务存储过程调用 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `MES_ProductCenter_GetOrderTasks` -> 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `生产管理_加工中心_班次信息` -> 视图:`View_设备工位人员` -> 业务存储过程调用 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `生产管理_加工中心_开始时间` -> 表:`YL_加工中心_操作记录表` -> 业务存储过程调用 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `MES_ProductTask_ProdReport` -> 表:`MES_接口_生产计划`、`YL_加工中心_操作记录表`、`班次表`、`YL_加工中心_报工记录`;视图:`View_生产订单_MES` -> 报工或工时处理 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `Prog_MES_GetProductOrder_byAID` -> 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `MES_QulityInspection_CheckItemData_Save` -> 表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据` -> 更新/保存业务数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `MES_QulityInspection_GetItemStandard` -> 表:`YL_质量检验_检测标准` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `Prog_MES_GetProductOrder_byAID` -> 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `MES_QulityInspection_GetItemStandard` -> 表:`YL_质量检验_检测标准` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `MES_QulityInspection_CheckItemData_Save` -> 表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据` -> 更新/保存业务数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `加工中心_收检_读取收检记录` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `MES_QulityInspection_ReceiveCheck` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录` -> 质量检验处理 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `MES_QualityInspection_CheckRecord_Query` -> 表:`YL_质量检验_质检记录`、`基础表_工序` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `MES_QualityInspection_GetInspectionParts` -> 表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `MES_QualityInspection_GetInspectionDetails` -> 表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测数据` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `加工中心_异常工时_获取操作记录列表` -> 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` -> 报工或工时处理 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `加工中心_修改工时_保存修改记录` -> 表:`YL_加工中心_操作记录表` -> 更新/保存业务数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `sp_获取最近处理任务` -> 未在 SQL 中解析到明确依赖 -> 业务存储过程调用 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `人员管理_人员信息查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `sp_获取我的流程` -> 未在 SQL 中解析到明确依赖 -> 业务存储过程调用 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `sp_获取待处理任务` -> 未在 SQL 中解析到明确依赖 -> 业务存储过程调用 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `MES_ProductAdmin_Query` -> 视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `sp_创建流程_简化版` -> 未在 SQL 中解析到明确依赖 -> 业务存储过程调用 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `sp_处理审批` -> 未在 SQL 中解析到明确依赖 -> 业务存储过程调用 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `sp_转办流程` -> 未在 SQL 中解析到明确依赖 -> 业务存储过程调用 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `sp_完成流程` -> 未在 SQL 中解析到明确依赖 -> 业务存储过程调用 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `sp_获取流程详情` -> 未在 SQL 中解析到明确依赖 -> 业务存储过程调用 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `生产管理_加工中心_生产发料查询` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_OWOR_OIGE` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `工艺管理_图纸维护_查看图纸` -> 表:`物料基础数据_零件图纸` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `工艺管理_工艺维护_查看图纸` -> 表:`物料基础数据_工艺图纸` -> 查询/读取数据 +- `src/views/ProductionManagement/MachiningCenter/index.vue` -> `生产管理_加工中心_退库` -> 表:`质量检验_质检任务_SAP` -> 业务存储过程调用 + +### 存储过程处理逻辑明细 + +- `生产管理_加工中心_获取设备人员` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 基础权限/人员数据处理。 数据库处理摘要:查询。 读取/关联对象:视图:`View_设备工位人员`。 入参/分页参数:`@指派对象 nvarchar(50),`、`@班次 nvarchar(50)`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`SELECT * FROM [YL_MESDB].[dbo].[View_设备工位人员] where 工位名称 = @指派对象 and 班次名称 = @班次`。 +- `生产管理_加工中心_获取班次信息` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询。 读取/关联对象:表:`班次表`。 主要返回字段线索:`*`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `加急订单_加急明细查询` 属于 加急任务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL`。 入参/分页参数:`@物料编号 nvarchar(50)`。 主要返回字段线索:`docentry as 订单编号, itemcode as 物料编号, 加急数量`。 关键过滤/匹配条件:`where itemcode = @物料编号`。 实现特征:读取 SAP 数据库对象。 +- `生产管理_获取人员绑定` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 基础权限/人员数据处理。 数据库处理摘要:查询。 读取/关联对象:表:`MES_资源主数据`、`工位人员绑定表`。 入参/分页参数:`@操作人ID NVARCHAR(50)`。 主要返回字段线索:`m.[name] AS 工位名称`。 关键过滤/匹配条件:`WHERE`;`AND b.绑定状态 = 1;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `工时校验_获取订单工序` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:视图:`View_生产订单_MES`。 入参/分页参数:`@订单编号 int`。 主要返回字段线索:`工序名称, 订单行号 as 工艺顺序, 指派对象, TaskAID, 顺序编号, 指派对象 as 工位名称, VisCode`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单编号`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY 订单行号;`。 +- `工时校验_获取订单列表` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 入参/分页参数:`@订单编号 nvarchar(50)`。 主要返回字段线索:`DISTINCT top 20`、`订单编号, `、`物料编号 as 零件编码, `、`物料描述 as 零件名称`。 关键过滤/匹配条件:`FROM [dbo].[MES_接口_生产计划] WHERE 订单编号 LIKE '%' + @订单编号 + '%' OR @订单编号 = ''`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY 订单编号 ;`。 +- `异常工时_新增操作记录` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 新增业务数据。 数据库处理摘要:查询、新增、处理报工/工时。 读取/关联对象:表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES`。 写入或更新对象:`YL_加工中心_操作记录表`。 入参/分页参数:`@操作类别 nvarchar(50),`、`@订单编号 nvarchar(50),`、`@物料编号 nvarchar(50),`、`@物料描述 nvarchar(50),`、`@工序名称 nvarchar(50),`、`@操作人 nvarchar(50),`、`@开始时间 datetime,`、`@结束时间 datetime,`、`@操作内容 nvarchar(500)`、`@操作描述 nvarchar(2000)`、`@TaskAID nvarchar(2000)`。 主要返回字段线索:`@工位名称 = 指派对象`。 关键过滤/匹配条件:`select @工位名称 = 指派对象 from [dbo].[View_生产订单_MES] where TaskAID = @TaskAID`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @工时 = DATEDIFF(SECOND, @开始时间, @结束时间);`;`INSERT INTO [dbo].[YL_加工中心_操作记录表] (`。 实现特征:异常捕获。 +- `MES_操作记录_获取暂停状态` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询。 读取/关联对象:表:`YL_加工中心_操作记录表`。 入参/分页参数:`@操作人 NVARCHAR(50)`。 主要返回字段线索:`p.TaskAID, `、`p.关联操作类型 AS PreviousState, `、`p.操作人 AS Operator, `、`p.开始时间 AS PauseTime`。 关键过滤/匹配条件:`WHERE p.操作类别 = '暂停'`;`AND (p.结束时间 IS NULL OR p.结束时间 = '')`;`AND p.关联操作类型 IS NOT NULL`;`WHERE 1 = 0;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY p.开始时间 DESC`。 实现特征:异常捕获。 +- `MES_操作记录_获取任务暂停状态` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询。 读取/关联对象:表:`YL_加工中心_操作记录表`。 入参/分页参数:`@TaskAID INT`。 主要返回字段线索:`TOP 1`、`p.TaskAID, `、`p.关联操作类型 AS PreviousState, `、`p.操作人 AS Operator, `、`p.开始时间 AS PauseTime`。 关键过滤/匹配条件:`WHERE p.操作类别 = '暂停'`;`AND p.TaskAID = @TaskAID`;`AND (p.结束时间 IS NULL OR p.结束时间 = '')`;`AND p.关联操作类型 IS NOT NULL`;`WHERE 1 = 0;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY p.开始时间 DESC`。 实现特征:异常捕获。 +- `MES_登录_工位与名称_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_基础数据_工位`。 主要返回字段线索:`[VisCode] as 工位代码`、`[VisCode] as MesWebCode`、`[VisCode] as 工位号`、`[Name] as 指南工位号`、`[Name] as 工位名称`。 排序/分组/分页线索:`order by [VisCode]`。 +- `Prog_MES_LoadProcess` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`基础表_工序`。 主要返回字段线索:`[工艺编号], [工序名称]`。 排序/分组/分页线索:`SELECT [工艺编号], [工序名称] FROM [基础表_工序] ORDER BY [工艺编号]`。 +- `查询字典` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`YL_基础表_数据字典`。 主要返回字段线索:`*`。 +- `人员管理_人员信息查询_质检部门_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`*`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `MES_ProductTask_HelpStart` 属于 生产执行/工时,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、更新、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`;视图:`View_生产订单_MES`。 写入或更新对象:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID bigint,`、`@optor nvarchar(50)`。 主要返回字段线索:`@词条ID = 词条编号`。 关键过滤/匹配条件:`select @词条ID = 词条编号 from YL_基础表_数据字典 where 词条名称 = @词条名称 and 数据类别 = @数据类别`;`select @任务状态 = isnull(任务状态, 0)from View_生产订单_MES where TaskAID = @TaskAID`;`Update MES_接口_生产计划_生产任务 set 可执行 = 1, 加工状态 = @词条ID, 开工时间 = @操作时间, 操作时间 = @操作时间 where AID = @TaskAID`。 关键写入/状态处理语句线索:`Update MES_接口_生产计划_生产任务 set 可执行 = 1, 加工状态 = @词条ID, 开工时间 = @操作时间, 操作时间 = @操作时间 where AID = @TaskAID`。 +- `Prog_MES_GetProductOrder_byAID` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@TaskAID bigint`。 主要返回字段线索:`@订单编号 = [订单编号], @订单行号 = 订单行号`。 关键过滤/匹配条件:`select @订单编号 = [订单编号], @订单行号 = 订单行号 FROM [View_生产订单_MES] where TaskAID = @TaskAID`;`WHERE vt.[订单编号] = vo.[订单编号]`;`AND vt.[订单行号] = vo.[订单行号]-1`;`AND qc.检测类型编号 = '6'`;`WHERE [TaskAID] = @TaskAID`。 +- `Prog_MES_GetProductOrder_byAID` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@TaskAID bigint`。 主要返回字段线索:`@订单编号 = [订单编号], @订单行号 = 订单行号`。 关键过滤/匹配条件:`select @订单编号 = [订单编号], @订单行号 = 订单行号 FROM [View_生产订单_MES] where TaskAID = @TaskAID`;`WHERE vt.[订单编号] = vo.[订单编号]`;`AND vt.[订单行号] = vo.[订单行号]-1`;`AND qc.检测类型编号 = '6'`;`WHERE [TaskAID] = @TaskAID`。 +- `MES_ProductCenter_GetTask` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`登录基础数据_人员信息`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@TaskAID int`、`@订单号 int`、`@零件编号 nvarchar(50)`、`@计划开工_Start nvarchar(50)`、`@计划开工_End nvarchar(50)`、`@生产状态 int`、`@工位名称 nvarchar(50)`、`@用户ID nvarchar(50)`、`@计划号 nvarchar(50)`、`@销售订单 nvarchar(50)`。 主要返回字段线索:`TaskAID, `、`[订单编号] as 订单号, `、`合同号, `、`加急总数, `、`派工特殊说明, `、`[订单拆分内码], `、`[订单行号], `、`[开工时间], `、`[物料编号] as 零件编码, `、`[物料描述] as 零件名称, `。 关键过滤/匹配条件:`DECLARE @whereStr nvarchar(max) = ' WHERE 排产状态 = 1 '`;`WHERE next_task.[订单编号] = main.[订单编号]`;`AND next_task.[订单行号] = main.[订单行号] + 1`;`AND next_task.[排产状态] = 1`;`WHERE b.订单编号 = main.[订单编号]`;`AND b.订单行号 = main.[订单行号] - 1`;`AND a.检测类型编号 = 6`;`WHERE EXISTS (`;`WHERE b.订单编号 = main.订单编号`;`AND b.订单行号 = main.订单行号`。 关键写入/状态处理语句线索:`SET @whereStr = @whereStr + ' AND [指派对象] ''外协'' AND [指派对象] NOT LIKE ''%装配%'''`;`SET @whereStr = @whereStr + ' AND [订单编号] = ' + CONVERT(VARCHAR(10), @订单号)`;`SET @whereStr = @whereStr + ' AND [计划号] = '''+@计划号+''''`;`SET @whereStr = @whereStr + ' AND [合同号] LIKE ''%' + @销售订单 + '%'''`;`SET @whereStr = @whereStr + ' AND [TaskAID] = ' + CONVERT(VARCHAR(10), @TaskAID)`;`SET @whereStr = @whereStr + ' AND [物料编号] LIKE ''%' + @零件编号 + '%'''`;`SET @whereStr = @whereStr + ' AND [计划开始时间] > = ''' + @计划开工_Start + ''''`;`SET @whereStr = @whereStr + ' AND [计划开始时间] < = ''' + @计划开工_End + ''''`;`SET @whereStr = @whereStr +`;`SET @whereStr = @whereStr + ' AND ISNULL(任务状态, 0) IN (0, 1, 2) '`;`SET @whereStr = @whereStr + ' AND ISNULL(任务状态, 0) = 0 '`;`SET @whereStr = @whereStr + ' AND ISNULL(任务状态, 0) = 1 '`。 排序/分组/分页线索:`ORDER BY next_task.[订单行号]) AS 下序名称, `;`SET @selStr = @selStr + @whereStr + ' ORDER BY [计划开始时间], [订单编号], [阶段标识]'`。 +- `MES_ProductTask_WorkTimeSum` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@计划开工_Start nvarchar(50)`、`@计划开工_End nvarchar(50)`。 主要返回字段线索:`TaskAID, 工序名称, sum(工时) as 总工时`。 关键过滤/匹配条件:`select TaskAID, 工序名称, sum(工时) as 总工时 from YL_加工中心_操作记录表 where 工时 >0 group by TaskAID, 工序名称`。 排序/分组/分页线索:`select TaskAID, 工序名称, sum(工时) as 总工时 from YL_加工中心_操作记录表 where 工时 >0 group by TaskAID, 工序名称`。 +- `MES_ProductTask_HelpEnd` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、新增、更新、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`YL_加工中心_操作记录表`、`班次表`;视图:`View_生产订单_MES`。 写入或更新对象:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表`。 入参/分页参数:`@TaskAID bigint,`、`@partCount int,`、`@optor nvarchar(50),`、`@指派数量 decimal(16,2)`、`@selectedOperators NVARCHAR(50)`、`@加班人员 nvarchar(500)`、`@特殊加班人员 nvarchar(500)`、`@是否加班 bit`、`@是否休息日 bit`、`@是否法定休息日 bit`、`@用户选择班次 nvarchar(50)`、`@班次标准工时 int`。 主要返回字段线索:`@词条ID = 词条编号`。 关键过滤/匹配条件:`select @词条ID = 词条编号 from YL_基础表_数据字典 where 词条名称 = @词条名称 and 数据类别 = @数据类别`;`FROM View_生产订单_MES where TaskAID = @TaskAID`;`select @任务状态 = isnull(任务状态, 0) from View_生产订单_MES where TaskAID = @TaskAID`;`WHERE TaskAID = @TaskAID`;`AND 操作类别 = '辅助开始'`;`AND 开始时间 IS NOT NULL`;`AND ISNULL([已报工], 0) = 0`;`IF @开始总分钟 > = 465 AND @开始总分钟 < 990`;`WHERE 班次名称 = @当前班次`;`IF (@是否休息日 = 1 OR @是否法定休息日 = 1)`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @报工开始时间 = DATEADD(HOUR, -1, @操作时间)`;`SET @打卡开始秒 = DATEDIFF(SECOND, '00:00:00', CAST(@报工开始时间 AS time))`;`SET @打卡结束秒 = DATEDIFF(SECOND, '00:00:00', CAST(@操作时间 AS time))`;`SET @总时长秒 = @打卡结束秒 - @打卡开始秒`;`SET @当前班次 = ISNULL(@用户选择班次, '')`;`SET @当前班次 = '白班'`;`SET @当前班次 = '夜班'`;`SET @加班时长秒 = @总时长秒`;`SET @加班开始时间 = @报工开始时间`;`SET @班次结束时间_完整 = CAST(@基准日期 AS DATETIME) + CAST(@班次结束时间 AS datetime)`;`SET @加班时长秒 = DATEDIFF(SECOND, @班次结束时间_完整, @操作时间)`。 排序/分组/分页线索:`ORDER BY 开始时间 DESC`。 实现特征:临时表 `#TempPersons`。 +- `MES_ProductTask_MaterialRecieved` 属于 生产执行/工时,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID bigint,`、`@recievCount int,`、`@optor nvarchar(50)`。 主要返回字段线索:`@任务状态 = 任务状态`。 关键过滤/匹配条件:`select @任务状态 = 任务状态 from MES_接口_生产计划_生产任务 where AID = @TaskAID`;`where AID = @TaskAID`。 关键写入/状态处理语句线索:`Update MES_接口_生产计划_生产任务`;`set 任务状态 = case when isnull(收料数量, 0)+@recievCount>0 then 1 else 0 end, `;`set 收料 = case when isnull(收料数量, 0)+@recievCount>0 then 1 else 0 end, `。 +- `生产管理_加工中心_设备是否正在加工` 属于 设备与实时数据,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 设备/工位/资源数据处理。 数据库处理摘要:查询、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 入参/分页参数:`@指派对象 NVARCHAR(50)`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`select * from [dbo].[MES_接口_生产计划_生产任务] where 指派对象 = @指派对象 AND 加工状态 in ( 2, 4 )`。 +- `Prog_MES_GetProductOrder_byAID` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@TaskAID bigint`。 主要返回字段线索:`@订单编号 = [订单编号], @订单行号 = 订单行号`。 关键过滤/匹配条件:`select @订单编号 = [订单编号], @订单行号 = 订单行号 FROM [View_生产订单_MES] where TaskAID = @TaskAID`;`WHERE vt.[订单编号] = vo.[订单编号]`;`AND vt.[订单行号] = vo.[订单行号]-1`;`AND qc.检测类型编号 = '6'`;`WHERE [TaskAID] = @TaskAID`。 +- `MES_ProductTask_WorkingStart` 属于 生产执行/工时,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、更新、处理报工/工时、处理质检数据、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 写入或更新对象:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID bigint,`、`@optor nvarchar(50),`、`@收料 int,`、`@分配数 int`。 主要返回字段线索:`@任务状态 = isnull(任务状态, 0), @开工 = isnull(开工, 0)`。 关键过滤/匹配条件:`select @任务状态 = isnull(任务状态, 0), @开工 = isnull(开工, 0) from View_生产订单_MES where TaskAID = @TaskAID`;`select @词条ID = 词条编号 from YL_基础表_数据字典 where 词条名称 = @词条名称 and 数据类别 = @数据类别`;`Update MES_接口_生产计划_生产任务 set 任务状态 = 2, 可执行 = 1, 开工 = 1, 加工状态 = @词条ID, 开工时间 = @操作时间, 操作时间 = @操作时间 where AID = @TaskAID`;`select @订单编号 = [订单编号], @订单行号 = 订单行号 FROM [View_生产订单_MES] where TaskAID = @TaskAID`;`WHERE vt.[订单行号] = @订单行号-1`;`and vt.订单编号 = @订单编号`;`AND qc.检测类型编号 = '6'`;`if(@收料@合格数 and @订单行号>1)`;`Update MES_接口_生产计划_生产任务 set 收料 = 1, 收料数量 = @合格数, 操作时间 = @操作时间 where AID = @TaskAID`;`if(@收料@合格数 and @订单行号 = 1)`。 关键写入/状态处理语句线索:`Update MES_接口_生产计划_生产任务 set 任务状态 = 2, 可执行 = 1, 开工 = 1, 加工状态 = @词条ID, 开工时间 = @操作时间, 操作时间 = @操作时间 where AID = @TaskAID`;`Update MES_接口_生产计划_生产任务 set 收料 = 1, 收料数量 = @合格数, 操作时间 = @操作时间 where AID = @TaskAID`;`Update MES_接口_生产计划_生产任务 set 收料 = 1, 收料数量 = @分配数, 操作时间 = @操作时间 where AID = @TaskAID`。 +- `MES_ProductCenter_GetOrderTasks` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工。 读取/关联对象:表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@TaskAID bigint`。 主要返回字段线索:`@订单编号 = [订单编号], @订单行号 = 订单行号`。 关键过滤/匹配条件:`select @订单编号 = [订单编号], @订单行号 = 订单行号 FROM [View_生产订单_MES] where TaskAID = @TaskAID`;`WHERE vt.[订单编号] = vo.[订单编号]`;`AND vt.[订单行号] < vo.[订单行号]`;`AND qc.检测类型编号 = '6'`;`AND vt.[订单行号] = vo.[订单行号]-1`;`where [订单编号] = @订单编号`。 排序/分组/分页线索:`order by [订单行号]`。 +- `生产管理_加工中心_班次信息` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询。 读取/关联对象:视图:`View_设备工位人员`。 主要返回字段线索:`*`。 +- `生产管理_加工中心_开始时间` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询。 读取/关联对象:表:`YL_加工中心_操作记录表`。 入参/分页参数:`@TaskAID nvarchar(50)`。 主要返回字段线索:`top(1)`、`开始时间`。 关键过滤/匹配条件:`where TaskAID = @TaskAID`。 排序/分组/分页线索:`order by 结束时间 desc`。 +- `MES_ProductTask_ProdReport` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、新增、更新、处理报工/工时、处理质检数据、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`YL_加工中心_操作记录表`、`班次表`、`YL_加工中心_报工记录`;视图:`View_生产订单_MES`。 写入或更新对象:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表`、`YL_加工中心_报工记录`。 入参/分页参数:`@TaskAID bigint,`、`@BindRpt_ALLtaskids nvarchar(500),`、`@rptDate nvarchar(50),`、`@rptShift nvarchar(50),`、`@partCount int,`、`@rptDesc nvarchar(50),`、`@optor nvarchar(50),`、`@前序不合格总数 nvarchar(500),`、`@加班人员 nvarchar(500)`、`@特殊加班人员 nvarchar(500)`、`@是否加班 nvarchar(10)`、`@是否休息日 nvarchar(10)`、`@是否法定休息日 nvarchar(10)`、`@用户选择班次 nvarchar(50)`、`@班次标准工时 int`。 主要返回字段线索:`@词条ID = 词条编号`。 关键过滤/匹配条件:`WHEN @是否加班 = '1' OR @是否加班 = 'true' OR @是否加班 = 'True' OR @是否加班 = 'TRUE' THEN 1`;`WHEN @是否休息日 = '1' OR @是否休息日 = 'true' OR @是否休息日 = 'True' OR @是否休息日 = 'TRUE' THEN 1`;`WHEN @是否法定休息日 = '1' OR @是否法定休息日 = 'true' OR @是否法定休息日 = 'True' OR @是否法定休息日 = 'TRUE' THEN 1`;`where 词条名称 = @词条名称 and 数据类别 = @数据类别`;`where TaskAID = @TaskAID`;`WHERE TaskAID = @TaskAID`;`AND 操作类别 = '开始加工'`;`AND 开始时间 IS NOT NULL`;`AND ISNULL([已报工], 0) = 0`;`AND 操作类别 IN ('加班', '休息日加班', '法定休息日加班', '休息日工作', '法定休息日工作')`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @打卡开始秒 = DATEDIFF(SECOND, '00:00:00', CAST(@报工开始时间 AS time))`;`SET @打卡结束秒 = DATEDIFF(SECOND, '00:00:00', CAST(@rptDate AS time))`;`SET @打卡结束秒 = @打卡结束秒 + 24 * 3600`;`SET @总时长秒 = @打卡结束秒 - @打卡开始秒`;`SET @中点秒 = @打卡开始秒 + (@总时长秒 / 2)`;`SET @最小班次标准工时 = @班次标准工时`;`SET @位置 = CHARINDEX(', ', @人员列表)`;`SET @当前人员 = LTRIM(RTRIM(SUBSTRING(@人员列表, 1, @位置 - 1)))`;`SET @人员列表 = SUBSTRING(@人员列表, @位置 + 1, LEN(@人员列表))`;`SET @当前人员 = LTRIM(RTRIM(@人员列表))`;`SET @人员列表 = ''`。 排序/分组/分页线索:`ORDER BY 开始时间 DESC`;`FETCH NEXT FROM 班次游标 INTO @当前处理班次, @是否操作人班次`;`FETCH NEXT FROM task_cursor INTO @CurrentTaskAID, @CurrentDefectCount`;`FETCH NEXT FROM task_cursor2 INTO @CurrentTaskAID`。 实现特征:临时表 `#TempPersons`、`#班次处理`、`#TaskData`、`#TaskIDs`、`#DefectCounts`。 +- `Prog_MES_GetProductOrder_byAID` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@TaskAID bigint`。 主要返回字段线索:`@订单编号 = [订单编号], @订单行号 = 订单行号`。 关键过滤/匹配条件:`select @订单编号 = [订单编号], @订单行号 = 订单行号 FROM [View_生产订单_MES] where TaskAID = @TaskAID`;`WHERE vt.[订单编号] = vo.[订单编号]`;`AND vt.[订单行号] = vo.[订单行号]-1`;`AND qc.检测类型编号 = '6'`;`WHERE [TaskAID] = @TaskAID`。 +- `MES_QulityInspection_CheckItemData_Save` 属于 质量检验,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新、处理质检数据、处理计划/派工。 读取/关联对象:表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据`。 写入或更新对象:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据`。 入参/分页参数:`@TaskAID bigint`、`@物料编号 nvarchar(100)`、`@阶段标识 int`、`@工序名称 nvarchar(100)`、`@计划号 int`、`@检测项目 nvarchar(500)`、`@理论值 nvarchar(50)`、`@上限值 nvarchar(50)`、`@下限值 nvarchar(50)`、`@实测值 nvarchar(50)`、`@测量单位 nvarchar(50)`、`@检验比例 nvarchar(50)`、`@检具 nvarchar(50)`、`@检测结果 int`、`@合格数 int`、`@不合格数 int`、`@备注 nvarchar(200)`、`@检测人 nvarchar(50)`、`@检测时间 datetime`、`@当前检测零件编号 int`、`@质检类型 nvarchar(100)`、`@检测类型编号 nvarchar(100)`、`@零件名称 nvarchar(100)`、`@内部合同号 nvarchar(100)`。 主要返回字段线索:`@ExistingQT_AID = QT_AID`。 关键过滤/匹配条件:`WHERE TaskAID = @TaskAID`;`AND 零件编码 = @零件编码`;`AND 工序名称 = @工序名称`;`AND 质检类型 = @质检类型`;`AND 检测人 = @检测人`;`AND CONVERT(DATE, 检测时间) = CONVERT(DATE, @检测时间);`;`WHERE QT_AID = @ExistingQT_AID;`;`WHERE QT_AID = @ExistingQT_AID`;`AND 零件编号 = @零件编码`;`AND 当前检测零件编号 = @当前检测零件编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO [dbo].[YL_质量检验_质检记录](`;`SET @QT_AID = SCOPE_IDENTITY();`;`SET @ExistingQT_AID = @QT_AID;`;`SET @CurrentQualifiedCount = @CurrentQualifiedCount + @合格数;`;`SET @CurrentUnqualifiedCount = @CurrentUnqualifiedCount + @不合格数;`;`SET @CurrentInspectionCount = @CurrentInspectionCount + @检验数量;`;`UPDATE [dbo].[YL_质量检验_质检记录]`;`SET`;`SET @QT_AID = @ExistingQT_AID;`;`SET @PartResult = 0;`;`INSERT INTO [dbo].[YL_质量检验_质检记录_检测零件](`。 实现特征:事务控制、异常捕获。 +- `MES_QulityInspection_GetItemStandard` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:表:`YL_质量检验_检测标准`。 入参/分页参数:`@物料编号 nvarchar(50)`、`@工序名称编号 int`、`@检测类别编号 int`。 主要返回字段线索:`[物料编号]`、`[工序名称编号]`、`[检测项目]`、`[理论值]`、`[上限值]`、`[下限值]`、`[测量单位]`、`[检验比例]`、`[检具]`、`[备注]`。 关键过滤/匹配条件:`where [物料编号] = @物料编号 and [工序名称编号] = @工序名称编号 and [检测类别编号] = @检测类别编号`。 +- `Prog_MES_GetProductOrder_byAID` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@TaskAID bigint`。 主要返回字段线索:`@订单编号 = [订单编号], @订单行号 = 订单行号`。 关键过滤/匹配条件:`select @订单编号 = [订单编号], @订单行号 = 订单行号 FROM [View_生产订单_MES] where TaskAID = @TaskAID`;`WHERE vt.[订单编号] = vo.[订单编号]`;`AND vt.[订单行号] = vo.[订单行号]-1`;`AND qc.检测类型编号 = '6'`;`WHERE [TaskAID] = @TaskAID`。 +- `MES_QulityInspection_GetItemStandard` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:表:`YL_质量检验_检测标准`。 入参/分页参数:`@物料编号 nvarchar(50)`、`@工序名称编号 int`、`@检测类别编号 int`。 主要返回字段线索:`[物料编号]`、`[工序名称编号]`、`[检测项目]`、`[理论值]`、`[上限值]`、`[下限值]`、`[测量单位]`、`[检验比例]`、`[检具]`、`[备注]`。 关键过滤/匹配条件:`where [物料编号] = @物料编号 and [工序名称编号] = @工序名称编号 and [检测类别编号] = @检测类别编号`。 +- `MES_QulityInspection_CheckItemData_Save` 属于 质量检验,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新、处理质检数据、处理计划/派工。 读取/关联对象:表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据`。 写入或更新对象:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据`。 入参/分页参数:`@TaskAID bigint`、`@物料编号 nvarchar(100)`、`@阶段标识 int`、`@工序名称 nvarchar(100)`、`@计划号 int`、`@检测项目 nvarchar(500)`、`@理论值 nvarchar(50)`、`@上限值 nvarchar(50)`、`@下限值 nvarchar(50)`、`@实测值 nvarchar(50)`、`@测量单位 nvarchar(50)`、`@检验比例 nvarchar(50)`、`@检具 nvarchar(50)`、`@检测结果 int`、`@合格数 int`、`@不合格数 int`、`@备注 nvarchar(200)`、`@检测人 nvarchar(50)`、`@检测时间 datetime`、`@当前检测零件编号 int`、`@质检类型 nvarchar(100)`、`@检测类型编号 nvarchar(100)`、`@零件名称 nvarchar(100)`、`@内部合同号 nvarchar(100)`。 主要返回字段线索:`@ExistingQT_AID = QT_AID`。 关键过滤/匹配条件:`WHERE TaskAID = @TaskAID`;`AND 零件编码 = @零件编码`;`AND 工序名称 = @工序名称`;`AND 质检类型 = @质检类型`;`AND 检测人 = @检测人`;`AND CONVERT(DATE, 检测时间) = CONVERT(DATE, @检测时间);`;`WHERE QT_AID = @ExistingQT_AID;`;`WHERE QT_AID = @ExistingQT_AID`;`AND 零件编号 = @零件编码`;`AND 当前检测零件编号 = @当前检测零件编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO [dbo].[YL_质量检验_质检记录](`;`SET @QT_AID = SCOPE_IDENTITY();`;`SET @ExistingQT_AID = @QT_AID;`;`SET @CurrentQualifiedCount = @CurrentQualifiedCount + @合格数;`;`SET @CurrentUnqualifiedCount = @CurrentUnqualifiedCount + @不合格数;`;`SET @CurrentInspectionCount = @CurrentInspectionCount + @检验数量;`;`UPDATE [dbo].[YL_质量检验_质检记录]`;`SET`;`SET @QT_AID = @ExistingQT_AID;`;`SET @PartResult = 0;`;`INSERT INTO [dbo].[YL_质量检验_质检记录_检测零件](`。 实现特征:事务控制、异常捕获。 +- `加工中心_收检_读取收检记录` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@TaskAID int`。 主要返回字段线索:`@订单编号 = [订单编号], @订单行号 = 订单行号`。 关键过滤/匹配条件:`select @订单编号 = [订单编号], @订单行号 = 订单行号 FROM [View_生产订单_MES] where TaskAID = @TaskAID`;`select @已检验数量 = sum(检验数量) OVER() from YL_质量检验_质检记录 where TaskAID = @TaskAID and 质检类型 = '收检'`;`select @完成数量 = 完成数量 from [dbo].[MES_接口_生产计划_生产任务] where AID = @TaskAID`;`WHERE vt.[订单编号] = @订单编号`;`AND vt.[订单行号] = @订单行号-1`;`AND qc.检测类型编号 = '6'`。 +- `MES_QulityInspection_ReceiveCheck` 属于 质量检验,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 质量检验处理。 数据库处理摘要:查询、新增、更新、处理质检数据、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID bigint,`、`@检测类型编号 int,`、`@质检类型 NVARCHAR(50),`、`@零件名称 NVARCHAR(200),`、`@内部合同号 int,`、`@零件编码 NVARCHAR(200),`、`@计划号 int,`、`@工序名称 NVARCHAR(100),`、`@检测数量 INT,`、`@合格数 INT,`、`@不合格数 INT,`、`@检测人 NVARCHAR(50),`、`@检测时间 DATETIME,`、`@计划生产数 INT,`、`@检测说明 NVARCHAR(MAX)`。 主要返回字段线索:`@分配数量 = ISNULL(指派数量, 0)`。 关键过滤/匹配条件:`WHERE AID = @TaskAID`;`WHERE qc.TaskAID = @TaskAID`;`WHERE task.订单编号 = @计划号`;`AND task.订单行号 = @当前订单行号`;`AND qc.质检类型 = '收检'`;`WHERE 订单编号 = @计划号`;`AND 订单行号 = @当前订单行号 + 1`;`AND ISNULL(订单拆分内码, 1) = 1`;`IF @下一道工序AID IS NOT NULL and @合格数 > 0`;`WHERE AID = @下一道工序AID and isnull(任务状态, 0) < 1`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO [YL_MESDB].[dbo].[YL_质量检验_质检记录] (`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET 任务状态 = 4`;`SET 任务状态 = 1`。 实现特征:事务控制、异常捕获。 +- `MES_QualityInspection_CheckRecord_Query` 属于 质量检验,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据、处理计划/派工。 读取/关联对象:表:`YL_质量检验_质检记录`、`基础表_工序`。 入参/分页参数:`@计划号 NVARCHAR(100)`、`@零件编码 NVARCHAR(200)`、`@工艺编号 NVARCHAR(50)`、`@检测类型编号 INT`、`@检验结果 NVARCHAR(10)`、`@检测人 NVARCHAR(50)`、`@检测时间开始 DATETIME`、`@检测时间结束 DATETIME`。 主要返回字段线索:`top 100`、`a.[QT_AID], `、`a.[TaskAID], `、`a.[检测类型编号], `、`a.[质检类型], `、`a.[零件名称], `、`a.[内部合同号], `、`a.[零件编码], `、`a.[计划号], `、`a.[工序名称], `。 关键过滤/匹配条件:`WHEN a.[不合格数] = 0 AND a.[合格数] > 0 THEN ''合格''`;`WHERE 质检类型 ''来料检验''`;`SET @SQL = @SQL + ' AND a.[计划号] = ''' + @计划号 + ''''`;`SET @SQL = @SQL + ' AND a.[零件编码] LIKE ''%' + @零件编码 + '%'''`;`IF @检测类型编号 IS NOT NULL AND @检测类型编号 > 0`;`SET @SQL = @SQL + ' AND a.[检测类型编号] = ' + CAST(@检测类型编号 AS NVARCHAR(10))`;`SET @SQL = @SQL + ' AND EXISTS (`;`WHERE b2.[工艺编号] = ''' + @工艺编号 + '''`;`AND b2.[工序名称] = a.[工序名称]`;`SET @SQL = @SQL + ' AND a.[不合格数] = 0 AND a.[合格数] > 0'`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @SQL = @SQL + ' AND a.[计划号] = ''' + @计划号 + ''''`;`SET @SQL = @SQL + ' AND a.[零件编码] LIKE ''%' + @零件编码 + '%'''`;`SET @SQL = @SQL + ' AND a.[检测类型编号] = ' + CAST(@检测类型编号 AS NVARCHAR(10))`;`SET @SQL = @SQL + ' AND EXISTS (`;`SET @SQL = @SQL + ' AND a.[不合格数] = 0 AND a.[合格数] > 0'`;`SET @SQL = @SQL + ' AND a.[不合格数] > 0'`;`SET @SQL = @SQL + ' AND a.[检测人] LIKE ''%' + @检测人 + '%'''`;`SET @SQL = @SQL + ' ORDER BY a.[检测时间] DESC'`;`SET @检测时间开始 = DATEADD(YEAR, -1, GETDATE())`;`SET @检测时间结束 = GETDATE()`。 排序/分组/分页线索:`SET @SQL = @SQL + ' ORDER BY a.[检测时间] DESC'`。 +- `MES_QualityInspection_GetInspectionParts` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`。 入参/分页参数:`@QT_AID BIGINT`。 主要返回字段线索:`LJ_AID, `、`QT_AID, `、`当前检测零件编号, `、`检测结果, `、`检测时间, `、`检测人, `、`零件编号, `、`CASE`、`WHEN 检测结果 = 1 THEN '合格'`、`WHEN 检测结果 = 0 THEN '不合格'`。 关键过滤/匹配条件:`WHERE QT_AID = @QT_AID`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY 当前检测零件编号;`。 +- `MES_QualityInspection_GetInspectionDetails` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据、处理计划/派工。 读取/关联对象:表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测数据`。 入参/分页参数:`@LJ_AID BIGINT`。 主要返回字段线索:`AID, `、`LJ_AID, `、`物料编号, `、`当前检测零件编号, `、`阶段标识, `、`工序名称, `、`计划号, `、`检测项目, `、`理论值, `、`上限值, `。 关键过滤/匹配条件:`WHERE LJ_AID = @LJ_AID`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY AID;`。 +- `加工中心_异常工时_获取操作记录列表` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表`。 入参/分页参数:`@操作人 nvarchar(50)`。 主要返回字段线索:`o.AID, `、`o.操作类别编号, `、`o.操作类别, `、`o.阶段标识, `、`o.工序名称, `、`o.工位编号, `、`o.工位名称, `、`o.操作人 as 指派对象, `、`o.合同号, `、`o.订单编号 as 订单号, `。 关键过滤/匹配条件:`WHERE c.AID IS NULL and o.操作人 = @操作人 and o.操作类别编号 in ('8', '9')`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `加工中心_修改工时_保存修改记录` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理报工/工时。 读取/关联对象:表:`YL_加工中心_操作记录表`。 写入或更新对象:`YL_加工中心_操作记录表`。 入参/分页参数:`@TaskAID bigint,`、`@开始时间 datetime,`、`@结束时间 datetime,`、`@工时 int,`、`@操作人 nvarchar(50),`、`@最后编辑人 nvarchar(50)`。 关键过滤/匹配条件:`where AID = @TaskAID`。 关键写入/状态处理语句线索:`update [dbo].[YL_加工中心_操作记录表]`;`set 最后编辑时间 = GETDATE(), 最后编辑人 = @最后编辑人, 实际工时 = @工时, 开始时间 = @开始时间, 结束时间 = @结束时间`。 +- `sp_获取最近处理任务` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@审批人ID NVARCHAR(100)`。 主要返回字段线索:`ar.记录ID, `、`p.流程ID, `、`p.流程标题 as 流程名称, `、`p.发起人姓名 as 申请人, `、`ar.审批人姓名 as 处理人, `、`ar.处理结果, `、`CASE ar.处理结果`、`WHEN 'approved' THEN '同意'`、`WHEN 'rejected' THEN '拒绝'`、`ELSE ar.处理结果`。 关键过滤/匹配条件:`WHERE ar.审批人ID = @审批人ID`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY ar.处理时间 DESC;`。 +- `人员管理_人员信息查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`*`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `sp_获取我的流程` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@发起人ID NVARCHAR(100),`、`@状态 NVARCHAR(20)`。 主要返回字段线索:`p.流程ID, `、`p.流程标题, `、`p.流程描述, `、`p.优先级, `、`p.状态, `、`p.当前节点, `、`p.当前步骤, `、`p.总步骤数, `、`p.创建时间 as 发起时间, `、`p.更新时间`。 关键过滤/匹配条件:`WHERE p.发起人ID = @发起人ID`;`AND (@状态 IS NULL OR p.状态 = @状态)`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY p.更新时间 DESC;`。 +- `sp_获取待处理任务` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、处理计划/派工。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@审批人ID NVARCHAR(100)`。 主要返回字段线索:`p.流程ID, `、`p.流程标题, `、`p.流程描述, `、`p.优先级, `、`p.发起人姓名 as 申请人, `、`p.创建时间 as 申请时间, `、`p.已关联计划号, `、`p.零件名称, `、`p.零件编号, `、`p.工序名称, `。 关键过滤/匹配条件:`WHERE pn.审批人ID = @审批人ID`;`AND pn.状态 = 'processing'`;`AND p.状态 = 'processing'`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY`。 +- `MES_ProductAdmin_Query` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:视图:`View_生产订单_MES`。 入参/分页参数:`@订单号 int`、`@物料类型 nvarchar(50)`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@性质 nvarchar(50)`、`@要求完工日期1 nvarchar(50)`、`@要求完工日期2 nvarchar(50)`、`@排产状态 nvarchar(50)`、`@工位 nvarchar(500)`。 主要返回字段线索:`top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]`、`[排产状态], [工序计划数量], 指派对象编号, 指派对象, 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, [派工状态], [外协通知]`、`[优先级], [未完成说明], [序检], isnull([测试], 0) as [测试], isnull([入库], 0) as [入库], TaskAID`。 关键过滤/匹配条件:`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'''`;`if(@订单号>0)set @selectStrWhere = @selectStrWhere + ' and [订单编号] = '+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 [工序名称] = '''+@工序名称+''''`;`if(@性质'')set @selectStrWhere = @selectStrWhere + ' and [性质] = '''+@性质+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@排产状态 = '未完成')set @selectStrWhere = @selectStrWhere + ' and isnull([排产状态], 0) = 0'`。 关键写入/状态处理语句线索:`set @selectStr = '`;`if(@订单号>0)set @selectStrWhere = @selectStrWhere + ' and [订单编号] = '+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 [工序名称] = '''+@工序名称+''''`;`if(@性质'')set @selectStrWhere = @selectStrWhere + ' and [性质] = '''+@性质+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@排产状态 = '未完成')set @selectStrWhere = @selectStrWhere + ' and isnull([排产状态], 0) = 0'`;`else if(@排产状态 = '已完成')set @selectStrWhere = @selectStrWhere + ' and [排产状态] = 1'`;`if(@物料类型 = '自制件') set @selectStrWhere = @selectStrWhere + ' and [不装配] ''否'''`。 +- `sp_创建流程_简化版` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、新增、处理计划/派工。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`流程表`、`流程节点表`。 入参/分页参数:`@流程标题 NVARCHAR(200),`、`@流程描述 NVARCHAR(MAX)`、`@优先级 NVARCHAR(20)`、`@发起人ID NVARCHAR(100),`、`@发起人姓名 NVARCHAR(100),`、`@审批人ID NVARCHAR(100),`、`@审批人姓名 NVARCHAR(100),`、`@新流程ID INT`、`@已关联计划号 NVARCHAR(100)`、`@零件名称 NVARCHAR(100)`、`@零件编号 NVARCHAR(100)`、`@工序名称 NVARCHAR(100)`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO 流程表 (`;`SET @新流程ID = SCOPE_IDENTITY();`;`INSERT INTO 流程节点表 (`;`SET @结果 = 1;`;`SET @消息 = '流程创建成功,流程ID: ' + CAST(@新流程ID AS NVARCHAR(10));`;`SET @结果 = 0;`;`SET @消息 = '错误: ' + ERROR_MESSAGE();`。 实现特征:事务控制、异常捕获。 +- `sp_处理审批` 属于 通用业务,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、新增、更新。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`流程表`、`流程节点表`、`审批记录表`。 入参/分页参数:`@流程ID INT,`、`@节点ID INT,`、`@审批人ID NVARCHAR(100),`、`@审批人姓名 NVARCHAR(100),`、`@处理结果 NVARCHAR(20),`、`@审批意见 NVARCHAR(MAX)`、`@成功 BIT`。 主要返回字段线索:`@当前步骤 = 步骤序号`。 关键过滤/匹配条件:`WHERE 节点ID = @节点ID;`;`WHERE 流程ID = @流程ID;`;`SELECT @当前步骤 = 步骤序号 FROM 流程节点表 WHERE 节点ID = @节点ID;`;`WHERE 流程ID = @流程ID AND 步骤序号 = @当前步骤 + 1;`;`WHERE 节点ID = @下一节点ID;`;`当前节点 = (SELECT 节点名称 FROM 流程节点表 WHERE 节点ID = @下一节点ID), `。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO 审批记录表 (流程ID, 节点ID, 审批人ID, 审批人姓名, 处理结果, 审批意见)`;`UPDATE 流程节点表`;`SET 状态 = @处理结果, `;`UPDATE 流程表`;`SET 状态 = 'rejected', `;`SET 状态 = 'processing', `;`SET 当前步骤 = @当前步骤 + 1, `;`SET 状态 = 'completed', `;`SET @成功 = 1;`;`SET @成功 = 0;`。 实现特征:事务控制、异常捕获。 +- `sp_转办流程` 属于 通用业务,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、新增、更新。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`流程节点表`、`流程转办表`、`审批记录表`。 入参/分页参数:`@流程ID INT,`、`@节点ID INT,`、`@原审批人ID NVARCHAR(100),`、`@原审批人姓名 NVARCHAR(100),`、`@新审批人ID NVARCHAR(100),`、`@新审批人姓名 NVARCHAR(100),`、`@转办原因 NVARCHAR(500),`、`@成功 BIT`。 主要返回字段线索:`1`。 关键过滤/匹配条件:`WHERE p.流程ID = @流程ID`;`AND pn.节点ID = @节点ID`;`AND pn.状态 = 'processing'`;`AND p.状态 = 'processing'`;`AND pn.审批人ID = @原审批人ID`;`WHERE 节点ID = @节点ID;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @成功 = 0;`;`INSERT INTO 流程转办表 (`;`UPDATE 流程节点表`;`SET 审批人ID = @新审批人ID, `;`INSERT INTO 审批记录表 (流程ID, 节点ID, 审批人ID, 审批人姓名, 处理结果, 审批意见)`;`SET @成功 = 1;`。 实现特征:事务控制、异常捕获。 +- `sp_完成流程` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、新增、更新。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`流程表`、`流程节点表`、`流程完成记录表`、`审批记录表`。 入参/分页参数:`@流程ID INT,`、`@发起人ID NVARCHAR(100),`、`@发起人姓名 NVARCHAR(100),`、`@完成类型 NVARCHAR(20),`、`@完成原因 NVARCHAR(500),`、`@成功 BIT`。 主要返回字段线索:`1`。 关键过滤/匹配条件:`WHERE 流程ID = @流程ID`;`AND 发起人ID = @发起人ID`;`AND 状态 IN ('draft', 'processing')`;`WHERE 流程ID = @流程ID;`;`AND 状态 = 'processing';`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @成功 = 0;`;`INSERT INTO 流程完成记录表 (`;`UPDATE 流程表`;`SET 状态 = @完成类型, `;`UPDATE 流程节点表`;`SET 状态 = 'cancelled', `;`INSERT INTO 审批记录表 (流程ID, 节点ID, 审批人ID, 审批人姓名, 处理结果, 审批意见)`;`SET @成功 = 1;`。 实现特征:事务控制、异常捕获。 +- `sp_获取流程详情` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、处理计划/派工。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@流程ID INT`。 主要返回字段线索:`@流程信息 = (`、`SELECT`、`p.流程ID, `、`p.流程标题, `、`p.流程描述, `、`p.优先级, `、`p.状态, `、`p.发起人姓名, `、`p.当前节点, `、`p.当前步骤, `。 关键过滤/匹配条件:`WHERE p.流程ID = @流程ID`;`WHEN 步骤序号 < (SELECT 当前步骤 FROM 流程表 WHERE 流程ID = @流程ID) THEN '已完成'`;`WHEN 步骤序号 = (SELECT 当前步骤 FROM 流程表 WHERE 流程ID = @流程ID) THEN '进行中'`;`WHERE 流程ID = @流程ID`;`WHERE ar.流程ID = @流程ID`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY 步骤序号`;`ORDER BY ar.处理时间 DESC`。 +- `生产管理_加工中心_生产发料查询` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_OWOR_OIGE`。 入参/分页参数:`@生产订单号 nvarchar(50)`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`select * from SAP.SBO_YL.dbo.UBT_OWOR_OIGE where 生产订单号 = @生产订单号`。 关键写入/状态处理语句线索:`set nocount on;`。 实现特征:读取 SAP 数据库对象。 +- `工艺管理_图纸维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_零件图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`、`worker`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `工艺管理_工艺维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_工艺图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `生产管理_加工中心_退库` 属于 生产执行/工时,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、新增、处理质检数据。 读取/关联对象:表:`质量检验_质检任务_SAP`。 写入或更新对象:`质量检验_质检任务_SAP`。 入参/分页参数:`@生产订单号 bigint,`、`@编码 nvarchar(500),`、`@名称 nvarchar(500),`、`@数量 float,`、`@单位 nvarchar(50),`、`@批次信息 nvarchar(50),`、`@最后编辑人 nvarchar(50)`。 主要返回字段线索:`@行号 = max(isnull(行号, 0))`。 关键过滤/匹配条件:`select @行号 = max(isnull(行号, 0)) from [dbo].[质量检验_质检任务_SAP] where [订单编号] = @生产订单号 and [订单类型] = '202-60'`。 关键写入/状态处理语句线索:`insert into [dbo].[质量检验_质检任务_SAP] ( [订单编号]`。 + +## 33. src/views/ProductionManagement/OutsourceMange/index.vue + +**页面位置**:`src/views/ProductionManagement/OutsourceMange/index.vue` +**所属模块**:ProductionManagement / OutsourceMange +**源码行数**:1509 + +### 页面功能 + +该页面管理外协任务。用户查询可外协工序,按供应商/订单/工序分组,执行外协派工并同步 SAP 采购请求或相关单据,维护外协发料、收料、质检记录、打印次数和备注。 + +页面可见的操作/字段包括 “查询 派工并同步SAP”、“打印”、“发料”、“收货”、“编辑”、“历史记录”、“查看图纸”、“工艺图纸”、“取 消”、“确 定”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `生产管理_外协管理_外协历史查询`、`计划排产_派工`、`生产管理_外协管理_更新打印次数`、`生产管理_外协管理_更新备注`、`工艺管理_图纸维护_查看图纸`、`工艺管理_工艺维护_查看图纸` 等过程 取数或提交业务动作。 + +### 页面流程图 + +外协业务流程: + +```mermaid +flowchart LR + A[输入订单/合同/供应商/工序条件] --> B[查询外协任务或外协报表] + B --> C[选择外协工序/供应商] + C --> D[计划排产_派工 或外协分组] + D --> E[POST SAP 采购/外协相关请求] + E --> F[外协发料查询/保存] + F --> G[外协收料/质检记录] + G --> H[更新打印次数/备注/报表状态] +``` + + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询 派工并同步SAP`、`打印`、`发料`、`收货`、`编辑`、`历史记录`、`查看图纸`、`工艺图纸`、`取 消`、`确 定`、`关 闭`、`关闭`、`item.label`、`序号`、`生产订单`、`计划号`、`工序名称`、`物料名称` + +主要方法线索:`print` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `minTaskAID` | `@minTaskAID` | - | +| 参数 | `maxTaskAID` | `@TaskAID` | `TaskAID` | +| 参数 | `this.textcontent` | `@外协备注` | - | +| 参数 | `this.textweight` | `@单重` | - | +| 参数 | `this.textsum` | `@打印数量` | - | +| 参数 | `this.orderNo` | `@订单号` | - | +| 参数 | `this.productCode` | `@产品编码` | - | +| 参数 | `this.itemName` | `@产品名称` | - | +| 参数 | `this.processName` | `@工序名称` | - | +| 参数 | `this.workstate` | `@派工状态` | - | +| 参数 | `this.orderstate` | `@订单状态` | - | +| 参数 | `this.dostate` | `@执行状态` | - | +| 参数 | `this.plannum` | `@计划号` | - | +| 参数 | `maxTaskAID` | `@maxTaskAID` | - | +| 参数 | `this.$store.state.user.name` | `@optor` | - | +| 参数 | `this.receiveNum` | `@recievCount` | - | +| 参数 | `row.单重` | `@单重` | - | +| 参数 | `row.外协备注` | `@备注` | - | +| 参数 | `this.doNum` | `@recievCount` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `生产订单` | - | `订单号` | +| 显示列 | `计划号` | - | `计划号` | +| 显示列 | `工序名称` | - | `工序名称` | +| 显示列 | `物料名称` | - | `产品名称` | +| 显示列 | `同步状态` | - | `同步状态` | +| 显示列 | `上序合格数` | - | `上序合格数` | +| 显示列 | `指派数量` | - | `v.[指派数量], ` | +| 显示列 | `打印数量` | - | `打印数量` | +| 显示列 | `发料数量` | - | `v.[收料数量], ` | +| 显示列 | `收货数量` | - | `v.[完成数量], ` | +| 显示列 | `备注` | - | `外协备注` | +| 显示列 | `单重` | - | `单重` | +| 显示列 | `物料编码` | - | `产品编码` | +| 显示列 | `打印次数` | - | `外协打印次数` | +| 显示列 | `计划开始时间` | - | `计划开始时间` | +| 显示列 | `计划完成时间` | - | `计划完成时间` | +| 显示列 | `操作` | - | `操作描述, ` | +| 显示列 | `备注` | - | `操作描述, ` | +| 显示列 | `时间` | - | `最后编辑时间, ` | +| 显示列 | `数量` | - | `操作数值, ` | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- SAP B1 Service Layer(`src/api/b1s.js`) +- PDF/图纸预览或导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 641 | 11(当前通用存储过程查询/执行) | `生产管理_外协管理_外协历史查询` | 查询/读取数据 | 查询、处理外协业务 | 表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES` | +| 956 | 12(当前通用存储过程写入/业务动作) | `计划排产_派工` | 计划排产或派工 | 查询、新增、更新、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1011 | 11(当前通用存储过程查询/执行) | `生产管理_外协管理_更新打印次数` | 更新/保存业务数据 | 查询、新增、更新、处理计划/派工、处理外协业务 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1033 | 11(当前通用存储过程查询/执行) | `生产管理_外协管理_更新备注` | 更新/保存业务数据 | 查询、新增、更新、处理计划/派工、处理外协业务 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1065 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_零件图纸` | +| 1084 | 11(当前通用存储过程查询/执行) | `工艺管理_工艺维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_工艺图纸` | +| 1111 | 11(当前通用存储过程查询/执行) | `生产管理_外协管理_查询外协全部` | 查询/读取数据 | 查询、新增、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`;视图:`View_生产订单全部(包括已关闭)` | +| 1347 | 11(当前通用存储过程查询/执行) | `生产管理_外协管理_外协发料查询` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 1374 | 11(当前通用存储过程查询/执行) | `生产管理_外协管理_外协发料查询` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 1416 | 11(当前通用存储过程查询/执行) | `生产管理_外协管理_外协发料保存` | 更新/保存业务数据 | 查询、更新、处理计划/派工、处理外协业务 | 表:`MES_接口_生产计划` | +| 1451 | 11(当前通用存储过程查询/执行) | `生产管理_外协管理_外协收料保存` | 更新/保存业务数据 | 更新、处理报工/工时、处理计划/派工、处理外协业务 | 表:`MES_接口_生产计划` | + +### 与 SAP 的交互 + +页面直接 SAP/接口调用: +- 第 966 行:`postB1("/PurchaseRequests")` + +### SAP 接口级说明 + +| 行号 | 方法 | 接口 | 调用时机/影响判断 | 提交字段线索 | +|---:|---|---|---|---| +| 966 | `postB1` | `/PurchaseRequests` | 调用外部接口,失败会影响对应外部系统同步。 | `ReqType`、`Requester`、`PriceMode`、`RequesterBranch`、`RequesterDepartment`、`DocDate`、`DocDueDate`、`TaxDate`、`RequriedDate`、`Comments`、`DocumentLines`、`ItemCode` | + +### 状态流转说明 + +- `生产管理_外协管理_外协历史查询`:`FROM [dbo].[YL_加工中心_操作记录表]` +- `计划排产_派工`:`CREATE PROCEDURE [dbo].[计划排产_派工]`;`@派工操作人 NVARCHAR(50)`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`[派工状态] = 1`;`, [派工时间] = getdate()`;`, [派工操作人] = @派工操作人`;`'成功' AS 状态, ` +- `生产管理_外协管理_更新打印次数`:`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`'成功' AS 状态, `;`'错误' AS 状态, ` +- `生产管理_外协管理_更新备注`:`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`'成功' AS 状态, `;`'错误' AS 状态, ` +- `生产管理_外协管理_查询外协全部`:`@派工状态 int = 1, `;`@订单状态 int = 0, `;`@发料状态 int = 2`;`完成数量 nvarchar(50), `;`计划完成 datetime, `;`加急状态 nvarchar(50), `;`排产状态 nvarchar(20), `;`计划完成时间 datetime, ` +- `生产管理_外协管理_外协发料查询`:`, [加急状态]`;`, [排产状态]`;`, [计划完成时间]`;`, [派工状态]`;`, [派工时间]`;`, [任务状态]`;`, [未完成说明]`;`, [派工特殊说明]` +- `生产管理_外协管理_外协发料查询`:`, [加急状态]`;`, [排产状态]`;`, [计划完成时间]`;`, [派工状态]`;`, [派工时间]`;`, [任务状态]`;`, [未完成说明]`;`, [派工特殊说明]` +- `生产管理_外协管理_外协发料保存`:`declare @任务状态 int`;`select @任务状态 = isnull(任务状态, 0) from MES_接口_生产计划_生产任务 where AID = @TaskAID`;`if(@任务状态 < = 1 )`;`Update MES_接口_生产计划_生产任务`;`set 任务状态 = case when isnull(收料数量, 0)+@recievCount>0 then 1 else 0 end, `;`if(@任务状态 > 1 )` +- `生产管理_外协管理_外协收料保存`:`declare @任务状态 int`;`Update MES_接口_生产计划_生产任务`;`set 完成数量 = isnull(完成数量, 0)+@recievCount, ` + +### 数据库调用链 + +- `src/views/ProductionManagement/OutsourceMange/index.vue` -> `生产管理_外协管理_外协历史查询` -> 表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/OutsourceMange/index.vue` -> `计划排产_派工` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/ProductionManagement/OutsourceMange/index.vue` -> `生产管理_外协管理_更新打印次数` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/ProductionManagement/OutsourceMange/index.vue` -> `生产管理_外协管理_更新备注` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/ProductionManagement/OutsourceMange/index.vue` -> `工艺管理_图纸维护_查看图纸` -> 表:`物料基础数据_零件图纸` -> 查询/读取数据 +- `src/views/ProductionManagement/OutsourceMange/index.vue` -> `工艺管理_工艺维护_查看图纸` -> 表:`物料基础数据_工艺图纸` -> 查询/读取数据 +- `src/views/ProductionManagement/OutsourceMange/index.vue` -> `生产管理_外协管理_查询外协全部` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`;视图:`View_生产订单全部(包括已关闭)` -> 查询/读取数据 +- `src/views/ProductionManagement/OutsourceMange/index.vue` -> `生产管理_外协管理_外协发料查询` -> 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/OutsourceMange/index.vue` -> `生产管理_外协管理_外协发料查询` -> 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/OutsourceMange/index.vue` -> `生产管理_外协管理_外协发料保存` -> 表:`MES_接口_生产计划` -> 更新/保存业务数据 +- `src/views/ProductionManagement/OutsourceMange/index.vue` -> `生产管理_外协管理_外协收料保存` -> 表:`MES_接口_生产计划` -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `生产管理_外协管理_外协历史查询` 属于 外协协同,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理外协业务。 读取/关联对象:表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES`。 入参/分页参数:`@TaskAID bigint`。 主要返回字段线索:`操作描述, `、`最后编辑时间, `、`操作数值, `、`TaskAID`。 关键过滤/匹配条件:`WHERE [TaskAID] = @TaskAID and 操作类别 = '收料'`。 +- `计划排产_派工` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:查询、新增、更新、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单编号列表 NVARCHAR(MAX),`、`@派工操作人 NVARCHAR(50)`。 主要返回字段线索:`value`。 关键过滤/匹配条件:`WHERE LTRIM(RTRIM(value)) '';`;`WHERE AID IN (SELECT 订单编号 FROM #TempOrders);`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO #TempOrders (订单编号)`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET`。 实现特征:事务控制、临时表 `#TempOrders`。 +- `生产管理_外协管理_更新打印次数` 属于 外协协同,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新、处理计划/派工、处理外协业务。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单编号列表 NVARCHAR(MAX)`。 主要返回字段线索:`value`。 关键过滤/匹配条件:`WHERE LTRIM(RTRIM(value)) '';`;`WHERE AID IN (SELECT 订单编号 FROM #TempOrders);`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO #TempOrders (订单编号)`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET 外协打印次数 = ISNULL(外协打印次数, 0) + 1`。 实现特征:事务控制、异常捕获、临时表 `#TempOrders`。 +- `生产管理_外协管理_更新备注` 属于 外协协同,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新、处理计划/派工、处理外协业务。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单编号列表 NVARCHAR(MAX),`、`@外协备注 NVARCHAR(MAX)`、`@单重 NVARCHAR(50)`、`@打印数量 NVARCHAR(50)`。 主要返回字段线索:`value`。 关键过滤/匹配条件:`WHERE LTRIM(RTRIM(value)) '';`;`WHERE AID IN (SELECT 订单编号 FROM #TempOrders);`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO #TempOrders (订单编号)`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET 外协备注 = @外协备注, 单重 = @单重, 打印数量 = @打印数量`。 实现特征:事务控制、异常捕获、临时表 `#TempOrders`。 +- `工艺管理_图纸维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_零件图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`、`worker`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `工艺管理_工艺维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_工艺图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `生产管理_外协管理_查询外协全部` 属于 外协协同,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、新增、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`;视图:`View_生产订单全部(包括已关闭)`。 入参/分页参数:`@订单号 int`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@派工状态 int`、`@订单状态 int`、`@计划号 nvarchar(50)`、`@发料状态 int`。 主要返回字段线索:`v.[订单编号], `、`v.[订单行号], `、`v.[物料编号], `、`v.[物料描述], `、`v.[完成数量], `、`v.[指派数量], `、`v.[外协分组], `、`v.[不合格数量], `、`v.[收料数量], `、`v.[合同号], `。 关键过滤/匹配条件:`WHERE v.[物料类型] = 'pit_Resource'`;`AND v.[指派对象] = '外协'`;`AND (@订单号 = 0 OR v.[订单编号] = @订单号)`;`AND (@计划号 = '' OR v.[计划号] LIKE '%' + @计划号 + '%')`;`AND (@产品编码 = '' OR v.[物料编号] LIKE '%' + @产品编码 + '%')`;`AND (@产品名称 = '' OR v.[物料描述] LIKE '%' + @产品名称 + '%')`;`AND (@工序名称 = '' OR v.[工序名称] LIKE '%' + @工序名称 + '%')`;`WHERE prev.订单编号 = bd.订单编号`;`AND prev.订单行号 = bd.订单行号 - 1`;`AND ISNULL(prev.外协分组, '') = ISNULL(bd.外协分组, '')`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO #BaseData (`。 排序/分组/分页线索:`ORDER BY ga.订单行号`;`GROUP BY 订单编号, 外协分组, 组ID`;`ORDER BY bd.订单编号, bd.订单行号`。 实现特征:临时表 `#BaseData`。 +- `生产管理_外协管理_外协发料查询` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@maxTaskAID bigint,`、`@minTaskAID bigint`。 主要返回字段线索:`@上序订单编号 = [订单编号], `、`@上序订单行号 = [订单行号]`。 关键过滤/匹配条件:`WHERE [TaskAID] = @minTaskAID`;`WHERE vt.[订单编号] = vo.[订单编号]`;`AND vt.[订单行号] = @上序订单行号 - 1`;`AND qc.检测类型编号 = '6'`;`WHERE qc.TaskAID = @minTaskAID`;`WHERE [TaskAID] = @maxTaskAID`。 +- `生产管理_外协管理_外协发料查询` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@maxTaskAID bigint,`、`@minTaskAID bigint`。 主要返回字段线索:`@上序订单编号 = [订单编号], `、`@上序订单行号 = [订单行号]`。 关键过滤/匹配条件:`WHERE [TaskAID] = @minTaskAID`;`WHERE vt.[订单编号] = vo.[订单编号]`;`AND vt.[订单行号] = @上序订单行号 - 1`;`AND qc.检测类型编号 = '6'`;`WHERE qc.TaskAID = @minTaskAID`;`WHERE [TaskAID] = @maxTaskAID`。 +- `生产管理_外协管理_外协发料保存` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、更新、处理计划/派工、处理外协业务。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID bigint,`、`@recievCount int,`、`@optor nvarchar(50),`、`@单重 nvarchar(50)`、`@备注 nvarchar(50)`。 主要返回字段线索:`@任务状态 = isnull(任务状态, 0)`。 关键过滤/匹配条件:`select @任务状态 = isnull(任务状态, 0) from MES_接口_生产计划_生产任务 where AID = @TaskAID`;`where AID = @TaskAID`。 关键写入/状态处理语句线索:`Update MES_接口_生产计划_生产任务`;`set 任务状态 = case when isnull(收料数量, 0)+@recievCount>0 then 1 else 0 end, `;`set 收料 = case when isnull(收料数量, 0)+@recievCount>0 then 1 else 0 end, `。 +- `生产管理_外协管理_外协收料保存` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理报工/工时、处理计划/派工、处理外协业务。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID bigint,`、`@recievCount int,`、`@optor nvarchar(50)`。 关键过滤/匹配条件:`where AID = @TaskAID`。 关键写入/状态处理语句线索:`Update MES_接口_生产计划_生产任务`;`set 完成数量 = isnull(完成数量, 0)+@recievCount, `。 + +## 34. src/views/ProductionManagement/OutsourceSheet/index.vue + +**页面位置**:`src/views/ProductionManagement/OutsourceSheet/index.vue` +**所属模块**:ProductionManagement / OutsourceSheet +**源码行数**:496 + +### 页面功能 + +该页面输出外协报表。用户按订单、合同、产品、计划号、供应商、状态分页查询外协报表,也可导出,用于外协进度、发料、收料、质检、开票等跟踪。 + +页面可见的操作/字段包括 “查询”、“Excel导出”、“全部”、“收检”、“终检”、“来料检验”、“退库检验”、“收料小于发料”、“供应商”、“订单号”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `生产管理_外协报表_导出`、`生产管理_外协报表_查询` 取数或提交业务动作。 + +### 页面流程图 + +外协业务流程: + +```mermaid +flowchart LR + A[输入订单/合同/供应商/工序条件] --> B[查询外协任务或外协报表] + B --> C[选择外协工序/供应商] + C --> D[计划排产_派工 或外协分组] + D --> E[POST SAP 采购/外协相关请求] + E --> F[外协发料查询/保存] + F --> G[外协收料/质检记录] + G --> H[更新打印次数/备注/报表状态] +``` + + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`Excel导出`、`全部`、`收检`、`终检`、`来料检验`、`退库检验`、`收料小于发料`、`供应商`、`订单号`、`计划号`、`合同号`、`零件编码`、`零件名称`、`工序名称`、`材质`、`数量`、`单价` + +主要方法线索:`tableRowClassName`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.orderNo` | `@订单号` | `订单号, ` | +| 参数 | `this.productCode` | `@产品编码` | `MAX(产品编码) AS 产品编码, ` | +| 参数 | `this.productName` | `@产品名称` | `MAX(产品名称) AS 产品名称, ` | +| 参数 | `this.supplierName` | `@供应商` | `MAX(供应商名称) AS 供应商名称, ` | +| 参数 | `this.statusFilter ? 1 : 0` | `@状态过滤` | - | +| 参数 | `orderId` | `@订单编号` | - | +| 显示列 | `供应商` | - | `MAX(供应商名称) AS 供应商名称, ` | +| 显示列 | `订单号` | - | `订单号, ` | +| 显示列 | `计划号` | - | `MAX(计划号) AS 计划号, ` | +| 显示列 | `合同号` | - | `MAX(合同号) AS 合同号, ` | +| 显示列 | `零件编码` | - | `MAX(产品编码) AS 产品编码, ` | +| 显示列 | `零件名称` | - | `MAX(产品名称) AS 产品名称, ` | +| 显示列 | `工序名称` | - | `工序名称` | +| 显示列 | `材质` | - | `材质` | +| 显示列 | `数量` | - | `MAX(指派数量) AS 指派数量, ` | +| 显示列 | `单价` | - | `MAX(含税单价) AS 含税单价, ` | +| 显示列 | `金额` | - | `MAX(含税行总计) AS 含税行总计, ` | +| 显示列 | `发料日期` | - | `开始时间` | +| 显示列 | `要求到货日期` | - | `计划完成时间` | +| 显示列 | `外协预计到货` | - | `外协预计到货` | +| 显示列 | `收货日期` | - | `外协结束时间` | +| 显示列 | `收货数量` | - | `收料数量` | +| 显示列 | `合格数量` | - | `收检合格数` | +| 显示列 | `报废数量` | - | `收检不合格数` | +| 显示列 | `开票状态` | - | `开票数量` | +| 显示列 | `发料数量` | - | `发料数量合计` | +| 显示列 | `收料数量` | - | `收料数量_报工` | +| 输入字段 | `orderNo` | `@订单号` | - | +| 输入字段 | `contractNo` | - | - | +| 输入字段 | `productCode` | `@产品编码` | - | +| 输入字段 | `productName` | `@产品名称` | - | +| 输入字段 | `QualityStatus` | - | - | +| 输入字段 | `supplierName` | `@供应商` | - | +| 输入字段 | `statusFilter` | `@状态过滤` | - | +| 输入字段 | `activeTab` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- Excel/报表导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 176 | 2001(导出/报表类过程) | `生产管理_外协报表_导出` | 外协业务处理 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 未在 SQL 中解析到明确依赖 | +| 252 | 11(当前通用存储过程查询/执行) | `生产管理_外协报表_查询` | 查询/读取数据 | 查询、分页、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 未在 SQL 中解析到明确依赖 | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `生产管理_外协报表_导出`:`@状态过滤 int = 0`;`MAX(完成数量) AS 完成数量, `;`MAX(CASE WHEN 订单行号 = 1 OR ISNULL(收检合格数, 0) > 0 THEN 1 ELSE 0 END) AS 执行状态, `;`(@状态过滤 = 0 OR MAX(CASE WHEN ISNULL(收料数量_报工, 0) < ISNULL(发料数量合计, 0) THEN 1 ELSE 0 END) = 1)`;`CASE WHEN 开票数量 > 0 THEN '是' ELSE '否' END AS 开票状态, `;`执行状态, `;`CASE WHEN 执行状态 = 1 THEN '可执行' ELSE '不可执行' END AS 执行状态文本, `;`完成数量, ` +- `生产管理_外协报表_查询`:`@状态过滤 int = 0, `;`MIN(计划完成时间) AS 计划完成时间, `;`MAX(完成数量) AS 完成数量, `;`MAX(CASE WHEN 订单行号 = 1 OR ISNULL(收检合格数, 0) > 0 THEN 1 ELSE 0 END) AS 执行状态, `;`(@状态过滤 = 0 OR MAX(CASE WHEN ISNULL(收料数量_报工, 0) < ISNULL(发料数量合计, 0) THEN 1 ELSE 0 END) = 1)`;`计划完成时间, `;`执行状态, `;`CASE WHEN 执行状态 = 1 THEN '可执行' ELSE '不可执行' END AS 执行状态文本, ` + +### 数据库调用链 + +- `src/views/ProductionManagement/OutsourceSheet/index.vue` -> `生产管理_外协报表_导出` -> 未在 SQL 中解析到明确依赖 -> 外协业务处理 +- `src/views/ProductionManagement/OutsourceSheet/index.vue` -> `生产管理_外协报表_查询` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `生产管理_外协报表_导出` 属于 外协协同,前端以 type=2001(导出/报表类过程)调用,页面用途是 外协业务处理。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@订单号 int`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@供应商 nvarchar(100)`、`@状态过滤 int`。 主要返回字段线索:`订单号, `、`拆分内码, `、`MAX(计划号) AS 计划号, `、`MAX(合同号) AS 合同号, `、`MAX(产品编码) AS 产品编码, `、`MAX(产品名称) AS 产品名称, `、`MAX(供应商名称) AS 供应商名称, `、`MAX(指派数量) AS 指派数量, `、`MAX(含税单价) AS 含税单价, `、`MAX(含税行总计) AS 含税行总计, `。 关键过滤/匹配条件:`MAX(CASE WHEN 订单行号 = 1 OR ISNULL(收检合格数, 0) > 0 THEN 1 ELSE 0 END) AS 执行状态, `;`WHERE d2.订单号 = d.订单号 AND d2.拆分内码 = d.拆分内码`;`WHERE 1 = 1`;`AND (@订单号 = 0 OR d.订单号 = @订单号)`;`AND (@产品编码 = '' OR d.产品编码 LIKE '%' + @产品编码 + '%')`;`AND (@产品名称 = '' OR d.产品名称 LIKE '%' + @产品名称 + '%')`;`(@供应商 = '' OR MAX(CASE WHEN 供应商名称 LIKE '%' + @供应商 + '%' THEN 1 ELSE 0 END) = 1)`;`AND`;`(@状态过滤 = 0 OR MAX(CASE WHEN ISNULL(收料数量_报工, 0) < ISNULL(发料数量合计, 0) THEN 1 ELSE 0 END) = 1)`。 关键写入/状态处理语句线索:`SET NOCOUNT ON`。 排序/分组/分页线索:`ORDER BY d2.订单行号`;`GROUP BY 订单号, 拆分内码`;`HAVING`;`ORDER BY 订单号`。 实现特征:临时表 `#MergedResult`。 +- `生产管理_外协报表_查询` 属于 外协协同,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、分页、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@订单号 int`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@计划号 nvarchar(50)`、`@供应商 nvarchar(100)`、`@状态过滤 int`、`@PageCurrent int`、`@PageSize int`、`@PageCount int`、`@ItemCount int`。 主要返回字段线索:`订单号, `、`拆分内码, `、`MAX(计划号) AS 计划号, `、`MAX(合同号) AS 合同号, `、`MAX(产品编码) AS 产品编码, `、`MAX(产品名称) AS 产品名称, `、`MAX(供应商名称) AS 供应商名称, `、`MAX(指派数量) AS 指派数量, `、`MAX(含税单价) AS 含税单价, `、`MAX(含税行总计) AS 含税行总计, `。 关键过滤/匹配条件:`MAX(CASE WHEN 订单行号 = 1 OR ISNULL(收检合格数, 0) > 0 THEN 1 ELSE 0 END) AS 执行状态, `;`WHERE d2.订单号 = d.订单号 AND d2.拆分内码 = d.拆分内码`;`WHERE 1 = 1`;`and isnull(供应商名称, '') ''`;`AND (@订单号 = 0 OR d.订单号 = @订单号)`;`AND (@计划号 = '' OR d.计划号 = @计划号)`;`AND (@合同号 = '' OR d.合同号 LIKE '%' + @合同号 + '%')`;`AND (@产品编码 = '' OR d.产品编码 LIKE '%' + @产品编码 + '%')`;`AND (@产品名称 = '' OR d.产品名称 LIKE '%' + @产品名称 + '%')`;`AND (@供应商 = '' OR d.供应商名称 LIKE '%' + @供应商 + '%')`。 关键写入/状态处理语句线索:`SET NOCOUNT ON`;`SET @PageCount = 0`;`SET @PageCount = CEILING(CAST(@ItemCount AS FLOAT) / @PageSize)`。 排序/分组/分页线索:`ORDER BY d2.订单行号`;`ROW_NUMBER() OVER (ORDER BY 订单号) AS RowNum`;`GROUP BY 订单号, 拆分内码, 供应商名称`;`HAVING`;`ORDER BY 订单号, 供应商名称`。 实现特征:分页、临时表 `#MergedResult`。 + +## 35. src/views/ProductionManagement/PersonnelBinding/index.vue + +**页面位置**:`src/views/ProductionManagement/PersonnelBinding/index.vue` +**所属模块**:ProductionManagement / PersonnelBinding +**源码行数**:235 + +### 页面功能 + +该页面维护工位与人员绑定关系。用于限制或提示哪些人员可在指定工位报工、开工或执行任务。 + +页面可见的操作/字段包括 “查询”、“绑定人员”、“确 定”、“取 消”、“序号”、“工位名称”、“工位号”、“操作”、“请输入工位名称”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `MES_登录_工位与名称_查询`、`系统管理_人员管理_所有有效人员查询`、`系统管理_工位管理_工位绑定人员查询`、`系统管理_工位管理_工位绑定人员保存` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `MES_登录_工位与名称_查询` -> `系统管理_人员管理_所有有效人员查询` -> `系统管理_工位管理_工位绑定人员查询` -> `系统管理_工位管理_工位绑定人员保存` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`绑定人员`、`确 定`、`取 消`、`序号`、`工位名称`、`工位号`、`操作`、`请输入工位名称` + +主要方法线索:`searchData`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 显示列 | `序号` | - | `序号` | +| 显示列 | `工位名称` | - | `[Name] as 工位名称` | +| 显示列 | `工位号` | - | `[VisCode] as 工位号` | +| 显示列 | `绑定人员` | - | `绑定人员` | +| 显示列 | `操作` | - | `操作` | +| 输入字段 | `searchWorkstationName` | - | - | +| 输入字段 | `selectedPersonnel` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 108 | 11(当前通用存储过程查询/执行) | `MES_登录_工位与名称_查询` | 查询/读取数据 | 查询 | 视图:`View_基础数据_工位` | +| 122 | 11(当前通用存储过程查询/执行) | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 查询 | 视图:`登录基础数据_管理人员权限视图` | +| 143 | 11(当前通用存储过程查询/执行) | `系统管理_工位管理_工位绑定人员查询` | 查询/读取数据 | 查询 | 视图:`登录基础数据_管理人员权限视图` | +| 183 | 11(当前通用存储过程查询/执行) | `系统管理_工位管理_工位绑定人员查询` | 查询/读取数据 | 查询 | 视图:`登录基础数据_管理人员权限视图` | +| 204 | 11(当前通用存储过程查询/执行) | `系统管理_工位管理_工位绑定人员保存` | 更新/保存业务数据 | 查询、新增、更新 | 未在 SQL 中解析到明确依赖 | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `系统管理_工位管理_工位绑定人员查询`:`AND wb.绑定状态 = 1` +- `系统管理_工位管理_工位绑定人员查询`:`AND wb.绑定状态 = 1` +- `系统管理_工位管理_工位绑定人员保存`:`SET 绑定状态 = 0`;`WHERE 工位号 = @工位号 AND 绑定状态 = 1;`;`INSERT INTO 工位人员绑定表 (工位号, 人员编号, 绑定时间, 绑定人, 绑定状态)` + +### 数据库调用链 + +- `src/views/ProductionManagement/PersonnelBinding/index.vue` -> `MES_登录_工位与名称_查询` -> 视图:`View_基础数据_工位` -> 查询/读取数据 +- `src/views/ProductionManagement/PersonnelBinding/index.vue` -> `系统管理_人员管理_所有有效人员查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/ProductionManagement/PersonnelBinding/index.vue` -> `系统管理_工位管理_工位绑定人员查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/ProductionManagement/PersonnelBinding/index.vue` -> `系统管理_工位管理_工位绑定人员查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/ProductionManagement/PersonnelBinding/index.vue` -> `系统管理_工位管理_工位绑定人员保存` -> 未在 SQL 中解析到明确依赖 -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `MES_登录_工位与名称_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_基础数据_工位`。 主要返回字段线索:`[VisCode] as 工位代码`、`[VisCode] as MesWebCode`、`[VisCode] as 工位号`、`[Name] as 指南工位号`、`[Name] as 工位名称`。 排序/分组/分页线索:`order by [VisCode]`。 +- `系统管理_人员管理_所有有效人员查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`Personnel_Number AS 人员编号, `、`Personnel_Name AS 人员姓名, `、`account AS 账号, `、`Roles_Function AS 角色, `、`部门名称`。 关键过滤/匹配条件:`WHERE Quit = 0`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY Personnel_Name;`。 +- `系统管理_工位管理_工位绑定人员查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 入参/分页参数:`@工位号 NVARCHAR(50)`。 主要返回字段线索:`p.Personnel_Number AS 人员编号, `、`p.Personnel_Name AS 人员姓名, `、`p.account AS 账号, `、`p.Roles_Function AS 角色, `、`wb.绑定时间`。 关键过滤/匹配条件:`WHERE wb.工位号 = @工位号`;`AND wb.绑定状态 = 1`;`AND p.Quit = 0`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY p.Personnel_Name;`。 +- `系统管理_工位管理_工位绑定人员查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 入参/分页参数:`@工位号 NVARCHAR(50)`。 主要返回字段线索:`p.Personnel_Number AS 人员编号, `、`p.Personnel_Name AS 人员姓名, `、`p.account AS 账号, `、`p.Roles_Function AS 角色, `、`wb.绑定时间`。 关键过滤/匹配条件:`WHERE wb.工位号 = @工位号`;`AND wb.绑定状态 = 1`;`AND p.Quit = 0`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY p.Personnel_Name;`。 +- `系统管理_工位管理_工位绑定人员保存` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`工位人员绑定表`。 入参/分页参数:`@工位号 NVARCHAR(50),`、`@人员编号列表 NVARCHAR(MAX)`。 主要返回字段线索:`CAST(value AS INT)`。 关键过滤/匹配条件:`WHERE 工位号 = @工位号 AND 绑定状态 = 1;`;`IF @人员编号列表 IS NOT NULL AND LEN(LTRIM(RTRIM(@人员编号列表))) > 0`;`WHERE LTRIM(RTRIM(value)) ! = '';`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`UPDATE 工位人员绑定表`;`SET 绑定状态 = 0`;`INSERT INTO #临时人员表 (人员编号)`;`INSERT INTO 工位人员绑定表 (工位号, 人员编号, 绑定时间, 绑定人, 绑定状态)`。 实现特征:事务控制、异常捕获、临时表 `#临时人员表`。 + +## 36. src/views/ProductionManagement/PickingTask/index.vue + +**页面位置**:`src/views/ProductionManagement/PickingTask/index.vue` +**所属模块**:ProductionManagement / PickingTask +**源码行数**:438 + +### 页面功能 + +该页面处理拣配任务。用户查询生产订单相关拣配/领料任务,并可能联动 SAP 生产订单或库存出入库状态。 + +页面可见的操作/字段包括 “查询”、“转至 完成 --> 生产订单 加急数量 物料编号 关闭”、“装配”、“机加”、“全部”、“一楼”、“二楼”、“仓库”、“已完成”、“未完成”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `生产管理_拣配任务_查询` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `生产管理_拣配任务_查询` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`转至 完成 --> 生产订单 加急数量 物料编号 关闭`、`装配`、`机加`、`全部`、`一楼`、`二楼`、`仓库`、`已完成`、`未完成`、`序号`、`项目`、`计划号`、`生产订单号`、`物料名称`、`产成品物料编号`、`计划生产数`、`加急数量` + +主要方法线索:`tableRowClassName`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `row.零件编码` | `@物料编号` | - | +| 参数 | `this.contractNo` | `@合同号` | - | +| 参数 | `this.orderNo` | `@订单号` | - | +| 参数 | `this.partNo` | `@零件编号` | - | +| 参数 | `this.positionstate` | `@位置` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `项目` | - | `项目` | +| 显示列 | `计划号` | - | `计划号` | +| 显示列 | `生产订单号` | - | `生产订单号` | +| 显示列 | `物料名称` | - | `物料名称` | +| 显示列 | `产成品物料编号` | - | `产成品物料编号` | +| 显示列 | `计划生产数` | - | `计划生产数` | +| 显示列 | `加急数量` | - | `加急数量` | +| 显示列 | `计划数量` | - | `计划数量` | +| 显示列 | `拣配日期` | - | `拣配日期` | +| 显示列 | `预计齐套时间` | - | `预计齐套时间` | +| 显示列 | `检验操作人` | - | `检测人` | +| 显示列 | `检验时间` | - | `检测时间` | +| 显示列 | `操作` | - | `操作` | +| 输入字段 | `contractNo` | `@合同号` | - | +| 输入字段 | `orderNo` | `@订单号` | - | +| 输入字段 | `partNo` | `@零件编号` | - | +| 输入字段 | `attribute` | - | - | +| 输入字段 | `positionstate` | `@位置` | - | +| 输入字段 | `finishstate` | - | - | +| 输入字段 | `item.订单编号` | - | - | +| 输入字段 | `item.加急数量` | - | - | +| 输入字段 | `item.物料编号` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- Excel/报表导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 326 | 11(当前通用存储过程查询/执行) | `生产管理_拣配任务_查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象、处理计划/派工 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_MES_TASK_MERGE` | + +### 与 SAP 的交互 + +存储过程内读取 SAP B1 数据库对象: +- 生产管理_拣配任务_查询: SAP.SBO_YL.dbo.UBT_MES_TASK_MERGE + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `生产管理_拣配任务_查询`:`CREATE PROCEDURE [dbo].[生产管理_拣配任务_查询]`;`SET @selectStr = N' select top 50 * from SAP.SBO_YL.dbo.UBT_MES_TASK_MERGE '` + +### 数据库调用链 + +- `src/views/ProductionManagement/PickingTask/index.vue` -> `生产管理_拣配任务_查询` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_MES_TASK_MERGE` -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `生产管理_拣配任务_查询` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象、处理计划/派工。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_MES_TASK_MERGE`。 入参/分页参数:`@合同号 NVARCHAR(100)`、`@订单号 NVARCHAR(100)`、`@零件编号 NVARCHAR(100)`、`@位置 NVARCHAR(100)`。 主要返回字段线索:`top 50 *`。 关键过滤/匹配条件:`DECLARE @selectStrWhere NVARCHAR(4000) = ' WHERE 1 = 1 '`;`SET @selectStrWhere = @selectStrWhere + ' AND 项目 LIKE ''%' + REPLACE(@合同号, '''', '''''') + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND 生产订单号 = '+@订单号+''`;`SET @selectStrWhere = @selectStrWhere + ' AND 产成品物料编号 LIKE ''%' + REPLACE(@零件编号, '''', '''''') + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND 位置 = ''一楼拣配'''`;`SET @selectStrWhere = @selectStrWhere + ' AND 位置 = ''二楼拣配'''`;`SET @selectStrWhere = @selectStrWhere + ' AND 位置 = ''二楼主子机加'''`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @selectStrWhere = @selectStrWhere + ' AND 项目 LIKE ''%' + REPLACE(@合同号, '''', '''''') + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND 生产订单号 = '+@订单号+''`;`SET @selectStrWhere = @selectStrWhere + ' AND 产成品物料编号 LIKE ''%' + REPLACE(@零件编号, '''', '''''') + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND 位置 = ''一楼拣配'''`;`SET @selectStrWhere = @selectStrWhere + ' AND 位置 = ''二楼拣配'''`;`SET @selectStrWhere = @selectStrWhere + ' AND 位置 = ''二楼主子机加'''`;`SET @selectStr = N' select top 50 * from SAP.SBO_YL.dbo.UBT_MES_TASK_MERGE '`;`set @selectStr = @selectStr + @selectStrWhere`。 实现特征:读取 SAP 数据库对象。 + +## 37. src/views/ProductionManagement/ProductionPlanTrack/index.vue + +**页面位置**:`src/views/ProductionManagement/ProductionPlanTrack/index.vue` +**所属模块**:ProductionManagement / ProductionPlanTrack +**源码行数**:682 + +### 页面功能 + +该页面跟踪生产计划执行。用户查看计划任务的开工、完工、进度、延期或异常情况,用于计划员追踪订单。 + +页面可见的操作/字段包括 “查询”、“关闭”、“全部”、“机加”、“装配”、“是”、“否”、“加急”、“正常”、“序号”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `加急订单_加急明细查询`、`生产管理_生产计划跟踪`、`MES_OrderPlanned_DescriptionEdit`、`Prog_MES_LoadStations` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `加急订单_加急明细查询` -> `生产管理_生产计划跟踪` -> `MES_OrderPlanned_DescriptionEdit` -> `Prog_MES_LoadStations` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`关闭`、`全部`、`机加`、`装配`、`是`、`否`、`加急`、`正常`、`序号`、`工序名称`、`计划数量`、`指派对象`、`外协`、`计划开始时间`、`计划结束时间`、`实际开始时间`、`实际结束时间` + +主要方法线索:`Urgent` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `row.产品编码` | `@物料编号` | `docentry as 订单编号, itemcode as 物料编号, 加急数量` | +| 参数 | `this.orderNo ` | `@订单号` | - | +| 参数 | `'自制件'` | `@物料类型` | - | +| 参数 | `this.contractNo` | `@合同号` | - | +| 参数 | `this.productCode` | `@产品编码` | - | +| 参数 | `this.productName` | `@产品名称` | - | +| 参数 | `this.processName` | `@工序名称` | - | +| 参数 | `this.planStartTime[0` | `@计划开始1` | - | +| 参数 | `this.planStartTime[1` | `@计划开始2` | - | +| 参数 | `this.planendTime[0` | `@计划完成1` | - | +| 参数 | `this.planendTime[1` | `@计划完成2` | - | +| 参数 | `this.completionTime ? this.completionTime[0` | `@要求完工日期1` | - | +| 参数 | `this.completionTime ? this.completionTime[1` | `@要求完工日期2` | - | +| 参数 | `this.productionStatus` | `@排产状态` | - | +| 参数 | `this.selfStatus` | `@自制件属性` | `自制件属性, ` | +| 参数 | `'全部'` | `@指派对象` | - | +| 参数 | `this.plannum` | `@计划号` | `v.计划号, ` | +| 参数 | `this.urgentStatus` | `@加急状态` | - | +| 参数 | `this.outsourceStatus === '是' ? 1 : 0` | `@是否外协` | - | +| 参数 | `this.currentRow.订单号` | `@订单号` | - | +| 参数 | `this.currentRow.订单行号` | `@订单行号` | - | +| 参数 | `this.currentRow.拆分内码` | `@订单拆分内码` | - | +| 参数 | `this.editForm.优先级` | `@优先级` | - | +| 参数 | `this.editForm.未完成说明` | `@未完成说明` | - | +| 参数 | `this.editForm.派工特殊说明` | `@派工特殊说明` | - | +| 参数 | `this.$store.state.user.name` | `@最后编辑人` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `工序名称` | - | `工序名称` | +| 显示列 | `计划数量` | - | `计划数量` | +| 显示列 | `指派对象` | - | `指派对象` | +| 显示列 | `外协` | - | `外协` | +| 显示列 | `计划开始时间` | - | `计划开始时间` | +| 显示列 | `计划结束时间` | - | `计划完成时间` | +| 显示列 | `实际开始时间` | - | `开始时间` | +| 显示列 | `实际结束时间` | - | `实际结束时间` | +| 显示列 | `完成进度` | - | `进度` | +| 显示列 | `完成数量` | - | `完成数量` | +| 显示列 | `外协发料数量` | - | `收料数量` | +| 显示列 | `合格数` | - | `收检合格数` | +| 显示列 | `不良数` | - | `收检不合格数` | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 259 | 11(当前通用存储过程查询/执行) | `加急订单_加急明细查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象、处理计划/派工 | 表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` | +| 487 | 11(当前通用存储过程查询/执行) | `生产管理_生产计划跟踪` | 计划排产或派工 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES`、`View_生产订单全部(包括已关闭)` | +| 521 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 580 | 11(当前通用存储过程查询/执行) | `Prog_MES_LoadStations` | 查询/读取数据 | 查询、处理外协业务 | 表:`MES_资源主数据` | + +### 与 SAP 的交互 + +存储过程内读取 SAP B1 数据库对象: +- 加急订单_加急明细查询: SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `加急订单_加急明细查询`:`SELECT docentry as 订单编号, itemcode as 物料编号, 加急数量 from SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` +- `生产管理_生产计划跟踪`:`@计划完成1 nvarchar(50) = '', `;`@计划完成2 nvarchar(50) = '', `;`@排产状态 nvarchar(50) = '全部', `;`@加急状态 nvarchar(50) = ''`;`拣配状态, `;`when isnull(任务状态, 0) = 4 then ''已完成''`;`when isnull(任务状态, 0) = 2 then ''已开工''`;`when isnull(任务状态, 0) = 0 then ''待执行''` +- `MES_OrderPlanned_DescriptionEdit`:`@未完成说明 nvarchar(50) = '', `;`@派工特殊说明 nvarchar(500) = '', `;`Update [MES_接口_生产计划_生产任务] set`;`未完成说明 = @未完成说明, `;`派工特殊说明 = @派工特殊说明, ` + +### 数据库调用链 + +- `src/views/ProductionManagement/ProductionPlanTrack/index.vue` -> `加急订单_加急明细查询` -> 表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` -> 查询/读取数据 +- `src/views/ProductionManagement/ProductionPlanTrack/index.vue` -> `生产管理_生产计划跟踪` -> 表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES`、`View_生产订单全部(包括已关闭)` -> 计划排产或派工 +- `src/views/ProductionManagement/ProductionPlanTrack/index.vue` -> `MES_OrderPlanned_DescriptionEdit` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/ProductionManagement/ProductionPlanTrack/index.vue` -> `Prog_MES_LoadStations` -> 表:`MES_资源主数据` -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `加急订单_加急明细查询` 属于 加急任务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL`。 入参/分页参数:`@物料编号 nvarchar(50)`。 主要返回字段线索:`docentry as 订单编号, itemcode as 物料编号, 加急数量`。 关键过滤/匹配条件:`where itemcode = @物料编号`。 实现特征:读取 SAP 数据库对象。 +- `生产管理_生产计划跟踪` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 计划排产或派工。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES`、`View_生产订单全部(包括已关闭)`。 入参/分页参数:`@订单号 int`、`@物料类型 nvarchar(50)`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@要求完工日期1 nvarchar(50)`、`@要求完工日期2 nvarchar(50)`、`@计划开始1 nvarchar(50)`、`@计划开始2 nvarchar(50)`、`@计划完成1 nvarchar(50)`、`@计划完成2 nvarchar(50)`、`@排产状态 nvarchar(50)`、`@指派对象 nvarchar(50)`、`@自制件属性 nvarchar(50)`、`@计划号 nvarchar(50)`、`@加急状态 nvarchar(50)`。 主要返回字段线索:`top 200`、`v.计划号, `、`加急总数, `、`拣配状态, `、`自制件属性, `、`入库数量, `、`case`、`when isnull(任务状态, 0) = 4 then ''已完成''`、`when isnull(任务状态, 0) = 2 then ''已开工''`、`when isnull(任务状态, 0) = 0 then ''待执行''`。 关键过滤/匹配条件:`DECLARE @selectStrWhere NVARCHAR(4000) = ' WHERE [物料类型] = ''pit_Resource'' '`;`WHERE d2.订单编号 = v.订单编号 order by d2.订单行号`;`WHERE 质检类型 = ''终检''`;`WHERE 质检类型 = ''收检''`;`SET @selectStrWhere = @selectStrWhere + ' AND [订单编号] = ' + CONVERT(VARCHAR(10), @订单号)`;`SET @selectStrWhere = @selectStrWhere + ' AND v.[计划号] = '''+@计划号+''''`;`SET @selectStrWhere = @selectStrWhere + ' AND [合同号] LIKE ''%' + @合同号 + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND [物料编号] LIKE ''%' + @产品编码 + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND [物料描述] LIKE ''%' + @产品名称 + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND [工序名称] = ''' + @工序名称 + ''''`。 关键写入/状态处理语句线索:`SET @selectStr = N'`;`SET @selectStrWhere = @selectStrWhere + ' AND [订单编号] = ' + CONVERT(VARCHAR(10), @订单号)`;`SET @selectStrWhere = @selectStrWhere + ' AND v.[计划号] = '''+@计划号+''''`;`SET @selectStrWhere = @selectStrWhere + ' AND [合同号] LIKE ''%' + @合同号 + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND [物料编号] LIKE ''%' + @产品编码 + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND [物料描述] LIKE ''%' + @产品名称 + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND [工序名称] = ''' + @工序名称 + ''''`;`SET @selectStrWhere = @selectStrWhere + ' AND [计划完成] > = ''' + @要求完工日期1 + ''''`;`SET @selectStrWhere = @selectStrWhere + ' AND [计划完成] < = ''' + @要求完工日期2 + ''''`;`SET @selectStrWhere = @selectStrWhere + ' AND [计划开始时间] > = ''' + @计划开始1 + ''''`;`SET @selectStrWhere = @selectStrWhere + ' AND [计划开始时间] < = ''' + @计划开始2 + ''''`;`SET @selectStrWhere = @selectStrWhere + ' AND [计划完成时间] > = ''' + @计划完成1 + ''''`。 排序/分组/分页线索:`WHERE d2.订单编号 = v.订单编号 order by d2.订单行号`;`GROUP BY TaskAID`;`SET @selectStrWhere = @selectStrWhere + ' ORDER BY [计划完成] ASC, [订单编号] ASC'`。 +- `MES_OrderPlanned_DescriptionEdit` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int,`、`@订单行号 int,`、`@订单拆分内码 int,`、`@优先级 nvarchar(50)`、`@未完成说明 nvarchar(50)`、`@派工特殊说明 nvarchar(500)`、`@最后编辑人 nvarchar(500)`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`Update [MES_接口_生产计划_生产任务] set`。 +- `Prog_MES_LoadStations` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理外协业务。 读取/关联对象:表:`MES_资源主数据`。 主要返回字段线索:`[VisCode], [Name] as OPName`。 关键过滤/匹配条件:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 排序/分组/分页线索:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 + +## 38. src/views/ProductionManagement/ProductionTaskManage/index.vue + +**页面位置**:`src/views/ProductionManagement/ProductionTaskManage/index.vue` +**所属模块**:ProductionManagement / ProductionTaskManage +**源码行数**:735 + +### 页面功能 + +该页面管理生产任务。用户按工位、订单、工序查询任务,查看工时汇总,执行派工、修改计划字段、维护任务说明和通知状态。 + +页面可见的操作/字段包括 “查询”、“表单”、“日程”、“派工调整”、“外协通知”、“已发起”、“编辑”、“取 消”、“确 定”、“item.指南工位号”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `MES_登录_工位与名称_查询`、`MES_OrderPlanned_SingleTaskPlanned`、`MES_ProductTask_WorkTimeSum`、`MES_ProductAdmin_Query`、`Prog_MES_LoadStations`、`Prog_MES_SingleTaskPlanned` 等过程 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `MES_登录_工位与名称_查询` -> `MES_OrderPlanned_SingleTaskPlanned` -> `MES_ProductTask_WorkTimeSum` -> `MES_ProductAdmin_Query` -> `Prog_MES_LoadStations` -> `Prog_MES_SingleTaskPlanned` -> `MES_OrderPlanned_DescriptionEdit` -> `MES_ProductTask_Notice` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`表单`、`日程`、`派工调整`、`外协通知`、`已发起`、`编辑`、`取 消`、`确 定`、`item.指南工位号`、`序号`、`销售订单`、`生产订单`、`零件编码`、`产品名称`、`计划数`、`工序名称`、`性质` + +主要方法线索:`getDoing`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `row.订单号` | `@订单号` | - | +| 参数 | `row.订单行号` | `@订单行号` | - | +| 参数 | `row.拆分内码` | `@订单拆分内码` | - | +| 参数 | `this.$refs.formData.model.指派对象编号` | `@指派对象编号` | - | +| 参数 | `this.$refs.formData.model.指派对象` | `@指派对象` | - | +| 参数 | `this.$refs.formData.model.指派数量` | `@指派数量` | - | +| 参数 | `this.$refs.formData.model.派工特殊说明` | `@派工特殊说明` | - | +| 参数 | `this.$refs.formData.model.计划开始时间` | `@计划开始时间` | - | +| 参数 | `this.$refs.formData.model.计划完成时间` | `@计划完成时间` | - | +| 参数 | `this.$refs.formData.model.最晚开始时间` | `@最晚开始时间` | - | +| 参数 | `this.$store.state.user.name` | `@派工操作人` | - | +| 参数 | `this.completionTime ? this.completionTime[0` | `@计划开工_Start` | - | +| 参数 | `this.completionTime ? this.completionTime[1` | `@计划开工_End` | - | +| 参数 | `this.orderNo ` | `@订单号` | - | +| 参数 | `'自制件'` | `@物料类型` | - | +| 参数 | `this.contractNo` | `@合同号` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.productCode` | `@产品编码` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.productName` | `@产品名称` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.processName` | `@工序名称` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.nature` | `@性质` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.completionTime ? this.completionTime[0` | `@要求完工日期1` | - | +| 参数 | `this.completionTime ? this.completionTime[1` | `@要求完工日期2` | - | +| 参数 | `this.productionStatus` | `@排产状态` | `[排产状态], [工序计划数量], 指派对象编号, 指派对象, 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, [派工状态], [外协通知]` | +| 参数 | `this.Doing.toString()` | `@工位` | - | +| 参数 | `this.selectedRow.订单号` | `@订单号` | - | +| 参数 | `this.selectedRow.订单行号` | `@订单行号` | - | +| 参数 | `this.selectedRow.拆分内码` | `@订单拆分内码` | - | +| 参数 | `this.taskForm.指派对象编号` | `@指派对象编号` | - | +| 参数 | `this.taskForm.指派对象` | `@指派对象` | - | +| 参数 | `this.taskForm.指派数量` | `@指派数量` | - | +| 参数 | `this.taskForm.派工特殊说明 ` | `@派工特殊说明` | - | +| 参数 | `this.taskForm.计划开始时间 ` | `@计划开始时间` | - | +| 参数 | `this.taskForm.计划完成时间 ` | `@计划完成时间` | - | +| 参数 | `this.taskForm.最晚开始时间 ` | `@最晚开始时间` | - | +| 参数 | `this.currentRow.订单号` | `@订单号` | - | +| 参数 | `this.currentRow.订单行号` | `@订单行号` | - | +| 参数 | `this.currentRow.拆分内码` | `@订单拆分内码` | - | +| 参数 | `this.editForm.优先级` | `@优先级` | - | +| 参数 | `this.editForm.未完成说明` | `@未完成说明` | - | +| 参数 | `this.editForm.派工特殊说明` | `@派工特殊说明` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- FullCalendar + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 366 | 11(当前通用存储过程查询/执行) | `MES_登录_工位与名称_查询` | 查询/读取数据 | 查询 | 视图:`View_基础数据_工位` | +| 406 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 查询、新增、更新、删除、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 427 | 11(当前通用存储过程查询/执行) | `MES_ProductTask_WorkTimeSum` | 报工或工时处理 | 查询、处理报工/工时、处理计划/派工 | 未在 SQL 中解析到明确依赖 | +| 459 | 11(当前通用存储过程查询/执行) | `MES_ProductAdmin_Query` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 视图:`View_生产订单_MES` | +| 476 | 11(当前通用存储过程查询/执行) | `Prog_MES_LoadStations` | 查询/读取数据 | 查询、处理外协业务 | 表:`MES_资源主数据` | +| 519 | 12(当前通用存储过程写入/业务动作) | `Prog_MES_SingleTaskPlanned` | 计划排产或派工 | 未找到过程体 | 未知 | +| 554 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 575 | 12(当前通用存储过程写入/业务动作) | `MES_ProductTask_Notice` | 业务存储过程调用 | 更新、处理计划/派工、处理外协业务 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 656 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `MES_OrderPlanned_SingleTaskPlanned`:`@派工特殊说明 nvarchar(500) = '', `;`@计划完成时间 nvarchar(50) = '', `;`@派工操作人 nvarchar(50) = ''`;`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`INSERT INTO [MES_接口_生产计划_生产任务]` +- `MES_ProductTask_WorkTimeSum`:`select TaskAID, 工序名称, sum(工时) as 总工时 from YL_加工中心_操作记录表 where 工时 >0 group by TaskAID, 工序名称` +- `MES_ProductAdmin_Query`:`@排产状态 nvarchar(50) = '全部', `;`SELECT top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]`;`, [排产状态], [工序计划数量], 指派对象编号, 指派对象, 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, [派工状态], [外协通知]`;`, [优先级], [未完成说明], [序检], isnull([测试], 0) as [测试], isnull([入库], 0) as [入库], TaskAID`;`SELECT top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], '''' as 合同交货期, [计划完成] as 预计齐套时间, ''齐'' as 是否齐套, '''' as 齐套检测, ''是'' as 齐套锁料, [计划开始] as 备料日期, 0 as 加急`;`, [优先级], [未完成说明], [派工特殊说明], [最后编辑人], [最后编辑时间], TaskAID`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''` +- `MES_OrderPlanned_DescriptionEdit`:`@未完成说明 nvarchar(50) = '', `;`@派工特殊说明 nvarchar(500) = '', `;`Update [MES_接口_生产计划_生产任务] set`;`未完成说明 = @未完成说明, `;`派工特殊说明 = @派工特殊说明, ` +- `MES_ProductTask_Notice`:`UPDATE [MES_接口_生产计划_生产任务] set [外协通知] = @外协通知 where [AID] = @TaskAID` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` + +### 数据库调用链 + +- `src/views/ProductionManagement/ProductionTaskManage/index.vue` -> `MES_登录_工位与名称_查询` -> 视图:`View_基础数据_工位` -> 查询/读取数据 +- `src/views/ProductionManagement/ProductionTaskManage/index.vue` -> `MES_OrderPlanned_SingleTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/ProductionManagement/ProductionTaskManage/index.vue` -> `MES_ProductTask_WorkTimeSum` -> 未在 SQL 中解析到明确依赖 -> 报工或工时处理 +- `src/views/ProductionManagement/ProductionTaskManage/index.vue` -> `MES_ProductAdmin_Query` -> 视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/ProductionTaskManage/index.vue` -> `Prog_MES_LoadStations` -> 表:`MES_资源主数据` -> 查询/读取数据 +- `src/views/ProductionManagement/ProductionTaskManage/index.vue` -> `Prog_MES_SingleTaskPlanned` -> 过程体未解析 -> 计划排产或派工 +- `src/views/ProductionManagement/ProductionTaskManage/index.vue` -> `MES_OrderPlanned_DescriptionEdit` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/ProductionManagement/ProductionTaskManage/index.vue` -> `MES_ProductTask_Notice` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 业务存储过程调用 +- `src/views/ProductionManagement/ProductionTaskManage/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `MES_登录_工位与名称_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_基础数据_工位`。 主要返回字段线索:`[VisCode] as 工位代码`、`[VisCode] as MesWebCode`、`[VisCode] as 工位号`、`[Name] as 指南工位号`、`[Name] as 工位名称`。 排序/分组/分页线索:`order by [VisCode]`。 +- `MES_OrderPlanned_SingleTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:查询、新增、更新、删除、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`、`@指派对象编号 nvarchar(50)`、`@指派对象 nvarchar(50)`、`@指派数量 int`、`@派工特殊说明 nvarchar(500)`、`@计划开始时间 nvarchar(50)`、`@计划完成时间 nvarchar(50)`、`@最晚开始时间 nvarchar(50)`、`@派工操作人 nvarchar(50)`。 主要返回字段线索:`@计划数量 = 计划数量`。 关键过滤/匹配条件:`select @计划数量 = 计划数量 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`if(select count(1) from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0)>0`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`select @拆分内码_New = max([订单拆分内码])+1 from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号`;`FROM [MES_接口_生产计划_生产任务] WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`;`select @未指派数量_剩余 = 计划数量+@指派数量_Free from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`WHERE [订单编号] = @订单号 AND [订单行号] = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`set @指派数量_Free = @计划数量-@指派数量`;`Update [MES_接口_生产计划_生产任务] set [计划数量] = [计划数量]+@指派数量_Free WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and isnull(派工状态, 0) = 0`;`INSERT INTO [MES_接口_生产计划_生产任务]`;`set @ErrMsg = '指派数量大于剩余未分配数量,派工失败'`;`delete from [MES_接口_生产计划_生产任务] where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码@订单拆分内码 and isnull(派工状态, 0) = 0`;`if(@最晚开始时间 = '') set @最晚开始时间 = NULL`;`if(@计划开始时间 = '') set @计划开始时间 = NULL`;`if(@计划完成时间 = '') set @计划完成时间 = NULL`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET [指派对象编号] = @指派对象编号`。 +- `MES_ProductTask_WorkTimeSum` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@计划开工_Start nvarchar(50)`、`@计划开工_End nvarchar(50)`。 主要返回字段线索:`TaskAID, 工序名称, sum(工时) as 总工时`。 关键过滤/匹配条件:`select TaskAID, 工序名称, sum(工时) as 总工时 from YL_加工中心_操作记录表 where 工时 >0 group by TaskAID, 工序名称`。 排序/分组/分页线索:`select TaskAID, 工序名称, sum(工时) as 总工时 from YL_加工中心_操作记录表 where 工时 >0 group by TaskAID, 工序名称`。 +- `MES_ProductAdmin_Query` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:视图:`View_生产订单_MES`。 入参/分页参数:`@订单号 int`、`@物料类型 nvarchar(50)`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@性质 nvarchar(50)`、`@要求完工日期1 nvarchar(50)`、`@要求完工日期2 nvarchar(50)`、`@排产状态 nvarchar(50)`、`@工位 nvarchar(500)`。 主要返回字段线索:`top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]`、`[排产状态], [工序计划数量], 指派对象编号, 指派对象, 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, [派工状态], [外协通知]`、`[优先级], [未完成说明], [序检], isnull([测试], 0) as [测试], isnull([入库], 0) as [入库], TaskAID`。 关键过滤/匹配条件:`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'''`;`if(@订单号>0)set @selectStrWhere = @selectStrWhere + ' and [订单编号] = '+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 [工序名称] = '''+@工序名称+''''`;`if(@性质'')set @selectStrWhere = @selectStrWhere + ' and [性质] = '''+@性质+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@排产状态 = '未完成')set @selectStrWhere = @selectStrWhere + ' and isnull([排产状态], 0) = 0'`。 关键写入/状态处理语句线索:`set @selectStr = '`;`if(@订单号>0)set @selectStrWhere = @selectStrWhere + ' and [订单编号] = '+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 [工序名称] = '''+@工序名称+''''`;`if(@性质'')set @selectStrWhere = @selectStrWhere + ' and [性质] = '''+@性质+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@排产状态 = '未完成')set @selectStrWhere = @selectStrWhere + ' and isnull([排产状态], 0) = 0'`;`else if(@排产状态 = '已完成')set @selectStrWhere = @selectStrWhere + ' and [排产状态] = 1'`;`if(@物料类型 = '自制件') set @selectStrWhere = @selectStrWhere + ' and [不装配] ''否'''`。 +- `Prog_MES_LoadStations` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理外协业务。 读取/关联对象:表:`MES_资源主数据`。 主要返回字段线索:`[VisCode], [Name] as OPName`。 关键过滤/匹配条件:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 排序/分组/分页线索:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 +- `Prog_MES_SingleTaskPlanned` 属于 通用业务,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 当前工作区 SQL 中没有解析到该过程体,因此只能确认前端调用关系,不能准确说明内部读写表、过滤条件和状态变更。 +- `MES_OrderPlanned_DescriptionEdit` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int,`、`@订单行号 int,`、`@订单拆分内码 int,`、`@优先级 nvarchar(50)`、`@未完成说明 nvarchar(50)`、`@派工特殊说明 nvarchar(500)`、`@最后编辑人 nvarchar(500)`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`Update [MES_接口_生产计划_生产任务] set`。 +- `MES_ProductTask_Notice` 属于 生产执行/工时,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 业务存储过程调用。 数据库处理摘要:更新、处理计划/派工、处理外协业务。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID BIGINT,`、`@外协通知 int`。 关键过滤/匹配条件:`UPDATE [MES_接口_生产计划_生产任务] set [外协通知] = @外协通知 where [AID] = @TaskAID`。 关键写入/状态处理语句线索:`UPDATE [MES_接口_生产计划_生产任务] set [外协通知] = @外协通知 where [AID] = @TaskAID`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 + +## 39. src/views/ProductionManagement/ProductionTasksSum/index.vue + +**页面位置**:`src/views/ProductionManagement/ProductionTasksSum/index.vue` +**所属模块**:ProductionManagement / ProductionTasksSum +**源码行数**:533 + +### 页面功能 + +该页面做生产任务汇总。用户按订单、工序、工位、时间等维度查询生产任务和工时汇总,并可编辑计划说明或派工信息。 + +页面可见的操作/字段包括 “查询”、“编辑”、“取 消”、“确 定”、“item.指南工位号”、“表单”、“序号”、“销售订单”、“生产订单”、“零件编码”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `MES_登录_工位与名称_查询`、`MES_ProductTask_WorkTimeSum`、`生产管理_生产任务汇总`、`Prog_MES_LoadStations`、`MES_OrderPlanned_DescriptionEdit`、`MES_OrderPlanned_EditTaskPlanned` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `MES_登录_工位与名称_查询` -> `MES_ProductTask_WorkTimeSum` -> `生产管理_生产任务汇总` -> `Prog_MES_LoadStations` -> `MES_OrderPlanned_DescriptionEdit` -> `MES_OrderPlanned_EditTaskPlanned` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`编辑`、`取 消`、`确 定`、`item.指南工位号`、`表单`、`序号`、`销售订单`、`生产订单`、`零件编码`、`产品名称`、`计划数`、`工序名称`、`总工时`、`占用情况`、`计划开始时间`、`计划完成时间`、`最晚开始时间` + +主要方法线索:`getDoing`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.completionTime ? this.completionTime[0` | `@计划开工_Start` | - | +| 参数 | `this.completionTime ? this.completionTime[1` | `@计划开工_End` | - | +| 参数 | `this.orderNo ` | `@订单号` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `'自制件'` | `@物料类型` | - | +| 参数 | `this.contractNo` | `@合同号` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.productCode` | `@产品编码` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.productName` | `@产品名称` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.processName` | `@工序名称` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.nature` | `@性质` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.completionTime ? this.completionTime[0` | `@要求完工日期1` | - | +| 参数 | `this.completionTime ? this.completionTime[1` | `@要求完工日期2` | - | +| 参数 | `this.productionStatus` | `@排产状态` | `[排产状态], [工序计划数量], 指派对象编号, 指派对象, 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, [派工状态], [外协通知]` | +| 参数 | `this.Doing.toString()` | `@工位` | - | +| 参数 | `this.currentRow.订单号` | `@订单号` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `this.currentRow.订单行号` | `@订单行号` | - | +| 参数 | `this.currentRow.拆分内码` | `@订单拆分内码` | - | +| 参数 | `this.editForm.优先级` | `@优先级` | - | +| 参数 | `this.editForm.未完成说明` | `@未完成说明` | - | +| 参数 | `this.editForm.派工特殊说明` | `@派工特殊说明` | - | +| 参数 | `this.$store.state.user.name` | `@最后编辑人` | - | +| 参数 | `editstr` | `@editstr` | - | +| 参数 | `taskInfo.订单号` | `@订单号` | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 参数 | `taskInfo.订单行号` | `@订单行号` | - | +| 参数 | `taskInfo.拆分内码` | `@订单拆分内码` | - | +| 参数 | `startTime` | `@计划开始时间` | - | +| 参数 | `endTime` | `@计划完成时间` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `销售订单` | - | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 显示列 | `生产订单` | - | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 显示列 | `零件编码` | - | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 显示列 | `产品名称` | - | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 显示列 | `计划数` | - | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 显示列 | `工序名称` | - | `TaskAID, 工序名称, sum(工时) as 总工时` | +| 显示列 | `总工时` | - | `TaskAID, 工序名称, sum(工时) as 总工时` | +| 显示列 | `占用情况` | - | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 显示列 | `计划开始时间` | - | `[排产状态], [工序计划数量], 指派对象编号, 指派对象, 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, [派工状态], [外协通知]` | +| 显示列 | `计划完成时间` | - | `[排产状态], [工序计划数量], 指派对象编号, 指派对象, 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, [派工状态], [外协通知]` | +| 显示列 | `最晚开始时间` | - | `[排产状态], [工序计划数量], 指派对象编号, 指派对象, 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, [派工状态], [外协通知]` | +| 显示列 | `要求完工日期` | - | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | +| 显示列 | `收料` | - | `top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]` | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- FullCalendar + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 254 | 11(当前通用存储过程查询/执行) | `MES_登录_工位与名称_查询` | 查询/读取数据 | 查询 | 视图:`View_基础数据_工位` | +| 274 | 11(当前通用存储过程查询/执行) | `MES_ProductTask_WorkTimeSum` | 报工或工时处理 | 查询、处理报工/工时、处理计划/派工 | 未在 SQL 中解析到明确依赖 | +| 318 | 11(当前通用存储过程查询/执行) | `生产管理_生产任务汇总` | 业务存储过程调用 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 视图:`View_生产订单_MES` | +| 336 | 11(当前通用存储过程查询/执行) | `Prog_MES_LoadStations` | 查询/读取数据 | 查询、处理外协业务 | 表:`MES_资源主数据` | +| 373 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 453 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `MES_ProductTask_WorkTimeSum`:`select TaskAID, 工序名称, sum(工时) as 总工时 from YL_加工中心_操作记录表 where 工时 >0 group by TaskAID, 工序名称` +- `生产管理_生产任务汇总`:`CREATE PROCEDURE [dbo].[生产管理_生产任务汇总]`;`@排产状态 nvarchar(50) = '全部', `;`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and 加工状态 in (2, 4) '`;`SELECT top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]`;`, [排产状态], [工序计划数量], 指派对象编号, 指派对象, 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, [派工状态], [外协通知]`;`, [优先级], [未完成说明], [派工特殊说明], [最后编辑人], [最后编辑时间], `;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''` +- `MES_OrderPlanned_DescriptionEdit`:`@未完成说明 nvarchar(50) = '', `;`@派工特殊说明 nvarchar(500) = '', `;`Update [MES_接口_生产计划_生产任务] set`;`未完成说明 = @未完成说明, `;`派工特殊说明 = @派工特殊说明, ` +- `MES_OrderPlanned_EditTaskPlanned`:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '` + +### 数据库调用链 + +- `src/views/ProductionManagement/ProductionTasksSum/index.vue` -> `MES_登录_工位与名称_查询` -> 视图:`View_基础数据_工位` -> 查询/读取数据 +- `src/views/ProductionManagement/ProductionTasksSum/index.vue` -> `MES_ProductTask_WorkTimeSum` -> 未在 SQL 中解析到明确依赖 -> 报工或工时处理 +- `src/views/ProductionManagement/ProductionTasksSum/index.vue` -> `生产管理_生产任务汇总` -> 视图:`View_生产订单_MES` -> 业务存储过程调用 +- `src/views/ProductionManagement/ProductionTasksSum/index.vue` -> `Prog_MES_LoadStations` -> 表:`MES_资源主数据` -> 查询/读取数据 +- `src/views/ProductionManagement/ProductionTasksSum/index.vue` -> `MES_OrderPlanned_DescriptionEdit` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/ProductionManagement/ProductionTasksSum/index.vue` -> `MES_OrderPlanned_EditTaskPlanned` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `MES_登录_工位与名称_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_基础数据_工位`。 主要返回字段线索:`[VisCode] as 工位代码`、`[VisCode] as MesWebCode`、`[VisCode] as 工位号`、`[Name] as 指南工位号`、`[Name] as 工位名称`。 排序/分组/分页线索:`order by [VisCode]`。 +- `MES_ProductTask_WorkTimeSum` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@计划开工_Start nvarchar(50)`、`@计划开工_End nvarchar(50)`。 主要返回字段线索:`TaskAID, 工序名称, sum(工时) as 总工时`。 关键过滤/匹配条件:`select TaskAID, 工序名称, sum(工时) as 总工时 from YL_加工中心_操作记录表 where 工时 >0 group by TaskAID, 工序名称`。 排序/分组/分页线索:`select TaskAID, 工序名称, sum(工时) as 总工时 from YL_加工中心_操作记录表 where 工时 >0 group by TaskAID, 工序名称`。 +- `生产管理_生产任务汇总` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:视图:`View_生产订单_MES`。 入参/分页参数:`@订单号 int`、`@物料类型 nvarchar(50)`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@性质 nvarchar(50)`、`@要求完工日期1 nvarchar(50)`、`@要求完工日期2 nvarchar(50)`、`@排产状态 nvarchar(50)`、`@工位 nvarchar(500)`。 主要返回字段线索:`top 100 isnull([不合格数量], 0) as 不合格数量, [收料数量], [合同号], [订单编号] as 订单号, [订单行号], [订单拆分内码] as 拆分内码, [物料编号] as 产品编码, [物料描述] as 产品名称, [计划数量], [计划完成] as 要求完工日期, [工序名称], [加急状态], 性质, 总工时, [占用情况]`、`[排产状态], [工序计划数量], 指派对象编号, 指派对象, 指派数量, 计划开始时间, 计划完成时间, 最晚开始时间, [派工状态], [外协通知]`、`[优先级], [未完成说明], [派工特殊说明], [最后编辑人], [最后编辑时间], `、`isnull([可执行], 0) as 可执行, isnull([收料], 0) as [收料], isnull([开工], 0) as [开工], isnull([首检], 0) as [首检], isnull([巡检], 0) as [巡检], `、`isnull([进度], 0) as [进度], isnull([序检], 0) as [序检], isnull([测试], 0) as [测试], isnull([入库], 0) as [入库], TaskAID`。 关键过滤/匹配条件:`declare @selectStrWhere nvarchar(4000) = ' where [物料类型] = ''pit_Resource'' and 加工状态 in (2, 4) '`;`if(@订单号>0)set @selectStrWhere = @selectStrWhere + ' and [订单编号] = '+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 [工序名称] = '''+@工序名称+''''`;`if(@性质'')set @selectStrWhere = @selectStrWhere + ' and [性质] = '''+@性质+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@排产状态 = '未完成')set @selectStrWhere = @selectStrWhere + ' and isnull([排产状态], 0) = 0'`。 关键写入/状态处理语句线索:`set @selectStr = '`;`if(@订单号>0)set @selectStrWhere = @selectStrWhere + ' and [订单编号] = '+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 [工序名称] = '''+@工序名称+''''`;`if(@性质'')set @selectStrWhere = @selectStrWhere + ' and [性质] = '''+@性质+''''`;`if(@要求完工日期1 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] > = '''+@要求完工日期1+''''`;`if(@要求完工日期2 '')set @selectStrWhere = @selectStrWhere + ' and [计划完成] < = '''+@要求完工日期2+''''`;`if(@排产状态 = '未完成')set @selectStrWhere = @selectStrWhere + ' and isnull([排产状态], 0) = 0'`;`else if(@排产状态 = '已完成')set @selectStrWhere = @selectStrWhere + ' and [排产状态] = 1'`;`if(@物料类型 = '自制件') set @selectStrWhere = @selectStrWhere + ' and [不装配] ''否'''`。 +- `Prog_MES_LoadStations` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理外协业务。 读取/关联对象:表:`MES_资源主数据`。 主要返回字段线索:`[VisCode], [Name] as OPName`。 关键过滤/匹配条件:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 排序/分组/分页线索:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 +- `MES_OrderPlanned_DescriptionEdit` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int,`、`@订单行号 int,`、`@订单拆分内码 int,`、`@优先级 nvarchar(50)`、`@未完成说明 nvarchar(50)`、`@派工特殊说明 nvarchar(500)`、`@最后编辑人 nvarchar(500)`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`Update [MES_接口_生产计划_生产任务] set`。 +- `MES_OrderPlanned_EditTaskPlanned` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@editstr nvarchar(50),`、`@订单号 int`、`@订单行号 int`、`@订单拆分内码 int`。 关键过滤/匹配条件:`declare @whereStr nvarchar(max) = ' where 1 = 1 '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`。 关键写入/状态处理语句线索:`declare @updateStr nvarchar(max) = 'update [MES_接口_生产计划_生产任务] set '`;`if(@订单号>0)set @whereStr = @whereStr + ' and [订单编号] = '+Convert(VARCHAR(10), @订单号)`;`if(@订单行号>0)set @whereStr = @whereStr + ' and [订单行号] = '+Convert(VARCHAR(10), @订单行号)`;`if(@订单拆分内码>0)set @whereStr = @whereStr + ' and [订单拆分内码] = '+Convert(VARCHAR(10), @订单拆分内码)`;`if(@editstr'')set @updateStr = @updateStr + @editstr`;`set @selStr = @updateStr+@whereStr`。 + +## 40. src/views/ProductionManagement/SaleOutsourceMange/index.vue + +**页面位置**:`src/views/ProductionManagement/SaleOutsourceMange/index.vue` +**所属模块**:ProductionManagement / SaleOutsourceMange +**源码行数**:1630 + +### 页面功能 + +该页面管理外协任务。用户查询可外协工序,按供应商/订单/工序分组,执行外协派工并同步 SAP 采购请求或相关单据,维护外协发料、收料、质检记录、打印次数和备注。 + +页面可见的操作/字段包括 “查询 派工并同步SAP”、“打印”、“发料”、“收货”、“更新”、“编辑”、“历史记录”、“查看图纸”、“工艺图纸”、“收发记录”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `计划排产_重置派工状态`、`生产管理_外协管理_外协历史查询`、`计划排产_派工`、`生产管理_外协管理_更新打印次数`、`生产管理_外协管理_更新备注`、`工艺管理_图纸维护_查看图纸` 等过程 取数或提交业务动作。 + +### 页面流程图 + +外协业务流程: + +```mermaid +flowchart LR + A[输入订单/合同/供应商/工序条件] --> B[查询外协任务或外协报表] + B --> C[选择外协工序/供应商] + C --> D[计划排产_派工 或外协分组] + D --> E[POST SAP 采购/外协相关请求] + E --> F[外协发料查询/保存] + F --> G[外协收料/质检记录] + G --> H[更新打印次数/备注/报表状态] +``` + + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询 派工并同步SAP`、`打印`、`发料`、`收货`、`更新`、`编辑`、`历史记录`、`查看图纸`、`工艺图纸`、`收发记录`、`质检记录`、`取 消`、`确 定`、`关 闭`、`关闭`、`item.label`、`序号`、`生产订单` + +主要方法线索:`updatedata` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `row.TaskAID` | `@TaskAID` | - | +| 参数 | `minTaskAID` | `@minTaskAID` | - | +| 参数 | `maxTaskAID` | `@TaskAID` | - | +| 参数 | `this.textcontent` | `@外协备注` | - | +| 参数 | `this.textweight` | `@单重` | - | +| 参数 | `this.textsum` | `@打印数量` | - | +| 参数 | `this.orderNo` | `@订单号` | - | +| 参数 | `this.productCode` | `@产品编码` | - | +| 参数 | `this.itemName` | `@产品名称` | - | +| 参数 | `this.processName` | `@工序名称` | - | +| 参数 | `this.workstate` | `@派工状态` | - | +| 参数 | `this.issuingstate` | `@发料状态` | - | +| 参数 | `this.orderstate` | `@订单状态` | - | +| 参数 | `this.dostate` | `@执行状态` | - | +| 参数 | `this.plannum` | `@计划号` | - | +| 参数 | `maxTaskAID` | `@maxTaskAID` | - | +| 参数 | `this.$store.state.user.name` | `@optor` | - | +| 参数 | `this.receiveNum` | `@recievCount` | - | +| 参数 | `row.单重` | `@单重` | - | +| 参数 | `row.外协备注` | `@备注` | - | +| 参数 | `this.doNum` | `@recievCount` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `生产订单` | - | `订单号` | +| 显示列 | `计划号` | - | `计划号` | +| 显示列 | `物料名称` | - | `产品名称` | +| 显示列 | `工序名称` | - | `工序名称` | +| 显示列 | `物料编码` | - | `产品编码` | +| 显示列 | `计划开始时间` | - | `计划开始时间` | +| 显示列 | `计划完成时间` | - | `计划完成时间` | +| 显示列 | `同步状态` | - | `同步状态` | +| 显示列 | `上序合格数` | - | `上序合格数` | +| 显示列 | `指派数量` | - | `v.[指派数量], ` | +| 显示列 | `打印数量` | - | `打印数量` | +| 显示列 | `发料数量` | - | `v.[收料数量], ` | +| 显示列 | `收货数量` | - | `v.[完成数量], ` | +| 显示列 | `单重` | - | `单重` | +| 显示列 | `打印次数` | - | `外协打印次数` | +| 显示列 | `备注` | - | `外协备注` | +| 显示列 | `操作` | - | `操作描述, ` | +| 显示列 | `类型` | - | `操作类别` | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- SAP B1 Service Layer(`src/api/b1s.js`) +- PDF/图纸预览或导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 684 | 11(当前通用存储过程查询/执行) | `计划排产_重置派工状态` | 计划排产或派工 | 更新、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 715 | 11(当前通用存储过程查询/执行) | `生产管理_外协管理_外协历史查询` | 查询/读取数据 | 查询、处理外协业务 | 表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES` | +| 1030 | 12(当前通用存储过程写入/业务动作) | `计划排产_派工` | 计划排产或派工 | 查询、新增、更新、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1086 | 11(当前通用存储过程查询/执行) | `生产管理_外协管理_更新打印次数` | 更新/保存业务数据 | 查询、新增、更新、处理计划/派工、处理外协业务 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1108 | 11(当前通用存储过程查询/执行) | `生产管理_外协管理_更新备注` | 更新/保存业务数据 | 查询、新增、更新、处理计划/派工、处理外协业务 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 1140 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_零件图纸` | +| 1159 | 11(当前通用存储过程查询/执行) | `工艺管理_工艺维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_工艺图纸` | +| 1187 | 11(当前通用存储过程查询/执行) | `生产管理_外协管理_查询外协` | 查询/读取数据 | 查询、新增、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 1419 | 11(当前通用存储过程查询/执行) | `生产管理_外协管理_外协发料查询` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 1443 | 11(当前通用存储过程查询/执行) | `生产管理_外协管理_查询外协历史记录` | 查询/读取数据 | 查询、处理报工/工时、处理外协业务 | 表:`YL_加工中心_操作记录表` | +| 1468 | 11(当前通用存储过程查询/执行) | `生产管理_外协管理_查询质检记录` | 查询/读取数据 | 查询、处理质检数据、处理外协业务 | 表:`YL_质量检验_质检记录` | +| 1495 | 11(当前通用存储过程查询/执行) | `生产管理_外协管理_外协发料查询` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 1537 | 11(当前通用存储过程查询/执行) | `生产管理_外协管理_外协发料保存` | 更新/保存业务数据 | 查询、更新、处理计划/派工、处理外协业务 | 表:`MES_接口_生产计划` | +| 1572 | 11(当前通用存储过程查询/执行) | `生产管理_外协管理_外协收料保存` | 更新/保存业务数据 | 更新、处理报工/工时、处理计划/派工、处理外协业务 | 表:`MES_接口_生产计划` | + +### 与 SAP 的交互 + +页面直接 SAP/接口调用: +- 第 1041 行:`postB1("/PurchaseRequests")` + +### SAP 接口级说明 + +| 行号 | 方法 | 接口 | 调用时机/影响判断 | 提交字段线索 | +|---:|---|---|---|---| +| 1041 | `postB1` | `/PurchaseRequests` | 调用外部接口,失败会影响对应外部系统同步。 | `ReqType`、`Requester`、`PriceMode`、`RequesterBranch`、`RequesterDepartment`、`DocDate`、`DocDueDate`、`TaxDate`、`RequriedDate`、`Comments`、`DocumentLines`、`ItemCode` | + +### 状态流转说明 + +- `计划排产_重置派工状态`:`CREATE PROCEDURE [dbo].[计划排产_重置派工状态]`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`[派工状态] = 0, `;`[派工时间] = GETDATE(), ` +- `生产管理_外协管理_外协历史查询`:`FROM [dbo].[YL_加工中心_操作记录表]` +- `计划排产_派工`:`CREATE PROCEDURE [dbo].[计划排产_派工]`;`@派工操作人 NVARCHAR(50)`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`[派工状态] = 1`;`, [派工时间] = getdate()`;`, [派工操作人] = @派工操作人`;`'成功' AS 状态, ` +- `生产管理_外协管理_更新打印次数`:`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`'成功' AS 状态, `;`'错误' AS 状态, ` +- `生产管理_外协管理_更新备注`:`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`'成功' AS 状态, `;`'错误' AS 状态, ` +- `生产管理_外协管理_查询外协`:`@派工状态 int = 1, `;`@订单状态 int = 0, `;`@发料状态 int = 2`;`完成数量 nvarchar(50), `;`计划完成 datetime, `;`加急状态 nvarchar(50), `;`排产状态 nvarchar(20), `;`计划完成时间 datetime, ` +- `生产管理_外协管理_外协发料查询`:`, [加急状态]`;`, [排产状态]`;`, [计划完成时间]`;`, [派工状态]`;`, [派工时间]`;`, [任务状态]`;`, [未完成说明]`;`, [派工特殊说明]` +- `生产管理_外协管理_查询外协历史记录`:`select * from [dbo].[YL_加工中心_操作记录表] where 操作类别 in ('收料', '报工') and TaskAID = @maxTaskAID and isnull(操作数值, 0) 0` +- `生产管理_外协管理_查询质检记录`:`create PROCEDURE [dbo].[生产管理_外协管理_查询质检记录]`;`select * from [dbo].[YL_质量检验_质检记录] where TaskAID = @maxTaskAID` +- `生产管理_外协管理_外协发料查询`:`, [加急状态]`;`, [排产状态]`;`, [计划完成时间]`;`, [派工状态]`;`, [派工时间]`;`, [任务状态]`;`, [未完成说明]`;`, [派工特殊说明]` +- `生产管理_外协管理_外协发料保存`:`declare @任务状态 int`;`select @任务状态 = isnull(任务状态, 0) from MES_接口_生产计划_生产任务 where AID = @TaskAID`;`if(@任务状态 < = 1 )`;`Update MES_接口_生产计划_生产任务`;`set 任务状态 = case when isnull(收料数量, 0)+@recievCount>0 then 1 else 0 end, `;`if(@任务状态 > 1 )` +- `生产管理_外协管理_外协收料保存`:`declare @任务状态 int`;`Update MES_接口_生产计划_生产任务`;`set 完成数量 = isnull(完成数量, 0)+@recievCount, ` + +### 数据库调用链 + +- `src/views/ProductionManagement/SaleOutsourceMange/index.vue` -> `计划排产_重置派工状态` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/ProductionManagement/SaleOutsourceMange/index.vue` -> `生产管理_外协管理_外协历史查询` -> 表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/SaleOutsourceMange/index.vue` -> `计划排产_派工` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 计划排产或派工 +- `src/views/ProductionManagement/SaleOutsourceMange/index.vue` -> `生产管理_外协管理_更新打印次数` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/ProductionManagement/SaleOutsourceMange/index.vue` -> `生产管理_外协管理_更新备注` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/ProductionManagement/SaleOutsourceMange/index.vue` -> `工艺管理_图纸维护_查看图纸` -> 表:`物料基础数据_零件图纸` -> 查询/读取数据 +- `src/views/ProductionManagement/SaleOutsourceMange/index.vue` -> `工艺管理_工艺维护_查看图纸` -> 表:`物料基础数据_工艺图纸` -> 查询/读取数据 +- `src/views/ProductionManagement/SaleOutsourceMange/index.vue` -> `生产管理_外协管理_查询外协` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/SaleOutsourceMange/index.vue` -> `生产管理_外协管理_外协发料查询` -> 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/SaleOutsourceMange/index.vue` -> `生产管理_外协管理_查询外协历史记录` -> 表:`YL_加工中心_操作记录表` -> 查询/读取数据 +- `src/views/ProductionManagement/SaleOutsourceMange/index.vue` -> `生产管理_外协管理_查询质检记录` -> 表:`YL_质量检验_质检记录` -> 查询/读取数据 +- `src/views/ProductionManagement/SaleOutsourceMange/index.vue` -> `生产管理_外协管理_外协发料查询` -> 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/SaleOutsourceMange/index.vue` -> `生产管理_外协管理_外协发料保存` -> 表:`MES_接口_生产计划` -> 更新/保存业务数据 +- `src/views/ProductionManagement/SaleOutsourceMange/index.vue` -> `生产管理_外协管理_外协收料保存` -> 表:`MES_接口_生产计划` -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `计划排产_重置派工状态` 属于 计划排产,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 计划排产或派工。 数据库处理摘要:更新、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID NVARCHAR(MAX)`。 关键过滤/匹配条件:`WHERE AID IN (' + @TaskAID + ')'`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @Sql = '`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET`。 +- `生产管理_外协管理_外协历史查询` 属于 外协协同,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理外协业务。 读取/关联对象:表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES`。 入参/分页参数:`@TaskAID bigint`。 主要返回字段线索:`操作描述, `、`最后编辑时间, `、`操作数值, `、`TaskAID`。 关键过滤/匹配条件:`WHERE [TaskAID] = @TaskAID and 操作类别 = '收料'`。 +- `计划排产_派工` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 计划排产或派工。 数据库处理摘要:查询、新增、更新、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单编号列表 NVARCHAR(MAX),`、`@派工操作人 NVARCHAR(50)`。 主要返回字段线索:`value`。 关键过滤/匹配条件:`WHERE LTRIM(RTRIM(value)) '';`;`WHERE AID IN (SELECT 订单编号 FROM #TempOrders);`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO #TempOrders (订单编号)`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET`。 实现特征:事务控制、临时表 `#TempOrders`。 +- `生产管理_外协管理_更新打印次数` 属于 外协协同,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新、处理计划/派工、处理外协业务。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单编号列表 NVARCHAR(MAX)`。 主要返回字段线索:`value`。 关键过滤/匹配条件:`WHERE LTRIM(RTRIM(value)) '';`;`WHERE AID IN (SELECT 订单编号 FROM #TempOrders);`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO #TempOrders (订单编号)`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET 外协打印次数 = ISNULL(外协打印次数, 0) + 1`。 实现特征:事务控制、异常捕获、临时表 `#TempOrders`。 +- `生产管理_外协管理_更新备注` 属于 外协协同,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新、处理计划/派工、处理外协业务。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单编号列表 NVARCHAR(MAX),`、`@外协备注 NVARCHAR(MAX)`、`@单重 NVARCHAR(50)`、`@打印数量 NVARCHAR(50)`。 主要返回字段线索:`value`。 关键过滤/匹配条件:`WHERE LTRIM(RTRIM(value)) '';`;`WHERE AID IN (SELECT 订单编号 FROM #TempOrders);`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO #TempOrders (订单编号)`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET 外协备注 = @外协备注, 单重 = @单重, 打印数量 = @打印数量`。 实现特征:事务控制、异常捕获、临时表 `#TempOrders`。 +- `工艺管理_图纸维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_零件图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`、`worker`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `工艺管理_工艺维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_工艺图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `生产管理_外协管理_查询外协` 属于 外协协同,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、新增、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@订单号 int`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@派工状态 int`、`@订单状态 int`、`@计划号 nvarchar(50)`、`@发料状态 int`。 主要返回字段线索:`v.[订单编号], `、`v.[订单行号], `、`v.[物料编号], `、`v.[物料描述], `、`v.[完成数量], `、`v.[指派数量], `、`v.[外协分组], `、`v.[不合格数量], `、`v.[收料数量], `、`v.[合同号], `。 关键过滤/匹配条件:`WHERE v.[物料类型] = 'pit_Resource'`;`AND v.[指派对象] = '外协'`;`AND (@订单号 = 0 OR v.[订单编号] = @订单号)`;`AND (@计划号 = '' OR v.[计划号] LIKE '%' + @计划号 + '%')`;`AND (@产品编码 = '' OR v.[物料编号] LIKE '%' + @产品编码 + '%')`;`AND (@产品名称 = '' OR v.[物料描述] LIKE '%' + @产品名称 + '%')`;`AND (@工序名称 = '' OR v.[工序名称] LIKE '%' + @工序名称 + '%')`;`WHERE prev.订单编号 = bd.订单编号`;`AND prev.订单行号 = bd.订单行号 - 1`;`AND ISNULL(prev.外协分组, '') = ISNULL(bd.外协分组, '')`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO #BaseData (`。 排序/分组/分页线索:`ORDER BY ga.订单行号`;`GROUP BY 订单编号, 外协分组, 组ID`;`ORDER BY bd.订单编号, bd.订单行号`。 实现特征:临时表 `#BaseData`。 +- `生产管理_外协管理_外协发料查询` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@maxTaskAID bigint,`、`@minTaskAID bigint`。 主要返回字段线索:`@上序订单编号 = [订单编号], `、`@上序订单行号 = [订单行号]`。 关键过滤/匹配条件:`WHERE [TaskAID] = @minTaskAID`;`WHERE vt.[订单编号] = vo.[订单编号]`;`AND vt.[订单行号] = @上序订单行号 - 1`;`AND qc.检测类型编号 = '6'`;`WHERE qc.TaskAID = @minTaskAID`;`WHERE [TaskAID] = @maxTaskAID`。 +- `生产管理_外协管理_查询外协历史记录` 属于 外协协同,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理外协业务。 读取/关联对象:表:`YL_加工中心_操作记录表`。 入参/分页参数:`@maxTaskAID bigint`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`select * from [dbo].[YL_加工中心_操作记录表] where 操作类别 in ('收料', '报工') and TaskAID = @maxTaskAID and isnull(操作数值, 0) 0`。 +- `生产管理_外协管理_查询质检记录` 属于 外协协同,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据、处理外协业务。 读取/关联对象:表:`YL_质量检验_质检记录`。 入参/分页参数:`@maxTaskAID bigint`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`select * from [dbo].[YL_质量检验_质检记录] where TaskAID = @maxTaskAID`。 +- `生产管理_外协管理_外协发料查询` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@maxTaskAID bigint,`、`@minTaskAID bigint`。 主要返回字段线索:`@上序订单编号 = [订单编号], `、`@上序订单行号 = [订单行号]`。 关键过滤/匹配条件:`WHERE [TaskAID] = @minTaskAID`;`WHERE vt.[订单编号] = vo.[订单编号]`;`AND vt.[订单行号] = @上序订单行号 - 1`;`AND qc.检测类型编号 = '6'`;`WHERE qc.TaskAID = @minTaskAID`;`WHERE [TaskAID] = @maxTaskAID`。 +- `生产管理_外协管理_外协发料保存` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、更新、处理计划/派工、处理外协业务。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID bigint,`、`@recievCount int,`、`@optor nvarchar(50),`、`@单重 nvarchar(50)`、`@备注 nvarchar(50)`。 主要返回字段线索:`@任务状态 = isnull(任务状态, 0)`。 关键过滤/匹配条件:`select @任务状态 = isnull(任务状态, 0) from MES_接口_生产计划_生产任务 where AID = @TaskAID`;`where AID = @TaskAID`。 关键写入/状态处理语句线索:`Update MES_接口_生产计划_生产任务`;`set 任务状态 = case when isnull(收料数量, 0)+@recievCount>0 then 1 else 0 end, `;`set 收料 = case when isnull(收料数量, 0)+@recievCount>0 then 1 else 0 end, `。 +- `生产管理_外协管理_外协收料保存` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理报工/工时、处理计划/派工、处理外协业务。 读取/关联对象:表:`MES_接口_生产计划`。 写入或更新对象:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID bigint,`、`@recievCount int,`、`@optor nvarchar(50)`。 关键过滤/匹配条件:`where AID = @TaskAID`。 关键写入/状态处理语句线索:`Update MES_接口_生产计划_生产任务`;`set 完成数量 = isnull(完成数量, 0)+@recievCount, `。 + +## 41. src/views/ProductionManagement/ShiftManagement/index.vue + +**页面位置**:`src/views/ProductionManagement/ShiftManagement/index.vue` +**所属模块**:ProductionManagement / ShiftManagement +**源码行数**:390 + +### 页面功能 + +该页面维护班次和班次人员绑定。用户新增、修改、删除班次,给班次绑定人员,为工时计算和报工归属提供基础数据。 + +页面可见的操作/字段包括 “添加新班次”、“编辑”、“保存”、“取消”、“绑定”、“删除”、“确 定”、“取 消”、“序号”、“班次”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `生产管理_班次管理_班次列表查询`、`系统管理_人员管理_所有有效人员查询`、`生产管理_班次管理_班次绑定人员查询`、`生产管理_班次管理_班次保存`、`生产管理_班次管理_班次删除`、`生产管理_班次管理_班次绑定人员保存` 等过程 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `生产管理_班次管理_班次列表查询` -> `系统管理_人员管理_所有有效人员查询` -> `生产管理_班次管理_班次绑定人员查询` -> `生产管理_班次管理_班次保存` -> `生产管理_班次管理_班次删除` -> `生产管理_班次管理_班次绑定人员保存` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`添加新班次`、`编辑`、`保存`、`取消`、`绑定`、`删除`、`确 定`、`取 消`、`序号`、`班次`、`时间`、`绑定人员`、`操作`、`请输入班次名称`、`开始时间`、`结束时间` + +主要方法线索:`searchData`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 显示列 | `序号` | - | `序号` | +| 显示列 | `班次` | - | `班次编号, ` | +| 显示列 | `时间` | - | `CONVERT(VARCHAR(5), 开始时间, 108) AS 开始时间, ` | +| 显示列 | `绑定人员` | - | `绑定人员` | +| 显示列 | `操作` | - | `@操作人, ` | +| 输入字段 | `scope.row.班次名称` | - | - | +| 输入字段 | `scope.row.开始时间` | - | - | +| 输入字段 | `scope.row.结束时间` | - | - | +| 输入字段 | `selectedPersonnel` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 159 | 11(当前通用存储过程查询/执行) | `生产管理_班次管理_班次列表查询` | 查询/读取数据 | 查询 | 未在 SQL 中解析到明确依赖 | +| 179 | 11(当前通用存储过程查询/执行) | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 查询 | 视图:`登录基础数据_管理人员权限视图` | +| 200 | 11(当前通用存储过程查询/执行) | `生产管理_班次管理_班次绑定人员查询` | 查询/读取数据 | 查询 | 未在 SQL 中解析到明确依赖 | +| 252 | 11(当前通用存储过程查询/执行) | `生产管理_班次管理_班次保存` | 更新/保存业务数据 | 查询、新增、更新 | 未在 SQL 中解析到明确依赖 | +| 311 | 11(当前通用存储过程查询/执行) | `生产管理_班次管理_班次删除` | 删除业务数据 | 查询、更新 | 未在 SQL 中解析到明确依赖 | +| 334 | 11(当前通用存储过程查询/执行) | `生产管理_班次管理_班次绑定人员查询` | 查询/读取数据 | 查询 | 未在 SQL 中解析到明确依赖 | +| 355 | 11(当前通用存储过程查询/执行) | `生产管理_班次管理_班次绑定人员保存` | 更新/保存业务数据 | 查询、新增、更新 | 未在 SQL 中解析到明确依赖 | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +- `src/views/ProductionManagement/ShiftManagement/index.vue` -> `生产管理_班次管理_班次列表查询` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/ProductionManagement/ShiftManagement/index.vue` -> `系统管理_人员管理_所有有效人员查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/ProductionManagement/ShiftManagement/index.vue` -> `生产管理_班次管理_班次绑定人员查询` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/ProductionManagement/ShiftManagement/index.vue` -> `生产管理_班次管理_班次保存` -> 未在 SQL 中解析到明确依赖 -> 更新/保存业务数据 +- `src/views/ProductionManagement/ShiftManagement/index.vue` -> `生产管理_班次管理_班次删除` -> 未在 SQL 中解析到明确依赖 -> 删除业务数据 +- `src/views/ProductionManagement/ShiftManagement/index.vue` -> `生产管理_班次管理_班次绑定人员查询` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/ProductionManagement/ShiftManagement/index.vue` -> `生产管理_班次管理_班次绑定人员保存` -> 未在 SQL 中解析到明确依赖 -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `生产管理_班次管理_班次列表查询` 属于 班次与人员排班,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:未在 SQL 中解析到明确依赖。 主要返回字段线索:`班次编号, `、`班次名称, `、`CONVERT(VARCHAR(5), 开始时间, 108) AS 开始时间, `、`CONVERT(VARCHAR(5), 结束时间, 108) AS 结束时间, `、`创建时间, `、`创建人, `、`更新时间, `、`更新人`。 关键过滤/匹配条件:`WHERE 是否删除 = 0`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY 开始时间`。 +- `系统管理_人员管理_所有有效人员查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`Personnel_Number AS 人员编号, `、`Personnel_Name AS 人员姓名, `、`account AS 账号, `、`Roles_Function AS 角色, `、`部门名称`。 关键过滤/匹配条件:`WHERE Quit = 0`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY Personnel_Name;`。 +- `生产管理_班次管理_班次绑定人员查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@班次编号 NVARCHAR(50)`。 主要返回字段线索:`p.Personnel_Number AS 人员编号, `、`p.Personnel_Name AS 人员姓名, `、`p.account AS 账号, `、`p.Roles_Function AS 角色, `、`sb.绑定时间`。 关键过滤/匹配条件:`WHERE sb.班次编号 = @班次编号`;`AND sb.是否删除 = 0`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY p.Personnel_Name`。 +- `生产管理_班次管理_班次保存` 属于 班次与人员排班,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`班次表`。 入参/分页参数:`@班次编号 NVARCHAR(50),`、`@班次名称 NVARCHAR(50),`、`@开始时间 NVARCHAR(5),`、`@结束时间 NVARCHAR(5),`、`@操作人 NVARCHAR(50)`。 主要返回字段线索:`@执行结果 AS 执行结果, @提示信息 AS 提示信息;`、`RETURN;`、`END`、`IF EXISTS (SELECT 1`。 关键过滤/匹配条件:`IF @开始时间DT IS NULL OR @结束时间DT IS NULL`;`IF EXISTS (SELECT 1 FROM 班次表 WHERE 班次名称 = @班次名称 AND 班次编号 ! = @班次编号 AND 是否删除 = 0)`;`IF EXISTS (SELECT 1 FROM 班次表 WHERE 班次编号 = @班次编号 AND 是否删除 = 0)`;`WHERE 班次编号 = @班次编号;`;`IF EXISTS (SELECT 1 FROM 班次表 WHERE 班次编号 = @班次编号 AND 是否删除 = 1)`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @开始时间DT = TRY_CAST(@开始时间 AS TIME);`;`SET @结束时间DT = TRY_CAST(@结束时间 AS TIME);`;`SET @执行结果 = 0;`;`SET @提示信息 = '时间格式不正确,请使用HH:mm格式';`;`SET @提示信息 = '班次名称已存在,请使用其他名称';`;`UPDATE 班次表`;`SET`;`SET @提示信息 = '班次更新成功';`;`INSERT INTO 班次表 (`;`SET @提示信息 = '班次保存成功';`。 实现特征:事务控制、异常捕获。 +- `生产管理_班次管理_班次删除` 属于 班次与人员排班,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 删除业务数据。 数据库处理摘要:查询、更新。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`班次表`。 入参/分页参数:`@班次编号 NVARCHAR(50),`、`@操作人 NVARCHAR(50)`。 主要返回字段线索:`1`。 关键过滤/匹配条件:`IF EXISTS (SELECT 1 FROM 班次人员绑定表 WHERE 班次编号 = @班次编号 AND 是否删除 = 0)`;`WHERE 班次编号 = @班次编号`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`UPDATE 班次表`;`SET 是否删除 = 1, `。 实现特征:事务控制、异常捕获。 +- `生产管理_班次管理_班次绑定人员查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@班次编号 NVARCHAR(50)`。 主要返回字段线索:`p.Personnel_Number AS 人员编号, `、`p.Personnel_Name AS 人员姓名, `、`p.account AS 账号, `、`p.Roles_Function AS 角色, `、`sb.绑定时间`。 关键过滤/匹配条件:`WHERE sb.班次编号 = @班次编号`;`AND sb.是否删除 = 0`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY p.Personnel_Name`。 +- `生产管理_班次管理_班次绑定人员保存` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`班次人员绑定表`。 入参/分页参数:`@班次编号 NVARCHAR(50),`、`@人员编号列表 NVARCHAR(MAX),`、`@操作人 NVARCHAR(50)`。 主要返回字段线索:`@班次编号, `、`value AS 人员编号, `、`GETDATE(), `、`@操作人, `、`0`。 关键过滤/匹配条件:`WHERE 班次编号 = @班次编号`;`AND 是否删除 = 0`;`IF @人员编号列表 IS NOT NULL AND @人员编号列表 ! = ''`;`WHERE value IS NOT NULL AND value ! = ''`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`UPDATE 班次人员绑定表`;`SET 是否删除 = 1, `;`INSERT INTO 班次人员绑定表 (`。 实现特征:事务控制、异常捕获。 + +## 42. src/views/ProductionManagement/Timesheet/index.vue + +**页面位置**:`src/views/ProductionManagement/Timesheet/index.vue` +**所属模块**:ProductionManagement / Timesheet +**源码行数**:858 + +### 页面功能 + +该页面统计工时。用户按项目、作业者、设备、任务等维度查询工时数据,并可导出报表。 + +页面可见的操作/字段包括 “查询”、“Excel导出”、“项目工时”、“合同号”、“产品名称”、“产品编码”、“订单编号”、“工序名称”、“操作人”、“计划/完成”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `工时统计_项目工时_查询`、`工时统计_作业者工时_查询`、`工时统计_设备工时_查询`、`工时统计_任务工时_查询` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `工时统计_项目工时_查询` -> `工时统计_作业者工时_查询` -> `工时统计_设备工时_查询` -> `工时统计_任务工时_查询` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`Excel导出`、`项目工时`、`合同号`、`产品名称`、`产品编码`、`订单编号`、`工序名称`、`操作人`、`计划/完成`、`报工数量`、`计划开始`、`计划完成`、`工时(h)`、`作业者工时`、`操作人/日期`、`报工次数`、`订单号` + +主要方法线索:`handleSearch` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 显示列 | `合同号` | - | `v.订单合同号 AS 合同号, ` | +| 显示列 | `产品名称` | - | `v.产品名称, ` | +| 显示列 | `产品编码` | - | `v.产品编码, ` | +| 显示列 | `订单编号` | - | `订单号, ` | +| 显示列 | `工序名称` | - | `工序名称, ` | +| 显示列 | `操作人` | - | `操作人, ` | +| 显示列 | `计划/完成` | - | `qty` | +| 显示列 | `报工数量` | - | `SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量, ` | +| 显示列 | `计划开始` | - | `MIN(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划开始, ` | +| 显示列 | `计划完成` | - | `MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成, ` | +| 显示列 | `工时(h)` | - | `workHours` | +| 显示列 | `操作人/日期` | - | `operator` | +| 显示列 | `报工次数` | - | `COUNT(*) AS 报工次数, ` | +| 显示列 | `订单号` | - | `订单号, ` | +| 显示列 | `开始时间` | - | `startTime` | +| 显示列 | `结束时间` | - | `endTime` | +| 显示列 | `类型` | - | `SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量, ` | +| 显示列 | `工序说明` | - | `工序说明` | +| 显示列 | `异常说明` | - | `异常说明` | +| 显示列 | `类型` | - | `workHours` | +| 输入字段 | `searchForm.contractNo` | - | - | +| 输入字段 | `searchForm.operator` | - | - | +| 输入字段 | `searchForm.productCode` | - | - | +| 输入字段 | `searchForm.processName` | - | - | +| 输入字段 | `searchForm.orderNo` | - | - | +| 输入字段 | `searchForm.startDate` | - | - | +| 输入字段 | `searchForm.endDate` | - | - | +| 输入字段 | `activeTab` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- Excel/报表导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 476 | 11(当前通用存储过程查询/执行) | `工时统计_项目工时_查询` | 查询/读取数据 | 查询、处理报工/工时、处理计划/派工 | 未在 SQL 中解析到明确依赖 | +| 547 | 11(当前通用存储过程查询/执行) | `工时统计_作业者工时_查询` | 查询/读取数据 | 查询、处理报工/工时 | 视图:`View_生产工时视图` | +| 568 | 11(当前通用存储过程查询/执行) | `工时统计_设备工时_查询` | 查询/读取数据 | 查询、处理报工/工时 | 未在 SQL 中解析到明确依赖 | +| 649 | 11(当前通用存储过程查询/执行) | `工时统计_任务工时_查询` | 查询/读取数据 | 查询、处理报工/工时、处理计划/派工 | 未在 SQL 中解析到明确依赖 | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `工时统计_项目工时_查询`:`MAX(v.完成数量) AS 完成数量, `;`MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成, `;`CAST(SUM(v.加工工时) / 60.0 / 60.0 AS DECIMAL(10, 1)) AS 总工时小时`;`CAST(SUM(v.加工工时) / 60.0 / 60.0 AS DECIMAL(10, 1)) AS 工时小时, `;`MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成`;`CASE WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10, 1)) AS VARCHAR(20)) END AS qty, `;`ISNULL(计划完成, '') AS planEnd, `;`d.计划完成 AS planEnd, ` +- `工时统计_设备工时_查询`:`CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10, 1)) AS 总工时小时`;`CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10, 1)) AS 工时小时`;`CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10, 2)) AS 工时小时` +- `工时统计_任务工时_查询`:`CREATE PROCEDURE [dbo].[工时统计_任务工时_查询]`;`;WITH 任务汇总 AS (`;`MAX(完成数量) AS 完成数量, `;`CASE WHEN 完成数量 IS NULL THEN '0' WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10, 1)) AS VARCHAR(20)) END AS qty, `;`FROM 任务汇总` + +### 数据库调用链 + +- `src/views/ProductionManagement/Timesheet/index.vue` -> `工时统计_项目工时_查询` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/ProductionManagement/Timesheet/index.vue` -> `工时统计_作业者工时_查询` -> 视图:`View_生产工时视图` -> 查询/读取数据 +- `src/views/ProductionManagement/Timesheet/index.vue` -> `工时统计_设备工时_查询` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/ProductionManagement/Timesheet/index.vue` -> `工时统计_任务工时_查询` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `工时统计_项目工时_查询` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@合同号 NVARCHAR(50)`、`@操作人 NVARCHAR(50)`、`@产品编码 NVARCHAR(100)`、`@工序名称 NVARCHAR(50)`、`@订单号 NVARCHAR(50)`、`@开始日期 DATE`、`@结束日期 DATE`。 主要返回字段线索:`v.订单合同号 AS 合同号, `、`v.产品编码, `、`v.产品名称, `、`MAX(v.计划数量) AS 计划数量, `、`MAX(v.完成数量) AS 完成数量, `、`SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量, `、`MIN(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划开始, `、`MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成, `、`CAST(SUM(v.加工工时) / 60.0 / 60.0 AS DECIMAL(10, 1)) AS 总工时小时`。 关键过滤/匹配条件:`WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 > = @开始日期)`;`AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 < = @结束日期)`;`AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')`;`AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%')`;`AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')`;`AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%')`;`AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%')`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`GROUP BY v.订单合同号, v.产品编码, v.产品名称`;`GROUP BY v.订单合同号, v.产品编码, v.工序名称, v.操作人, v.订单号`;`ORDER BY contractNo, materialCode, [Level], processName`。 +- `工时统计_作业者工时_查询` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:视图:`View_生产工时视图`。 入参/分页参数:`@合同号 NVARCHAR(50)`、`@操作人 NVARCHAR(50)`、`@产品编码 NVARCHAR(100)`、`@工序名称 NVARCHAR(50)`、`@订单号 NVARCHAR(50)`、`@开始日期 DATE`、`@结束日期 DATE`。 主要返回字段线索:`操作人, `、`COUNT(*) AS 报工次数, `、`SUM(CASE`、`WHEN 操作类别 NOT IN ('异常') THEN 操作数值`、`WHEN 操作类别 = '异常' THEN -操作数值`、`ELSE 0`、`END) AS 报工数量, `、`CAST(SUM(CASE`、`WHEN 操作类别 = '异常' THEN -总时长`、`ELSE 总时长`。 关键过滤/匹配条件:`WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 > = @开始日期)`;`AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 < = @结束日期)`;`AND 操作人 IS NOT NULL AND 操作人 ! = ''`;`AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')`;`AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')`;`AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')`;`AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')`;`AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')`;`and isNull(阶段标识, 0) ! = -1`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`GROUP BY 操作人`;`GROUP BY 操作人, CONVERT(VARCHAR(10), 开始时间, 120)`;`ORDER BY operator, dateLabel, [Level]`。 +- `工时统计_设备工时_查询` 属于 设备与实时数据,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@合同号 NVARCHAR(50)`、`@操作人 NVARCHAR(50)`、`@产品编码 NVARCHAR(100)`、`@工序名称 NVARCHAR(50)`、`@订单号 NVARCHAR(50)`、`@开始日期 DATE`、`@结束日期 DATE`。 主要返回字段线索:`工位名称, `、`COUNT(*) AS 报工次数, `、`SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量, `、`CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10, 1)) AS 总工时小时`。 关键过滤/匹配条件:`WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 > = @开始日期)`;`AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 < = @结束日期)`;`AND 操作人 IS NOT NULL AND 操作人 ! = ''`;`AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')`;`AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')`;`AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')`;`AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')`;`AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')`;`and isNull(阶段标识, 0) = -1`;`AND 工位名称 IS NOT NULL AND 工位名称 ! = ''`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`GROUP BY 工位名称`;`GROUP BY 工位名称, CONVERT(VARCHAR(10), 开始时间, 120)`;`ORDER BY operator, dateLabel, [Level]`。 +- `工时统计_任务工时_查询` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@合同号 NVARCHAR(50)`、`@操作人 NVARCHAR(50)`、`@产品编码 NVARCHAR(100)`、`@工序名称 NVARCHAR(50)`、`@订单号 NVARCHAR(50)`、`@开始日期 DATE`、`@结束日期 DATE`。 主要返回字段线索:`订单合同号 AS 合同号, `、`订单号, `、`产品编码, `、`产品名称, `、`工序名称, `、`操作类别, `、`MAX(计划数量) AS 计划数量, `、`MAX(完成数量) AS 完成数量, `、`SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量, `、`CAST(SUM(总时长) / 60.0 / 60.0 AS DECIMAL(10, 1)) AS 总工时小时`。 关键过滤/匹配条件:`WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 > = @开始日期)`;`AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 < = @结束日期)`;`AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')`;`AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')`;`AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')`;`AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')`;`AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`GROUP BY 订单合同号, 订单号, 产品编码, 产品名称, 工序名称, 操作类别`;`ORDER BY contractNo, orderNo, productCode, processName, [Level], startTime`。 + +## 43. src/views/ProductionManagement/Urgent/index.vue + +**页面位置**:`src/views/ProductionManagement/Urgent/index.vue` +**所属模块**:ProductionManagement / Urgent +**源码行数**:474 + +### 页面功能 + +该页面维护加急任务。用户查询加急订单明细,并更新完成、转至等字段,用于生产/质检优先级管理。 + +页面可见的操作/字段包括 “查询”、“转至 完成 加急明细 --> 生产订单 加急数量 物料编号 关闭”、“装配”、“机加”、“全部”、“已转至”、“未转至”、“已完成”、“未完成”、“序号”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `加急订单_加急明细查询`、`生产管理_加急件管理查询`、`生产管理_加急件管理_更新转至`、`生产管理_加急件管理_更新完成` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `加急订单_加急明细查询` -> `生产管理_加急件管理查询` -> `生产管理_加急件管理_更新转至` -> `生产管理_加急件管理_更新完成` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`转至 完成 加急明细 --> 生产订单 加急数量 物料编号 关闭`、`装配`、`机加`、`全部`、`已转至`、`未转至`、`已完成`、`未完成`、`序号`、`销售订单`、`生产订单`、`物料名称`、`物料编码`、`工序名称`、`计划生产数`、`加急数量`、`收检数量` + +主要方法线索:`Urgent` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `row.零件编码` | `@物料编号` | `docentry as 订单编号, itemcode as 物料编号, 加急数量` | +| 参数 | `this.contractNo` | `@合同号` | `a.内部合同号, ` | +| 参数 | `this.orderNo` | `@订单号` | - | +| 参数 | `this.partNo` | `@零件编号` | - | +| 参数 | `this.changstate` | `@转至状态` | - | +| 参数 | `this.finishstate` | `@完成状态` | - | +| 参数 | `row.计划号` | `@订单号` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `销售订单` | - | `a.内部合同号, ` | +| 显示列 | `生产订单` | - | `a.计划号, ` | +| 显示列 | `物料名称` | - | `a.零件名称, ` | +| 显示列 | `物料编码` | - | `a.零件编码, ` | +| 显示列 | `工序名称` | - | `工序名称` | +| 显示列 | `计划生产数` | - | `计划生产数` | +| 显示列 | `加急数量` | - | `docentry as 订单编号, itemcode as 物料编号, 加急数量` | +| 显示列 | `收检数量` | - | `sum(a.检验数量) as 检验数量, ` | +| 显示列 | `合格数` | - | `sum(a.不合格数) as 不合格数, ` | +| 显示列 | `不合格` | - | `sum(a.不合格数) as 不合格数, ` | +| 显示列 | `检验操作人` | - | `检测人` | +| 显示列 | `检验时间` | - | `检测时间` | +| 显示列 | `操作` | - | `操作` | +| 输入字段 | `contractNo` | `@合同号` | - | +| 输入字段 | `orderNo` | `@订单号` | - | +| 输入字段 | `partNo` | `@零件编号` | - | +| 输入字段 | `attribute` | - | - | +| 输入字段 | `changstate` | `@转至状态` | - | +| 输入字段 | `finishstate` | `@完成状态` | - | +| 输入字段 | `item.订单编号` | - | - | +| 输入字段 | `item.加急数量` | - | - | +| 输入字段 | `item.物料编号` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- Excel/报表导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 311 | 11(当前通用存储过程查询/执行) | `加急订单_加急明细查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象、处理计划/派工 | 表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` | +| 335 | 11(当前通用存储过程查询/执行) | `生产管理_加急件管理查询` | 查询/读取数据 | 查询、处理质检数据、处理计划/派工 | 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 379 | 11(当前通用存储过程查询/执行) | `生产管理_加急件管理_更新转至` | 更新/保存业务数据 | 更新、处理质检数据、处理计划/派工 | 表:`YL_质量检验_质检记录` | +| 393 | 11(当前通用存储过程查询/执行) | `生产管理_加急件管理_更新完成` | 更新/保存业务数据 | 更新、处理质检数据、处理计划/派工 | 表:`YL_质量检验_质检记录` | + +### 与 SAP 的交互 + +存储过程内读取 SAP B1 数据库对象: +- 加急订单_加急明细查询: SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `加急订单_加急明细查询`:`SELECT docentry as 订单编号, itemcode as 物料编号, 加急数量 from SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` +- `生产管理_加急件管理查询`:`@转至状态 int = 3, `;`@完成状态 int = 3, `;`DECLARE @selectStrWhere NVARCHAR(4000) = ' WHERE [质检类型] = ''终检'' and b.加急总数 > 0 '`;`IF @转至状态 3`;`IF @转至状态 = '1'`;`ELSE IF @转至状态 = '2'`;`IF @完成状态 3`;`IF @完成状态 = '1'` +- `生产管理_加急件管理_更新转至`:`update [dbo].[YL_质量检验_质检记录] set 转至 = 1 where 计划号 = @订单号 and 质检类型 = '终检'` +- `生产管理_加急件管理_更新完成`:`CREATE PROCEDURE [dbo].[生产管理_加急件管理_更新完成]`;`update [dbo].[YL_质量检验_质检记录] set 完成 = 1 where 计划号 = @订单号 and 质检类型 = '终检'` + +### 数据库调用链 + +- `src/views/ProductionManagement/Urgent/index.vue` -> `加急订单_加急明细查询` -> 表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` -> 查询/读取数据 +- `src/views/ProductionManagement/Urgent/index.vue` -> `生产管理_加急件管理查询` -> 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/ProductionManagement/Urgent/index.vue` -> `生产管理_加急件管理_更新转至` -> 表:`YL_质量检验_质检记录` -> 更新/保存业务数据 +- `src/views/ProductionManagement/Urgent/index.vue` -> `生产管理_加急件管理_更新完成` -> 表:`YL_质量检验_质检记录` -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `加急订单_加急明细查询` 属于 加急任务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL`。 入参/分页参数:`@物料编号 nvarchar(50)`。 主要返回字段线索:`docentry as 订单编号, itemcode as 物料编号, 加急数量`。 关键过滤/匹配条件:`where itemcode = @物料编号`。 实现特征:读取 SAP 数据库对象。 +- `生产管理_加急件管理查询` 属于 加急任务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据、处理计划/派工。 读取/关联对象:表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@转至状态 int`、`@完成状态 int`、`@合同号 NVARCHAR(100)`、`@订单号 NVARCHAR(100)`、`@零件编号 NVARCHAR(100)`。 主要返回字段线索:`sum(a.不合格数) as 不合格数, `、`sum(a.合格数) as 合格数, `、`a.内部合同号, `、`a.完成, `、`a.转至, `、`a.计划号, `、`a.零件名称, `、`a.零件编码, `、`sum(a.检验数量) as 检验数量, `、`b.加急总数, `。 关键过滤/匹配条件:`DECLARE @selectStrWhere NVARCHAR(4000) = ' WHERE [质检类型] = ''终检'' and b.加急总数 > 0 '`;`SET @selectStrWhere = @selectStrWhere + ' AND a.内部合同号 LIKE ''%' + REPLACE(@合同号, '''', '''''') + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND a.计划号 = '+@订单号+''`;`SET @selectStrWhere = @selectStrWhere + ' AND a.零件编码 LIKE ''%' + REPLACE(@零件编号, '''', '''''') + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND 转至 = 1'`;`SET @selectStrWhere = @selectStrWhere + ' AND 转至 = 0'`;`SET @selectStrWhere = @selectStrWhere + ' AND 完成 = 1'`;`SET @selectStrWhere = @selectStrWhere + ' AND 完成 = 0'`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @selectStrWhere = @selectStrWhere + ' AND a.内部合同号 LIKE ''%' + REPLACE(@合同号, '''', '''''') + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND a.计划号 = '+@订单号+''`;`SET @selectStrWhere = @selectStrWhere + ' AND a.零件编码 LIKE ''%' + REPLACE(@零件编号, '''', '''''') + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND 转至 = 1'`;`SET @selectStrWhere = @selectStrWhere + ' AND 转至 = 0'`;`SET @selectStrWhere = @selectStrWhere + ' AND 完成 = 1'`;`SET @selectStrWhere = @selectStrWhere + ' AND 完成 = 0'`;`SET @selectStr = N' select`。 排序/分组/分页线索:`group by a.内部合同号, a.完成, a.转至, a.计划号, `。 +- `生产管理_加急件管理_更新转至` 属于 加急任务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理质检数据、处理计划/派工。 读取/关联对象:表:`YL_质量检验_质检记录`。 写入或更新对象:`YL_质量检验_质检记录`。 入参/分页参数:`@订单号 int`。 关键过滤/匹配条件:`update [dbo].[YL_质量检验_质检记录] set 转至 = 1 where 计划号 = @订单号 and 质检类型 = '终检'`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`update [dbo].[YL_质量检验_质检记录] set 转至 = 1 where 计划号 = @订单号 and 质检类型 = '终检'`。 +- `生产管理_加急件管理_更新完成` 属于 加急任务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理质检数据、处理计划/派工。 读取/关联对象:表:`YL_质量检验_质检记录`。 写入或更新对象:`YL_质量检验_质检记录`。 入参/分页参数:`@订单号 int`。 关键过滤/匹配条件:`update [dbo].[YL_质量检验_质检记录] set 完成 = 1 where 计划号 = @订单号 and 质检类型 = '终检'`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`update [dbo].[YL_质量检验_质检记录] set 完成 = 1 where 计划号 = @订单号 and 质检类型 = '终检'`。 + +## 44. src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue + +**页面位置**:`src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` +**所属模块**:ProductionManagement / WorkHoursCheck +**源码行数**:2489 + +### 页面功能 + +该页面用于工时校验。质检/管理人员查询待校验报工记录,系统计算标准/实际工时,保存单条或批量校验结果;通过校验后可把工序资源或工时/出库类单据上传到 SAP。 + +页面可见的操作/字段包括 “查询”、“一键校验”、“新增工时记录”、“设备工时”、“关闭”、“确 定”、“取消”、“item.label”、“全部”、“已校验”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `人员管理_人员信息查询_质检部门_查询`、`系统管理_人员管理_所有有效人员查询`、`工时校验_获取订单列表`、`工时校验_获取订单工序`、`工时校验_获取昨日之前操作记录列表`、`工时校验_获取资源` 等过程 取数或提交业务动作。 + +### 页面流程图 + +工时校验流程: + +```mermaid +flowchart LR + A[选择人员/订单/工序/日期] --> B[工时校验_获取昨日之前操作记录列表] + B --> C[选择待校验记录] + C --> D[usp_ValidateWorkTime 或 usp_BatchValidateWorkTime 计算工时] + D --> E{校验结果} + E --> F[工时校验_保存校验记录] + E --> G[工时校验_批量保存校验记录] + F --> H[更新校验状态] + G --> H + H --> I[GET/PATCH /ProductionOrders 补工序资源] + I --> J[POST /InventoryGenExits 上传 SAP] + J --> K[标记已上传/失败留痕] +``` + + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`一键校验`、`新增工时记录`、`设备工时`、`关闭`、`确 定`、`取消`、`item.label`、`全部`、`已校验`、`未校验`、`异常`、`正常`、`装配`、`机加`、`加班`、`序号`、`工时ID` + +主要方法线索:`getCheckerList`、`for` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `orderId` | `@订单编号` | `订单编号, ` | +| 参数 | `selectedChecker ? selectedChecker.label : 0` | `@人员` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `工时ID` | - | `工序名称, 订单行号 as 工艺顺序, 指派对象, TaskAID, 顺序编号, 指派对象 as 工位名称, VisCode` | +| 显示列 | `人员` | - | `Personnel_Number AS 人员编号, ` | +| 显示列 | `生产订单` | - | `订单编号, ` | +| 显示列 | `物料编码` | - | `产品编码` | +| 显示列 | `物料名称` | - | `产品名称` | +| 显示列 | `工序名称` | - | `工序名称, 订单行号 as 工艺顺序, 指派对象, TaskAID, 顺序编号, 指派对象 as 工位名称, VisCode` | +| 显示列 | `工位名称` | - | `工序名称, 订单行号 as 工艺顺序, 指派对象, TaskAID, 顺序编号, 指派对象 as 工位名称, VisCode` | +| 显示列 | `报工类型` | - | `@操作类别编号 = 操作类别编号, ` | +| 显示列 | `数量` | - | `操作数值` | +| 显示列 | `开始时间` | - | `开始时间` | +| 显示列 | `结束时间` | - | `结束时间` | +| 显示列 | `设备工时` | - | `设备工时` | +| 显示列 | `人员工时` | - | `人员工时` | +| 显示列 | `绑定设备数` | - | `绑定设备数` | +| 显示列 | `工序说明` | - | `工序说明` | +| 显示列 | `异常说明` | - | `异常说明` | +| 显示列 | `校验状态` | - | `校验状态` | +| 显示列 | `最后编辑人` | - | `最后编辑人` | +| 显示列 | `最后编辑时间` | - | `最后编辑时间` | +| 显示列 | `操作` | - | `@操作类别编号 = 操作类别编号, ` | +| 显示列 | `累计分钟` | - | `累计分钟` | +| 显示列 | `设备状态` | - | `CASE TRY_CAST([设备状态] AS INT)` | +| 显示列 | `累计秒数` | - | `累计秒数` | +| 输入字段 | `taskid` | - | - | +| 输入字段 | `taskorder` | - | - | +| 输入字段 | `checker` | - | - | +| 输入字段 | `timeRange` | - | - | +| 输入字段 | `checkStatus` | - | - | +| 输入字段 | `abnormalstatus` | - | - | +| 输入字段 | `natureStatus` | - | - | +| 输入字段 | `addwork` | - | - | +| 输入字段 | `activeTab` | - | - | +| 输入字段 | `editForm.订单编号` | - | - | +| 输入字段 | `editForm.产品编码` | - | - | +| 输入字段 | `editForm.产品名称` | - | - | +| 输入字段 | `editForm.工序名称` | - | - | +| 输入字段 | `editForm.工位名称` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- SAP B1 Service Layer(`src/api/b1s.js`) + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 497 | 11(当前通用存储过程查询/执行) | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 查询、处理质检数据 | 视图:`登录基础数据_管理人员权限视图` | +| 548 | 11(当前通用存储过程查询/执行) | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 查询 | 视图:`登录基础数据_管理人员权限视图` | +| 563 | 11(当前通用存储过程查询/执行) | `工时校验_获取订单列表` | 报工或工时处理 | 查询、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划` | +| 592 | 11(当前通用存储过程查询/执行) | `工时校验_获取订单工序` | 报工或工时处理 | 查询、处理报工/工时 | 视图:`View_生产订单_MES` | +| 645 | 11(当前通用存储过程查询/执行) | `工时校验_获取昨日之前操作记录列表` | 报工或工时处理 | 分页、处理报工/工时 | 视图:`View_生产工时视图` | +| 737 | 11(当前通用存储过程查询/执行) | `工时校验_获取资源` | 报工或工时处理 | 查询、读取 SAP B1 数据库对象、处理报工/工时 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_ORSC` | +| 759 | 11(当前通用存储过程查询/执行) | `工时校验_获取订单工序` | 报工或工时处理 | 查询、处理报工/工时 | 视图:`View_生产订单_MES` | +| 868 | 11(当前通用存储过程查询/执行) | `工时校验_获取设备数据` | 报工或工时处理 | 查询、处理报工/工时 | 表:`历史_工位设备状态每分钟记录` | +| 1443 | 11(当前通用存储过程查询/执行) | `工时校验_保存校验记录` | 更新/保存业务数据 | 查询、新增、更新、处理报工/工时 | 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` | +| 1480 | 11(当前通用存储过程查询/执行) | `工时校验_批量保存校验记录` | 更新/保存业务数据 | 查询、新增、处理报工/工时 | 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` | +| 2006 | 11(当前通用存储过程查询/执行) | `工时校验_获取操作人当天报工记录` | 报工或工时处理 | 查询、处理报工/工时 | 表:`YL_加工中心_操作记录表` | +| 2344 | 11(当前通用存储过程查询/执行) | `工时校验_批量保存校验记录` | 更新/保存业务数据 | 查询、新增、处理报工/工时 | 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` | +| 2362 | 11(当前通用存储过程查询/执行) | `工时校验_批量保存校验记录` | 更新/保存业务数据 | 查询、新增、处理报工/工时 | 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` | + +### 与 SAP 的交互 + +页面直接 SAP/接口调用: +- 第 1105 行:`patchB1("ProductionOrders(${order.AbsoluteEntry})")` +- 第 2124 行:`getB1("/ProductionOrders")` +- 第 2255 行:`getB1("/ProductionOrders")` +- 第 2311 行:`postB1("/InventoryGenExits")` +存储过程内读取 SAP B1 数据库对象: +- 工时校验_获取资源: SAP.SBO_YL.dbo.UBT_ORSC + +### SAP 接口级说明 + +| 行号 | 方法 | 接口 | 调用时机/影响判断 | 提交字段线索 | +|---:|---|---|---|---| +| 1105 | `patchB1` | `ProductionOrders(${order.AbsoluteEntry})` | 读取或更新 SAP 生产订单。失败会导致 MES 与 SAP 订单状态/工序资源不同步。 | `ProductionOrderLines`、`ProductionOrdersStages`、`更新SAP失败`、`更新SAP工序和资源失败` | +| 2124 | `getB1` | `/ProductionOrders` | 读取或更新 SAP 生产订单。失败会导致 MES 与 SAP 订单状态/工序资源不同步。 | `filter` | +| 2255 | `getB1` | `/ProductionOrders` | 读取或更新 SAP 生产订单。失败会导致 MES 与 SAP 订单状态/工序资源不同步。 | `filter`、`加班记录`、`记录` | +| 2311 | `postB1` | `/InventoryGenExits` | 上传库存发出/工时相关单据。失败会导致 SAP 未生成对应业务单据。 | `DocDate`、`DocDueDate`、`Comments`、`DocumentLines`、`处理记录失败` | + +### 状态流转说明 + +- `人员管理_人员信息查询_质检部门_查询`:`create PROCEDURE [dbo].[人员管理_人员信息查询_质检部门_查询]` +- `工时校验_获取昨日之前操作记录列表`:`@校验状态 nvarchar(4000) = 2, `;`@任务ID nvarchar(4000) = 0, `;`'+ @校验状态 +' = 2`;`OR ('+@校验状态+' = 0 AND Expr1 IS NULL)`;`OR ('+@校验状态+' = 1 AND Expr1 IS NOT NULL)`;`IF @任务ID ! = '0' AND @任务ID ! = ''`;`set @where = @where + ' AND ISNULL(AID, 0) = ' + @任务ID + ' '`;`, 加工工时` +- `工时校验_获取资源`:`select VisName as 资源名称, VisCode, StdCost1 from SAP.SBO_YL.dbo.UBT_ORSC as a where a.VisName = @资源名称` +- `工时校验_获取设备数据`:`CASE TRY_CAST([设备状态] AS INT)`;`END AS 设备状态, `;`FROM [dbo].[历史_工位设备状态每分钟记录]`;`设备状态, `;`WHERE 设备状态 ! = N'未知'`;`GROUP BY 工位名称, 设备状态`;`ORDER BY 设备状态`;`SUM(CASE WHEN 设备状态 = N'运行' THEN 累计分钟 ELSE 0 END) AS 运行总分钟, ` +- `工时校验_保存校验记录`:`FROM [dbo].[YL_加工中心_操作记录表]`;`UPDATE [dbo].[YL_加工中心_操作记录表]`;`已报工 = 1, ` +- `工时校验_批量保存校验记录`:`操作描述, 开始时间, 结束时间, 工时, 报工日期, 已报工, 不装配, `;`FROM [dbo].[YL_加工中心_操作记录表] o` +- `工时校验_获取操作人当天报工记录`:`FROM [dbo].[YL_加工中心_操作记录表]` +- `工时校验_批量保存校验记录`:`操作描述, 开始时间, 结束时间, 工时, 报工日期, 已报工, 不装配, `;`FROM [dbo].[YL_加工中心_操作记录表] o` +- `工时校验_批量保存校验记录`:`操作描述, 开始时间, 结束时间, 工时, 报工日期, 已报工, 不装配, `;`FROM [dbo].[YL_加工中心_操作记录表] o` + +### 数据库调用链 + +- `src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` -> `人员管理_人员信息查询_质检部门_查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` -> `系统管理_人员管理_所有有效人员查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` -> `工时校验_获取订单列表` -> 表:`MES_接口_生产计划` -> 报工或工时处理 +- `src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` -> `工时校验_获取订单工序` -> 视图:`View_生产订单_MES` -> 报工或工时处理 +- `src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` -> `工时校验_获取昨日之前操作记录列表` -> 视图:`View_生产工时视图` -> 报工或工时处理 +- `src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` -> `工时校验_获取资源` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_ORSC` -> 报工或工时处理 +- `src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` -> `工时校验_获取订单工序` -> 视图:`View_生产订单_MES` -> 报工或工时处理 +- `src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` -> `工时校验_获取设备数据` -> 表:`历史_工位设备状态每分钟记录` -> 报工或工时处理 +- `src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` -> `工时校验_保存校验记录` -> 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` -> 更新/保存业务数据 +- `src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` -> `工时校验_批量保存校验记录` -> 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` -> 更新/保存业务数据 +- `src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` -> `工时校验_获取操作人当天报工记录` -> 表:`YL_加工中心_操作记录表` -> 报工或工时处理 +- `src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` -> `工时校验_批量保存校验记录` -> 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` -> 更新/保存业务数据 +- `src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` -> `工时校验_批量保存校验记录` -> 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `人员管理_人员信息查询_质检部门_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`*`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `系统管理_人员管理_所有有效人员查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`Personnel_Number AS 人员编号, `、`Personnel_Name AS 人员姓名, `、`account AS 账号, `、`Roles_Function AS 角色, `、`部门名称`。 关键过滤/匹配条件:`WHERE Quit = 0`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY Personnel_Name;`。 +- `工时校验_获取订单列表` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 入参/分页参数:`@订单编号 nvarchar(50)`。 主要返回字段线索:`DISTINCT top 20`、`订单编号, `、`物料编号 as 零件编码, `、`物料描述 as 零件名称`。 关键过滤/匹配条件:`FROM [dbo].[MES_接口_生产计划] WHERE 订单编号 LIKE '%' + @订单编号 + '%' OR @订单编号 = ''`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY 订单编号 ;`。 +- `工时校验_获取订单工序` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:视图:`View_生产订单_MES`。 入参/分页参数:`@订单编号 int`。 主要返回字段线索:`工序名称, 订单行号 as 工艺顺序, 指派对象, TaskAID, 顺序编号, 指派对象 as 工位名称, VisCode`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单编号`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY 订单行号;`。 +- `工时校验_获取昨日之前操作记录列表` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:分页、处理报工/工时。 读取/关联对象:视图:`View_生产工时视图`。 入参/分页参数:`@开始时间 datetime`、`@结束时间 datetime`、`@校验状态 nvarchar(4000)`、`@过滤性质 nvarchar(4000)`、`@PageCurrent int`、`@PageSize int`、`@PageCount int`、`@ItemCount int`、`@异常 nvarchar(4000)`、`@任务ID nvarchar(4000)`、`@生产订单 nvarchar(4000)`、`@加班 nvarchar(4000)`、`@人员 nvarchar(4000)`。 关键过滤/匹配条件:`declare @where nvarchar(4000)`;`set @where = ' (`;`OR ('+@校验状态+' = 0 AND Expr1 IS NULL)`;`OR ('+@校验状态+' = 1 AND Expr1 IS NOT NULL)`;`AND (`;`OR ('+@过滤性质+' = 1 AND ISNULL(工位名称, 工位名称) NOT LIKE ''%装配%'')`;`OR ('+@过滤性质+' = 2 AND ISNULL(工位名称, 工位名称) LIKE ''%装配%'')`;`OR ('+@异常+' = 1 AND (ISNULL(结束时间, 结束时间) IS NULL))`;`OR ('+@异常+' = 2 AND ISNULL(结束时间, 结束时间) IS NOT NULL)`;`AND 开始时间 < CONVERT(VARCHAR(10), GETDATE(), 120) + '' 00:00:00''`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`set @tbname = ' [dbo].[View_生产工时视图] '`;`set @fieldkey = ' AID '`;`set @where = ' (`;`set @where = @where + ' AND ISNULL(操作类别, '''') LIKE ''%加班%'' '`;`set @where = @where + ' AND ISNULL(操作类别, '''') NOT LIKE ''%加班%'' '`;`set @where = @where + ' AND ISNULL(AID, 0) = ' + @任务ID + ' '`;`set @where = @where + ' AND ISNULL(订单号, 0) = ' + @生产订单 + ' '`;`set @where = @where + ' AND 操作人 LIKE ''%' + @人员 + '%'' '`;`set @fieldOrder = ' 开始时间 DESC '`;`set @fieldshow = '`。 实现特征:分页。 +- `工时校验_获取资源` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、读取 SAP B1 数据库对象、处理报工/工时。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_ORSC`。 入参/分页参数:`@资源名称 NVARCHAR(MAX)`。 主要返回字段线索:`VisName as 资源名称, VisCode, StdCost1`。 关键过滤/匹配条件:`select VisName as 资源名称, VisCode, StdCost1 from SAP.SBO_YL.dbo.UBT_ORSC as a where a.VisName = @资源名称`。 实现特征:读取 SAP 数据库对象。 +- `工时校验_获取订单工序` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:视图:`View_生产订单_MES`。 入参/分页参数:`@订单编号 int`。 主要返回字段线索:`工序名称, 订单行号 as 工艺顺序, 指派对象, TaskAID, 顺序编号, 指派对象 as 工位名称, VisCode`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单编号`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY 订单行号;`。 +- `工时校验_获取设备数据` 属于 设备与实时数据,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:表:`历史_工位设备状态每分钟记录`。 入参/分页参数:`@工位名称 nvarchar(50)`。 主要返回字段线索:`[AID], `、`[工位号] AS 工位名称, `、`[创建时间], `、`CASE TRY_CAST([设备状态] AS INT)`、`WHEN -1 THEN N'关机'`、`WHEN 0 THEN N'待机'`、`WHEN 1 THEN N'运行'`、`WHEN 2 THEN N'报警'`、`ELSE N'未知'`、`END AS 设备状态, `。 关键过滤/匹配条件:`WHERE 工位号 = @工位名称`;`AND CAST([创建时间] AS DATE) = CAST(GETDATE() AS DATE)`;`WHERE 设备状态 ! = N'未知'`。 排序/分组/分页线索:`LEAD([创建时间]) OVER (ORDER BY [创建时间]) AS 下一记录时间`;`GROUP BY 工位名称, 设备状态`;`ORDER BY 设备状态`;`GROUP BY 工位名称`。 +- `工时校验_保存校验记录` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新、处理报工/工时。 读取/关联对象:表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表`。 写入或更新对象:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表`。 入参/分页参数:`@orderAID bigint,`、`@开始时间 datetime,`、`@结束时间 datetime,`、`@总时长 int,`、`@操作人 nvarchar(50),`、`@最后编辑人 nvarchar(50),`、`@当日班次最小标准工时 nvarchar(50)`。 主要返回字段线索:`@操作类别编号 = 操作类别编号, `、`@操作类别 = 操作类别, `、`@阶段标识 = 阶段标识, `、`@工序名称 = 工序名称, `、`@工位编号 = 工位编号, `、`@工位名称 = 工位名称, `、`@合同号 = 合同号, `、`@订单编号 = 订单编号, `、`@物料编号 = 物料编号, `、`@物料描述 = 物料描述, `。 关键过滤/匹配条件:`WHERE AID = @orderAID;`;`WHERE AID = @orderAID`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`UPDATE [dbo].[YL_加工中心_操作记录表]`;`SET`。 实现特征:事务控制、异常捕获。 +- `工时校验_批量保存校验记录` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、处理报工/工时。 读取/关联对象:表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表`。 写入或更新对象:`生产管理_工时校验_校验工时表`。 入参/分页参数:`@AID列表 nvarchar(MAX),`、`@操作人 nvarchar(50),`、`@最后编辑人 nvarchar(50)`。 主要返回字段线索:`value`。 关键过滤/匹配条件:`WHERE c.AID IS NULL;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO #TempAID (AID)`;`INSERT INTO [dbo].[生产管理_工时校验_校验工时表] (`。 实现特征:事务控制、异常捕获、临时表 `#TempAID`。 +- `工时校验_获取操作人当天报工记录` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:表:`YL_加工中心_操作记录表`。 入参/分页参数:`@操作人 nvarchar(50),`、`@开始时间 datetime,`、`@结束时间 datetime`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`WHERE 操作人 = @操作人`;`AND 开始时间 > = @开始时间`;`AND 开始时间 < = @结束时间`;`AND (总时长> 0 or 实际工时 >0)`;`and isNull(阶段标识, 0) ! = -1`;`and 操作类别 not like '%加班%'`;`and 订单编号 3886`。 +- `工时校验_批量保存校验记录` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、处理报工/工时。 读取/关联对象:表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表`。 写入或更新对象:`生产管理_工时校验_校验工时表`。 入参/分页参数:`@AID列表 nvarchar(MAX),`、`@操作人 nvarchar(50),`、`@最后编辑人 nvarchar(50)`。 主要返回字段线索:`value`。 关键过滤/匹配条件:`WHERE c.AID IS NULL;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO #TempAID (AID)`;`INSERT INTO [dbo].[生产管理_工时校验_校验工时表] (`。 实现特征:事务控制、异常捕获、临时表 `#TempAID`。 +- `工时校验_批量保存校验记录` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、处理报工/工时。 读取/关联对象:表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表`。 写入或更新对象:`生产管理_工时校验_校验工时表`。 入参/分页参数:`@AID列表 nvarchar(MAX),`、`@操作人 nvarchar(50),`、`@最后编辑人 nvarchar(50)`。 主要返回字段线索:`value`。 关键过滤/匹配条件:`WHERE c.AID IS NULL;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO #TempAID (AID)`;`INSERT INTO [dbo].[生产管理_工时校验_校验工时表] (`。 实现特征:事务控制、异常捕获、临时表 `#TempAID`。 + +## 45. src/views/ProductionManagement/WorkHoursCheck/index.vue + +**页面位置**:`src/views/ProductionManagement/WorkHoursCheck/index.vue` +**所属模块**:ProductionManagement / WorkHoursCheck +**源码行数**:1975 + +### 页面功能 + +该页面用于工时校验。质检/管理人员查询待校验报工记录,系统计算标准/实际工时,保存单条或批量校验结果;通过校验后可把工序资源或工时/出库类单据上传到 SAP。 + +页面可见的操作/字段包括 “查询”、“一键校验”、“直接校验”、“新增工时记录”、“设备工时”、“关闭”、“确 定”、“取消”、“item.label”、“全部”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `usp_BatchValidateWorkTime`、`usp_ValidateWorkTime`、`人员管理_人员信息查询_质检部门_查询`、`系统管理_人员管理_所有有效人员查询`、`工时校验_获取订单列表`、`工时校验_获取订单工序` 等过程 取数或提交业务动作。 + +### 页面流程图 + +工时校验流程: + +```mermaid +flowchart LR + A[选择人员/订单/工序/日期] --> B[工时校验_获取昨日之前操作记录列表] + B --> C[选择待校验记录] + C --> D[usp_ValidateWorkTime 或 usp_BatchValidateWorkTime 计算工时] + D --> E{校验结果} + E --> F[工时校验_保存校验记录] + E --> G[工时校验_批量保存校验记录] + F --> H[更新校验状态] + G --> H + H --> I[GET/PATCH /ProductionOrders 补工序资源] + I --> J[POST /InventoryGenExits 上传 SAP] + J --> K[标记已上传/失败留痕] +``` + + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`一键校验`、`直接校验`、`新增工时记录`、`设备工时`、`关闭`、`确 定`、`取消`、`item.label`、`全部`、`已校验`、`未校验`、`异常`、`正常`、`装配`、`机加`、`加班`、`序号` + +主要方法线索:`getUserName` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `orderId` | `@订单编号` | `订单编号, ` | +| 参数 | `selectedChecker ? selectedChecker.label : 0` | `@人员` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `工时ID` | - | `工序名称, 订单行号 as 工艺顺序, 指派对象, TaskAID, 顺序编号, 指派对象 as 工位名称, VisCode` | +| 显示列 | `人员` | - | `@操作人 = 操作人, ` | +| 显示列 | `生产订单` | - | `@订单编号 = 订单号, ` | +| 显示列 | `物料编码` | - | `产品编码` | +| 显示列 | `物料名称` | - | `产品名称` | +| 显示列 | `工序名称` | - | `@工序名称 = 工序名称` | +| 显示列 | `工位名称` | - | `@工位名称 = 工位名称, ` | +| 显示列 | `报工类型` | - | `@操作类别编号 = 操作类别编号, ` | +| 显示列 | `数量` | - | `操作数值` | +| 显示列 | `开始时间` | - | `开始时间` | +| 显示列 | `结束时间` | - | `结束时间` | +| 显示列 | `设备工时` | - | `设备工时` | +| 显示列 | `人员工时` | - | `人员工时` | +| 显示列 | `绑定设备数` | - | `绑定设备数` | +| 显示列 | `工序说明` | - | `工序说明` | +| 显示列 | `异常说明` | - | `异常说明` | +| 显示列 | `校验状态` | - | `校验状态` | +| 显示列 | `最后编辑人` | - | `最后编辑人` | +| 显示列 | `最后编辑时间` | - | `最后编辑时间` | +| 显示列 | `操作` | - | `@操作人 = 操作人, ` | +| 显示列 | `累计分钟` | - | `累计分钟` | +| 显示列 | `设备状态` | - | `CASE TRY_CAST([设备状态] AS INT)` | +| 显示列 | `累计秒数` | - | `累计秒数` | +| 输入字段 | `taskid` | - | - | +| 输入字段 | `taskorder` | - | - | +| 输入字段 | `checker` | - | - | +| 输入字段 | `timeRange` | - | - | +| 输入字段 | `checkStatus` | - | - | +| 输入字段 | `abnormalstatus` | - | - | +| 输入字段 | `natureStatus` | - | - | +| 输入字段 | `addwork` | - | - | +| 输入字段 | `activeTab` | - | - | +| 输入字段 | `editForm.订单编号` | - | - | +| 输入字段 | `editForm.产品编码` | - | - | +| 输入字段 | `editForm.产品名称` | - | - | +| 输入字段 | `editForm.工序名称` | - | - | +| 输入字段 | `editForm.工位名称` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- SAP B1 Service Layer(`src/api/b1s.js`) + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 786 | 11(当前通用存储过程查询/执行) | `usp_BatchValidateWorkTime` | 报工或工时处理 | 查询、新增、更新、解析 JSON 批量数据、处理报工/工时 | 未在 SQL 中解析到明确依赖 | +| 888 | 11(当前通用存储过程查询/执行) | `usp_ValidateWorkTime` | 报工或工时处理 | 查询、新增、更新、解析 JSON 批量数据、处理报工/工时 | 未在 SQL 中解析到明确依赖 | +| 909 | 11(当前通用存储过程查询/执行) | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 查询、处理质检数据 | 视图:`登录基础数据_管理人员权限视图` | +| 960 | 11(当前通用存储过程查询/执行) | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 查询 | 视图:`登录基础数据_管理人员权限视图` | +| 975 | 11(当前通用存储过程查询/执行) | `工时校验_获取订单列表` | 报工或工时处理 | 查询、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划` | +| 1004 | 11(当前通用存储过程查询/执行) | `工时校验_获取订单工序` | 报工或工时处理 | 查询、处理报工/工时 | 视图:`View_生产订单_MES` | +| 1057 | 11(当前通用存储过程查询/执行) | `工时校验_获取昨日之前操作记录列表` | 报工或工时处理 | 分页、处理报工/工时 | 视图:`View_生产工时视图` | +| 1149 | 11(当前通用存储过程查询/执行) | `工时校验_获取资源` | 报工或工时处理 | 查询、读取 SAP B1 数据库对象、处理报工/工时 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_ORSC` | +| 1174 | 11(当前通用存储过程查询/执行) | `工时校验_获取订单工序` | 报工或工时处理 | 查询、处理报工/工时 | 视图:`View_生产订单_MES` | +| 1293 | 11(当前通用存储过程查询/执行) | `工时校验_获取设备数据` | 报工或工时处理 | 查询、处理报工/工时 | 表:`历史_工位设备状态每分钟记录` | +| 1650 | 11(当前通用存储过程查询/执行) | `工时校验_保存校验记录` | 更新/保存业务数据 | 查询、新增、更新、处理报工/工时 | 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` | +| 1665 | 11(当前通用存储过程查询/执行) | `工时校验_批量保存校验记录` | 更新/保存业务数据 | 查询、新增、处理报工/工时 | 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` | +| 1684 | 11(当前通用存储过程查询/执行) | `工时校验_批量保存校验记录` | 更新/保存业务数据 | 查询、新增、处理报工/工时 | 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` | +| 1707 | 11(当前通用存储过程查询/执行) | `工时校验_保存校验记录` | 更新/保存业务数据 | 查询、新增、更新、处理报工/工时 | 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` | +| 1756 | 11(当前通用存储过程查询/执行) | `工时校验_批量保存校验记录` | 更新/保存业务数据 | 查询、新增、处理报工/工时 | 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` | + +### 与 SAP 的交互 + +页面直接 SAP/接口调用: +- 第 577 行:`getB1("/ProductionOrders")` +- 第 672 行:`getB1("/ProductionOrders")` +- 第 733 行:`postB1("/InventoryGenExits")` +- 第 1482 行:`patchB1("ProductionOrders(${order.AbsoluteEntry})")` +存储过程内读取 SAP B1 数据库对象: +- 工时校验_获取资源: SAP.SBO_YL.dbo.UBT_ORSC + +### SAP 接口级说明 + +| 行号 | 方法 | 接口 | 调用时机/影响判断 | 提交字段线索 | +|---:|---|---|---|---| +| 577 | `getB1` | `/ProductionOrders` | 读取或更新 SAP 生产订单。失败会导致 MES 与 SAP 订单状态/工序资源不同步。 | `filter`、`获取订单数据失败`、`获取到工序数据`、`success`、`error`、`结构异常`、`获取到订单` | +| 672 | `getB1` | `/ProductionOrders` | 读取或更新 SAP 生产订单。失败会导致 MES 与 SAP 订单状态/工序资源不同步。 | `filter`、`使用原订单` | +| 733 | `postB1` | `/InventoryGenExits` | 上传库存发出/工时相关单据。失败会导致 SAP 未生成对应业务单据。 | `DocDate`、`DocDueDate`、`Comments`、`AID`、`DocumentLines`、`success`、`error`、`提交工时单据失败`、`warning` | +| 1482 | `patchB1` | `ProductionOrders(${order.AbsoluteEntry})` | 读取或更新 SAP 生产订单。失败会导致 MES 与 SAP 订单状态/工序资源不同步。 | `ProductionOrderLines`、`ProductionOrdersStages`、`更新SAP失败`、`查找设备资源`、`StageID` | + +### 状态流转说明 + +- `usp_BatchValidateWorkTime`:`IF @WorkType = '跳过SAP'`;`VALUES (@CurrentAID, 1, '总时长为0,跳过SAP上传', 0, @WorkType, @CalcDetail);`;`PRINT ' 成功: 总时长为0,跳过SAP上传';`;`PRINT '处理完成 - 成功: ' + CAST(@SuccessCount AS NVARCHAR) + ', 失败: ' + CAST(@FailCount AS NVARCHAR);`;`PRINT ' = = = usp_BatchValidateWorkTime 执行完成 = = = ';` +- `usp_ValidateWorkTime`:`@SAPDocumentLine NVARCHAR(MAX) OUTPUT`;`@加工工时 DECIMAL(18, 2), `;`@加工工时 = ISNULL(加工工时, 0), `;`SET @SAPDocumentLine = (`;`UPDATE YL_加工中心_操作记录表`;`加工工时, `;`SET @SAPDocumentLine = NULL;` +- `人员管理_人员信息查询_质检部门_查询`:`create PROCEDURE [dbo].[人员管理_人员信息查询_质检部门_查询]` +- `工时校验_获取昨日之前操作记录列表`:`@校验状态 nvarchar(4000) = 2, `;`@任务ID nvarchar(4000) = 0, `;`'+ @校验状态 +' = 2`;`OR ('+@校验状态+' = 0 AND Expr1 IS NULL)`;`OR ('+@校验状态+' = 1 AND Expr1 IS NOT NULL)`;`IF @任务ID ! = '0' AND @任务ID ! = ''`;`set @where = @where + ' AND ISNULL(AID, 0) = ' + @任务ID + ' '`;`, 加工工时` +- `工时校验_获取资源`:`select VisName as 资源名称, VisCode, StdCost1 from SAP.SBO_YL.dbo.UBT_ORSC as a where a.VisName = @资源名称` +- `工时校验_获取设备数据`:`CASE TRY_CAST([设备状态] AS INT)`;`END AS 设备状态, `;`FROM [dbo].[历史_工位设备状态每分钟记录]`;`设备状态, `;`WHERE 设备状态 ! = N'未知'`;`GROUP BY 工位名称, 设备状态`;`ORDER BY 设备状态`;`SUM(CASE WHEN 设备状态 = N'运行' THEN 累计分钟 ELSE 0 END) AS 运行总分钟, ` +- `工时校验_保存校验记录`:`FROM [dbo].[YL_加工中心_操作记录表]`;`UPDATE [dbo].[YL_加工中心_操作记录表]`;`已报工 = 1, ` +- `工时校验_批量保存校验记录`:`操作描述, 开始时间, 结束时间, 工时, 报工日期, 已报工, 不装配, `;`FROM [dbo].[YL_加工中心_操作记录表] o` +- `工时校验_批量保存校验记录`:`操作描述, 开始时间, 结束时间, 工时, 报工日期, 已报工, 不装配, `;`FROM [dbo].[YL_加工中心_操作记录表] o` +- `工时校验_保存校验记录`:`FROM [dbo].[YL_加工中心_操作记录表]`;`UPDATE [dbo].[YL_加工中心_操作记录表]`;`已报工 = 1, ` +- `工时校验_批量保存校验记录`:`操作描述, 开始时间, 结束时间, 工时, 报工日期, 已报工, 不装配, `;`FROM [dbo].[YL_加工中心_操作记录表] o` + +### 数据库调用链 + +- `src/views/ProductionManagement/WorkHoursCheck/index.vue` -> `usp_BatchValidateWorkTime` -> 未在 SQL 中解析到明确依赖 -> 报工或工时处理 +- `src/views/ProductionManagement/WorkHoursCheck/index.vue` -> `usp_ValidateWorkTime` -> 未在 SQL 中解析到明确依赖 -> 报工或工时处理 +- `src/views/ProductionManagement/WorkHoursCheck/index.vue` -> `人员管理_人员信息查询_质检部门_查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/ProductionManagement/WorkHoursCheck/index.vue` -> `系统管理_人员管理_所有有效人员查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/ProductionManagement/WorkHoursCheck/index.vue` -> `工时校验_获取订单列表` -> 表:`MES_接口_生产计划` -> 报工或工时处理 +- `src/views/ProductionManagement/WorkHoursCheck/index.vue` -> `工时校验_获取订单工序` -> 视图:`View_生产订单_MES` -> 报工或工时处理 +- `src/views/ProductionManagement/WorkHoursCheck/index.vue` -> `工时校验_获取昨日之前操作记录列表` -> 视图:`View_生产工时视图` -> 报工或工时处理 +- `src/views/ProductionManagement/WorkHoursCheck/index.vue` -> `工时校验_获取资源` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_ORSC` -> 报工或工时处理 +- `src/views/ProductionManagement/WorkHoursCheck/index.vue` -> `工时校验_获取订单工序` -> 视图:`View_生产订单_MES` -> 报工或工时处理 +- `src/views/ProductionManagement/WorkHoursCheck/index.vue` -> `工时校验_获取设备数据` -> 表:`历史_工位设备状态每分钟记录` -> 报工或工时处理 +- `src/views/ProductionManagement/WorkHoursCheck/index.vue` -> `工时校验_保存校验记录` -> 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` -> 更新/保存业务数据 +- `src/views/ProductionManagement/WorkHoursCheck/index.vue` -> `工时校验_批量保存校验记录` -> 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` -> 更新/保存业务数据 +- `src/views/ProductionManagement/WorkHoursCheck/index.vue` -> `工时校验_批量保存校验记录` -> 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` -> 更新/保存业务数据 +- `src/views/ProductionManagement/WorkHoursCheck/index.vue` -> `工时校验_保存校验记录` -> 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` -> 更新/保存业务数据 +- `src/views/ProductionManagement/WorkHoursCheck/index.vue` -> `工时校验_批量保存校验记录` -> 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `usp_BatchValidateWorkTime` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、新增、更新、解析 JSON 批量数据、处理报工/工时。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@RecordAIDs NVARCHAR(MAX),`、`@Operator NVARCHAR(50),`、`@Editor NVARCHAR(50),`、`@SuccessCount INT`、`@FailCount INT`、`@ResultDetails NVARCHAR(MAX)`。 主要返回字段线索:`CAST(value AS INT)`。 关键过滤/匹配条件:`WHERE ISNUMERIC(value) = 1;`;`WHERE v.操作类别 NOT IN ('加班', '休息日加班', '法定休息日加班')`;`AND v.总时长 > 0`;`AND TRY_CAST(v.开始时间 AS DATE) IS NOT NULL;`;`WHERE OperatorName = @OpName AND WorkDate = @WDate;`;`DECLARE record_cursor CURSOR FOR SELECT AID FROM #TempRecords WHERE Processed = 0;`;`WHERE v.AID = @CurrentAID;`;`ELSE IF @UploadMinutes < 0 OR @WorkType = '无效'`;`UPDATE #TempRecords SET Processed = 1 WHERE AID = @CurrentAID;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO #TempRecords (AID)`;`SET @SuccessCount = 0;`;`SET @FailCount = 0;`;`SET @ResultDetails = '{"SuccessCount":0, "FailCount":0, "Details":[], "Message":"没有有效的记录ID"}';`;`INSERT INTO @OperatorGroups (OperatorName, WorkDate, StandardHours, Ratio, TotalMinutes)`;`UPDATE @OperatorGroups`;`SET Ratio = @Ratio, TotalMinutes = @TotalMin`;`SET @UploadMinutes = @TotalSeconds / 60.0;`;`SET @WorkType = '加班';`;`SET @CalcDetail = (`;`INSERT INTO @ResultTable (AID, Success, Message, UploadMinutes, WorkType, CalculationDetail)`。 排序/分组/分页线索:`FETCH NEXT FROM group_cursor INTO @OpName, @WDate, @StdHours;`;`FETCH NEXT FROM record_cursor INTO @CurrentAID;`。 实现特征:JSON 批量解析、异常捕获、临时表 `#TempRecords`。 +- `usp_ValidateWorkTime` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、新增、更新、解析 JSON 批量数据、处理报工/工时。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表`。 入参/分页参数:`@RecordAID INT,`、`@Operator NVARCHAR(50),`、`@Editor NVARCHAR(50),`、`@StartTime DATETIME`、`@EndTime DATETIME`、`@Success BIT`、`@Message NVARCHAR(500)`、`@SAPDocumentLine NVARCHAR(MAX)`。 主要返回字段线索:`@订单编号 = 订单号, `、`@工位名称 = 工位名称, `、`@操作人 = 操作人, `、`@加工工时 = ISNULL(加工工时, 0), `、`@总时长 = ISNULL(总时长, 0), `、`@工序名称 = 工序名称`。 关键过滤/匹配条件:`WHERE AID = @RecordAID;`;`IF @StartTime IS NOT NULL AND @EndTime IS NOT NULL`;`IF NOT EXISTS (SELECT 1 FROM 生产管理_工时校验_校验工时表 WHERE 报工记录id = @RecordAID)`;`WHERE 报工记录id = @RecordAID;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @Success = 0;`;`SET @Message = '工时计算为0或负数,无法上传';`;`SET @SAPDocumentLine = (`;`UPDATE YL_加工中心_操作记录表`;`SET 开始时间 = @StartTime, `;`INSERT INTO 生产管理_工时校验_校验工时表 (`;`UPDATE 生产管理_工时校验_校验工时表`;`SET 计算详情 = @CalculationDetail, `;`SET @Success = 1;`;`SET @Message = '校验成功,上传工时:' + CAST(@UploadMinutes AS NVARCHAR(20)) + '分钟';`;`SET @Message = ERROR_MESSAGE();`。 实现特征:JSON 批量解析、事务控制、异常捕获。 +- `人员管理_人员信息查询_质检部门_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`*`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `系统管理_人员管理_所有有效人员查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`Personnel_Number AS 人员编号, `、`Personnel_Name AS 人员姓名, `、`account AS 账号, `、`Roles_Function AS 角色, `、`部门名称`。 关键过滤/匹配条件:`WHERE Quit = 0`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY Personnel_Name;`。 +- `工时校验_获取订单列表` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 入参/分页参数:`@订单编号 nvarchar(50)`。 主要返回字段线索:`DISTINCT top 20`、`订单编号, `、`物料编号 as 零件编码, `、`物料描述 as 零件名称`。 关键过滤/匹配条件:`FROM [dbo].[MES_接口_生产计划] WHERE 订单编号 LIKE '%' + @订单编号 + '%' OR @订单编号 = ''`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY 订单编号 ;`。 +- `工时校验_获取订单工序` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:视图:`View_生产订单_MES`。 入参/分页参数:`@订单编号 int`。 主要返回字段线索:`工序名称, 订单行号 as 工艺顺序, 指派对象, TaskAID, 顺序编号, 指派对象 as 工位名称, VisCode`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单编号`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY 订单行号;`。 +- `工时校验_获取昨日之前操作记录列表` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:分页、处理报工/工时。 读取/关联对象:视图:`View_生产工时视图`。 入参/分页参数:`@开始时间 datetime`、`@结束时间 datetime`、`@校验状态 nvarchar(4000)`、`@过滤性质 nvarchar(4000)`、`@PageCurrent int`、`@PageSize int`、`@PageCount int`、`@ItemCount int`、`@异常 nvarchar(4000)`、`@任务ID nvarchar(4000)`、`@生产订单 nvarchar(4000)`、`@加班 nvarchar(4000)`、`@人员 nvarchar(4000)`。 关键过滤/匹配条件:`declare @where nvarchar(4000)`;`set @where = ' (`;`OR ('+@校验状态+' = 0 AND Expr1 IS NULL)`;`OR ('+@校验状态+' = 1 AND Expr1 IS NOT NULL)`;`AND (`;`OR ('+@过滤性质+' = 1 AND ISNULL(工位名称, 工位名称) NOT LIKE ''%装配%'')`;`OR ('+@过滤性质+' = 2 AND ISNULL(工位名称, 工位名称) LIKE ''%装配%'')`;`OR ('+@异常+' = 1 AND (ISNULL(结束时间, 结束时间) IS NULL))`;`OR ('+@异常+' = 2 AND ISNULL(结束时间, 结束时间) IS NOT NULL)`;`AND 开始时间 < CONVERT(VARCHAR(10), GETDATE(), 120) + '' 00:00:00''`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`set @tbname = ' [dbo].[View_生产工时视图] '`;`set @fieldkey = ' AID '`;`set @where = ' (`;`set @where = @where + ' AND ISNULL(操作类别, '''') LIKE ''%加班%'' '`;`set @where = @where + ' AND ISNULL(操作类别, '''') NOT LIKE ''%加班%'' '`;`set @where = @where + ' AND ISNULL(AID, 0) = ' + @任务ID + ' '`;`set @where = @where + ' AND ISNULL(订单号, 0) = ' + @生产订单 + ' '`;`set @where = @where + ' AND 操作人 LIKE ''%' + @人员 + '%'' '`;`set @fieldOrder = ' 开始时间 DESC '`;`set @fieldshow = '`。 实现特征:分页。 +- `工时校验_获取资源` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、读取 SAP B1 数据库对象、处理报工/工时。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_ORSC`。 入参/分页参数:`@资源名称 NVARCHAR(MAX)`。 主要返回字段线索:`VisName as 资源名称, VisCode, StdCost1`。 关键过滤/匹配条件:`select VisName as 资源名称, VisCode, StdCost1 from SAP.SBO_YL.dbo.UBT_ORSC as a where a.VisName = @资源名称`。 实现特征:读取 SAP 数据库对象。 +- `工时校验_获取订单工序` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:视图:`View_生产订单_MES`。 入参/分页参数:`@订单编号 int`。 主要返回字段线索:`工序名称, 订单行号 as 工艺顺序, 指派对象, TaskAID, 顺序编号, 指派对象 as 工位名称, VisCode`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单编号`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY 订单行号;`。 +- `工时校验_获取设备数据` 属于 设备与实时数据,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:表:`历史_工位设备状态每分钟记录`。 入参/分页参数:`@工位名称 nvarchar(50)`。 主要返回字段线索:`[AID], `、`[工位号] AS 工位名称, `、`[创建时间], `、`CASE TRY_CAST([设备状态] AS INT)`、`WHEN -1 THEN N'关机'`、`WHEN 0 THEN N'待机'`、`WHEN 1 THEN N'运行'`、`WHEN 2 THEN N'报警'`、`ELSE N'未知'`、`END AS 设备状态, `。 关键过滤/匹配条件:`WHERE 工位号 = @工位名称`;`AND CAST([创建时间] AS DATE) = CAST(GETDATE() AS DATE)`;`WHERE 设备状态 ! = N'未知'`。 排序/分组/分页线索:`LEAD([创建时间]) OVER (ORDER BY [创建时间]) AS 下一记录时间`;`GROUP BY 工位名称, 设备状态`;`ORDER BY 设备状态`;`GROUP BY 工位名称`。 +- `工时校验_保存校验记录` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新、处理报工/工时。 读取/关联对象:表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表`。 写入或更新对象:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表`。 入参/分页参数:`@orderAID bigint,`、`@开始时间 datetime,`、`@结束时间 datetime,`、`@总时长 int,`、`@操作人 nvarchar(50),`、`@最后编辑人 nvarchar(50),`、`@当日班次最小标准工时 nvarchar(50)`。 主要返回字段线索:`@操作类别编号 = 操作类别编号, `、`@操作类别 = 操作类别, `、`@阶段标识 = 阶段标识, `、`@工序名称 = 工序名称, `、`@工位编号 = 工位编号, `、`@工位名称 = 工位名称, `、`@合同号 = 合同号, `、`@订单编号 = 订单编号, `、`@物料编号 = 物料编号, `、`@物料描述 = 物料描述, `。 关键过滤/匹配条件:`WHERE AID = @orderAID;`;`WHERE AID = @orderAID`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`UPDATE [dbo].[YL_加工中心_操作记录表]`;`SET`。 实现特征:事务控制、异常捕获。 +- `工时校验_批量保存校验记录` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、处理报工/工时。 读取/关联对象:表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表`。 写入或更新对象:`生产管理_工时校验_校验工时表`。 入参/分页参数:`@AID列表 nvarchar(MAX),`、`@操作人 nvarchar(50),`、`@最后编辑人 nvarchar(50)`。 主要返回字段线索:`value`。 关键过滤/匹配条件:`WHERE c.AID IS NULL;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO #TempAID (AID)`;`INSERT INTO [dbo].[生产管理_工时校验_校验工时表] (`。 实现特征:事务控制、异常捕获、临时表 `#TempAID`。 +- `工时校验_批量保存校验记录` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、处理报工/工时。 读取/关联对象:表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表`。 写入或更新对象:`生产管理_工时校验_校验工时表`。 入参/分页参数:`@AID列表 nvarchar(MAX),`、`@操作人 nvarchar(50),`、`@最后编辑人 nvarchar(50)`。 主要返回字段线索:`value`。 关键过滤/匹配条件:`WHERE c.AID IS NULL;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO #TempAID (AID)`;`INSERT INTO [dbo].[生产管理_工时校验_校验工时表] (`。 实现特征:事务控制、异常捕获、临时表 `#TempAID`。 +- `工时校验_保存校验记录` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新、处理报工/工时。 读取/关联对象:表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表`。 写入或更新对象:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表`。 入参/分页参数:`@orderAID bigint,`、`@开始时间 datetime,`、`@结束时间 datetime,`、`@总时长 int,`、`@操作人 nvarchar(50),`、`@最后编辑人 nvarchar(50),`、`@当日班次最小标准工时 nvarchar(50)`。 主要返回字段线索:`@操作类别编号 = 操作类别编号, `、`@操作类别 = 操作类别, `、`@阶段标识 = 阶段标识, `、`@工序名称 = 工序名称, `、`@工位编号 = 工位编号, `、`@工位名称 = 工位名称, `、`@合同号 = 合同号, `、`@订单编号 = 订单编号, `、`@物料编号 = 物料编号, `、`@物料描述 = 物料描述, `。 关键过滤/匹配条件:`WHERE AID = @orderAID;`;`WHERE AID = @orderAID`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`UPDATE [dbo].[YL_加工中心_操作记录表]`;`SET`。 实现特征:事务控制、异常捕获。 +- `工时校验_批量保存校验记录` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、处理报工/工时。 读取/关联对象:表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表`。 写入或更新对象:`生产管理_工时校验_校验工时表`。 入参/分页参数:`@AID列表 nvarchar(MAX),`、`@操作人 nvarchar(50),`、`@最后编辑人 nvarchar(50)`。 主要返回字段线索:`value`。 关键过滤/匹配条件:`WHERE c.AID IS NULL;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO #TempAID (AID)`;`INSERT INTO [dbo].[生产管理_工时校验_校验工时表] (`。 实现特征:事务控制、异常捕获、临时表 `#TempAID`。 + +## 46. src/views/ProductionManagement/WorkhoursEdit/index.vue + +**页面位置**:`src/views/ProductionManagement/WorkhoursEdit/index.vue` +**所属模块**:ProductionManagement / WorkhoursEdit +**源码行数**:839 + +### 页面功能 + +该页面用于编辑已产生的工时/报工记录,修正异常工时或补录说明。 + +页面可见的操作/字段包括 “查询”、“新增工时记录”、“设备工时”、“关闭”、“确 定”、“取消”、“item.label”、“全部”、“已校验”、“未校验”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `人员管理_人员信息查询_质检部门_查询`、`系统管理_人员管理_所有有效人员查询`、`工时校验_获取订单列表`、`工时校验_获取订单工序`、`工时校验_获取操作记录列表`、`工时校验_获取设备数据` 等过程 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `人员管理_人员信息查询_质检部门_查询` -> `系统管理_人员管理_所有有效人员查询` -> `工时校验_获取订单列表` -> `工时校验_获取订单工序` -> `工时校验_获取操作记录列表` -> `工时校验_获取设备数据` -> `工时校验_保存校验记录` -> `工时校验_新增操作记录` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`新增工时记录`、`设备工时`、`关闭`、`确 定`、`取消`、`item.label`、`全部`、`已校验`、`未校验`、`异常`、`正常`、`大于550`、`超时未校验`、`装配`、`机加`、`加班`、`序号` + +主要方法线索:`getCheckerList`、`for` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `orderId` | `@订单编号` | `订单编号, ` | +| 参数 | `selectedChecker ? selectedChecker.label : 0` | `@人员` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `工时ID` | - | `工序名称, 订单行号 as 工艺顺序, 指派对象, TaskAID, 顺序编号, 指派对象 as 工位名称, VisCode` | +| 显示列 | `人员` | - | `Personnel_Number AS 人员编号, ` | +| 显示列 | `生产订单` | - | `订单编号, ` | +| 显示列 | `物料编码` | - | `产品编码` | +| 显示列 | `物料名称` | - | `产品名称` | +| 显示列 | `工序名称` | - | `工序名称, 订单行号 as 工艺顺序, 指派对象, TaskAID, 顺序编号, 指派对象 as 工位名称, VisCode` | +| 显示列 | `工位名称` | - | `工序名称, 订单行号 as 工艺顺序, 指派对象, TaskAID, 顺序编号, 指派对象 as 工位名称, VisCode` | +| 显示列 | `报工类型` | - | `@操作类别编号 = 操作类别编号, ` | +| 显示列 | `数量` | - | `操作数值` | +| 显示列 | `开始时间` | - | `开始时间` | +| 显示列 | `结束时间` | - | `结束时间` | +| 显示列 | `设备工时` | - | `设备工时` | +| 显示列 | `人员工时` | - | `人员工时` | +| 显示列 | `校验状态` | - | `校验状态` | +| 显示列 | `最后编辑人` | - | `最后编辑人` | +| 显示列 | `最后编辑时间` | - | `最后编辑时间` | +| 显示列 | `操作` | - | `@操作类别编号 = 操作类别编号, ` | +| 显示列 | `累计分钟` | - | `累计分钟` | +| 显示列 | `设备状态` | - | `CASE TRY_CAST([设备状态] AS INT)` | +| 显示列 | `累计秒数` | - | `累计秒数` | +| 输入字段 | `taskid` | - | - | +| 输入字段 | `taskorder` | - | - | +| 输入字段 | `checker` | - | - | +| 输入字段 | `timeRange` | - | - | +| 输入字段 | `checkStatus` | - | - | +| 输入字段 | `abnormalstatus` | - | - | +| 输入字段 | `natureStatus` | - | - | +| 输入字段 | `addwork` | - | - | +| 输入字段 | `activeTab` | - | - | +| 输入字段 | `editForm.订单编号` | - | - | +| 输入字段 | `editForm.产品编码` | - | - | +| 输入字段 | `editForm.产品名称` | - | - | +| 输入字段 | `editForm.工序名称` | - | - | +| 输入字段 | `editForm.工位名称` | - | - | +| 输入字段 | `editForm.操作人` | - | - | +| 输入字段 | `editForm.操作类别` | - | - | +| 输入字段 | `editForm.操作数值` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 474 | 11(当前通用存储过程查询/执行) | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 查询、处理质检数据 | 视图:`登录基础数据_管理人员权限视图` | +| 503 | 11(当前通用存储过程查询/执行) | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 查询 | 视图:`登录基础数据_管理人员权限视图` | +| 518 | 11(当前通用存储过程查询/执行) | `工时校验_获取订单列表` | 报工或工时处理 | 查询、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划` | +| 547 | 11(当前通用存储过程查询/执行) | `工时校验_获取订单工序` | 报工或工时处理 | 查询、处理报工/工时 | 视图:`View_生产订单_MES` | +| 602 | 11(当前通用存储过程查询/执行) | `工时校验_获取操作记录列表` | 报工或工时处理 | 分页、处理报工/工时 | 视图:`View_生产工时视图` | +| 647 | 11(当前通用存储过程查询/执行) | `工时校验_获取订单工序` | 报工或工时处理 | 查询、处理报工/工时 | 视图:`View_生产订单_MES` | +| 662 | 11(当前通用存储过程查询/执行) | `工时校验_获取设备数据` | 报工或工时处理 | 查询、处理报工/工时 | 表:`历史_工位设备状态每分钟记录` | +| 739 | 11(当前通用存储过程查询/执行) | `工时校验_保存校验记录` | 更新/保存业务数据 | 查询、新增、更新、处理报工/工时 | 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` | +| 798 | 11(当前通用存储过程查询/执行) | `工时校验_新增操作记录` | 新增业务数据 | 查询、新增、处理报工/工时 | 表:`YL_加工中心_操作记录表` | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `人员管理_人员信息查询_质检部门_查询`:`create PROCEDURE [dbo].[人员管理_人员信息查询_质检部门_查询]` +- `工时校验_获取操作记录列表`:`@校验状态 nvarchar(4000) = 2, `;`@任务ID nvarchar(4000) = 0, `;`IF @校验状态 = '0'`;`ELSE IF @校验状态 = '1'`;`set @where = @where + ' AND 结束时间 IS NOT NULL AND ISNULL(加工工时, 总时长) DATEADD(day, -1, GETDATE()) '`;`set @where = @where + ' AND ISNULL(加工工时, 总时长) > 33000 '`;`IF @任务ID ! = '0' AND @任务ID ! = ''`;`set @where = @where + ' AND ISNULL(AID, 0) = ' + @任务ID + ' '` +- `工时校验_获取设备数据`:`CASE TRY_CAST([设备状态] AS INT)`;`END AS 设备状态, `;`FROM [dbo].[历史_工位设备状态每分钟记录]`;`设备状态, `;`WHERE 设备状态 ! = N'未知'`;`GROUP BY 工位名称, 设备状态`;`ORDER BY 设备状态`;`SUM(CASE WHEN 设备状态 = N'运行' THEN 累计分钟 ELSE 0 END) AS 运行总分钟, ` +- `工时校验_保存校验记录`:`FROM [dbo].[YL_加工中心_操作记录表]`;`UPDATE [dbo].[YL_加工中心_操作记录表]`;`已报工 = 1, ` +- `工时校验_新增操作记录`:`INSERT INTO [dbo].[YL_加工中心_操作记录表] (`;`操作描述, TaskAID, 开始时间, 结束时间, 实际工时, 报工日期, 已报工, 不装配, `;`WHEN '开始加工' THEN 4` + +### 数据库调用链 + +- `src/views/ProductionManagement/WorkhoursEdit/index.vue` -> `人员管理_人员信息查询_质检部门_查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/ProductionManagement/WorkhoursEdit/index.vue` -> `系统管理_人员管理_所有有效人员查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/ProductionManagement/WorkhoursEdit/index.vue` -> `工时校验_获取订单列表` -> 表:`MES_接口_生产计划` -> 报工或工时处理 +- `src/views/ProductionManagement/WorkhoursEdit/index.vue` -> `工时校验_获取订单工序` -> 视图:`View_生产订单_MES` -> 报工或工时处理 +- `src/views/ProductionManagement/WorkhoursEdit/index.vue` -> `工时校验_获取操作记录列表` -> 视图:`View_生产工时视图` -> 报工或工时处理 +- `src/views/ProductionManagement/WorkhoursEdit/index.vue` -> `工时校验_获取订单工序` -> 视图:`View_生产订单_MES` -> 报工或工时处理 +- `src/views/ProductionManagement/WorkhoursEdit/index.vue` -> `工时校验_获取设备数据` -> 表:`历史_工位设备状态每分钟记录` -> 报工或工时处理 +- `src/views/ProductionManagement/WorkhoursEdit/index.vue` -> `工时校验_保存校验记录` -> 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` -> 更新/保存业务数据 +- `src/views/ProductionManagement/WorkhoursEdit/index.vue` -> `工时校验_新增操作记录` -> 表:`YL_加工中心_操作记录表` -> 新增业务数据 + +### 存储过程处理逻辑明细 + +- `人员管理_人员信息查询_质检部门_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`*`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `系统管理_人员管理_所有有效人员查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`Personnel_Number AS 人员编号, `、`Personnel_Name AS 人员姓名, `、`account AS 账号, `、`Roles_Function AS 角色, `、`部门名称`。 关键过滤/匹配条件:`WHERE Quit = 0`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY Personnel_Name;`。 +- `工时校验_获取订单列表` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 入参/分页参数:`@订单编号 nvarchar(50)`。 主要返回字段线索:`DISTINCT top 20`、`订单编号, `、`物料编号 as 零件编码, `、`物料描述 as 零件名称`。 关键过滤/匹配条件:`FROM [dbo].[MES_接口_生产计划] WHERE 订单编号 LIKE '%' + @订单编号 + '%' OR @订单编号 = ''`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY 订单编号 ;`。 +- `工时校验_获取订单工序` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:视图:`View_生产订单_MES`。 入参/分页参数:`@订单编号 int`。 主要返回字段线索:`工序名称, 订单行号 as 工艺顺序, 指派对象, TaskAID, 顺序编号, 指派对象 as 工位名称, VisCode`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单编号`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY 订单行号;`。 +- `工时校验_获取操作记录列表` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:分页、处理报工/工时。 读取/关联对象:视图:`View_生产工时视图`。 入参/分页参数:`@开始时间 datetime`、`@结束时间 datetime`、`@校验状态 nvarchar(4000)`、`@过滤性质 nvarchar(4000)`、`@PageCurrent int`、`@PageSize int`、`@PageCount int`、`@ItemCount int`、`@异常 nvarchar(4000)`、`@任务ID nvarchar(4000)`、`@生产订单 nvarchar(4000)`、`@加班 nvarchar(4000)`、`@人员 nvarchar(4000)`。 关键过滤/匹配条件:`declare @where nvarchar(4000)`;`set @where = ' (1 = 1) '`;`set @where = @where + ' AND Expr1 IS NULL '`;`set @where = @where + ' AND Expr1 IS NOT NULL '`;`set @where = @where + ' AND ISNULL(工位名称, '''') NOT LIKE ''%装配%'' '`;`set @where = @where + ' AND ISNULL(工位名称, '''') LIKE ''%装配%'' '`;`set @where = @where + ' AND 结束时间 IS NULL '`;`set @where = @where + ' AND 结束时间 IS NOT NULL AND ISNULL(加工工时, 总时长) DATEADD(day, -1, GETDATE()) '`;`set @where = @where + ' AND ISNULL(加工工时, 总时长) > 33000 '`;`set @where = @where + ' AND 结束时间 < DATEADD(day, -1, GETDATE()) '`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`set @tbname = ' [dbo].[View_生产工时视图] '`;`set @fieldkey = ' AID '`;`set @where = ' (1 = 1) '`;`set @where = @where + ' AND Expr1 IS NULL '`;`set @where = @where + ' AND Expr1 IS NOT NULL '`;`set @where = @where + ' AND ISNULL(工位名称, '''') NOT LIKE ''%装配%'' '`;`set @where = @where + ' AND ISNULL(工位名称, '''') LIKE ''%装配%'' '`;`set @where = @where + ' AND 结束时间 IS NULL '`;`set @where = @where + ' AND 结束时间 IS NOT NULL AND ISNULL(加工工时, 总时长) DATEADD(day, -1, GETDATE()) '`;`set @where = @where + ' AND ISNULL(加工工时, 总时长) > 33000 '`;`set @where = @where + ' AND 结束时间 < DATEADD(day, -1, GETDATE()) '`。 实现特征:分页。 +- `工时校验_获取订单工序` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:视图:`View_生产订单_MES`。 入参/分页参数:`@订单编号 int`。 主要返回字段线索:`工序名称, 订单行号 as 工艺顺序, 指派对象, TaskAID, 顺序编号, 指派对象 as 工位名称, VisCode`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单编号`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY 订单行号;`。 +- `工时校验_获取设备数据` 属于 设备与实时数据,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:表:`历史_工位设备状态每分钟记录`。 入参/分页参数:`@工位名称 nvarchar(50)`。 主要返回字段线索:`[AID], `、`[工位号] AS 工位名称, `、`[创建时间], `、`CASE TRY_CAST([设备状态] AS INT)`、`WHEN -1 THEN N'关机'`、`WHEN 0 THEN N'待机'`、`WHEN 1 THEN N'运行'`、`WHEN 2 THEN N'报警'`、`ELSE N'未知'`、`END AS 设备状态, `。 关键过滤/匹配条件:`WHERE 工位号 = @工位名称`;`AND CAST([创建时间] AS DATE) = CAST(GETDATE() AS DATE)`;`WHERE 设备状态 ! = N'未知'`。 排序/分组/分页线索:`LEAD([创建时间]) OVER (ORDER BY [创建时间]) AS 下一记录时间`;`GROUP BY 工位名称, 设备状态`;`ORDER BY 设备状态`;`GROUP BY 工位名称`。 +- `工时校验_保存校验记录` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新、处理报工/工时。 读取/关联对象:表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表`。 写入或更新对象:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表`。 入参/分页参数:`@orderAID bigint,`、`@开始时间 datetime,`、`@结束时间 datetime,`、`@总时长 int,`、`@操作人 nvarchar(50),`、`@最后编辑人 nvarchar(50),`、`@当日班次最小标准工时 nvarchar(50)`。 主要返回字段线索:`@操作类别编号 = 操作类别编号, `、`@操作类别 = 操作类别, `、`@阶段标识 = 阶段标识, `、`@工序名称 = 工序名称, `、`@工位编号 = 工位编号, `、`@工位名称 = 工位名称, `、`@合同号 = 合同号, `、`@订单编号 = 订单编号, `、`@物料编号 = 物料编号, `、`@物料描述 = 物料描述, `。 关键过滤/匹配条件:`WHERE AID = @orderAID;`;`WHERE AID = @orderAID`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`UPDATE [dbo].[YL_加工中心_操作记录表]`;`SET`。 实现特征:事务控制、异常捕获。 +- `工时校验_新增操作记录` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 新增业务数据。 数据库处理摘要:查询、新增、处理报工/工时。 读取/关联对象:表:`YL_加工中心_操作记录表`。 写入或更新对象:`YL_加工中心_操作记录表`。 入参/分页参数:`@操作类别 nvarchar(50),`、`@订单编号 nvarchar(50),`、`@物料编号 nvarchar(50),`、`@物料描述 nvarchar(50),`、`@工序名称 nvarchar(50),`、`@工位名称 nvarchar(50),`、`@操作人 nvarchar(50),`、`@开始时间 datetime,`、`@结束时间 datetime,`、`@操作内容 nvarchar(500)`、`@操作描述 nvarchar(2000)`、`@TaskAID int`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @工时 = DATEDIFF(SECOND, @开始时间, @结束时间);`;`INSERT INTO [dbo].[YL_加工中心_操作记录表] (`。 实现特征:异常捕获。 + +## 47. src/views/ProductionManagement/Workhours/index.vue + +**页面位置**:`src/views/ProductionManagement/Workhours/index.vue` +**所属模块**:ProductionManagement / Workhours +**源码行数**:413 + +### 页面功能 + +该页面用于工时查询,按工序、人员、设备、时间等条件查看工序工时。 + +页面可见的操作/字段包括 “查询”、“工序工时”、“任务描述”、“报工次数”、“报工数量”、“工位名称”、“实际工时”、“辅助工时”、“平均程序工时”、“平均实际工时”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `生产管理_工时查询_工序工时_查询` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `生产管理_工时查询_工序工时_查询` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`工序工时`、`任务描述`、`报工次数`、`报工数量`、`工位名称`、`实际工时`、`辅助工时`、`平均程序工时`、`平均实际工时`、`平均辅助工时`、`工艺工时`、`合同号`、`订单号`、`产品编码`、`产品名称`、`工序名称`、`请输入合同号` + +主要方法线索:`handleSearch` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 显示列 | `任务描述` | - | `taskAID` | +| 显示列 | `报工次数` | - | `reportCount` | +| 显示列 | `报工数量` | - | `reportQty` | +| 显示列 | `工位名称` | - | `工位名称` | +| 显示列 | `实际工时` | - | `actualWorkHours` | +| 显示列 | `辅助工时` | - | `auxiliaryWorkHours` | +| 显示列 | `平均程序工时` | - | `avgActualWorkHours` | +| 显示列 | `平均实际工时` | - | `avgActualWorkHours` | +| 显示列 | `平均辅助工时` | - | `avgAuxiliaryWorkHours` | +| 显示列 | `工艺工时` | - | `avgAuxiliaryWorkHours` | +| 显示列 | `合同号` | - | `contractNo` | +| 显示列 | `订单号` | - | `orderNo` | +| 显示列 | `产品编码` | - | `productCode` | +| 显示列 | `产品名称` | - | `productName` | +| 显示列 | `工序名称` | - | `processName` | +| 输入字段 | `searchForm.contractNo` | - | - | +| 输入字段 | `searchForm.productCode` | - | - | +| 输入字段 | `searchForm.orderNo` | - | - | +| 输入字段 | `searchForm.datanum` | - | - | +| 输入字段 | `searchForm.startDate` | - | - | +| 输入字段 | `searchForm.endDate` | - | - | +| 输入字段 | `activeTab` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 238 | 11(当前通用存储过程查询/执行) | `生产管理_工时查询_工序工时_查询` | 查询/读取数据 | 查询、处理报工/工时 | 未在 SQL 中解析到明确依赖 | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `生产管理_工时查询_工序工时_查询`:`CASE WHEN v.操作内容 = '报工' THEN v.加工工时 ELSE 0 END AS 实际加工工时, `;`CASE WHEN v.操作内容 = '辅助结束' THEN v.加工工时 ELSE 0 END AS 辅助加工工时, `;`AND (CASE WHEN v.操作内容 = '报工' THEN v.加工工时 ELSE 0 END > 0`;`OR CASE WHEN v.操作内容 = '辅助结束' THEN v.加工工时 ELSE 0 END > 0)`;`ISNULL(产品名称, '') + ' ' + ISNULL(产品编码, '') + ' ' + ISNULL(工序名称, '') + ' 序'+ CAST(订单行号 AS VARCHAR(50)) AS 任务描述`;`t.任务描述, `;`CAST(SUM(实际加工工时) / 60.0 / 60.0 AS DECIMAL(10, 1)) AS 实际工时小时, `;`CAST(SUM(辅助加工工时) / 60.0 / 60.0 AS DECIMAL(10, 1)) AS 辅助工时小时, ` + +### 数据库调用链 + +- `src/views/ProductionManagement/Workhours/index.vue` -> `生产管理_工时查询_工序工时_查询` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `生产管理_工时查询_工序工时_查询` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@合同号 NVARCHAR(50)`、`@产品编码 NVARCHAR(100)`、`@订单号 NVARCHAR(50)`、`@开始日期 DATE`、`@结束日期 DATE`、`@数据条数 int`。 主要返回字段线索:`top (@数据条数)`、`v.*, `、`CASE`、`WHEN CAST(v.开始时间 AS TIME) > = @白班开始时间`、`AND CAST(v.开始时间 AS TIME) < @白班结束时间 THEN '白班'`、`WHEN CAST(v.开始时间 AS TIME) > = @夜班开始时间`、`OR CAST(v.开始时间 AS TIME) < @夜班结束时间 THEN '夜班'`、`ELSE '其他'`、`END AS 班次, `、`CASE WHEN v.操作内容 = '报工' THEN v.加工工时 ELSE 0 END AS 实际加工工时, `。 关键过滤/匹配条件:`AND CAST(v.开始时间 AS TIME) < @白班结束时间 THEN '白班'`;`OR CAST(v.开始时间 AS TIME) < @夜班结束时间 THEN '夜班'`;`AND v.订单行号 = p.工艺顺序`;`WHERE (@开始日期 IS NULL OR @开始日期 = '' OR v.开始时间 > = @开始日期)`;`AND (@结束日期 IS NULL OR @结束日期 = '' OR v.结束时间 > = @结束日期)`;`AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')`;`AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')`;`AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 = @订单号 )`;`AND (CASE WHEN v.操作内容 = '报工' THEN v.加工工时 ELSE 0 END > 0`;`OR CASE WHEN v.操作内容 = '辅助结束' THEN v.加工工时 ELSE 0 END > 0)`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`GROUP BY b.TaskAID, t.任务描述`;`GROUP BY b.TaskAID, t.任务描述, CONVERT(VARCHAR(10), b.开始时间, 120)`;`GROUP BY b.TaskAID, t.任务描述, CONVERT(VARCHAR(10), b.开始时间, 120), b.班次, b.工位名称`;`ORDER BY TaskAID, dateLabel, shift, [Level]`。 + +## 48. src/views/QualityManagement/CheckTask/OtherInbound.vue + +**页面位置**:`src/views/QualityManagement/CheckTask/OtherInbound.vue` +**所属模块**:QualityManagement / CheckTask +**源码行数**:752 + +### 页面功能 + +该页面处理其他入库检验。用户查询其他入库待检任务,录入检验结果并更新质检记录。 + +页面可见的操作/字段包括 “查询”、“取 消”、“合格”、“不合格”、“item.label”、“序号”、“生产订单”、“物料名称”、“物料编码”、“采购数”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_其他入库_查询`、`质量管理_其他入库检验_更新` 取数或提交业务动作。 + +### 页面流程图 + +质检业务流程: + +```mermaid +flowchart LR + A[选择检验类型/订单/物料/工序] --> B[查询待检任务] + B --> C[查看图纸/字典/检验人员] + C --> D[录入检测数量、合格数、不合格数和检测明细] + D --> E{检验类型} + E --> F[来料/入库/退货检验更新] + E --> G[序检收检新增或更新] + E --> H[终检/首检/特殊检验保存] + F --> I[写入 YL_质量检验_质检记录及明细] + G --> I + H --> I + I --> J[必要时查询/回写 SAP 生产订单或单据] +``` + + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`取 消`、`合格`、`不合格`、`item.label`、`序号`、`生产订单`、`物料名称`、`物料编码`、`采购数`、`检验数量`、`合格数`、`不合格数`、`检验人`、`检验时间`、`备注`、`操作`、`请输入生产订单` + +主要方法线索:`getTypeList`、`for`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.orderNo` | `@订单号` | - | +| 参数 | `this.partNo` | `@零件编号` | - | +| 参数 | `this.partName` | `@零件名称` | - | +| 参数 | `this.inspectionDate ? this.inspectionDate[0` | `@检测日期_Start` | - | +| 参数 | `this.inspectionDate ? this.inspectionDate[1` | `@检测日期_End` | - | +| 参数 | `this.inspectionResult` | `@检测结果` | - | +| 参数 | `selectedChecker ? selectedChecker.label : ""` | `@检测人` | - | +| 参数 | `5` | `@检测类型编号` | - | +| 参数 | `"来料检验"` | `@质检类型` | - | +| 参数 | `this.receiveCheckData.零件名称` | `@零件名称` | - | +| 参数 | `this.receiveCheckData.零件编码` | `@零件编码` | - | +| 参数 | `this.receiveCheckData.计划号` | `@计划号` | - | +| 参数 | `this.receiveCheckData.检测数量` | `@检测数量` | - | +| 参数 | `this.receiveCheckData.合格数` | `@合格数` | - | +| 参数 | `this.receiveCheckData.不合格数` | `@不合格数` | - | +| 参数 | `this.receiveCheckData.检测人` | `@检测人` | - | +| 参数 | `this.receiveCheckData.检测时间` | `@检测时间` | - | +| 参数 | `this.receiveCheckData.检测说明` | `@检测说明` | - | +| 参数 | `this.receiveCheckData.行号` | `@行号` | - | +| 参数 | `this.receiveCheckData.订单类型` | `@订单类型` | - | +| 参数 | `this.receiveCheckData.放行数量` | `@放行数量` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `生产订单` | - | `订单编号` | +| 显示列 | `物料名称` | - | `物料名称` | +| 显示列 | `物料编码` | - | `物料编码` | +| 显示列 | `采购数` | - | `计划生产数` | +| 显示列 | `检验数量` | - | `入库数量` | +| 显示列 | `合格数` | - | `合格数` | +| 显示列 | `不合格数` | - | `不合格数` | +| 显示列 | `检验人` | - | `检测人` | +| 显示列 | `检验时间` | - | `检验时间` | +| 显示列 | `备注` | - | `备注` | +| 显示列 | `操作` | - | `操作` | +| 输入字段 | `orderNo` | `@订单号` | - | +| 输入字段 | `partName` | `@零件名称` | - | +| 输入字段 | `partNo` | `@零件编号` | - | +| 输入字段 | `inspectionDate` | `@检测日期_Start` | - | +| 输入字段 | `completionTime` | - | - | +| 输入字段 | `inspectionResult` | `@检测结果` | - | +| 输入字段 | `checker` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- Excel/报表导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 433 | 11(当前通用存储过程查询/执行) | `查询字典` | 查询/读取数据 | 查询 | 表:`YL_基础表_数据字典` | +| 447 | 11(当前通用存储过程查询/执行) | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 查询、处理质检数据 | 视图:`登录基础数据_管理人员权限视图` | +| 483 | 11(当前通用存储过程查询/执行) | `质量管理_其他入库_查询` | 查询/读取数据 | 查询、处理质检数据 | 表:`质量检验_质检任务_SAP` | +| 581 | 12(当前通用存储过程写入/业务动作) | `质量管理_其他入库检验_更新` | 更新/保存业务数据 | 查询、更新、处理质检数据、处理计划/派工 | 表:`YL_质量检验_质检记录`、`质量检验_质检任务_SAP` | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `人员管理_人员信息查询_质检部门_查询`:`create PROCEDURE [dbo].[人员管理_人员信息查询_质检部门_查询]` +- `质量管理_其他入库_查询`:`@状态 NVARCHAR(10) = '', `;`IF @状态 ''`;`IF @状态 = '1'`;`ELSE IF @状态 = '0'`;`* from [dbo].[质量检验_质检任务_SAP] '+@WhereConditions+''` +- `质量管理_其他入库检验_更新`:`@质检类型 NVARCHAR(50), `;`UPDATE [dbo].[质量检验_质检任务_SAP]`;`MERGE INTO [YL_MESDB].[dbo].[YL_质量检验_质检记录] AS target`;`@质检类型 AS 质检类型, `;`target.[质检类型] = source.[质检类型], `;`[质检类型], `;`source.[质检类型], ` + +### 数据库调用链 + +- `src/views/QualityManagement/CheckTask/OtherInbound.vue` -> `查询字典` -> 表:`YL_基础表_数据字典` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/OtherInbound.vue` -> `人员管理_人员信息查询_质检部门_查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/OtherInbound.vue` -> `质量管理_其他入库_查询` -> 表:`质量检验_质检任务_SAP` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/OtherInbound.vue` -> `质量管理_其他入库检验_更新` -> 表:`YL_质量检验_质检记录`、`质量检验_质检任务_SAP` -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `查询字典` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`YL_基础表_数据字典`。 主要返回字段线索:`*`。 +- `人员管理_人员信息查询_质检部门_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`*`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `质量管理_其他入库_查询` 属于 质量检验,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:表:`质量检验_质检任务_SAP`。 入参/分页参数:`@订单号 NVARCHAR(100)`、`@零件编号 NVARCHAR(100)`、`@零件名称 NVARCHAR(100)`、`@检测日期_Start NVARCHAR(20)`、`@检测日期_End NVARCHAR(20)`、`@检测结果 NVARCHAR(10)`、`@检测人 NVARCHAR(50)`、`@状态 NVARCHAR(10)`、`@单据码 NVARCHAR(50)`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`SET @WhereConditions = @WhereConditions + ' AND (订单类型 = ''59'') '`;`SET @WhereConditions = @WhereConditions + ' AND 单据码 LIKE ''%' + @单据码 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 订单编号 LIKE ''%' + @订单号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 物料编码 LIKE ''%' + @零件编号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 物料名称 LIKE ''%' + @零件名称 + '%'''`;`IF @检测日期_Start '' AND @检测日期_End ''`;`SET @WhereConditions = @WhereConditions + ' AND CONVERT(DATE, 检验时间) BETWEEN ''' + @检测日期_Start + ''' AND ''' + @检测日期_End + ''''`;`SET @WhereConditions = @WhereConditions + ' AND (合格数 > 0 AND 不合格数 = 0)'`;`SET @WhereConditions = @WhereConditions + ' AND ( 不合格数 > 0)'`;`SET @WhereConditions = @WhereConditions + ' AND (ISNULL(合格数, 0) + ISNULL(不合格数, 0) = ISNULL(到货数, 0)) AND ISNULL(到货数, 0) 0'`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @WhereConditions = @WhereConditions + ' AND (订单类型 = ''59'') '`;`SET @WhereConditions = @WhereConditions + ' AND 单据码 LIKE ''%' + @单据码 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 订单编号 LIKE ''%' + @订单号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 物料编码 LIKE ''%' + @零件编号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 物料名称 LIKE ''%' + @零件名称 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND CONVERT(DATE, 检验时间) BETWEEN ''' + @检测日期_Start + ''' AND ''' + @检测日期_End + ''''`;`SET @WhereConditions = @WhereConditions + ' AND (合格数 > 0 AND 不合格数 = 0)'`;`SET @WhereConditions = @WhereConditions + ' AND ( 不合格数 > 0)'`;`SET @WhereConditions = @WhereConditions + ' AND (ISNULL(合格数, 0) + ISNULL(不合格数, 0) = ISNULL(到货数, 0)) AND ISNULL(到货数, 0) 0'`;`SET @WhereConditions = @WhereConditions + ' AND (ISNULL(合格数, 0) + ISNULL(不合格数, 0) < ISNULL(到货数, 入库数量)) '`;`SET @WhereConditions = @WhereConditions + ' AND ISNULL( 检测人, '''') LIKE ''%' + @检测人 + '%'''`。 +- `质量管理_其他入库检验_更新` 属于 质量检验,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、更新、处理质检数据、处理计划/派工。 读取/关联对象:表:`YL_质量检验_质检记录`、`质量检验_质检任务_SAP`。 写入或更新对象:`质量检验_质检任务_SAP`。 入参/分页参数:`@检测类型编号 int,`、`@质检类型 NVARCHAR(50),`、`@零件名称 NVARCHAR(200),`、`@零件编码 NVARCHAR(200),`、`@计划号 int,`、`@检测数量 decimal(18,`、`@合格数 decimal(18,`、`@不合格数 decimal(18,`、`@检测人 NVARCHAR(50),`、`@检测时间 DATETIME,`、`@检测说明 NVARCHAR(MAX),`、`@行号 int,`、`@订单类型 NVARCHAR(50),`、`@放行数量 int`。 关键过滤/匹配条件:`WHERE 订单编号 = @计划号 AND 行号 = @行号 and 订单类型 = @订单类型`;`ON (target.[零件编码] = source.[零件编码] AND target.[计划号] = source.[计划号] and target.行号 = source.行号 )`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`UPDATE [dbo].[质量检验_质检任务_SAP]`;`SET 合格数 = @合格数, `;`MERGE INTO [YL_MESDB].[dbo].[YL_质量检验_质检记录] AS target`;`UPDATE SET`。 + +## 49. src/views/QualityManagement/CheckTask/final.vue + +**页面位置**:`src/views/QualityManagement/CheckTask/final.vue` +**所属模块**:QualityManagement / CheckTask +**源码行数**:1209 + +### 页面功能 + +该页面处理终检任务。质检人员查询终检任务,录入终检结果,并预留 SAP 生产订单状态回写。 + +页面可见的操作/字段包括 “查询”、“导出 --> -->”、“取 消”、“关闭”、“装配”、“机加”、“全部”、“合格”、“不合格”、“已完成”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `加急订单_加急明细查询`、`查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_质量检验_终检数据_查询`、`质量管理_质量检验_终检记录_查询`、`MES_QulityInspection_FinalCheck` 等过程 取数或提交业务动作。 + +### 页面流程图 + +质检业务流程: + +```mermaid +flowchart LR + A[选择检验类型/订单/物料/工序] --> B[查询待检任务] + B --> C[查看图纸/字典/检验人员] + C --> D[录入检测数量、合格数、不合格数和检测明细] + D --> E{检验类型} + E --> F[来料/入库/退货检验更新] + E --> G[序检收检新增或更新] + E --> H[终检/首检/特殊检验保存] + F --> I[写入 YL_质量检验_质检记录及明细] + G --> I + H --> I + I --> J[必要时查询/回写 SAP 生产订单或单据] +``` + + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`导出 --> -->`、`取 消`、`关闭`、`装配`、`机加`、`全部`、`合格`、`不合格`、`已完成`、`未完成`、`item.label`、`序号`、`销售订单`、`生产订单`、`物料名称`、`物料编码`、`工序名称` + +主要方法线索:`Urgent` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `row.零件编码` | `@物料编号` | `docentry as 订单编号, itemcode as 物料编号, 加急数量` | +| 参数 | `this.contractNo` | `@合同号` | - | +| 参数 | `this.orderNo` | `@订单号` | - | +| 参数 | `this.partNo` | `@零件编号` | - | +| 参数 | `this.partName` | `@零件名称` | - | +| 参数 | `this.completionTime ? this.completionTime[0` | `@完工日期_Start` | - | +| 参数 | `this.completionTime ? this.completionTime[1` | `@完工日期_End` | - | +| 参数 | `this.inspectionDate ? this.inspectionDate[0` | `@检测日期_Start` | - | +| 参数 | `this.inspectionDate ? this.inspectionDate[1` | `@检测日期_End` | - | +| 参数 | `this.inspectionResult` | `@检测结果` | - | +| 参数 | `selectedChecker ? selectedChecker.label : ""` | `@检测人` | - | +| 参数 | `this.checkstatus` | `@检验状态` | - | +| 参数 | `this.attribute` | `@属性` | - | +| 参数 | `row.内部合同号 ` | `@合同号` | - | +| 参数 | `row.计划号 ` | `@订单号` | - | +| 参数 | `row.零件编码 ` | `@零件编号` | - | +| 参数 | `row.零件名称 ` | `@零件名称` | - | +| 参数 | `this.inspectionDate[0` | `@检测日期_Start` | - | +| 参数 | `this.inspectionDate[1` | `@检测日期_End` | - | +| 参数 | `this.finalCheckData.TaskAID ` | `@TaskAID` | - | +| 参数 | `8` | `@检测类型编号` | - | +| 参数 | `"终检"` | `@质检类型` | - | +| 参数 | `this.finalCheckData.零件名称` | `@零件名称` | - | +| 参数 | `this.finalCheckData.内部合同号` | `@内部合同号` | - | +| 参数 | `this.finalCheckData.零件编码` | `@零件编码` | - | +| 参数 | `this.finalCheckData.计划号` | `@计划号` | - | +| 参数 | `this.finalCheckData.工序名称` | `@工序名称` | - | +| 参数 | `this.finalCheckData.检测数量` | `@检测数量` | - | +| 参数 | `this.finalCheckData.合格数` | `@合格数` | - | +| 参数 | `this.finalCheckData.不合格数` | `@不合格数` | - | +| 参数 | `this.finalCheckData.检测人` | `@检测人` | - | +| 参数 | `this.finalCheckData.检测时间` | `@检测时间` | - | +| 参数 | `this.finalCheckData.检测说明` | `@检测说明` | - | +| 参数 | `this.finalCheckData.放行数量` | `@放行数量` | - | +| 参数 | `this.finalCheckData.计划号` | `@订单编号` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `销售订单` | - | `内部合同号, ` | +| 显示列 | `生产订单` | - | `计划号, ` | +| 显示列 | `物料名称` | - | `零件名称, ` | +| 显示列 | `物料编码` | - | `零件编码, ` | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- Excel/报表导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 650 | 11(当前通用存储过程查询/执行) | `加急订单_加急明细查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象、处理计划/派工 | 表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` | +| 657 | 11(当前通用存储过程查询/执行) | `查询字典` | 查询/读取数据 | 查询 | 表:`YL_基础表_数据字典` | +| 671 | 11(当前通用存储过程查询/执行) | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 查询、处理质检数据 | 视图:`登录基础数据_管理人员权限视图` | +| 725 | 11(当前通用存储过程查询/执行) | `质量管理_质量检验_终检数据_查询` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 829 | 11(当前通用存储过程查询/执行) | `质量管理_质量检验_终检记录_查询` | 查询/读取数据 | 查询、处理质检数据、处理计划/派工 | 表:`YL_质量检验_质检记录` | +| 923 | 12(当前通用存储过程写入/业务动作) | `MES_QulityInspection_FinalCheck` | 质量检验处理 | 查询、新增、处理质检数据、处理计划/派工 | 表:`YL_质量检验_质检记录` | +| 962 | 11(当前通用存储过程查询/执行) | `工时校验_获取工序和指派对象` | 报工或工时处理 | 查询、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划` | + +### 与 SAP 的交互 + +存储过程内读取 SAP B1 数据库对象: +- 加急订单_加急明细查询: SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `加急订单_加急明细查询`:`SELECT docentry as 订单编号, itemcode as 物料编号, 加急数量 from SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` +- `人员管理_人员信息查询_质检部门_查询`:`create PROCEDURE [dbo].[人员管理_人员信息查询_质检部门_查询]` +- `质量管理_质量检验_终检数据_查询`:`@检验状态 NVARCHAR(10) = '', `;`SET @WhereConditions = @WhereConditions + ' AND CONVERT(DATE, 计划完成时间) BETWEEN ''' + @完工日期_Start + ''' AND ''' + @完工日期_End + ''''`;`SET @WhereConditions = @WhereConditions + ' AND 检测状态 = 1'`;`SET @WhereConditions = @WhereConditions + ' AND 检测状态 = 2'`;`IF @检验状态 ''`;`IF @检验状态 = '1'`;`SET @WhereConditions = @WhereConditions + ' AND 检验状态 = ''已完成'''`;`ELSE IF @检验状态 = '0'` +- `质量管理_质量检验_终检记录_查询`:`SET @WhereConditions = @WhereConditions + ' AND 质检类型 = ''终检'' AND 检测类型编号 = 8'`;`质检类型, `;`FROM [dbo].[YL_质量检验_质检记录]` +- `MES_QulityInspection_FinalCheck`:`@质检类型 NVARCHAR(50) = '终检', `;`INSERT INTO [dbo].[YL_质量检验_质检记录] (`;`TaskAID, 检测类型编号, 质检类型, 零件名称, 内部合同号, `;`@TaskAID, @检测类型编号, @质检类型, @零件名称, @内部合同号, ` +- `工时校验_获取工序和指派对象`:`select 顺序编号, 指派对象, 工序名称, 订单行号, b.VisCode as 指派对象编号 from MES_接口_生产计划_生产任务 a left join MES_资源主数据 b on a.指派对象 = b.Name where 订单编号 = @订单编号` + +### 数据库调用链 + +- `src/views/QualityManagement/CheckTask/final.vue` -> `加急订单_加急明细查询` -> 表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/final.vue` -> `查询字典` -> 表:`YL_基础表_数据字典` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/final.vue` -> `人员管理_人员信息查询_质检部门_查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/final.vue` -> `质量管理_质量检验_终检数据_查询` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/final.vue` -> `质量管理_质量检验_终检记录_查询` -> 表:`YL_质量检验_质检记录` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/final.vue` -> `MES_QulityInspection_FinalCheck` -> 表:`YL_质量检验_质检记录` -> 质量检验处理 +- `src/views/QualityManagement/CheckTask/final.vue` -> `工时校验_获取工序和指派对象` -> 表:`MES_接口_生产计划` -> 报工或工时处理 + +### 存储过程处理逻辑明细 + +- `加急订单_加急明细查询` 属于 加急任务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL`。 入参/分页参数:`@物料编号 nvarchar(50)`。 主要返回字段线索:`docentry as 订单编号, itemcode as 物料编号, 加急数量`。 关键过滤/匹配条件:`where itemcode = @物料编号`。 实现特征:读取 SAP 数据库对象。 +- `查询字典` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`YL_基础表_数据字典`。 主要返回字段线索:`*`。 +- `人员管理_人员信息查询_质检部门_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`*`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `质量管理_质量检验_终检数据_查询` 属于 质量检验,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@合同号 NVARCHAR(100)`、`@订单号 NVARCHAR(100)`、`@零件编号 NVARCHAR(100)`、`@零件名称 NVARCHAR(100)`、`@完工日期_Start NVARCHAR(20)`、`@完工日期_End NVARCHAR(20)`、`@检测日期_Start NVARCHAR(20)`、`@检测日期_End NVARCHAR(20)`、`@检测结果 NVARCHAR(10)`、`@检测人 NVARCHAR(50)`、`@检测类别 NVARCHAR(50)`、`@检验状态 NVARCHAR(10)`、`@属性 NVARCHAR(50)`。 主要返回字段线索:`订单编号, MAX(订单行号) AS 最大订单行号`。 关键过滤/匹配条件:`SET @WhereConditions = @WhereConditions + ' AND 内部合同号 LIKE ''%' + REPLACE(@合同号, '''', '''''') + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 计划号 = '+@订单号+''`;`SET @WhereConditions = @WhereConditions + ' AND 零件编码 LIKE ''%' + REPLACE(@零件编号, '''', '''''') + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 零件名称 LIKE ''%' + REPLACE(@零件名称, '''', '''''') + '%'''`;`IF @完工日期_Start '' AND @完工日期_End ''`;`SET @WhereConditions = @WhereConditions + ' AND CONVERT(DATE, 计划完成时间) BETWEEN ''' + @完工日期_Start + ''' AND ''' + @完工日期_End + ''''`;`IF @检测日期_Start '' AND @检测日期_End ''`;`SET @WhereConditions = @WhereConditions + ' AND CONVERT(DATE, 检测时间) BETWEEN ''' + @检测日期_Start + ''' AND ''' + @检测日期_End + ''''`;`SET @WhereConditions = @WhereConditions + ' AND 检测状态 = 1'`;`SET @WhereConditions = @WhereConditions + ' AND 检测状态 = 2'`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @WhereConditions = @WhereConditions + ' AND 内部合同号 LIKE ''%' + REPLACE(@合同号, '''', '''''') + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 计划号 = '+@订单号+''`;`SET @WhereConditions = @WhereConditions + ' AND 零件编码 LIKE ''%' + REPLACE(@零件编号, '''', '''''') + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 零件名称 LIKE ''%' + REPLACE(@零件名称, '''', '''''') + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND CONVERT(DATE, 计划完成时间) BETWEEN ''' + @完工日期_Start + ''' AND ''' + @完工日期_End + ''''`;`SET @WhereConditions = @WhereConditions + ' AND CONVERT(DATE, 检测时间) BETWEEN ''' + @检测日期_Start + ''' AND ''' + @检测日期_End + ''''`;`SET @WhereConditions = @WhereConditions + ' AND 检测状态 = 1'`;`SET @WhereConditions = @WhereConditions + ' AND 检测状态 = 2'`;`SET @WhereConditions = @WhereConditions + ' AND 检测人 LIKE ''%' + REPLACE(@检测人, '''', '''''') + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 检测类别 = ''' + REPLACE(@检测类别, '''', '''''') + ''''`;`SET @WhereConditions = @WhereConditions + ' AND 检验状态 = ''已完成'''`。 排序/分组/分页线索:`GROUP BY 订单编号`;`GROUP BY TaskAID, 工序名称`;`GROUP BY 内部合同号, 计划号, 零件编码, 零件名称, 工序名称, TaskAID, 加急状态, 加急总数, 自制件属性`;`SET @SQL = @SQL + ' ORDER BY 检测时间 DESC, 内部合同号, 计划号'`。 +- `质量管理_质量检验_终检记录_查询` 属于 质量检验,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据、处理计划/派工。 读取/关联对象:表:`YL_质量检验_质检记录`。 入参/分页参数:`@合同号 NVARCHAR(100)`、`@订单号 NVARCHAR(100)`、`@零件编号 NVARCHAR(100)`、`@零件名称 NVARCHAR(100)`、`@检测日期_Start NVARCHAR(20)`、`@检测日期_End NVARCHAR(20)`、`@检测结果 NVARCHAR(10)`、`@检测人 NVARCHAR(50)`。 主要返回字段线索:`QT_AID, `、`TaskAID, `、`检测类型编号, `、`质检类型, `、`零件编码, `、`零件名称, `、`内部合同号, `、`计划号, `、`工序名称, `、`计划生产数, `。 关键过滤/匹配条件:`SET @WhereConditions = @WhereConditions + ' AND 内部合同号 LIKE ''%' + @合同号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 计划号 LIKE ''%' + @订单号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 零件编码 LIKE ''%' + @零件编号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 零件名称 LIKE ''%' + @零件名称 + '%'''`;`IF @检测日期_Start '' AND @检测日期_End ''`;`SET @WhereConditions = @WhereConditions + ' AND CONVERT(DATE, 检测时间) BETWEEN ''' + @检测日期_Start + ''' AND ''' + @检测日期_End + ''''`;`SET @WhereConditions = @WhereConditions + ' AND (合格数 > 0 AND 不合格数 = 0)'`;`SET @WhereConditions = @WhereConditions + ' AND (不合格数 > 0)'`;`SET @WhereConditions = @WhereConditions + ' AND 检测人 LIKE ''%' + @检测人 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 质检类型 = ''终检'' AND 检测类型编号 = 8'`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @WhereConditions = @WhereConditions + ' AND 内部合同号 LIKE ''%' + @合同号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 计划号 LIKE ''%' + @订单号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 零件编码 LIKE ''%' + @零件编号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 零件名称 LIKE ''%' + @零件名称 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND CONVERT(DATE, 检测时间) BETWEEN ''' + @检测日期_Start + ''' AND ''' + @检测日期_End + ''''`;`SET @WhereConditions = @WhereConditions + ' AND (合格数 > 0 AND 不合格数 = 0)'`;`SET @WhereConditions = @WhereConditions + ' AND (不合格数 > 0)'`;`SET @WhereConditions = @WhereConditions + ' AND 检测人 LIKE ''%' + @检测人 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 质检类型 = ''终检'' AND 检测类型编号 = 8'`;`SET @WhereConditions = ' WHERE ' + SUBSTRING(@WhereConditions, 5, LEN(@WhereConditions))`;`SET @SQL = '`。 排序/分组/分页线索:`ORDER BY 检测时间 DESC, 内部合同号, 计划号'`。 +- `MES_QulityInspection_FinalCheck` 属于 质量检验,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 质量检验处理。 数据库处理摘要:查询、新增、处理质检数据、处理计划/派工。 读取/关联对象:表:`YL_质量检验_质检记录`。 写入或更新对象:`YL_质量检验_质检记录`。 入参/分页参数:`@TaskAID INT`、`@检测类型编号 INT`、`@质检类型 NVARCHAR(50)`、`@零件名称 NVARCHAR(100),`、`@内部合同号 NVARCHAR(100),`、`@零件编码 NVARCHAR(100),`、`@计划号 NVARCHAR(100),`、`@工序名称 NVARCHAR(100),`、`@检测数量 INT,`、`@合格数 INT,`、`@不合格数 INT,`、`@检测人 NVARCHAR(50),`、`@检测时间 NVARCHAR(50),`、`@检测说明 NVARCHAR(500)`、`@放行数量 INT`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO [dbo].[YL_质量检验_质检记录] (`。 +- `工时校验_获取工序和指派对象` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 入参/分页参数:`@订单编号 int`。 主要返回字段线索:`顺序编号, 指派对象, 工序名称, 订单行号, b.VisCode as 指派对象编号`。 关键过滤/匹配条件:`select 顺序编号, 指派对象, 工序名称, 订单行号, b.VisCode as 指派对象编号 from MES_接口_生产计划_生产任务 a left join MES_资源主数据 b on a.指派对象 = b.Name where 订单编号 = @订单编号`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 + +## 50. src/views/QualityManagement/CheckTask/firstSpecial.vue + +**页面位置**:`src/views/QualityManagement/CheckTask/firstSpecial.vue` +**所属模块**:QualityManagement / CheckTask +**源码行数**:302 + +### 页面功能 + +该页面处理首检/特殊首件检验。用户按工序和工位选择任务,录入首检数据。 + +页面可见的操作/字段包括 “item.label”、“序号”、“工位编号”、“工序名称”、“操作类别”、“操作人”、“销售订单”、“生产订单”、“物料编号”、“物料名称”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `Prog_MES_LoadProcess`、`Prog_MES_LoadStations`、`MES_QulityInspection_FirstCheckRecords` 取数或提交业务动作。 + +### 页面流程图 + +质检业务流程: + +```mermaid +flowchart LR + A[选择检验类型/订单/物料/工序] --> B[查询待检任务] + B --> C[查看图纸/字典/检验人员] + C --> D[录入检测数量、合格数、不合格数和检测明细] + D --> E{检验类型} + E --> F[来料/入库/退货检验更新] + E --> G[序检收检新增或更新] + E --> H[终检/首检/特殊检验保存] + F --> I[写入 YL_质量检验_质检记录及明细] + G --> I + H --> I + I --> J[必要时查询/回写 SAP 生产订单或单据] +``` + + +### 用户操作与页面线索 + +可见按钮/字段线索:`item.label`、`序号`、`工位编号`、`工序名称`、`操作类别`、`操作人`、`销售订单`、`生产订单`、`物料编号`、`物料名称`、`操作数值`、`开始时间`、`结束时间`、`工时(分)`、`请选择工序`、`请选择工位`、`请输入生产订单`、`请输入零件编号` + +主要方法线索:`getProcessList`、`for` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.process` | `@ProcessID` | - | +| 参数 | `this.station` | `@OPCode` | - | +| 参数 | `this.orderNo` | `@OrderNo` | - | +| 参数 | `this.partNo` | `@PartCode` | - | +| 参数 | `this.operationTime ? this.operationTime[0` | `@PlanStart` | - | +| 参数 | `this.operationTime ? this.operationTime[1` | `@PlanEnd` | - | +| 参数 | `1` | `@不装配` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `工位编号` | - | `[工位编号]` | +| 显示列 | `工序名称` | - | `[工艺编号], [工序名称]` | +| 显示列 | `操作类别` | - | `[操作类别]` | +| 显示列 | `操作人` | - | `[操作人]` | +| 显示列 | `销售订单` | - | `销售订单` | +| 显示列 | `生产订单` | - | `生产订单` | +| 显示列 | `物料编号` | - | `[物料编号]` | +| 显示列 | `物料名称` | - | `物料名称` | +| 显示列 | `操作数值` | - | `操作数值` | +| 显示列 | `开始时间` | - | `开始时间` | +| 显示列 | `结束时间` | - | `结束时间` | +| 显示列 | `工时(分)` | - | `工时(分)` | +| 输入字段 | `process` | `@ProcessID` | - | +| 输入字段 | `station` | `@OPCode` | - | +| 输入字段 | `orderNo` | `@OrderNo` | - | +| 输入字段 | `partNo` | `@PartCode` | - | +| 输入字段 | `operationTime` | `@PlanStart` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 236 | 11(当前通用存储过程查询/执行) | `Prog_MES_LoadProcess` | 查询/读取数据 | 查询 | 表:`基础表_工序` | +| 249 | 11(当前通用存储过程查询/执行) | `Prog_MES_LoadStations` | 查询/读取数据 | 查询、处理外协业务 | 表:`MES_资源主数据` | +| 273 | 11(当前通用存储过程查询/执行) | `MES_QulityInspection_FirstCheckRecords` | 质量检验处理 | 查询、处理报工/工时 | 表:`YL_加工中心_操作记录表` | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `MES_QulityInspection_FirstCheckRecords`:`FROM [YL_加工中心_操作记录表]';` + +### 数据库调用链 + +- `src/views/QualityManagement/CheckTask/firstSpecial.vue` -> `Prog_MES_LoadProcess` -> 表:`基础表_工序` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/firstSpecial.vue` -> `Prog_MES_LoadStations` -> 表:`MES_资源主数据` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/firstSpecial.vue` -> `MES_QulityInspection_FirstCheckRecords` -> 表:`YL_加工中心_操作记录表` -> 质量检验处理 + +### 存储过程处理逻辑明细 + +- `Prog_MES_LoadProcess` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`基础表_工序`。 主要返回字段线索:`[工艺编号], [工序名称]`。 排序/分组/分页线索:`SELECT [工艺编号], [工序名称] FROM [基础表_工序] ORDER BY [工艺编号]`。 +- `Prog_MES_LoadStations` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理外协业务。 读取/关联对象:表:`MES_资源主数据`。 主要返回字段线索:`[VisCode], [Name] as OPName`。 关键过滤/匹配条件:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 排序/分组/分页线索:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 +- `MES_QulityInspection_FirstCheckRecords` 属于 质量检验,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 质量检验处理。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:表:`YL_加工中心_操作记录表`。 入参/分页参数:`@ProcessID int`、`@OPCode nvarchar(50)`、`@OrderNo int`、`@PartCode nvarchar(50)`、`@PlanStart nvarchar(50)`、`@PlanEnd nvarchar(50)`、`@不装配 int`。 主要返回字段线索:`[操作类别]`、`[阶段标识]`、`[工序名称]`、`[工位编号]`、`[工位名称]`、`[操作人]`、`[合同号]`、`[订单编号]`、`[物料编号]`、`[物料描述]`。 关键过滤/匹配条件:`declare @whereString nvarchar(max) = ' where 操作类别 = ''首检'''`;`if(@ProcessID>0) set @whereString = @whereString+' and [阶段标识] = '+Convert(VARCHAR(10), @ProcessID)`;`if(len(@OPCode)>0) set @whereString = @whereString+' and [工位编号] = '''+@OPCode+''''`;`if(@OrderNo>0) set @whereString = @whereString+' and [订单编号] = '+Convert(VARCHAR(10), @OrderNo)`;`if(len(@PartCode)>0) set @whereString = @whereString+' and [物料编号] like ''%'+@PartCode+'%'''`;`if(len(@PlanStart)>0) set @whereString = @whereString+' and [开始时间] > = '''+Convert(VARCHAR(50), @PlanStart)+''''`;`if(len(@PlanEnd)>0) set @whereString = @whereString+' and [开始时间] < = '''+Convert(VARCHAR(50), DATEADD(day, 1, @PlanEnd))+''''`;`if(@不装配 = 1)set @whereString = @whereString+' and [不装配] ''否'''`;`if(@不装配 = 2)set @whereString = @whereString+' and [不装配] = ''否'''`。 关键写入/状态处理语句线索:`if(@ProcessID>0) set @whereString = @whereString+' and [阶段标识] = '+Convert(VARCHAR(10), @ProcessID)`;`if(len(@OPCode)>0) set @whereString = @whereString+' and [工位编号] = '''+@OPCode+''''`;`if(@OrderNo>0) set @whereString = @whereString+' and [订单编号] = '+Convert(VARCHAR(10), @OrderNo)`;`if(len(@PartCode)>0) set @whereString = @whereString+' and [物料编号] like ''%'+@PartCode+'%'''`;`if(len(@PlanStart)>0) set @whereString = @whereString+' and [开始时间] > = '''+Convert(VARCHAR(50), @PlanStart)+''''`;`if(len(@PlanEnd)>0) set @whereString = @whereString+' and [开始时间] < = '''+Convert(VARCHAR(50), DATEADD(day, 1, @PlanEnd))+''''`;`if(@不装配 = 1)set @whereString = @whereString+' and [不装配] ''否'''`;`if(@不装配 = 2)set @whereString = @whereString+' and [不装配] = ''否'''`;`set @sqlString = @sqlString+@whereString+@orderString`。 排序/分组/分页线索:`declare @orderString nvarchar(max) = ' order by 开始时间 desc'`。 + +## 51. src/views/QualityManagement/CheckTask/materialReturn.vue + +**页面位置**:`src/views/QualityManagement/CheckTask/materialReturn.vue` +**所属模块**:QualityManagement / CheckTask +**源码行数**:1346 + +### 页面功能 + +该页面处理原材料退库检验。用户查询退库检验任务,读取 SAP 生产订单辅助信息,录入并更新检验结果。 + +页面可见的操作/字段包括 “查询”、“扫码”、“取 消”、“合格”、“不合格”、“已完成”、“未完成”、“item.label”、“序号”、“单据码”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_原材料退库_查询`、`质量管理_原材料退库检验_更新` 取数或提交业务动作。 + +### 页面流程图 + +质检业务流程: + +```mermaid +flowchart LR + A[选择检验类型/订单/物料/工序] --> B[查询待检任务] + B --> C[查看图纸/字典/检验人员] + C --> D[录入检测数量、合格数、不合格数和检测明细] + D --> E{检验类型} + E --> F[来料/入库/退货检验更新] + E --> G[序检收检新增或更新] + E --> H[终检/首检/特殊检验保存] + F --> I[写入 YL_质量检验_质检记录及明细] + G --> I + H --> I + I --> J[必要时查询/回写 SAP 生产订单或单据] +``` + + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`扫码`、`取 消`、`合格`、`不合格`、`已完成`、`未完成`、`item.label`、`序号`、`单据码`、`生产订单`、`物料名称`、`物料编码`、`到货时间`、`检验数量`、`合格数`、`不合格数`、`批次信息` + +主要方法线索:`startscan` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.orderNo` | `@订单号` | - | +| 参数 | `this.partNo` | `@零件编号` | - | +| 参数 | `this.partName` | `@零件名称` | - | +| 参数 | `this.inspectionDate ? this.inspectionDate[0` | `@检测日期_Start` | - | +| 参数 | `this.inspectionDate ? this.inspectionDate[1` | `@检测日期_End` | - | +| 参数 | `this.taskstatus` | `@状态` | - | +| 参数 | `this.inspectionResult` | `@检测结果` | - | +| 参数 | `this.ordercode` | `@单据码` | - | +| 参数 | `selectedChecker ? selectedChecker.label : ""` | `@检测人` | - | +| 参数 | `5` | `@检测类型编号` | - | +| 参数 | `"退库检验"` | `@质检类型` | - | +| 参数 | `this.receiveCheckData.零件名称` | `@零件名称` | - | +| 参数 | `this.receiveCheckData.零件编码` | `@零件编码` | - | +| 参数 | `this.receiveCheckData.计划号` | `@计划号` | - | +| 参数 | `this.receiveCheckData.送检数量` | `@检测数量` | - | +| 参数 | `this.receiveCheckData.合格数` | `@合格数` | - | +| 参数 | `this.receiveCheckData.不合格数` | `@不合格数` | - | +| 参数 | `this.receiveCheckData.检测人` | `@检测人` | - | +| 参数 | `this.receiveCheckData.检测时间` | `@检测时间` | - | +| 参数 | `this.receiveCheckData.检测说明` | `@检测说明` | - | +| 参数 | `this.receiveCheckData.行号` | `@行号` | - | +| 参数 | `this.receiveCheckData.订单类型` | `@订单类型` | - | +| 参数 | `this.receiveCheckData.检测数量` | `@到货数` | - | +| 参数 | `this.receiveCheckData.放行数量` | `@放行数量` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `单据码` | - | `单据码` | +| 显示列 | `生产订单` | - | `订单编号` | +| 显示列 | `物料名称` | - | `物料名称` | +| 显示列 | `物料编码` | - | `物料编码` | +| 显示列 | `到货时间` | - | `采购到货时间` | +| 显示列 | `检验数量` | - | `入库数量` | +| 显示列 | `合格数` | - | `合格数` | +| 显示列 | `不合格数` | - | `不合格数` | +| 显示列 | `批次信息` | - | `批次信息` | +| 显示列 | `检验人` | - | `检测人` | +| 显示列 | `检验时间` | - | `检验时间` | +| 显示列 | `备注` | - | `备注` | +| 显示列 | `操作` | - | `操作` | +| 输入字段 | `ordercode` | `@单据码` | - | +| 输入字段 | `orderNo` | `@订单号` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- SAP B1 Service Layer(`src/api/b1s.js`) +- TM/OpenAPI 接口(`src/api/tm.js`) +- Excel/报表导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 681 | 11(当前通用存储过程查询/执行) | `查询字典` | 查询/读取数据 | 查询 | 表:`YL_基础表_数据字典` | +| 695 | 11(当前通用存储过程查询/执行) | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 查询、处理质检数据 | 视图:`登录基础数据_管理人员权限视图` | +| 733 | 11(当前通用存储过程查询/执行) | `质量管理_原材料退库_查询` | 查询/读取数据 | 查询、处理质检数据 | 表:`质量检验_质检任务_SAP` | +| 841 | 12(当前通用存储过程写入/业务动作) | `质量管理_原材料退库检验_更新` | 更新/保存业务数据 | 查询、更新、处理质检数据、处理计划/派工 | 表:`YL_质量检验_质检记录`、`质量检验_质检任务_SAP` | + +### 与 SAP 的交互 + +页面直接 SAP/接口调用: +- 第 878 行:`getB1("/ProductionOrders")` +- 第 921 行:`posttm("/stocktask/task/receiptordertask")` + +### SAP 接口级说明 + +| 行号 | 方法 | 接口 | 调用时机/影响判断 | 提交字段线索 | +|---:|---|---|---|---| +| 878 | `getB1` | `/ProductionOrders` | 读取或更新 SAP 生产订单。失败会导致 MES 与 SAP 订单状态/工序资源不同步。 | `filter`、`lines`、`doc_date`、`doc_type`、`external_num`、`target_type`、`task_items`、`base_type`、`item_code`、`item_name`、`whs_code`、`manage_type` | +| 921 | `posttm` | `/stocktask/task/receiptordertask` | 调用外部接口,失败会影响对应外部系统同步。 | `原始数据`、`doc_date`、`doc_type`、`external_num`、`task_items` | + +### 状态流转说明 + +- `人员管理_人员信息查询_质检部门_查询`:`create PROCEDURE [dbo].[人员管理_人员信息查询_质检部门_查询]` +- `质量管理_原材料退库_查询`:`@状态 NVARCHAR(10) = '', `;`IF @状态 ''`;`IF @状态 = '1'`;`ELSE IF @状态 = '0'`;`* from [dbo].[质量检验_质检任务_SAP] '+@WhereConditions+''` +- `质量管理_原材料退库检验_更新`:`@质检类型 NVARCHAR(50), `;`UPDATE [dbo].[质量检验_质检任务_SAP]`;`MERGE INTO [YL_MESDB].[dbo].[YL_质量检验_质检记录] AS target`;`@质检类型 AS 质检类型, `;`target.[质检类型] = source.[质检类型], `;`[质检类型], `;`source.[质检类型], ` + +### 数据库调用链 + +- `src/views/QualityManagement/CheckTask/materialReturn.vue` -> `查询字典` -> 表:`YL_基础表_数据字典` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/materialReturn.vue` -> `人员管理_人员信息查询_质检部门_查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/materialReturn.vue` -> `质量管理_原材料退库_查询` -> 表:`质量检验_质检任务_SAP` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/materialReturn.vue` -> `质量管理_原材料退库检验_更新` -> 表:`YL_质量检验_质检记录`、`质量检验_质检任务_SAP` -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `查询字典` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`YL_基础表_数据字典`。 主要返回字段线索:`*`。 +- `人员管理_人员信息查询_质检部门_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`*`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `质量管理_原材料退库_查询` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:表:`质量检验_质检任务_SAP`。 入参/分页参数:`@订单号 NVARCHAR(100)`、`@零件编号 NVARCHAR(100)`、`@零件名称 NVARCHAR(100)`、`@检测日期_Start NVARCHAR(20)`、`@检测日期_End NVARCHAR(20)`、`@检测结果 NVARCHAR(10)`、`@检测人 NVARCHAR(50)`、`@状态 NVARCHAR(10)`、`@单据码 NVARCHAR(50)`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`SET @WhereConditions = @WhereConditions + ' AND (订单类型 = ''202-60'') '`;`SET @WhereConditions = @WhereConditions + ' AND 单据码 LIKE ''%' + @单据码 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 订单编号 LIKE ''%' + @订单号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 物料编码 LIKE ''%' + @零件编号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 物料名称 LIKE ''%' + @零件名称 + '%'''`;`IF @检测日期_Start '' AND @检测日期_End ''`;`SET @WhereConditions = @WhereConditions + ' AND CONVERT(DATE, 检验时间) BETWEEN ''' + @检测日期_Start + ''' AND ''' + @检测日期_End + ''''`;`SET @WhereConditions = @WhereConditions + ' AND (合格数 > 0 AND 不合格数 = 0)'`;`SET @WhereConditions = @WhereConditions + ' AND ( 不合格数 > 0)'`;`SET @WhereConditions = @WhereConditions + ' AND (ISNULL(合格数, 0) + ISNULL(不合格数, 0) = ISNULL(到货数, 0)) AND ISNULL(到货数, 0) 0'`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @WhereConditions = @WhereConditions + ' AND (订单类型 = ''202-60'') '`;`SET @WhereConditions = @WhereConditions + ' AND 单据码 LIKE ''%' + @单据码 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 订单编号 LIKE ''%' + @订单号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 物料编码 LIKE ''%' + @零件编号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 物料名称 LIKE ''%' + @零件名称 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND CONVERT(DATE, 检验时间) BETWEEN ''' + @检测日期_Start + ''' AND ''' + @检测日期_End + ''''`;`SET @WhereConditions = @WhereConditions + ' AND (合格数 > 0 AND 不合格数 = 0)'`;`SET @WhereConditions = @WhereConditions + ' AND ( 不合格数 > 0)'`;`SET @WhereConditions = @WhereConditions + ' AND (ISNULL(合格数, 0) + ISNULL(不合格数, 0) = ISNULL(到货数, 0)) AND ISNULL(到货数, 0) 0'`;`SET @WhereConditions = @WhereConditions + ' AND (ISNULL(合格数, 0) + ISNULL(不合格数, 0) < ISNULL(到货数, 入库数量)) '`;`SET @WhereConditions = @WhereConditions + ' AND ISNULL( 检测人, '''') LIKE ''%' + @检测人 + '%'''`。 +- `质量管理_原材料退库检验_更新` 属于 生产执行/工时,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、更新、处理质检数据、处理计划/派工。 读取/关联对象:表:`YL_质量检验_质检记录`、`质量检验_质检任务_SAP`。 写入或更新对象:`质量检验_质检任务_SAP`。 入参/分页参数:`@检测类型编号 int,`、`@质检类型 NVARCHAR(50),`、`@零件名称 NVARCHAR(200),`、`@零件编码 NVARCHAR(200),`、`@计划号 int,`、`@检测数量 decimal(18,`、`@合格数 decimal(18,`、`@不合格数 decimal(18,`、`@检测人 NVARCHAR(50),`、`@检测时间 DATETIME,`、`@检测说明 NVARCHAR(MAX),`、`@行号 int,`、`@订单类型 NVARCHAR(50),`、`@到货数 decimal(18,`、`@放行数量 int`。 关键过滤/匹配条件:`WHERE 订单编号 = @计划号 AND 行号 = @行号 and 订单类型 = @订单类型`;`ON (target.[零件编码] = source.[零件编码] AND target.[计划号] = source.[计划号] and target.行号 = source.行号 )`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`UPDATE [dbo].[质量检验_质检任务_SAP]`;`SET 合格数 = @合格数, `;`MERGE INTO [YL_MESDB].[dbo].[YL_质量检验_质检记录] AS target`;`UPDATE SET`。 + +## 52. src/views/QualityManagement/CheckTask/processReceive.vue + +**页面位置**:`src/views/QualityManagement/CheckTask/processReceive.vue` +**所属模块**:QualityManagement / CheckTask +**源码行数**:1199 + +### 页面功能 + +该页面处理序检收检。质检人员接收工序检验任务,查询加急和字典信息,读取 SAP 工序状态,新增序检收检记录。 + +页面可见的操作/字段包括 “查询”、“导出 -->”、“取 消”、“关闭”、“装配”、“机加”、“全部”、“合格”、“不合格”、“item.label”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `工艺管理_图纸维护_查看图纸`、`加急订单_加急明细查询`、`查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_质量检验_收检记录_查询`、`质量管理_序检收检_新增` 取数或提交业务动作。 + +### 页面流程图 + +质检业务流程: + +```mermaid +flowchart LR + A[选择检验类型/订单/物料/工序] --> B[查询待检任务] + B --> C[查看图纸/字典/检验人员] + C --> D[录入检测数量、合格数、不合格数和检测明细] + D --> E{检验类型} + E --> F[来料/入库/退货检验更新] + E --> G[序检收检新增或更新] + E --> H[终检/首检/特殊检验保存] + F --> I[写入 YL_质量检验_质检记录及明细] + G --> I + H --> I + I --> J[必要时查询/回写 SAP 生产订单或单据] +``` + + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`导出 -->`、`取 消`、`关闭`、`装配`、`机加`、`全部`、`合格`、`不合格`、`item.label`、`已完成`、`未完成`、`序号`、`销售订单`、`生产订单`、`物料名称`、`物料编码`、`工序名称` + +主要方法线索:`getitemdraw`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `row.零件编码` | `@物料编号` | - | +| 参数 | `this.contractNo` | `@合同号` | - | +| 参数 | `this.orderNo` | `@订单号` | - | +| 参数 | `this.partNo` | `@零件编号` | - | +| 参数 | `this.partName` | `@零件名称` | - | +| 参数 | `this.completionTime ? this.completionTime[0` | `@完工日期_Start` | - | +| 参数 | `this.completionTime ? this.completionTime[1` | `@完工日期_End` | - | +| 参数 | `this.inspectionDate ? this.inspectionDate[0` | `@检测日期_Start` | - | +| 参数 | `this.inspectionDate ? this.inspectionDate[1` | `@检测日期_End` | - | +| 参数 | `this.inspectionResult` | `@检测结果` | - | +| 参数 | `selectedChecker ? selectedChecker.label : ""` | `@检测人` | `MAX(检测人) AS 检测人, ` | +| 参数 | `this.type` | `@检测类别` | - | +| 参数 | `this.checkstatus` | `@检测状态` | - | +| 参数 | `this.attribute` | `@属性` | - | +| 参数 | `this.receiveCheckData.TaskAID ` | `@TaskAID` | - | +| 参数 | `6` | `@检测类型编号` | - | +| 参数 | `"收检"` | `@质检类型` | - | +| 参数 | `this.receiveCheckData.零件名称` | `@零件名称` | - | +| 参数 | `this.receiveCheckData.内部合同号` | `@内部合同号` | - | +| 参数 | `this.receiveCheckData.零件编码` | `@零件编码` | - | +| 参数 | `this.receiveCheckData.计划号` | `@计划号` | - | +| 参数 | `this.receiveCheckData.工序名称` | `@工序名称` | - | +| 参数 | `this.receiveCheckData.检测数量` | `@检测数量` | - | +| 参数 | `this.receiveCheckData.合格数` | `@合格数` | - | +| 参数 | `this.receiveCheckData.不合格数` | `@不合格数` | - | +| 参数 | `this.receiveCheckData.检测人` | `@检测人` | `MAX(检测人) AS 检测人, ` | +| 参数 | `this.receiveCheckData.检测时间` | `@检测时间` | - | +| 参数 | `this.receiveCheckData.检测说明` | `@检测说明` | - | +| 参数 | `this.receiveCheckData.放行数量` | `@放行数量` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `销售订单` | - | `合同号` | +| 显示列 | `生产订单` | - | `计划号` | +| 显示列 | `物料名称` | - | `零件名称` | +| 显示列 | `物料编码` | - | `零件编码` | +| 显示列 | `工序名称` | - | `工序名称` | +| 显示列 | `工位名称` | - | `工位名称` | +| 显示列 | `加急数量` | - | `docentry as 订单编号, itemcode as 物料编号, 加急数量` | +| 显示列 | `完成数量` | - | `完成数量` | +| 显示列 | `检验数量` | - | `SUM(检验数量) AS 检验数量, ` | +| 显示列 | `检验合格数量` | - | `SUM(合格数) AS 合格数, ` | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- SAP B1 Service Layer(`src/api/b1s.js`) +- PDF/图纸预览或导出 +- Excel/报表导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 578 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_零件图纸` | +| 619 | 11(当前通用存储过程查询/执行) | `加急订单_加急明细查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象、处理计划/派工 | 表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` | +| 626 | 11(当前通用存储过程查询/执行) | `查询字典` | 查询/读取数据 | 查询 | 表:`YL_基础表_数据字典` | +| 640 | 11(当前通用存储过程查询/执行) | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 查询、处理质检数据 | 视图:`登录基础数据_管理人员权限视图` | +| 697 | 11(当前通用存储过程查询/执行) | `质量管理_质量检验_收检记录_查询` | 查询/读取数据 | 查询、处理质检数据、处理计划/派工 | 表:`YL_加工中心_操作记录表`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 898 | 12(当前通用存储过程写入/业务动作) | `质量管理_序检收检_新增` | 新增业务数据 | 查询、新增、更新、处理质检数据、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录` | + +### 与 SAP 的交互 + +页面直接 SAP/接口调用: +- 第 820 行:`postB1("/QueryService_PostQuery")` +- 第 842 行:`postB1("/PurchaseDeliveryNotes")` +存储过程内读取 SAP B1 数据库对象: +- 加急订单_加急明细查询: SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL + +### SAP 接口级说明 + +| 行号 | 方法 | 接口 | 调用时机/影响判断 | 提交字段线索 | +|---:|---|---|---|---| +| 820 | `postB1` | `/QueryService_PostQuery` | 调用外部接口,失败会影响对应外部系统同步。 | `QueryPath`、`QueryOption` | +| 842 | `postB1` | `/PurchaseDeliveryNotes` | 调用外部接口,失败会影响对应外部系统同步。 | `CardCode`、`CardName`、`DocDate`、`DocumentLines`、`BaseEntry`、`BaseLine`、`BaseType`、`Quantity`、`U_WWPassedQty` | + +### 状态流转说明 + +- `加急订单_加急明细查询`:`SELECT docentry as 订单编号, itemcode as 物料编号, 加急数量 from SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` +- `人员管理_人员信息查询_质检部门_查询`:`create PROCEDURE [dbo].[人员管理_人员信息查询_质检部门_查询]` +- `质量管理_质量检验_收检记录_查询`:`@检测状态 NVARCHAR(50) = '', `;`DECLARE @WhereConditions NVARCHAR(MAX) = ' and v.单据状态 is null '`;`IF @检测状态 = 1`;`SET @WhereConditions = @WhereConditions + ' AND (ISNULL(q.检验数量, 0)) = (ISNULL(o.完成数量, 0))'`;`IF @检测状态 = 0`;`SET @WhereConditions = @WhereConditions + ' AND (ISNULL(q.检验数量, 0)) < (ISNULL(o.完成数量, 0))'`;`IF @检测状态 = 2`;`FROM [dbo].[YL_质量检验_质检记录]` +- `质量管理_序检收检_新增`:`@质检类型 NVARCHAR(50), `;`DECLARE @已完成检测数量 int`;`select @计划数量 = 计划数量 from [dbo].[MES_接口_生产计划_生产任务] where AID = @TaskAID`;`select @已完成检测数量 = sum(检验数量) from YL_质量检验_质检记录 where [TaskAID] = @TaskAID and 质检类型 = '收检'`;`set @最新检测数量 = @检测数量 + isnull(@已完成检测数量, 0)`;`INSERT INTO [YL_MESDB].[dbo].[YL_质量检验_质检记录] (`;`[质检类型], `;`@质检类型, ` + +### 数据库调用链 + +- `src/views/QualityManagement/CheckTask/processReceive.vue` -> `工艺管理_图纸维护_查看图纸` -> 表:`物料基础数据_零件图纸` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/processReceive.vue` -> `加急订单_加急明细查询` -> 表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/processReceive.vue` -> `查询字典` -> 表:`YL_基础表_数据字典` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/processReceive.vue` -> `人员管理_人员信息查询_质检部门_查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/processReceive.vue` -> `质量管理_质量检验_收检记录_查询` -> 表:`YL_加工中心_操作记录表`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/processReceive.vue` -> `质量管理_序检收检_新增` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录` -> 新增业务数据 + +### 存储过程处理逻辑明细 + +- `工艺管理_图纸维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_零件图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`、`worker`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `加急订单_加急明细查询` 属于 加急任务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL`。 入参/分页参数:`@物料编号 nvarchar(50)`。 主要返回字段线索:`docentry as 订单编号, itemcode as 物料编号, 加急数量`。 关键过滤/匹配条件:`where itemcode = @物料编号`。 实现特征:读取 SAP 数据库对象。 +- `查询字典` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`YL_基础表_数据字典`。 主要返回字段线索:`*`。 +- `人员管理_人员信息查询_质检部门_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`*`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `质量管理_质量检验_收检记录_查询` 属于 质量检验,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据、处理计划/派工。 读取/关联对象:表:`YL_加工中心_操作记录表`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@合同号 NVARCHAR(100)`、`@订单号 NVARCHAR(100)`、`@零件编号 NVARCHAR(100)`、`@零件名称 NVARCHAR(100)`、`@完工日期_Start NVARCHAR(20)`、`@完工日期_End NVARCHAR(20)`、`@检测日期_Start NVARCHAR(20)`、`@检测日期_End NVARCHAR(20)`、`@检测结果 NVARCHAR(10)`、`@检测人 NVARCHAR(50)`、`@检测类别 NVARCHAR(50)`、`@检测状态 NVARCHAR(50)`、`@属性 NVARCHAR(50)`。 主要返回字段线索:`TaskAID, `、`SUM(检验数量) AS 检验数量, `、`SUM(合格数) AS 合格数, `、`SUM(不合格数) AS 不合格数, `、`MAX(检测人) AS 检测人, `、`MAX(检测时间) AS 检测时间, `、`MAX(检测说明) AS 检测说明`。 关键过滤/匹配条件:`DECLARE @WhereConditions NVARCHAR(MAX) = ' and v.单据状态 is null '`;`SET @WhereConditions = @WhereConditions + ' AND o.订单编号 = '+ @订单号 +''`;`SET @WhereConditions = @WhereConditions + ' AND v.[合同号] LIKE ''%' + @合同号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND o.物料编号 LIKE ''%' + @零件编号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND o.物料描述 LIKE ''%' + @零件名称 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND (q.合格数 > 0 AND q.不合格数 = 0)'`;`SET @WhereConditions = @WhereConditions + ' AND (q.不合格数 > 0)'`;`SET @WhereConditions = @WhereConditions + ' AND (ISNULL(q.检验数量, 0)) = (ISNULL(o.完成数量, 0))'`;`SET @WhereConditions = @WhereConditions + ' AND (ISNULL(q.检验数量, 0)) < (ISNULL(o.完成数量, 0))'`;`SET @WhereConditions = @WhereConditions + ' AND 自制件属性 NOT LIKE ''%装配%'''`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @WhereConditions = @WhereConditions + ' AND o.订单编号 = '+ @订单号 +''`;`SET @WhereConditions = @WhereConditions + ' AND v.[合同号] LIKE ''%' + @合同号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND o.物料编号 LIKE ''%' + @零件编号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND o.物料描述 LIKE ''%' + @零件名称 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND (q.合格数 > 0 AND q.不合格数 = 0)'`;`SET @WhereConditions = @WhereConditions + ' AND (q.不合格数 > 0)'`;`SET @WhereConditions = @WhereConditions + ' AND (ISNULL(q.检验数量, 0)) = (ISNULL(o.完成数量, 0))'`;`SET @WhereConditions = @WhereConditions + ' AND (ISNULL(q.检验数量, 0)) < (ISNULL(o.完成数量, 0))'`;`SET @WhereConditions = @WhereConditions`;`SET @WhereConditions = @WhereConditions + ' AND 自制件属性 NOT LIKE ''%装配%'''`;`SET @WhereConditions = @WhereConditions + ' AND 自制件属性 LIKE ''%装配%'''`。 排序/分组/分页线索:`GROUP BY TaskAID`;`GROUP BY`;`ORDER BY o.订单编号 desc'`。 +- `质量管理_序检收检_新增` 属于 质量检验,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 新增业务数据。 数据库处理摘要:查询、新增、更新、处理质检数据、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID bigint,`、`@检测类型编号 int,`、`@质检类型 NVARCHAR(50),`、`@零件名称 NVARCHAR(200),`、`@内部合同号 int,`、`@零件编码 NVARCHAR(200),`、`@计划号 int,`、`@工序名称 NVARCHAR(100),`、`@检测数量 INT,`、`@合格数 INT,`、`@不合格数 INT,`、`@检测人 NVARCHAR(50),`、`@检测时间 DATETIME,`、`@检测说明 NVARCHAR(MAX),`、`@放行数量 INT`。 主要返回字段线索:`@计划数量 = 计划数量`。 关键过滤/匹配条件:`select @计划数量 = 计划数量 from [dbo].[MES_接口_生产计划_生产任务] where AID = @TaskAID`;`select @已完成检测数量 = sum(检验数量) from YL_质量检验_质检记录 where [TaskAID] = @TaskAID and 质检类型 = '收检'`;`WHERE AID = @TaskAID`;`WHERE 订单编号 = @计划号`;`AND 订单行号 = @当前订单行号 + 1`;`AND ISNULL(订单拆分内码, 1) = 1`;`WHERE AID = @下一道工序AID`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`set @最新检测数量 = @检测数量 + isnull(@已完成检测数量, 0)`;`INSERT INTO [YL_MESDB].[dbo].[YL_质量检验_质检记录] (`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET 任务状态 = 1`。 实现特征:事务控制、异常捕获。 + +## 53. src/views/QualityManagement/CheckTask/processSpecial.vue + +**页面位置**:`src/views/QualityManagement/CheckTask/processSpecial.vue` +**所属模块**:QualityManagement / CheckTask +**源码行数**:65 + +### 页面功能 + +该页面处理过程/特殊检验。用户按工序任务录入特殊检验结果和检测明细。 + +### 页面流程图 + +质检业务流程: + +```mermaid +flowchart LR + A[选择检验类型/订单/物料/工序] --> B[查询待检任务] + B --> C[查看图纸/字典/检验人员] + C --> D[录入检测数量、合格数、不合格数和检测明细] + D --> E{检验类型} + E --> F[来料/入库/退货检验更新] + E --> G[序检收检新增或更新] + E --> H[终检/首检/特殊检验保存] + F --> I[写入 YL_质量检验_质检记录及明细] + G --> I + H --> I + I --> J[必要时查询/回写 SAP 生产订单或单据] +``` + + +### 用户操作与页面线索 + +可见按钮/字段线索:无 + +主要方法线索:无 + +### 字段映射表 + +未从页面模板中抽取到明确的 `v-model`、表格列或 `param.push` 字段映射。 + +### 技术路线 + +- Vue 2 Options API +- Element UI +- 未发现页面级后端存储过程调用 + +### 调用的存储过程总览 + +未发现 `CreateData(...)` 存储过程调用。 + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +无数据库调用链。 + +### 存储过程处理逻辑明细 + +无页面级存储过程调用。 + +## 54. src/views/QualityManagement/CheckTask/purchaseIncoming.vue + +**页面位置**:`src/views/QualityManagement/CheckTask/purchaseIncoming.vue` +**所属模块**:QualityManagement / CheckTask +**源码行数**:1335 + +### 页面功能 + +该页面处理采购/来料检验。质检人员查询待检任务,查看图纸、字典和检验人员,录入合格数、不合格数、检测数据,调用过程更新来料检验结果。 + +页面可见的操作/字段包括 “查询”、“取 消”、“关闭”、“合格”、“不合格”、“已完成”、“未完成”、“item.label”、“序号”、“单据码”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `加急订单_加急明细查询`、`工艺管理_图纸维护_查看图纸`、`查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_质量检验_入库质检任务_查询`、`质量管理_来料检验_更新` 取数或提交业务动作。 + +### 页面流程图 + +质检业务流程: + +```mermaid +flowchart LR + A[选择检验类型/订单/物料/工序] --> B[查询待检任务] + B --> C[查看图纸/字典/检验人员] + C --> D[录入检测数量、合格数、不合格数和检测明细] + D --> E{检验类型} + E --> F[来料/入库/退货检验更新] + E --> G[序检收检新增或更新] + E --> H[终检/首检/特殊检验保存] + F --> I[写入 YL_质量检验_质检记录及明细] + G --> I + H --> I + I --> J[必要时查询/回写 SAP 生产订单或单据] +``` + + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`取 消`、`关闭`、`合格`、`不合格`、`已完成`、`未完成`、`item.label`、`序号`、`单据码`、`生产订单`、`物料名称`、`物料编码`、`到货时间`、`位置`、`加急数量`、`到货数量`、`已检验数量` + +主要方法线索:`Urgent` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `row.物料编码` | `@物料编号` | `docentry as 订单编号, itemcode as 物料编号, 加急数量` | +| 参数 | `this.orderNo` | `@订单号` | - | +| 参数 | `this.partNo` | `@零件编号` | - | +| 参数 | `this.partName` | `@零件名称` | - | +| 参数 | `this.inspectionDate ? this.inspectionDate[0` | `@检测日期_Start` | - | +| 参数 | `this.inspectionDate ? this.inspectionDate[1` | `@检测日期_End` | - | +| 参数 | `this.taskstatus` | `@状态` | - | +| 参数 | `this.inspectionResult` | `@检测结果` | - | +| 参数 | `this.ordercode` | `@单据码` | - | +| 参数 | `selectedChecker ? selectedChecker.label : ""` | `@检测人` | `检测人, ` | +| 参数 | `5` | `@检测类型编号` | - | +| 参数 | `"来料检验"` | `@质检类型` | - | +| 参数 | `this.receiveCheckData.零件名称` | `@零件名称` | - | +| 参数 | `this.receiveCheckData.零件编码` | `@零件编码` | - | +| 参数 | `this.receiveCheckData.计划号` | `@计划号` | - | +| 参数 | `this.receiveCheckData.本次检验数量` | `@检测数量` | - | +| 参数 | `this.receiveCheckData.合格数` | `@合格数` | - | +| 参数 | `this.receiveCheckData.不合格数` | `@不合格数` | - | +| 参数 | `this.receiveCheckData.检测人` | `@检测人` | `检测人, ` | +| 参数 | `this.receiveCheckData.检测时间` | `@检测时间` | - | +| 参数 | `this.receiveCheckData.检测说明` | `@检测说明` | - | +| 参数 | `this.receiveCheckData.行号` | `@行号` | - | +| 参数 | `this.receiveCheckData.订单类型` | `@订单类型` | - | +| 参数 | `this.receiveCheckData.到货总数` | `@到货数` | - | +| 参数 | `this.receiveCheckData.放行数量` | `@放行数量` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `单据码` | - | `单据码` | +| 显示列 | `生产订单` | - | `计划号, ` | +| 显示列 | `物料名称` | - | `物料名称` | +| 显示列 | `物料编码` | - | `物料编码` | +| 显示列 | `到货时间` | - | `采购到货时间` | +| 显示列 | `位置` | - | `存放位置` | +| 显示列 | `加急数量` | - | `docentry as 订单编号, itemcode as 物料编号, 加急数量` | +| 显示列 | `到货数量` | - | `入库数量` | +| 显示列 | `已检验数量` | - | `已检验数量` | +| 显示列 | `剩余待检` | - | `剩余待检数量` | +| 显示列 | `合格数` | - | `合格数, ` | +| 显示列 | `不合格数` | - | `不合格数, ` | +| 显示列 | `检验人` | - | `检测人, ` | +| 显示列 | `检验时间` | - | `检验时间` | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- PDF/图纸预览或导出 +- Excel/报表导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 626 | 11(当前通用存储过程查询/执行) | `加急订单_加急明细查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象、处理计划/派工 | 表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` | +| 634 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_零件图纸` | +| 782 | 11(当前通用存储过程查询/执行) | `查询字典` | 查询/读取数据 | 查询 | 表:`YL_基础表_数据字典` | +| 796 | 11(当前通用存储过程查询/执行) | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 查询、处理质检数据 | 视图:`登录基础数据_管理人员权限视图` | +| 842 | 11(当前通用存储过程查询/执行) | `质量管理_质量检验_入库质检任务_查询` | 查询/读取数据 | 查询、处理质检数据、处理计划/派工 | 表:`YL_质量检验_质检记录`、`质量检验_质检任务_SAP` | +| 990 | 12(当前通用存储过程写入/业务动作) | `质量管理_来料检验_更新` | 更新/保存业务数据 | 查询、新增、更新、处理质检数据、处理计划/派工 | 表:`YL_质量检验_质检记录`、`质量检验_质检任务_SAP` | + +### 与 SAP 的交互 + +存储过程内读取 SAP B1 数据库对象: +- 加急订单_加急明细查询: SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `加急订单_加急明细查询`:`SELECT docentry as 订单编号, itemcode as 物料编号, 加急数量 from SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` +- `人员管理_人员信息查询_质检部门_查询`:`create PROCEDURE [dbo].[人员管理_人员信息查询_质检部门_查询]` +- `质量管理_质量检验_入库质检任务_查询`:`CREATE PROCEDURE [dbo].[质量管理_质量检验_入库质检任务_查询]`;`@状态 NVARCHAR(10) = '', `;`IF @状态 ''`;`SET @OuterWhere = @OuterWhere + ' AND 状态 = ''' + @状态 + ''''`;`FROM [dbo].[YL_质量检验_质检记录]`;`订单类型 AS 质检订单类型, `;`task.加急状态, `;`END AS 状态` +- `质量管理_来料检验_更新`:`@质检类型 NVARCHAR(50), `;`UPDATE [dbo].[质量检验_质检任务_SAP]`;`INSERT INTO [YL_MESDB].[dbo].[YL_质量检验_质检记录] (`;`[质检类型], `;`@质检类型, ` + +### 数据库调用链 + +- `src/views/QualityManagement/CheckTask/purchaseIncoming.vue` -> `加急订单_加急明细查询` -> 表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/purchaseIncoming.vue` -> `工艺管理_图纸维护_查看图纸` -> 表:`物料基础数据_零件图纸` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/purchaseIncoming.vue` -> `查询字典` -> 表:`YL_基础表_数据字典` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/purchaseIncoming.vue` -> `人员管理_人员信息查询_质检部门_查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/purchaseIncoming.vue` -> `质量管理_质量检验_入库质检任务_查询` -> 表:`YL_质量检验_质检记录`、`质量检验_质检任务_SAP` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/purchaseIncoming.vue` -> `质量管理_来料检验_更新` -> 表:`YL_质量检验_质检记录`、`质量检验_质检任务_SAP` -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `加急订单_加急明细查询` 属于 加急任务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL`。 入参/分页参数:`@物料编号 nvarchar(50)`。 主要返回字段线索:`docentry as 订单编号, itemcode as 物料编号, 加急数量`。 关键过滤/匹配条件:`where itemcode = @物料编号`。 实现特征:读取 SAP 数据库对象。 +- `工艺管理_图纸维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_零件图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`、`worker`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `查询字典` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`YL_基础表_数据字典`。 主要返回字段线索:`*`。 +- `人员管理_人员信息查询_质检部门_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`*`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `质量管理_质量检验_入库质检任务_查询` 属于 质量检验,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据、处理计划/派工。 读取/关联对象:表:`YL_质量检验_质检记录`、`质量检验_质检任务_SAP`。 入参/分页参数:`@订单号 NVARCHAR(100)`、`@零件编号 NVARCHAR(100)`、`@零件名称 NVARCHAR(100)`、`@检测日期_Start NVARCHAR(20)`、`@检测日期_End NVARCHAR(20)`、`@检测结果 NVARCHAR(10)`、`@检测人 NVARCHAR(50)`、`@状态 NVARCHAR(10)`、`@单据码 NVARCHAR(50)`。 主要返回字段线索:`计划号, `、`检验数量, `、`合格数, `、`不合格数, `、`检测人, `、`检测时间, `、`6 AS 检测类型编号`。 关键过滤/匹配条件:`SET @TaskWhere = @TaskWhere + ' AND (task.订单类型 = ''20'') '`;`SET @TaskWhere = @TaskWhere + ' AND task.单据码 LIKE ''%' + @单据码 + '%'''`;`SET @TaskWhere = @TaskWhere + ' AND task.订单编号 LIKE ''%' + @订单号 + '%'''`;`SET @TaskWhere = @TaskWhere + ' AND task.物料编码 LIKE ''%' + @零件编号 + '%'''`;`SET @TaskWhere = @TaskWhere + ' AND task.物料名称 LIKE ''%' + @零件名称 + '%'''`;`SET @OuterWhere = @OuterWhere + ' AND 检测结果 = ' + @检测结果`;`SET @OuterWhere = @OuterWhere + ' AND 状态 = ''' + @状态 + ''''`;`SET @OuterWhere = @OuterWhere + ' AND 检测人 LIKE ''%' + @检测人 + '%'''`;`IF @检测日期_Start '' AND @检测日期_End ''`;`SET @OuterWhere = @OuterWhere + ' AND CAST(检验时间 AS DATE) BETWEEN ''' + @检测日期_Start + ''' AND ''' + @检测日期_End + ''''`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @TaskWhere = @TaskWhere + ' AND (task.订单类型 = ''20'') '`;`SET @TaskWhere = @TaskWhere + ' AND task.单据码 LIKE ''%' + @单据码 + '%'''`;`SET @TaskWhere = @TaskWhere + ' AND task.订单编号 LIKE ''%' + @订单号 + '%'''`;`SET @TaskWhere = @TaskWhere + ' AND task.物料编码 LIKE ''%' + @零件编号 + '%'''`;`SET @TaskWhere = @TaskWhere + ' AND task.物料名称 LIKE ''%' + @零件名称 + '%'''`;`SET @OuterWhere = @OuterWhere + ' AND 检测结果 = ' + @检测结果`;`SET @OuterWhere = @OuterWhere + ' AND 状态 = ''' + @状态 + ''''`;`SET @OuterWhere = @OuterWhere + ' AND 检测人 LIKE ''%' + @检测人 + '%'''`;`SET @OuterWhere = @OuterWhere + ' AND CAST(检验时间 AS DATE) BETWEEN ''' + @检测日期_Start + ''' AND ''' + @检测日期_End + ''''`;`SET @InnerWhere = ' WHERE ' + SUBSTRING(@TaskWhere, 5, LEN(@TaskWhere))`;`SET @SQL = '`。 排序/分组/分页线索:`GROUP BY 计划号, 行号, 订单类型`;`GROUP BY task.订单编号, task.单据码, task.订单类型, task.物料编码, task.物料名称, task.到货数, task.入库数量, task.加急状态, task.行号, task.采购到货时间, task.存放位置, task.加急总数, cq.已检验数量, cq.累计合格数, cq.累计不合格数`;`ORDER BY 加急状态 DESC'`。 +- `质量管理_来料检验_更新` 属于 质量检验,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新、处理质检数据、处理计划/派工。 读取/关联对象:表:`YL_质量检验_质检记录`、`质量检验_质检任务_SAP`。 写入或更新对象:`质量检验_质检任务_SAP`。 入参/分页参数:`@检测类型编号 int,`、`@质检类型 NVARCHAR(50),`、`@零件名称 NVARCHAR(200),`、`@零件编码 NVARCHAR(200),`、`@计划号 int,`、`@检测数量 decimal(18,`、`@合格数 decimal(18,`、`@不合格数 decimal(18,`、`@检测人 NVARCHAR(50),`、`@检测时间 DATETIME,`、`@检测说明 NVARCHAR(MAX),`、`@行号 int,`、`@订单类型 NVARCHAR(50),`、`@到货数 decimal(18,`、`@放行数量 int`。 关键过滤/匹配条件:`WHERE 订单编号 = @计划号 AND 行号 = @行号 AND 订单类型 = @订单类型`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`UPDATE [dbo].[质量检验_质检任务_SAP]`;`SET 合格数 = ISNULL(合格数, 0) + @合格数, `;`INSERT INTO [YL_MESDB].[dbo].[YL_质量检验_质检记录] (`。 + +## 55. src/views/QualityManagement/CheckTask/salesReturn.vue + +**页面位置**:`src/views/QualityManagement/CheckTask/salesReturn.vue` +**所属模块**:QualityManagement / CheckTask +**源码行数**:830 + +### 页面功能 + +该页面处理销售退货检验。用户查询销售退货待检任务,录入检验结果并更新质检记录。 + +页面可见的操作/字段包括 “查询”、“取 消”、“合格”、“不合格”、“item.label”、“序号”、“生产订单”、“物料名称”、“物料编码”、“采购数”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_质量检验_退货质检任务_查询`、`质量管理_销售退货检_更新` 取数或提交业务动作。 + +### 页面流程图 + +质检业务流程: + +```mermaid +flowchart LR + A[选择检验类型/订单/物料/工序] --> B[查询待检任务] + B --> C[查看图纸/字典/检验人员] + C --> D[录入检测数量、合格数、不合格数和检测明细] + D --> E{检验类型} + E --> F[来料/入库/退货检验更新] + E --> G[序检收检新增或更新] + E --> H[终检/首检/特殊检验保存] + F --> I[写入 YL_质量检验_质检记录及明细] + G --> I + H --> I + I --> J[必要时查询/回写 SAP 生产订单或单据] +``` + + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`取 消`、`合格`、`不合格`、`item.label`、`序号`、`生产订单`、`物料名称`、`物料编码`、`采购数`、`检验数量`、`合格数`、`不合格数`、`检验人`、`检验时间`、`备注`、`操作`、`请输入生产订单` + +主要方法线索:`getTypeList`、`for`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.orderNo` | `@订单号` | - | +| 参数 | `this.partNo` | `@零件编号` | - | +| 参数 | `this.partName` | `@零件名称` | - | +| 参数 | `this.inspectionDate ? this.inspectionDate[0` | `@检测日期_Start` | - | +| 参数 | `this.inspectionDate ? this.inspectionDate[1` | `@检测日期_End` | - | +| 参数 | `this.inspectionResult` | `@检测结果` | - | +| 参数 | `selectedChecker ? selectedChecker.label : ""` | `@检测人` | - | +| 参数 | `5` | `@检测类型编号` | - | +| 参数 | `"来料检验"` | `@质检类型` | - | +| 参数 | `this.receiveCheckData.零件名称` | `@零件名称` | - | +| 参数 | `this.receiveCheckData.零件编码` | `@零件编码` | - | +| 参数 | `this.receiveCheckData.计划号` | `@计划号` | - | +| 参数 | `this.receiveCheckData.检测数量` | `@检测数量` | - | +| 参数 | `this.receiveCheckData.合格数` | `@合格数` | - | +| 参数 | `this.receiveCheckData.不合格数` | `@不合格数` | - | +| 参数 | `this.receiveCheckData.检测人` | `@检测人` | - | +| 参数 | `this.receiveCheckData.检测时间` | `@检测时间` | - | +| 参数 | `this.receiveCheckData.检测说明` | `@检测说明` | - | +| 参数 | `this.receiveCheckData.行号` | `@行号` | - | +| 参数 | `this.receiveCheckData.订单类型` | `@订单类型` | - | +| 参数 | `this.formatDate(this.currentTime)` | `@doc_date` | - | +| 参数 | `"202-59"` | `@doc_type` | - | +| 参数 | `this.receiveCheckData.计划号` | `@external_num` | - | +| 参数 | `param2` | `@task_items` | - | +| 参数 | `"202"` | `@base_type` | - | +| 参数 | `this.receiveCheckData.零件编码` | `@item_code` | - | +| 参数 | `this.receiveCheckData.零件名称` | `@item_name` | - | +| 参数 | `""` | `@whs_code` | - | +| 参数 | `'B'` | `@manage_type` | - | +| 参数 | `0` | `@price` | - | +| 参数 | `this.receiveCheckData.合格数` | `@quantity` | - | +| 参数 | `this.receiveCheckData.行号` | `@base_line_num` | - | +| 参数 | `this.receiveCheckData.计划号` | `@base_entry` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `生产订单` | - | `订单编号` | +| 显示列 | `物料名称` | - | `物料名称` | +| 显示列 | `物料编码` | - | `物料编码` | +| 显示列 | `采购数` | - | `计划生产数` | +| 显示列 | `检验数量` | - | `入库数量` | +| 显示列 | `合格数` | - | `合格数` | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- SAP B1 Service Layer(`src/api/b1s.js`) +- TM/OpenAPI 接口(`src/api/tm.js`) +- Excel/报表导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 421 | 11(当前通用存储过程查询/执行) | `查询字典` | 查询/读取数据 | 查询 | 表:`YL_基础表_数据字典` | +| 435 | 11(当前通用存储过程查询/执行) | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 查询、处理质检数据 | 视图:`登录基础数据_管理人员权限视图` | +| 472 | 11(当前通用存储过程查询/执行) | `质量管理_质量检验_退货质检任务_查询` | 查询/读取数据 | 查询、处理质检数据 | 表:`质量检验_质检任务_SAP` | +| 577 | 12(当前通用存储过程写入/业务动作) | `质量管理_销售退货检_更新` | 更新/保存业务数据 | 查询、更新、处理质检数据、处理计划/派工 | 表:`YL_质量检验_质检记录`、`质量检验_质检任务_SAP` | + +### 与 SAP 的交互 + +页面直接 SAP/接口调用: +- 第 623 行:`posttm("/stocktask/task/issueordertask")` + +### SAP 接口级说明 + +| 行号 | 方法 | 接口 | 调用时机/影响判断 | 提交字段线索 | +|---:|---|---|---|---| +| 623 | `posttm` | `/stocktask/task/issueordertask` | 调用外部接口,失败会影响对应外部系统同步。 | `原始数据`、`doc_date`、`doc_type`、`external_num`、`task_items` | + +### 状态流转说明 + +- `人员管理_人员信息查询_质检部门_查询`:`create PROCEDURE [dbo].[人员管理_人员信息查询_质检部门_查询]` +- `质量管理_质量检验_退货质检任务_查询`:`CREATE PROCEDURE [dbo].[质量管理_质量检验_退货质检任务_查询]`;`* from [dbo].[质量检验_质检任务_SAP] '+@WhereConditions+''` +- `质量管理_销售退货检_更新`:`@质检类型 NVARCHAR(50), `;`UPDATE [dbo].[质量检验_质检任务_SAP]`;`MERGE INTO [YL_MESDB].[dbo].[YL_质量检验_质检记录] AS target`;`@质检类型 AS 质检类型, `;`target.[质检类型] = source.[质检类型], `;`[质检类型], `;`source.[质检类型], ` + +### 数据库调用链 + +- `src/views/QualityManagement/CheckTask/salesReturn.vue` -> `查询字典` -> 表:`YL_基础表_数据字典` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/salesReturn.vue` -> `人员管理_人员信息查询_质检部门_查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/salesReturn.vue` -> `质量管理_质量检验_退货质检任务_查询` -> 表:`质量检验_质检任务_SAP` -> 查询/读取数据 +- `src/views/QualityManagement/CheckTask/salesReturn.vue` -> `质量管理_销售退货检_更新` -> 表:`YL_质量检验_质检记录`、`质量检验_质检任务_SAP` -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `查询字典` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`YL_基础表_数据字典`。 主要返回字段线索:`*`。 +- `人员管理_人员信息查询_质检部门_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`*`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `质量管理_质量检验_退货质检任务_查询` 属于 质量检验,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:表:`质量检验_质检任务_SAP`。 入参/分页参数:`@订单号 NVARCHAR(100)`、`@零件编号 NVARCHAR(100)`、`@零件名称 NVARCHAR(100)`、`@检测日期_Start NVARCHAR(20)`、`@检测日期_End NVARCHAR(20)`、`@检测结果 NVARCHAR(10)`、`@检测人 NVARCHAR(50)`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`SET @WhereConditions = @WhereConditions + ' AND (订单类型 = ''234000031'') '`;`SET @WhereConditions = @WhereConditions + ' AND 订单编号 LIKE ''%' + @订单号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 物料编码 LIKE ''%' + @零件编号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 物料名称 LIKE ''%' + @零件名称 + '%'''`;`IF @检测日期_Start '' AND @检测日期_End ''`;`SET @WhereConditions = @WhereConditions + ' AND CONVERT(DATE, 检验时间) BETWEEN ''' + @检测日期_Start + ''' AND ''' + @检测日期_End + ''''`;`SET @WhereConditions = @WhereConditions + ' AND (合格数 > 0 AND 不合格数 = 0)'`;`SET @WhereConditions = @WhereConditions + ' AND ( 不合格数 > 0)'`;`SET @WhereConditions = @WhereConditions + ' AND ISNULL( 检测人, '''') LIKE ''%' + @检测人 + '%'''`;`SET @WhereConditions = ' WHERE ' + SUBSTRING(@WhereConditions, 5, LEN(@WhereConditions))`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @WhereConditions = @WhereConditions + ' AND (订单类型 = ''234000031'') '`;`SET @WhereConditions = @WhereConditions + ' AND 订单编号 LIKE ''%' + @订单号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 物料编码 LIKE ''%' + @零件编号 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND 物料名称 LIKE ''%' + @零件名称 + '%'''`;`SET @WhereConditions = @WhereConditions + ' AND CONVERT(DATE, 检验时间) BETWEEN ''' + @检测日期_Start + ''' AND ''' + @检测日期_End + ''''`;`SET @WhereConditions = @WhereConditions + ' AND (合格数 > 0 AND 不合格数 = 0)'`;`SET @WhereConditions = @WhereConditions + ' AND ( 不合格数 > 0)'`;`SET @WhereConditions = @WhereConditions + ' AND ISNULL( 检测人, '''') LIKE ''%' + @检测人 + '%'''`;`SET @WhereConditions = ' WHERE ' + SUBSTRING(@WhereConditions, 5, LEN(@WhereConditions))`;`SET @SQL = '`。 +- `质量管理_销售退货检_更新` 属于 质量检验,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、更新、处理质检数据、处理计划/派工。 读取/关联对象:表:`YL_质量检验_质检记录`、`质量检验_质检任务_SAP`。 写入或更新对象:`质量检验_质检任务_SAP`。 入参/分页参数:`@检测类型编号 int,`、`@质检类型 NVARCHAR(50),`、`@零件名称 NVARCHAR(200),`、`@零件编码 NVARCHAR(200),`、`@计划号 int,`、`@检测数量 decimal(18,`、`@合格数 decimal(18,`、`@不合格数 decimal(18,`、`@检测人 NVARCHAR(50),`、`@检测时间 DATETIME,`、`@检测说明 NVARCHAR(MAX),`、`@行号 int,`、`@订单类型 NVARCHAR(50)`。 关键过滤/匹配条件:`WHERE 订单编号 = @计划号 AND 行号 = @行号 and 订单类型 = @订单类型`;`ON (target.[零件编码] = source.[零件编码] AND target.[计划号] = source.[计划号] and target.行号 = source.行号 )`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`UPDATE [dbo].[质量检验_质检任务_SAP]`;`SET 合格数 = @合格数, `;`MERGE INTO [YL_MESDB].[dbo].[YL_质量检验_质检记录] AS target`;`UPDATE SET`。 + +## 56. src/views/QualityManagement/QualityCenter/index.vue + +**页面位置**:`src/views/QualityManagement/QualityCenter/index.vue` +**所属模块**:QualityManagement / QualityCenter +**源码行数**:4692 + +### 页面功能 + +该页面是质量综合处理中心。用户集中查询质检任务、收检记录、终检/入库任务和质检明细,录入检测数据、不合格处理,并读取 SAP 生产订单信息辅助校验。 + +页面可见的操作/字段包括 “查询 --> --> 缺料”、“上一个 下一个”、“删除当前记录 关闭”、“上一个 下一个 保存当前记录 删除当前记录 关闭”、“确定 关闭”、“取 消”、“确 定”、“新增异常工时”、“编辑”、“取消”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `生产管理_获取人员绑定`、`加急订单_加急明细查询`、`MES_人员工时记录_获取进行中任务2`、`MES_人员工时记录_获取进行中任务`、`工时校验_获取订单列表`、`异常工时_新增操作记录` 等过程 取数或提交业务动作。 + +### 页面流程图 + +质检业务流程: + +```mermaid +flowchart LR + A[选择检验类型/订单/物料/工序] --> B[查询待检任务] + B --> C[查看图纸/字典/检验人员] + C --> D[录入检测数量、合格数、不合格数和检测明细] + D --> E{检验类型} + E --> F[来料/入库/退货检验更新] + E --> G[序检收检新增或更新] + E --> H[终检/首检/特殊检验保存] + F --> I[写入 YL_质量检验_质检记录及明细] + G --> I + H --> I + I --> J[必要时查询/回写 SAP 生产订单或单据] +``` + + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询 --> --> 缺料`、`上一个 下一个`、`删除当前记录 关闭`、`上一个 下一个 保存当前记录 删除当前记录 关闭`、`确定 关闭`、`取 消`、`确 定`、`新增异常工时`、`编辑`、`取消`、`关闭`、`确定`、`全部`、`已送检`、`未送检`、`待执行`、`可执行`、`已开工` + +主要方法线索:`handletaskChange` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `row.零件编码` | `@物料编号` | `docentry as 订单编号, itemcode as 物料编号, 加急数量` | +| 参数 | `userName` | `@用户ID` | - | +| 参数 | `orderId` | `@订单编号` | `订单编号, ` | +| 参数 | `this.TaskAID ` | `@TaskAID` | - | +| 参数 | `this.orderNo2 ` | `@订单号` | `main.[订单编号] as 订单号, ` | +| 参数 | `this.productCode2` | `@零件编号` | - | +| 参数 | `this.productionStatus2 ` | `@生产状态` | - | +| 参数 | `this.Doing` | `@工位名称` | - | +| 参数 | `this.$store.state.user.id` | `@用户ID` | - | +| 参数 | `this.plannum` | `@计划号` | - | +| 参数 | `this.salenum` | `@销售订单` | - | +| 参数 | `this.SendCheckStatus` | `@送检` | - | +| 参数 | `this.completionTime ? this.completionTime[0` | `@计划开工_Start` | - | +| 参数 | `this.completionTime ? this.completionTime[1` | `@计划开工_End` | - | +| 参数 | `row.零件编码` | `@ItemCode` | - | +| 参数 | `row.订单号` | `@订单号` | `main.[订单编号] as 订单号, ` | +| 参数 | `taskAID` | `@TaskAID` | - | +| 参数 | `userId` | `@用户ID` | - | +| 参数 | `userName` | `@用户名` | - | +| 参数 | `userName` | `@操作人` | - | +| 参数 | `"1"` | `@isOvertime` | - | +| 参数 | `overtimeResult.person` | `@加班人员` | - | +| 参数 | `overtimeResult.hours` | `@overtimeHours` | - | +| 参数 | `currentShift.shiftName` | `@overtimeShift` | - | +| 参数 | `this.currentTime` | `@结束时间` | - | +| 参数 | `this.workendData.备注` | `@备注` | - | +| 参数 | `this.workendData.工序说明` | `@工序说明` | - | +| 参数 | `this.workendData.异常说明` | `@异常说明` | - | +| 参数 | `this.workendData.本次检数` | `@本次检数` | `@检验数 = ISNULL(本次检数, 0)` | +| 参数 | `row.TaskAID` | `@TaskAID` | - | +| 参数 | `this.$store.state.user.name` | `@optor` | - | +| 参数 | `this.assistNumber` | `@recievCount` | - | +| 参数 | `this.receiveCheckData.TaskAID` | `@TaskAID` | - | +| 参数 | `6` | `@检测类型编号` | - | +| 参数 | `"收检"` | `@质检类型` | - | +| 参数 | `this.receiveCheckData.零件名称` | `@零件名称` | - | +| 参数 | `this.receiveCheckData.内部合同号` | `@内部合同号` | - | +| 参数 | `this.receiveCheckData.零件编码` | `@零件编码` | - | +| 参数 | `this.receiveCheckData.计划号 ` | `@计划号` | - | +| 参数 | `this.receiveCheckData.工序名称 ` | `@工序名称` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- SAP B1 Service Layer(`src/api/b1s.js`) +- TM/OpenAPI 接口(`src/api/tm.js`) +- PDF/图纸预览或导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 2168 | 11(当前通用存储过程查询/执行) | `生产管理_获取人员绑定` | 基础权限/人员数据处理 | 查询 | 表:`MES_资源主数据`、`工位人员绑定表` | +| 2249 | 11(当前通用存储过程查询/执行) | `加急订单_加急明细查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象、处理计划/派工 | 表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` | +| 2262 | 11(当前通用存储过程查询/执行) | `MES_人员工时记录_获取进行中任务2` | 报工或工时处理 | 查询、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表` | +| 2296 | 11(当前通用存储过程查询/执行) | `MES_人员工时记录_获取进行中任务` | 报工或工时处理 | 查询、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表` | +| 2362 | 11(当前通用存储过程查询/执行) | `工时校验_获取订单列表` | 报工或工时处理 | 查询、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划` | +| 2408 | 11(当前通用存储过程查询/执行) | `异常工时_新增操作记录` | 新增业务数据 | 查询、新增、处理报工/工时 | 表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES` | +| 2441 | 11(当前通用存储过程查询/执行) | `工时校验_获取订单工序` | 报工或工时处理 | 查询、处理报工/工时 | 视图:`View_生产订单_MES` | +| 2485 | 11(当前通用存储过程查询/执行) | `MES_登录_工位与名称_查询` | 查询/读取数据 | 查询 | 视图:`View_基础数据_工位` | +| 2539 | 11(当前通用存储过程查询/执行) | `Prog_MES_LoadProcess` | 查询/读取数据 | 查询 | 表:`基础表_工序` | +| 2571 | 11(当前通用存储过程查询/执行) | `质量管理_质检报工_任务查询` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 2676 | 11(当前通用存储过程查询/执行) | `MES_ProductTask_WorkTimeSum` | 报工或工时处理 | 查询、处理报工/工时、处理计划/派工 | 未在 SQL 中解析到明确依赖 | +| 2708 | 11(当前通用存储过程查询/执行) | `生产管理_装配中心_缺料查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_OPKL_MissQty` | +| 2742 | 12(当前通用存储过程写入/业务动作) | `MES_人员工时记录_开始` | 报工或工时处理 | 查询、新增、更新、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`;视图:`View_生产订单_MES` | +| 2973 | 11(当前通用存储过程查询/执行) | `生产管理_加工中心_班次信息` | 业务存储过程调用 | 查询 | 视图:`View_设备工位人员` | +| 3026 | 11(当前通用存储过程查询/执行) | `生产管理_加工中心_自动加班` | 业务存储过程调用 | 查询、新增、处理报工/工时 | 表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES` | +| 3058 | 12(当前通用存储过程写入/业务动作) | `MES_人员工时记录_结束` | 报工或工时处理 | 查询、新增、更新、处理报工/工时、处理质检数据、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表`、`班次表`、`YL_加工中心_报工记录` | +| 3130 | 12(当前通用存储过程写入/业务动作) | `MES_ProductTask_SendInspection` | 业务存储过程调用 | 查询、新增、更新、处理报工/工时、处理计划/派工 | 表:`MES_接口_生产计划`、`YL_加工中心_操作记录表`、`YL_加工中心_报工记录`;视图:`View_生产订单_MES` | +| 3177 | 11(当前通用存储过程查询/执行) | `加工中心_收检_读取收检记录` | 查询/读取数据 | 查询、处理质检数据、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 3266 | 12(当前通用存储过程写入/业务动作) | `MES_QulityInspection_ReceiveCheck` | 质量检验处理 | 查询、新增、更新、处理质检数据、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录` | +| 3304 | 11(当前通用存储过程查询/执行) | `加工中心_异常工时_获取操作记录列表` | 报工或工时处理 | 查询、处理报工/工时 | 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` | +| 3358 | 11(当前通用存储过程查询/执行) | `加工中心_修改工时_保存修改记录` | 更新/保存业务数据 | 更新、处理报工/工时 | 表:`YL_加工中心_操作记录表` | +| 3393 | 11(当前通用存储过程查询/执行) | `生产管理_加工中心_生产发料查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_OWOR_OIGE` | +| 3447 | 11(当前通用存储过程查询/执行) | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_零件图纸` | +| 3481 | 11(当前通用存储过程查询/执行) | `工艺管理_工艺维护_查看图纸` | 查询/读取数据 | 查询 | 表:`物料基础数据_工艺图纸` | +| 3522 | 12(当前通用存储过程写入/业务动作) | `生产管理_加工中心_退库` | 业务存储过程调用 | 查询、新增、处理质检数据 | 表:`质量检验_质检任务_SAP` | +| 3768 | 11(当前通用存储过程查询/执行) | `Prog_MES_GetProductOrder_byAID` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 3998 | 12(当前通用存储过程写入/业务动作) | `MES_QulityInspection_CheckItemData_Save` | 更新/保存业务数据 | 查询、新增、更新、处理质检数据、处理计划/派工 | 表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据` | +| 4086 | 11(当前通用存储过程查询/执行) | `MES_QulityInspection_GetItemStandard` | 查询/读取数据 | 查询、处理质检数据 | 表:`YL_质量检验_检测标准` | +| 4138 | 11(当前通用存储过程查询/执行) | `Prog_MES_GetProductOrder_byAID` | 查询/读取数据 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` | +| 4181 | 11(当前通用存储过程查询/执行) | `MES_QulityInspection_GetItemStandard` | 查询/读取数据 | 查询、处理质检数据 | 表:`YL_质量检验_检测标准` | +| 4383 | 12(当前通用存储过程写入/业务动作) | `MES_QulityInspection_CheckItemData_Save` | 更新/保存业务数据 | 查询、新增、更新、处理质检数据、处理计划/派工 | 表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据` | + +### 与 SAP 的交互 + +页面直接 SAP/接口调用: +- 第 3415 行:`getB1("/ProductionOrders")` +- 第 3584 行:`posttm("/stocktask/task/issueordertask")` +存储过程内读取 SAP B1 数据库对象: +- 加急订单_加急明细查询: SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL +- 生产管理_装配中心_缺料查询: SAP.SBO_YL.dbo.UBT_OPKL_MissQty +- 生产管理_加工中心_生产发料查询: SAP.SBO_YL.dbo.UBT_OWOR_OIGE + +### SAP 接口级说明 + +| 行号 | 方法 | 接口 | 调用时机/影响判断 | 提交字段线索 | +|---:|---|---|---|---| +| 3415 | `getB1` | `/ProductionOrders` | 读取或更新 SAP 生产订单。失败会导致 MES 与 SAP 订单状态/工序资源不同步。 | `filter`、`数据`、`lines`、`请求失败` | +| 3584 | `posttm` | `/stocktask/task/issueordertask` | 调用外部接口,失败会影响对应外部系统同步。 | `原始数据`、`doc_date`、`doc_type`、`external_num`、`task_items` | + +### 状态流转说明 + +- `生产管理_获取人员绑定`:`AND b.绑定状态 = 1;` +- `加急订单_加急明细查询`:`SELECT docentry as 订单编号, itemcode as 物料编号, 加急数量 from SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` +- `MES_人员工时记录_获取进行中任务2`:`CREATE PROCEDURE [dbo].[MES_人员工时记录_获取进行中任务2]`;`pt.工序名称 AS 任务工序名称, `;`pt.任务状态, `;`pt.完成数量, `;`pt.计划完成时间 AS 计划完成, `;`FROM [dbo].[YL_加工中心_操作记录表] t`;`LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID`;`t.操作类别 = '开始加工'` +- `MES_人员工时记录_获取进行中任务`:`CREATE PROCEDURE [dbo].[MES_人员工时记录_获取进行中任务]`;`pt.工序名称 AS 任务工序名称, `;`pt.任务状态, `;`pt.完成数量, `;`pt.计划完成时间 AS 计划完成, `;`FROM [dbo].[YL_加工中心_操作记录表] t`;`LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID`;`AND t.操作类别 = '开始加工'` +- `异常工时_新增操作记录`:`INSERT INTO [dbo].[YL_加工中心_操作记录表] (`;`操作描述, 开始时间, 结束时间, 总时长, 报工日期, 已报工, 不装配, ` +- `质量管理_质检报工_任务查询`:`create PROCEDURE [dbo].[质量管理_质检报工_任务查询]`;`@生产状态 int = -1, `;`DECLARE @whereStr nvarchar(max) = ' WHERE main.排产状态 = 1 '`;`main.派工特殊说明, `;`case when isnull(main.[加急状态], 0) = 1 then ''加急'' else ''否'' end as [加急], `;`main.[二次派工], `;`main.[计划完成时间] as 计划完成, `;`isnull(main.[完成数量], 0) as 完成数量, ` +- `MES_ProductTask_WorkTimeSum`:`select TaskAID, 工序名称, sum(工时) as 总工时 from YL_加工中心_操作记录表 where 工时 >0 group by TaskAID, 工序名称` +- `生产管理_装配中心_缺料查询`:`select * from SAP.SBO_YL.dbo.UBT_OPKL_MissQty where DocEntry = @订单号` +- `MES_人员工时记录_开始`:`declare @任务状态 int = -1`;`FROM[dbo].[MES_接口_生产计划_生产任务]`;`SELECT 1 FROM YL_加工中心_操作记录表`;`AND 操作类别 = '开始加工'`;`select @任务状态 = isnull(任务状态, 0)from View_生产订单_MES where TaskAID = @TaskAID`;`if(@任务状态 = 1)`;`UPDATE MES_接口_生产计划_生产任务`;`任务状态 = '2', ` +- `生产管理_加工中心_班次信息`:`create PROCEDURE [dbo].[生产管理_加工中心_班次信息]` +- `生产管理_加工中心_自动加班`:`CREATE PROCEDURE [dbo].[生产管理_加工中心_自动加班]`;`INSERT INTO [dbo].[YL_加工中心_操作记录表] (`;`操作描述, 开始时间, 结束时间, 总时长, 报工日期, 已报工, 不装配, ` +- `MES_人员工时记录_结束`:`FROM [dbo].[MES_接口_生产计划_生产任务]`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`FROM YL_加工中心_操作记录表`;`AND 操作类别 = '开始加工'`;`UPDATE YL_加工中心_操作记录表`;`操作描述 = '用户 ' + @用户名 + ' 结束加工,' +`;`INSERT INTO [dbo].[YL_加工中心_报工记录]`;`INSERT INTO [dbo].[YL_加工中心_操作记录表] (` +- `MES_ProductTask_SendInspection`:`declare @任务状态 int`;`declare @完成数量 int`;`Update MES_接口_生产计划_生产任务`;`set 完成数量 = isnull(完成数量, 0)+@recievCount, `;`select @分配数量 = 指派数量, @完成数量 = 完成数量, @订单编号 = 订单编号, @工位名称 = 指派对象 from MES_接口_生产计划_生产任务 where AID = @TaskAID`;`if(@完成数量 = @分配数量)`;`set 任务状态 = 4, `;`INSERT INTO [dbo].[YL_加工中心_操作记录表]` +- `加工中心_收检_读取收检记录`:`CREATE PROCEDURE [dbo].[加工中心_收检_读取收检记录]`;`declare @完成数量 int`;`select @已检验数量 = sum(检验数量) OVER() from YL_质量检验_质检记录 where TaskAID = @TaskAID and 质检类型 = '收检'`;`select @完成数量 = 完成数量 from [dbo].[MES_接口_生产计划_生产任务] where AID = @TaskAID`;`FROM [dbo].[YL_质量检验_质检记录] qc`;`select isnull(@已检验数量, 0), isnull(@完成数量, 0), isnull(@上序合格数, 0), @订单行号` +- `MES_QulityInspection_ReceiveCheck`:`@质检类型 NVARCHAR(50), `;`FROM [dbo].[MES_接口_生产计划_生产任务]`;`FROM [YL_MESDB].[dbo].[YL_质量检验_质检记录] qc`;`0 AS 清零任务数`;`INSERT INTO [YL_MESDB].[dbo].[YL_质量检验_质检记录] (`;`[质检类型], `;`@质检类型, `;`INNER JOIN [dbo].[MES_接口_生产计划_生产任务] task ON qc.TaskAID = task.AID` +- `加工中心_异常工时_获取操作记录列表`:`CREATE PROCEDURE [dbo].[加工中心_异常工时_获取操作记录列表]`;`o.实际工时 as 加工工时, `;`o.已报工, `;`FROM [dbo].[YL_加工中心_操作记录表] o` +- `加工中心_修改工时_保存修改记录`:`CREATE PROCEDURE [dbo].[加工中心_修改工时_保存修改记录]`;`update [dbo].[YL_加工中心_操作记录表]` +- `生产管理_加工中心_生产发料查询`:`CREATE PROCEDURE [dbo].[生产管理_加工中心_生产发料查询]`;`select * from SAP.SBO_YL.dbo.UBT_OWOR_OIGE where 生产订单号 = @生产订单号` +- `生产管理_加工中心_退库`:`CREATE PROCEDURE [dbo].[生产管理_加工中心_退库]`;`select @行号 = max(isnull(行号, 0)) from [dbo].[质量检验_质检任务_SAP] where [订单编号] = @生产订单号 and [订单类型] = '202-60'`;`insert into [dbo].[质量检验_质检任务_SAP] ( [订单编号]` +- `Prog_MES_GetProductOrder_byAID`:`, [加急状态]`;`, [排产状态]`;`, [计划完成时间]`;`, [派工状态]`;`, [派工时间]`;`, [任务状态]`;`, [未完成说明]`;`, [派工特殊说明]` +- `MES_QulityInspection_CheckItemData_Save`:`@质检类型 nvarchar(100) = '', `;`FROM [dbo].[YL_质量检验_质检记录]`;`AND 质检类型 = @质检类型`;`INSERT INTO [dbo].[YL_质量检验_质检记录](`;`TaskAID, 质检类型, 检测类型编号, 零件名称, 内部合同号, `;`@TaskAID, @质检类型, @检测类型编号, @零件名称, @内部合同号, `;`UPDATE [dbo].[YL_质量检验_质检记录]`;`FROM [dbo].[YL_质量检验_质检记录_检测零件]` +- `Prog_MES_GetProductOrder_byAID`:`, [加急状态]`;`, [排产状态]`;`, [计划完成时间]`;`, [派工状态]`;`, [派工时间]`;`, [任务状态]`;`, [未完成说明]`;`, [派工特殊说明]` +- `MES_QulityInspection_CheckItemData_Save`:`@质检类型 nvarchar(100) = '', `;`FROM [dbo].[YL_质量检验_质检记录]`;`AND 质检类型 = @质检类型`;`INSERT INTO [dbo].[YL_质量检验_质检记录](`;`TaskAID, 质检类型, 检测类型编号, 零件名称, 内部合同号, `;`@TaskAID, @质检类型, @检测类型编号, @零件名称, @内部合同号, `;`UPDATE [dbo].[YL_质量检验_质检记录]`;`FROM [dbo].[YL_质量检验_质检记录_检测零件]` + +### 数据库调用链 + +- `src/views/QualityManagement/QualityCenter/index.vue` -> `生产管理_获取人员绑定` -> 表:`MES_资源主数据`、`工位人员绑定表` -> 基础权限/人员数据处理 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `加急订单_加急明细查询` -> 表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` -> 查询/读取数据 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `MES_人员工时记录_获取进行中任务2` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表` -> 报工或工时处理 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `MES_人员工时记录_获取进行中任务` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表` -> 报工或工时处理 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `工时校验_获取订单列表` -> 表:`MES_接口_生产计划` -> 报工或工时处理 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `异常工时_新增操作记录` -> 表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES` -> 新增业务数据 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `工时校验_获取订单工序` -> 视图:`View_生产订单_MES` -> 报工或工时处理 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `MES_登录_工位与名称_查询` -> 视图:`View_基础数据_工位` -> 查询/读取数据 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `Prog_MES_LoadProcess` -> 表:`基础表_工序` -> 查询/读取数据 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `质量管理_质检报工_任务查询` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `MES_ProductTask_WorkTimeSum` -> 未在 SQL 中解析到明确依赖 -> 报工或工时处理 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `生产管理_装配中心_缺料查询` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_OPKL_MissQty` -> 查询/读取数据 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `MES_人员工时记录_开始` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`;视图:`View_生产订单_MES` -> 报工或工时处理 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `生产管理_加工中心_班次信息` -> 视图:`View_设备工位人员` -> 业务存储过程调用 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `生产管理_加工中心_自动加班` -> 表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES` -> 业务存储过程调用 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `MES_人员工时记录_结束` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表`、`班次表`、`YL_加工中心_报工记录` -> 报工或工时处理 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `MES_ProductTask_SendInspection` -> 表:`MES_接口_生产计划`、`YL_加工中心_操作记录表`、`YL_加工中心_报工记录`;视图:`View_生产订单_MES` -> 业务存储过程调用 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `加工中心_收检_读取收检记录` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `MES_QulityInspection_ReceiveCheck` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录` -> 质量检验处理 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `加工中心_异常工时_获取操作记录列表` -> 表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表` -> 报工或工时处理 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `加工中心_修改工时_保存修改记录` -> 表:`YL_加工中心_操作记录表` -> 更新/保存业务数据 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `生产管理_加工中心_生产发料查询` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_OWOR_OIGE` -> 查询/读取数据 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `工艺管理_图纸维护_查看图纸` -> 表:`物料基础数据_零件图纸` -> 查询/读取数据 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `工艺管理_工艺维护_查看图纸` -> 表:`物料基础数据_工艺图纸` -> 查询/读取数据 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `生产管理_加工中心_退库` -> 表:`质量检验_质检任务_SAP` -> 业务存储过程调用 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `Prog_MES_GetProductOrder_byAID` -> 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `MES_QulityInspection_CheckItemData_Save` -> 表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据` -> 更新/保存业务数据 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `MES_QulityInspection_GetItemStandard` -> 表:`YL_质量检验_检测标准` -> 查询/读取数据 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `Prog_MES_GetProductOrder_byAID` -> 表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES` -> 查询/读取数据 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `MES_QulityInspection_GetItemStandard` -> 表:`YL_质量检验_检测标准` -> 查询/读取数据 +- `src/views/QualityManagement/QualityCenter/index.vue` -> `MES_QulityInspection_CheckItemData_Save` -> 表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据` -> 更新/保存业务数据 + +### 存储过程处理逻辑明细 + +- `生产管理_获取人员绑定` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 基础权限/人员数据处理。 数据库处理摘要:查询。 读取/关联对象:表:`MES_资源主数据`、`工位人员绑定表`。 入参/分页参数:`@操作人ID NVARCHAR(50)`。 主要返回字段线索:`m.[name] AS 工位名称`。 关键过滤/匹配条件:`WHERE`;`AND b.绑定状态 = 1;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `加急订单_加急明细查询` 属于 加急任务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`;SAP/链接库:`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL`。 入参/分页参数:`@物料编号 nvarchar(50)`。 主要返回字段线索:`docentry as 订单编号, itemcode as 物料编号, 加急数量`。 关键过滤/匹配条件:`where itemcode = @物料编号`。 实现特征:读取 SAP 数据库对象。 +- `MES_人员工时记录_获取进行中任务2` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表`。 入参/分页参数:`@用户ID NVARCHAR(50)`。 主要返回字段线索:`t.AID AS 操作记录ID, `、`t.TaskAID, `、`t.操作人 AS UserName, `、`t.开始时间 AS StartTime, `、`t.操作类别, `、`t.操作类别编号, `、`t.工序名称, `、`t.工位名称, `、`t.订单编号, `、`t.物料编号, `。 关键过滤/匹配条件:`WHERE`;`AND t.结束时间 IS NULL`;`and t.工位名称 like '%装配%'`;`and t.操作数值 is not null`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY t.开始时间 DESC;`。 实现特征:异常捕获。 +- `MES_人员工时记录_获取进行中任务` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表`。 入参/分页参数:`@用户ID NVARCHAR(50)`。 主要返回字段线索:`t.AID AS 操作记录ID, `、`t.TaskAID, `、`t.操作人 AS UserName, `、`t.开始时间 AS StartTime, `、`t.操作类别, `、`t.操作类别编号, `、`t.工序名称, `、`t.工位名称, `、`t.订单编号, `、`t.物料编号, `。 关键过滤/匹配条件:`WHERE t.操作人 = @用户ID`;`AND t.操作类别 = '开始加工'`;`AND t.结束时间 IS NULL`;`and t.工位名称 like '%装配%'`;`and t.操作数值 is not null`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY t.开始时间 DESC;`。 实现特征:异常捕获。 +- `工时校验_获取订单列表` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`。 入参/分页参数:`@订单编号 nvarchar(50)`。 主要返回字段线索:`DISTINCT top 20`、`订单编号, `、`物料编号 as 零件编码, `、`物料描述 as 零件名称`。 关键过滤/匹配条件:`FROM [dbo].[MES_接口_生产计划] WHERE 订单编号 LIKE '%' + @订单编号 + '%' OR @订单编号 = ''`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY 订单编号 ;`。 +- `异常工时_新增操作记录` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 新增业务数据。 数据库处理摘要:查询、新增、处理报工/工时。 读取/关联对象:表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES`。 写入或更新对象:`YL_加工中心_操作记录表`。 入参/分页参数:`@操作类别 nvarchar(50),`、`@订单编号 nvarchar(50),`、`@物料编号 nvarchar(50),`、`@物料描述 nvarchar(50),`、`@工序名称 nvarchar(50),`、`@操作人 nvarchar(50),`、`@开始时间 datetime,`、`@结束时间 datetime,`、`@操作内容 nvarchar(500)`、`@操作描述 nvarchar(2000)`、`@TaskAID nvarchar(2000)`。 主要返回字段线索:`@工位名称 = 指派对象`。 关键过滤/匹配条件:`select @工位名称 = 指派对象 from [dbo].[View_生产订单_MES] where TaskAID = @TaskAID`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @工时 = DATEDIFF(SECOND, @开始时间, @结束时间);`;`INSERT INTO [dbo].[YL_加工中心_操作记录表] (`。 实现特征:异常捕获。 +- `工时校验_获取订单工序` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:视图:`View_生产订单_MES`。 入参/分页参数:`@订单编号 int`。 主要返回字段线索:`工序名称, 订单行号 as 工艺顺序, 指派对象, TaskAID, 顺序编号, 指派对象 as 工位名称, VisCode`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单编号`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY 订单行号;`。 +- `MES_登录_工位与名称_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_基础数据_工位`。 主要返回字段线索:`[VisCode] as 工位代码`、`[VisCode] as MesWebCode`、`[VisCode] as 工位号`、`[Name] as 指南工位号`、`[Name] as 工位名称`。 排序/分组/分页线索:`order by [VisCode]`。 +- `Prog_MES_LoadProcess` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`基础表_工序`。 主要返回字段线索:`[工艺编号], [工序名称]`。 排序/分组/分页线索:`SELECT [工艺编号], [工序名称] FROM [基础表_工序] ORDER BY [工艺编号]`。 +- `质量管理_质检报工_任务查询` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@TaskAID int`、`@订单号 int`、`@零件编号 nvarchar(50)`、`@计划开工_Start nvarchar(50)`、`@计划开工_End nvarchar(50)`、`@生产状态 int`、`@工位名称 nvarchar(50)`、`@用户ID nvarchar(50)`、`@计划号 nvarchar(50)`、`@销售订单 nvarchar(50)`、`@送检 int`。 主要返回字段线索:`main.TaskAID, `、`main.本次检数, `、`main.[订单编号] as 订单号, `、`main.合同号, `、`main.自制件属性, `、`main.加急总数, `、`main.派工特殊说明, `、`main.[订单拆分内码], `、`main.[订单行号], `、`main.[开工时间], `。 关键过滤/匹配条件:`DECLARE @whereStr nvarchar(max) = ' WHERE main.排产状态 = 1 '`;`WHERE a.检测类型编号 = 6`;`) AS 质检统计 ON main.订单编号 = 质检统计.订单编号 AND main.订单行号 = 质检统计.订单行号`;`) AS 上序统计 ON main.订单编号 = 上序统计.订单编号 AND main.订单行号 = 上序统计.订单行号 + 1'`;`SET @whereStr = @whereStr + ' AND main.[指派对象] ''外协'' AND main.[指派对象] LIKE ''%装配%'''`;`SET @whereStr = @whereStr + ' AND main.[订单编号] = ' + CONVERT(VARCHAR(10), @订单号)`;`SET @whereStr = @whereStr + ' AND main.[计划号] = '''+@计划号+''''`;`SET @whereStr = @whereStr + ' AND main.[合同号] LIKE ''%' + @销售订单 + '%'''`;`SET @whereStr = @whereStr + ' AND main.[TaskAID] = ' + CONVERT(VARCHAR(10), @TaskAID)`;`SET @whereStr = @whereStr + ' AND ISNULL(main.完成数量, 0) > 0 '`。 关键写入/状态处理语句线索:`SET @whereStr = @whereStr + ' AND main.[指派对象] ''外协'' AND main.[指派对象] LIKE ''%装配%'''`;`SET @whereStr = @whereStr + ' AND main.[订单编号] = ' + CONVERT(VARCHAR(10), @订单号)`;`SET @whereStr = @whereStr + ' AND main.[计划号] = '''+@计划号+''''`;`SET @whereStr = @whereStr + ' AND main.[合同号] LIKE ''%' + @销售订单 + '%'''`;`SET @whereStr = @whereStr + ' AND main.[TaskAID] = ' + CONVERT(VARCHAR(10), @TaskAID)`;`SET @whereStr = @whereStr + ' AND ISNULL(main.完成数量, 0) > 0 '`;`SET @whereStr = @whereStr + ' AND ISNULL(main.完成数量, 0) = 0 '`;`SET @whereStr = @whereStr + ' AND main.[物料编号] LIKE ''%' + @零件编号 + '%'''`;`SET @whereStr = @whereStr + ' AND main.[计划开始时间] > = ''' + @计划开工_Start + ''''`;`SET @whereStr = @whereStr + ' AND main.[计划开始时间] < = ''' + @计划开工_End + ''''`;`SET @whereStr = @whereStr +`;`SET @whereStr = @whereStr + ' AND ISNULL(main.任务状态, 0) IN (0, 1, 2) '`。 排序/分组/分页线索:`GROUP BY b.订单编号, b.订单行号`;`SET @selStr = @selStr + @whereStr + ' ORDER BY main.[计划开始时间], main.[订单编号], main.[阶段标识]'`。 +- `MES_ProductTask_WorkTimeSum` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时、处理计划/派工。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@计划开工_Start nvarchar(50)`、`@计划开工_End nvarchar(50)`。 主要返回字段线索:`TaskAID, 工序名称, sum(工时) as 总工时`。 关键过滤/匹配条件:`select TaskAID, 工序名称, sum(工时) as 总工时 from YL_加工中心_操作记录表 where 工时 >0 group by TaskAID, 工序名称`。 排序/分组/分页线索:`select TaskAID, 工序名称, sum(工时) as 总工时 from YL_加工中心_操作记录表 where 工时 >0 group by TaskAID, 工序名称`。 +- `生产管理_装配中心_缺料查询` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_OPKL_MissQty`。 入参/分页参数:`@ItemCode nvarchar(500),`、`@订单号 int`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`select * from SAP.SBO_YL.dbo.UBT_OPKL_MissQty where DocEntry = @订单号`。 实现特征:读取 SAP 数据库对象。 +- `MES_人员工时记录_开始` 属于 系统基础资料/权限,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、新增、更新、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`;视图:`View_生产订单_MES`。 写入或更新对象:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表`。 入参/分页参数:`@TaskAID INT,`、`@用户ID NVARCHAR(50),`、`@用户名 NVARCHAR(50),`、`@操作人 NVARCHAR(50)`。 主要返回字段线索:`@订单编号 = ISNULL(订单编号, ''), `、`@物料编号 = ISNULL(物料编码, ''), `、`@物料描述 = ISNULL(物料名称, ''), `、`@工序名称 = ISNULL(工序名称, ''), `、`@工位名称 = ISNULL(指派对象, ''), `、`@阶段标识 = ISNULL(顺序编号, -1)`。 关键过滤/匹配条件:`WHERE AID = @TaskAID`;`WHERE TaskAID = @TaskAID`;`AND 操作人 = @用户名`;`AND 操作类别 = '开始加工'`;`AND 结束时间 IS NULL`;`select @任务状态 = isnull(任务状态, 0)from View_生产订单_MES where TaskAID = @TaskAID`。 关键写入/状态处理语句线索:`UPDATE MES_接口_生产计划_生产任务`;`SET`;`INSERT INTO YL_加工中心_操作记录表 (`。 实现特征:异常捕获。 +- `生产管理_加工中心_班次信息` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询。 读取/关联对象:视图:`View_设备工位人员`。 主要返回字段线索:`*`。 +- `生产管理_加工中心_自动加班` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、新增、处理报工/工时。 读取/关联对象:表:`YL_加工中心_操作记录表`;视图:`View_生产订单_MES`。 写入或更新对象:`YL_加工中心_操作记录表`。 入参/分页参数:`@操作类别 nvarchar(50),`、`@订单编号 nvarchar(50),`、`@物料编号 nvarchar(50),`、`@物料描述 nvarchar(50),`、`@工序名称 nvarchar(50),`、`@操作人 nvarchar(50),`、`@开始时间 datetime,`、`@结束时间 datetime,`、`@TaskAID nvarchar(2000)`、`@加班人员 nvarchar(500)`。 主要返回字段线索:`@工位名称 = 指派对象`。 关键过滤/匹配条件:`select @工位名称 = 指派对象 from [dbo].[View_生产订单_MES] where TaskAID = @TaskAID`;`IF @人员列表 IS NULL OR LEN(@人员列表) = 0`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @工时 = DATEDIFF(SECOND, @开始时间, @结束时间);`;`SET @人员列表 = @操作人;`;`SET @位置 = CHARINDEX(', ', @人员列表);`;`SET @当前人员 = LTRIM(RTRIM(SUBSTRING(@人员列表, 1, @位置 - 1)));`;`SET @人员列表 = SUBSTRING(@人员列表, @位置 + 1, LEN(@人员列表));`;`SET @当前人员 = LTRIM(RTRIM(@人员列表));`;`SET @人员列表 = '';`;`INSERT INTO #Temp人员 (人员名称) VALUES (@当前人员);`;`INSERT INTO [dbo].[YL_加工中心_操作记录表] (`;`SET @成功计数 = @@ROWCOUNT;`。 实现特征:事务控制、异常捕获、临时表 `#Temp人员`。 +- `MES_人员工时记录_结束` 属于 系统基础资料/权限,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、新增、更新、处理报工/工时、处理质检数据、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表`、`班次表`、`YL_加工中心_报工记录`。 写入或更新对象:`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表`、`YL_加工中心_报工记录`。 入参/分页参数:`@TaskAID INT,`、`@用户ID NVARCHAR(50),`、`@用户名 NVARCHAR(50),`、`@操作人 NVARCHAR(50),`、`@备注 NVARCHAR(200)`、`@工序说明 NVARCHAR(200)`、`@异常说明 NVARCHAR(200)`、`@本次检数 NVARCHAR(200)`、`@是否加班 INT`、`@加班人员 NVARCHAR(500)`、`@特殊加班人员 NVARCHAR(500)`、`@是否休息日 INT`、`@是否法定休息日 INT`、`@班次标准工时 NVARCHAR`。 主要返回字段线索:`@订单编号 = ISNULL(订单编号, ''), `、`@物料编号 = ISNULL(物料编码, ''), `、`@物料描述 = ISNULL(物料名称, ''), `、`@工序名称 = ISNULL(工序名称, ''), `、`@工位名称 = ISNULL(指派对象, ''), `、`@阶段标识 = ISNULL(顺序编号, -1), `、`@检验数 = ISNULL(本次检数, 0)`。 关键过滤/匹配条件:`WHERE AID = @TaskAID`;`WHERE TaskAID = @TaskAID`;`AND 操作人 = @用户名`;`AND 操作类别 = '开始加工'`;`AND 结束时间 IS NULL`;`WHERE 班次名称 = '白班'`;`IF @是否休息日 = 1 OR @是否法定休息日 = 1`;`WHERE AID = @开始记录ID`;`IF @是否法定休息日 = 1 AND @是否加班 = 0`;`ELSE IF @是否休息日 = 1 AND @是否加班 = 0`。 关键写入/状态处理语句线索:`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET 本次检数 = ISNULL(@检验数, 0) + ISNULL(@本次检数, 0)`;`SET @白班结束时间 = '16:30:00'`;`SET @白班结束时间_完整 = CAST(CAST(@结束时间 AS DATE) AS DATETIME) + CAST(@白班结束时间 AS DATETIME)`;`SET @加班时长秒 = @总工时`;`SET @加班开始时间 = @开始时间`;`SET @工作时间 = 0`;`SET @工作时间 = @总工时`;`SET @报工开始时间 = @开始时间`;`SET @报工结束时间 = @结束时间`;`SET @加班时长秒 = 0`;`SET @加班开始时间 = NULL`。 排序/分组/分页线索:`ORDER BY 开始时间 DESC`。 实现特征:异常捕获、临时表 `#TempOvertimePersons`。 +- `MES_ProductTask_SendInspection` 属于 生产执行/工时,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、新增、更新、处理报工/工时、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`YL_加工中心_操作记录表`、`YL_加工中心_报工记录`;视图:`View_生产订单_MES`。 写入或更新对象:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_加工中心_操作记录表`、`YL_加工中心_报工记录`。 入参/分页参数:`@TaskAID bigint,`、`@recievCount int,`、`@optor nvarchar(50)`。 主要返回字段线索:`@分配数量 = 指派数量, @完成数量 = 完成数量, @订单编号 = 订单编号, @工位名称 = 指派对象`。 关键过滤/匹配条件:`where AID = @TaskAID`;`select @分配数量 = 指派数量, @完成数量 = 完成数量, @订单编号 = 订单编号, @工位名称 = 指派对象 from MES_接口_生产计划_生产任务 where AID = @TaskAID`;`select @dicItemID = 词条编号 from YL_基础表_数据字典 where 词条名称 = @词条名称 and 数据类别 = @数据类别`;`from View_生产订单_MES where TaskAID = @TaskAID`。 关键写入/状态处理语句线索:`Update MES_接口_生产计划_生产任务`;`set 完成数量 = isnull(完成数量, 0)+@recievCount, `;`set 任务状态 = 4, `;`INSERT INTO [dbo].[YL_加工中心_操作记录表]`;`INSERT INTO [dbo].[YL_加工中心_报工记录]`。 +- `加工中心_收检_读取收检记录` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@TaskAID int`。 主要返回字段线索:`@订单编号 = [订单编号], @订单行号 = 订单行号`。 关键过滤/匹配条件:`select @订单编号 = [订单编号], @订单行号 = 订单行号 FROM [View_生产订单_MES] where TaskAID = @TaskAID`;`select @已检验数量 = sum(检验数量) OVER() from YL_质量检验_质检记录 where TaskAID = @TaskAID and 质检类型 = '收检'`;`select @完成数量 = 完成数量 from [dbo].[MES_接口_生产计划_生产任务] where AID = @TaskAID`;`WHERE vt.[订单编号] = @订单编号`;`AND vt.[订单行号] = @订单行号-1`;`AND qc.检测类型编号 = '6'`。 +- `MES_QulityInspection_ReceiveCheck` 属于 质量检验,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 质量检验处理。 数据库处理摘要:查询、新增、更新、处理质检数据、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`、`YL_质量检验_质检记录`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@TaskAID bigint,`、`@检测类型编号 int,`、`@质检类型 NVARCHAR(50),`、`@零件名称 NVARCHAR(200),`、`@内部合同号 int,`、`@零件编码 NVARCHAR(200),`、`@计划号 int,`、`@工序名称 NVARCHAR(100),`、`@检测数量 INT,`、`@合格数 INT,`、`@不合格数 INT,`、`@检测人 NVARCHAR(50),`、`@检测时间 DATETIME,`、`@计划生产数 INT,`、`@检测说明 NVARCHAR(MAX)`。 主要返回字段线索:`@分配数量 = ISNULL(指派数量, 0)`。 关键过滤/匹配条件:`WHERE AID = @TaskAID`;`WHERE qc.TaskAID = @TaskAID`;`WHERE task.订单编号 = @计划号`;`AND task.订单行号 = @当前订单行号`;`AND qc.质检类型 = '收检'`;`WHERE 订单编号 = @计划号`;`AND 订单行号 = @当前订单行号 + 1`;`AND ISNULL(订单拆分内码, 1) = 1`;`IF @下一道工序AID IS NOT NULL and @合格数 > 0`;`WHERE AID = @下一道工序AID and isnull(任务状态, 0) < 1`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO [YL_MESDB].[dbo].[YL_质量检验_质检记录] (`;`UPDATE [dbo].[MES_接口_生产计划_生产任务]`;`SET 任务状态 = 4`;`SET 任务状态 = 1`。 实现特征:事务控制、异常捕获。 +- `加工中心_异常工时_获取操作记录列表` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 报工或工时处理。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:表:`生产管理_工时校验_校验工时表`、`YL_加工中心_操作记录表`。 入参/分页参数:`@操作人 nvarchar(50)`。 主要返回字段线索:`o.AID, `、`o.操作类别编号, `、`o.操作类别, `、`o.阶段标识, `、`o.工序名称, `、`o.工位编号, `、`o.工位名称, `、`o.操作人 as 指派对象, `、`o.合同号, `、`o.订单编号 as 订单号, `。 关键过滤/匹配条件:`WHERE c.AID IS NULL and o.操作人 = @操作人 and o.操作类别编号 in ('8', '9')`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `加工中心_修改工时_保存修改记录` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理报工/工时。 读取/关联对象:表:`YL_加工中心_操作记录表`。 写入或更新对象:`YL_加工中心_操作记录表`。 入参/分页参数:`@TaskAID bigint,`、`@开始时间 datetime,`、`@结束时间 datetime,`、`@工时 int,`、`@操作人 nvarchar(50),`、`@最后编辑人 nvarchar(50)`。 关键过滤/匹配条件:`where AID = @TaskAID`。 关键写入/状态处理语句线索:`update [dbo].[YL_加工中心_操作记录表]`;`set 最后编辑时间 = GETDATE(), 最后编辑人 = @最后编辑人, 实际工时 = @工时, 开始时间 = @开始时间, 结束时间 = @结束时间`。 +- `生产管理_加工中心_生产发料查询` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_OWOR_OIGE`。 入参/分页参数:`@生产订单号 nvarchar(50)`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`select * from SAP.SBO_YL.dbo.UBT_OWOR_OIGE where 生产订单号 = @生产订单号`。 关键写入/状态处理语句线索:`set nocount on;`。 实现特征:读取 SAP 数据库对象。 +- `工艺管理_图纸维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_零件图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`、`worker`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `工艺管理_工艺维护_查看图纸` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`物料基础数据_工艺图纸`。 入参/分页参数:`@物料编号 NVARCHAR(50)`。 主要返回字段线索:`CASE`、`WHEN uploadTime IS NOT NULL`、`AND ISDATE(uploadTime) = 1`、`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`、`THEN name`、`ELSE uid`、`END AS uid`。 关键过滤/匹配条件:`AND ISDATE(uploadTime) = 1`;`AND CONVERT(DATETIME, uploadTime) > = '2026-01-27 13:01:00'`;`WHERE num = @物料编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `生产管理_加工中心_退库` 属于 生产执行/工时,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、新增、处理质检数据。 读取/关联对象:表:`质量检验_质检任务_SAP`。 写入或更新对象:`质量检验_质检任务_SAP`。 入参/分页参数:`@生产订单号 bigint,`、`@编码 nvarchar(500),`、`@名称 nvarchar(500),`、`@数量 float,`、`@单位 nvarchar(50),`、`@批次信息 nvarchar(50),`、`@最后编辑人 nvarchar(50)`。 主要返回字段线索:`@行号 = max(isnull(行号, 0))`。 关键过滤/匹配条件:`select @行号 = max(isnull(行号, 0)) from [dbo].[质量检验_质检任务_SAP] where [订单编号] = @生产订单号 and [订单类型] = '202-60'`。 关键写入/状态处理语句线索:`insert into [dbo].[质量检验_质检任务_SAP] ( [订单编号]`。 +- `Prog_MES_GetProductOrder_byAID` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@TaskAID bigint`。 主要返回字段线索:`@订单编号 = [订单编号], @订单行号 = 订单行号`。 关键过滤/匹配条件:`select @订单编号 = [订单编号], @订单行号 = 订单行号 FROM [View_生产订单_MES] where TaskAID = @TaskAID`;`WHERE vt.[订单编号] = vo.[订单编号]`;`AND vt.[订单行号] = vo.[订单行号]-1`;`AND qc.检测类型编号 = '6'`;`WHERE [TaskAID] = @TaskAID`。 +- `MES_QulityInspection_CheckItemData_Save` 属于 质量检验,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新、处理质检数据、处理计划/派工。 读取/关联对象:表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据`。 写入或更新对象:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据`。 入参/分页参数:`@TaskAID bigint`、`@物料编号 nvarchar(100)`、`@阶段标识 int`、`@工序名称 nvarchar(100)`、`@计划号 int`、`@检测项目 nvarchar(500)`、`@理论值 nvarchar(50)`、`@上限值 nvarchar(50)`、`@下限值 nvarchar(50)`、`@实测值 nvarchar(50)`、`@测量单位 nvarchar(50)`、`@检验比例 nvarchar(50)`、`@检具 nvarchar(50)`、`@检测结果 int`、`@合格数 int`、`@不合格数 int`、`@备注 nvarchar(200)`、`@检测人 nvarchar(50)`、`@检测时间 datetime`、`@当前检测零件编号 int`、`@质检类型 nvarchar(100)`、`@检测类型编号 nvarchar(100)`、`@零件名称 nvarchar(100)`、`@内部合同号 nvarchar(100)`。 主要返回字段线索:`@ExistingQT_AID = QT_AID`。 关键过滤/匹配条件:`WHERE TaskAID = @TaskAID`;`AND 零件编码 = @零件编码`;`AND 工序名称 = @工序名称`;`AND 质检类型 = @质检类型`;`AND 检测人 = @检测人`;`AND CONVERT(DATE, 检测时间) = CONVERT(DATE, @检测时间);`;`WHERE QT_AID = @ExistingQT_AID;`;`WHERE QT_AID = @ExistingQT_AID`;`AND 零件编号 = @零件编码`;`AND 当前检测零件编号 = @当前检测零件编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO [dbo].[YL_质量检验_质检记录](`;`SET @QT_AID = SCOPE_IDENTITY();`;`SET @ExistingQT_AID = @QT_AID;`;`SET @CurrentQualifiedCount = @CurrentQualifiedCount + @合格数;`;`SET @CurrentUnqualifiedCount = @CurrentUnqualifiedCount + @不合格数;`;`SET @CurrentInspectionCount = @CurrentInspectionCount + @检验数量;`;`UPDATE [dbo].[YL_质量检验_质检记录]`;`SET`;`SET @QT_AID = @ExistingQT_AID;`;`SET @PartResult = 0;`;`INSERT INTO [dbo].[YL_质量检验_质检记录_检测零件](`。 实现特征:事务控制、异常捕获。 +- `MES_QulityInspection_GetItemStandard` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:表:`YL_质量检验_检测标准`。 入参/分页参数:`@物料编号 nvarchar(50)`、`@工序名称编号 int`、`@检测类别编号 int`。 主要返回字段线索:`[物料编号]`、`[工序名称编号]`、`[检测项目]`、`[理论值]`、`[上限值]`、`[下限值]`、`[测量单位]`、`[检验比例]`、`[检具]`、`[备注]`。 关键过滤/匹配条件:`where [物料编号] = @物料编号 and [工序名称编号] = @工序名称编号 and [检测类别编号] = @检测类别编号`。 +- `Prog_MES_GetProductOrder_byAID` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:表:`YL_质量检验_质检记录`;视图:`View_生产订单_MES`。 入参/分页参数:`@TaskAID bigint`。 主要返回字段线索:`@订单编号 = [订单编号], @订单行号 = 订单行号`。 关键过滤/匹配条件:`select @订单编号 = [订单编号], @订单行号 = 订单行号 FROM [View_生产订单_MES] where TaskAID = @TaskAID`;`WHERE vt.[订单编号] = vo.[订单编号]`;`AND vt.[订单行号] = vo.[订单行号]-1`;`AND qc.检测类型编号 = '6'`;`WHERE [TaskAID] = @TaskAID`。 +- `MES_QulityInspection_GetItemStandard` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:表:`YL_质量检验_检测标准`。 入参/分页参数:`@物料编号 nvarchar(50)`、`@工序名称编号 int`、`@检测类别编号 int`。 主要返回字段线索:`[物料编号]`、`[工序名称编号]`、`[检测项目]`、`[理论值]`、`[上限值]`、`[下限值]`、`[测量单位]`、`[检验比例]`、`[检具]`、`[备注]`。 关键过滤/匹配条件:`where [物料编号] = @物料编号 and [工序名称编号] = @工序名称编号 and [检测类别编号] = @检测类别编号`。 +- `MES_QulityInspection_CheckItemData_Save` 属于 质量检验,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、新增、更新、处理质检数据、处理计划/派工。 读取/关联对象:表:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据`。 写入或更新对象:`YL_质量检验_质检记录`、`YL_质量检验_质检记录_检测零件`、`YL_质量检验_质检记录_检测数据`。 入参/分页参数:`@TaskAID bigint`、`@物料编号 nvarchar(100)`、`@阶段标识 int`、`@工序名称 nvarchar(100)`、`@计划号 int`、`@检测项目 nvarchar(500)`、`@理论值 nvarchar(50)`、`@上限值 nvarchar(50)`、`@下限值 nvarchar(50)`、`@实测值 nvarchar(50)`、`@测量单位 nvarchar(50)`、`@检验比例 nvarchar(50)`、`@检具 nvarchar(50)`、`@检测结果 int`、`@合格数 int`、`@不合格数 int`、`@备注 nvarchar(200)`、`@检测人 nvarchar(50)`、`@检测时间 datetime`、`@当前检测零件编号 int`、`@质检类型 nvarchar(100)`、`@检测类型编号 nvarchar(100)`、`@零件名称 nvarchar(100)`、`@内部合同号 nvarchar(100)`。 主要返回字段线索:`@ExistingQT_AID = QT_AID`。 关键过滤/匹配条件:`WHERE TaskAID = @TaskAID`;`AND 零件编码 = @零件编码`;`AND 工序名称 = @工序名称`;`AND 质检类型 = @质检类型`;`AND 检测人 = @检测人`;`AND CONVERT(DATE, 检测时间) = CONVERT(DATE, @检测时间);`;`WHERE QT_AID = @ExistingQT_AID;`;`WHERE QT_AID = @ExistingQT_AID`;`AND 零件编号 = @零件编码`;`AND 当前检测零件编号 = @当前检测零件编号;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO [dbo].[YL_质量检验_质检记录](`;`SET @QT_AID = SCOPE_IDENTITY();`;`SET @ExistingQT_AID = @QT_AID;`;`SET @CurrentQualifiedCount = @CurrentQualifiedCount + @合格数;`;`SET @CurrentUnqualifiedCount = @CurrentUnqualifiedCount + @不合格数;`;`SET @CurrentInspectionCount = @CurrentInspectionCount + @检验数量;`;`UPDATE [dbo].[YL_质量检验_质检记录]`;`SET`;`SET @QT_AID = @ExistingQT_AID;`;`SET @PartResult = 0;`;`INSERT INTO [dbo].[YL_质量检验_质检记录_检测零件](`。 实现特征:事务控制、异常捕获。 + +## 57. src/views/QualityManagement/QualityDetails/index.vue + +**页面位置**:`src/views/QualityManagement/QualityDetails/index.vue` +**所属模块**:QualityManagement / QualityDetails +**源码行数**:308 + +### 页面功能 + +该页面查询质检明细。用户按订单、物料、检验类型、时间等条件查询和导出检测明细。 + +页面可见的操作/字段包括 “查询”、“Excel导出”、“全部”、“收检”、“终检”、“来料检验”、“退库检验”、“序号”、“质检类型”、“零件编码”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `质量管理_质检明细_导出`、`质量管理_质检明细_查询` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `质量管理_质检明细_导出` -> `质量管理_质检明细_查询` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`Excel导出`、`全部`、`收检`、`终检`、`来料检验`、`退库检验`、`序号`、`质检类型`、`零件编码`、`零件名称`、`销售订单号`、`生产订单号`、`工序名称`、`工位名称`、`供应商代码`、`检验数量`、`合格数` + +主要方法线索:`tableRowClassName`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.QualityStatus` | `@质检类型` | `SELECT 256*12 AS 质检类型, 256*40 AS 零件编码, 256*20 AS 零件名称, 256*12 AS 内部合同号, 256*12 AS 计划号, ` | +| 参数 | `this.startDate` | `@开始日期` | - | +| 参数 | `this.endDate` | `@结束日期` | - | +| 参数 | `this.orderNo` | `@订单号` | - | +| 参数 | `this.contractNo` | `@合同号` | `SELECT 256*12 AS 质检类型, 256*40 AS 零件编码, 256*20 AS 零件名称, 256*12 AS 内部合同号, 256*12 AS 计划号, ` | +| 参数 | `this.productCode` | `@零件编码` | `SELECT 256*12 AS 质检类型, 256*40 AS 零件编码, 256*20 AS 零件名称, 256*12 AS 内部合同号, 256*12 AS 计划号, ` | +| 参数 | `this.productName` | `@零件名称` | `SELECT 256*12 AS 质检类型, 256*40 AS 零件编码, 256*20 AS 零件名称, 256*12 AS 内部合同号, 256*12 AS 计划号, ` | +| 参数 | `orderId` | `@订单编号` | - | +| 参数 | `this.pageCurrent` | `@PageCurrent` | - | +| 参数 | `this.pageSize` | `@pageSize` | - | +| 参数 | `'1111', 'int', '1'` | `@PageCount` | - | +| 参数 | `'1111', 'int', '1'` | `@ItemCount` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `质检类型` | - | `SELECT 256*12 AS 质检类型, 256*40 AS 零件编码, 256*20 AS 零件名称, 256*12 AS 内部合同号, 256*12 AS 计划号, ` | +| 显示列 | `零件编码` | - | `SELECT 256*12 AS 质检类型, 256*40 AS 零件编码, 256*20 AS 零件名称, 256*12 AS 内部合同号, 256*12 AS 计划号, ` | +| 显示列 | `零件名称` | - | `SELECT 256*12 AS 质检类型, 256*40 AS 零件编码, 256*20 AS 零件名称, 256*12 AS 内部合同号, 256*12 AS 计划号, ` | +| 显示列 | `销售订单号` | - | `SELECT 256*12 AS 质检类型, 256*40 AS 零件编码, 256*20 AS 零件名称, 256*12 AS 内部合同号, 256*12 AS 计划号, ` | +| 显示列 | `生产订单号` | - | `SELECT 256*12 AS 质检类型, 256*40 AS 零件编码, 256*20 AS 零件名称, 256*12 AS 内部合同号, 256*12 AS 计划号, ` | +| 显示列 | `工序名称` | - | `256*15 AS 工序名称, 256*15 AS 检验数量, 256*10 AS 合格数, 256*25 AS 不合格数, 256*12 AS 检测人, 256*10 AS 工位名称, ` | +| 显示列 | `工位名称` | - | `256*15 AS 工序名称, 256*15 AS 检验数量, 256*10 AS 合格数, 256*25 AS 不合格数, 256*12 AS 检测人, 256*10 AS 工位名称, ` | +| 显示列 | `供应商代码` | - | `供应商代码` | +| 显示列 | `检验数量` | - | `256*15 AS 工序名称, 256*15 AS 检验数量, 256*10 AS 合格数, 256*25 AS 不合格数, 256*12 AS 检测人, 256*10 AS 工位名称, ` | +| 显示列 | `合格数` | - | `256*15 AS 工序名称, 256*15 AS 检验数量, 256*10 AS 合格数, 256*25 AS 不合格数, 256*12 AS 检测人, 256*10 AS 工位名称, ` | +| 显示列 | `不合格数` | - | `256*15 AS 工序名称, 256*15 AS 检验数量, 256*10 AS 合格数, 256*25 AS 不合格数, 256*12 AS 检测人, 256*10 AS 工位名称, ` | +| 显示列 | `检测人` | - | `256*15 AS 工序名称, 256*15 AS 检验数量, 256*10 AS 合格数, 256*25 AS 不合格数, 256*12 AS 检测人, 256*10 AS 工位名称, ` | +| 显示列 | `检测时间` | - | `256*20 AS 检测时间, 256*20 AS 检测说明` | +| 显示列 | `检测说明` | - | `256*20 AS 检测时间, 256*20 AS 检测说明` | +| 输入字段 | `orderNo` | `@订单号` | - | +| 输入字段 | `contractNo` | `@合同号` | - | +| 输入字段 | `productCode` | `@零件编码` | - | +| 输入字段 | `productName` | `@零件名称` | - | +| 输入字段 | `QualityStatus` | `@质检类型` | - | +| 输入字段 | `startDate` | `@开始日期` | - | +| 输入字段 | `endDate` | `@结束日期` | - | +| 输入字段 | `activeTab` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- Excel/报表导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 174 | 2001(导出/报表类过程) | `质量管理_质检明细_导出` | 质量检验处理 | 查询、处理质检数据、处理计划/派工 | 视图:`View_质检明细` | +| 248 | 11(当前通用存储过程查询/执行) | `质量管理_质检明细_查询` | 查询/读取数据 | 分页、处理质检数据、处理计划/派工 | 视图:`View_质检明细` | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `质量管理_质检明细_导出`:`CREATE PROCEDURE [dbo].[质量管理_质检明细_导出]`;`@质检类型 nvarchar(4000) = '10', `;`SELECT '质检明细_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype`;`SELECT 256*12 AS 质检类型, 256*40 AS 零件编码, 256*20 AS 零件名称, 256*12 AS 内部合同号, 256*12 AS 计划号, `;`SELECT 0 AS 质检类型, 0 AS 零件编码, 0 AS 零件名称, 0 AS 内部合同号, 0 AS 计划号, `;`[质检类型]`;`FROM [dbo].[View_质检明细]'`;`IF @质检类型 = '10'` +- `质量管理_质检明细_查询`:`CREATE PROCEDURE [dbo].[质量管理_质检明细_查询]`;`@质检类型 nvarchar(4000) = '10', `;`DECLARE @tbname sysname = ' [dbo].[View_质检明细] '`;`IF @质检类型 = '10'`;`ELSE IF @质检类型 = '0'`;`SET @where = @where + ' AND 质检类型 = ''收检'' '`;`ELSE IF @质检类型 = '1'`;`SET @where = @where + ' AND 质检类型 = ''终检'' '` + +### 数据库调用链 + +- `src/views/QualityManagement/QualityDetails/index.vue` -> `质量管理_质检明细_导出` -> 视图:`View_质检明细` -> 质量检验处理 +- `src/views/QualityManagement/QualityDetails/index.vue` -> `质量管理_质检明细_查询` -> 视图:`View_质检明细` -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `质量管理_质检明细_导出` 属于 质量检验,前端以 type=2001(导出/报表类过程)调用,页面用途是 质量检验处理。 数据库处理摘要:查询、处理质检数据、处理计划/派工。 读取/关联对象:视图:`View_质检明细`。 入参/分页参数:`@质检类型 nvarchar(4000)`、`@开始日期 datetime`、`@结束日期 datetime`、`@订单号 nvarchar(4000)`、`@合同号 nvarchar(4000)`、`@零件编码 nvarchar(4000)`、`@零件名称 nvarchar(4000)`。 主要返回字段线索:`'质检明细_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype`、`SELECT 256*12 AS 质检类型, 256*40 AS 零件编码, 256*20 AS 零件名称, 256*12 AS 内部合同号, 256*12 AS 计划号, `、`256*15 AS 工序名称, 256*15 AS 检验数量, 256*10 AS 合格数, 256*25 AS 不合格数, 256*12 AS 检测人, 256*10 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 @where nvarchar(max) = ' where '`、`DECLARE @selStr nvarchar(max) = `、`'SELECT`。 关键过滤/匹配条件:`DECLARE @where nvarchar(max) = ' where '`;`SET @where = @where + ' (1 = 1) '`;`SET @where = @where + ' AND 质检类型 = ''收检'' '`;`SET @where = @where + ' AND 质检类型 = ''终检'' '`;`SET @where = @where + ' AND 质检类型 = ''来料检验'' '`;`SET @where = @where + ' AND 质检类型 = ''退库检验'' '`;`SET @where = @where + ' AND 计划号 LIKE ''%' + @订单号 + '%'' '`;`SET @where = @where + ' AND 零件编码 LIKE ''%' + @零件编码 + '%'' '`;`SET @where = @where + ' AND 零件名称 LIKE ''%' + @零件名称 + '%'' '`;`SET @where = @where + ' AND 检测时间 > = ''' + CONVERT(nvarchar(30), @开始日期, 120) + ''' '`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @where = @where + ' (1 = 1) '`;`SET @where = @where + ' AND 质检类型 = ''收检'' '`;`SET @where = @where + ' AND 质检类型 = ''终检'' '`;`SET @where = @where + ' AND 质检类型 = ''来料检验'' '`;`SET @where = @where + ' AND 质检类型 = ''退库检验'' '`;`SET @where = @where + ' AND 计划号 LIKE ''%' + @订单号 + '%'' '`;`SET @where = @where + ' AND 零件编码 LIKE ''%' + @零件编码 + '%'' '`;`SET @where = @where + ' AND 零件名称 LIKE ''%' + @零件名称 + '%'' '`;`SET @where = @where + ' AND 检测时间 > = ''' + CONVERT(nvarchar(30), @开始日期, 120) + ''' '`;`SET @where = @where + ' AND 检测时间 < = ''' + CONVERT(nvarchar(30), @结束日期, 120) + ''' '`;`SET @selStr = @selStr + @where + ' ORDER BY 检测时间 desc'`。 排序/分组/分页线索:`SET @selStr = @selStr + @where + ' ORDER BY 检测时间 desc'`。 +- `质量管理_质检明细_查询` 属于 质量检验,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:分页、处理质检数据、处理计划/派工。 读取/关联对象:视图:`View_质检明细`。 入参/分页参数:`@质检类型 nvarchar(4000)`、`@开始日期 datetime`、`@结束日期 datetime`、`@订单号 nvarchar(4000)`、`@合同号 nvarchar(4000)`、`@零件编码 nvarchar(4000)`、`@零件名称 nvarchar(4000)`、`@PageCurrent int`、`@PageSize int`、`@PageCount int`、`@ItemCount int`。 关键过滤/匹配条件:`DECLARE @where nvarchar(4000)`;`SET @where = ' (1 = 1) '`;`SET @where = @where + ' AND (1 = 1) '`;`SET @where = @where + ' AND 质检类型 = ''收检'' '`;`SET @where = @where + ' AND 质检类型 = ''终检'' '`;`SET @where = @where + ' AND 质检类型 = ''来料检验'' '`;`SET @where = @where + ' AND 质检类型 = ''退库检验'' '`;`SET @where = @where + ' AND 计划号 LIKE ''%' + @订单号 + '%'' '`;`SET @where = @where + ' AND 零件编码 LIKE ''%' + @零件编码 + '%'' '`;`SET @where = @where + ' AND 零件名称 LIKE ''%' + @零件名称 + '%'' '`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @where = ' (1 = 1) '`;`SET @where = @where + ' AND (1 = 1) '`;`SET @where = @where + ' AND 质检类型 = ''收检'' '`;`SET @where = @where + ' AND 质检类型 = ''终检'' '`;`SET @where = @where + ' AND 质检类型 = ''来料检验'' '`;`SET @where = @where + ' AND 质检类型 = ''退库检验'' '`;`SET @where = @where + ' AND 计划号 LIKE ''%' + @订单号 + '%'' '`;`SET @where = @where + ' AND 零件编码 LIKE ''%' + @零件编码 + '%'' '`;`SET @where = @where + ' AND 零件名称 LIKE ''%' + @零件名称 + '%'' '`;`SET @where = @where + ' AND 检测时间 > = ''' + CONVERT(nvarchar(30), @开始日期, 120) + ''' '`;`SET @where = @where + ' AND 检测时间 < = ''' + CONVERT(nvarchar(30), @结束日期, 120) + ''' '`。 实现特征:分页。 + +## 58. src/views/QualityManagement/QualityStandardQuery/index copy.vue + +**页面位置**:`src/views/QualityManagement/QualityStandardQuery/index copy.vue` +**所属模块**:QualityManagement / QualityStandardQuery +**源码行数**:816 + +### 页面功能 + +该页面维护/查询检验标准。用户按物料、工序、检测项目维护理论值、上下限、量具和启用状态。 + +页面可见的操作/字段包括 “查询 新增标准 修改 删除 确定 取 消”、“确定 取 消”、“item.label”、“序号”、“零件号”、“工序”、“类型”、“检验项目”、“检验内容”、“上限值”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `Prog_MES_LoadProcess`、`查询字典`、`质量管理_检验标准表_新增`、`质量管理_检验标准表_查询`、`质量管理_检验标准表_修改`、`质量管理_检验标准表_删除` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `Prog_MES_LoadProcess` -> `查询字典` -> `质量管理_检验标准表_新增` -> `质量管理_检验标准表_查询` -> `质量管理_检验标准表_修改` -> `质量管理_检验标准表_删除` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询 新增标准 修改 删除 确定 取 消`、`确定 取 消`、`item.label`、`序号`、`零件号`、`工序`、`类型`、`检验项目`、`检验内容`、`上限值`、`下限值`、`单位`、`检验比例`、`检具`、`备注`、`操作`、`请选择零件号`、`请选择工序` + +主要方法线索:`getNoList`、`for` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.checkForm.零件号` | `@零件号` | - | +| 参数 | `partNoItem ? partNoItem.value : ""` | `@零件编号` | - | +| 参数 | `this.checkForm.工序` | `@工序` | - | +| 参数 | `processItem ? processItem.value : ""` | `@工序编号` | - | +| 参数 | `this.checkForm.类型` | `@类型` | - | +| 参数 | `typeItem ? typeItem.value : ""` | `@类型编号` | - | +| 参数 | `this.checkForm.检验比例` | `@检验比例` | - | +| 参数 | `this.checkForm.检验项目` | `@检验项目` | - | +| 参数 | `this.checkForm.检验内容` | `@检验内容` | - | +| 参数 | `this.checkForm.上限值` | `@上限值` | - | +| 参数 | `this.checkForm.下限值` | `@下限值` | - | +| 参数 | `this.checkForm.单位` | `@单位` | - | +| 参数 | `this.checkForm.检具` | `@检具` | - | +| 参数 | `this.checkForm.备注` | `@备注` | - | +| 参数 | `this.partNo` | `@零件编号` | - | +| 参数 | `this.process` | `@工序编号` | - | +| 参数 | `this.type` | `@类型编号` | - | +| 参数 | `this.currentEditRow.ID` | `@ID` | - | +| 参数 | `row.ID` | `@ID` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `零件号` | - | `零件号` | +| 显示列 | `工序` | - | `[工艺编号], [工序名称]` | +| 显示列 | `类型` | - | `类型` | +| 显示列 | `检验项目` | - | `检验项目` | +| 显示列 | `检验内容` | - | `检验内容` | +| 显示列 | `上限值` | - | `上限值, ` | +| 显示列 | `下限值` | - | `下限值, ` | +| 显示列 | `单位` | - | `测量单位, ` | +| 显示列 | `检验比例` | - | `检验比例, ` | +| 显示列 | `检具` | - | `检具` | +| 显示列 | `备注` | - | `备注` | +| 显示列 | `操作` | - | `操作` | +| 输入字段 | `partNo` | `@零件编号` | - | +| 输入字段 | `process` | `@工序编号` | - | +| 输入字段 | `type` | `@类型编号` | - | +| 输入字段 | `checkForm.零件号` | `@零件号` | - | +| 输入字段 | `checkForm.工序` | `@工序` | - | +| 输入字段 | `checkForm.类型` | `@类型` | - | +| 输入字段 | `checkForm.检验比例` | `@检验比例` | - | +| 输入字段 | `checkForm.检验项目` | `@检验项目` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 512 | 11(当前通用存储过程查询/执行) | `Prog_MES_LoadProcess` | 查询/读取数据 | 查询 | 表:`基础表_工序` | +| 524 | 11(当前通用存储过程查询/执行) | `查询字典` | 查询/读取数据 | 查询 | 表:`YL_基础表_数据字典` | +| 598 | 12(当前通用存储过程写入/业务动作) | `质量管理_检验标准表_新增` | 新增业务数据 | 查询、新增、处理质检数据 | 未在 SQL 中解析到明确依赖 | +| 647 | 11(当前通用存储过程查询/执行) | `质量管理_检验标准表_查询` | 查询/读取数据 | 查询、处理质检数据 | 未在 SQL 中解析到明确依赖 | +| 734 | 12(当前通用存储过程写入/业务动作) | `质量管理_检验标准表_修改` | 更新/保存业务数据 | 查询、更新、处理质检数据 | 未在 SQL 中解析到明确依赖 | +| 773 | 12(当前通用存储过程写入/业务动作) | `质量管理_检验标准表_删除` | 删除业务数据 | 查询、删除、处理质检数据 | 未在 SQL 中解析到明确依赖 | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +- `src/views/QualityManagement/QualityStandardQuery/index copy.vue` -> `Prog_MES_LoadProcess` -> 表:`基础表_工序` -> 查询/读取数据 +- `src/views/QualityManagement/QualityStandardQuery/index copy.vue` -> `查询字典` -> 表:`YL_基础表_数据字典` -> 查询/读取数据 +- `src/views/QualityManagement/QualityStandardQuery/index copy.vue` -> `质量管理_检验标准表_新增` -> 未在 SQL 中解析到明确依赖 -> 新增业务数据 +- `src/views/QualityManagement/QualityStandardQuery/index copy.vue` -> `质量管理_检验标准表_查询` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/QualityManagement/QualityStandardQuery/index copy.vue` -> `质量管理_检验标准表_修改` -> 未在 SQL 中解析到明确依赖 -> 更新/保存业务数据 +- `src/views/QualityManagement/QualityStandardQuery/index copy.vue` -> `质量管理_检验标准表_删除` -> 未在 SQL 中解析到明确依赖 -> 删除业务数据 + +### 存储过程处理逻辑明细 + +- `Prog_MES_LoadProcess` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`基础表_工序`。 主要返回字段线索:`[工艺编号], [工序名称]`。 排序/分组/分页线索:`SELECT [工艺编号], [工序名称] FROM [基础表_工序] ORDER BY [工艺编号]`。 +- `查询字典` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`YL_基础表_数据字典`。 主要返回字段线索:`*`。 +- `质量管理_检验标准表_新增` 属于 工艺与图纸,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 新增业务数据。 数据库处理摘要:查询、新增、处理质检数据。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`YL_质量检验_检测标准`。 入参/分页参数:`@物料编号 NVARCHAR(100)`、`@工序名称编号 INT`、`@检测项目 NVARCHAR(500)`、`@理论值 NVARCHAR(50)`、`@上限值 NVARCHAR(50)`、`@下限值 NVARCHAR(50)`、`@测量单位 NVARCHAR(50)`、`@检验比例 NVARCHAR(50)`、`@检具 NVARCHAR(100)`、`@备注 NVARCHAR(500)`、`@检测类别编号 INT`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO YL_质量检验_检测标准 (`。 实现特征:事务控制、异常捕获。 +- `质量管理_检验标准表_查询` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@物料编号 NVARCHAR(100)`、`@工序名称编号 INT`、`@检测类别编号 INT`。 主要返回字段线索:`AID, `、`物料编号, `、`工序名称编号, `、`检测类别编号, `、`检测项目, `、`理论值, `、`上限值, `、`下限值, `、`测量单位, `、`检验比例, `。 关键过滤/匹配条件:`WHERE (@物料编号 IS NULL OR 物料编号 = @物料编号)`;`AND (@工序名称编号 IS NULL OR 工序名称编号 = @工序名称编号)`;`AND (@检测类别编号 IS NULL OR 检测类别编号 = @检测类别编号)`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY 物料编号, 工序名称编号, 检测类别编号;`。 +- `质量管理_检验标准表_修改` 属于 工艺与图纸,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、更新、处理质检数据。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`YL_质量检验_检测标准`。 入参/分页参数:`@AID INT,`、`@物料编号 NVARCHAR(100)`、`@工序名称编号 INT`、`@检测项目 NVARCHAR(500)`、`@理论值 NVARCHAR(50)`、`@上限值 NVARCHAR(50)`、`@下限值 NVARCHAR(50)`、`@测量单位 NVARCHAR(50)`、`@检验比例 NVARCHAR(50)`、`@检具 NVARCHAR(100)`、`@备注 NVARCHAR(500)`、`@检测类别编号 INT`。 关键过滤/匹配条件:`WHERE AID = @AID;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`UPDATE YL_质量检验_检测标准`;`SET`。 实现特征:事务控制、异常捕获。 +- `质量管理_检验标准表_删除` 属于 工艺与图纸,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 删除业务数据。 数据库处理摘要:查询、删除、处理质检数据。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`YL_质量检验_检测标准`。 入参/分页参数:`@AID INT`。 主要返回字段线索:`1`。 关键过滤/匹配条件:`IF NOT EXISTS (SELECT 1 FROM YL_质量检验_检测标准 WHERE AID = @AID)`;`DELETE FROM YL_质量检验_检测标准 WHERE AID = @AID;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`DELETE FROM YL_质量检验_检测标准 WHERE AID = @AID;`。 实现特征:事务控制、异常捕获。 + +## 59. src/views/QualityManagement/QualityStandardQuery/index.vue + +**页面位置**:`src/views/QualityManagement/QualityStandardQuery/index.vue` +**所属模块**:QualityManagement / QualityStandardQuery +**源码行数**:786 + +### 页面功能 + +该页面维护/查询检验标准。用户按物料、工序、检测项目维护理论值、上下限、量具和启用状态。 + +页面可见的操作/字段包括 “查询 新增标准 修改 删除 确定 取 消”、“确定 取 消”、“item.label”、“序号”、“物料编号”、“工序名称”、“检测类别”、“检测项目”、“上限值”、“下限值”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `MES_ProcessManagement_PartGet`、`Prog_MES_LoadProcess`、`查询字典`、`质量管理_检验标准表_新增`、`质量管理_检验标准表_查询`、`质量管理_检验标准表_修改` 等过程 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `MES_ProcessManagement_PartGet` -> `Prog_MES_LoadProcess` -> `查询字典` -> `质量管理_检验标准表_新增` -> `质量管理_检验标准表_查询` -> `质量管理_检验标准表_修改` -> `质量管理_检验标准表_删除` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询 新增标准 修改 删除 确定 取 消`、`确定 取 消`、`item.label`、`序号`、`物料编号`、`工序名称`、`检测类别`、`检测项目`、`上限值`、`下限值`、`测量单位`、`检验比例`、`检具`、`备注`、`操作`、`理论值`、`检测类别编号`、`请选择物料编号` + +主要方法线索:`getNoList`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.checkForm.物料编号` | `@物料编号` | - | +| 参数 | `this.checkForm.工序名称编号` | `@工序名称编号` | - | +| 参数 | `this.checkForm.检测类别编号` | `@检测类别编号` | - | +| 参数 | `this.checkForm.检测项目` | `@检测项目` | - | +| 参数 | `this.checkForm.理论值` | `@理论值` | - | +| 参数 | `this.checkForm.上限值` | `@上限值` | - | +| 参数 | `this.checkForm.下限值` | `@下限值` | - | +| 参数 | `this.checkForm.测量单位` | `@测量单位` | - | +| 参数 | `this.checkForm.检验比例` | `@检验比例` | - | +| 参数 | `this.checkForm.检具` | `@检具` | - | +| 参数 | `this.checkForm.备注` | `@备注` | - | +| 参数 | `this.物料编号` | `@物料编号` | - | +| 参数 | `this.工序名称编号` | `@工序名称编号` | - | +| 参数 | `this.检测类别编号` | `@检测类别编号` | - | +| 参数 | `this.checkForm.AID` | `@AID` | - | +| 参数 | `row.AID` | `@AID` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `物料编号` | - | `物料编号, ` | +| 显示列 | `工序名称` | - | `[工艺编号], [工序名称]` | +| 显示列 | `检测类别` | - | `检测类别编号, ` | +| 显示列 | `检测项目` | - | `检测项目, ` | +| 显示列 | `上限值` | - | `上限值, ` | +| 显示列 | `下限值` | - | `下限值, ` | +| 显示列 | `测量单位` | - | `测量单位, ` | +| 显示列 | `检验比例` | - | `检验比例, ` | +| 显示列 | `检具` | - | `检具` | +| 显示列 | `备注` | - | `备注` | +| 显示列 | `操作` | - | `操作` | +| 输入字段 | `物料编号` | `@物料编号` | - | +| 输入字段 | `工序名称编号` | `@工序名称编号` | - | +| 输入字段 | `检测类别编号` | `@检测类别编号` | - | +| 输入字段 | `checkForm.物料编号` | `@物料编号` | - | +| 输入字段 | `checkForm.工序名称编号` | `@工序名称编号` | - | +| 输入字段 | `checkForm.检测类别编号` | `@检测类别编号` | - | +| 输入字段 | `checkForm.检具` | `@检具` | - | +| 输入字段 | `checkForm.检测项目` | `@检测项目` | - | +| 输入字段 | `checkForm.理论值` | `@理论值` | - | +| 输入字段 | `checkForm.上限值` | `@上限值` | - | +| 输入字段 | `checkForm.下限值` | `@下限值` | - | +| 输入字段 | `checkForm.测量单位` | `@测量单位` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 522 | 11(当前通用存储过程查询/执行) | `MES_ProcessManagement_PartGet` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM` | +| 544 | 11(当前通用存储过程查询/执行) | `Prog_MES_LoadProcess` | 查询/读取数据 | 查询 | 表:`基础表_工序` | +| 556 | 11(当前通用存储过程查询/执行) | `查询字典` | 查询/读取数据 | 查询 | 表:`YL_基础表_数据字典` | +| 611 | 12(当前通用存储过程写入/业务动作) | `质量管理_检验标准表_新增` | 新增业务数据 | 查询、新增、处理质检数据 | 未在 SQL 中解析到明确依赖 | +| 651 | 11(当前通用存储过程查询/执行) | `质量管理_检验标准表_查询` | 查询/读取数据 | 查询、处理质检数据 | 未在 SQL 中解析到明确依赖 | +| 703 | 12(当前通用存储过程写入/业务动作) | `质量管理_检验标准表_修改` | 更新/保存业务数据 | 查询、更新、处理质检数据 | 未在 SQL 中解析到明确依赖 | +| 742 | 12(当前通用存储过程写入/业务动作) | `质量管理_检验标准表_删除` | 删除业务数据 | 查询、删除、处理质检数据 | 未在 SQL 中解析到明确依赖 | + +### 与 SAP 的交互 + +存储过程内读取 SAP B1 数据库对象: +- MES_ProcessManagement_PartGet: SAP.SBO_YL.dbo.UBT_OITM + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `MES_ProcessManagement_PartGet`:`SELECT top 100 * FROM SAP.SBO_YL.dbo.UBT_OITM where 物料编码 like '' +'%'+@过滤+'%' +''` + +### 数据库调用链 + +- `src/views/QualityManagement/QualityStandardQuery/index.vue` -> `MES_ProcessManagement_PartGet` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM` -> 查询/读取数据 +- `src/views/QualityManagement/QualityStandardQuery/index.vue` -> `Prog_MES_LoadProcess` -> 表:`基础表_工序` -> 查询/读取数据 +- `src/views/QualityManagement/QualityStandardQuery/index.vue` -> `查询字典` -> 表:`YL_基础表_数据字典` -> 查询/读取数据 +- `src/views/QualityManagement/QualityStandardQuery/index.vue` -> `质量管理_检验标准表_新增` -> 未在 SQL 中解析到明确依赖 -> 新增业务数据 +- `src/views/QualityManagement/QualityStandardQuery/index.vue` -> `质量管理_检验标准表_查询` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/QualityManagement/QualityStandardQuery/index.vue` -> `质量管理_检验标准表_修改` -> 未在 SQL 中解析到明确依赖 -> 更新/保存业务数据 +- `src/views/QualityManagement/QualityStandardQuery/index.vue` -> `质量管理_检验标准表_删除` -> 未在 SQL 中解析到明确依赖 -> 删除业务数据 + +### 存储过程处理逻辑明细 + +- `MES_ProcessManagement_PartGet` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_OITM`。 入参/分页参数:`@过滤 NVARCHAR(200)`。 主要返回字段线索:`top 100 *`。 关键过滤/匹配条件:`SELECT top 100 * FROM SAP.SBO_YL.dbo.UBT_OITM where 物料编码 like '' +'%'+@过滤+'%' +''`。 实现特征:读取 SAP 数据库对象。 +- `Prog_MES_LoadProcess` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`基础表_工序`。 主要返回字段线索:`[工艺编号], [工序名称]`。 排序/分组/分页线索:`SELECT [工艺编号], [工序名称] FROM [基础表_工序] ORDER BY [工艺编号]`。 +- `查询字典` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:表:`YL_基础表_数据字典`。 主要返回字段线索:`*`。 +- `质量管理_检验标准表_新增` 属于 工艺与图纸,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 新增业务数据。 数据库处理摘要:查询、新增、处理质检数据。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`YL_质量检验_检测标准`。 入参/分页参数:`@物料编号 NVARCHAR(100)`、`@工序名称编号 INT`、`@检测项目 NVARCHAR(500)`、`@理论值 NVARCHAR(50)`、`@上限值 NVARCHAR(50)`、`@下限值 NVARCHAR(50)`、`@测量单位 NVARCHAR(50)`、`@检验比例 NVARCHAR(50)`、`@检具 NVARCHAR(100)`、`@备注 NVARCHAR(500)`、`@检测类别编号 INT`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`INSERT INTO YL_质量检验_检测标准 (`。 实现特征:事务控制、异常捕获。 +- `质量管理_检验标准表_查询` 属于 工艺与图纸,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@物料编号 NVARCHAR(100)`、`@工序名称编号 INT`、`@检测类别编号 INT`。 主要返回字段线索:`AID, `、`物料编号, `、`工序名称编号, `、`检测类别编号, `、`检测项目, `、`理论值, `、`上限值, `、`下限值, `、`测量单位, `、`检验比例, `。 关键过滤/匹配条件:`WHERE (@物料编号 IS NULL OR 物料编号 = @物料编号)`;`AND (@工序名称编号 IS NULL OR 工序名称编号 = @工序名称编号)`;`AND (@检测类别编号 IS NULL OR 检测类别编号 = @检测类别编号)`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY 物料编号, 工序名称编号, 检测类别编号;`。 +- `质量管理_检验标准表_修改` 属于 工艺与图纸,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、更新、处理质检数据。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`YL_质量检验_检测标准`。 入参/分页参数:`@AID INT,`、`@物料编号 NVARCHAR(100)`、`@工序名称编号 INT`、`@检测项目 NVARCHAR(500)`、`@理论值 NVARCHAR(50)`、`@上限值 NVARCHAR(50)`、`@下限值 NVARCHAR(50)`、`@测量单位 NVARCHAR(50)`、`@检验比例 NVARCHAR(50)`、`@检具 NVARCHAR(100)`、`@备注 NVARCHAR(500)`、`@检测类别编号 INT`。 关键过滤/匹配条件:`WHERE AID = @AID;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`UPDATE YL_质量检验_检测标准`;`SET`。 实现特征:事务控制、异常捕获。 +- `质量管理_检验标准表_删除` 属于 工艺与图纸,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 删除业务数据。 数据库处理摘要:查询、删除、处理质检数据。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`YL_质量检验_检测标准`。 入参/分页参数:`@AID INT`。 主要返回字段线索:`1`。 关键过滤/匹配条件:`IF NOT EXISTS (SELECT 1 FROM YL_质量检验_检测标准 WHERE AID = @AID)`;`DELETE FROM YL_质量检验_检测标准 WHERE AID = @AID;`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`DELETE FROM YL_质量检验_检测标准 WHERE AID = @AID;`。 实现特征:事务控制、异常捕获。 + +## 60. src/views/QualityManagement/Unqualified/index.vue + +**页面位置**:`src/views/QualityManagement/Unqualified/index.vue` +**所属模块**:QualityManagement / Unqualified +**源码行数**:577 + +### 页面功能 + +该页面处理不合格品。用户查询不合格记录,查看处置流程和节点,推进让步放行、返工、报废等处理。 + +页面可见的操作/字段包括 “查询”、“Excel导出”、“打印”、“item.label”、“全部”、“收检”、“终检”、“来料检验”、“退库检验”、“序号”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `人员管理_人员信息查询_质检部门_查询`、`质量管理_不合格品处置_查询` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `人员管理_人员信息查询_质检部门_查询` -> `质量管理_不合格品处置_查询` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`Excel导出`、`打印`、`item.label`、`全部`、`收检`、`终检`、`来料检验`、`退库检验`、`序号`、`质检类型`、`零件编码`、`零件名称`、`内部合同号`、`计划号`、`工序名称`、`工位名称`、`供应商代码` + +主要方法线索:`getCheckerList`、`for` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.QualityStatus` | `@质检类型` | - | +| 参数 | `this.startDate` | `@开始日期` | - | +| 参数 | `this.endDate` | `@结束日期` | - | +| 参数 | `this.orderNo` | `@订单号` | - | +| 参数 | `this.contractNo` | `@合同号` | - | +| 参数 | `this.productCode` | `@零件编码` | - | +| 参数 | `this.productName` | `@零件名称` | - | +| 参数 | `selectedChecker ? selectedChecker.label : 0` | `@检测人` | - | +| 参数 | `this.pageCurrent` | `@PageCurrent` | - | +| 参数 | `this.pageSize` | `@pageSize` | - | +| 参数 | `'1111', 'int', '1'` | `@PageCount` | - | +| 参数 | `'1111', 'int', '1'` | `@ItemCount` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `质检类型` | - | `质检类型` | +| 显示列 | `零件编码` | - | `零件编码` | +| 显示列 | `零件名称` | - | `零件名称` | +| 显示列 | `内部合同号` | - | `内部合同号` | +| 显示列 | `计划号` | - | `计划号` | +| 显示列 | `工序名称` | - | `工序名称` | +| 显示列 | `工位名称` | - | `工位名称` | +| 显示列 | `供应商代码` | - | `供应商代码` | +| 显示列 | `检验数量` | - | `检验数量` | +| 显示列 | `合格数` | - | `合格数` | +| 显示列 | `不合格数` | - | `不合格数` | +| 显示列 | `检测人` | - | `检测人` | +| 显示列 | `检测时间` | - | `检测时间` | +| 显示列 | `检测说明` | - | `检测说明` | +| 显示列 | `操作` | - | `操作` | +| 输入字段 | `orderNo` | `@订单号` | - | +| 输入字段 | `contractNo` | `@合同号` | - | +| 输入字段 | `productCode` | `@零件编码` | - | +| 输入字段 | `productName` | `@零件名称` | - | +| 输入字段 | `checker` | - | - | +| 输入字段 | `QualityStatus` | `@质检类型` | - | +| 输入字段 | `startDate` | `@开始日期` | - | +| 输入字段 | `endDate` | `@结束日期` | - | +| 输入字段 | `activeTab` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- Excel/报表导出 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 316 | 11(当前通用存储过程查询/执行) | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 查询、处理质检数据 | 视图:`登录基础数据_管理人员权限视图` | +| 376 | 11(当前通用存储过程查询/执行) | `质量管理_不合格品处置_查询` | 查询/读取数据 | 分页、处理质检数据、处理计划/派工 | 视图:`View_质检明细` | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `人员管理_人员信息查询_质检部门_查询`:`create PROCEDURE [dbo].[人员管理_人员信息查询_质检部门_查询]` +- `质量管理_不合格品处置_查询`:`@质检类型 nvarchar(4000) = '10', `;`DECLARE @tbname sysname = ' [dbo].[View_质检明细] '`;`IF @质检类型 = '0'`;`SET @where = @where + ' AND 质检类型 = ''收检'' '`;`ELSE IF @质检类型 = '1'`;`SET @where = @where + ' AND 质检类型 = ''终检'' '`;`ELSE IF @质检类型 = '2'`;`SET @where = @where + ' AND 质检类型 = ''来料检验'' '` + +### 数据库调用链 + +- `src/views/QualityManagement/Unqualified/index.vue` -> `人员管理_人员信息查询_质检部门_查询` -> 视图:`登录基础数据_管理人员权限视图` -> 查询/读取数据 +- `src/views/QualityManagement/Unqualified/index.vue` -> `质量管理_不合格品处置_查询` -> 视图:`View_质检明细` -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `人员管理_人员信息查询_质检部门_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理质检数据。 读取/关联对象:视图:`登录基础数据_管理人员权限视图`。 主要返回字段线索:`*`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 +- `质量管理_不合格品处置_查询` 属于 质量检验,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:分页、处理质检数据、处理计划/派工。 读取/关联对象:视图:`View_质检明细`。 入参/分页参数:`@质检类型 nvarchar(4000)`、`@开始日期 datetime`、`@结束日期 datetime`、`@订单号 nvarchar(4000)`、`@合同号 nvarchar(4000)`、`@零件编码 nvarchar(4000)`、`@零件名称 nvarchar(4000)`、`@检测人 nvarchar(4000)`、`@PageCurrent int`、`@PageSize int`、`@PageCount int`、`@ItemCount int`。 关键过滤/匹配条件:`DECLARE @where nvarchar(4000)`;`SET @where = ' (1 = 1) '`;`SET @where = @where + ' AND 质检类型 = ''收检'' '`;`SET @where = @where + ' AND 质检类型 = ''终检'' '`;`SET @where = @where + ' AND 质检类型 = ''来料检验'' '`;`SET @where = @where + ' AND 质检类型 = ''退库检验'' '`;`SET @where = @where + ' AND 计划号 LIKE ''%' + @订单号 + '%'' '`;`SET @where = @where + ' AND 零件编码 LIKE ''%' + @零件编码 + '%'' '`;`SET @where = @where + ' AND 零件名称 LIKE ''%' + @零件名称 + '%'' '`;`SET @where = @where + ' AND 检测人 LIKE ''%' + @检测人 + '%'' '`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`SET @where = ' (1 = 1) '`;`SET @where = @where + ' AND 质检类型 = ''收检'' '`;`SET @where = @where + ' AND 质检类型 = ''终检'' '`;`SET @where = @where + ' AND 质检类型 = ''来料检验'' '`;`SET @where = @where + ' AND 质检类型 = ''退库检验'' '`;`SET @where = @where + ' AND 计划号 LIKE ''%' + @订单号 + '%'' '`;`SET @where = @where + ' AND 零件编码 LIKE ''%' + @零件编码 + '%'' '`;`SET @where = @where + ' AND 零件名称 LIKE ''%' + @零件名称 + '%'' '`;`SET @where = @where + ' AND 检测人 LIKE ''%' + @检测人 + '%'' '`;`SET @where = @where + ' AND 检测时间 > = ''' + CONVERT(nvarchar(30), @开始日期, 120) + ''' '`;`SET @where = @where + ' AND 检测时间 < = ''' + CONVERT(nvarchar(30), @结束日期, 120) + ''' '`。 实现特征:分页。 + +## 61. src/views/SaleManagement/saleorderstatus/index.vue + +**页面位置**:`src/views/SaleManagement/saleorderstatus/index.vue` +**所属模块**:SaleManagement / saleorderstatus +**源码行数**:804 + +### 页面功能 + +该页面查询销售订单状态。用户按销售订单、合同、物料等条件查看销售订单在 SAP/MES 中的履约、生产、发货或关闭状态。 + +页面可见的操作/字段包括 “查询”、“缺料”、“关闭”、“全部”、“已下达发货通知”、“未下达发货通知”、“机加”、“装配”、“是”、“否”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `生产管理_装配中心_缺料查询`、`销售管理_销售订单状态`、`MES_OrderPlanned_DescriptionEdit`、`Prog_MES_LoadStations` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `生产管理_装配中心_缺料查询` -> `销售管理_销售订单状态` -> `MES_OrderPlanned_DescriptionEdit` -> `Prog_MES_LoadStations` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`缺料`、`关闭`、`全部`、`已下达发货通知`、`未下达发货通知`、`机加`、`装配`、`是`、`否`、`加急`、`正常`、`未完成`、`已完成`、`序号`、`工序名称`、`计划数量`、`指派对象` + +主要方法线索:`miss` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `row.产品编码` | `@ItemCode` | - | +| 参数 | `row.订单号` | `@订单号` | - | +| 参数 | `this.orderNo ` | `@订单号` | - | +| 参数 | `'自制件'` | `@物料类型` | - | +| 参数 | `this.contractNo` | `@合同号` | - | +| 参数 | `this.productCode` | `@产品编码` | - | +| 参数 | `this.productName` | `@产品名称` | - | +| 参数 | `this.processName` | `@工序名称` | - | +| 参数 | `this.planStartTime[0` | `@计划开始1` | - | +| 参数 | `this.planStartTime[1` | `@计划开始2` | - | +| 参数 | `this.planendTime[0` | `@计划完成1` | - | +| 参数 | `this.planendTime[1` | `@计划完成2` | - | +| 参数 | `this.completionTime ? this.completionTime[0` | `@要求完工日期1` | - | +| 参数 | `this.completionTime ? this.completionTime[1` | `@要求完工日期2` | - | +| 参数 | `this.productionStatus` | `@排产状态` | - | +| 参数 | `'全部'` | `@指派对象` | - | +| 参数 | `this.plannum` | `@计划号` | `v.计划号, ` | +| 参数 | `this.ShipmentStatus` | `@发货状态` | `isnull(发货状态, 0) as [发货状态], ` | +| 参数 | `this.stockStatus` | `@入库状态` | - | +| 参数 | `this.outsourceStatus === '是' ? 1 : 0` | `@是否外协` | - | +| 参数 | `this.currentRow.订单号` | `@订单号` | - | +| 参数 | `this.currentRow.订单行号` | `@订单行号` | - | +| 参数 | `this.currentRow.拆分内码` | `@订单拆分内码` | - | +| 参数 | `this.editForm.优先级` | `@优先级` | - | +| 参数 | `this.editForm.未完成说明` | `@未完成说明` | - | +| 参数 | `this.editForm.派工特殊说明` | `@派工特殊说明` | - | +| 参数 | `this.$store.state.user.name` | `@最后编辑人` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `工序名称` | - | `工序名称` | +| 显示列 | `计划数量` | - | `计划数量` | +| 显示列 | `指派对象` | - | `指派对象` | +| 显示列 | `开始时间` | - | `计划开始时间` | +| 显示列 | `结束时间` | - | `计划完成时间` | +| 显示列 | `完成进度` | - | `进度` | +| 显示列 | `完成数量` | - | `完成数量` | +| 显示列 | `合格数` | - | `收检合格数` | +| 显示列 | `不良数` | - | `收检不合格数` | +| 显示列 | `任务状态` | - | `任务状态` | +| 显示列 | `加工状态` | - | `加工状态` | +| 显示列 | `操作` | - | `操作` | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 315 | 11(当前通用存储过程查询/执行) | `生产管理_装配中心_缺料查询` | 查询/读取数据 | 查询、读取 SAP B1 数据库对象 | SAP/链接库:`SAP.SBO_YL.dbo.UBT_OPKL_MissQty` | +| 584 | 11(当前通用存储过程查询/执行) | `销售管理_销售订单状态` | 业务存储过程调用 | 查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务 | 视图:`View_生产订单_MES` | +| 618 | 12(当前通用存储过程写入/业务动作) | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 更新、处理计划/派工 | 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` | +| 677 | 11(当前通用存储过程查询/执行) | `Prog_MES_LoadStations` | 查询/读取数据 | 查询、处理外协业务 | 表:`MES_资源主数据` | + +### 与 SAP 的交互 + +存储过程内读取 SAP B1 数据库对象: +- 生产管理_装配中心_缺料查询: SAP.SBO_YL.dbo.UBT_OPKL_MissQty + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `生产管理_装配中心_缺料查询`:`select * from SAP.SBO_YL.dbo.UBT_OPKL_MissQty where DocEntry = @订单号` +- `销售管理_销售订单状态`:`CREATE PROCEDURE [dbo].[销售管理_销售订单状态]`;`@计划完成1 nvarchar(50) = '', `;`@计划完成2 nvarchar(50) = '', `;`@排产状态 nvarchar(50) = '全部', `;`@发货状态 nvarchar(50) = '全部', `;`@入库状态 nvarchar(50) = '全部'`;`拣配状态, `;`isnull(发货状态, 0) as [发货状态], ` +- `MES_OrderPlanned_DescriptionEdit`:`@未完成说明 nvarchar(50) = '', `;`@派工特殊说明 nvarchar(500) = '', `;`Update [MES_接口_生产计划_生产任务] set`;`未完成说明 = @未完成说明, `;`派工特殊说明 = @派工特殊说明, ` + +### 数据库调用链 + +- `src/views/SaleManagement/saleorderstatus/index.vue` -> `生产管理_装配中心_缺料查询` -> SAP/链接库:`SAP.SBO_YL.dbo.UBT_OPKL_MissQty` -> 查询/读取数据 +- `src/views/SaleManagement/saleorderstatus/index.vue` -> `销售管理_销售订单状态` -> 视图:`View_生产订单_MES` -> 业务存储过程调用 +- `src/views/SaleManagement/saleorderstatus/index.vue` -> `MES_OrderPlanned_DescriptionEdit` -> 表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务` -> 更新/保存业务数据 +- `src/views/SaleManagement/saleorderstatus/index.vue` -> `Prog_MES_LoadStations` -> 表:`MES_资源主数据` -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `生产管理_装配中心_缺料查询` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、读取 SAP B1 数据库对象。 读取/关联对象:SAP/链接库:`SAP.SBO_YL.dbo.UBT_OPKL_MissQty`。 入参/分页参数:`@ItemCode nvarchar(500),`、`@订单号 int`。 主要返回字段线索:`*`。 关键过滤/匹配条件:`select * from SAP.SBO_YL.dbo.UBT_OPKL_MissQty where DocEntry = @订单号`。 实现特征:读取 SAP 数据库对象。 +- `销售管理_销售订单状态` 属于 销售/订单状态,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 业务存储过程调用。 数据库处理摘要:查询、处理报工/工时、处理质检数据、处理计划/派工、处理外协业务。 读取/关联对象:视图:`View_生产订单_MES`。 入参/分页参数:`@订单号 int`、`@物料类型 nvarchar(50)`、`@合同号 nvarchar(50)`、`@产品编码 nvarchar(50)`、`@产品名称 nvarchar(50)`、`@工序名称 nvarchar(50)`、`@要求完工日期1 nvarchar(50)`、`@要求完工日期2 nvarchar(50)`、`@计划开始1 nvarchar(50)`、`@计划开始2 nvarchar(50)`、`@计划完成1 nvarchar(50)`、`@计划完成2 nvarchar(50)`、`@排产状态 nvarchar(50)`、`@指派对象 nvarchar(50)`、`@计划号 nvarchar(50)`、`@发货状态 nvarchar(50)`、`@入库状态 nvarchar(50)`。 主要返回字段线索:`top 200`、`v.计划号, `、`拣配状态, `、`入库数量, `、`要求发货日期, `、`isnull(发货状态, 0) as [发货状态], `、`case`、`when isnull(发料状态, 0) = 1 then ''发料齐套''`、`when isnull(发料状态, 0) = 2 then ''发料缺件''`、`when isnull(发料状态, 0) = 0 then ''未发料''`。 关键过滤/匹配条件:`DECLARE @selectStrWhere NVARCHAR(4000) = ' WHERE [物料类型] = ''pit_Resource'' and 自制件属性 LIKE ''%装配%'' '`;`WHERE 质检类型 = ''终检''`;`WHERE 质检类型 = ''收检''`;`SET @selectStrWhere = @selectStrWhere + ' AND [订单编号] = ' + CONVERT(VARCHAR(10), @订单号)`;`SET @selectStrWhere = @selectStrWhere + ' AND v.[计划号] = '''+@计划号+''''`;`SET @selectStrWhere = @selectStrWhere + ' AND [合同号] LIKE ''%' + @合同号 + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND [物料编号] LIKE ''%' + @产品编码 + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND [物料描述] LIKE ''%' + @产品名称 + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND [工序名称] = ''' + @工序名称 + ''''`;`SET @selectStrWhere = @selectStrWhere + ' AND [计划完成] > = ''' + @要求完工日期1 + ''''`。 关键写入/状态处理语句线索:`SET @selectStr = N'`;`SET @selectStrWhere = @selectStrWhere + ' AND [订单编号] = ' + CONVERT(VARCHAR(10), @订单号)`;`SET @selectStrWhere = @selectStrWhere + ' AND v.[计划号] = '''+@计划号+''''`;`SET @selectStrWhere = @selectStrWhere + ' AND [合同号] LIKE ''%' + @合同号 + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND [物料编号] LIKE ''%' + @产品编码 + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND [物料描述] LIKE ''%' + @产品名称 + '%'''`;`SET @selectStrWhere = @selectStrWhere + ' AND [工序名称] = ''' + @工序名称 + ''''`;`SET @selectStrWhere = @selectStrWhere + ' AND [计划完成] > = ''' + @要求完工日期1 + ''''`;`SET @selectStrWhere = @selectStrWhere + ' AND [计划完成] < = ''' + @要求完工日期2 + ''''`;`SET @selectStrWhere = @selectStrWhere + ' AND [计划开始时间] > = ''' + @计划开始1 + ''''`;`SET @selectStrWhere = @selectStrWhere + ' AND [计划开始时间] < = ''' + @计划开始2 + ''''`;`SET @selectStrWhere = @selectStrWhere + ' AND [计划完成时间] > = ''' + @计划完成1 + ''''`。 排序/分组/分页线索:`GROUP BY TaskAID`;`SET @selectStrWhere = @selectStrWhere + ' ORDER BY [合同号] DESC, [订单编号] DESC '`。 +- `MES_OrderPlanned_DescriptionEdit` 属于 计划排产,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、处理计划/派工。 读取/关联对象:表:`MES_接口_生产计划`、`MES_接口_生产计划_生产任务`。 写入或更新对象:`MES_接口_生产计划_生产任务`。 入参/分页参数:`@订单号 int,`、`@订单行号 int,`、`@订单拆分内码 int,`、`@优先级 nvarchar(50)`、`@未完成说明 nvarchar(50)`、`@派工特殊说明 nvarchar(500)`、`@最后编辑人 nvarchar(500)`。 关键过滤/匹配条件:`WHERE 订单编号 = @订单号 and 订单行号 = @订单行号 and 订单拆分内码 = @订单拆分内码`。 关键写入/状态处理语句线索:`Update [MES_接口_生产计划_生产任务] set`。 +- `Prog_MES_LoadStations` 属于 通用业务,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理外协业务。 读取/关联对象:表:`MES_资源主数据`。 主要返回字段线索:`[VisCode], [Name] as OPName`。 关键过滤/匹配条件:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 排序/分组/分页线索:`SELECT [VisCode], [Name] as OPName FROM [MES_资源主数据] where type = 'rtMachine' AND Active = 'tYES' AND IssueMethod = 'rimManual' or Name = '外协' order by VisCode`。 + +## 62. src/views/SystemMaintenance/MenuManagement/index.vue + +**页面位置**:`src/views/SystemMaintenance/MenuManagement/index.vue` +**所属模块**:SystemMaintenance / MenuManagement +**源码行数**:480 + +### 页面功能 + +该页面维护菜单和权限。管理员查询、增加、修改、删除菜单/角色权限配置,用于动态路由和按钮权限。 + +页面可见的操作/字段包括 “取消”、“确定”、“item.label”、“模块名称”、“模块路径”、“请选择”、“输入关键字进行过滤”、“新增一级模块”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `菜单系统模块_项目角色_查询数据_MESWORK` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `菜单系统模块_项目角色_查询数据_MESWORK` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`取消`、`确定`、`item.label`、`模块名称`、`模块路径`、`请选择`、`输入关键字进行过滤`、`新增一级模块` + +主要方法线索:`returnModule` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 显示列 | `模块名称` | - | `模块名称` | +| 显示列 | `模块路径` | - | `模块路径` | +| 输入字段 | `roleName` | - | - | +| 输入字段 | `filterTextLeft` | - | - | +| 输入字段 | `filterText` | - | - | +| 输入字段 | `data.AuthButtonsAll` | - | - | +| 输入字段 | `data.SearchData` | - | - | +| 输入字段 | `data.AddData` | - | - | +| 输入字段 | `data.EditData` | - | - | +| 输入字段 | `data.DeleteData` | - | - | +| 输入字段 | `filterTextRight` | - | - | +| 输入字段 | `form1.moduleName` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 434 | 11(当前通用存储过程查询/执行) | `菜单系统模块_项目角色_查询数据_MESWORK` | 查询/读取数据 | 分页 | 未在 SQL 中解析到明确依赖 | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +- `src/views/SystemMaintenance/MenuManagement/index.vue` -> `菜单系统模块_项目角色_查询数据_MESWORK` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `菜单系统模块_项目角色_查询数据_MESWORK` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:分页。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@角色功能 nvarchar(50)`、`@PageCurrent int,`、`@PageSize int,`、`@PageCount int`、`@ItemCount int`。 关键过滤/匹配条件:`declare @where nvarchar(1000)`;`set @where = ' 1 = 1 AND Roles_number ! = 1 '`;`set @where = @where + ' AND [Roles_Function] like ' +'''' + '%' + @角色功能 + '%'+''''`;`PRINT @where`;`exec dbo.sp_xt_pagesplit @tbname, @fieldkey, @where, @fieldshow, @fieldOrder, @PageCurrent, @PageSize, @PageCount out, @ItemCount out`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`set @where = ' 1 = 1 AND Roles_number ! = 1 '`;`set @tbname = '登录基础数据_角色信息'`;`set @fieldkey = ' Roles_number '`;`set @fieldOrder = ' Roles_number '`;`set @fieldshow = ''`;`set @where = @where + ' AND [Roles_Function] like ' +'''' + '%' + @角色功能 + '%'+''''`。 实现特征:分页。 + +## 63. src/views/SystemMaintenance/OperationLog/index.vue + +**页面位置**:`src/views/SystemMaintenance/OperationLog/index.vue` +**所属模块**:SystemMaintenance / OperationLog +**源码行数**:183 + +### 页面功能 + +该页面查询操作日志或报工操作记录,用于审计用户操作和追踪异常。 + +页面可见的操作/字段包括 “查询”、“订单编号”、“操作人”、“序号”、“操作类别”、“工序名称”、“工位名称”、“合同号”、“物料编号”、“物料描述”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `系统管理_报工操作记录_查询` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `系统管理_报工操作记录_查询` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`订单编号`、`操作人`、`序号`、`操作类别`、`工序名称`、`工位名称`、`合同号`、`物料编号`、`物料描述`、`操作数值`、`开始时间`、`结束时间`、`人员工时`、`设备工时`、`最后编辑人`、`最后编辑时间`、`操作描述` + +主要方法线索:`searchData`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.queryParams.订单编号` | `@订单编号` | - | +| 参数 | `this.queryParams.操作人` | `@操作人` | - | +| 显示列 | `序号` | - | `序号` | +| 显示列 | `订单编号` | - | `订单编号` | +| 显示列 | `操作类别` | - | `操作类别` | +| 显示列 | `工序名称` | - | `工序名称` | +| 显示列 | `工位名称` | - | `工位名称` | +| 显示列 | `操作人` | - | `操作人` | +| 显示列 | `合同号` | - | `合同号` | +| 显示列 | `物料编号` | - | `物料编号` | +| 显示列 | `物料描述` | - | `物料描述` | +| 显示列 | `操作数值` | - | `操作数值` | +| 显示列 | `开始时间` | - | `开始时间` | +| 显示列 | `结束时间` | - | `结束时间` | +| 显示列 | `人员工时` | - | `总时长` | +| 显示列 | `设备工时` | - | `实际工时` | +| 显示列 | `最后编辑人` | - | `最后编辑人` | +| 显示列 | `最后编辑时间` | - | `最后编辑时间` | +| 显示列 | `操作描述` | - | `操作描述` | +| 输入字段 | `queryParams.订单编号` | `@订单编号` | - | +| 输入字段 | `queryParams.操作人` | `@操作人` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 115 | 11(当前通用存储过程查询/执行) | `系统管理_报工操作记录_查询` | 查询/读取数据 | 查询、处理报工/工时 | 表:`YL_加工中心_操作记录表` | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +- `系统管理_报工操作记录_查询`:`FROM [dbo].[YL_加工中心_操作记录表]` + +### 数据库调用链 + +- `src/views/SystemMaintenance/OperationLog/index.vue` -> `系统管理_报工操作记录_查询` -> 表:`YL_加工中心_操作记录表` -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `系统管理_报工操作记录_查询` 属于 生产执行/工时,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询、处理报工/工时。 读取/关联对象:表:`YL_加工中心_操作记录表`。 入参/分页参数:`@订单编号 NVARCHAR(100)`、`@操作人 NVARCHAR(100)`。 主要返回字段线索:`top 100`、`*`。 关键过滤/匹配条件:`WHERE 1 = 1`;`AND (@订单编号 IS NULL OR 订单编号 = @订单编号)`;`AND (@操作人 IS NULL OR 操作人 = @操作人)`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`。 排序/分组/分页线索:`ORDER BY AID DESC`。 + +## 64. src/views/SystemMaintenance/OrgManagement/index.vue + +**页面位置**:`src/views/SystemMaintenance/OrgManagement/index.vue` +**所属模块**:SystemMaintenance / OrgManagement +**源码行数**:240 + +### 页面功能 + +该页面维护组织/角色类基础数据,支持新增、修改、删除和查询。 + +页面可见的操作/字段包括 “查询”、“新增”、“编辑”、“删除”、“确 定”、“取消”、“部门名称”、“请输入部门名称”、“新增部门”、“编辑部门”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `菜单系统模块_项目角色_查询数据_MESWORK`、`菜单系统模块_项目角色_修改数据_MESWORK`、`菜单系统模块_项目角色_增加_MESWORK`、`菜单系统模块_项目角色_删除_MESWORK` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `菜单系统模块_项目角色_查询数据_MESWORK` -> `菜单系统模块_项目角色_修改数据_MESWORK` -> `菜单系统模块_项目角色_增加_MESWORK` -> `菜单系统模块_项目角色_删除_MESWORK` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`新增`、`编辑`、`删除`、`确 定`、`取消`、`部门名称`、`请输入部门名称`、`新增部门`、`编辑部门` + +主要方法线索:`searchData`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 显示列 | `部门名称` | - | `部门名称` | +| 显示列 | `编辑` | - | `编辑` | +| 输入字段 | `RoleFunctioning` | - | - | +| 输入字段 | `form.角色功能` | - | - | +| 输入字段 | `form2.角色功能` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 120 | 11(当前通用存储过程查询/执行) | `菜单系统模块_项目角色_查询数据_MESWORK` | 查询/读取数据 | 分页 | 未在 SQL 中解析到明确依赖 | +| 145 | 11(当前通用存储过程查询/执行) | `菜单系统模块_项目角色_修改数据_MESWORK` | 更新/保存业务数据 | 查询、更新 | 表:`登录基础数据_角色信息` | +| 175 | 11(当前通用存储过程查询/执行) | `菜单系统模块_项目角色_增加_MESWORK` | 新增业务数据 | 查询、新增 | 表:`登录基础数据_角色信息` | +| 202 | 11(当前通用存储过程查询/执行) | `菜单系统模块_项目角色_删除_MESWORK` | 删除业务数据 | 查询、删除 | 表:`登录基础数据_角色信息`、`登录基础数据_人员权限角色`、`登录基础数据_二级菜单` | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +- `src/views/SystemMaintenance/OrgManagement/index.vue` -> `菜单系统模块_项目角色_查询数据_MESWORK` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/SystemMaintenance/OrgManagement/index.vue` -> `菜单系统模块_项目角色_修改数据_MESWORK` -> 表:`登录基础数据_角色信息` -> 更新/保存业务数据 +- `src/views/SystemMaintenance/OrgManagement/index.vue` -> `菜单系统模块_项目角色_增加_MESWORK` -> 表:`登录基础数据_角色信息` -> 新增业务数据 +- `src/views/SystemMaintenance/OrgManagement/index.vue` -> `菜单系统模块_项目角色_删除_MESWORK` -> 表:`登录基础数据_角色信息`、`登录基础数据_人员权限角色`、`登录基础数据_二级菜单` -> 删除业务数据 + +### 存储过程处理逻辑明细 + +- `菜单系统模块_项目角色_查询数据_MESWORK` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:分页。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@角色功能 nvarchar(50)`、`@PageCurrent int,`、`@PageSize int,`、`@PageCount int`、`@ItemCount int`。 关键过滤/匹配条件:`declare @where nvarchar(1000)`;`set @where = ' 1 = 1 AND Roles_number ! = 1 '`;`set @where = @where + ' AND [Roles_Function] like ' +'''' + '%' + @角色功能 + '%'+''''`;`PRINT @where`;`exec dbo.sp_xt_pagesplit @tbname, @fieldkey, @where, @fieldshow, @fieldOrder, @PageCurrent, @PageSize, @PageCount out, @ItemCount out`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`set @where = ' 1 = 1 AND Roles_number ! = 1 '`;`set @tbname = '登录基础数据_角色信息'`;`set @fieldkey = ' Roles_number '`;`set @fieldOrder = ' Roles_number '`;`set @fieldshow = ''`;`set @where = @where + ' AND [Roles_Function] like ' +'''' + '%' + @角色功能 + '%'+''''`。 实现特征:分页。 +- `菜单系统模块_项目角色_修改数据_MESWORK` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、更新。 读取/关联对象:表:`登录基础数据_角色信息`。 写入或更新对象:`登录基础数据_角色信息`。 入参/分页参数:`@角色功能 nvarchar(50),`、`@角色编号 int`。 主要返回字段线索:`@同名角色是否存在 = count(*)`。 关键过滤/匹配条件:`SELECT @同名角色是否存在 = count(*) FROM [登录基础数据_角色信息] WHERE [Roles_Function] = @角色功能 AND [Roles_number] ! = @角色编号`;`WHERE [Roles_number] = @角色编号`。 关键写入/状态处理语句线索:`UPDATE [dbo].[登录基础数据_角色信息]`;`SET`。 +- `菜单系统模块_项目角色_增加_MESWORK` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 新增业务数据。 数据库处理摘要:查询、新增。 读取/关联对象:表:`登录基础数据_角色信息`。 写入或更新对象:`登录基础数据_角色信息`。 入参/分页参数:`@角色功能 nvarchar(50)`。 主要返回字段线索:`@同名角色是否存在 = count(*)`。 关键过滤/匹配条件:`SELECT @同名角色是否存在 = count(*) FROM [登录基础数据_角色信息] WHERE [Roles_Function] = @角色功能`。 关键写入/状态处理语句线索:`INSERT INTO [dbo].[登录基础数据_角色信息]( [Roles_Function])`。 +- `菜单系统模块_项目角色_删除_MESWORK` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 删除业务数据。 数据库处理摘要:查询、删除。 读取/关联对象:表:`登录基础数据_角色信息`、`登录基础数据_人员权限角色`、`登录基础数据_二级菜单`。 写入或更新对象:`登录基础数据_角色信息`。 入参/分页参数:`@角色编号 int`。 主要返回字段线索:`@是否分配菜单 = COUNT(*)`。 关键过滤/匹配条件:`select @是否分配菜单 = COUNT(*) from [dbo].[登录基础数据_二级菜单] where 账号代码 = @角色编号`;`select @是否分配人员 = COUNT(*) from [dbo].[登录基础数据_人员权限角色] where Roles_number = @角色编号`;`delete from [dbo].[登录基础数据_角色信息] where Roles_number = @角色编号`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`delete from [dbo].[登录基础数据_角色信息] where Roles_number = @角色编号`。 + +## 65. src/views/SystemMaintenance/PersonnelManagement/index.vue + +**页面位置**:`src/views/SystemMaintenance/PersonnelManagement/index.vue` +**所属模块**:SystemMaintenance / PersonnelManagement +**源码行数**:526 + +### 页面功能 + +该页面维护人员账号。管理员维护人员、部门、角色、启用状态等登录和权限基础数据。 + +页面可见的操作/字段包括 “查询”、“新增”、“重置密码”、“编辑”、“确 定”、“取消”、“item.label”、“姓名”、“工号”、“密码”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `人员管理_角色信息初始化查询_查询`、`登录基础数据_人员信息_切换是否用户`、`人员管理_人员信息查询_查询`、`人员管理_人员信息修改_编辑`、`人员管理_人员信息修改_删除`、`人员管理_人员信息新增_新增` 等过程 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `人员管理_角色信息初始化查询_查询` -> `登录基础数据_人员信息_切换是否用户` -> `人员管理_人员信息查询_查询` -> `人员管理_人员信息修改_编辑` -> `人员管理_人员信息修改_删除` -> `人员管理_人员信息新增_新增` -> `WEB_摄像头查看权限_查询` -> `WEB_登录基础数据_人员信息_重置密码` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`新增`、`重置密码`、`编辑`、`确 定`、`取消`、`item.label`、`姓名`、`工号`、`密码`、`角色`、`操作`、`请输入姓名`、`请选择角色`、`请输入工号`、`请输入密码`、`title`、`title1` + +主要方法线索:`getPersonalrole`、`for` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 显示列 | `姓名` | - | `姓名` | +| 显示列 | `工号` | - | `工号` | +| 显示列 | `密码` | - | `密码` | +| 显示列 | `角色` | - | `角色` | +| 显示列 | `操作` | - | `操作` | +| 输入字段 | `PersonalName` | - | - | +| 输入字段 | `PersonalroleValue` | - | - | +| 输入字段 | `scope.row.personnel_name` | - | - | +| 输入字段 | `scope.row.account` | - | - | +| 输入字段 | `scope.row.password` | - | - | +| 输入字段 | `form.PersonalName` | - | - | +| 输入字段 | `form.account` | - | - | +| 输入字段 | `form.password` | - | - | +| 输入字段 | `form.PersonalroleValue` | - | - | +| 输入字段 | `form1.PersonalName` | - | - | +| 输入字段 | `form1.account` | - | - | +| 输入字段 | `form1.password` | - | - | +| 输入字段 | `form1.PersonalroleValue` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 193 | 11(当前通用存储过程查询/执行) | `人员管理_角色信息初始化查询_查询` | 查询/读取数据 | 查询 | 未在 SQL 中解析到明确依赖 | +| 207 | 12(当前通用存储过程写入/业务动作) | `登录基础数据_人员信息_切换是否用户` | 基础权限/人员数据处理 | 未找到过程体 | 未知 | +| 243 | 11(当前通用存储过程查询/执行) | `人员管理_人员信息查询_查询` | 查询/读取数据 | 分页 | 未在 SQL 中解析到明确依赖 | +| 296 | 12(当前通用存储过程写入/业务动作) | `人员管理_人员信息修改_编辑` | 更新/保存业务数据 | 更新 | 表:`登录基础数据_人员信息`、`登录基础数据_人员权限角色` | +| 325 | 12(当前通用存储过程写入/业务动作) | `人员管理_人员信息修改_删除` | 更新/保存业务数据 | 更新、删除 | 表:`登录基础数据_人员信息`、`登录基础数据_人员权限角色` | +| 374 | 11(当前通用存储过程查询/执行) | `人员管理_人员信息新增_新增` | 新增业务数据 | 查询、新增 | 表:`登录基础数据_人员信息`、`登录基础数据_人员权限角色` | +| 410 | 11(当前通用存储过程查询/执行) | `WEB_摄像头查看权限_查询` | 查询/读取数据 | 未找到过程体 | 未知 | +| 429 | 12(当前通用存储过程写入/业务动作) | `WEB_登录基础数据_人员信息_重置密码` | 基础权限/人员数据处理 | 查询、更新 | 表:`登录基础数据_人员信息` | +| 441 | 11(当前通用存储过程查询/执行) | `WEB_人员设备查看权限_查询` | 查询/读取数据 | 未找到过程体 | 未知 | +| 459 | 12(当前通用存储过程写入/业务动作) | `WEB_人员设备查看权限_权限切换` | 查询/读取数据 | 未找到过程体 | 未知 | +| 479 | 12(当前通用存储过程写入/业务动作) | `WEB_人员摄像头查看权限_权限切换` | 查询/读取数据 | 未找到过程体 | 未知 | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +- `src/views/SystemMaintenance/PersonnelManagement/index.vue` -> `人员管理_角色信息初始化查询_查询` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/SystemMaintenance/PersonnelManagement/index.vue` -> `登录基础数据_人员信息_切换是否用户` -> 过程体未解析 -> 基础权限/人员数据处理 +- `src/views/SystemMaintenance/PersonnelManagement/index.vue` -> `人员管理_人员信息查询_查询` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/SystemMaintenance/PersonnelManagement/index.vue` -> `人员管理_人员信息修改_编辑` -> 表:`登录基础数据_人员信息`、`登录基础数据_人员权限角色` -> 更新/保存业务数据 +- `src/views/SystemMaintenance/PersonnelManagement/index.vue` -> `人员管理_人员信息修改_删除` -> 表:`登录基础数据_人员信息`、`登录基础数据_人员权限角色` -> 更新/保存业务数据 +- `src/views/SystemMaintenance/PersonnelManagement/index.vue` -> `人员管理_人员信息新增_新增` -> 表:`登录基础数据_人员信息`、`登录基础数据_人员权限角色` -> 新增业务数据 +- `src/views/SystemMaintenance/PersonnelManagement/index.vue` -> `WEB_摄像头查看权限_查询` -> 过程体未解析 -> 查询/读取数据 +- `src/views/SystemMaintenance/PersonnelManagement/index.vue` -> `WEB_登录基础数据_人员信息_重置密码` -> 表:`登录基础数据_人员信息` -> 基础权限/人员数据处理 +- `src/views/SystemMaintenance/PersonnelManagement/index.vue` -> `WEB_人员设备查看权限_查询` -> 过程体未解析 -> 查询/读取数据 +- `src/views/SystemMaintenance/PersonnelManagement/index.vue` -> `WEB_人员设备查看权限_权限切换` -> 过程体未解析 -> 查询/读取数据 +- `src/views/SystemMaintenance/PersonnelManagement/index.vue` -> `WEB_人员摄像头查看权限_权限切换` -> 过程体未解析 -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `人员管理_角色信息初始化查询_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:未在 SQL 中解析到明确依赖。 主要返回字段线索:`*`。 关键过滤/匹配条件:`where [Roles_number] 1`。 +- `登录基础数据_人员信息_切换是否用户` 属于 系统基础资料/权限,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 基础权限/人员数据处理。 当前工作区 SQL 中没有解析到该过程体,因此只能确认前端调用关系,不能准确说明内部读写表、过滤条件和状态变更。 +- `人员管理_人员信息查询_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:分页。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@姓名_check int`、`@姓名 nvarchar(500)`、`@角色代码_check int`、`@角色代码 nvarchar(500)`、`@PageCurrent int,`、`@PageSize int,`、`@PageCount int`、`@ItemCount int`。 关键过滤/匹配条件:`declare @where nvarchar(1000)`;`set @where = ' 1 = 1 '`;`set @where = @where + ' and Personnel_Number is not null'`;`set @where = @where+' and Personnel_Name like '+substring(@a, 1, 1)+'%'+@姓名+substring(@a, 1, 1) + '+'+substring(@a, 1, 1)+'%'+substring(@a, 1, 1)`;`set @where = @where+' and Roles_number = ' + CAST(@角色代码 AS NVARCHAR(50))`;`exec dbo.sp_xt_pagesplit @tbname, @fieldkey, @where, @fieldshow, @fieldOrder, @PageCurrent, @PageSize, @PageCount out, @ItemCount out`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`set @where = ' 1 = 1 '`;`set @tbname = '登录基础数据_管理人员权限视图'`;`set @fieldkey = ' Personnel_Number '`;`set @fieldOrder = ' Personnel_Number desc '`;`set @fieldshow = ''`;`set @a = ''''`;`set @where = @where + ' and Personnel_Number is not null'`;`set @where = @where+' and Personnel_Name like '+substring(@a, 1, 1)+'%'+@姓名+substring(@a, 1, 1) + '+'+substring(@a, 1, 1)+'%'+substring(@a, 1, 1)`;`set @where = @where+' and Roles_number = ' + CAST(@角色代码 AS NVARCHAR(50))`。 实现特征:分页。 +- `人员管理_人员信息修改_编辑` 属于 系统基础资料/权限,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新。 读取/关联对象:表:`登录基础数据_人员信息`、`登录基础数据_人员权限角色`。 写入或更新对象:`登录基础数据_人员信息`、`登录基础数据_人员权限角色`。 入参/分页参数:`@Personnel_Number int`、`@account nvarchar(50)`、`@password nvarchar(50)`、`@Personnel_Name nvarchar(50)`、`@Roles_number int`。 关键过滤/匹配条件:`where Personnel_Number = @Personnel_Number`。 关键写入/状态处理语句线索:`UPDATE [dbo].[登录基础数据_人员信息]`;`SET`;`UPDATE [dbo].[登录基础数据_人员权限角色]`。 +- `人员管理_人员信息修改_删除` 属于 系统基础资料/权限,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:更新、删除。 读取/关联对象:表:`登录基础数据_人员信息`、`登录基础数据_人员权限角色`。 写入或更新对象:`登录基础数据_人员信息`、`登录基础数据_人员权限角色`。 入参/分页参数:`@Personnel_Number int`。 关键过滤/匹配条件:`where Personnel_Number = @Personnel_Number`;`delete from [dbo].[登录基础数据_人员权限角色] where Personnel_Number = @Personnel_Number`。 关键写入/状态处理语句线索:`UPDATE [dbo].[登录基础数据_人员信息]`;`SET`;`delete from [dbo].[登录基础数据_人员权限角色] where Personnel_Number = @Personnel_Number`。 +- `人员管理_人员信息新增_新增` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 新增业务数据。 数据库处理摘要:查询、新增。 读取/关联对象:表:`登录基础数据_人员信息`、`登录基础数据_人员权限角色`。 写入或更新对象:`登录基础数据_人员信息`、`登录基础数据_人员权限角色`。 入参/分页参数:`@account nvarchar(50)`、`@password nvarchar(50)`、`@Personnel_Name nvarchar(50)`、`@Roles_number int`。 主要返回字段线索:`count(*)`。 关键过滤/匹配条件:`if(select count(*) from [登录基础数据_人员信息] where account = @account ) = 0`;`where account = @account`。 关键写入/状态处理语句线索:`INSERT INTO [登录基础数据_人员信息]`;`INSERT INTO [登录基础数据_人员权限角色]`。 +- `WEB_摄像头查看权限_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 当前工作区 SQL 中没有解析到该过程体,因此只能确认前端调用关系,不能准确说明内部读写表、过滤条件和状态变更。 +- `WEB_登录基础数据_人员信息_重置密码` 属于 系统基础资料/权限,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 基础权限/人员数据处理。 数据库处理摘要:查询、更新。 读取/关联对象:表:`登录基础数据_人员信息`。 写入或更新对象:`登录基础数据_人员信息`。 入参/分页参数:`@Personnel_Number int`。 关键过滤/匹配条件:`update 登录基础数据_人员信息 set password = '123456' where [Personnel_Number] = @Personnel_Number`。 关键写入/状态处理语句线索:`update 登录基础数据_人员信息 set password = '123456' where [Personnel_Number] = @Personnel_Number`。 +- `WEB_人员设备查看权限_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 当前工作区 SQL 中没有解析到该过程体,因此只能确认前端调用关系,不能准确说明内部读写表、过滤条件和状态变更。 +- `WEB_人员设备查看权限_权限切换` 属于 系统基础资料/权限,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 查询/读取数据。 当前工作区 SQL 中没有解析到该过程体,因此只能确认前端调用关系,不能准确说明内部读写表、过滤条件和状态变更。 +- `WEB_人员摄像头查看权限_权限切换` 属于 系统基础资料/权限,前端以 type=12(当前通用存储过程写入/业务动作)调用,页面用途是 查询/读取数据。 当前工作区 SQL 中没有解析到该过程体,因此只能确认前端调用关系,不能准确说明内部读写表、过滤条件和状态变更。 + +## 66. src/views/SystemMaintenance/SystemRrolemaintenance/index.vue + +**页面位置**:`src/views/SystemMaintenance/SystemRrolemaintenance/index.vue` +**所属模块**:SystemMaintenance / SystemRrolemaintenance +**源码行数**:276 + +### 页面功能 + +该页面维护系统角色。管理员查询、新增、修改、删除角色数据。 + +页面可见的操作/字段包括 “查询”、“新增”、“编辑”、“删除”、“确 定”、“取消”、“角色功能”、“角色名称”、“请输入角色功能”、“新增角色”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `菜单系统模块_项目角色_查询数据_MESWORK`、`菜单系统模块_项目角色_修改数据_MESWORK`、`菜单系统模块_项目角色_增加_MESWORK`、`菜单系统模块_项目角色_删除_MESWORK` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `菜单系统模块_项目角色_查询数据_MESWORK` -> `菜单系统模块_项目角色_修改数据_MESWORK` -> `菜单系统模块_项目角色_增加_MESWORK` -> `菜单系统模块_项目角色_删除_MESWORK` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`新增`、`编辑`、`删除`、`确 定`、`取消`、`角色功能`、`角色名称`、`请输入角色功能`、`新增角色`、`编辑角色` + +主要方法线索:`searchData`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 显示列 | `角色功能` | - | `角色功能` | +| 显示列 | `编辑` | - | `编辑` | +| 输入字段 | `RoleFunctioning` | - | - | +| 输入字段 | `form.角色功能` | - | - | +| 输入字段 | `form2.角色功能` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 156 | 11(当前通用存储过程查询/执行) | `菜单系统模块_项目角色_查询数据_MESWORK` | 查询/读取数据 | 分页 | 未在 SQL 中解析到明确依赖 | +| 181 | 11(当前通用存储过程查询/执行) | `菜单系统模块_项目角色_修改数据_MESWORK` | 更新/保存业务数据 | 查询、更新 | 表:`登录基础数据_角色信息` | +| 211 | 11(当前通用存储过程查询/执行) | `菜单系统模块_项目角色_增加_MESWORK` | 新增业务数据 | 查询、新增 | 表:`登录基础数据_角色信息` | +| 238 | 11(当前通用存储过程查询/执行) | `菜单系统模块_项目角色_删除_MESWORK` | 删除业务数据 | 查询、删除 | 表:`登录基础数据_角色信息`、`登录基础数据_人员权限角色`、`登录基础数据_二级菜单` | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +- `src/views/SystemMaintenance/SystemRrolemaintenance/index.vue` -> `菜单系统模块_项目角色_查询数据_MESWORK` -> 未在 SQL 中解析到明确依赖 -> 查询/读取数据 +- `src/views/SystemMaintenance/SystemRrolemaintenance/index.vue` -> `菜单系统模块_项目角色_修改数据_MESWORK` -> 表:`登录基础数据_角色信息` -> 更新/保存业务数据 +- `src/views/SystemMaintenance/SystemRrolemaintenance/index.vue` -> `菜单系统模块_项目角色_增加_MESWORK` -> 表:`登录基础数据_角色信息` -> 新增业务数据 +- `src/views/SystemMaintenance/SystemRrolemaintenance/index.vue` -> `菜单系统模块_项目角色_删除_MESWORK` -> 表:`登录基础数据_角色信息`、`登录基础数据_人员权限角色`、`登录基础数据_二级菜单` -> 删除业务数据 + +### 存储过程处理逻辑明细 + +- `菜单系统模块_项目角色_查询数据_MESWORK` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:分页。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@角色功能 nvarchar(50)`、`@PageCurrent int,`、`@PageSize int,`、`@PageCount int`、`@ItemCount int`。 关键过滤/匹配条件:`declare @where nvarchar(1000)`;`set @where = ' 1 = 1 AND Roles_number ! = 1 '`;`set @where = @where + ' AND [Roles_Function] like ' +'''' + '%' + @角色功能 + '%'+''''`;`PRINT @where`;`exec dbo.sp_xt_pagesplit @tbname, @fieldkey, @where, @fieldshow, @fieldOrder, @PageCurrent, @PageSize, @PageCount out, @ItemCount out`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`set @where = ' 1 = 1 AND Roles_number ! = 1 '`;`set @tbname = '登录基础数据_角色信息'`;`set @fieldkey = ' Roles_number '`;`set @fieldOrder = ' Roles_number '`;`set @fieldshow = ''`;`set @where = @where + ' AND [Roles_Function] like ' +'''' + '%' + @角色功能 + '%'+''''`。 实现特征:分页。 +- `菜单系统模块_项目角色_修改数据_MESWORK` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、更新。 读取/关联对象:表:`登录基础数据_角色信息`。 写入或更新对象:`登录基础数据_角色信息`。 入参/分页参数:`@角色功能 nvarchar(50),`、`@角色编号 int`。 主要返回字段线索:`@同名角色是否存在 = count(*)`。 关键过滤/匹配条件:`SELECT @同名角色是否存在 = count(*) FROM [登录基础数据_角色信息] WHERE [Roles_Function] = @角色功能 AND [Roles_number] ! = @角色编号`;`WHERE [Roles_number] = @角色编号`。 关键写入/状态处理语句线索:`UPDATE [dbo].[登录基础数据_角色信息]`;`SET`。 +- `菜单系统模块_项目角色_增加_MESWORK` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 新增业务数据。 数据库处理摘要:查询、新增。 读取/关联对象:表:`登录基础数据_角色信息`。 写入或更新对象:`登录基础数据_角色信息`。 入参/分页参数:`@角色功能 nvarchar(50)`。 主要返回字段线索:`@同名角色是否存在 = count(*)`。 关键过滤/匹配条件:`SELECT @同名角色是否存在 = count(*) FROM [登录基础数据_角色信息] WHERE [Roles_Function] = @角色功能`。 关键写入/状态处理语句线索:`INSERT INTO [dbo].[登录基础数据_角色信息]( [Roles_Function])`。 +- `菜单系统模块_项目角色_删除_MESWORK` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 删除业务数据。 数据库处理摘要:查询、删除。 读取/关联对象:表:`登录基础数据_角色信息`、`登录基础数据_人员权限角色`、`登录基础数据_二级菜单`。 写入或更新对象:`登录基础数据_角色信息`。 入参/分页参数:`@角色编号 int`。 主要返回字段线索:`@是否分配菜单 = COUNT(*)`。 关键过滤/匹配条件:`select @是否分配菜单 = COUNT(*) from [dbo].[登录基础数据_二级菜单] where 账号代码 = @角色编号`;`select @是否分配人员 = COUNT(*) from [dbo].[登录基础数据_人员权限角色] where Roles_number = @角色编号`;`delete from [dbo].[登录基础数据_角色信息] where Roles_number = @角色编号`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`delete from [dbo].[登录基础数据_角色信息] where Roles_number = @角色编号`。 + +## 67. src/views/SystemMaintenance/WorkstationManagement/index.vue + +**页面位置**:`src/views/SystemMaintenance/WorkstationManagement/index.vue` +**所属模块**:SystemMaintenance / WorkstationManagement +**源码行数**:306 + +### 页面功能 + +该页面维护工位资源。管理员在 MES 侧新增、修改、删除工位,同时调用 SAP B1 Resources 新增或更新资源主数据。 + +页面可见的操作/字段包括 “查询”、“新增”、“编辑”、“删除”、“确 定”、“取消”、“工位名称”、“工位号”、“请输入工位名称”、“新增工位”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `MES_登录_工位与名称_查询`、`系统管理_工位管理_工位信息修改`、`系统管理_工位管理_工位信息增加`、`系统管理_工位管理_工位信息删除` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `MES_登录_工位与名称_查询` -> `系统管理_工位管理_工位信息修改` -> `系统管理_工位管理_工位信息增加` -> `系统管理_工位管理_工位信息删除` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`查询`、`新增`、`编辑`、`删除`、`确 定`、`取消`、`工位名称`、`工位号`、`请输入工位名称`、`新增工位`、`编辑工位` + +主要方法线索:`searchData`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 显示列 | `工位名称` | - | `[Name] as 工位名称` | +| 显示列 | `工位号` | - | `[VisCode] as 工位号` | +| 显示列 | `编辑` | - | `编辑` | +| 输入字段 | `RoleFunctioning` | - | - | +| 输入字段 | `form.工位名称` | - | - | +| 输入字段 | `form.工位号` | - | - | +| 输入字段 | `form2.工位名称` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 +- SAP B1 Service Layer(`src/api/b1s.js`) + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 168 | 11(当前通用存储过程查询/执行) | `MES_登录_工位与名称_查询` | 查询/读取数据 | 查询 | 视图:`View_基础数据_工位` | +| 192 | 11(当前通用存储过程查询/执行) | `系统管理_工位管理_工位信息修改` | 更新/保存业务数据 | 查询、更新 | 表:`MES_资源主数据` | +| 228 | 11(当前通用存储过程查询/执行) | `系统管理_工位管理_工位信息增加` | 新增业务数据 | 查询、新增 | 表:`MES_资源主数据` | +| 268 | 11(当前通用存储过程查询/执行) | `系统管理_工位管理_工位信息删除` | 删除业务数据 | 查询、删除 | 表:`MES_资源主数据`、`登录基础数据_人员权限角色`、`登录基础数据_二级菜单` | + +### 与 SAP 的交互 + +页面直接 SAP/接口调用: +- 第 201 行:`patchB1("/Resources('")` +- 第 235 行:`postB1("/Resources")` + +### SAP 接口级说明 + +| 行号 | 方法 | 接口 | 调用时机/影响判断 | 提交字段线索 | +|---:|---|---|---|---| +| 201 | `patchB1` | `/Resources('` | 新增或更新 SAP 资源主数据。失败会导致 MES 工位与 SAP 资源不一致。 | `Name`、`message`、`type`、`VisCode`、`ForeignName` | +| 235 | `postB1` | `/Resources` | 新增或更新 SAP 资源主数据。失败会导致 MES 工位与 SAP 资源不一致。 | `VisCode`、`Name`、`ForeignName`、`Type`、`Group`、`UnitOfMeasure`、`IssueMethod`、`Active`、`Inactive`、`Remarks`、`Allocation`、`confirmButtonText` | + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +- `src/views/SystemMaintenance/WorkstationManagement/index.vue` -> `MES_登录_工位与名称_查询` -> 视图:`View_基础数据_工位` -> 查询/读取数据 +- `src/views/SystemMaintenance/WorkstationManagement/index.vue` -> `系统管理_工位管理_工位信息修改` -> 表:`MES_资源主数据` -> 更新/保存业务数据 +- `src/views/SystemMaintenance/WorkstationManagement/index.vue` -> `系统管理_工位管理_工位信息增加` -> 表:`MES_资源主数据` -> 新增业务数据 +- `src/views/SystemMaintenance/WorkstationManagement/index.vue` -> `系统管理_工位管理_工位信息删除` -> 表:`MES_资源主数据`、`登录基础数据_人员权限角色`、`登录基础数据_二级菜单` -> 删除业务数据 + +### 存储过程处理逻辑明细 + +- `MES_登录_工位与名称_查询` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 数据库处理摘要:查询。 读取/关联对象:视图:`View_基础数据_工位`。 主要返回字段线索:`[VisCode] as 工位代码`、`[VisCode] as MesWebCode`、`[VisCode] as 工位号`、`[Name] as 指南工位号`、`[Name] as 工位名称`。 排序/分组/分页线索:`order by [VisCode]`。 +- `系统管理_工位管理_工位信息修改` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、更新。 读取/关联对象:表:`MES_资源主数据`。 写入或更新对象:`MES_资源主数据`。 入参/分页参数:`@工位名称 nvarchar(50),`、`@工位号 nvarchar(50)`。 主要返回字段线索:`@同名工位是否存在 = count(*)`。 关键过滤/匹配条件:`SELECT @同名工位是否存在 = count(*) FROM [MES_资源主数据] WHERE [Name] = @工位名称`;`WHERE [VisCode] = @工位号`。 关键写入/状态处理语句线索:`UPDATE [dbo].[MES_资源主数据]`;`SET`。 +- `系统管理_工位管理_工位信息增加` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 新增业务数据。 数据库处理摘要:查询、新增。 读取/关联对象:表:`MES_资源主数据`。 写入或更新对象:`MES_资源主数据`。 入参/分页参数:`@工位名称 nvarchar(50),`、`@工位号 nvarchar(50)`。 主要返回字段线索:`@同名工位是否存在 = count(*)`。 关键过滤/匹配条件:`SELECT @同名工位是否存在 = count(*) FROM [MES_资源主数据] WHERE [Name] = @工位名称`。 关键写入/状态处理语句线索:`INSERT INTO [dbo].[MES_资源主数据]( [Name], [VisCode], [Type], [Active], [IssueMethod], [Allocation], [SyncTime], [ResourceGroup], [ForeignName], [UnitOfMeasure])`。 +- `系统管理_工位管理_工位信息删除` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 删除业务数据。 数据库处理摘要:查询、删除。 读取/关联对象:表:`MES_资源主数据`、`登录基础数据_人员权限角色`、`登录基础数据_二级菜单`。 写入或更新对象:`MES_资源主数据`。 入参/分页参数:`@工位号 nvarchar(50)`。 关键过滤/匹配条件:`delete from [dbo].[MES_资源主数据] where [VisCode] = @工位号`。 关键写入/状态处理语句线索:`SET NOCOUNT ON;`;`delete from [dbo].[MES_资源主数据] where [VisCode] = @工位号`。 + +## 68. src/views/dashboard/index.vue + +**页面位置**:`src/views/dashboard/index.vue` +**所属模块**:dashboard / index.vue +**源码行数**:356 + +### 页面功能 + +该页面是系统首页或欢迎页,用于承载看板入口或基础统计展示。 + +### 页面流程图 + +该页面未发现后端存储过程调用,通常不形成完整业务流程。 + +### 用户操作与页面线索 + +可见按钮/字段线索:无 + +主要方法线索:`toView` + +### 字段映射表 + +未从页面模板中抽取到明确的 `v-model`、表格列或 `param.push` 字段映射。 + +### 技术路线 + +- Vue 2 Options API +- Element UI +- 未发现页面级后端存储过程调用 + +### 调用的存储过程总览 + +未发现 `CreateData(...)` 存储过程调用。 + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +无数据库调用链。 + +### 存储过程处理逻辑明细 + +无页面级存储过程调用。 + +## 69. src/views/layout/Layout.vue + +**页面位置**:`src/views/layout/Layout.vue` +**所属模块**:layout / Layout.vue +**源码行数**:72 + +### 页面功能 + +该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +### 页面流程图 + +该页面未发现后端存储过程调用,通常不形成完整业务流程。 + +### 用户操作与页面线索 + +可见按钮/字段线索:无 + +主要方法线索:`handleClickOutside` + +### 字段映射表 + +未从页面模板中抽取到明确的 `v-model`、表格列或 `param.push` 字段映射。 + +### 技术路线 + +- Vue 2 Options API +- Element UI +- 未发现页面级后端存储过程调用 + +### 调用的存储过程总览 + +未发现 `CreateData(...)` 存储过程调用。 + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +无数据库调用链。 + +### 存储过程处理逻辑明细 + +无页面级存储过程调用。 + +## 70. src/views/layout/components/AppMain.vue + +**页面位置**:`src/views/layout/components/AppMain.vue` +**所属模块**:layout / components +**源码行数**:32 + +### 页面功能 + +该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +### 页面流程图 + +该页面未发现后端存储过程调用,通常不形成完整业务流程。 + +### 用户操作与页面线索 + +可见按钮/字段线索:无 + +主要方法线索:无 + +### 字段映射表 + +未从页面模板中抽取到明确的 `v-model`、表格列或 `param.push` 字段映射。 + +### 技术路线 + +- Vue 2 Options API +- Element UI +- 未发现页面级后端存储过程调用 + +### 调用的存储过程总览 + +未发现 `CreateData(...)` 存储过程调用。 + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +无数据库调用链。 + +### 存储过程处理逻辑明细 + +无页面级存储过程调用。 + +## 71. src/views/layout/components/Navbar.vue + +**页面位置**:`src/views/layout/components/Navbar.vue` +**所属模块**:layout / components +**源码行数**:380 + +### 页面功能 + +该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +页面可见的操作/字段包括 “[   登出   ]  --> Log Off”、“取 消”、“提 交”、“旧密码”、“新密码”、“确认密码”、“修改密码”,这些是判断页面业务范围的主要线索。 + +后端主要围绕 `登录基础数据_人员信息_登陆检查密码`、`登录基础数据_人员信息_修改密码`、`WEB_报警查询_未读报警记录_查询`、`WEB_报警查询_未读报警记录_未读条数查询` 取数或提交业务动作。 + +### 页面流程图 + +通用流程:用户输入查询/维护条件 -> 调用 `登录基础数据_人员信息_登陆检查密码` -> `登录基础数据_人员信息_修改密码` -> `WEB_报警查询_未读报警记录_查询` -> `WEB_报警查询_未读报警记录_未读条数查询` -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`[   登出   ]  --> Log Off`、`取 消`、`提 交`、`旧密码`、`新密码`、`确认密码`、`修改密码` + +主要方法线索:`toErrorPage` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 参数 | `this.$store.state.user.id` | `@Personnel_Number` | - | +| 参数 | `this.$store.state.user.id` | `@userId` | - | +| 参数 | `this.updatePasswordForm.oldPassword` | `@旧密码` | - | +| 参数 | `this.updatePasswordForm.newPassword1` | `@新密码1` | `if (@新密码1 = '') begin` | +| 参数 | `this.updatePasswordForm.newPassword2` | `@新密码2` | - | +| 参数 | `this.id` | `@personnel_Number` | - | +| 输入字段 | `updatePasswordForm.oldPassword` | `@旧密码` | - | +| 输入字段 | `updatePasswordForm.newPassword1` | `@新密码1` | - | +| 输入字段 | `updatePasswordForm.newPassword2` | `@新密码2` | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- `CreateData` + `ExecDatabase` 调用后端过程 + +### 调用的存储过程总览 + +| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 | +|---:|---|---|---|---|---| +| 119 | 11(当前通用存储过程查询/执行) | `登录基础数据_人员信息_登陆检查密码` | 基础权限/人员数据处理 | 查询 | 未在 SQL 中解析到明确依赖 | +| 163 | 11(当前通用存储过程查询/执行) | `登录基础数据_人员信息_修改密码` | 更新/保存业务数据 | 查询、更新 | 未在 SQL 中解析到明确依赖 | +| 187 | 11(当前通用存储过程查询/执行) | `WEB_报警查询_未读报警记录_查询` | 查询/读取数据 | 未找到过程体 | 未知 | +| 205 | 11(当前通用存储过程查询/执行) | `WEB_报警查询_未读报警记录_未读条数查询` | 查询/读取数据 | 未找到过程体 | 未知 | + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +- `src/views/layout/components/Navbar.vue` -> `登录基础数据_人员信息_登陆检查密码` -> 未在 SQL 中解析到明确依赖 -> 基础权限/人员数据处理 +- `src/views/layout/components/Navbar.vue` -> `登录基础数据_人员信息_修改密码` -> 未在 SQL 中解析到明确依赖 -> 更新/保存业务数据 +- `src/views/layout/components/Navbar.vue` -> `WEB_报警查询_未读报警记录_查询` -> 过程体未解析 -> 查询/读取数据 +- `src/views/layout/components/Navbar.vue` -> `WEB_报警查询_未读报警记录_未读条数查询` -> 过程体未解析 -> 查询/读取数据 + +### 存储过程处理逻辑明细 + +- `登录基础数据_人员信息_登陆检查密码` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 基础权限/人员数据处理。 数据库处理摘要:查询。 读取/关联对象:未在 SQL 中解析到明确依赖。 入参/分页参数:`@Personnel_Number int`。 主要返回字段线索:`top 1 @password = password`。 关键过滤/匹配条件:`select top 1 @password = password from 登录基础数据_人员信息 where [Personnel_Number] = @Personnel_Number`。 +- `登录基础数据_人员信息_修改密码` 属于 系统基础资料/权限,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 更新/保存业务数据。 数据库处理摘要:查询、更新。 读取/关联对象:未在 SQL 中解析到明确依赖。 写入或更新对象:`登录基础数据_人员信息`。 入参/分页参数:`@userId int`、`@旧密码 nvarchar(50)`、`@新密码1 nvarchar(50)`、`@新密码2 nvarchar(50)`。 主要返回字段线索:`2 as result, '两次密码不一致!' as msg`、`return`、`end`、`if (@新密码1 = '') begin`、`select 2 as result, '新密码不能为空!' as msg`、`DECLARE @count int`、`SELECT @count = count(1)`。 关键过滤/匹配条件:`SELECT @count = count(1) FROM 登录基础数据_人员信息 WHERE [Personnel_Number] = @userId and password = @旧密码`;`update 登录基础数据_人员信息 set password = @新密码1 where [Personnel_Number] = @userId and password = @旧密码`。 关键写入/状态处理语句线索:`update 登录基础数据_人员信息 set password = @新密码1 where [Personnel_Number] = @userId and password = @旧密码`。 +- `WEB_报警查询_未读报警记录_查询` 属于 设备与实时数据,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 当前工作区 SQL 中没有解析到该过程体,因此只能确认前端调用关系,不能准确说明内部读写表、过滤条件和状态变更。 +- `WEB_报警查询_未读报警记录_未读条数查询` 属于 设备与实时数据,前端以 type=11(当前通用存储过程查询/执行)调用,页面用途是 查询/读取数据。 当前工作区 SQL 中没有解析到该过程体,因此只能确认前端调用关系,不能准确说明内部读写表、过滤条件和状态变更。 + +## 72. src/views/layout/components/Sidebar/Item.vue + +**页面位置**:`src/views/layout/components/Sidebar/Item.vue` +**所属模块**:layout / components / Sidebar +**源码行数**:30 + +### 页面功能 + +该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +### 页面流程图 + +该页面未发现后端存储过程调用,通常不形成完整业务流程。 + +### 用户操作与页面线索 + +可见按钮/字段线索:无 + +主要方法线索:`render`、`if` + +### 字段映射表 + +未从页面模板中抽取到明确的 `v-model`、表格列或 `param.push` 字段映射。 + +### 技术路线 + +- Vue 2 Options API +- Element UI +- 未发现页面级后端存储过程调用 + +### 调用的存储过程总览 + +未发现 `CreateData(...)` 存储过程调用。 + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +无数据库调用链。 + +### 存储过程处理逻辑明细 + +无页面级存储过程调用。 + +## 73. src/views/layout/components/Sidebar/SidebarItem.vue + +**页面位置**:`src/views/layout/components/Sidebar/SidebarItem.vue` +**所属模块**:layout / components / Sidebar +**源码行数**:111 + +### 页面功能 + +该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +页面可见的操作/字段包括 “onlyOneChild.meta.title”、“item.meta.title”、“child.meta.title”,这些是判断页面业务范围的主要线索。 + +### 页面流程图 + +该页面未发现后端存储过程调用,通常不形成完整业务流程。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`onlyOneChild.meta.title`、`item.meta.title`、`child.meta.title` + +主要方法线索:`hasOneShowingChild`、`if` + +### 字段映射表 + +未从页面模板中抽取到明确的 `v-model`、表格列或 `param.push` 字段映射。 + +### 技术路线 + +- Vue 2 Options API +- Element UI +- 未发现页面级后端存储过程调用 + +### 调用的存储过程总览 + +未发现 `CreateData(...)` 存储过程调用。 + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +无数据库调用链。 + +### 存储过程处理逻辑明细 + +无页面级存储过程调用。 + +## 74. src/views/layout/components/Sidebar/index.vue + +**页面位置**:`src/views/layout/components/Sidebar/index.vue` +**所属模块**:layout / components / Sidebar +**源码行数**:84 + +### 页面功能 + +该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +### 页面流程图 + +该页面未发现后端存储过程调用,通常不形成完整业务流程。 + +### 用户操作与页面线索 + +可见按钮/字段线索:无 + +主要方法线索:`showLogo` + +### 字段映射表 + +未从页面模板中抽取到明确的 `v-model`、表格列或 `param.push` 字段映射。 + +### 技术路线 + +- Vue 2 Options API +- Element UI +- 未发现页面级后端存储过程调用 + +### 调用的存储过程总览 + +未发现 `CreateData(...)` 存储过程调用。 + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +无数据库调用链。 + +### 存储过程处理逻辑明细 + +无页面级存储过程调用。 + +## 75. src/views/layout/components/TagsView.vue + +**页面位置**:`src/views/layout/components/TagsView.vue` +**所属模块**:layout / components +**源码行数**:219 + +### 页面功能 + +该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +### 页面流程图 + +该页面未发现后端存储过程调用,通常不形成完整业务流程。 + +### 用户操作与页面线索 + +可见按钮/字段线索:无 + +主要方法线索:`generateRoute`、`if` + +### 字段映射表 + +未从页面模板中抽取到明确的 `v-model`、表格列或 `param.push` 字段映射。 + +### 技术路线 + +- Vue 2 Options API +- Element UI +- 未发现页面级后端存储过程调用 + +### 调用的存储过程总览 + +未发现 `CreateData(...)` 存储过程调用。 + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +无数据库调用链。 + +### 存储过程处理逻辑明细 + +无页面级存储过程调用。 + +## 76. src/views/layout/components/index.js + +**页面位置**:`src/views/layout/components/index.js` +**所属模块**:layout / components +**源码行数**:5 + +### 页面功能 + +该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +### 页面流程图 + +该页面未发现后端存储过程调用,通常不形成完整业务流程。 + +### 用户操作与页面线索 + +可见按钮/字段线索:无 + +主要方法线索:无 + +### 字段映射表 + +未从页面模板中抽取到明确的 `v-model`、表格列或 `param.push` 字段映射。 + +### 技术路线 + +- Vue 2 Options API +- Element UI +- 未发现页面级后端存储过程调用 + +### 调用的存储过程总览 + +未发现 `CreateData(...)` 存储过程调用。 + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +无数据库调用链。 + +### 存储过程处理逻辑明细 + +无页面级存储过程调用。 + +## 77. src/views/layout/mixin/ResizeHandler.js + +**页面位置**:`src/views/layout/mixin/ResizeHandler.js` +**所属模块**:layout / mixin +**源码行数**:53 + +### 页面功能 + +该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +### 页面流程图 + +该页面未发现后端存储过程调用,通常不形成完整业务流程。 + +### 用户操作与页面线索 + +可见按钮/字段线索:无 + +主要方法线索:`isMobile` + +### 字段映射表 + +未从页面模板中抽取到明确的 `v-model`、表格列或 `param.push` 字段映射。 + +### 技术路线 + +- Vue 2 Options API +- Element UI +- 未发现页面级后端存储过程调用 + +### 调用的存储过程总览 + +未发现 `CreateData(...)` 存储过程调用。 + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +无数据库调用链。 + +### 存储过程处理逻辑明细 + +无页面级存储过程调用。 + +## 78. src/views/login/index.vue + +**页面位置**:`src/views/login/index.vue` +**所属模块**:login / index.vue +**源码行数**:501 + +### 页面功能 + +该页面是登录入口,负责账号密码登录、角色选择、Token/Cookie 写入、路由权限初始化和密码修改入口。 + +页面可见的操作/字段包括 “修改密码”、“登录”、“取消”、“确定”、“角色名称”、“工号”、“原始密码”、“新密码”、“确认密码”、“请输入用户名”,这些是判断页面业务范围的主要线索。 + +### 页面流程图 + +该页面未发现后端存储过程调用,通常不形成完整业务流程。 + +### 用户操作与页面线索 + +可见按钮/字段线索:`修改密码`、`登录`、`取消`、`确定`、`角色名称`、`工号`、`原始密码`、`新密码`、`确认密码`、`请输入用户名`、`请输入密码`、`请选择登录角色` + +主要方法线索:`showPwd`、`if` + +### 字段映射表 + +| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 | +|---|---|---|---| +| 显示列 | `角色名称` | - | `角色名称` | +| 输入字段 | `loginForm.username` | - | - | +| 输入字段 | `loginForm.password` | - | - | +| 输入字段 | `loginForm.checked` | - | - | +| 输入字段 | `form.Account` | - | - | +| 输入字段 | `form.beforPassword` | - | - | +| 输入字段 | `form.newPassword` | - | - | +| 输入字段 | `form.againPassword` | - | - | + +### 技术路线 + +- Vue 2 Options API +- Element UI +- 未发现页面级后端存储过程调用 + +### 调用的存储过程总览 + +未发现 `CreateData(...)` 存储过程调用。 + +### 与 SAP 的交互 + +未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。 + +### SAP 接口级说明 + +页面无直接 SAP Service Layer 调用。 + +### 状态流转说明 + +未从当前 SQL 静态解析到明确的状态字段变更。 + +### 数据库调用链 + +无数据库调用链。 + +### 存储过程处理逻辑明细 + +无页面级存储过程调用。 + +## SQL 对象总览 + +脚本中解析到表/视图 76 个、存储过程 345 个。 + +### 表/视图清单 + +- 表:`MES_资源主数据` +- 视图:`View_基础数据_工位` +- 表:`生产管理_工时校验_校验工时表` +- 表:`物料基础数据_零件图纸` +- 表:`MES_接口_生产计划` +- 表:`MES_接口_生产计划_生产任务` +- 视图:`View_生产订单_MES` +- 表:`工位人员绑定表` +- 表:`登录基础数据_人员信息` +- 视图:`View_工位人员绑定数` +- 表:`YL_加工中心_操作记录表` +- 视图:`View_生产工时视图` +- 视图:`View_图纸视图` +- 表:`YL_质量检验_质检记录` +- 视图:`View_质量检验_质检记录_外协收检` +- 视图:`View_生产订单全部(包括已关闭)` +- 视图:`View_外协质检` +- 视图:`View_装配信息` +- 视图:`View_生产计划零件图纸视图` +- 表:`登录基础数据_角色信息` +- 表:`登录基础数据_人员权限角色` +- 表:`登录基础数据_二级菜单` +- 视图:`View_账号权限信息` +- 表:`车间生产管理工艺_零件工序_工艺库` +- 视图:`计划任务视图` +- 表:`基础表_工序` +- 视图:`View_标准工艺视图` +- 表:`车间生产管理工艺_零件生产工艺_工艺库` +- 视图:`View_生产工艺视图` +- 视图:`View_报工人员` +- 表:`班次表` +- 表:`班次人员绑定表` +- 视图:`View_设备工位人员` +- 表:`YL_质量检验_不合格品处理` +- 表:`YL_质量检验_不合格品处理_处理节点` +- 视图:`View_质量检验_不合格品处理` +- 视图:`View_校验后的生产工时` +- 表:`登录基础数据_部门` +- 视图:`登录基础数据_管理人员权限视图` +- 视图:`View_生产订单完工` +- 视图:`View_终检状态` +- 视图:`View_质检明细` +- 视图:`View_外协报表视图` +- 视图:`View_质量检验_质检记录` +- 视图:`v_CurrentProductionStatus` +- 视图:`View_生产订单Temp_ERP` +- 表:`_日志` +- 表:`Attachments` +- 表:`BOM数据` +- 表:`CaChe_Var` +- 表:`MES_接口_工艺路线主数据` +- 表:`YL_基础表_数据字典` +- 表:`YL_加工中心_报工记录` +- 表:`YL_设备管理_工时记录` +- 表:`YL_设备管理_设备台账` +- 表:`YL_设备管理_维修记录` +- 表:`YL_质量检验_检测标准` +- 表:`YL_质量检验_量具信息` +- 表:`YL_质量检验_质检记录_检测零件` +- 表:`YL_质量检验_质检记录_检测数据` +- 表:`报警_记录_历史` +- 表:`报警_记录_历史_缓存` +- 表:`基础数据_设备工位点检表` +- 表:`记录_日志_项目运行日志` +- 表:`历史_工位设备状态每分钟记录` +- 表:`历史_设备数据_定时` +- 表:`流程表` +- 表:`流程节点表` +- 表:`流程完成记录表` +- 表:`流程转办表` +- 表:`设备信息缓存表` +- 表:`审批记录表` +- 表:`物料基础数据_工艺图纸` +- 表:`物料基础数据_零件图纸删除记录` +- 表:`物料数据` +- 表:`质量检验_质检任务_SAP` + +## 同级项目数据看板补充分析 + +本节补充 `MES_Manage_View_V20` 同级目录下的大屏/看板项目。它们与主系统 `src/views` 的区别是:页面本身基本不做业务写入,主要通过统一接口 `CreateData('11', 存储过程名, [])` 或 `ExecDatabaseByParam('11', 存储过程名, 参数)` 调用 SQL Server 存储过程,把 MES、SAP 同步表、设备采集缓存和质检记录加工成 KPI、滚动表格和 ECharts/DataV 图表。因此它们虽然“不操作业务”,但会直接放大统计口径问题:主系统一旦新增字段、状态、报工类型或 SAP 同步逻辑,看板上的齐套率、未及时开工、加急、在制、质检未清、设备运行状态可能同步失真。 + +### 看板项目总体技术路线 + +| 项目 | 技术栈 | 入口页面 | 数据访问方式 | 主要刷新/展示方式 | +|---|---|---|---|---| +| `生产任务看板` | Vue 3 + Vite + Element Plus/DataV | `src/views/index.vue` | `CreateData('11', 生产任务综合看板_*)` | 固定 1920x1080 大屏,自适应缩放,定时钟,KPI + 表格 | +| `装配任务看板` | Vue 3 + Vite | `src/views/index.vue`、`ProductionTaskDashboard.vue` | `CreateData('11', 装配中心任务看板_*)`;另一个页面复用生产任务看板过程 | 多列表 2 秒循环滚动 | +| `质检任务看板` | Vue 3 + Vite + ECharts + DataV | `src/views/index.vue` | `CreateData('11', 质量任务看板_*)` | 未清/完成/趋势/明细大屏,标签轮播 | +| `机加设备生产运营看板` | Vue 3 + Vite + ECharts + DataV | `src/views/index.vue`、`machiningOperationTwo.vue` | `CreateData('11', 机加设备生产运营看板_*)`,部分复用 `质量任务看板_*` | 设备状态、计划执行率、在制/加急/不良滚动表 | +| `机加设备生产运营看板二` | Vue 3 + Vite | `src/views/index.vue` | 与 `machiningOperationTwo.vue` 基本同源 | 在制、加急、关键工序汇总 | +| `TableTV` | Vue 3 + Vite | `src/views/index.vue` | `ExecDatabaseByParam('11', '设备管理_设备状态_查询', [['设备名称','']])` | 工位任务卡片,每 5 秒刷新,自动滚动 | +| `board_view` | Vue 2 + Webpack + DataV + vue-seamless-scroll + ECharts | `src/views/left.vue` | `CreateData1('11', 看板_*)`、`ExecDatabase2`,访问 `MESCommonBase.ashx` | 综合项目大屏,30 秒级刷新,分区轮播 | +| `新建文件夹` | Vue 3 + Vite | `index.vue`、`ProductionTaskDashboard.vue`、`AssemblyCenterTaskDashboard.vue` | `index.vue` 调用 `Visualization_QcTask_*`;另两个多为静态/样例或旧版页面 | 试验版质检可视化,过程名在当前 SQL 未落库 | + +统一调用链如下: + +```mermaid +flowchart LR + A[看板 Vue 页面] --> B[CreateData / ExecDatabaseByParam] + B --> C[MESCommonBase.ashx type=11] + C --> D[SQL Server 存储过程] + D --> E[MES 表/视图] + D --> F[SAP.SBO_YL 跨库表或 SAP 同步表] + D --> G[设备采集缓存 CaChe_Var] + D --> H[质量/工时/操作记录] + E --> I[response.data] + F --> I + G --> I + H --> I + I --> J[KPI、滚动表格、图表] +``` + +### 1. `生产任务看板/src/views/index.vue`:生产任务综合看板 + +**页面功能**:这是管理层生产任务总览大屏,首屏展示“按期齐套率、待排产任务、待处理销售订单、工艺 BOM 待完成、采购未及时到货、机加未及时开工、质检及时率、未及时入库、加急件”等 KPI,并在下方展示“未按期齐套任务”和“加急件明细”。页面本身没有新增、修改、审核等业务写入动作,只把多个业务链条汇总成一张风险看板:齐套风险、排产风险、工艺准备风险、开工风险和加急风险。 + +**调用存储过程与处理逻辑**: + +| 页面区域 | 存储过程 | 过程处理了什么 | 主要表/视图 | +|---|---|---|---| +| 按期齐套率 | `生产任务综合看板_按期齐套率` | 统计近一个月、计划开始早于当前 3 天、`自制件属性 like '%装配%'` 的任务,按 `齐套` 计算总任务数、齐套任务数、未齐套任务数、齐套率,并按 `发料状态` 细分发料齐套、发料缺件、未发料。 | `View_生产订单_MES` | +| 待排产/无工艺 | `生产任务综合看板_未排产无工艺查询` | 用三个子查询返回未排产任务数、装配未排产数、无生产工艺计划数。页面再用“未排产任务数 - 装配未排产数”推导机加待排产。 | `View_生产订单_MES`、`MES_接口_生产计划` | +| 加急件明细 | `生产任务综合看板_加急任务查询` | 从 SAP 加急物料跨库表读取加急数量大于 0 的非装配属性数据,再左连 MES 生产计划补下达日期、计划开始、计划完成、计划数量,并用 `COUNT(*) OVER()` 返回加急订单总数。 | `SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL`、`MES_接口_生产计划` | +| 机加未及时开工 | `生产任务综合看板_未及时开工查询` | 查询已排产、非装配/非外协/非走手续等任务,要求 `开工时间 IS NULL`、`加工状态 = 0`、计划开始早于当天,并通过质检记录反查合格数,最终只保留 `合格数 = 0` 的未及时开工任务。 | `View_生产订单_MES`、`YL_质量检验_质检记录`、`MES_接口_生产计划_生产任务`、`登录基础数据_人员信息` | +| 未按期齐套任务 | `生产任务综合看板_未按期齐套任务` | 返回计划开始已过、近一个月同步、`齐套=0`、装配属性任务的完整任务行,用于下方表格展示。 | `View_生产订单_MES` | + +**字段映射**: + +| 前端显示 | 前端字段 | 存储过程返回字段 | 数据库来源/含义 | +|---|---|---|---| +| 按期齐套率 | `complete.completeset` | `齐套率` | `View_生产订单_MES.齐套` 汇总计算 | +| 未齐套数 | `complete.untasknum` | `未齐套任务数` | `齐套=0` 的装配属性任务数 | +| 应齐套数 | `complete.tasknum` | `总任务数` | 符合时间和装配属性条件的任务数 | +| 待排产总数 | `noProcessStats.total` | `未排产任务数` | `排产状态=0` 的生产订单 | +| 机加待排产 | `noProcessStats.machining` | 前端计算 | `未排产任务数 - 装配未排产数` | +| 装配待排产 | `noProcessStats.assembly` | `装配未排产数` | 未排产且自制件属性包含装配 | +| 工艺 BOM 待完成 | `topStats[1].value` | `无生产工艺计划数` | `MES_接口_生产计划.生产工艺=0` | +| 加急件数 | `Urgentnum` | `加急订单总数` | SAP 加急物料表中过滤后的总行数 | +| 加急件明细 | `urgentRows` | `合同号、订单编号、物料描述、物料编号、自制件属性、计划数量、下达日期、计划开始、计划完成` | SAP 加急表 + MES 计划 | +| 未按期齐套表 | `kitRows` | `订单编号、物料描述、物料编号、计划数量、计划开始时间、计划完成时间、合同号、拣配状态、发料状态` | `View_生产订单_MES` | + +**SAP 交互**:页面没有直接调用 B1 Service Layer;SAP 依赖体现在 SQL 过程 `生产任务综合看板_加急任务查询` 读取 `SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL`。这意味着加急件数取决于 SAP 加急物料表是否同步及时,且页面把 SAP 加急记录与 MES 计划的连接键默认放在 `docentry/订单编号` 上。 + +**状态/口径影响**: + +- `齐套`、`发料状态`、`拣配状态` 是看板核心口径,若主系统新增“部分齐套、手续确认、SAP 发料失败、缺件预计到货”等中间状态,当前页面只能显示二元结果,容易把中间状态误判为未齐套或未发料。 +- `未及时开工` 用 `开工时间 IS NULL + 加工状态=0 + 计划开始<今天 + 合格数=0` 判断。新增设计/编程前置、二次派工、异常暂停后,如果不扩展排除条件,会把“不能开工”也统计为“未及时开工”。 +- 页面里“采购未及时到货、质检及时率、未及时入库”仍是静态或未接入真实过程的显示项,后续若作为管理指标使用,必须补存储过程和来源字段,否则大屏会出现半真半假的 KPI。 + +### 2. `装配任务看板/src/views/index.vue`:装配中心任务看板 + +**页面功能**:围绕装配中心的当天/近期执行情况,展示及时送检数、加急任务数、装配合格率、异常未关闭消息数、缺勤人员,以及四类滚动明细:发货状态列表、装配任务列表、在制任务缺件明细、已完工作务。页面通过 2 秒循环滚动让班组现场持续看到装配交付、缺件、质量和异常风险。 + +**调用存储过程与处理逻辑**: + +| 页面区域 | 存储过程 | 过程处理了什么 | 主要表/视图 | +|---|---|---|---| +| 异常未关闭 | `装配中心任务看板_异常未关闭总数` | 当前实现统计 `流程表` 中 `完成人 is null` 的流程数量,作为未关闭异常数;注释中曾尝试统计装配开始加工未结束记录。 | `流程表` | +| 发货状态列表 | `装配中心任务看板_发货状态查询` | 查询装配属性、`发货状态=1`、任务状态未完成的生产订单,左连操作记录取操作人,左连 SAP 发货/交货中间表取交货数量,按要求发货日期排序。 | `View_生产订单_MES`、`YL_加工中心_操作记录表`、`SAP.SBO_YL.dbo.UBT_ODRF_ODLNMES` | +| 在制任务缺件 | `装配中心任务看板_在制品缺件查询` | 从 SAP 加急/缺件物料表读取非装配属性缺件,再连 MES 生产计划,筛选 MES 自制件属性为装配的主计划,用于展示装配在制缺件。 | `SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL`、`MES_接口_生产计划` | +| 加急任务数 | `装配中心任务看板_加急任务总数查询` | 统计已排产、指派对象包含装配、任务状态为待执行/可执行/已开工的任务中 `加急总数>0` 的数量。 | `View_生产订单_MES` | +| 装配任务列表 | `装配中心任务看板_装配任务查询` | 查询已排产、装配指派对象、未完成任务,返回订单、合同、物料、工序、分配数、完成数量、齐套、发料、拣配、任务状态、加工状态等字段。 | `View_生产订单_MES` | +| 装配合格率 | `装配中心任务看板_装配合格率` | 统计近 3 天 `工序名称='装配'` 的质检记录,按合格数/检验数量计算总合格率。 | `View_质量检验_质检记录` | +| 已完成任务 | `装配中心任务看板_已完成任务` | 查询近 3 天装配工序质检记录,按单条记录计算单项合格率,用于完成列表。 | `View_质量检验_质检记录` | + +**字段映射**: + +| 前端显示 | 前端字段 | 存储过程返回字段 | 数据库来源/含义 | +|---|---|---|---| +| 加急任务数 | `summaryCards[1].value` | `加急总数` | 装配任务中加急总数大于 0 的任务数 | +| 装配合格率 | `summaryCards[2].value` | `总合格率` | 近 3 天装配质检合格数 / 检验数量 | +| 异常未关闭 | `summaryCards[3].value` | `装配异常未关闭总数` | `流程表.完成人 is null` | +| 发货状态 | `deliveryRows` | `订单编号、合同号、物料描述、物料编号、齐套、发料状态、操作人、交货数量、要求发货日期、任务状态` | MES 任务 + SAP 发货中间表 | +| 装配任务 | `taskRows` | `订单号、合同号、零件名称、零件编码、工序名称、齐套、发料状态、加急总数、分配数、完成数量、指派对象` | `View_生产订单_MES` | +| 在制缺件 | `materialRows` | `DocEntry、U_Name、ItemCode、加急数量` | SAP 加急/缺件物料表和 MES 计划 | +| 已完工作务 | `doneRows` | `计划号、零件名称、零件编码、单项合格率` | 装配质检记录 | + +**SAP 交互**:前端不直接调 SAP;SQL 层直接读取两个 SAP 库对象:`SAP.SBO_YL.dbo.UBT_ODRF_ODLNMES` 提供发货/交货数量,`SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL` 提供缺件/加急物料。装配看板因此同时依赖 MES 任务状态和 SAP 缺件/发货同步状态。 + +**状态/口径影响**: + +- 发货状态只筛 `发货状态=1` 且任务状态未完成,如果 SAP 发货通知、MES 发货状态、仓库出库状态不是同一个语义,页面标题“发货状态列表”会混合多个阶段。 +- `装配异常未关闭总数` 当前直接统计所有 `流程表` 未完成人记录,没有限定装配任务;如果流程表中包含机加、质检、外协异常,大屏会高估装配异常。 +- 缺件逻辑把 SAP 缺件子项与 MES 装配主计划关联,若新增主子订单关系、替代料、部分到货、预计齐套时间,需要扩展过程返回字段,否则只能看到“缺件”,看不到是否可恢复生产。 + +### 3. `质检任务看板/src/views/index.vue`:质检任务看板 + +**页面功能**:质检大屏聚合未清任务、加急任务、未清任务分类、未清明细、质检及时率、近七日趋势、关键工序检验任务、当天已完成任务汇总和明细。页面使用 DataV 滚动表格和 ECharts 图表,未清明细支持按“全部、采购入库检、序检收检、原料退库检、销售退货检、终检、其他入库检”自动切换。 + +**调用存储过程与处理逻辑**: + +| 页面区域 | 存储过程 | 过程处理了什么 | 主要表/视图 | +|---|---|---|---| +| 未清任务数/加急数/分类 | `质量任务看板_未完成统计` | 建临时表分 6 类插入未完成统计:工序收检、其他入库、原材料退库、销售退货、采购入库、终检;最后追加 `【汇总】` 行。 | `YL_质量检验_质检记录`、`YL_加工中心_操作记录表`、`质量检验_质检任务_SAP`、`MES_接口_生产计划_生产任务`、`View_生产订单_MES` | +| 未清任务明细 | `质量任务看板_未完成明细查询` | 与统计过程同源,但返回逐条明细:任务类型、订单号、物料、工序、已检/合格/不合格、加急、最近检测说明,并按加急优先排序。 | 同上 | +| 当天完成汇总 | `质量任务看板_当天已完成汇总` | 按当天检测时间统计质检记录中的任务数、合格数、不合格数。 | `View_质量检验_质检记录` | +| 当天完成明细 | `质量任务看板_当天已完成明细` | 按检测类型编号和订单类型归类为采购入库检、序检收检、终检、其他入库检、原料退库检、销售退货检等,按 TaskAID 聚合检验数量、合格数、不合格数,并关联 `View_生产订单_MES` 判断加急。 | `View_质量检验_质检记录`、`View_生产订单_MES` | + +**存储过程具体处理重点**: + +- 工序收检未完成:用 `YL_加工中心_操作记录表` 中报工/辅助结束数量作为应检数量,用 `YL_质量检验_质检记录` 的检测类型 6 已检数量作为已检数量,`已检 < 完成数量` 即为未完成。 +- 入库/退库/退货类未完成:从 `质量检验_质检任务_SAP` 读取 SAP 同步来的质检任务,按订单类型区分 `20` 采购入库、`59` 其他入库、`202-60` 原材料退库、`234000031` 销售退货,并比较已合格+不合格数量与到货数/入库数量。 +- 终检未完成:找每个订单最大订单行号作为最后工序,再用操作记录与检测类型 6/8 的检验数量判断是否终检不足。 +- 加急判断:工序类从 `View_生产订单_MES.加急状态` 判断,SAP 质检任务类从 `质量检验_质检任务_SAP.加急状态` 判断。 + +**字段映射**: + +| 前端显示 | 前端字段 | 返回字段 | 含义 | +|---|---|---|---| +| 未清任务数 | `summary.pendingCount` | `【汇总】.未完成数量` | 六类未完成质检任务合计 | +| 加急任务数 | `summary.urgentCount` | `【汇总】.加急数量` | 六类未完成任务中的加急数 | +| 分类卡片 | `categoryStats` | `质检类型、未完成数量、加急数量` | 过程分类名映射到页面六类标签 | +| 未清明细 | `pendingRows` | `taskType、orderNo、materialName、materialCode、processName、inspectQty、passQty、failQty、urgentQty、inspectRemark、status` | 质检待办明细 | +| 当天完成 | `todayDoneSummary` | `totalCount、passCount、failCount` | 当天质检完成量 | +| 当天完成明细 | `todayDoneRows` | `taskType、orderNo、materialName、materialCode、processName、inspectQty、passQty、failQty、urgentQty` | 当天已检任务列表 | + +**SAP 交互**:前端无直接 SAP 调用;质检看板强依赖 `质量检验_质检任务_SAP`,该表是 SAP 入库、退库、销售退货等质检任务同步到 MES 的落地表。当天完成过程主要读 MES 质检记录,未完成过程同时读 SAP 同步任务和 MES 报工记录。 + +**状态/口径影响**: + +- “未清”不是单表状态,而是跨 `操作记录表`、`质检任务_SAP`、`质检记录` 计算出来的结果;新增质检类型、复检、返工、让步接收、批量检验时,必须同步扩展统计和明细过程。 +- 页面显示了“质检及时率”和趋势图,但当前正式过程只覆盖未完成与当天完成。若要成为真实指标,需要补“应检时间、送检时间、完成检验时间、超期规则、责任部门”的过程。 +- 检测说明字段通过最近一条质检记录取值,只能解释“已有检测记录”的任务;完全未检任务的原因需要另建待检原因或送检说明字段。 + +### 4. `机加设备生产运营看板/src/views/index.vue`:机加设备生产运营看板(一) + +**页面功能**:面向机加工段,展示设备总数、运行/待机/报警/关机数量、在制任务数、未及时开工、当天完成、合格率、不良品、计划执行率,并展示未及时开工、当天完成、不良品等滚动明细和 ECharts 图表。 + +**调用存储过程与处理逻辑**: + +| 页面区域 | 存储过程 | 过程处理了什么 | 主要表/视图 | +|---|---|---|---| +| 设备任务数 | `机加设备生产运营看板_设备任务查询` | 对 `View_生产订单_MES` 中加工状态为辅助开始/开始加工的任务去重后计数,排除外协和装配指派对象。 | `View_生产订单_MES`、`View_设备工位人员` | +| 设备运行状态 | `机加设备生产运营看板_设备运行状态查询` | 从 `CaChe_Var` 读取 `TagName='设备状态'`,把 -1/0/1/2 转成关机/待机/运行/报警,再汇总各状态数量。 | `CaChe_Var` | +| 未及时开工 | `机加设备生产运营看板_未及时开工查询` | 查询已排产、非装配/非外协、未开工、计划开始已过的机加任务,返回任务明细并用窗口函数返回总记录数。 | `View_生产订单_MES`、`YL_质量检验_质检记录`、`MES_接口_生产计划_生产任务` | +| 当天完成汇总 | `质量任务看板_当天已完成汇总` | 复用质检完成汇总,页面据此计算 `passCount/(passCount+failCount)` 作为合格率。 | `View_质量检验_质检记录` | +| 当天完成明细 | `机加设备生产运营看板_当天已完成明细` | 只统计当天检测类型 6/8,即序检收检和终检,返回任务类型、订单、物料、工序、检验数、合格数、不合格数、加急数。 | `View_质量检验_质检记录`、`View_生产订单_MES` | +| 不良品查询 | `机加设备生产运营看板_不良品查询` | 查询昨天的收检/终检质检记录中 `不合格数 > 0` 的记录,并返回总记录数。 | `View_质量检验_质检记录` | +| 计划执行率 | `机加设备生产运营看板_计划执行率` | 当月计划开始且已到计划开始时间的机加任务,按 `开工时间 <= 计划开始时间 + 1天` 计算按期开始率,排除装配、外协、走手续、打磨、钻床等非目标工位。 | `View_生产订单_MES` | + +**SAP 交互**:页面不直接调用 SAP;当前过程主要读 MES 视图和设备采集缓存,没有直接访问 SAP 表。SAP 对它的影响通过 `View_生产订单_MES` 中的计划、任务、加急、齐套等同步字段间接体现。 + +**状态/口径影响**: + +- 设备状态来自 `CaChe_Var` 最新缓存,任务状态来自 `View_生产订单_MES`,两者时间粒度不同。设备显示“运行”但任务未开工、或任务已开工但设备缓存待机,都会造成 OEE 和现场状态不一致。 +- `当天完成` 实际复用质检记录,不等于生产报工完成。若管理层理解为“机加当天完成任务”,需要改成报工/任务完成口径,或者明确是“当天质检完成”。 +- 不良品查询用“昨天”而不是当天,且只看收检/终检,若页面标题没有说明,会与当天完成合格率产生时间口径冲突。 + +### 5. `机加设备生产运营看板/src/views/machiningOperationTwo.vue` 与 `机加设备生产运营看板二/src/views/index.vue` + +**页面功能**:这是机加二屏,重点不是设备状态,而是任务池:在制任务汇总、加急任务汇总、关键工序任务、已开工/在制明细、缺勤人员等。两个项目中的页面结构和调用过程基本一致。 + +**调用存储过程与处理逻辑**: + +| 页面区域 | 存储过程 | 过程处理了什么 | 主要表/视图 | +|---|---|---|---| +| 加急任务汇总/明细 | `机加设备生产运营看板_加急任务查询` | 读取 `View_生产订单_MES` 中 `加急数量 > 0` 且非装配指派对象的数据,返回订单、合同、物料、计划数量、工序、指派对象、加急数量,并用窗口函数返回加急订单总数。 | `View_生产订单_MES` | +| 已开工/当前进行 | `机加设备生产运营看板_机加在制查询` | 查询加工状态为辅助开始或开始加工的任务,按指派对象和开工时间排序去重,排除外协、装配,返回当前各工位正在处理的任务。 | `View_生产订单_MES` | +| 在制任务池 | `机加设备生产运营看板_机加在制查询2` | 查询已排产、未完成、非装配/非外协/非打磨/非走手续的任务,临时表落地后返回总记录数、计划开始早于今天/今天及之后的数量,并计算上序合格数。 | `View_生产订单_MES`、`YL_质量检验_质检记录`、`MES_接口_生产计划_生产任务` | + +**字段映射**: + +| 前端显示 | 返回字段 | 说明 | +|---|---|---| +| 在制任务汇总 | `总记录数、计划开始_今天之前_数量、计划开始_今天及之后_数量` | 页面拆成总在制、超期/当前计划两个子指标 | +| 加急任务汇总 | `加急订单总数` | 首页卡片和加急明细共用 | +| 在制/关键工序明细 | `订单号、合同号、零件名称、零件编码、分配数、工序名称、指派对象、完成数量、上序合格数、加急` | 用于滚动任务表和进度百分比 | + +**状态/口径影响**: + +- `机加在制查询` 用加工状态 2/4 代表“正在执行”,`机加在制查询2` 用排产状态和任务状态代表“任务池”。这两个“在制”不是一个口径,文档和页面标题必须区分“当前执行在制”和“已排产未完成在制”。 +- 上序合格数来自检测类型 6 的质检记录。如果新增返修、让步接收或免检,关键工序是否可开工不能只看上序合格数。 + +### 6. `TableTV/src/views/index.vue`:工位生产监控看板 + +**页面功能**:这是更接近车间电视屏的工位任务卡片页面。它每 5 秒调用一次 `设备管理_设备状态_查询`,把返回的任务按卡片显示,顶部统计总任务数、加急数、完成数量、不合格数量。卡片字段包括任务/工位、物料、工序、加工状态/任务状态、计划/完成/不合格、人员等。 + +**调用存储过程**:`设备管理_设备状态_查询 @设备名称=''`。 + +**存储过程处理逻辑**: + +- 根据当前时间判断白班/夜班,用 `View_设备工位人员` 拼接当前班次人员名称。 +- 从 `View_生产订单_MES` 查询加工状态为辅助开始/开始加工的任务。 +- 计算上序合格数、收检合格数、收检不合格数。 +- 按指派对象、开工时间、订单/工序去重,返回任务状态、加工状态、首检、序检、人员名称等字段。 + +**涉及对象**:`View_生产订单_MES`、`View_设备工位人员`、`YL_质量检验_质检记录`、`MES_接口_生产计划_生产任务`。 + +**SAP 交互**:无直接 SAP 调用;显示的订单、计划、加急、齐套信息来自 MES 视图,受 SAP 同步结果间接影响。 + +**状态/口径影响**: + +- 该页面按当前班次显示人员,班次切换阈值在存储过程中写死为白班 7.5、夜班 16.5。若主系统班次管理修改了班次时间,但此过程不改,大屏人员归属会错。 +- 5 秒刷新会放大数据库压力;若 `设备管理_设备状态_查询` 继续执行复杂子查询和 XML 拼接,需要索引或缓存层支持。 + +### 7. `board_view/src/views/left.vue`:综合项目数据看板 + +**页面功能**:这是综合项目/生产经营大屏。页面分为左侧订单/装配/未完成,中央合同/订单主体和订单明细,右侧设备/质量/环境/水电气等监控区域,并包含计划执行曲线、质量饼图、设备问题柱状图和实时 OEE 区域。页面使用 `vue-seamless-scroll`、DataV 边框、ECharts,定时刷新并支持中间主体订单点击钻取明细。 + +**调用存储过程与处理逻辑**: + +| 页面区域 | 存储过程 | 过程处理了什么 | 主要表/视图 | +|---|---|---|---| +| 顶部/主页关键指标 | `看板_主页六个关键数据_查询` | 计算当月当前计划、当前产量、计划完成率、工时消耗、齐套率、合格率,同时返回环境/水/电/气的占位数据。 | `View_生产订单_MES`、`View_生产工时视图` | +| 左上订单看板 | `看板_左上订单看板_表格_查询` | 按订单聚合合同号、最大计划完成、工艺部进度、装配部进度,并取最后工序完成率作为生产部进度;采购部当前为 0。 | `View_生产订单_MES` | +| 左中装配看板 | `看板_左中装配看板_表格_查询` | 查询机械/电气装配订单,展示内部合同号、产品名称、要求发货时间、出库状态。 | `View_生产订单_MES` | +| 左下未完成 | `看板_左下未完成看板_表格_查询` | 查询未完工任务,左连工时视图求已完工工时,左连工艺视图取标准工时,计算未完工工时。 | `View_生产订单_MES`、`View_生产工时视图`、`View_生产工艺视图` | +| 计划执行曲线 | `看板_左上计划执行情况_曲线_查询` | 近 10 天按计划完成日期统计工艺、采购、生产、装配进度。采购部当前仍为 0。 | `View_生产订单_MES` | +| 中间主体订单 | `看板_中间主体订单_表格_查询` | 按订单聚合工艺/采购/生产/装配进度,供中央列表和点击钻取使用。 | `View_生产订单_MES` | +| 中间主体订单详情 | `看板_中间主体订单详情_表格_查询 @合同号` | 按合同号返回物料描述、编码、属性、额定数量、总需求等字段,库存/待出/可用等字段当前为 0。 | `View_生产订单_MES` | +| 设备状态列表 | `设备管理_设备状态_查询` | 与 `TableTV` 同源,返回当前加工任务和设备/人员/质检状态。 | `View_生产订单_MES` 等 | +| 设备采集变量 | `Event_CaChe_Var_看板查询` | 读取设备采集缓存变量,前端把操作模式、设备状态数值翻译成中文。 | `CaChe_Var` | +| 质量表/饼图 | `看板_右下质量看板_表格_查询`、`看板_右下质量看板_饼图_查询` | 当前 SQL 中表格返回空结果集、饼图返回“无/0”,属于占位实现。 | 占位 | +| 实时 OEE | `看板_中间实时OEE数据展示_查询` | 当前 SQL 插入临时表返回两台加工中心的固定 OEE、时间利用率、性能利用率、合格率、设备状态、进度,属于样例/占位数据。 | 临时表常量 | + +**SAP 交互**:`board_view` 的正式过程主要读 MES 视图,没有直接 B1 API;但 `View_生产订单_MES` 很可能承载 SAP 生产订单同步数据。看板右侧合同、库存、采购、质量等区域当前有多个占位字段,说明它并未完整打通 SAP 库存、采购、发货、质量问题链路。 + +**状态/口径影响**: + +- 综合大屏把工艺、采购、生产、装配进度放在同一张合同进度表,但 SQL 中采购进度多处为 0,占位字段很多。新增采购到货、发货通知、及时齐套需求后,这里必须接入真实采购和库存口径。 +- 中间订单详情库存/在购/占用等字段当前全为 0,若客户把它作为“项目齐套/可用库存”看板,必须补 SAP 库存和采购在途数据。 +- OEE 当前是固定样例,不应作为真实设备绩效依据;若要上线,需要统一设备运行时长、程序时长、报工数量、合格率的计算口径。 + +### 8. `新建文件夹`:试验版/副本看板 + +**页面功能与状态**: + +- `src/views/index.vue` 是新版质检可视化试验页,页面能力比 `质检任务看板` 更完整,包含未清、加急、分类、及时率汇总、及时率趋势、关键工序汇总/明细、当天完成汇总/明细。 +- 它调用的过程是 `Visualization_QcTask_PendingSummary_Query`、`Visualization_QcTask_UrgentSummary_Query`、`Visualization_QcTask_CategorySummary_Query`、`Visualization_QcTask_PendingDetail_Query`、`Visualization_QcTask_RateSummary_Query`、`Visualization_QcTask_RateTrend_Query`、`Visualization_QcTask_KeyProcessSummary_Query`、`Visualization_QcTask_KeyProcessDetail_Query`、`Visualization_QcTask_TodayDoneSummary_Query`、`Visualization_QcTask_TodayDoneDetail_Query`。 +- 当前 `MES_Manage_View_V20/script.sql` 和 `board_view/sql/存储过程.sql` 未发现这些 `Visualization_QcTask_*` 过程定义,因此这套页面要么是试验版接口命名,要么依赖未纳入脚本的数据库对象。不能把它当作已完整落库的正式看板。 +- `ProductionTaskDashboard.vue` 和 `AssemblyCenterTaskDashboard.vue` 分别是生产任务、装配中心看板的静态/样例或旧版页面,当前未看到正式 `CreateData` 调用链,不应作为已接入数据库的正式页面判断。 + +**隐含价值**:虽然未落库,但这套试验页暴露了客户后续可能要的质检能力:及时率汇总、趋势、关键工序质量、未清任务钻取、当天完成明细。这些能力与正式 `质量任务看板_*` 过程高度相关,后续可考虑把正式过程扩展为统一质检看板服务,而不是并行维护两套命名。 + +### 看板与主系统页面的依赖关系 + +| 看板指标 | 依赖主系统动作 | 如果主系统新增/修改会影响什么 | +|---|---|---| +| 齐套率、未齐套任务 | 排产、拣配、发料、SAP 缺件同步 | 新增部分齐套、手续确认、预计齐套日期后,生产任务看板和 board_view 必须改过程 | +| 未及时开工 | 计划开始、开工时间、加工状态、上序合格数 | 新增设计/编程前置、异常暂停、二次派工后,需要避免误判 | +| 加急任务 | SAP 加急表、MES 加急状态/加急数量 | 加急从订单级改到工序/物料级后,所有加急总数和明细都要重算 | +| 装配发货/缺件 | SAP 发货/缺件中间表、MES 装配计划 | 发货通知、仓库出库、交货数量、缺件替代料需要统一解释 | +| 质检未清 | 报工完成、SAP 质检任务、质检记录 | 新增复检、返工、免检、让步接收后,未清统计和明细都要扩展 | +| 设备运行 | `CaChe_Var`、历史设备状态、加工任务 | 若引入真实 OEE,必须同步设备采集、报工、质检合格率 | +| 工时消耗/未完工工时 | 报工记录、生产工艺标准工时 | 设计/编程/装配/质检工时纳入后,board_view 工时口径必须重构 | + +### 同级看板的数据库调用链汇总 + +```mermaid +flowchart TD + A1[生产任务看板] --> P1[生产任务综合看板_*] + A2[装配中心看板] --> P2[装配中心任务看板_*] + A3[质检任务看板] --> P3[质量任务看板_*] + A4[机加运营看板一/二] --> P4[机加设备生产运营看板_*] + A5[TableTV] --> P5[设备管理_设备状态_查询] + A6[board_view 综合大屏] --> P6[看板_* / Event_CaChe_Var_看板查询] + + P1 --> V1[View_生产订单_MES] + P1 --> S1[SAP 加急物料表] + P2 --> V1 + P2 --> S2[SAP 发货/缺件表] + P3 --> Q1[质量检验_质检任务_SAP] + P3 --> Q2[YL_质量检验_质检记录] + P3 --> O1[YL_加工中心_操作记录表] + P4 --> V1 + P4 --> C1[CaChe_Var] + P4 --> Q2 + P5 --> V1 + P5 --> R1[View_设备工位人员] + P6 --> V1 + P6 --> H1[View_生产工时视图] + P6 --> C1 +``` + +### 设备数据采集与大屏新增需求补充 + +本次新增讨论的需求把“设备采集、设备档案、OEE、工时异常、条码拣配、质检/机加/装配现场大屏”纳入同一条业务链。结合现有页面和存储过程,落点如下。 + +#### 1. 设备档案管理:标准工时、主要设备 + +**涉及页面**: + +- `DeviceManagement/DeviceInformation/index.vue`:设备信息维护。 +- `SystemMaintenance/WorkstationManagement/index.vue`:工位和 SAP Resource 维护。 +- `ProductionManagement/PersonnelBinding/index.vue`、`ShiftManagement/index.vue`:人员、班次、工位绑定。 +- 工艺维护类页面:生产工艺/标准工艺中已有 `标准工时`、`准备工时`、`工时合计` 等字段线索。 + +**现有数据基础**: + +- 设备相关过程:`设备管理_设备信息_查询`、`设备管理_设备信息_增加`、`设备管理_设备信息_编辑`、`设备管理_设备状态_查询`、`设备管理_设备数据查询`、`设备管理_设备数据_历史查询`、`设备管理_设备数据_统计数据查询`。 +- 现有表/视图:`基础数据_设备工位点检表`、`View_设备工位人员`、`CaChe_Var`、`历史_设备数据_定时`、`历史_工位设备状态每分钟记录`、`YL_设备管理_工时记录`。 +- 工艺标准工时来源:`车间生产管理工艺_零件生产工艺_工艺库`、`车间生产管理工艺_零件工序_工艺库`、`View_生产工艺视图`。 + +**新增需求分析**: + +设备档案不能只新增一个“标准工时”字段就结束,因为标准工时至少有三种含义: + +| 标准工时类型 | 建议来源 | 用途 | +|---|---|---| +| 工艺标准单件工时 | 生产工艺/标准工艺 | 性能开动率、工时异常 | +| 设备可用标准工时 | 设备档案或班次日历 | 设备利用率 | +| 任务计划标准工时 | 生产任务快照 | 计划执行、未完工工时 | + +因此设备档案应重点维护“是否主要设备、是否参与 OEE、设备/工位关系、采集点位、设备能力参数”,标准单件工时优先从工艺或设备+工序能力表取。否则同一设备加工不同零件时,单台设备 OEE 会被固定标准工时误导。 + +#### 2. 设备数据采集:程序工时、单件工时、设备状态 + +**涉及页面/看板**: + +- `TableTV/src/views/index.vue`:当前每 5 秒调用 `设备管理_设备状态_查询` 展示工位任务。 +- `机加设备生产运营看板/src/views/index.vue`:调用 `机加设备生产运营看板_设备运行状态查询` 读取 `CaChe_Var` 当前设备状态。 +- `board_view/src/views/left.vue`:调用 `Event_CaChe_Var_看板查询` 展示设备采集变量。 +- 主系统设备数据页面:`设备管理_设备数据查询`、`设备管理_设备数据_历史查询`、`设备管理_设备数据_统计数据查询`。 + +**当前处理方式**: + +- `机加设备生产运营看板_设备运行状态查询` 只从 `CaChe_Var` 读取当前 `TagName='设备状态'` 并汇总关机/待机/运行/报警数量。 +- `设备管理_设备数据查询` 会把 `操作模式` 和 `设备状态` 的数值翻译成中文。 +- `设备管理_设备数据_统计数据查询` 已经从 `历史_工位设备状态每分钟记录` 统计停机、关机、报警时长,并从 `YL_设备管理_工时记录` 汇总程序时长。 + +**新增需求需要补的处理链**: + +```mermaid +flowchart LR + A[设备采集原始点位] --> B[采集原始表] + B --> C[当前缓存 CaChe_Var] + B --> D[设备状态历史] + B --> E[程序/循环时间历史] + D --> F[设备状态时长汇总] + E --> G[程序工时/单件工时] + F --> H[设备利用率/OEE] + G --> I[性能开动率/工时异常] +``` + +**必须新增或明确的字段**: + +- 设备编号/工位号 +- 采集时间 +- 设备状态 +- 操作模式 +- 程序号 +- 循环时间 +- 程序开始/结束时间 +- 当前任务或条码 +- 采集质量标识 + +如果没有“设备采集数据与 MES 任务的绑定字段”,程序工时只能按设备和时间段估算,不能准确回写到订单、工序和人员。 + +#### 3. OEE 与设备指标:公式和数据来源 + +**需求公式**: + +| 指标 | 公式 | 需要的数据 | +|---|---|---| +| 产能利用率(单台) | 实际产量 / 计划产量 * 100% | 设备维度计划产量、实际产量 | +| 设备利用率(单台) | 设备工时 / 标准工时 | 设备运行工时、设备/班次标准工时 | +| 设备性能开动率(单台) | 标准单件工时 / 实际单件工时 | 工艺标准单件工时、设备采集单件工时 | +| 产品合格率(工位) | 良品数 / 总产量 | 质检合格数或报工良品数、总产量 | +| OEE | 设备利用率 * 开动率 * 合格率 | 上述三项同口径结果 | + +**当前页面差距**: + +- `board_view` 的 `看板_中间实时OEE数据展示_查询` 当前返回固定样例数据,不是实际 OEE。 +- `机加设备生产运营看板` 当前有设备状态、计划执行率、不良品、当天完成,但没有完整的设备利用率、性能开动率、产品合格率三段计算链。 +- `TableTV` 当前以任务卡片为主,没有展示单件工时/OEE。 + +**建议新增数据库层**: + +| 建议对象 | 作用 | +|---|---| +| `设备采集_原始数据表` | 保存设备原始采集值,避免丢失追溯 | +| `设备状态_分钟汇总表` | 按设备、时间段统计运行/待机/报警/关机时长 | +| `设备程序工时_明细表` | 保存程序号、循环时间、设备、任务绑定 | +| `View_设备OEE_班次指标` | 按设备、日期、班次输出产能利用率、设备利用率、开动率、合格率、OEE | +| `View_设备单件工时异常` | 输出实际单件工时大于标准工时的异常明细 | + +#### 4. 工时异常报表:单件工时大于标准工时 + +**涉及页面**: + +- `ProductionManagement/Timesheet`、工时统计类页面。 +- `ProductionManagement/WorkHoursCheck`:工时校验。 +- 后续新增“工时异常报表”页面。 + +**现有过程线索**: + +- `工时统计_任务工时_查询` +- `工时统计_设备工时_查询` +- `工时统计_作业者工时_查询` +- `工时校验_保存校验记录` +- `设备管理_设备数据_统计数据查询` + +**新增报表逻辑**: + +| 字段 | 来源建议 | 说明 | +|---|---|---| +| 标准单件工时 | 生产工艺/标准工艺 | 应做任务快照 | +| 实际单件工时 | 设备采集循环时间,或设备运行时长/产量 | 无采集时可降级为人工工时/完成数量 | +| 超出时长 | 实际单件工时 - 标准单件工时 | 大于 0 进入异常 | +| 超出比例 | 超出时长 / 标准单件工时 | 用于排序和预警颜色 | +| 异常原因 | 人工确认或规则分类 | 后续闭环需要 | + +**隐性影响**:工时异常报表会反向要求 `WorkHoursCheck` 能解释“人工工时、程序工时、设备工时”三者差异。否则设备采集显示异常,但人工报工正常,页面无法判断该不该上传 SAP 或计入绩效。 + +#### 5. 及时拣配(机加/装配):条码到 MES + +**涉及页面**: + +- `ProductionManagement/MachiningCenter/index.vue`:机加领料/发料/退库/开工相关。 +- `ProductionManagement/AssemblyCenter/index.vue`:装配领料/发料/缺件/开工相关。 +- `生产任务看板`:齐套率、未按期齐套任务。 +- `装配任务看板`:在制缺件、发货状态、装配任务列表。 + +**新增业务流程**: + +```mermaid +flowchart LR + A[扫描条码] --> B[解析条码类型] + B --> C[查 MES 任务/物料/BOM] + C --> D{匹配任务?} + D -- 否 --> E[异常提示/记录] + D -- 是 --> F[保存拣配记录] + F --> G[更新拣配状态] + G --> H[重算齐套/缺件] + H --> I[影响可开工/看板] +``` + +**需要新增或确认的表/字段**: + +- 条码类型、条码值 +- 生产订单/任务 AID +- 物料编码、批次、数量 +- 拣配人、拣配时间 +- 拣配结果 +- 异常原因 +- 是否写回 `拣配状态` +- 是否写回 `齐套` +- 是否触发 `发料状态` + +**SAP 影响**:条码拣配如果涉及库存占用或发料,必须确认 SAP 是否同步校验库存。否则 MES 已拣配、SAP 库存不足,会造成生产看板显示可开工但实际不能发料。 + +#### 6. 一楼质检大屏幕:质检及时率与关键工序 + +**涉及页面/看板**: + +- `质检任务看板/src/views/index.vue` +- `新建文件夹/src/views/index.vue` 试验版质检可视化 +- 主系统 `QualityManagement/QualityCenter`、各类 `CheckTask` +- 工艺维护页面 + +**需求口径**: + +- 质检及时率:报检任务超过 2 天未检验;起算时间取最后一次生产完成时间。 +- 关键工序检验任务汇总数和明细:工艺编辑工艺时标记关键工序。 + +**当前差距**: + +- `质量任务看板_未完成统计` 和 `质量任务看板_未完成明细查询` 能算未完成质检,但没有明确返回“最后一次生产完成时间、超期天数、是否关键工序”。 +- 试验版 `Visualization_QcTask_RateSummary_Query`、`Visualization_QcTask_RateTrend_Query` 等过程名在当前脚本未落库。 + +**需要改造的存储过程**: + +| 过程 | 改造点 | +|---|---| +| `质量任务看板_未完成统计` | 增加超 2 天未检数量、关键工序未检数量 | +| `质量任务看板_未完成明细查询` | 增加最后生产完成时间、超期天数、是否关键工序、关键工序排序 | +| `质量任务看板_当天已完成明细` | 增加关键工序标识,便于完成闭环 | +| 新增 `质量任务看板_质检及时率` | 专门输出应检、及时检、超期未检、及时率 | + +**关键工序字段建议**: + +- 工艺库字段:`是否关键工序` +- 生产任务快照字段:`是否关键工序` +- 看板优先读任务快照,避免工艺后改影响历史任务。 + +#### 7. 机加现场大屏幕:缺勤人员与关键工序任务 + +**涉及页面/看板**: + +- `机加设备生产运营看板/src/views/machiningOperationTwo.vue` +- `机加设备生产运营看板二/src/views/index.vue` +- `TableTV/src/views/index.vue` +- 班次/人员/工位绑定页面 + +**需求**: + +- 缺勤人员:岗位、工位(一对多合并显示)、姓名。 +- 关键工序任务汇总数和明细:工艺编辑时标记关键工序。 + +**当前差距**: + +- 机加二屏现在有“缺勤人员”展示结构,但仍是静态/样例数据。 +- `机加设备生产运营看板_机加在制查询2` 返回在制任务,但没有 `是否关键工序`。 +- 缺勤不能从“没有报工”反推,必须有应到人员与实到人员来源。 + +**建议新增过程**: + +| 过程 | 返回字段 | +|---|---| +| `机加现场大屏_缺勤人员查询` | 岗位、工位列表、姓名、班次、应到时间、缺勤原因 | +| `机加现场大屏_关键工序任务汇总` | 关键工序任务数、加急数、超期数、进行中数 | +| `机加现场大屏_关键工序任务明细` | 订单、合同、物料、工序、工位、指派对象、计划开始、完成数量、上序合格数、加急 | + +**涉及对象**:`View_生产订单_MES`、`View_设备工位人员`、班次表、班次人员绑定表、工艺/生产任务关键工序标识表。 + +#### 8. 装配现场大屏幕:缺勤人员与及时送检 + +**涉及页面/看板**: + +- `装配任务看板/src/views/index.vue` +- `新建文件夹/src/views/AssemblyCenterTaskDashboard.vue` +- 主系统 `ProductionManagement/AssemblyCenter/index.vue` + +**需求**: + +- 缺勤人员:岗位、工位、姓名,一对多合并显示。 +- 及时送检任务列表:可合并到现有任务列表,通过颜色区分;排序在加急后;规则为“发料齐套后 2 天未送检”。 + +**当前差距**: + +- 装配看板 `summaryCards` 中有缺勤人员样例,但没有正式过程。 +- `装配中心任务看板_装配任务查询` 返回齐套、发料状态、任务状态,但未返回发料齐套时间、送检状态、送检时间、超期天数。 +- 质检任务看板能统计未检,但不是以装配“发料齐套后 2 天未送检”为起点。 + +**建议改造**: + +| 过程 | 改造点 | +|---|---| +| `装配中心任务看板_装配任务查询` | 增加发料齐套时间、是否送检、送检时间、送检超期天数、显示颜色等级 | +| 新增 `装配现场大屏_缺勤人员查询` | 返回岗位、工位列表、姓名、班次 | +| 新增 `装配现场大屏_及时送检任务查询` | 返回发料齐套后超过 2 天未送检任务,支持加急后排序 | + +**状态排序建议**: + +1. 加急任务。 +2. 发料齐套后 2 天未送检任务。 +3. 发料齐套但未超期任务。 +4. 缺件任务。 +5. 普通未完成任务。 + +#### 9. 对现有看板章节的修正结论 + +- `机加设备生产运营看板` 当前只能作为“任务/设备状态看板”,还不能作为真实 OEE 看板。需要设备采集明细、标准工时、实际产量、质检良品数统一后才能上线 OEE。 +- `board_view` 的 OEE 仍是样例值,本次需求明确后应优先替换为真实设备指标。 +- `质检任务看板` 已有未完成和当天完成基础,但要满足一楼质检大屏,还必须补“超 2 天未检、最后生产完成时间、关键工序”。 +- `装配任务看板` 的缺勤人员和及时送检当前不是正式数据链,需要新增过程。 +- `TableTV` 可作为设备采集指标的现场承载页,但要注意 5 秒刷新频率和 SQL 性能。 + +## 追加修正:新增需求的页面归属与维护入口复核 + +本节用于修正“只按展示页面分析”的不足。新增需求不能只判断是否新增报表,还要判断字段维护入口是否已经存在。下面按现有 `src/views` 页面归属重新落点。 + +### 1. 标准工艺、生产工艺、关键工序 + +**涉及页面**: + +- `src/views/ProcessManagement/ProcessesDevelop/index.vue`:制定标准工艺。 +- `src/views/ProcessManagement/ProcessProduct/index.vue`:生产工艺。 +- `src/views/ProcessManagement/ProcedureManagement/index.vue`:工序基础数据。 +- `src/views/ProcessManagement/ProcessInquiry/index.vue`:工艺查询。 + +**修正结论**: + +关键工序不是看板字段,而是工艺字段。应在标准工艺和生产工艺中维护: + +| 字段 | 标准工艺维护 | 生产工艺维护 | 任务快照 | +|---|---|---|---| +| 是否关键工序 | 需要 | 需要,默认继承标准工艺,可按订单调整 | 需要 | +| 标准单件工时 | 需要 | 需要,生产订单可覆盖 | 需要 | +| 准备工时/工时合计 | 已有字段线索,应统一口径 | 需要同步 | 需要 | +| 是否影响质检及时率 | 可作为默认规则 | 订单级确认 | 快照后供质检看板读取 | + +**原因**: + +- `ProcessProduct` 已经同时出现“标准工艺”“生产工艺”“批量生成生产工艺”“保存为标准工艺”等业务动作,是订单级工艺维护的合理入口。 +- `ProcessesDevelop` 是标准工艺维护入口,适合维护默认关键工序和标准工时。 +- 质检看板、机加现场大屏只应该读取 `是否关键工序`,不应该承担维护。 + +**必须补充的后端能力**: + +| 对象 | 建议改造 | +|---|---| +| `车间生产管理工艺_零件工序_工艺库` | 增加或确认 `是否关键工序`、`标准单件工时` 字段 | +| `车间生产管理工艺_零件生产工艺_工艺库` | 增加或确认订单级 `是否关键工序`、`标准单件工时` 字段 | +| 生产任务生成/下发过程 | 将关键工序和标准工时快照到任务或任务扩展表 | +| `View_标准工艺视图`、`View_生产工艺视图` | 返回关键工序标识和标准工时 | + +**影响页面/看板**: + +- `QualityManagement/QualityCenter`、`质检任务看板`:按关键工序统计应检、未检、超期。 +- `ProductionManagement/MachiningCenter`、机加现场大屏:关键工序任务汇总和明细。 +- `PlanManagement/ProductionPlanTrack`:工艺路线展示时可标识关键工序。 + +### 2. 缺勤人员:不能由看板静态维护 + +**涉及页面/模块**: + +- `src/views/BasicData/PersonnelManagement` 或人员维护类页面。 +- `src/views/BasicData/ShiftManagement`:班次管理。 +- `src/views/SystemMaintenance/WorkstationManagement/index.vue`:工位和 SAP Resource 维护。 +- `src/views/ProductionManagement/PersonnelBinding/index.vue`:人员绑定线索。 +- `机加设备生产运营看板`、`装配任务看板`:缺勤展示。 + +**修正结论**: + +缺勤人员必须有“应到人员”和“实到人员”两个来源: + +```mermaid +flowchart LR + A[班次管理/排班] --> B[应到人员] + C[工位人员绑定/岗位配置] --> B + D[考勤/上岗/登录/报工] --> E[实到人员] + B --> F[缺勤计算过程] + E --> F + F --> G[机加/装配看板缺勤人员] +``` + +**维护入口建议**: + +| 数据 | 建议入口 | 说明 | +|---|---|---| +| 人员基础信息 | 人员管理 | 姓名、岗位、班组、状态 | +| 班次规则 | 班次管理 | 班次开始/结束、跨天规则 | +| 应到人员/排班 | 若现有班次管理不能承载,需要新增或扩展排班维护 | 缺勤判断的前置条件 | +| 工位/岗位/人员关系 | 工位管理或人员绑定页面 | 支持一人多工位、多岗位合并显示 | +| 实到记录 | 考勤、上岗绑定、登录或报工记录 | 需要最终确认哪个是权威来源 | + +**不建议**: + +- 不建议从“没有报工”直接推断缺勤。 +- 不建议在大屏页面手工维护缺勤人员。 +- 不建议用静态数组或样例过程长期支撑现场看板。 + +**建议新增/改造过程**: + +| 过程 | 用途 | +|---|---| +| `机加现场大屏_缺勤人员查询` | 返回岗位、工位列表、姓名、班次、应到时间、实到状态、缺勤原因 | +| `装配现场大屏_缺勤人员查询` | 同上,按装配岗位/工位过滤 | +| `班次排班_应到人员查询` | 统一给看板和报表复用 | + +### 3. 报表页和维护页的拆分原则 + +现有新增需求里有很多“新增页面”,但页面类型并不相同: + +| 需求 | 页面类型 | 是否承担维护 | +|---|---|---| +| 机加班次产量表 | 报表查询页 | 不承担班次维护,只读班次规则和报工记录 | +| 及时检验报表 | 催办/查询页 | 不维护质检结果,质检仍在质检中心处理 | +| 生产日报-送检 | 日报查询页 | 不维护送检/检验结果 | +| 让步接收记录 | 查询追溯页 | 不维护让步接收,来源是质检中心/不合格处置 | +| 发货通知列表 | SAP 数据查询页 | 默认不维护 SAP 发货通知;如需备注另建扩展表 | +| 手续确认报表 | 待办确认页 | 可以维护 `手续确认`、确认人、确认时间 | +| 及时齐套跟踪结果报表 | 查询 + 部分维护页 | 可维护预计可执行时间、主子订单人工关系,但要留日志 | +| 装配已排产需求 | 交付进度页 + 部分过程字段维护页 | 可维护钣金/泵、备注、人工日期类字段,不能替代装配中心所有业务动作 | +| 设计任务报工 | 新业务操作页 | 维护设计任务和设计工时 | +| 编程任务清单/编程报工 | 新业务操作页 | 维护编程任务、程序号、编程工时 | + +### 4. 现有页面需补的字段归属 + +| 现有页面 | 应补字段/能力 | 说明 | +|---|---|---| +| `ProcessManagement/ProcessesDevelop` | `是否关键工序`、标准单件工时、保存提示 | 标准来源 | +| `ProcessManagement/ProcessProduct` | 自动带出标准工艺、订单级关键工序、生产工艺快照提示 | 生产任务使用来源 | +| `ProcessManagement/ProcedureManagement` | 工序是否需要 SAP 同步状态、是否允许作为关键工序候选 | 工序主数据 | +| `BasicData/ShiftManagement` | 班次业务日、跨天规则、是否参与缺勤/OEE | 班次产量和缺勤基础 | +| `SystemMaintenance/WorkstationManagement` | 工位-设备-岗位-人员关系、SAP Resource 映射 | 缺勤、OEE、设备看板基础 | +| `DeviceManagement/DeviceInformation` | 主要设备、是否参与 OEE、采集点位、设备能力参数 | 不独立承担所有工艺标准工时 | +| `ProductionManagement/MachiningCenter` | 报异常入口、扫码拣配、设备采集任务绑定、关键工序提示 | 机加执行入口 | +| `ProductionManagement/AssemblyCenter` | 报异常入口、发料齐套时间、送检状态、手续确认关联 | 装配执行入口 | +| `QualityManagement/QualityCenter` | 关键工序质检、让步接收、最后生产完成时间、超期天数 | 质检执行入口 | +| `PlanManagement/PlannOrderClose` | 批量关闭 SAP、逐单结果、失败原因、重试 | 关闭动作不应新建孤立页面 | + +### 5. 对看板章节的修正 + +看板章节中出现的“缺勤人员”“关键工序”“及时率”“OEE”都不是单纯前端字段: + +| 看板字段 | 必须有的业务维护入口 | 看板只负责 | +|---|---|---| +| 缺勤人员 | 班次/排班、人员工位绑定、实到来源 | 汇总展示和滚动明细 | +| 关键工序 | 标准工艺、生产工艺、任务快照 | 汇总关键工序任务和未检任务 | +| 质检及时率 | 质检中心、报工完成时间、送检记录 | 计算应检、已检、超期 | +| OEE | 设备档案、采集点位、工艺标准工时、报工/质检数量 | 展示设备指标和下钻 | +| 齐套/缺件 | SAP 缺件、MES 拣配、发料、主子订单关系 | 展示缺件状态和预计可执行时间 | + +后续修改看板时,应先检查维护入口和统一过程是否存在。没有维护入口时,看板开发只能算“展示壳”,不能算需求闭环。 diff --git a/doc_old/元利项目详细流程图.Mermaid b/doc_old/元利项目详细流程图.Mermaid new file mode 100644 index 0000000..1c1d83c --- /dev/null +++ b/doc_old/元利项目详细流程图.Mermaid @@ -0,0 +1,551 @@ +# 元利 MES 项目详细流程图 + +生成日期:2026-05-25 +依据文档:`元利项目详细分析.md` + +说明: +- 本文把 `元利项目详细分析.md` 中的页面、存储过程、SAP 调用、看板和新增隐性需求整理为可维护的 Mermaid 流程图。 +- 图中页面路径以 `src/views/...` 为主,过程名称以文档分析到的 `CreateData(type, name, params)` 调用为主。 +- `type=11` 通常表示查询/读取或通用执行,`type=12` 通常表示写入/业务动作,具体仍以后端实现为准。 + +## 1. 系统总体架构流程 + +```mermaid +flowchart TD + U[用户/班组/计划/质检/设备/管理层] --> FE[Vue 2.7 前端页面] + FE --> ROUTE[动态菜单/路由/权限] + ROUTE --> PAGE[src/views 业务页面] + + PAGE --> CD[CreateData type + procedure + params] + CD --> ED[ExecDatabase 统一后端接口] + ED --> SP[SQL Server 存储过程] + SP --> DB[(YL_MESDB)] + + PAGE --> B1[src/api/b1s.js] + B1 --> SAP[SAP B1 Service Layer] + SP --> SAPDB[(SAP.SBO_YL 跨库/同步表)] + + PAGE --> TM[tm 仓储/条码任务接口] + TM --> WMS[库存/条码任务服务] + + DB --> VIEW[业务视图/报表视图] + VIEW --> PAGE + VIEW --> DASH[生产/装配/质检/机加/综合看板] + SAPDB --> VIEW + SAP --> PAGE + WMS --> PAGE +``` + +关键链路: +- 前端页面不直接写 SQL,而是通过 `CreateData` 组装过程名和参数。 +- SAP 既有前端直接调用 B1 Service Layer,也有 SQL 跨库或同步表读取。 +- 看板主要读存储过程和视图,本身通常不维护业务数据。 + +## 2. 登录、菜单、权限与页面访问流程 + +```mermaid +flowchart TD + A[进入登录页 src/views/login] --> B[输入工号/密码] + B --> C[登录基础数据_人员信息_登陆检查密码] + C --> D{校验通过?} + D -- 否 --> E[提示登录失败] + D -- 是 --> F[写入 Token/用户信息] + F --> G[加载用户角色/菜单权限] + G --> H[登录基础数据_二级菜单/角色权限] + H --> I[生成动态路由] + I --> J[进入 Layout] + J --> K[侧边栏/标签页/AppMain] + K --> L[打开具体业务页面] +``` + +涉及页面: +- `src/views/login/index.vue` +- `src/views/layout/Layout.vue` +- `src/views/layout/components/Sidebar` +- `src/views/SystemMaintenance/MenuManagement` +- `src/views/SystemMaintenance/SystemRrolemaintenance` + +## 3. 基础资料维护总流程 + +```mermaid +flowchart TD + A[系统基础资料] --> B[人员/组织/角色] + A --> C[工位/设备/SAP Resource] + A --> D[班次/人员绑定] + A --> E[工序/物料/图纸/产品结构] + + B --> B1[PersonnelManagement/OrgManagement/SystemRole] + B1 --> B2[人员、岗位、班组、权限] + + C --> C1[WorkstationManagement] + C1 --> C2[维护工位] + C2 --> C3{是否同步 SAP Resource?} + C3 -- 是 --> C4[POST/PATCH /Resources] + C3 -- 否 --> C5[仅 MES 保存] + C4 --> C6[记录同步状态/失败原因] + C5 --> C6 + + C --> C7[DeviceInformation] + C7 --> C8[设备名称/型号/类型/工位/点检/能力] + + D --> D1[ShiftManagement/PersonnelBinding] + D1 --> D2[班次规则/人员工位绑定] + + E --> E1[ProcedureManagement] + E1 --> E2[工序基础数据] + E2 --> E3{是否同步 SAP RouteStages?} + E3 -- 是 --> E4[POST/PATCH /RouteStages] + E3 -- 否 --> E5[MES 本地维护] +``` + +维护口径: +- 缺勤人员不能由看板维护,必须来自班次/排班、人员工位绑定和实到来源。 +- 设备 OEE 基础数据应分散在设备档案、工位、工艺、采集配置中维护,不应只靠看板公式。 + +## 4. 工艺、图纸、标准工艺、生产工艺流程 + +```mermaid +flowchart TD + A[产品/物料/图纸基础] --> B[产品结构维护 CraftMaintain] + A --> C[零件图纸 PartDrawing] + A --> D[工艺图纸 ProcessDrawing] + A --> E[工序基础 ProcedureManagement] + + B --> F[制定标准工艺 ProcessesDevelop] + C --> F + D --> F + E --> F + + F --> G[标准工艺库] + G --> G1[工序顺序] + G --> G2[标准工时/准备工时] + G --> G3[是否关键工序] + + G --> H[生产工艺 ProcessProduct] + H --> I{订单是否已有生产工艺?} + I -- 是 --> J[编辑订单级生产工艺] + I -- 否 --> K[按物料带出标准工艺草稿] + K --> L{用户保存?} + L -- 否 --> M[不写入生产工艺] + L -- 是 --> N[写入生产工艺库] + + J --> O[启用/下发生产工艺] + N --> O + O --> P[生成任务可用工艺快照] + P --> Q[排产/报工/质检/看板读取] +``` + +关键结论: +- `关键工序` 应在标准工艺和生产工艺维护。 +- 生产任务下发时应快照关键工序和标准工时,避免后续改标准工艺影响历史任务。 +- 质检大屏、机加大屏只读取关键工序,不作为维护入口。 + +## 5. 生产订单、机加排产与 SAP 回写流程 + +```mermaid +flowchart TD + A[SAP/MES 生产订单同步] --> B[MES_接口_生产计划] + B --> C[待排产 SelfMakePlan] + C --> D[选择订单/工序/设备/工位/时间] + D --> E[排产保存] + E --> F[MES_接口_生产计划_生产任务] + F --> G[任务排产状态=已排产] + + E --> H{是否回写 SAP 生产订单日期?} + H -- 是 --> I[PATCH /ProductionOrders] + I --> J{SAP 回写成功?} + J -- 是 --> K[记录同步成功] + J -- 否 --> L[记录失败原因/待重试] + H -- 否 --> M[仅 MES 排产] + + G --> N[已排产 SelfMakePlando/SelfMakePlandone] + N --> O[生产计划跟踪/及时开工/机加中心] +``` + +涉及页面: +- `PlanManagement/SelfMakePlan` +- `PlanManagement/SelfMakePlando` +- `PlanManagement/SelfMakePlandone` +- `ProductionManagement/ProductionPlanTrack` +- `AnomalousManagement/PunctualWork` + +风险点: +- MES 排产成功但 SAP 回写失败时,需要保留同步状态和失败原因。 +- 已排产页面新增历史工时、总工时后,必须明确工时来源是生产报工、质检、异常还是设备采集。 + +## 6. 装配排产、外购申请与 SAP 流程 + +```mermaid +flowchart TD + A[装配/电气/系统相关订单] --> B[InstallMakePlan 待排产] + B --> C[选择装配任务/计划时间/优先级] + C --> D[保存装配排产] + D --> E[生成装配生产任务] + + C --> F{需要采购申请?} + F -- 是 --> G[POST /PurchaseRequests] + G --> H{SAP 采购申请成功?} + H -- 是 --> I[记录 SAP 采购请求号] + H -- 否 --> J[记录失败/允许重试] + F -- 否 --> K[不生成采购申请] + + D --> L{是否回写 SAP 生产订单?} + L -- 是 --> M[PATCH /ProductionOrders] + M --> N[同步派工/日期/说明] + L -- 否 --> O[仅 MES 保存] + + E --> P[InstallMakePlanDo/装配中心/装配看板] +``` + +涉及页面: +- `PlanManagement/InstallMakePlan` +- `PlanManagement/InstallMakePlanDo` +- `ProductionManagement/AssemblyCenter` +- `装配任务看板` + +新增需求影响: +- 发料齐套时间、装配完成时间、手续确认、送检状态会反向要求装配排产和装配中心补字段。 + +## 7. 机加生产执行流程 + +```mermaid +flowchart TD + A[已排产机加任务] --> B[MachiningCenter 机加中心] + B --> C{任务是否可开工?} + C -- 否 --> C1[显示不可操作原因: 未齐套/上序未合格/异常/编程未完成/设备占用] + C -- 是 --> D[开始加工/开工] + + D --> E[操作记录表写入开始时间/人员/设备] + E --> F[加工过程] + F --> G{是否异常?} + G -- 是 --> H[直接报异常] + H --> I[AbnormalControl 异常管控] + I --> F + + F --> J[结束报工] + J --> K[写入 YL_加工中心_操作记录表] + K --> L[更新完成数量/工时/任务状态] + + L --> M{是否需要质检?} + M -- 是 --> N[进入质检任务/序检/首检/终检] + M -- 否 --> O[进入下序或完成] + + O --> P{是否入库/转序/外协?} + P -- 转序 --> A + P -- 入库 --> Q[入库/库存任务] + P -- 外协 --> R[外协流程] +``` + +涉及对象: +- `YL_加工中心_操作记录表` +- `MES_接口_生产计划_生产任务` +- `View_生产订单_MES` +- `ProductionManagement/MachiningCenter` + +新增需求影响: +- 编程任务完成状态可能成为开工前置条件。 +- 设备采集工时、程序工时、人工报工工时需要区分。 +- 条码拣配会影响齐套、发料、可开工状态。 + +## 8. 装配中心执行流程 + +```mermaid +flowchart TD + A[已排产装配任务] --> B[AssemblyCenter 装配中心] + B --> C[查询 SAP/MES 订单、物料、发料、齐套] + C --> D{发料/齐套是否满足?} + D -- 否 --> E[缺件/待发料/不可开工] + E --> F[缺件明细/预计可执行时间] + D -- 是 --> G[开始装配] + + G --> H[装配报工/工时记录] + H --> I{是否产生异常?} + I -- 是 --> J[直接报异常 -> AbnormalControl] + I -- 否 --> K[继续装配] + + K --> L[装配完成/更新任务状态] + L --> M{是否需要送检?} + M -- 是 --> N[送检/质检任务] + M -- 否 --> O[入库/发货/后续确认] + + L --> P[手续确认报表] + P --> Q{手续确认完成?} + Q -- 否 --> R[待办保留] + Q -- 是 --> S[从待办消失] + + O --> T[装配看板/生产任务看板] +``` + +关键新增字段: +- 发料齐套时间 +- 装配完成时间 +- 送检状态/送检时间 +- 手续确认、确认人、确认时间 +- 当前对应人员/当前对应内容 + +## 9. 质检业务流程 + +```mermaid +flowchart TD + A[质检任务来源] --> A1[机加报工后待检] + A --> A2[装配送检] + A --> A3[采购入库检] + A --> A4[序检收检/外协收检] + A --> A5[退库/销售退货/其他入库] + + A1 --> B[QualityCenter/CheckTask] + A2 --> B + A3 --> B + A4 --> B + A5 --> B + + B --> C[录入检验结果] + C --> D{合格?} + D -- 是 --> E[合格数量/质检完成] + D -- 否 --> F[不合格处理 Unqualified] + + F --> G{处置方式} + G -- 返工 --> H[回生产/返修] + G -- 报废 --> I[报废记录] + G -- 让步接收 --> J[让步接收字段] + G -- 复检 --> K[生成复检/再次检验] + + E --> L{是否 SAP 收货/库存动作?} + L -- 是 --> M[PurchaseDeliveryNotes 或库存任务] + L -- 否 --> N[MES 本地完成] + + J --> O[让步接收记录查询页] + E --> P[质检看板/及时检验/生产日报] +``` + +涉及页面: +- `QualityManagement/QualityCenter` +- `QualityManagement/CheckTask/processReceive` +- `QualityManagement/CheckTask/purchaseIncoming` +- `QualityManagement/CheckTask/final` +- `QualityManagement/Unqualified` +- `QualityManagement/QualityDetails` + +新增需求影响: +- 及时检验要以生产完成/报工完成时间为起点。 +- 关键工序要从工艺/任务快照读取。 +- 让步接收记录页只查询,不应成为维护入口。 + +## 10. 外协业务流程 + +```mermaid +flowchart TD + A[生产任务指派对象=外协] --> B[OutsourceMange 外协管理] + B --> C[生成外协任务/采购申请] + C --> D{是否提交 SAP 采购申请?} + D -- 是 --> E[POST /PurchaseRequests] + E --> F{SAP 成功?} + F -- 是 --> G[记录采购请求/单据关系] + F -- 否 --> H[记录失败/重试] + D -- 否 --> I[MES 本地外协任务] + + G --> J[外协加工/供应商交付] + I --> J + J --> K[序检收检/外协收货] + K --> L[记录供应商/SAP采购收货单号/指派对象] + L --> M{质检合格?} + M -- 是 --> N[SAP PurchaseDeliveryNotes/入库] + M -- 否 --> O[不合格/返修/让步] + N --> P[外协报表/供应商质量统计] + O --> P +``` + +涉及页面: +- `ProductionManagement/OutsourceMange` +- `ProductionManagement/OutsourceSheet` +- `ProductionManagement/SaleOutsourceMange` +- `QualityManagement/CheckTask/processReceive` + +关键修正: +- 供应商、SAP 采购收货单号、指派对象应在外协/序检收检链路维护,报表只消费这些字段。 + +## 11. 工时、SAP 工时校验与投料流程 + +```mermaid +flowchart TD + A[报工/设备采集/质检/装配] --> B[工时来源汇总] + B --> B1[人工报工工时] + B --> B2[设备运行工时] + B --> B3[程序工时] + B --> B4[质检/装配/设计/编程工时] + + B1 --> C[Workhours/Timesheet/WorkHoursCheck] + B2 --> C + B3 --> C + B4 --> C + + C --> D[工时校验] + D --> E{是否提交 SAP?} + E -- 否 --> F[MES 工时报表/绩效] + E -- 是 --> G[GET /ProductionOrders] + G --> H[匹配 SAP 工序/资源] + H --> I[POST /InventoryGenExits 投料] + H --> J[PATCH /ProductionOrders 更新工序资源/工时] + I --> K{SAP 成功?} + J --> K + K -- 是 --> L[记录提交成功] + K -- 否 --> M[记录失败原因/允许重试] +``` + +涉及页面: +- `ProductionManagement/WorkHoursCheck` +- `ProductionManagement/WorkhoursEdit` +- `ProductionManagement/Workhours` +- `ProductionManagement/Timesheet` + +风险点: +- 程序工时、设备工时、人工工时不是同一口径。 +- 上 SAP 的工时要明确是否包含设计、编程、质检、装配、异常。 + +## 12. 异常管控流程 + +```mermaid +flowchart TD + A[报工/质检/外协/装配/设计/编程页面] --> B[选择任务] + B --> C[点击报异常] + C --> D[带出任务/订单/工序/人员信息] + D --> E[填写异常类型/说明/附件] + E --> F[选择审批人 多选] + F --> G[保存异常] + G --> H[AbnormalControl 异常管控] + + H --> I[审批人待办可见] + I --> J{任一审批人处理?} + J -- 否 --> K[异常未关闭] + J -- 是 --> L[记录实际处理人] + L --> M[异常进入下一状态/关闭] + + K --> N[影响任务可操作性/及时开工/看板] + M --> O[任务恢复或结束] +``` + +关键规则: +- 多审批人不是会签,是多人可见、一人处理。 +- 异常需要带业务域、任务、工序、责任部门,否则看板异常数会混淆。 + +## 13. 生产订单关闭与 SAP 状态同步流程 + +```mermaid +flowchart TD + A[生产订单关闭 PlannOrderClose] --> B[查询可关闭订单] + B --> C[选择单个或批量订单] + C --> D[二次确认] + D --> E[逐单 PATCH /ProductionOrders] + E --> F{单据关闭成功?} + F -- 是 --> G[记录成功/更新 MES 状态] + F -- 否 --> H[记录失败原因] + H --> I[失败项重试] + G --> J[刷新关闭页] + H --> J + J --> K[影响排产页/生产中心/手续确认/看板] +``` + +要求: +- 批量关闭不应“一条失败全批失败”,应逐单记录成功/失败。 +- 关闭结果要被排产、生产中心、装配看板、手续确认报表识别。 + +## 14. 看板数据汇总流程 + +```mermaid +flowchart TD + A[主系统业务数据] --> B[统一视图/存储过程] + C[SAP 同步表/跨库表] --> B + D[设备采集缓存/历史] --> B + E[质检记录/报工记录] --> B + + B --> P[生产任务看板] + B --> Q[装配任务看板] + B --> R[质检任务看板] + B --> S[机加设备生产运营看板] + B --> T[TableTV 工位监控] + B --> U[board_view 综合大屏] + + P --> P1[齐套率/待排产/未及时开工/加急/未入库] + Q --> Q1[装配任务/发货状态/缺件/异常/缺勤] + R --> R1[未清/及时率/关键工序/当天完成] + S --> S1[设备状态/在制/关键工序/缺勤/OEE] + U --> U1[合同进度/工时/采购/库存/OEE] +``` + +看板治理规则: +- 看板只展示和钻取,不作为主维护入口。 +- SAP 类指标必须有同步时间和同步状态。 +- `GETDATE()` 型实时指标如要做日报/历史回看,应补统计日期或日快照。 +- `board_view` 中 OEE、采购、库存等占位指标上线前必须接真实数据或隐藏。 + +## 15. 新增需求与维护入口判断流程 + +```mermaid +flowchart TD + A[收到新增需求/新增字段] --> B{字段性质是什么?} + B -- 主数据 --> C[找基础维护页: 人员/班次/工位/设备/工序/工艺] + B -- 订单过程数据 --> D[找业务页: 计划/排产/装配/机加/质检] + B -- SAP 同步数据 --> E[找 SAP 同步表/接口/同步时间] + B -- 设备采集数据 --> F[找采集原始表/设备状态历史/任务绑定] + B -- 人工确认 --> G[待办页维护并记录确认人时间] + B -- 计算指标 --> H[统一视图/过程/快照] + + C --> I{现有页面能承载?} + D --> I + E --> I + F --> I + G --> I + H --> I + + I -- 是 --> J[扩展现有页面/过程] + I -- 否 --> K[新增维护页或业务页] + J --> L[同步菜单/权限/日志/历史策略] + K --> L + L --> M[检查影响看板/报表/SAP/历史数据] + M --> N[开发排期] +``` + +典型判断: +- 缺勤人员:先确认排班/应到和实到来源;没有维护入口则新增或扩展排班/出勤维护。 +- 关键工序:在标准工艺和生产工艺维护,任务下发快照,看板只读取。 +- 让步接收:质检中心维护,记录页只查询。 +- OEE:设备采集、报工、质检、工艺标准工时共同计算,不是人工维护字段。 + +## 16. 端到端生产业务主流程 + +```mermaid +flowchart TD + A[SAP/MES 生产订单] --> B[工艺准备] + B --> B1[标准工艺] + B1 --> B2[生产工艺] + B2 --> B3[任务工艺快照] + + A --> C[计划排产] + C --> C1[机加排产] + C --> C2[装配排产] + C1 --> D[生产执行] + C2 --> E[装配执行] + + D --> F[报工/工时/设备采集] + E --> G[装配报工/发料/齐套/送检] + + F --> H[质检] + G --> H + H --> I{质量结果} + I -- 合格 --> J[入库/转序/交付] + I -- 不合格 --> K[返工/报废/让步接收/复检] + K --> D + + J --> L[工时校验/SAP 投料/订单状态] + L --> M[订单关闭] + M --> N[报表/看板/日报] + + D --> O[异常管控] + E --> O + H --> O + O --> N + + N --> P[管理层 KPI/现场大屏/追溯查询] +``` + +这个主流程是后续所有新增需求的评估底图:任何新增字段都要判断它落在工艺准备、计划排产、生产执行、质检、入库交付、SAP 回写、看板报表中的哪一环。 diff --git a/doc_old/元利项目详细流程图.md b/doc_old/元利项目详细流程图.md new file mode 100644 index 0000000..88eecf7 --- /dev/null +++ b/doc_old/元利项目详细流程图.md @@ -0,0 +1,2929 @@ +# 元利 MES 项目详细流程图 + +生成日期:2026-05-25 +依据文档:`元利项目详细分析.md` + +说明: +- 本文把 `元利项目详细分析.md` 中的页面、存储过程、SAP 调用、看板和新增隐性需求整理为“文字框 + 箭头”的流程图。 +- 图中页面路径以 `src/views/...` 为主,过程名称以文档分析到的 `CreateData(type, name, params)` 调用为主。 +- `type=11` 通常表示查询/读取或通用执行,`type=12` 通常表示写入/业务动作,具体仍以后端实现为准。 + +## 1. 系统总体架构流程 + +```text +[用户/班组/计划/质检/设备/管理层] --> [Vue 2.7 前端页面] +[Vue 2.7 前端页面] --> [动态菜单/路由/权限] +[动态菜单/路由/权限] --> [src/views 业务页面] +[src/views 业务页面] --> [CreateData type + procedure + params] +[CreateData type + procedure + params] --> [ExecDatabase 统一后端接口] +[ExecDatabase 统一后端接口] --> [SQL Server 存储过程] +[SQL Server 存储过程] --> [YL_MESDB] +[src/views 业务页面] --> [src/api/b1s.js] +[src/api/b1s.js] --> [SAP B1 Service Layer] +[SQL Server 存储过程] --> [SAP.SBO_YL 跨库/同步表] +[src/views 业务页面] --> [tm 仓储/条码任务接口] +[tm 仓储/条码任务接口] --> [库存/条码任务服务] +[YL_MESDB] --> [业务视图/报表视图] +[业务视图/报表视图] --> [src/views 业务页面] +[业务视图/报表视图] --> [生产/装配/质检/机加/综合看板] +[SAP.SBO_YL 跨库/同步表] --> [业务视图/报表视图] +[SAP B1 Service Layer] --> [src/views 业务页面] +[库存/条码任务服务] --> [src/views 业务页面] +``` + +关键链路: +- 前端页面不直接写 SQL,而是通过 `CreateData` 组装过程名和参数。 +- SAP 既有前端直接调用 B1 Service Layer,也有 SQL 跨库或同步表读取。 +- 看板主要读存储过程和视图,本身通常不维护业务数据。 + +## 2. 登录、菜单、权限与页面访问流程 + +```text +[进入登录页 src/views/login] --> [输入工号/密码] +[输入工号/密码] --> [登录基础数据_人员信息_登陆检查密码] +[登录基础数据_人员信息_登陆检查密码] --> [校验通过?] +[校验通过?] -- 否 --> [提示登录失败] +[校验通过?] -- 是 --> [写入 Token/用户信息] +[写入 Token/用户信息] --> [加载用户角色/菜单权限] +[加载用户角色/菜单权限] --> [登录基础数据_二级菜单/角色权限] +[登录基础数据_二级菜单/角色权限] --> [生成动态路由] +[生成动态路由] --> [进入 Layout] +[进入 Layout] --> [侧边栏/标签页/AppMain] +[侧边栏/标签页/AppMain] --> [打开具体业务页面] +``` + +涉及页面: +- `src/views/login/index.vue` +- `src/views/layout/Layout.vue` +- `src/views/layout/components/Sidebar` +- `src/views/SystemMaintenance/MenuManagement` +- `src/views/SystemMaintenance/SystemRrolemaintenance` + +## 3. 基础资料维护总流程 + +```text +[系统基础资料] --> [人员/组织/角色] +[系统基础资料] --> [工位/设备/SAP Resource] +[系统基础资料] --> [班次/人员绑定] +[系统基础资料] --> [工序/物料/图纸/产品结构] +[人员/组织/角色] --> [PersonnelManagement/OrgManagement/SystemRole] +[PersonnelManagement/OrgManagement/SystemRole] --> [人员、岗位、班组、权限] +[工位/设备/SAP Resource] --> [WorkstationManagement] +[WorkstationManagement] --> [维护工位] +[维护工位] --> [是否同步 SAP Resource?] +[是否同步 SAP Resource?] -- 是 --> [POST/PATCH /Resources] +[是否同步 SAP Resource?] -- 否 --> [仅 MES 保存] +[POST/PATCH /Resources] --> [记录同步状态/失败原因] +[仅 MES 保存] --> [记录同步状态/失败原因] +[工位/设备/SAP Resource] --> [DeviceInformation] +[DeviceInformation] --> [设备名称/型号/类型/工位/点检/能力] +[班次/人员绑定] --> [ShiftManagement/PersonnelBinding] +[ShiftManagement/PersonnelBinding] --> [班次规则/人员工位绑定] +[工序/物料/图纸/产品结构] --> [ProcedureManagement] +[ProcedureManagement] --> [工序基础数据] +[工序基础数据] --> [是否同步 SAP RouteStages?] +[是否同步 SAP RouteStages?] -- 是 --> [POST/PATCH /RouteStages] +[是否同步 SAP RouteStages?] -- 否 --> [MES 本地维护] +``` + +维护口径: +- 缺勤人员不能由看板维护,必须来自班次/排班、人员工位绑定和实到来源。 +- 设备 OEE 基础数据应分散在设备档案、工位、工艺、采集配置中维护,不应只靠看板公式。 + +## 4. 工艺、图纸、标准工艺、生产工艺流程 + +```text +[产品/物料/图纸基础] --> [产品结构维护 CraftMaintain] +[产品/物料/图纸基础] --> [零件图纸 PartDrawing] +[产品/物料/图纸基础] --> [工艺图纸 ProcessDrawing] +[产品/物料/图纸基础] --> [工序基础 ProcedureManagement] +[产品结构维护 CraftMaintain] --> [制定标准工艺 ProcessesDevelop] +[零件图纸 PartDrawing] --> [制定标准工艺 ProcessesDevelop] +[工艺图纸 ProcessDrawing] --> [制定标准工艺 ProcessesDevelop] +[工序基础 ProcedureManagement] --> [制定标准工艺 ProcessesDevelop] +[制定标准工艺 ProcessesDevelop] --> [标准工艺库] +[标准工艺库] --> [工序顺序] +[标准工艺库] --> [标准工时/准备工时] +[标准工艺库] --> [是否关键工序] +[标准工艺库] --> [生产工艺 ProcessProduct] +[生产工艺 ProcessProduct] --> [订单是否已有生产工艺?] +[订单是否已有生产工艺?] -- 是 --> [编辑订单级生产工艺] +[订单是否已有生产工艺?] -- 否 --> [按物料带出标准工艺草稿] +[按物料带出标准工艺草稿] --> [用户保存?] +[用户保存?] -- 否 --> [不写入生产工艺] +[用户保存?] -- 是 --> [写入生产工艺库] +[编辑订单级生产工艺] --> [启用/下发生产工艺] +[写入生产工艺库] --> [启用/下发生产工艺] +[启用/下发生产工艺] --> [生成任务可用工艺快照] +[生成任务可用工艺快照] --> [排产/报工/质检/看板读取] +``` + +关键结论: +- `关键工序` 应在标准工艺和生产工艺维护。 +- 生产任务下发时应快照关键工序和标准工时,避免后续改标准工艺影响历史任务。 +- 质检大屏、机加大屏只读取关键工序,不作为维护入口。 + +## 5. 生产订单、机加排产与 SAP 回写流程 + +```text +[SAP/MES 生产订单同步] --> [MES_接口_生产计划] +[MES_接口_生产计划] --> [待排产 SelfMakePlan] +[待排产 SelfMakePlan] --> [选择订单/工序/设备/工位/时间] +[选择订单/工序/设备/工位/时间] --> [排产保存] +[排产保存] --> [MES_接口_生产计划_生产任务] +[MES_接口_生产计划_生产任务] --> [任务排产状态=已排产] +[排产保存] --> [是否回写 SAP 生产订单日期?] +[是否回写 SAP 生产订单日期?] -- 是 --> [PATCH /ProductionOrders] +[PATCH /ProductionOrders] --> [SAP 回写成功?] +[SAP 回写成功?] -- 是 --> [记录同步成功] +[SAP 回写成功?] -- 否 --> [记录失败原因/待重试] +[是否回写 SAP 生产订单日期?] -- 否 --> [仅 MES 排产] +[任务排产状态=已排产] --> [已排产 SelfMakePlando/SelfMakePlandone] +[已排产 SelfMakePlando/SelfMakePlandone] --> [生产计划跟踪/及时开工/机加中心] +``` + +涉及页面: +- `PlanManagement/SelfMakePlan` +- `PlanManagement/SelfMakePlando` +- `PlanManagement/SelfMakePlandone` +- `ProductionManagement/ProductionPlanTrack` +- `AnomalousManagement/PunctualWork` + +风险点: +- MES 排产成功但 SAP 回写失败时,需要保留同步状态和失败原因。 +- 已排产页面新增历史工时、总工时后,必须明确工时来源是生产报工、质检、异常还是设备采集。 + +## 6. 装配排产、外购申请与 SAP 流程 + +```text +[装配/电气/系统相关订单] --> [InstallMakePlan 待排产] +[InstallMakePlan 待排产] --> [选择装配任务/计划时间/优先级] +[选择装配任务/计划时间/优先级] --> [保存装配排产] +[保存装配排产] --> [生成装配生产任务] +[选择装配任务/计划时间/优先级] --> [需要采购申请?] +[需要采购申请?] -- 是 --> [POST /PurchaseRequests] +[POST /PurchaseRequests] --> [SAP 采购申请成功?] +[SAP 采购申请成功?] -- 是 --> [记录 SAP 采购请求号] +[SAP 采购申请成功?] -- 否 --> [记录失败/允许重试] +[需要采购申请?] -- 否 --> [不生成采购申请] +[保存装配排产] --> [是否回写 SAP 生产订单?] +[是否回写 SAP 生产订单?] -- 是 --> [PATCH /ProductionOrders] +[PATCH /ProductionOrders] --> [同步派工/日期/说明] +[是否回写 SAP 生产订单?] -- 否 --> [仅 MES 保存] +[生成装配生产任务] --> [InstallMakePlanDo/装配中心/装配看板] +``` + +涉及页面: +- `PlanManagement/InstallMakePlan` +- `PlanManagement/InstallMakePlanDo` +- `ProductionManagement/AssemblyCenter` +- `装配任务看板` + +新增需求影响: +- 发料齐套时间、装配完成时间、手续确认、送检状态会反向要求装配排产和装配中心补字段。 + +## 7. 机加生产执行流程 + +```text +[已排产机加任务] --> [MachiningCenter 机加中心] +[MachiningCenter 机加中心] --> [任务是否可开工?] +[任务是否可开工?] -- 否 --> [显示不可操作原因: 未齐套/上序未合格/异常/编程未完成/设备占用] +[任务是否可开工?] -- 是 --> [开始加工/开工] +[开始加工/开工] --> [操作记录表写入开始时间/人员/设备] +[操作记录表写入开始时间/人员/设备] --> [加工过程] +[加工过程] --> [是否异常?] +[是否异常?] -- 是 --> [直接报异常] +[直接报异常] --> [AbnormalControl 异常管控] +[AbnormalControl 异常管控] --> [加工过程] +[加工过程] --> [结束报工] +[结束报工] --> [写入 YL_加工中心_操作记录表] +[写入 YL_加工中心_操作记录表] --> [更新完成数量/工时/任务状态] +[更新完成数量/工时/任务状态] --> [是否需要质检?] +[是否需要质检?] -- 是 --> [进入质检任务/序检/首检/终检] +[是否需要质检?] -- 否 --> [进入下序或完成] +[进入下序或完成] --> [是否入库/转序/外协?] +[是否入库/转序/外协?] -- 转序 --> [已排产机加任务] +[是否入库/转序/外协?] -- 入库 --> [入库/库存任务] +[是否入库/转序/外协?] -- 外协 --> [外协流程] +``` + +涉及对象: +- `YL_加工中心_操作记录表` +- `MES_接口_生产计划_生产任务` +- `View_生产订单_MES` +- `ProductionManagement/MachiningCenter` + +新增需求影响: +- 编程任务完成状态可能成为开工前置条件。 +- 设备采集工时、程序工时、人工报工工时需要区分。 +- 条码拣配会影响齐套、发料、可开工状态。 + +## 8. 装配中心执行流程 + +```text +[已排产装配任务] --> [AssemblyCenter 装配中心] +[AssemblyCenter 装配中心] --> [查询 SAP/MES 订单、物料、发料、齐套] +[查询 SAP/MES 订单、物料、发料、齐套] --> [发料/齐套是否满足?] +[发料/齐套是否满足?] -- 否 --> [缺件/待发料/不可开工] +[缺件/待发料/不可开工] --> [缺件明细/预计可执行时间] +[发料/齐套是否满足?] -- 是 --> [开始装配] +[开始装配] --> [装配报工/工时记录] +[装配报工/工时记录] --> [是否产生异常?] +[是否产生异常?] -- 是 --> [直接报异常 -> AbnormalControl] +[是否产生异常?] -- 否 --> [继续装配] +[继续装配] --> [装配完成/更新任务状态] +[装配完成/更新任务状态] --> [是否需要送检?] +[是否需要送检?] -- 是 --> [送检/质检任务] +[是否需要送检?] -- 否 --> [入库/发货/后续确认] +[装配完成/更新任务状态] --> [手续确认报表] +[手续确认报表] --> [手续确认完成?] +[手续确认完成?] -- 否 --> [待办保留] +[手续确认完成?] -- 是 --> [从待办消失] +[入库/发货/后续确认] --> [装配看板/生产任务看板] +``` + +关键新增字段: +- 发料齐套时间 +- 装配完成时间 +- 送检状态/送检时间 +- 手续确认、确认人、确认时间 +- 当前对应人员/当前对应内容 + +## 9. 质检业务流程 + +```text +[质检任务来源] --> [机加报工后待检] +[质检任务来源] --> [装配送检] +[质检任务来源] --> [采购入库检] +[质检任务来源] --> [序检收检/外协收检] +[质检任务来源] --> [退库/销售退货/其他入库] +[机加报工后待检] --> [QualityCenter/CheckTask] +[装配送检] --> [QualityCenter/CheckTask] +[采购入库检] --> [QualityCenter/CheckTask] +[序检收检/外协收检] --> [QualityCenter/CheckTask] +[退库/销售退货/其他入库] --> [QualityCenter/CheckTask] +[QualityCenter/CheckTask] --> [录入检验结果] +[录入检验结果] --> [合格?] +[合格?] -- 是 --> [合格数量/质检完成] +[合格?] -- 否 --> [不合格处理 Unqualified] +[不合格处理 Unqualified] --> [处置方式] +[处置方式] -- 返工 --> [回生产/返修] +[处置方式] -- 报废 --> [报废记录] +[处置方式] -- 让步接收 --> [让步接收字段] +[处置方式] -- 复检 --> [生成复检/再次检验] +[合格数量/质检完成] --> [是否 SAP 收货/库存动作?] +[是否 SAP 收货/库存动作?] -- 是 --> [PurchaseDeliveryNotes 或库存任务] +[是否 SAP 收货/库存动作?] -- 否 --> [MES 本地完成] +[让步接收字段] --> [让步接收记录查询页] +[合格数量/质检完成] --> [质检看板/及时检验/生产日报] +``` + +涉及页面: +- `QualityManagement/QualityCenter` +- `QualityManagement/CheckTask/processReceive` +- `QualityManagement/CheckTask/purchaseIncoming` +- `QualityManagement/CheckTask/final` +- `QualityManagement/Unqualified` +- `QualityManagement/QualityDetails` + +新增需求影响: +- 及时检验要以生产完成/报工完成时间为起点。 +- 关键工序要从工艺/任务快照读取。 +- 让步接收记录页只查询,不应成为维护入口。 + +## 10. 外协业务流程 + +```text +[生产任务指派对象=外协] --> [OutsourceMange 外协管理] +[OutsourceMange 外协管理] --> [生成外协任务/采购申请] +[生成外协任务/采购申请] --> [是否提交 SAP 采购申请?] +[是否提交 SAP 采购申请?] -- 是 --> [POST /PurchaseRequests] +[POST /PurchaseRequests] --> [SAP 成功?] +[SAP 成功?] -- 是 --> [记录采购请求/单据关系] +[SAP 成功?] -- 否 --> [记录失败/重试] +[是否提交 SAP 采购申请?] -- 否 --> [MES 本地外协任务] +[记录采购请求/单据关系] --> [外协加工/供应商交付] +[MES 本地外协任务] --> [外协加工/供应商交付] +[外协加工/供应商交付] --> [序检收检/外协收货] +[序检收检/外协收货] --> [记录供应商/SAP采购收货单号/指派对象] +[记录供应商/SAP采购收货单号/指派对象] --> [质检合格?] +[质检合格?] -- 是 --> [SAP PurchaseDeliveryNotes/入库] +[质检合格?] -- 否 --> [不合格/返修/让步] +[SAP PurchaseDeliveryNotes/入库] --> [外协报表/供应商质量统计] +[不合格/返修/让步] --> [外协报表/供应商质量统计] +``` + +涉及页面: +- `ProductionManagement/OutsourceMange` +- `ProductionManagement/OutsourceSheet` +- `ProductionManagement/SaleOutsourceMange` +- `QualityManagement/CheckTask/processReceive` + +关键修正: +- 供应商、SAP 采购收货单号、指派对象应在外协/序检收检链路维护,报表只消费这些字段。 + +## 11. 工时、SAP 工时校验与投料流程 + +```text +[报工/设备采集/质检/装配] --> [工时来源汇总] +[工时来源汇总] --> [人工报工工时] +[工时来源汇总] --> [设备运行工时] +[工时来源汇总] --> [程序工时] +[工时来源汇总] --> [质检/装配/设计/编程工时] +[人工报工工时] --> [Workhours/Timesheet/WorkHoursCheck] +[设备运行工时] --> [Workhours/Timesheet/WorkHoursCheck] +[程序工时] --> [Workhours/Timesheet/WorkHoursCheck] +[质检/装配/设计/编程工时] --> [Workhours/Timesheet/WorkHoursCheck] +[Workhours/Timesheet/WorkHoursCheck] --> [工时校验] +[工时校验] --> [是否提交 SAP?] +[是否提交 SAP?] -- 否 --> [MES 工时报表/绩效] +[是否提交 SAP?] -- 是 --> [GET /ProductionOrders] +[GET /ProductionOrders] --> [匹配 SAP 工序/资源] +[匹配 SAP 工序/资源] --> [POST /InventoryGenExits 投料] +[匹配 SAP 工序/资源] --> [PATCH /ProductionOrders 更新工序资源/工时] +[POST /InventoryGenExits 投料] --> [SAP 成功?] +[PATCH /ProductionOrders 更新工序资源/工时] --> [SAP 成功?] +[SAP 成功?] -- 是 --> [记录提交成功] +[SAP 成功?] -- 否 --> [记录失败原因/允许重试] +``` + +涉及页面: +- `ProductionManagement/WorkHoursCheck` +- `ProductionManagement/WorkhoursEdit` +- `ProductionManagement/Workhours` +- `ProductionManagement/Timesheet` + +风险点: +- 程序工时、设备工时、人工工时不是同一口径。 +- 上 SAP 的工时要明确是否包含设计、编程、质检、装配、异常。 + +## 12. 异常管控流程 + +```text +[报工/质检/外协/装配/设计/编程页面] --> [选择任务] +[选择任务] --> [点击报异常] +[点击报异常] --> [带出任务/订单/工序/人员信息] +[带出任务/订单/工序/人员信息] --> [填写异常类型/说明/附件] +[填写异常类型/说明/附件] --> [选择审批人 多选] +[选择审批人 多选] --> [保存异常] +[保存异常] --> [AbnormalControl 异常管控] +[AbnormalControl 异常管控] --> [审批人待办可见] +[审批人待办可见] --> [任一审批人处理?] +[任一审批人处理?] -- 否 --> [异常未关闭] +[任一审批人处理?] -- 是 --> [记录实际处理人] +[记录实际处理人] --> [异常进入下一状态/关闭] +[异常未关闭] --> [影响任务可操作性/及时开工/看板] +[异常进入下一状态/关闭] --> [任务恢复或结束] +``` + +关键规则: +- 多审批人不是会签,是多人可见、一人处理。 +- 异常需要带业务域、任务、工序、责任部门,否则看板异常数会混淆。 + +## 13. 生产订单关闭与 SAP 状态同步流程 + +```text +[生产订单关闭 PlannOrderClose] --> [查询可关闭订单] +[查询可关闭订单] --> [选择单个或批量订单] +[选择单个或批量订单] --> [二次确认] +[二次确认] --> [逐单 PATCH /ProductionOrders] +[逐单 PATCH /ProductionOrders] --> [单据关闭成功?] +[单据关闭成功?] -- 是 --> [记录成功/更新 MES 状态] +[单据关闭成功?] -- 否 --> [记录失败原因] +[记录失败原因] --> [失败项重试] +[记录成功/更新 MES 状态] --> [刷新关闭页] +[记录失败原因] --> [刷新关闭页] +[刷新关闭页] --> [影响排产页/生产中心/手续确认/看板] +``` + +要求: +- 批量关闭不应“一条失败全批失败”,应逐单记录成功/失败。 +- 关闭结果要被排产、生产中心、装配看板、手续确认报表识别。 + +## 14. 看板数据汇总流程 + +```text +[主系统业务数据] --> [统一视图/存储过程] +[SAP 同步表/跨库表] --> [统一视图/存储过程] +[设备采集缓存/历史] --> [统一视图/存储过程] +[质检记录/报工记录] --> [统一视图/存储过程] +[统一视图/存储过程] --> [生产任务看板] +[统一视图/存储过程] --> [装配任务看板] +[统一视图/存储过程] --> [质检任务看板] +[统一视图/存储过程] --> [机加设备生产运营看板] +[统一视图/存储过程] --> [TableTV 工位监控] +[统一视图/存储过程] --> [board_view 综合大屏] +[生产任务看板] --> [齐套率/待排产/未及时开工/加急/未入库] +[装配任务看板] --> [装配任务/发货状态/缺件/异常/缺勤] +[质检任务看板] --> [未清/及时率/关键工序/当天完成] +[机加设备生产运营看板] --> [设备状态/在制/关键工序/缺勤/OEE] +[board_view 综合大屏] --> [合同进度/工时/采购/库存/OEE] +``` + +看板治理规则: +- 看板只展示和钻取,不作为主维护入口。 +- SAP 类指标必须有同步时间和同步状态。 +- `GETDATE()` 型实时指标如要做日报/历史回看,应补统计日期或日快照。 +- `board_view` 中 OEE、采购、库存等占位指标上线前必须接真实数据或隐藏。 + +## 15. 新增需求与维护入口判断流程 + +```text +[收到新增需求/新增字段] --> [字段性质是什么?] +[字段性质是什么?] -- 主数据 --> [找基础维护页: 人员/班次/工位/设备/工序/工艺] +[字段性质是什么?] -- 订单过程数据 --> [找业务页: 计划/排产/装配/机加/质检] +[字段性质是什么?] -- SAP 同步数据 --> [找 SAP 同步表/接口/同步时间] +[字段性质是什么?] -- 设备采集数据 --> [找采集原始表/设备状态历史/任务绑定] +[字段性质是什么?] -- 人工确认 --> [待办页维护并记录确认人时间] +[字段性质是什么?] -- 计算指标 --> [统一视图/过程/快照] +[找基础维护页: 人员/班次/工位/设备/工序/工艺] --> [现有页面能承载?] +[找业务页: 计划/排产/装配/机加/质检] --> [现有页面能承载?] +[找 SAP 同步表/接口/同步时间] --> [现有页面能承载?] +[找采集原始表/设备状态历史/任务绑定] --> [现有页面能承载?] +[待办页维护并记录确认人时间] --> [现有页面能承载?] +[统一视图/过程/快照] --> [现有页面能承载?] +[现有页面能承载?] -- 是 --> [扩展现有页面/过程] +[现有页面能承载?] -- 否 --> [新增维护页或业务页] +[扩展现有页面/过程] --> [同步菜单/权限/日志/历史策略] +[新增维护页或业务页] --> [同步菜单/权限/日志/历史策略] +[同步菜单/权限/日志/历史策略] --> [检查影响看板/报表/SAP/历史数据] +[检查影响看板/报表/SAP/历史数据] --> [开发排期] +``` + +典型判断: +- 缺勤人员:先确认排班/应到和实到来源;没有维护入口则新增或扩展排班/出勤维护。 +- 关键工序:在标准工艺和生产工艺维护,任务下发快照,看板只读取。 +- 让步接收:质检中心维护,记录页只查询。 +- OEE:设备采集、报工、质检、工艺标准工时共同计算,不是人工维护字段。 + +## 16. 端到端生产业务主流程 + +```text +[SAP/MES 生产订单] --> [工艺准备] +[工艺准备] --> [标准工艺] +[标准工艺] --> [生产工艺] +[生产工艺] --> [任务工艺快照] +[SAP/MES 生产订单] --> [计划排产] +[计划排产] --> [机加排产] +[计划排产] --> [装配排产] +[机加排产] --> [生产执行] +[装配排产] --> [装配执行] +[生产执行] --> [报工/工时/设备采集] +[装配执行] --> [装配报工/发料/齐套/送检] +[报工/工时/设备采集] --> [质检] +[装配报工/发料/齐套/送检] --> [质检] +[质检] --> [质量结果] +[质量结果] -- 合格 --> [入库/转序/交付] +[质量结果] -- 不合格 --> [返工/报废/让步接收/复检] +[返工/报废/让步接收/复检] --> [生产执行] +[入库/转序/交付] --> [工时校验/SAP 投料/订单状态] +[工时校验/SAP 投料/订单状态] --> [订单关闭] +[订单关闭] --> [报表/看板/日报] +[生产执行] --> [异常管控] +[装配执行] --> [异常管控] +[质检] --> [异常管控] +[异常管控] --> [报表/看板/日报] +[报表/看板/日报] --> [管理层 KPI/现场大屏/追溯查询] +``` + +这个主流程是后续所有新增需求的评估底图:任何新增字段都要判断它落在工艺准备、计划排产、生产执行、质检、入库交付、SAP 回写、看板报表中的哪一环。 + +## 17. 逐页详细框线流程图 + +说明:本章按 `元利项目详细分析.md` 的 78 个 `src/views` 页面逐页生成。每个图都按“进入页面 -> 初始化 -> 查询/业务动作 -> 存储过程/SAP/WMS -> 刷新/异常”的结构展开。 + +### 17.1 逐页模块索引流程 + +```text +[登录后进入 Layout] --> [侧边菜单/动态路由] +[侧边菜单/动态路由] --> [404.vue] +[404.vue] --> [404.vue] +[侧边菜单/动态路由] --> [异常管理] +[异常管理] --> [PunctualWork] +[侧边菜单/动态路由] --> [产品结构与工艺基础] +[产品结构与工艺基础] --> [CraftMaintain] +[侧边菜单/动态路由] --> [设备管理] +[设备管理] --> [DeviceDataHistory / DeviceInformation / DeviceRealData / Devicedata] +[侧边菜单/动态路由] --> [计划排产] +[计划排产] --> [InstallMakePlanDo / InstallMakePlan / PlanShell / PlannOrderClose] +[侧边菜单/动态路由] --> [工艺与图纸] +[工艺与图纸] --> [PartDrawing / PartDrawlook / ProcedureManagement / ProcessDrawing] +[侧边菜单/动态路由] --> [生产执行] +[生产执行] --> [AbnormalControl / AssemblePlanTrack / AssembleStatus / AssembleTaskManage] +[侧边菜单/动态路由] --> [质量管理] +[质量管理] --> [OtherInbound.vue / final.vue / firstSpecial.vue / materialReturn.vue] +[侧边菜单/动态路由] --> [销售管理] +[销售管理] --> [saleorderstatus] +[侧边菜单/动态路由] --> [系统维护] +[系统维护] --> [MenuManagement / OperationLog / OrgManagement / PersonnelManagement] +[侧边菜单/动态路由] --> [首页与看板入口] +[首页与看板入口] --> [dashboard] +[侧边菜单/动态路由] --> [布局与导航] +[布局与导航] --> [Layout.vue / AppMain.vue / Navbar.vue / Item.vue] +[侧边菜单/动态路由] --> [登录] +[登录] --> [login] +``` + +### 17.2 404.vue(404.vue) + +#### 1. `src/views/404.vue` + +页面要点:该页面是 404 错误页,用于路由不存在时展示错误信息。 + +```text +[进入页面 / src/views/404.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +### 17.3 异常管理(AnomalousManagement) + +#### 2. `src/views/AnomalousManagement/PunctualWork/index.vue` + +页面要点:该页面用于发现“计划应开工但现场未及时开工”的任务。用户按任务状态、工位、工序、异常原因等条件筛选,页面展示生产订单、销售订单、物料、工序、指派对象、分配数量、上序合格数、加工/收料状态和加急数量,服务于生产异常提醒和催办。 页面可见的操作/字段包括 “全部”、“待执行”、“可执行”、“已开工”、“已完成”、“item.指南工位号”、“指 +过程覆盖:`异常提醒_及时开工_查询`、`MES_登录_工位与名称_查询`、`Prog_MES_LoadProcess`、`查询字典` + +```text +[进入页面 / src/views/AnomalousManagement/PunctualWork/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 异常提醒_及时开工_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 异常提醒_及时开工_查询 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / 登录基础数据_人员信息 / YL_质量检验_质检记录 / 视图:View_生产订单_MES] +[主要数据对象 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / 登录基础数据_人员信息 / YL_质量检验_质检记录 / 视图:View_生产订单_MES] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `异常提醒_及时开工_查询` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、登录基础数据_人员信息、YL_质量检验_质检记录;视图:View_生产订单_MES | +| 2 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 3 | `Prog_MES_LoadProcess` | 查询/读取数据 | 表:基础表_工序 | +| 4 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | + +### 17.4 产品结构与工艺基础(CraftManagement) + +#### 3. `src/views/CraftManagement/CraftMaintain/index.vue` + +页面要点:该页面维护产品结构树。用户可以新增、编辑、删除产品结构节点,查询现有产品结构,并为后续工艺、物料、BOM 或生产任务提供层级基础数据。 页面可见的操作/字段包括 “新增”、“编辑”、“删除”、“展开”、“产品结构维护”、“产品材料维护”、“工艺参数维护”,这些是判断页面业务范围的主要线索。 后端主要围绕 WEB_基本表_产品结构_新增、W +过程覆盖:`WEB_基本表_产品结构_新增`、`WEB_基本表_产品结构_查询`、`WEB_基本表_产品结构_删除`、`WEB_基本表_产品结构_修改` + +```text +[进入页面 / src/views/CraftManagement/CraftMaintain/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / WEB_基本表_产品结构_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / WEB_基本表_产品结构_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / WEB_基本表_产品结构_新增 / 新增业务数据] +[type 11(当前通用存储过程查询/执行) / WEB_基本表_产品结构_新增 / 新增业务数据] --> [type 11(当前通用存储过程查询/执行) / WEB_基本表_产品结构_删除 / 删除业务数据] +[type 11(当前通用存储过程查询/执行) / WEB_基本表_产品结构_删除 / 删除业务数据] --> [type 11(当前通用存储过程查询/执行) / WEB_基本表_产品结构_修改 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / WEB_基本表_产品结构_修改 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `WEB_基本表_产品结构_新增` | 新增业务数据 | 未知 | +| 2 | `WEB_基本表_产品结构_查询` | 查询/读取数据 | 未知 | +| 3 | `WEB_基本表_产品结构_删除` | 删除业务数据 | 未知 | +| 4 | `WEB_基本表_产品结构_修改` | 更新/保存业务数据 | 未知 | + +### 17.5 设备管理(DeviceManagement) + +#### 4. `src/views/DeviceManagement/DeviceDataHistory/index.vue` + +页面要点:该页面查询设备历史采集数据。用户按工位/设备、参数名称、起止时间分页查询历史记录,用于追溯设备运行参数。 页面可见的操作/字段包括 “查询”、“item.name”、“设备名称”、“参数名称”、“设备编号”、“数值”、“单位”、“采集时间”、“结束日期”、“开始日期”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_登录_工位与 +过程覆盖:`MES_登录_工位与名称_查询`、`设备管理_设备数据_历史查询` + +```text +[进入页面 / src/views/DeviceManagement/DeviceDataHistory/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 设备管理_设备数据_历史查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 设备管理_设备数据_历史查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_基础数据_工位] +[主要数据对象 / View_基础数据_工位] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 2 | `设备管理_设备数据_历史查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | + +#### 5. `src/views/DeviceManagement/DeviceInformation/index.vue` + +页面要点:该页面维护设备台账和设备相关基础资料。用户可以查询设备信息,新增、修改、删除设备,维护维修记录、工时记录或点检配置。 页面可见的操作/字段包括 “查询”、“设备”、“--> 取消”、“确定”、“item.name”、“设备名称”、“设备型号”、“设备类型”、“加工工艺”、“工位”,这些是判断页面业务范围的主要线索。 后端主要围绕 查询字典 +过程覆盖:`查询字典`、`设备管理_设备信息_查询`、`设备管理_设备信息_增加`、`设备管理_设备信息_编辑`、`设备管理_设备信息_删除` + +```text +[进入页面 / src/views/DeviceManagement/DeviceInformation/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 设备管理_设备信息_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 设备管理_设备信息_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 12(当前通用存储过程写入/业务动作) / 设备管理_设备信息_增加 / 新增业务数据] +[type 12(当前通用存储过程写入/业务动作) / 设备管理_设备信息_增加 / 新增业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 设备管理_设备信息_编辑 / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / 设备管理_设备信息_编辑 / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 设备管理_设备信息_删除 / 删除业务数据] +[type 12(当前通用存储过程写入/业务动作) / 设备管理_设备信息_删除 / 删除业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / YL_基础表_数据字典] +[主要数据对象 / YL_基础表_数据字典] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 2 | `设备管理_设备信息_查询` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 3 | `设备管理_设备信息_增加` | 新增业务数据 | 未在 SQL 中解析到明确依赖 | +| 4 | `设备管理_设备信息_编辑` | 更新/保存业务数据 | 未在 SQL 中解析到明确依赖 | +| 5 | `设备管理_设备信息_删除` | 删除业务数据 | 未在 SQL 中解析到明确依赖 | + +#### 6. `src/views/DeviceManagement/DeviceRealData/index.vue` + +页面要点:该页面展示设备实时或近实时数据。用户按工位和数据类型查询当前采集值、统计值或状态,通常用于设备运行监控。 页面可见的操作/字段包括 “查询”、“item.name”、“设备名称”、“参数名称”、“参数值”、“操作”、“开始时间”、“结束时间”、“状态”、“时长(m)”,这些是判断页面业务范围的主要线索。 后端主要围绕 设备管理_设备数据_ +过程覆盖:`设备管理_设备数据_工位信息_查询`、`设备管理_设备数据_统计数据查询`、`设备管理_设备数据_统计数据查询_通过类型` + +```text +[进入页面 / src/views/DeviceManagement/DeviceRealData/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 设备管理_设备数据_统计数据查询_通过类型 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 设备管理_设备数据_统计数据查询_通过类型 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 设备管理_设备数据_工位信息_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 设备管理_设备数据_工位信息_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 设备管理_设备数据_统计数据查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 设备管理_设备数据_统计数据查询 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / YL_设备管理_工时记录] +[主要数据对象 / YL_设备管理_工时记录] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `设备管理_设备数据_工位信息_查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 2 | `设备管理_设备数据_统计数据查询` | 查询/读取数据 | 表:YL_设备管理_工时记录 | +| 3 | `设备管理_设备数据_统计数据查询_通过类型` | 查询/读取数据 | 表:YL_设备管理_工时记录 | + +#### 7. `src/views/DeviceManagement/Devicedata/index.vue` + +页面要点:该页面面向设备采集数据管理,查询缓存变量和设备数据,支持按设备、参数、时间等维度查看实时或历史采集结果。 页面可见的操作/字段包括 “查询”、“item.name”、“设备名称”、“参数名称”、“设备编号”、“数值”、“单位”、“更新时间”、“请选择设备”、“请输入参数名称”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_登录 +过程覆盖:`MES_登录_工位与名称_查询`、`设备管理_设备数据查询` + +```text +[进入页面 / src/views/DeviceManagement/Devicedata/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 设备管理_设备数据查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 设备管理_设备数据查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_基础数据_工位 / CaChe_Var] +[主要数据对象 / View_基础数据_工位 / CaChe_Var] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 2 | `设备管理_设备数据查询` | 查询/读取数据 | 表:CaChe_Var | + +### 17.6 计划排产(PlanManagement) + +#### 8. `src/views/PlanManagement/InstallMakePlanDo/index.vue` + +页面要点:该页面处理装配件排产。用户查询待排产/已排产装配任务,选择工位和人员,修改计划开工/完成时间、优先级、说明,执行单条派工、二次派工、批量确认排产,并在确认时同步 SAP 生产订单状态或创建相关请求。 页面可见的操作/字段包括 “查询”、“批量排产”、“排产完成”、“确定”、“派工”、“计划排产”、“编辑”、“取 消”、“确 定”、“全部” +过程覆盖:`计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Queryzp`、`Prog_MES_LoadStations`、`系统管理_人员管理_所有有效人员查询`、`MES_OrderPlanned_EditTaskPlanned`、`计划排产_二次派工`、`计划排产_派工`、`MES_OrderPlanned_SingleTaskPlanned`、`MES_OrderPlanned_Finish`、... + +```text +[进入页面 / src/views/PlanManagement/InstallMakePlanDo/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_已排产订单查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_已排产订单查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Queryzp / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Queryzp / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_二次派工 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_二次派工 / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_派工 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_派工 / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / View_基础数据_工位 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES] +[主要数据对象 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / View_基础数据_工位 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `计划排产_生产订单_已排产订单查询` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 2 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 3 | `MES_OrderPlanned_Queryzp` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库;视图:View_生产订单_MES | +| 4 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | +| 5 | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 6 | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 7 | `计划排产_二次派工` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 8 | `计划排产_派工` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 9 | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 10 | `MES_OrderPlanned_Finish` | 确认/关闭/完成业务动作 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 11 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 12 | `计划排产_自制件_日程时间修改` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | + +#### 9. `src/views/PlanManagement/InstallMakePlan/index.vue` + +页面要点:该页面处理装配件排产。用户查询待排产/已排产装配任务,选择工位和人员,修改计划开工/完成时间、优先级、说明,执行单条派工、二次派工、批量确认排产,并在确认时同步 SAP 生产订单状态或创建相关请求。 页面可见的操作/字段包括 “查询”、“批量排产”、“排产完成”、“确定”、“派工”、“计划排产”、“编辑”、“取 消”、“确 定”、“全部” +过程覆盖:`计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Queryzp`、`Prog_MES_LoadStations`、`系统管理_人员管理_所有有效人员查询`、`MES_OrderPlanned_EditTaskPlanned`、`计划排产_二次派工`、`计划排产_派工`、`MES_OrderPlanned_SingleTaskPlanned`、`MES_OrderPlanned_Finish`、... + +```text +[进入页面 / src/views/PlanManagement/InstallMakePlan/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_已排产订单查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_已排产订单查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Queryzp / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Queryzp / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_二次派工 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_二次派工 / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_派工 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_派工 / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / View_基础数据_工位 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES] +[主要数据对象 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / View_基础数据_工位 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `计划排产_生产订单_已排产订单查询` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 2 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 3 | `MES_OrderPlanned_Queryzp` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库;视图:View_生产订单_MES | +| 4 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | +| 5 | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 6 | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 7 | `计划排产_二次派工` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 8 | `计划排产_派工` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 9 | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 10 | `MES_OrderPlanned_Finish` | 确认/关闭/完成业务动作 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 11 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 12 | `计划排产_自制件_日程时间修改` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | + +#### 10. `src/views/PlanManagement/PlanShell/index.vue` + +页面要点:该页面是计划外壳/计划跟踪类页面,按缺料、发货通知、完成状态等条件查询计划或装配相关任务,用于计划人员集中查看订单齐套、发货和关闭情况。 页面可见的操作/字段包括 “查询”、“缺料”、“关闭”、“全部”、“已下达发货通知”、“未下达发货通知”、“是”、“否”、“已完成”、“未完成”,这些是判断页面业务范围的主要线索。 后端主要围绕 生产管 +过程覆盖:`生产管理_装配中心_缺料查询`、`计划排产_查询计划信息`、`MES_OrderPlanned_DescriptionEdit`、`Prog_MES_LoadStations` + +```text +[进入页面 / src/views/PlanManagement/PlanShell/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 生产管理_装配中心_缺料查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_装配中心_缺料查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 计划排产_查询计划信息 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 计划排产_查询计划信息 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / SAP.SBO_YL.dbo.UBT_OPKL_MissQty / View_生产订单_MES / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / MES_资源主数据] +[主要数据对象 / SAP.SBO_YL.dbo.UBT_OPKL_MissQty / View_生产订单_MES / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / MES_资源主数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `生产管理_装配中心_缺料查询` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OPKL_MissQty | +| 2 | `计划排产_查询计划信息` | 查询/读取数据 | 视图:View_生产订单_MES | +| 3 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 4 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | + +#### 11. `src/views/PlanManagement/PlannOrderClose/index.vue` + +页面要点:该页面用于生产订单关闭。用户筛选 SAP 未关闭或 MES 待确认订单,执行 SAP 生产订单关闭,并调用 MES 过程记录或确认订单关闭状态。 页面可见的操作/字段包括 “查询”、“确认”、“关闭”、“全部”、“已关闭”、“未关闭”、“可关闭”、“SAP未关闭”、“机加”、“装配”,这些是判断页面业务范围的主要线索。 后端主要围绕 计划 +过程覆盖:`计划排产_生产订单关闭_查询全部订单`、`计划排产_生产订单关闭_关闭订单`、`计划排产_生产订单关闭_确认订单` + +```text +[进入页面 / src/views/PlanManagement/PlannOrderClose/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 计划排产_生产订单关闭_查询全部订单 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 计划排产_生产订单关闭_查询全部订单 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 计划排产_生产订单关闭_关闭订单 / 确认/关闭/完成业务动作] +[type 11(当前通用存储过程查询/执行) / 计划排产_生产订单关闭_关闭订单 / 确认/关闭/完成业务动作] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_生产订单关闭_确认订单 / 确认/关闭/完成业务动作] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_生产订单关闭_确认订单 / 确认/关闭/完成业务动作] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / MES_接口_生产计划 / YL_质量检验_质检记录 / 视图:View_生产工时视图] +[主要数据对象 / MES_接口_生产计划 / YL_质量检验_质检记录 / 视图:View_生产工时视图] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `计划排产_生产订单关闭_查询全部订单` | 查询/读取数据 | 表:MES_接口_生产计划、YL_质量检验_质检记录 | +| 2 | `计划排产_生产订单关闭_关闭订单` | 确认/关闭/完成业务动作 | 表:MES_接口_生产计划;视图:View_生产工时视图 | +| 3 | `计划排产_生产订单关闭_确认订单` | 确认/关闭/完成业务动作 | 表:MES_接口_生产计划 | + +#### 12. `src/views/PlanManagement/SelfMakePlan/index.vue` + +页面要点:该页面处理自制件/机加件排产。用户查询生产订单工序任务,筛选订单、合同、物料、工序、计划时间、排产状态和指派对象,完成工位派工、人员二次派工、外协分组、计划说明维护和排产确认。 页面可见的操作/字段包括 “查询”、“批量排产”、“排产完成”、“确定”、“派工”、“计划排产”、“编辑”、“取 消”、“确 定”、“全部”,这些是判断页面业务范 +过程覆盖:`计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Query`、`Prog_MES_LoadStations`、`系统管理_人员管理_所有有效人员查询`、`MES_OrderPlanned_EditTaskPlanned`、`计划排产_二次派工`、`MES_OrderPlanned_SingleTaskPlanned`、`MES_OrderPlanned_Finish`、`MES_OrderPlanned_DescriptionEdit`、... + +```text +[进入页面 / src/views/PlanManagement/SelfMakePlan/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_已排产订单查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_已排产订单查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Query / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Query / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_二次派工 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_二次派工 / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] --> [type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Finish / 确认/关闭/完成业务动作] +[type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Finish / 确认/关闭/完成业务动作] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / View_基础数据_工位 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES] +[主要数据对象 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / View_基础数据_工位 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `计划排产_生产订单_已排产订单查询` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 2 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 3 | `MES_OrderPlanned_Query` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库;视图:View_生产订单_MES | +| 4 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | +| 5 | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 6 | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 7 | `计划排产_二次派工` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 8 | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 9 | `MES_OrderPlanned_Finish` | 确认/关闭/完成业务动作 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 10 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 11 | `计划排产_自制件_日程时间修改` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | + +#### 13. `src/views/PlanManagement/SelfMakePlando/index.vue` + +页面要点:该页面处理自制件/机加件排产。用户查询生产订单工序任务,筛选订单、合同、物料、工序、计划时间、排产状态和指派对象,完成工位派工、人员二次派工、外协分组、计划说明维护和排产确认。 页面可见的操作/字段包括 “查询”、“批量排产”、“排产完成”、“确定”、“查看”、“零件图纸”、“工艺图纸”、“编辑”、“计划排产”、“取 消”,这些是判断页面 +过程覆盖:`工艺管理_图纸维护_查看图纸`、`工艺管理_工艺维护_查看图纸`、`工艺管理_获取物料原料信息`、`计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Query`、`Prog_MES_LoadStations`、`系统管理_人员管理_所有有效人员查询`、`MES_OrderPlanned_EditTaskPlanned`、`计划排产_二次派工`、... + +```text +[进入页面 / src/views/PlanManagement/SelfMakePlando/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_查看图纸 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_获取物料原料信息 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_获取物料原料信息 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_已排产订单查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_已排产订单查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Query / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Query / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_二次派工 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_二次派工 / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_外协分组 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_外协分组 / 计划排产或派工] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 物料基础数据_零件图纸 / 物料基础数据_工艺图纸 / SAP.SBO_YL.dbo.UBT_OWOR_material / MES_接口_生产计划 / MES_接口_生产计划_生产任务] +[主要数据对象 / 物料基础数据_零件图纸 / 物料基础数据_工艺图纸 / SAP.SBO_YL.dbo.UBT_OWOR_material / MES_接口_生产计划 / MES_接口_生产计划_生产任务] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_零件图纸 | +| 2 | `工艺管理_工艺维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_工艺图纸 | +| 3 | `工艺管理_获取物料原料信息` | 业务存储过程调用 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OWOR_material | +| 4 | `计划排产_生产订单_已排产订单查询` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 5 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 6 | `MES_OrderPlanned_Query` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库;视图:View_生产订单_MES | +| 7 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | +| 8 | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 9 | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 10 | `计划排产_二次派工` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 11 | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 12 | `计划排产_外协分组` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| ... | ... | 共 15 个过程,此处仅列前 12 个 | 详见分析文档对应页面段落 | + +#### 14. `src/views/PlanManagement/SelfMakePlandone/index.vue` + +页面要点:该页面处理自制件/机加件排产。用户查询生产订单工序任务,筛选订单、合同、物料、工序、计划时间、排产状态和指派对象,完成工位派工、人员二次派工、外协分组、计划说明维护和排产确认。 页面可见的操作/字段包括 “查询”、“确定”、“查看”、“派工”、“编辑”、“取 消”、“确 定”、“全部”、“已完成”、“未完成”,这些是判断页面业务范围的主要 +过程覆盖:`工艺管理_获取物料原料信息`、`计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Query`、`Prog_MES_LoadStations`、`系统管理_人员管理_所有有效人员查询`、`MES_OrderPlanned_EditTaskPlanned`、`计划排产_二次派工`、`MES_OrderPlanned_SingleTaskPlanned`、`计划排产_外协分组`、... + +```text +[进入页面 / src/views/PlanManagement/SelfMakePlandone/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_获取物料原料信息 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_获取物料原料信息 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_已排产订单查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_已排产订单查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Query / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Query / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_二次派工 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_二次派工 / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_外协分组 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_外协分组 / 计划排产或派工] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / SAP.SBO_YL.dbo.UBT_OWOR_material / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / View_基础数据_工位 / 车间生产管理工艺_零件生产工艺_工艺库] +[主要数据对象 / SAP.SBO_YL.dbo.UBT_OWOR_material / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / View_基础数据_工位 / 车间生产管理工艺_零件生产工艺_工艺库] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `工艺管理_获取物料原料信息` | 业务存储过程调用 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OWOR_material | +| 2 | `计划排产_生产订单_已排产订单查询` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 3 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 4 | `MES_OrderPlanned_Query` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库;视图:View_生产订单_MES | +| 5 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | +| 6 | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 7 | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 8 | `计划排产_二次派工` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 9 | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 10 | `计划排产_外协分组` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 11 | `MES_OrderPlanned_Finish` | 确认/关闭/完成业务动作 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 12 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| ... | ... | 共 13 个过程,此处仅列前 12 个 | 详见分析文档对应页面段落 | + +#### 15. `src/views/PlanManagement/priorityinstall/index.vue` + +页面要点:该页面用于装配优先级调整。用户查询装配计划任务,修改计划开工/完成时间、派工对象或优先级,用于插单和重点订单排序。 页面可见的操作/字段包括 “查询”、“月”、“周”、“日”、“今天”、“表单”、“生产订单”、“计划号”、“物料编码”、“物料名称”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_OrderPlanned_Que +过程覆盖:`MES_OrderPlanned_Queryzp`、`MES_OrderPlanned_EditTaskPlanned` + +```text +[进入页面 / src/views/PlanManagement/priorityinstall/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Queryzp / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Queryzp / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES / MES_接口_生产计划 / MES_接口_生产计划_生产任务] +[主要数据对象 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES / MES_接口_生产计划 / MES_接口_生产计划_生产任务] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_OrderPlanned_Queryzp` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库;视图:View_生产订单_MES | +| 2 | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | + +### 17.7 工艺与图纸(ProcessManagement) + +#### 16. `src/views/ProcessManagement/PartDrawing/index.vue` + +页面要点:该页面维护零件图纸。用户按物料查询图纸、查看文件、验证名称、删除图纸并保留删除记录。 页面可见的操作/字段包括 “查询”、“零件图”、“选零件上传零件图”、“查看删除记录”、“查看”、“删除”、“取消”、“确定”、“关闭”、“查看信息”,这些是判断页面业务范围的主要线索。 后端主要围绕 工艺管理_图纸维护_查询删除记录、工艺管理_图纸维护 +过程覆盖:`工艺管理_图纸维护_查询删除记录`、`工艺管理_图纸维护_零件图查询`、`工艺管理_图纸维护_物料查询`、`工艺管理_图纸维护_验证名称`、`工艺管理_图纸维护_查看图纸`、`工艺管理_图纸维护_删除图纸` + +```text +[进入页面 / src/views/ProcessManagement/PartDrawing/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_零件图查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_零件图查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_物料查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_物料查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_验证名称 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_验证名称 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查询删除记录 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查询删除记录 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / 工艺管理_图纸维护_删除图纸 / 删除业务数据] +[type 12(当前通用存储过程写入/业务动作) / 工艺管理_图纸维护_删除图纸 / 删除业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_图纸视图 / SAP.SBO_YL.dbo.UBT_OITM / 物料数据 / 物料基础数据_零件图纸] +[主要数据对象 / View_图纸视图 / SAP.SBO_YL.dbo.UBT_OITM / 物料数据 / 物料基础数据_零件图纸] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `工艺管理_图纸维护_查询删除记录` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 2 | `工艺管理_图纸维护_零件图查询` | 查询/读取数据 | 视图:View_图纸视图 | +| 3 | `工艺管理_图纸维护_物料查询` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OITM | +| 4 | `工艺管理_图纸维护_验证名称` | 业务存储过程调用 | 表:物料数据 | +| 5 | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_零件图纸 | +| 6 | `工艺管理_图纸维护_删除图纸` | 删除业务数据 | 表:物料基础数据_零件图纸 | + +#### 17. `src/views/ProcessManagement/PartDrawlook/index.vue` + +页面要点:该页面偏只读查看零件图纸,通常给生产或质检人员按物料快速打开图纸。 页面可见的操作/字段包括 “查询”、“查看”、“删除”、“取消”、“确定”、“关闭”、“item.物料编码”、“序号”、“物料编号”、“物料名称”,这些是判断页面业务范围的主要线索。 后端主要围绕 工艺管理_图纸维护_查询删除记录、工艺管理_图纸维护_零件图查询全部、工艺 +过程覆盖:`工艺管理_图纸维护_查询删除记录`、`工艺管理_图纸维护_零件图查询全部`、`工艺管理_图纸维护_物料查询`、`工艺管理_图纸维护_验证名称`、`工艺管理_图纸维护_查看图纸`、`工艺管理_图纸维护_删除图纸` + +```text +[进入页面 / src/views/ProcessManagement/PartDrawlook/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_零件图查询全部 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_零件图查询全部 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_物料查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_物料查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_验证名称 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_验证名称 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查询删除记录 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查询删除记录 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / 工艺管理_图纸维护_删除图纸 / 删除业务数据] +[type 12(当前通用存储过程写入/业务动作) / 工艺管理_图纸维护_删除图纸 / 删除业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_图纸视图 / SAP.SBO_YL.dbo.UBT_OITM / 物料数据 / 物料基础数据_零件图纸] +[主要数据对象 / View_图纸视图 / SAP.SBO_YL.dbo.UBT_OITM / 物料数据 / 物料基础数据_零件图纸] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `工艺管理_图纸维护_查询删除记录` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 2 | `工艺管理_图纸维护_零件图查询全部` | 查询/读取数据 | 视图:View_图纸视图 | +| 3 | `工艺管理_图纸维护_物料查询` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OITM | +| 4 | `工艺管理_图纸维护_验证名称` | 业务存储过程调用 | 表:物料数据 | +| 5 | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_零件图纸 | +| 6 | `工艺管理_图纸维护_删除图纸` | 删除业务数据 | 表:物料基础数据_零件图纸 | + +#### 18. `src/views/ProcessManagement/ProcedureManagement/index.vue` + +页面要点:该页面维护工序/路线阶段主数据。新增或修改工序时会同步 SAP B1 的 RouteStages,保证 MES 工序与 SAP 工艺阶段一致。 页面可见的操作/字段包括 “新增工艺”、“--> 取 消”、“确 定”、“序号”、“工艺名称”、“操作”、“请输入工艺名称”、“title”,这些是判断页面业务范围的主要线索。 后端主要围绕 ME +过程覆盖:`MES_ProcessManagement_ProcessGet`、`MES_ProcessManagement_ProcessAdd`、`MES_ProcessManagement_ProcessEdit`、`MES_ProcessManagement_Processdel` + +```text +[进入页面 / src/views/ProcessManagement/ProcedureManagement/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_ProcessGet / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_ProcessGet / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_ProcessManagement_Processdel / 业务存储过程调用] +[type 12(当前通用存储过程写入/业务动作) / MES_ProcessManagement_Processdel / 业务存储过程调用] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_ProcessAdd / 新增业务数据] +[type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_ProcessAdd / 新增业务数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_ProcessManagement_ProcessEdit / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_ProcessManagement_ProcessEdit / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 基础表_工序] +[主要数据对象 / 基础表_工序] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_ProcessManagement_ProcessGet` | 查询/读取数据 | 表:基础表_工序 | +| 2 | `MES_ProcessManagement_ProcessAdd` | 新增业务数据 | 未在 SQL 中解析到明确依赖 | +| 3 | `MES_ProcessManagement_ProcessEdit` | 更新/保存业务数据 | 未在 SQL 中解析到明确依赖 | +| 4 | `MES_ProcessManagement_Processdel` | 业务存储过程调用 | 未知 | + +#### 19. `src/views/ProcessManagement/ProcessDrawing/index.vue` + +页面要点:该页面维护工艺图纸。用户按物料/工艺条件查询工艺图,验证名称,查看或删除工艺图纸。 页面可见的操作/字段包括 “查询”、“工艺图”、“选零件上传工艺图”、“选订单上传工艺图”、“查看”、“删除”、“取消”、“确定”、“item.物料编码”、“序号”,这些是判断页面业务范围的主要线索。 后端主要围绕 工艺管理_工艺维护_工艺图查询、工艺管理 +过程覆盖:`工艺管理_工艺维护_工艺图查询`、`工艺管理_图纸维护_物料查询`、`工艺管理_工艺维护_验证名称`、`工艺管理_工艺维护_查看图纸`、`工艺管理_工艺维护_删除图纸` + +```text +[进入页面 / src/views/ProcessManagement/ProcessDrawing/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_工艺图查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_工艺图查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_物料查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_物料查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_验证名称 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_验证名称 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_查看图纸 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 12(当前通用存储过程写入/业务动作) / 工艺管理_工艺维护_删除图纸 / 删除业务数据] +[type 12(当前通用存储过程写入/业务动作) / 工艺管理_工艺维护_删除图纸 / 删除业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / SAP.SBO_YL.dbo.UBT_OITM / 物料数据 / 物料基础数据_工艺图纸] +[主要数据对象 / SAP.SBO_YL.dbo.UBT_OITM / 物料数据 / 物料基础数据_工艺图纸] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `工艺管理_工艺维护_工艺图查询` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OITM | +| 2 | `工艺管理_图纸维护_物料查询` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OITM | +| 3 | `工艺管理_工艺维护_验证名称` | 业务存储过程调用 | 表:物料数据 | +| 4 | `工艺管理_工艺维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_工艺图纸 | +| 5 | `工艺管理_工艺维护_删除图纸` | 删除业务数据 | 表:物料基础数据_工艺图纸 | + +#### 20. `src/views/ProcessManagement/ProcessInquiry/index.vue` + +页面要点:该页面用于工艺路线查询。用户按物料、产品、工序等条件查看标准工艺或生产工艺,服务于排产、生产和质检核对。 页面可见的操作/字段包括 “查询”、“打印”、“item.物料编码”、“全部”、“已打印”、“未打印”、“已拣配”、“未拣配”、“机加件”、“装配件”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_ProcessManag +过程覆盖:`MES_ProcessManagement_PartGet`、`工艺管理_工艺查询_查询生产工艺`、`工艺管理_工艺查询_更新打印次数` + +```text +[进入页面 / src/views/ProcessManagement/ProcessInquiry/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_PartGet / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_PartGet / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_工艺查询_查询生产工艺 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_工艺查询_查询生产工艺 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_工艺查询_更新打印次数 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_工艺查询_更新打印次数 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / SAP.SBO_YL.dbo.UBT_OITM / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES / MES_接口_生产计划] +[主要数据对象 / SAP.SBO_YL.dbo.UBT_OITM / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES / MES_接口_生产计划] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_ProcessManagement_PartGet` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OITM | +| 2 | `工艺管理_工艺查询_查询生产工艺` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库;视图:View_生产订单_MES | +| 3 | `工艺管理_工艺查询_更新打印次数` | 查询/读取数据 | 表:MES_接口_生产计划 | + +#### 21. `src/views/ProcessManagement/ProcessProduct/index.vue` + +页面要点:该页面维护产品与工艺/图纸的关系,使产品、物料、工序、图纸等基础数据形成可查询的工艺资料。 页面可见的操作/字段包括 “查询”、“批量生成生产工艺”、“编辑工艺”、“拷贝”、“零件图纸”、“工艺图纸”、“保存为标准工艺”、“下发任务”、“已保存”、“保存”,这些是判断页面业务范围的主要线索。 后端主要围绕 工艺管理_获取物料原料信息、工艺 +过程覆盖:`工艺管理_获取物料原料信息`、`工艺管理_生产工艺_查询生产工艺`、`工艺管理_生产工艺_工艺拷贝`、`工艺管理_生产工艺_生产工艺拷贝`、`工艺管理_生产工艺_标准工艺拷贝`、`计划排产_生产订单_订单查询`、`计划排产_生产订单_订单任务_生产工艺任务下发`、`计划排产_生产订单_订单任务_单条生产工艺任务下发`、`工艺管理_零件工序_生产工艺_批量生成生产工艺`、`设备管理_设备信息_查询`、... + +```text +[进入页面 / src/views/ProcessManagement/ProcessProduct/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_获取物料原料信息 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_获取物料原料信息 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_标准工艺拷贝 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_标准工艺拷贝 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 设备管理_设备信息_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 设备管理_设备信息_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_ProcessBindGet / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_ProcessBindGet / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_制定标准工艺_拷贝生产工艺 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_制定标准工艺_拷贝生产工艺 / 业务存储过程调用] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_查询生产工艺 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_查询生产工艺 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / 工艺管理_生产工艺_工艺拷贝 / 业务存储过程调用] +[type 12(当前通用存储过程写入/业务动作) / 工艺管理_生产工艺_工艺拷贝 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_生产工艺拷贝 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_生产工艺拷贝 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_订单查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_订单查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_订单任务_生产工艺任务下发 / 计划排产或派工] +[type 11(当前通用存储过程查询/执行) / 计划排产_生产订单_订单任务_生产工艺任务下发 / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_生产订单_订单任务_单条生产工艺任务下发 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_生产订单_订单任务_单条生产工艺任务下发 / 计划排产或派工] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / SAP.SBO_YL.dbo.UBT_OWOR_material / 车间生产管理工艺_零件生产工艺_工艺库 / MES_接口_生产计划 / 车间生产管理工艺_零件工序_工艺库 / 物料数据] +[主要数据对象 / SAP.SBO_YL.dbo.UBT_OWOR_material / 车间生产管理工艺_零件生产工艺_工艺库 / MES_接口_生产计划 / 车间生产管理工艺_零件工序_工艺库 / 物料数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `工艺管理_获取物料原料信息` | 业务存储过程调用 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OWOR_material | +| 2 | `工艺管理_生产工艺_查询生产工艺` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库 | +| 3 | `工艺管理_生产工艺_工艺拷贝` | 业务存储过程调用 | 表:MES_接口_生产计划 | +| 4 | `工艺管理_生产工艺_生产工艺拷贝` | 业务存储过程调用 | 表:MES_接口_生产计划 | +| 5 | `工艺管理_生产工艺_标准工艺拷贝` | 业务存储过程调用 | 表:车间生产管理工艺_零件工序_工艺库、物料数据 | +| 6 | `计划排产_生产订单_订单查询` | 查询/读取数据 | 表:MES_接口_生产计划;视图:View_生产计划零件图纸视图 | +| 7 | `计划排产_生产订单_订单任务_生产工艺任务下发` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 8 | `计划排产_生产订单_订单任务_单条生产工艺任务下发` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 9 | `工艺管理_零件工序_生产工艺_批量生成生产工艺` | 业务存储过程调用 | 表:MES_接口_生产计划 | +| 10 | `设备管理_设备信息_查询` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 11 | `MES_ProcessManagement_ProcessBindGet` | 查询/读取数据 | 表:车间生产管理工艺_零件工序_工艺库 | +| 12 | `工艺管理_制定标准工艺_拷贝生产工艺` | 业务存储过程调用 | 表:车间生产管理工艺_零件生产工艺_工艺库 | +| ... | ... | 共 24 个过程,此处仅列前 12 个 | 详见分析文档对应页面段落 | + +#### 22. `src/views/ProcessManagement/ProcessesDevelop/index.vue` + +页面要点:该页面用于工艺开发和生产工艺路线维护。用户围绕物料、工序、顺序、工艺参数、图纸等信息维护标准或生产用工艺路线。 页面可见的操作/字段包括 “查询”、“拷贝”、“图纸”、“已保存”、“保存”、“导出”、“--> 生产工艺 取消”、“确定”、“item.物料编码”、“工序”,这些是判断页面业务范围的主要线索。 后端主要围绕 工艺管理_获取物料 +过程覆盖:`工艺管理_获取物料原料信息`、`设备管理_设备信息_查询`、`工艺管理_生产计划物料查询`、`工艺管理_生产工艺_生产工艺拷贝`、`工艺管理_生产工艺_标准工艺拷贝`、`MES_ProcessManagement_ProcessBindGet`、`工艺管理_制定标准工艺_拷贝生产工艺`、`MES_ProcessManagement_ProcessGet`、`工艺管理_制定标准工艺_拷贝工艺保存`、`工艺管理_工艺维护_查看图纸`、... + +```text +[进入页面 / src/views/ProcessManagement/ProcessesDevelop/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_获取物料原料信息 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_获取物料原料信息 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 设备管理_设备信息_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 设备管理_设备信息_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_标准工艺拷贝 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_标准工艺拷贝 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_ProcessBindGet / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_ProcessBindGet / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_制定标准工艺_拷贝生产工艺 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_制定标准工艺_拷贝生产工艺 / 业务存储过程调用] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_生产计划物料查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_生产计划物料查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_生产工艺拷贝 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_生产工艺拷贝 / 业务存储过程调用] --> [type 12(当前通用存储过程写入/业务动作) / 工艺管理_制定标准工艺_拷贝工艺保存 / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / 工艺管理_制定标准工艺_拷贝工艺保存 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 车间生产管理工艺_零件工序_修改数据_工艺库 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 车间生产管理工艺_零件工序_修改数据_工艺库 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 车间生产管理工艺_零件工序_编辑_工艺库 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 车间生产管理工艺_零件工序_编辑_工艺库 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 车间生产管理工艺_零件工序_编辑插入行 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 车间生产管理工艺_零件工序_编辑插入行 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / SAP.SBO_YL.dbo.UBT_OWOR_material / YL_基础表_数据字典 / MES_接口_生产计划 / 车间生产管理工艺_零件工序_工艺库 / 物料数据] +[主要数据对象 / SAP.SBO_YL.dbo.UBT_OWOR_material / YL_基础表_数据字典 / MES_接口_生产计划 / 车间生产管理工艺_零件工序_工艺库 / 物料数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `工艺管理_获取物料原料信息` | 业务存储过程调用 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OWOR_material | +| 2 | `设备管理_设备信息_查询` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 3 | `工艺管理_生产计划物料查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 4 | `工艺管理_生产工艺_生产工艺拷贝` | 业务存储过程调用 | 表:MES_接口_生产计划 | +| 5 | `工艺管理_生产工艺_标准工艺拷贝` | 业务存储过程调用 | 表:车间生产管理工艺_零件工序_工艺库、物料数据 | +| 6 | `MES_ProcessManagement_ProcessBindGet` | 查询/读取数据 | 表:车间生产管理工艺_零件工序_工艺库 | +| 7 | `工艺管理_制定标准工艺_拷贝生产工艺` | 业务存储过程调用 | 表:车间生产管理工艺_零件生产工艺_工艺库 | +| 8 | `MES_ProcessManagement_ProcessGet` | 查询/读取数据 | 表:基础表_工序 | +| 9 | `工艺管理_制定标准工艺_拷贝工艺保存` | 更新/保存业务数据 | 表:MES_接口_生产计划 | +| 10 | `工艺管理_工艺维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_工艺图纸 | +| 11 | `车间生产管理工艺_零件工序_修改数据_工艺库` | 更新/保存业务数据 | 表:MES_接口_生产计划 | +| 12 | `车间生产管理工艺_零件工序_查询工序信息_工艺库` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| ... | ... | 共 19 个过程,此处仅列前 12 个 | 详见分析文档对应页面段落 | + +#### 23. `src/views/ProcessManagement/ProcurementDrawlook/index.vue` + +页面要点:该页面提供采购场景的图纸查看。用户按采购物料查询图纸,查看或删除图纸记录,支持采购、外协、来料检验时查阅技术文件。 页面可见的操作/字段包括 “查询”、“查看”、“删除”、“取消”、“确定”、“关闭”、“item.物料编码”、“序号”、“物料编号”、“物料名称”,这些是判断页面业务范围的主要线索。 后端主要围绕 工艺管理_图纸维护_查询删 +过程覆盖:`工艺管理_图纸维护_查询删除记录`、`工艺管理_图纸维护_零件图查询采购`、`工艺管理_图纸维护_物料查询_采购`、`工艺管理_图纸维护_验证名称`、`工艺管理_图纸维护_查看图纸`、`工艺管理_图纸维护_删除图纸` + +```text +[进入页面 / src/views/ProcessManagement/ProcurementDrawlook/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_零件图查询采购 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_零件图查询采购 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_物料查询_采购 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_物料查询_采购 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_验证名称 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_验证名称 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查询删除记录 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查询删除记录 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / 工艺管理_图纸维护_删除图纸 / 删除业务数据] +[type 12(当前通用存储过程写入/业务动作) / 工艺管理_图纸维护_删除图纸 / 删除业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_图纸视图 / SAP.SBO_YL.dbo.UBT_OITM / 物料数据 / 物料基础数据_零件图纸] +[主要数据对象 / View_图纸视图 / SAP.SBO_YL.dbo.UBT_OITM / 物料数据 / 物料基础数据_零件图纸] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `工艺管理_图纸维护_查询删除记录` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 2 | `工艺管理_图纸维护_零件图查询采购` | 查询/读取数据 | 视图:View_图纸视图 | +| 3 | `工艺管理_图纸维护_物料查询_采购` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OITM | +| 4 | `工艺管理_图纸维护_验证名称` | 业务存储过程调用 | 表:物料数据 | +| 5 | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_零件图纸 | +| 6 | `工艺管理_图纸维护_删除图纸` | 删除业务数据 | 表:物料基础数据_零件图纸 | + +#### 24. `src/views/ProcessManagement/ProductionOrder/index.vue` + +页面要点:该页面处理生产订单资料。用户查询 ERP/MES 生产订单,并通过过程把 SAP 生产订单同步成 MES 生产计划和工序任务。 页面可见的操作/字段包括 “查询”、“批量生成任务”、“查看生产工艺”、“查看标准工艺”、“全部”、“未下发”、“已下发”、“机加件”、“装配件”、“序号”,这些是判断页面业务范围的主要线索。 后端主要围绕 设备 +过程覆盖:`设备管理_设备信息_查询`、`工艺管理_生产工艺_查询生产工艺`、`工艺管理_生产工艺_查询标准工艺`、`工艺管理_工艺任务_订单查询`、`计划排产_生产订单_订单任务` + +```text +[进入页面 / src/views/ProcessManagement/ProductionOrder/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 设备管理_设备信息_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 设备管理_设备信息_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_查询标准工艺 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_查询标准工艺 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_查询生产工艺 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_生产工艺_查询生产工艺 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_工艺任务_订单查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_工艺任务_订单查询 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_生产订单_订单任务 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_生产订单_订单任务 / 计划排产或派工] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / YL_基础表_数据字典 / 车间生产管理工艺_零件生产工艺_工艺库 / 车间生产管理工艺_零件工序_工艺库 / MES_接口_生产计划 / MES_接口_生产计划_生产任务] +[主要数据对象 / YL_基础表_数据字典 / 车间生产管理工艺_零件生产工艺_工艺库 / 车间生产管理工艺_零件工序_工艺库 / MES_接口_生产计划 / MES_接口_生产计划_生产任务] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `设备管理_设备信息_查询` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 2 | `工艺管理_生产工艺_查询生产工艺` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库 | +| 3 | `工艺管理_生产工艺_查询标准工艺` | 查询/读取数据 | 表:车间生产管理工艺_零件工序_工艺库 | +| 4 | `工艺管理_工艺任务_订单查询` | 查询/读取数据 | 表:MES_接口_生产计划 | +| 5 | `计划排产_生产订单_订单任务` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | + +### 17.8 生产执行(ProductionManagement) + +#### 25. `src/views/ProductionManagement/AbnormalControl/index.vue` + +页面要点:该页面管理生产异常。用户查询异常记录,推进异常处理、关闭或记录处理结果。 页面可见的操作/字段包括 “处理”、“转办”、“发起新流程”、“查看进度”、“完结”、“查看详情”、“点击上传”、“添加审批人”、“查询”、“取 消”,这些是判断页面业务范围的主要线索。 后端主要围绕 sp_获取最近处理任务、人员管理_人员信息查询、sp_获取我的流 +过程覆盖:`sp_获取最近处理任务`、`人员管理_人员信息查询`、`sp_获取我的流程`、`sp_获取待处理任务`、`MES_ProductAdmin_Query`、`sp_创建流程_简化版`、`sp_处理审批`、`sp_转办流程`、`sp_完成流程`、`sp_获取流程详情` + +```text +[进入页面 / src/views/ProductionManagement/AbnormalControl/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / sp_获取最近处理任务 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / sp_获取最近处理任务 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / sp_获取我的流程 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / sp_获取我的流程 / 业务存储过程调用] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / sp_获取待处理任务 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / sp_获取待处理任务 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / MES_ProductAdmin_Query / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_ProductAdmin_Query / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / sp_创建流程_简化版 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / sp_创建流程_简化版 / 业务存储过程调用] --> [type 12(当前通用存储过程写入/业务动作) / sp_处理审批 / 业务存储过程调用] +[type 12(当前通用存储过程写入/业务动作) / sp_处理审批 / 业务存储过程调用] --> [type 12(当前通用存储过程写入/业务动作) / sp_转办流程 / 业务存储过程调用] +[type 12(当前通用存储过程写入/业务动作) / sp_转办流程 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / sp_完成流程 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / sp_完成流程 / 业务存储过程调用] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 登录基础数据_管理人员权限视图 / View_生产订单_MES] +[主要数据对象 / 登录基础数据_管理人员权限视图 / View_生产订单_MES] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `sp_获取最近处理任务` | 业务存储过程调用 | 未在 SQL 中解析到明确依赖 | +| 2 | `人员管理_人员信息查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 3 | `sp_获取我的流程` | 业务存储过程调用 | 未在 SQL 中解析到明确依赖 | +| 4 | `sp_获取待处理任务` | 业务存储过程调用 | 未在 SQL 中解析到明确依赖 | +| 5 | `MES_ProductAdmin_Query` | 查询/读取数据 | 视图:View_生产订单_MES | +| 6 | `sp_创建流程_简化版` | 业务存储过程调用 | 未在 SQL 中解析到明确依赖 | +| 7 | `sp_处理审批` | 业务存储过程调用 | 未在 SQL 中解析到明确依赖 | +| 8 | `sp_转办流程` | 业务存储过程调用 | 未在 SQL 中解析到明确依赖 | +| 9 | `sp_完成流程` | 业务存储过程调用 | 未在 SQL 中解析到明确依赖 | +| 10 | `sp_获取流程详情` | 业务存储过程调用 | 未在 SQL 中解析到明确依赖 | + +#### 26. `src/views/ProductionManagement/AssemblePlanTrack/index.vue` + +页面要点:该页面跟踪装配计划执行,展示装配任务进度、计划完成情况和异常。 页面可见的操作/字段包括 “查询”、“全部”、“已完成”、“未完成”、“序号”、“工序名称”、“计划数量”、“指派对象”、“开始时间”、“结束时间”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_OrderPlanned_Query +过程覆盖:`MES_OrderPlanned_Queryzp`、`MES_OrderPlanned_DescriptionEdit`、`Prog_MES_LoadStations` + +```text +[进入页面 / src/views/ProductionManagement/AssemblePlanTrack/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Queryzp / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Queryzp / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / MES_资源主数据] +[主要数据对象 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / MES_资源主数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_OrderPlanned_Queryzp` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库;视图:View_生产订单_MES | +| 2 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 3 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | + +#### 27. `src/views/ProductionManagement/AssembleStatus/index.vue` + +页面要点:该页面查看装配现场状态,重点展示进行中任务和当前工位状态。 页面可见的操作/字段包括 “查询”、“item.label”、“序号”、“人员名称”、“工位”、“生产订单”、“计划号”、“销售订单”、“物料名称”、“物料编码”,这些是判断页面业务范围的主要线索。 后端主要围绕 人员管理_人员信息查询_质检部门_查询、MES_登录_工位与名称_ +过程覆盖:`人员管理_人员信息查询_质检部门_查询`、`MES_登录_工位与名称_查询`、`生产管理_装配状态_获取进行中任务` + +```text +[进入页面 / src/views/ProductionManagement/AssembleStatus/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 生产管理_装配状态_获取进行中任务 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 生产管理_装配状态_获取进行中任务 / 业务存储过程调用] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 登录基础数据_管理人员权限视图 / View_基础数据_工位 / YL_加工中心_操作记录表 / 视图:View_生产订单_MES] +[主要数据对象 / 登录基础数据_管理人员权限视图 / View_基础数据_工位 / YL_加工中心_操作记录表 / 视图:View_生产订单_MES] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 2 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 3 | `生产管理_装配状态_获取进行中任务` | 业务存储过程调用 | 表:YL_加工中心_操作记录表;视图:View_生产订单_MES | + +#### 28. `src/views/ProductionManagement/AssembleTaskManage/index.vue` + +页面要点:该页面管理装配任务。用户查询装配生产任务、查看工时汇总,进行派工、任务说明维护和外协/生产通知。 页面可见的操作/字段包括 “查询”、“批量排产”、“排产完成”、“确认修改”、“拆分子任务”、“确定”、“编辑”、“取 消”、“确 定”、“全部”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_登录_工位与名称_查询、MES_Or +过程覆盖:`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Finish`、`MES_OrderPlanned_ChildTask_Add`、`MES_OrderPlanned_ChildTask_Get`、`MES_OrderPlanned_Query`、`Prog_MES_LoadStations`、`MES_OrderPlanned_EditTaskPlanned`、`MES_OrderPlanned_SingleTaskPlanned`、`MES_OrderPlanned_DescriptionEdit` + +```text +[进入页面 / src/views/ProductionManagement/AssembleTaskManage/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_Finish / 确认/关闭/完成业务动作] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_Finish / 确认/关闭/完成业务动作] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_ChildTask_Add / 新增业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_ChildTask_Add / 新增业务数据] --> [type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_ChildTask_Get / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_ChildTask_Get / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Query / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_OrderPlanned_Query / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_基础数据_工位 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES] +[主要数据对象 / View_基础数据_工位 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / 车间生产管理工艺_零件生产工艺_工艺库 / 视图:View_生产订单_MES] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 2 | `MES_OrderPlanned_Finish` | 确认/关闭/完成业务动作 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 3 | `MES_OrderPlanned_ChildTask_Add` | 新增业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 4 | `MES_OrderPlanned_ChildTask_Get` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 5 | `MES_OrderPlanned_Query` | 查询/读取数据 | 表:车间生产管理工艺_零件生产工艺_工艺库;视图:View_生产订单_MES | +| 6 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | +| 7 | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 8 | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 9 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | + +#### 29. `src/views/ProductionManagement/AssembleTasksSum/index.vue` + +页面要点:该页面汇总装配任务,按订单、工位、人员或状态统计装配执行情况。 页面可见的操作/字段包括 “查询”、“编辑”、“取 消”、“确 定”、“item.指南工位号”、“表单”、“序号”、“销售订单”、“生产订单”、“零件编码”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_登录_工位与名称_查询、MES_ProductTask_Wo +过程覆盖:`MES_登录_工位与名称_查询`、`MES_ProductTask_WorkTimeSum`、`MES_ProductAdmin_Query`、`Prog_MES_LoadStations`、`MES_OrderPlanned_DescriptionEdit`、`MES_OrderPlanned_EditTaskPlanned` + +```text +[进入页面 / src/views/ProductionManagement/AssembleTasksSum/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / MES_ProductTask_WorkTimeSum / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / MES_ProductTask_WorkTimeSum / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / MES_ProductAdmin_Query / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_ProductAdmin_Query / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_基础数据_工位 / View_生产订单_MES / MES_资源主数据 / MES_接口_生产计划 / MES_接口_生产计划_生产任务] +[主要数据对象 / View_基础数据_工位 / View_生产订单_MES / MES_资源主数据 / MES_接口_生产计划 / MES_接口_生产计划_生产任务] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 2 | `MES_ProductTask_WorkTimeSum` | 报工或工时处理 | 未在 SQL 中解析到明确依赖 | +| 3 | `MES_ProductAdmin_Query` | 查询/读取数据 | 视图:View_生产订单_MES | +| 4 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | +| 5 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 6 | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | + +#### 30. `src/views/ProductionManagement/AssemblyCenter/index.vue` + +页面要点:该页面是装配生产执行主界面。装配人员按工位查询装配任务,处理开工、结束/报工、送检、缺料查询、收检记录、图纸查看和退库等动作,并会读取 SAP 生产订单信息辅助判断。 页面可见的操作/字段包括 “查询 --> 缺料”、“上一个 下一个”、“删除当前记录 关闭”、“上一个 下一个 保存当前记录 删除当前记录 关闭”、“确定 关闭”、“取 消 +过程覆盖:`生产管理_获取人员绑定`、`加急订单_加急明细查询`、`MES_人员工时记录_获取进行中任务2`、`MES_人员工时记录_获取进行中任务`、`工时校验_获取订单列表`、`异常工时_新增操作记录`、`工时校验_获取订单工序`、`MES_登录_工位与名称_查询`、`Prog_MES_LoadProcess`、`MES_ProductCenter_GetTask_zp`、... +WMS/条码任务:页面涉及 `stocktask` 出库/入库任务接口。 + +```text +[进入页面 / src/views/ProductionManagement/AssemblyCenter/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 生产管理_获取人员绑定 / 基础权限/人员数据处理] +[type 11(当前通用存储过程查询/执行) / 生产管理_获取人员绑定 / 基础权限/人员数据处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_装配中心_缺料查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_装配中心_缺料查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_人员工时记录_获取进行中任务2 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / MES_人员工时记录_获取进行中任务2 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / MES_人员工时记录_获取进行中任务 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / MES_人员工时记录_获取进行中任务 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 异常工时_新增操作记录 / 新增业务数据] +[type 11(当前通用存储过程查询/执行) / 异常工时_新增操作记录 / 新增业务数据] --> [type 11(当前通用存储过程查询/执行) / MES_ProductCenter_GetTask_zp / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_ProductCenter_GetTask_zp / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [是否需要外部系统同步?] +[是否需要外部系统同步?] -- WMS/条码 --> [stocktask 入库/出库任务 / 物料/条码/数量同步] +[是否需要外部系统同步?] -- 否 --> [MES 本地状态生效] +[stocktask 入库/出库任务 / 物料/条码/数量同步] --> [外部返回成功?] +[MES 本地状态生效] --> [刷新列表/明细/看板数据] +[外部返回成功?] -- 是 --> [刷新列表/明细/看板数据] +[外部返回成功?] -- 否 --> [记录失败原因 / 保留待重试/待处理状态] +[记录失败原因 / 保留待重试/待处理状态] --> [刷新列表/明细/看板数据] +[用户是否发起业务动作?] -- 否 --> [刷新列表/明细/看板数据] +[刷新列表/明细/看板数据] --> [主要数据对象 / MES_资源主数据 / 工位人员绑定表 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / MES_接口_生产计划_生产任务] +[主要数据对象 / MES_资源主数据 / 工位人员绑定表 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / MES_接口_生产计划_生产任务] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `生产管理_获取人员绑定` | 基础权限/人员数据处理 | 表:MES_资源主数据、工位人员绑定表 | +| 2 | `加急订单_加急明细查询` | 查询/读取数据 | 表:MES_接口_生产计划;SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL | +| 3 | `MES_人员工时记录_获取进行中任务2` | 报工或工时处理 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、YL_加工中心_操作记录表 | +| 4 | `MES_人员工时记录_获取进行中任务` | 报工或工时处理 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、YL_加工中心_操作记录表 | +| 5 | `工时校验_获取订单列表` | 报工或工时处理 | 表:MES_接口_生产计划 | +| 6 | `异常工时_新增操作记录` | 新增业务数据 | 表:YL_加工中心_操作记录表;视图:View_生产订单_MES | +| 7 | `工时校验_获取订单工序` | 报工或工时处理 | 视图:View_生产订单_MES | +| 8 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 9 | `Prog_MES_LoadProcess` | 查询/读取数据 | 表:基础表_工序 | +| 10 | `MES_ProductCenter_GetTask_zp` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、登录基础数据_人员信息、YL_质量检验_质检记录;视图:View_生产订单_MES | +| 11 | `MES_ProductTask_WorkTimeSum` | 报工或工时处理 | 未在 SQL 中解析到明确依赖 | +| 12 | `生产管理_装配中心_缺料查询` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OPKL_MissQty | +| ... | ... | 共 26 个过程,此处仅列前 12 个 | 详见分析文档对应页面段落 | + +#### 31. `src/views/ProductionManagement/DeviceStatus/index.vue` + +页面要点:该页面查看设备/工位生产状态,通常用于判断设备是否在加工、待机、报警或空闲。 页面可见的操作/字段包括 “查询”、“item.name”、“序号”、“工位”、“生产订单”、“计划号”、“销售订单”、“物料名称”、“物料编码”、“顺序”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_登录_工位与名称_查询、设备管理_设备状态_查 +过程覆盖:`MES_登录_工位与名称_查询`、`设备管理_设备状态_查询` + +```text +[进入页面 / src/views/ProductionManagement/DeviceStatus/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 设备管理_设备状态_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 设备管理_设备状态_查询 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_基础数据_工位 / MES_资源主数据 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / YL_质量检验_质检记录] +[主要数据对象 / View_基础数据_工位 / MES_资源主数据 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / YL_质量检验_质检记录] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 2 | `设备管理_设备状态_查询` | 查询/读取数据 | 表:MES_资源主数据、MES_接口_生产计划、MES_接口_生产计划_生产任务、YL_质量检验_质检记录;视图:View_生产订单_MES、View_设备工位人员 | + +#### 32. `src/views/ProductionManagement/MachiningCenter/index.vue` + +页面要点:该页面是机加生产执行主界面。操作员按工位查看可执行任务和进行中任务,完成收料、开始加工、暂停/恢复、报工、辅助工序、首检/巡检/序检、生产发料查询、退库、图纸查看等动作,并写入加工中心操作记录和报工记录。 页面可见的操作/字段包括 “取 消”、“确 定”、“上一个 下一个”、“删除当前记录 关闭”、“上一个 下一个 保存当前记录 删除当前 +过程覆盖:`生产管理_加工中心_获取设备人员`、`生产管理_加工中心_获取班次信息`、`加急订单_加急明细查询`、`生产管理_获取人员绑定`、`工时校验_获取订单工序`、`工时校验_获取订单列表`、`异常工时_新增操作记录`、`MES_操作记录_获取暂停状态`、`MES_操作记录_获取任务暂停状态`、`MES_登录_工位与名称_查询`、... +WMS/条码任务:页面涉及 `stocktask` 出库/入库任务接口。 + +```text +[进入页面 / src/views/ProductionManagement/MachiningCenter/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 生产管理_加工中心_获取设备人员 / 基础权限/人员数据处理] +[type 11(当前通用存储过程查询/执行) / 生产管理_加工中心_获取设备人员 / 基础权限/人员数据处理] --> [type 11(当前通用存储过程查询/执行) / 生产管理_加工中心_获取班次信息 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 生产管理_加工中心_获取班次信息 / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / 生产管理_获取人员绑定 / 基础权限/人员数据处理] +[type 11(当前通用存储过程查询/执行) / 生产管理_获取人员绑定 / 基础权限/人员数据处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / MES_操作记录_获取暂停状态 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / MES_操作记录_获取暂停状态 / 业务存储过程调用] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 异常工时_新增操作记录 / 新增业务数据] +[type 11(当前通用存储过程查询/执行) / 异常工时_新增操作记录 / 新增业务数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_ProductTask_HelpStart / 业务存储过程调用] +[type 12(当前通用存储过程写入/业务动作) / MES_ProductTask_HelpStart / 业务存储过程调用] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_GetProductOrder_byAID / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_GetProductOrder_byAID / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_ProductCenter_GetTask / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_ProductCenter_GetTask / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [是否需要外部系统同步?] +[是否需要外部系统同步?] -- WMS/条码 --> [stocktask 入库/出库任务 / 物料/条码/数量同步] +[是否需要外部系统同步?] -- 否 --> [MES 本地状态生效] +[stocktask 入库/出库任务 / 物料/条码/数量同步] --> [外部返回成功?] +[MES 本地状态生效] --> [刷新列表/明细/看板数据] +[外部返回成功?] -- 是 --> [刷新列表/明细/看板数据] +[外部返回成功?] -- 否 --> [记录失败原因 / 保留待重试/待处理状态] +[记录失败原因 / 保留待重试/待处理状态] --> [刷新列表/明细/看板数据] +[用户是否发起业务动作?] -- 否 --> [刷新列表/明细/看板数据] +[刷新列表/明细/看板数据] --> [主要数据对象 / View_设备工位人员 / 班次表 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / MES_资源主数据] +[主要数据对象 / View_设备工位人员 / 班次表 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / MES_资源主数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `生产管理_加工中心_获取设备人员` | 基础权限/人员数据处理 | 视图:View_设备工位人员 | +| 2 | `生产管理_加工中心_获取班次信息` | 业务存储过程调用 | 表:班次表 | +| 3 | `加急订单_加急明细查询` | 查询/读取数据 | 表:MES_接口_生产计划;SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL | +| 4 | `生产管理_获取人员绑定` | 基础权限/人员数据处理 | 表:MES_资源主数据、工位人员绑定表 | +| 5 | `工时校验_获取订单工序` | 报工或工时处理 | 视图:View_生产订单_MES | +| 6 | `工时校验_获取订单列表` | 报工或工时处理 | 表:MES_接口_生产计划 | +| 7 | `异常工时_新增操作记录` | 新增业务数据 | 表:YL_加工中心_操作记录表;视图:View_生产订单_MES | +| 8 | `MES_操作记录_获取暂停状态` | 业务存储过程调用 | 表:YL_加工中心_操作记录表 | +| 9 | `MES_操作记录_获取任务暂停状态` | 业务存储过程调用 | 表:YL_加工中心_操作记录表 | +| 10 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 11 | `Prog_MES_LoadProcess` | 查询/读取数据 | 表:基础表_工序 | +| 12 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| ... | ... | 共 48 个过程,此处仅列前 12 个 | 详见分析文档对应页面段落 | + +#### 33. `src/views/ProductionManagement/OutsourceMange/index.vue` + +页面要点:该页面管理外协任务。用户查询可外协工序,按供应商/订单/工序分组,执行外协派工并同步 SAP 采购请求或相关单据,维护外协发料、收料、质检记录、打印次数和备注。 页面可见的操作/字段包括 “查询 派工并同步SAP”、“打印”、“发料”、“收货”、“编辑”、“历史记录”、“查看图纸”、“工艺图纸”、“取 消”、“确 定”,这些是判断页面业务 +过程覆盖:`生产管理_外协管理_外协历史查询`、`计划排产_派工`、`生产管理_外协管理_更新打印次数`、`生产管理_外协管理_更新备注`、`工艺管理_图纸维护_查看图纸`、`工艺管理_工艺维护_查看图纸`、`生产管理_外协管理_查询外协全部`、`生产管理_外协管理_外协发料查询`、`生产管理_外协管理_外协发料保存`、`生产管理_外协管理_外协收料保存` + +```text +[进入页面 / src/views/ProductionManagement/OutsourceMange/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_外协历史查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_外协历史查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_查看图纸 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_派工 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_派工 / 计划排产或派工] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_更新打印次数 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_更新打印次数 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_更新备注 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_更新备注 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_查询外协全部 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_查询外协全部 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_外协发料查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_外协发料查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_外协发料保存 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_外协发料保存 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / YL_加工中心_操作记录表 / 视图:View_生产订单_MES / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / 物料基础数据_零件图纸] +[主要数据对象 / YL_加工中心_操作记录表 / 视图:View_生产订单_MES / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / 物料基础数据_零件图纸] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `生产管理_外协管理_外协历史查询` | 查询/读取数据 | 表:YL_加工中心_操作记录表;视图:View_生产订单_MES | +| 2 | `计划排产_派工` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 3 | `生产管理_外协管理_更新打印次数` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 4 | `生产管理_外协管理_更新备注` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 5 | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_零件图纸 | +| 6 | `工艺管理_工艺维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_工艺图纸 | +| 7 | `生产管理_外协管理_查询外协全部` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、YL_质量检验_质检记录;视图:View_生产订单全部(包括已关闭) | +| 8 | `生产管理_外协管理_外协发料查询` | 查询/读取数据 | 表:YL_质量检验_质检记录;视图:View_生产订单_MES | +| 9 | `生产管理_外协管理_外协发料保存` | 更新/保存业务数据 | 表:MES_接口_生产计划 | +| 10 | `生产管理_外协管理_外协收料保存` | 更新/保存业务数据 | 表:MES_接口_生产计划 | + +#### 34. `src/views/ProductionManagement/OutsourceSheet/index.vue` + +页面要点:该页面输出外协报表。用户按订单、合同、产品、计划号、供应商、状态分页查询外协报表,也可导出,用于外协进度、发料、收料、质检、开票等跟踪。 页面可见的操作/字段包括 “查询”、“Excel导出”、“全部”、“收检”、“终检”、“来料检验”、“退库检验”、“收料小于发料”、“供应商”、“订单号”,这些是判断页面业务范围的主要线索。 后端主要围 +过程覆盖:`生产管理_外协报表_导出`、`生产管理_外协报表_查询` + +```text +[进入页面 / src/views/ProductionManagement/OutsourceSheet/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 2001(导出/报表类过程) / 生产管理_外协报表_导出 / 外协业务处理] +[type 2001(导出/报表类过程) / 生产管理_外协报表_导出 / 外协业务处理] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协报表_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协报表_查询 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `生产管理_外协报表_导出` | 外协业务处理 | 未在 SQL 中解析到明确依赖 | +| 2 | `生产管理_外协报表_查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | + +#### 35. `src/views/ProductionManagement/PersonnelBinding/index.vue` + +页面要点:该页面维护工位与人员绑定关系。用于限制或提示哪些人员可在指定工位报工、开工或执行任务。 页面可见的操作/字段包括 “查询”、“绑定人员”、“确 定”、“取 消”、“序号”、“工位名称”、“工位号”、“操作”、“请输入工位名称”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_登录_工位与名称_查询、系统管理_人员管理_所有有效人 +过程覆盖:`MES_登录_工位与名称_查询`、`系统管理_人员管理_所有有效人员查询`、`系统管理_工位管理_工位绑定人员查询`、`系统管理_工位管理_工位绑定人员保存` + +```text +[进入页面 / src/views/ProductionManagement/PersonnelBinding/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_工位管理_工位绑定人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_工位管理_工位绑定人员查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 系统管理_工位管理_工位绑定人员保存 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_工位管理_工位绑定人员保存 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_基础数据_工位 / 登录基础数据_管理人员权限视图] +[主要数据对象 / View_基础数据_工位 / 登录基础数据_管理人员权限视图] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 2 | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 3 | `系统管理_工位管理_工位绑定人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 4 | `系统管理_工位管理_工位绑定人员保存` | 更新/保存业务数据 | 未在 SQL 中解析到明确依赖 | + +#### 36. `src/views/ProductionManagement/PickingTask/index.vue` + +页面要点:该页面处理拣配任务。用户查询生产订单相关拣配/领料任务,并可能联动 SAP 生产订单或库存出入库状态。 页面可见的操作/字段包括 “查询”、“转至 完成 --> 生产订单 加急数量 物料编号 关闭”、“装配”、“机加”、“全部”、“一楼”、“二楼”、“仓库”、“已完成”、“未完成”,这些是判断页面业务范围的主要线索。 后端主要围绕 生产管 +过程覆盖:`生产管理_拣配任务_查询` + +```text +[进入页面 / src/views/ProductionManagement/PickingTask/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 生产管理_拣配任务_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_拣配任务_查询 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / SAP.SBO_YL.dbo.UBT_MES_TASK_MERGE] +[主要数据对象 / SAP.SBO_YL.dbo.UBT_MES_TASK_MERGE] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `生产管理_拣配任务_查询` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_MES_TASK_MERGE | + +#### 37. `src/views/ProductionManagement/ProductionPlanTrack/index.vue` + +页面要点:该页面跟踪生产计划执行。用户查看计划任务的开工、完工、进度、延期或异常情况,用于计划员追踪订单。 页面可见的操作/字段包括 “查询”、“关闭”、“全部”、“机加”、“装配”、“是”、“否”、“加急”、“正常”、“序号”,这些是判断页面业务范围的主要线索。 后端主要围绕 加急订单_加急明细查询、生产管理_生产计划跟踪、MES_OrderPl +过程覆盖:`加急订单_加急明细查询`、`生产管理_生产计划跟踪`、`MES_OrderPlanned_DescriptionEdit`、`Prog_MES_LoadStations` + +```text +[进入页面 / src/views/ProductionManagement/ProductionPlanTrack/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_生产计划跟踪 / 计划排产或派工] +[type 11(当前通用存储过程查询/执行) / 生产管理_生产计划跟踪 / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / YL_加工中心_操作记录表 / 视图:View_生产订单_MES / View_生产订单全部] +[主要数据对象 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / YL_加工中心_操作记录表 / 视图:View_生产订单_MES / View_生产订单全部] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `加急订单_加急明细查询` | 查询/读取数据 | 表:MES_接口_生产计划;SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL | +| 2 | `生产管理_生产计划跟踪` | 计划排产或派工 | 表:YL_加工中心_操作记录表;视图:View_生产订单_MES、View_生产订单全部(包括已关闭) | +| 3 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 4 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | + +#### 38. `src/views/ProductionManagement/ProductionTaskManage/index.vue` + +页面要点:该页面管理生产任务。用户按工位、订单、工序查询任务,查看工时汇总,执行派工、修改计划字段、维护任务说明和通知状态。 页面可见的操作/字段包括 “查询”、“表单”、“日程”、“派工调整”、“外协通知”、“已发起”、“编辑”、“取 消”、“确 定”、“item.指南工位号”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_登录_工位 +过程覆盖:`MES_登录_工位与名称_查询`、`MES_OrderPlanned_SingleTaskPlanned`、`MES_ProductTask_WorkTimeSum`、`MES_ProductAdmin_Query`、`Prog_MES_LoadStations`、`Prog_MES_SingleTaskPlanned`、`MES_OrderPlanned_DescriptionEdit`、`MES_ProductTask_Notice`、`MES_OrderPlanned_EditTaskPlanned` + +```text +[进入页面 / src/views/ProductionManagement/ProductionTaskManage/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_SingleTaskPlanned / 计划排产或派工] --> [type 11(当前通用存储过程查询/执行) / MES_ProductTask_WorkTimeSum / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / MES_ProductTask_WorkTimeSum / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / MES_ProductAdmin_Query / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_ProductAdmin_Query / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / Prog_MES_SingleTaskPlanned / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / Prog_MES_SingleTaskPlanned / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_ProductTask_Notice / 业务存储过程调用] +[type 12(当前通用存储过程写入/业务动作) / MES_ProductTask_Notice / 业务存储过程调用] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_基础数据_工位 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / View_生产订单_MES / MES_资源主数据] +[主要数据对象 / View_基础数据_工位 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / View_生产订单_MES / MES_资源主数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 2 | `MES_OrderPlanned_SingleTaskPlanned` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 3 | `MES_ProductTask_WorkTimeSum` | 报工或工时处理 | 未在 SQL 中解析到明确依赖 | +| 4 | `MES_ProductAdmin_Query` | 查询/读取数据 | 视图:View_生产订单_MES | +| 5 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | +| 6 | `Prog_MES_SingleTaskPlanned` | 计划排产或派工 | 未知 | +| 7 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 8 | `MES_ProductTask_Notice` | 业务存储过程调用 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 9 | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | + +#### 39. `src/views/ProductionManagement/ProductionTasksSum/index.vue` + +页面要点:该页面做生产任务汇总。用户按订单、工序、工位、时间等维度查询生产任务和工时汇总,并可编辑计划说明或派工信息。 页面可见的操作/字段包括 “查询”、“编辑”、“取 消”、“确 定”、“item.指南工位号”、“表单”、“序号”、“销售订单”、“生产订单”、“零件编码”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_登录_工位与名 +过程覆盖:`MES_登录_工位与名称_查询`、`MES_ProductTask_WorkTimeSum`、`生产管理_生产任务汇总`、`Prog_MES_LoadStations`、`MES_OrderPlanned_DescriptionEdit`、`MES_OrderPlanned_EditTaskPlanned` + +```text +[进入页面 / src/views/ProductionManagement/ProductionTasksSum/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / MES_ProductTask_WorkTimeSum / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / MES_ProductTask_WorkTimeSum / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 生产管理_生产任务汇总 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 生产管理_生产任务汇总 / 业务存储过程调用] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_EditTaskPlanned / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_基础数据_工位 / View_生产订单_MES / MES_资源主数据 / MES_接口_生产计划 / MES_接口_生产计划_生产任务] +[主要数据对象 / View_基础数据_工位 / View_生产订单_MES / MES_资源主数据 / MES_接口_生产计划 / MES_接口_生产计划_生产任务] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 2 | `MES_ProductTask_WorkTimeSum` | 报工或工时处理 | 未在 SQL 中解析到明确依赖 | +| 3 | `生产管理_生产任务汇总` | 业务存储过程调用 | 视图:View_生产订单_MES | +| 4 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | +| 5 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 6 | `MES_OrderPlanned_EditTaskPlanned` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | + +#### 40. `src/views/ProductionManagement/SaleOutsourceMange/index.vue` + +页面要点:该页面管理外协任务。用户查询可外协工序,按供应商/订单/工序分组,执行外协派工并同步 SAP 采购请求或相关单据,维护外协发料、收料、质检记录、打印次数和备注。 页面可见的操作/字段包括 “查询 派工并同步SAP”、“打印”、“发料”、“收货”、“更新”、“编辑”、“历史记录”、“查看图纸”、“工艺图纸”、“收发记录”,这些是判断页面业务 +过程覆盖:`计划排产_重置派工状态`、`生产管理_外协管理_外协历史查询`、`计划排产_派工`、`生产管理_外协管理_更新打印次数`、`生产管理_外协管理_更新备注`、`工艺管理_图纸维护_查看图纸`、`工艺管理_工艺维护_查看图纸`、`生产管理_外协管理_查询外协`、`生产管理_外协管理_外协发料查询`、`生产管理_外协管理_查询外协历史记录`、... + +```text +[进入页面 / src/views/ProductionManagement/SaleOutsourceMange/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_外协历史查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_外协历史查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_工艺维护_查看图纸 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_查询外协历史记录 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_查询外协历史记录 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_查询质检记录 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_查询质检记录 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 计划排产_重置派工状态 / 计划排产或派工] +[type 11(当前通用存储过程查询/执行) / 计划排产_重置派工状态 / 计划排产或派工] --> [type 12(当前通用存储过程写入/业务动作) / 计划排产_派工 / 计划排产或派工] +[type 12(当前通用存储过程写入/业务动作) / 计划排产_派工 / 计划排产或派工] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_更新打印次数 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_更新打印次数 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_更新备注 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_更新备注 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_查询外协 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_查询外协 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_外协发料查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_外协管理_外协发料查询 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / YL_加工中心_操作记录表 / 视图:View_生产订单_MES / 物料基础数据_零件图纸] +[主要数据对象 / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / YL_加工中心_操作记录表 / 视图:View_生产订单_MES / 物料基础数据_零件图纸] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `计划排产_重置派工状态` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 2 | `生产管理_外协管理_外协历史查询` | 查询/读取数据 | 表:YL_加工中心_操作记录表;视图:View_生产订单_MES | +| 3 | `计划排产_派工` | 计划排产或派工 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 4 | `生产管理_外协管理_更新打印次数` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 5 | `生产管理_外协管理_更新备注` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 6 | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_零件图纸 | +| 7 | `工艺管理_工艺维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_工艺图纸 | +| 8 | `生产管理_外协管理_查询外协` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、YL_质量检验_质检记录;视图:View_生产订单_MES | +| 9 | `生产管理_外协管理_外协发料查询` | 查询/读取数据 | 表:YL_质量检验_质检记录;视图:View_生产订单_MES | +| 10 | `生产管理_外协管理_查询外协历史记录` | 查询/读取数据 | 表:YL_加工中心_操作记录表 | +| 11 | `生产管理_外协管理_查询质检记录` | 查询/读取数据 | 表:YL_质量检验_质检记录 | +| 12 | `生产管理_外协管理_外协发料保存` | 更新/保存业务数据 | 表:MES_接口_生产计划 | +| ... | ... | 共 13 个过程,此处仅列前 12 个 | 详见分析文档对应页面段落 | + +#### 41. `src/views/ProductionManagement/ShiftManagement/index.vue` + +页面要点:该页面维护班次和班次人员绑定。用户新增、修改、删除班次,给班次绑定人员,为工时计算和报工归属提供基础数据。 页面可见的操作/字段包括 “添加新班次”、“编辑”、“保存”、“取消”、“绑定”、“删除”、“确 定”、“取 消”、“序号”、“班次”,这些是判断页面业务范围的主要线索。 后端主要围绕 生产管理_班次管理_班次列表查询、系统管理_人 +过程覆盖:`生产管理_班次管理_班次列表查询`、`系统管理_人员管理_所有有效人员查询`、`生产管理_班次管理_班次绑定人员查询`、`生产管理_班次管理_班次保存`、`生产管理_班次管理_班次删除`、`生产管理_班次管理_班次绑定人员保存` + +```text +[进入页面 / src/views/ProductionManagement/ShiftManagement/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 生产管理_班次管理_班次列表查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_班次管理_班次列表查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_班次管理_班次绑定人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_班次管理_班次绑定人员查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 生产管理_班次管理_班次保存 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_班次管理_班次保存 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_班次管理_班次删除 / 删除业务数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_班次管理_班次删除 / 删除业务数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_班次管理_班次绑定人员保存 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_班次管理_班次绑定人员保存 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 登录基础数据_管理人员权限视图] +[主要数据对象 / 登录基础数据_管理人员权限视图] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `生产管理_班次管理_班次列表查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 2 | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 3 | `生产管理_班次管理_班次绑定人员查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 4 | `生产管理_班次管理_班次保存` | 更新/保存业务数据 | 未在 SQL 中解析到明确依赖 | +| 5 | `生产管理_班次管理_班次删除` | 删除业务数据 | 未在 SQL 中解析到明确依赖 | +| 6 | `生产管理_班次管理_班次绑定人员保存` | 更新/保存业务数据 | 未在 SQL 中解析到明确依赖 | + +#### 42. `src/views/ProductionManagement/Timesheet/index.vue` + +页面要点:该页面统计工时。用户按项目、作业者、设备、任务等维度查询工时数据,并可导出报表。 页面可见的操作/字段包括 “查询”、“Excel导出”、“项目工时”、“合同号”、“产品名称”、“产品编码”、“订单编号”、“工序名称”、“操作人”、“计划/完成”,这些是判断页面业务范围的主要线索。 后端主要围绕 工时统计_项目工时_查询、工时统计_作业者 +过程覆盖:`工时统计_项目工时_查询`、`工时统计_作业者工时_查询`、`工时统计_设备工时_查询`、`工时统计_任务工时_查询` + +```text +[进入页面 / src/views/ProductionManagement/Timesheet/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工时统计_作业者工时_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工时统计_作业者工时_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工时统计_设备工时_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工时统计_设备工时_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 工时统计_项目工时_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工时统计_项目工时_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工时统计_任务工时_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工时统计_任务工时_查询 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_生产工时视图] +[主要数据对象 / View_生产工时视图] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `工时统计_项目工时_查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 2 | `工时统计_作业者工时_查询` | 查询/读取数据 | 视图:View_生产工时视图 | +| 3 | `工时统计_设备工时_查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 4 | `工时统计_任务工时_查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | + +#### 43. `src/views/ProductionManagement/Urgent/index.vue` + +页面要点:该页面维护加急任务。用户查询加急订单明细,并更新完成、转至等字段,用于生产/质检优先级管理。 页面可见的操作/字段包括 “查询”、“转至 完成 加急明细 --> 生产订单 加急数量 物料编号 关闭”、“装配”、“机加”、“全部”、“已转至”、“未转至”、“已完成”、“未完成”、“序号”,这些是判断页面业务范围的主要线索。 后端主要围绕 加 +过程覆盖:`加急订单_加急明细查询`、`生产管理_加急件管理查询`、`生产管理_加急件管理_更新转至`、`生产管理_加急件管理_更新完成` + +```text +[进入页面 / src/views/ProductionManagement/Urgent/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_加急件管理查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_加急件管理查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_加急件管理_更新转至 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_加急件管理_更新转至 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_加急件管理_更新完成 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_加急件管理_更新完成 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / YL_质量检验_质检记录 / 视图:View_生产订单_MES] +[主要数据对象 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / YL_质量检验_质检记录 / 视图:View_生产订单_MES] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `加急订单_加急明细查询` | 查询/读取数据 | 表:MES_接口_生产计划;SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL | +| 2 | `生产管理_加急件管理查询` | 查询/读取数据 | 表:YL_质量检验_质检记录;视图:View_生产订单_MES | +| 3 | `生产管理_加急件管理_更新转至` | 更新/保存业务数据 | 表:YL_质量检验_质检记录 | +| 4 | `生产管理_加急件管理_更新完成` | 更新/保存业务数据 | 表:YL_质量检验_质检记录 | + +#### 44. `src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` + +页面要点:该页面用于工时校验。质检/管理人员查询待校验报工记录,系统计算标准/实际工时,保存单条或批量校验结果;通过校验后可把工序资源或工时/出库类单据上传到 SAP。 页面可见的操作/字段包括 “查询”、“一键校验”、“新增工时记录”、“设备工时”、“关闭”、“确 定”、“取消”、“item.label”、“全部”、“已校验”,这些是判断页面业务 +过程覆盖:`人员管理_人员信息查询_质检部门_查询`、`系统管理_人员管理_所有有效人员查询`、`工时校验_获取订单列表`、`工时校验_获取订单工序`、`工时校验_获取昨日之前操作记录列表`、`工时校验_获取资源`、`工时校验_获取设备数据`、`工时校验_保存校验记录`、`工时校验_批量保存校验记录`、`工时校验_获取操作人当天报工记录` + +```text +[进入页面 / src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取昨日之前操作记录列表 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取昨日之前操作记录列表 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取资源 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取资源 / 报工或工时处理] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_保存校验记录 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 工时校验_保存校验记录 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 工时校验_批量保存校验记录 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 工时校验_批量保存校验记录 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 登录基础数据_管理人员权限视图 / MES_接口_生产计划 / View_生产订单_MES / View_生产工时视图 / SAP.SBO_YL.dbo.UBT_ORSC] +[主要数据对象 / 登录基础数据_管理人员权限视图 / MES_接口_生产计划 / View_生产订单_MES / View_生产工时视图 / SAP.SBO_YL.dbo.UBT_ORSC] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 2 | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 3 | `工时校验_获取订单列表` | 报工或工时处理 | 表:MES_接口_生产计划 | +| 4 | `工时校验_获取订单工序` | 报工或工时处理 | 视图:View_生产订单_MES | +| 5 | `工时校验_获取昨日之前操作记录列表` | 报工或工时处理 | 视图:View_生产工时视图 | +| 6 | `工时校验_获取资源` | 报工或工时处理 | SAP/链接库:SAP.SBO_YL.dbo.UBT_ORSC | +| 7 | `工时校验_获取设备数据` | 报工或工时处理 | 表:历史_工位设备状态每分钟记录 | +| 8 | `工时校验_保存校验记录` | 更新/保存业务数据 | 表:生产管理_工时校验_校验工时表、YL_加工中心_操作记录表 | +| 9 | `工时校验_批量保存校验记录` | 更新/保存业务数据 | 表:生产管理_工时校验_校验工时表、YL_加工中心_操作记录表 | +| 10 | `工时校验_获取操作人当天报工记录` | 报工或工时处理 | 表:YL_加工中心_操作记录表 | + +#### 45. `src/views/ProductionManagement/WorkHoursCheck/index.vue` + +页面要点:该页面用于工时校验。质检/管理人员查询待校验报工记录,系统计算标准/实际工时,保存单条或批量校验结果;通过校验后可把工序资源或工时/出库类单据上传到 SAP。 页面可见的操作/字段包括 “查询”、“一键校验”、“直接校验”、“新增工时记录”、“设备工时”、“关闭”、“确 定”、“取消”、“item.label”、“全部”,这些是判断页面业 +过程覆盖:`usp_BatchValidateWorkTime`、`usp_ValidateWorkTime`、`人员管理_人员信息查询_质检部门_查询`、`系统管理_人员管理_所有有效人员查询`、`工时校验_获取订单列表`、`工时校验_获取订单工序`、`工时校验_获取昨日之前操作记录列表`、`工时校验_获取资源`、`工时校验_获取设备数据`、`工时校验_保存校验记录`、... + +```text +[进入页面 / src/views/ProductionManagement/WorkHoursCheck/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取昨日之前操作记录列表 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取昨日之前操作记录列表 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取资源 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取资源 / 报工或工时处理] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / usp_BatchValidateWorkTime / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / usp_BatchValidateWorkTime / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / usp_ValidateWorkTime / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / usp_ValidateWorkTime / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_保存校验记录 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 工时校验_保存校验记录 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 工时校验_批量保存校验记录 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 工时校验_批量保存校验记录 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 登录基础数据_管理人员权限视图 / MES_接口_生产计划 / View_生产订单_MES / View_生产工时视图 / SAP.SBO_YL.dbo.UBT_ORSC] +[主要数据对象 / 登录基础数据_管理人员权限视图 / MES_接口_生产计划 / View_生产订单_MES / View_生产工时视图 / SAP.SBO_YL.dbo.UBT_ORSC] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `usp_BatchValidateWorkTime` | 报工或工时处理 | 未在 SQL 中解析到明确依赖 | +| 2 | `usp_ValidateWorkTime` | 报工或工时处理 | 未在 SQL 中解析到明确依赖 | +| 3 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 4 | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 5 | `工时校验_获取订单列表` | 报工或工时处理 | 表:MES_接口_生产计划 | +| 6 | `工时校验_获取订单工序` | 报工或工时处理 | 视图:View_生产订单_MES | +| 7 | `工时校验_获取昨日之前操作记录列表` | 报工或工时处理 | 视图:View_生产工时视图 | +| 8 | `工时校验_获取资源` | 报工或工时处理 | SAP/链接库:SAP.SBO_YL.dbo.UBT_ORSC | +| 9 | `工时校验_获取设备数据` | 报工或工时处理 | 表:历史_工位设备状态每分钟记录 | +| 10 | `工时校验_保存校验记录` | 更新/保存业务数据 | 表:生产管理_工时校验_校验工时表、YL_加工中心_操作记录表 | +| 11 | `工时校验_批量保存校验记录` | 更新/保存业务数据 | 表:生产管理_工时校验_校验工时表、YL_加工中心_操作记录表 | + +#### 46. `src/views/ProductionManagement/WorkhoursEdit/index.vue` + +页面要点:该页面用于编辑已产生的工时/报工记录,修正异常工时或补录说明。 页面可见的操作/字段包括 “查询”、“新增工时记录”、“设备工时”、“关闭”、“确 定”、“取消”、“item.label”、“全部”、“已校验”、“未校验”,这些是判断页面业务范围的主要线索。 后端主要围绕 人员管理_人员信息查询_质检部门_查询、系统管理_人员管理_所有有 +过程覆盖:`人员管理_人员信息查询_质检部门_查询`、`系统管理_人员管理_所有有效人员查询`、`工时校验_获取订单列表`、`工时校验_获取订单工序`、`工时校验_获取操作记录列表`、`工时校验_获取设备数据`、`工时校验_保存校验记录`、`工时校验_新增操作记录` + +```text +[进入页面 / src/views/ProductionManagement/WorkhoursEdit/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_人员管理_所有有效人员查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取操作记录列表 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取操作记录列表 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取设备数据 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取设备数据 / 报工或工时处理] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_保存校验记录 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 工时校验_保存校验记录 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 工时校验_新增操作记录 / 新增业务数据] +[type 11(当前通用存储过程查询/执行) / 工时校验_新增操作记录 / 新增业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 登录基础数据_管理人员权限视图 / MES_接口_生产计划 / View_生产订单_MES / View_生产工时视图 / 历史_工位设备状态每分钟记录] +[主要数据对象 / 登录基础数据_管理人员权限视图 / MES_接口_生产计划 / View_生产订单_MES / View_生产工时视图 / 历史_工位设备状态每分钟记录] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 2 | `系统管理_人员管理_所有有效人员查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 3 | `工时校验_获取订单列表` | 报工或工时处理 | 表:MES_接口_生产计划 | +| 4 | `工时校验_获取订单工序` | 报工或工时处理 | 视图:View_生产订单_MES | +| 5 | `工时校验_获取操作记录列表` | 报工或工时处理 | 视图:View_生产工时视图 | +| 6 | `工时校验_获取设备数据` | 报工或工时处理 | 表:历史_工位设备状态每分钟记录 | +| 7 | `工时校验_保存校验记录` | 更新/保存业务数据 | 表:生产管理_工时校验_校验工时表、YL_加工中心_操作记录表 | +| 8 | `工时校验_新增操作记录` | 新增业务数据 | 表:YL_加工中心_操作记录表 | + +#### 47. `src/views/ProductionManagement/Workhours/index.vue` + +页面要点:该页面用于工时查询,按工序、人员、设备、时间等条件查看工序工时。 页面可见的操作/字段包括 “查询”、“工序工时”、“任务描述”、“报工次数”、“报工数量”、“工位名称”、“实际工时”、“辅助工时”、“平均程序工时”、“平均实际工时”,这些是判断页面业务范围的主要线索。 后端主要围绕 生产管理_工时查询_工序工时_查询 取数或提交业务动作 +过程覆盖:`生产管理_工时查询_工序工时_查询` + +```text +[进入页面 / src/views/ProductionManagement/Workhours/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 生产管理_工时查询_工序工时_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_工时查询_工序工时_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `生产管理_工时查询_工序工时_查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | + +### 17.9 质量管理(QualityManagement) + +#### 48. `src/views/QualityManagement/CheckTask/OtherInbound.vue` + +页面要点:该页面处理其他入库检验。用户查询其他入库待检任务,录入检验结果并更新质检记录。 页面可见的操作/字段包括 “查询”、“取 消”、“合格”、“不合格”、“item.label”、“序号”、“生产订单”、“物料名称”、“物料编码”、“采购数”,这些是判断页面业务范围的主要线索。 后端主要围绕 查询字典、人员管理_人员信息查询_质检部门_查询、 +过程覆盖:`查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_其他入库_查询`、`质量管理_其他入库检验_更新` + +```text +[进入页面 / src/views/QualityManagement/CheckTask/OtherInbound.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 质量管理_其他入库_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_其他入库_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_其他入库检验_更新 / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_其他入库检验_更新 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图 / 质量检验_质检任务_SAP / YL_质量检验_质检记录] +[主要数据对象 / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图 / 质量检验_质检任务_SAP / YL_质量检验_质检记录] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 2 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 3 | `质量管理_其他入库_查询` | 查询/读取数据 | 表:质量检验_质检任务_SAP | +| 4 | `质量管理_其他入库检验_更新` | 更新/保存业务数据 | 表:YL_质量检验_质检记录、质量检验_质检任务_SAP | + +#### 49. `src/views/QualityManagement/CheckTask/final.vue` + +页面要点:该页面处理终检任务。质检人员查询终检任务,录入终检结果,并预留 SAP 生产订单状态回写。 页面可见的操作/字段包括 “查询”、“导出 --> -->”、“取 消”、“关闭”、“装配”、“机加”、“全部”、“合格”、“不合格”、“已完成”,这些是判断页面业务范围的主要线索。 后端主要围绕 加急订单_加急明细查询、查询字典、人员管理_人员信 +过程覆盖:`加急订单_加急明细查询`、`查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_质量检验_终检数据_查询`、`质量管理_质量检验_终检记录_查询`、`MES_QulityInspection_FinalCheck`、`工时校验_获取工序和指派对象` + +```text +[进入页面 / src/views/QualityManagement/CheckTask/final.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 质量管理_质量检验_终检数据_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_质量检验_终检数据_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 质量管理_质量检验_终检记录_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_质量检验_终检记录_查询 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / MES_QulityInspection_FinalCheck / 质量检验处理] +[type 12(当前通用存储过程写入/业务动作) / MES_QulityInspection_FinalCheck / 质量检验处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取工序和指派对象 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取工序和指派对象 / 报工或工时处理] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图 / MES_接口_生产计划_生产] +[主要数据对象 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图 / MES_接口_生产计划_生产] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `加急订单_加急明细查询` | 查询/读取数据 | 表:MES_接口_生产计划;SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL | +| 2 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 3 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 4 | `质量管理_质量检验_终检数据_查询` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、YL_加工中心_操作记录表、YL_质量检验_质检记录;视图:View_生产订单_MES | +| 5 | `质量管理_质量检验_终检记录_查询` | 查询/读取数据 | 表:YL_质量检验_质检记录 | +| 6 | `MES_QulityInspection_FinalCheck` | 质量检验处理 | 表:YL_质量检验_质检记录 | +| 7 | `工时校验_获取工序和指派对象` | 报工或工时处理 | 表:MES_接口_生产计划 | + +#### 50. `src/views/QualityManagement/CheckTask/firstSpecial.vue` + +页面要点:该页面处理首检/特殊首件检验。用户按工序和工位选择任务,录入首检数据。 页面可见的操作/字段包括 “item.label”、“序号”、“工位编号”、“工序名称”、“操作类别”、“操作人”、“销售订单”、“生产订单”、“物料编号”、“物料名称”,这些是判断页面业务范围的主要线索。 后端主要围绕 Prog_MES_LoadProcess、Pr +过程覆盖:`Prog_MES_LoadProcess`、`Prog_MES_LoadStations`、`MES_QulityInspection_FirstCheckRecords` + +```text +[进入页面 / src/views/QualityManagement/CheckTask/firstSpecial.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_QulityInspection_FirstCheckRecords / 质量检验处理] +[type 11(当前通用存储过程查询/执行) / MES_QulityInspection_FirstCheckRecords / 质量检验处理] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 基础表_工序 / MES_资源主数据 / YL_加工中心_操作记录表] +[主要数据对象 / 基础表_工序 / MES_资源主数据 / YL_加工中心_操作记录表] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `Prog_MES_LoadProcess` | 查询/读取数据 | 表:基础表_工序 | +| 2 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | +| 3 | `MES_QulityInspection_FirstCheckRecords` | 质量检验处理 | 表:YL_加工中心_操作记录表 | + +#### 51. `src/views/QualityManagement/CheckTask/materialReturn.vue` + +页面要点:该页面处理原材料退库检验。用户查询退库检验任务,读取 SAP 生产订单辅助信息,录入并更新检验结果。 页面可见的操作/字段包括 “查询”、“扫码”、“取 消”、“合格”、“不合格”、“已完成”、“未完成”、“item.label”、“序号”、“单据码”,这些是判断页面业务范围的主要线索。 后端主要围绕 查询字典、人员管理_人员信息查询_质 +过程覆盖:`查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_原材料退库_查询`、`质量管理_原材料退库检验_更新` +WMS/条码任务:页面涉及 `stocktask` 出库/入库任务接口。 + +```text +[进入页面 / src/views/QualityManagement/CheckTask/materialReturn.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 质量管理_原材料退库_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_原材料退库_查询 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_原材料退库检验_更新 / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_原材料退库检验_更新 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [是否需要外部系统同步?] +[是否需要外部系统同步?] -- WMS/条码 --> [stocktask 入库/出库任务 / 物料/条码/数量同步] +[是否需要外部系统同步?] -- 否 --> [MES 本地状态生效] +[stocktask 入库/出库任务 / 物料/条码/数量同步] --> [外部返回成功?] +[MES 本地状态生效] --> [刷新列表/明细/看板数据] +[外部返回成功?] -- 是 --> [刷新列表/明细/看板数据] +[外部返回成功?] -- 否 --> [记录失败原因 / 保留待重试/待处理状态] +[记录失败原因 / 保留待重试/待处理状态] --> [刷新列表/明细/看板数据] +[用户是否发起业务动作?] -- 否 --> [刷新列表/明细/看板数据] +[刷新列表/明细/看板数据] --> [主要数据对象 / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图 / 质量检验_质检任务_SAP / YL_质量检验_质检记录] +[主要数据对象 / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图 / 质量检验_质检任务_SAP / YL_质量检验_质检记录] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 2 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 3 | `质量管理_原材料退库_查询` | 查询/读取数据 | 表:质量检验_质检任务_SAP | +| 4 | `质量管理_原材料退库检验_更新` | 更新/保存业务数据 | 表:YL_质量检验_质检记录、质量检验_质检任务_SAP | + +#### 52. `src/views/QualityManagement/CheckTask/processReceive.vue` + +页面要点:该页面处理序检收检。质检人员接收工序检验任务,查询加急和字典信息,读取 SAP 工序状态,新增序检收检记录。 页面可见的操作/字段包括 “查询”、“导出 -->”、“取 消”、“关闭”、“装配”、“机加”、“全部”、“合格”、“不合格”、“item.label”,这些是判断页面业务范围的主要线索。 后端主要围绕 工艺管理_图纸维护_查看图 +过程覆盖:`工艺管理_图纸维护_查看图纸`、`加急订单_加急明细查询`、`查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_质量检验_收检记录_查询`、`质量管理_序检收检_新增` + +```text +[进入页面 / src/views/QualityManagement/CheckTask/processReceive.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 质量管理_质量检验_收检记录_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_质量检验_收检记录_查询 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_序检收检_新增 / 新增业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_序检收检_新增 / 新增业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 物料基础数据_零件图纸 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图] +[主要数据对象 / 物料基础数据_零件图纸 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_零件图纸 | +| 2 | `加急订单_加急明细查询` | 查询/读取数据 | 表:MES_接口_生产计划;SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL | +| 3 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 4 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 5 | `质量管理_质量检验_收检记录_查询` | 查询/读取数据 | 表:YL_加工中心_操作记录表、YL_质量检验_质检记录;视图:View_生产订单_MES | +| 6 | `质量管理_序检收检_新增` | 新增业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、YL_质量检验_质检记录 | + +#### 53. `src/views/QualityManagement/CheckTask/processSpecial.vue` + +页面要点:该页面处理过程/特殊检验。用户按工序任务录入特殊检验结果和检测明细。 + +```text +[进入页面 / src/views/QualityManagement/CheckTask/processSpecial.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +#### 54. `src/views/QualityManagement/CheckTask/purchaseIncoming.vue` + +页面要点:该页面处理采购/来料检验。质检人员查询待检任务,查看图纸、字典和检验人员,录入合格数、不合格数、检测数据,调用过程更新来料检验结果。 页面可见的操作/字段包括 “查询”、“取 消”、“关闭”、“合格”、“不合格”、“已完成”、“未完成”、“item.label”、“序号”、“单据码”,这些是判断页面业务范围的主要线索。 后端主要围绕 加急 +过程覆盖:`加急订单_加急明细查询`、`工艺管理_图纸维护_查看图纸`、`查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_质量检验_入库质检任务_查询`、`质量管理_来料检验_更新` + +```text +[进入页面 / src/views/QualityManagement/CheckTask/purchaseIncoming.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 工艺管理_图纸维护_查看图纸 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 质量管理_质量检验_入库质检任务_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_质量检验_入库质检任务_查询 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_来料检验_更新 / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_来料检验_更新 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / 物料基础数据_零件图纸 / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图] +[主要数据对象 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / 物料基础数据_零件图纸 / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `加急订单_加急明细查询` | 查询/读取数据 | 表:MES_接口_生产计划;SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL | +| 2 | `工艺管理_图纸维护_查看图纸` | 查询/读取数据 | 表:物料基础数据_零件图纸 | +| 3 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 4 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 5 | `质量管理_质量检验_入库质检任务_查询` | 查询/读取数据 | 表:YL_质量检验_质检记录、质量检验_质检任务_SAP | +| 6 | `质量管理_来料检验_更新` | 更新/保存业务数据 | 表:YL_质量检验_质检记录、质量检验_质检任务_SAP | + +#### 55. `src/views/QualityManagement/CheckTask/salesReturn.vue` + +页面要点:该页面处理销售退货检验。用户查询销售退货待检任务,录入检验结果并更新质检记录。 页面可见的操作/字段包括 “查询”、“取 消”、“合格”、“不合格”、“item.label”、“序号”、“生产订单”、“物料名称”、“物料编码”、“采购数”,这些是判断页面业务范围的主要线索。 后端主要围绕 查询字典、人员管理_人员信息查询_质检部门_查询、 +过程覆盖:`查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_质量检验_退货质检任务_查询`、`质量管理_销售退货检_更新` +WMS/条码任务:页面涉及 `stocktask` 出库/入库任务接口。 + +```text +[进入页面 / src/views/QualityManagement/CheckTask/salesReturn.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 质量管理_质量检验_退货质检任务_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_质量检验_退货质检任务_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_销售退货检_更新 / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_销售退货检_更新 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [是否需要外部系统同步?] +[是否需要外部系统同步?] -- WMS/条码 --> [stocktask 入库/出库任务 / 物料/条码/数量同步] +[是否需要外部系统同步?] -- 否 --> [MES 本地状态生效] +[stocktask 入库/出库任务 / 物料/条码/数量同步] --> [外部返回成功?] +[MES 本地状态生效] --> [刷新列表/明细/看板数据] +[外部返回成功?] -- 是 --> [刷新列表/明细/看板数据] +[外部返回成功?] -- 否 --> [记录失败原因 / 保留待重试/待处理状态] +[记录失败原因 / 保留待重试/待处理状态] --> [刷新列表/明细/看板数据] +[用户是否发起业务动作?] -- 否 --> [刷新列表/明细/看板数据] +[刷新列表/明细/看板数据] --> [主要数据对象 / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图 / 质量检验_质检任务_SAP / YL_质量检验_质检记录] +[主要数据对象 / YL_基础表_数据字典 / 登录基础数据_管理人员权限视图 / 质量检验_质检任务_SAP / YL_质量检验_质检记录] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 2 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 3 | `质量管理_质量检验_退货质检任务_查询` | 查询/读取数据 | 表:质量检验_质检任务_SAP | +| 4 | `质量管理_销售退货检_更新` | 更新/保存业务数据 | 表:YL_质量检验_质检记录、质量检验_质检任务_SAP | + +#### 56. `src/views/QualityManagement/QualityCenter/index.vue` + +页面要点:该页面是质量综合处理中心。用户集中查询质检任务、收检记录、终检/入库任务和质检明细,录入检测数据、不合格处理,并读取 SAP 生产订单信息辅助校验。 页面可见的操作/字段包括 “查询 --> --> 缺料”、“上一个 下一个”、“删除当前记录 关闭”、“上一个 下一个 保存当前记录 删除当前记录 关闭”、“确定 关闭”、“取 消”、“确 +过程覆盖:`生产管理_获取人员绑定`、`加急订单_加急明细查询`、`MES_人员工时记录_获取进行中任务2`、`MES_人员工时记录_获取进行中任务`、`工时校验_获取订单列表`、`异常工时_新增操作记录`、`工时校验_获取订单工序`、`MES_登录_工位与名称_查询`、`Prog_MES_LoadProcess`、`质量管理_质检报工_任务查询`、... +WMS/条码任务:页面涉及 `stocktask` 出库/入库任务接口。 + +```text +[进入页面 / src/views/QualityManagement/QualityCenter/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 生产管理_获取人员绑定 / 基础权限/人员数据处理] +[type 11(当前通用存储过程查询/执行) / 生产管理_获取人员绑定 / 基础权限/人员数据处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单工序 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 生产管理_装配中心_缺料查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_装配中心_缺料查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 加急订单_加急明细查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / MES_人员工时记录_获取进行中任务2 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / MES_人员工时记录_获取进行中任务2 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / MES_人员工时记录_获取进行中任务 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / MES_人员工时记录_获取进行中任务 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] +[type 11(当前通用存储过程查询/执行) / 工时校验_获取订单列表 / 报工或工时处理] --> [type 11(当前通用存储过程查询/执行) / 异常工时_新增操作记录 / 新增业务数据] +[type 11(当前通用存储过程查询/执行) / 异常工时_新增操作记录 / 新增业务数据] --> [type 11(当前通用存储过程查询/执行) / 质量管理_质检报工_任务查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_质检报工_任务查询 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [是否需要外部系统同步?] +[是否需要外部系统同步?] -- WMS/条码 --> [stocktask 入库/出库任务 / 物料/条码/数量同步] +[是否需要外部系统同步?] -- 否 --> [MES 本地状态生效] +[stocktask 入库/出库任务 / 物料/条码/数量同步] --> [外部返回成功?] +[MES 本地状态生效] --> [刷新列表/明细/看板数据] +[外部返回成功?] -- 是 --> [刷新列表/明细/看板数据] +[外部返回成功?] -- 否 --> [记录失败原因 / 保留待重试/待处理状态] +[记录失败原因 / 保留待重试/待处理状态] --> [刷新列表/明细/看板数据] +[用户是否发起业务动作?] -- 否 --> [刷新列表/明细/看板数据] +[刷新列表/明细/看板数据] --> [主要数据对象 / MES_资源主数据 / 工位人员绑定表 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / MES_接口_生产计划_生产任务] +[主要数据对象 / MES_资源主数据 / 工位人员绑定表 / MES_接口_生产计划 / SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL / MES_接口_生产计划_生产任务] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `生产管理_获取人员绑定` | 基础权限/人员数据处理 | 表:MES_资源主数据、工位人员绑定表 | +| 2 | `加急订单_加急明细查询` | 查询/读取数据 | 表:MES_接口_生产计划;SAP/链接库:SAP.SBO_YL.dbo.ubt_OPKL_UrgentMaterials_ALL | +| 3 | `MES_人员工时记录_获取进行中任务2` | 报工或工时处理 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、YL_加工中心_操作记录表 | +| 4 | `MES_人员工时记录_获取进行中任务` | 报工或工时处理 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、YL_加工中心_操作记录表 | +| 5 | `工时校验_获取订单列表` | 报工或工时处理 | 表:MES_接口_生产计划 | +| 6 | `异常工时_新增操作记录` | 新增业务数据 | 表:YL_加工中心_操作记录表;视图:View_生产订单_MES | +| 7 | `工时校验_获取订单工序` | 报工或工时处理 | 视图:View_生产订单_MES | +| 8 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 9 | `Prog_MES_LoadProcess` | 查询/读取数据 | 表:基础表_工序 | +| 10 | `质量管理_质检报工_任务查询` | 查询/读取数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务、YL_质量检验_质检记录;视图:View_生产订单_MES | +| 11 | `MES_ProductTask_WorkTimeSum` | 报工或工时处理 | 未在 SQL 中解析到明确依赖 | +| 12 | `生产管理_装配中心_缺料查询` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OPKL_MissQty | +| ... | ... | 共 28 个过程,此处仅列前 12 个 | 详见分析文档对应页面段落 | + +#### 57. `src/views/QualityManagement/QualityDetails/index.vue` + +页面要点:该页面查询质检明细。用户按订单、物料、检验类型、时间等条件查询和导出检测明细。 页面可见的操作/字段包括 “查询”、“Excel导出”、“全部”、“收检”、“终检”、“来料检验”、“退库检验”、“序号”、“质检类型”、“零件编码”,这些是判断页面业务范围的主要线索。 后端主要围绕 质量管理_质检明细_导出、质量管理_质检明细_查询 取数或 +过程覆盖:`质量管理_质检明细_导出`、`质量管理_质检明细_查询` + +```text +[进入页面 / src/views/QualityManagement/QualityDetails/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 2001(导出/报表类过程) / 质量管理_质检明细_导出 / 质量检验处理] +[type 2001(导出/报表类过程) / 质量管理_质检明细_导出 / 质量检验处理] --> [type 11(当前通用存储过程查询/执行) / 质量管理_质检明细_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_质检明细_查询 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_质检明细] +[主要数据对象 / View_质检明细] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `质量管理_质检明细_导出` | 质量检验处理 | 视图:View_质检明细 | +| 2 | `质量管理_质检明细_查询` | 查询/读取数据 | 视图:View_质检明细 | + +#### 58. `src/views/QualityManagement/QualityStandardQuery/index copy.vue` + +页面要点:该页面维护/查询检验标准。用户按物料、工序、检测项目维护理论值、上下限、量具和启用状态。 页面可见的操作/字段包括 “查询 新增标准 修改 删除 确定 取 消”、“确定 取 消”、“item.label”、“序号”、“零件号”、“工序”、“类型”、“检验项目”、“检验内容”、“上限值”,这些是判断页面业务范围的主要线索。 后端主要围绕 P +过程覆盖:`Prog_MES_LoadProcess`、`查询字典`、`质量管理_检验标准表_新增`、`质量管理_检验标准表_查询`、`质量管理_检验标准表_修改`、`质量管理_检验标准表_删除` + +```text +[进入页面 / src/views/QualityManagement/QualityStandardQuery/index copy.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 质量管理_检验标准表_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_检验标准表_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_新增 / 新增业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_新增 / 新增业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_修改 / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_修改 / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_删除 / 删除业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_删除 / 删除业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 基础表_工序 / YL_基础表_数据字典] +[主要数据对象 / 基础表_工序 / YL_基础表_数据字典] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `Prog_MES_LoadProcess` | 查询/读取数据 | 表:基础表_工序 | +| 2 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 3 | `质量管理_检验标准表_新增` | 新增业务数据 | 未在 SQL 中解析到明确依赖 | +| 4 | `质量管理_检验标准表_查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 5 | `质量管理_检验标准表_修改` | 更新/保存业务数据 | 未在 SQL 中解析到明确依赖 | +| 6 | `质量管理_检验标准表_删除` | 删除业务数据 | 未在 SQL 中解析到明确依赖 | + +#### 59. `src/views/QualityManagement/QualityStandardQuery/index.vue` + +页面要点:该页面维护/查询检验标准。用户按物料、工序、检测项目维护理论值、上下限、量具和启用状态。 页面可见的操作/字段包括 “查询 新增标准 修改 删除 确定 取 消”、“确定 取 消”、“item.label”、“序号”、“物料编号”、“工序名称”、“检测类别”、“检测项目”、“上限值”、“下限值”,这些是判断页面业务范围的主要线索。 后端主要 +过程覆盖:`MES_ProcessManagement_PartGet`、`Prog_MES_LoadProcess`、`查询字典`、`质量管理_检验标准表_新增`、`质量管理_检验标准表_查询`、`质量管理_检验标准表_修改`、`质量管理_检验标准表_删除` + +```text +[进入页面 / src/views/QualityManagement/QualityStandardQuery/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_PartGet / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_ProcessManagement_PartGet / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadProcess / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 查询字典 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / 质量管理_检验标准表_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_检验标准表_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_新增 / 新增业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_新增 / 新增业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_修改 / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_修改 / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_删除 / 删除业务数据] +[type 12(当前通用存储过程写入/业务动作) / 质量管理_检验标准表_删除 / 删除业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / SAP.SBO_YL.dbo.UBT_OITM / 基础表_工序 / YL_基础表_数据字典] +[主要数据对象 / SAP.SBO_YL.dbo.UBT_OITM / 基础表_工序 / YL_基础表_数据字典] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_ProcessManagement_PartGet` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OITM | +| 2 | `Prog_MES_LoadProcess` | 查询/读取数据 | 表:基础表_工序 | +| 3 | `查询字典` | 查询/读取数据 | 表:YL_基础表_数据字典 | +| 4 | `质量管理_检验标准表_新增` | 新增业务数据 | 未在 SQL 中解析到明确依赖 | +| 5 | `质量管理_检验标准表_查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 6 | `质量管理_检验标准表_修改` | 更新/保存业务数据 | 未在 SQL 中解析到明确依赖 | +| 7 | `质量管理_检验标准表_删除` | 删除业务数据 | 未在 SQL 中解析到明确依赖 | + +#### 60. `src/views/QualityManagement/Unqualified/index.vue` + +页面要点:该页面处理不合格品。用户查询不合格记录,查看处置流程和节点,推进让步放行、返工、报废等处理。 页面可见的操作/字段包括 “查询”、“Excel导出”、“打印”、“item.label”、“全部”、“收检”、“终检”、“来料检验”、“退库检验”、“序号”,这些是判断页面业务范围的主要线索。 后端主要围绕 人员管理_人员信息查询_质检部门_查 +过程覆盖:`人员管理_人员信息查询_质检部门_查询`、`质量管理_不合格品处置_查询` + +```text +[进入页面 / src/views/QualityManagement/Unqualified/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_质检部门_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 质量管理_不合格品处置_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 质量管理_不合格品处置_查询 / 查询/读取数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 登录基础数据_管理人员权限视图 / View_质检明细] +[主要数据对象 / 登录基础数据_管理人员权限视图 / View_质检明细] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `人员管理_人员信息查询_质检部门_查询` | 查询/读取数据 | 视图:登录基础数据_管理人员权限视图 | +| 2 | `质量管理_不合格品处置_查询` | 查询/读取数据 | 视图:View_质检明细 | + +### 17.10 销售管理(SaleManagement) + +#### 61. `src/views/SaleManagement/saleorderstatus/index.vue` + +页面要点:该页面查询销售订单状态。用户按销售订单、合同、物料等条件查看销售订单在 SAP/MES 中的履约、生产、发货或关闭状态。 页面可见的操作/字段包括 “查询”、“缺料”、“关闭”、“全部”、“已下达发货通知”、“未下达发货通知”、“机加”、“装配”、“是”、“否”,这些是判断页面业务范围的主要线索。 后端主要围绕 生产管理_装配中心_缺料查 +过程覆盖:`生产管理_装配中心_缺料查询`、`销售管理_销售订单状态`、`MES_OrderPlanned_DescriptionEdit`、`Prog_MES_LoadStations` + +```text +[进入页面 / src/views/SaleManagement/saleorderstatus/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 生产管理_装配中心_缺料查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 生产管理_装配中心_缺料查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / Prog_MES_LoadStations / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 销售管理_销售订单状态 / 业务存储过程调用] +[type 11(当前通用存储过程查询/执行) / 销售管理_销售订单状态 / 业务存储过程调用] --> [type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / MES_OrderPlanned_DescriptionEdit / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / SAP.SBO_YL.dbo.UBT_OPKL_MissQty / View_生产订单_MES / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / MES_资源主数据] +[主要数据对象 / SAP.SBO_YL.dbo.UBT_OPKL_MissQty / View_生产订单_MES / MES_接口_生产计划 / MES_接口_生产计划_生产任务 / MES_资源主数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `生产管理_装配中心_缺料查询` | 查询/读取数据 | SAP/链接库:SAP.SBO_YL.dbo.UBT_OPKL_MissQty | +| 2 | `销售管理_销售订单状态` | 业务存储过程调用 | 视图:View_生产订单_MES | +| 3 | `MES_OrderPlanned_DescriptionEdit` | 更新/保存业务数据 | 表:MES_接口_生产计划、MES_接口_生产计划_生产任务 | +| 4 | `Prog_MES_LoadStations` | 查询/读取数据 | 表:MES_资源主数据 | + +### 17.11 系统维护(SystemMaintenance) + +#### 62. `src/views/SystemMaintenance/MenuManagement/index.vue` + +页面要点:该页面维护菜单和权限。管理员查询、增加、修改、删除菜单/角色权限配置,用于动态路由和按钮权限。 页面可见的操作/字段包括 “取消”、“确定”、“item.label”、“模块名称”、“模块路径”、“请选择”、“输入关键字进行过滤”、“新增一级模块”,这些是判断页面业务范围的主要线索。 后端主要围绕 菜单系统模块_项目角色_查询数据_MES +过程覆盖:`菜单系统模块_项目角色_查询数据_MESWORK` + +```text +[进入页面 / src/views/SystemMaintenance/MenuManagement/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_查询数据_MESWORK / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_查询数据_MESWORK / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `菜单系统模块_项目角色_查询数据_MESWORK` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | + +#### 63. `src/views/SystemMaintenance/OperationLog/index.vue` + +页面要点:该页面查询操作日志或报工操作记录,用于审计用户操作和追踪异常。 页面可见的操作/字段包括 “查询”、“订单编号”、“操作人”、“序号”、“操作类别”、“工序名称”、“工位名称”、“合同号”、“物料编号”、“物料描述”,这些是判断页面业务范围的主要线索。 后端主要围绕 系统管理_报工操作记录_查询 取数或提交业务动作。 +过程覆盖:`系统管理_报工操作记录_查询` + +```text +[进入页面 / src/views/SystemMaintenance/OperationLog/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 系统管理_报工操作记录_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_报工操作记录_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / YL_加工中心_操作记录表] +[主要数据对象 / YL_加工中心_操作记录表] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `系统管理_报工操作记录_查询` | 查询/读取数据 | 表:YL_加工中心_操作记录表 | + +#### 64. `src/views/SystemMaintenance/OrgManagement/index.vue` + +页面要点:该页面维护组织/角色类基础数据,支持新增、修改、删除和查询。 页面可见的操作/字段包括 “查询”、“新增”、“编辑”、“删除”、“确 定”、“取消”、“部门名称”、“请输入部门名称”、“新增部门”、“编辑部门”,这些是判断页面业务范围的主要线索。 后端主要围绕 菜单系统模块_项目角色_查询数据_MESWORK、菜单系统模块_项目角色_修改 +过程覆盖:`菜单系统模块_项目角色_查询数据_MESWORK`、`菜单系统模块_项目角色_修改数据_MESWORK`、`菜单系统模块_项目角色_增加_MESWORK`、`菜单系统模块_项目角色_删除_MESWORK` + +```text +[进入页面 / src/views/SystemMaintenance/OrgManagement/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_查询数据_MESWORK / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_查询数据_MESWORK / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_修改数据_MESWORK / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_修改数据_MESWORK / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_增加_MESWORK / 新增业务数据] +[type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_增加_MESWORK / 新增业务数据] --> [type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_删除_MESWORK / 删除业务数据] +[type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_删除_MESWORK / 删除业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 登录基础数据_角色信息 / 登录基础数据_人员权限角色 / 登录基础数据_二级菜单] +[主要数据对象 / 登录基础数据_角色信息 / 登录基础数据_人员权限角色 / 登录基础数据_二级菜单] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `菜单系统模块_项目角色_查询数据_MESWORK` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 2 | `菜单系统模块_项目角色_修改数据_MESWORK` | 更新/保存业务数据 | 表:登录基础数据_角色信息 | +| 3 | `菜单系统模块_项目角色_增加_MESWORK` | 新增业务数据 | 表:登录基础数据_角色信息 | +| 4 | `菜单系统模块_项目角色_删除_MESWORK` | 删除业务数据 | 表:登录基础数据_角色信息、登录基础数据_人员权限角色、登录基础数据_二级菜单 | + +#### 65. `src/views/SystemMaintenance/PersonnelManagement/index.vue` + +页面要点:该页面维护人员账号。管理员维护人员、部门、角色、启用状态等登录和权限基础数据。 页面可见的操作/字段包括 “查询”、“新增”、“重置密码”、“编辑”、“确 定”、“取消”、“item.label”、“姓名”、“工号”、“密码”,这些是判断页面业务范围的主要线索。 后端主要围绕 人员管理_角色信息初始化查询_查询、登录基础数据_人员信息_切 +过程覆盖:`人员管理_角色信息初始化查询_查询`、`登录基础数据_人员信息_切换是否用户`、`人员管理_人员信息查询_查询`、`人员管理_人员信息修改_编辑`、`人员管理_人员信息修改_删除`、`人员管理_人员信息新增_新增`、`WEB_摄像头查看权限_查询`、`WEB_登录基础数据_人员信息_重置密码`、`WEB_人员设备查看权限_查询`、`WEB_人员设备查看权限_权限切换`、... + +```text +[进入页面 / src/views/SystemMaintenance/PersonnelManagement/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 人员管理_角色信息初始化查询_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_角色信息初始化查询_查询 / 查询/读取数据] --> [type 12(当前通用存储过程写入/业务动作) / 登录基础数据_人员信息_切换是否用户 / 基础权限/人员数据处理] +[type 12(当前通用存储过程写入/业务动作) / 登录基础数据_人员信息_切换是否用户 / 基础权限/人员数据处理] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息查询_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / WEB_摄像头查看权限_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / WEB_摄像头查看权限_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / WEB_人员设备查看权限_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / WEB_人员设备查看权限_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 12(当前通用存储过程写入/业务动作) / 人员管理_人员信息修改_编辑 / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / 人员管理_人员信息修改_编辑 / 更新/保存业务数据] --> [type 12(当前通用存储过程写入/业务动作) / 人员管理_人员信息修改_删除 / 更新/保存业务数据] +[type 12(当前通用存储过程写入/业务动作) / 人员管理_人员信息修改_删除 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 人员管理_人员信息新增_新增 / 新增业务数据] +[type 11(当前通用存储过程查询/执行) / 人员管理_人员信息新增_新增 / 新增业务数据] --> [type 12(当前通用存储过程写入/业务动作) / WEB_登录基础数据_人员信息_重置密码 / 基础权限/人员数据处理] +[type 12(当前通用存储过程写入/业务动作) / WEB_登录基础数据_人员信息_重置密码 / 基础权限/人员数据处理] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 登录基础数据_人员信息 / 登录基础数据_人员权限角色] +[主要数据对象 / 登录基础数据_人员信息 / 登录基础数据_人员权限角色] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `人员管理_角色信息初始化查询_查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 2 | `登录基础数据_人员信息_切换是否用户` | 基础权限/人员数据处理 | 未知 | +| 3 | `人员管理_人员信息查询_查询` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 4 | `人员管理_人员信息修改_编辑` | 更新/保存业务数据 | 表:登录基础数据_人员信息、登录基础数据_人员权限角色 | +| 5 | `人员管理_人员信息修改_删除` | 更新/保存业务数据 | 表:登录基础数据_人员信息、登录基础数据_人员权限角色 | +| 6 | `人员管理_人员信息新增_新增` | 新增业务数据 | 表:登录基础数据_人员信息、登录基础数据_人员权限角色 | +| 7 | `WEB_摄像头查看权限_查询` | 查询/读取数据 | 未知 | +| 8 | `WEB_登录基础数据_人员信息_重置密码` | 基础权限/人员数据处理 | 表:登录基础数据_人员信息 | +| 9 | `WEB_人员设备查看权限_查询` | 查询/读取数据 | 未知 | +| 10 | `WEB_人员设备查看权限_权限切换` | 查询/读取数据 | 未知 | +| 11 | `WEB_人员摄像头查看权限_权限切换` | 查询/读取数据 | 未知 | + +#### 66. `src/views/SystemMaintenance/SystemRrolemaintenance/index.vue` + +页面要点:该页面维护系统角色。管理员查询、新增、修改、删除角色数据。 页面可见的操作/字段包括 “查询”、“新增”、“编辑”、“删除”、“确 定”、“取消”、“角色功能”、“角色名称”、“请输入角色功能”、“新增角色”,这些是判断页面业务范围的主要线索。 后端主要围绕 菜单系统模块_项目角色_查询数据_MESWORK、菜单系统模块_项目角色_修改数 +过程覆盖:`菜单系统模块_项目角色_查询数据_MESWORK`、`菜单系统模块_项目角色_修改数据_MESWORK`、`菜单系统模块_项目角色_增加_MESWORK`、`菜单系统模块_项目角色_删除_MESWORK` + +```text +[进入页面 / src/views/SystemMaintenance/SystemRrolemaintenance/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_查询数据_MESWORK / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_查询数据_MESWORK / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_修改数据_MESWORK / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_修改数据_MESWORK / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_增加_MESWORK / 新增业务数据] +[type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_增加_MESWORK / 新增业务数据] --> [type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_删除_MESWORK / 删除业务数据] +[type 11(当前通用存储过程查询/执行) / 菜单系统模块_项目角色_删除_MESWORK / 删除业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / 登录基础数据_角色信息 / 登录基础数据_人员权限角色 / 登录基础数据_二级菜单] +[主要数据对象 / 登录基础数据_角色信息 / 登录基础数据_人员权限角色 / 登录基础数据_二级菜单] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `菜单系统模块_项目角色_查询数据_MESWORK` | 查询/读取数据 | 未在 SQL 中解析到明确依赖 | +| 2 | `菜单系统模块_项目角色_修改数据_MESWORK` | 更新/保存业务数据 | 表:登录基础数据_角色信息 | +| 3 | `菜单系统模块_项目角色_增加_MESWORK` | 新增业务数据 | 表:登录基础数据_角色信息 | +| 4 | `菜单系统模块_项目角色_删除_MESWORK` | 删除业务数据 | 表:登录基础数据_角色信息、登录基础数据_人员权限角色、登录基础数据_二级菜单 | + +#### 67. `src/views/SystemMaintenance/WorkstationManagement/index.vue` + +页面要点:该页面维护工位资源。管理员在 MES 侧新增、修改、删除工位,同时调用 SAP B1 Resources 新增或更新资源主数据。 页面可见的操作/字段包括 “查询”、“新增”、“编辑”、“删除”、“确 定”、“取消”、“工位名称”、“工位号”、“请输入工位名称”、“新增工位”,这些是判断页面业务范围的主要线索。 后端主要围绕 MES_登录 +过程覆盖:`MES_登录_工位与名称_查询`、`系统管理_工位管理_工位信息修改`、`系统管理_工位管理_工位信息增加`、`系统管理_工位管理_工位信息删除` + +```text +[进入页面 / src/views/SystemMaintenance/WorkstationManagement/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / MES_登录_工位与名称_查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 系统管理_工位管理_工位信息修改 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_工位管理_工位信息修改 / 更新/保存业务数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_工位管理_工位信息增加 / 新增业务数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_工位管理_工位信息增加 / 新增业务数据] --> [type 11(当前通用存储过程查询/执行) / 系统管理_工位管理_工位信息删除 / 删除业务数据] +[type 11(当前通用存储过程查询/执行) / 系统管理_工位管理_工位信息删除 / 删除业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [主要数据对象 / View_基础数据_工位 / MES_资源主数据 / 登录基础数据_人员权限角色 / 登录基础数据_二级菜单] +[主要数据对象 / View_基础数据_工位 / MES_资源主数据 / 登录基础数据_人员权限角色 / 登录基础数据_二级菜单] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `MES_登录_工位与名称_查询` | 查询/读取数据 | 视图:View_基础数据_工位 | +| 2 | `系统管理_工位管理_工位信息修改` | 更新/保存业务数据 | 表:MES_资源主数据 | +| 3 | `系统管理_工位管理_工位信息增加` | 新增业务数据 | 表:MES_资源主数据 | +| 4 | `系统管理_工位管理_工位信息删除` | 删除业务数据 | 表:MES_资源主数据、登录基础数据_人员权限角色、登录基础数据_二级菜单 | + +### 17.12 首页与看板入口(dashboard) + +#### 68. `src/views/dashboard/index.vue` + +页面要点:该页面是系统首页或欢迎页,用于承载看板入口或基础统计展示。 + +```text +[进入页面 / src/views/dashboard/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +### 17.13 布局与导航(layout) + +#### 69. `src/views/layout/Layout.vue` + +页面要点:该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +```text +[进入页面 / src/views/layout/Layout.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +#### 70. `src/views/layout/components/AppMain.vue` + +页面要点:该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +```text +[进入页面 / src/views/layout/components/AppMain.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +#### 71. `src/views/layout/components/Navbar.vue` + +页面要点:该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 页面可见的操作/字段包括 “[   登出   ]  --> Log Off”、“取 消”、“提 交”、“旧密码”、“新密码”、“确认密码”、“修改密码”,这些是判断页面业务范围的主要线索。 后端主要围绕 登录基础数据_人员信 +过程覆盖:`登录基础数据_人员信息_登陆检查密码`、`登录基础数据_人员信息_修改密码`、`WEB_报警查询_未读报警记录_查询`、`WEB_报警查询_未读报警记录_未读条数查询` + +```text +[进入页面 / src/views/layout/components/Navbar.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [组装查询条件 / 分页/时间/订单/工位] +[组装查询条件 / 分页/时间/订单/工位] --> [type 11(当前通用存储过程查询/执行) / 登录基础数据_人员信息_登陆检查密码 / 基础权限/人员数据处理] +[type 11(当前通用存储过程查询/执行) / 登录基础数据_人员信息_登陆检查密码 / 基础权限/人员数据处理] --> [type 11(当前通用存储过程查询/执行) / WEB_报警查询_未读报警记录_查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / WEB_报警查询_未读报警记录_查询 / 查询/读取数据] --> [type 11(当前通用存储过程查询/执行) / WEB_报警查询_未读报警记录_未读条数查询 / 查询/读取数据] +[type 11(当前通用存储过程查询/执行) / WEB_报警查询_未读报警记录_未读条数查询 / 查询/读取数据] --> [ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] +[ExecDatabase 返回 response.data / 表格/树/日历/明细区刷新] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [校验必填项/选中行/数量和状态] +[校验必填项/选中行/数量和状态] --> [type 11(当前通用存储过程查询/执行) / 登录基础数据_人员信息_修改密码 / 更新/保存业务数据] +[type 11(当前通用存储过程查询/执行) / 登录基础数据_人员信息_修改密码 / 更新/保存业务数据] --> [后端写入/更新完成 / 返回成功/失败消息] +[后端写入/更新完成 / 返回成功/失败消息] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +| 环节 | 页面调用/过程 | 用途 | 依赖线索 | +|---|---|---|---| +| 1 | `登录基础数据_人员信息_登陆检查密码` | 基础权限/人员数据处理 | 未在 SQL 中解析到明确依赖 | +| 2 | `登录基础数据_人员信息_修改密码` | 更新/保存业务数据 | 未在 SQL 中解析到明确依赖 | +| 3 | `WEB_报警查询_未读报警记录_查询` | 查询/读取数据 | 未知 | +| 4 | `WEB_报警查询_未读报警记录_未读条数查询` | 查询/读取数据 | 未知 | + +#### 72. `src/views/layout/components/Sidebar/Item.vue` + +页面要点:该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +```text +[进入页面 / src/views/layout/components/Sidebar/Item.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +#### 73. `src/views/layout/components/Sidebar/SidebarItem.vue` + +页面要点:该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 页面可见的操作/字段包括 “onlyOneChild.meta.title”、“item.meta.title”、“child.meta.title”,这些是判断页面业务范围的主要线索。 + +```text +[进入页面 / src/views/layout/components/Sidebar/SidebarItem.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +#### 74. `src/views/layout/components/Sidebar/index.vue` + +页面要点:该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +```text +[进入页面 / src/views/layout/components/Sidebar/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +#### 75. `src/views/layout/components/TagsView.vue` + +页面要点:该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +```text +[进入页面 / src/views/layout/components/TagsView.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +#### 76. `src/views/layout/components/index.js` + +页面要点:该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +```text +[进入页面 / src/views/layout/components/index.js] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +#### 77. `src/views/layout/mixin/ResizeHandler.js` + +页面要点:该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。 + +```text +[进入页面 / src/views/layout/mixin/ResizeHandler.js] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` + +### 17.14 登录(login) + +#### 78. `src/views/login/index.vue` + +页面要点:该页面是登录入口,负责账号密码登录、角色选择、Token/Cookie 写入、路由权限初始化和密码修改入口。 页面可见的操作/字段包括 “修改密码”、“登录”、“取消”、“确定”、“角色名称”、“工号”、“原始密码”、“新密码”、“确认密码”、“请输入用户名”,这些是判断页面业务范围的主要线索。 + +```text +[进入页面 / src/views/login/index.vue] --> [初始化页面状态 / 权限/默认条件/基础下拉] +[初始化页面状态 / 权限/默认条件/基础下拉] --> [页面绘制/路由容器展示 / 未识别到页面级存储过程] +[页面绘制/路由容器展示 / 未识别到页面级存储过程] --> [用户是否发起业务动作?] +[用户是否发起业务动作?] -- 是 --> [本页主要为查询/展示或容器组件 / 无明确写入动作] +[本页主要为查询/展示或容器组件 / 无明确写入动作] --> [保持当前数据或跳转其他页面] +[保持当前数据或跳转其他页面] --> [刷新列表/关闭弹窗/回显最新结果] +[用户是否发起业务动作?] -- 否 --> [刷新列表/关闭弹窗/回显最新结果] +[刷新列表/关闭弹窗/回显最新结果] --> [页面状态/路由/展示数据] +[页面状态/路由/展示数据] --> [用户继续查询/维护或转入下一业务页] +``` diff --git a/doc_old/元利项目详细用户使用说明书.md b/doc_old/元利项目详细用户使用说明书.md new file mode 100644 index 0000000..e293efd --- /dev/null +++ b/doc_old/元利项目详细用户使用说明书.md @@ -0,0 +1,7410 @@ +# 元利 MES 项目详细用户使用说明书 + +生成日期:2026-05-25 +依据文档:`元利项目详细分析.md` +适用系统:`MES_Manage_View_V20` + +## 一、使用说明 + +本文面向生产操作工、装配人员、质检员、计划员、工艺员、设备管理员、班组长、主管、系统管理员和看板使用人员,说明元利 MES 系统各功能模块的日常使用方式。 + +注意: +- 不同账号看到的菜单不同,本文按系统功能完整说明。 +- 页面名称可能由数据库菜单动态配置,实际菜单名称以现场系统为准。 +- 涉及 SAP 的操作,如果 SAP 接口失败,应以页面提示和操作日志为准,不要重复提交同一业务动作。 +- 看板页面主要用于展示,不作为业务数据维护入口。 + +## 二、系统登录与通用操作 + +### 2.1 登录系统 + +操作步骤: + +1. 打开浏览器,输入 MES 系统地址。 +2. 在登录页输入工号和密码。 +3. 点击 `登录`。 +4. 如果账号有多个角色,选择本次要使用的角色。 +5. 进入系统首页或九宫格功能入口。 + +常见问题: + +| 问题 | 处理方式 | +|---|---| +| 提示账号或密码错误 | 检查工号、密码,必要时联系系统管理员重置 | +| 登录后无菜单 | 检查账号是否分配角色和菜单权限 | +| 页面空白或跳回登录页 | 清理浏览器缓存后重新登录 | + +### 2.2 主界面说明 + +系统主界面一般包括: + +| 区域 | 用途 | +|---|---| +| 左侧菜单 | 按模块进入计划、工艺、生产、质检、设备、系统维护等页面 | +| 顶部栏 | 显示当前用户、消息、修改密码、退出系统 | +| 标签栏 | 切换已经打开的页面 | +| 主工作区 | 显示当前页面的查询条件、表格、弹窗和操作按钮 | + +### 2.3 通用查询操作 + +大多数页面都采用相同模式: + +1. 在页面上方填写查询条件,例如订单号、物料编码、日期、工位、状态。 +2. 点击 `查询`。 +3. 在下方表格查看结果。 +4. 如需重新查询,点击 `重置` 清空条件。 +5. 如页面支持导出,点击 `导出` 生成表格文件。 + +### 2.4 通用新增、编辑、删除 + +| 操作 | 使用方式 | +|---|---| +| 新增 | 点击 `新增`,填写必填项,点击保存 | +| 编辑 | 选中一行或点击行内 `编辑`,修改字段后保存 | +| 删除 | 选中记录后点击 `删除`,确认后删除 | +| 批量操作 | 勾选多行后点击批量按钮,按弹窗提示确认 | + +操作要求: +- 带星号字段必须填写。 +- 日期字段建议使用日期选择器。 +- 删除和批量操作前需要确认数据是否已经被业务引用。 + +## 三、角色与日常工作入口 + +| 角色 | 常用入口 | 主要工作 | +|---|---|---| +| 计划员 | 自制件排产、装配排产、生产订单关闭 | 排产、调整计划、关闭订单、同步 SAP | +| 工艺员 | 工序管理、制定标准工艺、生产工艺、工艺查询 | 维护工艺、生成生产工艺、查看路线 | +| 机加操作工 | 机加中心、领料、退库、报工 | 收料、开工、报工、异常反馈 | +| 装配人员 | 装配中心、装配任务管理 | 发料、装配、报工、送检、异常反馈 | +| 质检员 | 质检中心、各类检验任务、不合格处理 | 检验、录入结果、处理不合格 | +| 外协人员 | 外协管理、外协任务报表、序检收检 | 外协派发、收货、质检追溯 | +| 设备管理员 | 设备信息、设备实时数据、设备历史数据 | 维护设备、查看设备状态 | +| 班组长/主管 | 及时开工、工时报表、看板、异常管控 | 任务跟踪、异常处理、产量和工时分析 | +| 系统管理员 | 菜单、人员、组织、角色、工位管理 | 权限、主数据、基础配置 | + +## 四、基础资料维护 + +### 4.1 人员维护 + +适用页面: +- `SystemMaintenance/PersonnelManagement` +- 人员角色、组织、权限相关页面 + +用途: +- 维护员工基本信息。 +- 设置人员所属组织、岗位、角色。 +- 支持后续登录、权限、派工、报工、缺勤统计。 + +操作步骤: + +1. 进入人员维护页面。 +2. 按工号、姓名、组织查询人员。 +3. 点击新增或编辑。 +4. 填写工号、姓名、部门、岗位、状态等信息。 +5. 保存后检查角色权限是否正确。 + +注意: +- 离职或停用人员应设置为不可用,不建议直接删除历史人员。 +- 缺勤、班次、人员绩效依赖人员基础信息准确。 + +### 4.2 组织与角色维护 + +适用页面: +- `SystemMaintenance/OrgManagement` +- `SystemMaintenance/SystemRrolemaintenance` +- `SystemMaintenance/MenuManagement` + +用途: +- 设置组织结构。 +- 设置系统角色。 +- 给角色分配菜单和功能权限。 + +操作步骤: + +1. 维护组织节点。 +2. 新建或编辑角色。 +3. 给角色分配菜单权限。 +4. 给用户绑定角色。 +5. 使用对应账号重新登录确认菜单是否生效。 + +### 4.3 工位维护 + +适用页面: +- `SystemMaintenance/WorkstationManagement` + +用途: +- 维护工位号、工位名称。 +- 对接 SAP Resource。 +- 作为设备、人员、任务、缺勤和看板统计的基础。 + +操作步骤: + +1. 进入工位管理页面。 +2. 查询现有工位。 +3. 新增或编辑工位。 +4. 如需同步 SAP,检查资源编码、名称和同步结果。 +5. 保存后确认生产页面是否可以选择该工位。 + +注意: +- 工位编码应保持稳定,避免影响历史任务和 SAP 资源。 +- 如果 SAP 同步失败,应查看失败提示并重新同步。 + +### 4.4 设备信息维护 + +适用页面: +- `DeviceManagement/DeviceInformation` + +用途: +- 维护设备名称、型号、类型、工位、点检类型、工时单价、加工能力。 +- 支持设备状态、工时、OEE、机加看板等功能。 + +操作步骤: + +1. 进入设备信息页面。 +2. 按设备名称、设备类型、工位查询。 +3. 点击新增或编辑。 +4. 填写设备名称、设备型号、设备类型、加工工艺、工位、点检类型等。 +5. 保存。 + +注意: +- 设备标准工时不应简单作为所有零件的标准工时,标准单件工时优先从标准工艺或生产工艺取。 +- 设备是否参与 OEE、采集点位、主要设备等字段如后续上线,应由设备管理员维护。 + +### 4.5 班次与人员绑定 + +适用页面: +- `ProductionManagement/ShiftManagement` +- `ProductionManagement/PersonnelBinding` + +用途: +- 维护班次规则。 +- 维护人员与工位、岗位、设备的绑定关系。 +- 为班次产量、缺勤人员、设备看板提供基础数据。 + +操作注意: +- 班次跨天规则必须明确。 +- 缺勤不能从“没有报工”直接推断,必须有应到和实到来源。 +- 一个人可能对应多个工位,展示时需要合并显示。 + +## 五、工艺与图纸管理 + +### 5.1 工序基础数据 + +适用页面: +- `ProcessManagement/ProcedureManagement` + +用途: +- 维护工序编号和工序名称。 +- 部分工序需要同步到 SAP RouteStages。 + +操作步骤: + +1. 进入工序管理页面。 +2. 查询已有工序。 +3. 新增或编辑工序编号、工序名称。 +4. 如页面提示同步 SAP,确认同步结果。 +5. 保存。 + +注意: +- 工序编号应避免重复。 +- 若 SAP 同步失败,不应继续使用该工序进行正式下发,需先处理同步问题。 + +### 5.2 图纸查看与维护 + +适用页面: +- `ProcessManagement/PartDrawing` +- `ProcessManagement/PartDrawlook` +- `ProcessManagement/ProcessDrawing` +- `ProcessManagement/ProcurementDrawlook` + +用途: +- 上传、维护、查看零件图纸、工艺图纸、采购图纸。 +- 支持生产和质检查看图纸依据。 + +通用操作: + +1. 输入物料编码、物料名称或图号查询。 +2. 查看图纸列表。 +3. 点击查看或下载。 +4. 如有权限,可新增、替换或删除图纸。 + +### 5.3 产品结构维护 + +适用页面: +- `CraftManagement/CraftMaintain` + +用途: +- 维护产品结构树。 +- 维护产品材料和工艺参数。 +- 为后续工艺、物料、BOM 和生产任务提供结构基础。 + +操作步骤: + +1. 进入产品结构维护页面。 +2. 展开产品结构树。 +3. 选择节点后新增、编辑或删除子节点。 +4. 维护产品材料和工艺参数。 +5. 保存后确认结构是否正确。 + +### 5.4 制定标准工艺 + +适用页面: +- `ProcessManagement/ProcessesDevelop` + +用途: +- 为物料维护标准工艺路线。 +- 设置工序顺序、标准工时、准备工时。 +- 后续可维护关键工序标识。 + +操作步骤: + +1. 进入制定标准工艺页面。 +2. 按物料编码或名称查询。 +3. 选择物料后维护工序路线。 +4. 设置每道工序的工序名称、顺序、标准工时、准备工时等。 +5. 点击保存。 + +注意: +- 标准工艺是生产工艺的默认来源。 +- 保存成功后应有明确提示。 +- 关键工序应在标准工艺中作为默认标识维护。 + +### 5.5 生产工艺维护 + +适用页面: +- `ProcessManagement/ProcessProduct` + +用途: +- 按生产订单或物料维护实际生产工艺。 +- 将标准工艺转为订单级生产工艺。 +- 下发生产工艺任务。 + +操作步骤: + +1. 进入生产工艺页面。 +2. 按订单、物料、标准工艺状态、生产工艺状态查询。 +3. 点击编辑生产工艺。 +4. 若订单没有生产工艺,可按物料带出标准工艺作为草稿。 +5. 检查工序顺序、指派对象、标准工时等内容。 +6. 保存后启用或下发。 + +注意: +- 标准工艺带出后不应自动保存,必须由用户确认保存。 +- 已生成生产工艺不建议随标准工艺自动变化。 +- 关键工序、标准工时等字段下发任务时应形成快照。 + +### 5.6 工艺查询 + +适用页面: +- `ProcessManagement/ProcessInquiry` + +用途: +- 查询标准工艺或生产工艺。 +- 查看工艺路线和工序明细。 +- 支持打印或导出。 + +## 六、计划排产管理 + +### 6.1 机加待排产 + +适用页面: +- `PlanManagement/SelfMakePlan` + +用途: +- 查询未排产机加任务。 +- 设置计划开始、计划完成、工位、设备、优先级等。 +- 将 MES 排产信息同步到 SAP 生产订单。 + +操作步骤: + +1. 进入机加待排产页面。 +2. 输入生产订单、物料、计划号等条件查询。 +3. 选择待排产任务。 +4. 设置计划开始时间、计划完成时间、指派对象、工位或设备。 +5. 点击保存或排产。 +6. 如页面触发 SAP 回写,等待返回结果。 +7. 如果 SAP 回写失败,记录失败原因并联系相关人员处理。 + +注意: +- 排产时间会影响及时开工、生产看板和 SAP 订单日期。 +- 排产后任务进入已排产或待执行状态。 + +### 6.2 机加已排产 + +适用页面: +- `PlanManagement/SelfMakePlando` +- `PlanManagement/SelfMakePlandone` + +用途: +- 查看机加/自制件待排产和已排产任务。 +- 按订单、销售订单、物料、工序、计划时间、工位筛选任务。 +- 在表单页直接维护指派对象、指派数量、计划开始、计划完成、最晚开始、外协分组、优先级和派工备注。 +- 在日程页拖拽任务调整计划开始和计划完成时间。 +- 通过指派数量进行部分派工/拆分派工,通过二次派工追加人员。 +- 查看原料状态、零件图纸、工艺图纸,确认任务是否具备开工条件。 + +操作步骤: + +1. 进入 `PlanManagement/SelfMakePlandone` 查看已排产任务;需要处理待排产任务时进入 `PlanManagement/SelfMakePlando`。 +2. 在查询区输入 `生产订单`、`销售订单`、`物料编码`、`物料名称`、`工序名称`,按需要选择 `排产状态`。 +3. 选择 `要求完工日期`、`计划开始`、`计划完成` 的起止日期,点击 `查询` 刷新列表。 +4. 在工位复选框中勾选要查看的工位,系统按勾选工位过滤任务;不勾选时按全部工位查询。 +5. 在 `表单` 页查看任务基本信息:生产订单、物料编码、物料名称、计划数、要求完工日期、标准工时、工序名称、指派对象、指派数量、计划开始、计划完成、外协分组、原料状态、优先级、备注、占用情况、销售订单、最后编辑人和最后编辑时间。 +6. 表格中红色行表示优先级为 `是` 或加急状态为 `加急` 的任务,这类任务会优先显示;处理时应先核对是否需要插单或提前安排。 +7. 修改指派对象时,先单击目标行,再单击 `指派对象` 单元格,选择工位后系统立即保存。 +8. 修改指派数量时,先单击目标行,再单击 `指派数量` 单元格,输入数量后点击该单元格内的 `确定`。数量必须大于等于 1,且不能超过计划数量;小于计划数量时表示只派出部分数量,剩余数量按拆分/未派部分继续保留。 +9. 修改计划开始时,在 `计划开始` 列选择日期,系统保存该任务新的计划开始时间。 +10. 修改计划完成时,在 `计划完成` 列选择日期,系统保存该任务新的计划完成时间。 +11. 修改最晚开始时,在 `最晚开始` 列选择日期,用于提醒任务最迟必须开工的控制时间。 +12. 维护外协分组时,在 `外协分组` 输入框填写分组编号或分组值,离开输入框后系统保存,后续外协任务可按该分组识别。 +13. 查看原料状态时,点击 `原料状态` 列的 `查看`,在弹窗中核对子件编码、子件名称、基本数量、待出数量、拣配数量、计划数量、库存量、材质。 +14. 查看图纸时,在 `SelfMakePlando` 点击 `零件图纸` 或 `工艺图纸`,在弹窗中查看对应图纸;若提示未上传图纸,需要先维护图纸资料。 +15. 维护优先级和说明时,点击 `编辑`,在弹窗中选择 `优先级` 为 `是` 或 `否`,填写 `未完成说明`、`派工特殊备注`,点击 `确定` 保存。 +16. 需要追加人员时,在 `二次派工` 列多选人员,选择完成后系统立即保存二次派工人员。 +17. 需要批量排产时,在 `SelfMakePlando` 勾选同一生产订单的多道工序,先补齐第一道工序的指派对象和计划开始时间,再点击 `批量排产`。系统按订单行号排序,并把上一道工序的指派对象、计划开始、计划完成带给后续未填写工序。 +18. 批量排产确认无误后,点击 `排产完成`。系统校验每行是否有指派对象、指派数量、计划开始和计划完成;通过后写入派工结果,并按同一生产订单汇总最早开始、最晚完成,同步更新 SAP 生产订单开始/完成日期。 +19. 切换到 `日程` 页查看日历排程。蓝色任务为普通任务,红色任务为优先/加急任务;事件标题包含生产订单、物料名称、指派对象和计划数量。 +20. 在日程页单击任务,可查看订单号、指派对象、计划数量、开始时间、结束时间。 +21. 在日程页拖拽任务到其他日期,系统会弹出 `确认修改计划时间?`;点击 `确定` 后保存新的计划开始和计划完成,点击 `取消` 后恢复原位置。 +22. 在日程页拖动任务边缘拉长或缩短任务跨度,系统会同步调整计划完成时间;保存失败时日程会自动恢复原时间。 +23. 调整完成后回到 `表单` 页或重新点击 `查询`,确认列表中的计划开始、计划完成、最晚开始、指派对象、指派数量和备注已经更新。 + +注意: +- 日期筛选按自然日时,应查询 `00:00:00` 至 `23:59:59`。 +- 日程页拖拽会直接修改任务计划时间,拖拽前应确认不是已开工、已报工或已经锁定的任务。 +- 指派数量小于计划数量时要特别核对剩余数量是否还需要继续派工,避免漏派。 +- 二次派工只是补充人员,不等同于变更主指派工位。 +- `排产完成` 会影响生产看板、及时开工统计,并回写 SAP 生产订单日期,提交前必须核对同一订单的最早开始和最晚完成。 +- 红色任务表示优先或加急,默认排序靠前,不能只按订单号顺序处理。 + +### 6.3 装配排产 + +适用页面: +- `PlanManagement/InstallMakePlan` +- `PlanManagement/InstallMakePlanDo` + +用途: +- 排产装配、电气相关任务。 +- 提交 SAP 采购申请。 +- 回写 SAP 生产订单日期和说明。 + +操作步骤: + +1. 进入装配排产页面。 +2. 查询待排产装配任务。 +3. 设置计划时间、优先级、说明。 +4. 如需生成采购申请,确认采购字段。 +5. 点击保存或提交。 +6. 查看 SAP 采购申请或生产订单回写结果。 + +注意: +- SAP 采购申请失败时,不要重复点击提交,应先确认是否已在 SAP 生成单据。 +- 装配排产数据会影响装配中心、装配看板、齐套和送检相关报表。 + +### 6.4 优先装配与计划壳 + +适用页面: +- `PlanManagement/priorityinstall` +- `PlanManagement/PlanShell` + +用途: +- 处理优先装配或计划壳相关任务。 +- 查询计划任务状态。 + +使用方式: + +1. 输入订单、物料或计划号查询。 +2. 查看任务列表和状态。 +3. 按页面按钮执行调整、查询或导出。 + +### 6.5 生产订单关闭 + +适用页面: +- `PlanManagement/PlannOrderClose` + +用途: +- 关闭生产订单。 +- 将订单关闭状态同步到 SAP。 + +操作步骤: + +1. 进入生产订单关闭页面。 +2. 查询待关闭订单。 +3. 选择订单。 +4. 点击关闭或批量关闭 SAP 订单。 +5. 在确认框中确认。 +6. 查看每条订单的关闭结果。 + +注意: +- 关闭是高风险操作,必须确认订单已满足关闭条件。 +- 批量关闭应逐单查看成功或失败原因。 +- SAP 部分成功时,应按失败明细重试,不要重复关闭已成功订单。 + +## 七、生产执行管理 + +### 7.1 机加中心 + +适用页面: +- `ProductionManagement/MachiningCenter` + +用途: +- 机加任务执行。 +- 收料、开工、暂停、恢复、报工、退库、入库、发料、查看图纸、报异常。 + +典型流程: + +1. 查询当前工位或当前人员任务。 +2. 查看生产订单、物料、工序、分配数、上序合格数、收料状态。 +3. 确认可执行后进行收料。 +4. 点击开始加工。 +5. 加工过程中如有问题,点击报异常。 +6. 完成后填写报工数量、工时、说明。 +7. 提交报工。 +8. 根据任务要求进入质检、转序或入库。 + +不可开工常见原因: + +| 原因 | 处理方式 | +|---|---| +| 未收料 | 先执行收料 | +| 上序未完成或未合格 | 等待上道工序或质检完成 | +| 发料未齐套 | 等待发料或拣配完成 | +| 异常未关闭 | 联系异常责任人处理 | +| 设备或工位不匹配 | 联系班组长调整 | + +### 7.2 装配中心 + +适用页面: +- `ProductionManagement/AssemblyCenter` + +用途: +- 装配任务执行。 +- 查看装配任务、发料、缺件、齐套、报工、送检、异常。 + +典型流程: + +1. 查询装配任务。 +2. 查看发料状态、齐套状态、物料、合同、计划时间。 +3. 发料齐套后开始装配。 +4. 执行装配报工。 +5. 如有缺件或异常,查看缺件明细或提交异常。 +6. 装配完成后按要求送检或入库。 + +注意: +- 发料齐套时间会影响装配完成时间、及时送检和装配看板。 +- 手续确认如果上线,应按手续确认报表处理。 + +### 7.3 生产任务管理 + +适用页面: +- `ProductionManagement/ProductionTaskManage` +- `ProductionManagement/ProductionTasksSum` +- `ProductionManagement/AssembleTaskManage` +- `ProductionManagement/AssembleTasksSum` + +用途: +- 查询生产任务和装配任务。 +- 查看任务汇总。 +- 跟踪任务状态、加工状态、完成数量。 + +使用方式: + +1. 进入任务管理或任务汇总页面。 +2. 输入订单、物料、任务状态、日期等条件。 +3. 点击查询。 +4. 查看任务明细或汇总。 + +### 7.4 生产计划跟踪 + +适用页面: +- `ProductionManagement/ProductionPlanTrack` +- `ProductionManagement/AssemblePlanTrack` + +用途: +- 查看生产订单当前进度。 +- 查看工艺路线、当前序、等待序、已完成序。 + +使用方式: + +1. 输入生产订单、合同号、物料等查询。 +2. 查看工艺路线。 +3. 判断当前正在加工的工序和后续等待工序。 +4. 查看标准工时、订单状态等信息。 + +## 八、外协业务 + +### 8.1 外协管理 + +适用页面: +- `ProductionManagement/OutsourceMange` +- `ProductionManagement/SaleOutsourceMange` + +用途: +- 管理外协任务。 +- 生成 SAP 采购申请。 +- 跟踪外协交付。 + +操作步骤: + +1. 查询外协任务。 +2. 选择需要外协的任务。 +3. 填写供应商、交期、说明等信息。 +4. 提交外协或生成采购申请。 +5. 查看 SAP 返回结果。 +6. 后续在外协收货或序检收检中录入检验结果。 + +### 8.2 外协任务报表 + +适用页面: +- `ProductionManagement/OutsourceSheet` + +用途: +- 查看外协任务状态。 +- 查询采购到货期说明。 +- 追溯供应商、采购收货单和质检结果。 + +### 8.3 外协检验 + +适用页面: +- `QualityManagement/CheckTask/processReceive` + +用途: +- 对外协任务进行收检。 +- 保存指派对象、供应商、SAP 采购收货单号、检验结果。 + +注意: +- 供应商合格率依赖供应商字段准确。 +- SAP 采购收货单号用于单据追溯。 + +## 九、质检管理 + +### 9.1 质检中心 + +适用页面: +- `QualityManagement/QualityCenter` + +用途: +- 处理机加、装配、采购、外协等来源的质检任务。 +- 录入检验结果。 +- 发起不合格处理、让步接收、返工等。 + +操作步骤: + +1. 进入质检中心。 +2. 按订单、物料、检验类型、状态查询。 +3. 选择待检任务。 +4. 查看工序、数量、图纸和检验要求。 +5. 录入检验数量、合格数量、不合格数量和检测项。 +6. 保存检验结果。 +7. 如不合格,进入不合格处理流程。 + +### 9.2 采购入库检 + +适用页面: +- `QualityManagement/CheckTask/purchaseIncoming` + +用途: +- 对采购到货物料进行入库检验。 + +操作步骤: + +1. 查询采购入库检任务。 +2. 查看供应商、物料、数量。 +3. 录入检验结果。 +4. 保存。 + +### 9.3 序检收检 + +适用页面: +- `QualityManagement/CheckTask/processReceive` + +用途: +- 处理工序之间的收检。 +- 外协收检也会使用该链路。 + +操作注意: +- 如为外协任务,应确认指派对象、供应商和 SAP 采购收货单号。 +- 检验结果会影响后续工序是否可执行。 + +### 9.4 终检、首检、特殊检验 + +适用页面: +- `QualityManagement/CheckTask/final` +- `QualityManagement/CheckTask/firstSpecial` +- `QualityManagement/CheckTask/processSpecial` +- `QualityManagement/CheckTask/OtherInbound` +- `QualityManagement/CheckTask/materialReturn` +- `QualityManagement/CheckTask/salesReturn` + +通用操作: + +1. 查询待检任务。 +2. 选择任务。 +3. 录入检验数量和检验结果。 +4. 保存。 +5. 如需退库、入库或出库,按页面提示生成库存任务。 + +### 9.5 不合格品处理 + +适用页面: +- `QualityManagement/Unqualified` + +用途: +- 对不合格记录进行处理。 + +处置方式: +- 返工 +- 报废 +- 让步接收 +- 复检 +- 其他处置 + +操作步骤: + +1. 查询不合格记录。 +2. 打开处置详情。 +3. 选择处置方式。 +4. 填写原因、责任、说明。 +5. 保存处置结果。 + +注意: +- 让步接收记录查询页只用于查询,让步接收应在质检或不合格处置中维护。 + +### 9.6 质量标准查询 + +适用页面: +- `QualityManagement/QualityStandardQuery` + +用途: +- 查询质量检验标准。 +- 查看检测项目、标准值、上下限。 + +## 十、工时与报表 + +### 10.1 工时报表 + +适用页面: +- `ProductionManagement/Timesheet` +- `ProductionManagement/Workhours` +- `ProductionManagement/WorkhoursEdit` + +用途: +- 查询作业者工时。 +- 查询任务工时。 +- 查看设备、日期、任务维度明细。 + +使用方式: + +1. 输入日期、人员、设备、生产订单等条件。 +2. 点击查询。 +3. 查看工时明细和汇总。 +4. 如支持导出,点击导出。 + +注意: +- 人工报工工时、设备工时、程序工时不是同一口径。 +- 总工时应确认是否包含质检、装配、设计、编程或异常工时。 + +### 10.2 工时校验与 SAP 提交 + +适用页面: +- `ProductionManagement/WorkHoursCheck` + +用途: +- 校验工时。 +- 向 SAP 提交工时、投料或更新生产订单工序资源。 + +操作步骤: + +1. 查询待校验工时。 +2. 查看 MES 报工记录。 +3. 获取 SAP 生产订单工序和资源。 +4. 检查工时、工序、资源是否匹配。 +5. 点击提交。 +6. 查看 SAP 返回结果。 + +注意: +- SAP 提交失败时,应查看失败原因,不要重复提交。 +- 部分成功时,应区分成功项和失败项。 +- 工时差异需要说明人工工时、设备工时、SAP 工时之间的关系。 + +### 10.3 机加班次产量 + +如新增 `机加班次产量表`: + +1. 选择日期、班次、设备、操作人。 +2. 查询每台设备每班次任务明细。 +3. 查看数量、工时、小计和合计。 + +说明: +- 该页面只查询,不维护班次。 +- 班次规则应在班次管理维护。 + +### 10.4 工时异常报表 + +如新增 `工时异常报表`: + +1. 选择日期、设备、工位、物料、工序、超出比例。 +2. 查询单件实际工时大于标准工时的任务。 +3. 查看标准单件工时、实际单件工时、超出时长、超出比例。 +4. 如页面支持确认,填写异常原因和处理说明。 + +## 十一、异常管控 + +### 11.1 异常管控页面 + +适用页面: +- `ProductionManagement/AbnormalControl` + +用途: +- 查询异常。 +- 提交、处理、关闭异常。 +- 跟踪异常责任人和处理状态。 + +操作步骤: + +1. 进入异常管控页面。 +2. 按订单、异常类型、状态、责任人查询。 +3. 查看异常明细。 +4. 处理异常。 +5. 填写处理说明并关闭。 + +### 11.2 报工页面直接报异常 + +如功能上线,机加、装配、质检、外协、设计、编程报工页面可直接报异常: + +1. 在业务页面选中任务。 +2. 点击 `报异常`。 +3. 系统自动带出订单、任务、工序、人员等信息。 +4. 填写异常类型、说明、附件。 +5. 选择审批人,可多选。 +6. 提交。 + +规则: +- 多审批人表示多人可见,不是会签。 +- 任一审批人处理后,应记录实际处理人。 + +## 十二、设备管理与采集 + +### 12.1 设备实时数据 + +适用页面: +- `DeviceManagement/DeviceRealData` +- `DeviceManagement/Devicedata` + +用途: +- 查看设备当前状态。 +- 查看设备统计数据,如开机、停机、报警、程序时长。 + +使用方式: + +1. 选择设备或工位。 +2. 选择时间范围。 +3. 查询设备状态和统计结果。 +4. 查看设备状态明细。 + +### 12.2 设备历史数据 + +适用页面: +- `DeviceManagement/DeviceDataHistory` + +用途: +- 查询设备历史状态和采集数据。 + +注意: +- 设备当前状态不能直接替代历史状态。 +- 计算 OEE 和设备工时时需要时间段数据。 + +### 12.3 OEE 和设备指标 + +相关看板: +- 机加设备生产运营看板 +- `board_view` + +指标说明: + +| 指标 | 含义 | +---|---| +| 产能利用率 | 实际产量 / 计划产量 | +| 设备利用率 | 设备运行工时 / 标准工时 | +| 性能开动率 | 标准单件工时 / 实际单件工时 | +| 产品合格率 | 良品数 / 总产量 | +| OEE | 设备利用率 * 性能开动率 * 合格率 | + +注意: +- OEE 必须基于同设备、同班次、同日期口径。 +- 当前若看板仍为样例数据,不应作为正式绩效依据。 + +## 十三、看板使用 + +### 13.1 生产任务看板 + +用途: +- 查看按期齐套率、待排产任务、待处理销售订单、工艺 BOM 待完成、采购未及时到货、机加未及时开工、质检及时率、未及时入库、加急件。 + +使用方式: +- 现场或管理层直接查看大屏。 +- 点击或查看滚动明细,定位异常任务。 + +注意: +- 齐套、发料、拣配、发货、加急等状态来自不同业务链路。 +- 如果新增部分齐套、预计齐套时间、手续确认等状态,看板口径需要同步更新。 + +### 13.2 装配任务看板 + +用途: +- 查看装配任务、发货状态、在制缺件、已完任务、异常未关闭、缺勤人员。 + +注意: +- 缺勤人员不能使用静态样例,应来自排班和实到记录。 +- 及时送检任务如上线,应按发料齐套后超期规则展示。 + +### 13.3 质检任务看板 + +用途: +- 查看未清任务、加急任务、质检及时率、关键工序、当天完成。 + +注意: +- 关键工序来自工艺维护和任务快照。 +- 及时率应有明确起算时间,例如最后一次生产完成时间。 + +### 13.4 机加设备生产运营看板 + +用途: +- 查看设备状态、在制任务、关键工序任务、缺勤人员、设备指标。 + +注意: +- 设备状态、报工状态、质检状态不应互相替代。 +- OEE 上线前需确认设备采集和标准工时口径。 + +### 13.5 综合项目看板 + +适用项目: +- `board_view` + +用途: +- 查看合同、项目、计划、生产、装配、质量、设备等综合进度。 + +注意: +- 若采购、库存、OEE 等字段仍为占位数据,应先接入真实数据后再作为经营口径。 + +## 十四、销售与交付查询 + +### 14.1 销售订单状态 + +适用页面: +- `SaleManagement/saleorderstatus` + +用途: +- 查询销售订单状态。 +- 查看生产工艺、排产、生产、装配、发货相关状态。 + +### 14.2 发货通知列表 + +如新增该页面: + +1. 输入发货通知号、合同号、客户、状态、要求发货日期。 +2. 点击查询。 +3. 查看 SAP 发货通知明细。 +4. 查看关联生产订单。 + +注意: +- 默认只读 SAP 或 SAP 同步数据。 +- 如需 MES 备注,应单独保存备注,不覆盖 SAP 字段。 + +## 十五、新增需求相关页面使用 + +### 15.1 设计任务报工 + +用途: +- 创建设计任务。 +- 开始和结束设计报工。 +- 统计设计工时。 + +操作步骤: + +1. 新增设计任务。 +2. 分配设计人员。 +3. 设计人员点击开始报工。 +4. 完成后点击结束报工,填写工作内容和说明。 +5. 查询设计工时记录。 + +### 15.2 编程任务清单/编程报工 + +用途: +- 管理编程任务。 +- 记录程序号、编程人员、开始时间、结束时间和工时。 + +操作步骤: + +1. 查询或新增编程任务。 +2. 点击开始编程。 +3. 结束时填写程序内容、说明和程序号。 +4. 查看编程工时。 + +### 15.3 手续确认报表 + +用途: +- 对发料齐套后的装配、电气任务进行手续确认。 + +操作步骤: + +1. 查询待确认任务。 +2. 查看发料齐套时间、装配完成时间、当前状态。 +3. 点击确认完成。 +4. 填写确认备注。 +5. 保存后该任务从待确认列表消失。 + +### 15.4 及时检验报表 + +用途: +- 查询报工完成超过 2 天仍未检验的任务。 + +操作步骤: + +1. 输入日期、订单、物料、工序等条件。 +2. 查询超期未检任务。 +3. 查看报工数量、已检数量、未检数量和超期天数。 +4. 通知质检人员处理。 + +### 15.5 及时齐套跟踪结果报表 + +用途: +- 跟踪主订单齐套状态。 +- 展开 SAP 缺件明细。 +- 维护预计可执行时间。 + +操作步骤: + +1. 输入主生产订单、合同号、物料等条件。 +2. 查询齐套跟踪结果。 +3. 展开主订单查看缺件明细。 +4. 如需维护预计可执行时间,点击编辑并保存说明。 + +### 15.6 装配已排产需求 + +用途: +- 查看装配交付进度。 +- 整合 SAP 派工时间、合同交货期、发料齐套、装配完成、工时、异常。 + +操作步骤: + +1. 按合同、订单、系统分类、日期查询。 +2. 查看发料齐套时间和装配完成时间。 +3. 查看累计工时、当前人员、异常数。 +4. 维护允许手工维护的字段,例如备注、钣金/泵到达信息。 +5. 查看工时、异常、缺件明细。 + +### 15.7 质检任务早知道 + +用途: +- 预测即将进入质检的装配任务。 + +操作步骤: + +1. 按预计装配完成时间查询。 +2. 查看即将需要质检的任务。 +3. 提前安排质检资源。 + +## 十六、系统维护 + +### 16.1 菜单管理 + +适用页面: +- `SystemMaintenance/MenuManagement` + +用途: +- 维护菜单名称、路径、组件地址、排序和图标。 + +注意: +- 新增页面必须同步菜单记录。 +- 菜单路径和组件地址错误会导致页面打不开。 + +### 16.2 操作日志 + +适用页面: +- `SystemMaintenance/OperationLog` + +用途: +- 查询用户操作记录。 +- 追溯新增、修改、删除、同步等关键动作。 + +### 16.3 权限检查 + +如用户看不到页面或按钮,按以下顺序检查: + +1. 用户是否启用。 +2. 用户是否分配角色。 +3. 角色是否分配菜单。 +4. 页面是否配置到二级菜单。 +5. 前端组件路径是否正确。 + +## 十七、常见业务问题与处理 + +| 问题 | 可能原因 | 处理方式 | +|---|---|---| +| 任务无法开工 | 未收料、未齐套、上序未合格、异常未关闭、工艺未下发 | 查看任务状态和不可操作原因 | +| 排产后 SAP 未更新 | SAP 接口失败或同步字段异常 | 查看页面提示和 SAP 同步日志 | +| 工时和 SAP 不一致 | MES 人工工时、设备工时、SAP 工时口径不同 | 在工时校验页面查看差异 | +| 看板数据和页面不一致 | 看板读取缓存或不同统计口径 | 检查看板过程、同步时间、统计日期 | +| 缺勤人员不准 | 排班或实到来源不明确 | 检查班次、人员绑定、考勤/上岗记录 | +| 关键工序统计不准 | 工艺未维护关键工序或任务未快照 | 检查标准工艺、生产工艺和任务数据 | +| 让步接收查不到 | 质检记录未填写让步接收字段 | 回到质检或不合格处置页面检查 | +| 外协供应商合格率不准 | 检验记录缺供应商字段 | 检查序检收检/外协收货记录 | + +## 十八、名词解释 + +| 名词 | 说明 | +|---|---| +| 标准工艺 | 按物料维护的默认工艺路线 | +| 生产工艺 | 按生产订单生成或编辑的实际工艺 | +| 指派对象 | 工序或任务分配给的工位、人员、外协或装配对象 | +| 齐套 | 所需物料是否满足开工或装配条件 | +| 发料齐套时间 | 发料满足齐套条件的时间 | +| 报工 | 操作人员提交加工数量、时间、工时等生产记录 | +| 工时校验 | 校验 MES 工时并准备提交 SAP | +| 关键工序 | 对质量、进度或交付关键的工序,应在工艺中维护 | +| 让步接收 | 不合格或偏差品经审批允许接收 | +| OEE | 设备综合效率,由利用率、性能开动率、合格率组成 | +| 缺勤 | 应到人员无实到记录 | + +## 十九、操作安全要求 + +1. 不确认的数据不要保存。 +2. 不要重复点击 SAP 提交、采购申请、关闭订单等按钮。 +3. 批量操作前必须确认选择范围。 +4. 已入库、已关闭、已完成的任务一般不应再修改关键业务字段。 +5. 修改工艺、标准工时、关键工序时,要确认是否影响历史任务。 +6. 看板异常数、齐套数、未检数只作为提醒,处理业务仍需回到对应业务页面。 + +## 二十、建议培训顺序 + +1. 登录、菜单、通用查询和表格操作。 +2. 基础资料:人员、工位、设备、工序。 +3. 工艺:标准工艺、生产工艺、工艺查询。 +4. 计划:机加排产、装配排产、订单关闭。 +5. 执行:机加中心、装配中心、外协管理。 +6. 质检:质检中心、序检收检、不合格处理。 +7. 工时:工时报表、工时校验、SAP 提交。 +8. 异常:报异常、处理异常、关闭异常。 +9. 看板:生产、装配、质检、机加、综合大屏。 +10. 新增需求页面:手续确认、及时检验、装配已排产需求、齐套跟踪等。 + +## 二十一、逐页详细操作说明 +本章按源码页面逐页编写。每个页面都从实际 `v-model`、表格列、按钮、弹窗、页签、存储过程和 SAP/WMS 调用中提取操作线索,转换成用户可执行的步骤。 + +通用阅读方法: +- `查询条件/输入项` 是用户进入页面后可以填写、选择或用于筛选的字段。 +- `结果表重点列` 是查询后需要核对的表格列,表格可横向滚动时应继续向右查看。 +- `页面按钮/状态/页签` 是页面上能触发查询、查看、编辑、提交、导出、状态切换或页面切换的入口。 +- `后台处理/外部接口` 用于说明保存后可能调用的存储过程、SAP 或 WMS 接口,业务人员主要关注成功/失败提示。 +- 涉及排产、报工、质检、外协、SAP/WMS 的操作,提交前必须核对订单、物料、数量、人员、工位和日期。 + +## 21-1 错误页 + +### 21.1 404 页面 + +页面路径:`src/views/404.vue` +所属模块:错误页 +建议使用人员:系统管理员/相关用户 + +页面用途:该页面用于路由不存在或无效地址访问时展示 404 提示,帮助用户返回首页或重新选择菜单。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +## 21-2 异常管理 + +### 21.2 及时开工异常 + +页面路径:`src/views/AnomalousManagement/PunctualWork/index.vue` +所属模块:异常管理 +建议使用人员:班组长/生产主管/计划员 + +页面用途:该页面用于查看未及时开工、待执行、可执行、已开工和已完成任务,帮助班组长或计划员催办生产开工。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单号`、`零件编号`、`计划开工_Start`、`计划开工_End`、`生产状态`、`工位名称`、`用户ID`、`计划号`、`销售订单`、`TaskAID`、`orderNo2`、`productCode2`。 +3. 如果仍查不到数据,继续补充条件:`plannum`、`salenum`、`completion时间`、`productionStatus2`、`Doing`、`任务ID`、`生产订单`、`零件编码`、`时间`、`开始时间`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`指派对象`、`生产订单`、`销售订单`、`物料名称`、`物料编码`、`顺序`、`工序名称`、`分配数`、`上序合格数`、`加工状态`、`收料状态`、`加急数量`。 +6. 继续横向滚动或展开表格,核对:`下序名称`、`加急`、`优先`、`首检`、`序检`、`内码`、`完成数`、`任务状态`、`计划号`、`计划开始`、`计划完成`、`开工时间`、`备注`、`收料数`。 +7. 保存或提交成功后重新点击查询,确认页面数据已通过 `异常提醒_及时开工_查询`、`MES_登录_工位与名称_查询`、`Prog_MES_LoadProcess`、`查询字典` 等后台过程更新。 + +**查询条件/输入项** +- `订单号` +- `零件编号` +- `计划开工_Start` +- `计划开工_End` +- `生产状态` +- `工位名称` +- `用户ID` +- `计划号` +- `销售订单` +- `TaskAID` +- `orderNo2` +- `productCode2` +- `plannum` +- `salenum` +- `completion时间` +- `productionStatus2` +- `Doing` +- `任务ID` +- `生产订单` +- `零件编码` +- `时间` +- `开始时间` + +**结果表重点列** +- `指派对象` +- `生产订单` +- `销售订单` +- `物料名称` +- `物料编码` +- `顺序` +- `工序名称` +- `分配数` +- `上序合格数` +- `加工状态` +- `收料状态` +- `加急数量` +- `下序名称` +- `加急` +- `优先` +- `首检` +- `序检` +- `内码` +- `完成数` +- `任务状态` +- `计划号` +- `计划开始` +- `计划完成` +- `开工时间` +- `备注` +- `收料数` + +**页面按钮/状态/页签** +- `查询` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:异常提醒_及时开工_查询` +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:Prog_MES_LoadProcess` +- `存储过程:查询字典` + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +## 21-3 产品结构维护 + +### 21.3 产品结构维护 + +页面路径:`src/views/CraftManagement/CraftMaintain/index.vue` +所属模块:产品结构维护 +建议使用人员:工艺员/技术人员 + +页面用途:该页面用于维护产品结构树,支持新增、编辑、删除产品结构节点,为工艺、BOM 和生产任务提供层级基础资料。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`父节点`、`节点名称`、`节点类型`、`子节点`、`PartType`。 +3. 点击页面上的查询或刷新类按钮获取最新数据;如果页面自动加载,则先核对默认列表是否符合当前业务范围。 +4. 如果页面左侧或上方有树形结构,先选中组织、物料、菜单或产品节点,再查看右侧列表;新增子节点前确认父节点选中正确。 +5. 需要新增时点击 `新增`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +6. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +7. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除`,按确认提示执行。 +8. 按业务需要点击 `展开`,操作前先确认选中行和输入内容。 +9. 保存或提交成功后重新点击查询,确认页面数据已通过 `WEB_基本表_产品结构_新增`、`WEB_基本表_产品结构_查询`、`WEB_基本表_产品结构_删除`、`WEB_基本表_产品结构_修改`、`产品关系_变更节点排序` 等后台过程更新。 + +**查询条件/输入项** +- `父节点` +- `节点名称` +- `节点类型` +- `子节点` +- `PartType` + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- `新增` +- `编辑` +- `删除` +- `展开` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:WEB_基本表_产品结构_新增` +- `存储过程:WEB_基本表_产品结构_查询` +- `存储过程:WEB_基本表_产品结构_删除` +- `存储过程:WEB_基本表_产品结构_修改` +- `存储过程:产品关系_变更节点排序` + +**操作注意事项** +- 工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。 + +## 21-4 设备管理 + +### 21.4 设备采集数据 + +页面路径:`src/views/DeviceManagement/Devicedata/index.vue` +所属模块:设备管理 +建议使用人员:设备管理员/生产主管 + +页面用途:该页面用于查看设备实时数据或采集缓存数据,判断设备当前运行、报警和参数状态。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`PageCurrent`、`PageSize`、`PageCount`、`ItemCount`、`设备名称`、`参数名称`、`equipmentType`、`dataname`、`设备`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`设备名称`、`参数名称`、`设备编号`、`数值`、`单位`、`更新时间`。 +6. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_登录_工位与名称_查询`、`设备管理_设备数据查询` 等后台过程更新。 + +**查询条件/输入项** +- `PageCurrent` +- `PageSize` +- `PageCount` +- `ItemCount` +- `设备名称` +- `参数名称` +- `equipmentType` +- `dataname` +- `设备` + +**结果表重点列** +- `设备名称` +- `参数名称` +- `设备编号` +- `数值` +- `单位` +- `更新时间` + +**页面按钮/状态/页签** +- `查询` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:设备管理_设备数据查询` + +**操作注意事项** +- 设备和采集数据用于看板、OEE 和报工分析,发现异常时应先确认设备编码和采集点位。 + +### 21.5 设备历史数据 + +页面路径:`src/views/DeviceManagement/DeviceDataHistory/index.vue` +所属模块:设备管理 +建议使用人员:设备管理员/生产主管 + +页面用途:该页面用于查询设备历史采集数据,按工位、设备、参数和时间追溯设备运行记录。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`PageCurrent`、`PageSize`、`PageCount`、`ItemCount`、`开始时间`、`结束时间`、`设备名称`、`参数名称`、`completion时间`、`equipmentType`、`dataname`、`日期`。 +3. 如果仍查不到数据,继续补充条件:`开始日期`、`设备`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`设备名称`、`参数名称`、`设备编号`、`数值`、`单位`、`采集时间`。 +7. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_登录_工位与名称_查询`、`设备管理_设备数据_历史查询` 等后台过程更新。 + +**查询条件/输入项** +- `PageCurrent` +- `PageSize` +- `PageCount` +- `ItemCount` +- `开始时间` +- `结束时间` +- `设备名称` +- `参数名称` +- `completion时间` +- `equipmentType` +- `dataname` +- `日期` +- `开始日期` +- `设备` + +**结果表重点列** +- `设备名称` +- `参数名称` +- `设备编号` +- `数值` +- `单位` +- `采集时间` + +**页面按钮/状态/页签** +- `查询` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:设备管理_设备数据_历史查询` + +**操作注意事项** +- 设备和采集数据用于看板、OEE 和报工分析,发现异常时应先确认设备编码和采集点位。 + +### 21.6 设备信息维护 + +页面路径:`src/views/DeviceManagement/DeviceInformation/index.vue` +所属模块:设备管理 +建议使用人员:设备管理员/生产主管 + +页面用途:该页面用于维护设备台账、设备属性、维修/工时/点检相关信息。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`equipmentName`、`equipmentType`、`opName`、`设备名称`、`设备型号`、`设备类型`、`加工工艺`、`工位号`、`工时单价`、`月设备加工能力`、`点检类型`、`工位`。 +3. 如果仍查不到数据,继续补充条件:`选择点检类型`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`设备名称`、`设备型号`、`设备类型`、`加工工艺`、`工位`、`工时单价(元/小时)`、`月设备加工能力`、`点检类型名称`、`操作`。 +7. 按业务需要点击 `设备`,操作前先确认选中行和输入内容。 +8. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +9. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +10. 出现弹窗时按弹窗标题处理:`title`;弹窗关闭前确认必填项已保存。 +11. 弹窗或表单内重点填写:`设备名称`、`设备型号`、`设备类型`、`加工工艺`、`工位号`、`工时单价`、`月设备加工能力`、`点检类型`,提交前逐项核对。 +12. 保存或提交成功后重新点击查询,确认页面数据已通过 `点检类型_查询`、`工艺名称_查询`、`查询字典`、`设备管理_设备信息_查询`、`设备管理_设备信息_验证工位号是否重复` 等后台过程更新。 + +**查询条件/输入项** +- `equipmentName` +- `equipmentType` +- `opName` +- `设备名称` +- `设备型号` +- `设备类型` +- `加工工艺` +- `工位号` +- `工时单价` +- `月设备加工能力` +- `点检类型` +- `工位` +- `选择点检类型` + +**结果表重点列** +- `设备名称` +- `设备型号` +- `设备类型` +- `加工工艺` +- `工位` +- `工时单价(元/小时)` +- `月设备加工能力` +- `点检类型名称` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `设备` +- `取消` +- `确定` + +**弹窗/表单重点项** +- `title` +- `设备名称` +- `设备型号` +- `设备类型` +- `加工工艺` +- `工位号` +- `工时单价` +- `月设备加工能力` +- `点检类型` + +**后台处理/外部接口** +- `存储过程:点检类型_查询` +- `存储过程:工艺名称_查询` +- `存储过程:查询字典` +- `存储过程:设备管理_设备信息_查询` +- `存储过程:设备管理_设备信息_验证工位号是否重复` +- `存储过程:设备管理_设备信息_增加` +- `存储过程:设备管理_设备信息_编辑` +- `存储过程:设备管理_设备信息_删除` + +**操作注意事项** +- 设备和采集数据用于看板、OEE 和报工分析,发现异常时应先确认设备编码和采集点位。 + +### 21.7 设备实时数据 + +页面路径:`src/views/DeviceManagement/DeviceRealData/index.vue` +所属模块:设备管理 +建议使用人员:设备管理员/生产主管 + +页面用途:该页面用于查看设备实时数据或采集缓存数据,判断设备当前运行、报警和参数状态。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`PageCurrent`、`PageSize`、`PageCount`、`ItemCount`、`开始时间`、`结束时间`、`设备名称`、`参数名称`、`数据类型`、`completion时间`、`equipmentType`、`日期`。 +3. 如果仍查不到数据,继续补充条件:`开始日期`、`设备`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`设备名称`、`参数名称`、`参数值`、`操作`、`开始时间`、`结束时间`、`状态`、`时长(m)`、`订单编号`、`加工时长`、`采集时间`。 +7. 保存或提交成功后重新点击查询,确认页面数据已通过 `设备管理_设备数据_工位信息_查询`、`设备管理_设备数据_统计数据查询`、`设备管理_设备数据_统计数据查询_通过类型` 等后台过程更新。 + +**查询条件/输入项** +- `PageCurrent` +- `PageSize` +- `PageCount` +- `ItemCount` +- `开始时间` +- `结束时间` +- `设备名称` +- `参数名称` +- `数据类型` +- `completion时间` +- `equipmentType` +- `日期` +- `开始日期` +- `设备` + +**结果表重点列** +- `设备名称` +- `参数名称` +- `参数值` +- `操作` +- `开始时间` +- `结束时间` +- `状态` +- `时长(m)` +- `订单编号` +- `加工时长` +- `采集时间` + +**页面按钮/状态/页签** +- `查询` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:设备管理_设备数据_工位信息_查询` +- `存储过程:设备管理_设备数据_统计数据查询` +- `存储过程:设备管理_设备数据_统计数据查询_通过类型` + +**操作注意事项** +- 设备和采集数据用于看板、OEE 和报工分析,发现异常时应先确认设备编码和采集点位。 + +## 21-5 计划排产 + +### 21.8 装配排产 + +页面路径:`src/views/PlanManagement/InstallMakePlan/index.vue` +所属模块:计划排产 +建议使用人员:计划员/生产主管 + +页面用途:该页面用于装配件排产,维护装配工位、人员、计划开始/完成、优先级、说明,并在排产完成时同步 SAP 或生成相关请求。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`表单`、`日程`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`性质`、`要求完工日期1`、`要求完工日期2`、`计划开始1`、`计划开始2`、`计划完成1`。 +4. 如果仍查不到数据,继续补充条件:`计划完成2`、`排产状态`、`指派对象`、`订单行号`、`订单拆分内码`、`派工特殊说明`、`指派对象编号`、`指派数量`、`计划开始时间`、`计划完成时间`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +7. 查询后先核对关键列:`selection`、`序号`、`生产订单`、`计划号`、`物料编码`、`物料名称`、`计划数`、`要求完工日期`、`工序名称`、`性质`、`总工时`、`排产时间`。 +8. 继续横向滚动或展开表格,核对:`工序计划数`、`指派对象`、`指派数量`、`销售订单`、`计划开始`、`计划完成`、`最晚开始`、`派工`、`二次派工`、`排产`、`派工状态`、`优先级`、`未完成说明`、`派工特殊备注`。 +9. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `批量排产` 提交。 +10. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `排产完成` 提交。 +11. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +12. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `派工` 提交。 +13. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `计划排产` 提交。 +14. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +15. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +16. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `派工` 提交。 +17. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +18. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +19. 出现弹窗时按弹窗标题处理:`编辑备注信息`;弹窗关闭前确认必填项已保存。 +20. 弹窗或表单内重点填写:`优先级`、`未完成说明`、`派工特殊备注`,提交前逐项核对。 +21. 进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。 +22. 日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。 +23. 保存或提交成功后重新点击查询,确认页面数据已通过 `计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Queryzp`、`Prog_MES_LoadStations`、`系统管理_人员管理_所有有效人员查询` 等后台过程更新。 +24. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 + +**查询条件/输入项** +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `性质` +- `要求完工日期1` +- `要求完工日期2` +- `计划开始1` +- `计划开始2` +- `计划完成1` +- `计划完成2` +- `排产状态` +- `指派对象` +- `订单行号` +- `订单拆分内码` +- `派工特殊说明` +- `指派对象编号` +- `指派数量` +- `计划开始时间` +- `计划完成时间` + +**结果表重点列** +- `selection` +- `序号` +- `生产订单` +- `计划号` +- `物料编码` +- `物料名称` +- `计划数` +- `要求完工日期` +- `工序名称` +- `性质` +- `总工时` +- `排产时间` +- `工序计划数` +- `指派对象` +- `指派数量` +- `销售订单` +- `计划开始` +- `计划完成` +- `最晚开始` +- `派工` +- `二次派工` +- `排产` +- `派工状态` +- `优先级` +- `未完成说明` +- `派工特殊备注` +- `编辑` +- `占用情况` +- `最后编辑人` +- `最后编辑时间` + +**页面按钮/状态/页签** +- `查询` +- `批量排产` +- `排产完成` +- `确定` +- `派工` +- `计划排产` +- `编辑` +- `取 消` +- `确 定` +- `表单` +- `日程` + +**弹窗/表单重点项** +- `编辑备注信息` +- `优先级` +- `未完成说明` +- `派工特殊备注` + +**后台处理/外部接口** +- `存储过程:计划排产_生产订单_已排产订单查询` +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:MES_OrderPlanned_Queryzp` +- `存储过程:Prog_MES_LoadStations` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:MES_OrderPlanned_EditTaskPlanned` +- `存储过程:计划排产_二次派工` +- `存储过程:计划排产_派工` +- `存储过程:MES_OrderPlanned_SingleTaskPlanned` +- `存储过程:MES_OrderPlanned_Finish` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:计划排产_自制件_日程时间修改` +- `接口:postB1 /PurchaseRequests` +- `接口:patchB1 /ProductionOrders(` + +**操作注意事项** +- 排产、派工和计划时间会影响生产看板、及时开工统计和 SAP 生产订单日期,提交前必须核对。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 +- 日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。 + +### 21.9 装配已排产 + +页面路径:`src/views/PlanManagement/InstallMakePlanDo/index.vue` +所属模块:计划排产 +建议使用人员:计划员/生产主管 + +页面用途:该页面用于装配件排产,维护装配工位、人员、计划开始/完成、优先级、说明,并在排产完成时同步 SAP 或生成相关请求。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`表单`、`日程`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`性质`、`要求完工日期1`、`要求完工日期2`、`计划开始1`、`计划开始2`、`计划完成1`。 +4. 如果仍查不到数据,继续补充条件:`计划完成2`、`排产状态`、`指派对象`、`订单行号`、`订单拆分内码`、`派工特殊说明`、`指派对象编号`、`指派数量`、`计划开始时间`、`计划完成时间`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +7. 查询后先核对关键列:`selection`、`序号`、`生产订单`、`计划号`、`物料编码`、`物料名称`、`计划数`、`要求完工日期`、`工序名称`、`性质`、`总工时`、`排产时间`。 +8. 继续横向滚动或展开表格,核对:`工序计划数`、`指派对象`、`指派数量`、`销售订单`、`计划开始`、`计划完成`、`最晚开始`、`派工`、`二次派工`、`排产`、`派工状态`、`优先级`、`未完成说明`、`派工特殊备注`。 +9. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `批量排产` 提交。 +10. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `排产完成` 提交。 +11. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +12. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `派工` 提交。 +13. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `计划排产` 提交。 +14. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +15. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +16. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `派工` 提交。 +17. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +18. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +19. 出现弹窗时按弹窗标题处理:`编辑备注信息`;弹窗关闭前确认必填项已保存。 +20. 弹窗或表单内重点填写:`优先级`、`未完成说明`、`派工特殊备注`,提交前逐项核对。 +21. 进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。 +22. 日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。 +23. 保存或提交成功后重新点击查询,确认页面数据已通过 `计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Queryzp`、`Prog_MES_LoadStations`、`系统管理_人员管理_所有有效人员查询` 等后台过程更新。 +24. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 + +**查询条件/输入项** +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `性质` +- `要求完工日期1` +- `要求完工日期2` +- `计划开始1` +- `计划开始2` +- `计划完成1` +- `计划完成2` +- `排产状态` +- `指派对象` +- `订单行号` +- `订单拆分内码` +- `派工特殊说明` +- `指派对象编号` +- `指派数量` +- `计划开始时间` +- `计划完成时间` + +**结果表重点列** +- `selection` +- `序号` +- `生产订单` +- `计划号` +- `物料编码` +- `物料名称` +- `计划数` +- `要求完工日期` +- `工序名称` +- `性质` +- `总工时` +- `排产时间` +- `工序计划数` +- `指派对象` +- `指派数量` +- `销售订单` +- `计划开始` +- `计划完成` +- `最晚开始` +- `派工` +- `二次派工` +- `排产` +- `派工状态` +- `优先级` +- `未完成说明` +- `派工特殊备注` +- `编辑` +- `占用情况` +- `最后编辑人` +- `最后编辑时间` + +**页面按钮/状态/页签** +- `查询` +- `批量排产` +- `排产完成` +- `确定` +- `派工` +- `计划排产` +- `编辑` +- `取 消` +- `确 定` +- `表单` +- `日程` + +**弹窗/表单重点项** +- `编辑备注信息` +- `优先级` +- `未完成说明` +- `派工特殊备注` + +**后台处理/外部接口** +- `存储过程:计划排产_生产订单_已排产订单查询` +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:MES_OrderPlanned_Queryzp` +- `存储过程:Prog_MES_LoadStations` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:MES_OrderPlanned_EditTaskPlanned` +- `存储过程:计划排产_二次派工` +- `存储过程:计划排产_派工` +- `存储过程:MES_OrderPlanned_SingleTaskPlanned` +- `存储过程:MES_OrderPlanned_Finish` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:计划排产_自制件_日程时间修改` +- `接口:postB1 /PurchaseRequests` +- `接口:patchB1 /ProductionOrders(` + +**操作注意事项** +- 排产、派工和计划时间会影响生产看板、及时开工统计和 SAP 生产订单日期,提交前必须核对。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 +- 日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。 + +### 21.10 生产订单关闭 + +页面路径:`src/views/PlanManagement/PlannOrderClose/index.vue` +所属模块:计划排产 +建议使用人员:计划员/生产主管 + +页面用途:该页面用于关闭生产订单,用户查询待关闭订单后执行 MES/SAP 关闭动作。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单号`、`单据状态`、`属性`、`equipmentName`、`equipmentType`、`orderType`、`opName`、`订单编号`、`工位`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`订单编号`、`合同号`、`产品编码`、`产品名称`、`计划数量`、`入库数量`、`终检不合格`、`终检合格`、`收检合格`、`收检不合格`、`操作`。 +6. 按业务需要点击 `确认`,操作前先确认选中行和输入内容。 +7. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +8. 保存或提交成功后重新点击查询,确认页面数据已通过 `计划排产_生产订单关闭_查询全部订单`、`计划排产_生产订单关闭_关闭订单`、`计划排产_生产订单关闭_确认订单` 等后台过程更新。 +9. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 + +**查询条件/输入项** +- `订单号` +- `单据状态` +- `属性` +- `equipmentName` +- `equipmentType` +- `orderType` +- `opName` +- `订单编号` +- `工位` + +**结果表重点列** +- `订单编号` +- `合同号` +- `产品编码` +- `产品名称` +- `计划数量` +- `入库数量` +- `终检不合格` +- `终检合格` +- `收检合格` +- `收检不合格` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `确认` +- `关闭` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:计划排产_生产订单关闭_查询全部订单` +- `存储过程:计划排产_生产订单关闭_关闭订单` +- `存储过程:计划排产_生产订单关闭_确认订单` +- `接口:patchB1 /ProductionOrders(` + +**操作注意事项** +- 排产、派工和计划时间会影响生产看板、及时开工统计和 SAP 生产订单日期,提交前必须核对。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.11 计划外壳跟踪 + +页面路径:`src/views/PlanManagement/PlanShell/index.vue` +所属模块:计划排产 +建议使用人员:计划员/生产主管 + +页面用途:该页面用于计划外壳和计划跟踪,集中查看订单计划、齐套、缺料、发货或关闭相关信息。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`ItemCode`、`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`计划开始`、`计划完成`、`排产状态`、`指派对象`、`计划号`。 +3. 如果仍查不到数据,继续补充条件:`发货状态`、`齐套`、`检验状态`、`发料状态`、`自制件属性`、`是否外协`、`订单行号`、`订单拆分内码`、`优先级`、`未完成说明`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`expand`、`序号`、`工序名称`、`计划数量`、`指派对象`、`开始时间`、`结束时间`、`完成进度`、`完成数量`、`合格数`、`不良数`、`任务状态`。 +6. 继续横向滚动或展开表格,核对:`加工状态`、`操作`、`发货通知`、`销售订单`、`计划号`、`生产订单`、`产品名称`、`产品编码`、`入库数量`、`要求完工日`、`要求发货日`、`预计齐套时间`、`外协`、`齐套`。 +7. 按业务需要点击 `缺料`,操作前先确认选中行和输入内容。 +8. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +9. 出现弹窗时按弹窗标题处理:`缺料单`;弹窗关闭前确认必填项已保存。 +10. 保存或提交成功后重新点击查询,确认页面数据已通过 `生产管理_装配中心_缺料查询`、`计划排产_查询计划信息`、`MES_OrderPlanned_DescriptionEdit`、`Prog_MES_LoadStations` 等后台过程更新。 + +**查询条件/输入项** +- `ItemCode` +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `计划开始` +- `计划完成` +- `排产状态` +- `指派对象` +- `计划号` +- `发货状态` +- `齐套` +- `检验状态` +- `发料状态` +- `自制件属性` +- `是否外协` +- `订单行号` +- `订单拆分内码` +- `优先级` +- `未完成说明` + +**结果表重点列** +- `expand` +- `序号` +- `工序名称` +- `计划数量` +- `指派对象` +- `开始时间` +- `结束时间` +- `完成进度` +- `完成数量` +- `合格数` +- `不良数` +- `任务状态` +- `加工状态` +- `操作` +- `发货通知` +- `销售订单` +- `计划号` +- `生产订单` +- `产品名称` +- `产品编码` +- `入库数量` +- `要求完工日` +- `要求发货日` +- `预计齐套时间` +- `外协` +- `齐套` +- `拣配状态` +- `发料状态` +- `装配开工` +- `送检数量` +- `终检` +- `工艺` +- `排产` +- `优先级` + +**页面按钮/状态/页签** +- `查询` +- `缺料` +- `关闭` + +**弹窗/表单重点项** +- `缺料单` + +**后台处理/外部接口** +- `存储过程:生产管理_装配中心_缺料查询` +- `存储过程:计划排产_查询计划信息` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:Prog_MES_LoadStations` + +**操作注意事项** +- 排产、派工和计划时间会影响生产看板、及时开工统计和 SAP 生产订单日期,提交前必须核对。 + +### 21.12 装配优先级调整 + +页面路径:`src/views/PlanManagement/priorityinstall/index.vue` +所属模块:计划排产 +建议使用人员:计划员/生产主管 + +页面用途:该页面用于装配计划优先级和日程调整,支持表单和日程方式查看重点任务。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`表单`、`日程`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`计划开始1`、`计划开始2`、`排产状态`、`指派对象`、`订单行号`、`订单拆分内码`。 +4. 如果仍查不到数据,继续补充条件:`doneorder编号`、`donecontract编号`、`doneproductCode`、`doneproductName`、`doneprocessName`、`planStart时间`、`生产订单`、`销售订单`、`物料编码`、`物料名称`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +7. 查询后先核对关键列:`selection`、`生产订单`、`计划号`、`物料编码`、`物料名称`、`计划数`、`要求完工日期`、`工时`、`工序名称`、`指派对象`、`指派数量`、`计划开始`。 +8. 继续横向滚动或展开表格,核对:`计划完成`。 +9. 按业务需要点击 `月`,操作前先确认选中行和输入内容。 +10. 按业务需要点击 `周`,操作前先确认选中行和输入内容。 +11. 按业务需要点击 `日`,操作前先确认选中行和输入内容。 +12. 按业务需要点击 `今天`,操作前先确认选中行和输入内容。 +13. 进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。 +14. 日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。 +15. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_OrderPlanned_Queryzp`、`MES_OrderPlanned_EditTaskPlanned` 等后台过程更新。 + +**查询条件/输入项** +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `计划开始1` +- `计划开始2` +- `排产状态` +- `指派对象` +- `订单行号` +- `订单拆分内码` +- `doneorder编号` +- `donecontract编号` +- `doneproductCode` +- `doneproductName` +- `doneprocessName` +- `planStart时间` +- `生产订单` +- `销售订单` +- `物料编码` +- `物料名称` + +**结果表重点列** +- `selection` +- `生产订单` +- `计划号` +- `物料编码` +- `物料名称` +- `计划数` +- `要求完工日期` +- `工时` +- `工序名称` +- `指派对象` +- `指派数量` +- `计划开始` +- `计划完成` + +**页面按钮/状态/页签** +- `查询` +- `月` +- `周` +- `日` +- `今天` +- `表单` +- `日程` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:MES_OrderPlanned_Queryzp` +- `存储过程:MES_OrderPlanned_EditTaskPlanned` + +**操作注意事项** +- 排产、派工和计划时间会影响生产看板、及时开工统计和 SAP 生产订单日期,提交前必须核对。 +- 日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。 + +### 21.13 机加排产 + +页面路径:`src/views/PlanManagement/SelfMakePlan/index.vue` +所属模块:计划排产 +建议使用人员:计划员/生产主管 + +页面用途:该页面用于机加/自制件排产前准备,查询生产订单工序任务并维护计划、工位、数量和说明后确认排产。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`表单`、`日程`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`性质`、`要求完工日期1`、`要求完工日期2`、`计划开始1`、`计划开始2`、`计划完成1`。 +4. 如果仍查不到数据,继续补充条件:`计划完成2`、`排产状态`、`指派对象`、`订单行号`、`订单拆分内码`、`派工特殊说明`、`指派对象编号`、`指派数量`、`计划开始时间`、`计划完成时间`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +7. 查询后先核对关键列:`selection`、`序号`、`生产订单`、`计划号`、`物料编码`、`物料名称`、`计划数`、`要求完工日期`、`工序名称`、`性质`、`总工时`、`排产时间`。 +8. 继续横向滚动或展开表格,核对:`工序计划数`、`指派对象`、`指派数量`、`计划开始`、`计划完成`、`最晚开始`、`派工`、`二次派工`、`排产`、`派工状态`、`优先级`、`未完成说明`、`派工特殊备注`、`编辑`。 +9. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `批量排产` 提交。 +10. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `排产完成` 提交。 +11. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +12. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `派工` 提交。 +13. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `计划排产` 提交。 +14. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +15. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +16. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `派工` 提交。 +17. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +18. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +19. 出现弹窗时按弹窗标题处理:`编辑备注信息`;弹窗关闭前确认必填项已保存。 +20. 弹窗或表单内重点填写:`优先级`、`未完成说明`、`派工特殊备注`,提交前逐项核对。 +21. 进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。 +22. 日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。 +23. 保存或提交成功后重新点击查询,确认页面数据已通过 `计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Query`、`Prog_MES_LoadStations`、`系统管理_人员管理_所有有效人员查询` 等后台过程更新。 +24. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 + +**查询条件/输入项** +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `性质` +- `要求完工日期1` +- `要求完工日期2` +- `计划开始1` +- `计划开始2` +- `计划完成1` +- `计划完成2` +- `排产状态` +- `指派对象` +- `订单行号` +- `订单拆分内码` +- `派工特殊说明` +- `指派对象编号` +- `指派数量` +- `计划开始时间` +- `计划完成时间` + +**结果表重点列** +- `selection` +- `序号` +- `生产订单` +- `计划号` +- `物料编码` +- `物料名称` +- `计划数` +- `要求完工日期` +- `工序名称` +- `性质` +- `总工时` +- `排产时间` +- `工序计划数` +- `指派对象` +- `指派数量` +- `计划开始` +- `计划完成` +- `最晚开始` +- `派工` +- `二次派工` +- `排产` +- `派工状态` +- `优先级` +- `未完成说明` +- `派工特殊备注` +- `编辑` +- `占用情况` +- `销售订单` +- `最后编辑人` +- `最后编辑时间` + +**页面按钮/状态/页签** +- `查询` +- `批量排产` +- `排产完成` +- `确定` +- `派工` +- `计划排产` +- `编辑` +- `取 消` +- `确 定` +- `表单` +- `日程` + +**弹窗/表单重点项** +- `编辑备注信息` +- `优先级` +- `未完成说明` +- `派工特殊备注` + +**后台处理/外部接口** +- `存储过程:计划排产_生产订单_已排产订单查询` +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:MES_OrderPlanned_Query` +- `存储过程:Prog_MES_LoadStations` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:MES_OrderPlanned_EditTaskPlanned` +- `存储过程:计划排产_二次派工` +- `存储过程:计划排产_派工` +- `存储过程:MES_OrderPlanned_SingleTaskPlanned` +- `存储过程:MES_OrderPlanned_Finish` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:计划排产_自制件_日程时间修改` +- `接口:patchB1 /ProductionOrders(` + +**操作注意事项** +- 排产、派工和计划时间会影响生产看板、及时开工统计和 SAP 生产订单日期,提交前必须核对。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 +- 日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。 + +### 21.14 机加待排产 + +页面路径:`src/views/PlanManagement/SelfMakePlando/index.vue` +所属模块:计划排产 +建议使用人员:计划员/生产主管 + +页面用途:该页面用于机加/自制件待排产任务处理,支持表单排产、日程拖拽调整、部分派工、批量排产、二次派工、原料状态和图纸查看。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`表单`、`日程`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`订单编号`、`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`性质`、`要求完工日期1`、`要求完工日期2`、`计划开始1`、`计划开始2`。 +4. 如果仍查不到数据,继续补充条件:`计划完成1`、`计划完成2`、`排产状态`、`指派对象`、`订单行号`、`订单拆分内码`、`派工特殊说明`、`指派对象编号`、`指派数量`、`计划开始时间`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +7. 查询后先核对关键列:`selection`、`序号`、`生产订单`、`计划号`、`物料编码`、`物料名称`、`计划数`、`要求完工日期`、`工时`、`工序名称`、`性质`、`排产时间`。 +8. 继续横向滚动或展开表格,核对:`工序计划数`、`指派对象`、`指派数量`、`计划开始`、`计划完成`、`外协分组`、`原料状态`、`图纸`、`备注`、`未完成说明`、`派工特殊备注`、`编辑`、`二次派工`、`最晚开始`。 +9. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `批量排产` 提交。 +10. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `排产完成` 提交。 +11. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +12. 需要查看明细时点击 `查看`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +13. 需要查看明细时点击 `零件图纸`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +14. 需要查看明细时点击 `工艺图纸`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +15. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +16. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `计划排产` 提交。 +17. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +18. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +19. 出现弹窗时按弹窗标题处理:`编辑备注信息`、`原料信息`、`图纸`;弹窗关闭前确认必填项已保存。 +20. 弹窗或表单内重点填写:`优先级`、`未完成说明`、`派工特殊备注`,提交前逐项核对。 +21. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +22. 进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。 +23. 日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。 +24. 保存或提交成功后重新点击查询,确认页面数据已通过 `工艺管理_图纸维护_查看图纸`、`工艺管理_工艺维护_查看图纸`、`工艺管理_获取物料原料信息`、`计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询` 等后台过程更新。 +25. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +26. 在 `指派数量` 中输入小于计划数的数量时,表示本次只派出部分数量,剩余数量需要继续跟踪和后续派工。 +27. 点击 `批量排产` 前应选择同一生产订单的多道工序,系统会按订单行号排序并继承上一道工序的部分计划信息。 +28. 点击 `排产完成` 后,系统校验指派对象、指派数量、计划开始、计划完成,并同步生产订单最早开始和最晚完成。 + +**查询条件/输入项** +- `订单编号` +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `性质` +- `要求完工日期1` +- `要求完工日期2` +- `计划开始1` +- `计划开始2` +- `计划完成1` +- `计划完成2` +- `排产状态` +- `指派对象` +- `订单行号` +- `订单拆分内码` +- `派工特殊说明` +- `指派对象编号` +- `指派数量` +- `计划开始时间` + +**结果表重点列** +- `selection` +- `序号` +- `生产订单` +- `计划号` +- `物料编码` +- `物料名称` +- `计划数` +- `要求完工日期` +- `工时` +- `工序名称` +- `性质` +- `排产时间` +- `工序计划数` +- `指派对象` +- `指派数量` +- `计划开始` +- `计划完成` +- `外协分组` +- `原料状态` +- `图纸` +- `备注` +- `未完成说明` +- `派工特殊备注` +- `编辑` +- `二次派工` +- `最晚开始` +- `排产` +- `派工状态` +- `优先级` +- `占用情况` +- `销售订单` +- `最后编辑人` +- `最后编辑时间` +- `基本数量` + +**页面按钮/状态/页签** +- `查询` +- `批量排产` +- `排产完成` +- `确定` +- `查看` +- `零件图纸` +- `工艺图纸` +- `编辑` +- `计划排产` +- `取 消` +- `确 定` +- `关闭` +- `表单` +- `日程` + +**弹窗/表单重点项** +- `编辑备注信息` +- `原料信息` +- `图纸` +- `优先级` +- `未完成说明` +- `派工特殊备注` + +**后台处理/外部接口** +- `存储过程:工艺管理_图纸维护_查看图纸` +- `存储过程:工艺管理_工艺维护_查看图纸` +- `存储过程:工艺管理_获取物料原料信息` +- `存储过程:计划排产_生产订单_已排产订单查询` +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:MES_OrderPlanned_Query` +- `存储过程:Prog_MES_LoadStations` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:MES_OrderPlanned_EditTaskPlanned` +- `存储过程:计划排产_二次派工` +- `存储过程:计划排产_派工` +- `存储过程:MES_OrderPlanned_SingleTaskPlanned` +- `存储过程:计划排产_外协分组` +- `存储过程:MES_OrderPlanned_Finish` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:计划排产_自制件_日程时间修改` +- `接口:patchB1 /ProductionOrders(` + +**操作注意事项** +- 排产、派工和计划时间会影响生产看板、及时开工统计和 SAP 生产订单日期,提交前必须核对。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 +- 日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。 + +### 21.15 机加已排产 + +页面路径:`src/views/PlanManagement/SelfMakePlandone/index.vue` +所属模块:计划排产 +建议使用人员:计划员/生产主管 + +页面用途:该页面用于机加/自制件已排产任务查看和调整,支持计划时间、指派对象、指派数量、最晚开始、二次派工和备注维护。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`表单`、`日程`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`订单编号`、`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`性质`、`要求完工日期1`、`要求完工日期2`、`计划开始1`、`计划开始2`。 +4. 如果仍查不到数据,继续补充条件:`计划完成1`、`计划完成2`、`排产状态`、`指派对象`、`订单行号`、`订单拆分内码`、`派工特殊说明`、`指派对象编号`、`指派数量`、`计划开始时间`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +7. 查询后先核对关键列:`selection`、`生产订单`、`计划号`、`物料编码`、`物料名称`、`计划数`、`要求完工日期`、`工时`、`工序名称`、`指派对象`、`指派数量`、`计划开始`。 +8. 继续横向滚动或展开表格,核对:`计划完成`、`外协分组`、`原料状态`、`备注`、`最晚开始`、`派工`、`二次派工`、`优先级`、`未完成说明`、`派工特殊备注`、`编辑`、`占用情况`、`销售订单`、`最后编辑人`。 +9. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +10. 需要查看明细时点击 `查看`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +11. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `派工` 提交。 +12. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +13. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +14. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +15. 出现弹窗时按弹窗标题处理:`编辑备注信息`、`原料信息`;弹窗关闭前确认必填项已保存。 +16. 弹窗或表单内重点填写:`优先级`、`未完成说明`、`派工特殊备注`,提交前逐项核对。 +17. 进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。 +18. 日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。 +19. 保存或提交成功后重新点击查询,确认页面数据已通过 `工艺管理_获取物料原料信息`、`计划排产_生产订单_已排产订单查询`、`MES_登录_工位与名称_查询`、`MES_OrderPlanned_Query`、`Prog_MES_LoadStations` 等后台过程更新。 +20. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +21. 已排产列表中仍可调整指派对象、指派数量、计划开始、计划完成、外协分组、最晚开始和二次派工;调整后要重新查询确认。 + +**查询条件/输入项** +- `订单编号` +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `性质` +- `要求完工日期1` +- `要求完工日期2` +- `计划开始1` +- `计划开始2` +- `计划完成1` +- `计划完成2` +- `排产状态` +- `指派对象` +- `订单行号` +- `订单拆分内码` +- `派工特殊说明` +- `指派对象编号` +- `指派数量` +- `计划开始时间` + +**结果表重点列** +- `selection` +- `生产订单` +- `计划号` +- `物料编码` +- `物料名称` +- `计划数` +- `要求完工日期` +- `工时` +- `工序名称` +- `指派对象` +- `指派数量` +- `计划开始` +- `计划完成` +- `外协分组` +- `原料状态` +- `备注` +- `最晚开始` +- `派工` +- `二次派工` +- `优先级` +- `未完成说明` +- `派工特殊备注` +- `编辑` +- `占用情况` +- `销售订单` +- `最后编辑人` +- `最后编辑时间` +- `序号` +- `基本数量` +- `待出数量` +- `拣配数量` +- `计划数量` +- `存货量` +- `材质` + +**页面按钮/状态/页签** +- `查询` +- `确定` +- `查看` +- `派工` +- `编辑` +- `取 消` +- `确 定` +- `表单` +- `日程` + +**弹窗/表单重点项** +- `编辑备注信息` +- `原料信息` +- `优先级` +- `未完成说明` +- `派工特殊备注` + +**后台处理/外部接口** +- `存储过程:工艺管理_获取物料原料信息` +- `存储过程:计划排产_生产订单_已排产订单查询` +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:MES_OrderPlanned_Query` +- `存储过程:Prog_MES_LoadStations` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:MES_OrderPlanned_EditTaskPlanned` +- `存储过程:计划排产_二次派工` +- `存储过程:计划排产_派工` +- `存储过程:MES_OrderPlanned_SingleTaskPlanned` +- `存储过程:计划排产_外协分组` +- `存储过程:MES_OrderPlanned_Finish` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:计划排产_自制件_日程时间修改` +- `接口:patchB1 /ProductionOrders(` + +**操作注意事项** +- 排产、派工和计划时间会影响生产看板、及时开工统计和 SAP 生产订单日期,提交前必须核对。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 +- 日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。 + +## 21-6 工艺与图纸管理 + +### 21.16 零件图纸维护 + +页面路径:`src/views/ProcessManagement/PartDrawing/index.vue` +所属模块:工艺与图纸管理 +建议使用人员:工艺员/技术人员 + +页面用途:该页面用于维护零件图纸,支持按物料查询、查看、上传/验证和删除图纸。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编码`、`过滤`、`stationNumberValues`、`selectedMaterials`、`itemnum`、`物料(可多选)`、`物料`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 查询后先核对关键列:`序号`、`物料编号`、`物料名称`、`文件名称`、`导入人`、`导入时间`、`操作`、`操作人`、`删除时间`、`备注`、`物料编码`、`现有图纸导入人`。 +5. 按业务需要点击 `零件图`,操作前先确认选中行和输入内容。 +6. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `选零件上传零件图` 提交。 +7. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `查看删除记录`,按确认提示执行。 +8. 需要查看明细时点击 `查看`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +9. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除`,按确认提示执行。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +11. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +12. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +13. 需要查看明细时点击 `查看信息`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +14. 按业务需要点击 `关 闭`,操作前先确认选中行和输入内容。 +15. 出现弹窗时按弹窗标题处理:`上传零件图`、`选零件上传零件图`、`删除记录`、`上传冲突提示`、`图纸`;弹窗关闭前确认必填项已保存。 +16. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +17. 保存或提交成功后重新点击查询,确认页面数据已通过 `工艺管理_图纸维护_查询删除记录`、`工艺管理_图纸维护_零件图查询`、`工艺管理_图纸维护_物料查询`、`工艺管理_图纸维护_验证名称`、`工艺管理_图纸维护_查看图纸` 等后台过程更新。 + +**查询条件/输入项** +- `物料编码` +- `过滤` +- `stationNumberValues` +- `selectedMaterials` +- `itemnum` +- `物料(可多选)` +- `物料` + +**结果表重点列** +- `序号` +- `物料编号` +- `物料名称` +- `文件名称` +- `导入人` +- `导入时间` +- `操作` +- `操作人` +- `删除时间` +- `备注` +- `物料编码` +- `现有图纸导入人` + +**页面按钮/状态/页签** +- `查询` +- `零件图` +- `选零件上传零件图` +- `查看删除记录` +- `查看` +- `删除` +- `取消` +- `确定` +- `关闭` +- `查看信息` +- `关 闭` + +**弹窗/表单重点项** +- `上传零件图` +- `选零件上传零件图` +- `删除记录` +- `上传冲突提示` +- `图纸` + +**后台处理/外部接口** +- `存储过程:工艺管理_图纸维护_查询删除记录` +- `存储过程:工艺管理_图纸维护_零件图查询` +- `存储过程:工艺管理_图纸维护_物料查询` +- `存储过程:工艺管理_图纸维护_验证名称` +- `存储过程:工艺管理_图纸维护_查看图纸` +- `存储过程:工艺管理_图纸维护_删除图纸` + +**操作注意事项** +- 工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。 + +### 21.17 零件图纸查看 + +页面路径:`src/views/ProcessManagement/PartDrawlook/index.vue` +所属模块:工艺与图纸管理 +建议使用人员:工艺员/技术人员 + +页面用途:该页面用于按物料查看零件图纸,供生产、采购、外协或质检快速查阅技术文件。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编码`、`过滤`、`stationNumberValue`、`uploadValue`、`itemnum`、`物料`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 查询后先核对关键列:`序号`、`物料编号`、`物料名称`、`文件名称`、`导入人`、`导入时间`、`操作`、`操作人`、`删除时间`、`备注`。 +5. 需要查看明细时点击 `查看`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +6. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除`,按确认提示执行。 +7. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +8. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +9. 出现弹窗时按弹窗标题处理:`上传指导文件`、`删除记录`;弹窗关闭前确认必填项已保存。 +10. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +11. 保存或提交成功后重新点击查询,确认页面数据已通过 `工艺管理_图纸维护_查询删除记录`、`工艺管理_图纸维护_零件图查询全部`、`工艺管理_图纸维护_物料查询`、`工艺管理_图纸维护_验证名称`、`工艺管理_图纸维护_查看图纸` 等后台过程更新。 + +**查询条件/输入项** +- `物料编码` +- `过滤` +- `stationNumberValue` +- `uploadValue` +- `itemnum` +- `物料` + +**结果表重点列** +- `序号` +- `物料编号` +- `物料名称` +- `文件名称` +- `导入人` +- `导入时间` +- `操作` +- `操作人` +- `删除时间` +- `备注` + +**页面按钮/状态/页签** +- `查询` +- `查看` +- `删除` +- `取消` +- `确定` +- `关闭` + +**弹窗/表单重点项** +- `上传指导文件` +- `删除记录` + +**后台处理/外部接口** +- `存储过程:工艺管理_图纸维护_查询删除记录` +- `存储过程:工艺管理_图纸维护_零件图查询全部` +- `存储过程:工艺管理_图纸维护_物料查询` +- `存储过程:工艺管理_图纸维护_验证名称` +- `存储过程:工艺管理_图纸维护_查看图纸` +- `存储过程:工艺管理_图纸维护_删除图纸` + +**操作注意事项** +- 工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。 + +### 21.18 工序维护 + +页面路径:`src/views/ProcessManagement/ProcedureManagement/index.vue` +所属模块:工艺与图纸管理 +建议使用人员:工艺员/技术人员 + +页面用途:该页面用于维护工序/路线阶段主数据,并与 SAP B1 RouteStages 保持一致。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`searchName`、`ProcessClassification`、`工艺名称`。 +3. 点击页面上的查询或刷新类按钮获取最新数据;如果页面自动加载,则先核对默认列表是否符合当前业务范围。 +4. 查询后先核对关键列:`序号`、`工艺名称`、`操作`。 +5. 需要新增时点击 `新增工艺`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +6. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +7. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +8. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +9. 出现弹窗时按弹窗标题处理:`title`;弹窗关闭前确认必填项已保存。 +10. 弹窗或表单内重点填写:`工艺名称`,提交前逐项核对。 +11. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_ProcessManagement_ProcessGet`、`MES_ProcessManagement_ProcessAdd`、`MES_ProcessManagement_ProcessEdit`、`MES_ProcessManagement_Processdel` 等后台过程更新。 +12. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 + +**查询条件/输入项** +- `searchName` +- `ProcessClassification` +- `工艺名称` + +**结果表重点列** +- `序号` +- `工艺名称` +- `操作` + +**页面按钮/状态/页签** +- `新增工艺` +- `取 消` +- `确 定` + +**弹窗/表单重点项** +- `title` +- `工艺名称` + +**后台处理/外部接口** +- `存储过程:MES_ProcessManagement_ProcessGet` +- `存储过程:MES_ProcessManagement_ProcessAdd` +- `存储过程:MES_ProcessManagement_ProcessEdit` +- `存储过程:MES_ProcessManagement_Processdel` +- `接口:postB1 /RouteStages` +- `接口:getB1 /RouteStages` +- `接口:patchB1 /RouteStages(` + +**操作注意事项** +- 工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.19 工艺图纸维护 + +页面路径:`src/views/ProcessManagement/ProcessDrawing/index.vue` +所属模块:工艺与图纸管理 +建议使用人员:工艺员/技术人员 + +页面用途:该页面用于维护工艺图纸,支持查询、查看、上传/验证和删除工艺图纸。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`过滤`、`stationNumberValue`、`uploadValue`、`物料`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 查询后先核对关键列:`序号`、`物料编号`、`物料名称`、`文件名称`、`导入人`、`导入时间`、`操作`。 +5. 按业务需要点击 `工艺图`,操作前先确认选中行和输入内容。 +6. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `选零件上传工艺图` 提交。 +7. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `选订单上传工艺图` 提交。 +8. 需要查看明细时点击 `查看`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +9. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除`,按确认提示执行。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +11. 出现弹窗时按弹窗标题处理:`上传指导文件`;弹窗关闭前确认必填项已保存。 +12. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +13. 保存或提交成功后重新点击查询,确认页面数据已通过 `工艺管理_工艺维护_工艺图查询`、`工艺管理_图纸维护_物料查询`、`工艺管理_工艺维护_验证名称`、`工艺管理_工艺维护_查看图纸`、`工艺管理_工艺维护_删除图纸` 等后台过程更新。 + +**查询条件/输入项** +- `过滤` +- `stationNumberValue` +- `uploadValue` +- `物料` + +**结果表重点列** +- `序号` +- `物料编号` +- `物料名称` +- `文件名称` +- `导入人` +- `导入时间` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `工艺图` +- `选零件上传工艺图` +- `选订单上传工艺图` +- `查看` +- `删除` +- `取消` +- `确定` + +**弹窗/表单重点项** +- `上传指导文件` + +**后台处理/外部接口** +- `存储过程:工艺管理_工艺维护_工艺图查询` +- `存储过程:工艺管理_图纸维护_物料查询` +- `存储过程:工艺管理_工艺维护_验证名称` +- `存储过程:工艺管理_工艺维护_查看图纸` +- `存储过程:工艺管理_工艺维护_删除图纸` +- `存储过程:工艺管理_图纸维护_查看图纸` + +**操作注意事项** +- 工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。 + +### 21.20 工艺开发 + +页面路径:`src/views/ProcessManagement/ProcessesDevelop/index.vue` +所属模块:工艺与图纸管理 +建议使用人员:工艺员/技术人员 + +页面用途:该页面用于维护产品工艺资料、工序路线、参数和图纸关系。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单编号`、`过滤`、`partNameValue3`、`processSearchName`、`processprodutc`、`partNameValue2`、`物料名称`、`工序名称`、`工装量具`、`指定机床`、`车间`、`生产工艺物料名称`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`工序`、`序号`、`工序名称`、`准备工时`、`标准工时`、`工时合计`、`工装量具`、`指定机床`、`车间`、`工序说明`、`备注`、`操作`。 +6. 按业务需要点击 `拷贝`,操作前先确认选中行和输入内容。 +7. 需要查看明细时点击 `图纸`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +8. 需要维护已有记录时先选中目标行,再点击或触发表格内 `已保存`,修改字段后保存并等待成功提示。 +9. 需要维护已有记录时先选中目标行,再点击或触发表格内 `保存`,修改字段后保存并等待成功提示。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `保存`,修改字段后保存并等待成功提示。 +11. 需要留存或流转时点击 `导出`,导出/打印前确认当前查询条件和选中记录正确。 +12. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +13. 出现弹窗时按弹窗标题处理:`工艺拷贝`;弹窗关闭前确认必填项已保存。 +14. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +15. 保存或提交成功后重新点击查询,确认页面数据已通过 `工艺管理_获取物料原料信息`、`设备管理_设备信息_查询`、`工艺管理_生产计划物料查询`、`工艺管理_生产工艺_生产工艺拷贝`、`工艺管理_生产工艺_标准工艺拷贝` 等后台过程更新。 + +**查询条件/输入项** +- `订单编号` +- `过滤` +- `partNameValue3` +- `processSearchName` +- `processprodutc` +- `partNameValue2` +- `物料名称` +- `工序名称` +- `工装量具` +- `指定机床` +- `车间` +- `生产工艺物料名称` + +**结果表重点列** +- `工序` +- `序号` +- `工序名称` +- `准备工时` +- `标准工时` +- `工时合计` +- `工装量具` +- `指定机床` +- `车间` +- `工序说明` +- `备注` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `拷贝` +- `图纸` +- `已保存` +- `保存` +- `导出` +- `生产工艺 取消` +- `确定` + +**弹窗/表单重点项** +- `工艺拷贝` + +**后台处理/外部接口** +- `存储过程:工艺管理_获取物料原料信息` +- `存储过程:设备管理_设备信息_查询` +- `存储过程:工艺管理_生产计划物料查询` +- `存储过程:工艺管理_生产工艺_生产工艺拷贝` +- `存储过程:工艺管理_生产工艺_标准工艺拷贝` +- `存储过程:MES_ProcessManagement_ProcessBindGet` +- `存储过程:工艺管理_制定标准工艺_拷贝生产工艺` +- `存储过程:MES_ProcessManagement_ProcessGet` +- `存储过程:工艺管理_制定标准工艺_拷贝工艺保存` +- `存储过程:工艺管理_工艺维护_查看图纸` +- `存储过程:车间生产管理工艺_零件工序_修改数据_工艺库` +- `存储过程:车间生产管理工艺_零件工序_查询工序信息_工艺库` +- `存储过程:车间生产管理工艺_零件工序_编辑_工艺库` +- `存储过程:车间生产管理工艺_零件工序_编辑插入行` +- `存储过程:车间生产管理工艺_零件工序_删除工序_工艺库` +- `存储过程:车间生产管理工艺_零件工序_上移工序_工艺库` +- `存储过程:车间生产管理工艺_零件工序_下移工序_工艺库` +- `存储过程:车间生产管理工艺_零件工序_插入工序_工艺库` +- `存储过程:车间生产管理工艺_零件工序_启用` + +**操作注意事项** +- 工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。 + +### 21.21 工艺查询 + +页面路径:`src/views/ProcessManagement/ProcessInquiry/index.vue` +所属模块:工艺与图纸管理 +建议使用人员:工艺员/技术人员 + +页面用途:该页面用于查询标准工艺或生产工艺,供排产、生产、质检核对工序路线。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`partNameValue3`、`order编号`、`plannum`、`taskstatus`、`pickingstatus`、`orderstatus`、`生产工艺物料名称`、`物料名称`、`生产订单`、`计划号`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`selection`、`序号`、`生产订单`、`计划号`、`物料名称`、`物料编码`、`加工数量`、`打印次数`。 +6. 需要留存或流转时点击 `打印`,导出/打印前确认当前查询条件和选中记录正确。 +7. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_ProcessManagement_PartGet`、`工艺管理_工艺查询_查询生产工艺`、`工艺管理_工艺查询_更新打印次数` 等后台过程更新。 + +**查询条件/输入项** +- `partNameValue3` +- `order编号` +- `plannum` +- `taskstatus` +- `pickingstatus` +- `orderstatus` +- `生产工艺物料名称` +- `物料名称` +- `生产订单` +- `计划号` + +**结果表重点列** +- `selection` +- `序号` +- `生产订单` +- `计划号` +- `物料名称` +- `物料编码` +- `加工数量` +- `打印次数` + +**页面按钮/状态/页签** +- `查询` +- `打印` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:MES_ProcessManagement_PartGet` +- `存储过程:工艺管理_工艺查询_查询生产工艺` +- `存储过程:工艺管理_工艺查询_更新打印次数` + +**操作注意事项** +- 工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。 + +### 21.22 生产工艺维护 + +页面路径:`src/views/ProcessManagement/ProcessProduct/index.vue` +所属模块:工艺与图纸管理 +建议使用人员:工艺员/技术人员 + +页面用途:该页面用于维护产品工艺资料、工序路线、参数和图纸关系。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单编号`、`订单号`、`合同号`、`产品编码`、`产品名称`、`下达日期1`、`下达日期2`、`任务状态`、`订单状态`、`工艺状态`、`计划号`、`PageCurrent`。 +3. 如果仍查不到数据,继续补充条件:`PageSize`、`PageCount`、`ItemCount`、`物料编号`、`计划数量`、`工艺顺序`、`零件图号`、`order编号`、`contract编号`、`productCode`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`selection`、`序号`、`销售订单`、`计划号`、`生产订单`、`物料编码`、`物料名称`、`属性`、`计划数`、`下达日期`、`计划开始`、`计划完成`。 +7. 继续横向滚动或展开表格,核对:`加急状态`、`标准工艺`、`生产工艺`、`图纸`、`备注`、`操作`、`工序`、`工序名称`、`准备工时`、`标准工时`、`工时合计`、`工装量具`、`指定机床`、`车间`。 +8. 按业务需要点击 `批量生成生产工艺`,操作前先确认选中行和输入内容。 +9. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑工艺`,修改字段后保存并等待成功提示。 +10. 按业务需要点击 `拷贝`,操作前先确认选中行和输入内容。 +11. 需要查看明细时点击 `零件图纸`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +12. 需要查看明细时点击 `工艺图纸`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +13. 需要维护已有记录时先选中目标行,再点击或触发表格内 `保存为标准工艺`,修改字段后保存并等待成功提示。 +14. 按业务需要点击 `下发任务`,操作前先确认选中行和输入内容。 +15. 需要维护已有记录时先选中目标行,再点击或触发表格内 `已保存`,修改字段后保存并等待成功提示。 +16. 需要维护已有记录时先选中目标行,再点击或触发表格内 `保存`,修改字段后保存并等待成功提示。 +17. 按业务需要点击 `下发任务`,操作前先确认选中行和输入内容。 +18. 出现弹窗时按弹窗标题处理:`编辑生产工艺`、`生产工艺拷贝`、`图纸`;弹窗关闭前确认必填项已保存。 +19. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +20. 保存或提交成功后重新点击查询,确认页面数据已通过 `工艺管理_获取物料原料信息`、`工艺管理_生产工艺_查询生产工艺`、`工艺管理_生产工艺_工艺拷贝`、`工艺管理_生产工艺_生产工艺拷贝`、`工艺管理_生产工艺_标准工艺拷贝` 等后台过程更新。 + +**查询条件/输入项** +- `订单编号` +- `订单号` +- `合同号` +- `产品编码` +- `产品名称` +- `下达日期1` +- `下达日期2` +- `任务状态` +- `订单状态` +- `工艺状态` +- `计划号` +- `PageCurrent` +- `PageSize` +- `PageCount` +- `ItemCount` +- `物料编号` +- `计划数量` +- `工艺顺序` +- `零件图号` +- `order编号` +- `contract编号` +- `productCode` + +**结果表重点列** +- `selection` +- `序号` +- `销售订单` +- `计划号` +- `生产订单` +- `物料编码` +- `物料名称` +- `属性` +- `计划数` +- `下达日期` +- `计划开始` +- `计划完成` +- `加急状态` +- `标准工艺` +- `生产工艺` +- `图纸` +- `备注` +- `操作` +- `工序` +- `工序名称` +- `准备工时` +- `标准工时` +- `工时合计` +- `工装量具` +- `指定机床` +- `车间` +- `工序说明` + +**页面按钮/状态/页签** +- `查询` +- `批量生成生产工艺` +- `编辑工艺` +- `拷贝` +- `零件图纸` +- `工艺图纸` +- `保存为标准工艺` +- `下发任务` +- `已保存` +- `保存` +- `取消` +- `确定` +- `关闭` + +**弹窗/表单重点项** +- `编辑生产工艺` +- `生产工艺拷贝` +- `图纸` + +**后台处理/外部接口** +- `存储过程:工艺管理_获取物料原料信息` +- `存储过程:工艺管理_生产工艺_查询生产工艺` +- `存储过程:工艺管理_生产工艺_工艺拷贝` +- `存储过程:工艺管理_生产工艺_生产工艺拷贝` +- `存储过程:工艺管理_生产工艺_标准工艺拷贝` +- `存储过程:计划排产_生产订单_订单查询` +- `存储过程:计划排产_生产订单_订单任务_生产工艺任务下发` +- `存储过程:计划排产_生产订单_订单任务_单条生产工艺任务下发` +- `存储过程:工艺管理_零件工序_生产工艺_批量生成生产工艺` +- `存储过程:设备管理_设备信息_查询` +- `存储过程:MES_ProcessManagement_ProcessBindGet` +- `存储过程:工艺管理_制定标准工艺_拷贝生产工艺` +- `存储过程:MES_ProcessManagement_ProcessGet` +- `存储过程:车间生产管理工艺_零件工序_保存为标准工艺` +- `存储过程:工艺管理_图纸维护_查看图纸` +- `存储过程:工艺管理_工艺维护_查看图纸` +- `存储过程:工艺管理_零件工序_生产工艺_修改数据` +- `存储过程:工艺管理_零件工序_生产工艺_编辑` +- `存储过程:工艺管理_零件工序_生产工艺_编辑插入工序` +- `存储过程:工艺管理_零件工序_生产工艺_删除工序` + +**操作注意事项** +- 工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。 + +### 21.23 采购图纸查看 + +页面路径:`src/views/ProcessManagement/ProcurementDrawlook/index.vue` +所属模块:工艺与图纸管理 +建议使用人员:工艺员/技术人员 + +页面用途:该页面用于按物料查看零件图纸,供生产、采购、外协或质检快速查阅技术文件。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编码`、`过滤`、`stationNumberValue`、`uploadValue`、`itemnum`、`物料`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 查询后先核对关键列:`序号`、`物料编号`、`物料名称`、`文件名称`、`导入人`、`导入时间`、`操作`、`操作人`、`删除时间`、`备注`。 +5. 需要查看明细时点击 `查看`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +6. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除`,按确认提示执行。 +7. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +8. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +9. 出现弹窗时按弹窗标题处理:`上传指导文件`、`删除记录`;弹窗关闭前确认必填项已保存。 +10. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +11. 保存或提交成功后重新点击查询,确认页面数据已通过 `工艺管理_图纸维护_查询删除记录`、`工艺管理_图纸维护_零件图查询采购`、`工艺管理_图纸维护_物料查询_采购`、`工艺管理_图纸维护_验证名称`、`工艺管理_图纸维护_查看图纸` 等后台过程更新。 + +**查询条件/输入项** +- `物料编码` +- `过滤` +- `stationNumberValue` +- `uploadValue` +- `itemnum` +- `物料` + +**结果表重点列** +- `序号` +- `物料编号` +- `物料名称` +- `文件名称` +- `导入人` +- `导入时间` +- `操作` +- `操作人` +- `删除时间` +- `备注` + +**页面按钮/状态/页签** +- `查询` +- `查看` +- `删除` +- `取消` +- `确定` +- `关闭` + +**弹窗/表单重点项** +- `上传指导文件` +- `删除记录` + +**后台处理/外部接口** +- `存储过程:工艺管理_图纸维护_查询删除记录` +- `存储过程:工艺管理_图纸维护_零件图查询采购` +- `存储过程:工艺管理_图纸维护_物料查询_采购` +- `存储过程:工艺管理_图纸维护_验证名称` +- `存储过程:工艺管理_图纸维护_查看图纸` +- `存储过程:工艺管理_图纸维护_删除图纸` + +**操作注意事项** +- 工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。 + +### 21.24 生产订单 + +页面路径:`src/views/ProcessManagement/ProductionOrder/index.vue` +所属模块:工艺与图纸管理 +建议使用人员:工艺员/技术人员 + +页面用途:该页面用于查询和同步生产订单,把 SAP/ERP 生产订单转成 MES 生产计划与工序任务。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单号`、`合同号`、`产品编码`、`产品名称`、`要求完工日期1`、`要求完工日期2`、`订单状态`、`任务状态`、`订单编号`、`order编号`、`contract编号`、`productCode`。 +3. 如果仍查不到数据,继续补充条件:`productName`、`taskstatus`、`orderstatus`、`completion时间`、`生产订单`、`销售订单`、`物料编码`、`物料名称`、`时间`、`开始时间`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`selection`、`序号`、`销售订单`、`生产订单`、`物料编码`、`物料名称`、`属性`、`计划数`、`下达日期`、`计划开始`、`计划完成`、`加急状态`。 +7. 继续横向滚动或展开表格,核对:`标准工艺`、`生产工艺`、`操作`、`工序名称`、`工序说明`、`准备工时`、`标准工时`、`工时合计`、`工装量具`、`指定机床`、`车间`、`备注`。 +8. 按业务需要点击 `批量生成任务`,操作前先确认选中行和输入内容。 +9. 需要查看明细时点击 `查看生产工艺`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +10. 需要查看明细时点击 `查看标准工艺`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +11. 出现弹窗时按弹窗标题处理:`生产工艺详情`、`标准工艺详情`;弹窗关闭前确认必填项已保存。 +12. 保存或提交成功后重新点击查询,确认页面数据已通过 `设备管理_设备信息_查询`、`工艺管理_生产工艺_查询生产工艺`、`工艺管理_生产工艺_查询标准工艺`、`工艺管理_工艺任务_订单查询`、`计划排产_生产订单_订单任务` 等后台过程更新。 + +**查询条件/输入项** +- `订单号` +- `合同号` +- `产品编码` +- `产品名称` +- `要求完工日期1` +- `要求完工日期2` +- `订单状态` +- `任务状态` +- `订单编号` +- `order编号` +- `contract编号` +- `productCode` +- `productName` +- `taskstatus` +- `orderstatus` +- `completion时间` +- `生产订单` +- `销售订单` +- `物料编码` +- `物料名称` +- `时间` +- `开始时间` + +**结果表重点列** +- `selection` +- `序号` +- `销售订单` +- `生产订单` +- `物料编码` +- `物料名称` +- `属性` +- `计划数` +- `下达日期` +- `计划开始` +- `计划完成` +- `加急状态` +- `标准工艺` +- `生产工艺` +- `操作` +- `工序名称` +- `工序说明` +- `准备工时` +- `标准工时` +- `工时合计` +- `工装量具` +- `指定机床` +- `车间` +- `备注` + +**页面按钮/状态/页签** +- `查询` +- `批量生成任务` +- `查看生产工艺` +- `查看标准工艺` + +**弹窗/表单重点项** +- `生产工艺详情` +- `标准工艺详情` + +**后台处理/外部接口** +- `存储过程:设备管理_设备信息_查询` +- `存储过程:工艺管理_生产工艺_查询生产工艺` +- `存储过程:工艺管理_生产工艺_查询标准工艺` +- `存储过程:工艺管理_工艺任务_订单查询` +- `存储过程:计划排产_生产订单_订单任务` + +**操作注意事项** +- 工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。 + +## 21-7 生产执行管理 + +### 21.25 异常管控 + +页面路径:`src/views/ProductionManagement/AbnormalControl/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于生产异常管理,查询异常、处理异常、转办、查看进度和关闭异常。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`待我处理`、`我发起的`、`我已处理`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`审批人ID`、`发起人ID`、`状态`、`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`性质`、`要求完工日期1`、`要求完工日期2`。 +4. 如果仍查不到数据,继续补充条件:`排产状态`、`工位`、`流程标题`、`流程描述`、`优先级`、`发起人姓名`、`审批人姓名`、`新流程ID`、`已关联计划号`、`零件名称`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 查询后先核对关键列:`流程名称`、`发起时间`、`当前节点`、`状态`、`操作`、`申请人`、`处理时间`、`处理结果`、`审批意见`、`序号`、`销售订单`、`生产订单`。 +7. 继续横向滚动或展开表格,核对:`零件编码`、`产品名称`、`计划数`、`工序名称`、`指派对象编号`、`指派对象`、`指派数量`、`计划开始时间`、`计划完成时间`、`最晚开始时间`、`要求完工日期`。 +8. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `处理` 提交。 +9. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `转办` 提交。 +10. 按业务需要点击 `发起新流程`,操作前先确认选中行和输入内容。 +11. 需要查看明细时点击 `查看进度`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +12. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `完结` 提交。 +13. 需要查看明细时点击 `查看详情`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +14. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `点击上传` 提交。 +15. 需要新增时点击 `添加审批人`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +16. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +17. 按业务需要点击 `提 交`,操作前先确认选中行和输入内容。 +18. 出现弹窗时按弹窗标题处理:`发起新流程`、`处理任务`、`流程进度详情`、`转办流程`、`完结流程`、`上传附件`;弹窗关闭前确认必填项已保存。 +19. 弹窗或表单内重点填写:`优先级`、`流程标题`、`流程描述`、`上传附件`、`审批人`、`已关联生产订单`、`物料名称`、`物料编号`、`工序名称`、`处理意见`、`审批意见`、`目标人员`、`转办原因`、`流程名称`,提交前逐项核对。 +20. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +21. 保存或提交成功后重新点击查询,确认页面数据已通过 `sp_获取最近处理任务`、`人员管理_人员信息查询`、`sp_获取我的流程`、`sp_获取待处理任务`、`MES_ProductAdmin_Query` 等后台过程更新。 + +**查询条件/输入项** +- `审批人ID` +- `发起人ID` +- `状态` +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `性质` +- `要求完工日期1` +- `要求完工日期2` +- `排产状态` +- `工位` +- `流程标题` +- `流程描述` +- `优先级` +- `发起人姓名` +- `审批人姓名` +- `新流程ID` +- `已关联计划号` +- `零件名称` + +**结果表重点列** +- `流程名称` +- `发起时间` +- `当前节点` +- `状态` +- `操作` +- `申请人` +- `处理时间` +- `处理结果` +- `审批意见` +- `序号` +- `销售订单` +- `生产订单` +- `零件编码` +- `产品名称` +- `计划数` +- `工序名称` +- `指派对象编号` +- `指派对象` +- `指派数量` +- `计划开始时间` +- `计划完成时间` +- `最晚开始时间` +- `要求完工日期` + +**页面按钮/状态/页签** +- `处理` +- `转办` +- `发起新流程` +- `查看进度` +- `完结` +- `查看详情` +- `点击上传` +- `添加审批人` +- `查询` +- `取 消` +- `提 交` +- `确 定` +- `确 认 完 结` +- `取消` +- `确定` +- `待我处理` +- `我发起的` +- `我已处理` + +**弹窗/表单重点项** +- `发起新流程` +- `处理任务` +- `流程进度详情` +- `转办流程` +- `完结流程` +- `上传附件` +- `优先级` +- `流程标题` +- `流程描述` +- `上传附件` +- `审批人` +- `已关联生产订单` +- `物料名称` +- `物料编号` +- `工序名称` +- `处理意见` +- `审批意见` +- `目标人员` +- `转办原因` +- `流程名称` +- `完结原因` +- `完结结果` + +**后台处理/外部接口** +- `存储过程:sp_获取最近处理任务` +- `存储过程:人员管理_人员信息查询` +- `存储过程:sp_获取我的流程` +- `存储过程:sp_获取待处理任务` +- `存储过程:MES_ProductAdmin_Query` +- `存储过程:sp_创建流程_简化版` +- `存储过程:sp_处理审批` +- `存储过程:sp_转办流程` +- `存储过程:sp_完成流程` +- `存储过程:sp_获取流程详情` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.26 装配计划跟踪 + +页面路径:`src/views/ProductionManagement/AssemblePlanTrack/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于跟踪生产/装配计划执行进度,查看计划、完成、延期和异常情况。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`计划开始1`、`计划开始2`、`计划完成1`、`计划完成2`、`要求完工日期1`、`要求完工日期2`。 +3. 如果仍查不到数据,继续补充条件:`排产状态`、`指派对象`、`订单行号`、`订单拆分内码`、`优先级`、`未完成说明`、`派工特殊说明`、`order编号`、`contract编号`、`productCode`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`expand`、`序号`、`工序名称`、`计划数量`、`指派对象`、`开始时间`、`结束时间`、`完成进度`、`拆分内码`、`销售订单`、`生产订单`、`产品编码`。 +6. 继续横向滚动或展开表格,核对:`产品名称`、`要求完工日`、`当前序`、`排产`、`开工`、`终检`、`加急`、`优先级`。 +7. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_OrderPlanned_Queryzp`、`MES_OrderPlanned_DescriptionEdit`、`Prog_MES_LoadStations` 等后台过程更新。 + +**查询条件/输入项** +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `计划开始1` +- `计划开始2` +- `计划完成1` +- `计划完成2` +- `要求完工日期1` +- `要求完工日期2` +- `排产状态` +- `指派对象` +- `订单行号` +- `订单拆分内码` +- `优先级` +- `未完成说明` +- `派工特殊说明` +- `order编号` +- `contract编号` +- `productCode` + +**结果表重点列** +- `expand` +- `序号` +- `工序名称` +- `计划数量` +- `指派对象` +- `开始时间` +- `结束时间` +- `完成进度` +- `拆分内码` +- `销售订单` +- `生产订单` +- `产品编码` +- `产品名称` +- `要求完工日` +- `当前序` +- `排产` +- `开工` +- `终检` +- `加急` +- `优先级` + +**页面按钮/状态/页签** +- `查询` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:MES_OrderPlanned_Queryzp` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:Prog_MES_LoadStations` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.27 装配状态 + +页面路径:`src/views/ProductionManagement/AssembleStatus/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于查看现场状态,关注工位、设备、任务是否开工、进行中或完成。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`checker`、`检测人`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`序号`、`人员名称`、`工位`、`生产订单`、`计划号`、`销售订单`、`物料名称`、`物料编码`、`顺序`、`工序名称`、`分配数`、`上序合格数`。 +6. 继续横向滚动或展开表格,核对:`加工状态`、`送检数`、`收检合格数`、`收检不合格数`、`入库数量`、`发料状态`、`拣配状态`、`齐套`、`开始时间`、`计划开始`、`计划完成`、`备注`。 +7. 保存或提交成功后重新点击查询,确认页面数据已通过 `人员管理_人员信息查询_质检部门_查询`、`MES_登录_工位与名称_查询`、`生产管理_装配状态_获取进行中任务` 等后台过程更新。 + +**查询条件/输入项** +- `checker` +- `检测人` + +**结果表重点列** +- `序号` +- `人员名称` +- `工位` +- `生产订单` +- `计划号` +- `销售订单` +- `物料名称` +- `物料编码` +- `顺序` +- `工序名称` +- `分配数` +- `上序合格数` +- `加工状态` +- `送检数` +- `收检合格数` +- `收检不合格数` +- `入库数量` +- `发料状态` +- `拣配状态` +- `齐套` +- `开始时间` +- `计划开始` +- `计划完成` +- `备注` + +**页面按钮/状态/页签** +- `查询` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:生产管理_装配状态_获取进行中任务` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.28 装配任务管理 + +页面路径:`src/views/ProductionManagement/AssembleTaskManage/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于生产/装配任务管理,查询任务、查看工时、维护派工和任务说明。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`表单`、`日程`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`订单号`、`任务描述`、`指派对象`、`指派对象编号`、`指派数量`、`计划开始时间`、`计划结束时间`、`最晚开始时间`、`物料类型`、`合同号`、`产品编码`、`产品名称`。 +4. 如果仍查不到数据,继续补充条件:`工序名称`、`性质`、`要求完工日期1`、`要求完工日期2`、`排产状态`、`订单行号`、`订单拆分内码`、`派工特殊说明`、`计划完成时间`、`优先级`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 查询后先核对关键列:`selection`、`序号`、`销售订单`、`生产订单`、`订单行号`、`拆分内码`、`零件编码`、`产品名称`、`计划数`、`预计齐套时间`、`是否齐套`、`齐套检测`。 +7. 继续横向滚动或展开表格,核对:`齐套锁料`、`备料日期`、`加急`、`总工时`、`排产状态`、`排产时间`、`工序计划数量`、`指派对象编号`、`指派对象`、`指派数量`、`计划开始`、`计划完成`、`最晚开始`、`优先级`。 +8. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `批量排产` 提交。 +9. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `排产完成` 提交。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确认修改`,修改字段后保存并等待成功提示。 +11. 按业务需要点击 `拆分子任务`,操作前先确认选中行和输入内容。 +12. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +13. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +14. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +15. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +16. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +17. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +18. 出现弹窗时按弹窗标题处理:`拆分子任务及派工`、`编辑备注信息`;弹窗关闭前确认必填项已保存。 +19. 弹窗或表单内重点填写:`指派对象`、`分配数量`、`计划开始时间`、`计划完成时间`、`最晚开始时间`、`装配任务概述`、`优先级`、`未完成说明`、`派工特殊备注`,提交前逐项核对。 +20. 进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。 +21. 日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。 +22. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_登录_工位与名称_查询`、`MES_OrderPlanned_Finish`、`MES_OrderPlanned_ChildTask_Add`、`MES_OrderPlanned_ChildTask_Get`、`MES_OrderPlanned_Query` 等后台过程更新。 + +**查询条件/输入项** +- `订单号` +- `任务描述` +- `指派对象` +- `指派对象编号` +- `指派数量` +- `计划开始时间` +- `计划结束时间` +- `最晚开始时间` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `性质` +- `要求完工日期1` +- `要求完工日期2` +- `排产状态` +- `订单行号` +- `订单拆分内码` +- `派工特殊说明` +- `计划完成时间` +- `优先级` + +**结果表重点列** +- `selection` +- `序号` +- `销售订单` +- `生产订单` +- `订单行号` +- `拆分内码` +- `零件编码` +- `产品名称` +- `计划数` +- `预计齐套时间` +- `是否齐套` +- `齐套检测` +- `齐套锁料` +- `备料日期` +- `加急` +- `总工时` +- `排产状态` +- `排产时间` +- `工序计划数量` +- `指派对象编号` +- `指派对象` +- `指派数量` +- `计划开始` +- `计划完成` +- `最晚开始` +- `优先级` +- `未完成说明` +- `派工特殊备注` +- `最后编辑人` +- `最后编辑时间` +- `工序名称` +- `加急状态1` +- `性质` +- `总工时1` + +**页面按钮/状态/页签** +- `查询` +- `批量排产` +- `排产完成` +- `确认修改` +- `拆分子任务` +- `确定` +- `编辑` +- `取 消` +- `确 定` +- `表单` +- `日程` + +**弹窗/表单重点项** +- `拆分子任务及派工` +- `编辑备注信息` +- `指派对象` +- `分配数量` +- `计划开始时间` +- `计划完成时间` +- `最晚开始时间` +- `装配任务概述` +- `优先级` +- `未完成说明` +- `派工特殊备注` + +**后台处理/外部接口** +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:MES_OrderPlanned_Finish` +- `存储过程:MES_OrderPlanned_ChildTask_Add` +- `存储过程:MES_OrderPlanned_ChildTask_Get` +- `存储过程:MES_OrderPlanned_Query` +- `存储过程:Prog_MES_LoadStations` +- `存储过程:MES_OrderPlanned_EditTaskPlanned` +- `存储过程:MES_OrderPlanned_SingleTaskPlanned` +- `存储过程:MES_OrderPlanned_DescriptionEdit` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 +- 日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。 + +### 21.29 装配任务汇总 + +页面路径:`src/views/ProductionManagement/AssembleTasksSum/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于生产/装配任务汇总,按订单、人员、工位、状态和时间统计任务执行情况。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`表单`、`日程`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`计划开工_Start`、`计划开工_End`、`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`性质`、`要求完工日期1`、`要求完工日期2`、`排产状态`。 +4. 如果仍查不到数据,继续补充条件:`工位`、`订单行号`、`订单拆分内码`、`优先级`、`未完成说明`、`派工特殊说明`、`计划开始时间`、`计划完成时间`、`contract编号`、`order编号`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 查询后先核对关键列:`序号`、`销售订单`、`生产订单`、`零件编码`、`产品名称`、`计划数`、`工序名称`、`总工时`、`占用情况`、`计划开始时间`、`计划完成时间`、`最晚开始时间`。 +7. 继续横向滚动或展开表格,核对:`要求完工日期`、`收料`、`进度`、`序检`、`优先级`、`未完成说明`、`派工特殊备注`、`编辑`、`最后编辑人`、`最后编辑时间`。 +8. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +9. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +11. 出现弹窗时按弹窗标题处理:`编辑任务信息`;弹窗关闭前确认必填项已保存。 +12. 弹窗或表单内重点填写:`优先级`、`未完成说明`、`派工特殊备注`,提交前逐项核对。 +13. 进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。 +14. 日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。 +15. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_登录_工位与名称_查询`、`MES_ProductTask_WorkTimeSum`、`MES_ProductAdmin_Query`、`Prog_MES_LoadStations`、`MES_OrderPlanned_DescriptionEdit` 等后台过程更新。 + +**查询条件/输入项** +- `计划开工_Start` +- `计划开工_End` +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `性质` +- `要求完工日期1` +- `要求完工日期2` +- `排产状态` +- `工位` +- `订单行号` +- `订单拆分内码` +- `优先级` +- `未完成说明` +- `派工特殊说明` +- `计划开始时间` +- `计划完成时间` +- `contract编号` +- `order编号` + +**结果表重点列** +- `序号` +- `销售订单` +- `生产订单` +- `零件编码` +- `产品名称` +- `计划数` +- `工序名称` +- `总工时` +- `占用情况` +- `计划开始时间` +- `计划完成时间` +- `最晚开始时间` +- `要求完工日期` +- `收料` +- `进度` +- `序检` +- `优先级` +- `未完成说明` +- `派工特殊备注` +- `编辑` +- `最后编辑人` +- `最后编辑时间` + +**页面按钮/状态/页签** +- `查询` +- `编辑` +- `取 消` +- `确 定` +- `表单` +- `日程` + +**弹窗/表单重点项** +- `编辑任务信息` +- `优先级` +- `未完成说明` +- `派工特殊备注` + +**后台处理/外部接口** +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:MES_ProductTask_WorkTimeSum` +- `存储过程:MES_ProductAdmin_Query` +- `存储过程:Prog_MES_LoadStations` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:MES_OrderPlanned_EditTaskPlanned` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 +- 日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。 + +### 21.30 装配中心 + +页面路径:`src/views/ProductionManagement/AssemblyCenter/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面是装配生产执行主界面,装配人员按工位执行开工、报工、送检、退库、缺料查询和图纸查看。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编号`、`用户ID`、`订单编号`、`订单号`、`零件编号`、`生产状态`、`工位名称`、`计划号`、`销售订单`、`计划开工_Start`、`计划开工_End`、`ItemCode`。 +3. 如果仍查不到数据,继续补充条件:`用户名`、`备注`、`工序说明`、`异常说明`、`本次检数`、`是否加班`、`加班人员`、`特殊加班人员`、`是否休息日`、`是否法定休息日`,或清空过窄条件后重新查询。 +4. 点击 `查询 缺料` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`序号`、`生产订单`、`销售订单`、`计划号`、`物料编码`、`物料名称`、`齐套`、`发料状态`、`拣配`、`操作`、`加急数量`、`分配数`。 +6. 继续横向滚动或展开表格,核对:`送检数`、`任务状态`、`工序顺序`、`指派对象`、`计划开始`、`计划完成`、`二次派工`、`工序名称`、`开工时间`、`加工状态`、`收料数`、`优先`、`首检`、`序检`。 +7. 按业务需要点击 `上一个 下一个`,操作前先确认选中行和输入内容。 +8. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除当前记录 关闭`,按确认提示执行。 +9. 需要维护已有记录时先选中目标行,再点击或触发表格内 `上一个 下一个 保存当前记录 删除当前记录 关闭`,修改字段后保存并等待成功提示。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定 关闭`,修改字段后保存并等待成功提示。 +11. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +12. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +13. 需要新增时点击 `新增异常工时`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +14. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +15. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +16. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +17. 出现弹窗时按弹窗标题处理:`首检自检`、`序检自检`、`收检`、`送检`、`异常工时`、`新增工时记录`、`编辑任务信息`、`退库单`;弹窗关闭前确认必填项已保存。 +18. 弹窗或表单内重点填写:`生产订单`、`零件编码`、`计划数量`、`当前时间`、`送检数`、`操作工位`、`操作人`、`操作类别`、`物料编码`、`物料名称`、`工序名称`、`指派对象`、`开始时间`、`结束时间`,提交前逐项核对。 +19. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +20. 保存或提交成功后重新点击查询,确认页面数据已通过 `生产管理_获取人员绑定`、`加急订单_加急明细查询`、`MES_人员工时记录_获取进行中任务2`、`MES_人员工时记录_获取进行中任务`、`工时校验_获取订单列表` 等后台过程更新。 +21. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +22. 现场执行类操作必须按实际顺序处理:先确认任务和工位,再收料/开工,完成加工或装配后再报工/送检。 + +**查询条件/输入项** +- `物料编号` +- `用户ID` +- `订单编号` +- `订单号` +- `零件编号` +- `生产状态` +- `工位名称` +- `计划号` +- `销售订单` +- `计划开工_Start` +- `计划开工_End` +- `ItemCode` +- `用户名` +- `备注` +- `工序说明` +- `异常说明` +- `本次检数` +- `是否加班` +- `加班人员` +- `特殊加班人员` +- `是否休息日` +- `是否法定休息日` + +**结果表重点列** +- `序号` +- `生产订单` +- `销售订单` +- `计划号` +- `物料编码` +- `物料名称` +- `齐套` +- `发料状态` +- `拣配` +- `操作` +- `加急数量` +- `分配数` +- `送检数` +- `任务状态` +- `工序顺序` +- `指派对象` +- `计划开始` +- `计划完成` +- `二次派工` +- `工序名称` +- `开工时间` +- `加工状态` +- `收料数` +- `优先` +- `首检` +- `序检` +- `检测项目` +- `上限值` +- `下限值` +- `测量单位` +- `检验比例` +- `检具` +- `备注` +- `实测值` + +**页面按钮/状态/页签** +- `查询 缺料` +- `上一个 下一个` +- `删除当前记录 关闭` +- `上一个 下一个 保存当前记录 删除当前记录 关闭` +- `确定 关闭` +- `取 消` +- `确 定` +- `新增异常工时` +- `编辑` +- `取消` +- `关闭` +- `确定` + +**弹窗/表单重点项** +- `首检自检` +- `序检自检` +- `收检` +- `送检` +- `异常工时` +- `新增工时记录` +- `编辑任务信息` +- `退库单` +- `领料单` +- `缺料单` +- `报工结束` +- `图纸` +- `加急明细` +- `加班确认` +- `生产订单` +- `零件编码` +- `计划数量` +- `当前时间` +- `送检数` +- `操作工位` +- `操作人` +- `操作类别` +- `物料编码` +- `物料名称` +- `工序名称` +- `指派对象` +- `开始时间` +- `结束时间` +- `工作内容` +- `备注说明` + +**后台处理/外部接口** +- `存储过程:生产管理_获取人员绑定` +- `存储过程:加急订单_加急明细查询` +- `存储过程:MES_人员工时记录_获取进行中任务2` +- `存储过程:MES_人员工时记录_获取进行中任务` +- `存储过程:工时校验_获取订单列表` +- `存储过程:异常工时_新增操作记录` +- `存储过程:工时校验_获取订单工序` +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:Prog_MES_LoadProcess` +- `存储过程:MES_ProductCenter_GetTask_zp` +- `存储过程:MES_ProductTask_WorkTimeSum` +- `存储过程:生产管理_装配中心_缺料查询` +- `存储过程:MES_人员工时记录_开始` +- `存储过程:MES_人员工时记录_结束` +- `存储过程:MES_ProductTask_Rest` +- `存储过程:MES_ProductTask_SendInspection` +- `存储过程:加工中心_收检_读取收检记录` +- `存储过程:MES_QulityInspection_ReceiveCheck` +- `存储过程:加工中心_异常工时_获取操作记录列表` +- `存储过程:加工中心_修改工时_保存修改记录` +- `接口:getB1 /ProductionOrders` +- `接口:posttm /stocktask/task/issueordertask` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.31 设备状态 + +页面路径:`src/views/ProductionManagement/DeviceStatus/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于查看现场状态,关注工位、设备、任务是否开工、进行中或完成。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`设备名称`、`参数名称`、`equipmentType`、`dataname`、`设备`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`序号`、`工位`、`生产订单`、`计划号`、`销售订单`、`物料名称`、`物料编码`、`顺序`、`工序名称`、`分配数`、`上序合格数`、`加工状态`。 +6. 继续横向滚动或展开表格,核对:`收料状态`、`下序名称`、`优先`、`完成数`、`收检合格数`、`收检不合格数`、`人员名称`、`加急数量`、`任务状态`、`开工时间`、`计划开始`、`计划完成`、`备注`、`收料数`。 +7. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_登录_工位与名称_查询`、`设备管理_设备状态_查询` 等后台过程更新。 + +**查询条件/输入项** +- `设备名称` +- `参数名称` +- `equipmentType` +- `dataname` +- `设备` + +**结果表重点列** +- `序号` +- `工位` +- `生产订单` +- `计划号` +- `销售订单` +- `物料名称` +- `物料编码` +- `顺序` +- `工序名称` +- `分配数` +- `上序合格数` +- `加工状态` +- `收料状态` +- `下序名称` +- `优先` +- `完成数` +- `收检合格数` +- `收检不合格数` +- `人员名称` +- `加急数量` +- `任务状态` +- `开工时间` +- `计划开始` +- `计划完成` +- `备注` +- `收料数` + +**页面按钮/状态/页签** +- `查询` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:设备管理_设备状态_查询` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.32 机加中心 + +页面路径:`src/views/ProductionManagement/MachiningCenter/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面是机加生产执行主界面,操作工按工位执行收料、开工、暂停、报工、检验、退库、发料和图纸查看。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`待我处理`、`我发起的`、`我已处理`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`指派对象`、`班次`、`物料编号`、`订单编号`、`optor`、`订单号`、`零件编号`、`生产状态`、`工位名称`、`用户ID`、`计划号`、`销售订单`。 +4. 如果仍查不到数据,继续补充条件:`计划开工_Start`、`计划开工_End`、`partCount`、`指派数量`、`selectedOperators`、`加班人员`、`特殊加班人员`、`是否加班`、`是否休息日`、`是否法定休息日`,或清空过窄条件后重新查询。 +5. 点击页面上的查询或刷新类按钮获取最新数据;如果页面自动加载,则先核对默认列表是否符合当前业务范围。 +6. 查询后先核对关键列:`序号`、`生产订单`、`销售订单`、`物料名称`、`物料编码`、`顺序`、`工序名称`、`分配数`、`上序合格数`、`加工状态`、`收料状态`、`加急数量`。 +7. 继续横向滚动或展开表格,核对:`下序名称`、`加急`、`优先`、`首检`、`序检`、`内码`、`备注`、`指派对象`、`完成数`、`任务状态`、`计划号`、`计划开始`、`计划完成`、`开工时间`。 +8. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +9. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +10. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +11. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +12. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +13. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +14. 按业务需要点击 `上一个 下一个`,操作前先确认选中行和输入内容。 +15. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除当前记录 关闭`,按确认提示执行。 +16. 需要维护已有记录时先选中目标行,再点击或触发表格内 `上一个 下一个 保存当前记录 删除当前记录 关闭`,修改字段后保存并等待成功提示。 +17. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定 关闭`,修改字段后保存并等待成功提示。 +18. 出现弹窗时按弹窗标题处理:`辅助结束`、`收料`、`开始加工`、`首检自检`、`序检自检`、`收检`、`检验记录`、`'生产订单检验详情 ' + currentInspectionRecord.计划号`;弹窗关闭前确认必填项已保存。 +19. 弹窗或表单内重点填写:`工位名称`、`当前订单号`、`合同号`、`零件编号`、`分配数`、`已完成`、`生产订单`、`销售订单`、`零件编码`、`当前时间`、`辅助工件`、`操作工位`、`操作人`、`调机人员`,提交前逐项核对。 +20. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +21. 保存或提交成功后重新点击查询,确认页面数据已通过 `生产管理_加工中心_获取设备人员`、`生产管理_加工中心_获取班次信息`、`加急订单_加急明细查询`、`生产管理_获取人员绑定`、`工时校验_获取订单工序` 等后台过程更新。 +22. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +23. 现场执行类操作必须按实际顺序处理:先确认任务和工位,再收料/开工,完成加工或装配后再报工/送检。 + +**查询条件/输入项** +- `指派对象` +- `班次` +- `物料编号` +- `订单编号` +- `optor` +- `订单号` +- `零件编号` +- `生产状态` +- `工位名称` +- `用户ID` +- `计划号` +- `销售订单` +- `计划开工_Start` +- `计划开工_End` +- `partCount` +- `指派数量` +- `selectedOperators` +- `加班人员` +- `特殊加班人员` +- `是否加班` +- `是否休息日` +- `是否法定休息日` + +**结果表重点列** +- `序号` +- `生产订单` +- `销售订单` +- `物料名称` +- `物料编码` +- `顺序` +- `工序名称` +- `分配数` +- `上序合格数` +- `加工状态` +- `收料状态` +- `加急数量` +- `下序名称` +- `加急` +- `优先` +- `首检` +- `序检` +- `内码` +- `备注` +- `指派对象` +- `完成数` +- `任务状态` +- `计划号` +- `计划开始` +- `计划完成` +- `开工时间` +- `收料数` +- `检测项目` +- `上限值` +- `下限值` +- `测量单位` +- `检验比例` +- `检具` +- `实测值` + +**页面按钮/状态/页签** +- `取 消` +- `确 定` +- `上一个 下一个` +- `删除当前记录 关闭` +- `上一个 下一个 保存当前记录 删除当前记录 关闭` +- `确定 关闭` +- `关闭` +- `新增异常工时` +- `编辑` +- `取消` +- `处理` +- `转办` +- `发起新流程` +- `查看进度` +- `完结` +- `查看详情` +- `点击上传` +- `添加审批人` +- `查询` +- `提 交` +- `确 认 完 结` +- `确定` +- `待我处理` +- `我发起的` +- `我已处理` + +**弹窗/表单重点项** +- `辅助结束` +- `收料` +- `开始加工` +- `首检自检` +- `序检自检` +- `收检` +- `检验记录` +- `'生产订单检验详情 ' + currentInspectionRecord.计划号` +- `检测详情` +- `报工` +- `异常工时` +- `新增工时记录` +- `编辑任务信息` +- `异常管控` +- `发起新流程` +- `处理任务` +- `流程进度详情` +- `转办流程` +- `完结流程` +- `上传附件` +- `退库单` +- `领料单` +- `图纸` +- `加急明细` +- `报工确认` +- `工位名称` +- `当前订单号` +- `合同号` +- `零件编号` +- `分配数` + +**后台处理/外部接口** +- `存储过程:生产管理_加工中心_获取设备人员` +- `存储过程:生产管理_加工中心_获取班次信息` +- `存储过程:加急订单_加急明细查询` +- `存储过程:生产管理_获取人员绑定` +- `存储过程:工时校验_获取订单工序` +- `存储过程:工时校验_获取订单列表` +- `存储过程:异常工时_新增操作记录` +- `存储过程:MES_操作记录_获取暂停状态` +- `存储过程:MES_操作记录_获取任务暂停状态` +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:Prog_MES_LoadProcess` +- `存储过程:查询字典` +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:MES_ProductTask_HelpStart` +- `存储过程:Prog_MES_GetProductOrder_byAID` +- `存储过程:MES_ProductCenter_GetTask` +- `存储过程:MES_ProductTask_WorkTimeSum` +- `存储过程:MES_ProductTask_HelpEnd` +- `存储过程:MES_ProductTask_MaterialRecieved` +- `存储过程:MES_ProductTask_Rest` +- `接口:posttm /stocktask/task/receiptordertask` +- `接口:getB1 /ProductionOrders` +- `接口:posttm /stocktask/task/issueordertask` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.33 外协管理 + +页面路径:`src/views/ProductionManagement/OutsourceMange/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于外协任务管理,处理外协派工、供应商、发料、收料、质检记录和 SAP 采购请求。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`外协备注`、`单重`、`打印数量`、`订单号`、`产品编码`、`产品名称`、`工序名称`、`派工状态`、`订单状态`、`执行状态`、`计划号`、`optor`。 +3. 如果仍查不到数据,继续补充条件:`recievCount`、`备注`、`order编号`、`plannum`、`productCode`、`itemName`、`processName`、`workstate`、`orderstate`、`dostate`,或清空过窄条件后重新查询。 +4. 点击 `查询 派工并同步SAP` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`selection`、`序号`、`生产订单`、`计划号`、`工序名称`、`物料名称`、`同步状态`、`上序合格数`、`指派数量`、`打印数量`、`发料数量`、`收货数量`。 +6. 继续横向滚动或展开表格,核对:`备注`、`单重`、`物料编码`、`打印次数`、`计划开始时间`、`计划完成时间`、`操作`、`时间`、`数量`。 +7. 需要留存或流转时点击 `打印`,导出/打印前确认当前查询条件和选中记录正确。 +8. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `发料` 提交。 +9. 按业务需要点击 `收货`,操作前先确认选中行和输入内容。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +11. 按业务需要点击 `历史记录`,操作前先确认选中行和输入内容。 +12. 需要查看明细时点击 `查看图纸`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +13. 需要查看明细时点击 `工艺图纸`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +14. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +15. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +16. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +17. 出现弹窗时按弹窗标题处理:`发料`、`收货`、`编辑`、`历史发料`、`图纸`;弹窗关闭前确认必填项已保存。 +18. 弹窗或表单内重点填写:`生产订单`、`销售订单`、`物料编号`、`分配数`、`上序合格数`、`已发料`、`发料工位`、`本次发料`、`操作人`、`发料数`、`已收货`、`本次收货`、`打印数量`、`单重`,提交前逐项核对。 +19. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +20. 保存或提交成功后重新点击查询,确认页面数据已通过 `生产管理_外协管理_外协历史查询`、`计划排产_派工`、`生产管理_外协管理_更新打印次数`、`生产管理_外协管理_更新备注`、`工艺管理_图纸维护_查看图纸` 等后台过程更新。 +21. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 + +**查询条件/输入项** +- `外协备注` +- `单重` +- `打印数量` +- `订单号` +- `产品编码` +- `产品名称` +- `工序名称` +- `派工状态` +- `订单状态` +- `执行状态` +- `计划号` +- `optor` +- `recievCount` +- `备注` +- `order编号` +- `plannum` +- `productCode` +- `itemName` +- `processName` +- `workstate` +- `orderstate` +- `dostate` + +**结果表重点列** +- `selection` +- `序号` +- `生产订单` +- `计划号` +- `工序名称` +- `物料名称` +- `同步状态` +- `上序合格数` +- `指派数量` +- `打印数量` +- `发料数量` +- `收货数量` +- `备注` +- `单重` +- `物料编码` +- `打印次数` +- `计划开始时间` +- `计划完成时间` +- `操作` +- `时间` +- `数量` + +**页面按钮/状态/页签** +- `查询 派工并同步SAP` +- `打印` +- `发料` +- `收货` +- `编辑` +- `历史记录` +- `查看图纸` +- `工艺图纸` +- `取 消` +- `确 定` +- `关 闭` +- `关闭` + +**弹窗/表单重点项** +- `发料` +- `收货` +- `编辑` +- `历史发料` +- `图纸` +- `生产订单` +- `销售订单` +- `物料编号` +- `分配数` +- `上序合格数` +- `已发料` +- `发料工位` +- `本次发料` +- `操作人` +- `发料数` +- `已收货` +- `本次收货` +- `打印数量` +- `单重` +- `备注` + +**后台处理/外部接口** +- `存储过程:生产管理_外协管理_外协历史查询` +- `存储过程:计划排产_派工` +- `存储过程:生产管理_外协管理_更新打印次数` +- `存储过程:生产管理_外协管理_更新备注` +- `存储过程:工艺管理_图纸维护_查看图纸` +- `存储过程:工艺管理_工艺维护_查看图纸` +- `存储过程:生产管理_外协管理_查询外协全部` +- `存储过程:生产管理_外协管理_外协发料查询` +- `存储过程:生产管理_外协管理_外协发料保存` +- `存储过程:生产管理_外协管理_外协收料保存` +- `接口:postB1 /PurchaseRequests` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.34 外协报表 + +页面路径:`src/views/ProductionManagement/OutsourceSheet/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于外协报表查询和导出,跟踪外协订单、供应商、数量、质检和结算状态。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单号`、`产品编码`、`产品名称`、`供应商`、`状态过滤`、`订单编号`、`order编号`、`contract编号`、`productCode`、`productName`、`QualityStatus`、`supplierName`。 +3. 如果仍查不到数据,继续补充条件:`statusFilter`、`合同号`、`零件编码`、`零件名称`、`质检类型`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`selection`、`供应商`、`订单号`、`计划号`、`合同号`、`零件编码`、`零件名称`、`工序名称`、`材质`、`数量`、`单价`、`金额`。 +7. 继续横向滚动或展开表格,核对:`发料日期`、`要求到货日期`、`外协预计到货`、`收货日期`、`收货数量`、`合格数量`、`报废数量`、`开票状态`、`发料数量`、`收料数量`。 +8. 需要留存或流转时点击 `Excel导出`,导出/打印前确认当前查询条件和选中记录正确。 +9. 保存或提交成功后重新点击查询,确认页面数据已通过 `生产管理_外协报表_导出`、`系统管理_人员管理_所有有效人员查询`、`工时校验_获取订单列表`、`工时校验_获取订单工序`、`生产管理_外协报表_查询` 等后台过程更新。 + +**查询条件/输入项** +- `订单号` +- `产品编码` +- `产品名称` +- `供应商` +- `状态过滤` +- `订单编号` +- `order编号` +- `contract编号` +- `productCode` +- `productName` +- `QualityStatus` +- `supplierName` +- `statusFilter` +- `合同号` +- `零件编码` +- `零件名称` +- `质检类型` + +**结果表重点列** +- `selection` +- `供应商` +- `订单号` +- `计划号` +- `合同号` +- `零件编码` +- `零件名称` +- `工序名称` +- `材质` +- `数量` +- `单价` +- `金额` +- `发料日期` +- `要求到货日期` +- `外协预计到货` +- `收货日期` +- `收货数量` +- `合格数量` +- `报废数量` +- `开票状态` +- `发料数量` +- `收料数量` + +**页面按钮/状态/页签** +- `查询` +- `Excel导出` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:生产管理_外协报表_导出` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:工时校验_获取订单列表` +- `存储过程:工时校验_获取订单工序` +- `存储过程:生产管理_外协报表_查询` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.35 人员绑定 + +页面路径:`src/views/ProductionManagement/PersonnelBinding/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于维护人员与工位绑定关系,控制或提示人员可操作的工位。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`searchWorkstationName`、`selectedPersonnel`、`工位名称`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 查询后先核对关键列:`序号`、`工位名称`、`工位号`、`绑定人员`、`操作`。 +5. 按业务需要点击 `绑定人员`,操作前先确认选中行和输入内容。 +6. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +7. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +8. 出现弹窗时按弹窗标题处理:`绑定人员`;弹窗关闭前确认必填项已保存。 +9. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_登录_工位与名称_查询`、`系统管理_人员管理_所有有效人员查询`、`系统管理_工位管理_工位绑定人员查询`、`系统管理_工位管理_工位绑定人员保存` 等后台过程更新。 + +**查询条件/输入项** +- `searchWorkstationName` +- `selectedPersonnel` +- `工位名称` + +**结果表重点列** +- `序号` +- `工位名称` +- `工位号` +- `绑定人员` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `绑定人员` +- `确 定` +- `取 消` + +**弹窗/表单重点项** +- `绑定人员` + +**后台处理/外部接口** +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:系统管理_工位管理_工位绑定人员查询` +- `存储过程:系统管理_工位管理_工位绑定人员保存` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.36 拣配任务 + +页面路径:`src/views/ProductionManagement/PickingTask/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于生产领料/拣配任务查询与处理,核对订单物料和库存任务。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编号`、`合同号`、`订单号`、`零件编号`、`位置`、`contract编号`、`order编号`、`part编号`、`attribute`、`positionstate`、`finishstate`、`销售订单`。 +3. 如果仍查不到数据,继续补充条件:`生产订单`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`序号`、`项目`、`计划号`、`生产订单号`、`物料名称`、`产成品物料编号`、`计划生产数`、`加急数量`、`计划数量`、`拣配日期`、`预计齐套时间`、`检验操作人`。 +6. 继续横向滚动或展开表格,核对:`检验时间`、`操作`。 +7. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `转至 完成 --> 生产订单 加急数量 物料编号 关闭` 提交。 +8. 出现弹窗时按弹窗标题处理:`加急明细`;弹窗关闭前确认必填项已保存。 +9. 保存或提交成功后重新点击查询,确认页面数据已通过 `加急订单_加急明细查询`、`生产管理_拣配任务_查询` 等后台过程更新。 + +**查询条件/输入项** +- `物料编号` +- `合同号` +- `订单号` +- `零件编号` +- `位置` +- `contract编号` +- `order编号` +- `part编号` +- `attribute` +- `positionstate` +- `finishstate` +- `销售订单` +- `生产订单` + +**结果表重点列** +- `序号` +- `项目` +- `计划号` +- `生产订单号` +- `物料名称` +- `产成品物料编号` +- `计划生产数` +- `加急数量` +- `计划数量` +- `拣配日期` +- `预计齐套时间` +- `检验操作人` +- `检验时间` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `转至 完成 --> 生产订单 加急数量 物料编号 关闭` + +**弹窗/表单重点项** +- `加急明细` + +**后台处理/外部接口** +- `存储过程:加急订单_加急明细查询` +- `存储过程:生产管理_拣配任务_查询` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.37 生产计划跟踪 + +页面路径:`src/views/ProductionManagement/ProductionPlanTrack/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于跟踪生产/装配计划执行进度,查看计划、完成、延期和异常情况。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编号`、`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`计划开始1`、`计划开始2`、`计划完成1`、`计划完成2`、`要求完工日期1`。 +3. 如果仍查不到数据,继续补充条件:`要求完工日期2`、`排产状态`、`自制件属性`、`指派对象`、`计划号`、`加急状态`、`是否外协`、`订单行号`、`订单拆分内码`、`优先级`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`expand`、`序号`、`工序名称`、`计划数量`、`指派对象`、`外协`、`计划开始时间`、`计划结束时间`、`实际开始时间`、`实际结束时间`、`完成进度`、`完成数量`。 +6. 继续横向滚动或展开表格,核对:`外协发料数量`、`合格数`、`不良数`、`任务状态`、`加工状态`、`销售订单`、`计划号`、`生产订单`、`产品编码`、`产品名称`、`加急数量`、`入库数量`、`要求完工日`、`排产`。 +7. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +8. 出现弹窗时按弹窗标题处理:`加急明细`;弹窗关闭前确认必填项已保存。 +9. 保存或提交成功后重新点击查询,确认页面数据已通过 `加急订单_加急明细查询`、`生产管理_生产计划跟踪`、`MES_OrderPlanned_DescriptionEdit`、`Prog_MES_LoadStations` 等后台过程更新。 + +**查询条件/输入项** +- `物料编号` +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `计划开始1` +- `计划开始2` +- `计划完成1` +- `计划完成2` +- `要求完工日期1` +- `要求完工日期2` +- `排产状态` +- `自制件属性` +- `指派对象` +- `计划号` +- `加急状态` +- `是否外协` +- `订单行号` +- `订单拆分内码` +- `优先级` + +**结果表重点列** +- `expand` +- `序号` +- `工序名称` +- `计划数量` +- `指派对象` +- `外协` +- `计划开始时间` +- `计划结束时间` +- `实际开始时间` +- `实际结束时间` +- `完成进度` +- `完成数量` +- `外协发料数量` +- `合格数` +- `不良数` +- `任务状态` +- `加工状态` +- `销售订单` +- `计划号` +- `生产订单` +- `产品编码` +- `产品名称` +- `加急数量` +- `入库数量` +- `要求完工日` +- `排产` +- `拣配` +- `开工` +- `终检` +- `加急` +- `优先级` +- `当前序` +- `工艺路线` + +**页面按钮/状态/页签** +- `查询` +- `关闭` + +**弹窗/表单重点项** +- `加急明细` + +**后台处理/外部接口** +- `存储过程:加急订单_加急明细查询` +- `存储过程:生产管理_生产计划跟踪` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:Prog_MES_LoadStations` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.38 生产任务管理 + +页面路径:`src/views/ProductionManagement/ProductionTaskManage/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于生产/装配任务管理,查询任务、查看工时、维护派工和任务说明。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`表单`、`日程`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`订单号`、`订单行号`、`订单拆分内码`、`指派对象编号`、`指派对象`、`指派数量`、`派工特殊说明`、`计划开始时间`、`计划完成时间`、`最晚开始时间`、`计划开工_Start`、`计划开工_End`。 +4. 如果仍查不到数据,继续补充条件:`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`性质`、`要求完工日期1`、`要求完工日期2`、`排产状态`、`工位`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 查询后先核对关键列:`序号`、`销售订单`、`生产订单`、`零件编码`、`产品名称`、`计划数`、`工序名称`、`性质`、`总工时`、`占用情况`、`指派对象编号`、`指派对象`。 +7. 继续横向滚动或展开表格,核对:`指派数量`、`计划开始时间`、`计划完成时间`、`最晚开始时间`、`要求完工日期`、`可执行`、`收料`、`开工`、`首检`、`巡检`、`外协`、`派工调整`、`外协通知`、`进度`。 +8. 按业务需要点击 `表单`,操作前先确认选中行和输入内容。 +9. 按业务需要点击 `日程`,操作前先确认选中行和输入内容。 +10. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `派工调整` 提交。 +11. 按业务需要点击 `外协通知`,操作前先确认选中行和输入内容。 +12. 按业务需要点击 `已发起`,操作前先确认选中行和输入内容。 +13. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +14. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +15. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +16. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +17. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +18. 出现弹窗时按弹窗标题处理:`派工调整`、`编辑任务信息`;弹窗关闭前确认必填项已保存。 +19. 弹窗或表单内重点填写:`指派对象`、`分配数量`、`计划开始时间`、`计划完成时间`、`最晚开始时间`、`派工特殊说明`、`优先级`、`未完成说明`、`派工特殊备注`,提交前逐项核对。 +20. 进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。 +21. 日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。 +22. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_登录_工位与名称_查询`、`MES_OrderPlanned_SingleTaskPlanned`、`MES_ProductTask_WorkTimeSum`、`MES_ProductAdmin_Query`、`Prog_MES_LoadStations` 等后台过程更新。 + +**查询条件/输入项** +- `订单号` +- `订单行号` +- `订单拆分内码` +- `指派对象编号` +- `指派对象` +- `指派数量` +- `派工特殊说明` +- `计划开始时间` +- `计划完成时间` +- `最晚开始时间` +- `计划开工_Start` +- `计划开工_End` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `性质` +- `要求完工日期1` +- `要求完工日期2` +- `排产状态` +- `工位` + +**结果表重点列** +- `序号` +- `销售订单` +- `生产订单` +- `零件编码` +- `产品名称` +- `计划数` +- `工序名称` +- `性质` +- `总工时` +- `占用情况` +- `指派对象编号` +- `指派对象` +- `指派数量` +- `计划开始时间` +- `计划完成时间` +- `最晚开始时间` +- `要求完工日期` +- `可执行` +- `收料` +- `开工` +- `首检` +- `巡检` +- `外协` +- `派工调整` +- `外协通知` +- `进度` +- `报废数` +- `序检` +- `测试` +- `入库` +- `优先级` +- `未完成说明` +- `派工特殊备注` +- `编辑` + +**页面按钮/状态/页签** +- `查询` +- `表单` +- `日程` +- `派工调整` +- `外协通知` +- `已发起` +- `编辑` +- `取 消` +- `确 定` +- `表单` +- `日程` + +**弹窗/表单重点项** +- `派工调整` +- `编辑任务信息` +- `指派对象` +- `分配数量` +- `计划开始时间` +- `计划完成时间` +- `最晚开始时间` +- `派工特殊说明` +- `优先级` +- `未完成说明` +- `派工特殊备注` + +**后台处理/外部接口** +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:MES_OrderPlanned_SingleTaskPlanned` +- `存储过程:MES_ProductTask_WorkTimeSum` +- `存储过程:MES_ProductAdmin_Query` +- `存储过程:Prog_MES_LoadStations` +- `存储过程:Prog_MES_SingleTaskPlanned` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:MES_ProductTask_Notice` +- `存储过程:MES_OrderPlanned_EditTaskPlanned` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 +- 日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。 + +### 21.39 生产任务汇总 + +页面路径:`src/views/ProductionManagement/ProductionTasksSum/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于生产/装配任务汇总,按订单、人员、工位、状态和时间统计任务执行情况。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`表单`、`日程`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`计划开工_Start`、`计划开工_End`、`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`性质`、`要求完工日期1`、`要求完工日期2`、`排产状态`。 +4. 如果仍查不到数据,继续补充条件:`工位`、`订单行号`、`订单拆分内码`、`优先级`、`未完成说明`、`派工特殊说明`、`计划开始时间`、`计划完成时间`、`contract编号`、`order编号`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 查询后先核对关键列:`序号`、`销售订单`、`生产订单`、`零件编码`、`产品名称`、`计划数`、`工序名称`、`总工时`、`占用情况`、`计划开始时间`、`计划完成时间`、`最晚开始时间`。 +7. 继续横向滚动或展开表格,核对:`要求完工日期`、`收料`、`进度`、`序检`、`优先级`、`未完成说明`、`派工特殊备注`、`编辑`、`最后编辑人`、`最后编辑时间`。 +8. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +9. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +11. 出现弹窗时按弹窗标题处理:`编辑任务信息`;弹窗关闭前确认必填项已保存。 +12. 弹窗或表单内重点填写:`优先级`、`未完成说明`、`派工特殊备注`,提交前逐项核对。 +13. 进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。 +14. 日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。 +15. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_登录_工位与名称_查询`、`MES_ProductTask_WorkTimeSum`、`生产管理_生产任务汇总`、`Prog_MES_LoadStations`、`MES_OrderPlanned_DescriptionEdit` 等后台过程更新。 + +**查询条件/输入项** +- `计划开工_Start` +- `计划开工_End` +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `性质` +- `要求完工日期1` +- `要求完工日期2` +- `排产状态` +- `工位` +- `订单行号` +- `订单拆分内码` +- `优先级` +- `未完成说明` +- `派工特殊说明` +- `计划开始时间` +- `计划完成时间` +- `contract编号` +- `order编号` + +**结果表重点列** +- `序号` +- `销售订单` +- `生产订单` +- `零件编码` +- `产品名称` +- `计划数` +- `工序名称` +- `总工时` +- `占用情况` +- `计划开始时间` +- `计划完成时间` +- `最晚开始时间` +- `要求完工日期` +- `收料` +- `进度` +- `序检` +- `优先级` +- `未完成说明` +- `派工特殊备注` +- `编辑` +- `最后编辑人` +- `最后编辑时间` + +**页面按钮/状态/页签** +- `查询` +- `编辑` +- `取 消` +- `确 定` +- `表单` +- `日程` + +**弹窗/表单重点项** +- `编辑任务信息` +- `优先级` +- `未完成说明` +- `派工特殊备注` + +**后台处理/外部接口** +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:MES_ProductTask_WorkTimeSum` +- `存储过程:生产管理_生产任务汇总` +- `存储过程:Prog_MES_LoadStations` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:MES_OrderPlanned_EditTaskPlanned` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 +- 日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。 + +### 21.40 销售外协管理 + +页面路径:`src/views/ProductionManagement/SaleOutsourceMange/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于外协任务管理,处理外协派工、供应商、发料、收料、质检记录和 SAP 采购请求。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`外协备注`、`单重`、`打印数量`、`订单号`、`产品编码`、`产品名称`、`工序名称`、`派工状态`、`发料状态`、`订单状态`、`执行状态`、`计划号`。 +3. 如果仍查不到数据,继续补充条件:`optor`、`recievCount`、`备注`、`order编号`、`plannum`、`productCode`、`itemName`、`processName`、`issuingstate`、`workstate`,或清空过窄条件后重新查询。 +4. 点击 `查询 派工并同步SAP` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`selection`、`序号`、`生产订单`、`计划号`、`物料名称`、`工序名称`、`物料编码`、`计划开始时间`、`计划完成时间`、`同步状态`、`上序合格数`、`指派数量`。 +6. 继续横向滚动或展开表格,核对:`打印数量`、`发料数量`、`收货数量`、`单重`、`打印次数`、`备注`、`操作`、`类型`、`时间`、`数量`、`操作人`、`质检类型`、`检验数量`、`合格数`。 +7. 需要留存或流转时点击 `打印`,导出/打印前确认当前查询条件和选中记录正确。 +8. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `发料` 提交。 +9. 按业务需要点击 `收货`,操作前先确认选中行和输入内容。 +10. 按业务需要点击 `更新`,操作前先确认选中行和输入内容。 +11. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +12. 按业务需要点击 `历史记录`,操作前先确认选中行和输入内容。 +13. 需要查看明细时点击 `查看图纸`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +14. 需要查看明细时点击 `工艺图纸`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。 +15. 按业务需要点击 `收发记录`,操作前先确认选中行和输入内容。 +16. 按业务需要点击 `质检记录`,操作前先确认选中行和输入内容。 +17. 出现弹窗时按弹窗标题处理:`发料`、`收货`、`编辑`、`收发记录`、`质检记录`、`图纸`;弹窗关闭前确认必填项已保存。 +18. 弹窗或表单内重点填写:`生产订单`、`销售订单`、`物料编号`、`分配数`、`上序合格数`、`已发料`、`发料工位`、`本次发料`、`操作人`、`发料数`、`已收货`、`本次收货`、`打印数量`、`单重`,提交前逐项核对。 +19. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +20. 保存或提交成功后重新点击查询,确认页面数据已通过 `计划排产_重置派工状态`、`生产管理_外协管理_外协历史查询`、`计划排产_派工`、`生产管理_外协管理_更新打印次数`、`生产管理_外协管理_更新备注` 等后台过程更新。 +21. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 + +**查询条件/输入项** +- `外协备注` +- `单重` +- `打印数量` +- `订单号` +- `产品编码` +- `产品名称` +- `工序名称` +- `派工状态` +- `发料状态` +- `订单状态` +- `执行状态` +- `计划号` +- `optor` +- `recievCount` +- `备注` +- `order编号` +- `plannum` +- `productCode` +- `itemName` +- `processName` +- `issuingstate` +- `workstate` + +**结果表重点列** +- `selection` +- `序号` +- `生产订单` +- `计划号` +- `物料名称` +- `工序名称` +- `物料编码` +- `计划开始时间` +- `计划完成时间` +- `同步状态` +- `上序合格数` +- `指派数量` +- `打印数量` +- `发料数量` +- `收货数量` +- `单重` +- `打印次数` +- `备注` +- `操作` +- `类型` +- `时间` +- `数量` +- `操作人` +- `质检类型` +- `检验数量` +- `合格数` +- `不合格数` + +**页面按钮/状态/页签** +- `查询 派工并同步SAP` +- `打印` +- `发料` +- `收货` +- `更新` +- `编辑` +- `历史记录` +- `查看图纸` +- `工艺图纸` +- `收发记录` +- `质检记录` +- `取 消` +- `确 定` +- `关 闭` +- `关闭` + +**弹窗/表单重点项** +- `发料` +- `收货` +- `编辑` +- `收发记录` +- `质检记录` +- `图纸` +- `生产订单` +- `销售订单` +- `物料编号` +- `分配数` +- `上序合格数` +- `已发料` +- `发料工位` +- `本次发料` +- `操作人` +- `发料数` +- `已收货` +- `本次收货` +- `打印数量` +- `单重` +- `备注` + +**后台处理/外部接口** +- `存储过程:计划排产_重置派工状态` +- `存储过程:生产管理_外协管理_外协历史查询` +- `存储过程:计划排产_派工` +- `存储过程:生产管理_外协管理_更新打印次数` +- `存储过程:生产管理_外协管理_更新备注` +- `存储过程:工艺管理_图纸维护_查看图纸` +- `存储过程:工艺管理_工艺维护_查看图纸` +- `存储过程:生产管理_外协管理_查询外协` +- `存储过程:生产管理_外协管理_外协发料查询` +- `存储过程:生产管理_外协管理_查询外协历史记录` +- `存储过程:生产管理_外协管理_查询质检记录` +- `存储过程:生产管理_外协管理_外协发料保存` +- `存储过程:生产管理_外协管理_外协收料保存` +- `接口:postB1 /PurchaseRequests` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.41 班次管理 + +页面路径:`src/views/ProductionManagement/ShiftManagement/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于维护班次、班次人员和排班基础数据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`selectedPersonnel`、`班次名称`、`开始时间`、`时间`。 +3. 点击页面上的查询或刷新类按钮获取最新数据;如果页面自动加载,则先核对默认列表是否符合当前业务范围。 +4. 查询后先核对关键列:`序号`、`班次`、`时间`、`绑定人员`、`操作`。 +5. 需要新增时点击 `添加新班次`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +6. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +7. 需要维护已有记录时先选中目标行,再点击或触发表格内 `保存`,修改字段后保存并等待成功提示。 +8. 按业务需要点击 `绑定`,操作前先确认选中行和输入内容。 +9. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除`,按确认提示执行。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +11. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +12. 出现弹窗时按弹窗标题处理:`绑定人员`;弹窗关闭前确认必填项已保存。 +13. 保存或提交成功后重新点击查询,确认页面数据已通过 `生产管理_班次管理_班次列表查询`、`系统管理_人员管理_所有有效人员查询`、`生产管理_班次管理_班次绑定人员查询`、`生产管理_班次管理_班次保存`、`生产管理_班次管理_班次删除` 等后台过程更新。 + +**查询条件/输入项** +- `selectedPersonnel` +- `班次名称` +- `开始时间` +- `时间` + +**结果表重点列** +- `序号` +- `班次` +- `时间` +- `绑定人员` +- `操作` + +**页面按钮/状态/页签** +- `添加新班次` +- `编辑` +- `保存` +- `取消` +- `绑定` +- `删除` +- `确 定` +- `取 消` + +**弹窗/表单重点项** +- `绑定人员` + +**后台处理/外部接口** +- `存储过程:生产管理_班次管理_班次列表查询` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:生产管理_班次管理_班次绑定人员查询` +- `存储过程:生产管理_班次管理_班次保存` +- `存储过程:生产管理_班次管理_班次删除` +- `存储过程:生产管理_班次管理_班次绑定人员保存` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.42 工时报表 + +页面路径:`src/views/ProductionManagement/Timesheet/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于查询工时记录,按人员、设备、任务、订单和日期统计工时。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`项目工时`、`作业者工时`、`任务工时`、`设备工时`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`contract编号`、`operator`、`productCode`、`processName`、`order编号`、`startDate`、`endDate`、`合同号`、`作业者`、`产品编码`、`工序`、`订单号`。 +4. 如果仍查不到数据,继续补充条件:`选择开始日期`、`选择日期`,或清空过窄条件后重新查询。 +5. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +6. 查询后先核对关键列:`合同号`、`产品名称`、`产品编码`、`订单编号`、`工序名称`、`操作人`、`计划/完成`、`报工数量`、`计划开始`、`计划完成`、`工时(h)`、`操作人/日期`。 +7. 继续横向滚动或展开表格,核对:`报工次数`、`订单号`、`开始时间`、`结束时间`、`类型`、`工序说明`、`异常说明`。 +8. 如果页面左侧或上方有树形结构,先选中组织、物料、菜单或产品节点,再查看右侧列表;新增子节点前确认父节点选中正确。 +9. 需要留存或流转时点击 `Excel导出`,导出/打印前确认当前查询条件和选中记录正确。 +10. 保存或提交成功后重新点击查询,确认页面数据已通过 `工时统计_项目工时_查询`、`工时统计_作业者工时_查询`、`工时统计_设备工时_查询`、`工时统计_任务工时_查询` 等后台过程更新。 + +**查询条件/输入项** +- `contract编号` +- `operator` +- `productCode` +- `processName` +- `order编号` +- `startDate` +- `endDate` +- `合同号` +- `作业者` +- `产品编码` +- `工序` +- `订单号` +- `选择开始日期` +- `选择日期` + +**结果表重点列** +- `合同号` +- `产品名称` +- `产品编码` +- `订单编号` +- `工序名称` +- `操作人` +- `计划/完成` +- `报工数量` +- `计划开始` +- `计划完成` +- `工时(h)` +- `操作人/日期` +- `报工次数` +- `订单号` +- `开始时间` +- `结束时间` +- `类型` +- `工序说明` +- `异常说明` + +**页面按钮/状态/页签** +- `查询` +- `Excel导出` +- `项目工时` +- `作业者工时` +- `任务工时` +- `设备工时` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:工时统计_项目工时_查询` +- `存储过程:工时统计_作业者工时_查询` +- `存储过程:工时统计_设备工时_查询` +- `存储过程:工时统计_任务工时_查询` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.43 加急任务 + +页面路径:`src/views/ProductionManagement/Urgent/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于维护加急任务,跟踪加急订单、加急数量和完成情况。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编号`、`合同号`、`订单号`、`零件编号`、`转至状态`、`完成状态`、`contract编号`、`order编号`、`part编号`、`attribute`、`changstate`、`finishstate`。 +3. 如果仍查不到数据,继续补充条件:`销售订单`、`生产订单`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`序号`、`销售订单`、`生产订单`、`物料名称`、`物料编码`、`工序名称`、`计划生产数`、`加急数量`、`收检数量`、`合格数`、`不合格`、`检验操作人`。 +6. 继续横向滚动或展开表格,核对:`检验时间`、`操作`。 +7. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `转至 完成 生产订单 加急数量 物料编号 关闭` 提交。 +8. 出现弹窗时按弹窗标题处理:`加急明细`;弹窗关闭前确认必填项已保存。 +9. 保存或提交成功后重新点击查询,确认页面数据已通过 `加急订单_加急明细查询`、`生产管理_加急件管理查询`、`生产管理_加急件管理_更新转至`、`生产管理_加急件管理_更新完成` 等后台过程更新。 + +**查询条件/输入项** +- `物料编号` +- `合同号` +- `订单号` +- `零件编号` +- `转至状态` +- `完成状态` +- `contract编号` +- `order编号` +- `part编号` +- `attribute` +- `changstate` +- `finishstate` +- `销售订单` +- `生产订单` + +**结果表重点列** +- `序号` +- `销售订单` +- `生产订单` +- `物料名称` +- `物料编码` +- `工序名称` +- `计划生产数` +- `加急数量` +- `收检数量` +- `合格数` +- `不合格` +- `检验操作人` +- `检验时间` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `转至 完成 生产订单 加急数量 物料编号 关闭` + +**弹窗/表单重点项** +- `加急明细` + +**后台处理/外部接口** +- `存储过程:加急订单_加急明细查询` +- `存储过程:生产管理_加急件管理查询` +- `存储过程:生产管理_加急件管理_更新转至` +- `存储过程:生产管理_加急件管理_更新完成` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.44 工时查询 + +页面路径:`src/views/ProductionManagement/Workhours/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面为业务页面,用户按查询条件筛选数据,在列表或弹窗中查看明细,并按页面按钮完成维护、提交或状态更新。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 先查看页签:`工序工时`;需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。 +3. 在查询区按需要填写筛选条件:`contract编号`、`productCode`、`order编号`、`datanum`、`startDate`、`endDate`、`合同号`、`产品编码`、`订单号`、`数据条数`、`选择开始日期`、`选择日期`。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`任务描述`、`报工次数`、`报工数量`、`工位名称`、`实际工时`、`辅助工时`、`平均程序工时`、`平均实际工时`、`平均辅助工时`、`工艺工时`、`合同号`、`订单号`。 +6. 继续横向滚动或展开表格,核对:`产品编码`、`产品名称`、`工序名称`。 +7. 如果页面左侧或上方有树形结构,先选中组织、物料、菜单或产品节点,再查看右侧列表;新增子节点前确认父节点选中正确。 +8. 保存或提交成功后重新点击查询,确认页面数据已通过 `生产管理_工时查询_工序工时_查询` 等后台过程更新。 + +**查询条件/输入项** +- `contract编号` +- `productCode` +- `order编号` +- `datanum` +- `startDate` +- `endDate` +- `合同号` +- `产品编码` +- `订单号` +- `数据条数` +- `选择开始日期` +- `选择日期` + +**结果表重点列** +- `任务描述` +- `报工次数` +- `报工数量` +- `工位名称` +- `实际工时` +- `辅助工时` +- `平均程序工时` +- `平均实际工时` +- `平均辅助工时` +- `工艺工时` +- `合同号` +- `订单号` +- `产品编码` +- `产品名称` +- `工序名称` + +**页面按钮/状态/页签** +- `查询` +- `工序工时` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:生产管理_工时查询_工序工时_查询` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +### 21.45 工时校验(副本) + +页面路径:`src/views/ProductionManagement/WorkHoursCheck/index - 副本.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于工时校验和 SAP 提交,用户核对报工记录后批量或单条校验并上传相关单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单编号`、`人员`、`taskid`、`taskorder`、`checker`、`timeRange`、`checkStatus`、`abnormalstatus`、`natureStatus`、`addwork`、`产品编码`、`产品名称`。 +3. 如果仍查不到数据,继续补充条件:`工序名称`、`工位名称`、`操作人`、`操作类别`、`操作数值`、`开始时间`、`结束时间`、`加工工时`、`总时长`、`工艺顺序`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`selection`、`序号`、`工时ID`、`人员`、`生产订单`、`物料编码`、`物料名称`、`工序名称`、`工位名称`、`报工类型`、`数量`、`开始时间`。 +7. 继续横向滚动或展开表格,核对:`结束时间`、`设备工时`、`人员工时`、`绑定设备数`、`工序说明`、`异常说明`、`校验状态`、`最后编辑人`、`最后编辑时间`、`操作`、`累计分钟`、`设备状态`、`累计秒数`。 +8. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `一键校验` 提交。 +9. 需要新增时点击 `新增工时记录`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +10. 按业务需要点击 `设备工时`,操作前先确认选中行和输入内容。 +11. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +12. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +13. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +14. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +15. 出现弹窗时按弹窗标题处理:`currentTask.已校验 ? '查看任务信息' : '编辑任务信息'`、`设备工时`、`新增工时记录`;弹窗关闭前确认必填项已保存。 +16. 弹窗或表单内重点填写:`生产订单`、`物料编码`、`物料名称`、`工序名称`、`工位名称`、`操作人`、`操作类别`、`操作数值`、`开始时间`、`结束时间`、`加工工时`、`人员工时`、`工序顺序`、`工作内容`,提交前逐项核对。 +17. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +18. 保存或提交成功后重新点击查询,确认页面数据已通过 `人员管理_人员信息查询_质检部门_查询`、`系统管理_人员管理_所有有效人员查询`、`工时校验_获取订单列表`、`工时校验_获取订单工序`、`工时校验_获取昨日之前操作记录列表` 等后台过程更新。 +19. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +20. 工时校验前先比对 MES 报工、设备工时和 SAP 工序资源;只对核对无误的记录执行提交。 + +**查询条件/输入项** +- `订单编号` +- `人员` +- `taskid` +- `taskorder` +- `checker` +- `timeRange` +- `checkStatus` +- `abnormalstatus` +- `natureStatus` +- `addwork` +- `产品编码` +- `产品名称` +- `工序名称` +- `工位名称` +- `操作人` +- `操作类别` +- `操作数值` +- `开始时间` +- `结束时间` +- `加工工时` +- `总时长` +- `工艺顺序` + +**结果表重点列** +- `selection` +- `序号` +- `工时ID` +- `人员` +- `生产订单` +- `物料编码` +- `物料名称` +- `工序名称` +- `工位名称` +- `报工类型` +- `数量` +- `开始时间` +- `结束时间` +- `设备工时` +- `人员工时` +- `绑定设备数` +- `工序说明` +- `异常说明` +- `校验状态` +- `最后编辑人` +- `最后编辑时间` +- `操作` +- `累计分钟` +- `设备状态` +- `累计秒数` + +**页面按钮/状态/页签** +- `查询` +- `一键校验` +- `新增工时记录` +- `设备工时` +- `关闭` +- `确 定` +- `取消` + +**弹窗/表单重点项** +- `currentTask.已校验 ? '查看任务信息' : '编辑任务信息'` +- `设备工时` +- `新增工时记录` +- `生产订单` +- `物料编码` +- `物料名称` +- `工序名称` +- `工位名称` +- `操作人` +- `操作类别` +- `操作数值` +- `开始时间` +- `结束时间` +- `加工工时` +- `人员工时` +- `工序顺序` +- `工作内容` +- `备注说明` + +**后台处理/外部接口** +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:工时校验_获取订单列表` +- `存储过程:工时校验_获取订单工序` +- `存储过程:工时校验_获取昨日之前操作记录列表` +- `存储过程:工时校验_获取资源` +- `存储过程:工时校验_获取设备数据` +- `存储过程:工时校验_保存校验记录` +- `存储过程:工时校验_批量保存校验记录` +- `存储过程:工时校验_获取操作人当天报工记录` +- `存储过程:工时校验_新增操作记录` +- `接口:getB1 /ProductionOrders` +- `接口:patchB1 ProductionOrders(${order.AbsoluteEntry})` +- `接口:postB1 /InventoryGenExits` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.46 工时校验 + +页面路径:`src/views/ProductionManagement/WorkHoursCheck/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于工时校验和 SAP 提交,用户核对报工记录后批量或单条校验并上传相关单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单编号`、`人员`、`taskid`、`taskorder`、`checker`、`timeRange`、`checkStatus`、`abnormalstatus`、`natureStatus`、`addwork`、`产品编码`、`产品名称`。 +3. 如果仍查不到数据,继续补充条件:`工序名称`、`工位名称`、`操作人`、`操作类别`、`操作数值`、`开始时间`、`结束时间`、`加工工时`、`总时长`、`工艺顺序`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`selection`、`序号`、`工时ID`、`人员`、`生产订单`、`物料编码`、`物料名称`、`工序名称`、`工位名称`、`报工类型`、`数量`、`开始时间`。 +7. 继续横向滚动或展开表格,核对:`结束时间`、`设备工时`、`人员工时`、`绑定设备数`、`工序说明`、`异常说明`、`校验状态`、`最后编辑人`、`最后编辑时间`、`操作`、`累计分钟`、`设备状态`、`累计秒数`。 +8. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `一键校验` 提交。 +9. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `直接校验` 提交。 +10. 需要新增时点击 `新增工时记录`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +11. 按业务需要点击 `设备工时`,操作前先确认选中行和输入内容。 +12. 按业务需要点击 `设备工时`,操作前先确认选中行和输入内容。 +13. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +14. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +15. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +16. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +17. 出现弹窗时按弹窗标题处理:`currentTask.已校验 ? '查看任务信息' : '编辑任务信息'`、`设备工时`、`新增工时记录`;弹窗关闭前确认必填项已保存。 +18. 弹窗或表单内重点填写:`生产订单`、`物料编码`、`物料名称`、`工序名称`、`工位名称`、`操作人`、`操作类别`、`操作数值`、`开始时间`、`结束时间`、`加工工时`、`人员工时`、`工序顺序`、`班次标准工时`,提交前逐项核对。 +19. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +20. 保存或提交成功后重新点击查询,确认页面数据已通过 `usp_BatchValidateWorkTime`、`usp_ValidateWorkTime`、`人员管理_人员信息查询_质检部门_查询`、`系统管理_人员管理_所有有效人员查询`、`工时校验_获取订单列表` 等后台过程更新。 +21. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +22. 工时校验前先比对 MES 报工、设备工时和 SAP 工序资源;只对核对无误的记录执行提交。 + +**查询条件/输入项** +- `订单编号` +- `人员` +- `taskid` +- `taskorder` +- `checker` +- `timeRange` +- `checkStatus` +- `abnormalstatus` +- `natureStatus` +- `addwork` +- `产品编码` +- `产品名称` +- `工序名称` +- `工位名称` +- `操作人` +- `操作类别` +- `操作数值` +- `开始时间` +- `结束时间` +- `加工工时` +- `总时长` +- `工艺顺序` + +**结果表重点列** +- `selection` +- `序号` +- `工时ID` +- `人员` +- `生产订单` +- `物料编码` +- `物料名称` +- `工序名称` +- `工位名称` +- `报工类型` +- `数量` +- `开始时间` +- `结束时间` +- `设备工时` +- `人员工时` +- `绑定设备数` +- `工序说明` +- `异常说明` +- `校验状态` +- `最后编辑人` +- `最后编辑时间` +- `操作` +- `累计分钟` +- `设备状态` +- `累计秒数` + +**页面按钮/状态/页签** +- `查询` +- `一键校验` +- `直接校验` +- `新增工时记录` +- `设备工时` +- `关闭` +- `确 定` +- `取消` + +**弹窗/表单重点项** +- `currentTask.已校验 ? '查看任务信息' : '编辑任务信息'` +- `设备工时` +- `新增工时记录` +- `生产订单` +- `物料编码` +- `物料名称` +- `工序名称` +- `工位名称` +- `操作人` +- `操作类别` +- `操作数值` +- `开始时间` +- `结束时间` +- `加工工时` +- `人员工时` +- `工序顺序` +- `班次标准工时` +- `工作内容` +- `备注说明` + +**后台处理/外部接口** +- `存储过程:usp_BatchValidateWorkTime` +- `存储过程:usp_ValidateWorkTime` +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:工时校验_获取订单列表` +- `存储过程:工时校验_获取订单工序` +- `存储过程:工时校验_获取昨日之前操作记录列表` +- `存储过程:工时校验_获取资源` +- `存储过程:工时校验_获取设备数据` +- `存储过程:工时校验_保存校验记录` +- `存储过程:工时校验_批量保存校验记录` +- `存储过程:工时校验_新增操作记录` +- `接口:getB1 /ProductionOrders` +- `接口:postB1 /InventoryGenExits` +- `接口:patchB1 ProductionOrders(${order.AbsoluteEntry})` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.47 工时编辑 + +页面路径:`src/views/ProductionManagement/WorkhoursEdit/index.vue` +所属模块:生产执行管理 +建议使用人员:操作工/班组长/生产主管 + +页面用途:该页面用于修正或补录工时/报工记录,处理异常工时。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单编号`、`人员`、`taskid`、`taskorder`、`checker`、`timeRange`、`checkStatus`、`abnormalstatus`、`natureStatus`、`addwork`、`产品编码`、`产品名称`。 +3. 如果仍查不到数据,继续补充条件:`工序名称`、`工位名称`、`操作人`、`操作类别`、`操作数值`、`开始时间`、`结束时间`、`加工工时`、`总时长`、`班次标准工时`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`selection`、`序号`、`工时ID`、`人员`、`生产订单`、`物料编码`、`物料名称`、`工序名称`、`工位名称`、`报工类型`、`数量`、`开始时间`。 +7. 继续横向滚动或展开表格,核对:`结束时间`、`设备工时`、`人员工时`、`校验状态`、`最后编辑人`、`最后编辑时间`、`操作`、`累计分钟`、`设备状态`、`累计秒数`。 +8. 需要新增时点击 `新增工时记录`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +9. 按业务需要点击 `设备工时`,操作前先确认选中行和输入内容。 +10. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +11. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +12. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +13. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +14. 出现弹窗时按弹窗标题处理:`currentTask.已校验 ? '查看任务信息' : '编辑任务信息'`、`设备工时`、`新增工时记录`;弹窗关闭前确认必填项已保存。 +15. 弹窗或表单内重点填写:`生产订单`、`物料编码`、`物料名称`、`工序名称`、`工位名称`、`操作人`、`操作类别`、`操作数值`、`开始时间`、`结束时间`、`加工工时`、`人员工时`、`班次标准工时`、`工序顺序`,提交前逐项核对。 +16. 保存或提交成功后重新点击查询,确认页面数据已通过 `人员管理_人员信息查询_质检部门_查询`、`系统管理_人员管理_所有有效人员查询`、`工时校验_获取订单列表`、`工时校验_获取订单工序`、`工时校验_获取操作记录列表` 等后台过程更新。 + +**查询条件/输入项** +- `订单编号` +- `人员` +- `taskid` +- `taskorder` +- `checker` +- `timeRange` +- `checkStatus` +- `abnormalstatus` +- `natureStatus` +- `addwork` +- `产品编码` +- `产品名称` +- `工序名称` +- `工位名称` +- `操作人` +- `操作类别` +- `操作数值` +- `开始时间` +- `结束时间` +- `加工工时` +- `总时长` +- `班次标准工时` + +**结果表重点列** +- `selection` +- `序号` +- `工时ID` +- `人员` +- `生产订单` +- `物料编码` +- `物料名称` +- `工序名称` +- `工位名称` +- `报工类型` +- `数量` +- `开始时间` +- `结束时间` +- `设备工时` +- `人员工时` +- `校验状态` +- `最后编辑人` +- `最后编辑时间` +- `操作` +- `累计分钟` +- `设备状态` +- `累计秒数` + +**页面按钮/状态/页签** +- `查询` +- `新增工时记录` +- `设备工时` +- `关闭` +- `确 定` +- `取消` + +**弹窗/表单重点项** +- `currentTask.已校验 ? '查看任务信息' : '编辑任务信息'` +- `设备工时` +- `新增工时记录` +- `生产订单` +- `物料编码` +- `物料名称` +- `工序名称` +- `工位名称` +- `操作人` +- `操作类别` +- `操作数值` +- `开始时间` +- `结束时间` +- `加工工时` +- `人员工时` +- `班次标准工时` +- `工序顺序` +- `工作内容` +- `备注说明` + +**后台处理/外部接口** +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:工时校验_获取订单列表` +- `存储过程:工时校验_获取订单工序` +- `存储过程:工时校验_获取操作记录列表` +- `存储过程:工时校验_获取设备数据` +- `存储过程:工时校验_保存校验记录` +- `存储过程:工时校验_新增操作记录` + +**操作注意事项** +- 生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。 + +## 21-8 质量管理 + +### 21.48 终检 + +页面路径:`src/views/QualityManagement/CheckTask/final.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于终检任务处理,录入最终检验结果。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编号`、`合同号`、`订单号`、`零件编号`、`零件名称`、`完工日期_Start`、`完工日期_End`、`检测日期_Start`、`检测日期_End`、`检测结果`、`检测人`、`检验状态`。 +3. 如果仍查不到数据,继续补充条件:`属性`、`检测类型编号`、`质检类型`、`内部合同号`、`零件编码`、`计划号`、`工序名称`、`检测数量`、`合格数`、`不合格数`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`序号`、`销售订单`、`生产订单`、`物料名称`、`物料编码`、`工序名称`、`计划生产数`、`加急数量`、`收检数量`、`收检合格数量`、`收检不合格数量`、`检验操作人`。 +6. 继续横向滚动或展开表格,核对:`检验时间`、`操作`、`零件编码`、`送检数量`、`合格数`、`不合格数`、`检测人`、`检测时间`、`检测说明`。 +7. 需要留存或流转时点击 `导出 -->`,导出/打印前确认当前查询条件和选中记录正确。 +8. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +9. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +10. 出现弹窗时按弹窗标题处理:`终检`、`终检记录`、`加急明细`;弹窗关闭前确认必填项已保存。 +11. 保存或提交成功后重新点击查询,确认页面数据已通过 `加急订单_加急明细查询`、`查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_质量检验_终检数据_查询`、`质量管理_质量检验_终检记录_查询` 等后台过程更新。 +12. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +13. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `物料编号` +- `合同号` +- `订单号` +- `零件编号` +- `零件名称` +- `完工日期_Start` +- `完工日期_End` +- `检测日期_Start` +- `检测日期_End` +- `检测结果` +- `检测人` +- `检验状态` +- `属性` +- `检测类型编号` +- `质检类型` +- `内部合同号` +- `零件编码` +- `计划号` +- `工序名称` +- `检测数量` +- `合格数` +- `不合格数` + +**结果表重点列** +- `序号` +- `销售订单` +- `生产订单` +- `物料名称` +- `物料编码` +- `工序名称` +- `计划生产数` +- `加急数量` +- `收检数量` +- `收检合格数量` +- `收检不合格数量` +- `检验操作人` +- `检验时间` +- `操作` +- `零件编码` +- `送检数量` +- `合格数` +- `不合格数` +- `检测人` +- `检测时间` +- `检测说明` + +**页面按钮/状态/页签** +- `查询` +- `导出 -->` +- `取 消` +- `关闭` + +**弹窗/表单重点项** +- `终检` +- `终检记录` +- `加急明细` + +**后台处理/外部接口** +- `存储过程:加急订单_加急明细查询` +- `存储过程:查询字典` +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:质量管理_质量检验_终检数据_查询` +- `存储过程:质量管理_质量检验_终检记录_查询` +- `存储过程:MES_QulityInspection_FinalCheck` +- `存储过程:工时校验_获取工序和指派对象` +- `接口:getB1 ProductionOrders` +- `接口:patchB1 ProductionOrders(` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.49 首检 + +页面路径:`src/views/QualityManagement/CheckTask/firstSpecial.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于首检或特殊首件检验,录入首件检测结果。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`ProcessID`、`OPCode`、`OrderNo`、`PartCode`、`PlanStart`、`PlanEnd`、`不装配`、`process`、`station`、`order编号`、`part编号`、`operation时间`。 +3. 如果仍查不到数据,继续补充条件:`工序`、`工位`、`生产订单`、`零件编号`、`时间`、`开始时间`,或清空过窄条件后重新查询。 +4. 查询后先核对关键列:`序号`、`工位编号`、`工序名称`、`操作类别`、`操作人`、`销售订单`、`生产订单`、`物料编号`、`物料名称`、`操作数值`、`开始时间`、`结束时间`。 +5. 继续横向滚动或展开表格,核对:`工时(分)`。 +6. 保存或提交成功后重新点击查询,确认页面数据已通过 `Prog_MES_LoadProcess`、`Prog_MES_LoadStations`、`MES_QulityInspection_FirstCheckRecords` 等后台过程更新。 +7. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `ProcessID` +- `OPCode` +- `OrderNo` +- `PartCode` +- `PlanStart` +- `PlanEnd` +- `不装配` +- `process` +- `station` +- `order编号` +- `part编号` +- `operation时间` +- `工序` +- `工位` +- `生产订单` +- `零件编号` +- `时间` +- `开始时间` + +**结果表重点列** +- `序号` +- `工位编号` +- `工序名称` +- `操作类别` +- `操作人` +- `销售订单` +- `生产订单` +- `物料编号` +- `物料名称` +- `操作数值` +- `开始时间` +- `结束时间` +- `工时(分)` + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:Prog_MES_LoadProcess` +- `存储过程:Prog_MES_LoadStations` +- `存储过程:MES_QulityInspection_FirstCheckRecords` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 + +### 21.50 原材料退库检 + +页面路径:`src/views/QualityManagement/CheckTask/materialReturn.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于材料退库检验,核对退库物料并录入检验结论。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单号`、`零件编号`、`零件名称`、`检测日期_Start`、`检测日期_End`、`状态`、`检测结果`、`单据码`、`检测人`、`检测类型编号`、`质检类型`、`零件编码`。 +3. 如果仍查不到数据,继续补充条件:`计划号`、`检测数量`、`合格数`、`不合格数`、`检测时间`、`检测说明`、`行号`、`订单类型`、`到货数`、`放行数量`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`序号`、`单据码`、`生产订单`、`物料名称`、`物料编码`、`到货时间`、`检验数量`、`合格数`、`不合格数`、`批次信息`、`检验人`、`检验时间`。 +7. 继续横向滚动或展开表格,核对:`备注`、`操作`。 +8. 按业务需要点击 `扫码`,操作前先确认选中行和输入内容。 +9. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +10. 出现弹窗时按弹窗标题处理:`退库检`、`扫码`;弹窗关闭前确认必填项已保存。 +11. 保存或提交成功后重新点击查询,确认页面数据已通过 `查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_原材料退库_查询`、`质量管理_原材料退库检验_更新` 等后台过程更新。 +12. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +13. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `订单号` +- `零件编号` +- `零件名称` +- `检测日期_Start` +- `检测日期_End` +- `状态` +- `检测结果` +- `单据码` +- `检测人` +- `检测类型编号` +- `质检类型` +- `零件编码` +- `计划号` +- `检测数量` +- `合格数` +- `不合格数` +- `检测时间` +- `检测说明` +- `行号` +- `订单类型` +- `到货数` +- `放行数量` + +**结果表重点列** +- `序号` +- `单据码` +- `生产订单` +- `物料名称` +- `物料编码` +- `到货时间` +- `检验数量` +- `合格数` +- `不合格数` +- `批次信息` +- `检验人` +- `检验时间` +- `备注` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `扫码` +- `取 消` + +**弹窗/表单重点项** +- `退库检` +- `扫码` + +**后台处理/外部接口** +- `存储过程:查询字典` +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:质量管理_原材料退库_查询` +- `存储过程:质量管理_原材料退库检验_更新` +- `接口:getB1 /ProductionOrders` +- `接口:posttm /stocktask/task/receiptordertask` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.51 其他入库检 + +页面路径:`src/views/QualityManagement/CheckTask/OtherInbound.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于其他入库检验,录入其他入库质检结果。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单号`、`零件编号`、`零件名称`、`检测日期_Start`、`检测日期_End`、`检测结果`、`检测人`、`检测类型编号`、`质检类型`、`零件编码`、`计划号`、`检测数量`。 +3. 如果仍查不到数据,继续补充条件:`合格数`、`不合格数`、`检测时间`、`检测说明`、`行号`、`订单类型`、`放行数量`、`order编号`、`partName`、`part编号`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`序号`、`生产订单`、`物料名称`、`物料编码`、`采购数`、`检验数量`、`合格数`、`不合格数`、`检验人`、`检验时间`、`备注`、`操作`。 +6. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +7. 出现弹窗时按弹窗标题处理:`入库检`;弹窗关闭前确认必填项已保存。 +8. 保存或提交成功后重新点击查询,确认页面数据已通过 `查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_其他入库_查询`、`质量管理_其他入库检验_更新` 等后台过程更新。 +9. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `订单号` +- `零件编号` +- `零件名称` +- `检测日期_Start` +- `检测日期_End` +- `检测结果` +- `检测人` +- `检测类型编号` +- `质检类型` +- `零件编码` +- `计划号` +- `检测数量` +- `合格数` +- `不合格数` +- `检测时间` +- `检测说明` +- `行号` +- `订单类型` +- `放行数量` +- `order编号` +- `partName` +- `part编号` + +**结果表重点列** +- `序号` +- `生产订单` +- `物料名称` +- `物料编码` +- `采购数` +- `检验数量` +- `合格数` +- `不合格数` +- `检验人` +- `检验时间` +- `备注` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `取 消` + +**弹窗/表单重点项** +- `入库检` + +**后台处理/外部接口** +- `存储过程:查询字典` +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:质量管理_其他入库_查询` +- `存储过程:质量管理_其他入库检验_更新` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 + +### 21.52 序检收检 + +页面路径:`src/views/QualityManagement/CheckTask/processReceive.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于工序收检/序检收检,质检人员接收工序检验任务并录入检验结果。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编号`、`合同号`、`订单号`、`零件编号`、`零件名称`、`完工日期_Start`、`完工日期_End`、`检测日期_Start`、`检测日期_End`、`检测结果`、`检测人`、`检测类别`。 +3. 如果仍查不到数据,继续补充条件:`检测状态`、`属性`、`检测类型编号`、`质检类型`、`内部合同号`、`零件编码`、`计划号`、`工序名称`、`检测数量`、`合格数`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`序号`、`销售订单`、`生产订单`、`物料名称`、`物料编码`、`工序名称`、`工位名称`、`加急数量`、`完成数量`、`检验数量`、`检验合格数量`、`检验不合格数量`。 +6. 继续横向滚动或展开表格,核对:`检验操作人`、`检验时间`、`检测说明`、`操作`。 +7. 需要留存或流转时点击 `导出 -->`,导出/打印前确认当前查询条件和选中记录正确。 +8. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +9. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +10. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +11. 出现弹窗时按弹窗标题处理:`收检`、`加急明细`、`图纸`;弹窗关闭前确认必填项已保存。 +12. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +13. 保存或提交成功后重新点击查询,确认页面数据已通过 `工艺管理_图纸维护_查看图纸`、`加急订单_加急明细查询`、`查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_质量检验_收检记录_查询` 等后台过程更新。 +14. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +15. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `物料编号` +- `合同号` +- `订单号` +- `零件编号` +- `零件名称` +- `完工日期_Start` +- `完工日期_End` +- `检测日期_Start` +- `检测日期_End` +- `检测结果` +- `检测人` +- `检测类别` +- `检测状态` +- `属性` +- `检测类型编号` +- `质检类型` +- `内部合同号` +- `零件编码` +- `计划号` +- `工序名称` +- `检测数量` +- `合格数` + +**结果表重点列** +- `序号` +- `销售订单` +- `生产订单` +- `物料名称` +- `物料编码` +- `工序名称` +- `工位名称` +- `加急数量` +- `完成数量` +- `检验数量` +- `检验合格数量` +- `检验不合格数量` +- `检验操作人` +- `检验时间` +- `检测说明` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `导出 -->` +- `取 消` +- `关闭` + +**弹窗/表单重点项** +- `收检` +- `加急明细` +- `图纸` + +**后台处理/外部接口** +- `存储过程:工艺管理_图纸维护_查看图纸` +- `存储过程:加急订单_加急明细查询` +- `存储过程:查询字典` +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:质量管理_质量检验_收检记录_查询` +- `存储过程:质量管理_序检收检_新增` +- `接口:postB1 /QueryService_PostQuery` +- `接口:postB1 /PurchaseDeliveryNotes` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.53 过程特殊检验 + +页面路径:`src/views/QualityManagement/CheckTask/processSpecial.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于过程特殊检验,录入特殊检验项目和结果。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 +3. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 + +### 21.54 采购入库检 + +页面路径:`src/views/QualityManagement/CheckTask/purchaseIncoming.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于采购/来料检验,质检人员录入来料检验数量、合格数、不合格数和检测明细。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编号`、`订单号`、`零件编号`、`零件名称`、`检测日期_Start`、`检测日期_End`、`状态`、`检测结果`、`单据码`、`检测人`、`检测类型编号`、`质检类型`。 +3. 如果仍查不到数据,继续补充条件:`零件编码`、`计划号`、`检测数量`、`合格数`、`不合格数`、`检测时间`、`检测说明`、`行号`、`订单类型`、`到货数`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`序号`、`单据码`、`生产订单`、`物料名称`、`物料编码`、`到货时间`、`位置`、`加急数量`、`到货数量`、`已检验数量`、`剩余待检`、`合格数`。 +7. 继续横向滚动或展开表格,核对:`不合格数`、`检验人`、`检验时间`、`备注`、`操作`。 +8. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +9. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +10. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +11. 出现弹窗时按弹窗标题处理:`入库检`、`扫码`、`图纸`、`加急明细`;弹窗关闭前确认必填项已保存。 +12. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +13. 保存或提交成功后重新点击查询,确认页面数据已通过 `加急订单_加急明细查询`、`工艺管理_图纸维护_查看图纸`、`查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_质量检验_入库质检任务_查询` 等后台过程更新。 +14. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `物料编号` +- `订单号` +- `零件编号` +- `零件名称` +- `检测日期_Start` +- `检测日期_End` +- `状态` +- `检测结果` +- `单据码` +- `检测人` +- `检测类型编号` +- `质检类型` +- `零件编码` +- `计划号` +- `检测数量` +- `合格数` +- `不合格数` +- `检测时间` +- `检测说明` +- `行号` +- `订单类型` +- `到货数` + +**结果表重点列** +- `序号` +- `单据码` +- `生产订单` +- `物料名称` +- `物料编码` +- `到货时间` +- `位置` +- `加急数量` +- `到货数量` +- `已检验数量` +- `剩余待检` +- `合格数` +- `不合格数` +- `检验人` +- `检验时间` +- `备注` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `取 消` +- `关闭` + +**弹窗/表单重点项** +- `入库检` +- `扫码` +- `图纸` +- `加急明细` + +**后台处理/外部接口** +- `存储过程:加急订单_加急明细查询` +- `存储过程:工艺管理_图纸维护_查看图纸` +- `存储过程:查询字典` +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:质量管理_质量检验_入库质检任务_查询` +- `存储过程:质量管理_来料检验_更新` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 + +### 21.55 销售退货检 + +页面路径:`src/views/QualityManagement/CheckTask/salesReturn.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于销售退货检验,录入退货质检结果。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单号`、`零件编号`、`零件名称`、`检测日期_Start`、`检测日期_End`、`检测结果`、`检测人`、`检测类型编号`、`质检类型`、`零件编码`、`计划号`、`检测数量`。 +3. 如果仍查不到数据,继续补充条件:`合格数`、`不合格数`、`检测时间`、`检测说明`、`行号`、`订单类型`、`doc_date`、`doc_type`、`external_num`、`task_items`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`序号`、`生产订单`、`物料名称`、`物料编码`、`采购数`、`检验数量`、`合格数`、`不合格数`、`检验人`、`检验时间`、`备注`、`操作`。 +6. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +7. 出现弹窗时按弹窗标题处理:`退货检`;弹窗关闭前确认必填项已保存。 +8. 保存或提交成功后重新点击查询,确认页面数据已通过 `查询字典`、`人员管理_人员信息查询_质检部门_查询`、`质量管理_质量检验_退货质检任务_查询`、`质量管理_销售退货检_更新` 等后台过程更新。 +9. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +10. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `订单号` +- `零件编号` +- `零件名称` +- `检测日期_Start` +- `检测日期_End` +- `检测结果` +- `检测人` +- `检测类型编号` +- `质检类型` +- `零件编码` +- `计划号` +- `检测数量` +- `合格数` +- `不合格数` +- `检测时间` +- `检测说明` +- `行号` +- `订单类型` +- `doc_date` +- `doc_type` +- `external_num` +- `task_items` + +**结果表重点列** +- `序号` +- `生产订单` +- `物料名称` +- `物料编码` +- `采购数` +- `检验数量` +- `合格数` +- `不合格数` +- `检验人` +- `检验时间` +- `备注` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `取 消` + +**弹窗/表单重点项** +- `退货检` + +**后台处理/外部接口** +- `存储过程:查询字典` +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:质量管理_质量检验_退货质检任务_查询` +- `存储过程:质量管理_销售退货检_更新` +- `接口:posttm /stocktask/task/issueordertask` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.56 质量中心 + +页面路径:`src/views/QualityManagement/QualityCenter/index.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面是质量综合处理中心,集中处理待检、收检、检测明细、不合格和 SAP/WMS 联动。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编号`、`用户ID`、`订单编号`、`订单号`、`零件编号`、`生产状态`、`工位名称`、`计划号`、`销售订单`、`送检`、`计划开工_Start`、`计划开工_End`。 +3. 如果仍查不到数据,继续补充条件:`ItemCode`、`用户名`、`isOvertime`、`加班人员`、`overtimeHours`、`overtimeShift`、`结束时间`、`备注`、`工序说明`、`异常说明`,或清空过窄条件后重新查询。 +4. 点击 `查询 缺料` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`序号`、`生产订单`、`销售订单`、`计划号`、`物料编码`、`物料名称`、`齐套`、`发料状态`、`拣配`、`操作`、`加急数量`、`分配数`。 +6. 继续横向滚动或展开表格,核对:`送检数`、`本次检数`、`检验数`、`合格数`、`任务状态`、`工序顺序`、`指派对象`、`计划开始`、`计划完成`、`二次派工`、`工序名称`、`开工时间`、`加工状态`、`收料数`。 +7. 按业务需要点击 `上一个 下一个`,操作前先确认选中行和输入内容。 +8. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除当前记录 关闭`,按确认提示执行。 +9. 需要维护已有记录时先选中目标行,再点击或触发表格内 `上一个 下一个 保存当前记录 删除当前记录 关闭`,修改字段后保存并等待成功提示。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定 关闭`,修改字段后保存并等待成功提示。 +11. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +12. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +13. 需要新增时点击 `新增异常工时`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +14. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +15. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +16. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +17. 出现弹窗时按弹窗标题处理:`首检自检`、`序检自检`、`收检`、`送检`、`异常工时`、`新增工时记录`、`编辑任务信息`、`退库单`;弹窗关闭前确认必填项已保存。 +18. 弹窗或表单内重点填写:`生产订单`、`零件编码`、`计划数量`、`当前时间`、`送检数`、`操作工位`、`操作人`、`操作类别`、`物料编码`、`物料名称`、`工序名称`、`指派对象`、`开始时间`、`结束时间`,提交前逐项核对。 +19. 涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。 +20. 保存或提交成功后重新点击查询,确认页面数据已通过 `生产管理_获取人员绑定`、`加急订单_加急明细查询`、`MES_人员工时记录_获取进行中任务2`、`MES_人员工时记录_获取进行中任务`、`工时校验_获取订单列表` 等后台过程更新。 +21. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +22. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `物料编号` +- `用户ID` +- `订单编号` +- `订单号` +- `零件编号` +- `生产状态` +- `工位名称` +- `计划号` +- `销售订单` +- `送检` +- `计划开工_Start` +- `计划开工_End` +- `ItemCode` +- `用户名` +- `isOvertime` +- `加班人员` +- `overtimeHours` +- `overtimeShift` +- `结束时间` +- `备注` +- `工序说明` +- `异常说明` + +**结果表重点列** +- `序号` +- `生产订单` +- `销售订单` +- `计划号` +- `物料编码` +- `物料名称` +- `齐套` +- `发料状态` +- `拣配` +- `操作` +- `加急数量` +- `分配数` +- `送检数` +- `本次检数` +- `检验数` +- `合格数` +- `任务状态` +- `工序顺序` +- `指派对象` +- `计划开始` +- `计划完成` +- `二次派工` +- `工序名称` +- `开工时间` +- `加工状态` +- `收料数` +- `优先` +- `首检` +- `序检` +- `检测项目` +- `上限值` +- `下限值` +- `测量单位` +- `检验比例` + +**页面按钮/状态/页签** +- `查询 缺料` +- `上一个 下一个` +- `删除当前记录 关闭` +- `上一个 下一个 保存当前记录 删除当前记录 关闭` +- `确定 关闭` +- `取 消` +- `确 定` +- `新增异常工时` +- `编辑` +- `取消` +- `关闭` +- `确定` + +**弹窗/表单重点项** +- `首检自检` +- `序检自检` +- `收检` +- `送检` +- `异常工时` +- `新增工时记录` +- `编辑任务信息` +- `退库单` +- `领料单` +- `缺料单` +- `报工结束` +- `图纸` +- `加急明细` +- `加班确认` +- `生产订单` +- `零件编码` +- `计划数量` +- `当前时间` +- `送检数` +- `操作工位` +- `操作人` +- `操作类别` +- `物料编码` +- `物料名称` +- `工序名称` +- `指派对象` +- `开始时间` +- `结束时间` +- `工作内容` +- `备注说明` + +**后台处理/外部接口** +- `存储过程:生产管理_获取人员绑定` +- `存储过程:加急订单_加急明细查询` +- `存储过程:MES_人员工时记录_获取进行中任务2` +- `存储过程:MES_人员工时记录_获取进行中任务` +- `存储过程:工时校验_获取订单列表` +- `存储过程:异常工时_新增操作记录` +- `存储过程:工时校验_获取订单工序` +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:Prog_MES_LoadProcess` +- `存储过程:质量管理_质检报工_任务查询` +- `存储过程:MES_ProductTask_WorkTimeSum` +- `存储过程:生产管理_装配中心_缺料查询` +- `存储过程:MES_人员工时记录_开始` +- `存储过程:生产管理_加工中心_班次信息` +- `存储过程:生产管理_加工中心_自动加班` +- `存储过程:MES_人员工时记录_结束` +- `存储过程:MES_ProductTask_Rest` +- `存储过程:MES_ProductTask_SendInspection` +- `存储过程:加工中心_收检_读取收检记录` +- `存储过程:MES_QulityInspection_ReceiveCheck` +- `接口:getB1 /ProductionOrders` +- `接口:posttm /stocktask/task/issueordertask` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +### 21.57 质检明细 + +页面路径:`src/views/QualityManagement/QualityDetails/index.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于查询质检明细,按订单、物料、检验类型和时间追溯检测记录。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`质检类型`、`开始日期`、`结束日期`、`订单号`、`合同号`、`零件编码`、`零件名称`、`订单编号`、`PageCurrent`、`pageSize`、`PageCount`、`ItemCount`。 +3. 如果仍查不到数据,继续补充条件:`order编号`、`contract编号`、`productCode`、`productName`、`QualityStatus`、`startDate`、`endDate`、`选择开始日期`、`选择日期`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`selection`、`序号`、`质检类型`、`零件编码`、`零件名称`、`销售订单号`、`生产订单号`、`工序名称`、`工位名称`、`供应商代码`、`检验数量`、`合格数`。 +7. 继续横向滚动或展开表格,核对:`不合格数`、`检测人`、`检测时间`、`检测说明`。 +8. 需要留存或流转时点击 `Excel导出`,导出/打印前确认当前查询条件和选中记录正确。 +9. 保存或提交成功后重新点击查询,确认页面数据已通过 `质量管理_质检明细_导出`、`系统管理_人员管理_所有有效人员查询`、`工时校验_获取订单列表`、`工时校验_获取订单工序`、`质量管理_质检明细_查询` 等后台过程更新。 +10. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `质检类型` +- `开始日期` +- `结束日期` +- `订单号` +- `合同号` +- `零件编码` +- `零件名称` +- `订单编号` +- `PageCurrent` +- `pageSize` +- `PageCount` +- `ItemCount` +- `order编号` +- `contract编号` +- `productCode` +- `productName` +- `QualityStatus` +- `startDate` +- `endDate` +- `选择开始日期` +- `选择日期` + +**结果表重点列** +- `selection` +- `序号` +- `质检类型` +- `零件编码` +- `零件名称` +- `销售订单号` +- `生产订单号` +- `工序名称` +- `工位名称` +- `供应商代码` +- `检验数量` +- `合格数` +- `不合格数` +- `检测人` +- `检测时间` +- `检测说明` + +**页面按钮/状态/页签** +- `查询` +- `Excel导出` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:质量管理_质检明细_导出` +- `存储过程:系统管理_人员管理_所有有效人员查询` +- `存储过程:工时校验_获取订单列表` +- `存储过程:工时校验_获取订单工序` +- `存储过程:质量管理_质检明细_查询` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 + +### 21.58 质量标准查询(副本) + +页面路径:`src/views/QualityManagement/QualityStandardQuery/index copy.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于查询或维护质量检验标准、检测项目、上下限和启用状态。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`零件号`、`零件编号`、`工序`、`工序编号`、`类型`、`类型编号`、`检验比例`、`检验项目`、`检验内容`、`上限值`、`下限值`、`单位`。 +3. 如果仍查不到数据,继续补充条件:`检具`、`备注`、`ID`、`part编号`、`process`、`type`,或清空过窄条件后重新查询。 +4. 点击 `查询 新增标准 修改 删除 确定 取 消` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`序号`、`零件号`、`工序`、`类型`、`检验项目`、`检验内容`、`上限值`、`下限值`、`单位`、`检验比例`、`检具`、`备注`。 +6. 继续横向滚动或展开表格,核对:`操作`。 +7. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定 取 消`,修改字段后保存并等待成功提示。 +8. 出现弹窗时按弹窗标题处理:`dialogTitle`;弹窗关闭前确认必填项已保存。 +9. 弹窗或表单内重点填写:`零件号`、`工序`、`类型`、`检验比例`、`检验项目`、`检验内容`、`上限值`、`下限值`、`单位`、`检具`、`备注`,提交前逐项核对。 +10. 保存或提交成功后重新点击查询,确认页面数据已通过 `查询零件号`、`Prog_MES_LoadProcess`、`查询字典`、`质量管理_检验标准表_新增`、`质量管理_检验标准表_查询` 等后台过程更新。 +11. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `零件号` +- `零件编号` +- `工序` +- `工序编号` +- `类型` +- `类型编号` +- `检验比例` +- `检验项目` +- `检验内容` +- `上限值` +- `下限值` +- `单位` +- `检具` +- `备注` +- `ID` +- `part编号` +- `process` +- `type` + +**结果表重点列** +- `序号` +- `零件号` +- `工序` +- `类型` +- `检验项目` +- `检验内容` +- `上限值` +- `下限值` +- `单位` +- `检验比例` +- `检具` +- `备注` +- `操作` + +**页面按钮/状态/页签** +- `查询 新增标准 修改 删除 确定 取 消` +- `确定 取 消` + +**弹窗/表单重点项** +- `dialogTitle` +- `零件号` +- `工序` +- `类型` +- `检验比例` +- `检验项目` +- `检验内容` +- `上限值` +- `下限值` +- `单位` +- `检具` +- `备注` + +**后台处理/外部接口** +- `存储过程:查询零件号` +- `存储过程:Prog_MES_LoadProcess` +- `存储过程:查询字典` +- `存储过程:质量管理_检验标准表_新增` +- `存储过程:质量管理_检验标准表_查询` +- `存储过程:质量管理_检验标准表_修改` +- `存储过程:质量管理_检验标准表_删除` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 + +### 21.59 质量标准查询 + +页面路径:`src/views/QualityManagement/QualityStandardQuery/index.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于查询或维护质量检验标准、检测项目、上下限和启用状态。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`物料编号`、`工序名称编号`、`检测类别编号`、`检测项目`、`理论值`、`上限值`、`下限值`、`测量单位`、`检验比例`、`检具`、`备注`、`AID`。 +3. 如果仍查不到数据,继续补充条件:`工序`、`检测类别`、`工序名称`,或清空过窄条件后重新查询。 +4. 点击 `查询 新增标准 修改 删除 确定 取 消` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`序号`、`物料编号`、`工序名称`、`检测类别`、`检测项目`、`上限值`、`下限值`、`测量单位`、`检验比例`、`检具`、`备注`、`操作`。 +6. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定 取 消`,修改字段后保存并等待成功提示。 +7. 出现弹窗时按弹窗标题处理:`dialogTitle`;弹窗关闭前确认必填项已保存。 +8. 弹窗或表单内重点填写:`物料编号`、`工序名称`、`检测类别`、`检具`、`检测项目`、`理论值`、`上限值`、`下限值`、`测量单位`、`检验比例`、`备注`、`检测类别编号`,提交前逐项核对。 +9. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_ProcessManagement_PartGet`、`Prog_MES_LoadProcess`、`查询字典`、`质量管理_检验标准表_新增`、`质量管理_检验标准表_查询` 等后台过程更新。 +10. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `物料编号` +- `工序名称编号` +- `检测类别编号` +- `检测项目` +- `理论值` +- `上限值` +- `下限值` +- `测量单位` +- `检验比例` +- `检具` +- `备注` +- `AID` +- `工序` +- `检测类别` +- `工序名称` + +**结果表重点列** +- `序号` +- `物料编号` +- `工序名称` +- `检测类别` +- `检测项目` +- `上限值` +- `下限值` +- `测量单位` +- `检验比例` +- `检具` +- `备注` +- `操作` + +**页面按钮/状态/页签** +- `查询 新增标准 修改 删除 确定 取 消` +- `确定 取 消` + +**弹窗/表单重点项** +- `dialogTitle` +- `物料编号` +- `工序名称` +- `检测类别` +- `检具` +- `检测项目` +- `理论值` +- `上限值` +- `下限值` +- `测量单位` +- `检验比例` +- `备注` +- `检测类别编号` + +**后台处理/外部接口** +- `存储过程:MES_ProcessManagement_PartGet` +- `存储过程:Prog_MES_LoadProcess` +- `存储过程:查询字典` +- `存储过程:质量管理_检验标准表_新增` +- `存储过程:质量管理_检验标准表_查询` +- `存储过程:质量管理_检验标准表_修改` +- `存储过程:质量管理_检验标准表_删除` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 + +### 21.60 不合格品处理 + +页面路径:`src/views/QualityManagement/Unqualified/index.vue` +所属模块:质量管理 +建议使用人员:质检员/质量主管 + +页面用途:该页面用于不合格品处理,记录处置方式、责任、原因和处理结果。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`质检类型`、`开始日期`、`结束日期`、`订单号`、`合同号`、`零件编码`、`零件名称`、`检测人`、`PageCurrent`、`pageSize`、`PageCount`、`ItemCount`。 +3. 如果仍查不到数据,继续补充条件:`order编号`、`contract编号`、`productCode`、`productName`、`checker`、`QualityStatus`、`startDate`、`endDate`、`选择开始日期`、`选择日期`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +6. 查询后先核对关键列:`序号`、`质检类型`、`零件编码`、`零件名称`、`内部合同号`、`计划号`、`工序名称`、`工位名称`、`供应商代码`、`检验数量`、`合格数`、`不合格数`。 +7. 继续横向滚动或展开表格,核对:`检测人`、`检测时间`、`检测说明`、`操作`。 +8. 需要留存或流转时点击 `Excel导出`,导出/打印前确认当前查询条件和选中记录正确。 +9. 需要留存或流转时点击 `打印`,导出/打印前确认当前查询条件和选中记录正确。 +10. 保存或提交成功后重新点击查询,确认页面数据已通过 `人员管理_人员信息查询_质检部门_查询`、`质量管理_不合格品处置_查询` 等后台过程更新。 +11. 录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。 + +**查询条件/输入项** +- `质检类型` +- `开始日期` +- `结束日期` +- `订单号` +- `合同号` +- `零件编码` +- `零件名称` +- `检测人` +- `PageCurrent` +- `pageSize` +- `PageCount` +- `ItemCount` +- `order编号` +- `contract编号` +- `productCode` +- `productName` +- `checker` +- `QualityStatus` +- `startDate` +- `endDate` +- `选择开始日期` +- `选择日期` + +**结果表重点列** +- `序号` +- `质检类型` +- `零件编码` +- `零件名称` +- `内部合同号` +- `计划号` +- `工序名称` +- `工位名称` +- `供应商代码` +- `检验数量` +- `合格数` +- `不合格数` +- `检测人` +- `检测时间` +- `检测说明` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `Excel导出` +- `打印` + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- `存储过程:人员管理_人员信息查询_质检部门_查询` +- `存储过程:质量管理_不合格品处置_查询` + +**操作注意事项** +- 质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。 + +## 21-9 销售与交付查询 + +### 21.61 销售订单状态 + +页面路径:`src/views/SaleManagement/saleorderstatus/index.vue` +所属模块:销售与交付查询 +建议使用人员:销售/计划/生产跟单人员 + +页面用途:该页面用于查询销售订单状态,跟踪销售订单在生产、交付和关闭过程中的状态。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`ItemCode`、`订单号`、`物料类型`、`合同号`、`产品编码`、`产品名称`、`工序名称`、`计划开始1`、`计划开始2`、`计划完成1`、`计划完成2`、`要求完工日期1`。 +3. 如果仍查不到数据,继续补充条件:`要求完工日期2`、`排产状态`、`指派对象`、`计划号`、`发货状态`、`入库状态`、`是否外协`、`订单行号`、`订单拆分内码`、`优先级`,或清空过窄条件后重新查询。 +4. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +5. 查询后先核对关键列:`expand`、`序号`、`工序名称`、`计划数量`、`指派对象`、`开始时间`、`结束时间`、`完成进度`、`完成数量`、`合格数`、`不良数`、`任务状态`。 +6. 继续横向滚动或展开表格,核对:`加工状态`、`操作`、`发货通知`、`销售订单`、`计划号`、`生产订单`、`产品名称`、`产品编码`、`入库数量`、`要求完工日`、`要求发货日`、`预计齐套时间`、`外协`、`齐套`。 +7. 按业务需要点击 `缺料`,操作前先确认选中行和输入内容。 +8. 需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 `关闭` 提交。 +9. 出现弹窗时按弹窗标题处理:`缺料单`;弹窗关闭前确认必填项已保存。 +10. 保存或提交成功后重新点击查询,确认页面数据已通过 `生产管理_装配中心_缺料查询`、`销售管理_销售订单状态`、`MES_OrderPlanned_DescriptionEdit`、`Prog_MES_LoadStations` 等后台过程更新。 + +**查询条件/输入项** +- `ItemCode` +- `订单号` +- `物料类型` +- `合同号` +- `产品编码` +- `产品名称` +- `工序名称` +- `计划开始1` +- `计划开始2` +- `计划完成1` +- `计划完成2` +- `要求完工日期1` +- `要求完工日期2` +- `排产状态` +- `指派对象` +- `计划号` +- `发货状态` +- `入库状态` +- `是否外协` +- `订单行号` +- `订单拆分内码` +- `优先级` + +**结果表重点列** +- `expand` +- `序号` +- `工序名称` +- `计划数量` +- `指派对象` +- `开始时间` +- `结束时间` +- `完成进度` +- `完成数量` +- `合格数` +- `不良数` +- `任务状态` +- `加工状态` +- `操作` +- `发货通知` +- `销售订单` +- `计划号` +- `生产订单` +- `产品名称` +- `产品编码` +- `入库数量` +- `要求完工日` +- `要求发货日` +- `预计齐套时间` +- `外协` +- `齐套` +- `拣配状态` +- `发料状态` +- `装配开工` +- `送检数量` +- `终检` +- `工艺` +- `排产` +- `优先级` + +**页面按钮/状态/页签** +- `查询` +- `缺料` +- `关闭` + +**弹窗/表单重点项** +- `缺料单` + +**后台处理/外部接口** +- `存储过程:生产管理_装配中心_缺料查询` +- `存储过程:销售管理_销售订单状态` +- `存储过程:MES_OrderPlanned_DescriptionEdit` +- `存储过程:Prog_MES_LoadStations` + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +## 21-10 系统维护 + +### 21.62 菜单管理 + +页面路径:`src/views/SystemMaintenance/MenuManagement/index.vue` +所属模块:系统维护 +建议使用人员:系统管理员/相关用户 + +页面用途:该页面用于维护系统菜单、按钮权限和路由配置。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`roleName`、`filterTextLeft`、`filterText`、`AuthButtonsAll`、`SearchData`、`AddData`、`EditData`、`DeleteData`、`filterTextRight`、`moduleName`、`输入关键字进行过滤`。 +3. 点击页面上的查询或刷新类按钮获取最新数据;如果页面自动加载,则先核对默认列表是否符合当前业务范围。 +4. 查询后先核对关键列:`selection`、`模块名称`、`模块路径`。 +5. 如果页面左侧或上方有树形结构,先选中组织、物料、菜单或产品节点,再查看右侧列表;新增子节点前确认父节点选中正确。 +6. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `returnModule(node, data)"> 移除`,按确认提示执行。 +7. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +8. 出现弹窗时按弹窗标题处理:`新增一级模块`;弹窗关闭前确认必填项已保存。 +9. 弹窗或表单内重点填写:`模块名称`,提交前逐项核对。 +10. 保存或提交成功后重新点击查询,确认页面数据已通过 `菜单系统模块_项目角色_查询数据_MESWORK` 等后台过程更新。 +11. 权限类修改保存后,需要让相关用户重新登录或刷新权限,再验证菜单、按钮和数据范围是否生效。 + +**查询条件/输入项** +- `roleName` +- `filterTextLeft` +- `filterText` +- `AuthButtonsAll` +- `SearchData` +- `AddData` +- `EditData` +- `DeleteData` +- `filterTextRight` +- `moduleName` +- `输入关键字进行过滤` + +**结果表重点列** +- `selection` +- `模块名称` +- `模块路径` + +**页面按钮/状态/页签** +- `returnModule(node, data)"> 移除` +- `取消` +- `确定` + +**弹窗/表单重点项** +- `新增一级模块` +- `模块名称` + +**后台处理/外部接口** +- `存储过程:菜单系统模块_项目角色_查询数据_MESWORK` + +**操作注意事项** +- 系统维护类数据会影响登录、权限、菜单和业务可选项,修改后需要验证。 + +### 21.63 操作日志 + +页面路径:`src/views/SystemMaintenance/OperationLog/index.vue` +所属模块:系统维护 +建议使用人员:系统管理员/相关用户 + +页面用途:该页面用于查询操作日志,追溯用户操作、报工或业务变更记录。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`订单编号`、`操作人`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`序号`、`订单编号`、`操作类别`、`工序名称`、`工位名称`、`操作人`、`合同号`、`物料编号`、`物料描述`、`操作数值`、`开始时间`、`结束时间`。 +6. 继续横向滚动或展开表格,核对:`人员工时`、`设备工时`、`最后编辑人`、`最后编辑时间`、`操作描述`。 +7. 弹窗或表单内重点填写:`订单编号`、`操作人`,提交前逐项核对。 +8. 保存或提交成功后重新点击查询,确认页面数据已通过 `系统管理_报工操作记录_查询` 等后台过程更新。 + +**查询条件/输入项** +- `订单编号` +- `操作人` + +**结果表重点列** +- `序号` +- `订单编号` +- `操作类别` +- `工序名称` +- `工位名称` +- `操作人` +- `合同号` +- `物料编号` +- `物料描述` +- `操作数值` +- `开始时间` +- `结束时间` +- `人员工时` +- `设备工时` +- `最后编辑人` +- `最后编辑时间` +- `操作描述` + +**页面按钮/状态/页签** +- `查询` + +**弹窗/表单重点项** +- `订单编号` +- `操作人` + +**后台处理/外部接口** +- `存储过程:系统管理_报工操作记录_查询` + +**操作注意事项** +- 系统维护类数据会影响登录、权限、菜单和业务可选项,修改后需要验证。 + +### 21.64 组织管理 + +页面路径:`src/views/SystemMaintenance/OrgManagement/index.vue` +所属模块:系统维护 +建议使用人员:系统管理员/相关用户 + +页面用途:该页面用于维护组织、部门或组织树基础资料。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`RoleFunctioning`、`角色功能`、`部门名称`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`部门名称`、`编辑`。 +6. 需要新增时点击 `新增`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +7. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +8. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除`,按确认提示执行。 +9. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +11. 出现弹窗时按弹窗标题处理:`新增部门`、`编辑部门`;弹窗关闭前确认必填项已保存。 +12. 弹窗或表单内重点填写:`部门名称`,提交前逐项核对。 +13. 保存或提交成功后重新点击查询,确认页面数据已通过 `菜单系统模块_项目角色_查询数据_MESWORK`、`菜单系统模块_项目角色_修改数据_MESWORK`、`菜单系统模块_项目角色_增加_MESWORK`、`菜单系统模块_项目角色_删除_MESWORK` 等后台过程更新。 + +**查询条件/输入项** +- `RoleFunctioning` +- `角色功能` +- `部门名称` + +**结果表重点列** +- `部门名称` +- `编辑` + +**页面按钮/状态/页签** +- `查询` +- `新增` +- `编辑` +- `删除` +- `确 定` +- `取消` + +**弹窗/表单重点项** +- `新增部门` +- `编辑部门` +- `部门名称` + +**后台处理/外部接口** +- `存储过程:菜单系统模块_项目角色_查询数据_MESWORK` +- `存储过程:菜单系统模块_项目角色_修改数据_MESWORK` +- `存储过程:菜单系统模块_项目角色_增加_MESWORK` +- `存储过程:菜单系统模块_项目角色_删除_MESWORK` + +**操作注意事项** +- 系统维护类数据会影响登录、权限、菜单和业务可选项,修改后需要验证。 + +### 21.65 人员管理 + +页面路径:`src/views/SystemMaintenance/PersonnelManagement/index.vue` +所属模块:系统维护 +建议使用人员:系统管理员/相关用户 + +页面用途:该页面用于维护人员账号、部门、角色和启用状态。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`PersonalName`、`PersonalroleValue`、`account`、`password`、`姓名`、`角色`、`工号`、`密码`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`姓名`、`工号`、`密码`、`角色`、`操作`。 +6. 需要新增时点击 `新增`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +7. 按业务需要点击 `重置密码`,操作前先确认选中行和输入内容。 +8. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +9. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除`,按确认提示执行。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +11. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +12. 出现弹窗时按弹窗标题处理:`title`、`title1`;弹窗关闭前确认必填项已保存。 +13. 弹窗或表单内重点填写:`姓名`、`工号`、`密码`、`角色`,提交前逐项核对。 +14. 保存或提交成功后重新点击查询,确认页面数据已通过 `人员管理_角色信息初始化查询_查询`、`登录基础数据_人员信息_切换是否用户`、`人员管理_人员信息查询_查询`、`人员管理_人员信息修改_编辑`、`人员管理_人员信息修改_删除` 等后台过程更新。 +15. 权限类修改保存后,需要让相关用户重新登录或刷新权限,再验证菜单、按钮和数据范围是否生效。 + +**查询条件/输入项** +- `PersonalName` +- `PersonalroleValue` +- `account` +- `password` +- `姓名` +- `角色` +- `工号` +- `密码` + +**结果表重点列** +- `姓名` +- `工号` +- `密码` +- `角色` +- `操作` + +**页面按钮/状态/页签** +- `查询` +- `新增` +- `重置密码` +- `编辑` +- `删除` +- `确 定` +- `取消` + +**弹窗/表单重点项** +- `title` +- `title1` +- `姓名` +- `工号` +- `密码` +- `角色` + +**后台处理/外部接口** +- `存储过程:人员管理_角色信息初始化查询_查询` +- `存储过程:登录基础数据_人员信息_切换是否用户` +- `存储过程:人员管理_人员信息查询_查询` +- `存储过程:人员管理_人员信息修改_编辑` +- `存储过程:人员管理_人员信息修改_删除` +- `存储过程:人员管理_人员信息新增_新增` +- `存储过程:WEB_摄像头查看权限_查询` +- `存储过程:WEB_登录基础数据_人员信息_重置密码` +- `存储过程:WEB_人员设备查看权限_查询` +- `存储过程:WEB_人员设备查看权限_权限切换` +- `存储过程:WEB_人员摄像头查看权限_权限切换` + +**操作注意事项** +- 系统维护类数据会影响登录、权限、菜单和业务可选项,修改后需要验证。 + +### 21.66 系统角色维护 + +页面路径:`src/views/SystemMaintenance/SystemRrolemaintenance/index.vue` +所属模块:系统维护 +建议使用人员:系统管理员/相关用户 + +页面用途:该页面用于维护系统角色和角色权限。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`RoleFunctioning`、`角色功能`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`角色功能`、`编辑`。 +6. 需要新增时点击 `新增`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +7. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +8. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除`,按确认提示执行。 +9. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +11. 出现弹窗时按弹窗标题处理:`新增角色`、`编辑角色`;弹窗关闭前确认必填项已保存。 +12. 弹窗或表单内重点填写:`角色功能`、`角色名称`,提交前逐项核对。 +13. 保存或提交成功后重新点击查询,确认页面数据已通过 `菜单系统模块_项目角色_查询数据_MESWORK`、`菜单系统模块_项目角色_修改数据_MESWORK`、`菜单系统模块_项目角色_增加_MESWORK`、`菜单系统模块_项目角色_删除_MESWORK` 等后台过程更新。 +14. 权限类修改保存后,需要让相关用户重新登录或刷新权限,再验证菜单、按钮和数据范围是否生效。 + +**查询条件/输入项** +- `RoleFunctioning` +- `角色功能` + +**结果表重点列** +- `角色功能` +- `编辑` + +**页面按钮/状态/页签** +- `查询` +- `新增` +- `编辑` +- `删除` +- `确 定` +- `取消` + +**弹窗/表单重点项** +- `新增角色` +- `编辑角色` +- `角色功能` +- `角色名称` + +**后台处理/外部接口** +- `存储过程:菜单系统模块_项目角色_查询数据_MESWORK` +- `存储过程:菜单系统模块_项目角色_修改数据_MESWORK` +- `存储过程:菜单系统模块_项目角色_增加_MESWORK` +- `存储过程:菜单系统模块_项目角色_删除_MESWORK` + +**操作注意事项** +- 系统维护类数据会影响登录、权限、菜单和业务可选项,修改后需要验证。 + +### 21.67 工位管理 + +页面路径:`src/views/SystemMaintenance/WorkstationManagement/index.vue` +所属模块:系统维护 +建议使用人员:系统管理员/相关用户 + +页面用途:该页面用于维护工位/资源主数据,并同步 SAP B1 Resources。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`RoleFunctioning`、`工位名称`、`工位号`。 +3. 点击 `查询` 刷新列表;状态按钮会切换任务范围。 +4. 列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。 +5. 查询后先核对关键列:`工位名称`、`工位号`、`编辑`。 +6. 需要新增时点击 `新增`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。 +7. 需要维护已有记录时先选中目标行,再点击或触发表格内 `编辑`,修改字段后保存并等待成功提示。 +8. 需要删除时先确认该记录没有正在使用的业务数据,再点击 `删除`,按确认提示执行。 +9. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +10. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确 定`,修改字段后保存并等待成功提示。 +11. 出现弹窗时按弹窗标题处理:`新增工位`、`编辑工位`;弹窗关闭前确认必填项已保存。 +12. 弹窗或表单内重点填写:`工位名称`、`工位号`,提交前逐项核对。 +13. 保存或提交成功后重新点击查询,确认页面数据已通过 `MES_登录_工位与名称_查询`、`系统管理_工位管理_工位信息修改`、`系统管理_工位管理_工位信息增加`、`系统管理_工位管理_工位信息删除` 等后台过程更新。 +14. 涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。 +15. 工位新增或修改会影响 SAP 资源、派工、报工和看板,保存后要用排产或生产执行页面验证工位是否可选。 + +**查询条件/输入项** +- `RoleFunctioning` +- `工位名称` +- `工位号` + +**结果表重点列** +- `工位名称` +- `工位号` +- `编辑` + +**页面按钮/状态/页签** +- `查询` +- `新增` +- `编辑` +- `删除` +- `确 定` +- `取消` + +**弹窗/表单重点项** +- `新增工位` +- `编辑工位` +- `工位名称` +- `工位号` + +**后台处理/外部接口** +- `存储过程:MES_登录_工位与名称_查询` +- `存储过程:系统管理_工位管理_工位信息修改` +- `存储过程:系统管理_工位管理_工位信息增加` +- `存储过程:系统管理_工位管理_工位信息删除` +- `接口:patchB1 /Resources('` +- `接口:postB1 /Resources` + +**操作注意事项** +- 系统维护类数据会影响登录、权限、菜单和业务可选项,修改后需要验证。 +- 该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。 + +## 21-11 首页与看板 + +### 21.68 首页看板 + +页面路径:`src/views/dashboard/index.vue` +所属模块:首页与看板 +建议使用人员:系统管理员/相关用户 + +页面用途:该页面是系统首页/看板入口,用户登录后查看系统概览或进入各业务模块。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +## 21-12 布局与导航 + +### 21.69 内容区域 + +页面路径:`src/views/layout/components/AppMain.vue` +所属模块:布局与导航 +建议使用人员:系统管理员/相关用户 + +页面用途:该文件属于系统布局和导航组件,用户通过它切换菜单、标签页、折叠菜单或退出登录,不维护具体业务单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +### 21.70 布局组件索引 + +页面路径:`src/views/layout/components/index.js` +所属模块:布局与导航 +建议使用人员:系统管理员/相关用户 + +页面用途:该文件属于系统布局和导航组件,用户通过它切换菜单、标签页、折叠菜单或退出登录,不维护具体业务单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +### 21.71 顶部导航 + +页面路径:`src/views/layout/components/Navbar.vue` +所属模块:布局与导航 +建议使用人员:系统管理员/相关用户 + +页面用途:该文件属于系统布局和导航组件,用户通过它切换菜单、标签页、折叠菜单或退出登录,不维护具体业务单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`Personnel_Number`、`userId`、`旧密码`、`新密码1`、`新密码2`、`oldPassword`、`newPassword1`、`newPassword2`。 +3. 点击页面上的查询或刷新类按钮获取最新数据;如果页面自动加载,则先核对默认列表是否符合当前业务范围。 +4. 按业务需要点击 `Log Off`,操作前先确认选中行和输入内容。 +5. 按业务需要点击 `取 消`,操作前先确认选中行和输入内容。 +6. 按业务需要点击 `提 交`,操作前先确认选中行和输入内容。 +7. 出现弹窗时按弹窗标题处理:`修改密码`;弹窗关闭前确认必填项已保存。 +8. 弹窗或表单内重点填写:`旧密码`、`新密码`、`确认密码`,提交前逐项核对。 +9. 保存或提交成功后重新点击查询,确认页面数据已通过 `登录基础数据_人员信息_登陆检查密码`、`登录基础数据_人员信息_修改密码`、`WEB_报警查询_未读报警记录_查询`、`WEB_报警查询_未读报警记录_未读条数查询` 等后台过程更新。 + +**查询条件/输入项** +- `Personnel_Number` +- `userId` +- `旧密码` +- `新密码1` +- `新密码2` +- `oldPassword` +- `newPassword1` +- `newPassword2` + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- `Log Off` +- `取 消` +- `提 交` + +**弹窗/表单重点项** +- `修改密码` +- `旧密码` +- `新密码` +- `确认密码` + +**后台处理/外部接口** +- `存储过程:登录基础数据_人员信息_登陆检查密码` +- `存储过程:登录基础数据_人员信息_修改密码` +- `存储过程:WEB_报警查询_未读报警记录_查询` +- `存储过程:WEB_报警查询_未读报警记录_未读条数查询` + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +### 21.72 侧边栏 + +页面路径:`src/views/layout/components/Sidebar/index.vue` +所属模块:布局与导航 +建议使用人员:系统管理员/相关用户 + +页面用途:该文件属于系统布局和导航组件,用户通过它切换菜单、标签页、折叠菜单或退出登录,不维护具体业务单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +### 21.73 侧边栏菜单项 + +页面路径:`src/views/layout/components/Sidebar/Item.vue` +所属模块:布局与导航 +建议使用人员:系统管理员/相关用户 + +页面用途:该文件属于系统布局和导航组件,用户通过它切换菜单、标签页、折叠菜单或退出登录,不维护具体业务单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +### 21.74 侧边栏菜单节点 + +页面路径:`src/views/layout/components/Sidebar/SidebarItem.vue` +所属模块:布局与导航 +建议使用人员:系统管理员/相关用户 + +页面用途:该文件属于系统布局和导航组件,用户通过它切换菜单、标签页、折叠菜单或退出登录,不维护具体业务单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +### 21.75 标签页导航 + +页面路径:`src/views/layout/components/TagsView.vue` +所属模块:布局与导航 +建议使用人员:系统管理员/相关用户 + +页面用途:该文件属于系统布局和导航组件,用户通过它切换菜单、标签页、折叠菜单或退出登录,不维护具体业务单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +### 21.76 系统布局 + +页面路径:`src/views/layout/Layout.vue` +所属模块:布局与导航 +建议使用人员:系统管理员/相关用户 + +页面用途:该文件属于系统布局和导航组件,用户通过它切换菜单、标签页、折叠菜单或退出登录,不维护具体业务单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +### 21.77 窗口自适应 + +页面路径:`src/views/layout/mixin/ResizeHandler.js` +所属模块:布局与导航 +建议使用人员:系统管理员/相关用户 + +页面用途:该文件属于系统布局和导航组件,用户通过它切换菜单、标签页、折叠菜单或退出登录,不维护具体业务单据。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。 + +**查询条件/输入项** +- 未识别到固定输入项,按现场页面提示操作。 + +**结果表重点列** +- 未识别到固定表格列,以页面实际显示为准。 + +**页面按钮/状态/页签** +- 未识别到明确按钮,以页面实际显示为准。 + +**弹窗/表单重点项** +- 未识别到固定弹窗或表单项。 + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 + +## 21-13 登录 + +### 21.78 系统登录 + +页面路径:`src/views/login/index.vue` +所属模块:登录 +建议使用人员:系统管理员/相关用户 + +页面用途:该页面是系统登录入口,用户输入工号、密码并选择角色后进入 MES;同时提供修改密码功能。 + +**具体操作步骤** +1. 从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。 +2. 在查询区按需要填写筛选条件:`username`、`password`、`checked`、`Account`、`beforPassword`、`newPassword`、`againPassword`、`用户名`、`密码`。 +3. 点击页面上的查询或刷新类按钮获取最新数据;如果页面自动加载,则先核对默认列表是否符合当前业务范围。 +4. 查询后先核对关键列:`角色名称`。 +5. 需要维护已有记录时先选中目标行,再点击或触发表格内 `修改密码`,修改字段后保存并等待成功提示。 +6. 按业务需要点击 `登录`,操作前先确认选中行和输入内容。 +7. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +8. 需要维护已有记录时先选中目标行,再点击或触发表格内 `确定`,修改字段后保存并等待成功提示。 +9. 出现弹窗时按弹窗标题处理:`请选择登录角色`、`修改密码`;弹窗关闭前确认必填项已保存。 +10. 弹窗或表单内重点填写:`工号`、`原始密码`、`新密码`、`确认密码`,提交前逐项核对。 + +**查询条件/输入项** +- `username` +- `password` +- `checked` +- `Account` +- `beforPassword` +- `newPassword` +- `againPassword` +- `用户名` +- `密码` + +**结果表重点列** +- `角色名称` + +**页面按钮/状态/页签** +- `修改密码` +- `登录` +- `取消` +- `确定` + +**弹窗/表单重点项** +- `请选择登录角色` +- `修改密码` +- `工号` +- `原始密码` +- `新密码` +- `确认密码` + +**后台处理/外部接口** +- 未发现页面级后台提交动作。 + +**操作注意事项** +- 操作后建议重新查询页面,确认列表、状态和明细已经刷新。 diff --git a/doc_old/技术开发详细方案_2026-05-27.docx b/doc_old/技术开发详细方案_2026-05-27.docx new file mode 100644 index 0000000000000000000000000000000000000000..6eb6961f3b7e13f0dd9749fe2a1a3ad7597244e1 GIT binary patch literal 138355 zcma%hb980Twr*_O?$}AkPIheDwr$(C)3I%JY+D`MNk=cgbMGDFocrD%Z;i3`u3c-^ zsyV-J)!Gv!F9iw)1N6@kCc7{2&-ecv(BBPXJ0p2VJ9{Sv`EN0_?+&PciLtS^V{!rm z0bzgu0U`ann1Q`Ly}ONdjzYif03%wb+&aHTiqrc*=wD!iN-5tE69J zNbesF1%hr{m%LgHbXj!MI=DIcZsR9-KS%>fX6Kb937wi~R&LP%)37=b%jTnV;CPxh zBakhpF(KPD_6qT{^kOm3uCet=@XiAad`54`)yjE7TQjLf6awGZ-rYXuTJOeYq0oF* z8KL>k4}U``E3F?Ph(Wg>rnuc7$)4gTlvV77Ne@)qRY_^de7u-UIg^p@*`_L8(#$wX zRinR+C86k2;Sf`V7+ODHG5-^0sh3wurEi#xzhOrHcbJXr98LbgIVMp?c90P%RxP*BlpMK@EHsDJhN?u&VLY6od0M%2wPBWjKZ$zv_q|-v%z58A_sF*R+#mx9y%S z$JTX6AdsaP$rKrga9u zE-7@9!cS2eE0xgt0-D_+uxaA#w)jlc^H|Ra^a85}FubrmB&WJyWGQ>l2NgLH{KPqe z@++4m5UgQ&U`PY_*gz;hFFJGEPg?U7Pzr`i)%J{zwlHf^H^b}g^al227yLyD+`+@R zo6C#+3j8Goz`ZJ(d;-gQ%fv4T!vGJ2_{;Unl&n7&-h2Q6-fv-kyq8;Zf>MoSQv>(3 zgYL>oJAdxfMQ}(Zscr&zIUGH|t&3uk-_x6aF@Dr7*xY_Tz2Cmvy*^|f>=@=HxPgBm zWWY6$@j|sjqS<8SeHFfd{3iouJ||qM-wa%RGl2RZ47fNs+u8iXL35&lT^1u+$PUFN zKT$8LwNfHSpfYeK<)wd#fymfIaJ0pyL3CYGsPxD6kF$DQWAFCUZ? z2jlAfh9@8#0sXqn@xT>Cf|tbUDJI6`>2s1=<0+n5Ch(dvLjJZqt+hH;r_yNMLRErQ zt1W3-sX1QMcASUvj-BKN^!BTfr~X8fF)G*}yilrEu)-WoCxRAKlSgHE?n_yCk2{hW ziMsRUw3nHDSBoFS+t?+uT{nHtv(N*x0kIKw;`$`v-bt&*#sf^jt0Vo{leW15bK0>? zjAz;pCvN9tCWYmWK7#s}T>K4Qq9$4o7-GETnG_`(ROhybwhBI4e3H4=s%2Xwm5Ear z!~42JQ7;Zzsyxu7ZLkL)^g6D$-rX#9Q}RC}${aVdl5Un>-MWH0mx4m%sm_@&El=1OKMc&Cb#If4$Pwp!%9- zzDE>T0|6oakBF1AhqZ~*KP(UHOgL_gqHmQ^fB6qkYp5qvYBZ>nmQ|_!iTtA=c{kYs z%?cO-%Ip_T?wWx#&hZoH)2DvTQa1S{X=NY?7SA8<=~H1#g+@8n-W)j=HIjQ3^yYWy-PY;yIOeh-H`EKJPDOo|D7``?^n1%foH$_hf-yM* z638YH+aAg>TibVMmF#Yh7U?L$U=C$4qmB@PAWV8wAWO7+-H$0N3>giyK!R9XFz@R0 zI!R@;+&_}=))wlD0AWxl&oud)Z1gh=JeT%M*^F%C2E#0uiXqN8oA`h-fp|54-Z$2O+4fRfJemOvGb74SSsZuO2mU%hL~JI9g8r6sK($4fz97?xFJ{nMY>%iL`OyZ!P*X z?g>E0!Eni1%&*JKxZTPni5gUok-Tf8lyD2EvGz@FdwwC)zvJ9VED2#675wDv60h~| z!G840*(K9=>czT9n}XvY0%$b|rQp zuTBoakTVrOY|@*4!PELSoAUpmGQPA?um!5Q0{c$fQ zNAElabg4%zJ2bWeH5bpLPJ9s1Bp3&2SdjAx&?2;ibZD3?nJqlJ=*F0PX%2sCCDx1s z?EM|5g8W{VPhlJvhz^T{`#OH%&(%oXk!0aMud4}Npg^q@=RkdzW1K+tUgHQro4KRk zU1iVTT@w7?T~u&Dlk!9vcO2uwgUo1Qp(d2@@DuV_IH?7+thB-k=IWt|vvqLb1qRsT z1t-d!c?E0XjeA)|8HyTJ%%{e83BbBTK(TIS(qJ72q^JbF_PZEUerq~bKfS7jx3_oh z!Jc-sfIY`NOYQpbema@<`{edv32NE(UIvzvMr4nH zg=+k{!HXF;Foq6N=W-yB;dJyNzIyF5xhS$_;wmfLP59k0FOoa;=;PI=V3Xh<(7M;i zqBOu1q0SJ}2BR2SDqh4z;ejPdf5RZ{5}eBNpo5%Na39$QIY@!O&+M#++&T&us})Sn zlh!JA-kz;H;Pl!QxZdpi(9ZEs<+3r6Zd7z`)(-rx~p&!P6ln3arN zUz_5gqouuZd%PKxu_{U)rqF~dv{Qe@ZqNAB9?u!l&lBNq8<-s`;~s0$hKlt<8{j}I zVdV4%a8ehrh_Kfe%_t&FeO;Mxetg{Yw0Cv(IP&$M$h@OD6gb876<(GBiz#Uc(Bu`M zi<-A#Lm6U4E5RN77QYdDWmN$w)raS6h`nKFB#LYdXC4DM&=i7?RFkaxLGJek&&kIE zTadj-kOlaT&JBJ|oytz@$kib@SVVu7y*|v$8?_Mw76gf1I5>0L`3KET%6Y#({-C{- z75GzS(I%nfqSkr*>Hu-YWZHa8rB^JFH1!xwD=9+<)kC9(=wbZD7`LCiBq82+N=l~h zhHO^4kIoo9gI01AMt1W`5`AL52XJm#CE?Q2N6uldfOGnV!#T*9QV}rCSX3b};;{5I zw%sktjeBDK8r#x%$X)nR@^_n$9 zy#~VD@~5oif(OKXRF})qrr-y-wK^tZ%x<$}~!#ez4-jHZGk9D(3i={tE;_yXbOeVI$J^noU-ZDkB4 zf41SQal=U2GTq7lWOGOGEl#J4qM z4XAe1(15OTZE~AmKbybpB1z&|6p{Hy@hEnO?WhuWB@Jodf98my;?nuHvM~JHjQ<|} zTKDMv43eLwa4_%JSc>Y{0bJZxWKaEp12#`7i98JH9mnAlp%={V%}&rC!3Q zY*#rM+PC80_%AP(eq;I%0Y8UvBlLIPjxe4)^W41Mz$V4U_1BJubdsF3We{-nnP1`R(MOIn*H`)+SL$71G+yoU0^yK)wA_CUea!TJ z-R}5(+^_V0J+A0|mcsYhe6b^{d41aXF7#~hYyWv3_jlm5p!x8v(Bt$!io5j?ILHBV zFK6H=a~;8AKeX#8+ElB}bYnrUd;E&?tn@Xefe$ypEoc_jYDd_X_fMq@E@Pk5BanM^ zG=SRjotuutuIdVjkC9TV0(Yi2$b@COKH=eoe!yNxHZv~a$+=g7tSXinNL7PM;7%vs%iIj)>wb*@(QfYjE~cO#=2+T{+_SYYEIYIQtd!C}Vc9Vw zXOH4R0mM;iA$_ZW+a5AvxyHYFqfn10(%L?(V%_4)XhsOS{4fUHH3_NvxAh8Qwz4#i52k2h-;4N3RKqd~NexLS0Mi2inQwD#8Y67E5R6=eC z`IFp|EsN338_dsI=?%HtQ1nc5ep9l(Mq0~8^Jta*M0LkLs}0x9Wm9RByrIT&lLau9 zASFELOg%M43q|{4v#hCor9VeWiX@izIIP1Cr1caQ*&Kj1mR(&M*hLw_DFG4y6^H5M z!S*c6Vmm8Dsv5g-EzX8uI*x>wo{l-uhLgrNs*G*IQqHtj^}8ui0~tu;-F)t4Yeg`Y zN{ne(;^4r$6WFwYSl#j3&{9IvYdqnVt%Y{s)lGgfe2c}`eG0eDtZ`!{D|e=|`Zj|( z`N+b|sY=I5(Zec<+eObx83hT$!&Bgx_=`78-*P}BLZ*rm*rE9!bWx<~w9MK36HnT^ z#Eicv%Q-9~1gfC6b_IGVsdb;OeU6|IAArizr#VfTGb@ckj^GK?MuIpAuR)RctWtGw zh6p&HQcL4kpR!JRxZ&>=5eAeju3gC;)S@E zy7;q(bRAuVEsnF2jm^mx!|n(3uTHe3;uRS#{O#Sbp{;ff>XQn6aEWj-%jueEsK&byss>T33r zMfMEWGEQ7PJdi^^0vD3(m&gy#y%n&?{CBABj5VE^A*;k$D5S-(A?~-yw-3Jiy>oVg zA8`1{#8h${f*+Q20%Y*7>7@$XZR{6%Yf$mZ9Qa1RmF5vlMIhK)wtbGdww0MApaNgZ zH-|2XRH-+#H4=#7j671z$U@vu=~1e76+~!^0^$U12UJz9njcfZ7FY$SWCbp^#)3o1 zR;h=cutsH57D0(oLFtld4M)OUV&YlWOhE7rmJtL7(+LsBNYRNxO9C-3^G*5s$Cn?` zyE5bqEyuLYba%Y(JYIuu_bTS73Khzmw(Xi~E|c%z{mTK`wJYaOXC*wKeFjjunp)Z! zF`uH{N~6vKPv?afw$&O|FYaQW>w#0%vSka_hb`&_5XQZ17&o}hkH4QP!q|zT?C5uK zb1rS&wgz$Ihie&j-&Qow;R)>on2JvKKr|_uc4kV_;-Sr2srPV!c77e+aKcm+RMA%( z4k$HOEu*~0NAUr%#v1^XicPUIc9G6nqmmNx)oJ>&z_{%$)I zWC>*|y^6kMP2?EXlnQyzjpTjE!8Y~q<>BTUire)822%v@;`BMe<_RBGo`accJs1ML za+v1QRu?8t~(5OppAo)HUm@Qa;XQFW@FrcaOJ zw3W$T)nxs7mG(A4Xl{@?qchzJvwaY;lS#IL`oh1oKFUXqKq$hnX+{OzJMIm?Fpn6K zLnrg8jpEXo0`TRy3fqI&`AI zHh)Y_kFT=sbw_e#qs~?3aiUs@tQ*cPGqY1W`m{GM!|jH3i((coYGOgl&{t}*-!C^k z?eYF_;Wj%UAp4PT$hL8+lv|_YI9L8Rgyrwi8rBV4==13|#30XHPK(4lxYXer6*p$e z8~cPlQv?)k9|0Afa0dvjC(ry45oSz$iDU<8F#wA;mDYj5M(u@QV|g4=Dkqt$m$!A; z%7eYbJmoM}C5clu9a^;o@UcpZD;*|G&j-4Ri_Kzt^HPjOC>pO#$pqKXkvIY|gHBLC zb7ozEU>$rQW$mDbUS((zf~j%UfvuBr@v!k8vl5vR54lHd(@qp;MHU%)bHi@<(;!9= zA6qW+Pcbd2C?8OpV~NDdntBnPgl_gRMTP!*+JL5o%TdKvPL0Ue4Z+IxbvXI(MpwoF zC1!6K=FyHtFY!r|He;BSIuk!rmMr=_vqlw;BX&W2dOqt-OuQ#|B2>joee8{S#@ag+ z{qkkwOFbJQb%u!m7&fjvbSqqWxUY0{Br*PGV`kz4$E3^Xlhw76Y{^$;WTxB{ZUl}x>ya8EZ&Gpj)P-+7pq+3*%{;=py`USM526}zJ`|Tl> zVK=V^tSG75(%HViIp@D@W;C!%s~?xvfMeqG>j=u#ks1)2j4Q6;3?98N8%Q+hN0pO} zY9_1JNF7C1<(+mrbT>fJgv)W+#w_}FWmodPvfXAW=d-7?6~wnE;kEKRd7L^ZFti1eo0HR1r&Xq6xircve`Px6s;4FQx^%lH^^cLC3~feILvfhBIsgXd zig?D-hLbZ!SJ&#^4@fB8puJeq8HuVbz&0QM%XN&=!LP1<0tRXmg8NsA;$N=gch$(n z#>Ce7pMS554=*<~u@;8NPrs429b&|{D--WDI_A5as~FkiMocS%3%0gSULH>(U=yuQ za6^fZ`V~GexPYlQVr!!ycsBi@f~}Z78|$E_o=U2zn)e%ZLd})&Yx`ccJ~m>#dfneZ?19|*c;DJNAR`R;(8Bk z=1Nm@K3<|D6i+|d?A&{qn)kl&KK;IWKS%o0o}@4M>RRh-%MBuYlo;?gd%f;M-7=>> z7;M&Ao8NMNZ_kw%bQ^V2P?VByTOwTMu6A1NSGWFlWoN_BPTy=Cn~lizYxZ+AbThJq znTZm8?&jud4q#|?JG4Z7!+pD{Y9%Lsj%6zgB`4q6ZgO+JlY@Nf4PSbWV;gaeiHZBU zGqT>XpkZow9}1fErn?W;z4{~kb4)6l=u_^Pfn2RC-S=sTzJ4_B59w^!S@)7SW$a#iRv=RFPM*h5K0kPc`Qur=zk4cK0*gqQec zZvr!JugYF(${O<81&vqRbM-zt1Ao2d22_!Knq>~N1)(*3i@O7#RGybdUpsF`Kak2F zp+@bLr{fzx!{E9icnHY1eeq7tSIIm5mmuv0e-{j)l>hPxU;>eluUhKKQ+<%{2Hbc~0 ziCyTmKJts>FRrX2>yN-EmB0_7Q|${6n5G#F~Cp}vev674~iqGGaM5bs_crRwjQ zr_*iY?|m73-+xE%a(+5l`0{)ihMG1%o+x?~-LbuR-%>x=o!-Iz8$LjwZfe*OLC1?Y zA~~Pze!=sS)M*!DMon8QmSD?S@GyKa%Luv;JMncTAj}fFNxV-`tG4Q@aeVQ)Sc8wFJV{(q46UN0|U+Lr;SXkzDB!jsz2qSYjTO#BTeqsEa?% zC06|OKCh1hMJ!Qqrc1_C2)u($g(81{rHho}LdW4`WNvn!>YPND%hblkT^WrBF<(OE zuH<&7;(xvHmmxM!`*tz9q3Si6^-fQFOYVFOTz+NqRoz|L;()hM)H&T2B%yjCT$Eyz zyqpZ*tKAHRytOt`5Y8U^IvJmiW?Z$d&9G}?`VJhgJF0YVcfv*!1!;O3K(I)ID`;Roj(zCg0c{A3JC!PrsK{N0~X`?{9>>nKd|# zXsHpJ=HV%ljuAOzi$+vz-Oc_&OAY9&tu;$XMs zO>sPc|4>}bXuGA)#!G-9$6K4+dg``2mHpF@IOQ7>Wa;DC>SF5pI@l=In9=LPr))qn zF;}!02fn31WcK!^H1&Hs&47y?_f7Qq(pLUx*h|>{gm`kwgivP)vzmcl{qOtc{w3;K zO8c=ZT2zSUuPq`O|736GZ-DX1=3-x@} zh`S+KGuq}TYtbr(Exc`hcK1eyccIHU4gpAlxlUJ6cdGSH0eG$LYi(HB#zNUGbYq(S z6zyi7uDkosP9G+2@5+xqtNYbTYwavi_jy*N!bM8gUF?NShZ|fDjXsx6>lhspg+X49 zoh>Wdi>NydJ_FWW5~dpH>;RcdoY{^9yX6jqX1_VlbOF>$jcs8|rPG89p#_C$_2nUT?%)8hs`B z-MNx-F>*$Doq2%ILo@l{-BR-bdW$Kpf4V9SxW&l+WV`Cer2cbKQybsj^!R#1|j3I?|bl_r|*Bvml?^l8U-sb#?^cQI12N+1@QT=XJT0^k@*Oa)VU zPQQt@k&r2Bii7QX0;39Z0sTufrlB|!rA~M&#)ed_-G0_J=6KzBg(C^wo56ieJ8b`8 zXYiJ<%>%SB@r8!R=00=|bPBpu^5%f~sx{uqUrc^iOgW{uVJCJ(gU+OaalmKkBsOdinl=Aq0S zd(*x*7$m+Mwb+|=9~C2oHz;m7gIqBgk?Q40Zy%s2Z7yV%R6^hNX>?4G?+&~(O1fWN z4>o3-xgKXXX5HQ_aw{7h)lY66#LP)VV0c?u<0VY5%7I|~Ey^DM(u7OXWUPVXrUDBk zUlVq%C!+eQ;gkl~b%Z^HW!cZgh#(iDL4GfKU!Qc5f{tjLPA#4J@(Cw%DAX!fxM`LO zx87-o{A$k@?Dm|!bWW7DtHnh(Dhrk9o38FLPifbO<0vs>{q}e7BTgB z8trO}-OG}YBr(WYPQkt8)=RtRQIS>l3a3FPqkyW#&Dt=r#yi=KoU4TQ9l0-TB6F#DW zt34Bscq^4cHxXR_=Z9hZVl}O1Xi}SN6(()X(M_+dpGnp-*RB3(I;~`TMNdeZmH~<4 zlElxsM|E3Jg}pP7L-JI_1F2F%tAGmdiWQqO>kg|fnyrhCniZP%U7JlXRef~pqoW%r znBEFp{0=!Gk>y~kT2`md4vtp>p{d;Xe4%>q{Wt6GVX5c)#S`zhTQS(UT!H!JWSSOa znoC^n`H1tO;I;a~%L6WqD#E-7f>xh~jKRfu!IsOtXw9MNhafV0c)h=1GjT;o5*yi! zNB5VQB<}P1Oz@(gGgM>TwRPJAvocC?hfRw`eS@6}-YdpT4mOQXM}+7ECT9tRNVx~U zZhrCH@HKt)Epp@Tc*mCcn)&)(fn&6MJ%h%KJ%@D=ekuHTu+iuV5CK0p@ud=!{K@Uc zbzV~ZR*&+7tPZ|639eQEdczmzY~<>>lp&WCtn*%*=_2M2I^Vck;`N3j4(XTEUz-r^ z&;%^mlT{Tb?7`PY)l!35Y2ap|< zhQsO!KO6o`lS7BKBvPrBBTNF_$ymIZn!JMLk@uL8w=yico5hAWxmG&@Kz*bp-@OnPh;Og*o^3}&@Xu;VH#?62}l^}8)fh*gH?=q;oJu_JlG>$eHeCN)sUm9 z^I1(ZJ7boe3tB!^Q<$d;z=X5RR&()NG;8j0XlUKcLjxy&)>hAK=7)mJX=gp+2z-d} z>(!oUsdjRw@H?#F*op;Ck3vqe5P@oSrjF-wp!`>z1&$ESzTLepQ2lST1XMNL7!X7ERk*i(?Dxg+}>FHG3$@JJ^eg_)Q;PTR94R)=}d` zTXzSzN>k1THK9NI&-ZI;WuJT^D2cnSw4sDj;TP;m!c~;^gXtM{%|hkq;~nUcSh#g4 zpu@VroptWk`oXW|QHcCOJCu#WUd4La2}Jc+Tn>V^S%Z{pI$C_gCeqwc-iuIlQGQNs zMuf*MODz0F1Sr2bY1i+XsY))YhroUXAs{avGu8gWsMM^2pj92ZA!UCYCb_VkEoqQm zi@+~QpfiS@#pP~)%b6RCX`zo2sG=?s4>^mNxc|~V!*-#3m_F*MrkB4tb7=~z=h3E< zZx(=8&%fZ1+!wHJJlj;F@UxU5te{tdpaz*Q)(2w`Tlt|>W3)klEX1=Bq{cp{EALxy z6s(#?hly=#7{y={BKC}Cn9s^M ztVWAx=7Jv)O0gKJF%Z}k(qgKz?-*0)^jG?C*6m7G$z*ji?W1%JDi z2D3w2uwXnC#-EPZdDn1@&<>)rt)gOl7WV5Whh%b;5cAO~Y}u~c@1YjyH>^3i1pFA_ zVkkhbU*lpH1%MfW4S5CXXI9s^0#IvG2VF*LE&3MQV&p>WVekxBx_ONcR+o`SBMQ^2 zQ1?t14>7v zikPq*CC3J!+>lH)jam#b9J#cLr#!V{od&B;E&okH(wZctVr`-N;Fwwpo!G#9*brQM zM==EqIiEgwpGUC55v5Wp#VRW{%#bVMP+>>qQK$K;GZIW>+Bi$IoXg6ERNFv9 z|05LJ2RvHlJ3t<~*Y1e}Beo{yPRJU0Jkv);4Q*tdaXN5nsEf8Baj%CRIagSGLBYkiET zUIO~U(NHC|Tka}T64Z4ns#c`~hY~|Vtd6T(ryJ1g0%VgfmT0$ z3QYp?`My2HXA+4Okb5@PcSXhRlEcUp!VDTYvrSxwm;s|W=)#%pOsCW=4X<7rj*68^ zv)>xm)XN(T4I1sBg=yPFuUC$T?ks~Vu-)a8wL|~$SH+y}R#Cs<_!&ko3V8&|cu{$8%u_9R4ftCx~v0f9qz+3cTz*r4#T^g+Ri+6Sn%IT;`SwsGC0i)7B>m zM4lORhyKoHxldSGlacZ0cd(nuLUVM=Dtcw05PO@g%9uU^{}rxL`e8*AMPukZ4+XnvHX5O+P+$Q}9$Y84~NzE%R1#q@wbfO#dEwuR-v5(TyrZbfQV zjuxNV{7;<-k#KxkCTeHWSw)g*+eu@{VNO_ZHHc zKSFzG%+aIz`j|_RXIH!)8_P2q+i2n$cvfD+$0qNiSyaGTxv-}7O6?gwJUN_w9`wAv zv=ROmbB>1*O|jLQ@2)1bR5KHTR>rl^s|OkFVzGwRphlOUh*MzM4P_)Q>TYcW{SalM zj)$aJgu5Fly5VfV7*b(h)O*~XPP&;9UOipj!iZa-m!W~LH&e4L)(}d}^#Q65of_A- zCd6`K5p{g}FA|k_huu(s{S5kP1--m&b}-+%pOsc^O=Icjc)kur*btxL*Z!q)FjYCN zWO|!KqIeYxC7DKrQF&X9OGI*KcdA$2h`PMHk>RaVP6je#ayZkc7dRcAw@*QBcd#)5(%us%-YV z{&U^IXw4X6;2CaQLK^5E-Bfzq-)!DhWv!wSdqrgZLtSM{al%*sNZKDUe5Zx zlXefao{@k_*kA#obOY@m0#sLep>eYrq1j5D%>bbD=47(;;;-3SMuyC#UF@vxitkYe ziW<8QZ+S^o&v5QIT_`X&{ZZ1xgXwXrdY%twU(~|~D@w7U&hJ87!}vxD1Orn{tfIQO z$_cSVIM5`g{_5JAzh^l1H&Zu8G!9DrdMLBuZ(t|&iGAVm;dHtjA8d(npVoB5KUjngusv4m2#pPui$F-(k+o}lOJIr% zl9a(VOo#_aB9`oEX>LG^K&dpOROnPdQ>iy@7-6J>FR=E0f_(^%8=MFuAu|!|i0Mu^ zy6B7u92RnF6jydo7GQD@;qhWLmIKN$N`RwKaBdaYDPrTW3Ko?9_T)c|Izjz?j$)p@ z1_wy5+|fld%}gL^OaT(w&hCtVq?&zK{dx@PXR*2;s1dux* z_eD>G(>sV`n@3@WRMIE}${<{^mO1yhGC!3IPdluz$_b!jzo67HiW2`umuf{=oE5kq zJQ|!~L)~r!GY(oO>dD}DR7@lQV{vV?o&$N(iOB(CtufJaf;V`xb(ly_-OtYk`3|9W zol0?|64&DJPSY8zxP%_+rPN$F=i&8N*BoqimK-0H|BTiLvI;Qi&yiwlwE2}zGlM`MTg$8{-uacv|gs>K6Gq72k zsgVaT{Q#sDqZmsIEuctlh^ogN&p%*Bso5&iOSq6u+z%$Bf#)M~f?y@=o$ohwljy*~ zw;=}1%aAVXsB-JVD$~h>#`0@<;(=&LlFR=pwEeKJY!Jw(M;EK1ln=Rz;HyJ_Ulo8Y z(0^c>GelFxq+W2_UzIygyjnl?qn7Q(*MC4j7S?%B1$m#@e-BFu8Fz(42`R9bLJzKR zJa3gfC)O5|PClweiSGMpQUQlZu;hSnW~+p)$mJQuyAckS)a(yAGyAsA9%q_HAeGw- zl7ue@eS^_Jp^;8;$+>R~({kg-`)>Hh%_t@a4G(T2y_WF6muRb5b>4H4V47Jf zcm~^#77BLx27}ekfR8i^Dv!-G_xh96jUHRI_cm_RjI~pzUOC zWpr!tIff{D`_5Xn@^xnUe4s}=`EM}rbfx2S_AvIo!(MXVuT7eP%1OG= zJ65}#AS^4aYJpzWS%4a`Vj|Ylgr^FSms7MchbUS5IGXOw9X?%bUCfoi$PJ9fEz0fA zN#z=M8bFaDo4z@3o?5k@AotX}n7Q6jU*5L+aeLkMPwy+$^HPVMwv{5Ia3}L>KyLCQ zT?EsZ-M&|soZh>)4QRFZl%o>5@Funn;PIhWw+2!ch0}NPj8LOfnt3~La64!C0wdlY z-5$ebcuc&bwP{1gnG1k+>U)!)bp_Fuf z=S|akxVJuUkB8S_s}j|004VE%Ah+~5^J{BGYm+zWwQNXeLj#u#R{t)HIo zC_&*=vFbL&xJihYj2LH+jbeH723_|=S=_yh>}fvEOm8pFx5B%PCXI-T1p44)b<&ik zYZ6AK6iB8b^ju!8F0WugZ>9TLR@^+j|D9Ky%z2s;w&a1(9zx?p=R*Ol5zJL8X7PW) z+{n6)V`n7T-I}|d!gUn+*nE8BDzitlgJb17bGBy7b7)PSgJqD86`B>5%qTwa@bGSA>f`*`fJwVTB0&1* zC8~KsyL0l~H6!o0ITY;RS_}t$I`9uA%+K5+Vp@ti>lKDJ=pQ0a+%CYx4%|0zu7KqR z&55%P6BTDw#+*s!?80Q=)yx@=cuwdCL#muE{o+zk`$6S8`?&X6KIfj3eu+)c9_o)U zY%`LM&dL#2I0j0+R*XPRC}YG?CIfXcXTzd%<&^}9bymJ#jfPFO<|viLCK#TB&tQIxQv&Uq=({7q z1gg)?e=mCzt(7-R`qCsKUNX89CtzRvHE(J25yonHP*Fz1{#k`?a*rP<8>t5F1H8Ib zJ%#{ZOLXxL*e(usy-}4)nR_qO=VvEbe*_tCy!vZMd0}XNr^`+~>jU$T~Bz=xU^4LnQ zLQtEY&diz$u??jBv^jYuV3kYe1^DA~MnFf0JpQ;p*w@Z*s=M~#Or(^)>OF!0uyZ2( z-9}!2QmmAW-nI$sX7$#2nfRF6JqB_7-m7HlUPr3u9GTb|&8+K1Cqy(j`Akw<>e zO@7Xf&JzT6VwzIRtTV(jiiC10Q8nc9hS1%0*&b7%PSm zdHM~mJB5&kX`ndo9W}2S2dp&wLP%!&Kv>(BgowDPAJG}pEizK0>Kn@`9%5ZYB`4pt zUoq@+kenz0c)5mV#*bQkjD@QbJ{l!s43FyoFzSIDGvWcJ2IteVkk>rf;J zJ^GLE>_}pwsP;OJ>RBHi@nxvV!q=3g9P{ql|I|RHaNV6KVV|7=2|jOU#_el%906ur zC%vVD988^SxXt=Y%3PTKu_&gb$q4OZBukq4XT1Q+p+L{1Zm|VGVh;w+u(- zC;=EXd1Z97FNO}E96cv?rpEp!{JZ{^Uga%mj!y)23qaibqWgtN>4hmjJorlFI5>q2 zfiOb@1R-y*`!2NVP_<#MT3{-iz->_y|q()-tbhtXcH&{*W>U91< z?%NK_=)o01Yhm=ms>$)5>e#f8iR_Pc(oDm34Qz+h`}@Z6o~_3X2r|?mc5tU_zNt4T zjI^(I6kd78M{I6;R8iIgv^VIqaz3$+!w0m%US2ZN=S-d&>*sc2`Q3N)9M!$Eolr%4 z;-I0dEJbK!oBrI@6h;Y!AZj^F-Q+q=-(bwCY$vjg zz80mR37eY53~39XWBtj@m}GrKvYv=lakD=t*RX;4;|VuS{V!q>fVRtJmKFoK6`^2h z;Kn()U#^-+W7(F4NY0ed*iK?G-Fve|@$uC;f#19P^Wau>7Eg48;` zvGL~!Y(VN|giHJd74Ny3+-HOPA5#|x;*L1c?=5J-XEcZ9+Ek@tcyWfUn6+qd=et78 zUN*Oz3ZF7;POU!I8{;JVZ4TKlOrR6!3@P6IXUqoYL#}~1TJ=3bxzp%|XSpd5B3(kB zCLo#wBlFWBO&`|z*)e` z^;qZd1+Vd^Llylvi0O{;k-2=NTc2k)`>uO~80ep_%SjP#YIgZpSo{@n^+fntj^!4t zjVCah%9nfT?O5@+1}YMKL-7)Fu@^LaP2WVHtCP)N5gM59<$KW)Dqk!o_lGQpWw_Pw zsPkeLGY6P2tbrS`(I`1{IYO?1#qD-@e#H3&Eq`5}WuEJ{*yRi=kJH637yIeItJ=uM z8R-%y!+~At!kVIDL_Q&sy9hFF7)N&gw5HhK9<|MkZW$U6Uy6@co6G*<{=3an!Mf5` zU$c-q>TuQs&ipzdk7dq_)6+-UMfz$ZX75XUFO8_<)Qm}MEyE}HOi}Hqui#|@8CmYt zh){D+Ob$O2e5n3H&r2sCXM?j1AGaHhQ_TiTS|dx|{M1ZF{^KE}R9@a->t)_GZSEIA z7lk#PMp zIq+dIX>KXA16FG+M#&hp-{`W@D6O>WjX5*TGL!vPk7sP~36ooI?`L~DU~|K73~V^? z+i*{(8Cl1V>T4%F6~A`__-N=j^fmGFz>n1OfursP{^XK`#a+KY`&OgTEj4d!;G^+9 z+*S`rnZn$Pu(Rw5ZtE7*Sw)KCu-#Y0ddT9Ld!w>}VLm2zeDOgson+MqkIPEi7}nL6m@$F)G#T2?dIH62Yq zA`LWwes3Q#OQnG=#a-Io3diRi+Q1})vKhL7GUc{kHe5d$y?tsId%y<{%?gXK2V0wC zc_93lFbCdtv$`g=M-7 zT+>V0>{mE1_WMio7jb`SBfm*@#KDea!R)(rsS${yulR(YCmoEzyIcjlS#A95xi85wCd-fOD7sAm!%6OwZVsPF_PjM-)nyi;7l(9#q?7&_Yms2PE{&K8AoYcrt}2n`xM0HapV*>)Q$1a(nBP`jc&vByP+S zPZgdFzEXHE3$?XCagv$>CUGqXIohJa>0H*!y0*F$0RmbF+`3e6xByX0EFci({;15c zT(1<7NY?|4TmKdIb6JX*8HlO0w=n)zVUKkfe{tfhV&ci)3I2_m6ft*Aff75=lQ`!1 zD^=cIm6D=7!{?RfLVKNiOAmv@@t7%AnJR_~$+gT%WW}Azo1^|mKh|SFF$O);#=bqwtZmp`G-!ai)f#5mE&zLc;V3#803nVm*YeR zaiw7kn%oAPGSj@m5mdOmLRbVwz$zdsJOS^$Gnkrc?AKAkQledq)+jx0&-+|HbbgVJHXG(zx9lvYmGT&LD&$G8=F?hM$BsdlFF*@exFZ?GKu zWv&zRUtW0p1XIk}cx$Ex)NE_hwF5V{q~NKBj`z|N79Wx_jXcZ$#-GXKOEk8iwsBTSbf*NY7sE^}U}LRfD9K}@<`BvK&i368=f#)WH7|vjx6-AG|aGP!9?ALh=PsPjBb)eLm+|uLQ z#87nMleh2Prl7p{ZeqD?=I8d4NA3IHsWFNk!>Td>)k$~0v+m4CSc?kDl^Zmk@o)~o z#7->vQ0v}fmZd<{jfOYQ9Y>I1VeUHq1pX`wIH)}vpt$I^@`Z3;b`BwHwmsSP@7woo zfc@KdKBb`yI41YLRa@Bzg1`*oSmuivP6T{+q%MkYoO^pTNThaM8gYvAu%uS16?snN zm@Hx=)k|`V4%&R`-^UfS5Xxx`fLT<2K=fLIkb<@&2)8EMo?R0|s|lC3QGpT{wOv7ceh)(HJq{&9LvE3QHtj@0GTUA8Z(&$O5QbJ&6V)k5BE3ljrKH#^* zQL1$4iA!t*qjLo@h#kSb#iA+EF2dj_^s?K?js@{?V@n|(RGOp{%OpLH)pSG+U0(_=Itxr&JJGEGJW5i^3s3mt=* zhJ!ddzD-AuWU~*JN!mO5p1Rn>l!%EPtzra9Z>e%&V}W8ea-~n206wEfzEjl?DyOM+ z;$}B&y-ZVnbQQF=?fIU8z|+9EoEbJWXL9N4GFjD*Pd9)US~=WXzEzB+kic3dsET$n zZ4`X?964ohEY9*++Mdy7qdB&>(Yz@YTgJ^=Yfr;W!c&~(t>W_RlN@BTd8>?u8*nmbb1PC++Z6xq1&tddc~Okg zy8+L{u_4e^k4TNP;nbKZoGlsm8HOLZD5)xca#^U!K(z)f@nGc*ostS##-tW zO@w^8Z7|8yNtSWKvmW zQ3CMN$bj}Oa8t4F5Xhmta44@$WDKpk6ADL zhZ=CBObn{aU#o&%SH3t1t=}gcy{y6mO2Sxc2&_^(3zj|@jw=RrlFF^>LB+Ey5SAj~ zSn)8*31fPVm3%B){LJ~U;2N1O6kIrPx|lNVrAyJQMyHmZ+Uek|e70BeAX|mKBB75i z%gSlg@-yU>f9KBhZd3)L3;>?RMq1UPUWKT<+HskpN?xsP#Xc&-21gA|@l8MMlNt-- zltL@0>JXIg4ZBqslF%|um7-g2;-N^^t7>hpMbk>ZzXA^-#in~fRJAr@Et*!i)tscR zC)@S?Rh&By)rdMDRj;nu)jUT7v9vHu`nf67@sr{OqSXK(UG3M70P33*4{()4`$@kg|}>CsUXsI(u=(%zHr z(cqIe$(+0aXMp`7dZbW)!YU|P)j7($*;4e+@1M``loJoANsdB{=@YQTd6gpVDmc?R zdu#E@Jg2Qd6?%P8Vbz*Bhk}mm>#s6&A>;#m0$u@KS2VuK#_yczKi0@iZ*N~ z!cs_EEA5Ap!Efkc=vCKoo_BQp5D4RZj^ZFlYMnktE0XfAh5kq~oiK{=-@y2WOPQ=#MA3(JF*w6ZlEKxl zFp_#*5BU2P(%8g{sKGI~>XoI>X_qQWehLLO73e`VW)Nd|(7?`(waG10Q%n?hy^d|q z(GKM69|FPRIi*w@9sO?e5fy`Ac(lg1fBbn}9vg-@0$h&|rWhPe>K>cQ#@VQuuz}V& zu;WFa-O}g$=vHo@qGY15mO_XQP6!w)t=Kw6a%?|LBHG_ZjmCkTWX{>G4`-dxH$E^@*@*QY&(YU z#V{Qd7wH!4t_+Enn#f)6N69|6Eid*_Y+8|^a+7LMmN5wp+e^?fGcdl-eZ2yCox%wf zRpt2T(T=^rZBzG@*sQxs#wP(Ri)9Tmq}z3vZ+?QZ{AI0B)j&5xf+hgo%RUHY#r49^ ze`88?9R)A8ZNSqC2dA>i)w+tN3SwN(9RE#yqtrANT7Ep!;uBLUEUs1!;GpL_&{KIA zbO^8u&u0PkNfzd)60J1-zy(x>6zInxn1dHYRfF~F(Mlsi@S=KgVkdmDT<21%nv2n# zogI&_6R%YItBw4xUeJm+rdq5r2vG>`RCS&!yk1wQ?WD1{k1lpYv8Aup{fmv=ud-YP zb>FWe`AV;7VH!_>7V(OAhGIAt>FkgM81*9w)1yfnS!E7ZClxt)s~UhlSPz&+PzlER zS1HO3LZUhJg@P(Uhm(ux7}BULp}B*|Ud14iM~N*og0ToG3%M$gff2&U5b61A_O|#M zmI=E|oIuSMrX65Yle;&)JJvWjwJF#)v3GQQ;=mNzD*;wPVX`*8dSKt~CVDM@KQZ~I zO=J7^G~OF}_dr7>7HXy_2BA17lJl|+1C=|B~Xf=E5PAHFs?=o_u}zjj=KuQ9IPPCXQj%DBiz0gWCA zHC_~u=*o@uov(pf#rjXxIEr9GJ9v^mryl9@((Z}ziOJ0y>X9yt^S}|$_6*nD+S@fQ z9qB?)hQ?k)80lgXc*40{2_Jiw?3WEo&p(D^jlJkRrYR!n1DO&)O$od3@N3<<U4tZ;1UQNb{nQd?k*w(-W%lLR99mz+-M-ln}{!9{)~6dVXqpsKBOs zu^N#Kb`7Ose4iXVgi=e*1^L3Wusuf>7hjiV8uSA$-;sc?` zuvqjvXW-^=(U)0Uti<);sz+uL7gQkT^EAd^oNA0Wb~m-Xz%3lxKQ8t2dUT(-t{Iw1 zgbdEILTC`n7K~I_sfd7@<8E()tB$EAs2OUVI#Ip}^hs>jM6pFv z7ZAPuT5LOL5xkeC9w0xM0rCjDM5!qv;4t@;#Q@4Vwqsz3;$_D^0F!xz09ON4Y$r$e zj7_}w_Tv_Hgf6n>s6`6I99`mLqSq0K!4#)_8WiH z-b6TQ@zE^4U_jh|lpOqu7$ce#NkaOmZd6#^vSXK^(NPu!fTz*Fy{K$?|zLMr=ZxaKN_;8?D^QYQS}mqRRD7!&_2q%XW%N zwNW_J7qsV|dtUpe@#e4o>FwsP@QuRzyBHcw^>bBb3X|V#*`~0*k$Q0mtk8<xWyY=Ty6noz&6eB$lpiA^{0Jk3y8PIm{cS9v_Dx z&#VAu5}`MF@vq-5-2Yqa)I$vZ033R2`Va#qz)TVf@tMt?&+a|~v@l>Vw2`U(I~(sc zb{}Xq&`gA>J-G#uou;#-mOekT@aQaFB0F*eBe9k~|FfEPOox04Fk9kIepz9ShQqbaVQ5Wp)h?Sk-7yIz+Ai7 zr&1Ovv-K=ABA!7ipXTxN={Sn*d6pjl5LjyQp)V`JBn-x{oNL;5Zm@a*mZ9ekD!TFt zh9)~EY!ltW4lQb@gU-{GP8yP#1UiTTs>~|Ic)7U<-q%o3E?j2>LsluAmJ5Piy$DGU%*ZF0SR(N?bO!+& z6cKJHIGwU0BnmTMs6X1?7=P>K(LXil$9pFBHLBGhIf)ZRwC7Sn5Jqx4fM*xHV5V)^ zxpaK4FGeU9{VS7u8j~CXpMl@Y0&Bfd5n$n9!Wi~m@_Z6wT%jd;f$aJ0$sO5OVRjOR zn2m#yQ^|AO6m_@#HP5T{omxqlBq$fpPgbgF<-xFD17#>X{xO>>N0yx{R6TE2^YGj_ z2rUOKzZJ~@;mJlnPewy=3~(QoKk4J0bDXHY-q}FW29N_QhaNlcoIiQRJ1ZzuJ@L%M ziYphes(G-s;Q%*E9=36jVz!)cl_!^Jux`0oL6s}KD$pPz#|Wh{6M)3KwkfI&6xc0I zUq$=6+SO!Y5-0(*w^Uj!-E)Z}B<6~8!upsn<$!&mJg)#FQw@~t2{9+WZV|Jr^1AT* zF_{SfbP~;jGC?Omkx^0Q^Q}5}R&A>gWw+1>%@rum1myYk-1OcxE{wg+3zYJN!S7Ld zagb)AyCo-iAzMx){(Q?mTBsrZ!k+g=*-PN(b+OVjRIIdh^!K9y= zXStkXh59>Fw>Ti3@G+o2I#xM2w4?wJ1LH9B!Dm)hE+@%*TvBSDeujAZ*=AbKGf%Cy z&9)+7q7@TrCADn~flYE__hhi2MwOsVFuo>1V@KCvDIxOjS|#YjW?=A9Lz6kBte9{Y zt~zWICmBUJdB6wpn5F5D%lDIRYraZPd7Ej$V2Su%)M}+JZyRuV8?ZNlJ1#=JidHWj zn@F_>@t`K!X2w) zriT8VP6ZuWsq~)L{+C2~_eM)8$~~IrtA@79ahYv@qFe6ljv3M&aj5 zr(s~kFEUH3q&no0XqD5@gAk(@Dktm}Q_euniQ`b7a@H*j@9oT8XVy7t>K|e>73-o^ z(<>-&M9NQ&?V!6R1_UQ8g3q5o2dN&L$?kr{%JEpL7V}mY=Wimp487L6aI;E^!UobJ z@=$__B$!78bs+EKzZYMA`NchZG+low|DQ}__bLwEK|>Yc_`sZgVQoWP+c00Uef&>l zZ8Y~|&IB(I=~+AH&vnoZ6j@zI74wF!i-|4_uBr01*FiU`hmmpSSTLOKVrrR9v1UnS zq-`;6mJS!?g@vcPhs%mI)v}QA>QOZzXE7I=(u-EZe<_RMi=~$=eypH9iHXsfF6OUE z0@D^9y%dBjZ`9eFd_rj}FTm8wQhsWphLR%Ru;mafsPpoHlC?@ML$0EfYvnKpIE0>qrsiU1l3P=IM}YhHkNB3 zW9C&>4XP!kuIuV>%Bp6|%ePof8Zf=U0I<~H9*fG>jWUTS6!fZ??xu&CZkQ=QFe&X; zV6rC4?aj&GcgkCPKKW-&fgN0w^ynRUa}wU2Gsw5VENc`B%ijW(-CB%M+!#>4F%I5%K_j%} zdzF_$wXjODFh)58tWo*$MkqmsK^a+koQ73h#`1G5%0p2PSCj`ML8ug$!?P+6wgt2$ z#6bs2-%5GlJ6J9c#Vzhb9vtB7=_pGalx>iUbpC%uc@W=XZF%T`@|;cE7b4AF^+6WJf>8plX0_ zwN9R7wpjboUooXt8=(n=5sl$-paz>cQ_5wds8o#I#FiFMx&|;Goz*@c8E$flvXA#rq1@A&t zkAa2~Dg`XtA$(Limf8>O&O85FQB;g??fcJ+c3?GnY#HsTS6qmIVdNRZYaB_Mcf-yAX^By zFe|iHD78Wva7BS-gg`~+<8`>9*tJ8;*|j77J;gO<5Cp^%()%M>-bdA4QfDr#ffy>D|_uSvDOEPZ)V) z>rOg&513l_Z)ZUFC^p1Xm*B?IHZdINo3maf9d5357r30P0X1qlHfXd2#-e z)|XfCEnaqU<~9b11DKhjK<90FYRN9ca$*;cExspvY8R!2&xE>nrL*oKpscWGvn^G7 z5;oHfgGAU-Wb6QYhBsrlA#9{%>*8ae8)bKA&>MoCWT`vN(D0k|!%y$3J9+0Y3DU0;VhB(P42QQu@q_a@4=b9)@wPz<*$2JN_`zK=}xAu z7#}clR5;sB2*v1?HVPqKPXav>#JQ8cRcRSS4^w1^F|RY?Dl0byY8O2ByyaeW?Sgk3 zak>pt6-%YLKKk=6ZqXHQEOU^i;lw_@M2DtGW} z$7L40YB<|Gwj_M)>A7|~_>%A`;cYl<;m&$J74TLP5Z~cr$#OBN8*8Yds9kU=)0gn< z({8LGHYWIl%IzSME0GfZlwEM-1JR;J3O8wqcl-B5w$?*Th)Mx1()ABYi0l_J+D$Dl z!2HGh0kuM@UGM?B-~eB>bs&E%Gcalkf8BAk)|PzHT}CN?1Y8zo_jBua*Vx;r#j3oL zV_{qpPk-~3;Bo_el9rglt(l+CPF^ctl`1IqXJSapNr{fx$436XwLI1GG-!EBeH4KE ztU!(P?Z|RjqRgG^xl2WfvVf<7pq3DT>O-7>G?eO5(&GklabiW2)ny6rYJgwo5tUk& zYFQevEa|2Z1t#E}yT%p0n-~xfE2*d~PUw?yB8!6%aq*<}80F00F?2<-G#v~&0$_2G zG2lPrM(1SpaQKroU7XC2SfW7`&t-S(67*`==-f&}8T67lVgHMsIE#HAAfn2-7gckIm$4kp2?7?tp3PRC_geIkJz5hDuZ)*sAHd0 zBh<0aXDarYL_|;Z!fjX*vHN?13h8bbC0@PkWLpH2iSvuMmetzk9JI|D z2fB&CMbWV9RCQE#+HBL*F`7iEC+|1@=LRvlb2tP~&G6%G_^SgaQi)+~04+&UAsE<<}MBy&V&^iPo=)))N*>49xHnNBPl8y=-mH?q}CLl*l7XPY^pW65tu<>I#X@o?E5MM0_KwfcNT>wl6 zAozSF-eewP9cIPLYYISFj2N&!1`vp(1-zE+dI=g|it@Jow_7!oOfNiE94bTX&@cl} z+8m2+0vbGLnOJFQ^g5A!5S}*SdR2Zv^jZQegdS+0iq*=J6Il^GPa~wF9mXT-?_Z8< z&?#2YSfL3(Zs;h#7Zgab+%Sm%2$mo9KuGC@A5x_RfH6UY8uh_ZQp}QSG&NIUU)(4G zHdW<*{Z)>rm~1Liqi{%O?2**slb+NMNfApYh`l(DtM2=-DwdAz+n8)UKp-VL4sqKn z(JQZS+o8R(?NX9SqZ2%IrR)`H5EfRO;xl%%Q4tZ?;1DCY<^s8NA@nEn(wliBQp zcrwMnm>A*(ZYo*=!&wrjL)*kq(QC_TD}JCtn~gy|#O7#`gF3nGufM#J&uYy{L<`dkn*MxFV2`D(M5FD6 zHpW~l3P+~}aP|F*g6%stmJ+&2bMzsd9`>Hb?y2oBg%E65n)i;j*Yn$83FaB)j&Pa&5#*9?BA4 zE?Sjb)0SGvjz@eu7V|=mxB9!z8yX{HnIe5jY4V48p2qK)`XY>oNyZm+3^N9a_Z^?X)g4pJXQs zF;k%`U|WguWEuhHEQ@P(vNtrN!Z!wJw z)fl`gkb8L?i=gk)w+BE7fIyc!uuzF&i-bOEr~ywmm?~KH>@c?zW%! zbL+FuQTDTV^-$$)H(kdJQVy-lS6nPCSbf_qD|AqN$iN)LZ4W0V_cSJ_@_RY=Q2NU0 zaEGq1zwLs8_Vw2tDeCKw>+5$g*DoP(pIh@meofFIz}!@e8H|Dq^lO4To*zZN zFOz|;vHi?@>7wev&_dt0Ojaw@Q9Z>XzRIe{F@OsXcVa_+LFGzexZhqZpyZmm7ceiP zRyuWXf55?gj5xq3^H}tI*_?ufxw*=$Z<)kHb5|h_gi&w#)B~(m{mQiy4@fCdjq2Jn zxvai&2Xp1x#KKH>i&f2cb^pWZ?B*#{Ov6pBEC9BzTcKgI3zDzM{NC!^kC6fdu7m8d ztqsn`zaS&B4tw=?{rx$MBo?=S*Z42h@-a}h2i-4nf2TOLFYY%08sr9Is+cWUo%@Z@ zNdfs-mo?P7KQF)Q_^5-5^q6LBV@R{0srj^|K3mW&+$4r;2raSwwxAof=Y}x`Y~=34 zuJLZ};uoxLbVS0U;xq+>m*E%Tre%G~l`mTtr6gu*2ntNG<#|PN#Q-;;xwK9&*6QY| zs2d|N;>00>au{I=MwSZ!b@IxanL6ES91%cahpaG6 zL-gQR-JxK+!s3o+o5V`0zMpcFIePW2(B!BagV?|7P3E>?hjxG>sa&$y(5?Lf46@LV z1}T&@nH#zrchPAE^B!B1Xot!P0bbAzP|T%9zFHe_-k;p9ieTN{%VifT-N{Bmd?O@P z`_jqL;hQnJ>21iCQz@b8hY5H*r<7%KM zBI|C42y<^JM?h1djktg;!MNjr(w5^g$Ov2wlA-9wDNznH0;ob&FZ(rg_Ns^yuRxz` z8($4x+p%TG7Jwb(?a!dQd-uGsy3&7MTWtf%OnHTC)pAVB@!i3p6$})d!ZLLW(5fs4 zGYB#Ke-fO+iG2^*-N9Kb44k41j6;DGI7W`bL8H6GC$6Jv{;Akc6h%QMtN-+N^H-X# zK$GQ}p>A5tFCE13zVccOIjbsMy(X3l9)TYD7*t|b_D0n32wdNYBEqX})i*{FkH98j z3*T&#AQ&BlAOv5YIC2Rghv->PaS46};^Zy0ThUepP-?O7-Y9}#27)=MLry%adM zW5GEbltItJQlJ8DJanIQ3_{7^I|2chFft_fgli0CPH^$hpvs`m@*LY(@W8qhfV{M&2!G!%krw=ji zX`THTkl$+0a|25UQVp}1`7UMO9$vaU-TwAa>*U33=4$KHZ0ylk1X%59XoX2p3N4&T0XXi$;^7C`v3aC!+IK(5-&Y+0m0{MXkpYn<4)lhM zZR`+zg~$L^zb0L6;rQz(@%JHX6r$TP!$lKl!|M@eWR{{b;szc{;m(bMcE07f=0l z@h_*c+vk?9Jy^U11w>B@zqU9#jW}ED1&8{s@ zcI(r7NHS^LgI6`ykqT`G1VRm41zQo{FpH6X@$hhV|31E0dUP(kae-A_;ag77?CI9= zbKMW2Fd1y28f8Xc+j=NsY_-ncX`Mc_^uaACLX;zdj>Y+Vt&`U~WU6R=M2DFbAMWh=X3mKM=AA-8&VDFjZSNbSxc^ zY5AL|na^zHmI-xN$uHTLcrfB)6-(S7?G zd*a64(S3V1jqTghcyH+41G3?=y(TVkksyq$RrE&bt1BoB0O-291q)GfxFiD3rDG<= z!)?!8h7PD=nb=O`>yaFW%|NMs>^N0DacY1m9xEVvfrDBZa&owMw`(uvp#>(Ri?i1j z&m9#$s(w#c0YXf1#Qe+(%!c=rUKCeqpc53=v4 z703V*C9xgoBMEC6re$G(Gm~eoMY-~?;Qi`B6u6EneNnV^I-VO>j+CggmK~=~Xva)E zq+2N$OlAdTr{~meI4DH|AkxY&viQUN;`|kA0DnLKW_IKjE`d$#vrS81e#O4}qlSAc zJ9iqxr-WRZR?KK^D(#%ZDtT|R6Z@m~=F+hf>^a(u8?9PL1?mRWC zKDsD;lpQ^i%|1|}l46jOw6Y2*Ztvo~JJd?diwZkioqyB%{uta>{!#nMrEKn7AlJ30 zKhT!G{t$oC^=?2CTi88Zs!Df&+>0PURV|}ts_3boU?`mQ z21ho+v5nQRm&;5Qle=Mne~0&>z$~U0MQIA?hTK#^&tV>sqb11v3!z}i>Hga9SIqAo zJs2Ju7};&wHcYpBH;7>K^KSmEh4>KiB|UTDFe9KXIUm^J>1ozp;4(J;=Al zn%%Q{wmV)poBn2UY!CfX!0jcj&x=cij}0HtKRLe(9}@#1s+Auj=8-P~JqhvXJf{b( zN5^pL)a3E>x^uVg++BC)?$dzK)e|GaonFW)lmNH=UD4%Yf*yFIkc=oHvi0SS*4#PC z9Y-a#fK~J~b`sN!N#vV_=wAtu%uZ>2_8@yW^Y zSL?oY>pn5D<%CJb z%Y+%!aI?Q_-6_(4c<+YaA0n4k2 z+8y=iUp9DVT9sb4aTdb8B5Bl1*cfNWt}KUJixkF z5ZTtuO#8{*$|7r}L1G$-@TC4kmd@@#5vy=zcSUxsZ7365;=7nl&2?8TxV7L8Sa8u> zN~n;PUIHBf_Ha;<|OB*cQCZ_RSBoh+@+h=ix;Tw;4b*4!{6e>4qkLP+gxNJd4u1{f5tXd}fZRK9+V z5V$dkO^O$Nf7h?B`=M*1-ntOmTA06)mjbtD&MiE?1nJI>9sRF|m(bABrJq&|UOrKL zhw@!2mFvJKF*-f-M~ia(Z09P=k?2vf6Zu5MCtJJpXH_*0gdR+2N}}Qcft$*=Th5du z@CfRhg=PBV7!&FkWhDZ8qrU(}c&*zv*2*}Q@d8kYLOEtJD|GnTak*AhHn2_`6z z^*R-IT!M=Q)>Wkorg8wN3ele_^bJ;C4+yhP;15PxZJ?j%01L~n!;ZRoa%}MydQ~s9 zW`8Uvu1q{J+6cLmkU4_2c-G=MVDWU3OixX5fOfIvp`2soSF0TYjaC;sGK+1!Ro5eW zK+qH=1Y-NXOfmWsGui^--e)aalIsj3t? z=-n|BcVL&Monk^o4@`gGQfZl~7p5F9kzbk|2jtXIiZ<}WkE|DK6TV`NSa4qZt%4=! z^fpN#3rg03s5%g}?m(0UEE-^*359Sgn=z{ju$fwc3$TNtVaZzfnD@Qjj;HJb!?Rt?i4$FM`I|l0tz!sPQ$Q@?azW~M#jh8?8shr|6Q`kY}pWT5ZsPEeP zt{w1Q3+OO|BFPAxTxg>%?U|+wTUxT?TDI#V+FM+;D7l*$*wtDFXy*}PNr7%*_(CKT z<4ygAo7@n+d$k@T}O4 zW1$BJ2#3WNXLu_NdVz^HMfbXQYv~v;4-Wwg5!FcLFHk1VgoF<9I0jTL&b2rXSe%Jx z$ChUo8abQ8MbL<~+`$q-2DFK17=p3RAn};x+TW@KnP}e^3;p^NXW*ViR+@;$_4O}W zUtVKIH2h!&p^=qgOLN<#RBZ9`z+`3Ci72+e)Dj)yr@CWt!(x(E0`$Pil&d#6n*b!t zwyaR7tyxb{)3%dPN41Wq@B7RUnyCpughX%++p~1u%;Mb5@;5Ex2%8wd%LX83zH`Ei z!#X}v$4Ay3A2ERVj(SXiU3ouX0TZg6Z{-qd>LKw>acb^*EHad|*bzo!iW1sSN3dyP zVlLE&uu|S%=swESa>HzjCRlx`dc$ktacdG~wR=!no?rVrHZ0OGg3x`lZ!0JwVlSh{bhDt3l`S=%Tdt zh^O|VR+Qgz9aSc+E>hiri2(_<<+XowHvrB!$``{?`xkKQyQAZqH%yKFonhF1sg9BB z+d#W_1TTgKh8P%QImdRSRSZ58KXTok=2o^6`d_LpW(INK`C(6;M?V)UYOB!)A@)D}z()68=&CzQ)6{fEIV_PoC3Vzv-57!;lOGYmWeTqDo7OW`uh zfFUidI0Bai37pLh;R$Reg!xEAD<;rGwbdh<*7T4yov{p!-^=UONJ zjL9ere;1hkjF$ZWsYA(rsyti4NK;IJ^`&E_T)_2v$Y}~n{@N|{0|StBgs~+9GT+Jb z58|kcos1S)V^#0okibF_KX7y;DBrGSfymXs#^ngbzz$U#Uu|RhwvO?<`Flz^LH+sI(Gv_7N->p--ZkoEl}~;Ow#0m5wYDWrwqcs%8ym?B zsxndx(egz zQLOt;IylBd*HW>Wv-%DK)C@z$t-&2@Pupa5icA2%JCPj^Ob&`=>D9?WQZRABV*@6K zBac_+coMj&o$Ab>8U)98%kcWx8r?+2pf$Ly=@tT3rv(i~CTaj#ENDRc!qP-Vby-1Q zx*?{DqCI_ZeA9!Szo)T#Z13p!M&i9-sH<_>lx&+EgLV-6lwCj8`r+2{CJ|k)uuFy$ z#wj3Q2DVFdmKg1Sq_d`=w3q3sbk`xWhzSEvhblH@t2&2UDD=fVqrq`_cKi}tfEDC$ zJF0uJ{U+HF2Ro9D&nwuUsEM-TwEEbB=T$}!LkU~1Yck(rZPtZ@w?8+7wS&ZZY5(Zt z=$1X3Hz3T5QYfS9(GGLN{q=2Ie*1c&ZP^wlf6!k4!%k)MeP_{NRoF=byO@S?RZC$Q zv(_uQ6&s6mDIJ3ax(r)+zC{;#Rc$VV>ta%&E}tVvjMz%7>O&}C4=377O=^ReS&U^q17h|MoBjlmh$%sVMeL-ckCu zYxI*sl^+X7&_dq1^X+RK3jziT8#BZHibV$&&wr00h8PmN^!X7^eDMWyM<3KK%%9C} zU(62QVqG|k*Jj(Z*XjECfIjrDFHL`eAFa7Xs77p`dxS@WlJ@u4*g9%62~8_P%M!dP zNp!$5j07+&V(u;{tyr|FI6=k6BpnNxBgu0t;3fxgRMoboL*~??5RMZ$QOaQx*Vc$# zQ4F^3z}WcZAjBJ6cV;KAQkKYBac8lR6}ztmaoiE00^2O#t;=`5k{-A9Ac;86P6evf z6bSKj6U8sS>_A9_dFW}+!RKPKl9|~oQp$VaRXqY^Fh<%H zpD@yyAsJyhbYl`KE7v(4{X@szW1cVeL>nop6UCX%jzL_+6WC46->Ea;m?8`pRbh|n zgw4VpjImM}p{kAix{v3(Kwb1uRaAUq1eAG&Sl)ckIvl71|M+zA30)rO8Ni4^f@}b_ z+KIb?Z~7+SLL}#5Cd9zFh*ctaWuazA1F6^{UJ82iXm;tbg2CbFF{aj{SXDxdo!FS* zD|VAIUCtCH#{DhapJtD3=MRK50D_8hiWuTWHEOXignrBDJxRy=X4lVP#I@S~0Y^Rp zJ4=WBS{6w{IuM!O%pLB^N#n8T-(hs>&LZI~Z=e!+Hsd%6fJ!6VDxEgq1S!+`{JEX` z^$Ue#Kv>fDEuW7?Z)Kjn@Tg zb%9zRvMRbmIx6=OH!d)6b9jU$H(R%^WnW&9S#dpr)w7}w{B>XKE@)kzgKtBdr@lF| zbmR>ELTsnPCyNh10}2rR(d=VH!X*YCe{7kk0Kp;hLX&xRbuDLI9X8+wE5nSCh$42b zikYq+rrtUnMBsgAU!AHfDh8Y%H}VA!r%XZ?Z=a|x5{?!70Ow>R*CJ7i#Gpk2qa$Mi z_q`Ar;H7CS8B$p!T$99+6AF!AY^grD-z12S5*8M#xxeQA0dv0_TZWNZLMVBJ2ju#g z0c9m#;@PrkbJbZNGw-n!pL|iXe$Dy=W_`;B<{+k-3W|Tn=+vK3bX!0qq253?H^WADRTcxoqjlXx z=yzlbR_A__qTC|lm`XMG*W5o~?kBOEVs4)>0cC{c>XB@&&ia6y)G=?ic%87Mb#>Oq zgjqC5^G3v)^=sB2FzW+dJr1mpl@oGnWrX87UieI%19K*Ux^-jQwr$(CZQB#u&cx=# zwry)-TN6yI@11+j{p$XKuI{R?#`EmGmi75y&*WBJmj#-3YyYR+0AQa(R4z%B-9fgp zW$5}H*s;s(r{))x4KKfdFa1GZQi*vq zW3oDjK0Pf9zGz(qrB(2$!H7%Kj%8~mKG|UDK=FaH)a*>nBB}vEp^ysGn343DfKOT& zhIEFn(0$fOcHl6inyQ$f|Gg$p4E|H)^3BG8vu$Z`0HwzG7$(>u@j4~mA_{O^+ z9e}%(aJ7pI^jeR5YOWNn+JzB+a!>VzAo(u5S!AhK)m5XG-A3i-07o*@;-=-u{28Ld zbx((W>Ptj1Nv!y5%LNhD#{F30efIYV0vx!B+mgFJPm+|z_a#!vVGYH5MfKP1o-9D}FcZ~t9I#8RJ$l~=zNWqaPHwW>J2}3= zzC)dieqjZjV>P-qI96tTgbAx#^pHN2m&`u~%~YR@9o2%Zk!^g*F_b59Tp3fVwN0I6 zK%QE4rI4uSqXv}+VC-5K(1Sk=r8!QakZ1#Ia3}rLptvonE;8Jy7u|u^n6ja-x=d4N zHUa?t7VVuK2FB~Oby;y)iC7Q4$z=5w;YjNHy$nang=kl`cr70=8{Ii2ijXyM;lSdTbHA|8kJC(ro4-PUzyvEUrNZ~8 zsigz)i`((+6EU`cEu%15K^LeRGbt66&q(^~i=kA|fqDFVaUf9$g{(Go-;q@8APmFn zZa?|VdWM{SXOKn#+?YyC@d_UukL#zY9XpTo({fbGpF%5VqR*Sk8R0=wHVd|2b*};a zABur4Z35E7aDhb z)4PTx>^~S0flmiW7Ba~ZqAQZ6q#`0o`elS^Vgj>ytnrWrYA+PQa>iZh3iOUKbo^kK z+xi0?f%)b51v#b(5Q!Xro0V%JFzWo3qF)C%|vyD&JjuD~<0mT5u^g}BQ zyYefv08(%g27BuP2Q&?0L)FFPPtxa|0@?!Q>C!>IR@(w2G1N6NG^DxHaYbrxiaIBe zir#L+6u*|U1l05&a6A7%gwKoVQ^QT(Z>kxHxz0R-jIopaa8}2;9M6Jn(W|L?4jQYp z|Gw6s&wi!w`6$$}j=C(-K2eUcL!@L_EfI(c#vy(5v zN5QP}M0J;y^uy^(Um;Wy=r{dVVm2se;Tsr4ct@5*$AN?1F6fzjP_DS}0*^G&{9c1>t<+Rq`p*?GK+V!!G7?RUE@eW*h%lWAYp| z($y##jNP>Kq&f=i_Bvxfr%YI{o*C7^gvQls>uKk?GP+2Pnj(FOA{6fMEcvDh{aP(L z>mW_FDahL30|b|?*^~#*ou#R1xh32r?8ejpAqPi9bg^2XIw4Vgr^w^FU zI|rA&({^`$@<%(&eGGS_5X%8L=tVY5PVdv?)N3{I2AYIVo<;BeVPg3p|5rn+;r>1Y z5t~SEdX|RQ%PQG+;pZi-?pkv(3Je!_wX3YHO-3A<1b)F~mI#(e*a21uc=9A48=Xou zAE%71)P#c?`KIth+93s<@zQSzM?4%HZv)ijfs8g$XFYZ97yR}I}wr#FiXgk z{gji)#0-6>_U!}FrGh8!bVS7eta+~Asz>YkL5zYad1)p^R)n*hK4 z{zSUf8vwb1-OHEVS9&{`w!h91EO(SyXl(vfyq z+stxN&xhdRDv+dYZV$?fisYc>{@VaM`OMND_6jNDz^Nq35VIKWv$}G#P!gr*mrY>J z1}~DPA7Lc&Tl|E6>y3b$DexzfO))sdY6rN1USj|a^8NjXQVu`I{blV~FP|KIF?t26 z1Zg&nULYP`nG9+fa#zXIi@SIN)R4)FCZ)p>8P(r4p|FCkPT!NNw@L*lJPt;q!t|R; zImv#2h;8J7#>XftD6g|zBIyj8@~NPE7>_)=x;$;QDaobYO?3ma&NPjxTSB;VB5{<0 zu~p#%d#E1>z24~?E}MAl#vei^F#Ol*^jM&s60SSATlJcvd*NFD8D9l&VXgZ)0fb9M zP5HaPpdiUnP!#$fKCA6a?e=f{E}_O^fOU&*wvX!{ylx@)KiDo)L32t#ZG_avMcDZQ zS0V)HhlpC_YT~NDi$K@kR1TK)3?8PPEjcvJknJ?Gv-5O(zVMN(UfVhpHpVV#zqkk+ z29v~FYDy~N!(ox72v?`5@f|Z9l@IP_JHybXf`;6u&>e8l&=pEHmvdpzg_6AF z4x(6`31w#m6R}uOfeT!;9NUA2NU0z*Bgz7mMu5+tl{4+Jb94Mu2*O^A`H4_@Q3@g? z>tW|MN*m3y!KTUy1?Q2i3Fw!{FO>iD)UCrwALE8t1mXodpQAh)1wJqpHB0j24K)+H z*HuaVoQw;CzJ$J#K6k%(YluqLG1jBCsB4{_W*I3eYYr66Iuo{=+F5gnU6vYYeF%%d zWM;szeE`Paf-+_dcLcyNZp`lZpOPkZ7iG%kkKD2GlX&itf^_+Qu`*`oQRot4Sf9+p#H`l*AMkr3&Rk#s<#8FpP%%>z@?#%?k%rl^Fk ziA2-e^Fup1SWl-gy*+oZdN%yzUMbpXfi^w7kg{+{*CUktr+9WK^3M>4zlZ}14&N`V zdN5&aPIP-BNm|`D_kEV`U@)>;4l-`EXi`Qii8KLt#@&92Fr(5QpQ3A9Hh)1Mh!*rk zy|~_e%-`UD|H?2^F^urChC1|1Em6zlmXCzM3?c_ddm4DOA8Mo%pi)y?aKedWg9)pG z6HQO={pfUm8(ti1Qd4%zFC}q@7%j}8wo{LS@K^+rVlWZac|VC*znfce!*@otagrJ1 z)$LDk4-pe0AEvE_+fnL{dqrH)Y;kcU3*cgs*t{}mDV_$_^UNtnj4RmNI- zdb+>3KzEGnFK08?G~Ev`xVZepCE_y#Ykw=lO zI2==GK#O2bW#4{jS=uBEEu@X^n3zp3Y6t=a2`xRb+H5={JbjBf+k-LnyEL{z3{sY1y3QiO6QKB^XsQ67%jsJ-S-W1}!QH=fI-U zwB!oF&H)g-oj9o*jjb}jOMQn(5&Wro;!kQ77EMCWDClQ%VPkQOptQ)c`dZqH&tuqi6fkQvgua)f_sIV4cc z&9zusBCF5#ens=kBq@`ETtcTO9AUxnlV=PK(y5;_OTivSB=AB z6xAI`Y5~8Z&kEPOx~p5uFZtffHKXFN)O5^gh;gegJ_lbwyZck?+70>QHW#P^J*vG3 zc%8-Q=;Y5t{%BcY(`Ed&A55h*ViA-c-rCmKfSwtg^^8u21|J(CJ~ zFBw)G_I)84iIM)NvtY48J~cnVBT?HSw^aauVteM|+#N^z9$Q8~V z$_Zml&-gvJe?T=mKVpE$HJ);+c?3}_O_!7T!})fpDJxfM-++na1sVtW-GLKCcT$Y@4pvFC*ca!14!Q3p(kc z_zDJ(pIPTUTu{w_dwCiK%|B1e%Y6KcpGac;i=Wgsn(yYJ_tl^FEZocuMNRO>O;mgs zzgCBPN&=WA88`sXv{y*H-P(UR;-bA2y}8MXZF?zrZ*QA7KO=g-Iz!}Ee-jGYQc>ti z?&fm|Nt&?j?(Q08f30dY`Dkn_W4weJuIa&tIK`u%*myAn_wRX@J36^c=)oV5)SQ9K z!7o#(vBRu%DwpSt>cLO3>i6TJ9c+`6(#kM`(SRxbsD(I*m2^03Bw8d}c_kOaU}T=y z9+58nKC1dFH@KjWd#9YYQcd2Pw&pHdtu+)V!OHqL%!6*>*f{B=p`bq7hA)h&+2V&L zu~$2xk1)DA6l@xBr{Hm;TOCJ1N1uNb~Pnk%o&QH^;m9tYk`x@$n>zGRJmxK5&8UOe%q_e zV;u!~v$l+R;VyP6(N&pTl{gkR(EU;NPG5CrwA-4mXQ$si6pU7G{)KZFwmZ z(f_P{azS`F9GO}qFHOg;J*0b_O_nY)Xv1l~am4!)Fn&}W2T|8qv|yYPwT%xd{`1g%sUAw0nP>1(?PbS9K1@;>C|_5zlXx0ZhemzH zbR+V{oLFWh7Vw@lUz=mtmAH-!H>dA?Qkg2K_k<3?{Pi!2l9VX(_n`; z1+y$U9b2FB)(8kY#B*kuQqThQ6LZ8LN8Vm>z3P*dVbO4R9>CEuAh+to&EuQ>557k3 z(12~?P&u6TO>4$(`Ot;CmLE6D@{GH(Md?bB_#gcvEkJER;Q-e7w+q=X^~~MDE$Dt? z*k>5iuM0cJO#z}_n^sBZYd{;A>ir1bdQQjLCVi>jYR=%%ntQXjOCXY8cW;G#9z^5V zFa71r9Q?AffN$}0T7b!D}vkS!Y(j5}M@IL%|?f5#EUw$4`1P2B?b{>eTysrfEm z^ou?#c@b_Ofq(1V?qz_L*T}fzbk&WxP(TVLS=%s8yp1UdFw{#RYof7zdDAfIbB?@- z?c`2AIc3z0(M(j*67mW$c8)dF4$If&Zf~4ux6PP>La{ae&}Khfdt6pAkpU~PcobRe z*jwYVI7Um?%SXb(3JQJ=iXDH$DX$9x zHUtHWqUmpe6;TQ`ub=@g$4g*-6^j%_(}%ql2PQ1@eP!{4^RiaXLD438!Ni4?L7i$; zjxoH|d(AsWR|7nA`l5kZ2uv*!N=RZlOiP`P`KmQrAIU)0h>7l8cx?66E{lXOi^di8 z`W4ZS3nJmw)Da@_L2!mqjw%5;XI=omV}*r#9+Wc@^;dlCYWTS-vmEmr)rj7dh%+|| zi~0D5p5>Gy2!0T^oQ`}9N?6`3Ky`E6INXu8nl6PfltN_p#G^jpA2d!b+Ax+SM7P{M0hP$6ge5roH2c=SK=u>vt@ zI}g#u`N=X#K$wEAZ+rmVS8*^(Z?GE-`P$c0-DYH@oVztv7Y}@_pDTWkg}n~8OO39X z{K*;;O3NIj4tjO5(o8g6E}iGkF-!-xC+d`B2LT;9tjUf|??fPe*QoaQ!Lc_UW;rZj zMR8~GJjD_^WWa(U3g(Prk66!D@`v`UefT9z*5Ag*){8lPki65<@A{W%Q$9)%!*9}1k$GKl4b)wJ{=OdM-zZh?2ay69p*L_w?+1(xFT|3eCq z>+)_{ZV2-$0gMUA!x^o*kct* z?Uv2dxZ{IiRaX*3SOh2%4*1L!nco#mea1kIb8?{@jB*Fr0F&`?s(+>+G#-D8)>Eb- z%O`VR3R!$i3x^YCuWk71)cl9aqxE1HGZw^D~TVdkYpk~JCBCjndK^6rIJ^vfvv@Zl~v1cmF6A$`V?@yCGb zCoo27CSmPJQ`4yjGO3nuBx;q6qK4~ zfH^vIvz@hf@8=6?%PTz?Y6mq+!WFbsXbBe0M6@5xbix2oazy}Pdbb;+6aln5T=&6` zg8!YQ(;!9`gQe(cr!>BSHa|bbd%~@Mro>f@9(BdR58-^7wywg$BtV$No=WmTu}4Za zy(=6qkV#a*@l?28^G8ZzqW8f7hwn#ViH=SFffVVF5^NKA&xr$5AqL`tNh81xp$K$m zs6Yy2enx1(vuK1ffz(P#;Q{6d9xa^OEQJv6fBJ2>qgCzdZ2;S9JA$azIs$FCAu!o| zQ&3Km)^e(bE~r!plaiQ2v|M%3;X*I`T&ZOROWXbvg3IHup^;miMB;apj!i}|HT zXQ)~@BUOmVbn0uw^Lo68h#R9WfWP4#9iV3ADxDKbP3S2Q=?7@MMh&7{bLTl^-|Zd6 z@67jor<-M`!5SIM>^^K*$p7}3C$#s8Z&-1K0W%4vhEVdMt7ndkLx!Sje16aouxynj zWq4=cXo4v%mx<%sv`m^7R?Y&jwT${Qc+?9)9{3i#uF0IT>9I)~cZ!?878Y6(SFR zOcV@L_wTT}YQFz+o)(G^!IwrF!#&)K!(_V;rVt}EXHfXFpE3MAKg?ea8@Je|EEO$0 zK2Rg+AncX5Wbh+Smy*snJRiERO3W#_lS1NJ?YL~W`)TsB&SoDM-!VwB!&ex~HR?~a zL=Dr~J-G2=>EObqvssz{qwz*vHwI;0jre&T8dUutS2GG%Md4l|O;n!I3A61WOaLMfOq!N(w& z1MoWl2NTuhK`08Dq#>d99DOzb$LihqHw>$S$ixVR(m`|hU;TU`SL10T`%wj+3S);T#*GaD5RV~)s8 z0LcQz#{LywSXFYPRnx<2(_pt#Jq&N#Nm;5=5?x)QBS5t}VLp1lO~wqElo5zv0cc|K z0c{G5c&wmXk}SwFS{`SO0G*T@=a_0`$z_@f8d(MxiyZGq&Cq(K+nVtnC?G}UhUU0` zEL!C3a@+$vrDcrO;BplNrQv{GZ#2gu?}46G5K;}sUJA-vX98rCS!VNYhBcf}Gw|9! za+}inf5TV#x!3JU(0Mp}0_fpG&ypzwqh!rX19z&-7%Qg&+(Dvn*&*w2!DBu}3VzAp zW{d@LcMVM;L{(=$pQTatlqkb?2(VYgAf2PzPlU*BGt)V1T(4=goIDcy z$LsK(u>B2YRPTX&P}b2A#THZ>nX8E;sI#Uiok+7wfWjC9Ty|1J^vDE*rB67$L~-~) z+hMcdEs3(Zr4hduI<7{;p5`<+p8JZ`r404MNefRz&Jz()^}ktAq|q)RwCQWGQpafC_ylsBP~ zsadNGcz?oX#XXy;qxLLdY{K~sdC>BT|4$bv=FUex)((~KeZg;bey$m6i^S=|De=VTO34&o3wK*F}S)I6D(mCUKLa{__qhe@Kx4tyb&xNug>)M_h6t3`}48LTNGTW)lC^v8frnG`AT# zE06m(|4^hYhaX~jwLddXhB z#w{g6==oKr3rs=7llpoi-%1N0SnBb3So}j+j^FT2$IpB!2O-W6T$T3LWmy-b+svZ> zA5&NJ4A-76E}wpqasAw661SPyAybq_$K$a|$EtRt2^_Iq&B7ty7qf*DBYrmWtd6m0 zPf#i)5Hy*ex=miko6k z9$)xkTbU!xRV9KP`%l+!^$9S48xBtbPtVI~x)p}O2~yynGc!hW7CC| z{x+VHoFbb0&ojRU$5)lha9?qT`3YCa9(0lSd|QYG;cIelGxv0#A{gPB_yA_nB|Dd8_b63eR(^$lxbAX+27Y{3# zxB6hyd7&SZ8EV(sGLSe*=hSgM{SpvE!Ivfk@e|JE`yFI1=KrroqpCo*tyCr|ZsxJK z@B?EXJPv?|afX11W!)<)b9@Q?F&hh9frz-9jQxF#x48hs51fdkzAP{=(+LtJP?nx@ z&8utaXvVsGb;X6TEQ`0mVNDw5!uvFw`(mFNwpHvhJfI|8p(TaaO-anq_{%Ru3#igTUA;3%t8pEVcAr^s4 z+GGc20Rtu{BnQHJUrc*;crk{32EV;Cl>G+hHjm>vv*sVb)HZud6-1YWz` zSf_&Kc=FeCQlJKLxz5yX(X(Y|N=aGNN#-E1kviE;qAZ>UyEqY5i`zNobplMvBibuS@l(#VZkD)z8~D}+Qk zP`Yz`E!D`B;c^sHxQbr$V|^^6Y=w+dTQfuL6ydN|Bw85LE>=BHBrs{0jUR`i;8|{) z(JDeR$Y}2qpGnTb96w?Qxu6XkjAF^%=ZFue z8oBMk*Jf5ptwh6%Vde$b1ebUG>7s6WT3(l}S3fV}_+Z3=AP+#u@gMZG&K0tr^lWHFpuF77-@w8RV=(dsWie9|t zgY-_#G*o$0s-0-|9>A`?fxtKL)3_XS#Fqhj3};ntXn?AJ8gvMMK;^gdIPMO3PYs z8r0kTd{McX^=de%{=w*z*iQ7P9qU*t$nPjfOdYJB_7*-;_G@>0Xt&<>td!u1b(ZR> zqxZN$>SYzXP&7%{ZY70AMuAlEMpZi&1u_t3M`H*V_cWFD_wu+vDlypa42?*Y_Imip zdNF10;4(?s!VQp`?IE{f?L0>MUZ2E?TH{98h5Y?{_B$x8c0?LM^+HBzV#0drj%kD& zMs|L*Bn_q-4qAF))h6F2zrV}F-$I}`VrvH`a^~fJmsM>i*EL&CGFl?*z&?XlC&;!-oCk#pY8KojuFd7?MM4g>20~5S z9*gE6BMJfqF@o35SdtB#S6Wvp(5;RHD#+HbDKk)?;nT}HwLGI=cD=X>fhjhj6T?$~ zT1WpeAqE~Ko@7I&Yu9PTaw|6~i|=WC!jzS|96uLsX$w*&+}TP9+MQ&n`no~dm!_3K zgKV6!+8LMklylw{LoZ6=h7Oh(rMAi{3KZL^*XH@#RAQmAwQ$`ubp>vz0W~%Xse)Fc zkg={piik)k>Fzw&WQbJ!HKUi$sZ<1i9)fgx8JrRgHQ%KlisP@GAN5v*bYy#FXu1+B z;d(A@j-&OXg%6}Tefi&%)pxG=d>-X~1F_22lAtyin1Q=Mz*}ch$B#Zt$&E%9*IGmE z8|Y1rQrP^u1f#WnuMo1A5xmx6L zo#CI@8rbayGseW8!-)#x+vS(vGbqu=i87o9cpheFu5~Wo#7~AHs&Rr3FgUc6Hd>Hx ziT;x3A2&rqt#DhF-FtFbfv89iD(7!~2f&pp@nkzO-h@$>mNRzWsG+(yu1mJzk zeYHDbwFhG#v=!r;A1ew@f-}M*I|e~8CVB!Uvb7)u8mtynFjUmb{&5B{9*UL7#w7$Q zM!VJX4TchXNG*x0&&ZPp4UqOxICGRS6qm0>@$z!w5bvA5mt=&28K0q?uA4S-{ooA}qIwT;^dMQ+A&}L= zh*xF~X^Gi{pCIA!{FRPLMhuLZ5m6py7|?N2qVZb>bohcQi0MgWk_}A|mO&tM$)cv% zHKdMIrKnwnk6(enqP}5EawTdTo&o5zGxq-7Kl}lAttmN|WUK)b{d0vlnjKfB6OGwe z#aOSs7(a!!!!T2^?6p$T37AP??s#4xs3J%k&vM>dArBeCVmr@Uwv+ZVd0jaEItNhh zlzHPatum5m^I=yMC8j8U`GXHQyM?Pa%k@m`)ubH#Z=`ML zGu0EUBP)t757=D>KfeyY1IL&)MKjG4j5_(IhV*C;n(+ZN;emOhvKNY5F94mwhR;EZ`u5u?=EQMQ*YZBR z`2(X`xckf075?B+7W@u`qz7(zs$Sb3^b(y`_!6Y37`H%^T{GA{!eYCy;|5{o7jURK z5()@ii4vE7Fmss0q}@}{(QKi}?azfyCb6OC6qBR2*zxr`r@3@gX=`(hAgEAt$im|h z0#|Tb?HY6U?M9k#5aX0ijsoWUuE6Y4I5iBV#+sM}VDfBW{--6MdZA6qlMTUL?HnJK z*-`u`R6>)IaxOO1ePX(6fHo2+#d%-A(98Kt)J^m!qag*klX4QDL@IvUl|gRx9p$;k z@=Hnx@N5IfoI)Tiz0|}UXL+QrN9<^`LjE4Y=CnAM#W5URI-)FOV6SbI@+M!>V&@xB z`-q*r{qxJ&vfAs$@nB)L@$kFyC2dKs2!wCgnE?`Zpa?Ato* zo>l&uaC^IaJ)r-}vD5+2n54VEwh0Y8ER*#ZkG2m3u(!gcB1KwNwFsaAXSpR?0;b^F zNH^bi;{S`{mIV!>=N6LTQ-TreVb{F-($I`JPSW3WVTu*$Js4)>p@Fk@6`fW_a%_$0 zG57U*=x}|g3ies?)j6~fYWtj|03x6S9w$&D?9*L%K=pH z_B{MDd~^a|44H-cce8?L35ngmA`_y>bMy|%RhUOrEW?C;g6#}A{MDdTH5ULV$Lsa%L#=vFid?+$@ccH+sMQP zaGy~C0}Uc)WVm!s_s{IFUOP5UwKb+_8f(a2iFvo7p?Dp5lTj!iMee;{1D>WY=#QH* z4~n-Vi-rsg(=%y|dKWmLLujlw7voCwFpA=6^FHSnd0MdHZ;V-1y#BR0`n-!olR<@& z9>LhT;vG7CZk{V_V%Ue-t)_#i#sVJpbt_LBfq#Hdqng*8LU{uvmX7OH%FFom?){TCtg7Qi-3@aT zN&O*+?3W}{ZtqLAQI2SP%F2<@ijWmUq##o>tVs2F$2B*;CZbBd<1Ztpok)`FnH5Wr5xpb7XWX8p~Mn4CTM&8z2Y+sN8aHbf~?c z$kh(FLkM4DoIEzXp^Z-AO|p+ zPtP5HnNXj;`@@bJ^aDSeM6;yRXg>;3^M_izEr8r`jh{o zmog2s-AMSnsYI_&hLBzbV5t!Ek6Xr2w7=u)!a)4#{}ZIF(&~;*KU-A7`)=RT58OKt zA);cO&r0WiPjh|Yjvpa;iarmpUj>k0fO|K-zI5E1#-y&$xFA_(zU?SaxV0vhTA1LC z?o%S?Opf1sm;@1(R{cS3$KNjV?CUe}TN*1;XPT<)uGXONexoEuRUb7Qo_I2CVqOni z-PHc~a-(u}fQ1@kEG)ts$hcuf7Q=k}wwf!#qT&f2Hf&DnGQZc&{nZ$<2`EaSrUiYx z@uw3gq$%Y=)3WRSdw|@2_@F0xFsx;w$jSRCh&yKDP*45UX+zfUrm2t4s9KCFD55RA zlfAcx{N~>7!SJ_g>klRA#FlBKsV5M@L<9+Dy#q*%X>XR&Kn`*UARx`P(mwp3V`NJ#BX$*6efBDA5M??_k zQE?H=;+hHlU_qPKGD2c7xf*%X89u>EG@n4fkl!h@-_6R)i_H4{d%E_rYR@~wq)6xh zt<4j?GxjSII#>u^&EQDIklFHXLYLm53Hp`$4rs@f1mH&J4MR8ATk;a`^@# za5s3UDrc~)wGPcR#I`EBexBKzLWUqInl@R3M+qyWrur>VJIIq!7{=W;?NNOjcs;R7 zwo!Ns1ZUO=TArWty$oopta%1R__#o;V2?S7TV#;&(Q#p+bT)~q=Q%xZlbpCG{iHyd@0+JdM>I!zNj&eL-i$`;c&tur$$- zWweGBX3QHkmsm2rD@`X03~y_hfqN@s7cK`JEA%kbOTKzK!LN8t4lE%OLj0I;v$NWwA$_d ztDxiVV#JnVvVH!jq>m2&Ie2W$gD@HXG1;d2wn58i>*FC0mx@KS;U5-(dLYqosov8O z{{5Irzp3HF#Tk|{Y$XqmdNIN)zgf*5CaVyn#UoEZx=e%G#V+k>r62v?7~j%{e%1tP zlI=Y_J@nXw{UoEXHB#54D)^z8gJi4JOx{^ z#P;zXAZ;MqTv$jPX4&r;?Y3LvjfmKHuanbV7UuZ3{u0*f`hfg}7952MZVd)>t$W3- z?m$Q<*USGbb1|q{3@7>kGhw`+Ok-v(^2h~YpIX9{VnuztJKHCt5e{hb^YZc)8we$R2 zmE)xF_hl*QDnDnncOk-`yfx01<(<47uKEBNmWRHtw!xjOBxG@jxqOYpl!>SiRZ&NI zIf~-0-StSv=9&Ki2X1_;c#(xuZ}blM6s{0zTZ|_3l-hp?uF3X6i+~+Jj-9@GRDVEo zoXrT*C|!yThnG$)!d?Dqjh!$2ge<#{^EC*f7^X%s($!3R`>tu^qOcD4kgBwC6;B08 z*_IuWie9&q?9JRLQ~zmR&_TEL9p6DoS6oNc*ANz!ZcMj?9eBxMM_X+NUopvON6`@VK31AOeu3Y46hzPC2X;)DWfZZgd? z*_^g%PXV8XI$y;_nIGL8>sACATfg|*EKLj#xxpn?O(~b<2@-VroRro3%O`^L>kPC*ZJHaTSju>dAWF2)k^vw^#dm#I(9F7II3N6*D^TmFRjgI z)rV|6EMzZDW`a|0v!n)Q%02xe$##nLD_ve@|a7B(;629=XOkx|~v6U(L%o-9nW zBmW_Xgk@82oFY?F?k{n4(%Rcs{mB7^`GkwbN=t91!P`x9@TxGh06klqxf?O#QK6A9 z`pr*BP$A3(CV@8h*Wtw$LO}9fCkP?g>o%VL6+geM7Xj+z!|bJt(V#N{j7isECVGCG zEOO6yVrO}EzXJzPN?Si=p~>+;Mbk@gi4trwSz81>kBPm*XQ|6HE<`ok-^a+!xBB&K zs`wosK)h;10F7yK$S)q9(=UT++QI|(14<&b==u*E&WsIOW(G!_ zb-toBbw3p+32%DQj#E;c3W%JB*@;ZVxof7)E?<_uclGGsR`UX+;Zv<76XHmFkw5Kx zcT@RH_q?|ovrj#`vSSt*2!*?QRZmyjR|~&*Gvlpuzo7{$wkm4tE_?0kjVf>9T2XZM z%*lyzHzSSfZ_p=XYEn1>FwKS@W$lC)gQK-}88QX%+D;_#;wnAX(&)K8oDQ_K`sbWn zvUvAC)a0X5*&n3_wMU+Dj*h*8J7-2McOk<7-a|s*av9@c^YLN!ecM2SaboQYIKojH zrc@Z}KXsGpD=S4mCLD|dOqqXbk`ll@koEa>T^nWLYU0=zupQ(xi+oj?{8>Gty~FeN zH4NOD1m~1MaHMN0KbpxkW!Z%r-((GGuhCyj-a9}KyKfpJq7$sDU1M;{m`(CjYTF*A zc>DYT{Fvx8iZqAwAh5YL;ls|2bXD~_!u*J^64!CE#=nD=TSC)p3AUqadMGp+`$-l! zG{o)B`EGlMLT(}FJ7sDh+RNhzyFKz%8Ir-R=S{3c>@~^NLe(ah^v$r9OD@*vA{li( z4)`pt@6!CK9$ZPheW(4w*4O>g`v<3vF>AEXt-Yqt=i(n=ShaTKI$+f?xv2U{N*gG2 zCIgYe430~W?vmzoE#4{Wa=juOMbXlN-!OrDww}19aZs<2&Aj}@H*=sPe0)tfazio2 zoJc(B_1H?ySyLG$Ru7#so44!jMTNst;Qg=F3Mt4moC%17a05p~8)Ti0>{xuupY5ID zEl7>#SRIRLB-(Jn|7>y?1I#K2hJwH%jUCJFUVo*#%F=SRd-dDzUhPNlYi6Nsv)Bn_C;xnrdl#+{4&dt%;?wmxkyQsi6#~_ZQF0 zBF0W`{YDE2H`BI*#Oh4`#^%fbLu_4k9sQg6+VON{ciGg{Ou7FQwtAI-g5y)+{5bz; zH!MxI+~0?&KZFVrQN0qTF=WuI4rkx2@WK85rCJ_fl~O9I*hp%L!MH8zDRKD`a`h(f zo5%kq@O~uc@npsE&<5DCRSRVikQ`VQ=PF8M*-Dnzn_{4zg1sfWS|Y7s8v|nr;QYdJ zU7r~Lxy{*wYbw#3=UqqSU zZL(%mZ42s#L|90@{!)S*Sh{S73XUe-)Rh%Z&CM?R)6-gS+5gREm}waJ*-uRk*g9H$ zr*#*q7}))y${Ng=2||9_#OH-={^uu`n2J-ETCk^uCiP4u6C2?_s6ov2Qz;#4&S8T4 zP)|lcKd0KT-sts|r1b1#<>^?E7-^xA_BJU5k9zmInAV#WfW-1k*$ zo#$~-lrx(vyy!1rDY1o?7>_XYed%Qr|F2R!-rZjq{;zUXM zT2O#;Mjg)JS|jzZIlR-=RwWU7gw7s4Ya%7Pc1%mzpM{%y>fmz(9Bjr*S>;YW{VQE_ zU5zs6f0UITR0xh6d;dQi4yde2@`eJBZ^eA6xmZaoQz$Ktw*JO!gdmUgGP5CjeWa#& zqVq;nU=gz_6$UkyzcBb21n zN9tPu716OjiP>eMEdjQFsYO%~*L=+~=x$`I?V$Li6V2Ba?|FOss&OuS0EpGcN&hX^ z^Oll}-j)F*s#8Jie}Q!+wCh9=uJ$)ZRTCKnB(;ocmUhotv3>ph@Dr(aD;Wy%&n5rF zQikS?sTtcf^y}~q`m1atEHSfyYTFQOPyS_;IzOqrPqq~h&afg>K##`cm}h%Hh3d?? z%35*Gj+#j<67ix%wo@HeD&QQ{vZ~YvmG;j+D1!qxO9l~?Nx)F+7wcPaBB0uIL!Ug0 znM2UbmMY*IhlX3fHY;5gGLf+*ii9cGQVM?E6{;>L zGBj*pmI)Uyp}PE#eN~6A7IR<~#{^~crm4E}aRZ3Bq2*~Ml#Pz{YJ5|&)Ag0NDK|~egWb%rGsNc`l|HziMXYY7{oCfzb<<1{np0R-%p;fi2RsA5p;8} z6FCaRTP)H<$4tl4lf@YKJI>jfO=tWn=B#OVfe5f@jvumyqzzYOSm~4hgkG1_70wjO z*QttS+XzMw=6lHy9Q{?u?xy)(78Bk>Q6<0ipZwKg3k&rZ2cYKQw{Q!pNAfl0SEeN& z`B10P&)O*~3^G>2Czu*rL>>IvR-KSgH@n#yIyEbz6zz%HI9#` z>yuOAM`LA=+24L#bPA_)bTpTKk4r0(@EP2@)JO~WLL8E6ewu9(HF9q5o;F#(P?1cTv^tdr-|omk0a#F+~32 zJV6qjvUnV)R_MZBK+vA}eGspT!h<0BGHqw0U!zX8878j)fR-$(qaw{Rd@xXvK~gds z7U2v0$zv=@ziVX2_EmfTTv)_M3d4W&8R56TqeEOuQCY{U96IOgF^7tBpny&gkP*cF}y-a(|~w`Rq{s{L1~;qBW@ zf2nq>FFB7xDW4~yWb~E#0`=KU4TJZq^83-qC8{r|XcdEi+S^Cg`n|k=0S~v0@EUvo zRZ?rWsCM#(Ixlh>W!&%fgL}UqMNsvq2pNF35Qr-z{ z^r)^~)!;b!Q?JR*g8HZkNlW?Y^}7FHsr)u=fnLo?J>h^B-*u3+i%8cRRJ<&?4hIsF z0xytU_a<;WMn$N4N~FR>qJUUjNSi5=m5ho`1THeJC7*s;Gul8b9FcW7?XMnIvRhu! z8<~9(HwSzR@8}79E@*AN15`h3s#Y_F6h|xZ%E8u5%LJq)#{$o!73&|})bM*V0jd88 zZmG!jbvJS8D9bllF`RF%LfD;MCBm#MXMMoNq-WXqvv~J{m<2YNvYsf5&uOINB`nJ! zP4Zv%KEzQ9=svO>yf+{I z_cJBsZO8&woVFMwF!fg7a_2LV*Wbn&+OD*Sg*jN(1?6S#Jx8C;_x#|v0Ov+Gx+CC@ zCY07YOAI0$EZ~C(rp0sJyvOFpwYnduy-F$&O|&5c+iFA;7;mI8oL;aly%)Mz(won( zlnFZTuf6i^?yToIwuH1g619h)oypH;c^z`4LoDdDr4p{}=q=+MQv2u#WPtN@?wvB2 z>sC+S=4WSc7-jp{?|aBAyr3@DxIUKthms1os`TQsd7AY#a_nPT6qo(!I>i-d$ekH1 z1kpUI6^)I~2i2D~@pna=qIZvIc|Cq~0?Yfl-{tAT zCCmKoX@V4c`WEgC8vsOB6NL$#b*FgoSWdNRqZ~+F0_2H47-bnAb%eOJdg@{bQZaMH zfaakfH- zsW<%Qd7PYKX&XXv*QLOL4Z6eA?Co(^QHqazu2EF*GW0Bo_a`rk>8SG{>A45;jnpoz z63lC>30_w&YpfJkp=v?#p~$<3CdDraeN%LGx@z=VOKqeNsDWzV<5O?u#+p%Yi;V|1#^PmyAgJ>Rk#5dUvOqFP$|$K z3gWD$x2k6Ptrps!EjDr&O*!Ka^TJsYukG`dwaNuGR# zpLK-fUl#wuC<{Io;L6p0D{n2cs4>i2nG?~@l}^USpl&l*Y(Wnwnpg?UpR?zp=rLGY zp|;AJw?uS{LQ!Fof#Y@N-2+3f3H^mmjR`v3BHB#BKcH;AThCb4B3ma*w(hM9lzX|3n98K}j$%T7zAkGQM+8xx|d3XN&eQ5T8a z$s}L7ky-zlUDuM4=GOcTXlgT{uM0n?0VQ*ZJY9-wkd8b+jW+hQG4T5p972Cq{xoTv z6jG5*VWZPZKbkBtttiVRAb%XA8oV{ENtHt(R`l1zH1FqN#!XVR)gOoFtj=WUI?Hv= zr=Ra)4QpmfriT1@eI0tK!q3G1R)(Yh!*(nN6;9+w5I!4PebU%z^eiyiovSj7o`QN( z7YTgwb5A!aWYW!9OJ8yU+#c9JK;UBZ)*8qF0kWQJU9bKcrQGtN-Z8Fhpfe@{KT+Uh1AN( zjwq<&7EL=Mr5N+sL8%y6SzW+<5Zd3CP9-~hg)ftlDe!@Nv>`{j>b^Fay3Ls$6K0-t zV=xQDP*uV`hYU$Vo>ETBF|3SL$C5o2vy& zEs>VB18-R0qO=x(Vln^m7}N2(PwN^m{%0PR=O8jNXr`xjJgibJJ|6aQCuVu2^&ie& zN$4Oy2>>3I;Yoe8C}l}QWreQ7Ko^Ny*((Zwyx-ZFix=WJK6?*!kzb_8_b-m-92!h*Ar4E+!`QAsHWKXd;9T z-&1QL0X_)gl1fGdDeX^v0{uax{-e~&L(6|i!|!oJb5{4%UhclCcY)j*AqGD$ zXl6P#IU-R_hNb97GuMS1i;+WrJb}x^XA+XDMx*g~LxSBZ^yk)rRE-q%jzoOH zXhGGx085F}r5xttNFL_%v@*J7cAW=2!%LM$%4aNWhKA`eJ4H}3CSGWWSRiB9h9Rjw z7vx0Pq%fCyI0C8l4=?`OL%`9O>Py3)`%*Vt`@VPxEGDVWvYu-(>K)M3jC6U?+M1EK^G)TJ9$tqe?adZU`#S$+*bKjq!FgZ)FM(qDg#uT z-t)tWI7r+wsiB+J(esSqm11{vzC9YTPzNQt&0AkKCGZR$p&stu!jdp8X?&Qe^+%HR z81I(@cKKTF-&}i|X{kT=HL)G6v?T)C$48H(XQV+%gHzDSzbTQos7WBFf^So;?h}_M z0uPOg5opHayNy?-yQ?g6iaZQ){oT-C0kr!B@jcZmK8!EiL)Li-BE~rQgQ_J{K5Lfq zO93HJ$k?sb78ryh+M{a-U09n^r1d0`XYVRXq!g9(pxtb5G&q}}IgS=ZON<_6kKKz(Y?j8t}WALl2YMDV{8f>70m-VHQBM}d+mJ@Te& zR1osh| z^^Ic$9U1)FFwu8p(hYy0Q1X_e>s~L3kwp=#oC zJKivcdk>cR>Ixb(1fUGeTN{T|Dq=wX11IGR# zh`2bx#==np%_$8fqGuH{CzmxauZ@nojYacUA{e#eOo%ee=Fi6q)swts# z+FukcpTw1bTnUSx_D=vI?9T_qjwYps82)-`wfe(Wfg2nGlQF(Arp>-@{sn7CaVJ(P z!0VZJEP4DX>)xYrj7EgzQ3kMY7*cN~HN8&E+hb z-4t552Zy0+g|Q9SJsJc@mM1gEnh!LWLzr`K{W9M&+ORr;I%O)qrDNb~x*a1Np`*~U z;py{e$kuzCwtzs9Rm@lE%VtA8j?mvkLY+)b);nDt&EF!2XgC-^0{*n z4AOc=eR^r6-cgLOy2v9I-u3mtFU_!6K9-AQ9zj7{E1J zV$`Ce5V(&a&l}bXQIquHLN6_{fms@0X%(;l-+;tc)7M#-IJdOHw)qy1MS{W zi%+fta!lSM$#vc$yQTM;RMn$hc$(0!;>6(}q5lW!OILtylOQ!l(G^=nX?_r;1U5y4=l-f@I@5k#KdRZ^*W9Po{#zy`Wm{;_T-zq#%0;eD=x zo>55(a9UR%qKS`~r5;IL80_z#VAU7Gcid7k6LOXG%lobT-JMlp(5qF5*CXTX`q3-s zXr^pwiT?XeZ@v8w95&j_ANLOzB&{hBuPzD`RW2r;IxizTwHH?;*1Fz?|CCVSK%qEL zuEB+~eet5&AAaS)6M(VNz(ZNjm^IAdZEVPykO98*0^AR6S{+mjJQC8mCIVDM34ipX z>|o8-=B14V7YmVe93E=PVvjNb>5<+41T97zRO1Ls0KX?R8(kmxoOOP66NW$|{)P)k zt^b#*_g=Y5>c|S*K$f)%}{t{ zT&?5!CE!Z_tBeo1S#0~;`1EV*P0>dDf2;t_ANt1@CX3UD8`yulQs$cK-Zy@C02wi| zfb@%t%41hQfb_E!-ysYM$a%n%00unA@1N191?i9ufR3hN>|rImFi9Xpz}}qh;j<2O z-djTbm4)#g++ZgYjpRxsAq1{dohK$ z=BQI-&3OwQZevbymB5PhWk(=~4JaylUBxK3_l$W0w6jLMX%;Wyh;HK?Q&gCMtx-;s z)Fc#@%hrey!owG^xhYfH+QYcS!_&smbc~Kn!SRjGB~JChYI=F`HMI_}6^kNg>uEo{ zZT?b!Fh%S$ZBiij&tEJnzZl}8+o!RS%IP$ctDy+%69egM{5gOPRniJO1fXI3f`}`m z{M{@fK}WjCR2C|#)KMuR2)yLwyaHA$Oqv@24_F|5^rRVpDT5>X19*hIaS?qettMA> z^MsZ3-oemBRlAYfiKgkQ>s#11m-y0D91gkFaRs zqf{NqEaw~VW&kZdSE{`FC(j5dOdbz+-Y|%|(tsQ+ zIrwg$NxDe1Q{D7A6<4P(U#ch-k>~JbtE{tZYxen(m&cRm2GKcy--^8#Hi} zB)9pWqz+P_IOwTRevzPvfw8~2g;3UK+J3Tjj#yDke-{*|2sM;BW&;O(%D4`0vH^O->3lDx-seoPrJ8WDvj5r64HNp*M$DehLUTE&NSrAyQy4D}j1aibh3{x(kj; z=KWVGk4Eb~#O91$uEaR$#O%uf`r2ThLVE}w;;kuvq#Ml;8|n}kMPXkPV_IbmpA~5t zz$@bf2@6}+5l9-5NQ6@PN{x_w+0XkBwyUA~5N^d+Z+Ihidy+0&l-JqYfy|v-)KQh# z8yy~&qElQ3rU@6j5oxStpaw0e?U#hvSzBBqf8-r~TT+i1ggF9Ha(+4vd}9$rf`(>Z z%pziq6+#YU;-dU_ah@qdwK>QkFf6j39QU7hBu~4-HC1g;j0tY<1}r-tq(}EXQ6>-K z!S5(_1+`HLq)8&)MOJ}bw zoJzY8Elh6$xp>V%%|M#6J9H4VbKb{qKHN#(8%9L&R=WxpqZ8sI4iU4N_)R3z+BxO{ zSAYdda>lZS@nOurQw*DNuSgnRzvW-L>4niH(!i0^luLuU+9kIag{JLKkV3$jX+yQ) zYp^d@V(foWkcjx-YQq*{>8g9nNc%qm^NPf0gq+hlH16^i$(!WUn>Nq$0FXz`d9tY1 zwkTo%YKR5kK|k7IBj%l+7rgdUmK~;=l#Mvq7`kolWN)twVxNk1+2(W&n_q~2X*xk3 zA~A;yhv^A7ab0)>%zD2YXi(SlybY?oFFGy`sxH1-*6O(Q=1fOo>SxfKr=Ap1k^fK$ zbyiTM1j=(CUT8abu@{I|g63RifZ#Ja#<3<1^qmujXcfkHl#cy`CI0T)U5*qp^r$$} z(yj;vmv&BWFri@ni+Mvv9%8o5JJ$F4uxKM`qt}Sx?d0aF>tJGgygTWhYr*xzeb2~z zp?EQ!@!wiH>yQKl2U9>6X{~Z_MVGbS+8BBn_!culQ5#xE_{vRNIs`1I2e=P7Fb~r!sEGZ?Cd+)Cgs?OU3f#HKCfk5PSW)sR_f+l~azZpahV6cZ5w1zO z_MaZW`?DqmzyEtdb14C`RUGG9v)=>461`_&}ZqItz70vzq+Vn2Xn?21zi3;1vJ z+8O$wFdvF}NBkAC4ua+$^dzk@a?tYOwFU)&p@IBu)Cqkp$iD@OG)bLKARen*4b z<-~6fH&K6Me3+DIIWgrvFULb?k-e3BwNRK3ZX#4U5{<4zAsOPdQaS*dFpjYhJf)qm zQ=g!yO-L8w5oe#!DE*FsDxxJ^Z_Yr3-Vj8io%w7A)5T2d0qL{U~-Ghdxv4 zXE24XNejc>sl2#A=$tCA)zZidbbs-DEpht{2+PqfngT!Vl20iTq;aTiU0x&z4R$_Z z;AJs64im`kK41alfLxlOTt`Ms?l)+7`3ldB zCF4-H)`MA}G=Z9wYz-F(Iv%X#pnae|8Z8+Y7=5)P8 zOLa{w6%4NrNP#ALovACIFpI_lUQ>6O^^Am}N=fRb0zf7e{vfsOm9x{zh=eO~+a&Kw z@GDE@N6t`SU!A-h!Sf15$NmKI5ESUPgHH+n4`}5%FyhRtUuad~ zwJe?)4CL#7xsyGcynrM=PsRmxh9!93#j!dXF zvnYNU&x?+twi#R&#l>}eE0L7)%{hakw=gKh%{u8|c{z+R1~I^-5F0txhV1SPu03~x zMf>FXK-ff$@D(S@%q?!G>v&!V{~+d%o_9QRKILIE-(3nx3?Ko zK`v%VMdJLbl_LoXe(-sQ%Q6M1`Q%mJne?Bjd&{h7QhhD96gn;MtP?1(r4)Oiy3&ZOV^CwG~D$=^$=5XFDV#$w);`yfv>x+Q&(?5B2b2#-t#z5Xyv zi{qSL-TD~#s1e15GXis<+Fm<`Jw(SQ>yp86yckfoX{HG8bOkf?xs$5h;7D&;OMhn$M*gx|||3u0dF@h>a8X+)$)L}X^1we>BP?Ipc!8+pNy1OmsyB~4=qCF$R0O{sF z^!NoRuKjAqH@x}B9@&q-`ekb}YU?0S7d+}UrV}r6D(w*+vimq7?honE5)>$lckgXk z5)8BVxc`ZFxx8dyDtMr@PJCdQyrVkf4MxD%iG6bwrf~{-LB+uSgM=86SrqiJ_WAR4 z)y`Ma(s`?NB$ZX5YiwXEkUC=au2F7xMVk-if+9pF5TkXL`0jOG=adQNXe4o2l(opc zJMeX!aT`qY5bMi_C<`6ZVK-rGTFYYPWq}DidXXB;nVMNl4STNdGF}&@Wz%+31Ma;z zTove16mM_W9VjX_TuGJZ?bWigpsYc&+2jXxt@l{uJcU<~C_WLc9*~yjiw!)07wGo{ zqR~M4pq$#H`WTNpI(>GdxHCIg58Wd4CKBZ+t$ zJ6DogA~a)}HqTosKqY_wVK8yD%AnUAu~@Cr%&2OAsWTA*$*kbnlHtX%UzI|=(pIAC zJH?->9Z$cQapI-454l#FJ8ZkD`t?e$=G!rlZ1hj6XA8B^-eI0+pz+1ck6AZqs0;O4 z-9TIN55X(>=w?!siP<-GERiT`SOzs~kvjvp(T46<}`FhKT@$P(2@t)5^D^FxDT9!>le*@wx zI#Cj|(8irrf7Yl`L4^^W{HOj=CZgWhxyj&Lyk9n+tHMEQvz|8(qQ{6fHw_%mlUMFn zO{Tdwg0azHQdO|B14NJhqT+is?2q#q#NeqrZOTD)xVeO9J`d1jHf)eg87BrrwpZCU)R0^k4>{klDg?q9%@GpOc3yo$SeS#7I4PuAC&hA+gC zQK{9>J8h8Lst1@{D|kZQuTQf;A!{+WxBl?~q%kHV`KTD+)QWd2dE6muD>nc(TnN9p z`AYaoQlzQn@P~5$?nAXdu)2hRe3T zMD%-S<|+LkdJy5?;fSZhIA(s7;sxCyq!!IcyW_-&)mDAv(FC5*NLG(*m~jmh{J$;k zyj27Tjf0yb2XlkQNTEaah4GZrEn7R&aLHdmKWBH}L!7mN;bbcI_KJZiy@LD#-H5mjV%?HjEpyq$Q-_=f zME`a4+Dh_do)Q6K+sw5rf%W6Cp0VvM-|d@VGSU%1ez}Ly2)60MN|yXvDMdt`=4Fr& zyvs_+Zg4Yu-sIgi^RR4b7x(vQq88Z7BAo~YDN~S##l7DHv#eAI!QSNV{R-N>T^mj` z|IC1>cn2PZR|rcHGxa|m90Pu2fbE9UW9w|4bYY+cQGlYwmUgG##v<=oBZNPZ3x>;j zsr5XdDQav3N=rflt~w|x6*+l20i%+ppZDG5DzyxQklnVCN+W4qwb5SYr6c zD?=_}Bl&KijhBnRp+uT9xxNmpMxCC8Z)5})#OTrq^{3Mszw`5B^qXRljfPup^_BA( z6^Ea3#qp9ypA~hUjis0jT!*zEe$P?bfH2m`W0M*IsE4ENngu!YU{KE{c!rg!EYX#% zqz=Sc92}v{nwPDMn|=Q&63~RC^i;k|>lX%O7qw zqAqdU)keY4p9EeANb9rG7_81#yG-65MSI|KS1tyXQBO-j3U08`GQeLtcX& zR|PF(O-5H4n^kB3M6!S4>iF7pD67urepMUj`%Z?p^O5TEmg=7%Ib4$G=4-2VlE%wjrU`_ z?O-gOGvMgN052xkyhoo5J^{UX>YS^(z+6B(n;aRO-Aj>L{7DNam(7H&QC{ZOp4Hf*t+%*NWb#3-BZO`gT z9k}OIiV&;imMDMD@Cuf{2_L|KyTpTq|F4$)D zxbn0^;Z~0>)?3KLVgDU3?XN;pzht`b7q3+hN9k`;-UrU-gbY!J*q<}YoR5H`UZHXM zHOQMT8r{zpUmC5sxDPI4kzcSz3gjhmWQBkMkt`uX^==al`6n@1{jI1P@wX=%?Zp{q z=%a1JWS7R)-v{0W=(>YT3Ie~>*q_;l2*P4{CU^mm=L}lF>}Xx<6&(Y;$V{rl{3i4( z;Xjld;)x@a8G6~?QsxbCAI`!oP=B$${HXgFT0B8$rHNF z=?X4m+a}bTJPQ^CN4t1ztfzNSG49qj|0~Kc{8T9@IC_VRYp<%Z};I46%`f`celjd!0(!AR8 z?PncB>Ua)JS1@D($EFwY6@vpe+8%piu-Y7?*Z9U#m1+){7KT{>poX@Ac7k~KqYx9f zYAOFgTHFX>k)A4+WkL)-C2J^>(F$SQexqU_9ZswypgH;4+B|=U(?OG#DvK3tcoJR` zBj)+m-`NzHy72U{nW1?%$?Zn`vKQm~a+xLR7^z!`MHrcK60Xa&D`@PaVbS%sw}xn)gwM6t`tyUO_sXWT z$KWZL>ENKR(_({Rb9Mwt%>Xx-IkaESvp0w6T1)Y6egEMrQ5qy2(guZcpN;q;yrH$X zEhdqcxwQc~3;p5HjLsgc5}yN&HA-j!)f3@(iis+m$BLRRri~f9@>e46^l@Gq*Xgh2(!>ka&wNJ;UrVj9#|C)9rqvv&U z+SVeaT#`DTT7`Xg#GbY=qNGwEV#5;o6g1$JK!JV}mdN|S{f`_`-Tv2&w7)taI`SL{ zWS3SV(2BB&v)i#rofoXt@}&y*W92}dc_!9T|8cqcVYxaTSqI$sFz?(Y3u6*QWvrm(Zq@%Nc8KaMp9pu#}5FKun&{Vp}5B@OJ`jV_XH3HbW+d>t-W=05PWnY z8c5d39KLU4^bnxy(fDnH$3NHel|M#p7AzuL->m`ckOH;({Lx?$Em?sG5y42XEI*OZ z$6qk`_={qJB*!#w1AHXVq3h2MSakKS1-}CbvXP@N@-$Y9b`f(PFc=GND#;TCk3)-a zSNlm=$(I@RWxCot%K>K(Dkb>kYE=9-V~9` zYt4yG07MAl)TqY`!C^zdrLEyToe$FId1Nd5u_^fK^nB|dBo7wFh%mCSOL$bh+Y6?E@_wU^Lt=k2OFxq5(%K<+(J7G>qpMW zgE1bGza|)~aRnUS{Hb!5z1kPb6A-a>M@#9v8Q^~UNL0KP(g>A$n$ z@LjQl>)7DSyegOE->@0%xrT!oT}RwLm91;Sfc`zsL7HX^+|ds@0t$f(`)gM!y9I(ZKDuG@>^eXWip2fM;eI!&kNp$w^WW}H)&)CNqL7B)+@>5q zIJI9kdAiLl$#$*e)2v=gDHhksNXs9Hw4og{2f;+X_E@$IkT_zqI4qJee1SkQ{Ow6V z#LSDfU~DG2ahYr|IQmKH&!dsHL*J37?A+OP;w4xT0^>^_=`GJ-sZ-#_$?oo!vrV@F zA)@vM)b8Oe1#_-3FhC{?ON&u2hll`Kq(}qRw)hWs;j?yiU3%(j0PDj%b#_uhqDygw zQTn27SNU%slvWvfmrcinuI{M?A^WugQfN1-zb>MA+;cUQ0SwwLJ(A26(w{h!=NoQu z>xL|qd9B6&3a3rItW$HQat8npMYp*efINgv-`^>H+v-?r-|J0Rr|nr zVou{`S9`h7p1YY=-1`bV$z6~W4BvVcPFva%i&i1xD+>5%ljzE;;UMe{JQF^%r}(J4 zJ|R-Vnd(fti4t=MqcegEz+*6RJX<2en%*iu->nOEWhNEmT1Dm5DJBS;bLmtRv~K@| zZ>Q=Cd@CI5mZy$i6rYXdW>}$w7t-S1FiP)B!FY@drWD?fZ_7~O*~~Gu8g{3aKqXh5 z6N|x9+bjIiC5KR+(%qPS8uCFAZ`yVRKaoQAFDuqA(7b0ildCIqK?KIz?MI8p&MGMS zggdPJY?$HiPL$abA8=3s6Ne1 zUHW!??!<;#4+M^>KAFqUBjtw&6-6Y3G*Wh4gZ*WCNhNtWXKIJ)1h6WXhq3r>LH-KN z;>DPxDW!Yhl>4$t!S}^IS_&MHkhECjE?xXY%!GQsg>B(68OPJg_b2g|lVBBF;2f;p&FHxol1i#%>`Y2%L&Qeu><>bIjBz+n7KM;;O6_Q>^ zk(=B64X=d?N_m3iV^k`yeJMlr6AQ3F5>hjxYP(w1kirO9C8w1LPc~;Yj?56^SCD4U z(WLeCKf8<`U>1kvS}Gd6+!9m6I(zDO#Wk&#-$<&aZ>TZ`hQcC(Tl@o!f;yg^S1Co4 z$cK9baWm`EhE_lDB|dTwQtG7#QoK&zM=5zmiYarsUYpZWt!I84x*xV_)Ih@{lAZk+ z5x9I1>Hd%~$Jk-gQJ75;lgWdny<{^9%Yx|bwt<$UQSb$Jxe@>u5;%!{F(CfM^{4>_ z{?QHxA?yZvIlMt>ol!e?-3NGXYT|;t?}(Z|gg#m}6Yyt;HJuYX^<%4xX)X+&6VPvf ze)sKeGTqs36Ns)&xp-f2w8e8v%rMr?a(Dc$Bny_z5(DRE7T2*kr#>QuGA|YG z!hIm=6B7}@kxJl`<97?fdJ5!d@hyby3Jo8upRJvD(DnrYs9Id*6Tf^*H12 zyt?VTqDSZhV<~@1loIhnVPgzPWD2D; z|F>BH{dTClRi4246I%)#pDX&i{=yRtM}{Y1#-pCU8`~XkDs%1r*6eXdrZh$%pTKj4oxv+S5jM?+GY!X<_TE{4La&cLfF9g+*UJY99D-E}@GA$qHd{fPcD#rBni4(f9O zC%_8{86kgDojuekywv*$q9&+!IU&v-M^*LMiIZsFadCU;o_c$@m1`ikH}B6TABO+D z47a1hP!#uSDcjHj=dJCm#y!IP1+J0a$%nmXK7hb86u zi%3D%`9f*rZtykycbSd+nkAKd7QwO)AQ-y9XMF@sL zv7j|{16M~jqz@Ud_}|}vAU1%{h-r_@{{Zt9)xX=yfuUz>j8L9drpovTLlCNpgjN=t zqELLC=XrH5-dd*<5YPmh!7a~9@Z=+FX|{l~zHCl)q@{t3)j@QB!|Y#9;za8X?!XY% zW$QQmiKeb&QI+!sp}3>h-wmvWc}s}SUGqHvGMbkmrQ63>+f%250MVu%?bsM|1Pil|^m~HeU?VY*_V1zmZ(v z=BOg{c1CeaKCN`7j65{V1K7lgV|Bd{5oUPodmPTk$?_a04j7;#;aWU)C7m_Z@PW|N zK0&-UDEXU-Ob-5wiKy(O6Nxu0Fw_0R?s?gp)%?kpK9knpK_x*MMyc>ZjMeoxlcqg= zn~ovjALY-sl4BM2dVtI~=xakyy!SaGK`n`PP^jJ?ka+qteD~YDbc3h>CTa&U55y>% zd`uX3Wg&B)(!=viRav>t6rurnEf;#O{p0mP3Id@a8YlL{N%@omc{_k79`kcOB3(xE z0aeP^?S6?Yp!WSVSaQEi{+vl0tM7~FY5k#ttarQc437y+fQ%7)vhwrapvz%aC-h&f+}G`l$XBmSp2 zwxg_c(t(1sE^CxxqkNVVlMClfrba%gj~#g3J^->wlwDB)v~#^KHt{$Ul0KkR z8o|CU@cX0OqnlcX`87&DzNk(QBW=*sNY?aw?K{fMjz#`jj}QpRp1Um;;MvRd@pdfB z|4dU-m9zN`2T#`bIrK8CI4%2Q6pqtEVqP~VIJPGX37~M-5t#V`)l71foBui>%)CHh z+{dQYO=L+8yf4y5=-V`l+!%B!+@?3wby_ITN#oPQt-tQBY*V&{?w&$iwwl&#EbOQXT&tEXGmpQwhmRaIt8Ai zn9`x-u?G1ib^*tZx#;&Ba_~k(!1C_^``>X9ahAg8nflk{<3~95tC3>F)%!7+@gJ;2 zr0#cpVozrosEo_LGEp7U+zshfHnNev+}{%ska0|osGh9D@50Gb_3iTS&+@V@$3$u> zVL=zha7+`-_0_8(@ZYNToa&;3E_(Wpa%T<-lbNy?H*5E6zN8fth{*_61X$k9G_%oX zR*-1>ZMd?_g7MDHSZv4tYB~;p)j{j*d+!emuB{79Inj2X2tMb8BktxMe_IY$xVXOj zg$Ib$0z7U{fdQ>s!wM9{_?teZOmK&C%t~9MW+7-U+*hv@bV> zCOa>p0JPGR)3nc5^-CSTeFPX=wgtI0_tcPn0Qyrlxl^U!ep3dhSCfM0R&8i-h;a?p zyHt<>PU7=ZK>egz7JBYiJelA5#f$j5ivRU&NBNs34k; z5IgY~O!gRh04njUA>+35acGaSm%|X9#Nm$o_@Cw9o9s6T-70bYNyflpzfzruit(`W z!>hh2t+F}gGK=HhTK6(~mAFhXgEdKewe?kKyC$!)1Zc~J<~U%NNhVnD z{Kbo9^&(4=$xZ<%Eq+xz)#B=y6ohd2J}72w9on7M3nmm|0G-JEEVDIgraTw9i`M^u zr`xt97eIfKm)pT1w)QoJKzBPqyidr0n^+yMj6xTvx|+Tw7d=fyS(9fw%iPT9Ra za(=q#{K|{%>}3mJX}Sqm8lf|alrMNf`}e+WPAr2KofQ>MUf6B`e#;jFV-{KjwD_e? z8MrYD(CvP0%hya9e(AY+oGJRl*f#|u^k=6`zG)7K(E#N&%{PsJ5Ld>v+DNsq*l>i@ zk)!Ay`Jg#*LqMp$f4qBjxqJSBSuYu08Y9(cyVh(0bebSH1Ara7QQ}&4Po3-C`kWqx zY7Vgf2HyiHdGISWQA{wvy(AvB+p2jQ^sXK;Zz4>=L+4j%#^4lK#t^Ow7;r>Jw! z@P5XiiNU0#{3=9rE?*$5+duquC;!FI@h;#WLtK2he`K})f z!esVz+$%RNA}#o66eDNnqv5JGDs8=WK*N-d!4WmHda4aWne}KH>}4s}z9(BqsaJc=itZs@>ZQfRt@c9q(Sd483f&vWt#GKz9Z5 z@k4te&xtB2}(k07~FyVg{`86t8cQ z0$P*BG$03_KhiE@%r?-!Rxz3}|CD27ovL6{qcAlJ6BdWKbX+IIn64C^lQ{IRyxYBa zxBbTI#UTuk`l!T|gb)YAyH9}(+lOjr0Qp=yQLfLpvr$S<#Wk@War7{YTtr%44rDxw z3^Nb>c+6|Ntd?Ll;^?Dkvq}m|L|Qyxv(V0F8;8lV&MW(0*LdBpn%k-h@C2tyWK9bXOtD78pghJ_{VS!8^x^4-OpUp)^TIP~+rbB_PPOU!gTu z76|&49hBfU*+>!lK|ppPJzLGAF`o);Wz~6l6Bvs z1!GxIX5a?PJzL3S^BX# zwb?X4YZj<1@n1?2N00!f?h`uPbMLDOm*wW==x zdd_AEFn-!iaY1?~Z#3stn@d-kn>wVxQ5_T4K@KJ|trqa}9O?9kb|v1vIlj<6_N|$~ zMOhfS==0XSv6qK6hHt2ULadF;(Y<_^8tLf;nmZqwT!jqX7-gimoL!v3(Tnn7n62f- z_)f8-eDVGl3mXe3?ALM;4Cb*OYQst6xU4GWIlXhoP?y|TzSBFqg8u`Vnb|qJm|${a zUl?pS#nWv6zWuY$auz3+;X3gDJo`kzf1#k5PqY0)zN;ZG*}j?IFcz#oJo^NA=h%@E zAJ*{CU)eu5xBqqe8;<7B2WQ%{0J*e78YBAcuqZXi*(+)N0fE&Yey02w6`yO`D}j>)OG2= z#th@)mQBj$OJlpmR@wiM)mJ4J?KJ2Wh^J`qQ;D6B#Hx{j4-m~T^9c!CxSiy1((nMe zVD0yIAY$sOA^1aq7b6MB+)jp-hG|uKSzT2A5P66IJKz=qU}Bo?oTfV`o$jn-WZWVp z4BHwy*~&xUxn-S(%Bs6*+5XCXw0Md6*axTjr!JGoQBNcf+S>lg`s(pF3f}HjSPqT%?1RadW-x%F}4A^Kc z(Mq<^2l_VqF%O>HKHTU1uSgnWTMSS1!DqyJcQ9pWeLk78mn%l)>I zJbDHg`~l6uR6eHiF=6?L9oV46RiactB6K{2i(e7&6y4|ctE-n1==G>_1jPZ}?48|n z^UbM~lrwBrj-z|1d*+9YGq>|U#bqik6BZXI za?pzxDCR^?D3QM3R@3Xn#r2V>iyg_)n%hZ&*F5;9w{V3Z2tK~vocdCJ-m~r)ne?!Z zf+!ULRH~5t?YQKsP4+=HP$vTSNoX7SoQ4p3?J7n8U4ps^4GbU1^+Ieou5ca@5sRGeVb zP^+gIR?oSs1gO%ye_U4LW(jSufyCg4(N=VVJW2h?ai3sEI8aAxtNoP~dUL}*(=sVA zG2rS>+sSjcb`yGnHf62_WH%oS3H%&DFa=d7EFO?O{}K?pUdr<41?|`avfv%ML(oMhs}@mA!KW%2vXJ{QCKqI*t+0SC{~a z%bvi?@+E|;%)xmc*Q@wpiLs4{EYTx;4q+2#VrSUBbb^gaud2W@^bpUIj?O zVz2`Cj=Mlpu$w(^&FyC`+SB&;eSh8YiMX$WvXol6axs6yrAPg7oN%Ec$7t{`N7~=L z6m&|MYU5Ua8Z1n+8jqaScpSB&F!g|cDloUX9cZZ)QQM2g1T!Ic-0kmaQ2`&HTB5ew zBp)+8-M&e-S2A{L!rpa!xAc5+4W_a>mDNX0q*-lvMV*pJ)*uewVG3_`N&rDab#C~#7DsL zk{U!>vMc{5+l9kAL)(`;h1#;oaodGM*GF;Gp{R5!t5aEhWLZ@MMW@ct*{ilq(1hUn z>T2`e$L(&XK8u3;3iNAVMWIBG0BU`FJy3r(E1wO2+rE5Tx-pC#v~P++^i&|G0x@ZU z2^3n^W|poePW|zf1i5r4dznXvMF8}XXp&k_Nt+u zk70Z(d)~}ncpb8e{VDkTMlZWS37*~-N+SYRuMl7dvL<*KX&RS;H`~tdS0Gtdk z6QG`^%`a2z$GQE#**iB(*!}G`zW|9{m!9!c%Gzw7od-|?>x7o@$84|-WYtWm>~++a3xF-WJh-`Ih0 zseWUem0_7D3Q|&U>00;OWlGQV*4_gTF>lB|h_DoYM89tSd}jUL3Ao$%Z~8m!Pi~VH zFmOa!J!M6kqLh$>Hz+hts^=vDzj5Hj%H1~0HMYn~6@^J&Nd*WXDa^k^;Aub(gG`Vp zAh7IxvIfw57JnYS%qDPFZs4~M6%o=@Ote)g^`ihZIVjL+B0t9gr&_JT$q`nWK+_sX ztyvW2q;7(8ymk&PE{fF2w#;Y-udI}`v#8bo3k?qW@djs^Tf^${*ygdVz}zJph@pMS5_~)^xR7? zKj}W@{owo_|voc1jVGb|mB#iv4I#;bhM^*4!6MZ0OPe1J0=IUtK|Ip7Zh z7t-Wz5P2gb8#25^K>=a~Op$SqY7%EeP7%AyW8I(-d@`U{qW1Yo>_^lNxRXf3p5jw= z1_Ph2iLk{XNM7QYJkLq&t64k?JB1rH-Z=rKy!J70F}d%?_d|FrTr1A)eSK3i4iD>J zs+UR_n>4q+yU4hZKJ9=+j#1f-{GBIdGxStP*1bmW9~Noi`GM^PFeC+w z!ze1^TFdwpc@EGkJUX;l9_jBSQZR-CaPCNFH@ytK@Gykh-9b9OyS5CN05&MU_z4p9 z%tu>eV86}M*EBLpW9(*w@@`(ZQQ>Jf>4izza6lbrTkc~M|hf-4kYHmebsAp4NoO(I!1;tCE(vJj7^wh3Q z?aGAh3fhEy7c-kSfHBb_!Z8)U+}& zZ#&JLOfx5cN12m0PHU5~QztF+8rc&rXH%;=wVID?H6KUj#7k-ig%+u~y(KB}e{$?J zKvo0j2GZn3%O=MiJB0^QhF~a`ar_#Ewke_7G!yc8G9f`;r#U+B`1b90RWB1>3>e{}RuX|AEa=W(UcdV>_>NgC#=;Nif0xCN03X>O9XioH zegy2q!y(e{;zuM*)Hu|>9bsD9(jz|XRpC0NExxBF%otoW<@r-PP%FN2o8AB!F(rIjP}X#SGKuLWg1Ks#~ZAVtYd z<+PRK35T@Nw3Xwpsg(l|05BAe6e_jE`mF|m3Bh9?w2TtpiDS7%vSpLwwsQDMQq)03 zc6{n_PCd>Edz@f7OoK30TRFCtnkLc8;T5r;xivL155hD)Upa{;4z#2o2u!Acaf2bP zsZsmg9Gu=sOe?WnKd4`ILby*>Utx&5+$oKB<~$Jp8*`? z3RpDLrrxR0ObBvAO?Ue)7-)-1Nly!*0Z&@<;2n|>!DKQfbbLg#qcl46c}UYJmL!2-^@wWj5SAPgbABeIiby*2OD2G(_Q(# z+XmCICFg-TQ6~-s%=okkW192$`)|Ssf{5q%w#|8X0pqe2`Os+`HI1VlIgWZ9O&9>Z zDFNLiwdA#=6I$ty|3Aoi0P7K%nJC+|u`QcywOV46?0?9UR>7qr->dT|oHk)hz0$|x zm4fy=_CmGycdL8Y?(PlJiX*;mT1Sqf*6wz zA|P@+>ff3gxT%4AWCJ&Hz3bYqN)<4FBz$VWw0em_p}P!|Qfc?6_=|9)cJyyu?S3&& z0ipPfA;J{1ES*2N!Oz~@GrQ-x*PeX>Y!U_7Kq-AQ6_2TSOj1&m_VwBfgi}?y8+y}9($uSZJYJQT)!s<1&n$hWw+=wz^8`i4N~4Jr8<*# zhKmE&W9g9@F87%Zz~Z|%-|l!0FbaVK*SmU5Bs*^}G$%gn>;O_e`ypW|Y9xGgFJTrq zC7PUciA5Luhd#ipc$B8yXUnXai_x!*opUXE53M@5q) z#726E8C;_W?d4RyHie4BPU&VCJY(%F+BemsPwn2ldv4~Ba|Z9{c>$WNV{%k1o^W9H z)g8azJM)JFJAOI4|FySXo!h(rji2v%W6y7AUY~hmj{WervwL2DeeWB;eQD2u|Jt$l zjn`)W_{{I$nladtlg5!#M5N6vwuF~9S-mP51*j+?jtEEOfd4|~Cj&g_(m7mUvricn z6|kdgZ3kdbI#_x;;d<0h86`lps$A=H>z%#;uA1J;a_`ik&eQ+!+qr-0keDhz+A7or zhaFW(3{s16?yt$}IMO1)%&DgM5Jy>=<=bK1wdx3Opd)U-)7+dl*oWhLW#!bO8&kbf zevNETG1dtfOE3oGp}B2!1ff>6oz%w%AY=6YdSGyPQ8h*yKh`}Omt?xxOlR!*0 zAB~;dMSM<9<0If#@y+qEJ9Gnfs5fBgM}t#E6rH$^z3_<7NbGdtq7h+`z=rIteb7CB zLHq_A!>>Bs4^FJ#J7=(~7==hLD``^i;r2=Yt>N8dWtG>q;zYYN`_^%khX}T;pYfk` zR&ykX2~g+D37wi!I6ic%S$8$WOcPaxu zR3vwwVFcOYDzB|IN0-f>=7bpxQXOlbmZ1WZ`}8!s!#0EecJn-m^32)?*#iG9J0vY)Hu%n<1BDhQS)E;31jHJJKtP6_7fujedbHn74TmKTk(0@i z(x04_>Ykg&EPik8R`=*7$j0W!97>IW6o3e&D8g!+h(w#uX#bS*uC^Q?ES15Y+$>BT zs9;OUG$TL=;}Glx)_%Gn0f2{L&?rx}Y`cz|R%MN0ZRV!Tvj3XfxfypcVqX?=K*izM zD6ln)zFZ*W)s>g)qOTx{LPnfodz46Qn?+x7l7Xzawp9fKDu|b|{P~LWJhVn%yW|rw z3dNi#%PQBOoN=PBF`*#LFHlMX!;a-AX_q*B4$_c*XTCaTHz>ku={wjZ&5OO!I| z-CS!HzuDAFvO#=`S#+|4J1E&>pcouBy9r!_i5(s76UtLKj5blC=T#AM!M39HutVFb z$t_~&0LslRLH0edNQiqXIz4W3uUtfnbr9Gp^7bQAlBk<@*)RYC9bV-Wfo&?PeLJL? zn#DsK?_aRuAagyi45C?Ua^H!ecAskwEi@~4HU-Ykt8;;@2;92KNf&*sM{_k%EY989 zot!SWb?pq)5?UBCAOB_fH4Xih&`(mg$P5>6N&QDf1Siin%pO?jAz_o5k={kN$l&Ch zx`Lwz-bg!rwNr3InQiAu)j%52L`8Lpc-y{aW!4Z7$7Sm0f!1SlYvjulcN^8vS|SK+ zF@3-~;8y|oJ$RKsH1F_sPVSw)vhP=Of7&-Q;7=A*^!W3Cr%7Ok!QjmO>CKsE`B>C& zmFM1gZOdPH?T>qge=d_Ma~kEb*q!&y{Dw^=kM(a~**`b8|MhYI^?-7AtVjQ~!J<6B z=TH0JVh6eTA^$$;nS3u4u;B`(kLLme1@|3_5;wU8)5l4p%=2>6OI#qP^h``8{Iy-) zVrJjIpYNIF+Ul>Hko|GYw}qJ1Eb^EfHhu^#qhtRkF@3z!FSAhe3T?N^aWQ@32pwp7 zN_pI=tWIYUCOwM~xf)9$EoHW!`K%x!~PPx^`)CkLfm#HZnP7n$;j(d4kz^ zA$`;c)f!|zL@wMqLAG4Xt4{63)Lu;7UZ4Ro6df`Tw-=NHx0Z`AhEtVi%0!#oLuqd> zyb5z40Qu#THkFI1TufLlyb#TOaiU-|ZDTJed2B5gXwOfx%As7WkUm;UlvnSdwz}L~ zIYYU7doc+^WP8JuT5+agG8K~vi%C$_VKr#_G%z2$U0_VwJ~!}l{C~xTBe|dj?WF^) z8^~>YB;=}e{O#mw)Nv{|@cbwfQ*;miAj8hO^#|txu|I|a%N+2VQG38pfw3N+;mQyF zER@@19<%x?j+4Rp#aO*&Dj;_93eTl5SKDaTT6YN9s1<6&-IJG_h0B`VjqU^9w^s&% zc3uFiS#{~eRPP!b_rGE6a~DWl*Kg0u_j7lL&fh^IrWWj6!?|?|Ifc|aMo^+x?z#jy4_*cItxk>z-rH> zWy0OtoN#xa_5$2-YIE%_f6-lD#EXdEet4sMVrAp-;f=G0@WWqJ)#f{LsNDX+)6G#G z1kx56$lb~T@P_U!oWOI!sNP0CTC{_Qfg*X|G~jD+rXj|pic~+??B}6d_@$DP166wW z+!328_{jB9{e(lRxl=JPMne#p^E;*eYIE;?#}mv8KfhKBt@31!L~k9d=kJD0z#%oPo*XpA#Z#rrUkr z1>2f_=nmt4=)Lud$N4P-^w8RO3%vaNE|LwB3h|p}=|=z7mj-7V#ED-464>^|7>ru~ z`**vmr`B(;b-Dg9cpA8b;v_6>``rv1XQMO#^8-X$BaBc=;BhL|T*umKe`SR-fdt=Z zc2T0Virp&JJ|}kEIM0n+ZHD#$k3PFdC2ub+RZwiNOnUc-LN(2sowW3dz47PS25y?qCV zwXwhe9yX8c^*w*2kNHmqa_I)ZRc3mSM{mSi|EAK0)#`W{tR97FomGL>QH`83s^UuO zCYamV{qAb_-6ccKiio3Pg?^0&hgS)z;hJQ6mc1HKZuroaeAm`*pXk4HuY2~v`q~$e zi2jjP`A^MU@hJ2ww6aqeBA&#AzW3?7VliCkwI4{}h`bLGR{!wV;(@>p<@@?a{2oXW z*iUoxEZh*Yrw2GcICa|D|1e7Hpbp3l5j$%nD@M;9d92yd$3+%F#cBbD0tc{=kv&$6 zu~BmajHhAd#rDQ-nZFlu%|U?%u8{N*j7C3z7~=%h1m_Z^vF+!|>V=n{d+FsT-KX52 zc7FNdb3e~se7W;Ks+Wzdnp>9MB&R;aX+7f5eUL^`io0X^@g8Q?9%psS7j$=O*NeP`*0vB&Y_IHf&(90m89&I1m<2zocUFj`jnNKgoD}U zi448V7k)yM7)EooF1mW+N?5x|Y)^QZr>>)qjasO2_8N#y>+U{ z(1-I1Hw7u5t#)r$5VrFdMu!%pNsxw8lWE^H$?uj|AktJb&5f%xDg@Yt?uP>3Vrpa29 z2LuSeF~Fz3^=KjlPr`mJ7Il*}&(Pbc`HH@u#Ch#2{R$%A#JzSy*F1D0aNTKLbEj}z zB-NFuhz7#FXIS2xg39LP1%O4+2SFfWa5r5POF|b#Sj}6-ZW&j(Aa)ersrmBl?q}yH zf!^7@%{>tOS^XcrYc5@2#O6!a5wo#FSzASb)SUXVS^R{~$n12&3=&;nQd_fA59#6@ zHOVI|Rh4nzf_OA58P2Zd16l$X`dYi>&t(>}U>Y2GL0fplb_+YHkR{AZR6tOHu{)pk zjnN5hv0N4|xXT)d+-!2*$Tm@wp@W1wn#4gmxz9&i(nl+Xd-75b^|9^Dp*D%s{^dx6 zZ-sX=-A|MOa&UrCd9(EK#^I$$IwL1aa#pgQ*zFd3n!mf5`SWZ*bwXq=0_1Tfw;^sg znz1(osIV9?lD0L_ZEn#cu*VWmpx(F-XvPMYJgZzO!m+Yh)(V{*)vHS`3PB4 zfPqbXOP9OnE_4_?%@F_3WIHZeACq8$&TVh$TKC)KQ7_2`9WH>c9oG{K0Uq7o_8l}* zCe||7e!(Z;Z=?GtLc5x6sM@}#NA$OSzf21hb|!bRdDaGHSyrjA0m*VBCqY%&ww&F5 zGGrkh=}w19;-!Ko&)h1sZ>f9yU~lbO@5=kg(a_V z(bGC;A?(oOSsIY?erGOrzxxoARbpG<_aWvLi$-b>dK98r=)5_w%woF48r9LdUVuBvIEmQ@nhk%HXbGu5m4YzQa*t;2o*(6blcu(kXXx(vc?S1FKYi$e$q&>#+j#!1?F)W~ zb+>kpA4cPr$)yYHAn{yY{u%8Gh`ppLa`FDN%$fp%NNP}}htOm&+)c9zZ{URD_Cx*tCJjc}NByTdKpgnb>cjd;WQ)wk#KKj&(G@9Hwp?18v=sri2;-n()X63VuPZl0&PsrcYKI?s()SmiBt~VbXWU1Zp4$1c!o4YeP z@n=&~kGQAUL7CQ>psPQzsR0)iryBjO6Z?F0rP%DiVCYN!jyCfQh&@2vGHFks|KL=A zS%6arB8lg*ffWa2<-}l7O;tr z{}E#^K)-!Pr3>>wvfYVbF|{Oy7HR_6O+YW2;3x{A)wLz=wze3VRQ52j>G&9#nV2ln zCfk`_3^Egb3Shmew2sw{CR0#?4nh28t9%SoJ8@P9sUL^B97i0%)S@GYAN4FHRm5pM zIE>t(Sr!F6DM<*t7P;4-`@`STDvJ6(^PJD zA&m;|aNX$XwuA&x>Blv^$tRc#CZ5tgex!Sb)jX&)L@T$}8-sB zgQQ87s0M@FYhK>y{J{-=_U4}1J=WqTKqGXh?VXL2ByoT%^928AI#jvV1{08q z^5icGt~r=6Y-9~s7Hv)hOb{7}8u)I+aoEH6x)nO8Jxn@jCchle(vLCd$MQXfaNd5E zB5vKTWk=hquyYf>_m{K#Uwi9S2Gc7+`2PF;+5h_8{A-T$HUPMw5kd&l%M;6cNy@B~23w&&oXZ3N3W13-D^k zQ=JFIgdNc_G{ox1FGQ2@%Jovm_P_C)y|b^sIP>QISv&tA z082<#X11kmLovm)GTQAt{dY~A+AHKVEKrD-&Y?NPP``pw9NnN=4g<{cVRX%U5Wzyf z#%=^9j{9WkSCMG0-@ev7c&GF9Km2y?pE~_7764LBe;|G|o-o&8f(8mQ_*zZUdW{W4 zG%7Pd^nhtiqbi)rOI>d}Xopr+;SE&9?RT1+^CtVK@(ldH+I>LA%PbY1ironq1{wj- zrDC7~T7Py<{?Z&@HM`r9=fwbrw62gV&8UKDXX(cdbz$v#G$mpjeUd)<#d z*|>MAxqODwr5*X!8T(@B>5aU^w{~UzlS0`4)%nkj!wjJvzi6)CZ4R&E7u_Rw&<9Dj ztXVmZIQ)MZ+>AJJ3QVg~F8JYJACdc;TjO?c3BpOWo=4w_5eziVn0;NK0Y;d_w{4Kw zN#sbKZ9lTWFIM_)S?;^#yZ^9p=9a{j7GC;1;W*I~?CqB}A3gqe&_vPKz{lU2P*0 zi%>A&ZY@wabu%y|7-SeK`|-IgaGIoT1SOJu1V+PFF}T4n8DlDwgWJ{K3plA^D|B;$ zZp=Ch)xI&Bc!v6AxQrZ>#bWN+^MVjONVXcGeK({jgqBqS@8jkh2MHV9kX=~gcwjJdEK>xBit`gdS zSw_&nRV128%yoSGo@|GSP1<1H5E;G9q2{qkY*Geje}vlw+Rn(@y=^}_c~`nSX5#2% zz=pA(r8Atn4nhD28t3iwUR0b#AtEK~_F-Xte*MC8|MS;X=eZZk>OVTa{twn1g4T46 z4MK+Ub0iE%>l&OKfH^}qv=+{tzj&eZ+AI5?Y2C+@@;;1upxrc$OE0v&?S^?5Fh?TW z1hNB-+lA4TEUZOGi&oBB-L9b1{b8}WbQ53;7~nBDZ_iC#KLLoIW*>2k1a&RCz-O7e z4TdYh1N(LN~QY3zAxZvPW#CO`21Jo`kzfAQv?S7(MjOoK+y-|yM?>=Os}zVX|AGwd(D zx_{sP*=L`4$UmNrX*}Vu)0+F!n>f+e{-OlQdT%W#5|4p~`!0%qeW4Pvcb>GaM zS&icO&E9>`D`g6(0^SAw2)6Dd-WntT;*6|3S z4l(F;?%~B~F0R zp9nlaG7dZCWgjXjOl~MIpo(CS7l5s*^(l-R?eyq0kzbYslQI*{spH7&H-|py?CyOB zg!T&}Z@qr|)8^=MbL~ub<@?^+t?toFXuD}1oY`&GLmE|40F*(V9vRgbPFbfpCL#Hj zw7D|gfrqyhe<;q%3pRU5BV<=c@L&FNcM)B`=-~Xz-6NW#9NmRqf?KnU_28nwA`IQ_ zS{_>RK7oBRDY!rKpw6{D2X0c-c@$Eib#P=Q=db4ClNR$HSnxk8Cm@$ZJm!-^$GFGKB$ra7MV??3n$>@iSG-7n_x ze;Z#Pr*yxW<#0fY<|e*ku!f%o&!cq-^$Y9L!^9>y6c~PJ_9T>jftwA@EBOHgLJWh~ ztbU0p3^FLn42IO5NYADzCF=Vd{Qb8LzHEe6bM%5}tBqj+PV519miV#+r``MZ+x6S? zy(5ceUl#Flie_i+;1D`cF_lt>^7{|JES9H}CPM7aZuv{vFbqO;Y+U+cyE)?w_jqo8h?1@RiiF#5^99`;`@lS^ zPBsI)d=hL&>(%N)__n2^IP}mHsAs|spnmIGMrOg>0!I%MO@lZB*1f#4+>>*N9f! zMW;c%&qiOy4-!~9{S=uOL}4i?p$2z)>1~Ls*;V#4^nS*%c4imt{4O}&sYWnZ8+e7_ zKIhmP2I3f3kcC_@Xo)2T{1ObF!(a*Di%Ni4E2@%C(BL0?QJQ1aRDA^~)>RW56cLgG)0oA!fGUgXh7gYb6r`jNPF&Gg}37ZJArE zGh?&_U@Z+^BtqdKL@$T@^@(Bt!e#L99ng9?Xz0{^Bs4u|S-RbrPOBaZIyefO&SxJZ zJ8r6HH3I@d3bGx=SdlH<`1l9JsPdy={+ln~?tXR-o)C{(zv(SpVVeKYC(XiTj7`ca zj|6mh+`ESVz%bH{vl>v=j@GpfLYC~^jw7KZ(hWBw-I&?Rm9M(jE_Y8}?w;G8a>ELCkcJU3|S3HRsn|r(5)T8IA?iCO3vb#&65(Lm*oZK&~2}Z ztWE|)l3c@3R%Y;{ab!5GaN4D)r`o-=iH0aDfS~C6E|CEP-@|rnNv#^f>%i=wV~reY zgMFa2(nFl9wLcLIW8ziHl_I=WcLR?t;EW zf1iul?E=Ig!EhUVeTTT_f^gb`6~fhH!o9 zUHIl`=l!mK{YUwkCQozmc5bYqi0pp&({|BA`$ymIy?tlg7xm*Z1^Tc~n%yJ@_G(Ru zA#n&uU37204It?MoZ=b1U@AQ$UvC$}CJLqFj82l}_YwY$u~ z^Ql&|+yGhv6O8g})1z^bXAVG5+Vw=MXjq4KA)+2P(dW_QEC()=NPUSjY!B_W`ViX` z#z(DaP?QPCp0uAb1`i#hso=*Uw$WI`b-107{ZN0@7?+70F(fP2mIq1=l#5r^5#mlI z4`Cb{IZ+rOO{BaVNhn4%3?7cAc?S-T64cSZCr(9!C48X51D;E9d}#@aP7Rg_t0+xN zRpZcgFrJ%+e)b$(dYvpgU@5`nP@Fic7!jqGAojGCm?#Nzzs{BT)A9niHLHlLcSwM% z7@Qrtq(g=tDBo_nJ~X>*u!NU`mD3Rk;=v{6>_^1vW3mJg?lXKwc^3#=hQvSyO9Xxq zBbN8%CFmZJ=`vUXC`OK(IZD7j)V;>5cx7Big_^68t(x&dU|A|00IJGwwADx&ycZO@ zUm*aN7qXFZuXGAT$;!Eiqvb>423rX8z-5u7yah7B-FKJzR}LC1!Nv+P&8M#v0D%bE zDSAV#AK7ZMtfTnQub~VAZMDnKON<`4iZqc)ZJXVnQ}`69&JY836H?pkip#BQs=V`uVnA~iaZ24fGgqx zOBIh{a6T&D28SJ|$hd=+>M?!FqAp$znmx6`;Y~3qJ!VknNp^R{psD0`uE>sBEu(vO;CwK51w~u zucgc;RAY1*Aim&}a-)eEcuz5)3+x^H=ovdyA{R(?07uk%tiH!8cPixW|Aqf_JUj(X zsZfk-Yv?G|Pfd)zmJeL3B7tGi_!^;~fHAG4gowp0z+szB#UtAsl?d8xuk!X_MDigR zfe`@^sjQ;dw&2k=q}@?I!*gZlmA$`Zz(3EG)eA2@_tMKxx=*=3?fmk^=YF2O_;Tle zR4<#LpagzZc#f#bntuzkJqisy!~+U3OwQ)?8R~$^<~;Ob_=u`4zhnF66k9Re7V=_t z`$Bcj4U?2|-xEAE?s$kp-nIEf0V{fTW- zMwl8K_bQIkG68|tW7(DN(i=Gcn7Tpdwmr*-5g=0-L;g-9#RdqqPNrB z2`--B0GrGf}!68fBC zQz)e|oGR3Wf;5_-XFS}@h(~4N5W5JfGJvjIiqSR(MzmP-)WoKzVzVVQH>|$~;7fF4ycxdDO3xu<3xDzk%A}0tYx|7Y6(a=9}F&t{{mIG=! zMwh&8Iptwr>(Sh}(2xBX@VJw^)r)7*TC~OLi(5TJqWzcZr80Y|deQ_Q&Ov*9S=yHh zjC_G02~qtF2^88~?-}|65x7QbrZhCZ0NA5YUE2S3{#2=E)C*Ie{r4Ky zh&rn18J)_-R4yhg7j6c$x*XVBJf+3Gj-A_B3Mx-p%LNE~;sSHl@>Aq4W_!7CVnFQ_ zK+~FfPzs;S)PtIk2jyV$5|nB3jon5rs7_9xRo2oG6lq!&qCIGqWKdr4q0+&^Zym65 zm?tHgO0*+yn8EU@GTx?{qP6x3ZYbUi!~jMXE^Br-+72IrS0hgJ0DnNeOOsf%%8HlY z{cn3`{;&&JmVkgCl@Dc^oN*DL3#_(o0i*Nn-CS!vJH}9Cjh~0wdFgHk!KF;y3o_Jxiq+P#J!A6@%tx_X3D!Ai9b9^&Y*c=+tv!bUn&qFQ=S|PaOl^ z>$i`t-@VxRRrX7>A#dDpHk76e$jb|}B|*A*`U1h|Fv!*~7B&`6;1}IMD49i*K0YO@I!3Z}$dqV5xhX@c(3Y@2@9ma+DDbF4kZ*QWgt{W_sl8AuAi4*bF? z^_a3w;JKhs=igte7h1GpY(Kp2RAJ(JAiLGvam*OlpN~b& zYH0re&yNA7oNlmIlJsAn;HbgC0?u0!?+&M5?Or_G96luf+(6WWzy(+VR6TR5EH+{G zp)qsB33qh|?9~_nieg283Gs~#yqT%;k=`zt2=S{Vd_0~75Mj@+=Ki#AWLO8?7%eqXB}COoECc= zO=E~a3qVFmes~LCC0PcIL1RMjn48AXRse)SnUk<(ldX8DVw3EDX1QHbn*e~$9iwq9 zP0?WxYQCV5Q@q)&og;d1i{Uv!yAVW zZ=5{@oHvkIF|-`y!gz5cKh#RiUa2qI-l z6bf-M3a&A`OS``LfzUUT%UezNu<<|If0Kyc<{ zRHyPWm5&L_hYKLU3LIWr75@(0UGOuutMq}hriw;Xr$C-9lu{Bkj>*(cLz1rE+I!8) zr|l1Evm22Q(!*F}9Hw$Hm5T|>MNmf`06r8qt9SJn!*E{uvHiO0Wg@JBkcEPkEM#b@ z#Ck$92IhjCt@h=GG_e2CRY1J}%qodj>r!+P+MVM9`S;f3U~4WGIQSgAUqBTuU)5}I zw6qkLK?uS=EhvSLOre{q5agf$5@d)x?Mr-!8)vTdPF^=l9)>^_aRI`md-tHsI0IGt zyX&*FNQ@eSkR?bz$M(tp?GY)+#il$s9f%neMOY_p>DcD`+vmQsO@xO>!XHDCGXlUc z`7-AD>Gq8g|09vcbr^hrG47I|xUM@uBcH@p1V;S;r_B^P3)PbhC%ghHZ#k^5kC2;6TK@pHi0>S zs$dSP09Y(g=uQ&5XiKH1^V-a-dr|6p(oLQU%y;H^=>CXON<2;CN^i|7jJdP0c1z#Q zZA+u=m%RVOLUWj7K79CK%snyS?HpR$(j+`|PuEYc-#<3yo}8%m@eL;j*da=&CoeQ- zFK*s<)Pv1$l^^(E~UO6L`mDg4V6{^f7ClHUgZA`1KzoVQf+fxQjQq)A zSys1HN`T3_-O!Dk0HlWRaY0}_fDU?~ndTn$EO)|o3f3K-Z*3Q0k#dGSt9>p3nr&HU zIbU%q9aHI;uynX#RYYE<)DhK@G@W#OjIobH)+1?*I4=xisdEi8HWx1U&K(o;NqpIH zWCTGiNZzJ0GVR-BI``50HdPA}CUFsr6w)3lBb2MLmJwjqhB?@LWD6pfrXDICZAHr{ zu5u?0wPTwgfsZoeOZY?Wau#7nP?cUg(_Q&qv%ArXr5hD7xP!I1lPL1iG{k5T|B7Tj zshH5-B{8}_3b0v}3VN|wTEmhY8M7UggXEOF4NH1sXu2{E1zpl$7k2c5?ipommF3OS)~u!Qe`cnVPIx?CMr;&zf{D`J*%e5T!O=K5Sc0Qa+v^dfg;+DqO>L1o;>4q zz^UFnvC=w#FseXe2O|e{rZu1-;l*gaJd*+N&$}Nt3yaOA6G)7h_13s$>4KJ9PgEQN z?4(jV$9IEQdzav1E@s}Co0;8J?%(^yZ&{Os&hZ$1BgRk&^ms)L?f(6);;q?PthPz= z{HwV=b8j6mSuw!qF$m@qeX#rG=XcT7$5(G2yt9kU2a&#@S$B7b{haWO&V5Y)F7$^c zS2Rh$HHMHvb2*~Cio;AGiP;H>FT9!^JT`gI-2AY2Y1LpmLFM}qh+=iyK^zYpfI{g` z!#w=@+GXel{P+6pW5Si+om}MCr@i=>0DOP^5>w|xTX!GcJ$6f zNl~DwM{&^x?iJ%{>;HJ6fBS2LqryN!g$W)-`;(&RoxIUNV_dq@+*~qP$cezl;78gs z51kAwYq9$B{A2d7yxS~(VtBl1;1#eFbi7EyaIf-}eT3DG-%kf-p9r47FsT}T4#Kd% z3(&^D+ksikZRiGOjaU}K2v`$IPU1C9PEM1PkDQ!*9A!2q&f&SqA#6(pt9yPK_z)VC z^Z!Aa%`3ekEE6d_ZP{dN{2(^jR!E2fKn0~!EYwjeH656p(7pZ{=KQ!}wFA(n(H;FTP5wy)PF7Ga%Y%2)7VPfgg=ggvqeQ*UhO z)j^QCO4LUo7b)`Q$3N3#cl*^H^mwQXV~_yI)~=HJGFYrl4v>0}FrzrFGmiu@Q}Zwx z^WbHr9~G678G?D}e)@KE@En;3W*ZKEj)a-5D7dv-1-QU+ih~wLW~qI#c2TI&S1XpA znuMuIn6ODe11pH%617R_%thH#YQMC4V-R~~>6D3L3?NQy$scuCy6ozsZ%{}8`ybt$ zs~gre@&MY*yBm~F=5NO<-I{r~Z*xyW4BW!hY0{fv83eT-Dj7a%muya*KzdKD)62dh z+23tCy+%`?P6BR#&Xz%ob65rP$dZVaui$4VLihqKHD^=1LV$+e)-oL}jMd!!0Y(E(Xa$hP*88 z!ln`p%<8CeU8U1WlpW46u5N>az@-NSV;}|TfWW=?L389p_xM2o;S!~_!9rnz8C~Fb z$?wt{*pGfu*5Lqz{a7asPF>eoP?9)kYaT5X%k-HJOeO$>f#KUdcVT1s4gh?+N9Vie zuH*H3_f`zvDnOTIktW)?_#pL?$j!EyJ!;VxDJquD(ovM8yT`r&cJW{CE>f9b2f+^i zaM#*Q3a(K z3ld`J;>^!4_bwh>U;6@uFlsRYWJho1CeRNUNb`|9D5bNXNaM!+2OoDozD|b$`86w| z#(7bsfLf3*oc9bvn(j2KA28PG_m6i_PVCUSbQk+K4&q7cw*lMyMRWgMvnK%?HOq1p zb->4q9{C0@3cP5n*qr*ZIrIs1V`sPgxZQZs-5d8#HJ8uuUp7ncbwB!qwt^qLZSa}h z99Iw!wDM~PcsPMwzki&rjM&1$O;l!S12}!N2cW;VOnh)MYVR%=z!(T zZV)mkh3}!CL9@JHm3bId+enah9FsAc8=@=tfg5@`g@9V!p?|>k=n8bh#WAnkXzqPz zgs$LuUK*q6jvuD^X4(gbCxxyM$8HiQ!8RIJdrIva6CyxZ`NIKzkIlsX;w3^_=sf+j zxWhu}8Hj?HCSDpO6mU)A0O><+&h2`9zIm`kgB`hPorNeKPwbP*TG0xGA*#coasyHm zlQ^3(VJQMHMHi3tlxq83lDiZ)zm(O~H$ZUFFHqH!`$|&V4cA=H3@SK1`IrB3! zgbt{Eq*Gj5&x83{23u!6oe}!6bRHgv{#^Kw6o_bFt2IVKH{->_y(7oFM?Ppy+@P@7 zU^kKDBw$Txfe(XiLcq;Mc$T+3?Ida!mRVZ)6j-$g7ny^*e3ktIxu&J};6>x_*aS^Z z3|v}A4=5I;pcBFHsk{Yx!{+*({>^1L)x)5Pu$T}+(7*tGffNOR74ZuoH8md`{L9@7 z1}B1H*D}vMHIv4JwC2!4vvS8QOmLz4$}A=IC(aJ+OWpGix)*W#cNS#CTr<4&Tc$ z3z5g#yp5lu72c`njkTh$&)fLUGoAj@IphHlz<1BTv+>C(gR_qUw~j*eZE3>HAc~PN zR5O{~Bgg|Ck*R_<-nmD2kOlG!mpi+ApR6IYYc8zzmglLlde{2u@g6YJ`0jSI6Tb69 z_xO?imG}Ec{>(CEjEBl3s7HG*8hImr`$ls&LE)yb=xS0=Mp5KXHw(UjpH+ky9imea z8F60!;mU8?<~c=E`P)TP@qF}bb8%OAQP57qe@rEy7Bm$Asdy!r<+&N27DT57(MK+b zK8`leAP+ngyChT4(m_eKTw^9hRdi5deH@#_fNK&*F^Lj)3|lryX0v^hqI8SBs(2Ad zP}dk$ru5`gR;RN1$g--|vAj4ypQjiV7m z-l;<(^G&~LU%X8&kUvCswHUdb%EeSJCM*|G8RovyzmGY0UbSVo*+(xwy@7JBHZUHs zI;vEJrCTH0r3{->P)afI4*41OQh_`ldRjywWGWR?shF@-U^df3%aoGHp=J)M^V75_ zn+5pn99`@7JFGVw0cwhsj}bPxE9mHDo|9zL#yjXi4_my=Y`CDCE|Y2KGo6~D;CV39 z3YuFNT6svI`r04&u)n~r(JT9gSpxd)FJ}ccAxCOd^}7?6$o#34C1MJi!)P!%^}|cJ z&9-t8<%N@lm_%=r3t>38sI)KMCKs&!lAyhSFF!RLQ^PS~!x6Xu)Cg;}CvWM!{;ew; z^Pl!ETyDiHU>8dqNYD10ZyjK3gOm?aZLD~WuR=&&C%tZ-e- ziGmnrDikV|(sT-WLg99VNxEP}r>}g~y>_{K@^bg|53RU!+lCcrO|Bv~pD2miB;6rBLd5 zFdJBQ+P>1{2A2fF426U4Hmn4nO2 zfVwP7V7zn3i~&@N%=0Vz^8K@~&CDL)f3P3X|IfxkW!yLOo4IlS?JN7|=Jvln?!O+y zjALzk>OM`#eX89ccYSIR7djm}9J3uX2s36(QANJ%RBEKc0|*gQ&?6qUxF}Vy|Ivb3 zq+q{{3enxG=D)nObn~iGvdyBan$sHezdYD1z1^RGhnmn$x}87OfhU}cXGF3s(o+h_Ez9YA3Ffc#coeDACK-!OS}lvPzZ;>zsq-}(}heweYx z0J_N{4xkDEHlhD4PFbW?LcX|7pFU>&Y4`w~1Kp4AZ7i>X$id)_c;FuK0tDQeR(*8v zry-myepK4c=qEOOm!ZIa`|bMe`Hhc%0Br~Q<2Szfm;lSsvcG=s|xnq#K{)xqT)uq+$%M|LzzC-6UJLji#UEXycSZYTf^ z#H2qaLr%Vr+9`3?_pY5aUe^HwiIZnaDxAR=5Q4y9-R9(>X6erZ)pw`&^%=8Whq#?_ zs3zKhPe3jJmg^r`?H~TSIeN9Z{UxK`Cem{LbF&A;APtBMwO=U2k#i+24*U4w?ydVY zKxMXQfT%e^I!PAE2#elWYPfpD^=U30?tTXhg@c%<0aQBs#rFsM_r7gTEH@`FFc=5; zP8ScFJuh?I{1osh zbZO`gnJpIrss-d4%I=_rfZN~uZmqX=VaLY#&*)b+x-HBzaAgQ^AaNlXIto%>PzYQ_ z00)T;@ts=4wSrio-VQJz_7jf9B6_JfT$0&~I2B-FGZhVn>7#?6ijTT-yt{achJ!J| zhN)%jqqlaed-Rgw141VS$-0teV7lqxrv%KzR($Vc_68iMX)wfjkTf_=Zks(RVk3G% zq0Ga^{Pcu&y?MAhzsAP!IE|g*q6KCkt4eY6KpulnB0OrFwY&uQF|MK`0PBRKfEh$K z2kZ=_GH7npY=drAfT1=}Zla5!L);ixEp7GLY~i4)0WGH|I|-8#yicie)MF_5+6BuJ zD3Ua;2?#+$uMCx(7bF$(PP&<4vVI6rFqu#Ev&zYUoFkh@`69E?$upOm2c|wk9(w3H zR9>EL7}!EK-Uk@dM`rs9WAJOFDvjCZO<1~4mtlv^ZHUvd3=)KDnj-~T4{A3BIqr5E z-zRVM$fm~U{RWVwhjed_MpThk6u|D(y6zsJo4~K5e5Ro{iq`C5q1fzn{V+}4SWV?X z!EgdHq;Pcg)cIf^7mcobGa!vv$ztmHb zSWKs1`lvavBvQuwI7yWH%a@yl1+%3?+@R8R6mu({SwNHM z?rKovfC5obBgarMKsgEg7JjS{fQRwO81?m~_1g^p9BPIs1?cwW6&q|dOhNS zQXoM#I~AZQI8L1@ijVY)mD$4aWmTs5$P7zvz~g!!F#tKHWZDh)R^@K#z+u*CmoTjI zC=wj6cG@Li+NC*rcBoy*$8A8fbk~H`35LH!kgHXC4*ayrSG52S^%;#FY8%~?SKzK8 z(8iEFzO>mn_)by*t5DHYL)Ah!7XUCqcNRlBICG7m_?ayXSE-Dga#Y7`Z3{44&I{q9 zMqsFua#SpumDA+B$YZvgQ+q}3s}&>Ym93>Hv*qF>bD{vAq3$-pxegJZ$vd}~f6w=W zj6vmSo&ah!V5j8DHw0D!A+tdEsR_gEP2fc5HEf1$%&2mQvhcpxLLCm;|xn? z;Ifmx966i~?(C5}%ze4^DUv2o4gD*CP65=*JpbXl7{xPthM&4+fgoFX1`jg80SIvr zazQ`2a;Q0b-)!9=c7WcNYQZbe;2Q&)i^4EFEfG@Gd3vZN2uEh)@ZpWKhv11A^N~e) zR3Lw#&4@AK%i=(B(V;HrQQhS)y331XG!2iUa?7Yt>E@v*l%0c0^U5)ic0ho|E4sb4 z_WoIh9?kX!+Rmb^ zDkb=18iRwxupAW6+Tj-zY|6xPh7WN3#LJM%)=0PutXpV6MJnxeh@Zl!`^YzHo`AwU zAg5IclD{p~2$E~^=k4+sl)kpv8~PYW4}e=Le-ZX=A^41t@clKzWe~F@$UVx-ki>{f z0(|om7Xim)vp1|627t|#7wz3$ZH`@H-qXqV!8E%A>GWpt2KgOkTXm3?LpO4!J@F*3 z!D?!s-iOq6zdzQ${$aPRE<75l;G2URM2`j(7AS{hqRwWc#ylkUDbGZ^F-VfRMG&LJ zpf{5>SV1Cn*t^S}Sb9kR@ORCP_vle(iB~6avm__Xku4`u02sj)Gext!QoWN>XY03D z0pw)%c>~u4_Ml2Zib_2UB)Gk7(zj6xoL@j<$+r(ikrwK$z01Op3zz%XKR4T#R|F*( zR+QW;3lq;>=-~VoGQDp2_FCmmoe66u~o>s@GoXryLbXW4VHYGa@U2hBiwIx3YiOFwe%i zEEC63?jA`HCBd8H3(cu-Sf2ONR~^Us8UMcytV751e-@_rKeHPZx^?bVwJP|aY2sIV z2jf^mEVudr{}oSPi<}2X=A)txjMK&^rWtGpc#}b`d<~Av&TDI=`dAdb{QbuH&ly1f z(aRgBKQVh1uZ~d5QjZKejFRFaLC!rwmhlHX+s7<$x2a1xFqbaNu}Xmi5y1CkQH((MBgONPc|MV$*a5&jUfi-GDw9y|Cpnl}Yw za|OCsCACBnM@=tgXX%D%lBR)TO-1ROx6YWY;=ACUA0XJzlFu%)%j2rT?whUUrEXOF zYP%5ai249+)m*8zo3krIB!UMf)co3g9<#irhLyZXIH>pgoxPzXQR=*@EBl zho6ZK_ZEDYKm2Ui#oqGo2Yu=-3s86Ra5MDVUy|Z{W#0gQRe@;rVnk}(3@ASiL*$3> zV_IVHFGtWIk%RXtw4rg;qfW^T_wZMFATnak)I2|l$tNjG;Z>5zg~g4}-|c<) z2_g;3XCQU_m%C>f$KBgk1vMz8R@P1qyFB~XSzlHAUfLwcab2LpO>wZM_;6&R$20%3 zwHvwZUY?^NN+~jK?Zu@YBIE{pSHEk&!vlk*KEVMIsh?&_jDxB!CgG{5MpA{S6@t41 z43RsiwXyv%?V=KU43k3Ri^$q;I-K~%Z}-hG&-B&(`}WU1`^28N=JvDS9?(1SQ)9Dd zcF%LKJ^MuHmRT06J$1#FB^S zAVi1#j}E6I$TF0_TZT%CszjS5wNz_soE#?rON&1gZ{nlJmReImm#Nv=XeS;>Au!sD zhI38z(e-isfjUMddIHbQqwr1cEE-m*IglP}R`f*S7;Qt2cF-aSi#YLJMR~G8iz6p` z-&_}8W$`2N3ky<4jPE#rx=_lXXy#;+jR6scz5ec}-E-fXRm7qk=)C9`mh)XGXpuWwt8Hn5kP8O3xk}-%@EGF|*vew_-EU8i0TkaCmf^#7#l>G*!Xr7PDzq z-f>2Q24?#WF&X4UrIMjzBe^{3Moyc}Hj$tRU03a~z}#)~<=fpKFrRRgjlVz&0X(pN z|1A4Wr+?!eIE-iw!^~xO@go{UBHn1THwcQPD6&}F`{QH85p#bO{%K`!P?k|;kS+l= z?Vxp|``M}W+b0PUq!o2=R4yYYFX|kau^PE_g0c!#6dgTJJc`DAOXIJn5 z$45W4=KEn9*>RJ=x?&C`NX;Lty_t7zJk6$<(eccii>Wn|h-*zgZ|s5l6;r619mW`^ zc58usL;9la)3a7Z{*_kI41$d@s$RY~QqV@<-}RHI&MR5t>mP@y0%$%wZuc+u?RkT) z+UqlK%a~&;ID06&-@jns zYV0v@%)GYif4(&{`zI5ip%4twaZ8V`4{XE0S7*L3zXC0WXBvFS7_D6;G_h=ob_);y z$O1-!IEuq=2*BXS5){Mkj%W_Oy-I%%AVD@r6Bw@bK;o>OYC(?=n6lKV7HA4Y@Mdr3 zF>DL~(md?VIxx0ObO(}vX}0dMuM7n>Mb*kv)9%`1dW2{Ah?Not?K4vAEaOK${B`f$ zADHm+;R5n6@$+Wk$Mt(3;A_Bmpe@g4^Z@*=l@mnTb~U$1lagWW$h+WA9;8=HZd>4i zYX(Uoc@;YE?giMnd2|9}=gdm;rTf=`8OQ8TXZN5_8#fM(+Pepx+PgbUf%9~Z;THpx z1X@uQYeCN#c2Lt%BASBXMSRs=Gi=a~%DlkTgmyy4jqA(g=4!%r}!p=^luSYkmXN;%3UhK?9-hW4KGY&WO)I=-wP(1-Olk z*hF5IgPuuQ3k$8^zJw|Mp;{T#$BsiTo5gRKq+a^U=6ZP`NsCKWQ?o4(om(D12%xRw z%+on{0R;vYb@H|k?()(u3`GU^)k_@hXb4c_Ys`ar{QR`utv@OnSYoAe&fw;H{BS zV@|-@yIbE5HV)MgAeS)!4t|oD?19^7_L{&C24(@yQ6q0|5*C<903y*ojQtxFc{oA*;_MeGe&O54fW_k zL7V|@N^pM-jt5|JD=Py7VdMz78RP9xWP`qZbLvFzimq8|G)DkTt*}7OSH7yohvdT; zVIoOMU=5ngKZnUPIA=Ela5lnR`T58?4j~{7mWVO@9Qz}M6264-DLA1MC79ipcL8|- z=Bn`$97dvw;BbO*y7WieV`wnS~PpDIE3L$RMSSW z2dfiuLqf@45k6t*ODDSL-zE!+OVC>}JwPPzov6_Ioxq!Ras*QHQK-o{6ZIKJP7S;W zMaPSGSv! zfh(4@Kv|TaFUVEo&9Oo%7$k7XssnBP2cNKzNo7Q7Ruf}?fh!u|LG|yy2S?TH zLL$EooW2p}+JRq)Ma7fm@6v^2KjBUmM9}O3n61MUzMvzVB~PY%@ixe!0X*8Qeu>LL zHn;PS9kQHe>qbZ#d5E5L-jfr!KC%;ZGcDpORF4Msm*IEPke7kljo|_06=<c1g7Fn;@1S?(=M!Bob5wfx)L3RIly|?;+AZ3}YA%xjgfc#w}#c6hLyb_6SAQj7d zWbyRHJ18uWLZ{+Yvv{fd(Y5A-uR-w%PX<%z78JACm)mp{E1QtkN&2C}L zhF3nQ6m$v%+56b5RTx2>9M!{Y(#9_1!+|Q6cP~j1Hz7-3(=A~DbV$1me0V7T{yYXe zp!_-5p23i;?11y#qV%DJ70KRB1H`*K z>vt}&?MsUy<&C%OT{&U4_s|0|1d2TJ-Vye%-#@l_QU7vxvAKJ3{q~W++&$8H`X7Ef z_fH+Vwd@Z#U@QK>wIn=HEPmVn+@ecG=xqwTOHs~ znCsTVDIN_>r_N(sYu6eR6Co) zhwxHNb3he{22=Kr_DpQQL2*kKv7?!o{!lu}d;ic4yir}4E{N)K~8p_6QQ4la8 zK{3+aZeQMVJ)}B(M6fyqnU*QKtrRbGtXPaeixrMqJ15{Fm=Y2ZG{)1FB^PuUB#8@# zw)w#|Gt&otR5*Y-Q9dOZ#&NBppP{n@Zn=EL1b8?m*pA%kt{kPx7TY^-zmcWg#o02feN7pW1k949$|@~0^=X4M4C6tfCu4~T*U{Tr^5=cZ}1wso6R@AkjH z!T$U3*Ytj7Pl9Tz>KHIs(yLHg91N!5qCqn7)S>>B_YoaZL=W2pw~c-RL`UGSp$yNu zAJ4zD@yRK(2fJmM0N6?EdB#ov1Yi}QR6K_Zh?(c0rDsK5qVO*s!h?NDVd28T4p2pJ@VxuNoU z_C9GCl>jqV>v_~4Oo}OKV$K?ad{yr0l^2HR#~l5^$NZB z`~a~U>I$eX0H@Aqdm#pt9Zv=2999=hH-;H!VC@YswbZ#K*9U(}nJamXvHV#`K9Zl6 zQm~P=CA`|9MPFMbD{m&kAu@Y00Ogc(C8cuwo#yN8_U_1*~l?`)nkAe_c;dQWimgTDkeyWQ`kdjr8 zG~(zN;3Gw4SUy@aKUKRM6IT_`fG$w^66hAn!klj)w5cLVxymNht zHLl{nmu}#iFpkUXOLUgaojjuArKs#CA44H!i~2 zDny^8Ms2xhdqo*r36(?`&C^F_2a8T+^aaJr=b_g#ZY+YM7M4J8m5J@_1ERxSjD7J7~q zTR{Z}Z4VWRlT8m5x;v@_aFVi6h^7>t?zVAU;RhxRaYbH>Vl3f;oVh$`={+cX5sMDr zH~;|)yl&lBL&GA-L1>NHuY9tqO^JBHzrUBcf1 z=Mus<P+QuNml#ChHCJ5P^VhA&l_EGwd(a5E{ z$9@)rc}^s}EW#z$H?f7ow6mkbT0p*-C&X_P#Tpc_aIxM8sS*s)s`2hHbdsObJA0cA zKk;)*PDj}8iSRLsx^Vz3#8 z+RsQK<@XVp0U~|nO$KDcC|8CdI@G$Ui?;jG9l-RM-TxrUkcI@6kmiGf_|}UM8_Bz% z(P6L{ZG8T**|z~dHymj-*C7hhoZNTt!PiiVreBi-X10IU7UKsPFp{(bE+y1(R}_TU z%pYkYvlX2fQ*^O99MYV<*u8dX;GPTi;O?hyqrAe%oxb}JHF$21%$t~zl8-}w0_A(UGi+BXpq32TIWmt`%q{ z%|1H3QHDRGTpi3BGMT=+D(fek%zO+119y`uWLvGQAqpMO!}!c^;$+ zaZl~MIZS_~hy<0}HHPyQAT;*i7V6Fy)0bi8DZm#y$8x^nA_u61YKnzUJ#$gM6SylQ zSBmC-S$POFI!7M#uNzjj9e@YLBW<%oQQOp1yx>G~vH7PK*Aqor^yikY?)aPl=vrXK zeUE?Jm|=+ROGqG1z3@AUWG8>clO(KG@h5xtoi*1$#e7{gDB+)`)Zp@nAU z4$UFctzDyl(X{O{_6s1Vs3!|7D4_N5aa{tX z=URC!0|qgsZr-N<)CV$S zoT+1X)CEP~We3qs5+LaM>PZ4NlbS>c)yz=TfG|;^M_axMBl?0+EyzWJSs0Q*nmr(P zin0J-u2$tnsI|bckRNWJ4DGwoM3K#i6fqWx+Z876P zSH}j4CiIJ{0;970zGPWseI|%*EjlE8$MF)BWtDZgnxQWH?&^$Jy zWPXWSxyHBj^E}I4)ho33Exiz+O}GZ~-X9@@2U0df?E(jLmMP4+os_{F7;od;T^wTw z#R2A|q;|(~A7LBP7)Y*~BSh5+DA$QnG8xN#bjqp*hqMx%iAhX0@AX;l<{Alu*=I)= zQc*f8Ru0-CsI9mE;A4tiXVHhifU_8=c=kB&j9z3rGp042K^tvOnR8cqu19? zV3+|JRgg`yi6@#^2Wcw#l!sSg^UOYW5SCeh-Vfc!cCfJ=H5pm1$MOVFs0aLgsi?00 z_djCl9mxo|cDrAGeizMJlJmQZifEJ|!Cx`?Mkq}ujHgZBEI~+Fd5}3c7XdLYud1Gl zhzLK7-!?jOT&d1(xe9BtK_v80uS9R4Mt#FJqAVsTo@Rxy;ZESj{2B(^%{K1>R;9|+ zK0o>xwC(QNa{q_#5c7O+0^PKu->b8J`}E+?)YCVU6d;)ez9YuZ#XBg6)cJ>f7!545 zm#VBRpDeSNpXxmAJ=OV_>LvEGCx7}=!#D{!$S}**JBUVl(I11HtCTxNk^`-x^b;yu zBfWt`FncASW7bIhtHx#V6E;}9aM{KTI!Ne&$61S2>C|Yns$8W}XpEkb8qgtCsH`Ff zPzJUH(I?^&)n3@PUBCxNU0#W|X$j+=2>?klQ~_lP+qR1UNZvlc6eWL4&IB8r1*_kN zDt^IE5+%AtCQATyH39>&ybD+dR^~JApYT!##XMyRvTMdmplAo;bai@xUPRVk2CoyQ zrQ>3FNPZodTm}?~{>2Y(7%agw1lUis8ZZU}I)IFnh{iq!h;mFFMruKc#Q-C10jB-Q zKC~$uEG4FugE**VyF{`F7W*LaRD~kJ%hQ5J4cI_XM8k=iG8-ePK;9NZg}_eGSS0{_ z;uxa?mT?DA9lzaFgqU4$^1BV6kCE-7(5_>1VU0dTIV1c z`eSeHJ(h62y*Bc5v*!U-EJ&PK3Ev1xWXpG8K5wU*HauaOSh2W=t9#eNhM3S5F?LC9jh2W;=N40sUWTLJXUd7 znwy_>=dZx*qT2|)IOxP;gT0GC7^p~~Uja=-Mc-(y-(g)rfP+7=V%E;%0{JZ;#q{JL zPXu3Nun~-cCQ&wmOuKLutrVnX43>bd$FzhRh_kmizYHG??IV#EC% zg;-_z3V4i+*YeSG!p=yi_dVAOfqJC)q|{D8H4U?{*$>e7h;9o-H%Yn^tMK7VQhGdl zZziYswx|K9MLW7@@;$-w)Ce}zMl5JOf4RGQ%6ya(;^CH&ujp60$s>;%QE;1&Vngi+ zl}Y)YI^MlznjnkQ60Nw(H_(1-yeIO!2<3o)*F9>8ix0{<2dzEYkRi+>w?^Ng{N3z} zJ`8iHM#)}YMcC-07yI|_;iAG-?VY`aPGHz4a#;B(*;v-7D(YgyTURVL%qd3PB~!pq zp`;sUeihJTgI4rF2^yjGd*1+RY}CGirC_TO!joCf6u4y2W|uxi;v7TAW;Y(pmSCHU zl*`aP4FIZx)S}p2zuO!(>?#QpbpEr?t8w@+Jydx3fAU8gBU;SL%&S$95H9JwDMhq? zQ*jQL*EDEE85BeHDlG739SSWs(5JMV1(+x1ibF6)DY<;AMv1!$)KTI3F`#Md^?|$) zrvM3*4|Et!n!dS{WegKpE39x=YBvO}l;i-86-!1aB9?xnXgYdzW>pC8N>bit_ZGJn zbQY@ml)a`+b=(m`Y32K(UjSEGes%WMc%fY@fe2%V;%D{(fKN zw}>NMX8;V!CdZCmetHANvoGci?7zb*BeA|{;$c1&24lPEk!5U;e1(r{9IkRB5w(mG zhhA2DV5X67UZ2lrLrP3uCigvXL@5`J6t!|J0K22nV}RWmtQuD+TPCSucJ!-K6NTBT zo(D+Q2rjNhXJQ}~P%&y}j7^XXXDda*MNtt#t1n$gmoe-Yg*6-RT-`Wx6?&e2OCQnj z8kYrF2vux&5wV~{7+kY!7a$lEcrsua27_>%o<}H7gsyA$Fh5FiurX_s@)#0@>!unq z+K5f7Giqf%ETVE`6c|#zgc@S->)y5dW|t8NU>IIi8-wZEk#N$LG`N2bhU*JoooS$( zX1NfWm_Y5M4xG#H)to;}9sqqN8-_1r&ryL<(Hg~#I69J_RZ!?}fa@d2;*S83+LJ8=HK2plT$%YCu3w>au2zQV6b(LbRHf*Q06Mdz z_GJIkU1JPs&zwT3Q3{x4VJ`5^(PnVMw{ zTLJ6;ly1H-Yxmwq&WP$s)Vwqd5Dc~*C#3^8VkKl{!y>#O56TZ?=>|oN12%T$6EXwL zaI#JquY#`m2s2X3rN$~$g=zSk8n5N&7>Udr#mmK7l;+z(&Ms>?`0SYRk^yF|fMB65 zLik95y1~dDwkE~%Q0A=wg&}|Eky;_2t+imX3(*o3jSRnThJV(9S%|)G0NJYAk1%9; zA%Ye(su-f0S=0bEkY9Ef*U94oaijL}8!; z0J}x+>M_yaa(e-pStP3Ihj?=cy@Be%&|Oewm`c%oHsshMN9=8u>Abm}tra~56?E&) zcJnOaZh3bmoD$2j9*tN zNCvfqR17);D^7Lh?XfN+j0yq*Kv6XEMIoLfv*QSps7w+SR|95+KGqJhcQ!FajJ}={ zt@-lTVoBpG$7qLUyFy!pQxxiqJr)0LR`I;daX~Gm?1kf9(kg^^xx)tM60v{ntJLW` zsre7yMf2XrtPz^OE!AJ}TeW9_VW8uW%uWH#EOl7u31A%5q+CyB%%ZrRbhw$!B2UB^ zF%?%%zDdTjy4Yq33>?jsBn3Kbr8Ru>n1M5@{Ll=N^4wLqDFn^B)H6U^CcFju3)FmR z_ArN~_Oe(xg#Ixgv>?-ajiO(gEoL^0v@_th!7G7Zo5H|?GYc~%dKT0uL<^*=b{h<* zR?NO5K%vl>rNZ&c-_fRA7bfV5tJRJ+Ik07AucNH90JI7Qb}>e0CXj2Do55rSo#h&x%w(++5Z%Z)$~pmdq&f9vvj7Z)+sy01?ogmR^Mg1+ zPFiBqImIeO;Kx*+L2C`0>BS@O-E2MpIot)nI?@Ad#?RpKWDMXz=W!q<02)Y@K-#{5 z!xU(O0-k(WZf;sV!C*DZ)?zp%>fZ0qdpn}Oe-a1ueQ5Zt_7BNl$ zdBHK9`T(iWG}6~ufznaAj@ns2mQx?2qL+^FVLXDT1is?j2Roho>dc}0@kexLQ!bNL z60GsgU7*nb@KX_IGK-{LN#!=zK5pJN1lbN)XTAq_LF0QzU^=Q&L7r(77l6J?R(oQW z^T-`QvvpCe{^$lTQX6MfxRV{BK&ROwbR@cSRq&}{e6V#B25JsX-thSG?KDqgxY(HU zEadNMQ>cIwo4X@jA)=(K5Qd)G z07)Nwef4O>t)A%B9D8ns0t zgd3(gS*82@vQR_|SMeQeu6bO?ahR(IMsh?-34JUZpDc)Il;0h*EAOGP!zn;&rcq6C z4Zv3PWb#X7sVbV%%GPiMY(8Cb;p{wY4`PBdiN235D48_#kInf+RZ)f%j z?EEuF6*(*fwn)bLc>6Y;quE;MfOmk6s@xhnb++7~&c&kWiwDKt2lRWmvS!bSFr$qL zF(sgpFFq56h07Si=$|;!yZXRz(UeWijHD_#S`op6K*<9okR8a~CC0R~a9O@aX3y}0 z1my)4<$(@I-aamDcj*+^L(LYAb4+&uJz6JQC=FErVNe=tEPWs^4bVq}?1W_S#ra|VDPEf^k<{BRrp0({|N>8ZmrVjP#(lxdTQFHpu1Rnb!?5g&c!Hb(`G~ph___q=py#-@_!}P+%Jxe32t}SaRDU!2#SaHw5ITdQzNC6Com{z0q1w_Nd427&GAm)2(hk?-rs#e2y z4Rhd705?=~)nZ`N1S16w8-EWiBSC>ddig7Dy=sK&jg-{jYJp9D!JOR<=mZHH|Cb*! za(iWsM_K05G4t#RO=@60U-8;Rn&j_kQeygd|iG7jlw=gHf5*42Sh6sh#gTv2i z_Fd4U3Y1|rjWAqdjEo@Q(5q4;+}y zcq1)mk|v}K4(s)hGA>5`2pnb~9MGzc#r)PluS&%$KEybL7P3p}xK0(gk&5$!axk#r zn4Y?F5L>5@Dz9(!0;uGn5~6a=3=>7RNu4kYSsGnmVPLF-PNCTCvD_-RK*}Rjfh}Nu zhDQz!&D8eYPto9ScELfZh^)8T^Ub1QD*N&S=9+)gpqZ^3R%lnqN4N?HH-lNN+l=~f zXkE+}bz?@F8>%;Mi=Tt+KckXAdeKIkhYsM3zz?VsbSU}4i$ybsO_~X0g#>WNdSKA# z!aFEU+%OMbMuC!!M(cPXV3q-2te71^q5bK2PeW5GLMUxg*+~LKUus)T4-h;^=AE0z zFoan<25OEu(!Gk;Bm*Rg1jhMgh9AMR?#K_omNL;^I)Pu9U5_9G8e&>09x6!$a_pGq zkxvI$ci>7eTbFT#L`9}eO@S>d0Sc&Mq-|Uk-!D+vE0v=eIwr>tcW>RtRBZp|vN$5l zAl+RuESGtJLPR5vvNfC~hwV2RMDtQm54$6+z#LA(;0i~OQ$WKj*~IS2_rVrm@Q=a8 znU*M;$#-12FErw7;kSD}hCwSea-uti8@yXyyYt)&ohP4p=9!+Q0^cvCt>L zbbt?u$V;P7&;=d1p>Psy%m+Als9TfG)1G{vQONUH#=wGrKfWl?{;Jy##ykKRHe#Iz zfmxdc`C?&X;l#*3OpFLd#gm$0Y-kP!oX`oIVU|BncYbXhC|``^;{+tiX$H4XUI_R|n84Tp-ZlCaBRd68!k{aFu#Z`f<>?j3AC)l8UI}zzDDb9grv!f* zZVmeLnv=(xLq9erZqabbz;?ZDaG`t$J~F7CW^t~DP(9(MVX_PMk3THkTQ@=7hEr@%Ll!Kyax2`!HHW?Ux zcEgYy-TF64S(-iD1F#L?7L;TM@vgP43;GLcl7QZaPk|gNmlafR*fipU!{p}EZRwx< z5lj|lJ3*&*4mK?%zLAmF=&gv#W#kCV9uPy&^K``c3eCwXdBX!1P54~i$<~=Y06mo$ z5XlvT28Wq7Dsz>w`2g-kQ&H7y=`bq5Gp62p!sHrR8Ww_nPK6?R1`D;$8}{(}C>$05 zUXpJ;V?8=`Ts-OKVORkO8uWztIS^3!4_VcP|4r0e$mt(^r_a&;Z1$o^g296sncCuu z60oGew_W%au_HFoyLFwZT7JA3E{4~L-(r9C6SGGmii-16h1n1yz;Q7Lg-d{K@*yS~ zL_GKPa0F4%bMQYkd}ILJRXGZS$$&A1FC+LZe22`1*`mnEVu)D1@k8r}b+@WZJPA$EW~;kEPz0Khwv__#0#3-1 zsgiOQhr*3E&d$V`1fUkdkfprJR=sDi5c;W$q*f6Gw!XZfMrNMe3$Q4G}5rmMgUIKwLfbemttd>OP0jWI|nQY_zFE$Rp$HedceS=*g zi;6iEwOgK+Km&r=5;5j1K>DOu=k9mk8$2ACzExd}l%_d$ErE`byc;a!Vvqy?rVo)~ zgM|Qk7~G+&5UrLEgU30>wQZQLzTA zpq8GMm5SN5)uI?Igno9Q{*R=Cx7Y@gg&YUPaup??-m5wC)%v|pNZJe*0`>zy4^;1o zJ{+l5gC*Q5%K#Uv@09|2JWx?phk`s7$pbZ0b#YR7As)89swdI>#zq<)TqrIp@)kjg*UJ@P?w;)dCAB5#$%Rji#4NBeIMlr|+BPvOeO$3Jvez9;Q&b{4*0 zd7zC|B)0eMw`l33wXg~@fxYE<%FE+YjAph5g^z=>D~-Q5;t8{#NVyz#yS7+cv!emm zW{xRKC5mQSUOhhC^48pj+0q`Mq=EadoGd?$Bg3Uh1Ct-i-ifRirzB^;-Qo(GJvd}} zH^52CN&ydU&Ysv-~bs=iBI{7o!(rX=Ub7G-W$1zyF9;M%VN|sJA1vD1w};KG4|}OhiKL z3|($tshWx)1lcs zF93dkjE^h>Hxc~r(8mW&KOu@CAhBvln9sr|TS2NV?ndS~^M2(AnGMj1uO>A31&NwQ*;F{wz9%D}(Y zPmE-6tSS{KeJqa;<5X#tsGw1zjg8xBoOScwQCu3Sjg3Lf(Cw%6Gyc@`u$*dB;b?6w%38GXSa@TiO$?sl z(t8`rtBlf-Ul9YX=WHEW zXpIdUsIAp#3BZ%|K(v7wemL*~ATm&;nGep09&6J47Y4hAQQ{%!y*sbIe76>Lr{iP()h`=ns|%a@yl z1%pK+7sGNG;gJtjF3=Dx9XXzMNT)#bs0&Q_>FzsV%R?X3=kim58G-Nr;>R$it{%gkLR!dRiP%B2Qi{Zz#+7t{HwE%}MX#_K*-KYI z)3Sd11LM&||4JP+eJ$&q;3c02=@SHM~%O6Ert&_SU{O zb5j@&OF25T-I7tm0~i|BIm0qm0REF4;Jw>ldrZSO99NvdORim$b8l9a)hH_BI8Z*V z_R5joLCYb+Q}Q42Yxt-{)D34F;Vc3+v(pO!IPHS@L4HO4Wd_Kpu!*8H!2xgAZ(nA> zy&U!y$#b&!urJ0)ut?-aDJD;~;#&b9$`MFb7G5Ql4;hi^NB7`ik_j=8%s6pCxD3mo zQ6&Lrt+GmGi6?AA`pmu4H@l1P5#|Rqo*;HuUp-5Qh0j3=a9j?A<_MlQ&VNq(>Yluc zhE@E9je`%Gg#i)s={q7iy?(cU_!gnP^J%$x{MPJKVl=JExGaH_td0^fj6?ROpolmu-UV$Xi#I4;g|rI1n9lCrCuGRL%T-dii zH_sp>I4wC(jJ;2ckkp4 zU`kSzkW~yHoCh*IVYe9EjG#mVCz!5eeF7E{dU19+7~}Z;&hBD%X3yMAxo2(<&BAvG z1KaG~!aDF!)l(9_2$xE{kb77J47AThPKJe=7 z-Z$r-Iq<*t@tcZQVYi4kgUioi_mwe~0Ke)`bJh?k1(~22RdmGw(69uXzCL}2K8*Yr zTqHJgF}Pjw9|18REesp;Z=0Pckfs1Jt54}VNW}tIQb}6EQRjKIPla?ZeF5P#xE>(i zL`qvFA!WS)%WRGa%^$<8Hs-2ue6U3LZ@C|Wo$1Q`=F;Jf!-qG{9x{8o$algNy;t(* zq^A<{6RBIcGQ;dL9>adk!Pp1C9;Aj*58?hl{ha((vwZ+@p#TApa;<0|m`wm+h_nw5 zAa`mJKWA_J;B2${CHut>3$X0S%Hi1A<2g-c@8n^#$Acv^&oBcj9|P`g_sm5gm9S5+ z@+p@Y_91Y!V16ic0*Wf==?3UW$0@Ob)B%(grn!gAIc(17^LH`PPoL6kPhpvR7!}Z( zU=K*dRis`#hIhyz_-PjgS1wKy48yCn1ZJyF-|1`)0b}o^=;$rY_8u28;t&-epPeUH z^} zSsbn;keuv(_=VxKYk*z>Gg@oIDj+Ubz&Mv`IxN&9DoMCg^A`;+2awXCbw`+v9-QwU zKSAa0iKvr80Rih4um90tWb0OjWY2fI{c41+x@zslg$~B$@;7 zv0v~BdTLvOTSdDeD~iC2{r#2C@I$k6L`4pDbu}}@jMk+qq`s*e3mTPK&A0C~hu3gb z;8f$f(uS}Dcq~A?>fgI(_DFbK;ObDPa9BZr0;Q7|$QNen=G+a`zJ?bVC`v+pI8q|1 zAwpRNP>2oSR-6H&7=D88^0-lgtecvK0O$vKSuCtsI)}M5gZmRyiHp{G#Wu>W9{G7t z0S2D0>H(T42S)W>Lqo_iKu;uZNT6qO-_h{1q0=_ck+74bYGC0urFUdfG zcQ4+CD3U3n?#TJOT+@7yh*9ulnhq~`C_Mw1R7ro0ek(ye!kH$9q$2|!hJy^p4BGt2 zmHskVZN?xY0oY#^Bl1u#(7E~E+9EC5{p?-TW12exREP9I|M)x2S;Htd004e~#Eed? zqX0aX0F>hox6dEYko)|3L|q2g3E&Ve$|2eS3vf*MlTdLug@enT1LHyi((q0Ysfkxs z)#7P*vEu3bWF25fL^N>ZD_k677Xv`oW$6JZSCaYW#uBYA+=?GB0A!skJj?zqUuBB< z{xO8NOjy2Sp$Iuqq30jr0Gf=`?mMZF%fo4VXN7x z1t^vyU!`0)k%U?Lx_|3J|JE17PIpo&IHN&pzmX2h!H5KccKIBLq?6n_Oy4sdhHC+9 zzJC8fv+{X&@kdf_hOfZN6maTvU%_<}5QeH#p>mLQ<@J;swYSQvL*~gRe+2 zGBq_b-=4UXd9qeyXYJX#JS1Tqz26N)2%v?i)8fp=P$t^^LoiY-Ojye=HdJgX#0uq} z@TL^hpjir<$L#n(MSuXa_LZkVAg+rpcobJ008EKCrs%*!irSC z1GETtEJRxn@IfhZL7hNU%`y3qe!$E1?tUQR1msB|alE_4rU()Pa^FD5Oh(IAVqHB!ni47U*6wA zz1Z}r4cr(f!;7PzN~d-M^aFx*OR-sl6gF~YjM>WaX`oH0&{&|2=%cy>m#nXJX_5dL z78&8*hrlJ1zam9LbQrW@vrmL}*$O=*isHbBMsU2o3a<7Qkt@Va!<6aT8cO|*0HaECMsvk343_}zwD!z7_`{SBqm5TjvQ2gWOa z2T`akyR=Qpkg;OWL0-h=?Qmqo&8~fj77x!+gFck@n2wdc3XyFK1Hds|Y{UUA7ib|@ zy9`;uXz*d_9C2QB=#;M+o}<~9bn6<;cPgU~D>JCiU=auRZ2(3Lqm7S=vNsJO&@vqjNboCTg24l5BqwMI_03VPKc|_>g zXQNJTUPpkVXCqA!_{UKfSMCDYWhxbeI3%7(!w|*}s>S^)N-h)Nu^5bn57s^LInO|wM2K;SJ}xxCY6Ty&jR`P> zFtCI% zgj#t~3h_jAFDW*WX}1tvz{AElo4nVYf}43knhE4~8*9Wm_6SGAv;p4@oe0>zTKf2Mh~Ty7oChN+=7oYsoT5cBtc;$zL40X;rG-i`)jUNE3T)HXhA(|WGMF|*R zGUeg+iWmdAF2+BVSj2e-lbNP7nP^YSfMuv1z6mimh)F2L&k{1}naO16vL0Y$ucQk- za*r7YBkMBxlsII}zFZXM=+;wnu_9W4+rz_ecI(bxV2KkRj!^HM+3I{U4iyY#*SC*S zihx!}_L^2iF$H%7wN?0Ah=6P!1Ggsxc!b^t0;9(bRCQ>d+H)LCt`;h2D83K42yI(&rCkNf0ql>gCZ{6Vb9+j5$yBCLnrzvo8+Zn+%K$N^WcT1tDDcH9!Rz#uK$o1Bw#Aiwii7M}`LU!s)QftiTMC&iV090Kv`>-BF6WFNAThh7|;P4vc;NqCr z%#a~0X6O>sm^9F%q9;S`${5RWkHMh`LPJHLY;_yZvWj%-#{31?e6!O4Clr`()QQ~T zt)q`mAC0n*RI9`Xpz0mnZ+rC;!^g;h_NY5D-$`O`fB|je<@3ZkrybxvmVx&jpv+yj zAl6|}0^@P2p&0e@O`ikD2C*Hu1~fOs2?7>SDLx#|*OF=nfU7`q z=SgJxKcb(Q4FQn6&?tb7Oaeh7s>4J{O9;hB)Z{#xAU1S*(x9)&M391_%5hX$>+b;k z6QfhEVlT)bSrqm{@aCX3OmWJIabxSbn8{BNltrF{??&@!8KQnvk1#x2_yAF!VED{c zu7><+nRE5dy^Zr1JB&?7q~cC|h)G7PZ;BFrjZ37QEX^zu$c8jFLiYxmzB#_oWshN( zsag6F2BH7p6f#ew@`t}A-H+djZS%j`-2b|F@;Vs=9KP8(qn+IkeQ0gXIRksTNxo0c|%H0uqUm-T=K1Z31b90-$f(PF-t<^jebk;zJZp!8Q z?UVeAl7VG@9S7*N3Cw{b3vL$G$g$`X1QPt4F$>NuGDcSLYkCsh8u^Bqy_laPXv1`> ze1mw|Z&MkI%gKXL`2jZX1O!+w57erbh)v-&a?L|8M>>byQeJ%Nf6oY9hFZ^dkfg2v zwhuxM&Ba5K7V1~cZ`uc}pr?q@8>ToUkPCUwbmc^Tjd#!3^v!_n3IL6u-P61R*oxdF zP>IXOa!}w#)R@9nl+~b{iK!_{{V=ek4{ymg!0d`4ndCXKI&RI<91y^~ zvy&hCm%FInufh}j%iSXe&-4=%?=eNLKL@{nC#xhaY@8G)%DmW3l;Sv@48}!79*Oru z+vo!aT|jvNd}Garb7P=xMwQZmWuJWXknBm5P}%k{`6%FKcuxqui%sScAUNG0#pdJJE zQLYW~0st7nHYz^lFqD)ZXQ{D057?6_njJL?5aS@=byUldHX0kap9Na}mAXs!M>K3+ zwATyZz5qsapj=3JqUib}oR$rK)`a9qopxq7Ab+3Jaio zIc5MbNPPXYym@gb7PF-x2u;Aht|$^_0Jz1b6JZsc!F)9Z8e8?Y*-4?n7q!z!c^FIr z6^iI#G_Wc^z-(y`v&0!_jb&>CDH=%fKp|7bh$~?_E3?&cN?u+g?WMWm0fZb0c;#Bz zt75c20ZC3}gtAh_4nQ8V2>zI6i(s3oJQrF)GR0%5Vz){vFF@Z z6u^DNb1W?4jn3`348Xspc^Aj80B9kA-feU$v(qvN9Iw(s)gh?q-@0bzoQ4kk z3Wg@D*_e-(LAb=quCek}sbI@zolrQS zLjqU|F$)r%gW1Q#nN^G$Nw;%UNZ~$@V*lADOVF6(xRL5<4E^J+CvW2)#~Ir5(m?S& zSb~=mWm9{_*2+Azr44Y513#{Y^vcK20yjP+sy%puSus0)AS6I9s`M*E#YhbRLfcx* zwYdm*Qd}8%%S^r=q2iCYtbm=9SHws^)%uk}ziAHvXXFA>fbQO5!V1&m>OkTcIve}} zPO1(|Tb201i~-c2ayxlcbm@BV}QBpL`#E z6V(W!38xZA^-2V8H1EsXtzZlK$1c-EAjNZwpHTgjvWaF7brZC8Cz-Zg17CpkxX{h9 zF$lO`ve)}GnJ|MCMG(7a!AAyAV+Al&@8*7jw2PvEFkvKn*!YZCk=2yBT`>DI?2_6=7%%PmFBxF>&^%Dg)EW16w~x3Wu`C#^aq;B>Ud2kcLNn*!%WbLcmT@xD%sZBD1z#IrXdK0{9%3)pq$UC^gBBijA?icnkr>)& z5=; zSqOGV^vi2>e^k~$gHWe)fy-q~c?8Ucs4UelKtx0uDz3##-H)z`#u^UszQJ#%*|CHL z$jFnCqBIe{U_Mh?4i}Kt?XG>sYQCQW_|>V`v7%45;R?Ks*ta)^&(Gsn^?LS^A}~6=JMr&DHQ<@ zDGI6rTXg6LRfepqn$3jyWSD?dK-S%b8{#AJr{N=^7i{Cx(`FwDypkaFR#WaUsw@<| zbA*r`ZCV?F0g+&aL6KpEP^7@fGp9wZE>fCi4p8}Z7by? zBWBx`IE~!e{>tZOplfJ9a1zky${Xn&`D!?ZW?(M-EJxtvDL0CiAedN#B^;1pAUUg? z|JEyGvQXlC_>yYgN4nGoOSm~kc2l>IPek0*4{re6#$X9F0Ki_UiE_F>tij^L2PR8o zC8M)Yavh?xnFHS#EP*ME0vv#z_WmJ9o&vX6c}eTxT!v*?g6~dV#d#()Z>tZ26yw8s zelHh^{5o-z6By4gbOR?F8AN97z_J|`e%sn*1`j)cJuy>7p!%v~1U~X1FtFRxD7G}tp1II)6G}oyd#s?*T02?0=uTepTDY}^cJ#Zgj7hzP)ZUP3x zFgLBQK1NZB0DOd3(YjYL0x@)2gVa+B=j@>XFad@*9h5A(PlsWgI#;QQsc#NP!cZxB zBGlA8LAV2TSe|lYg?qHHqF%RMzSqvA03>EOdBc3X?23TZUF#v#^ zn~FX{9xZXaBhbVY!F9AZ#?Ylc%MVyULfO z0iQnuIdlE~Su*X0VuI#gBwrK{n2{XaM6>*#ZRYbs&{TuyK=nPj(iC|SUgR{}6b7Nt zyzFV~C2)+;<&!9HZy$t$$TGoTwPH0{w)WBqB(pZ(AM6#@Pz&JpOJM(%6J>1-G*kn>o_Qul!Z#& zCYutv@+J#~DMrcFZa=PQPkadUZVY)Ctbuj|K%?kcDSV8T!y+pe(B2I}&jNrM)X__; zFcf892L)cOtqK`=?nod$mivJ@YG=qD98hU_A ztu|l;204&SDn)n(e#oa|JM zew(FX#erVqDG7Plak1-5H~Y6P3%+&^IxGlb_|%@+-q8h|WQB^I%<{{e*M(L0KR5yC zMOHYY8#9PU%vMKJ35Z=1ZGkKXH%C^fP^0!5*7Hh)-zqtVRRP!!Fb?eids`!pUY@xz z`bK2?J(h-bOE0bibs_4462}T!pW`2yooN)aJ!OiRurQJE!X=U(n>Gg4NeP{#_3AxL zj3UWFD$qtBLwL82IbmE-n2zIzp{Gf^87OHd4Fk-cX^US`2qYHF%F5q~!DM{9OvQC6 zmc91;M-t8Ye4G1gR7e0Hl^3D(> zg0=us?OQkw!*ntdo%l05qVkqP}MB?cimm9e?G^*MsT-Q~>h_r5yw^F43u`7P(2+Ce{f?v3B< zpM8DL+}{0f?8Z0T{i{D6n45Y1=X>_PF*ozZo;O~d+41lDXaDQK9RC}e|C;?>dJEhJ zmc(BJVd58v!6qN*50 z=-83hl2-vr6}HCBIAgAZNE44S{T+y)*<&IQ>{N&V+8zUgI6QKoO|yy7qi2WDrk9gt zmc9m6P|bD_#x=?ZnBwE1(cm_$kA7pkp6jKKpQ*)9vA>&ZU>`S-G!P0^Y~WM=u#~2kZ>qsU$ZizqcU9g^ z?1dL%>4q>c`+Fx0mP4J}0jaAm?@JziwpLZD!Cs-}VR;?);u`K7OcU?Pr%QwIp$Ad;Q`Uo;0krPx3~sdM$cmj7z)dHqPl;7p*i}MIJ9F&*6*DppVVwC;KBlY ztE+7kcMCr)bG7Ljbd(#Pdr-9rUh#*L-;yA75~8eS95f zE^mmKzHo21nhnSe{cz|Wj4CF$KsaPNaA8e{a6%tcYY^(`-(0)H`3gB5+^d)j+O#|f|0+s*`#fs__K_iW=aPC=r z7~6#d51mOE6qU~a(IAM?2a8?$%3yy%j_OX{GGYiVlQ}NwUAvIX8-!%Mv__Z6U^hU7 zDXRi*ne{CzTGMm-=p2nui#Qh` zItC+S4$T>jc*88sa`aEiM?5A9^NuaWKFRgBGd1WTKRm*9D{)LZw%Qy26RdBsZ4x5V{ zf)Caqz~QBocB z$h$hLimHS2Bb7g7De2$4L%<6{`d}BrrUjTAG#Nws!R5mv5n*OlTNQOv3?{LTt$Et2 z2FFa~Tfu!LpL{+CBtt-ceCAs@c?EzG4>b?c^Za?{6O(ALxI8?6ggto}tK8gCZMr7- z+z@Qjq-0#BATNl5BQZsQ5b{dFeUXVcE|(R@G8xyWZgdyVv*Q8>MIH*`V6QeI%MMat z!fVP$y$aT^@VvqNXn5r7P9XS6AcE-hqhm=Z#7Vk?vx~gi(t`TzqwNiFwjvb{Kp=vI z*mVnxJqO*optjV-yEd$)=~!rW(%}>+ZXsYTS^E0lZ^B>h9XlpZ;Dz%jju)F2wm%ku z!v)-iBuq1~!FE?<(01~VFUOOA_@DpsFV!9g`2L`6Z0*!S90Oqjo(mzR-#pIaVng)L zp65?E^wyn!#M?z>&0~^n##N{`2|vg(gmN^QqAD{w%IQh-17-WNzj1T2fAci{=?SuV zo*Hi%MqFm`P=85#yXp=w5upXcZg_ zoIVxKCp$oO$5^b8WsAE*aDC}ui7f>cge&9v4)xSjxIUUuEZfs-@pR}|-U#`H?TQx$ z#HNHL(|G$PahtC%t*9DNx-+{I>haVWj9$s;eaQs+84%OE~e# zPPP`Qxm7@u#`>rw>lN_u_v{ zO~3SFH`y7qnX(Q2WQ_A zW6Zogy8Jtb-g4UG$HT~_rnYp={H=F)? z_R#BZG#>iUTkjk?aPXg+j?F*+*JeLQ#ReXay8Qd5U!Hn@=3Tm*?FaeVp}G87#RsRS z|1ib-K|Cw{x#y2nJ`McUM1^gBx%}_>ikJL;w5BB&;F;%>;kWrV{oU-L1GJl7$G`E+ zG)AY(c!-t=q0v9?04{9j$Dn?d`%3$^?QsN@2ONzvH#_m3>Ad*%)a=yn4?qqAP!jkt zD}Et9>0hJ(scYSC^?Cxn>svkFKG^KPy}c~=%zm+R_VeC;=MB=NLi_HYJ~%a7pdDX3 zG!5OHbW%wGLpxRe8md*6o(G(l?!kyi|dl1Z|C$3+OjlUo0ECX9?o05B27(JYxTqdS&Ql6C-} z1-b_Gfgxks2FEp94M?VuIAVTlhyCA<2Gn&Im`iNiay5r=%pM1-9+wjoqw0<6F8%Tz zS~SoDsd;W{@DZ^{cpQ0E(Zqk7Fb(6smWv6gVA7EKC`haMDd4iVb=%w?!qnklEOZ6M zo>7E&?-ua0*jGS7Ifp+n1Mtt&EsJ^Zm+MZz$N=`#(W4gXeW6)mxVEWNv|R5|>BC`; zp!AL}AR1LZY?*pMc06+(*)!FuhgLmE2dbX2uNp|YWPt^^lg4@ua?Ck@7WH6izjgo&2H z(Nu(T?Oct>$h7jOy2BEarfZ`2l?*!G2!IF*vNYE13gKLEEh0pYT@M~@lE8?>xOE5epmsX3UYEyS z3}d1q4^3s%cODIn-lKY+YhUJ>5dK2>fMqi8xe+S(Byf2v^R3M9vdja?AHAP?2AWNN zZnZ_x4f1#;T|u;IWf*s76oB9%LBgsX(__90;tP55kY10{hUH>18c=tOKvxIu7@htX zyyC-4SCR7_u05=KJs-sxXfRR2h;w`RN*p;r>jd8kGz(tmRTp^8Fi4zaE+1A(JN?7C zNd0~+-?vjru#4E5{x=&i>K$L_C6QgDj082}7NjN&QC(3jMe4dy;EnOrs44km!U`8Mk}w1Nhh};5{$r21)bSi&T>yP|98<5dRDIeCa{;Cxu;F!1 zRBry_onPe=afCBe@2+GKs_yRQn+JFjkY3RGC2AbnIiT zX7M~58KMafhR5LQ*XX3%dUUs1Aq!Lt(BE`EIiBRs&Baqe!=7G`*+=>$xxtrhnizx0P(#*4ku*{OOz5ZJ|34*qWp@mf&>mDmseK1A1n3~H`X!KxK51`d~nuq zC#VRlqb6wU!SUhgO+0oSn}93MD39XPmQ#AP z17Y67`9^={xhDXM>YsmtSUy-JtKBLpggrF+6_z1^oDMNeomakoH6&2=z_6#|nDb5X zji^PCmC6%=v5&??z2q7s0h8SCJgL;t)~tJU0hgJjW0;r>;t5{P8k!Y9d=XhV^9ggD{&=>F@Y3pil;HMT70Ep`^miZCr% z8JvFIdVCRJE5q|AQIyZiRBgthj;ei%{o~b z6UGH6Y8dGhj4Yd#FJZdqi?bq480a{=_k=r_6e+MO)g|GEMeNNAzXvI@N7S_H z?`45_rEW!lYru5{(75tQc5c)P6R~3Kzc|n)vQtK@TnOE!sMOFL2vA#ek8W_UONC1~ z9UpN5of|=3;?9|^Csp8nNXdb-d51G}^El07_1B_A_Ht{%Tw9&a}6jzZ)|P( za1fZ06_x~0Z;?SAUPW;gAD9H*Sl?gm?k_Y$#)c0*NM$Dx4k$W%6pb%U@|z3Y3s0)4 zHaoRKaPVl?MH?5}zr0lmoRC`*@2}%9s&-x9i(KjzR_BY(EZ!%>bBkyI!x=n+?kAi; zKGdsS9r%<^20KT+I(n_RUa=g*s#n zwOQTx0LIjC^>%+5=p-j3HL%!8Y^1}a7+^z8)Rn34NqA^A0m+kg6@ET!jMlf$gBbN6I@zN{4nYgmok!3=xMp405F-S{ ze8n@dma6)qpv4I7AOKJkASPE+e-HEFUuWc{r%26z1l z@%l6$!i!TUqNrVg!20O=3S1r3pBrJjr@jU|9`35b0R(d^OR-J19c@dc=(<{UT_h;nf8Y$xQ-!p7`WM<2F8(&`FO^p~o$M3j?1LECjS##l=8O z6e>$k+3+4jTuhR)e)yQP4f^Ayupe(sHu?~QK{A9MwcvIIGF104m_G>lY?4u@*rOvL zVWH`9+j4u0uk!1O=zsiSvj1oUF4a)pSe4rV>U``Hb$h{cG%PTMM*s^}#EyNY-Vfx1 zR(p;V>G$+6~+OVftrUB0IJG*nV|Pb?UaLT zyEHSb)M#eeE6_WL)v;n?O<8GLi2)Lygipg~pH?=S&+lI0P!sDiso1Jah{{g<5k2&? zPw01}3H{S6-IbHW8;kidfyfK1TVM~sVW~1VJAhB-Naow>b0c+EVegub-!aW%igPeS z!E8x&3#vAq9$@~x%+T>VSP^Y)enH{Okt5Py{}v#=bhIu#WRL|lYD4FjK>3uXAW?=U%7xgZq@ zv@ejNbXU$z>{Uk;U~jx>#Y@%ls2IFN&lCVGQ$50?)4od;CurYcJ0Lv=ONOU`$53rG zO;CAeW^wYy2fRA^QnY%M`YxAg$Ds*24)uBQc4457Jb6>sNpfRPASr1VX5&dbr`$ZL z=N;LRVHiL(QZFkFt!KHc5xbt{S(?Lu07Q;mft>_Ps_q&XrVVbLpwMtb;{%FfWEFFv zo)M1r4zmha{oVvNQ}6mC*>J=OtcPbSs2@~abX){Ti|jlg*rAGH%!MD(vGPz7OGc0v zpz3gZ4izTg0L?apMOiq3$PB?VrsXo~WQmX=iqf%K8M#EluR`4y8Suxhqf3kL1Yx1U z)1wT_0v1<%KKzPcZ#hT;GzK|)Y>O@N0rT77X--%(A4V9?+?kV$?%lKK@C9W`Kx zyad^7PY){M5u*`~uR>4%Cm*G{AFvI!Hcw(#@Vxl>RMXmEb9a!J(=;=&MCv!rOkQv= zff2^5%+eKF6URGWn3W}cY<8$oppM{q9VYQn=RtOYt(45M0%6-d%dFBf8i*msP^c(eH9XqBDNivHV$kVU;M{Xh_$Uo|dc1R3$W0>@o{~v!TdNF zHLTh_IN-%_T`%SaL8_~#&5JuB3T5WNLin|lAU3T=c%jtf>Qb^=K_NKL`QS+LBun?w$1jKwhZ zY(#&8Bb6$cakr9<2#8@2KH{kqO$cRdD8|tesM}RU!n)`30hT5z=RI|ug%_%41Nugt zPX*23f#2A$iZc!{sUlFqYOZFT^TR?4jyfpm+VhOw3tQx~(2;b=RNojHM)W`#jQ)t7?z1P_L@ z?EIEXa^X``>6&;{KwQ8Vs(aZH%F7a+GZLw1b-dovC*6~4ll}9X-N$FiM#bYqwE&TO zp)muavh9{XUYTqa<+;@!FHlyYY{!VX#BRjx%DYES0xXbXW}{B9DmK3n!!N=;YT8Qh zPSd6J&CUGrI2F62EspKWdl!Xo!+8{^-sinr?Y11F6M1MeE!s2q9KHW~>|y7QuCsGM zS(?D#)@1~?jwt3P!+K=SQz4#WDY5KSyCYOmCZ4S#9nI~bfa8e`D$B(HGC_s5*b9R- zoWQrSnrw2=veq!UOk`y`W~4ngS!!|g`|jP3S$k{~m_wzUI)O3r5Fef!5>zz2sF{;B zU3jn7Gl@SF8URiF=5f509*@8^!CTtk8!Oz*BrK*Xd(JXr3pvRw>0x!PVZ5Q4M9v7|Rs-ihWVRRgja zIx;wfW%l9Y{^rg8=IyP=Pf55go$uk{feQG^ajY|_v#U)4@H&x`qS~wQzz))m;c5a= z-%xWqJ_-*IwNcDHzBO(@XdEO2#RLKlj%H8D3tzcDxO0_P3wEF^+EA*rD;Zbd$prg~ zRUUO=j|{aS>^~{STaAhh7a^4(_6l_zh-*4gWOAWXJrgdN;J~J8GF3C-9LrB_2g_Qp zBdjPj)3G2=Zo=_^tPQ2vwsQ^@%r*l;fs}4xl*w>HoJG3y*D>3`1_Z=&N0WY4&UT(@ zq|)SRCc^Nr%5bLDHoyS55~a4z@yGF#AvEeJxWfl1O=1N}jb+yNlhTh_T!m4>Bg0f6 znZJ5*u=E|D9aPM`e411(w3Ij|MES%84#X2Zq^OYK#0CD8$1QpIYRbax#2^Dm3cWgn z1<}xsdSgY*)f=pH5}W9j^$`_NuQmALKDt}jxfTmV1s{AnBagev(c-zFLGkr6Y(8Ie zZ1J&`Qsa6Y)T^^(hGio$r$=4*_niL3t;k#t5?mKyBhhA zbz9X694~J@O;s*6MTQ#p18g7Zy&6+Qn@f0EV>sSor$Y z_LmWPnF|pwQax^Hb-NJ>^lLxX2V+ zbyJuk`r;;<%&Dg>LL7PHT(xy@QV*=r#ijv@^W#+VD%3NUI*50DgSJezBmlj_?adWz z72ijBo#_@fuK6f2jXk|P9OduqWw4Ddn~xBtMd{z;b>z+=w%F6MT^Rh4>z~Q*2%DbH z{aeTBloy?8WSc0J^mxk`SHbCtlXNKfP9bbmEAi+q&e3Xe!e7L~qQn^3ucS`i!=Ld%#bIq)Y(Y}QOD_4!QMMw$E(m`|WKuYE&xwy}b3&~) z;_IoVanLTHNiPG3f{RE*%qBU`L`xxpOuRF&L{iU#V`+1l%k?+}#sN4KUG^nb3l{c?dwo_YL1QV z0^FQD$3z)JwWYMc;t8J9!unVrJ$jDwQ}wZ;lz(R-2lcx=1y}v&th2ZwgYSe}oGU0V zWF;e<08*Pu@D%~8B#yy-(=8E15e3DFv_Jr~*X6JHtzkp|-4a27n}N+ejoHD1o-Ozo z$(({ueZUfkAc%H};!hE46>c%37?n^)*x(;a5ds$atHm#C@ynhWzidSMu$z<-pydY9 zfeO`B!W%GL+kh!raL|wtC{Sp>#3a$cg#t-m2?vx-Qgm+pI+Jt(P16Y?#a=0!D0Xr2zt<_Aya%T^Lx1Pw0HXpH20&k^(6k`P;U9f%QOZ!1d(Bu_-d`jXf?(z zYYZ<&PY95#RbjWvw`sA)fJ_=L2=3L3aLENFF+};z^OX8LS=6QSlhO`YpdbZnk9uXN zfz|+YhVS}1+)5K^N9@`Mt%zbF%`6bbd|W=4G9}|s8B6H$CTNvRt7LXr$yi1j zq&5gVbGv$Ok6pe^i$sMe z>8OEClmk(M1fkyA;=N$iUNIA(-yoROmL1taUL}f_Gh*E0!tmUWz4afqHm+@Lo-1Fy zGVOuF5nw|bv3M}8_Gq=oE^7}jHL|p0X_>6r2d)cdfDl-?s`lXY5GMei=WKj6WTc-o zSsVZ%p-f&&2HFj@iQ^aqtf<{~6D{C)uANz#W}M+VUb&zb>tA3}qd>ya^e<}=P8+jZ z2(>c&@YZnk7V?~I${?lL-MCRcTA5n0fb$WAvLCfoE3I1DWwip-(bNJaq^c3z@@-ly z6hP3%K^oh#b$96Kun@(URK4-ikRXaw}Cpb(%1l+BcIap zI!)Ao2TF`M)Qe*L7mV7*iH{Z^o!1(yBu_34e)tsLjVyl?-R~$yK`Pc z#0Y~da3l*2{>6bfgtawITGM2gO%uyY zT@OCAy0>c|wq|05K2j&@MI_qw`dV-KX8E=+R!_bUWM#BMsMl-a&e-6^b6nl=YN7x< zAR(h(N{b8mFIYz1`!W;L1Qn2GY;lz|w^#Oo-MK6(%>^_&MPJc{h$UQlNM+OjjJSzb z>v?)DpxMjEFH>UTC#^c!Wp!fPR-BqTPDbr&319*sdZ0IJNoW|+D8|&9 z4a!TPR6y3LGv+lhQ0x%U0+9}8)kq&?$W_HUP6Vz~+du&+LhJxjRn?a&VOM=U;YGl7 z_Cq$oT0PO~iQU!{pvN!+y+_%seV+OV7PwBR+a00@b~yi8|H^f4v@hTN#ny+5lHLndu4y$LU3e3=3 z{SumFc=(gLYQ*;eRUFwG2uTw)VgNNWLl{GyU=#7T9FS*tI=>pOQ#*EKXB{_lLM@oh zIT;{T7S`GTvXU6JzBocm4hk%C`HGgQ6oLcuQpxh!s+3lx?6OL6(g@`ry60imu5`6L z+cdFJRf(0o=Avc3eBT!vBsN$K0GOghYnzmwfyOz6=xQ3Ni3V_@EJc}zc7M1|Z9mTj zs{qzXGv9z-s4f+fx)PlB!3|=99AOdwc%Xb0%e04YIiOyV?q91tTJ5ph+5-jBK$6q; zbNy@sC<>6fOf<7bmUbVbo*Jt67M*4NZ#TPlSAbwpE(yi@#7#TE4DM(SP7{3s(2!0x z;=!5as*@&qz@efs*VSUs{tI?(Qw}gK2|6(~y)>4g;V=@@$?+;u{#O7$PO^bAoSz5o zcK)}mr@(+e$8=Bq+e-}0);Ri_m`;XGA`XUD0ksNfmlcqk0F6DhH7rZBL7c#kT|+M> z8x@*RWdtGCtlqAxbbKQ*QAwxGtx1!P<@?tNbecQMt3qc23sA{>X2R5A*SU7 ziD_%*hgrYmHAN5=?7ON9#3ip>TJm!-#WKUiNR24dio+V|kkCl1Om7xwBKuYZyn9nO zID!}IJB(nt@EzCJVo;nHW>``(&X|_vC#!PG{2n_rKuYfN!)R4Tt1@<3Wf&ch)FDWr z3cFeRAjJ+1iCs>;3Ri4`2XOHC8;~p1wmFa%bpjpRyGaPv4P#JO=%u$!;I+(8j}HxM)ju_jH0l^Q$yI^mM8VHS z>(o}UZeS#t>u4%=TVn`>I7U&ZZ)2eB7EDbt)Y{q@t;X18jbU{_4W8<49`&0%>@f1Z zsG|uIx#G8uGo*j-!I1_SXHaH_W9uz8P1J=Qfk)X0w7_f=F(=Xp*gRSYqSK_qACN09 zvQ4UfC8{A&EQSpC)}u$m`Arbo6I6&;MGlPC*B(}aHfLKlVYk|&)gHU7J>dPKbKSGl zoov;vVK9Ld3i@QNhD377tbNg2TkNl|^-nF7@BUF_Lyu`#;CGA?oocN~#fNP=PC7=% z+DPglI*Nw?E9aS^{%CB5@Pld!QHg_%rl%yJY|a&HOnAcQprryipM3@?6$Xh*ttW!l3} z6DK4VGciaD1oE7uS^2GTFM<>B7S66p{ z%`%HorlrcN*Fbjwcf(Bp@TXpq#o%wygsXl}DQGc~9WZTGL{%K}=T*rV2r}1lQ7E=VT#EU5 zo~BKj_%3dg`P7f9PPK^^Kr4>np?7)gI<@n$fP}NaQm)NMrTvt?iy%)`*+I+KuS}H? z^jybo=^@^0Rmm@-O0obwv>;w4OLvxSYO8k1s0rA=$Z@s!NpIUwkPL`vlll?P4^zNQv zN>qkGK+ll6l=W4J?>R2o`P=f2R)zc`D#T3vBz5)X^akkTS;uk4aJt5bpn=^E`(*3! z$-h2YDi?!dOT>tREKc<5ktVvt@&MNC=}Z@mbO4wK6W3Dt^5*v7LiGzu0or8vS)i49 zAdbq4cd&G)`^n)+5T-NmQd5rx)nT1Db=X#H!>MgJb(h1bK1#b#xaq1#YXf+TzzOY+ zrybCP^)HDl9MF8g@?5{$eSEgA>Tm-ybX`lkY7-~M@@*6SZ<^QENaFp_^;5*3)y1L< z)i&EaGxE$d(TqP8J&2JF%h#*SX)&l+)oGJ2t<%En+`AqB@G~<7fs$6(RlnNF0#B=# zIGS64kjG$sO%{6`yH4SdTWj4*tK~9KVs0ds7Xq_G711VPR3E{UG|)M*nu&TC;7WQ^ zA1+is=arzF{SbqEYl)(6vloeAx~PHqqRA9+2#Ox zvSm7nu0?A5^1jG)=p|#k;~7P{S?I$}EW>kkl+q?P2g_@&9ET#+9 zF8eTjXzo~Fbxy=+nU~WiKnpWGPvv%?7;UOT5cYA*R7PxC71FAZT~;AZ<{JT^4Ao=a zt__9i+9`4gk#?klTe^Gk7HA5v^?#1eq}T)jWFTnu^q$-%4YWoOMoFN1p9yx=`&hb@arCt`TZgy4(rGt2TIgVX$^$>%r}xTR3TX&_Da8DX6Qb+1#KLg$WE0 z5jNBR=Gndp_yCT&y#2>n@#{a$y+3_$#L!~P)SmpK_y#zDKl@+{Y`zQ@zkC{ez!Q@b z6s`e2(bCEO>-Fh_w2=E}re|hfdQPk)-oEpnFFohb z=SA&7|Jv;5yi3*P-#7j8)cZ5<5~C33lWF+Z4$bAyGEXVv3xc#rfA0BXm9#`9>FM`g z%&CV;e&5W$liT!nvxg4Q%h&O5JTr}(!6=q(2Yega$3Czb>0@4t(J$v_C*Cui7vG+m zo%;O&{5A?=pdhhd*B<)qq5sT>{@i|6@bA1qx=}EH?Vmn4HCrJ0uN|76e(AXctjw7| z+Ntu_V+TlT`<@*shuAC+vXA$-d^fj;*_;aw1QG(J6aJT&q~n2665R3I_D#tofm+eM z@Ok+pX|8+%>aq%)br&?99D!_QwUyOpmQ`KK95X?!rNkNEH#76^Z%)nr`=92fX6ev8 zgu_CZL2pgHiE6A@e>W3N?f-Wv)Y+lgcjn~Zak{@eMeoGnlh;W|P^{x$02@2!l}2t7 z;jnT^7zwRDPp}ICMat9AWndEK5dR3K!7v0Q%;4rn-No~Hfpd4^eD}g-{;+(^GU>C8 z7=5fV%Fs$*D}B2xeYQnlM~UX~jR_5xy)+XV!?zP84z4q& z0|Lu8VvhN@($q@RE=!YZqy4wzXkj9jCT_}a7->eIoY~QXDS7!wcjaS%k#RK|>fwj0 z_a<>9adm6&+@0>J8~t0~ch^7r>!S;U#k-P?X61DE$aUj|pXLB8JE5#j zWV%MitwXI$wKBEKGUYgt?RY-#FBzgk#1#|;-Gw9F^@m$e*BgMeW7pb7qJy-POgx&$ zwPkX7etGNRB7>0w9uzWE-+Xg?3rCLG9yoYrZ9?eKn_r~*hm!IBmr@|Y*lT~iT0e><#WQa zGoZhwT0PJ3#-{+phAZB^zlIle<-qnL2hO(=036AIJbE5%^uOGI5d~VE-uGv>9^Hin zRz66n1r?>H?W8T{e0xX;r?pwGru>iqX9ZZdkcOlj&d7qg_G$Oz3L4)A_ii(R0*Y@T zBK^%zdY5Y-7;vhQ&at&90tdx+S5W*g3tNmK#6^pemaR1fYv!4nc2Po}8L{3Gk5T}z z67@cRgeDDCI`vMjvt?DT=8J7A@aQIhF4H1m&n_Z#q!iUf*oNzcrYsw;QTt%qFH8*9 zu6K_dA-C%G7k_>98Q{XeJjpb+y-U}78>c9=y?L*9>>8p5=vJY?w+J*)UHaw*SEPfK za(MJ4eRAz&@AC%*tF@z80=+A7Xs4W0)?@E}(m@}N&M1LejNzrL!w+wD7Z-XLm$o)8 z$mLx53L*F2;whRn#=m+wpHXk|Q+&v8;WG~BKgTq2d=H+U-+J&BH{J}Mo})*8?aKd~ z|Dbzn8U2xiJ0Ia>?>;>;T-yZnQSbNyF240(2{j;F8^^Ii6>iQ7yfn5`r|9O4FtIaJ zmf}nGY`!qj6YRi~{fozYm!9&RF;;)`{NV0kd`PQ)0&|#$kIDrp{o5CY^Go^D=-zn* zN~ z(?jrUqI>EDdQI>~?VQKkt&I&T;~L#bZ~1h8<@V%Y{=@F^Yhs6-!}L*i-d|tkBeL48 zjTrPrp6eDpcgyaCw%^h2h?2C6=d0~0+week(9tvs2N(hDHDssqBp2o;3p(agDU@M}ut^4#tnwMa| z%il`wWARrcLW%^XiogOE!VZC+rp}!;MHlMt+q3;^8vsffp5E-Pd`j#2fWiP<4>r1I z?f}J~A2Vxj{B?N#+VIk4-Z8y%%jDqS{TADuA$YkUg^}UFC3moL5vMS%>!lBe=jkZw ztzPdwUB%sYmlwJ#-__D7MhX@sL#B-NBgYDyG#p`>7oMO(nd1P~s|Rs{niIqMQ^U1~ zK)ULG@UZ#;7$iPaoWyaG$GQlVwAF%?@h_>^8+l8j=BHV?-*3lq{=2OfG!2wF3-4B| z7PP=OSoE=rHin(w1{YY-#};*^;@fNtmy{g3wqphz3H{%OAKUQbGlw64iE2Iz*oldm zC^lV5H6NeWlWd$6SokChzi{QDmHClvs&s)RbJc8g>OfrobtVkZO%vr*KVK@TnkJ%U z@>iO$2VS&JpkiT_t?&;2``1}vFhrxN+*ES4B@(>b?ZXS~~#R)C2GvXG8(cXYAZg%7{bv zyH$9&?C0`e{mqZLd{S((qhA15}Nc zMnmBcY9q*V6OK58q|^AqLC?omXAQcu{`Z^Yxhl;TE+(MgYvijmkG zTp<7T;u244@Zsa`u?yV=DzU0P3%`?Ev8h!QOS&u(^ur2EqK461UJk|yQr7>=-r2?S z!OOI$75kQn>Q50v&@JM>)p7_Y@lDqZwar_Nc&}J+5tp?=+oM0B&yRMGE|7dJZ2$}I z3L#*LH`LAe*++PdfE1!pgF6cpdD+}VBy{V+ajMe;TV_HuYuU9G*e@0DM7SMKyT zZ}yg+s-qy3*gb-1>I0$`StkPf!QBsgXYbX$DJ#n2u%iRrP#|8|i@0k4_%|HKLdTD~Oo@Z`SSc_!@l3Qe>R;9@a4MWBXrnFJ31&)p#=!CH)4Gg1sq)B4%J&|L=Ns<8QlAV zZ-VPT>Q2gzt;h!IqpDS)+1Q+G=D<0f#Efi9Lv?{e23wqz(+`ISkH6`jlo?|>N{(IU z5&$;1*$OYejWR9eC6Q<2|HO^xTIz50)HgZ_;Jc;bl^P$%3A8yc6^9bam#SC{+yFqq zL99IXN*2)g2d46rtuvChtf&^V4o_zV57B`0Ke@dEq^+8H7+LN7#d4RMKxG;-bh zvtlm;mb$j1d05`mYFfYUwe2j4GH}nR(t-*!L`;>lmL3ql&9^p(3Mft^1;o&2qn)yPPTl>*=|!RM;uU#deu{v{L0 z%6+_M>vR^s5r*5>jkSU|CqNuHe4 z#rK}zZ{;FgJSE47?KqaS&Qingmag)BFK{d!pOxbwh{JF%U3c+X@6+2@<}r1}5fc7R z`7M=cDZ>IyrY9?PTP@Z43%l$uSeb*$Or1w$XQy@fzAX{OPU?b%K|9(}lsZYK5nr9* z@E|SR(2Y|b1*gd9Q0ik;o?12MuX{kKKL=@?&V0)e5F%u}cx$9}C`38Qwgejz{Rf+hoL3~b>4bUB!e5VvO?|pPDKfVBzpoBm9TNP z9$tYUBWlVjty!`N9c`JFgi4uIervk_1J$YOGS*_fb5Bqojk!=>TjZ{I7O;vq8pCh7 zu(=eqi*C&V>iNNt9XvdK~q=3-l1&V)j9rpT%z16Gu0tJUQZs5yU zKD_0w7gY&zB&Y6V;XK=3>gbB^-YsZ1X>qQ8*+<^&Fwym5Imqc0CGYHy@}$bgEK_{Q z(8gXMk@vYuO+TwFAcDDp&vBNK$$Ir88XoDrrJI0`WtCh$cJb!*gETfeu9gO%t`HP= zpqq!*d~*SN6>SOK+ow32iL(!d4D_Kmg4vv{JFXKYo`Zb5x+&yY^7vHu`YPuHxv_+g zFlrc}bSt%4@uuJgBrfWZ2j7N>X^ajh4$ckk+{1m;o?yquan#XvEykzh$ftMZ@e8z# z!{|Q}jbEZ0faZm>_vw-D$_>O<_)plQbq7ZwVUigV0Zu+{Hb;0D=BZZIXTXkRf#OYB zK4#f2MC(oD+OmD7J$~EccbAV}2dx~oDa&i*u7+Y^t%4jObPj-<#`H}2HZE3Zw$t&_ zG0wD+N1^I3GMPtt)sZhjWo328^9=B=yS^6q#3?#KN|Zqm7;UPza%$_z1&q2KX}EfM zr&^WTL}VfAPQ?i$@XI6`I0IW2>X^Awf+YZLCULSvIsmQd{MWi8n`vl7=@@npdj>+A z=cpag$%_P-SfqDaM!1OMDGuZf=TN}Gij&zS*maUCK{g8$f z2G8IQ6^fzlu$gkOf;h?yUuiNBm@#D1qo#FpgGZj^DK#*b%#Ilc=p0r}Nj8M?9@9eG zDL)N{tGCM)UYW6ECAMpH0$$-(1+^+@msJol&<@&}HUHz;X(1ga_L6u^R)l-YZWLGS zs^c_^t=hmxrwV^fCfSV^joy>wCNYS}wU0m`!uo{^D_F}Q7y(Y zh7&rrUgW|`hp&grv&+UG=B82IaeOBOTelACJ6046!#3a3BL8q(@Tg+Agb#(b(Z1p0psr{P-x;HR~s7&(S$5`YoJcw9UPc@aW~FfdosZXOeHQr$A5 z_5{?!3%D-~!c)k{RA(gh6!3rq21e~028yJa>isRG35zOP>t5ST5U(2d!Ndb&%L+G^ zKRH&t{pF+hkRIaT>EqtUo$?XOl#ri>o&lsBq2^m7s5OFi+X!+Ez;=zD-vT~H?fWX< zx5aA5^#TjYY|S`$nJj`1u%^c_o+QckPDCP1@VUF~8yMi3af_;LK9D@rFQ(0yHJR1@14PC}L5 zAp``ZgY=G+AiW5YqI9GqQUX#1gn*PNARr(eDGJi0UOW^Joc=)nHIsbmYNKQ3& zQ^FeffIo{0pK~q5l?*!@RIjp`2=Q|x<4jSZ85JdPL^3ZozJpiIrn6 z*SE?8ao2YgsiHB21}(FE1RR*CeEU?#y8&hDEz0Y~${8`Xo=I)!sW>R73+HN+mOjbYdoXuYf&HP>uZ}zNaBso3tusI4-NU$YQz%Q?-2;EoeUmG zq#}sM8V5^>)Ng!rOuE&wULGby(I*ywvZg+;#~&nGmRH=+^>(XLs4JZZC5!1Jo-ZB3 z7N96$_IRA6qWnzM})zY!InQ7 zAfi`+XMX-v5pRZ@$An z`-G2PUi2oy#lgsIK#-fvU{>hT2CK>{ALYvF>?*kQ@dzVsza-1pMCAh=FRl;!g8J_} z{iT3h=7U!?Nn_hAiSE$JmcwoWwnox}NrPTDc2#mSbM-t9OJEdb;uXR*o@;Zyv*;t& zUnZgn(GXXq$gL_ucMUB$wn0zK61bV(JVPKj?uE1z@17{fKP3-h?d;rdjDmj!c8r+3 z8*hMm*<4S3hBZG1>(OKpNJ0CUairXWq|qE^m;46K>H@vFi4 z^>-9AS|x~MMMK4vRn>TL8D{Xb zZIa>ZsudATJ4eA5QMBwT`sx!0DBAlB`EfH_52k5!KdH>#hUG^kh1PLOHgwazRw9Ci zMUt5F0Xjx=JS|QssOx+X^D!s*h7>E5LiDtM4KogHQ(hxBlU2wm#qD&Fk;_wA-Wg@4 zUpCWu$x5&#NnM7-=4JZi$vF@0_Q}Yo*x(y*&|=3w0U!V@y+}v#TZA5W*7Tr(I_5j= zluZ)%`q+htTZF6jQVB8du>WYIq+^R6&83war4#f@R}Pl!KzG*(hgG`2fpnl$uhi{W zx}sWZ|J=r|z);YCavzrYl0|W67*-)zUkVjwzH%-l`7*MRZwlx}aqfwo8o>rV+2g*< zAS6ipA~z*|Zv!VA}03YYsIb)%}af^L^WI*@BYCw4wxBa)ReGr>4W%QeKp zx8QF#JGfy*26m4KSfyT29)YUi>@i`a8?F8C)h=UmK&nh!`6*d4nD5Lzqfe^EYyd&o z!g2xt1@cZqpEz}JkG5XGX=TYIdw2$8l-1{yk-2>I4dtWVpuI%^PP-hc zG@T)P{Jv@Yo8Z4KDqK$_b)|+nVrZ#Ra>OH2mv$MN>FtzY*CH!u?3nz7Z%b^Ejf> zGwr2+{;dV#$RWudl^zRgP9)-k`K#v^k3-_ivFu06n7QsPhqj>`n+mtjvR+)*kF!w@ z3$;J>np>HFt(X;UbI%&w(%jp+Hhp%(obqehXpDRZs&KE_Sm?;MYG_zQ?}HAV+WtoLL|U>FDIzd+2F+YBZrjZuc*gd z%FurQ0ZJ+7RTM*GdBxssHq*+brA4PswSQjOzp2N$utYfD2TyfNNS@u57|x0{Ryfg9 zjE|#+fY3MtnF4NRZQRX5Y=-vvRljK(3;Ao+ERc;izGQ0sVcm6(nN>;~Ja?m$-6?+a zg}~sn8J2dKXO8AgTINR9wkkfi8Z6L&QNx5uy};zAazPBe7R(<*sS4mCs z`D%-ALxI6Yan0lT{@W3@yTtW}Ad|6|`=Rn$2*1a{bH^VMMW3SZt>%k?R%G>yNk@m7 z+$!(RMZ#Hx>XeM+g8=V6J+* zy4wiYxw?4hTUt5U^7}YDp>9pNObF7UGAq5IwXW9TP!LbC##^qa1XlG?TH6 zXrCan4abSa=`6pX*M2Dm#xqu#&JQ(%p^mBe*qn!)Ul!8#PS)oL`ydkfcR7^%TJk#Y z!D72uDCaYdcBEyIs4#vcU7RVw#NLv=AMNrRi}c>NtlSz?K_}O}eMj~hkuEbJ-K zNVxTNh1H7EO-fpsS3fv<6zO&o2m4OU`>`z9WK6-pWGsYWeDUlwWJ<%E9Cwc&3u zz`&!C#aYzf?O35$(3?w7qhY6iZ%m}mOjbL|Frn#_Hp_cq_9}*iyi)K?ai_$~JJKqL zw0$VtzPGL&*Lj3H5p`e^)EU}l#h~R_p+w`_**akCbUy|t80Xnoux~(owbkPFxH2? z*@PD>!qGC}vl+BlRwXzTjoBY@c1tT#cw3{poEWcR=e-7F;eRmdDPP-9f8<41+i-q( zw5du=P8R`%0?elqlv+1jawYpr=1BVfL;>9zB8OXg%TK~* zW{$pOW0}@J5?D7OIvp8_4zo+ky%}dN_X;QNI35oE2%5$*S{~n9JfcS9%@r({*H!~c`zPNMivW{C zfbWU*{p4qZi#b}j+dADB_&xc6SFSLfV}APt0st`i_tS^}!m~JTN&`!XEOZNJhNUM! zVv^^|pp&c8O1fG=5KHnD@zhz2R#kvsNMKEA32NJ2*#5o${muvXJwkl4;+?k%5)Fuh z>q**AwVU=fE!_yOh&%{U+|Hd<0*m)9ww)qz7lh;eAQfEva=a_a^Xc(MM+<_tS>iC? zX=4jFMStjuc<_|5%fM`=bAJdcB{px29_Q}85`}f`GN-ST*D8yLJ(%{JVwaKB?nPYh zlccS1-mrl0%Hb6T6S=3@dCK)}J=ai;#09@3LDC2%q)|-9txLcxeXsVNmT|6!d+E0D^99sm5+P6YbAp-$!gHb{%>E`V(Mq_1zmbn6xtRb3^ z?nxc&i7MDzP5v;Q=9weKL9Zhb--D>+b~++`z^l6Hy{tXcadR2u@ujtxVTIEMPju;PEBPky4;~Q86%oxzx1Lnm9n2P{|bHf{|r1x z&YP&l-F+7T817Mz`*svdle$y zZNUwZiMPVxQfXN$Y_g#SikNSdQHf+9GqZmNONJ^(%=+e%baBs(iYDA#)e*z-om`tz zXOuzYrKJ!FF~}$sFC~^Qvj>`|vXyd`cO0~a84ytCh#8ZoqC?+!ah-(0w$WZB@3mSX zBV@bGS>O|JsnJpUFq@u&_${P)f;F)bj;uCIwoTTY4;t7D8&$!w?_s;7ZRF~Od#3~Os z6mZFkT8$}34Ta6XG=U&0z^^CppOb=_7XT2zjA>74K>s#HKW^~v`EgNcei#|%U`GY| zr|$et`e)_2!2BS6{14`Pp8P+uOFx(}?FHF|VbTod?h3!CbHDS6i`LRgVImJRqJNx! z@Nxb(%n}a22*N+nn#U(xdKk0~22K8*=zdzu} z0sPU~@!x^}Q_}t%c9a=oaq%G#P;;H=57mU|fA;#n@9`)6&z0e?ju4ao9Kmnv#6R&M zbrwMujJ~vZe@@yV=}-FmwjLgLUF`4w()?Fi+{SOL?88h!mJ this.CreateData(type, procedureName, params, pageSize, pageCurrent) + -> this.ExecDatabase(data) + -> MESCommonBase.ashx + -> SQL Server 存储过程 +``` + +常用 type: + +| type | 用途 | 说明 | +|---|---|---| +| `11` | 查询 | 返回列表或分页数据 | +| `12` | 新增、修改、删除 | 返回执行结果 | +| `7` | JSON 批量 | 用于批量排产等 | +| `2001` | 导出 | 现有导出相关逻辑使用 | + +参数格式: + +```js +const param = [] +param.push(['订单号', this.query.订单号]) +param.push(['合同号', this.query.合同号]) +const data = this.CreateData('11', '存储过程名', param, this.pageSize, this.pageCurrent) +this.ExecDatabase(data).then(res => { ... }) +``` + +### 1.3 核心数据库对象 + +本轮开发必须优先复用以下核心表和视图。 + +#### 生产计划主表 + +表:`MES_接口_生产计划` + +关键字段: + +| 字段 | 类型 | 说明 | +|---|---|---| +| `订单编号` | int | 生产订单号,主键 | +| `合同号` | nvarchar(50) | 合同维度 | +| `订单状态` | nvarchar(50) | SAP/MES 订单状态 | +| `物料编号` | nvarchar(500) | 主物料编码 | +| `物料描述` | nvarchar(500) | 主物料名称 | +| `计划数量` | decimal(16,2) | 订单计划数量 | +| `计划开始` | datetime | 订单计划开始 | +| `计划完成` | datetime | 订单计划完成 | +| `同步时间` | datetime | SAP/MES 同步时间 | +| `任务状态` | int | 订单任务状态 | +| `齐套` | float | 齐套状态或齐套比例 | +| `预计齐套时间` | datetime | 现有预计齐套时间 | +| `齐套时间` | datetime | 现有齐套时间 | +| `发料状态` | nvarchar(50) | 发料状态 | +| `拣配状态` | nvarchar(50) | 拣配状态 | +| `发货状态` | nvarchar(50) | 发货状态 | +| `要求发货日期` | datetime | 发货要求日期 | +| `入库数量` | decimal(19,6) | 入库数量 | +| `确认状态` | nvarchar(50) | 现有确认状态 | + +#### 生产任务表 + +表:`MES_接口_生产计划_生产任务` + +关键字段: + +| 字段 | 类型 | 说明 | +|---|---|---| +| `AID` | bigint | TaskAID,任务主键 | +| `订单编号` | int | 生产订单号 | +| `订单行号` | int | SAP/MES 行号 | +| `订单拆分内码` | int | 拆分内码 | +| `物料编码` | nvarchar(500) | 任务物料编码 | +| `物料名称` | nvarchar(500) | 任务物料名称 | +| `工序名称` | nvarchar(50) | 工序 | +| `顺序编号` | int | 工序顺序 | +| `总工时` | decimal(16,2) | 任务总工时,现有字段 | +| `指派对象编号` | nvarchar(50) | 指派对象编号 | +| `指派对象` | nvarchar(50) | 设备/工位/外协/装配等 | +| `指派数量` | decimal(16,2) | 指派数量 | +| `计划开始时间` | datetime | 任务计划开始 | +| `计划完成时间` | datetime | 任务计划完成 | +| `派工时间` | datetime | 现有派工时间 | +| `任务状态` | int | 任务状态 | +| `开工时间` | datetime | 开工时间 | +| `完工时间` | datetime | 完工时间 | +| `完成数量` | int | 完成数 | +| `合格数量` | int | 合格数 | +| `不合格数量` | int | 不合格数 | +| `让步放行数量` | int | 让步放行数 | +| `报废数量` | int | 报废数 | +| `外协通知` | int | 外协通知状态 | +| `外协备注` | nvarchar(500) | 外协备注 | +| `外协分组` | nvarchar(50) | 外协分组 | + +#### 生产订单视图 + +视图:`View_生产订单_MES` + +说明:目前多数计划、排产、生产任务查询均基于该视图。新增报表优先从该视图读取生产订单和任务基础信息。 + +#### 生产操作记录 + +表:`YL_加工中心_操作记录表` + +用途: + +- 现场开工、暂停、报工、辅助开始/结束、异常等操作记录。 +- 及时检验起算时间。 +- 历史工时查询。 +- 班次产量表。 +- 当前对应人员和当前对应内容。 + +现有字段从视图和过程可见: + +| 字段 | 说明 | +|---|---| +| `TaskAID` | 关联生产任务 | +| `操作类别` | 开始加工、报工、辅助结束、异常等 | +| `操作人` | 人员 | +| `工位编号` / `工位名称` | 工位/设备 | +| `开始时间` / `结束时间` | 操作时间段 | +| `工时` | 秒或分钟,现有过程按 `工时 > 0` 汇总 | +| `操作数值` | 数量或工时数值 | +| `操作内容` | 工作内容 | +| `操作描述` / `异常说明` | 说明 | + +#### 质检记录 + +表:`YL_质量检验_质检记录` + +用途: + +- 及时检验报表。 +- 生产日报-送检。 +- 让步接收记录。 +- 外协任务检验字段补充。 +- 产品合格率。 + +关键字段: + +| 字段 | 说明 | +|---|---| +| `QT_AID` | 质检主键 | +| `TaskAID` | 关联生产任务 | +| `计划号` | 生产订单 | +| `零件编码` / `零件名称` | 物料 | +| `工序名称` | 工序 | +| `质检类型` / `检测类型编号` | 首检、巡检、序检、收检、终检等 | +| `检验数量` | 检验数 | +| `合格数` | 合格数 | +| `不合格数` | 不合格数 | +| `检测人` | 检验人 | +| `检测时间` | 检验时间 | +| `检测说明` | 说明 | + +#### 设备采集相关表 + +| 表 | 说明 | +|---|---| +| `CaChe_Var` | 设备变量当前缓存 | +| `历史_设备数据_定时` | 设备历史采集点位数据 | +| `历史_工位设备状态每分钟记录` | 工位状态每分钟快照 | +| `YL_设备管理_设备台账` | 设备台账 | +| `YL_设备管理_工时记录` | 设备循环时间采集记录 | + +## 2. 总体开发原则 + +### 2.1 页面开发原则 + +1. 保持现有 Element UI 风格:顶部筛选区、中间按钮区、下方表格、弹窗明细。 +2. 报表页面只做查询、导出、打印、钻取,不承担基础主数据维护。 +3. 待办类页面可以做状态确认,例如手续确认。 +4. 能扩展现有页面的,不新建孤立维护页面。 +5. 所有新增页面必须同步菜单、按钮权限、路由组件、操作日志。 +6. 所有新增表格都要支持分页,避免一次性查全量。 +7. 时间筛选全部统一为闭区间:开始日 `00:00:00` 到结束日 `23:59:59`。 +8. 导出字段必须与页面字段一致。 + +### 2.2 数据库开发原则 + +1. 优先复用现有表和视图。 +2. 新增字段优先加在业务主表或扩展表,不能只存在报表 SQL 中。 +3. 人工维护字段必须有维护人、维护时间、原值、新值或日志。 +4. SAP 来源字段必须有同步时间和同步状态。 +5. 设备采集数据必须先落原始数据,再做汇总,不直接覆盖业务结果。 +6. 报表公共口径优先做视图或公共存储过程,不允许每个报表各写一套算法。 +7. 看板类过程必须可传统计日期;实时看板默认 `GETDATE()`。 +8. 写操作过程必须返回 `result`、`message`,批量操作要返回每行结果。 + +### 2.3 命名规范 + +新增表建议命名: + +```text +业务域_模块_对象 +例:生产管理_装配已排产需求_维护字段 +例:生产管理_设计任务 +例:生产管理_编程任务 +``` + +新增存储过程建议命名: + +```text +业务域_页面_动作 +例:生产管理_装配已排产需求_查询 +例:生产管理_装配已排产需求_维护字段保存 +例:质量管理_及时检验报表_查询 +``` + +如复用原有 MES 前缀,也可以使用: + +```text +MES_AssemblyPlannedDemand_Query +MES_AssemblyPlannedDemand_SaveManualFields +``` + +本项目已有大量中文过程名,建议新增需求优先用中文业务名,便于现场维护。 + +## 3. 通用新增基础表 + +以下表建议作为多需求共用基础能力,避免每个需求重复建字段。 + +### 3.1 SAP 调用日志表 + +表名:`系统集成_SAP调用日志` + +用途: + +- 批量关闭 SAP 订单。 +- 外协采购收货单号追踪。 +- 发货通知、缺件明细、派工时间、合同交货期同步。 +- 后续 SAP 失败重试和对账。 + +建议 SQL: + +```sql +CREATE TABLE dbo.系统集成_SAP调用日志 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + 业务类型 nvarchar(50) NOT NULL, + 业务主键 nvarchar(100) NULL, + 生产订单 int NULL, + TaskAID bigint NULL, + SAP对象类型 nvarchar(50) NULL, + SAP单据号 nvarchar(100) NULL, + 请求地址 nvarchar(500) NULL, + 请求方法 nvarchar(20) NULL, + 请求内容 nvarchar(max) NULL, + 返回内容 nvarchar(max) NULL, + 执行结果 nvarchar(20) NOT NULL, + 失败原因 nvarchar(max) NULL, + 请求人 nvarchar(50) NULL, + 请求时间 datetime NOT NULL DEFAULT GETDATE(), + 完成时间 datetime NULL, + 是否可重试 bit NOT NULL DEFAULT 0, + 重试次数 int NOT NULL DEFAULT 0 +); +``` + +索引: + +```sql +CREATE INDEX IX_系统集成_SAP调用日志_生产订单 ON dbo.系统集成_SAP调用日志(生产订单); +CREATE INDEX IX_系统集成_SAP调用日志_业务类型_时间 ON dbo.系统集成_SAP调用日志(业务类型, 请求时间); +``` + +### 3.2 业务字段维护日志表 + +表名:`系统管理_业务字段维护日志` + +用途: + +- 装配完成时间人工修改。 +- 钣金预达、钣金到达、泵预达、泵到达维护。 +- 预计总工时维护。 +- 预计可执行时间维护。 +- 手续确认等人工确认字段。 + +建议 SQL: + +```sql +CREATE TABLE dbo.系统管理_业务字段维护日志 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + 业务模块 nvarchar(100) NOT NULL, + 业务表名 nvarchar(100) NULL, + 业务主键 nvarchar(100) NOT NULL, + 字段名 nvarchar(100) NOT NULL, + 原值 nvarchar(max) NULL, + 新值 nvarchar(max) NULL, + 维护说明 nvarchar(500) NULL, + 维护人 nvarchar(50) NOT NULL, + 维护时间 datetime NOT NULL DEFAULT GETDATE() +); +``` + +索引: + +```sql +CREATE INDEX IX_系统管理_业务字段维护日志_业务 ON dbo.系统管理_业务字段维护日志(业务模块, 业务主键); +``` + +### 3.3 统一异常关联表 + +现有已有异常管控页面和异常工时逻辑,但本轮要求所有报工页面选中任务直接报异常,且审批人多选。建议在不推翻现有异常管控的前提下增加关联表。 + +表名:`生产管理_异常管控_任务异常` + +```sql +CREATE TABLE dbo.生产管理_异常管控_任务异常 ( + 异常AID bigint IDENTITY(1,1) PRIMARY KEY, + 异常编号 nvarchar(50) NOT NULL, + 来源模块 nvarchar(50) NOT NULL, + 生产订单 int NULL, + TaskAID bigint NULL, + 工序名称 nvarchar(50) NULL, + 指派对象 nvarchar(50) NULL, + 异常类型 nvarchar(50) NULL, + 异常说明 nvarchar(1000) NULL, + 附件ID nvarchar(500) NULL, + 状态 nvarchar(20) NOT NULL DEFAULT N'待处理', + 发起人 nvarchar(50) NOT NULL, + 发起时间 datetime NOT NULL DEFAULT GETDATE(), + 实际处理人 nvarchar(50) NULL, + 处理时间 datetime NULL, + 处理意见 nvarchar(1000) NULL, + 是否关闭 bit NOT NULL DEFAULT 0 +); + +CREATE TABLE dbo.生产管理_异常管控_审批人 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + 异常AID bigint NOT NULL, + 审批人编号 int NULL, + 审批人姓名 nvarchar(50) NOT NULL, + 是否已处理 bit NOT NULL DEFAULT 0, + 处理时间 datetime NULL +); +``` + +索引: + +```sql +CREATE INDEX IX_生产管理_异常管控_任务异常_TaskAID ON dbo.生产管理_异常管控_任务异常(TaskAID, 是否关闭); +CREATE INDEX IX_生产管理_异常管控_审批人_人员 ON dbo.生产管理_异常管控_审批人(审批人姓名, 是否已处理); +``` + +## 4. 需求 1:及时开工报表 + +### 4.1 现有页面 + +页面:`src/views/AnomalousManagement/PunctualWork/index.vue` + +现状: + +- 当前按指派对象过滤偏向反选逻辑。 +- 需求要求增加正选页面或正选模式。 +- 真实目标不是重做及时开工算法,只改筛选方式。 + +### 4.2 页面方案 + +在查询区新增: + +| 控件 | 类型 | 默认值 | 说明 | +|---|---|---|---| +| 指派对象 | `el-select multiple` | 全部 | 复用现有设备/工位下拉 | +| 查询模式 | `el-radio-group` 或 `el-select` | 排除 | 包含、排除 | + +页面展示: + +```text +指派对象:[多选] 查询模式:[包含/排除] [查询] [重置] [导出] +``` + +交互规则: + +- 查询模式=包含:只查选中指派对象。 +- 查询模式=排除:排除选中指派对象。 +- 未选择指派对象:不增加指派对象条件。 +- 默认保留原逻辑,避免影响现场使用习惯。 + +### 4.3 存储过程 + +建议扩展现有及时开工过程,增加参数: + +```sql +@指派对象 nvarchar(max) = N'', +@指派对象查询模式 nvarchar(10) = N'排除' +``` + +过滤逻辑: + +```sql +IF ISNULL(@指派对象, '') <> '' +BEGIN + IF @指派对象查询模式 = N'包含' + SET @where = @where + N' AND 指派对象 IN (SELECT value FROM STRING_SPLIT(@指派对象, '',''))' + ELSE + SET @where = @where + N' AND 指派对象 NOT IN (SELECT value FROM STRING_SPLIT(@指派对象, '',''))' +END +``` + +注意: + +- 现有很多过程使用字符串拼接动态 SQL,后续应尽量用 `sp_executesql` 参数化,降低注入风险。 +- 如果 `.ashx` 传参不支持 `nvarchar(max)`,可用 `nvarchar(4000)`。 + +### 4.4 不需要新增表 + +该需求只改页面和存储过程参数,不新增表。 + +## 5. 需求 2:机加件排产-表单 + +包含两件事: + +1. 已排产页面日期筛选优化。 +2. 新增历史工时查询,总工时列和明细弹窗。 + +### 5.1 现有页面 + +页面:`src/views/PlanManagement/SelfMakePlandone/index.vue` + +现有查询过程:`MES_OrderPlanned_Query` + +现有过程参数: + +```sql +@计划开始1 nvarchar(50)='', +@计划开始2 nvarchar(50)='', +@计划完成1 nvarchar(50)='', +@计划完成2 nvarchar(50)='' +``` + +### 5.2 页面日期筛选 + +改造前: + +- 计划开始时间为时间段。 +- 计划完成时间为时间段。 + +改造后: + +| 字段 | 控件 | 参数传递 | +|---|---|---| +| 计划开始日期 | `el-date-picker type="date"` | 传 `计划开始日期` | +| 计划完成日期 | `el-date-picker type="date"` | 传 `计划完成日期` | + +前端传参方式: + +```js +if (this.query.计划开始日期) { + param.push(['计划开始日期', this.query.计划开始日期]) +} +if (this.query.计划完成日期) { + param.push(['计划完成日期', this.query.计划完成日期]) +} +``` + +兼容方案: + +- 为减少影响,可以继续传旧参数: + - `计划开始1 = yyyy-MM-dd 00:00:00` + - `计划开始2 = yyyy-MM-dd 23:59:59` + - `计划完成1 = yyyy-MM-dd 00:00:00` + - `计划完成2 = yyyy-MM-dd 23:59:59` +- 存储过程也可新增单日期参数,旧参数保留。 + +### 5.3 存储过程改造 + +建议扩展 `MES_OrderPlanned_Query`: + +```sql +ALTER PROCEDURE dbo.MES_OrderPlanned_Query + @订单号 int = 0, + ... + @计划开始日期 nvarchar(50) = '', + @计划完成日期 nvarchar(50) = '', + @指派对象查询模式 nvarchar(10) = N'包含' +AS +BEGIN + ... + IF (@计划开始日期 <> '') + SET @selectStrWhere = @selectStrWhere + + ' AND [计划开始时间] >= ''' + @计划开始日期 + ' 00:00:00'' + AND [计划开始时间] < DATEADD(DAY, 1, ''' + @计划开始日期 + ''')' + + IF (@计划完成日期 <> '') + SET @selectStrWhere = @selectStrWhere + + ' AND [计划完成时间] >= ''' + @计划完成日期 + ' 00:00:00'' + AND [计划完成时间] < DATEADD(DAY, 1, ''' + @计划完成日期 + ''')' +END +``` + +更稳妥写法是把日期转成 `date` 类型后参数化。 + +### 5.4 总工时列 + +表格新增列: + +| 列名 | 字段 | 交互 | +|---|---|---| +| 总工时 | `历史总工时` | 蓝色可点击,点击打开明细 | + +总工时口径: + +- 数据来源:`YL_加工中心_操作记录表` +- 过滤:`TaskAID = 当前任务 TaskAID`,`工时 > 0` +- 默认包含:报工、辅助结束、加班等正向工时。 +- 默认排除:异常负工时、未结束记录。 +- 单位:建议统一显示小时,保留 2 位小数。 + +### 5.5 新增存储过程 + +#### 5.5.1 总工时汇总 + +过程名:`生产管理_机加已排产_历史工时汇总` + +参数: + +| 参数 | 类型 | 说明 | +|---|---|---| +| `@TaskAID` | bigint | 可选,单任务 | +| `@订单号` | int | 可选,订单 | +| `@开始日期` | date | 可选 | +| `@结束日期` | date | 可选 | + +返回字段: + +| 字段 | 说明 | +|---|---| +| `TaskAID` | 任务 | +| `订单编号` | 订单 | +| `工序名称` | 工序 | +| `总工时分钟` | 分钟 | +| `总工时小时` | 小时 | + +SQL 示例: + +```sql +CREATE PROCEDURE dbo.生产管理_机加已排产_历史工时汇总 + @TaskAID bigint = NULL, + @订单号 int = NULL, + @开始日期 date = NULL, + @结束日期 date = NULL +AS +BEGIN + SET NOCOUNT ON; + + SELECT + o.TaskAID, + MAX(t.订单编号) AS 订单编号, + MAX(o.工序名称) AS 工序名称, + SUM(ISNULL(o.工时, 0)) AS 总工时分钟, + CAST(SUM(ISNULL(o.工时, 0)) / 60.0 AS decimal(18,2)) AS 总工时小时 + FROM dbo.YL_加工中心_操作记录表 o + LEFT JOIN dbo.MES_接口_生产计划_生产任务 t ON o.TaskAID = t.AID + WHERE ISNULL(o.工时, 0) > 0 + AND (@TaskAID IS NULL OR o.TaskAID = @TaskAID) + AND (@订单号 IS NULL OR t.订单编号 = @订单号) + AND (@开始日期 IS NULL OR o.开始时间 >= @开始日期) + AND (@结束日期 IS NULL OR o.开始时间 < DATEADD(DAY, 1, @结束日期)) + GROUP BY o.TaskAID; +END +``` + +#### 5.5.2 历史工时明细 + +过程名:`生产管理_机加已排产_历史工时明细` + +参数: + +| 参数 | 类型 | 说明 | +|---|---|---| +| `@TaskAID` | bigint | 必填 | + +返回字段: + +| 字段 | 说明 | +|---|---| +| `设备名称` | 工位名称 | +| `日期` | 开始时间日期 | +| `生产订单` | 订单编号 | +| `物料编码` | 物料编码 | +| `物料名称` | 物料名称 | +| `工序名称` | 工序 | +| `操作人` | 操作人 | +| `开始时间` | 开始 | +| `结束时间` | 结束 | +| `工时分钟` | 分钟 | +| `工时小时` | 小时 | +| `设备日期小计小时` | 前端可展示分组合计 | + +SQL 示例: + +```sql +CREATE PROCEDURE dbo.生产管理_机加已排产_历史工时明细 + @TaskAID bigint +AS +BEGIN + SET NOCOUNT ON; + + SELECT + o.工位名称 AS 设备名称, + CONVERT(date, o.开始时间) AS 日期, + t.订单编号 AS 生产订单, + t.物料编码, + t.物料名称, + o.工序名称, + o.操作人, + o.开始时间, + o.结束时间, + ISNULL(o.工时, 0) AS 工时分钟, + CAST(ISNULL(o.工时, 0) / 60.0 AS decimal(18,2)) AS 工时小时, + CAST(SUM(ISNULL(o.工时, 0)) OVER (PARTITION BY o.工位名称, CONVERT(date, o.开始时间)) / 60.0 AS decimal(18,2)) AS 设备日期小计小时 + FROM dbo.YL_加工中心_操作记录表 o + LEFT JOIN dbo.MES_接口_生产计划_生产任务 t ON o.TaskAID = t.AID + WHERE o.TaskAID = @TaskAID + AND ISNULL(o.工时, 0) > 0 + ORDER BY o.工位名称, CONVERT(date, o.开始时间), o.开始时间; +END +``` + +### 5.6 前端弹窗 + +弹窗名:历史工时明细 + +结构: + +```text +设备:CNC-01 小计:12.50小时 + 日期:2026-05-28 小计:8.00小时 + 任务明细表 + 日期:2026-05-29 小计:4.50小时 + 任务明细表 +``` + +Element UI 实现建议: + +- 用 `el-dialog`。 +- 明细用 `el-table` 展示,按设备、日期排序。 +- 如需要折叠效果,使用前端 computed 分组。 +- 总工时列点击时调用 `生产管理_机加已排产_历史工时明细`。 + +### 5.7 不建议新增表 + +本需求只需要新增两个查询过程,不需要新增表。 + +## 6. 需求 3:装配已排产需求 + +### 6.1 定位 + +这是本轮最大的独立子项目,不是简单报表。 + +页面目标: + +- 基于装配已排产数据。 +- 整合 SAP 字段、MES 报工、工时、异常、齐套时间、装配完成时间、日计划。 +- 支持部分人工维护字段。 + +建议页面路径: + +```text +src/views/ProductionManagement/AssemblyPlannedDemand/index.vue +``` + +菜单建议: + +```text +生产管理 -> 装配管理 -> 装配已排产需求 +``` + +### 6.2 页面布局 + +页面结构: + +```text +查询区: +系统分类[全部/系统/非系统] 合同号 生产订单 物料编码/名称 +发料齐套时间[起止] 装配完成时间[起止] 状态[全部] +[查询] [重置] [导出] [日计划] [打印] + +主表: +生产订单 合同号 物料编码 物料名称 系统/非系统 派工时间 合同交货期 +发料齐套时间 装配完成时间 当前对应人员 当前对应内容 +生产订单累计工时 合同工时汇总 合同进度参考 预计总工时 预计剩余工时 +钣金预达 钣金到达 泵 生产异常 历史工序说明 操作 + +操作列: +[维护] [工时明细] [异常明细] [历史工序] [日计划] +``` + +### 6.3 字段口径 + +| 字段 | 来源 | 维护方式 | 说明 | +|---|---|---|---| +| 生产订单 | `MES_接口_生产计划.订单编号` | 只读 | 主键 | +| 合同号 | `MES_接口_生产计划.合同号` | 只读 | 合同维度 | +| 物料编码 | `MES_接口_生产计划.物料编号` | 只读 | 主物料 | +| 物料名称 | `MES_接口_生产计划.物料描述` | 只读 | 主物料名称 | +| 系统/非系统 | 规则计算 | 只读 | 高压冷却为系统,阀类非高压冷却为非系统 | +| 派工时间 | SAP 或任务表 `派工时间` | 只读 | 以 SAP 提供为准;现任务表已有派工时间 | +| 合同交货期 | SAP | 只读 | 需同步字段 | +| 发料齐套时间 | SAP/MES 齐套字段 | 可必要维护 | 优先使用 `齐套时间` 或后续 SAP 字段 | +| 装配完成时间 | 发料齐套时间 + 3 天 | 可维护 | 人工修改需记录日志 | +| 钣金预达 | 人工维护 | 可维护 | 过程字段 | +| 钣金到达 | 人工维护 | 可维护 | 过程字段 | +| 泵 | 人工维护 | 可维护 | 建议拆成泵预达/泵到达或说明 | +| 当前对应人员 | 操作记录 | 只读 | 开始未结束的人,多个合并 | +| 当前对应内容 | 操作记录/新增字段 | 只读/维护 | 装配开始时输入的工作内容 | +| 生产订单累计工时 | 工时汇总 | 只读 | 按生产订单分类汇总装配、质量、设计 | +| 历史工序说明 | 报工结束说明 | 只读 | 多条合并或明细弹窗 | +| 预计总工时 | 人工维护 | 可维护 | 订单级 | +| 合同工时汇总 | 工时汇总 | 只读 | 合同下所有订单 | +| 合同进度参考 | 计算 | 只读 | 累计工时 / 预计总工时 | +| 预计剩余工时 | 计算 | 只读 | 预计总工时 - 累计工时 | +| 生产异常 | 异常表 | 只读 | 未关闭异常数和明细 | + +### 6.4 建议新增字段 + +优先不要直接无限扩展主表。建议建订单扩展表。 + +表名:`生产管理_装配已排产需求_扩展` + +```sql +CREATE TABLE dbo.生产管理_装配已排产需求_扩展 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + 订单编号 int NOT NULL, + 发料齐套时间 datetime NULL, + 发料齐套时间来源 nvarchar(50) NULL, + 装配完成时间 datetime NULL, + 装配完成时间是否人工修改 bit NOT NULL DEFAULT 0, + SAP派工时间 datetime NULL, + 合同交货期 datetime NULL, + 钣金预达 datetime NULL, + 钣金到达 datetime NULL, + 泵预达 datetime NULL, + 泵到达 datetime NULL, + 泵说明 nvarchar(500) NULL, + 预计总工时 decimal(18,2) NULL, + 备注 nvarchar(1000) NULL, + 最后维护人 nvarchar(50) NULL, + 最后维护时间 datetime NULL, + 创建时间 datetime NOT NULL DEFAULT GETDATE() +); + +CREATE UNIQUE INDEX UX_生产管理_装配已排产需求_扩展_订单编号 +ON dbo.生产管理_装配已排产需求_扩展(订单编号); +``` + +### 6.5 当前对应内容 + +当前系统 `MES_人员工时记录_开始` 和装配中心已有人员工时逻辑。需求要求“装配开始时输入工作内容”。如果现有开始记录没有工作内容字段,应补字段到对应记录表。由于实际装配人员工时表名需从存储过程确认,建议先通过 `MES_人员工时记录_开始` 的落表对象确认。 + +建议新增字段: + +```sql +ALTER TABLE dbo.YL_加工中心_操作记录表 ADD 当前工作内容 nvarchar(1000) NULL; +``` + +如果装配人员工时独立表存在,应加在装配人员工时表,而不是操作记录表。 + +前端改造: + +- `AssemblyCenter` 开始装配弹窗增加 `工作内容`。 +- 调用 `MES_人员工时记录_开始` 时增加参数 `@工作内容`。 +- 未结束记录的人员和工作内容在装配已排产需求页展示。 + +### 6.6 工时汇总视图 + +建议新增统一工时视图,供装配已排产需求、合同工时、工时报表复用。 + +视图名:`View_统一工时明细` + +字段: + +| 字段 | 说明 | +|---|---| +| `来源模块` | 机加、装配、质量、设计、编程、设备 | +| `工时类型` | 装配、质量、设计等 | +| `生产订单` | 订单 | +| `合同号` | 合同 | +| `TaskAID` | 任务,可空 | +| `工序名称` | 工序 | +| `操作人` | 人员 | +| `开始时间` | 开始 | +| `结束时间` | 结束 | +| `工时分钟` | 分钟 | +| `工时小时` | 小时 | + +第一阶段可只接入: + +- 装配:`MES_人员工时记录_*` 对应表或 `YL_加工中心_操作记录表` +- 质量:质检中心人员工时记录或操作记录 +- 设计:设计任务报工表,等设计模块完成后接入 + +### 6.7 查询存储过程 + +过程名:`生产管理_装配已排产需求_查询` + +参数: + +| 参数 | 类型 | +|---|---| +| `@系统分类` | nvarchar(20),全部/系统/非系统 | +| `@合同号` | nvarchar(50) | +| `@订单编号` | int | +| `@物料` | nvarchar(100) | +| `@发料齐套开始` | date | +| `@发料齐套结束` | date | +| `@装配完成开始` | date | +| `@装配完成结束` | date | +| `@状态` | nvarchar(50) | + +核心 SQL 口径: + +```sql +SELECT + p.订单编号, + p.合同号, + p.物料编号, + p.物料描述, + CASE + WHEN p.物料描述 LIKE N'%高压冷却%' THEN N'系统' + ELSE N'非系统' + END AS 系统分类, + ISNULL(e.SAP派工时间, MAX(t.派工时间)) AS 派工时间, + e.合同交货期, + COALESCE(e.发料齐套时间, p.齐套时间, p.预计齐套时间) AS 发料齐套时间, + COALESCE(e.装配完成时间, DATEADD(DAY, 3, COALESCE(e.发料齐套时间, p.齐套时间, p.预计齐套时间))) AS 装配完成时间, + e.钣金预达, + e.钣金到达, + e.泵预达, + e.泵到达, + e.泵说明, + e.预计总工时, + wh.生产订单累计工时, + chw.合同工时汇总, + CASE WHEN ISNULL(e.预计总工时,0) = 0 THEN NULL + ELSE CAST(wh.生产订单累计工时 / e.预计总工时 AS decimal(18,4)) + END AS 合同进度参考, + ISNULL(e.预计总工时,0) - ISNULL(wh.生产订单累计工时,0) AS 预计剩余工时, + cur.当前对应人员, + cur.当前对应内容, + abn.未关闭异常数 +FROM dbo.MES_接口_生产计划 p +LEFT JOIN dbo.MES_接口_生产计划_生产任务 t ON p.订单编号 = t.订单编号 +LEFT JOIN dbo.生产管理_装配已排产需求_扩展 e ON p.订单编号 = e.订单编号 +LEFT JOIN (...) wh ON p.订单编号 = wh.生产订单 +LEFT JOIN (...) chw ON p.合同号 = chw.合同号 +LEFT JOIN (...) cur ON p.订单编号 = cur.生产订单 +LEFT JOIN (...) abn ON p.订单编号 = abn.生产订单 +WHERE p.自制件属性 LIKE N'%装配%' +GROUP BY ... +``` + +### 6.8 保存维护字段过程 + +过程名:`生产管理_装配已排产需求_维护字段保存` + +参数: + +- `@订单编号 int` +- `@发料齐套时间 datetime = NULL` +- `@装配完成时间 datetime = NULL` +- `@钣金预达 datetime = NULL` +- `@钣金到达 datetime = NULL` +- `@泵预达 datetime = NULL` +- `@泵到达 datetime = NULL` +- `@泵说明 nvarchar(500) = NULL` +- `@预计总工时 decimal(18,2) = NULL` +- `@备注 nvarchar(1000) = NULL` +- `@维护人 nvarchar(50)` + +逻辑: + +1. 如果扩展表不存在订单记录,插入。 +2. 如果存在,更新。 +3. 对每个字段写 `系统管理_业务字段维护日志`。 +4. 返回 `result=1`。 + +### 6.9 工时明细过程 + +过程名:`生产管理_装配已排产需求_工时明细` + +参数: + +- `@订单编号 int` +- `@合同号 nvarchar(50)` +- `@工时类型 nvarchar(50)`,全部/装配/质量/设计 + +返回: + +- 来源模块 +- 工时类型 +- 生产订单 +- 合同号 +- TaskAID +- 工序名称 +- 操作人 +- 开始时间 +- 结束时间 +- 工时小时 +- 工作内容 +- 结束说明 + +### 6.10 异常明细过程 + +过程名:`生产管理_装配已排产需求_异常明细` + +数据来源: + +- 优先:`生产管理_异常管控_任务异常` +- 兼容:现有异常管控表或 `YL_加工中心_操作记录表` 中 `操作类别='异常'` + +返回: + +- 异常编号 +- 异常类型 +- 异常说明 +- 发起人 +- 发起时间 +- 状态 +- 处理人 +- 处理时间 + +### 6.11 日计划 + +页面按钮:`日计划` + +规则: + +- 按装配完成时间分组。 +- 未完成、未入库、未关闭的任务进入计划。 +- 支持导出、打印。 + +过程名:`生产管理_装配已排产需求_日计划` + +参数: + +- `@计划日期 date` +- `@系统分类 nvarchar(20)` + +返回字段: + +- 计划日期 +- 生产订单 +- 合同号 +- 物料编码 +- 物料名称 +- 装配完成时间 +- 当前对应人员 +- 当前对应内容 +- 异常状态 +- 备注 + +打印: + +- 使用 `vue-print-nb`。 +- 打印区域为日计划表格。 +- 标题:`装配日计划 YYYY-MM-DD`。 + +## 7. 需求 4:生产日报-送检 + +### 7.1 页面定位 + +建议新增页面: + +```text +src/views/ReportManagement/InspectionDaily/index.vue +``` + +如果项目没有 `ReportManagement`,可放在: + +```text +src/views/ProductionManagement/InspectionDaily/index.vue +``` + +菜单建议: + +```text +报表中心 -> 生产日报 -> 生产日报-送检 +``` + +页面采用两个页签: + +- 机加送检日报 +- 装配送检日报 + +### 7.2 页面布局 + +```text +页签:[机加送检日报] [装配送检日报] + +查询区: +日期[单日/日期范围] 部门[全部] 生产订单 物料 工序 状态 +[查询] [重置] [导出] + +汇总区: +送检数量 已检数量 合格数量 不合格数量 未检数量 及时率 + +表格: +日期 部门 生产订单 物料编码 物料名称 工序名称 送检数量 +已检数量 合格数量 不合格数量 未检数量 送检时间 检验时间 状态 +``` + +### 7.3 需要确认的数据 + +| 数据 | 需要确认 | +|---|---| +| 送检记录来源 | 装配送检是否来自 `MES_ProductTask_SendInspection` 写入的记录,机加送检是否来自质检任务或操作记录 | +| 部门归属 | 按操作人部门、工位部门、任务部门还是物料/订单类型 | +| 送检数量 | 取操作记录 `操作数值`,还是质检记录 `检验数量` | +| 已检数量 | 质检记录合计 | +| 状态 | 未检、部分检验、已检、超期 | + +### 7.4 建议视图 + +视图名:`View_生产日报_送检明细` + +字段: + +| 字段 | 来源 | +|---|---| +| 日期 | 送检时间日期 | +| 送检类型 | 机加/装配 | +| 部门 | 人员部门或工位部门 | +| 生产订单 | 任务订单 | +| TaskAID | 任务 | +| 物料编码 | 任务物料 | +| 物料名称 | 任务物料 | +| 工序名称 | 任务工序 | +| 指派对象 | 任务指派对象 | +| 送检数量 | 送检记录 | +| 已检数量 | 质检记录 | +| 合格数量 | 质检记录 | +| 不合格数量 | 质检记录 | +| 未检数量 | 送检数量 - 已检数量 | +| 送检时间 | 送检记录时间 | +| 检验时间 | 最后检验时间 | +| 状态 | 计算 | + +### 7.5 存储过程 + +过程名:`生产日报_送检_查询` + +参数: + +| 参数 | 类型 | +|---|---| +| `@送检类型` | nvarchar(20),机加/装配 | +| `@开始日期` | date | +| `@结束日期` | date | +| `@部门` | nvarchar(50) | +| `@生产订单` | int | +| `@物料` | nvarchar(100) | +| `@状态` | nvarchar(20) | + +核心逻辑: + +```sql +SELECT + 日期, + 部门, + 生产订单, + 物料编码, + 物料名称, + 工序名称, + SUM(送检数量) AS 送检数量, + SUM(已检数量) AS 已检数量, + SUM(合格数量) AS 合格数量, + SUM(不合格数量) AS 不合格数量, + SUM(未检数量) AS 未检数量, + MIN(送检时间) AS 最早送检时间, + MAX(检验时间) AS 最后检验时间, + CASE + WHEN SUM(已检数量) = 0 THEN N'未检' + WHEN SUM(未检数量) > 0 THEN N'部分检验' + ELSE N'已检' + END AS 状态 +FROM dbo.View_生产日报_送检明细 +WHERE 日期 >= @开始日期 + AND 日期 < DATEADD(DAY, 1, @结束日期) + AND (@送检类型 = N'全部' OR 送检类型 = @送检类型) +GROUP BY 日期, 部门, 生产订单, 物料编码, 物料名称, 工序名称 +ORDER BY 日期, 部门, 生产订单; +``` + +### 7.6 是否新增表 + +第一阶段不新增表,使用视图 + 存储过程。 + +如果客户要求日报定版,需要新增快照表: + +```sql +CREATE TABLE dbo.生产日报_送检_日报快照 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + 统计日期 date NOT NULL, + 送检类型 nvarchar(20) NOT NULL, + 部门 nvarchar(50) NULL, + 生产订单 int NULL, + TaskAID bigint NULL, + 物料编码 nvarchar(100) NULL, + 物料名称 nvarchar(500) NULL, + 工序名称 nvarchar(100) NULL, + 送检数量 decimal(18,2) NULL, + 已检数量 decimal(18,2) NULL, + 合格数量 decimal(18,2) NULL, + 不合格数量 decimal(18,2) NULL, + 未检数量 decimal(18,2) NULL, + 状态 nvarchar(20) NULL, + 生成时间 datetime NOT NULL DEFAULT GETDATE(), + 生成人 nvarchar(50) NULL +); +``` + +## 8. 需求 5:及时齐套跟踪结果报表 + +### 8.1 页面定位 + +新增页面: + +```text +src/views/ProductionManagement/KitTrackingResult/index.vue +``` + +菜单建议: + +```text +报表中心 -> 齐套报表 -> 及时齐套跟踪结果报表 +``` + +### 8.2 页面布局 + +```text +查询区: +主生产订单 合同号 物料 齐套状态 预计可执行时间 SAP同步时间 +[查询] [重置] [导出] + +主表: +主生产订单 合同号 物料编码 物料名称 计划数量 齐套状态 +缺件数 当前进度 预计可执行时间 SAP同步时间 操作 + +展开明细: +缺料生产订单 缺料物料编码 缺料物料名称 缺件数量 属性 +对应单据号 当前进度 全序展示 单条预计完成时间 预计可执行时间 操作 +``` + +### 8.3 数据来源 + +| 数据 | 来源 | 方式 | +|---|---|---| +| 主表订单 | `MES_接口_生产计划` / `View_生产订单_MES` | MES 查询 | +| 齐套状态 | `齐套`、`齐套时间`、`发料状态`、`拣配状态` | MES 字段 | +| 缺件明细 | SAP 实时接口 | 点击展开时查 | +| 主子订单关系 | SAP 或 MES 人工维护 | 建议落 MES 表 | +| 预计可执行时间 | 人工维护 | 报表内维护,写日志 | + +### 8.4 建议新增表 + +#### 8.4.1 主子订单关系表 + +表名:`生产管理_齐套跟踪_主子订单关系` + +```sql +CREATE TABLE dbo.生产管理_齐套跟踪_主子订单关系 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + 主生产订单 int NOT NULL, + 缺料生产订单 int NOT NULL, + 缺料物料编码 nvarchar(100) NULL, + 缺料物料名称 nvarchar(500) NULL, + 关系来源 nvarchar(50) NOT NULL DEFAULT N'人工维护', + 是否有效 bit NOT NULL DEFAULT 1, + 创建人 nvarchar(50) NULL, + 创建时间 datetime NOT NULL DEFAULT GETDATE(), + 最后维护人 nvarchar(50) NULL, + 最后维护时间 datetime NULL +); + +CREATE INDEX IX_生产管理_齐套跟踪_主子订单关系_主单 +ON dbo.生产管理_齐套跟踪_主子订单关系(主生产订单, 是否有效); +``` + +#### 8.4.2 缺件预计信息表 + +表名:`生产管理_齐套跟踪_缺件预计信息` + +```sql +CREATE TABLE dbo.生产管理_齐套跟踪_缺件预计信息 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + 主生产订单 int NOT NULL, + 缺料生产订单 int NULL, + 缺料物料编码 nvarchar(100) NOT NULL, + 对应单据号 nvarchar(100) NULL, + 预计可执行时间 datetime NULL, + 预计可执行说明 nvarchar(500) NULL, + 维护人 nvarchar(50) NULL, + 维护时间 datetime NOT NULL DEFAULT GETDATE() +); + +CREATE INDEX IX_生产管理_齐套跟踪_缺件预计信息_主单 +ON dbo.生产管理_齐套跟踪_缺件预计信息(主生产订单); +``` + +#### 8.4.3 SAP 缺件缓存表 + +如果 SAP 实时查询压力大,新增缓存表: + +```sql +CREATE TABLE dbo.系统集成_SAP缺件明细缓存 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + 主生产订单 int NOT NULL, + 查询时间 datetime NOT NULL DEFAULT GETDATE(), + 缺料生产订单 int NULL, + 物料编码 nvarchar(100) NULL, + 物料名称 nvarchar(500) NULL, + 缺件数量 decimal(18,2) NULL, + 属性 nvarchar(20) NULL, + 对应单据号 nvarchar(100) NULL, + 当前进度 nvarchar(500) NULL, + 全序展示 nvarchar(max) NULL, + 单条预计完成时间 datetime NULL, + 原始JSON nvarchar(max) NULL +); +``` + +### 8.5 存储过程 + +主表查询: + +```text +生产管理_齐套跟踪结果_主表查询 +``` + +参数: + +- `@主生产订单 int` +- `@合同号 nvarchar(50)` +- `@物料 nvarchar(100)` +- `@齐套状态 nvarchar(50)` +- `@预计开始 date` +- `@预计结束 date` + +展开明细: + +```text +生产管理_齐套跟踪结果_缺件明细查询 +``` + +说明: + +- 第一优先:点击展开时前端调用 SAP 接口,再把结果展示并可缓存。 +- 如果后端 `.ashx` 只能执行 SQL,SAP 查询需要前端现有 SAP/B1 接口或后端新增封装接口。 +- 如果不能实时查 SAP,先读取 `系统集成_SAP缺件明细缓存`。 + +预计可执行时间保存: + +```text +生产管理_齐套跟踪结果_预计时间保存 +``` + +参数: + +- 主生产订单 +- 缺料生产订单 +- 缺料物料编码 +- 对应单据号 +- 预计可执行时间 +- 预计可执行说明 +- 维护人 + +同时写 `系统管理_业务字段维护日志`。 + +## 9. 需求 6:生产计划跟踪 + +### 9.1 现有页面 + +页面: + +```text +src/views/ProductionManagement/ProductionPlanTrack/index.vue +``` + +现有调用: + +```text +生产管理_生产计划跟踪 +``` + +页面现状已经有外协状态处理、工序子表、颜色等基础逻辑。 + +### 9.2 页面改造 + +新增/调整: + +| 内容 | 实现 | +|---|---| +| 当前序显示完整工艺路线 | 主表列改为路线组件 | +| 工序文字按状态变色 | 前端根据状态 class | +| 进度文案 | `打磨中`、`打磨毕待淬火` | +| 标准工时 | 表格列 | +| 订单状态 | 表格列 | + +工艺路线显示: + +```text +打磨(张三) -> 淬火(外协) -> 精磨(李四) +``` + +颜色规则: + +| 状态 | 样式 | +|---|---| +| 正在加工 | 蓝色或绿色高亮 | +| 已完成 | 灰色 | +| 等待加工 | 默认 | +| 异常 | 红色 | + +### 9.3 后端返回字段 + +过程 `生产管理_生产计划跟踪` 需要返回每道工序: + +| 字段 | 说明 | +|---|---| +| 生产订单 | +| 合同号 | +| 订单状态 | +| 物料编码 | +| 物料名称 | +| TaskAID | +| 工序名称 | +| 顺序编号 | +| 指派对象 | +| 任务状态 | +| 加工状态 | +| 开工时间 | +| 完工时间 | +| 标准工时 | +| 外协结束时间 | + +### 9.4 SQL 逻辑 + +标准工时来源: + +- 优先 `车间生产管理工艺_零件生产工艺_工艺库.标准工时` +- 通过 `订单编号 + 工艺顺序/订单行号` 关联 + +订单状态来源: + +- `MES_接口_生产计划.订单状态` +- 如果 SAP 同步了单据状态,也可增加 `单据状态` + +过程示例逻辑: + +```sql +SELECT + p.订单编号, + p.合同号, + p.订单状态, + t.AID AS TaskAID, + t.工序名称, + t.顺序编号, + t.指派对象, + t.任务状态, + t.加工状态, + t.开工时间, + t.完工时间, + ISNULL(g.标准工时, 0) AS 标准工时 +FROM dbo.MES_接口_生产计划 p +JOIN dbo.MES_接口_生产计划_生产任务 t ON p.订单编号 = t.订单编号 +LEFT JOIN dbo.车间生产管理工艺_零件生产工艺_工艺库 g + ON t.订单编号 = g.订单编号 + AND t.订单行号 = g.工艺顺序 +WHERE ... +ORDER BY p.订单编号, t.顺序编号; +``` + +### 9.5 前端算法 + +将后端明细按订单分组: + +```js +const groups = {} +rows.forEach(row => { + if (!groups[row.订单编号]) groups[row.订单编号] = [] + groups[row.订单编号].push(row) +}) +``` + +每个工序状态: + +```js +function getStepStatus(step) { + if (step.任务状态 === 4 || step.完工时间) return 'done' + if (step.加工状态 === 2 || step.开工时间) return 'doing' + return 'waiting' +} +``` + +进度文案: + +```js +function getProgressText(steps) { + const doing = steps.find(x => getStepStatus(x) === 'doing') + if (doing) return `${doing.工序名称}中` + const lastDoneIndex = findLastDoneIndex(steps) + if (lastDoneIndex >= 0 && steps[lastDoneIndex + 1]) { + return `${steps[lastDoneIndex].工序名称}毕待${steps[lastDoneIndex + 1].工序名称}` + } + if (lastDoneIndex === steps.length - 1) return '已完成' + return '待开工' +} +``` + +## 10. 需求 7:外协任务检验 + +### 10.1 现有页面 + +相关页面: + +```text +src/views/QualityManagement/CheckTask/processReceive.vue +src/views/ProductionManagement/OutsourceMange/index.vue +src/views/ProductionManagement/OutsourceSheet/index.vue +``` + +现有视图: + +- `View_质量检验_质检记录_外协收检` +- `View_外协质检` +- `View_外协报表视图` + +### 10.2 需求字段 + +| 字段 | 来源 | +|---|---| +| 指派对象 | 任务表 `MES_接口_生产计划_生产任务.指派对象` | +| 供应商 | SAP 采购/外协单据,或外协任务维护 | +| SAP采购收货单号 | SAP 采购收货成功后返回 | + +### 10.3 建议新增字段 + +优先加在质检记录扩展表,避免直接改大表影响历史。 + +表名:`质量管理_外协收检_扩展` + +```sql +CREATE TABLE dbo.质量管理_外协收检_扩展 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + QT_AID bigint NOT NULL, + TaskAID bigint NULL, + 指派对象 nvarchar(50) NULL, + 供应商编码 nvarchar(100) NULL, + 供应商名称 nvarchar(200) NULL, + SAP采购收货单号 nvarchar(100) NULL, + SAP采购收货行号 nvarchar(50) NULL, + SAP同步状态 nvarchar(20) NULL, + SAP返回信息 nvarchar(max) NULL, + 创建时间 datetime NOT NULL DEFAULT GETDATE(), + 最后维护时间 datetime NULL +); + +CREATE UNIQUE INDEX UX_质量管理_外协收检_扩展_QT +ON dbo.质量管理_外协收检_扩展(QT_AID); +``` + +如果客户明确要在质检主记录中查询导出,也可直接加字段到 `YL_质量检验_质检记录`: + +```sql +ALTER TABLE dbo.YL_质量检验_质检记录 ADD + 指派对象 nvarchar(50) NULL, + 供应商编码 nvarchar(100) NULL, + 供应商名称 nvarchar(200) NULL, + SAP采购收货单号 nvarchar(100) NULL; +``` + +推荐扩展表,查询视图再拼接。 + +### 10.4 页面改造 + +序检收检页面: + +- 收检表格增加:指派对象、供应商、SAP采购收货单号。 +- 收检详情弹窗增加只读展示。 +- 外协收检成功后,保存 SAP 返回的采购收货单号。 + +外协报表: + +- 增加供应商、SAP采购收货单号列。 +- 后续供应商合格率按供应商分组。 + +### 10.5 存储过程 + +新增或扩展: + +| 过程 | 说明 | +|---|---| +| `质量管理_外协收检_扩展保存` | 收检完成后保存供应商和 SAP 单号 | +| `质量管理_外协收检_查询` | 查询外协收检扩展字段 | +| `生产管理_外协任务报表_查询` | 扩展供应商、SAP采购收货单号、采购到货期说明 | + +## 11. 需求 8:异常管控 + +### 11.1 现有页面 + +异常页面: + +```text +src/views/ProductionManagement/AbnormalControl/index.vue +``` + +需要加入口的页面: + +- `ProductionManagement/MachiningCenter/index.vue` +- `ProductionManagement/AssemblyCenter/index.vue` +- `QualityManagement/QualityCenter/index.vue` +- `QualityManagement/CheckTask/processReceive.vue` +- 后续设计任务报工页面 +- 后续编程任务清单页面 + +### 11.2 页面交互 + +在任务操作区增加按钮: + +```text +[报异常] +``` + +点击前校验: + +- 必须选中任务。 +- 必须有 TaskAID 或生产订单。 +- 已关闭/已入库任务不允许新报异常,除非角色有权限。 + +异常弹窗字段: + +| 字段 | 控件 | +|---|---| +| 生产订单 | 只读 | +| TaskAID | 隐藏 | +| 工序名称 | 只读 | +| 指派对象 | 只读 | +| 异常类型 | 下拉 | +| 异常说明 | 多行文本 | +| 附件 | 上传 | +| 审批人 | 人员多选 | + +### 11.3 数据表 + +使用第 3.3 节建议表: + +- `生产管理_异常管控_任务异常` +- `生产管理_异常管控_审批人` + +### 11.4 存储过程 + +#### 11.4.1 异常提交 + +过程名:`生产管理_异常管控_任务异常提交` + +参数: + +- 来源模块 +- 生产订单 +- TaskAID +- 工序名称 +- 指派对象 +- 异常类型 +- 异常说明 +- 附件ID +- 审批人JSON +- 发起人 + +逻辑: + +1. 生成异常编号,例如 `YC202605280001`。 +2. 插入 `生产管理_异常管控_任务异常`。 +3. 解析审批人 JSON,插入 `生产管理_异常管控_审批人`。 +4. 返回异常编号。 + +#### 11.4.2 待办查询 + +过程名:`生产管理_异常管控_待办查询` + +参数: + +- `@审批人姓名` +- `@状态` + +逻辑: + +- 审批人被选中即可看到任务。 +- 任一审批人处理后,异常进入下一状态或关闭。 + +#### 11.4.3 异常处理 + +过程名:`生产管理_异常管控_任务异常处理` + +参数: + +- 异常AID +- 处理人 +- 处理意见 +- 处理结果 + +逻辑: + +1. 更新异常主表实际处理人、处理时间、状态。 +2. 当前审批人记录标记已处理。 +3. 同一异常其他审批人不再待办。 + +## 12. 需求 9:机加班次产量表 + +### 12.1 页面定位 + +新增页面: + +```text +src/views/ProductionManagement/MachiningShiftOutput/index.vue +``` + +菜单: + +```text +报表中心 -> 生产报表 -> 机加班次产量表 +``` + +### 12.2 页面布局 + +```text +查询区: +日期范围 班次 设备 操作人 生产订单 物料 +[查询] [重置] [导出] + +汇总卡: +总数量 总工时 设备数 班次数 + +分组表: +设备 -> 日期 -> 班次 -> 任务明细 +``` + +### 12.3 数据来源 + +| 数据 | 来源 | +|---|---| +| 报工数量 | `YL_加工中心_操作记录表.操作数值` | +| 工时 | `YL_加工中心_操作记录表.工时` | +| 设备 | `工位名称` 或任务 `指派对象` | +| 生产订单/物料 | `MES_接口_生产计划_生产任务` | +| 班次 | `班次表` + 时间匹配 | + +现有函数: + +```text +dbo.计算班次重叠秒数 +``` + +可用于跨天班次工时计算。 + +### 12.4 存储过程 + +过程名:`生产报表_机加班次产量表_查询` + +参数: + +- 开始日期 +- 结束日期 +- 班次 +- 设备 +- 操作人 +- 生产订单 +- 物料 + +返回: + +- 设备名称 +- 日期 +- 班次 +- 生产订单 +- 物料编码 +- 物料名称 +- 工序名称 +- 开始时间 +- 结束时间 +- 工时小时 +- 数量 +- 操作人 +- 设备日期班次小计数量 +- 设备日期班次小计工时 + +SQL 逻辑: + +1. 取 `操作类别='报工'` 且 `操作数值 > 0` 的记录。 +2. 按 `开始时间` 匹配班次。 +3. 关联任务表补订单、物料、工序。 +4. 按设备、日期、班次排序。 + +### 12.5 是否新增表 + +第一阶段不新增表。 + +如果班次规则不足,需要扩展 `班次表`: + +```sql +ALTER TABLE dbo.班次表 ADD + 是否跨天 bit NULL, + 是否启用 bit NULL, + 班次日期归属 nvarchar(20) NULL; -- 开始日/结束日 +``` + +## 13. 需求 10:发货通知列表 + +### 13.1 页面定位 + +新增页面: + +```text +src/views/ProductionManagement/ShippingNoticeList/index.vue +``` + +菜单: + +```text +报表中心 -> 交付报表 -> 发货通知列表 +``` + +### 13.2 数据来源 + +客户说明:SAP 已提供数据,大屏已显示。 + +需要先查新分析: + +1. 大屏当前发货通知读取哪个过程。 +2. `装配中心任务看板_发货状态查询` 是否已经包含发货通知字段。 +3. `MES_接口_生产计划` 中 `发货状态`、`要求发货日期` 是否够用。 +4. 是否有 SAP 发货通知同步落地表。 + +### 13.3 建议新增表 + +若当前没有发货通知落地表,建议建: + +```sql +CREATE TABLE dbo.系统集成_SAP发货通知 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + 发货通知号 nvarchar(100) NOT NULL, + 合同号 nvarchar(50) NULL, + 客户编码 nvarchar(100) NULL, + 客户名称 nvarchar(200) NULL, + 生产订单 int NULL, + 物料编码 nvarchar(100) NULL, + 物料名称 nvarchar(500) NULL, + 数量 decimal(18,2) NULL, + 要求发货日期 datetime NULL, + 发货状态 nvarchar(50) NULL, + SAP同步时间 datetime NULL, + 原始JSON nvarchar(max) NULL, + 创建时间 datetime NOT NULL DEFAULT GETDATE() +); + +CREATE INDEX IX_系统集成_SAP发货通知_合同号 ON dbo.系统集成_SAP发货通知(合同号); +CREATE INDEX IX_系统集成_SAP发货通知_生产订单 ON dbo.系统集成_SAP发货通知(生产订单); +``` + +如果已有大屏同步表,则不建新表,直接复用。 + +### 13.4 存储过程 + +过程名:`报表_发货通知列表_查询` + +参数: + +- 发货通知号 +- 合同号 +- 客户 +- 状态 +- 要求发货开始 +- 要求发货结束 + +返回: + +- 发货通知号 +- 合同号 +- 客户 +- 生产订单 +- 物料编码 +- 物料名称 +- 数量 +- 要求发货日期 +- 发货状态 +- SAP同步时间 + +## 14. 需求 11:质检任务早知道 + +### 14.1 依赖 + +强依赖: + +- `生产管理_装配已排产需求_查询` +- 装配完成时间字段可用 + +### 14.2 页面定位 + +新增页面: + +```text +src/views/QualityManagement/QualityTaskPreview/index.vue +``` + +菜单: + +```text +质量管理 -> 质量报表 -> 质检任务早知道 +``` + +### 14.3 查询规则 + +过滤: + +- 装配完成时间在查询范围内。 +- 排除已完成质检。 +- 排除订单关闭、取消、整单已入库。 +- 按装配完成时间分组。 + +### 14.4 存储过程 + +过程名:`质量管理_质检任务早知道_查询` + +参数: + +- 装配完成开始 +- 装配完成结束 +- 合同号 +- 生产订单 +- 物料 + +返回: + +- 预计质检日期 +- 生产订单 +- 合同号 +- 物料编码 +- 物料名称 +- 装配完成时间 +- 当前对应人员 +- 当前对应内容 +- 累计工时 +- 异常状态 +- 质检状态 + +SQL 逻辑: + +```sql +-- 基于装配已排产需求结果,再排除已检/关闭/取消/入库 +``` + +### 14.5 不新增表 + +本需求不新增表,只新增查询过程和页面。 + +## 15. 需求 12:生产工艺自动带出标准工艺 + +### 15.1 现有页面 + +相关页面: + +```text +src/views/ProcessManagement/ProcessProduct/index.vue +src/views/ProcessManagement/ProcessesDevelop/index.vue +``` + +### 15.2 页面交互 + +点击编辑生产工艺: + +1. 查询是否已有生产工艺。 +2. 如果有,正常打开。 +3. 如果没有,提示: + +```text +当前订单未找到生产工艺,是否按物料标准工艺带出草稿? +[带出标准工艺] [取消] +``` + +4. 带出后只在页面显示,不直接落库。 +5. 用户点击保存后,写入生产工艺。 + +### 15.3 存储过程 + +新增: + +| 过程 | 用途 | +|---|---| +| `工艺管理_生产工艺_是否存在` | 按订单号查询是否已有生产工艺 | +| `工艺管理_生产工艺_标准工艺草稿查询` | 按物料编码查标准工艺并映射成生产工艺字段 | + +保存仍复用现有生产工艺保存过程。 + +### 15.4 字段映射 + +需要查新分析: + +- 标准工艺表:`车间生产管理工艺_零件工序_工艺库` +- 生产工艺表:`车间生产管理工艺_零件生产工艺_工艺库` +- 两者字段差异。 + +至少映射: + +| 标准工艺 | 生产工艺 | +|---|---| +| 物料编号 | 物料编号 | +| 工序名称 | 工序名称 | +| 工艺顺序 | 工艺顺序 | +| 标准工时 | 标准工时 | +| 工序说明 | 工序说明 | +| 指派对象默认值 | 指派对象 | + +### 15.5 不建议新增表 + +该需求只改页面和过程,不新增表。 + +## 16. 需求 13:工时报表 + 备注类小改 + +### 16.1 工时报表新增指派对象 + +现有页面: + +```text +src/views/ProductionManagement/Timesheet/index.vue +``` + +现有过程: + +```text +工时统计_作业者工时_查询 +工时统计_作业者工时_查询_导出 +``` + +改造: + +- 查询区增加指派对象筛选。 +- 表格增加指派对象列。 +- 导出增加指派对象列。 + +SQL 来源: + +- `YL_加工中心_操作记录表.工位名称` +- 或关联任务表取 `MES_接口_生产计划_生产任务.指派对象` + +推荐使用任务表指派对象,工位名称作为实际操作工位,两者都可展示: + +| 字段 | 说明 | +|---|---| +| 指派对象 | 任务被派给谁 | +| 实际工位 | 操作记录发生在哪个工位 | + +### 16.2 机加领料备注 + +需求: + +- 生产领料(机加)增加备注字段。 + +需要先定位现有领料表。如果无独立表,可能通过 SAP 或操作记录保存。 + +建议: + +```sql +ALTER TABLE dbo.MES_接口_生产计划_生产任务 ADD 机加领料备注 nvarchar(500) NULL; +``` + +如领料已有专表,应加在领料单表。 + +过程: + +- `生产管理_机加领料_备注保存` +- `生产管理_机加领料_查询` 返回备注 + +### 16.3 机加退库备注、装配退库备注 + +建议如果退库已有业务表,在退库表增加: + +```sql +备注 nvarchar(500) NULL, +最后维护人 nvarchar(50) NULL, +最后维护时间 datetime NULL +``` + +如果没有退库表,先不要加到任务表,建议建退库单扩展表: + +```sql +CREATE TABLE dbo.生产管理_退库单_扩展 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + 退库单号 nvarchar(100) NOT NULL, + 退库类型 nvarchar(20) NOT NULL, -- 机加/装配 + 生产订单 int NULL, + TaskAID bigint NULL, + 备注 nvarchar(500) NULL, + 最后维护人 nvarchar(50) NULL, + 最后维护时间 datetime NULL +); +``` + +### 16.4 外协任务报表采购到货期说明 + +现有页面: + +```text +src/views/ProductionManagement/OutsourceSheet/index.vue +src/views/ProductionManagement/OutsourceMange/index.vue +``` + +建议字段: + +```sql +ALTER TABLE dbo.MES_接口_生产计划_生产任务 ADD 采购到货期说明 nvarchar(500) NULL; +``` + +如果采购到货期说明来自 SAP,则不允许手工覆盖,改为扩展表: + +```sql +CREATE TABLE dbo.生产管理_外协任务_采购扩展 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + TaskAID bigint NOT NULL, + 采购到货期说明 nvarchar(500) NULL, + SAP采购订单号 nvarchar(100) NULL, + SAP采购收货单号 nvarchar(100) NULL, + 供应商编码 nvarchar(100) NULL, + 供应商名称 nvarchar(200) NULL, + 最后维护人 nvarchar(50) NULL, + 最后维护时间 datetime NULL +); +``` + +### 16.5 制定标准工艺保存提示 + +页面: + +```text +src/views/ProcessManagement/ProcessesDevelop/index.vue +``` + +改造: + +- 保存成功显示“标准工艺保存成功”。 +- 保存失败显示后端 message。 +- 如果字段缺失,提示具体字段。 + +不涉及数据库。 + +## 17. 需求 14:生产订单关闭批量更新 SAP 状态 + +### 17.1 现有页面 + +页面: + +```text +src/views/PlanManagement/PlannOrderClose/index.vue +``` + +### 17.2 页面改造 + +表格增加多选列: + +```html + +``` + +新增按钮: + +```text +[批量关闭 SAP 订单] +``` + +点击后: + +1. 校验已选择订单。 +2. 弹出二次确认: + +```text +即将批量关闭 N 个 SAP 生产订单。该操作会写入 SAP,可能部分成功部分失败,是否继续? +``` + +3. 调用批量关闭逻辑。 +4. 展示结果弹窗。 + +结果弹窗字段: + +- 生产订单 +- SAP 单据号 +- 执行结果 +- 失败原因 +- 是否可重试 + +### 17.3 后端建议 + +由于当前前端很多 SAP 操作是直接调用 SAP/B1 接口或通过现有工具实现,批量关闭建议封装为前端逐单执行 + MES 记录结果,或后端新增 API。若 `.ashx` 仅支持 SQL,不适合在 SQL 里直接调 SAP。 + +建议流程: + +```text +前端选中订单 + -> 查询订单 SAP DocEntry + -> 逐单 PATCH SAP ProductionOrders + -> 每单结果写入 系统集成_SAP调用日志 + -> 更新 MES 订单状态或 SAP关闭状态扩展字段 +``` + +### 17.4 建议新增字段 + +表:`MES_接口_生产计划` + +```sql +ALTER TABLE dbo.MES_接口_生产计划 ADD + SAP关闭状态 nvarchar(20) NULL, + SAP关闭时间 datetime NULL, + SAP关闭失败原因 nvarchar(1000) NULL, + SAP关闭操作人 nvarchar(50) NULL; +``` + +如果不想改主表,新增扩展表: + +```sql +CREATE TABLE dbo.生产管理_订单关闭_SAP状态 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + 订单编号 int NOT NULL, + SAP单据号 nvarchar(100) NULL, + 关闭状态 nvarchar(20) NOT NULL, + 失败原因 nvarchar(1000) NULL, + 操作人 nvarchar(50) NULL, + 操作时间 datetime NOT NULL DEFAULT GETDATE(), + 是否可重试 bit NOT NULL DEFAULT 0 +); +``` + +### 17.5 存储过程 + +| 过程 | 用途 | +|---|---| +| `生产管理_订单关闭_SAP结果保存` | 保存每单关闭结果 | +| `生产管理_订单关闭_SAP结果查询` | 查询批量关闭结果 | +| `生产管理_订单关闭_可关闭校验` | 批量操作前校验订单是否可关 | + +## 18. 需求 15:及时检验报表 + +### 18.1 页面定位 + +新增页面: + +```text +src/views/QualityManagement/TimelyInspectionReport/index.vue +``` + +菜单: + +```text +质量管理 -> 质量报表 -> 及时检验报表 +``` + +### 18.2 查询口径 + +进入报表条件: + +1. `YL_加工中心_操作记录表` 中存在报工记录。 +2. `操作类别 = '报工'`。 +3. `操作数值 > 0`。 +4. `结束时间 < DATEADD(DAY, -2, GETDATE())`。 +5. 对应质检记录不存在,或检验数量不足。 + +### 18.3 页面字段 + +| 字段 | +|---| +| 生产订单 | +| TaskAID | +| 物料编码 | +| 物料名称 | +| 工序名称 | +| 指派对象 | +| 报工数量 | +| 已检数量 | +| 未检数量 | +| 报工结束时间 | +| 超期天数 | +| 操作人 | + +### 18.4 存储过程 + +过程名:`质量管理_及时检验报表_查询` + +参数: + +- 生产订单 +- 物料 +- 工序 +- 指派对象 +- 报工结束开始 +- 报工结束结束 +- 超期天数,默认 2 + +SQL 示例: + +```sql +CREATE PROCEDURE dbo.质量管理_及时检验报表_查询 + @生产订单 int = NULL, + @物料 nvarchar(100) = '', + @工序 nvarchar(100) = '', + @指派对象 nvarchar(100) = '', + @报工结束开始 date = NULL, + @报工结束结束 date = NULL, + @超期天数 int = 2 +AS +BEGIN + SET NOCOUNT ON; + + WITH rpt AS ( + SELECT + o.TaskAID, + SUM(ISNULL(o.操作数值,0)) AS 报工数量, + MAX(o.结束时间) AS 报工结束时间, + MAX(o.操作人) AS 操作人 + FROM dbo.YL_加工中心_操作记录表 o + WHERE o.操作类别 = N'报工' + AND ISNULL(o.操作数值,0) > 0 + AND o.结束时间 < DATEADD(DAY, -@超期天数, GETDATE()) + GROUP BY o.TaskAID + ), + qc AS ( + SELECT + TaskAID, + SUM(ISNULL(检验数量,0)) AS 已检数量 + FROM dbo.YL_质量检验_质检记录 + GROUP BY TaskAID + ) + SELECT + t.订单编号 AS 生产订单, + t.AID AS TaskAID, + t.物料编码, + t.物料名称, + t.工序名称, + t.指派对象, + rpt.报工数量, + ISNULL(qc.已检数量,0) AS 已检数量, + rpt.报工数量 - ISNULL(qc.已检数量,0) AS 未检数量, + rpt.报工结束时间, + DATEDIFF(DAY, rpt.报工结束时间, GETDATE()) AS 超期天数, + rpt.操作人 + FROM rpt + JOIN dbo.MES_接口_生产计划_生产任务 t ON rpt.TaskAID = t.AID + LEFT JOIN qc ON rpt.TaskAID = qc.TaskAID + WHERE rpt.报工数量 > ISNULL(qc.已检数量,0) + AND (@生产订单 IS NULL OR t.订单编号 = @生产订单) + AND (@物料 = '' OR t.物料编码 LIKE '%' + @物料 + '%' OR t.物料名称 LIKE '%' + @物料 + '%') + AND (@工序 = '' OR t.工序名称 = @工序) + AND (@指派对象 = '' OR t.指派对象 = @指派对象) + AND (@报工结束开始 IS NULL OR rpt.报工结束时间 >= @报工结束开始) + AND (@报工结束结束 IS NULL OR rpt.报工结束时间 < DATEADD(DAY, 1, @报工结束结束)) + ORDER BY 超期天数 DESC, rpt.报工结束时间; +END +``` + +### 18.5 不新增表 + +第一阶段不新增表。若要催办闭环,再新增催办记录表。 + +## 19. 需求 16:工序流转卡增加原料编码 + +### 19.1 需要查新分析 + +先定位工序流转卡打印页面和模板: + +- 搜索页面中 `流转卡`、`print`、`打印`。 +- 确认当前流转卡数据来源过程。 +- 确认原料编码来自 BOM、SAP 工艺路线,还是物料字段。 + +### 19.2 数据来源建议 + +优先顺序: + +1. `BOM数据` 中父件对应子件,取原料类子件编码。 +2. SAP BOM/物料清单同步表。 +3. 生产任务行文本备注或行物料字段。 + +### 19.3 存储过程 + +扩展流转卡查询过程,增加字段: + +| 字段 | 说明 | +|---|---| +| 原料编码 | BOM 子件编码 | +| 原料名称 | BOM 子件名称,可选 | +| 原料规格 | 可选 | + +SQL 示例: + +```sql +LEFT JOIN dbo.BOM数据 bom + ON bom.父件编码 = t.物料编码 +``` + +### 19.4 页面/打印 + +打印模板增加: + +```text +原料编码:XXXXXXXX +``` + +如果一个成品对应多个原料编码: + +- 用逗号合并。 +- 或打印明细区。 + +## 20. 需求 17-19:现场大屏 + +包括: + +- 一楼质检大屏幕 +- 机加现场大屏幕 +- 装配现场大屏幕 + +看板项目目录: + +| 大屏 | 项目目录 | +|---|---| +| 质检任务看板 | `质检任务看板` | +| 机加现场大屏 | `机加设备生产运营看板`、`机加设备生产运营看板二` | +| 装配现场大屏 | `装配任务看板` | + +### 20.1 通用大屏开发原则 + +1. 大屏只展示,不作为字段维护入口。 +2. 关键工序、缺勤、送检状态必须先有业务数据来源。 +3. 所有大屏过程必须支持 `@统计日期`,默认当天。 +4. 大屏刷新频率建议 30 秒以上,除设备状态外不建议 5 秒刷新复杂 SQL。 +5. 指标必须能下钻明细。 + +### 20.2 一楼质检大屏 + +#### 20.2.1 新增指标 + +| 指标 | 口径 | +|---|---| +| 质检及时率 | 及时检验任务数 / 应检任务数 | +| 超 2 天未检任务 | 最后生产完成时间超过 2 天且未检足 | +| 关键工序应检数 | 任务快照中 `是否关键工序=1` | +| 关键工序未检数 | 应检但未检足 | +| 关键工序已检数 | 已检足 | + +#### 20.2.2 需要新增字段 + +关键工序不要放在看板维护,应加在工艺和任务快照。 + +建议字段: + +```sql +ALTER TABLE dbo.车间生产管理工艺_零件工序_工艺库 ADD 是否关键工序 bit NULL DEFAULT 0; +ALTER TABLE dbo.车间生产管理工艺_零件生产工艺_工艺库 ADD 是否关键工序 bit NULL DEFAULT 0; +ALTER TABLE dbo.MES_接口_生产计划_生产任务 ADD 是否关键工序 bit NULL DEFAULT 0; +``` + +任务下发时把生产工艺中的 `是否关键工序` 快照到任务表。 + +#### 20.2.3 存储过程 + +扩展或新增: + +| 过程 | 用途 | +|---|---| +| `质量任务看板_未完成统计` | 增加超期天数、关键工序统计 | +| `质量任务看板_未完成明细查询` | 增加最后生产完成时间、是否关键工序 | +| `质量任务看板_及时率统计` | 新增及时率 | + +### 20.3 机加现场大屏 + +#### 20.3.1 新增指标 + +| 指标 | 口径 | +|---|---| +| 缺勤人员 | 应到人员 - 实到人员 | +| 关键工序任务汇总 | 已排产未完成且是否关键工序=1 | +| 关键工序任务明细 | 订单、物料、工序、设备、指派对象、计划开始、完成数 | + +#### 20.3.2 缺勤数据 + +不能从“没有报工”反推缺勤。 + +需要数据: + +| 数据 | 来源 | +|---|---| +| 应到人员 | 班次人员绑定表、排班表、岗位工位绑定 | +| 实到人员 | 考勤、上岗绑定、登录、报工记录 | + +建议新增排班表: + +```sql +CREATE TABLE dbo.人员排班表 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + 排班日期 date NOT NULL, + 班次编号 int NULL, + 班次名称 nvarchar(50) NULL, + 人员编号 int NOT NULL, + 人员姓名 nvarchar(50) NOT NULL, + 岗位 nvarchar(50) NULL, + 工位号 nvarchar(50) NULL, + 是否应到 bit NOT NULL DEFAULT 1, + 创建人 nvarchar(50) NULL, + 创建时间 datetime NOT NULL DEFAULT GETDATE() +); + +CREATE INDEX IX_人员排班表_日期班次 ON dbo.人员排班表(排班日期, 班次名称); +``` + +如果已有 `班次人员绑定表` 能满足,则不新建,只扩展字段。 + +#### 20.3.3 存储过程 + +| 过程 | 用途 | +|---|---| +| `机加现场大屏_缺勤人员查询` | 返回岗位、工位、姓名 | +| `机加现场大屏_关键工序统计` | 汇总关键工序任务 | +| `机加现场大屏_关键工序明细` | 明细下钻 | + +### 20.4 装配现场大屏 + +#### 20.4.1 新增指标 + +| 指标 | 口径 | +|---|---| +| 缺勤人员 | 同机加 | +| 及时送检任务 | 发料齐套后超过 2 天未送检 | +| 排序 | 加急优先,其次及时送检超期,再按计划开始或齐套时间 | + +#### 20.4.2 存储过程 + +| 过程 | 用途 | +|---|---| +| `装配现场大屏_缺勤人员查询` | 岗位、工位、姓名 | +| `装配现场大屏_及时送检任务查询` | 发料齐套后 2 天未送检 | +| `装配中心任务看板_装配任务查询` | 增加发料齐套时间、是否已送检、送检时间、超期天数 | + +#### 20.4.3 字段来源 + +| 字段 | 来源 | +|---|---| +| 发料齐套时间 | `MES_接口_生产计划.齐套时间` 或装配扩展表 | +| 是否已送检 | 送检记录/质检任务/质检记录 | +| 送检时间 | 送检记录 | +| 超期天数 | `DATEDIFF(DAY, 发料齐套时间, GETDATE())` | + +## 21. 需求 20:编程任务清单 / 编程报工 + +### 21.1 页面定位 + +新增页面: + +```text +src/views/ProductionManagement/ProgrammingTask/index.vue +``` + +菜单: + +```text +生产管理 -> 报工管理 -> 编程任务清单 +``` + +### 21.2 页面布局 + +```text +查询区: +设备 工位 程序员 状态 生产订单 物料 日期 +[查询] [重置] [新增编程任务] [导出] + +表格: +任务编号 生产订单 物料编码 物料名称 工序 设备/工位 程序号 +编程人员 状态 开始时间 结束时间 工时 操作 + +操作: +[开始编程] [结束编程] [编辑程序号] [工时记录] [报异常] +``` + +### 21.3 新增表 + +#### 21.3.1 编程任务表 + +```sql +CREATE TABLE dbo.生产管理_编程任务 ( + 编程任务ID bigint IDENTITY(1,1) PRIMARY KEY, + 编程任务编号 nvarchar(50) NOT NULL, + 生产订单 int NULL, + TaskAID bigint NULL, + 物料编码 nvarchar(100) NULL, + 物料名称 nvarchar(500) NULL, + 工序名称 nvarchar(100) NULL, + 设备编号 nvarchar(50) NULL, + 设备名称 nvarchar(100) NULL, + 工位编号 nvarchar(50) NULL, + 工位名称 nvarchar(100) NULL, + 程序号 nvarchar(100) NULL, + 任务来源 nvarchar(50) NULL, -- 人工创建/订单生成/设备任务派生 + 状态 nvarchar(20) NOT NULL DEFAULT N'未开始', + 任务说明 nvarchar(1000) NULL, + 创建人 nvarchar(50) NULL, + 创建时间 datetime NOT NULL DEFAULT GETDATE(), + 最后维护人 nvarchar(50) NULL, + 最后维护时间 datetime NULL +); +``` + +#### 21.3.2 编程工时记录表 + +```sql +CREATE TABLE dbo.生产管理_编程任务_工时记录 ( + 记录ID bigint IDENTITY(1,1) PRIMARY KEY, + 编程任务ID bigint NOT NULL, + 操作类别 nvarchar(20) NOT NULL, -- 开始/结束 + 操作人编号 int NULL, + 操作人 nvarchar(50) NOT NULL, + 开始时间 datetime NULL, + 结束时间 datetime NULL, + 工时分钟 int NULL, + 工作内容 nvarchar(1000) NULL, + 结束说明 nvarchar(1000) NULL, + 创建时间 datetime NOT NULL DEFAULT GETDATE() +); + +CREATE INDEX IX_生产管理_编程任务_工时记录_任务 +ON dbo.生产管理_编程任务_工时记录(编程任务ID); +``` + +### 21.4 存储过程 + +| 过程 | 用途 | +|---|---| +| `生产管理_编程任务_查询` | 列表查询 | +| `生产管理_编程任务_新增` | 新增任务 | +| `生产管理_编程任务_开始` | 开始编程 | +| `生产管理_编程任务_结束` | 结束编程并计算工时 | +| `生产管理_编程任务_工时明细` | 工时明细 | +| `生产管理_编程任务_程序号保存` | 维护程序号 | + +### 21.5 工时接入 + +`View_统一工时明细` 增加: + +```text +来源模块 = 编程 +工时类型 = 编程 +``` + +这样后续合同工时、工时报表可选择是否包含编程工时。 + +## 22. 需求 21-24:设备档案、设备数据采集、OEE、工时查询联动 + +### 22.1 设备档案管理 + +现有页面: + +```text +src/views/DeviceManagement/DeviceInformation/index.vue +``` + +现有表: + +```text +YL_设备管理_设备台账 +MES_资源主数据 +``` + +建议新增字段: + +```sql +ALTER TABLE dbo.YL_设备管理_设备台账 ADD + 是否主要设备 bit NULL DEFAULT 0, + 是否参与OEE bit NULL DEFAULT 0, + 设备标准工时 decimal(18,2) NULL, + 标准工时单位 nvarchar(20) NULL, + 采集设备编码 nvarchar(100) NULL, + 采集点位配置 nvarchar(max) NULL; +``` + +注意: + +- 设备标准工时不能替代工艺标准工时。 +- OEE 的标准单件工时优先来自工艺或设备+工序能力表。 + +建议新增设备工序能力表: + +```sql +CREATE TABLE dbo.设备管理_设备工序能力 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + 设备编号 nvarchar(50) NOT NULL, + 设备名称 nvarchar(100) NULL, + 工序名称 nvarchar(100) NOT NULL, + 物料编码 nvarchar(100) NULL, + 标准单件工时 decimal(18,4) NULL, + 单位 nvarchar(20) NULL DEFAULT N'分钟', + 是否启用 bit NOT NULL DEFAULT 1, + 创建人 nvarchar(50) NULL, + 创建时间 datetime NOT NULL DEFAULT GETDATE(), + 最后维护人 nvarchar(50) NULL, + 最后维护时间 datetime NULL +); +``` + +### 22.2 设备数据采集 + +现有表: + +- `CaChe_Var` +- `历史_设备数据_定时` +- `历史_工位设备状态每分钟记录` +- `YL_设备管理_工时记录` + +新增建议: + +#### 22.2.1 采集原始数据表 + +如果现有 `历史_设备数据_定时` 字段足够,可不新建。否则新增: + +```sql +CREATE TABLE dbo.设备采集_原始数据 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + 采集时间 datetime NOT NULL, + 设备编号 nvarchar(50) NULL, + 设备名称 nvarchar(100) NULL, + 工位号 nvarchar(50) NULL, + 变量名称 nvarchar(100) NULL, + 变量值 nvarchar(200) NULL, + 原始值 nvarchar(200) NULL, + 单位 nvarchar(20) NULL, + TagID nvarchar(100) NULL, + DeviceCode nvarchar(100) NULL, + 在线状态 nvarchar(20) NULL, + 采集质量 nvarchar(20) NULL, + 创建时间 datetime NOT NULL DEFAULT GETDATE() +); +``` + +#### 22.2.2 设备状态汇总表 + +```sql +CREATE TABLE dbo.设备采集_设备状态分钟汇总 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + 统计时间 datetime NOT NULL, + 统计日期 date NOT NULL, + 班次名称 nvarchar(50) NULL, + 设备编号 nvarchar(50) NULL, + 设备名称 nvarchar(100) NULL, + 工位号 nvarchar(50) NULL, + 状态代码 int NULL, + 状态名称 nvarchar(50) NULL, + 持续秒数 int NOT NULL DEFAULT 60, + 是否有效加工 bit NULL, + 创建时间 datetime NOT NULL DEFAULT GETDATE() +); +``` + +#### 22.2.3 设备任务绑定表 + +设备采集必须绑定 MES 任务,否则无法算任务级程序工时。 + +```sql +CREATE TABLE dbo.设备采集_任务绑定 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + 设备编号 nvarchar(50) NOT NULL, + 设备名称 nvarchar(100) NULL, + 工位号 nvarchar(50) NULL, + TaskAID bigint NOT NULL, + 生产订单 int NOT NULL, + 程序号 nvarchar(100) NULL, + 绑定开始时间 datetime NOT NULL, + 绑定结束时间 datetime NULL, + 绑定来源 nvarchar(50) NULL, -- 人工/条码/程序号/时间推断 + 绑定人 nvarchar(50) NULL, + 创建时间 datetime NOT NULL DEFAULT GETDATE() +); +``` + +### 22.3 OEE 指标 + +建议新增指标明细表: + +```sql +CREATE TABLE dbo.设备指标_班次明细 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + 统计日期 date NOT NULL, + 班次名称 nvarchar(50) NULL, + 设备编号 nvarchar(50) NOT NULL, + 设备名称 nvarchar(100) NULL, + 工位号 nvarchar(50) NULL, + TaskAID bigint NULL, + 生产订单 int NULL, + 物料编码 nvarchar(100) NULL, + 物料名称 nvarchar(500) NULL, + 工序名称 nvarchar(100) NULL, + 计划产量 decimal(18,2) NULL, + 实际产量 decimal(18,2) NULL, + 良品数 decimal(18,2) NULL, + 不良品数 decimal(18,2) NULL, + 标准单件工时 decimal(18,4) NULL, + 实际单件工时 decimal(18,4) NULL, + 设备运行工时分钟 decimal(18,2) NULL, + 标准可用工时分钟 decimal(18,2) NULL, + 产能利用率 decimal(18,4) NULL, + 设备利用率 decimal(18,4) NULL, + 性能开动率 decimal(18,4) NULL, + 产品合格率 decimal(18,4) NULL, + OEE decimal(18,4) NULL, + 计算时间 datetime NOT NULL DEFAULT GETDATE(), + 计算说明 nvarchar(1000) NULL +); +``` + +计算过程: + +| 过程 | 用途 | +|---|---| +| `设备指标_班次明细_生成` | 按日期班次生成指标 | +| `设备指标_OEE_查询` | 页面/看板查询 | +| `设备指标_OEE_明细` | 下钻查看三项组成 | + +### 22.4 工时查询联动 + +现有页面: + +```text +src/views/ProductionManagement/Workhours/index.vue +src/views/ProductionManagement/Timesheet/index.vue +src/views/ProductionManagement/WorkHoursCheck/index.vue +``` + +新增字段: + +- 程序工时 +- 设备运行工时 +- 实际单件工时 +- 标准单件工时 +- 设备采集状态 +- 采集质量 + +建议过程: + +```text +工时查询_设备采集工时_查询 +``` + +按 TaskAID、设备、时间段关联 `设备采集_任务绑定` 和设备状态汇总。 + +## 23. 需求 25:手续确认报表 + +### 23.1 页面定位 + +新增页面: + +```text +src/views/ProductionManagement/FormalityConfirmReport/index.vue +``` + +菜单: + +```text +报表中心 -> 装配报表 -> 手续确认报表 +``` + +### 23.2 页面布局 + +```text +查询区: +生产订单 合同号 物料 指派对象 发料齐套日期 手续确认状态 +[查询] [重置] [导出] [批量确认完成] + +表格: +选择 生产订单 合同号 物料编码 物料名称 指派对象 发料齐套时间 +装配完成时间 当前状态 手续确认 确认人 确认时间 操作 + +操作: +[确认完成] [查看装配明细] [查看异常] +``` + +### 23.3 新增表 + +表名:`生产管理_手续确认` + +```sql +CREATE TABLE dbo.生产管理_手续确认 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + 订单编号 int NOT NULL, + 确认状态 nvarchar(20) NOT NULL DEFAULT N'未完成', + 确认人 nvarchar(50) NULL, + 确认时间 datetime NULL, + 确认备注 nvarchar(500) NULL, + 创建时间 datetime NOT NULL DEFAULT GETDATE(), + 最后维护人 nvarchar(50) NULL, + 最后维护时间 datetime NULL +); + +CREATE UNIQUE INDEX UX_生产管理_手续确认_订单编号 +ON dbo.生产管理_手续确认(订单编号); +``` + +### 23.4 消失条件 + +报表只显示待确认数据: + +```sql +WHERE ISNULL(fc.确认状态, N'未完成') <> N'已完成' + AND ISNULL(p.订单状态, '') NOT IN (N'取消', N'关闭') + AND ISNULL(p.单据状态, '') NOT IN (N'取消', N'关闭') + AND ISNULL(p.入库数量, 0) < ISNULL(p.计划数量, 0) +``` + +### 23.5 存储过程 + +| 过程 | 用途 | +|---|---| +| `生产管理_手续确认报表_查询` | 待确认列表 | +| `生产管理_手续确认报表_确认完成` | 单条确认 | +| `生产管理_手续确认报表_批量确认完成` | 批量确认 | + +确认过程同时写 `系统管理_业务字段维护日志`。 + +## 24. 需求 26:产品合格率(工位) + +### 24.1 页面定位 + +新增或扩展质量报表页面: + +```text +src/views/QualityManagement/StationPassRate/index.vue +``` + +### 24.2 口径 + +公式: + +```text +产品合格率 = 良品数 / 总产量 +``` + +需要先确认: + +- 总产量取报工完成数量还是质检检验数量。 +- 良品数取质检合格数还是报工合格数。 +- 统计维度按工位、设备、指派对象还是实际操作工位。 + +建议第一版: + +- 总产量:质检记录 `检验数量` +- 良品数:质检记录 `合格数` +- 工位:关联任务表 `指派对象`,同时展示质检记录来源工位。 + +### 24.3 存储过程 + +过程名:`质量管理_产品合格率_工位查询` + +参数: + +- 开始日期 +- 结束日期 +- 工位 +- 工序 +- 物料 + +返回: + +- 工位 +- 检验数量 +- 合格数量 +- 不合格数量 +- 合格率 +- 明细数 + +### 24.4 不新增表 + +第一阶段不新增表。如果要日快照,写入 `质量管理_工位合格率_日快照`。 + +## 25. 需求 27:让步接收记录 + +### 25.1 页面定位 + +新增页面: + +```text +src/views/QualityManagement/ConcessionRecord/index.vue +``` + +菜单: + +```text +质量管理 -> 质量报表 -> 让步接收记录 +``` + +### 25.2 数据来源 + +现有字段: + +- `MES_接口_生产计划_生产任务.让步放行数量` +- `YL_质量检验_不合格品处理.申请让步放行` +- `YL_质量检验_不合格品处理_处理节点.让步放行数量` + +需求说“新增让步记录查询页面”,建议从不合格品处理和质检记录综合查询。 + +### 25.3 存储过程 + +过程名:`质量管理_让步接收记录_查询` + +参数: + +- 生产订单 +- 物料 +- 检验人 +- 检验开始 +- 检验结束 +- 让步状态 + +返回: + +- 生产订单 +- TaskAID +- 物料编码 +- 物料名称 +- 工序名称 +- 检验数量 +- 不合格数量 +- 让步放行数量 +- 申请让步放行 +- 检验人 +- 检验时间 +- 处理意见 + +### 25.4 不新增表 + +页面只查询,不维护。 + +## 26. 需求 28:设计任务报工模块 / 报工-技术-MES + +### 26.1 页面定位 + +新增页面: + +```text +src/views/ProductionManagement/DesignTaskWork/index.vue +``` + +菜单: + +```text +生产管理 -> 报工管理 -> 设计任务报工 +``` + +### 26.2 页面布局 + +```text +查询区: +任务名称 设计人员 状态 日期 +[查询] [重置] [新增设计任务] [导出] + +表格: +任务编号 任务名称 设计人员 状态 计划开始 计划完成 +开始时间 结束时间 工时 工作内容 结束说明 创建人 操作 + +操作: +[开始报工] [结束报工] [工时记录] [编辑] [取消] +``` + +### 26.3 新增表 + +#### 26.3.1 设计任务表 + +```sql +CREATE TABLE dbo.生产管理_设计任务 ( + 设计任务ID bigint IDENTITY(1,1) PRIMARY KEY, + 设计任务编号 nvarchar(50) NOT NULL, + 任务名称 nvarchar(200) NOT NULL, + 设计人员编号 int NULL, + 设计人员 nvarchar(50) NULL, + 状态 nvarchar(20) NOT NULL DEFAULT N'未开始', + 计划开始时间 datetime NULL, + 计划完成时间 datetime NULL, + 任务说明 nvarchar(1000) NULL, + 创建人 nvarchar(50) NULL, + 创建时间 datetime NOT NULL DEFAULT GETDATE(), + 最后维护人 nvarchar(50) NULL, + 最后维护时间 datetime NULL +); +``` + +#### 26.3.2 设计工时记录表 + +```sql +CREATE TABLE dbo.生产管理_设计任务_工时记录 ( + 记录ID bigint IDENTITY(1,1) PRIMARY KEY, + 设计任务ID bigint NOT NULL, + 操作人编号 int NULL, + 操作人 nvarchar(50) NOT NULL, + 开始时间 datetime NOT NULL, + 结束时间 datetime NULL, + 工时分钟 int NULL, + 工作内容 nvarchar(1000) NULL, + 结束说明 nvarchar(1000) NULL, + 创建时间 datetime NOT NULL DEFAULT GETDATE() +); +``` + +### 26.4 存储过程 + +| 过程 | 用途 | +|---|---| +| `生产管理_设计任务_查询` | 任务列表 | +| `生产管理_设计任务_新增` | 新建任务 | +| `生产管理_设计任务_编辑` | 编辑任务 | +| `生产管理_设计任务_取消` | 取消 | +| `生产管理_设计任务_开始` | 开始报工 | +| `生产管理_设计任务_结束` | 结束报工 | +| `生产管理_设计任务_工时明细` | 工时明细 | + +### 26.5 工时接入 + +`View_统一工时明细` 增加: + +```text +来源模块 = 设计 +工时类型 = 设计 +``` + +注意: + +- 设计任务当前不上传 SAP。 +- 设计任务不产生质量、装配、机加工时。 +- 后续装配已排产需求的合同工时汇总可选择纳入设计工时。 + +## 27. 需求 29:工时异常报表 + +### 27.1 页面定位 + +新增页面: + +```text +src/views/ProductionManagement/WorkTimeAbnormalReport/index.vue +``` + +### 27.2 异常口径 + +```text +实际单件工时 > 标准单件工时 +``` + +字段来源: + +| 字段 | 来源 | +|---|---| +| 实际单件工时 | 设备采集,或人工报工工时 / 完成数量 | +| 标准单件工时 | 生产工艺或设备工序能力表 | +| 设备/工位 | 任务指派对象、设备绑定 | +| 程序号 | 编程任务或设备采集 | + +### 27.3 建议新增表 + +如需要异常确认闭环: + +```sql +CREATE TABLE dbo.生产管理_工时异常确认 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + 统计日期 date NULL, + TaskAID bigint NULL, + 生产订单 int NULL, + 设备编号 nvarchar(50) NULL, + 设备名称 nvarchar(100) NULL, + 标准单件工时 decimal(18,4) NULL, + 实际单件工时 decimal(18,4) NULL, + 超出时长 decimal(18,4) NULL, + 超出比例 decimal(18,4) NULL, + 异常原因 nvarchar(500) NULL, + 责任部门 nvarchar(100) NULL, + 处理说明 nvarchar(1000) NULL, + 确认状态 nvarchar(20) NOT NULL DEFAULT N'未确认', + 确认人 nvarchar(50) NULL, + 确认时间 datetime NULL +); +``` + +### 27.4 存储过程 + +| 过程 | 用途 | +|---|---| +| `生产管理_工时异常报表_查询` | 查询异常 | +| `生产管理_工时异常报表_明细` | 查看来源明细 | +| `生产管理_工时异常报表_确认` | 异常确认 | + +### 27.5 页面字段 + +- 设备/工位 +- 生产订单 +- 物料编码 +- 物料名称 +- 工序名称 +- 指派对象 +- 操作人 +- 程序号 +- 标准单件工时 +- 实际单件工时 +- 超出时长 +- 超出比例 +- 开始时间 +- 结束时间 +- 班次 +- 异常原因 +- 确认状态 + +## 28. 需求 30:正在加工状态 + +### 28.1 目标 + +“正在加工状态:机加正在进行中”。 + +### 28.2 数据来源 + +优先复用: + +- `MES_ProductCenter_DoingTask` +- `v_CurrentProductionStatus` +- `YL_加工中心_操作记录表` 中开始未结束记录 + +### 28.3 页面/看板展示 + +可以在以下页面增加状态: + +- 加工中心任务列表 +- 生产计划跟踪 +- 机加现场大屏 + +展示规则: + +| 条件 | 状态 | +|---|---| +| 有开始记录且未报工结束 | 正在加工 | +| 任务状态已完成 | 已完成 | +| 有暂停记录未恢复 | 暂停中 | +| 无开始记录 | 未开工 | + +### 28.4 存储过程 + +过程名:`生产管理_正在加工状态_查询` + +返回: + +- TaskAID +- 生产订单 +- 工序名称 +- 指派对象 +- 操作人 +- 开始时间 +- 当前持续分钟 +- 状态 + +## 29. 暂不排期项的技术前置 + +### 29.1 及时拣配(机加/装配) + +必须先确认: + +1. 条码代表物料、箱号、批次、生产订单还是拣配单。 +2. SAP 库存和 MES 拣配状态谁是主口径。 +3. 扫码后是否写回 `拣配状态`、`齐套`、`发料状态`。 +4. 机加和装配是否共用拣配表。 + +建议表: + +```sql +CREATE TABLE dbo.生产管理_条码拣配记录 ( + AID bigint IDENTITY(1,1) PRIMARY KEY, + 拣配类型 nvarchar(20) NOT NULL, -- 机加/装配 + 条码 nvarchar(200) NOT NULL, + 生产订单 int NULL, + TaskAID bigint NULL, + 物料编码 nvarchar(100) NULL, + 物料名称 nvarchar(500) NULL, + 批次号 nvarchar(100) NULL, + 数量 decimal(18,2) NULL, + 拣配状态 nvarchar(20) NULL, + SAP校验状态 nvarchar(20) NULL, + 异常说明 nvarchar(500) NULL, + 拣配人 nvarchar(50) NULL, + 拣配时间 datetime NOT NULL DEFAULT GETDATE() +); +``` + +### 29.2 标牌打印操作 + +需求未定,不建表不开发。需确认: + +- 打印对象:物料、订单、设备、工位、产品? +- 条码内容。 +- 模板样式。 +- 是否需要打印记录。 + +### 29.3 首检、巡检 + +现有质检中心已有首检、巡检相关逻辑。空需求暂不开发。若后续提出,应先确认是新增报表、页面优化还是流程改造。 + +## 30. 菜单和权限 + +所有新增页面都需要写入 `登录基础数据_二级菜单`,并按角色分配。 + +建议新增菜单: + +| 页面 | 菜单 | +|---|---| +| 装配已排产需求 | 生产管理/装配管理 | +| 生产日报-送检 | 报表中心/生产日报 | +| 及时齐套跟踪结果报表 | 报表中心/齐套报表 | +| 机加班次产量表 | 报表中心/生产报表 | +| 发货通知列表 | 报表中心/交付报表 | +| 质检任务早知道 | 质量管理/质量报表 | +| 及时检验报表 | 质量管理/质量报表 | +| 手续确认报表 | 报表中心/装配报表 | +| 让步接收记录 | 质量管理/质量报表 | +| 设计任务报工 | 生产管理/报工管理 | +| 编程任务清单 | 生产管理/报工管理 | +| 工时异常报表 | 报表中心/工时报表 | + +菜单字段要参考现有 `登录基础数据_二级菜单`: + +- `path` +- `componet` +- `name` +- `title` +- `icon` +- `账号代码` + +## 31. 开发实施顺序 + +### 31.1 第一阶段:高优先级低风险 + +1. 及时开工报表正选/反选。 +2. 机加已排产日期筛选。 +3. 机加已排产历史工时弹窗。 +4. 生产工艺自动带出标准工艺。 +5. 工时报表指派对象。 +6. 小字段:备注、提示、流转卡原料编码。 + +交付标准: + +- 页面可查询。 +- 数据字段正确。 +- 导出同步。 +- 不影响现有流程。 + +### 31.2 第二阶段:装配已排产专项 + +1. 建装配扩展表。 +2. 做主查询页面。 +3. 加系统/非系统筛选。 +4. 接派工时间、合同交货期、发料齐套时间。 +5. 做装配完成时间和人工维护。 +6. 做当前人员、当前内容、历史说明。 +7. 接工时汇总和明细。 +8. 接异常明细。 +9. 做日计划导出打印。 +10. 派生质检任务早知道。 + +交付标准: + +- 主表字段完整。 +- 人工维护有日志。 +- 工时可钻取。 +- 日计划可导出/打印。 + +### 31.3 第三阶段:质量和齐套报表 + +1. 及时检验报表。 +2. 生产日报-送检。 +3. 及时齐套跟踪结果报表。 +4. 让步接收记录。 +5. 外协任务检验字段补充。 +6. 产品合格率。 + +交付标准: + +- 每个报表有明确口径。 +- 可导出。 +- 可钻明细。 +- SAP 来源显示同步时间。 + +### 31.4 第四阶段:流程增强 + +1. 异常管控统一入口。 +2. 生产订单批量关闭 SAP。 +3. 手续确认报表。 +4. 编程任务报工。 +5. 设计任务报工。 + +交付标准: + +- 写操作有确认。 +- 批量结果逐条返回。 +- 异常审批人多选可见,一人处理。 +- 工时进入统一工时视图。 + +### 31.5 第五阶段:设备采集和大屏 + +1. 设备档案字段。 +2. 设备采集原始数据和任务绑定。 +3. OEE 指标明细。 +4. 工时异常报表。 +5. 质检、机加、装配现场大屏。 + +交付标准: + +- 设备采集有原始数据和汇总数据。 +- OEE 可下钻。 +- 大屏指标无占位数据。 +- 缺勤有排班/实到来源。 + +## 32. 测试清单 + +### 32.1 页面测试 + +每个页面至少测试: + +- 查询为空。 +- 单条件查询。 +- 多条件组合查询。 +- 日期边界。 +- 分页。 +- 导出。 +- 弹窗打开关闭。 +- 保存成功。 +- 保存失败。 +- 无权限访问。 + +### 32.2 数据测试 + +重点验证: + +- 工时汇总和明细一致。 +- 日期筛选包含当天 00:00:00 到 23:59:59。 +- 已关闭/已入库/已完成任务是否正确排除。 +- SAP 字段为空时页面不报错。 +- 多人员当前任务合并显示正确。 +- 班次跨天统计正确。 + +### 32.3 性能测试 + +重点过程: + +- 装配已排产需求主查询。 +- 及时齐套跟踪主表。 +- 机加班次产量表。 +- 及时检验报表。 +- 大屏过程。 + +要求: + +- 普通报表分页查询 3 秒内返回。 +- 大屏过程 2 秒内返回。 +- 导出可慢,但必须有 loading。 + +### 32.4 回归测试 + +必须回归: + +- 机加排产。 +- 装配排产。 +- 加工中心报工。 +- 装配中心报工。 +- 质检收检。 +- 外协收检。 +- 工时统计。 +- 生产计划跟踪。 +- 看板刷新。 + +## 33. 风险和处理 + +| 风险 | 处理 | +|---|---| +| SAP 字段未到 | 页面字段先预留,显示空;存储过程字段从扩展表读取 | +| 发料齐套时间口径不稳 | 标记来源字段:SAP/MES/人工 | +| 设计工时依赖设计任务模块 | 装配已排产先显示装配/质量,设计为 0,模块完成后接入 | +| 设备采集不稳定 | OEE 和工时异常先用人工工时降级口径,并标记数据来源 | +| 缺勤无排班来源 | 不做缺勤正式统计,只做排班来源确认或新增排班表 | +| 动态 SQL 注入风险 | 新增过程尽量参数化 | +| 历史数据为空 | 字段允许 NULL,页面显示 `--`,不强行补假数据 | + +## 34. 交付物 + +每个需求完成时至少交付: + +1. 前端页面或页面改造。 +2. SQL 增量脚本。 +3. 新增/修改存储过程。 +4. 菜单和权限配置说明。 +5. 测试数据和测试结果。 +6. 字段口径说明。 +7. 如涉及 SAP,提供 SAP 调用日志或同步状态。 + diff --git a/doc_old/新增需求分析与开发记录_2026-05-23.md b/doc_old/新增需求分析与开发记录_2026-05-23.md new file mode 100644 index 0000000..9312eb0 --- /dev/null +++ b/doc_old/新增需求分析与开发记录_2026-05-23.md @@ -0,0 +1,1555 @@ +# 新增需求分析与开发记录 + +生成日期:2026-05-23 +项目:MES_Manage_View_V20 +说明:本文档记录本次沟通确认的新需求、开发口径、依赖项、风险点和预估周期,仅作为后续开发和客户确认依据。 + +## 1. 机加件排产-表单日期筛选优化 + +页面:机加件已排产页面 +位置:`PlanManagement/SelfMakePlandone/index` +查询存储过程:`MES_OrderPlanned_Query` + +现状: +- `计划开始时间`、`计划完成时间` 当前为时间段筛选。 + +目标: +- `计划开始时间` 改为单日期选择。 +- `计划完成时间` 改为单日期选择。 +- 按自然日查询,不按具体时分秒查询。 + +查询口径: +- 选择某一天时,查询该日期 `00:00:00` 到 `23:59:59` 的数据。 +- 日期为空时,不参与过滤。 + +预估周期: +- 前端改造:0.5 天 +- SQL 改造:0.5 到 1 天 +- 联调:0.5 天 + +AI 关键记录: +- 不是区间查询。 +- 是两个单日期字段,分别按天过滤。 +- 不涉及 SAP 新字段,本期先不处理 SAP 字段。 + +## 2. 机加件已排产页面新增历史工时查询 + +页面:机加件已排产页面 +位置:`PlanManagement/SelfMakePlandone/index` +参考页面:`ProductionManagement/WorkhoursEdit/index` + +目标: +- 新增 `总工时` 字段。 +- 列表显示生产任务工时汇总数。 +- 点击 `总工时` 打开弹窗查看明细。 +- 明细按设备、日期分组显示生产任务,并展示工时合计。 + +展示结构: +- 设备 + - 日期 + - 任务明细 + +建议字段: +- 设备名称 +- 日期 +- 生产订单 +- 物料编码 +- 物料名称 +- 工序名称 +- 操作人 +- 开始时间 +- 结束时间 +- 工时 +- 工时小计 + +开发思路: +- 前端在已排产列表增加 `总工时` 列。 +- 点击列值打开弹框。 +- 后端新增或复用工时汇总查询,按设备、日期、任务聚合。 +- 前端只展示结果,不做复杂汇总计算。 + +预估周期: +- 前端列表和弹窗:1 天 +- SQL 汇总查询:1 到 2 天 +- 联调:0.5 天 + +AI 关键记录: +- 这是历史工时汇总弹窗,不是工时编辑页。 +- 总工时是汇总值,不是明细值。 +- 核心维度:设备 + 日期。 + +## 3. 生产计划跟踪 + +页面:生产计划跟踪 +当前查询:`生产管理_生产计划跟踪` + +目标: +1. 工艺路线内容在当前序中展示。 +2. 根据任务状态判断哪道序正在加工、哪些序等待加工。 +3. 工序文字根据状态变色。 +4. 进度显示: + - 正在加工:`打磨中` + - 已完成且下一序未开始:`打磨毕待淬火` +5. 增加 `标准工时` 字段。 +6. 增加 `订单状态` 字段。 + +已确认口径: +- 当前序不是只显示一个工序名,而是显示工艺路线内容。 +- 路线中括号内显示指派对象。 +- `外协` 也是指派对象的一种。 +- 示例:`打磨(张三) -> 淬火(外协)` + +展示规则: +- 正在加工的工序高亮显示。 +- 已完成工序根据下一道工序生成 `xxx毕待yyy`。 +- 未开始工序显示等待状态。 +- 最后一序完成后显示已完成。 + +开发思路: +- 后端返回完整工艺路线、工序顺序、指派对象、任务状态。 +- 前端按顺序生成路线显示和状态文案。 +- `标准工时`、`订单状态` 如果当前查询未返回,需要在 SQL 中补字段。 + +预估周期: +- 前端展示改造:1 到 2 天 +- SQL 字段补充:1 到 2 天 +- 联调:0.5 天 + +AI 关键记录: +- 重点是工序级路线展示,不是订单级单状态。 +- 括号显示指派对象。 +- 外协不特殊处理,作为指派对象展示。 + +## 4. 设计任务报工模块 + +页面:新增页面,建议名称 `设计任务报工` + +已确认口径: +- 设计任务没有订单。 +- 任务由 MES 自己创建。 +- 该模块只产生设计工时。 +- 不产生质量、装配、机加工时。 +- 质量、装配、机加工时各走各自模块。 +- 后续按系统管理角色管理中的角色功能区分权限。 + +功能建议: +- 设计任务创建。 +- 设计任务列表。 +- 开始报工。 +- 结束报工。 +- 填写工作内容、结束说明。 +- 工时记录。 +- 设计工时报表。 + +SAP 关系: +- 当前不强依赖 SAP。 +- 设计工时不上传 SAP。 +- 后续如需要,可增加关联字段或只读接口。 + +预估周期: +- 需求确认:1 天 +- 页面原型:1 天 +- 前端和接口:2 到 4 天 +- 联调:1 天 + +AI 关键记录: +- 设计任务是 MES 自建任务。 +- 工时范围只包含设计。 +- 权限后续按角色功能控制。 + +## 5. 机加班次产量表 + +页面:新增页面,建议名称 `机加班次产量表` + +目标: +- 查看每天每台设备每班次干了什么活。 +- 按设备分组。 +- 按日期分组。 +- 日期下面展示任务明细。 + +展示结构: +- 设备 + - 日期 + - 任务明细 + +建议筛选: +- 日期 +- 班次 +- 设备 +- 操作人 + +建议字段: +- 设备名称 +- 日期 +- 班次 +- 生产订单 +- 物料编码 +- 物料名称 +- 工序名称 +- 开始时间 +- 结束时间 +- 工时 +- 数量 +- 操作人 + +开发思路: +- 新增报表页。 +- 后端按设备、日期、班次聚合。 +- 明细展示任务。 +- 增加设备日合计、班次合计。 + +预估周期: +- 查询口径确认:0.5 天 +- SQL/接口:1 到 2 天 +- 前端分组展示:1 天 +- 联调:0.5 天 + +AI 关键记录: +- 分组口径:设备 -> 日期 -> 任务。 +- 这是新报表,不是报工页面。 + +## 6. 外协任务检验 / 序检收检 + +页面:序检收检相关页面 + +目标: +- 外协任务检验记录中增加: + - 指派对象 + - 供应商 + - SAP 采购收货单号 +- 后续报表根据新增字段调整计算方式。 + +现状问题: +- 当前检验记录主要记录工序。 +- 目前没有记录设备。 +- 因此设备合格率暂时无法准确计算。 +- 外协供应商合格率也需要补供应商字段后才能计算。 + +建议方案: +- 先增强序检收检记录。 +- 把指派对象、供应商、SAP 采购收货单号落表。 +- 报表按新增字段调整统计。 +- 设备合格率列为后续扩展项,除非补设备字段。 + +预估周期: +- 字段补充和页面改造:1 到 2 天 +- 报表口径调整:1 到 2 天 +- 联调:0.5 天 + +AI 关键记录: +- 当前无设备字段,设备合格率本期不可承诺。 +- 供应商合格率依赖新增供应商字段。 + +## 7. 手续确认报表 + +页面:新增页面,名称 `手续确认报表` + +目标: +- 装配、电气发料齐套时间列表合并显示。 +- 显示内容参考装配中心。 +- 新增字段 `手续确认`。 +- 用户点击选择 `已完成`。 + +消失条件: +- `手续确认 = 已完成` +- 生产订单取消 +- 生产订单关闭 +- 整单已入库 + +已确认口径: +- 入库判定使用整单已入库状态。 +- 订单取消/关闭来源于 SAP 订单状态同步。 +- 装配、电气两个报表合并显示。 + +开发思路: +- 新增报表页面。 +- 后端查询只返回待确认数据。 +- 新增手续确认保存接口。 +- 消失规则放在 SQL 层处理。 + +预估周期: +- SQL/接口:1 到 2 天 +- 前端页面:1 天 +- 联调:0.5 天 + +AI 关键记录: +- 这是待办类报表。 +- 只显示还需要手续确认的数据。 +- 已完成、取消、关闭、整单已入库都会消失。 + +## 8. 及时检验报表 + +页面:新增页面,名称 `及时检验报表` + +目标: +- 生产报工完成后超过 2 天仍未检验的任务要显示出来。 + +已确认口径: +- 起算表:`YL_加工中心_操作记录表` +- 过滤条件: + - `操作类别 = 报工` + - `操作数值 > 0` +- 起算时间: + - 使用报工记录的 `结束时间` + +判定逻辑: +- 报工记录满足 `操作类别 = 报工` 且 `操作数值 > 0`。 +- `结束时间 < DATEADD(DAY, -2, GETDATE())`。 +- 该任务无检验记录,或检验数量不足。 +- 则进入报表。 + +建议字段: +- 生产订单 +- 物料编码 +- 物料名称 +- 工序名称 +- 指派对象 +- 报工数量 +- 已检数量 +- 未检数量 +- 报工结束时间 +- 超期天数 + +预估周期: +- SQL/口径确认:1 天 +- 后端查询:1 到 2 天 +- 前端页面:1 天 +- 联调:0.5 天 + +AI 关键记录: +- 不是所有未检验任务。 +- 是报工完成超过 2 天未检验。 +- 起算时间为操作记录表的结束时间。 + +## 9. 及时齐套跟踪结果报表 + +页面:新增页面,名称 `及时齐套跟踪结果报表` + +目标: +- 参考客户图片新增报表。 +- 主表展示齐套跟踪信息。 +- 点击展开显示缺件明细。 +- 缺件明细为 SAP 实时数据。 +- 用生产订单号查询 SAP 加急件/缺件明细。 +- 缺料物料的生产订单号绑定主生产订单号。 +- 一个主生产订单可包含多个缺料生产订单。 + +缺件明细建议字段: +- 物料编码 +- 物料名称 +- 缺件数量 +- 属性:外购 / 自制 +- 对应单据号 +- 当前进度 +- 全序展示 +- 单条预计完成时间 +- 预计可执行时间 + +字段来源: +- 缺件明细:SAP 实时查询。 +- 外购对应单据:采购订单号,来源 SAP。 +- 自制对应单据:生产订单号,来源 MES 或 SAP 同步。 +- 预计可执行时间:手工维护。 + +开发思路: +- 主表加载时不直接查所有 SAP 明细。 +- 点击展开时按生产订单号实时查询 SAP。 +- 建立主生产订单号与缺料生产订单号的一对多关系。 +- 支持后续导出。 + +预估周期: +- SAP 字段/接口确认:1 天 +- SQL/接口设计:1 到 2 天 +- 前端主表和展开明细:1 到 2 天 +- 联调:1 天 + +AI 关键记录: +- 展开行显示缺件明细。 +- 缺件明细来源 SAP 实时数据。 +- 主订单与缺料生产订单是一对多。 + +## 10. 生产日报-送检 + +页面:新增或扩展报表 + +范围: +- 生产日报-送检(机加) +- 生产日报-送检(装配) + +目标: +- 后续可能按多个部门出多个报表。 +- 建议先做统一数据模型,部门作为维度。 + +建议方案: +- 一个页面两个页签: + - 机加送检日报 + - 装配送检日报 +- 两个页签均支持部门筛选。 +- 后续客户要求独立菜单时再拆。 + +建议字段: +- 日期 +- 部门 +- 生产订单 +- 物料编码 +- 物料名称 +- 工序名称 +- 送检数量 +- 已检数量 +- 合格数量 +- 不合格数量 +- 送检时间 +- 检验时间 +- 状态 + +风险点: +- 部门归属口径需要确认: + - 按操作人部门 + - 按工位部门 + - 按任务归属部门 + - 按物料/订单类型部门 + +预估周期: +- 口径确认:0.5 到 1 天 +- SQL/接口:1 到 2 天 +- 前端报表:1 天 +- 联调:0.5 天 + +AI 关键记录: +- 不建议写死多个部门报表。 +- 部门作为维度,后续可拆。 + +## 11. 编程任务清单 / 编程报工 + +页面:新增页面,建议名称 `编程任务清单` 或 `编程报工` + +需求理解: +- 不是普通设备任务列表。 +- 本质是编程报工。 +- 展示和操作流程参考装配中心。 + +功能建议: +- 编程任务列表。 +- 按设备/工位筛选。 +- 开始编程。 +- 结束编程。 +- 填写编程内容/说明。 +- 记录人员、开始时间、结束时间、工时。 + +数据建议: +- 编程任务表。 +- 编程报工记录表。 +- 或在操作记录中新增编程相关操作类别。 +- 若后续独立统计,建议单独建表。 + +待确认: +- 编程任务来源: + - 生产订单自动生成 + - 人工创建 + - 从设备任务筛出 +- 是否允许多人同时编程一个任务。 +- 编程完成后是否影响生产任务状态。 + +预估周期: +- 需求口径确认:0.5 到 1 天 +- SQL/表结构/接口:1 到 2 天 +- 前端页面:1 到 2 天 +- 联调:0.5 天 + +AI 关键记录: +- 本质是编程报工。 +- 不混入装配或机加工时。 +- 工时建议独立存储。 + +## 12. 生产订单关闭批量更新 SAP 状态 + +页面:生产订单关闭 + +目标: +- 新增批量更新 SAP 订单状态功能。 + +方案: +- 表格支持多选。 +- 新增按钮 `批量关闭SAP订单`。 +- 批量操作前后端都必须校验。 +- 逐单调用 SAP 关闭接口。 +- 返回每条成功/失败原因。 +- 记录操作日志。 + +风险点: +- SAP 写操作风险高。 +- 必须二次确认。 +- 必须支持部分成功、部分失败。 +- 失败项可重试。 + +预估周期: +- 前端批量选择与结果弹窗:0.5 到 1 天 +- 后端批量接口:1 到 2 天 +- SAP 联调:1 天 +- 测试与异常处理:0.5 到 1 天 + +AI 关键记录: +- 建议逐单执行,不建议一条失败全批失败。 +- 必须记录实际操作结果。 + +## 13. 生产工艺编辑自动带出标准工艺 + +页面:生产工艺 + +目标: +- 点击编辑时,如果没有生产工艺,自动带出标准工艺。 + +方案: +- 点击编辑先查询是否已有生产工艺。 +- 有则正常编辑。 +- 没有则按物料编码查询标准工艺。 +- 标准工艺带入为草稿。 +- 用户保存后才正式写入生产工艺。 +- 没有标准工艺时提示。 + +风险点: +- 标准工艺和生产工艺字段映射需要确认。 +- 自动带出不应自动落库。 +- 已生成生产工艺不建议再随标准工艺自动变化。 + +预估周期: +- 前端判断与带出:0.5 到 1 天 +- SQL/接口:1 天 +- 联调:0.5 天 + +AI 关键记录: +- 自动带出草稿,不自动保存。 +- 有生产工艺则不覆盖。 + +## 14. 异常管控 + +页面:异常管控 + 全部报工页面 + +目标: +- 所有报工页面选中任务后可直接报异常。 +- 异常提报时审批人多选。 +- 多个审批人中一人处理即可。 +- 被选中的其他审批人也可以看到任务。 +- 审批人可能是任意人员,不限制部门、角色或组织层级。 + +方案: +- 所有报工页面增加 `报异常` 入口。 +- 选中任务后自动带出任务信息。 +- 异常弹窗填写异常类型、说明、附件、审批人。 +- 审批人支持多选。 +- 任一审批人处理后,该异常进入下一状态。 +- 记录实际处理人。 + +预估周期: +- 全部报工页入口改造:1 到 2 天 +- 异常提报弹窗和接口:1 天 +- 多审批人表结构/查询逻辑:1 到 2 天 +- 待办可见和处理逻辑:1 天 +- 联调:0.5 到 1 天 + +AI 关键记录: +- 多审批人不是会签。 +- 是多人可见,一人处理。 +- 审批人可为任意人员。 +- 全部报工页面都要加入口。 + +## 15. 及时开工报表 + +页面:及时开工报表 + +真实需求: +- 指派对象查询条件支持正选和反选。 +- 不是重做及时开工算法。 + +方案: +- 增加 `指派对象查询模式`。 +- 选项: + - 包含 + - 排除 +- 指派对象支持多选。 +- 正选:`指派对象 IN (...)` +- 反选:`指派对象 NOT IN (...)` +- 原及时开工业务逻辑不变。 + +预估周期: +- 前端筛选控件:0.5 天 +- SQL 参数调整:0.5 到 1 天 +- 联调:0.5 天 + +AI 关键记录: +- 问题是指派对象过滤方式。 +- 保留旧逻辑为默认模式。 + +## 16. 让步接收记录 + +页面:新增页面,名称 `让步接收记录` + +目标: +- 查询质检记录中 `让步接收` 字段不为 NULL 的所有数据。 + +方案: +- 新增查询页面。 +- 默认条件:`让步接收 IS NOT NULL`。 +- 支持生产订单、物料、检验时间、检验人等筛选。 +- 支持详情和导出。 + +预估周期: +- SQL 查询:0.5 到 1 天 +- 前端页面:0.5 到 1 天 +- 联调:0.5 天 + +AI 关键记录: +- 这是记录查询页,不是审批页。 +- 默认只查让步接收字段不为空的数据。 + +## 17. 装配已排产需求 + +页面:新增页面,名称 `装配已排产需求` + +总体定位: +- 独立子项目。 +- 基于装配已排产数据。 +- 整合 SAP 字段、MES 报工、工时、异常、齐套时间、日计划。 + +已确认口径: +- 系统/非系统分类按物料名称关键字判断。 +- 系统:高压冷却相关物料。 +- 非系统:除高压冷却之外的阀类物料。 +- 装配完成时间 = 发料齐套时间 + 3 天。 +- 发料齐套时间来源:生产计划表发料齐套时间字段。 +- 当前发料齐套时间字段还没有,等待 SAP 或通过逻辑判断获取。 +- 手工维护字段放在生产计划表。 +- 装配工时来源:装配报工记录。 +- 质量工时来源:质检报工。 +- 设计工时来源:新设计任务报工模块。 +- 合同工时汇总:按合同号汇总该合同下所有生产订单。 +- 合同进度参考公式:累计工时 / 预计总工时。 +- 当前对应人员:多人开始未结束时显示多人。 +- 当前对应内容:目前无字段,需要新增开发。 +- 异常按生产订单关联。 +- 日计划按装配完成时间生成。 + +新增字段: +- 发料齐套时间 +- 装配完成时间 +- 派工时间,SAP 提供 +- 合同交货期,SAP 提供 +- 钣金预达 +- 钣金到达 +- 泵 +- 当前对应人员 +- 当前对应内容 +- 生产订单累计工时 +- 历史工序说明 +- 预计总工时 +- 合同工时汇总 +- 合同进度参考 +- 预计剩余工时 +- 生产异常 + +装配完成时间: +- 发料齐套时间 + 3 天。 +- 可人工修改。 +- 建议记录修改人、修改时间、原值、新值。 + +当前对应人员: +- 来源于装配开始后未结束的报工记录。 +- 多人显示人名和开始时间。 + +当前对应内容: +- 来源于装配开始时输入的工作内容。 +- 当前系统没有字段,需要新增。 + +工时: +- 生产订单累计工时按生产订单汇总。 +- 合同工时按合同号汇总该合同下所有生产订单。 +- 工时分类:装配、质量、设计。 +- 支持查看明细。 + +日计划: +- 按装配完成时间生成。 +- 支持导出、打印。 + +开发阶段建议: +- 第一阶段:基础页面、系统/非系统筛选、派工时间、合同交货期、发料齐套、装配完成时间。 +- 第二阶段:手工维护字段。 +- 第三阶段:当前人员、当前内容、历史工序说明。 +- 第四阶段:工时汇总和明细。 +- 第五阶段:异常关联、日计划、导出打印。 + +预估周期: +- 需求字段确认:1 到 2 天 +- 基础页面和主查询:2 到 3 天 +- 手工维护字段:1 到 2 天 +- 人员/内容/历史说明:1 到 2 天 +- 工时汇总和明细:2 到 3 天 +- 异常关联:1 天 +- 日计划导出打印:1 到 2 天 +- 联调测试:2 天 + +整体预估:10 到 15 个工作日。 + +AI 关键记录: +- 这是独立子项目。 +- 最关键前置依赖是发料齐套时间字段。 +- 设计工时依赖设计任务报工模块。 +- 当前对应内容需要改装配开始流程。 + +## 18. 质检任务早知道 + +页面:新增页面,名称 `质检任务早知道` + +目标: +- 根据装配已排产需求页面的数据生成。 +- 根据装配完成时间分组。 +- 去掉已完成任务。 +- 给质检提前查看未来需要检验的装配任务。 + +数据来源: +- 装配已排产需求。 + +过滤规则: +- 排除已完成任务。 +- 建议同时排除已入库、关闭、取消任务。 + +展示方式: +- 按装配完成时间分组。 +- 每个日期下显示待质检任务。 + +依赖: +- 装配已排产需求页面先完成。 +- 装配完成时间字段必须可用。 + +预估周期: +- 装配已排产需求完成后:1 到 2 天。 +- 不建议独立先做。 + +AI 关键记录: +- 这是质检预告页,不是实际质检记录页。 +- 强依赖装配已排产需求。 +- 分组字段是装配完成时间。 + +## 总体开发顺序建议 + +优先级建议: + +1. 低风险页面增强: + - 机加件已排产日期筛选 + - 生产工艺自动带出标准工艺 + - 让步接收记录 + - 及时开工报表指派对象正反选 + +2. 报表类: + - 及时检验报表 + - 机加班次产量表 + - 生产日报-送检 + - 手续确认报表 + +3. 流程增强: + - 异常管控直接报异常 + - 外协任务检验字段补充 + - 生产订单批量关闭 SAP 状态 + +4. 新模块: + - 设计任务报工 + - 编程报工 + +5. 大型专项: + - 装配已排产需求 + - 质检任务早知道 + - 及时齐套跟踪结果报表 + +主要风险: +- SAP 字段和接口未完全就绪。 +- 发料齐套时间字段未落地。 +- 设计任务报工会影响后续设计工时汇总。 +- 装配已排产需求字段多、依赖多,应单独排期。 +- SAP 写操作类需求必须严格校验和记录日志。 + +## 开发实施总流程 + +如果后续由我实际修改这些需求,整体会按下面流程推进,避免直接改页面导致口径不一致。 + +1. 定位菜单和页面 + - 先按中文页面名到数据库表 `登录基础数据_二级菜单` 中确认菜单名称、路径、组件地址。 + - 再到前端 `src/views` 下定位 Vue 文件。 + - 如果是新增页面,需要同步规划菜单记录、组件路径、权限角色。 + +2. 定位现有查询和保存接口 + - 在页面中查找 `CreateData(...)` 调用。 + - 确认当前使用的存储过程名称。 + - 到 `script.sql` 中找到对应存储过程、表、视图。 + - 判断是改现有存储过程,还是新增存储过程更合适。 + +3. 先定数据口径 + - 明确字段来源:MES、SAP、手工维护、设备采集。 + - 明确状态口径:已完成、已关闭、已入库、已检验、已报工。 + - 明确计算口径:工时合计、进度、超期天数、合格率。 + - 对无法确定的字段,不直接写死逻辑,优先标记为待确认或预留字段。 + +4. 后端优先 + - 先改 SQL 查询或保存逻辑。 + - 对新增字段先补表结构或扩展表。 + - 对报表类需求,优先让 SQL 返回前端可直接展示的数据。 + - 前端不承担复杂业务汇总,避免后续统计口径分散。 + +5. 前端改造 + - 保持现有 Element UI 和项目写法。 + - 查询条件、表格列、弹窗、导出打印按现有页面风格实现。 + - 对大数据明细采用点击展开或弹窗按需加载。 + - 不影响原流程的地方,优先做新增入口,不覆盖旧入口。 + +6. 权限和菜单 + - 新增页面需要补 `登录基础数据_二级菜单` 菜单记录。 + - 需要确认角色权限。 + - 报工、异常、SAP 写操作类按钮要特别确认权限。 + +7. 测试和验收 + - 每条需求至少准备正常数据、边界数据、空数据。 + - 报表类核对 SQL 汇总值和页面展示值。 + - SAP 写操作类必须测试成功、失败、重复执行、部分失败。 + - 最终执行构建并记录影响范围。 + +## 开发分类思路 + +字段新增类: +- 先确认字段放现有表还是扩展表。 +- 小字段优先跟随业务主表,例如备注、提示信息、手工维护字段。 +- 字段新增后同步改查询、保存、导出、打印。 + +报表新增类: +- 优先新增独立查询存储过程。 +- 页面只负责筛选、展示、导出。 +- 统计口径放 SQL,方便客户核对。 + +流程增强类: +- 尽量保留原入口。 +- 新增快捷入口或新增状态字段。 +- 涉及审批、SAP、工时的流程必须记录操作日志。 + +SAP 依赖类: +- 先确认 SAP 字段、接口、返回示例。 +- 只读查询和写入更新分开设计。 +- 写 SAP 的需求必须做后端二次校验和失败记录。 + +暂无法修改类: +- 不是技术上永远不能改,而是当前业务规则或数据源未定。 +- 先记录为暂缓,不进入开发排期。 +- 等客户或 SAP/设备数据确认后再重新评估。 + +## 19. 工艺内容修改 + +页面:工艺内容修改 + +需求: +- 需要修改工艺。 +- 重点争议:已开工任务如何处理。 + +当前结论: +- 本期无法修改。 +- 尤其已开工任务涉及已排产、已开工、已报工、质检、工时统计等链路。 +- 如果直接修改历史工艺,会导致任务执行记录和原工艺不一致。 + +如果后续要做,建议流程: +1. 未开工任务允许修改生产工艺。 +2. 已开工任务不直接覆盖原工艺。 +3. 已开工任务如必须变更,应生成工艺变更记录或新版本工艺。 +4. 已报工任务保留原工艺快照。 +5. 报表按任务实际执行工艺统计,不按最新工艺覆盖。 + +本期处理: +- 暂不开发。 +- 作为待讨论需求记录。 + +预估周期: +- 暂无法排期。 + +AI 关键记录: +- 已开工任务不建议直接改工艺。 +- 需要先定工艺版本和历史快照规则。 + +## 20. 工序流转卡 + +页面:工序流转卡 + +需求: +- 打印信息增加原料编码。 + +开发思路: +1. 找到工序流转卡打印页面和打印模板。 +2. 找到当前打印数据来源。 +3. 在查询中补充原料编码字段。 +4. 打印模板增加原料编码显示。 +5. 打印预览确认字段位置和换行。 + +影响范围: +- 查询 SQL。 +- 打印模板。 + +预估周期: +- 0.2 天。 + +AI 关键记录: +- 小改动。 +- 重点确认原料编码字段来源。 + +## 21. 工时报表 + +页面:工时报表 + +需求 1: +- 作业者工时新增指派对象字段。 + +开发思路: +1. 定位作业者工时报表页面。 +2. 定位当前查询存储过程。 +3. 查询结果中增加指派对象字段。 +4. 前端表格增加列。 +5. 如有导出,同步增加导出列。 + +预估周期: +- 0.1 天。 + +需求 2: +- 作业者工时一对多问题。 +- 需要在报工结束后直接计算。 +- 上版本报工是计算的,现在不计算。 + +当前结论: +- 本期无法修改。 + +原因: +- 该问题涉及报工结束时的工时分摊和一对多计算规则。 +- 当前版本已经改变了计算口径。 +- 如果没有明确恢复规则,直接改会影响历史工时报表、SAP 工时上传、工时校验。 + +后续如要做,需确认: +- 一对多是一个人对应多个任务,还是一个任务对应多人。 +- 工时按人数均分、按任务数均分,还是按实际开始结束时间计算。 +- 是否需要重算历史数据。 +- 是否影响 SAP 上传。 + +AI 关键记录: +- 指派对象字段可快速加。 +- 一对多工时计算暂不改,需重新确认计算规则。 + +## 22. 工时查询 + +页面:工时查询 + +需求: +- 程序工时字段需要跟设备数据采集计算。 +- 后续可能新增其他设备信息。 + +当前结论: +- 等待设备数据采集。 + +原因: +- 程序工时不能靠 MES 页面单独计算。 +- 必须依赖设备采集数据,包括设备号、运行开始、运行结束、程序号、循环时间等。 + +后续开发思路: +1. 明确设备采集表或接口。 +2. 确认设备数据与 MES 任务的关联字段。 +3. 按设备、时间段、任务计算程序工时。 +4. 工时查询页面增加程序工时字段。 +5. 如果新增设备信息,建议走设备数据扩展表。 + +预估周期: +- 等设备数据采集确认后再评估。 + +AI 关键记录: +- 当前不能开发完整程序工时。 +- 前置依赖是设备数据采集。 + +## 23. 生产领料补充-机加 + +页面:生产领料(机加) + +需求: +- 领料单增加备注字段。 + +开发思路: +1. 定位机加生产领料页面。 +2. 找到领料保存存储过程。 +3. 领料单表增加备注字段,或确认已有备注字段。 +4. 前端表单增加备注输入。 +5. 列表、详情、打印如有需要同步展示。 + +预估周期: +- 0.2 天。 + +AI 关键记录: +- 小字段补充。 +- 需要同步保存和查询。 + +## 24. 生产退库-机加 + +页面:生产退库(机加) + +需求: +- 添加备注字段。 +- 按照装配退库方式修改。 + +开发思路: +1. 对比装配退库备注实现。 +2. 机加退库表或保存接口增加备注字段。 +3. 前端退库弹窗增加备注。 +4. 查询、打印同步展示备注。 + +预估周期: +- 0.2 天。 + +AI 关键记录: +- 参考装配退库,不单独设计新口径。 + +## 25. 外协任务报表(采购) + +页面:外协任务报表(采购) + +需求: +- 增加字段:采购到货期说明。 + +开发思路: +1. 定位外协任务报表页面。 +2. 定位报表查询存储过程或视图。 +3. 确认采购到货期说明来源。 +4. 查询结果增加字段。 +5. 前端表格增加列。 +6. 导出同步增加列。 + +预估周期: +- 0.1 天。 + +AI 关键记录: +- 字段展示类需求。 +- 关键是确认字段来源,若 SAP 已有则直接关联。 + +## 26. 生产退库-装配 + +页面:生产退库(装配) + +需求: +- 无备注字段,需要增加。 + +开发思路: +1. 定位装配退库保存逻辑。 +2. 表结构或扩展字段增加备注。 +3. 退库弹窗增加备注输入。 +4. 查询、详情、打印同步展示。 + +预估周期: +- 0.1 天。 + +AI 关键记录: +- 小字段补充。 +- 如果机加和装配退库共用接口,可一起处理。 + +## 27. 及时送检报表 + +页面:新增或扩展页面,名称 `及时送检报表` + +需求: +- 新需求。 +- 依赖发料齐套时间。 +- 当前 SAP 数据已到。 + +目标: +- 根据发料齐套时间判断是否及时送检。 +- 展示未及时送检或送检滞后的任务。 + +开发思路: +1. 确认 SAP 发料齐套时间字段已经同步到 MES 哪张表。 +2. 确认送检时间来源。 +3. SQL 计算发料齐套时间到送检时间的间隔。 +4. 定义超期规则。 +5. 页面展示超期任务。 + +建议字段: +- 生产订单 +- 物料编码 +- 物料名称 +- 发料齐套时间 +- 送检时间 +- 送检数量 +- 超期时长 +- 当前状态 + +预估周期: +- 0.5 天。 + +AI 关键记录: +- SAP 数据已到,可以进入开发。 +- 关键是确认字段落库位置和超期规则。 + +## 28. 标牌打印操作 + +页面:标牌打印操作 + +需求: +- 需求未确定。 + +当前结论: +- 暂不开发。 + +后续需要确认: +- 打印触发点。 +- 标牌模板。 +- 打印字段。 +- 是否支持补打。 +- 是否记录打印次数和打印人。 + +预估周期: +- 暂无法排期。 + +AI 关键记录: +- 需求不明确,不进入开发。 + +## 29. 发货通知列表 + +页面:新增页面,名称 `发货通知列表` + +需求: +- SAP 已提供数据。 +- 大屏已显示。 +- 需要新增报表。 + +开发思路: +1. 复用大屏已有数据来源。 +2. 新增普通报表页面。 +3. 增加查询条件:销售订单、客户、发货日期、发货状态、物料编码。 +4. 表格展示发货通知明细。 +5. 支持导出。 + +建议字段: +- 销售订单 +- 客户 +- 物料编码 +- 物料名称 +- 发货数量 +- 要求发货日期 +- 发货通知状态 +- SAP 单据号 + +预估周期: +- 0.5 天。 + +AI 关键记录: +- 数据源已存在,重点是从大屏改为报表查询。 + +## 30. 制定标准工艺 + +页面:制定标准工艺 + +需求: +- 点击保存时增加提示信息。 + +开发思路: +1. 定位保存按钮和保存接口。 +2. 保存前做必要校验提示。 +3. 保存成功显示成功提示。 +4. 保存失败显示后端返回原因。 +5. 避免无响应或提示不明确。 + +预估周期: +- 0.1 天。 + +AI 关键记录: +- 前端提示优化。 +- 不涉及复杂业务逻辑。 + +## 31. 设备数据采集与大屏指标需求 + +本次补充需求不是单个页面小改,而是“设备档案 + 设备采集 + 产能/OEE 指标 + 工时异常 + 条码拣配 + 现场大屏”的一组联动需求。它会影响设备管理、工艺标准工时、生产报工、质检、拣配、机加/装配现场看板和综合大屏。 + +### 31.1 设备档案管理 + +页面:设备档案/设备管理相关页面 +关联页面线索:`DeviceManagement/DeviceInformation`、`SystemMaintenance/WorkstationManagement`、设备工位绑定相关页面 + +需求: +- 维护设备档案。 +- 设备档案中需要标记“主要设备”。 +- 设备档案或设备工艺能力中需要维护标准工时相关字段。 +- 后续设备采集、设备利用率、OEE、设备异常报表都以设备档案为基础。 + +建议字段: +- 设备编号/设备名称 +- 工位编号/工位名称 +- 设备类型 +- 是否主要设备 +- 设备状态采集点位 +- 程序工时采集点位 +- 标准工时来源 +- 标准单件工时 +- 计划产量来源 +- 是否参与 OEE + +开发思路: +1. 梳理现有设备档案表、工位表、设备工位人员视图。 +2. 确认标准工时放在设备档案、工艺路线,还是设备+工序能力表。 +3. “主要设备”建议独立字段,不能只靠设备名称判断。 +4. OEE 只统计参与 OEE 的主要设备,避免普通辅助设备拉低指标。 + +风险点: +- 如果标准工时只放在工艺里,设备利用率无法按单台设备准确计算。 +- 如果标准工时只放在设备档案里,同一设备加工不同零件时又会失真。 +- 更稳妥的口径是:设备档案负责“是否主要设备、是否采集、是否参与 OEE”,工艺/设备能力表负责“标准单件工时”。 + +预估周期: +- 字段梳理和表结构确认:0.5 到 1 天 +- 页面字段改造:0.5 到 1 天 +- 联调:0.5 天 + +### 31.2 设备数据采集 + +页面/模块:设备数据采集、设备状态监控、设备历史数据 +现有对象线索:`CaChe_Var`、`历史_设备数据_定时`、`历史_工位设备状态每分钟记录`、`YL_设备管理_工时记录`、`设备管理_设备状态_查询` + +需求: +- 采集程序工时。 +- 采集单件工时。 +- 采集设备状态。 +- 采集数据后用于设备利用率、开动率、OEE、工时异常报表和现场大屏。 + +采集数据建议: +- 设备编号/工位号 +- 采集时间 +- 设备状态:运行、待机、报警、关机 +- 操作模式 +- 程序号 +- 循环时间 +- 程序开始时间 +- 程序结束时间 +- 当前加工数量 +- 当前任务或条码绑定信息 +- 采集来源和采集质量标识 + +关键口径: +- 程序工时:设备程序运行累计时间,不等于 MES 人工报工工时。 +- 单件工时:单件实际加工时间,优先由程序循环时间或“设备运行时间 / 实际产量”计算。 +- 设备状态:要有时间段,不只保存当前状态,否则无法算设备工时。 +- 设备工时:用于设备利用率时,应指设备处于运行/有效加工状态的累计时长。 + +开发思路: +1. 明确采集系统把数据写入 MES 表,还是 MES 定时读取设备/PLC/MQTT。 +2. 建采集原始表,保留原始点位值,不直接覆盖业务结果。 +3. 建设备状态分钟级/秒级汇总表,用于快速计算设备状态时长。 +4. 建设备任务绑定规则:设备采集数据如何关联 MES 任务。 +5. 建异常数据清洗规则:断点、重复、设备离线、跨班次、跨天。 + +预估周期: +- 采集字段和接口确认:1 到 2 天 +- 数据落库和历史汇总:2 到 4 天 +- 与 MES 任务关联:2 到 3 天 +- 看板联调:1 到 2 天 + +AI 关键记录: +- 设备采集必须先落原始数据,再计算指标。 +- 程序工时、设备工时、人工报工工时是三套口径,不能直接混用。 + +### 31.3 设备指标与 OEE 计算 + +目标:支持单台设备产能利用率、设备利用率、设备性能开动率、产品合格率、OEE。 + +公式: + +| 指标 | 公式 | 数据来源建议 | 说明 | +|---|---|---|---| +| 产能利用率(单台) | 实际产量 / 计划产量 * 100% | MES 报工数量或质检合格前产量 / 排产计划数量 | 计划产量必须按设备、日期、班次拆分 | +| 设备利用率(单台) | 设备工时 / 标准工时 | 设备采集运行时长 / 设备或工艺标准工时 | 标准工时要明确是班次标准工时、计划标准工时还是理论可用工时 | +| 设备性能开动率(单台) | 标准单件工时 / 实际单件工时 | 工艺标准单件工时 / 设备采集单件工时 | 实际单件工时异常时要剔除停机、等待、返工 | +| 产品合格率(工位) | 良品数 / 总产量 | 质检记录、报工良品/不良品 | 质检滞后时会导致当天合格率滞后 | +| 设备综合效率 OEE | 设备利用率 * 开动率 * 合格率 | 上面三项 | 三项必须同设备、同班次、同日期口径 | + +需要新增或确认的字段: +- 计划产量 +- 实际产量 +- 良品数 +- 不良品数 +- 标准单件工时 +- 实际单件工时 +- 设备运行工时 +- 标准工时 +- 统计日期 +- 班次 +- 设备/工位 + +开发风险: +- 如果实际产量来自报工、良品数来自质检,而质检跨天完成,则当天 OEE 会被低估。 +- 如果设备运行工时来自采集、计划产量来自排产,但任务没有绑定到设备,则单台设备产能利用率无法准确计算。 +- 如果标准工时来源不统一,设备利用率和性能开动率会互相冲突。 + +建议: +- 先做设备日/班次指标明细表,再做大屏汇总。 +- 看板显示的 OEE 必须能下钻到三个组成指标。 +- 每个指标保留计算口径说明,不要只显示百分比。 + +预估周期: +- 指标口径确认:1 天 +- SQL/视图/汇总表:2 到 4 天 +- 大屏对接:1 到 2 天 + +### 31.4 工时异常报表 + +页面:新增报表或工时查询扩展 + +需求: +- 单件工时大于标准工时,形成工时异常报表。 +- 报表用于发现设备、工序、人员、程序、物料导致的异常加工。 + +判断口径: +- 异常条件:`实际单件工时 > 标准单件工时`。 +- 实际单件工时建议优先来自设备采集;无采集时可用人工报工工时 / 完成数量作为降级口径。 +- 标准单件工时来自生产工艺或设备能力表。 + +建议字段: +- 设备/工位 +- 生产订单 +- 物料编码/名称 +- 工序名称 +- 指派对象 +- 操作人 +- 程序号 +- 标准单件工时 +- 实际单件工时 +- 超出时长 +- 超出比例 +- 开始时间/结束时间 +- 班次 +- 异常原因 + +开发思路: +1. 建单件工时明细视图。 +2. 计算标准与实际差异。 +3. 超出阈值的进入异常报表。 +4. 支持按设备、工位、人员、物料、工序、日期筛选。 +5. 如需闭环,增加异常确认人、确认时间、处理说明。 + +预估周期: +- 报表查询:1 到 2 天 +- 页面和导出:0.5 到 1 天 +- 异常确认闭环:另加 1 到 2 天 + +### 31.5 及时拣配(机加/装配) + +页面/模块:机加拣配、装配拣配、条码扫描 + +需求: +- 及时拣配(机加):条码 → MES。 +- 及时拣配(装配):条码 → MES。 + +业务含义: +- 扫描条码后,MES 要识别任务、物料、领料/发料状态、是否齐套、是否可开工。 +- 机加和装配都需要及时拣配,但拣配对象不同:机加更偏工序/零件加工前物料,装配更偏装配 BOM/缺件齐套。 + +建议流程: + +```mermaid +flowchart LR + A[扫描条码] --> B[解析条码] + B --> C[查 MES 任务/物料/BOM] + C --> D{是否匹配当前任务} + D -- 否 --> E[提示异常并记录] + D -- 是 --> F[更新拣配状态] + F --> G[判断齐套/缺件] + G --> H[反馈可开工或缺件清单] +``` + +需要确认: +- 条码代表物料、箱号、批次、生产订单,还是拣配单。 +- SAP 库存和 MES 拣配状态谁是主口径。 +- 拣配后是否自动改变 `拣配状态`、`齐套`、`发料状态`。 +- 机加和装配是否共用同一套拣配表。 + +预估周期: +- 条码规则确认:0.5 到 1 天 +- 机加拣配流程:1 到 2 天 +- 装配拣配流程:1 到 2 天 +- 与看板联动:0.5 到 1 天 + +### 31.6 一楼质检大屏幕 + +页面:质检任务看板/一楼质检大屏 + +需求: +- 质检及时率:报检任务超过 2 天未检验,时间基准取最后一次生产完成时间。 +- 关键工序检验任务汇总数和明细:工艺编辑时标记关键工序。 + +质检及时率口径: +- 应检任务:已有生产完成/报检触发的任务。 +- 超期任务:最后一次生产完成时间超过 2 天,仍未完成检验。 +- 已检任务:已存在对应质检记录且检验数量满足应检数量。 +- 及时率建议:及时检验任务数 / 应检任务数 * 100%。 + +关键工序需求: +- 工艺维护时增加“是否关键工序”字段。 +- 生产工艺生成任务时,要把关键工序标识快照到生产任务。 +- 质检大屏按关键工序标识统计应检/未检/已检/加急。 + +影响: +- `质量任务看板_未完成统计`、`质量任务看板_未完成明细查询` 需要补超期天数、最后生产完成时间、是否关键工序。 +- 若仅在工艺库改“关键工序”,历史任务是否跟着变,需要确认。建议任务下发时快照,不自动影响历史。 + +预估周期: +- 工艺字段和任务快照:1 到 2 天 +- 质检及时率过程:1 到 2 天 +- 大屏改造:1 天 + +### 31.7 机加现场大屏幕 + +页面:机加设备生产运营看板/机加现场大屏 + +需求: +- 缺勤人员:显示岗位、工位、姓名;一个人或一个岗位可能对应多个工位,需要合并显示。 +- 关键工序任务汇总数和明细:工艺编辑时标记关键工序。 + +缺勤人员口径: +- 应到人员:班次人员绑定表或岗位排班表。 +- 实到人员:打卡/登录/报工/绑定上岗记录,需要确认来源。 +- 缺勤:应到但无实到记录。 +- 展示:岗位、工位列表、姓名;多工位用逗号合并。 + +关键工序任务口径: +- 已排产且未完成的关键工序任务。 +- 可区分未开工、进行中、超期、加急。 +- 明细至少显示订单、合同、物料、工序、设备/工位、指派对象、计划开始、完成数量、上序合格数。 + +影响: +- `机加设备生产运营看板_机加在制查询2` 需要补关键工序标识。 +- 需要新增缺勤人员查询过程,不能继续使用静态示例数据。 + +预估周期: +- 缺勤来源确认:0.5 到 1 天 +- 缺勤查询过程和页面对接:1 天 +- 关键工序标识和大屏改造:1 到 2 天 + +### 31.8 装配现场大屏幕 + +页面:装配任务看板/装配现场大屏 + +需求: +- 缺勤人员:岗位、工位、姓名,一对多合并显示。 +- 及时送检任务列表:可与加急/任务列表合并,用颜色区分;排序在加急后;规则为发料齐套后 2 天未送检。 + +及时送检口径: +- 起算时间:发料齐套时间。 +- 超期规则:发料齐套后超过 2 天仍未送检。 +- 送检判断:是否存在送检/质检任务/质检记录,需要确认具体表。 +- 排序:加急任务优先,其次及时送检超期任务,再按计划开始或齐套时间排序。 + +影响: +- `装配中心任务看板_装配任务查询` 需要返回发料齐套时间、是否已送检、送检时间、超期天数。 +- `装配中心任务看板_在制品缺件查询` 和发货状态列表需要区分缺件、齐套未送检、已送检未检。 +- 装配缺勤人员不能再用静态样例,需要与班次/岗位/工位绑定联动。 + +预估周期: +- 发料齐套时间来源确认:0.5 天 +- 送检状态过程:1 到 2 天 +- 大屏颜色/排序改造:0.5 到 1 天 +- 缺勤人员对接:1 天 + +### 31.9 本组需求总风险 + +1. 设备数据采集是前置条件。没有稳定采集数据,程序工时、单件工时、设备利用率、OEE 都只能是估算。 +2. 标准工时来源必须统一。工艺标准工时、设备标准工时、班次标准工时不是同一件事。 +3. 质检及时率和产品合格率存在时间滞后。生产完成当天不一定当天质检,日报和大屏要明确口径。 +4. 关键工序标识要做任务快照。否则工艺维护改字段会影响历史统计。 +5. 缺勤人员必须有排班/应到和实到来源,不能只从当前报工人员反推。 +6. 条码拣配会反向影响 `齐套`、`拣配状态`、`发料状态`,必须同步改生产任务看板和装配看板。 + +## 32. 追加需求处理状态汇总 + +| 需求 | 处理状态 | 周期 | +|---|---|---| +| 工艺内容修改 | 暂不开发,待讨论已开工任务规则 | 无法排期 | +| 工序流转卡增加原料编码 | 可开发 | 0.2 天 | +| 作业者工时新增指派对象 | 可开发 | 0.1 天 | +| 作业者工时一对多计算 | 暂不开发,需重定计算规则 | 无法排期 | +| 程序工时与设备采集 | 等待设备数据采集 | 待评估 | +| 机加领料备注 | 可开发 | 0.2 天 | +| 机加退库备注 | 可开发 | 0.2 天 | +| 外协任务报表采购到货期说明 | 可开发 | 0.1 天 | +| 装配退库备注 | 可开发 | 0.1 天 | +| 及时送检报表 | SAP 数据已到,可开发 | 0.5 天 | +| 标牌打印操作 | 需求未确定 | 无法排期 | +| 发货通知列表 | SAP 数据已提供,可开发 | 0.5 天 | +| 制定标准工艺保存提示 | 可开发 | 0.1 天 | +| 设备档案管理-主要设备/标准工时 | 可开发,需先定字段归属 | 1.5 到 2.5 天 | +| 设备数据采集-程序工时/单件工时/设备状态 | 需先确认采集接口和落库表 | 待评估,预计 6 到 11 天 | +| 设备产能/OEE 指标 | 依赖设备采集和标准工时口径 | 4 到 7 天 | +| 工时异常报表 | 依赖单件工时和标准工时 | 1.5 到 3 天 | +| 及时拣配(机加/装配) | 需确认条码规则和状态写回 | 3 到 6 天 | +| 一楼质检大屏-及时率/关键工序 | 可开发,需补关键工序标识 | 3 到 5 天 | +| 机加现场大屏-缺勤/关键工序 | 可开发,需确认缺勤来源 | 2.5 到 4 天 | +| 装配现场大屏-缺勤/及时送检 | 可开发,需确认送检状态来源 | 3 到 5 天 | + +## 33. 补充修正:按“数据来源、维护入口、是否新建页面”重新复核 + +前面部分有些需求只写成“新增页面”或“页面改造”,这个口径还不够。后续评估必须先拆成三件事: + +1. 查询/看板页面:给谁看、按什么条件筛选、是否导出。 +2. 数据维护入口:这个字段由谁维护、在哪个业务页面维护、是否要留修改记录。 +3. 数据来源口径:来自 MES 业务表、SAP 同步、设备采集、人工维护、排班/考勤,还是计算结果。 + +原则: +- 报表类需求可以新建查询页,但不要把所有字段维护都放进报表页。 +- 主数据类字段优先放在主数据页面维护,例如人员、班次、工位、设备、工序、标准工艺。 +- 订单/任务过程字段优先放在生产计划、生产工艺、装配中心、机加中心、质检中心等业务页面维护。 +- 看板只展示和钻取,不作为唯一维护入口,除非需求明确就是现场确认动作。 +- 如果没有现成维护入口,才考虑新增维护页面,并同步菜单、权限、日志和历史记录。 + +### 33.1 逐项落点复核 + +| 需求/字段 | 数据来源建议 | 维护入口建议 | 是否新建页面 | 同步影响 | +|---|---|---|---|---| +| 缺勤人员 | 应到:班次/排班/岗位工位人员绑定;实到:考勤、上岗绑定、登录或报工记录 | 若已有班次管理、人员绑定、工位人员关系,则扩展这些页面;若没有排班入口,需要新增 `班次排班/人员出勤维护` 页面 | 看板查询过程要新增;维护页视现有排班能力决定 | 机加看板、装配看板、班次产量、人员绩效 | +| 关键工序 | 标准工艺/生产工艺中的工序标识,任务下发时快照到生产任务 | `制定标准工艺` 和 `生产工艺` 页面都要支持维护 `是否关键工序`;生产工艺可继承标准工艺但允许按订单调整 | 不建议单独新建“关键工序维护”页;可新增查询/批量检查页 | 质检看板、机加现场大屏、及时检验、生产计划跟踪 | +| 标准单件工时 | 标准工艺、生产工艺;必要时扩展设备+工序能力表 | 优先在标准工艺/生产工艺维护,设备档案只维护设备能力和是否参与 OEE | 不单独新建维护页,除非要做设备+工序能力矩阵 | OEE、工时异常、未完工工时、计划工时 | +| 生产工艺自动带出标准工艺 | 标准工艺库生成草稿,保存后进入生产工艺库 | `生产工艺` 页面编辑入口处理;`制定标准工艺` 负责标准来源 | 不新建页面 | 排产、流转卡、工时报表、任务快照 | +| 设计任务报工 | MES 自建设计任务、设计工时 | 需要独立任务创建、报工、查询和权限 | 需要新建业务页面 | 合同工时、设计工时报表、装配已排产需求 | +| 编程任务清单/编程报工 | 编程任务、程序号、设备/工位、编程工时 | 需要独立编程任务维护和报工;可从生产订单/设备任务派生 | 需要新建业务页面 | 机加可开工判断、工时报表、及时开工 | +| 发料齐套时间 | SAP/MES 发料状态、齐套计算或人工维护字段 | 优先落在生产计划/装配排产相关页面;装配已排产需求可展示和必要时编辑 | 报表可新建,字段维护不应只放报表 | 装配完成时间、及时送检、齐套看板 | +| 装配完成时间 | 规则计算:发料齐套时间 + 3 天;也可能人工调整 | 装配已排产需求或装配排产页面显示;若允许调整需保存调整日志 | 新建装配已排产需求页是合理的,但要明确它既是进度页也是部分字段维护入口 | 质检任务早知道、日计划、合同进度 | +| 预计可执行时间 | SAP 缺件明细 + 主子订单关系 + 人工判断 | 及时齐套跟踪结果报表中可维护,但必须记录维护人、时间、来源说明 | 可在新报表内做维护动作,不必另建维护页 | 生产任务看板、及时开工、装配计划 | +| 主订单与缺料子订单关系 | SAP/MES 订单关系,必要时人工绑定 | 若 SAP 无法稳定提供,需要新增主子订单关系维护入口 | 可能需要新增维护页或在齐套报表内维护 | 及时齐套、装配缺件、生产看板 | +| 手续确认 | 人工确认状态、确认人、确认时间 | 手续确认报表本身就是待办确认入口,可在该页面维护 | 需要新建待办/报表页 | 装配中心、生产任务看板、订单关闭 | +| 让步接收记录 | 质检记录中的让步接收字段 | 质检中心/不合格处置页面负责维护;新页面只查询 | 新建查询页,不新建维护页 | 质检看板、供应商质量、未清任务 | +| 外协供应商/SAP 收货单号 | 外协任务、采购收货、质检收检记录 | 序检收检、外协收货、外协任务页面补字段 | 不单独新建维护页 | 外协报表、供应商合格率、SAP 追溯 | +| 机加班次产量 | 报工记录 + 设备 + 班次规则 | 班次规则在班次管理维护;报表只查询 | 新建报表页,不新建维护页 | 设备看板、工位汇总、OEE | +| 及时检验 | 生产完成/报工完成时间 + 质检记录 | 质检业务在质检中心维护;及时检验页只催办和查询 | 新建报表页 | 质检看板、生产日报、异常提醒 | +| 生产日报-送检 | 送检记录、质检记录、部门归属 | 送检和质检在原业务页面维护;日报只汇总 | 可新建报表页 | 日报、质检统计、部门绩效 | +| 发货通知列表 | SAP 发货通知或同步落地表 | SAP 为主,MES 页面只查询;若需备注/确认再加本地扩展表 | 新建查询页 | 装配看板、合同交付、board_view | +| 批量关闭 SAP 订单 | MES 订单 + SAP 关闭接口返回 | 生产订单关闭页维护,增加批量动作和结果日志 | 不新建页面,扩展现有关闭页 | 排产页、生产中心、手续确认 | +| 异常管控直接报异常 | 所有报工页面选中任务带入异常 | 异常管控页维护异常主流程;各报工页只提供入口 | 不新建页面,改异常页和各报工页入口 | 机加、装配、质检、外协、设计、编程 | +| 条码拣配 | 条码、物料、批次、任务、拣配状态 | 机加中心/装配中心增加扫码入口;条码规则可单独维护 | 扫码操作不一定新建页面,条码规则可能要新建维护页 | 齐套、发料、看板、SAP 库存 | +| 设备 OEE | 设备采集、报工产量、质检良品、标准工时 | 设备档案、工位管理、工艺维护、设备采集配置分别维护 | OEE 是报表/看板,不是单独维护页 | 机加看板、board_view、设备报表 | +| 工时异常 | 设备采集单件工时/人工工时 + 标准工时 | 异常报表可增加确认动作;标准工时仍在工艺/设备能力维护 | 新建报表或扩展工时查询 | 工时校验、异常管控、绩效 | + +### 33.2 对两个典型问题的明确修正 + +#### 缺勤数据来源 + +缺勤不能从“没有报工”反推。正确链路应该是: + +```mermaid +flowchart LR + A[班次/排班] --> B[应到人员] + C[岗位/工位人员绑定] --> B + D[考勤/上岗/登录/报工] --> E[实到人员] + B --> F[缺勤判断] + E --> F + F --> G[机加/装配现场看板] +``` + +如果系统没有排班或应到人员维护能力,就必须补一个维护入口。可以是扩展 `ShiftManagement`、人员绑定、工位人员角色页面,也可以新增 `人员排班/出勤维护` 页面。单纯新增看板查询过程只能展示结果,不能解决应到人员从哪里来的问题。 + +#### 关键工序维护位置 + +关键工序属于工艺属性,不属于看板属性。维护位置应放在: + +- `制定标准工艺`:维护物料标准工艺路线时标记标准关键工序。 +- `生产工艺`:按生产订单生成/编辑工艺时继承标准关键工序,并允许订单级调整。 +- 生产任务生成/下发时:把 `是否关键工序` 快照到任务,避免后续修改标准工艺导致历史看板重算。 + +因此“一楼质检大屏”和“机加现场大屏”只读取关键工序,不负责维护关键工序。若客户需要批量检查哪些工艺未标关键工序,可以新增查询/批量修正页,但主维护仍应落在标准工艺和生产工艺页面。 diff --git a/doc_old/新增需求界面原型设计_2026-05-25.md b/doc_old/新增需求界面原型设计_2026-05-25.md new file mode 100644 index 0000000..4715a5d --- /dev/null +++ b/doc_old/新增需求界面原型设计_2026-05-25.md @@ -0,0 +1,524 @@ +# 新增需求界面原型设计 + +生成日期:2026-05-25 +依据文档:`新增需求分析与开发记录_2026-05-23.md` +说明:本文只描述界面原型、字段、按钮、弹窗和交互,不涉及代码修改。 + +## 一、界面设计总原则 + +1. 报表页只负责查询、展示、导出、钻取;不把基础字段维护塞进报表页。 +2. 待办页可以承担确认动作,例如手续确认、异常处理。 +3. 工艺、关键工序、标准工时仍在标准工艺/生产工艺页面维护。 +4. 缺勤、班次、人员、工位类数据需要来源于班次/排班/人员工位绑定,不在大屏直接维护。 +5. 所有新增页面保留系统现有风格:顶部查询区、右侧操作按钮、下方表格、必要时弹窗明细。 + +## 二、新增页面总览 + +| 页面名称 | 页面类型 | 菜单建议 | 是否新增页面 | 是否维护数据 | +|---|---|---|---|---| +| 设计任务报工 | 业务操作页 | 生产管理/报工管理 | 是 | 是 | +| 机加班次产量表 | 报表页 | 报表中心/生产报表 | 是 | 否 | +| 手续确认报表 | 待办确认页 | 报表中心/装配报表 | 是 | 是,确认状态 | +| 及时检验报表 | 催办报表页 | 报表中心/质检报表 | 是 | 否 | +| 及时齐套跟踪结果报表 | 查询 + 部分维护页 | 报表中心/齐套报表 | 是 | 可维护预计可执行时间 | +| 生产日报-送检 | 日报页 | 报表中心/生产日报 | 是或扩展 | 否 | +| 编程任务清单/编程报工 | 业务操作页 | 生产管理/报工管理 | 是 | 是 | +| 让步接收记录 | 查询追溯页 | 质量管理/质量报表 | 是 | 否 | +| 装配已排产需求 | 交付进度页 | 生产管理/装配管理 | 是 | 部分字段可维护 | +| 质检任务早知道 | 预告报表页 | 质量管理/质量报表 | 是 | 否 | +| 及时送检报表 | 催办报表页 | 报表中心/质检报表 | 是或扩展 | 否 | +| 发货通知列表 | SAP 查询页 | 销售/交付报表 | 是 | 否 | +| 工时异常报表 | 异常分析页 | 报表中心/工时报表 | 是或扩展 | 可增加异常确认 | + +## 三、页面原型 + +### 1. 设计任务报工 + +定位:MES 自建设计任务和设计工时,不关联生产订单,不上传 SAP。 + +```text +┌────────────────────────────────────────────────────────────────────┐ +│ 设计任务报工 │ +├────────────────────────────────────────────────────────────────────┤ +│ 查询区 │ +│ 任务名称 [________] 设计人员 [____] 状态 [全部▼] 日期 [____至____] │ +│ [查询] [重置] [新增设计任务] │ +├────────────────────────────────────────────────────────────────────┤ +│ 任务列表 │ +│ □ 任务编号 | 任务名称 | 设计人员 | 状态 | 开始时间 | 结束时间 | 工时 │ +│ | 工作内容 | 结束说明 | 创建人 | 创建时间 | 操作 │ +│ ------------------------------------------------------------------ │ +│ 操作:[开始报工] [结束报工] [工时记录] [编辑] [删除] │ +└────────────────────────────────────────────────────────────────────┘ +``` + +弹窗: + +| 弹窗 | 字段/按钮 | +|---|---| +| 新增设计任务 | 任务名称、设计人员、计划开始、计划完成、任务说明、保存、取消 | +| 开始报工 | 任务信息只读、开始时间默认当前、工作内容、确认开始 | +| 结束报工 | 任务信息只读、结束时间默认当前、结束说明、确认结束 | +| 工时记录 | 开始时间、结束时间、工时、工作内容、操作人 | + +状态: +- 未开始 +- 进行中 +- 已完成 +- 已取消 + +### 2. 机加班次产量表 + +定位:报表页,查看每天每台设备每班次干了什么活。 + +```text +┌────────────────────────────────────────────────────────────────────┐ +│ 机加班次产量表 │ +├────────────────────────────────────────────────────────────────────┤ +│ 日期 [____至____] 班次 [全部▼] 设备 [全部▼] 操作人 [____] │ +│ [查询] [重置] [导出] │ +├────────────────────────────────────────────────────────────────────┤ +│ 汇总卡:设备数 班次数 总数量 总工时 │ +├────────────────────────────────────────────────────────────────────┤ +│ 分组表 │ +│ ▶ 设备:CNC-01 合计数量 合计工时 │ +│ ▶ 日期:2026-05-25 班次:白班 小计数量 小计工时 │ +│ 生产订单 | 物料编码 | 物料名称 | 工序 | 开始 | 结束 | 工时 | 数量 | 操作人 │ +└────────────────────────────────────────────────────────────────────┘ +``` + +字段: +- 设备名称 +- 日期 +- 班次 +- 生产订单 +- 物料编码 +- 物料名称 +- 工序名称 +- 开始时间 +- 结束时间 +- 工时 +- 数量 +- 操作人 + +说明: +- 班次规则来自班次管理。 +- 该页面不维护班次,只读取班次和报工记录。 + +### 3. 手续确认报表 + +定位:装配、电气发料齐套后的待办确认页。 + +```text +┌────────────────────────────────────────────────────────────────────┐ +│ 手续确认报表 │ +├────────────────────────────────────────────────────────────────────┤ +│ 生产订单 [____] 合同号 [____] 物料 [____] 指派对象 [全部▼] │ +│ 发料齐套日期 [____至____] 手续确认 [未完成▼] │ +│ [查询] [重置] [导出] [批量确认完成] │ +├────────────────────────────────────────────────────────────────────┤ +│ □ 生产订单 | 合同号 | 物料编码 | 物料名称 | 指派对象 | 发料齐套时间 │ +│ 装配完成时间 | 当前状态 | 手续确认 | 确认人 | 确认时间 | 操作 │ +│ ------------------------------------------------------------------ │ +│ 操作:[确认完成] [查看装配明细] [查看异常] │ +└────────────────────────────────────────────────────────────────────┘ +``` + +消失条件: +- 手续确认 = 已完成 +- 生产订单取消 +- 生产订单关闭 +- 整单已入库 + +确认弹窗: +- 生产订单 +- 物料名称 +- 当前发料齐套时间 +- 确认备注 +- 确认完成 +- 取消 + +### 4. 及时检验报表 + +定位:生产报工完成超过 2 天仍未检验的催办报表。 + +```text +┌────────────────────────────────────────────────────────────────────┐ +│ 及时检验报表 │ +├────────────────────────────────────────────────────────────────────┤ +│ 生产订单 [____] 物料 [____] 工序 [全部▼] 指派对象 [全部▼] │ +│ 报工结束日期 [____至____] 超期天数 [>= 2] │ +│ [查询] [重置] [导出] │ +├────────────────────────────────────────────────────────────────────┤ +│ 生产订单 | 物料编码 | 物料名称 | 工序 | 指派对象 | 报工数量 │ +│ 已检数量 | 未检数量 | 报工结束时间 | 超期天数 | 责任人 | 操作 │ +│ ------------------------------------------------------------------ │ +│ 操作:[查看报工] [查看质检记录] [生成催办] │ +└────────────────────────────────────────────────────────────────────┘ +``` + +字段: +- 生产订单 +- 物料编码 +- 物料名称 +- 工序名称 +- 指派对象 +- 报工数量 +- 已检数量 +- 未检数量 +- 报工结束时间 +- 超期天数 + +### 5. 及时齐套跟踪结果报表 + +定位:主订单齐套跟踪,支持展开查看 SAP 缺件明细。 + +```text +┌────────────────────────────────────────────────────────────────────┐ +│ 及时齐套跟踪结果报表 │ +├────────────────────────────────────────────────────────────────────┤ +│ 主生产订单 [____] 合同号 [____] 物料 [____] 齐套状态 [全部▼] │ +│ 预计可执行时间 [____至____] SAP同步时间 [____至____] │ +│ [查询] [重置] [导出] │ +├────────────────────────────────────────────────────────────────────┤ +│ ▶ 主生产订单 | 合同号 | 物料编码 | 物料名称 | 计划数量 | 齐套状态 │ +│ 缺件数 | 当前进度 | 预计可执行时间 | SAP同步时间 | 操作 │ +│ ------------------------------------------------------------------ │ +│ 展开明细: │ +│ 缺料物料 | 名称 | 缺件数量 | 属性 | 对应单据号 | 当前进度 │ +│ 全序展示 | 单条预计完成时间 | 预计可执行时间 | 操作 │ +└────────────────────────────────────────────────────────────────────┘ +``` + +可维护字段: +- 预计可执行时间 +- 预计可执行说明 +- 主订单与缺料子订单人工绑定关系 + +弹窗: +- 编辑预计可执行时间 +- 查看 SAP 缺件明细 +- 主子订单关系维护 + +### 6. 生产日报-送检 + +定位:机加/装配送检日报,建议一个页面两个页签。 + +```text +┌────────────────────────────────────────────────────────────────────┐ +│ 生产日报-送检 │ +├────────────────────────────────────────────────────────────────────┤ +│ 页签:[机加送检日报] [装配送检日报] │ +├────────────────────────────────────────────────────────────────────┤ +│ 日期 [____] 部门 [全部▼] 生产订单 [____] 物料 [____] │ +│ [查询] [重置] [导出日报] │ +├────────────────────────────────────────────────────────────────────┤ +│ 日汇总:送检数量 已检数量 合格数量 不合格数量 未检数量 │ +├────────────────────────────────────────────────────────────────────┤ +│ 日期 | 部门 | 生产订单 | 物料编码 | 物料名称 | 工序 | 送检数量 │ +│ 已检数量 | 合格数量 | 不合格数量 | 送检时间 | 检验时间 | 状态 │ +└────────────────────────────────────────────────────────────────────┘ +``` + +说明: +- 部门归属规则需确认。 +- 该页面不维护送检和检验结果。 + +### 7. 编程任务清单 / 编程报工 + +定位:编程任务和编程工时管理。 + +```text +┌────────────────────────────────────────────────────────────────────┐ +│ 编程任务清单 │ +├────────────────────────────────────────────────────────────────────┤ +│ 设备 [全部▼] 工位 [全部▼] 程序员 [____] 状态 [全部▼] │ +│ 生产订单 [____] 日期 [____至____] │ +│ [查询] [重置] [新增编程任务] [导出] │ +├────────────────────────────────────────────────────────────────────┤ +│ 任务编号 | 生产订单 | 物料编码 | 物料名称 | 工序 | 设备/工位 │ +│ 程序号 | 编程人员 | 状态 | 开始时间 | 结束时间 | 工时 | 操作 │ +│ ------------------------------------------------------------------ │ +│ 操作:[开始编程] [结束编程] [编辑程序号] [工时记录] [报异常] │ +└────────────────────────────────────────────────────────────────────┘ +``` + +弹窗: +- 新增编程任务 +- 开始编程 +- 结束编程 +- 工时记录 +- 程序号维护 + +状态: +- 未开始 +- 编程中 +- 已完成 +- 已取消 +- 异常中 + +### 8. 让步接收记录 + +定位:查询质检记录中让步接收字段不为空的数据。 + +```text +┌────────────────────────────────────────────────────────────────────┐ +│ 让步接收记录 │ +├────────────────────────────────────────────────────────────────────┤ +│ 生产订单 [____] 物料 [____] 检验人 [____] 检验日期 [____至____] │ +│ 让步接收类型 [全部▼] │ +│ [查询] [重置] [导出] │ +├────────────────────────────────────────────────────────────────────┤ +│ 生产订单 | 物料编码 | 物料名称 | 工序 | 检验数量 | 不合格数量 │ +│ 让步接收 | 检验人 | 检验时间 | 处置说明 | 操作 │ +│ ------------------------------------------------------------------ │ +│ 操作:[查看质检记录] [查看不合格处置] │ +└────────────────────────────────────────────────────────────────────┘ +``` + +说明: +- 页面只查询,不维护让步接收。 +- 让步接收仍在质检中心或不合格处置维护。 + +### 9. 装配已排产需求 + +定位:装配交付进度中心,整合 SAP 字段、MES 报工、工时、异常、齐套和日计划。 + +```text +┌────────────────────────────────────────────────────────────────────┐ +│ 装配已排产需求 │ +├────────────────────────────────────────────────────────────────────┤ +│ 系统分类 [全部▼] 合同号 [____] 生产订单 [____] 物料 [____] │ +│ 发料齐套时间 [____至____] 装配完成时间 [____至____] 状态 [全部▼] │ +│ [查询] [重置] [导出] [批量维护] │ +├────────────────────────────────────────────────────────────────────┤ +│ 生产订单 | 合同号 | 物料编码 | 物料名称 | 系统/非系统 | 派工时间 │ +│ 合同交货期 | 发料齐套时间 | 装配完成时间 | 当前人员 | 当前内容 │ +│ 累计工时 | 异常数 | 钣金预达 | 钣金到达 | 泵预达 | 泵到达 | 备注 | 操作 │ +│ ------------------------------------------------------------------ │ +│ 操作:[查看工时] [查看异常] [查看缺件] [维护字段] [生成日计划] │ +└────────────────────────────────────────────────────────────────────┘ +``` + +字段分组: +- SAP 字段:派工时间、合同交货期 +- MES 计算字段:装配完成时间、累计工时、异常数 +- 手工维护字段:钣金预达、钣金到达、泵预达、泵到达、备注、当前对应内容 + +弹窗: +- 工时明细 +- 异常明细 +- 缺件明细 +- 手工字段维护 +- 日计划预览 + +### 10. 质检任务早知道 + +定位:根据装配已排产需求预测即将进入质检的任务。 + +```text +┌────────────────────────────────────────────────────────────────────┐ +│ 质检任务早知道 │ +├────────────────────────────────────────────────────────────────────┤ +│ 装配完成时间 [____至____] 合同号 [____] 生产订单 [____] │ +│ 物料 [____] 状态 [待质检▼] │ +│ [查询] [重置] [导出] │ +├────────────────────────────────────────────────────────────────────┤ +│ 预计质检日期 | 生产订单 | 合同号 | 物料编码 | 物料名称 | 装配完成时间 │ +│ 当前人员 | 当前内容 | 累计工时 | 异常状态 | 质检状态 | 操作 │ +│ ------------------------------------------------------------------ │ +│ 操作:[查看装配进度] [查看异常] [查看质检记录] │ +└────────────────────────────────────────────────────────────────────┘ +``` + +说明: +- 强依赖装配已排产需求。 +- 不直接维护质检结果。 + +### 11. 及时送检报表 + +定位:发料齐套后超过规则时间未送检的任务催办。 + +```text +┌────────────────────────────────────────────────────────────────────┐ +│ 及时送检报表 │ +├────────────────────────────────────────────────────────────────────┤ +│ 生产订单 [____] 合同号 [____] 物料 [____] 指派对象 [全部▼] │ +│ 发料齐套时间 [____至____] 送检状态 [未送检▼] 超期天数 [>= 2] │ +│ [查询] [重置] [导出] │ +├────────────────────────────────────────────────────────────────────┤ +│ 生产订单 | 合同号 | 物料编码 | 物料名称 | 指派对象 | 发料齐套时间 │ +│ 是否送检 | 送检时间 | 超期天数 | 加急 | 当前状态 | 操作 │ +│ ------------------------------------------------------------------ │ +│ 操作:[查看装配任务] [查看质检任务] [生成催办] │ +└────────────────────────────────────────────────────────────────────┘ +``` + +### 12. 发货通知列表 + +定位:SAP 已提供数据,大屏已展示,新增普通报表查询页。 + +```text +┌────────────────────────────────────────────────────────────────────┐ +│ 发货通知列表 │ +├────────────────────────────────────────────────────────────────────┤ +│ 发货通知号 [____] 合同号 [____] 客户 [____] 状态 [全部▼] │ +│ 要求发货日期 [____至____] SAP同步时间 [____至____] │ +│ [查询] [重置] [导出] │ +├────────────────────────────────────────────────────────────────────┤ +│ 发货通知号 | 合同号 | 客户 | 物料编码 | 物料名称 | 数量 │ +│ 要求发货日期 | 发货状态 | SAP同步时间 | 备注 | 操作 │ +│ ------------------------------------------------------------------ │ +│ 操作:[查看明细] [查看关联生产订单] │ +└────────────────────────────────────────────────────────────────────┘ +``` + +说明: +- 默认只读 SAP 或 SAP 同步表。 +- 如需 MES 备注,建议单独建本地备注扩展字段。 + +### 13. 工时异常报表 + +定位:单件实际工时大于标准单件工时的异常分析。 + +```text +┌────────────────────────────────────────────────────────────────────┐ +│ 工时异常报表 │ +├────────────────────────────────────────────────────────────────────┤ +│ 日期 [____至____] 设备 [全部▼] 工位 [全部▼] 操作人 [____] │ +│ 物料 [____] 工序 [全部▼] 超出比例 [>=____%] 状态 [全部▼] │ +│ [查询] [重置] [导出] │ +├────────────────────────────────────────────────────────────────────┤ +│ 设备/工位 | 生产订单 | 物料编码 | 物料名称 | 工序 | 操作人 │ +│ 标准单件工时 | 实际单件工时 | 超出时长 | 超出比例 | 班次 | 状态 | 操作 │ +│ ------------------------------------------------------------------ │ +│ 操作:[查看工时明细] [确认异常] [填写原因] │ +└────────────────────────────────────────────────────────────────────┘ +``` + +异常确认弹窗: +- 异常原因 +- 责任部门 +- 处理说明 +- 确认人 +- 确认时间 + +## 四、现有页面改造界面说明 + +### 1. 机加件已排产页面 + +改造点: +- `计划开始时间` 改为单日期选择。 +- `计划完成时间` 改为单日期选择。 +- 表格增加 `总工时` 列。 +- 点击总工时打开历史工时明细弹窗。 + +```text +查询区:计划开始日期 [____] 计划完成日期 [____] +表格列:... | 总工时 | 操作 +总工时点击弹窗:设备 -> 日期 -> 任务明细 +``` + +### 2. 生产计划跟踪 + +改造点: +- 当前序展示完整工艺路线。 +- 工序按状态变色。 +- 增加标准工时、订单状态。 + +```text +工艺路线:打磨(张三) -> 淬火(外协) -> 精磨(李四) +状态颜色:进行中高亮、已完成置灰、待加工普通色、异常红色 +``` + +### 3. 序检收检/外协任务检验 + +改造点: +- 增加指派对象。 +- 增加供应商。 +- 增加 SAP 采购收货单号。 + +建议在检验记录表格和检验详情弹窗中同时展示。 + +### 4. 生产订单关闭 + +改造点: +- 表格增加多选。 +- 增加 `批量关闭 SAP 订单` 按钮。 +- 增加批量关闭结果弹窗。 + +结果弹窗字段: +- 生产订单 +- SAP 单据号 +- 执行结果 +- 失败原因 +- 是否可重试 + +### 5. 生产工艺 + +改造点: +- 点击编辑时,若无生产工艺,弹窗提示“未找到生产工艺,是否带出标准工艺作为草稿?” +- 带出后不自动保存。 +- 保存后才写入生产工艺。 + +### 6. 异常管控 + 全部报工页面 + +改造点: +- 所有报工页面增加 `报异常` 按钮。 +- 选中任务后打开统一异常弹窗。 +- 异常弹窗支持多选审批人。 + +异常弹窗字段: +- 异常类型 +- 异常说明 +- 附件 +- 审批人,多选 +- 关联订单/任务/工序,只读 + +### 7. 及时开工报表 + +改造点: +- 指派对象查询增加模式选择。 + +```text +指派对象 [多选] 查询模式 [包含▼ / 排除▼] +``` + +### 8. 工时报表 + +改造点: +- 增加指派对象字段。 +- 后续支持工时类型和来源模块。 + +### 9. 领料/退库/外协报表小字段 + +| 页面 | 界面改造 | +|---|---| +| 生产领料(机加) | 增加备注输入/备注列 | +| 生产退库(机加) | 增加备注输入/备注列 | +| 生产退库(装配) | 增加备注输入/备注列 | +| 外协任务报表(采购) | 增加采购到货期说明列 | +| 工序流转卡 | 打印模板增加原料编码 | +| 制定标准工艺 | 保存成功/失败提示明确化 | + +## 五、优先原型顺序 + +| 优先级 | 页面 | +|---|---| +| P0 | 手续确认报表、及时检验报表、发货通知列表、生产订单关闭批量 SAP | +| P0 | 生产工艺自动带出标准工艺、异常管控直接报异常 | +| P1 | 装配已排产需求、及时齐套跟踪结果报表、质检任务早知道 | +| P1 | 设计任务报工、编程任务清单/编程报工 | +| P1 | 机加班次产量表、生产日报-送检、及时送检报表 | +| P2 | 工时异常报表、OEE/设备采集相关界面、现场大屏缺勤/关键工序 | + +## 六、客户确认清单 + +1. 新增页面菜单位置是否按本文建议放置。 +2. 手续确认、预计可执行时间、装配已排产需求中的手工字段是否允许页面维护。 +3. 设计任务、编程任务是否需要审批或只做报工。 +4. 缺勤人员是否已有排班/考勤来源。 +5. 关键工序是否确认在标准工艺和生产工艺维护。 +6. 及时检验、及时送检的超期天数是否统一为 2 天。 +7. 发货通知列表是否只读 SAP 数据,是否需要 MES 备注。 +8. 工时异常是否需要确认闭环,还是只做查询。 diff --git a/问题修复方案与今日沟通规划.md b/doc_old/问题修复方案与今日沟通规划.md similarity index 100% rename from 问题修复方案与今日沟通规划.md rename to doc_old/问题修复方案与今日沟通规划.md diff --git a/doc_old/隐性需求综合分析_2026-05-25.md b/doc_old/隐性需求综合分析_2026-05-25.md new file mode 100644 index 0000000..e3f33a7 --- /dev/null +++ b/doc_old/隐性需求综合分析_2026-05-25.md @@ -0,0 +1,860 @@ +# MES_Manage_View_V20 新增需求后的整体影响与隐性需求综合分析 + +生成日期:2026-05-25 + +分析依据: +- `新增需求分析与开发记录_2026-05-23.md` +- `今日工作汇报_2026-05-23.txt` +- `需求分析_自制件与工位汇总表.md` +- `MES_Manage_View_V20_src_views_逐页面详细分析.md` + +## 一、分析视角调整 + +本文不单纯从“客户后续可能要什么”出发,而是从系统整体出发,分析这些新增需求如果逐步落地,会对现有 MES 产生什么连锁影响: + +1. 会新增哪些业务数据。 +2. 会改变哪些原有统计口径。 +3. 会冲击哪些已完成页面、报表、看板。 +4. 会让哪些现有字段含义变得不够用。 +5. 会产生哪些必须补做的隐性能力。 +6. 客户基于新数据和新功能,后续还可能继续提出什么。 + +核心判断: + +这些需求不是孤立新增页面。它们会把系统从“生产任务执行系统”推向“生产进度、质量、工时、齐套、异常、SAP 状态一体化追踪系统”。一旦新增字段、报表、SAP 回写、设计/编程报工、装配已排产需求进入系统,很多已完成页面也要重新解释和调整。 + +## 二、总体连锁影响 + +| 新增能力 | 直接新增数据 | 产生的问题 | 隐性需求 | 已完成页面/报表是否需要改 | +|---|---|---|---|---| +| 设计任务报工 | 设计任务、设计工时、工作内容、开始/结束时间 | 原有工时只覆盖生产/质检/装配,合同总工时会漏设计 | 工时分类、合同工时汇总、设计任务权限、设计工时报表 | 装配已排产需求、工时报表、合同进度、日报需要纳入设计工时 | +| 编程任务清单/编程报工 | 编程任务、编程工时、设备/工位、人员、说明 | 编程是否影响生产任务可开工不明确 | 编程完成状态、编程工时独立统计、任务前置条件 | 机加中心、生产计划跟踪、工时报表、及时开工可能需要增加编程状态 | +| 装配已排产需求 | 发料齐套时间、装配完成时间、SAP 派工时间、合同交货期、钣金/泵、当前人员、累计工时、异常 | 原装配排产页只管排产,新页面会变成交付进度中心 | 装配进度模型、日计划、合同进度、异常汇总、手工字段维护历史 | `InstallMakePlan`、`AssemblyCenter`、生产任务看板、质检任务早知道、日报都要联动 | +| 历史工时查询 | 任务总工时、设备/日期分组明细 | 原列表只显示任务状态,新总工时会引出明细追溯 | 汇总到明细钻取、工时来源标识、重复报工处理 | `SelfMakePlandone`、工时查询、班次产量表、合同工时汇总要统一口径 | +| 机加班次产量表 | 班次、设备、日期、任务、数量、工时 | 原工时和产量按任务查,现在要按班次归属 | 班次日历、跨天班次规则、设备日合计、人员归属 | 设备看板、工位汇总表、工时报表、生产日报需要统一班次口径 | +| 外协检验字段增强 | 指派对象、供应商、SAP 采购收货单号 | 原质检记录只到工序,供应商/单据链不完整 | 供应商合格率、SAP 单据追溯、外协质检报表 | 外协报表、质检记录、供应商统计、序检收检页面需要补字段 | +| 手续确认报表 | 手续确认状态、确认人、确认时间 | 原任务消失规则依赖已入库/关闭,现在又增加人工确认维度 | 待办清单、确认日志、取消/关闭/入库同步规则 | 装配中心、发料齐套列表、生产任务看板、订单关闭后状态需要同步 | +| 及时检验报表 | 报工完成时间、未检数量、超期天数 | 原质检任务是业务操作,新报表要求按时间催办 | 质检责任人、催办、超期规则、已检数量核算 | 质检中心、生产日报、异常提醒、看板需要展示未检/超期 | +| 及时齐套跟踪结果报表 | 主订单与缺料子订单关系、SAP 缺件明细、预计可执行时间 | SAP 实时数据和 MES 落库数据会不一致 | SAP 缓存、展开加载、主子订单关系维护 | 生产任务看板、装配已排产、及时开工、发料齐套报表需要统一缺件状态 | +| 生产日报-送检 | 送检、已检、合格、不合格、部门 | 原质检记录按任务查,现在要按部门/日报统计 | 部门归属规则、日报快照、合计口径 | 质检报表、工位汇总、日报、看板需要改统计维度 | +| 生产订单批量关闭 SAP | SAP 关闭结果、失败原因、操作日志 | MES/SAP 状态可能部分成功、重复关闭 | 批量结果表、重试机制、二次确认、权限 | 订单关闭页、排产页、生产中心、手续确认报表都要识别 SAP 关闭 | +| 异常管控入口统一 | 异常关联任务、审批人多选、附件、处理状态 | 原异常页面独立,新增入口后所有报工页都要联动 | 异常状态流转、待办、任务暂停规则、异常统计 | 机加/装配/质检/外协/设计/编程报工页面都要加入口和状态 | +| 生产工艺自动带出标准工艺 | 标准工艺草稿、生产工艺映射 | 原工艺一旦生成就被任务使用,修改会影响历史 | 工艺版本、任务快照、字段映射 | 生产计划跟踪、排产、流转卡、工时报表都要按任务快照而非最新工艺 | +| 发货通知列表 | SAP 发货通知数据、状态、单据号 | 原大屏展示变为报表查询后要支持筛选和追溯 | SAP 数据同步/实时查询、导出、状态解释 | 大屏、销售/生产交付类报表可能要统一发货状态 | + +## 三、最主要的问题不是新增页面,而是口径被改变 + +### 1. 工时口径会被重构 + +新增需求之前,系统主要工时来源集中在生产执行和质检相关记录,典型对象包括: +- `YL_加工中心_操作记录表` +- `生产管理_工时校验_校验工时表` +- 装配报工记录 +- 质检记录或质检报工 + +新增需求之后,工时会被拆成更多类别: +- 机加工时 +- 装配工时 +- 质检工时 +- 设计工时 +- 编程工时 +- 设备运行工时 +- 程序工时 +- 人员工时 +- 合同工时 +- 预计总工时 +- 剩余工时 + +会产生的问题: + +1. 原来“总工时”字段含义不够用了。 + - `SelfMakePlandone` 要加总工时。 + - 装配已排产需求要显示生产订单累计工时、合同工时汇总。 + - 班次产量表要按设备、日期、班次汇总工时。 + - 工时报表要加指派对象。 + - 如果都叫“总工时”,但来源不一致,页面数字会对不上。 + +2. 合同进度会和生产任务工时产生冲突。 + - 装配已排产需求提出“合同进度 = 累计工时 / 预计总工时”。 + - 但累计工时是否包含设计、质检、编程、装配、返工、异常工时,需要明确。 + - 如果不明确,合同进度会成为争议字段。 + +3. 已完成报表需要增加工时分类。 + - 原工时报表只要显示工时即可。 + - 新增设计/编程后,必须能区分工时类型。 + - 否则设计工时可能被误算进生产工时,或者合同总工时漏算。 + +需要跟着调整的已完成页面/报表: + +| 页面/报表 | 需要调整原因 | 建议调整 | +|---|---|---| +| `ProductionManagement/Timesheet` | 作业者工时新增指派对象,后续还会受到设计/编程工时影响 | 增加工时类型、来源模块、指派对象 | +| `ProductionManagement/WorkHoursCheck` | SAP 工时/投料校验与 MES 工时会产生差异 | 显示本次提交、历史提交、SAP 返回结果 | +| `PlanManagement/SelfMakePlandone` | 新增总工时和明细弹窗 | 总工时必须注明来源,仅统计生产报工还是包含质检/异常 | +| `ProductionManagement/AssemblyCenter` | 装配工时要进入装配已排产需求和合同进度 | 输出可复用的装配工时汇总字段 | +| 工位汇总表 | 新增班次、设备、人员、程序工时后口径变化 | 增加班次维度,区分设备工时/人工工时 | +| 自制件汇总表 | 合同工时和订单工时可能要求纳入新工时类型 | 增加工时类型过滤和明细钻取 | + +产生的隐性需求: +- 统一工时事实视图或工时汇总表。 +- 工时来源字段:生产、装配、质检、设计、编程、设备采集。 +- 工时单位统一:秒、分钟、小时。 +- 工时快照:报表发布后是否允许历史数据随新规则变化。 +- 工时差异解释:人工工时、设备工时、SAP 工时不一致时显示差异原因。 + +客户可能继续要: +- 合同维度工时明细。 +- 人员维度工时排名。 +- 设备维度利用率。 +- 设计/装配/质检工时占比。 +- 超预算工时预警。 + +### 2. 状态口径会被重新拉通 + +现有系统中已经出现很多状态: +- 排产状态 +- 派工状态 +- 任务状态 +- 加工状态 +- 收料状态 +- 发料状态 +- 质检状态 +- 入库状态 +- 加急状态 +- 外协通知 +- SAP 订单状态 +- 手续确认状态 +- 异常状态 +- 编程完成状态 +- 设计任务状态 + +会产生的问题: + +1. 一个任务在不同页面可能显示成不同状态。 + - 排产页面看 `排产状态`、`派工状态`。 + - 生产中心看 `任务状态`、`加工状态`。 + - 质检页面看检验记录。 + - 手续确认报表看手续确认、入库、关闭。 + - SAP 订单关闭后,MES 任务可能仍显示未完成。 + +2. 新增状态会影响原来的“消失条件”。 + - 手续确认报表中,已完成、取消、关闭、整单已入库都要消失。 + - 质检任务早知道也要排除已入库、关闭、取消任务。 + - 及时检验报表要排除已检足数量的任务。 + - 如果状态判断不统一,会出现同一任务在 A 页面消失,在 B 页面仍提醒。 + +3. 异常状态会打断原流程。 + - 报异常后是否允许继续报工? + - 异常未关闭时是否允许质检? + - 异常是否影响及时开工/及时检验/齐套报表? + - 这些都不是当前页面能单独决定的。 + +需要跟着调整的已完成页面/报表: + +| 页面/报表 | 受影响点 | 建议调整 | +|---|---|---| +| `AnomalousManagement/PunctualWork` | 及时开工按任务状态筛选,新增异常/编程/齐套后可能影响可执行判断 | 增加异常、编程、齐套条件说明 | +| `PlanManagement/InstallMakePlan` | 排产完成后还要看 SAP 订单状态、发料齐套、装配完成时间 | 查询结果补 SAP/齐套相关状态 | +| `PlanManagement/PlannOrderClose` | 批量关闭 SAP 后,MES 页面必须识别关闭结果 | 增加 SAP 关闭状态、失败原因、重试入口 | +| `ProductionManagement/MachiningCenter` | 异常入口、编程完成、设备占用都会影响可开工 | 增加任务不可操作原因 | +| `ProductionManagement/AssemblyCenter` | 装配完成时间、手续确认、异常都会影响任务显示 | 增加装配进度状态 | +| `QualityManagement/QualityCenter` | 已入库/关闭/异常/让步接收会影响质检操作 | 增加质检可操作性判断 | +| 生产任务看板 | 新增齐套、及时检验、手续确认、异常后看板指标会变化 | 重算指标口径 | + +产生的隐性需求: +- 生产任务状态总表。 +- 页面状态与数据库状态映射表。 +- 状态优先级规则:关闭 > 入库 > 异常 > 未检 > 未开工 等。 +- “不可操作原因”统一返回,而不是前端各页面自己判断。 +- 批量状态校验接口。 + +客户可能继续要: +- 任务状态流转图。 +- 状态变更历史。 +- 状态异常看板。 +- 一键修复状态不一致。 +- 已关闭/已入库任务仍可查询但不可操作。 + +### 3. SAP 与 MES 数据一致性问题会放大 + +今天逐页面分析中,SAP 相关调用已经覆盖多个核心流程: +- 排产确认:`PATCH /ProductionOrders(...)` +- 订单关闭:`PATCH /ProductionOrders(...)` +- 工时校验/发料:`GET /ProductionOrders`、`POST /InventoryGenExits`、`PATCH ProductionOrders(...)` +- 外协采购申请:`POST /PurchaseRequests` +- 外协采购收货:`POST /PurchaseDeliveryNotes` +- 工位资源:`POST /Resources`、`PATCH /Resources(...)` +- 工序:`POST /RouteStages`、`PATCH /RouteStages(...)` + +新增需求后,SAP 相关数据还会增加: +- SAP 派工时间 +- 合同交货期 +- 发料齐套时间 +- 缺件明细 +- 发货通知 +- 采购收货单号 +- SAP 订单取消/关闭状态 + +会产生的问题: + +1. 实时查 SAP 和 MES 落库字段会不一致。 + - 及时齐套缺件明细要求 SAP 实时查询。 + - 装配已排产需求要求 SAP 派工时间、合同交货期。 + - 发货通知列表来源 SAP。 + - 如果某些页面读 SAP 实时,某些页面读 MES 同步表,数字和状态可能不同。 + +2. SAP 写操作失败会产生半成功数据。 + - MES 排产已完成,但 SAP 生产订单未更新。 + - MES 工时校验已保存,但 `InventoryGenExits` 失败。 + - 批量关闭 SAP 订单时,部分成功部分失败。 + - 外协采购请求成功,但 MES 未记录单号。 + +3. 新增报表会追问 SAP 数据更新时间。 + - 合同交货期什么时候同步? + - 发料齐套时间是否最新? + - 缺件明细是否实时? + - 发货通知状态是否已更新? + +需要跟着调整的已完成页面/报表: + +| 页面/报表 | 受影响点 | 建议调整 | +|---|---|---| +| `PlanManagement/SelfMakePlan/SelfMakePlando/SelfMakePlandone` | 排产同步 SAP 后缺少同步结果留痕 | 增加 SAP 同步状态、失败提示、重试依据 | +| `PlanManagement/InstallMakePlan/InstallMakePlanDo` | 装配新增 SAP 派工时间、合同交货期、发料齐套时间 | 查询和导出补 SAP 字段来源 | +| `ProductionManagement/WorkHoursCheck` | 已有 SAP 工序、资源、发料操作 | 增加 SAP 请求/返回日志和失败重试 | +| `QualityManagement/CheckTask/processReceive` | SAP 采购收货单号成为后续统计字段 | 保存 SAP 单号、行号、供应商 | +| `ProductionManagement/OutsourceMange` | 外协采购请求后要追踪 SAP 单据 | 记录采购请求号/采购订单关系 | +| `SystemMaintenance/WorkstationManagement` | 工位资源同步 SAP 后要防重复 | 增加 SAP 资源编码校验 | +| 发货通知大屏/新增报表 | 大屏已有数据,新增报表要求查询/导出 | 明确实时或同步数据源 | + +产生的隐性需求: +- SAP 调用日志表。 +- SAP 同步状态字段。 +- SAP 失败重试页面。 +- SAP 单据关系表:MES 任务 -> SAP 生产订单/采购请求/收货单/发货通知。 +- 数据更新时间展示。 +- 批量操作结果明细。 + +客户可能继续要: +- SAP 同步失败列表。 +- 手工重推 SAP。 +- SAP 与 MES 差异对账。 +- 每张 SAP 单据反查 MES 来源任务。 +- 批量关闭/批量回写的成功失败导出。 + +### 4. 报表会从结果展示变成数据追溯 + +新增需求中报表很多: +- 机加班次产量表 +- 手续确认报表 +- 及时检验报表 +- 及时齐套跟踪结果报表 +- 生产日报-送检 +- 让步接收记录 +- 及时送检报表 +- 发货通知列表 +- 质检任务早知道 +- 设计工时报表 +- 自制件汇总表 +- 工位汇总表 + +会产生的问题: + +1. 报表之间会互相引用同一批数据。 + - 及时检验依赖报工记录和质检记录。 + - 生产日报-送检依赖送检和质检记录。 + - 质检任务早知道依赖装配完成时间。 + - 装配已排产需求依赖工时、异常、齐套、SAP 字段。 + - 如果每个报表各写一套 SQL,口径会分裂。 + +2. 报表新增字段会要求历史数据补齐。 + - 外协检验新增供应商后,历史质检记录没有供应商。 + - 发料齐套时间新增后,历史生产计划没有该字段。 + - 手续确认新增后,历史任务默认是否“未确认”需要确定。 + - 设计/编程工时新增后,历史合同进度是否重算需要确定。 + +3. 报表会反向要求修改业务页面。 + - 报表要统计供应商合格率,就要求质检页面必须保存供应商。 + - 报表要统计及时检验,就要求报工结束时间必须准确。 + - 报表要统计手续确认,就要求业务页面维护确认状态。 + - 报表要统计合同进度,就要求所有工时都有合同号。 + +需要跟着调整的已完成页面/报表: + +| 已完成页面/报表 | 因新增需求需要调整什么 | +|---|---| +| 生产任务看板 | 增加及时齐套、及时检验、手续确认、装配完成时间等新指标或修正原指标 | +| 机加设备/生产运营看板 | 班次产量、设备工时、程序工时进入后,需要重算设备利用和产量口径 | +| 装配任务看板 | 装配完成时间、发料齐套、合同交货期、质检任务早知道会影响待办和逾期 | +| 质检任务看板 | 新增及时检验、质检任务早知道、让步接收后,待检数量口径要改 | +| 自制件汇总表 | 新增历史工时、设计/编程/质检工时后,总工时口径要扩展 | +| 工位汇总表 | 班次和设备采集数据进入后,按工位+日期的统计需要支持班次和设备维度 | +| 外协任务报表 | 增加供应商、采购到货期说明、SAP 收货单号后,导出和统计都要改 | +| 工时报表 | 指派对象、工时分类、设计/编程工时进入后,需要新增字段和筛选 | + +产生的隐性需求: +- 报表数据口径说明。 +- 报表明细钻取。 +- 报表导出字段配置。 +- 报表历史快照。 +- 历史数据补录/默认值策略。 +- 跨报表公共视图。 + +客户可能继续要: +- 每个报表点击数字看明细。 +- 报表导出与页面一致。 +- 报表按部门、班组、班次、人员、设备切换。 +- 报表定时推送。 +- 历史报表锁定,不随后续数据变化。 + +## 四、已完成页面/报表需要关注的改造清单 + +### 1. 计划排产相关页面 + +| 页面 | 需要关注的新增影响 | 是否需要修改 | +|---|---|---| +| `PlanManagement/SelfMakePlan` | SAP 回写状态、排产字段、计划时间口径、总工时 | 需要,至少补同步状态和字段口径 | +| `PlanManagement/SelfMakePlando` | 待排产转已排产后,装配/机加新字段是否继承 | 需要,确认新增字段默认值 | +| `PlanManagement/SelfMakePlandone` | 单日期筛选、总工时、历史明细、SAP 状态 | 已明确需要改 | +| `PlanManagement/InstallMakePlan` | 装配已排产需求会复用其数据,新增 SAP 派工时间、合同交货期、发料齐套 | 需要,至少 SQL 返回字段要扩展 | +| `PlanManagement/InstallMakePlanDo` | 同上,且涉及采购请求/SAP 回写 | 需要,补 SAP 单据和失败处理 | +| `PlanManagement/PlannOrderClose` | 批量关闭 SAP 后影响所有任务显示 | 需要,增加批量结果、失败原因、日志 | + +### 2. 生产执行相关页面 + +| 页面 | 需要关注的新增影响 | 是否需要修改 | +|---|---|---| +| `ProductionManagement/MachiningCenter` | 编程状态、异常入口、设备工时、程序工时、及时检验起算 | 需要,新增入口和不可操作原因 | +| `ProductionManagement/AssemblyCenter` | 装配完成时间、手续确认、装配工时、异常、发料任务状态 | 需要,作为装配已排产需求的数据来源 | +| `ProductionManagement/ProductionTaskManage` | 生产任务状态增加异常/齐套/质检/关闭维度 | 需要,查询字段和状态说明要扩展 | +| `ProductionManagement/AssembleTaskManage` | 装配任务将进入日计划和质检任务早知道 | 需要,补装配完成时间和任务排除规则 | +| `ProductionManagement/WorkHoursCheck` | SAP 工时校验、发料、订单工序资源更新风险扩大 | 需要,补 SAP 日志、重试、差异说明 | +| `ProductionManagement/Timesheet` | 指派对象、设计/编程工时、工时分类 | 需要,补字段和筛选 | + +### 3. 质检相关页面 + +| 页面 | 需要关注的新增影响 | 是否需要修改 | +|---|---|---| +| `QualityManagement/QualityCenter` | 及时检验、让步接收、外协供应商、已入库限制 | 需要,补状态和字段 | +| `QualityManagement/CheckTask/processReceive` | SAP 采购收货单号、供应商、外协指派对象 | 需要,新增保存和查询字段 | +| `QualityManagement/CheckTask/purchaseIncoming` | 采购检验备注、供应商统计、到货期说明 | 需要,至少补导出字段 | +| `QualityManagement/CheckTask/materialReturn` | 退库备注、库存任务状态 | 可能需要,跟退库备注和库存任务联动 | +| `QualityManagement/Unqualified` | 供应商合格率、让步接收、不合格统计口径 | 需要,补供应商/让步接收字段 | +| 质检任务看板 | 质检任务早知道和及时检验会改变待检数量 | 需要,重算待检/超期口径 | + +### 4. 外协相关页面 + +| 页面 | 需要关注的新增影响 | 是否需要修改 | +|---|---|---| +| `ProductionManagement/OutsourceMange` | 外协采购请求、供应商、发料/收料/质检闭环 | 需要,补 SAP 单据关系 | +| `ProductionManagement/OutsourceSheet` | 采购到货期说明、供应商、SAP 收货单号、外协质检 | 需要,查询和导出都要补 | +| `ProductionManagement/SaleOutsourceMange` | 销售外协同样受采购请求和供应商统计影响 | 需要,保持与外协管理一致 | + +### 5. 工艺和基础数据页面 + +| 页面 | 需要关注的新增影响 | 是否需要修改 | +|---|---|---| +| `ProcessManagement/ProcessProduct` | 自动带出标准工艺后,生产任务快照问题变明显 | 需要,避免覆盖已开工任务 | +| `CraftManagement/CraftMaintain` | 工艺版本、标准工艺字段映射 | 需要,补版本/草稿概念 | +| `ProcessManagement/ProcedureManagement` | SAP `RouteStages` 同步后要防止 MES/SAP 工序不一致 | 需要,补同步状态 | +| `SystemMaintenance/WorkstationManagement` | SAP `Resources` 新增/修改后要防重复和同步失败 | 需要,补资源同步状态 | + +### 6. 已完成看板和报表 + +| 看板/报表 | 新增功能导致的新数据 | 需要调整 | +|---|---|---| +| 生产任务看板 | 发料齐套、及时齐套、装配完成时间、及时检验、异常 | 指标口径需要重算 | +| 装配任务看板 | 装配完成时间、合同交货期、质检预告、手续确认 | 新增逾期和待办指标 | +| 质检任务看板 | 及时检验、质检任务早知道、让步接收 | 待检、超期、预告分开 | +| 机加设备生产运营看板 | 班次产量、程序工时、设备采集 | 设备利用率和产量来源需要统一 | +| 自制件汇总表 | 总工时、设计/编程/质检分类 | 工时口径要扩展 | +| 工位汇总表 | 班次、设备、人员、程序工时 | 增加班次/设备维度或说明不支持 | + +## 五、新增数据会带来的数据治理问题 + +### 1. 新字段放哪里 + +容易新增到生产计划/任务表的字段: +- 发料齐套时间 +- 装配完成时间 +- 手续确认 +- 当前对应人员 +- 当前对应内容 +- 钣金预达 +- 钣金到达 +- 泵 +- 生产异常标记 + +问题: +- 这些字段有些是 SAP 来的,有些是手工维护,有些是计算结果。 +- 全部塞进 `MES_接口_生产计划` 或 `MES_接口_生产计划_生产任务` 会让主表越来越混乱。 +- 手工维护字段还需要修改历史,否则无法解释是谁改了装配完成时间。 + +建议: +- SAP 同步字段、手工维护字段、计算字段分开存。 +- 手工维护字段建议用扩展表。 +- 计算字段优先用视图或报表过程生成。 + +### 2. 历史数据怎么处理 + +新增字段会导致历史数据为空: +- 历史外协质检没有供应商。 +- 历史质检没有 SAP 收货单号。 +- 历史生产计划没有发料齐套时间。 +- 历史任务没有手续确认。 +- 历史任务没有设计/编程工时。 + +问题: +- 报表默认查全部时,历史数据会被算成未完成、未确认、未齐套。 +- 用户可能认为系统数据异常。 + +建议: +- 每个新增字段定义历史默认规则。 +- 报表上区分“无数据”和“未完成”。 +- 对考核类报表增加启用日期。 + +### 3. 新增数据是否参与已完成报表 + +例如: +- 设计工时是否参与合同进度? +- 编程工时是否参与生产订单累计工时? +- 让步接收是否算合格? +- 外协供应商合格率是否包含历史无供应商数据? +- 已入库补检是否进入及时检验统计? + +这些会直接影响已完成报表。 + +建议: +- 新增需求上线前,同步输出“影响报表清单”。 +- 每个报表明确是否纳入新数据。 +- 如果纳入,是否重算历史。 + +## 六、系统级隐性需求清单 + +这些不是客户一开始直接说的需求,但只要新增功能落地,基本会被迫出现。 + +| 隐性需求 | 触发原因 | 不做的后果 | +|---|---|---| +| 字段来源字典 | 新字段来自 MES、SAP、手工、设备采集 | 联调时无法解释字段来源,报表口径反复变 | +| 状态总字典 | 状态分散在排产、生产、质检、入库、SAP | 同一任务不同页面显示不同状态 | +| SAP 调用日志 | 多页面写 SAP,且可能失败 | 无法排查 MES/SAP 不一致 | +| SAP 失败重试 | 批量关闭、工时校验、外协采购都可能部分失败 | 人工只能改库或重复操作 | +| 工时统一视图 | 新增设计、编程、设备、合同工时 | 各报表总工时对不上 | +| 报表明细钻取 | 汇总类报表越来越多 | 客户无法核对数字,只能反复查 SQL | +| 报表历史快照 | 报表用于日报/周报/考核 | 历史报表随数据变化,无法对账 | +| 手工字段维护历史 | 装配完成时间、钣金、泵、手续确认等可人工维护 | 无法追溯谁改了关键交期字段 | +| 批量操作结果表 | 批量关闭 SAP、批量排产、批量确认 | 部分成功/失败无法恢复 | +| 异常统一入口组件 | 所有报工页都要报异常 | 每页重复开发,状态不一致 | +| 任务追溯详情页 | 报表要解释数字来源 | 每个报表都要临时加明细 | +| 菜单/权限自动配置规范 | 新增页面很多 | 页面上线后权限、菜单容易漏 | +| 数据启用日期配置 | 新字段历史为空 | 历史数据被误算为异常 | +| 不可操作原因接口 | 关闭、入库、异常、未齐套都影响操作 | 前端提示不一致,用户不知道为什么不能点 | + +## 七、客户可能继续提出的需求 + +保留从客户使用角度推导出的后续需求,但这些需求都是由前面的整体影响引出来的。 + +### 1. 围绕工时 + +- 合同总工时明细。 +- 设计/编程/装配/质检/机加工时占比。 +- 按人员、设备、班次统计工时。 +- 工时超预算预警。 +- 工时与 SAP 上传差异对比。 +- 一键查看某订单所有工时来源。 + +### 2. 围绕状态和进度 + +- 生产任务全流程状态图。 +- 每个状态变更历史。 +- 为什么任务不可开工/不可质检/不可关闭的原因说明。 +- 已关闭/已入库任务仍可查询但禁止操作。 +- 任务异常状态看板。 + +### 3. 围绕 SAP + +- SAP 同步失败清单。 +- 手工重推 SAP。 +- SAP 与 MES 状态对账。 +- SAP 单据号反查 MES 任务。 +- 批量 SAP 操作结果导出。 +- SAP 数据最后同步时间展示。 + +### 4. 围绕质检 + +- 供应商合格率。 +- 设备合格率。 +- 让步接收审批。 +- 质检超期催办。 +- 已入库补检。 +- 质检记录按订单、供应商、人员、工序多维分析。 + +### 5. 围绕报表 + +- 所有汇总数字可点开明细。 +- 报表导出字段自定义。 +- 报表按部门/班组/班次拆分。 +- 报表定时推送。 +- 日报/周报历史锁定。 + +### 6. 围绕异常 + +- 所有报工页面直接报异常。 +- 异常审批待办。 +- 异常处理超期提醒。 +- 异常关闭后自动恢复任务。 +- 异常原因统计。 + +## 八、建议的开发控制策略 + +### 1. 每个新增需求都必须补“四张表” + +不是数据库表,而是分析表: + +1. 字段影响表:新增字段来自哪里,写到哪里,哪些页面显示。 +2. 状态影响表:是否改变排产/派工/任务/质检/入库/SAP 状态。 +3. 报表影响表:哪些已完成报表要纳入新数据。 +4. SAP 影响表:是否读 SAP、写 SAP、是否需要日志和重试。 + +### 2. 不建议继续只按页面单点开发 + +原因: +- 新增页面会越来越多,但数据源高度重叠。 +- 如果每个页面单独写 SQL,口径很快分裂。 +- 新增字段一旦被报表引用,历史数据和导出口径都会受影响。 + +建议: +- 工时类先建统一视图。 +- 状态类先建统一解释。 +- SAP 类先建日志。 +- 报表类先建公共明细查询。 + +### 3. 新增字段优先走扩展表 + +适合放扩展表的字段: +- 手工维护字段。 +- SAP 同步字段。 +- 报表补充字段。 +- 后续可能继续变动的字段。 + +不建议直接塞入主任务表的字段: +- 钣金预达、钣金到达、泵、当前对应内容。 +- 手续确认说明。 +- SAP 同步状态明细。 +- 合同级汇总字段。 + +### 4. 报表先定口径,再开发页面 + +尤其是: +- 及时检验。 +- 及时送检。 +- 生产日报-送检。 +- 机加班次产量。 +- 装配已排产需求。 +- 合同工时汇总。 + +这些报表一旦上线,后续就是管理依据,不能边用边改口径。 + +## 九、结论 + +新增需求真正带来的影响不是“多几个页面”,而是会改变现有系统的数据结构和统计口径。 + +最需要提前处理的是: + +1. 工时统一,否则总工时、合同进度、班次产量、日报都会互相对不上。 +2. 状态统一,否则排产、生产、质检、入库、关闭、异常在不同页面显示不一致。 +3. SAP 日志和重试,否则批量关闭、工时校验、外协采购、质检收货都会出现无法排查的半成功状态。 +4. 报表影响清单,否则新增字段上线后已完成报表会漏算或错算。 +5. 历史数据策略,否则新增字段为空会被误判为未完成、未确认、未齐套。 + +因此后续评估新增需求时,应先问一个问题:这个需求新增的数据,会不会改变现有页面、报表、看板、SAP 状态和历史统计。如果会,就必须同步改受影响页面,而不是只开发新页面。 + +## 十、同级项目数据看板带来的额外连锁影响 + +这次补充分析的同级看板包括:`生产任务看板`、`装配任务看板`、`质检任务看板`、`机加设备生产运营看板`、`机加设备生产运营看板二`、`TableTV`、`board_view`、`新建文件夹`。这些项目不是普通查询页,而是管理层和车间现场会持续观看的大屏。它们把 MES、SAP、设备采集、质检和工时数据压缩成几个关键数字,因此新增需求影响到看板时,问题会比普通页面更明显:不是某个按钮不可用,而是管理层看到的 KPI 可能直接变错。 + +### 1. 新增功能会让现有看板指标失真的位置 + +| 看板指标 | 当前主要来源 | 新增需求/功能变化 | 可能失真结果 | 必须同步改造 | +|---|---|---|---|---| +| 生产任务看板“按期齐套率” | `生产任务综合看板_按期齐套率`,按 `View_生产订单_MES.齐套` 汇总 | 及时齐套跟踪、SAP 缺件明细、部分齐套、预计齐套时间 | 只有“齐套/未齐套”会掩盖部分齐套和预计可执行状态 | 增加齐套状态字典、缺件明细、预计齐套日期、SAP 同步时间 | +| 生产任务看板“未及时开工” | `计划开始时间、开工时间、加工状态、合格数` | 设计/编程前置、异常暂停、二次派工、手续确认 | 被设计/编程/异常卡住的任务仍被算作生产未及时开工 | 增加未开工原因维度,区分“计划原因、前置原因、异常原因、人员/设备原因” | +| 生产任务看板“加急件” | SAP `ubt_OPKL_UrgentMaterials_ALL` + MES 计划 | 加急从订单级变为物料/工序/质检级 | 加急总数与页面明细、装配缺件、质检加急互相对不上 | 建统一加急来源视图,明确订单级/工序级/物料级 | +| 装配看板“发货状态” | `View_生产订单_MES.发货状态` + SAP `UBT_ODRF_ODLNMES` | 发货通知列表、仓库出库、SAP 发货回写 | 页面显示“发货状态”但可能混合通知、待出库、已出库、已交货 | 增加发货状态分层:通知、备货、出库、交货、SAP 回写 | +| 装配看板“在制缺件” | SAP 缺件表 + MES 装配计划 | 及时齐套跟踪、替代料、部分到货 | 只能看到缺件,无法知道是否已经采购、何时可恢复 | 增加缺件原因、预计到货、替代料、主子订单关系 | +| 装配看板“异常未关闭” | `流程表.完成人 is null` | 异常管控入口统一,机加/质检/外协都能发异常 | 未限定装配范围时,装配看板可能统计到其他部门异常 | 异常流程必须带业务域、任务、工序、责任部门 | +| 质检看板“未清任务” | `质量任务看板_未完成统计/明细` | 及时检验、复检、返工、让步接收、免检 | 未清数量会把复检/返工/免检混为同一类待检 | 增加质检状态流转、复检批次、处置结果、免检标识 | +| 质检看板“当天完成” | `View_质量检验_质检记录` 当天检测时间 | 生产日报-送检、部门日报、班次统计 | 当天完成按自然日统计,日报/班次按业务日统计会不一致 | 增加班次/日报快照口径 | +| 机加看板“设备运行状态” | `CaChe_Var` 当前缓存 | 机加班次产量、真实 OEE、设备运行工时 | 设备运行与任务报工可能不同步,OEE 无法解释 | 统一设备状态、任务状态、报工状态的时间轴 | +| 机加看板“当天完成/合格率” | 复用质检完成汇总 | 生产完成、质检完成、入库完成都被要求展示 | “完成”可能被理解成生产完成,但实际是质检完成 | 页面标题和过程改名,或新增生产完成口径 | +| `TableTV` 当前工位任务 | `设备管理_设备状态_查询` | 班次维护、人员绑定、二次派工 | 班次阈值写死后,人员归属与班次管理不一致 | 过程改读班次表,不再硬编码 7.5/16.5 | +| `board_view` 合同/项目进度 | `看板_*`,采购/库存/OEE 多处为 0 或样例 | 发货通知、采购到货、合同工时、真实 OEE | 综合大屏展示为“项目全貌”,但采购、库存、OEE 仍不真实 | 优先补真实数据源,否则不要作为经营口径 | + +### 2. 已完成页面、报表、看板必须同步修改的清单 + +| 变更来源 | 必须同步修改的看板/报表 | 原因 | +|---|---|---| +| 设计任务报工、编程任务报工 | `board_view` 工时消耗、未完工工时;工时报表;合同进度类报表 | 当前大屏工时主要来自生产工时,新增设计/编程后合同总工时会漏算 | +| 装配已排产需求 | `生产任务看板`、`装配任务看板`、`board_view` 装配进度 | 装配计划、齐套、发货、异常、累计工时都会进入交付进度 | +| 及时检验报表 | `质检任务看板`、`机加设备生产运营看板`、生产日报-送检 | 质检及时率必须从静态/占位指标变成真实过程 | +| 及时齐套跟踪 | `生产任务看板` 齐套率/未齐套任务、`装配任务看板` 缺件、`board_view` 合同进度 | 缺件从单一状态变成主子订单、SAP 缺料、预计可执行时间 | +| 发货通知列表 | `装配任务看板` 发货状态、`board_view` 合同/交付区域 | 发货状态需要区分 SAP 通知、仓库出库、MES 任务完成 | +| 机加班次产量表 | `TableTV`、机加运营看板、设备工时报表 | 班次、设备、人员、产量、工时必须按同一业务日归属 | +| 异常管控入口统一 | 装配看板异常数、机加看板未及时开工、生产任务看板风险数 | 异常暂停不应被误算为未及时开工或未完成 | +| SAP 生产订单批量关闭 | 生产任务看板、装配看板、计划关闭页、手续确认报表 | SAP 部分成功/失败会造成 MES 任务仍显示在看板上 | +| 外协检验字段增强 | 质检看板、外协报表、供应商质量统计 | 质检任务要按供应商、采购收货单、指派对象追溯 | + +### 3. 看板暴露出的系统级隐性需求 + +1. **统一指标口径层** + 现在不同看板各自写存储过程:`生产任务综合看板_*`、`装配中心任务看板_*`、`质量任务看板_*`、`机加设备生产运营看板_*`、`看板_*`。这些过程大量重复读取 `View_生产订单_MES`、`YL_质量检验_质检记录`、`YL_加工中心_操作记录表`。后续应建立统一口径视图,例如: + - `View_MES_任务状态统一口径` + - `View_MES_齐套缺件统一口径` + - `View_MES_质检待办统一口径` + - `View_MES_工时统一口径` + - `View_MES_设备任务运行统一口径` + +2. **统一状态字典** + 当前看板内同时出现 `任务状态`、`加工状态`、`排产状态`、`齐套`、`发料状态`、`拣配状态`、`发货状态`、`加急状态`、`质检状态`、`设备状态`。这些状态来自不同表,且有的前端再次转换。必须补一张状态解释表或统一视图,避免同一个 `0/1/2/4` 在不同页面含义不同。 + +3. **SAP 同步状态与时间戳** + 看板不是实时调用 B1 Service Layer,而是通过 SQL 读取 SAP 跨库表或 SAP 同步落地表,例如 `ubt_OPKL_UrgentMaterials_ALL`、`UBT_ODRF_ODLNMES`、`质量检验_质检任务_SAP`。因此大屏上所有 SAP 相关指标都应该显示或记录同步时间、同步结果、失败原因。否则用户看到缺件、发货、加急时无法判断是 SAP 最新状态还是 MES 缓存状态。 + +4. **指标钻取能力** + `board_view` 已经有中央订单点击钻取明细,其他看板多数只有汇总和滚动表。新增需求上线后,客户很可能要求点击“未及时开工、未清质检、缺件、异常、加急、未齐套”直接看到来源明细。不能只返回总数,过程应统一支持“汇总 + 明细 + 字段来源”。 + +5. **历史快照** + 大屏是实时结果,但日报、周报、月报需要历史定版。当前很多过程使用 `GETDATE()` 实时计算,例如当天完成、近 3 天装配合格率、当月计划执行率。新增管理报表后,必须保存日快照或允许传入统计日期,否则第二天无法复现昨天看板上的数字。 + +6. **占位指标清理** + `board_view` 中 OEE、环境、水电气、采购部进度、库存/在购字段存在样例或占位;生产任务看板中采购未及时到货、质检及时率、未及时入库也有静态值或未完整接入。上线前必须清理占位指标:要么接真实过程,要么隐藏,不要和真实指标混放。 + +### 4. 统一改造建议 + +| 优先级 | 改造项 | 解决的问题 | +|---|---|---| +| P0 | 给所有看板指标补“口径说明 + 来源过程 + 来源字段” | 防止管理层把不同含义的“完成、齐套、加急、在制”混用 | +| P0 | 把 `GETDATE()` 型过程改造为可传统计日期,实时看板默认当天 | 让日报/历史回看能复现 | +| P0 | 为 SAP 相关看板补同步时间和同步状态 | 判断数据新旧,排查 SAP/MES 不一致 | +| P1 | 统一质检待办过程,覆盖未清、及时率、关键工序、当天完成 | 避免 `质量任务看板_*` 和 `Visualization_QcTask_*` 两套接口并行 | +| P1 | 统一机加任务/设备状态过程,区分任务在制、设备运行、报工完成 | 防止设备状态与任务状态互相替代 | +| P1 | 统一装配发货/缺件过程,串起 SAP 发货通知、缺件、齐套、仓库出库 | 让装配看板真正反映交付风险 | +| P2 | 将 `board_view` 的占位采购、库存、OEE 接入真实数据或移除 | 避免综合大屏成为混合真实/样例数据的经营看板 | + +### 5. 客户可能继续提出的看板类需求 + +这些不是主分析角度,但从现有看板形态看,客户后续很可能继续要求: + +- 点击任意 KPI 下钻明细,例如未齐套、加急、未及时开工、未清质检、装配缺件。 +- 看板按项目、合同、车间、班组、设备筛选。 +- 看板显示 SAP 同步时间和异常提示。 +- 看板支持历史日期回看,而不是只能看当前实时数据。 +- 质检看板增加及时率趋势和超期责任人。 +- 装配看板增加预计发货、预计齐套、缺件到货日期。 +- 机加看板增加真实 OEE、设备利用率、程序运行时长、班次产量。 +- 生产任务综合看板增加“设计/编程是否完成”作为开工前置条件。 +- 大屏数据定时快照,日报/周报自动引用同一口径。 + +## 十一、设备数据采集与现场大屏专项影响分析 + +本次新增的设备档案、设备数据采集、OEE、工时异常、条码拣配和一楼/机加/装配现场大屏需求,会把系统从“任务报工驱动”进一步推向“设备实时数据 + MES 任务 + 质检结果 + 现场人员 + SAP 物料状态”的综合分析系统。它的影响不只在新增几个看板,而是会改变工时、产量、合格率、齐套、送检、缺勤、设备状态的基础口径。 + +### 1. 总体影响链路 + +```mermaid +flowchart TD + A[设备档案/主要设备/标准工时] --> B[设备数据采集] + B --> C[设备状态时长] + B --> D[程序工时/单件工时] + C --> E[设备利用率] + D --> F[性能开动率] + G[MES 报工/计划产量] --> H[产能利用率] + I[质检记录/良品不良品] --> J[产品合格率] + E --> K[OEE] + F --> K + J --> K + D --> L[工时异常报表] + M[条码拣配] --> N[齐套/发料/拣配状态] + N --> O[生产/装配看板] + P[关键工序标识] --> Q[质检/机加关键任务大屏] + R[班次/岗位/工位/考勤] --> S[缺勤人员大屏] +``` + +### 2. 对现有数据模型的冲击 + +| 新需求 | 新增或必须明确的数据 | 冲击对象 | 主要问题 | +|---|---|---|---| +| 设备档案管理 | 主要设备、参与 OEE、设备/工位关系、标准工时来源 | 设备档案、工位管理、工艺维护 | 标准工时放设备、工艺还是设备+工序能力表必须明确 | +| 设备数据采集 | 程序工时、单件工时、设备状态时长、程序号、采集时间 | `CaChe_Var`、历史设备数据、设备状态记录、工时报表 | 当前多为当前缓存或历史状态,缺少可直接算单件工时的任务绑定 | +| OEE 指标 | 计划产量、实际产量、设备工时、标准工时、标准单件工时、实际单件工时、良品数 | 机加看板、`board_view`、设备报表 | OEE 三个组成指标必须同设备、同日期、同班次,否则乘出来没有管理意义 | +| 工时异常报表 | 实际单件工时、标准单件工时、超出比例、异常原因 | 工时查询、工时校验、异常管控 | 设备采集工时与人工报工工时不一致时,谁作为异常依据需要确定 | +| 条码拣配 | 条码、物料、批次、任务、拣配人、拣配时间、状态写回 | 机加中心、装配中心、齐套看板 | 条码扫描会改变 `拣配状态/齐套/发料状态`,看板和生产任务必须同步 | +| 质检及时率 | 最后一次生产完成时间、报检时间、检验完成时间、超期天数 | 质检看板、生产日报-送检 | 以生产完成时间作为起算点,会改变现有“未清任务”定义 | +| 关键工序 | 工艺关键标识、任务快照、关键工序应检/未检/在制 | 工艺维护、生产任务、质检/机加大屏 | 关键工序如果只存在工艺库,会影响历史任务重算 | +| 缺勤人员 | 岗位、工位、人员、应到、实到、班次 | 班次管理、人员绑定、机加/装配大屏 | 不能从“没有报工”直接判断缺勤,必须有排班和考勤/上岗数据 | +| 装配及时送检 | 发料齐套时间、送检状态、送检时间、超期天数 | 装配中心、装配看板、质检任务 | 发料齐套后 2 天未送检会新增一种介于“可开工/待检”之间的风险状态 | + +### 3. OEE 不是一个单独公式,而是一组口径治理 + +当前讨论公式为: + +- 产能利用率(单台)= 实际产量 / 计划产量 * 100% +- 设备利用率(单台)= 设备工时 / 标准工时 +- 设备性能开动率(单台)= 标准单件工时 / 实际单件工时 +- 产品合格率(工位)= 良品数 / 总产量 +- OEE = 设备利用率 * 开动率 * 合格率 + +这些公式看起来简单,但真正的隐性需求是统一统计边界: + +1. **设备边界**:只算主要设备,还是所有设备都算。辅助设备、测试设备、维修设备是否排除。 +2. **时间边界**:自然日、班次日、订单周期、计划周期不能混用。 +3. **产量边界**:实际产量来自 MES 报工、设备计数还是质检数量。三者时间上可能不一致。 +4. **合格率边界**:良品数来自报工良品还是质检合格数。若质检晚于生产,日合格率会滞后。 +5. **标准工时边界**:标准工时可能来自工艺标准工时、设备能力标准、班次可用工时。三个字段不能都叫标准工时。 +6. **实际单件工时边界**:设备采集循环时间、设备运行时间/产量、人工报工工时/产量是不同口径。 + +因此 OEE 不能只在大屏上增加几个公式。必须先建立设备指标明细层,至少包含设备、工位、日期、班次、任务、物料、工序、计划产量、实际产量、良品、不良、标准工时、设备运行工时、标准单件工时、实际单件工时和采集质量标识。 + +### 4. 对已完成页面和看板的必要改造 + +| 页面/看板 | 必须新增或调整 | 原因 | +|---|---|---| +| `DeviceManagement/DeviceInformation` | 主要设备、是否参与 OEE、采集点位、标准工时来源 | 设备档案是设备采集和 OEE 的基础 | +| `SystemMaintenance/WorkstationManagement` | 工位与设备、人员、岗位的一对多关系 | 缺勤人员要显示岗位、工位、姓名,多工位需合并 | +| `ProcessManagement/ProcessProduct` / 工艺维护 | 是否关键工序、标准单件工时 | 质检和机加大屏需要关键工序汇总和明细 | +| `PlanManagement/SelfMakePlan/SelfMakePlandone` | 任务设备绑定、计划产量、标准工时字段确认 | 单台设备产能利用率需要按任务落到设备 | +| `ProductionManagement/MachiningCenter` | 条码拣配入口、拣配状态写回、设备采集任务绑定 | 机加及时拣配和设备采集都要关联生产任务 | +| `ProductionManagement/AssemblyCenter` | 条码拣配入口、发料齐套时间、送检状态 | 装配及时拣配和及时送检都要从这里进入 | +| `ProductionManagement/WorkHoursCheck` | 程序工时、设备工时、人工工时差异、异常确认 | 工时异常报表会反向要求工时校验解释差异 | +| `QualityManagement/QualityCenter` | 最后生产完成时间、报检时间、超期天数、关键工序 | 质检及时率和关键工序任务必须有来源 | +| `质检任务看板` | 质检及时率真实过程、超 2 天未检明细、关键工序汇总/明细 | 当前看板未完整实现及时率真实口径 | +| `机加设备生产运营看板` | OEE、设备利用率、开动率、合格率、关键工序任务、缺勤人员 | 现有设备状态和 OEE 仍不足以支撑新指标 | +| `装配任务看板` | 缺勤人员、及时送检任务颜色/排序、发料齐套后 2 天未送检 | 新需求直接改变装配现场大屏列表逻辑 | +| `TableTV` | 设备采集状态、单件工时、异常颜色 | 现场卡片应展示设备真实状态和工时风险 | +| `board_view` | 真实 OEE 替换样例、设备/产能/质量指标统一 | 综合大屏不能继续使用固定 OEE 样例 | + +### 5. 工时异常报表会反向推动工时体系重构 + +工时异常条件是“单件工时 > 标准工时”。这会带来三个隐性问题: + +1. **异常来源不只设备** + 单件工时超标可能来自设备状态异常、程序问题、刀具/工装、人员操作、物料质量、等待质检、等待发料。报表如果只列超标,不记录原因,会变成无法闭环的告警列表。 + +2. **需要区分程序工时和人工工时** + 程序工时用于判断设备加工效率;人工工时用于人工绩效和 SAP 工时上传。两者差异本身就是一个分析点,不能用程序工时直接覆盖人工报工。 + +3. **需要异常确认流程** + 如果报表用于管理考核,就必须支持确认:是否真实异常、原因分类、责任部门、处理说明、确认人、确认时间。否则数据会被质疑。 + +### 6. 条码拣配会改变齐套和开工状态 + +及时拣配(机加/装配)表面是扫码需求,实际会改动任务状态链: + +```mermaid +flowchart LR + A[条码扫描] --> B[识别物料/任务] + B --> C[更新拣配记录] + C --> D[更新拣配状态] + D --> E[计算齐套] + E --> F[影响发料状态] + F --> G[影响是否可开工] + G --> H[影响生产/装配看板] +``` + +如果扫码只记录日志,不写回 `拣配状态/齐套/发料状态`,看板仍然显示未齐套;如果扫码直接写回状态,但没有 SAP 库存校验,又可能造成 MES 显示已齐套、SAP 库存不足。因此需要明确 MES 与 SAP 谁作为库存和发料主口径。 + +### 7. 三类大屏的新增字段影响 + +| 大屏 | 新增指标 | 需要的新增字段/过程 | +|---|---|---| +| 一楼质检大屏 | 质检及时率、超 2 天未检、关键工序检验汇总/明细 | 最后生产完成时间、报检时间、检验完成时间、是否关键工序、超期天数 | +| 机加现场大屏 | 缺勤人员、关键工序任务汇总/明细、设备 OEE | 岗位、工位、姓名、应到/实到、是否关键工序、设备运行工时、单件工时 | +| 装配现场大屏 | 缺勤人员、及时送检任务列表、加急后排序、颜色区分 | 岗位、工位、姓名、发料齐套时间、送检状态、送检时间、超期天数 | + +### 8. 需要优先确认的问题 + +1. 设备采集数据由谁写入 MES,接口频率是多少。 +2. 设备采集如何绑定到 MES 任务,是靠设备+时间段、程序号、条码,还是人工绑定。 +3. 标准单件工时来自生产工艺,还是设备能力表。 +4. 实际产量以 MES 报工、设备计数、质检数量中的哪一个为准。 +5. 良品数以报工良品还是质检合格数为准。 +6. 质检及时率的“最后一次生产完成时间”取操作记录的报工、辅助结束,还是任务完成时间。 +7. 关键工序标识是否影响历史任务,建议只影响新下发任务或做任务快照。 +8. 缺勤人员的“应到”来源是班次绑定、排班表还是岗位配置。 +9. 装配“发料齐套后 2 天未送检”的发料齐套时间来自哪个表。 +10. 条码拣配是否需要 SAP 库存校验和失败重试。 + +## 十二、补充修正:新增需求必须同时判断“维护入口” + +前面的分析已经覆盖了工时、状态、SAP、报表、看板的连锁影响,但还需要补一个更基础的判断:客户提出一个报表或看板字段时,不等于只新增一个展示页面。必须同时判断这个字段从哪里来、由谁维护、在哪个页面维护。 + +如果不先确认维护入口,会出现三类问题: + +1. 报表页面有字段,但没有地方录入,最终只能写死、手工改库或长期为空。 +2. 看板显示了 KPI,但基础字段散落在多个页面,用户不知道该去哪里修正。 +3. 同一个字段在标准数据、订单数据、任务快照、SAP 同步表中重复维护,导致历史统计和当前查询对不上。 + +### 1. 判断框架 + +| 判断项 | 需要回答的问题 | 典型结论 | +|---|---|---| +| 字段性质 | 是主数据、订单过程数据、任务执行数据、外部同步数据、计算结果,还是人工确认结果 | 主数据进基础维护页;过程数据进业务页;计算结果进视图/报表 | +| 数据来源 | MES、SAP、设备采集、考勤/排班、人工维护,还是多来源融合 | 多来源字段必须记录来源和更新时间 | +| 维护责任人 | 工艺、计划、生产、质检、仓库、设备、班组长、系统管理员谁维护 | 决定页面权限和菜单归属 | +| 维护入口 | 现有页面能否承载,还是必须新建页面 | 优先扩展现有业务页面,缺口大时才新建维护页 | +| 历史影响 | 修改后是否影响已下发任务和历史报表 | 影响历史的字段要做任务快照或维护历史 | +| 看板影响 | 是否会改变已有 KPI 口径 | 看板过程必须同步改,不只改主系统页面 | + +### 2. 按字段类型划分维护位置 + +| 字段/能力类型 | 应优先维护的位置 | 不建议的做法 | +|---|---|---| +| 人员、岗位、班次、排班、出勤 | 人员管理、班次管理、工位人员绑定,必要时新增排班/出勤维护页 | 在机加/装配大屏里直接维护缺勤 | +| 工序、关键工序、标准工时、准备工时 | 标准工艺、生产工艺、工序基础数据 | 单独做一个脱离工艺的关键工序表但不和任务快照同步 | +| 设备、工位、采集点位、是否参与 OEE | 设备档案、工位管理、设备采集配置 | 把设备标准工时简单塞进设备档案并用于所有零件 | +| 生产订单过程字段 | 生产计划、排产、装配已排产需求、生产工艺 | 只在报表页维护,不写回业务主链路 | +| 质检处置字段 | 质检中心、不合格处置、序检收检 | 让步接收记录页反向维护质检结果 | +| SAP 同步字段 | SAP 同步表或 MES 扩展表,只读展示同步时间和状态 | 前端手工覆盖 SAP 字段但不留来源 | +| 人工确认字段 | 待办类页面维护,例如手续确认报表,同时记录确认人和时间 | 把确认状态隐藏在 SQL 过滤里,没有操作日志 | +| 统计/看板指标 | 统一视图、存储过程、日报快照 | 每个看板各写一套 SQL 重新定义口径 | + +### 3. 典型字段修正结论 + +| 需求点 | 修正结论 | +|---|---| +| 缺勤人员 | 必须先有“应到人员”和“实到人员”来源。应到来自班次/排班/岗位工位人员绑定,实到来自考勤/上岗/登录/报工。若现有系统没有排班入口,需要新增或扩展排班/出勤维护页;看板只查询缺勤结果。 | +| 关键工序 | 属于工艺属性,应在标准工艺和生产工艺维护。生产任务下发时快照 `是否关键工序`,质检和机加大屏读取快照。不能只在大屏或质检报表里临时标记。 | +| 标准单件工时 | 优先来自标准工艺/生产工艺,必要时增加设备+工序能力表。设备档案只维护设备能力参数和 OEE 参与属性。 | +| 发料齐套时间 | 如果来自 SAP,必须同步到 MES 并记录同步时间;如果允许人工修正,应放在生产计划/装配排产业务链路或装配已排产需求页,并保留维护历史。 | +| 装配完成时间 | 规则计算字段可以在装配已排产需求中显示;人工调整时要作为订单过程字段保存,不应只存在前端。 | +| 预计可执行时间 | 依赖 SAP 缺件、主子订单关系和人工判断。可以在及时齐套跟踪页维护,但要记录维护人、维护时间和依据。 | +| 让步接收 | 质检结果字段应在质检中心或不合格处置维护;让步接收记录页只做查询、导出和追溯。 | +| 外协供应商/SAP 收货单号 | 应在外协任务、序检收检或外协收货链路补字段;供应商质量报表只消费这些字段。 | +| OEE | OEE 是计算结果,不是人工维护字段。基础数据分别来自设备采集、MES 报工、质检记录、工艺标准工时和班次规则。 | + +### 4. 对已完成页面的新增影响 + +| 现有页面 | 新增维护责任 | +|---|---| +| `ProcessManagement/ProcessProduct` 生产工艺 | 维护订单级关键工序、标准工时、标准工艺带出后的生产工艺草稿;保存时形成任务可用快照 | +| `ProcessManagement/ProcessesDevelop` 制定标准工艺 | 维护标准关键工序、标准单件工时、准备工时,作为生产工艺默认来源 | +| `SystemMaintenance/WorkstationManagement` | 补工位与设备、岗位、人员关系,支持缺勤和 OEE 维度 | +| `BasicData/ShiftManagement` 或现有班次管理 | 支持班次时间、跨天规则、应到人员或排班规则 | +| `BasicData/PersonnelManagement`、人员角色绑定 | 支持人员岗位、班组、工位范围,为缺勤和权限提供来源 | +| `ProductionManagement/AssemblyCenter` | 维护/展示装配执行、发料、送检、异常、手续确认相关过程字段 | +| `ProductionManagement/MachiningCenter` | 维护/展示机加扫码、设备绑定、报工、异常、关键工序执行状态 | +| `QualityManagement/QualityCenter` | 维护质检结果、让步接收、送检/已检数量、关键工序质检状态 | +| `DeviceManagement/DeviceInformation` | 维护主要设备、采集点位、OEE 参与标识,不独立承担所有标准工时 | + +### 5. 后续评估新增需求的强制问题 + +后续每个新需求都要在开发前回答: + +1. 这个字段是展示、维护、确认,还是计算。 +2. 如果要维护,是否已有页面可以维护。 +3. 如果新增页面,它是查询页、待办页,还是主数据维护页。 +4. 数据是否需要修改历史;如果需要,是否留维护日志。 +5. 是否需要任务快照,避免标准数据变化影响历史任务。 +6. 是否影响生产任务看板、装配看板、质检看板、机加看板或 `board_view`。 + +只有这六个问题明确后,才能判断是“新增页面”、 “扩展现有页面”、 “新增维护页”,还是“只改 SQL/视图/看板口径”。 diff --git a/需求分析_自制件与工位汇总表.md b/doc_old/需求分析_自制件与工位汇总表.md similarity index 100% rename from 需求分析_自制件与工位汇总表.md rename to doc_old/需求分析_自制件与工位汇总表.md diff --git a/doc_old/项目功能技术路线数据库分析报告_2026-05-22.md b/doc_old/项目功能技术路线数据库分析报告_2026-05-22.md new file mode 100644 index 0000000..1cd36bd --- /dev/null +++ b/doc_old/项目功能技术路线数据库分析报告_2026-05-22.md @@ -0,0 +1,942 @@ +# MES 主系统与看板项目综合分析报告 + +生成日期:2026-05-22 +分析范围: + +- 主系统:`MES_Manage_View_V20` +- 同级看板项目:`board_view`、`TableTV`、`机加设备生产运营看板`、`机加设备生产运营看板二`、`生产任务看板`、`装配任务看板`、`质检任务看板` +- 数据库脚本:更新后的 `MES_Manage_View_V20/script.sql`,最后修改时间为 2026-05-22 13:23:04 + +排除范围: + +- 所有 `.7z`、`.zip` 压缩包和备份包 +- `dist/`、`node_modules/` 构建产物和依赖目录 +- 同级旧版主系统副本 `MacroinfManage_MES`、`test`、`新建文件夹` 未纳入本轮业务分析 + +## 1. 总体结论 + +当前目录不是单一前端项目,而是一组围绕同一 MES 数据库和 `.ashx` 网关运行的前端应用: + +- `MES_Manage_View_V20` 是主业务系统,覆盖计划、工艺、生产、质量、设备、外协、工时、系统权限等完整 MES 功能。 +- 上一层目录中的多个项目是看板端,用于大屏展示生产、机加设备、装配、质检、设备状态等实时指标。 +- 主系统和新版看板共用同一个后端入口:`https://192.168.2.92:10101/submit/MESCommonBase.ashx`。 +- 主系统和看板项目都采用“前端传入存储过程名 + 参数,后端 `.ashx` 执行 SQL Server 存储过程”的协议。 +- 更新后的 `script.sql` 已包含看板端依赖的关键存储过程,尤其是 `机加设备生产运营看板_*`、`生产任务综合看板_*`、`装配中心任务看板_*`、`质量任务看板_*` 等。 +- 但主系统页面仍有 16 个前端调用过程未在当前 `script.sql` 中找到,主要集中在产品结构、摄像头/设备查看权限、点检类型、设备重复校验等非看板功能。 + +数据库对象统计以更新后的 `script.sql` 为准: + +| 对象类型 | 数量 | +| --- | ---: | +| 表 | 50 | +| 视图 | 26 | +| 存储过程 | 345 | +| 函数 | 至少 1 个:`计算班次重叠秒数` | + +## 2. 项目组成 + +### 2.1 主系统 `MES_Manage_View_V20` + +技术栈: + +- Vue 2.7.16 +- Vue Router 3.6.5 +- Vuex 3.6.2 +- Element UI 2.15.14 +- Webpack 5 +- Axios 0.21.4 +- ECharts、FullCalendar、TinyMCE、xlsx、pdfjs、mqtt 等 + +定位: + +主系统是管理端和业务操作端,面向计划员、工艺人员、生产现场、质检人员、设备管理人员、系统管理员。 + +核心目录: + +| 路径 | 说明 | +| --- | --- | +| `src/views` | 业务页面,共 76 个 `.vue`,业务页面约 67 个 | +| `src/utils/request.js` | 主 Axios 实例,读取 `window.dt_Config.serverAddress` | +| `src/utils/curd.js` | `CreateData`、`ExecDatabase`、表单/表格通用方法、设备 API | +| `src/router` | 固定路由、动态路由、数据库菜单组件映射 | +| `src/store` | 登录、角色、路由、标签页等状态 | +| `static/config.js` | 运行时服务地址配置 | +| `script.sql` | SQL Server 表、视图、存储过程 | + +主系统接口地址: + +```js +window.dt_Config = { + serverAddress: 'https://192.168.2.92:10101/submit/MESCommonBase.ashx', + baseURL: 'https://192.168.2.92:10101', + baseURLB1: 'https://192.168.2.92:9996/b1s', + baseURLtm: 'https://192.168.2.92:9996/openapi' +} +``` + +### 2.2 旧版综合看板 `board_view` + +技术栈: + +- Vue 2.5 +- Webpack 3 +- `@jiaminghi/data-view` +- ECharts 5 +- `vue-seamless-scroll` +- Axios +- `speak-tts` + +定位: + +旧版综合生产监控大屏,页面主体为 `src/views/left.vue`。它展示订单看板、装配看板、未完成工序、环境/水电气、OEE、质量等综合信息。 + +配置: + +```js +window.ConnectConfig = { + url2: 'https://192.168.2.92:10101', + requestConfig: '/submit/MESCommonBase.ashx', + zonePageInterval: 10000, + iframeUrl: 'http://192.168.2.92:10008' +} +``` + +注意:`request.js` 里仍保留 `window.ConnectConfig.url` 的实例,但当前配置只启用了 `url2`,实际可用的是 `instance2`。 + +主要调用过程: + +- `看板_主页六个关键数据_查询` +- `看板_左上订单看板_表格_查询` +- `看板_左中装配看板_表格_查询` +- `看板_左下未完成看板_表格_查询` +- `看板_右上合同看板_表格_查询` +- `看板_右下质量看板_表格_查询` +- `看板_右下质量看板_饼图_查询` +- `看板_中间主体订单_表格_查询` +- `看板_中间主体订单详情_表格_查询` +- `看板_中间实时OEE数据展示_查询` +- `看板_左上计划执行情况_曲线_查询` +- `Event_CaChe_Var_看板查询` +- `设备管理_设备状态_查询` + +### 2.3 通用表格看板 `TableTV` + +技术栈: + +- Vue 3.5 +- Vite 5 +- Element Plus +- TDesign Vue Next +- Pinia +- Axios + +定位: + +通用工位/任务卡片式滚动看板。`public/config.js` 中配置了标题和目标 SQL: + +```js +window.g = { + API_WEB_URL: 'https://192.168.2.92:10101', + TV_TITLE: '元利流体 · 生产计划看板', + TV_SQL: 'TV_视图看板_查询' +} +``` + +实际代码观察: + +- `src/views/index.vue` 当前直接调用 `设备管理_设备状态_查询`。 +- `TV_SQL` 当前未在页面取数逻辑中使用。 +- 页面每 5 秒刷新一次数据。 + +这是一个配置与实现不一致的点:如果设计目标是可配置 SQL 看板,应把 `window.g.TV_SQL` 接入 `fetchData`。 + +### 2.4 机加设备生产运营看板一 + +路径:`../机加设备生产运营看板` + +技术栈: + +- Vue 3.5 +- Vite 5 +- Element Plus +- TDesign Vue Next +- `@kjgl77/datav-vue3` +- ECharts 6 +- Axios +- Pinia + +定位: + +机加设备生产运营看板一,展示设备运行状态、计划执行率、未及时开工、不良品、当天完成、设备任务与明细。 + +配置: + +```js +window.g = { + API_WEB_URL: 'https://192.168.2.92:10101' +} +``` + +主要调用过程: + +- `机加设备生产运营看板_设备任务查询` +- `机加设备生产运营看板_不良品查询` +- `质量任务看板_当天已完成汇总` +- `机加设备生产运营看板_当天已完成明细` +- `机加设备生产运营看板_设备运行状态查询` +- `机加设备生产运营看板_未及时开工查询` +- `机加设备生产运营看板_计划执行率` + +### 2.5 机加设备生产运营看板二 + +路径:`../机加设备生产运营看板二` + +技术栈与看板一基本一致。 + +定位: + +机加设备生产运营看板二,侧重加急任务、机加在制任务及机加在制扩展视图。 + +主要调用过程: + +- `机加设备生产运营看板_加急任务查询` +- `机加设备生产运营看板_机加在制查询` +- `机加设备生产运营看板_机加在制查询2` + +### 2.6 生产任务看板 + +路径:`../生产任务看板` + +技术栈: + +- Vue 3.5 +- Vite 5 +- Element Plus +- TDesign Vue Next +- ECharts 6 +- Axios + +定位: + +生产任务综合看板,关注齐套、无工艺未排产、加急任务、未及时开工、未按期齐套等生产计划执行风险。 + +主要调用过程: + +- `生产任务综合看板_按期齐套率` +- `生产任务综合看板_未排产无工艺查询` +- `生产任务综合看板_加急任务查询` +- `生产任务综合看板_未及时开工查询` +- `生产任务综合看板_未按期齐套任务` + +### 2.7 装配任务看板 + +路径:`../装配任务看板` + +技术栈: + +- Vue 3.5 +- Vite 5 +- Element Plus +- TDesign Vue Next +- `datav-vue3` +- ECharts 6 + +定位: + +装配中心任务大屏,展示异常未关闭、发货状态、在制品缺件、加急任务、装配任务、装配合格率、已完成任务等。 + +主要调用过程: + +- `装配中心任务看板_异常未关闭总数` +- `装配中心任务看板_发货状态查询` +- `装配中心任务看板_在制品缺件查询` +- `装配中心任务看板_加急任务总数查询` +- `装配中心任务看板_装配任务查询` +- `装配中心任务看板_装配合格率` +- `装配中心任务看板_已完成任务` + +补充: + +该项目内还有 `ProductionTaskDashboard.vue`,复用了生产任务综合看板的 5 个过程,说明装配看板项目中包含生产任务综合看板的备用或切换页面。 + +### 2.8 质检任务看板 + +路径:`../质检任务看板` + +技术栈: + +- Vue 3.5 +- Vite 5 +- Element Plus +- TDesign Vue Next +- ECharts 6 + +定位: + +质量任务看板,关注未完成质检任务、不同类型任务统计、未完成明细、当天已完成汇总与明细。 + +主要调用过程: + +- `质量任务看板_未完成统计` +- `质量任务看板_未完成明细查询` +- `质量任务看板_当天已完成汇总` +- `质量任务看板_当天已完成明细` + +## 3. 统一接口协议 + +### 3.1 主系统 Vue2 协议 + +主系统通过 `src/utils/curd.js` 提供全局方法: + +```text +业务页面 + -> this.CreateData(type, procedureName, params, pageSize, pageList) + -> this.ExecDatabase(data) + -> axios POST window.dt_Config.serverAddress + -> MESCommonBase.ashx + -> SQL Server 存储过程 +``` + +请求对象主要字段: + +| 字段 | 说明 | +| --- | --- | +| `type` | 操作类型。常见为 `11` 查询、`12` 写入/更新、`2001` 导出。准确语义由后端 `.ashx` 定义。 | +| `name` | 存储过程名 | +| `param` | 参数 JSON 字符串,数组项包含 `name/value/type/output` | +| `pageSize` | 分页大小 | +| `pageList` | 页码或分页参数 | +| `UserID` | 当前用户 ID | +| `UserName` | 当前用户姓名 | +| `ModularID` | 当前路由路径 | + +### 3.2 新版 Vue3 看板协议 + +Vite/Vue3 看板项目通过 `src/utils/curdVue3.js` 或 `src/utils/curd.js` 注入: + +- `CreateData` +- `ExecDatabase` +- `ExecDatabaseByParam` + +接口地址统一为: + +```js +window.g.API_WEB_URL + '/submit/MESCommonBase.ashx' +``` + +大多数新版看板请求超时时间为 5 秒,明显短于主系统的 25 分钟超时,更适合大屏定时刷新,但也要求看板查询过程必须足够快。 + +### 3.3 旧版 `board_view` 协议 + +旧版看板使用 `window.ConnectConfig.url2 + requestConfig` 访问同一 `.ashx` 网关,通过自定义 `CreateData1` 调用 `看板_*` 过程。 + +## 4. 主系统业务功能 + +### 4.1 系统维护 + +页面: + +- 人员管理 +- 角色维护 +- 菜单管理 +- 工位管理 +- 组织管理 +- 操作日志 + +核心数据: + +- `登录基础数据_人员信息` +- `登录基础数据_角色信息` +- `登录基础数据_人员权限角色` +- `登录基础数据_二级菜单` +- `登录基础数据_部门` +- `工位人员绑定表` +- `MES_资源主数据` +- `_日志` + +功能: + +- 登录、人员、角色、菜单、权限配置。 +- 数据库菜单驱动动态路由。 +- 工位基础信息和工位人员绑定。 +- 操作日志查询。 + +### 4.2 计划排产 + +页面: + +- 自制件计划 +- 自制件排产 +- 自制件已排产 +- 装配计划 +- 装配执行计划 +- 优先级排产 +- 计划外壳 +- 生产订单关闭 + +核心数据: + +- `MES_接口_生产计划` +- `MES_接口_生产计划_生产任务` +- `计划任务视图` +- `View_生产订单_MES` +- `View_生产订单全部(包括已关闭)` + +功能: + +- 查询生产订单和任务。 +- 按自制件属性区分机加、装配。 +- 派工、二次派工、单任务派工。 +- 计划时间调整、说明维护、优先级管理。 +- 订单关闭与 SAP B1 状态协同。 + +### 4.3 工艺管理 + +页面: + +- 工序管理 +- 标准工艺维护 +- 生产工艺维护 +- 工艺查询 +- 生产订单工艺下发 +- 零件图纸、工艺图纸、采购图纸查看/上传/删除 + +核心数据: + +- `基础表_工序` +- `车间生产管理工艺_零件工序_工艺库` +- `车间生产管理工艺_零件生产工艺_工艺库` +- `物料基础数据_零件图纸` +- `物料基础数据_工艺图纸` +- `物料基础数据_零件图纸删除记录` +- `View_标准工艺视图` +- `View_生产工艺视图` +- `View_图纸视图` + +功能: + +- 标准工艺制定和复制。 +- 生产工艺按订单生成、调整、排序、启用。 +- 图纸上传下载与删除记录。 +- 生产任务下发前的工艺准备。 + +### 4.4 生产管理 + +核心页面: + +- 加工中心 +- 装配中心 +- 生产任务管理 +- 装配任务管理 +- 生产任务汇总 +- 装配任务汇总 +- 生产计划跟踪 +- 外协管理 +- 外协报表 +- 工时查询 +- 工时统计 +- 工时校验 +- 工时编辑 +- 加急件 +- 拣配任务 +- 班次管理 +- 过程异常管控 + +核心数据: + +- `MES_接口_生产计划` +- `MES_接口_生产计划_生产任务` +- `YL_加工中心_操作记录表` +- `YL_加工中心_报工记录` +- `生产管理_工时校验_校验工时表` +- `班次表` +- `班次人员绑定表` +- `设备信息缓存表` +- `View_生产工时视图` +- `View_校验后的生产工时` +- `View_外协报表视图` + +功能: + +- 现场开工、暂停、继续、报工、送检、完工。 +- 工位/人员/任务绑定。 +- 外协发料、收料、打印、备注、历史和质检记录。 +- 工时校验、批量校验、异常工时录入。 +- 加急、拣配、任务跟踪和汇总。 + +### 4.5 质量管理 + +页面: + +- 质量中心 +- 质检明细 +- 检验标准 +- 不合格品处置 +- 来料检验 +- 序检收检 +- 终检 +- 销售退货检 +- 其他入库检验 +- 原材料退库检验 + +核心数据: + +- `YL_质量检验_质检记录` +- `YL_质量检验_检测标准` +- `YL_质量检验_量具信息` +- `YL_质量检验_质检记录_检测零件` +- `YL_质量检验_质检记录_检测数据` +- `YL_质量检验_不合格品处理` +- `质量检验_质检任务_SAP` +- `View_质检明细` +- `View_质量检验_质检记录` +- `View_终检状态` + +功能: + +- 质检任务查询和处理。 +- 检测标准维护。 +- 多零件、多项目检测数据记录。 +- 合格、不合格、让步放行、报废统计。 +- 不合格品处理流程。 +- 与 SAP B1/TM 接口协同。 + +### 4.6 设备管理 + +页面: + +- 设备信息 +- 设备实时数据 +- 设备历史数据 +- 设备状态 + +核心数据: + +- `YL_设备管理_设备台账` +- `YL_设备管理_维修记录` +- `YL_设备管理_工时记录` +- `历史_工位设备状态每分钟记录` +- `历史_设备数据_定时` +- `CaChe_Var` +- `报警_记录_历史` +- `报警_记录_历史_缓存` + +功能: + +- 设备台账维护。 +- 设备运行状态和历史采集数据查询。 +- 报警、缓存变量、OEE/状态看板支撑。 + +## 5. 数据库结构 + +### 5.1 表清单 + +更新后的 `script.sql` 包含 50 张表: + +- `_日志` +- `Attachments` +- `BOM数据` +- `CaChe_Var` +- `MES_接口_工艺路线主数据` +- `MES_接口_生产计划` +- `MES_接口_生产计划_生产任务` +- `MES_资源主数据` +- `YL_基础表_数据字典` +- `YL_加工中心_报工记录` +- `YL_加工中心_操作记录表` +- `YL_设备管理_工时记录` +- `YL_设备管理_设备台账` +- `YL_设备管理_维修记录` +- `YL_质量检验_不合格品处理` +- `YL_质量检验_不合格品处理_处理节点` +- `YL_质量检验_检测标准` +- `YL_质量检验_量具信息` +- `YL_质量检验_质检记录` +- `YL_质量检验_质检记录_检测零件` +- `YL_质量检验_质检记录_检测数据` +- `班次表` +- `班次人员绑定表` +- `报警_记录_历史` +- `报警_记录_历史_缓存` +- `车间生产管理工艺_零件工序_工艺库` +- `车间生产管理工艺_零件生产工艺_工艺库` +- `登录基础数据_部门` +- `登录基础数据_二级菜单` +- `登录基础数据_角色信息` +- `登录基础数据_人员权限角色` +- `登录基础数据_人员信息` +- `工位人员绑定表` +- `基础表_工序` +- `基础数据_设备工位点检表` +- `记录_日志_项目运行日志` +- `历史_工位设备状态每分钟记录` +- `历史_设备数据_定时` +- `流程表` +- `流程节点表` +- `流程完成记录表` +- `流程转办表` +- `设备信息缓存表` +- `审批记录表` +- `生产管理_工时校验_校验工时表` +- `物料基础数据_工艺图纸` +- `物料基础数据_零件图纸` +- `物料基础数据_零件图纸删除记录` +- `物料数据` +- `质量检验_质检任务_SAP` + +### 5.2 视图清单 + +更新后的 `script.sql` 包含 26 个视图: + +- `v_CurrentProductionStatus` +- `View_报工人员` +- `View_标准工艺视图` +- `View_工位人员绑定数` +- `View_基础数据_工位` +- `View_设备工位人员` +- `View_生产订单_MES` +- `View_生产订单Temp_ERP` +- `View_生产订单全部(包括已关闭)` +- `View_生产订单完工` +- `View_生产工时视图` +- `View_生产工艺视图` +- `View_生产计划零件图纸视图` +- `View_图纸视图` +- `View_外协报表视图` +- `View_外协质检` +- `View_校验后的生产工时` +- `View_账号权限信息` +- `View_质检明细` +- `View_质量检验_不合格品处理` +- `View_质量检验_质检记录` +- `View_质量检验_质检记录_外协收检` +- `View_终检状态` +- `View_装配信息` +- `登录基础数据_管理人员权限视图` +- `计划任务视图` + +### 5.3 存储过程分布 + +| 前缀/业务域 | 数量 | +| --- | ---: | +| `MES_` | 70 | +| `生产管理_` | 39 | +| `工艺管理_` | 38 | +| `质量管理_` | 21 | +| `工时...` | 20 | +| `计划排产_` | 17 | +| `sp_` 审批/流程/分页类 | 13 | +| `看板_` 旧版综合看板 | 11 | +| `设备管理_` | 10 | +| `Event_` 采集/报警/日志事件 | 10 | +| `机加设备生产运营看板_` | 9 | +| `菜单...` | 9 | +| `人员管理_` | 7 | +| `usp_` 工时计算/校验辅助 | 7 | +| `装配中心任务看板_` | 7 | +| `生产任务综合看板_` | 6 | +| `质量任务看板_` | 4 | +| `TV_` | 3 | +| `WEB_` | 2 | +| 其他 | 42 | + +### 5.4 看板过程清单 + +旧版综合看板: + +- `看板_主页六个关键数据_查询` +- `看板_左上订单看板_表格_查询` +- `看板_左上计划执行情况_曲线_查询` +- `看板_左中装配看板_表格_查询` +- `看板_左下未完成看板_表格_查询` +- `看板_右上合同看板_表格_查询` +- `看板_右下质量看板_表格_查询` +- `看板_右下质量看板_饼图_查询` +- `看板_中间主体订单_表格_查询` +- `看板_中间主体订单详情_表格_查询` +- `看板_中间实时OEE数据展示_查询` + +机加设备生产运营看板: + +- `机加设备生产运营看板_设备任务查询` +- `机加设备生产运营看板_不良品查询` +- `机加设备生产运营看板_当天已完成明细` +- `机加设备生产运营看板_设备运行状态查询` +- `机加设备生产运营看板_未及时开工查询` +- `机加设备生产运营看板_计划执行率` +- `机加设备生产运营看板_加急任务查询` +- `机加设备生产运营看板_机加在制查询` +- `机加设备生产运营看板_机加在制查询2` + +生产任务综合看板: + +- `生产任务综合看板_按期齐套率` +- `生产任务综合看板_未排产无工艺查询` +- `生产任务综合看板_加急任务查询` +- `生产任务综合看板_未及时开工查询` +- `生产任务综合看板_未及时开工查询_Count` +- `生产任务综合看板_未按期齐套任务` + +装配中心任务看板: + +- `装配中心任务看板_异常未关闭总数` +- `装配中心任务看板_发货状态查询` +- `装配中心任务看板_在制品缺件查询` +- `装配中心任务看板_加急任务总数查询` +- `装配中心任务看板_装配任务查询` +- `装配中心任务看板_装配合格率` +- `装配中心任务看板_已完成任务` + +质量任务看板: + +- `质量任务看板_未完成统计` +- `质量任务看板_未完成明细查询` +- `质量任务看板_当天已完成汇总` +- `质量任务看板_当天已完成明细` + +TV/设备看板: + +- `TV_视图看板_查询` +- `TV_视图看板2楼_查询` +- `TV_视图看板仓库_查询` +- `设备管理_设备状态_查询` +- `Event_CaChe_Var_看板查询` + +本轮核对结果:看板端 36 个关键调用过程在更新后的 `script.sql` 中全部存在。 + +## 6. 核心业务数据流 + +### 6.1 计划到执行 + +```text +SAP/ERP 生产计划 + -> MES_接口_生产计划 + -> MES_接口_生产计划_生产任务 + -> 工艺维护/生产工艺下发 + -> 计划排产/派工 + -> 加工中心/装配中心执行 + -> 报工/质检/入库/订单关闭 +``` + +关键字段: + +- `订单编号` +- `合同号` +- `计划号` +- `TaskAID` +- `阶段标识` +- `工序名称` +- `指派对象` +- `计划开始时间` +- `计划完成时间` +- `任务状态` +- `完成数量` +- `合格数量` +- `不合格数量` + +### 6.2 工艺到任务 + +```text +基础表_工序 + -> 标准工艺库 + -> 生产工艺库 + -> 生产订单工艺任务下发 + -> MES_接口_生产计划_生产任务 +``` + +关键表: + +- `基础表_工序` +- `车间生产管理工艺_零件工序_工艺库` +- `车间生产管理工艺_零件生产工艺_工艺库` + +### 6.3 生产工时 + +```text +现场开工/暂停/继续/报工 + -> YL_加工中心_操作记录表 + -> YL_加工中心_报工记录 + -> 工时校验 + -> 生产管理_工时校验_校验工时表 + -> 工时统计/导出/上传 +``` + +关键过程: + +- `usp_ValidateWorkTime` +- `usp_BatchValidateWorkTime` +- `usp_CalculateShiftTime` +- `usp_CalculateUploadMinutes` +- `工时统计_任务工时_查询` +- `工时统计_设备工时_查询` +- `工时统计_项目工时_查询` +- `工时统计_作业者工时_查询` + +### 6.4 质量检验 + +```text +生产任务/质检任务 + -> YL_质量检验_质检记录 + -> YL_质量检验_质检记录_检测零件 + -> YL_质量检验_质检记录_检测数据 + -> 合格/不合格/让步/报废 + -> 不合格品处置或 SAP/TM 回写 +``` + +关键表: + +- `YL_质量检验_检测标准` +- `YL_质量检验_质检记录` +- `YL_质量检验_质检记录_检测零件` +- `YL_质量检验_质检记录_检测数据` +- `质量检验_质检任务_SAP` + +### 6.5 看板数据流 + +```text +MES 主业务表/视图 + -> 看板专用存储过程 + -> MESCommonBase.ashx + -> Vue2/Vue3 看板定时刷新 + -> 大屏指标、滚动表格、图表 +``` + +看板常用数据来源: + +- `View_生产订单_MES` +- `View_生产工时视图` +- `View_生产工艺视图` +- `View_质检明细` +- `v_CurrentProductionStatus` +- `MES_接口_生产计划` +- `MES_接口_生产计划_生产任务` +- `YL_加工中心_操作记录表` +- `YL_质量检验_质检记录` +- `历史_设备数据_定时` +- `CaChe_Var` + +## 7. 主系统与看板关系 + +| 维度 | 主系统 | 看板端 | +| --- | --- | --- | +| 主要使用者 | 计划、工艺、生产、质检、设备、管理员 | 车间、管理层、现场展示屏 | +| 操作方式 | 表单、表格、弹窗、日历、文件上传下载 | 只读大屏、自动刷新、滚动列表、图表 | +| 技术栈 | Vue2 + Webpack + Element UI | Vue2/Webpack/DataV 或 Vue3/Vite/Element Plus/TDesign | +| 接口 | `window.dt_Config.serverAddress` | `window.g.API_WEB_URL` 或 `window.ConnectConfig.url2` | +| 数据协议 | `CreateData + ExecDatabase` | 同协议或简化封装 | +| 主要过程 | 计划/生产/质量/设备/系统管理过程 | `看板_*`、`*_任务看板_*`、`机加设备生产运营看板_*` | +| 数据权限 | 登录、角色、动态菜单 | 多数看板不走完整登录权限,直接读接口 | + +## 8. 当前风险与问题 + +1. 主系统仍有 16 个前端调用过程未包含在当前 `script.sql` + +缺失清单: + +- `Prog_MES_SingleTaskPlanned` +- `WEB_报警查询_未读报警记录_查询` +- `WEB_报警查询_未读报警记录_未读条数查询` +- `WEB_基本表_产品结构_查询` +- `WEB_基本表_产品结构_删除` +- `WEB_基本表_产品结构_新增` +- `WEB_基本表_产品结构_修改` +- `WEB_人员设备查看权限_查询` +- `WEB_人员设备查看权限_权限切换` +- `WEB_人员摄像头查看权限_权限切换` +- `WEB_摄像头查看权限_查询` +- `产品关系_变更节点排序` +- `登录基础数据_人员信息_切换是否用户` +- `点检类型_查询` +- `工艺名称_查询` +- `设备管理_设备信息_验证工位号是否重复` + +2. 看板 SQL 已补齐,但刷新压力要评估 + +新版看板多数 5 秒刷新一次。如果多个大屏同时打开,`MESCommonBase.ashx` 和 SQL Server 会承受周期性查询压力。看板过程应避免重 JOIN、避免全表扫描,必要时用缓存表或汇总表。 + +3. `TableTV` 配置与实现不一致 + +`public/config.js` 配置了 `TV_SQL: 'TV_视图看板_查询'`,但当前页面直接调用 `设备管理_设备状态_查询`。如果希望“一套 TableTV 通过配置切换不同 SQL”,需要修正实现。 + +4. 编码问题仍然存在 + +主系统和旧版 `board_view` 中大量中文在默认 PowerShell 输出为乱码。用 `-Encoding UTF8` 可正常读取部分文件,但历史文件可能混有不同编码。维护过程名和中文字段时要格外谨慎。 + +5. 认证与权限边界薄弱 + +主系统 Cookie 中的 `Admin-Token` 更像角色编号;新版看板多数直接读接口,不走完整登录权限。如果看板部署在内网之外,需要后端加白名单、token 或网关控制。 + +6. 多项目重复代码明显 + +多个 Vite 看板项目复制了相同的: + +- `src/utils/request.js` +- `src/utils/curd.js` +- `src/utils/curdVue3.js` +- `src/router` +- `src/store` +- 静态资源和配置结构 + +后续维护时容易出现一个看板修了协议,其他看板未同步的问题。 + +7. 主系统超时时间过长,看板超时时间偏短 + +- 主系统:1500000ms,约 25 分钟。 +- 新版看板:5000ms,约 5 秒。 + +建议对接口分层配置:普通业务、导出、看板查询分别设置合理超时。 + +## 9. 建议技术路线 + +### 9.1 短期 + +- 以更新后的 `script.sql` 为基础,补齐主系统缺失的 16 个过程。 +- 为看板过程建立清单和刷新频率表,确认每个过程的平均耗时。 +- 修正 `TableTV` 的 `TV_SQL` 未生效问题,或者删除无效配置避免误导。 +- 保留当前 `.ashx + 存储过程` 架构,先稳定生产。 +- 将看板项目部署说明补全:端口、访问路径、`public/config.js`、构建命令、后端地址。 + +### 9.2 中期 + +- 抽取 Vue3 看板公共模板,统一 `request/curdVue3/router/store`。 +- 对看板 SQL 建立缓存或中间汇总表,降低实时查询压力。 +- 主系统建立“页面-过程-表/视图”映射文档,优先覆盖加工中心、质量中心、外协、工时校验、排产。 +- 对 `.ashx` 返回结构、错误码、超时、登录失效做统一拦截。 +- 清理乱码和历史备份文件,确认源码统一 UTF-8。 + +### 9.3 长期 + +- 后端从“前端直接传过程名”逐步演进为明确业务 API。 +- 建立数据库版本管理机制,按版本维护增量 SQL 和回滚脚本。 +- 看板数据进入独立只读 API 或缓存服务,避免大屏直接冲击业务库。 +- SAP B1、TM、设备/PLC 接口统一收敛到后端服务层。 +- 建立权限模型:主系统、看板、设备接口分层授权。 + +## 10. 接手排查路径 + +主系统页面问题: + +1. 找页面:`MES_Manage_View_V20/src/views/<模块>/<页面>/index.vue` +2. 搜索 `CreateData(`,确认存储过程名。 +3. 在 `script.sql` 搜索该过程。 +4. 检查过程返回列名是否与前端表格字段一致。 +5. 检查 `static/config.js` 服务地址。 + +看板页面问题: + +1. 找同级看板目录。 +2. 查看 `public/config.js` 或 `static/config.js`。 +3. 搜索 `queryDashboardData(`、`CreateData(`、`ExecDatabaseByParam(`。 +4. 在 `script.sql` 中定位对应看板过程。 +5. 检查过程耗时、返回字段、刷新频率。 +6. 若是 `TableTV`,注意当前代码没有使用 `TV_SQL`。 + +数据库问题: + +1. 先确认 `script.sql` 版本。 +2. 看过程是否存在。 +3. 看过程依赖的视图和表是否存在。 +4. 看字段名是否与前端一致。 +5. 看看板过程是否有全表扫描或复杂排序。 + + diff --git a/script.sql b/script.sql deleted file mode 100644 index 536fd8389c3e6145ca630dff91441a035c2e90eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1606748 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 diff --git a/src/views/AnomalousManagement/AssemblyPunctualInspection/index.vue b/src/views/AnomalousManagement/AssemblyPunctualInspection/index.vue new file mode 100644 index 0000000..3c65fa6 --- /dev/null +++ b/src/views/AnomalousManagement/AssemblyPunctualInspection/index.vue @@ -0,0 +1,267 @@ + + + + + diff --git a/src/views/AnomalousManagement/OutPunctualWork/index.vue b/src/views/AnomalousManagement/OutPunctualWork/index.vue new file mode 100644 index 0000000..d64f150 --- /dev/null +++ b/src/views/AnomalousManagement/OutPunctualWork/index.vue @@ -0,0 +1,489 @@ + + + + \ No newline at end of file diff --git a/src/views/AnomalousManagement/PunctualWork/index.vue b/src/views/AnomalousManagement/PunctualWork/index.vue index 4819aa5..8e722c5 100644 --- a/src/views/AnomalousManagement/PunctualWork/index.vue +++ b/src/views/AnomalousManagement/PunctualWork/index.vue @@ -64,6 +64,14 @@ + + +

+ +
+ 生产订单: + + 销售订单: + + 产品编码: + + 计划号: + + 自制件属性: + + + + + + + + 外协状态: + + + + + + + + 加急状态: + + + + + + 单据状态: + + + + + + + + 查询 +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+ 生产订单 + + + +
+
+ 加急数量 + + + +
+
+ 物料编号 + + + +
+
+
+
+ +
+
+ + + + + diff --git a/src/views/DeviceManagement/DeviceRealData/index.vue b/src/views/DeviceManagement/DeviceRealData/index.vue index 8c1c5c6..bed5a0b 100644 --- a/src/views/DeviceManagement/DeviceRealData/index.vue +++ b/src/views/DeviceManagement/DeviceRealData/index.vue @@ -18,7 +18,7 @@ />    设备: - + @@ -53,7 +53,7 @@ -
+
- + - - +
+ 订单编号: + + 查询 + + + + + + + + + + + + + + +
+ +
+
+ + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
@@ -120,6 +221,7 @@ export default { completionTime: [], routineCheckType: [], dataType: 0, + orderNo: '', loading: false, dialogFormVisible: false, title: '', @@ -146,6 +248,7 @@ export default { 设备类型: [{ required: true, message: '请选择' }] }, original: '', + currentRow: null, total: 0, // 分页总数 tableData: [], // 设备信息表 tableData1: [], // 设备信息表 @@ -274,16 +377,31 @@ export default { this.loading = true this.tableData1 = [] this.dataType = row.数据类型 + this.currentRow = row var param = [] + param.push(['PageCurrent', this.pageCurrent]) + param.push(['PageSize', this.pageSize]) + param.push(['PageCount', '1111', 'int', '1']) + param.push(['ItemCount', '1111', 'int', '1']) param.push(['开始时间', this.completionTime[0]]) param.push(['结束时间', this.completionTime[1]]) param.push(['设备名称', this.equipmentType]) param.push(['参数名称', row.参数名称]) param.push(['数据类型', row.数据类型]) + param.push(['订单编号', this.orderNo]) var Data = this.CreateData('11', '设备管理_设备数据_统计数据查询_通过类型', param) this.ExecDatabase(Data).then(response => { this.loading = false - this.tableData1 = row.数据类型 === 1 ? this.mergeContinuousStatus(response.data) : response.data + console.log(response.data) + if (row.数据类型 === 1) { + this.tableData1 = this.mergeContinuousStatus(response.data.result) + } else if (row.数据类型 === 2) { + this.tableData1 = response.data.result + this.total = parseInt(response.data.output[0].ItemCount) + } else { + this.tableData1 = response.data.result + } + // this.tableData = response.data.result // this.total = parseInt(response.data.output[0].ItemCount) }).catch(() => { @@ -293,11 +411,11 @@ export default { handleSizeChanges(val) { this.pageCurrent = 1 this.pageSize = val - this.searchTable() + this.handleSearch(this.currentRow) }, handleCurrentChanges(val) { this.pageCurrent = val - this.searchTable() + this.handleSearch(this.currentRow) } } } diff --git a/src/views/PlanManagement/InstallMakePlanDone/index.vue b/src/views/PlanManagement/InstallMakePlanDone/index.vue new file mode 100644 index 0000000..2509561 --- /dev/null +++ b/src/views/PlanManagement/InstallMakePlanDone/index.vue @@ -0,0 +1,1394 @@ + + + + + + diff --git a/src/views/PlanManagement/SelfMakePlando/index.vue b/src/views/PlanManagement/SelfMakePlando/index.vue index 3a1d99d..d69c6cd 100644 --- a/src/views/PlanManagement/SelfMakePlando/index.vue +++ b/src/views/PlanManagement/SelfMakePlando/index.vue @@ -213,7 +213,7 @@ - + @@ -221,6 +221,8 @@ 编辑 + + - - + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/PlanManagement/ValueInstallTask/index.vue b/src/views/PlanManagement/ValueInstallTask/index.vue new file mode 100644 index 0000000..8208882 --- /dev/null +++ b/src/views/PlanManagement/ValueInstallTask/index.vue @@ -0,0 +1,1534 @@ + + + + + + diff --git a/src/views/PlanManagement/WorkstationPlan/index.vue b/src/views/PlanManagement/WorkstationPlan/index.vue new file mode 100644 index 0000000..80847ac --- /dev/null +++ b/src/views/PlanManagement/WorkstationPlan/index.vue @@ -0,0 +1,1678 @@ + + + + + + diff --git a/src/views/ProcessManagement/ProcessProduct/index.vue b/src/views/ProcessManagement/ProcessProduct/index.vue index 70b23c2..2bc36c8 100644 --- a/src/views/ProcessManagement/ProcessProduct/index.vue +++ b/src/views/ProcessManagement/ProcessProduct/index.vue @@ -734,6 +734,7 @@ export default { var orderids = [] var ordernums = [] var orderitems = [] + multipleSelection.forEach(item => { if(item.标准工艺 == 1 & item.生产工艺 !=1 ){ orderids.push(item.订单编号) @@ -749,7 +750,7 @@ export default { param.push(['订单编号',orderids]) param.push(['零件图号',orderitems]) param.push(['计划数量',ordernums]) - + console.log(param) var Data = this.CreateData('12', '工艺管理_零件工序_生产工艺_批量生成生产工艺', param) this.ExecDatabase(Data).then(response => { this.searchTable() @@ -1141,6 +1142,7 @@ export default { this.ExecDatabase(Data1).then(response => { param1[0] = ['物料编号', this.selectedRow.物料编号] param1[1] = ['订单编号', this.selectedRow.订单编号] + this.$message.success('操作成功') // 参数数量与名称要与存储过程对应 // var Data3 = this.CreateData('11', '工艺管理_生产工艺_查询生产工艺', param1) // this.ExecDatabase(Data3).then(response => { diff --git a/src/views/ProcessManagement/ProcessesDevelop/index.vue b/src/views/ProcessManagement/ProcessesDevelop/index.vue index 7fddedb..1e3d99c 100644 --- a/src/views/ProcessManagement/ProcessesDevelop/index.vue +++ b/src/views/ProcessManagement/ProcessesDevelop/index.vue @@ -796,6 +796,7 @@ export default { this.ExecDatabase(Data1).then(response => { var param3 = [] param3[0] = ['物料编号', this.partNameValue3] + this.$message.success('保存成功') // 参数数量与名称要与存储过程对应 // var Data3 = this.CreateData('11', '车间生产管理工艺_零件工序_查询工序信息_工艺库', param3) // this.ExecDatabase(Data3).then(response => { diff --git a/src/views/ProductionManagement/AGVtask/index.vue b/src/views/ProductionManagement/AGVtask/index.vue new file mode 100644 index 0000000..7b1a245 --- /dev/null +++ b/src/views/ProductionManagement/AGVtask/index.vue @@ -0,0 +1,1057 @@ +\ + + + + diff --git a/src/views/ProductionManagement/AssemblyCenter/index.vue b/src/views/ProductionManagement/AssemblyCenter/index.vue index 80343ff..1b51e02 100644 --- a/src/views/ProductionManagement/AssemblyCenter/index.vue +++ b/src/views/ProductionManagement/AssemblyCenter/index.vue @@ -43,6 +43,13 @@ clearable style="width: 150px; margin-right: 10px" /> + 物料名称: + 查询 @@ -48,6 +54,7 @@ + - + @@ -142,7 +149,12 @@ - + + + + 1 ? date.split(' ')[0] : date }, + formatProcessRouteDate(date) { + const formattedDate = this.formatDate(date) + const match = formattedDate.match(/^(\d{4})-(\d{2})-(\d{2})$/) + return match ? `${match[2]}-${match[3]}` : formattedDate + }, + toProcessNumber(value) { + const num = Number(value) + return Number.isFinite(num) ? num : 0 + }, + escapeProcessHtml(value) { + return String(value == null ? '' : value) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, ''') + }, + isOutsourceProcess(process) { + return process.指派对象 === '外协' || + String(process.工序名称 || '').includes('(外协)') || + String(process.工序名称 || '').includes('(外协)') + }, + getProcessStatusNum(status) { + const statusNum = parseInt(status) + if (Number.isFinite(statusNum)) { + return statusNum + } + + const statusMap = { + 辅助开始: 2, + 辅助结束: 3, + 开始加工: 4, + 暂停: 5, + 报工: 6, + 装配加工: 4 + } + return statusMap[status] || 0 + }, + isBlueProcess(process) { + const statusNum = this.getProcessStatusNum(process.加工状态) + const countNum = parseInt(process.收检合格数) + return statusNum === 6 || statusNum === 3 || countNum > 0 + }, + isGreenProcess(process) { + return this.isOutsourceProcess(process) && + this.toProcessNumber(process.收料数量) > this.toProcessNumber(process.收检合格数) + this.toProcessNumber(process.收检不合格数) + }, + getProcessBaseClass(process) { + if (this.isGreenProcess(process)) { + return 'process-route-green' + } + + if (this.isBlueProcess(process)) { + return 'process-route-blue' + } + + const statusNum = this.getProcessStatusNum(process.加工状态) + if (statusNum === 2 || statusNum === 4) { + return 'process-route-green' + } + + return 'process-route-red' + }, + getOutsourceGroupClassState(processes) { + const classes = new Map() + let currentIndexes = [] + let lastProcess = null + + const flushOutsourceRun = () => { + if (currentIndexes.length > 0 && lastProcess) { + const className = this.getProcessBaseClass(lastProcess) + currentIndexes.forEach(index => classes.set(index, className)) + } + currentIndexes = [] + lastProcess = null + } + + const isSameContinuousGroup = process => { + if (!lastProcess) { + return true + } + const lineNo = this.toProcessNumber(process.订单行号) + const lastLineNo = this.toProcessNumber(lastProcess.订单行号) + return lineNo === lastLineNo + 1 && + String(process.外协分组 || '') === String(lastProcess.外协分组 || '') + } + + processes.forEach((process, index) => { + if (!this.isOutsourceProcess(process)) { + flushOutsourceRun() + return + } + if (!isSameContinuousGroup(process)) { + flushOutsourceRun() + } + currentIndexes.push(index) + lastProcess = process + }) + flushOutsourceRun() + + return classes + }, + getProcessClass(process, index, outsourceGroupClasses) { + if (this.isOutsourceProcess(process)) { + return outsourceGroupClasses.get(index) || this.getProcessBaseClass(process) + } + return this.getProcessBaseClass(process) + }, + getProcessRouteName(process) { + const name = String(process.工序名称 || '') + const assignee = String(process.指派对象 || '') + if (!assignee || name.includes(`(${assignee})`) || name.includes(`(${assignee})`)) { + return name + } + return `${name}(${assignee})` + }, + getRouteProcesses(row) { + if (Array.isArray(row.子数据) && row.子数据.length > 0) { + return row.子数据 + } + + return String(row.工艺路线 || '') + .split(',') + .map(name => name.trim()) + .filter(Boolean) + .map(name => ({ + 工序名称: name, + 加工状态: 0, + 收检合格数: 0, + 计划开始时间: '', + 指派对象: '', + 订单行号: 0, + 收料数量: 0, + 收检不合格数: 0 + })) + }, + formatProcessRoute(row) { + const processes = this.getRouteProcesses(row) + if (processes.length === 0) { + return '' + } + + const outsourceGroupClasses = this.getOutsourceGroupClassState(processes) + const maxPerRow = 8 + const rows = Math.ceil(processes.length / maxPerRow) + let tableHtml = '
' + + for (let rowIndex = 0; rowIndex < rows; rowIndex++) { + const startIndex = rowIndex * maxPerRow + const endIndex = Math.min(startIndex + maxPerRow, processes.length) + const rowProcesses = processes.slice(startIndex, endIndex) + + if (rowIndex > 0) { + tableHtml += '' + } + + tableHtml += '' + rowProcesses.forEach((process, index) => { + const className = this.getProcessClass(process, startIndex + index, outsourceGroupClasses) + const planDate = this.formatProcessRouteDate(process.计划开始时间 || process.计划完成时间 || '') + tableHtml += `` + if (index < rowProcesses.length - 1) { + tableHtml += '' + } + }) + tableHtml += '' + + tableHtml += '' + rowProcesses.forEach((process, index) => { + const className = this.getProcessClass(process, startIndex + index, outsourceGroupClasses) + const name = this.getProcessRouteName(process) + tableHtml += `` + if (index < rowProcesses.length - 1) { + tableHtml += '' + } + }) + tableHtml += '' + + tableHtml += '' + rowProcesses.forEach((process, index) => { + const className = this.getProcessClass(process, startIndex + index, outsourceGroupClasses) + const count = this.toProcessNumber(process.收检合格数) + tableHtml += `` + if (index < rowProcesses.length - 1) { + tableHtml += '' + } + }) + tableHtml += '' + } + + tableHtml += '
${this.escapeProcessHtml(planDate)}
${this.escapeProcessHtml(name)}
合格${this.escapeProcessHtml(count)}
' + return tableHtml + }, mergeOrderData(dataList) { // 第一步:先按照订单行号对原始数据进行排序 const sortedDataList = [...dataList].sort((a, b) => { @@ -307,6 +513,7 @@ export default { 进度: item.进度, 拆分内码: item.拆分内码, 计划数量: item.计划数量, + 标准工时: item.标准工时, 开工时间: item.开工时间, 完成数量: item.完成数量, 收料数量: item.收料数量, @@ -322,7 +529,8 @@ export default { 订单行号: item.订单行号, 加急总数:item.加急总数, 外协结束时间:item.外协结束时间, - 开始时间:item.开始时间 + 开始时间:item.开始时间, + 外协分组: item.外协分组 }] }) } else { @@ -345,6 +553,7 @@ export default { 进度: item.进度, 拆分内码: item.拆分内码, 计划数量: item.计划数量, + 标准工时: item.标准工时, 开工时间: item.开工时间, 完成数量: item.完成数量, 收料数量: item.收料数量, @@ -362,6 +571,7 @@ export default { 开始时间:item.开始时间, 结束时间:item.结束时间, 外协结束时间:item.外协结束时间, + 外协分组: item.外协分组 }) // 对子数据按照订单行号排序 @@ -477,6 +687,7 @@ export default { param.push(['指派对象', '全部']) param.push(['计划号', this.plannum]) param.push(['加急状态', this.urgentStatus]) + param.push(['单据状态', this.orderStatus]) // // 添加外协状态过滤条件 // if (this.outsourceStatus !== '全部') { // param.push(['是否外协', this.outsourceStatus === '是' ? 1 : 0]) @@ -606,6 +817,78 @@ export default { width: 120px; display: inline-flex; } + +.process-route { + line-height: 1.4; + white-space: normal; + word-break: break-all; +} + +::v-deep .process-route-wrap { + width: 100%; + text-align: left; +} + +::v-deep .process-route-table { + width: auto; + border-collapse: collapse; + text-align: left; + table-layout: auto; +} + +::v-deep .process-route-table td { + text-align: left; + padding: 2px 2px; + font-size: 11px; + white-space: nowrap; + line-height: 1.4; +} + +::v-deep .process-route-date { + font-size: 10px !important; + color: #8899aa !important; + padding: 2px 2px !important; +} + +::v-deep .process-route-count { + font-weight: 700; + font-size: 12px !important; +} + +::v-deep .process-route-spacer td { + height: 4px; + padding: 0 !important; + line-height: 1 !important; +} + +::v-deep .process-route-green { + color: #28d961; + font-weight: 700; +} + +::v-deep .process-route-blue { + color: #09a8ff; + font-weight: 700; +} + +::v-deep .process-route-red { + color: #ff3f37; + font-weight: 700; +} + +::v-deep .process-route-arrow { + color: rgba(0, 164, 255, 0.6) !important; + font-size: 10px !important; + padding: 2px 0 !important; + width: 8px; + text-align: center !important; +} + +::v-deep .process-route-arrow-hidden { + padding: 2px 0 !important; + width: 8px; +} + .search-container { margin-bottom: 20px; } @@ -679,4 +962,7 @@ export default { display: flex; align-items: center; } - \ No newline at end of file +.el-table tr{ + background-color: initial; +} + diff --git a/src/views/ProductionManagement/SaleOutsourceMange/index.vue b/src/views/ProductionManagement/SaleOutsourceMange/index.vue index 763ad37..a217a25 100644 --- a/src/views/ProductionManagement/SaleOutsourceMange/index.vue +++ b/src/views/ProductionManagement/SaleOutsourceMange/index.vue @@ -97,6 +97,7 @@ @row-click="handleRowClick"> + diff --git a/src/views/ProductionManagement/Timesheet/index.vue b/src/views/ProductionManagement/Timesheet/index.vue index c59b701..29e46c8 100644 --- a/src/views/ProductionManagement/Timesheet/index.vue +++ b/src/views/ProductionManagement/Timesheet/index.vue @@ -12,6 +12,21 @@ 订单号: + 工时类型: + + + + + + + + + + + + + + 报工开始日期: + + + + + + + + + + + + + + + + + + + + - - + @@ -85,15 +129,9 @@ - - - - - + @@ -120,17 +158,7 @@ - - - - - - - - + + + + - + + + + + + + + + + + + - - - + + + + + + + + @@ -234,31 +290,32 @@ {{ scope.row.level === 1 ? scope.row.productName : '' }} - - + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - + - - + + + + - + + + + + + + + + + + + + + + + + + + + + + + @@ -374,6 +480,13 @@ @@ -391,6 +504,7 @@ export default { productCode: '', processName: '', orderNo: '', + workHoursType: '', startDate: '', endDate: '' }, @@ -425,6 +539,19 @@ export default { return sum + (parseFloat(item.workHours) || 0) }, 0) return total.toFixed(1) + }, + currentWorkHoursTypeSummary() { + const summaryMap = new Map() + this.getCurrentSummaryItems().forEach(item => { + const type = this.getWorkHoursType(item) + const workHours = parseFloat(item.workHours) || 0 + summaryMap.set(type, (summaryMap.get(type) || 0) + workHours) + }) + + return Array.from(summaryMap, ([type, workHours]) => ({ + type, + workHours: workHours.toFixed(1) + })) } }, @@ -433,6 +560,29 @@ export default { }, methods: { + getWorkHoursType(row) { + return row.工时类型 || row.workType || row.WorkType || row.workHoursType || row.WorkHoursType || '未分类' + }, + getCurrentSummaryItems() { + const items = [] + if (this.activeTab === 'project') { + this.projectTableData.forEach(parent => { + items.push(...(parent.children || [])) + }) + } else if (this.activeTab === 'operator') { + this.operatorTableData.forEach(operator => { + ;(operator.children || []).forEach(date => { + items.push(...(date.children || [])) + }) + }) + } else if (this.activeTab === 'task') { + this.taskTableData.forEach(task => { + items.push(...(task.children || [])) + }) + } + + return items + }, handleSearch() { // 校验日期是否已选择 // if (!this.searchForm.startDate || !this.searchForm.endDate) { @@ -470,6 +620,7 @@ export default { ['产品编码', this.searchForm.productCode || ''], ['工序名称', this.searchForm.processName || ''], ['订单号', this.searchForm.orderNo || ''], + ['工时类型', this.searchForm.workHoursType || ''], ['开始日期', this.searchForm.startDate || ''], ['结束日期', this.searchForm.endDate || ''] ] @@ -510,13 +661,17 @@ export default { materialCode: row.materialCode, processName: row.processName, operator: row.operator, + 指派对象: row.指派对象, qty: row.qty, reportQty: row.reportQty, planStart: row.planStart, planEnd: row.planEnd, workHours: row.workHours, 订单号:row.订单号, - 操作类别 :row.操作类别 + 操作类别 :row.操作类别, + 工时类型: this.getWorkHoursType(row), + 计划数量: row.计划数量, + 工序说明: row.工序说明 }) } }) @@ -540,6 +695,7 @@ export default { ['产品编码', this.searchForm.productCode || ''], ['工序名称', this.searchForm.processName || ''], ['订单号', this.searchForm.orderNo || ''], + ['工时类型', this.searchForm.workHoursType || ''], ['开始日期', this.searchForm.startDate || ''], ['结束日期', this.searchForm.endDate || ''] ] @@ -613,6 +769,12 @@ export default { productCode: row.productCode, productName: row.productName, processName: row.processName, + 计划数量: row.计划数量, + 工序说明: row.工序说明, + 工时类型: this.getWorkHoursType(row), + 班次: row.班次, + 报工类型: row.报工类型, + 指派对象: row.指派对象, reportQty: row.reportQty, startTime: row.startTime, endTime: row.endTime, @@ -643,6 +805,7 @@ export default { ['产品编码', this.searchForm.productCode || ''], ['工序名称', this.searchForm.processName || ''], ['订单号', this.searchForm.orderNo || ''], + ['工时类型', this.searchForm.workHoursType || ''], ['开始日期', this.searchForm.startDate || ''], ['结束日期', this.searchForm.endDate || ''] ] @@ -661,7 +824,7 @@ export default { flatData.forEach((row, index) => { if (row.Level === 1) { - const key = `${row.contractNo}_${row.productCode}_${row.processName}` + const key = `${row.contractNo}_${row.orderNo}_${row.productCode}_${row.processName}_${this.getWorkHoursType(row)}_${row.操作类别 || ''}` level1Map.set(key, { id: `t-${index}`, level: 1, @@ -670,6 +833,9 @@ export default { productCode: row.productCode, productName: row.productName, processName: row.processName, + 计划数量: row.计划数量, + 工序说明: row.工序说明, + 工时类型: this.getWorkHoursType(row), qty: row.qty, reportQty: row.reportQty, workHours: row.workHours, @@ -680,9 +846,14 @@ export default { id: `t-${index}`, level: 2, contractNo: row.contractNo, + orderNo: row.orderNo, productCode: row.productCode, processName: row.processName, + 计划数量: row.计划数量, + 工序说明: row.工序说明, + 工时类型: this.getWorkHoursType(row), operator: row.operator, + 指派对象: row.指派对象, reportQty: row.reportQty, startTime: row.startTime, endTime: row.endTime, @@ -694,7 +865,7 @@ export default { // 12级关联 level2Items.forEach(item => { - const key = `${item.contractNo}_${item.productCode}_${item.processName}` + const key = `${item.contractNo}_${item.orderNo}_${item.productCode}_${item.processName}_${this.getWorkHoursType(item)}_${item.操作类别 || ''}` const parent = level1Map.get(key) if (parent) { parent.children.push(item) @@ -846,8 +1017,16 @@ export default { border-top: 1px solid #ebeef5; font-size: 13px; color: #606266; - height: 40px; + min-height: 40px; line-height: 20px; + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 8px 20px; +} + +.type-summary-item { + white-space: nowrap; } /* 调整展开图标 */ diff --git a/src/views/ProductionManagement/WorkHoursCheck/index - 副本 (2).vue b/src/views/ProductionManagement/WorkHoursCheck/index - 副本 (2).vue new file mode 100644 index 0000000..fae1714 --- /dev/null +++ b/src/views/ProductionManagement/WorkHoursCheck/index - 副本 (2).vue @@ -0,0 +1,1978 @@ + + + + + \ No newline at end of file diff --git a/src/views/ProductionManagement/WorkHoursCheck/index.vue b/src/views/ProductionManagement/WorkHoursCheck/index.vue index 70c126c..15a23e2 100644 --- a/src/views/ProductionManagement/WorkHoursCheck/index.vue +++ b/src/views/ProductionManagement/WorkHoursCheck/index.vue @@ -59,7 +59,10 @@
查询 一键校验 - 直接校验 + 直接校验 @@ -230,11 +233,11 @@ @change="calculateWorkTime" /> - + @@ -728,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/src/views/ProductionManagement/WorkhoursEdit/index.vue b/src/views/ProductionManagement/WorkhoursEdit/index.vue index d70fbbb..3f577bf 100644 --- a/src/views/ProductionManagement/WorkhoursEdit/index.vue +++ b/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/work/ProcessManagement/ProcessProduct/01_模块总览框图.mmd b/work/ProcessManagement/ProcessProduct/01_模块总览框图.mmd new file mode 100644 index 0000000..22dc77e --- /dev/null +++ b/work/ProcessManagement/ProcessProduct/01_模块总览框图.mmd @@ -0,0 +1,68 @@ +flowchart TD + U[工艺员/技术人员] --> P[ProcessProduct/index.vue
生产工艺维护页面] + + subgraph UI[页面层] + Q[查询区
生产订单/销售订单/物料编码/物料名称/计划号
任务状态/属性/下达日期/工艺状态] + L[生产订单列表
多选/分页/状态灯/编辑工艺] + E[编辑生产工艺弹窗
原料信息/图纸/保存/下发/工序维护] + C[生产工艺拷贝弹窗
标准工艺或生产工艺来源预览] + PDF[图纸预览弹窗
零件图纸/工艺图纸 PDF] + end + + subgraph State[前端核心状态] + tableData[tableData
订单列表] + selectedRow[selectedRow
当前订单] + multipleSelection[multipleSelection
批量选中订单] + tableData5[tableData5
当前生产工艺明细] + tableData4[tableData4/filteredTableData4
工序基础库] + tableData6[tableData6
拷贝来源工艺预览] + basedata[basedatagj/basedatajc/basedatacj
量具/机床/车间] + insertidx[insertidx
插入占位行 id] + itemdata[itemdata
订单原料信息] + end + + subgraph API[后台过程] + A1[计划排产_生产订单_订单查询] + A2[工艺管理_生产工艺_查询生产工艺] + A3[MES_ProcessManagement_ProcessGet] + A4[设备管理_设备信息_查询] + A5[工艺管理_获取物料原料信息] + A6[工艺管理_零件工序_生产工艺_*
新增/编辑/插入/删除/上下移/批量生成] + A7[工艺管理_生产工艺_*
拷贝/启用/来源查询] + A8[计划排产_生产订单_订单任务_*
整套下发/单条下发] + A9[工艺管理_图纸维护_查看图纸
工艺管理_工艺维护_查看图纸] + A10[车间生产管理工艺_零件工序_保存为标准工艺] + end + + P --> Q + P --> L + P --> E + P --> C + P --> PDF + + Q -->|searchTable| A1 --> tableData --> L + L -->|row-click| selectedRow + L -->|selection-change| multipleSelection + L -->|编辑工艺 editProcess| E + + E -->|getitemdata| A5 --> itemdata + E -->|editProcesssearch| A2 --> tableData5 + E -->|getProcess| A3 --> tableData4 + E -->|getbasedata| A4 --> basedata + E -->|工序维护| A6 --> tableData5 + E -->|保存/启用| A7 + E -->|保存为标准工艺| A10 + E -->|下发任务| A8 + E -->|零件/工艺图纸| A9 --> PDF + + C -->|copyData/searchTable2/searchTable4| A7 --> tableData6 + C -->|submitCopy| A7 --> tableData5 + multipleSelection -->|AllProductProcess| A6 --> tableData + + classDef ui fill:#E8F3FF,stroke:#2B6CB0,color:#111; + classDef state fill:#FFF7E6,stroke:#C47F00,color:#111; + classDef api fill:#EAF8EA,stroke:#2F855A,color:#111; + class Q,L,E,C,PDF ui; + class tableData,selectedRow,multipleSelection,tableData5,tableData4,tableData6,basedata,insertidx,itemdata state; + class A1,A2,A3,A4,A5,A6,A7,A8,A9,A10 api; + diff --git a/work/ProcessManagement/ProcessProduct/01_模块总览框图.png b/work/ProcessManagement/ProcessProduct/01_模块总览框图.png new file mode 100644 index 0000000000000000000000000000000000000000..5f04a2e6180a4a769a159b6ecc0f50c823e58c03 GIT binary patch literal 24060 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 ==7*4w|w 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 literal 0 HcmV?d00001 diff --git a/work/ProcessManagement/ProcessProduct/02_编辑生产工艺详细流程.mmd b/work/ProcessManagement/ProcessProduct/02_编辑生产工艺详细流程.mmd new file mode 100644 index 0000000..fe932ba --- /dev/null +++ b/work/ProcessManagement/ProcessProduct/02_编辑生产工艺详细流程.mmd @@ -0,0 +1,56 @@ +flowchart TD + S[用户点击订单行: 编辑工艺] --> R1[建议先设置 selectedRow = row
当前源码依赖 row-click 已触发] + R1 --> D1[打开 dialogcasual
loading = true] + + D1 --> P1[getitemdata(row.订单编号)] + P1 --> SP1[工艺管理_获取物料原料信息] + SP1 --> F1{U_MoType == 机加件?} + F1 -->|是| M1[写入 itemdata
子件编码/名称/计划数量/材质/基本数量/存货量] + F1 -->|否| M0[过滤掉] + + D1 --> P2[editProcesssearch(row)] + P2 --> SP2[工艺管理_生产工艺_查询生产工艺
入参: 物料编号, 订单编号] + SP2 --> T5[tableData5 = 当前生产工艺明细] + + T5 --> P3[getProcess] + P3 --> SP3[MES_ProcessManagement_ProcessGet
入参: 工艺编号=''] + SP3 --> G1[tableData4/filteredTableData4
左侧工序基础库] + + T5 --> P4[getbasedata] + P4 --> SP4[设备管理_设备信息_查询] + SP4 --> B1{按设备类型名称分类} + B1 -->|量具| BJ[basedatagj
工装量具选项] + B1 -->|机床| BC[basedatajc
指定机床选项] + B1 -->|车间| BW[basedatacj
车间选项] + + T5 --> P5[fninsertidx] + P5 --> C1{存在空工艺名称行?} + C1 -->|是| I1[insertidx = 空行 id
左侧选工序时填入占位] + C1 -->|否| I0[insertidx 保持或为 0] + P5 --> C2{工卡量具/指定机床为逗号字符串?} + C2 -->|是| I2[split,map Number
转换为多选数组] + C2 -->|否| I3[保持原值] + + I1 --> READY[编辑弹窗可操作] + I0 --> READY + I2 --> READY + I3 --> READY + + READY --> OP1[查看图纸] + READY --> OP2[新增/插入/删除/排序工序] + READY --> OP3[编辑工时/设备/车间/属性/说明/备注] + READY --> OP4[保存/启用] + READY --> OP5[保存为标准工艺] + READY --> OP6[整套或单条下发任务] + + classDef start fill:#E8F3FF,stroke:#2B6CB0,color:#111; + classDef proc fill:#FFF7E6,stroke:#C47F00,color:#111; + classDef api fill:#EAF8EA,stroke:#2F855A,color:#111; + classDef decision fill:#F3E8FF,stroke:#6B46C1,color:#111; + classDef output fill:#F0FFF4,stroke:#38A169,color:#111; + class S,D1,READY start; + class P1,P2,P3,P4,P5,R1,OP1,OP2,OP3,OP4,OP5,OP6 proc; + class SP1,SP2,SP3,SP4 api; + class F1,B1,C1,C2 decision; + class M1,M0,T5,G1,BJ,BC,BW,I1,I0,I2,I3 output; + diff --git a/work/ProcessManagement/ProcessProduct/02_编辑生产工艺详细流程.png b/work/ProcessManagement/ProcessProduct/02_编辑生产工艺详细流程.png new file mode 100644 index 0000000000000000000000000000000000000000..4a547cae68b7c0efcdfd6cc95a4379a394387ab0 GIT binary patch literal 63272 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 literal 0 HcmV?d00001 diff --git a/work/ProcessManagement/ProcessProduct/03_工序维护与明细编辑流程.mmd b/work/ProcessManagement/ProcessProduct/03_工序维护与明细编辑流程.mmd new file mode 100644 index 0000000..e2de5c3 --- /dev/null +++ b/work/ProcessManagement/ProcessProduct/03_工序维护与明细编辑流程.mmd @@ -0,0 +1,53 @@ +flowchart TD + START[编辑生产工艺弹窗] --> LEFT[左侧工序基础库
filteredTableData4] + START --> RIGHT[右侧生产工艺明细
tableData5] + + LEFT --> SEARCH[输入 processSearchName] + SEARCH --> FILTER[filterProcess
按 工艺名称 includes 过滤] + FILTER --> LEFT + + LEFT --> CLICK[点击某个工序 editProcedure(row)] + CLICK --> HASINSERT{insertidx 是否非 0?} + HASINSERT -->|否: 普通新增| ADD[组装参数
工艺编号/物料编号/计划数量/订单编号] + ADD --> SPADD[工艺管理_零件工序_生产工艺_修改数据] + SPADD --> RELOAD1[重新查询生产工艺] + + HASINSERT -->|是: 填入占位行| FILL[组装参数
工艺编号/idd/计划数量/订单编号] + FILL --> SPFILL[工艺管理_零件工序_生产工艺_编辑插入工序] + SPFILL --> RELOAD1 + + RIGHT --> EDIT[编辑字段
准备工时/标准工时/工时合计
工卡量具/指定机床/车间/属性
工艺要求/备注] + EDIT --> NORM[规范化工卡量具/指定机床
数组/对象/字符串 -> 数组] + NORM --> SPEDIT[工艺管理_零件工序_生产工艺_编辑] + SPEDIT --> SILENT[当前无成功提示
后台即时保存] + + RIGHT --> MOVEUP[上移工序] + MOVEUP --> SPMU[工艺管理_零件工序_生产工艺_上移工序] + RIGHT --> MOVEDOWN[下移工序] + MOVEDOWN --> SPMD[工艺管理_零件工序_生产工艺_下移工序] + RIGHT --> INSERT[插入工序] + INSERT --> SPI[工艺管理_零件工序_生产工艺_插入工序
生成空占位行] + RIGHT --> DELETE[删除工序] + DELETE --> SPD[工艺管理_零件工序_生产工艺_删除工序] + + SPMU --> RELOAD1 + SPMD --> RELOAD1 + SPI --> RELOAD1 + SPD --> RELOAD1 + + RELOAD1 --> SPQUERY[工艺管理_生产工艺_查询生产工艺] + SPQUERY --> NEWT5[刷新 tableData5] + NEWT5 --> FN[fninsertidx
识别占位行/转换多选字段] + FN --> RIGHT + + classDef ui fill:#E8F3FF,stroke:#2B6CB0,color:#111; + classDef action fill:#FFF7E6,stroke:#C47F00,color:#111; + classDef api fill:#EAF8EA,stroke:#2F855A,color:#111; + classDef decision fill:#F3E8FF,stroke:#6B46C1,color:#111; + classDef output fill:#F0FFF4,stroke:#38A169,color:#111; + class START,LEFT,RIGHT ui; + class SEARCH,FILTER,CLICK,ADD,FILL,EDIT,NORM,MOVEUP,MOVEDOWN,INSERT,DELETE,RELOAD1,FN action; + class SPADD,SPFILL,SPEDIT,SPMU,SPMD,SPI,SPD,SPQUERY api; + class HASINSERT decision; + class SILENT,NEWT5 output; + diff --git a/work/ProcessManagement/ProcessProduct/03_工序维护与明细编辑流程.png b/work/ProcessManagement/ProcessProduct/03_工序维护与明细编辑流程.png new file mode 100644 index 0000000000000000000000000000000000000000..6ef5ec6be124bccccac6c564db58d559f0de2e0a GIT binary patch literal 76202 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
Ax&rQ~Uu_5@3OzK@}Z5=clj1#V7nc?I+0_>3u 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

_=8s`;)5BJB!&IRV_t0U)sY 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 literal 0 HcmV?d00001 diff --git a/work/ProcessManagement/ProcessProduct/04_批量生成拷贝保存下发流程.mmd b/work/ProcessManagement/ProcessProduct/04_批量生成拷贝保存下发流程.mmd new file mode 100644 index 0000000..8778622 --- /dev/null +++ b/work/ProcessManagement/ProcessProduct/04_批量生成拷贝保存下发流程.mmd @@ -0,0 +1,57 @@ +flowchart TD + subgraph Batch[批量生成生产工艺] + B0[列表勾选订单] --> B1[AllProductProcess] + B1 --> B2{multipleSelection.length >= 1?} + B2 -->|否| BERR[提示: 请勾选数据] + B2 -->|是| B3[过滤选中行
标准工艺 == 1 且 生产工艺 != 1] + B3 --> B4[拼接订单编号/物料编号/计划数量
逗号字符串] + B4 --> BSP[工艺管理_零件工序_生产工艺_批量生成生产工艺] + BSP --> B5[刷新订单列表 searchTable] + end + + subgraph Copy[工艺拷贝 当前入口被注释] + C0[copyData 打开生产工艺拷贝弹窗] --> C1{processprodutc 勾选?} + C1 -->|否: 标准工艺来源| C2[工艺管理_生产工艺_标准工艺拷贝
获取候选零件] + C2 --> C3[MES_ProcessManagement_ProcessBindGet
预览标准工艺明细] + C1 -->|是: 生产工艺来源| C4[工艺管理_生产工艺_生产工艺拷贝
获取候选物料] + C4 --> C5[工艺管理_制定标准工艺_拷贝生产工艺
预览生产工艺明细] + C3 --> C6[submitCopy] + C5 --> C6 + C6 --> C7[工艺管理_生产工艺_工艺拷贝
物料编号/零件图号/订单编号/计划数量/工艺类型] + C7 --> C8{result == '1'?} + C8 -->|是| COK[提示拷贝成功
刷新当前生产工艺] + C8 -->|否| CERR[提示拷贝失败] + end + + subgraph Save[保存与沉淀] + S0[保存按钮 saveProcess] --> S1[工艺管理_生产工艺_启用
入参: 订单编号] + S1 --> SOK[提示操作成功] + S2[保存为标准工艺 processSave] --> S3[车间生产管理工艺_零件工序_保存为标准工艺
入参: 物料编号/订单编号] + S3 --> S4{result == '1'?} + S4 -->|是| SOK2[提示保存成功] + S4 -->|否| SERR2[提示保存失败] + end + + subgraph Dispatch[任务下发] + D0[整套下发 workprocess] --> D1{tableData5.length 小于 1?} + D1 -->|是| DERR[提示下发失败] + D1 -->|否| D2[计划排产_生产订单_订单任务_生产工艺任务下发
订单编号/物料编号/计划数量] + D2 --> D3{result != 0?} + D3 -->|是| DOK[提示操作成功
刷新列表/关闭弹窗] + D3 -->|否| DOLD[提示已下发任务
刷新列表/关闭弹窗] + + O0[单条下发 oneworkprocess(row)] --> O1[计划排产_生产订单_订单任务_单条生产工艺任务下发
订单编号/物料编号/计划数量/工艺顺序] + O1 --> OOK[提示操作成功
刷新列表/不关闭弹窗] + end + + classDef action fill:#FFF7E6,stroke:#C47F00,color:#111; + classDef api fill:#EAF8EA,stroke:#2F855A,color:#111; + classDef decision fill:#F3E8FF,stroke:#6B46C1,color:#111; + classDef ok fill:#F0FFF4,stroke:#38A169,color:#111; + classDef err fill:#FFEAEA,stroke:#C53030,color:#111; + class B0,B1,B3,B4,B5,C0,C2,C3,C4,C5,C6,C7,S0,S2,D0,D2,O0 action; + class BSP,C2,C3,C4,C5,C7,S1,S3,D2,O1 api; + class B2,C1,C8,S4,D1,D3 decision; + class COK,SOK,SOK2,DOK,DOLD,OOK ok; + class BERR,CERR,SERR2,DERR err; + diff --git a/work/ProcessManagement/ProcessProduct/04_批量生成拷贝保存下发流程.png b/work/ProcessManagement/ProcessProduct/04_批量生成拷贝保存下发流程.png new file mode 100644 index 0000000000000000000000000000000000000000..f9f9828f777c5819f3c3a67ed2e6693f2ed6bc33 GIT binary patch literal 12486 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 literal 0 HcmV?d00001 diff --git a/work/ProcessManagement/ProcessProduct/05_后台过程关系框图.mmd b/work/ProcessManagement/ProcessProduct/05_后台过程关系框图.mmd new file mode 100644 index 0000000..12ac59b --- /dev/null +++ b/work/ProcessManagement/ProcessProduct/05_后台过程关系框图.mmd @@ -0,0 +1,79 @@ +flowchart LR + subgraph FE[前端方法] + searchTable[searchTable
订单列表查询] + editProcess[editProcess/editProcesssearch
打开编辑并查工艺] + getitemdata[getitemdata
查原料] + getProcess[getProcess
查工序基础库] + getbasedata[getbasedata
查设备基础数据] + editProcedure[editProcedure/updateProcess/updateProcess2
新增或编辑工序] + orderOps[upOne/downOne/insertOne/deleteOne
排序插入删除] + copyOps[copyData/searchTable2/searchTable4/submitCopy
工艺拷贝] + saveOps[saveProcess/processSave
启用/保存为标准工艺] + dispatchOps[workprocess/oneworkprocess
任务下发] + drawingOps[getNum/getNum2
图纸查看] + end + + subgraph SP[存储过程/接口] + sp1[计划排产_生产订单_订单查询] + sp2[工艺管理_生产工艺_查询生产工艺] + sp3[工艺管理_获取物料原料信息] + sp4[MES_ProcessManagement_ProcessGet] + sp5[设备管理_设备信息_查询] + sp6[工艺管理_零件工序_生产工艺_修改数据] + sp7[工艺管理_零件工序_生产工艺_编辑] + sp8[工艺管理_零件工序_生产工艺_编辑插入工序] + sp9[工艺管理_零件工序_生产工艺_上移工序/下移工序/插入工序/删除工序] + sp10[工艺管理_生产工艺_生产工艺拷贝/标准工艺拷贝] + sp11[MES_ProcessManagement_ProcessBindGet] + sp12[工艺管理_制定标准工艺_拷贝生产工艺] + sp13[工艺管理_生产工艺_工艺拷贝] + sp14[工艺管理_生产工艺_启用] + sp15[车间生产管理工艺_零件工序_保存为标准工艺] + sp16[计划排产_生产订单_订单任务_生产工艺任务下发] + sp17[计划排产_生产订单_订单任务_单条生产工艺任务下发] + sp18[工艺管理_图纸维护_查看图纸] + sp19[工艺管理_工艺维护_查看图纸] + sp20[工艺管理_零件工序_生产工艺_批量生成生产工艺] + end + + subgraph DB[业务数据对象] + orderData[生产订单/计划排产数据] + stdProcess[标准工艺库] + productProcess[订单级生产工艺库] + processBase[工序基础表] + deviceBase[设备基础资料
量具/机床/车间] + materialData[物料原料/BOM/库存线索] + drawingData[零件图纸/工艺图纸 PDF] + taskData[生产任务/工序任务] + end + + searchTable --> sp1 --> orderData + editProcess --> sp2 --> productProcess + getitemdata --> sp3 --> materialData + getProcess --> sp4 --> processBase + getbasedata --> sp5 --> deviceBase + editProcedure --> sp6 --> productProcess + editProcedure --> sp8 --> productProcess + editProcedure --> sp2 + orderOps --> sp9 --> productProcess + orderOps --> sp2 + editProcedure --> sp7 --> productProcess + copyOps --> sp10 --> productProcess + copyOps --> sp11 --> stdProcess + copyOps --> sp12 --> productProcess + copyOps --> sp13 --> productProcess + saveOps --> sp14 --> productProcess + saveOps --> sp15 --> stdProcess + dispatchOps --> sp16 --> taskData + dispatchOps --> sp17 --> taskData + drawingOps --> sp18 --> drawingData + drawingOps --> sp19 --> drawingData + searchTable -.批量生成入口.-> sp20 --> productProcess + + classDef fe fill:#E8F3FF,stroke:#2B6CB0,color:#111; + classDef sp fill:#EAF8EA,stroke:#2F855A,color:#111; + classDef db fill:#FFF7E6,stroke:#C47F00,color:#111; + class searchTable,editProcess,getitemdata,getProcess,getbasedata,editProcedure,orderOps,copyOps,saveOps,dispatchOps,drawingOps fe; + class sp1,sp2,sp3,sp4,sp5,sp6,sp7,sp8,sp9,sp10,sp11,sp12,sp13,sp14,sp15,sp16,sp17,sp18,sp19,sp20 sp; + class orderData,stdProcess,productProcess,processBase,deviceBase,materialData,drawingData,taskData db; + diff --git a/work/ProcessManagement/ProcessProduct/05_后台过程关系框图.png b/work/ProcessManagement/ProcessProduct/05_后台过程关系框图.png new file mode 100644 index 0000000000000000000000000000000000000000..1e40fd8d9e132704fef3a3461052f6abf5c512f2 GIT binary patch literal 146317 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

yxFw?%O4xsq&Ch8SvLZ8d;jU)%lfw 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 z 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 z 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%0A~vq+8IFmMSA&eRR5Bmn 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 P[ProcessProduct/index.vue
生产工艺维护页面] + + subgraph UI[页面层] + Q[查询区
生产订单/销售订单/物料编码/物料名称/计划号
任务状态/属性/下达日期/工艺状态] + L[生产订单列表
多选/分页/状态灯/编辑工艺] + E[编辑生产工艺弹窗
原料信息/图纸/保存/下发/工序维护] + C[生产工艺拷贝弹窗
标准工艺或生产工艺来源预览] + PDF[图纸预览弹窗
零件图纸/工艺图纸 PDF] + end + + subgraph State[前端核心状态] + tableData[tableData
订单列表] + selectedRow[selectedRow
当前订单] + multipleSelection[multipleSelection
批量选中订单] + tableData5[tableData5
当前生产工艺明细] + tableData4[tableData4/filteredTableData4
工序基础库] + tableData6[tableData6
拷贝来源工艺预览] + basedata[basedatagj/basedatajc/basedatacj
量具/机床/车间] + insertidx[insertidx
插入占位行 id] + itemdata[itemdata
订单原料信息] + end + + subgraph API[后台过程] + A1[计划排产_生产订单_订单查询] + A2[工艺管理_生产工艺_查询生产工艺] + A3[MES_ProcessManagement_ProcessGet] + A4[设备管理_设备信息_查询] + A5[工艺管理_获取物料原料信息] + A6[工艺管理_零件工序_生产工艺_*
新增/编辑/插入/删除/上下移/批量生成] + A7[工艺管理_生产工艺_*
拷贝/启用/来源查询] + A8[计划排产_生产订单_订单任务_*
整套下发/单条下发] + A9[工艺管理_图纸维护_查看图纸
工艺管理_工艺维护_查看图纸] + A10[车间生产管理工艺_零件工序_保存为标准工艺] + end + + P --> Q + P --> L + P --> E + P --> C + P --> PDF + + Q -->|searchTable| A1 --> tableData --> L + L -->|row-click| selectedRow + L -->|selection-change| multipleSelection + L -->|编辑工艺 editProcess| E + + E -->|getitemdata| A5 --> itemdata + E -->|editProcesssearch| A2 --> tableData5 + E -->|getProcess| A3 --> tableData4 + E -->|getbasedata| A4 --> basedata + E -->|工序维护| A6 --> tableData5 + E -->|保存/启用| A7 + E -->|保存为标准工艺| A10 + E -->|下发任务| A8 + E -->|零件/工艺图纸| A9 --> PDF + + C -->|copyData/searchTable2/searchTable4| A7 --> tableData6 + C -->|submitCopy| A7 --> tableData5 + multipleSelection -->|AllProductProcess| A6 --> tableData + + classDef ui fill:#E8F3FF,stroke:#2B6CB0,color:#111; + classDef state fill:#FFF7E6,stroke:#C47F00,color:#111; + classDef api fill:#EAF8EA,stroke:#2F855A,color:#111; + classDef risk fill:#FFEAEA,stroke:#C53030,color:#111; + class Q,L,E,C,PDF ui; + class tableData,selectedRow,multipleSelection,tableData5,tableData4,tableData6,basedata,insertidx,itemdata state; + class A1,A2,A3,A4,A5,A6,A7,A8,A9,A10 api; +``` + +## 2. 编辑生产工艺详细流程 + +```mermaid +flowchart TD + S[用户点击订单行: 编辑工艺] --> R1[建议先设置 selectedRow = row
当前源码依赖 row-click 已触发] + R1 --> D1[打开 dialogcasual
loading = true] + + D1 --> P1[getitemdata(row.订单编号)] + P1 --> SP1[工艺管理_获取物料原料信息] + SP1 --> F1{U_MoType == 机加件?} + F1 -->|是| M1[写入 itemdata
子件编码/名称/计划数量/材质/基本数量/存货量] + F1 -->|否| M0[过滤掉] + + D1 --> P2[editProcesssearch(row)] + P2 --> SP2[工艺管理_生产工艺_查询生产工艺
入参: 物料编号, 订单编号] + SP2 --> T5[tableData5 = 当前生产工艺明细] + + T5 --> P3[getProcess] + P3 --> SP3[MES_ProcessManagement_ProcessGet
入参: 工艺编号=''] + SP3 --> G1[tableData4/filteredTableData4
左侧工序基础库] + + T5 --> P4[getbasedata] + P4 --> SP4[设备管理_设备信息_查询] + SP4 --> B1{按设备类型名称分类} + B1 -->|量具| BJ[basedatagj
工装量具选项] + B1 -->|机床| BC[basedatajc
指定机床选项] + B1 -->|车间| BW[basedatacj
车间选项] + + T5 --> P5[fninsertidx] + P5 --> C1{存在空工艺名称行?} + C1 -->|是| I1[insertidx = 空行 id
左侧选工序时填入占位] + C1 -->|否| I0[insertidx 保持或为 0] + P5 --> C2{工卡量具/指定机床为逗号字符串?} + C2 -->|是| I2[split,map Number
转换为多选数组] + C2 -->|否| I3[保持原值] + + I1 --> READY[编辑弹窗可操作] + I0 --> READY + I2 --> READY + I3 --> READY + + READY --> OP1[查看图纸] + READY --> OP2[新增/插入/删除/排序工序] + READY --> OP3[编辑工时/设备/车间/属性/说明/备注] + READY --> OP4[保存/启用] + READY --> OP5[保存为标准工艺] + READY --> OP6[整套或单条下发任务] + + classDef start fill:#E8F3FF,stroke:#2B6CB0,color:#111; + classDef proc fill:#FFF7E6,stroke:#C47F00,color:#111; + classDef api fill:#EAF8EA,stroke:#2F855A,color:#111; + classDef decision fill:#F3E8FF,stroke:#6B46C1,color:#111; + classDef output fill:#F0FFF4,stroke:#38A169,color:#111; + class S,D1,READY start; + class P1,P2,P3,P4,P5,R1,OP1,OP2,OP3,OP4,OP5,OP6 proc; + class SP1,SP2,SP3,SP4 api; + class F1,B1,C1,C2 decision; + class M1,M0,T5,G1,BJ,BC,BW,I1,I0,I2,I3 output; +``` + +## 3. 工序维护与明细编辑流程 + +```mermaid +flowchart TD + START[编辑生产工艺弹窗] --> LEFT[左侧工序基础库
filteredTableData4] + START --> RIGHT[右侧生产工艺明细
tableData5] + + LEFT --> SEARCH[输入 processSearchName] + SEARCH --> FILTER[filterProcess
按 工艺名称 includes 过滤] + FILTER --> LEFT + + LEFT --> CLICK[点击某个工序 editProcedure(row)] + CLICK --> HASINSERT{insertidx 是否非 0?} + HASINSERT -->|否: 普通新增| ADD[组装参数
工艺编号/物料编号/计划数量/订单编号] + ADD --> SPADD[工艺管理_零件工序_生产工艺_修改数据] + SPADD --> RELOAD1[重新查询生产工艺] + + HASINSERT -->|是: 填入占位行| FILL[组装参数
工艺编号/idd/计划数量/订单编号] + FILL --> SPFILL[工艺管理_零件工序_生产工艺_编辑插入工序] + SPFILL --> RELOAD1 + + RIGHT --> EDIT[编辑字段
准备工时/标准工时/工时合计
工卡量具/指定机床/车间/属性
工艺要求/备注] + EDIT --> NORM[规范化工卡量具/指定机床
数组/对象/字符串 -> 数组] + NORM --> SPEDIT[工艺管理_零件工序_生产工艺_编辑] + SPEDIT --> SILENT[当前无成功提示
后台即时保存] + + RIGHT --> MOVEUP[上移工序] + MOVEUP --> SPMU[工艺管理_零件工序_生产工艺_上移工序] + RIGHT --> MOVEDOWN[下移工序] + MOVEDOWN --> SPMD[工艺管理_零件工序_生产工艺_下移工序] + RIGHT --> INSERT[插入工序] + INSERT --> SPI[工艺管理_零件工序_生产工艺_插入工序
生成空占位行] + RIGHT --> DELETE[删除工序] + DELETE --> SPD[工艺管理_零件工序_生产工艺_删除工序] + + SPMU --> RELOAD1 + SPMD --> RELOAD1 + SPI --> RELOAD1 + SPD --> RELOAD1 + + RELOAD1 --> SPQUERY[工艺管理_生产工艺_查询生产工艺] + SPQUERY --> NEWT5[刷新 tableData5] + NEWT5 --> FN[fninsertidx
识别占位行/转换多选字段] + FN --> RIGHT + + classDef ui fill:#E8F3FF,stroke:#2B6CB0,color:#111; + classDef action fill:#FFF7E6,stroke:#C47F00,color:#111; + classDef api fill:#EAF8EA,stroke:#2F855A,color:#111; + classDef decision fill:#F3E8FF,stroke:#6B46C1,color:#111; + classDef output fill:#F0FFF4,stroke:#38A169,color:#111; + class START,LEFT,RIGHT ui; + class SEARCH,FILTER,CLICK,ADD,FILL,EDIT,NORM,MOVEUP,MOVEDOWN,INSERT,DELETE,RELOAD1,FN action; + class SPADD,SPFILL,SPEDIT,SPMU,SPMD,SPI,SPD,SPQUERY api; + class HASINSERT decision; + class SILENT,NEWT5 output; +``` + +## 4. 批量生成、拷贝、保存、下发流程 + +```mermaid +flowchart TD + subgraph Batch[批量生成生产工艺] + B0[列表勾选订单] --> B1[AllProductProcess] + B1 --> B2{multipleSelection.length >= 1?} + B2 -->|否| BERR[提示: 请勾选数据] + B2 -->|是| B3[过滤选中行
标准工艺 == 1 且 生产工艺 != 1] + B3 --> B4[拼接订单编号/物料编号/计划数量
逗号字符串] + B4 --> BSP[工艺管理_零件工序_生产工艺_批量生成生产工艺] + BSP --> B5[刷新订单列表 searchTable] + end + + subgraph Copy[工艺拷贝 当前入口被注释] + C0[copyData 打开生产工艺拷贝弹窗] --> C1{processprodutc 勾选?} + C1 -->|否: 标准工艺来源| C2[工艺管理_生产工艺_标准工艺拷贝
获取候选零件] + C2 --> C3[MES_ProcessManagement_ProcessBindGet
预览标准工艺明细] + C1 -->|是: 生产工艺来源| C4[工艺管理_生产工艺_生产工艺拷贝
获取候选物料] + C4 --> C5[工艺管理_制定标准工艺_拷贝生产工艺
预览生产工艺明细] + C3 --> C6[submitCopy] + C5 --> C6 + C6 --> C7[工艺管理_生产工艺_工艺拷贝
物料编号/零件图号/订单编号/计划数量/工艺类型] + C7 --> C8{result == '1'?} + C8 -->|是| COK[提示拷贝成功
刷新当前生产工艺] + C8 -->|否| CERR[提示拷贝失败] + end + + subgraph Save[保存与沉淀] + S0[保存按钮 saveProcess] --> S1[工艺管理_生产工艺_启用
入参: 订单编号] + S1 --> SOK[提示操作成功] + S2[保存为标准工艺 processSave] --> S3[车间生产管理工艺_零件工序_保存为标准工艺
入参: 物料编号/订单编号] + S3 --> S4{result == '1'?} + S4 -->|是| SOK2[提示保存成功] + S4 -->|否| SERR2[提示保存失败] + end + + subgraph Dispatch[任务下发] + D0[整套下发 workprocess] --> D1{tableData5.length 小于 1?} + D1 -->|是| DERR[提示下发失败] + D1 -->|否| D2[计划排产_生产订单_订单任务_生产工艺任务下发
订单编号/物料编号/计划数量] + D2 --> D3{result != 0?} + D3 -->|是| DOK[提示操作成功
刷新列表/关闭弹窗] + D3 -->|否| DOLD[提示已下发任务
刷新列表/关闭弹窗] + + O0[单条下发 oneworkprocess(row)] --> O1[计划排产_生产订单_订单任务_单条生产工艺任务下发
订单编号/物料编号/计划数量/工艺顺序] + O1 --> OOK[提示操作成功
刷新列表/不关闭弹窗] + end + + classDef action fill:#FFF7E6,stroke:#C47F00,color:#111; + classDef api fill:#EAF8EA,stroke:#2F855A,color:#111; + classDef decision fill:#F3E8FF,stroke:#6B46C1,color:#111; + classDef ok fill:#F0FFF4,stroke:#38A169,color:#111; + classDef err fill:#FFEAEA,stroke:#C53030,color:#111; + class B0,B1,B3,B4,B5,C0,C2,C3,C4,C5,C6,C7,S0,S2,D0,D2,O0 action; + class BSP,C2,C3,C4,C5,C7,S1,S3,D2,O1 api; + class B2,C1,C8,S4,D1,D3 decision; + class COK,SOK,SOK2,DOK,DOLD,OOK ok; + class BERR,CERR,SERR2,DERR err; +``` + +## 5. 后台过程关系框图 + +```mermaid +flowchart LR + subgraph FE[前端方法] + searchTable[searchTable
订单列表查询] + editProcess[editProcess/editProcesssearch
打开编辑并查工艺] + getitemdata[getitemdata
查原料] + getProcess[getProcess
查工序基础库] + getbasedata[getbasedata
查设备基础数据] + editProcedure[editProcedure/updateProcess/updateProcess2
新增或编辑工序] + orderOps[upOne/downOne/insertOne/deleteOne
排序插入删除] + copyOps[copyData/searchTable2/searchTable4/submitCopy
工艺拷贝] + saveOps[saveProcess/processSave
启用/保存为标准工艺] + dispatchOps[workprocess/oneworkprocess
任务下发] + drawingOps[getNum/getNum2
图纸查看] + end + + subgraph SP[存储过程/接口] + sp1[计划排产_生产订单_订单查询] + sp2[工艺管理_生产工艺_查询生产工艺] + sp3[工艺管理_获取物料原料信息] + sp4[MES_ProcessManagement_ProcessGet] + sp5[设备管理_设备信息_查询] + sp6[工艺管理_零件工序_生产工艺_修改数据] + sp7[工艺管理_零件工序_生产工艺_编辑] + sp8[工艺管理_零件工序_生产工艺_编辑插入工序] + sp9[工艺管理_零件工序_生产工艺_上移工序/下移工序/插入工序/删除工序] + sp10[工艺管理_生产工艺_生产工艺拷贝/标准工艺拷贝] + sp11[MES_ProcessManagement_ProcessBindGet] + sp12[工艺管理_制定标准工艺_拷贝生产工艺] + sp13[工艺管理_生产工艺_工艺拷贝] + sp14[工艺管理_生产工艺_启用] + sp15[车间生产管理工艺_零件工序_保存为标准工艺] + sp16[计划排产_生产订单_订单任务_生产工艺任务下发] + sp17[计划排产_生产订单_订单任务_单条生产工艺任务下发] + sp18[工艺管理_图纸维护_查看图纸] + sp19[工艺管理_工艺维护_查看图纸] + sp20[工艺管理_零件工序_生产工艺_批量生成生产工艺] + end + + subgraph DB[业务数据对象] + orderData[生产订单/计划排产数据] + stdProcess[标准工艺库] + productProcess[订单级生产工艺库] + processBase[工序基础表] + deviceBase[设备基础资料
量具/机床/车间] + materialData[物料原料/BOM/库存线索] + drawingData[零件图纸/工艺图纸 PDF] + taskData[生产任务/工序任务] + end + + searchTable --> sp1 --> orderData + editProcess --> sp2 --> productProcess + getitemdata --> sp3 --> materialData + getProcess --> sp4 --> processBase + getbasedata --> sp5 --> deviceBase + editProcedure --> sp6 --> productProcess + editProcedure --> sp8 --> productProcess + editProcedure --> sp2 + orderOps --> sp9 --> productProcess + orderOps --> sp2 + editProcedure --> sp7 --> productProcess + copyOps --> sp10 --> productProcess + copyOps --> sp11 --> stdProcess + copyOps --> sp12 --> productProcess + copyOps --> sp13 --> productProcess + saveOps --> sp14 --> productProcess + saveOps --> sp15 --> stdProcess + dispatchOps --> sp16 --> taskData + dispatchOps --> sp17 --> taskData + drawingOps --> sp18 --> drawingData + drawingOps --> sp19 --> drawingData + searchTable -.批量生成入口.-> sp20 --> productProcess + + classDef fe fill:#E8F3FF,stroke:#2B6CB0,color:#111; + classDef sp fill:#EAF8EA,stroke:#2F855A,color:#111; + classDef db fill:#FFF7E6,stroke:#C47F00,color:#111; + class searchTable,editProcess,getitemdata,getProcess,getbasedata,editProcedure,orderOps,copyOps,saveOps,dispatchOps,drawingOps fe; + class sp1,sp2,sp3,sp4,sp5,sp6,sp7,sp8,sp9,sp10,sp11,sp12,sp13,sp14,sp15,sp16,sp17,sp18,sp19,sp20 sp; + class orderData,stdProcess,productProcess,processBase,deviceBase,materialData,drawingData,taskData db; +``` + diff --git a/work/ProcessManagement/ProcessProduct/i.txt b/work/ProcessManagement/ProcessProduct/i.txt new file mode 100644 index 0000000..6573c76 --- /dev/null +++ b/work/ProcessManagement/ProcessProduct/i.txt @@ -0,0 +1,547 @@ +# ProcessManagement/ProcessProduct/index 模块详细功能分析 + +分析对象:`src/views/ProcessManagement/ProcessProduct/index.vue` + +## 1. 模块定位 + +该模块是“生产工艺维护”页面,用于围绕生产订单维护订单级生产工艺。它不是单纯的工艺基础资料维护,而是把“生产订单、物料、标准工艺、生产工艺、图纸、任务下发”串在一起: + +- 查询生产订单及其标准工艺、生产工艺、图纸、任务状态。 +- 对单个订单/物料维护生产工艺路线。 +- 从工序基础库新增、插入、删除、调整生产工艺工序。 +- 编辑工序工时、工装量具、指定机床、车间、属性、工序说明和备注。 +- 从标准工艺或已有生产工艺拷贝生成当前订单生产工艺。 +- 批量按标准工艺生成生产工艺。 +- 将生产工艺保存启用,并可下发为生产任务。 +- 查看零件图纸、工艺图纸 PDF。 +- 可把当前订单生产工艺保存回标准工艺。 + +## 2. 页面结构 + +页面由三个主要区域组成: + +1. 生产订单查询区 + - 输入条件:生产订单、销售订单、物料编码、物料名称、计划号。 + - 下拉条件:任务状态、属性、工艺状态。 + - 日期条件:下达日期范围。 + - 操作按钮:查询、批量生成生产工艺。 + +2. 生产订单列表 + - 支持多选,用于批量生成生产工艺。 + - 展示销售订单、计划号、生产订单、物料编码、物料名称、属性、计划数、下达日期、计划开始、计划完成。 + - 通过状态灯展示加急状态、标准工艺、生产工艺、图纸。 + - 每行提供“编辑工艺”入口。 + - 底部有分页,支持每页 20、50、100 条。 + +3. 弹窗 + - `编辑生产工艺`:核心维护弹窗。 + - `生产工艺拷贝`:代码中已实现,用于从标准工艺或生产工艺拷贝;但当前模板里的“拷贝”按钮被注释,页面默认没有显式入口。 + - `图纸`:PDF 预览弹窗。 + +## 3. 查询与列表功能 + +页面创建时会自动调用 `searchTable()` 查询订单列表。 + +查询入参: + +- `订单号`:来自 `orderNo`,为空时传 `0`。 +- `合同号`:销售订单。 +- `产品编码`:物料编码。 +- `产品名称`:物料名称。 +- `下达日期1`、`下达日期2`:日期范围。 +- `任务状态`:默认 `1`,即未下发。 +- `订单状态`:默认 `1`,即机加件。 +- `工艺状态`:默认 `0`,即全部。 +- `计划号`。 +- `PageCurrent`、`PageSize`、`PageCount`、`ItemCount`:分页和输出参数。 + +调用后台: + +- `计划排产_生产订单_订单查询` + +返回处理: + +- `response.data.result` 赋给 `tableData`。 +- `response.data.output[0].ItemCount` 转成 `total1`,驱动分页总数。 + +列表状态灯含义: + +- `加急状态 == 1` 显示绿色,否则灰色。 +- `标准工艺 == 1` 显示绿色,否则灰色。 +- `生产工艺 == 1` 显示绿色,否则灰色。 +- `worker != 0` 认为已有图纸,显示绿色,否则灰色。 + +## 4. 编辑生产工艺主流程 + +用户点击某行“编辑工艺”后执行 `editProcess(row)`: + +1. 打开 `dialogcasual` 编辑弹窗。 +2. 开启 loading。 +3. 调用 `getitemdata(row.订单编号)` 获取该订单的原料信息。 +4. 调用 `editProcesssearch(row)` 查询当前订单生产工艺。 + +### 4.1 原料信息 + +`getitemdata(item)` 根据订单编号查询原料: + +- 后台过程:`工艺管理_获取物料原料信息` +- 入参:`订单编号` +- 仅保留 `U_MoType == '机加件'` 的子件。 +- 展示字段:子件编码、子件名称、计划数量、材质、基本数量、存货量、待出数量、拣配数量。 + +这些原料信息展示在编辑弹窗顶部,用于工艺员维护工艺时参考物料和库存情况。 + +### 4.2 当前生产工艺查询 + +`editProcesssearch(row)` 查询生产工艺明细: + +- 后台过程:`工艺管理_生产工艺_查询生产工艺` +- 入参:`物料编号`、`订单编号` + +查询成功后同时加载: + +- 工序基础列表:`getProcess()` +- 设备基础数据:`getbasedata()` +- 当前生产工艺明细:`tableData5` +- 插入占位行检测和设备字段转换:`fninsertidx()` + +## 5. 编辑弹窗功能 + +编辑弹窗顶部展示: + +- 当前物料编码。 +- 当前物料名称。 +- 机加原料清单。 + +弹窗按钮: + +- `零件图纸`:查看零件图纸 PDF。 +- `工艺图纸`:查看工艺图纸 PDF。 +- `保存为标准工艺`:把当前生产工艺保存为标准工艺。 +- `下发任务`:把整套生产工艺下发为生产任务。 +- `保存/已保存`:启用当前生产工艺。 + +弹窗主体左右两栏: + +- 左侧是工序基础库,支持按工序名称过滤,点击工序可加入当前生产工艺。 +- 右侧是当前订单生产工艺明细,支持编辑、排序、插入、删除和单条下发。 + +## 6. 工序基础库 + +`getProcess()` 调用: + +- 后台过程:`MES_ProcessManagement_ProcessGet` +- 入参:`工艺编号 = ''` + +返回数据: + +- 保存到 `tableData4`。 +- 同步到 `filteredTableData4`。 + +`filterProcess()` 根据 `processSearchName` 做前端过滤: + +- 匹配字段:`工艺名称` +- 过滤逻辑:`item.工艺名称.includes(processSearchName)` + +点击左侧工序触发 `editProcedure(row)`。 + +## 7. 新增/插入生产工艺工序 + +### 7.1 普通新增工序 + +当 `insertidx` 为 0 时,点击左侧工序执行普通新增: + +- 后台过程:`工艺管理_零件工序_生产工艺_修改数据` +- 入参: + - `工艺编号` + - `物料编号` + - `计划数量` + - `订单编号` + +新增成功后重新查询当前生产工艺: + +- `工艺管理_生产工艺_查询生产工艺` + +### 7.2 插入占位行后补入工序 + +当 `insertidx` 非 0 时,表示右侧工艺表里存在一条空工序占位行。点击左侧工序会调用 `updateProcess2(param1)`: + +- 后台过程:`工艺管理_零件工序_生产工艺_编辑插入工序` +- 入参: + - `工艺编号` + - `idd`:占位行 id + - `计划数量` + - `订单编号` + +成功后重新查询生产工艺,并把 `insertidx` 重置为 0。 + +### 7.3 插入空工序行 + +右侧点击某行的“插入工序”按钮执行 `insertOne(row)`: + +- 后台过程:`工艺管理_零件工序_生产工艺_插入工序` +- 入参: + - `零件图号`:实际传当前 `selectedRow.物料编号` + - `idd`:当前行 id + - `订单编号` + +该过程应在当前行附近生成空工序占位,之后用户再从左侧工序基础库选择工序填入。 + +## 8. 编辑生产工艺明细 + +右侧生产工艺表可编辑字段: + +- `准备工时` +- `标准工时` +- `工时合计` +- `工卡量具` +- `指定机床` +- `车间` +- `属性` +- `工艺要求` +- `备注` + +字段变更触发 `updateProcess(row)`: + +- 后台过程:`工艺管理_零件工序_生产工艺_编辑` +- 入参: + - `idd` + - `工艺要求` + - `准备工时` + - `标准工时` + - `工时合计` + - `工卡量具` + - `指定机床` + - `车间` + - `备注` + - `属性` + +`工卡量具` 和 `指定机床` 支持数组、对象、字符串三种输入形态。方法会统一转换成数组再提交。 + +注意:工时输入使用 `@input`,每次输入都会调用后台编辑过程;工序说明和备注使用 `@change`,失焦或确认后提交。 + +## 9. 工序排序与删除 + +右侧每条工序提供: + +- 下移工序:`downOne(row)` +- 上移工序:`upOne(row)` +- 插入工序:`insertOne(row)` +- 删除工序:`deleteOne(row)` +- 单条下发任务:`oneworkprocess(row)` + +排序/删除调用过程: + +- 上移:`工艺管理_零件工序_生产工艺_上移工序` +- 下移:`工艺管理_零件工序_生产工艺_下移工序` +- 删除:`工艺管理_零件工序_生产工艺_删除工序` + +通用入参: + +- `物料编号` +- `idd` +- `订单编号` + +每次操作成功后都会重新调用: + +- `工艺管理_生产工艺_查询生产工艺` + +并重新执行 `fninsertidx()` 处理空工序占位和设备字段格式。 + +## 10. 设备与属性基础数据 + +`getbasedata()` 调用: + +- 后台过程:`设备管理_设备信息_查询` + +按 `设备类型名称` 分类: + +- `量具` -> `basedatagj`,用于工装量具多选。 +- `机床` -> `basedatajc`,用于指定机床多选。 +- `车间` -> `basedatacj`,用于车间下拉。 + +工序属性下拉为前端固定值: + +- 外协 +- 自制 + +设备字段后端返回通常是逗号字符串,`fninsertidx()` 和 `datadoing()` 会把: + +- `工卡量具` +- `指定机床` + +转换为数字数组,方便 Element UI 多选框回显。 + +## 11. 拷贝生产工艺功能 + +代码中实现了 `copyData()`、`submitCopy()`、`searchTable2()`、`searchTable4()`,用于从其他工艺来源拷贝到当前订单。 + +当前模板中原“拷贝”按钮被注释: + +```vue + +``` + +因此此能力在源码中存在,但当前页面默认不可见,除非后续恢复按钮或从其他逻辑触发。 + +### 11.1 选择拷贝来源 + +`processprodutc` 为勾选状态时,表示从生产工艺拷贝: + +- 候选来源过程:`工艺管理_生产工艺_生产工艺拷贝` +- 明细查询过程:`工艺管理_制定标准工艺_拷贝生产工艺` +- 选择字段:`物料编号` + +未勾选时,表示从标准工艺拷贝: + +- 候选来源过程:`工艺管理_生产工艺_标准工艺拷贝` +- 明细查询过程:`MES_ProcessManagement_ProcessBindGet` +- 选择字段:`零件图号` + +### 11.2 确认拷贝 + +`submitCopy()` 调用: + +- 后台过程:`工艺管理_生产工艺_工艺拷贝` + +入参: + +- `物料编号`:当前订单物料编号。 +- `零件图号`:选择的来源物料/零件。 +- `订单编号`:当前订单编号。 +- `计划数量`:当前订单计划数量。 +- `工艺类型`:`processprodutc` 勾选时为 1,否则为 0。 + +返回 `response.data[0].result === '1'` 判定拷贝成功,然后刷新当前生产工艺。 + +## 12. 批量生成生产工艺 + +列表多选后点击“批量生成生产工艺”执行 `AllProductProcess()`。 + +筛选逻辑: + +- 只处理 `标准工艺 == 1` 且 `生产工艺 != 1` 的选中行。 +- 把符合条件的订单编号、物料编号、计划数量分别用逗号拼接。 + +调用后台: + +- `工艺管理_零件工序_生产工艺_批量生成生产工艺` + +入参: + +- `订单编号` +- `零件图号`:实际传物料编号列表。 +- `计划数量` + +成功后刷新订单列表。 + +注意:如果选中了数据但没有任何行满足“有标准工艺且未生成生产工艺”,当前代码仍会提交空字符串参数,没有前端提示。 + +## 13. 保存、启用、保存为标准工艺 + +### 13.1 保存/启用生产工艺 + +`saveProcess()` 调用: + +- 后台过程:`工艺管理_生产工艺_启用` +- 入参:`订单编号` + +该动作更像“启用当前订单生产工艺”,成功后只提示“操作成功”,当前代码未立即刷新生产工艺明细,也未关闭弹窗。 + +### 13.2 保存为标准工艺 + +`processSave()` 调用: + +- 后台过程:`车间生产管理工艺_零件工序_保存为标准工艺` +- 入参: + - `物料编号` + - `订单编号` + +返回 `result === '1'` 时提示保存成功,否则提示保存失败。 + +该功能用于把订单级生产工艺沉淀回物料标准工艺。 + +## 14. 任务下发 + +### 14.1 整套生产工艺下发 + +点击编辑弹窗顶部“下发任务”执行 `workprocess()`。 + +前置判断: + +- `tableData5.length < 1` 时提示下发失败。 + +调用后台: + +- `计划排产_生产订单_订单任务_生产工艺任务下发` + +入参: + +- `订单编号` +- `物料编号` +- `计划数量` + +返回处理: + +- `response.data[0].result != 0`:认为下发成功。 +- 否则提示“已下发任务”。 +- 无论成功或已下发,都会刷新订单列表并关闭编辑弹窗。 +- catch 分支也提示成功,说明这里对后台异常处理较宽松。 + +### 14.2 单条工序下发 + +右侧工序行点击“下发任务”执行 `oneworkprocess(row)`: + +- 后台过程:`计划排产_生产订单_订单任务_单条生产工艺任务下发` +- 入参: + - `订单编号` + - `物料编号` + - `计划数量` + - `工艺顺序` + +成功后刷新订单列表,但不关闭编辑弹窗。 + +## 15. 图纸查看 + +### 15.1 零件图纸 + +`getNum()` 调用: + +- 后台过程:`工艺管理_图纸维护_查看图纸` +- 入参:`物料编号` + +如果返回数据非空: + +- 使用 `MESDownFile + uid + '.pdf'` 拼出 PDF 地址。 +- 打开 `seeVisible` 弹窗。 +- 调用 `seepdf(pdfSrc, 'see')` 渲染 PDF。 + +否则提示“未上传图纸”。 + +### 15.2 工艺图纸 + +`getNum2()` 调用: + +- 后台过程:`工艺管理_工艺维护_查看图纸` +- 入参:`物料编号` + +渲染逻辑与零件图纸相同。 + +## 16. 数据状态与关键变量 + +核心状态: + +- `tableData`:订单列表。 +- `tableData5`:当前订单生产工艺明细。 +- `tableData4`:工序基础库。 +- `filteredTableData4`:过滤后的工序基础库。 +- `tableData3`:拷贝来源候选列表。 +- `tableData6`:拷贝来源工艺明细预览。 +- `selectedRow`:当前选中的订单行。 +- `multipleSelection`:订单列表多选项。 +- `itemdata`:当前订单机加原料信息。 +- `insertidx`:空工序占位行 id,决定点击左侧工序是新增还是填入占位。 +- `processStatus`:控制“保存/已保存”按钮显示,但当前代码中基本一直被置为 0。 +- `taskstatus`:默认 `1`,页面初始只查未下发。 +- `orderstatus`:默认 `1`,页面初始只查机加件。 +- `standardprocess`:默认 `0`,工艺状态全部。 +- `basedatagj`、`basedatajc`、`basedatacj`:量具、机床、车间选项。 + +## 17. 后台过程清单 + +本页面直接调用的后台过程: + +- `工艺管理_获取物料原料信息` +- `工艺管理_生产工艺_查询生产工艺` +- `工艺管理_生产工艺_工艺拷贝` +- `工艺管理_生产工艺_生产工艺拷贝` +- `工艺管理_生产工艺_标准工艺拷贝` +- `计划排产_生产订单_订单查询` +- `计划排产_生产订单_订单任务_生产工艺任务下发` +- `计划排产_生产订单_订单任务_单条生产工艺任务下发` +- `工艺管理_零件工序_生产工艺_批量生成生产工艺` +- `设备管理_设备信息_查询` +- `MES_ProcessManagement_ProcessBindGet` +- `工艺管理_制定标准工艺_拷贝生产工艺` +- `MES_ProcessManagement_ProcessGet` +- `车间生产管理工艺_零件工序_保存为标准工艺` +- `工艺管理_图纸维护_查看图纸` +- `工艺管理_工艺维护_查看图纸` +- `工艺管理_零件工序_生产工艺_修改数据` +- `工艺管理_零件工序_生产工艺_编辑` +- `工艺管理_零件工序_生产工艺_编辑插入工序` +- `工艺管理_零件工序_生产工艺_删除工序` +- `工艺管理_零件工序_生产工艺_上移工序` +- `工艺管理_零件工序_生产工艺_下移工序` +- `工艺管理_零件工序_生产工艺_插入工序` +- `工艺管理_生产工艺_启用` + +## 18. 业务数据流 + +典型流程如下: + +1. 工艺员进入页面,默认查询未下发的机加件订单。 +2. 工艺员按订单号、销售订单、物料、计划号、工艺状态等条件定位订单。 +3. 如果订单已有标准工艺但未生成生产工艺,可批量生成生产工艺。 +4. 点击“编辑工艺”进入订单级工艺维护。 +5. 系统加载当前订单原料、生产工艺、工序基础库、设备基础数据。 +6. 工艺员从左侧工序库添加工序,或对已有工序做插入、删除、上下移动。 +7. 工艺员维护每道工序的工时、工装量具、指定机床、车间、外协/自制属性、工艺要求和备注。 +8. 工艺员可查看零件图纸、工艺图纸辅助判断。 +9. 工艺员保存/启用生产工艺。 +10. 工艺员可将生产工艺保存为标准工艺。 +11. 工艺确认后下发整套生产任务,或只下发单条工序任务。 + +## 19. 与其他模块关系 + +该模块位于工艺管理与计划排产之间,是订单进入生产执行前的关键节点。 + +- 上游依赖: + - 生产订单/计划排产数据。 + - 标准工艺数据。 + - 工序基础资料。 + - 设备基础资料。 + - 图纸维护资料。 + +- 下游影响: + - 生产任务下发。 + - 排产、报工、质检、生产计划跟踪等模块读取任务和工艺路线。 + - 生产工艺的标准工时、准备工时、外协/自制属性会影响计划工时、任务执行和统计报表。 + +旧技术文档中也将核心数据归为: + +- `基础表_工序` +- `车间生产管理工艺_零件工序_工艺库` +- `车间生产管理工艺_零件生产工艺_工艺库` +- `View_标准工艺视图` +- `View_生产工艺视图` +- `物料基础数据_零件图纸` +- `物料基础数据_工艺图纸` + +## 20. 代码层面的注意点 + +1. `selectedRow` 只在表格行点击时赋值。点击“编辑工艺”时没有在 `editProcess(row)` 内显式设置 `selectedRow = row`,依赖表格行点击事件是否先触发。更稳妥的写法应在 `editProcess(row)` 开头赋值。 + +2. `processStatus` 当前主要被置为 0,`已保存` 状态很难出现。需要结合后端返回或生产工艺状态重新设计。 + +3. “拷贝”按钮被注释,但相关代码仍完整存在。如果业务需要拷贝,应恢复入口并确认交互。 + +4. 批量生成时,如果选中行都不满足“有标准工艺且未生成生产工艺”,代码会提交空参数。建议增加前端校验并提示“所选数据无可生成项”。 + +5. `workprocess()` 的 catch 分支提示“操作成功”,可能掩盖真实失败。建议区分网络/后台异常。 + +6. `oneworkprocess()` 的 tooltip 文案仍是“删除工序”,但按钮实际是“下发任务”,提示文案不一致。 + +7. 工时字段使用 `@input` 直接调用后台,连续输入会频繁请求。建议防抖或改为 `@change`。 + +8. `insertidx` 在 `fninsertidx()` 中只要发现空 `工艺名称` 就赋值,但没有在每次扫描前清零,可能保留旧值。虽然部分流程会重置,但仍存在状态残留风险。 + +9. `dialogVisible` 在 data 中重复定义,`loading`、`productName`、`pageCurrent`、`pageSize` 也有重复定义或语义冲突,建议整理。 + +10. 日期控件类型为 `datetimerange`,但 `value-format` 是 `yyyy-MM-dd`,实际只传日期,不含时分秒。 + +## 21. 总结 + +`ProcessProduct/index.vue` 是订单级生产工艺维护页面。它的核心价值是把标准工艺和工序基础资料转成可执行的生产订单工艺,并在确认后下发到生产任务。该页面承担的功能包括订单查询、生产工艺生成、工艺路线编辑、工时和设备维护、图纸查看、工艺拷贝、保存启用、保存为标准工艺、整套或单条任务下发。 + +从业务链路看,该模块是“工艺准备完成”到“生产任务执行”的转换点;从数据风险看,生产工艺一旦下发会影响排产、报工、质检和统计,因此保存、启用、下发、编辑已下发工艺等行为需要明确状态控制。 diff --git a/work/ProcessManagement/ProcessProduct/高清图/01_模块总览框图.svg b/work/ProcessManagement/ProcessProduct/高清图/01_模块总览框图.svg new file mode 100644 index 0000000..ce0b870 --- /dev/null +++ b/work/ProcessManagement/ProcessProduct/高清图/01_模块总览框图.svg @@ -0,0 +1 @@ +

后台过程

前端核心状态

页面层

searchTable

row-click

selection-change

编辑工艺 editProcess

getitemdata

editProcesssearch

getProcess

getbasedata

工序维护

保存/启用

保存为标准工艺

下发任务

零件/工艺图纸

copyData/searchTable2/searchTable4

submitCopy

AllProductProcess

工艺员/技术人员

ProcessProduct/index.vue
生产工艺维护页面

查询区
生产订单/销售订单/物料编码/物料名称/计划号
任务状态/属性/下达日期/工艺状态

生产订单列表
多选/分页/状态灯/编辑工艺

编辑生产工艺弹窗
原料信息/图纸/保存/下发/工序维护

生产工艺拷贝弹窗
标准工艺或生产工艺来源预览

图纸预览弹窗
零件图纸/工艺图纸 PDF

tableData
订单列表

selectedRow
当前订单

multipleSelection
批量选中订单

tableData5
当前生产工艺明细

tableData4/filteredTableData4
工序基础库

tableData6
拷贝来源工艺预览

basedatagj/basedatajc/basedatacj
量具/机床/车间

insertidx
插入占位行 id

itemdata
订单原料信息

计划排产_生产订单_订单查询

工艺管理_生产工艺_查询生产工艺

MES_ProcessManagement_ProcessGet

设备管理_设备信息_查询

工艺管理_获取物料原料信息

工艺管理_零件工序_生产工艺_*
新增/编辑/插入/删除/上下移/批量生成

工艺管理_生产工艺_*
拷贝/启用/来源查询

计划排产_生产订单_订单任务_*
整套下发/单条下发

工艺管理_图纸维护_查看图纸
工艺管理_工艺维护_查看图纸

车间生产管理工艺_零件工序_保存为标准工艺

\ No newline at end of file diff --git a/work/ProcessManagement/ProcessProduct/高清图/01_模块总览框图高清.png b/work/ProcessManagement/ProcessProduct/高清图/01_模块总览框图高清.png new file mode 100644 index 0000000000000000000000000000000000000000..e31a25bdd5500ac48b394185554749157d222d0f GIT binary patch literal 422351 zcmeFZcU03`w=Rs^Z5L1wk-ilHrHC4kP86gINbf{M2)!4n!HRV0oglp+Btw3Y{vsI}8M&P7 zQ&loDhD|cEv$5y@0FT(UYfh7qT_KZu`b7P8!s2!_5eCQZa zR=4wzvz45Kd#F{h@i!x{9~*+SMmjBLxHNTR(AA1h+Z_qJSO0FqBFE9d?%J?>ld?{@ka@e!Z~<4Dizleydbll-Ny{#eWk%P}X9-3eqi@X9};4>QkSef+7zg<4@hrWo|gKyY0 zGK5#nqoYF7-^MN+Ex`Wvr2qZvUlf1*qkI47@qfAKzk?r8531us)LG2enYI1-SPH~? zuU&wBDW|lwgjzAUc~zRw=R(n~tco%gxePKWaX29Dkls7GM+|i#hD?%_A9N$9gjVDgv6vKcw@sGRD^vAM4mA!)Ki& z8>e#LB!zYrbPwR3NNPzOSIWZSi^9%%UuG=snyiysDk3V=?0(L+MJ47g8&U|^r&(?B z64k%13>{`m?h9x}sz1{AGWUYweyJJuB7Ovp!J|zTFIPkyb^F6m@j82bLA+v#TO(ak z6%;G0!TJ|jL!;`;?Rp53yZup2tH(JcQ{P>{{z>}zx2w|N70m$4oobX*mKjFjx9f{P z#)hL_HO4Cxpb~QQcN=q#CTtk4s1B=E9TnxADYVi{V*WUw3o{UT^@r)`IfE%viZw(H zmxm-Kk`JwhH}rH@c08X5PvvD`F^FN@E-s-Iz@Bs88(?6ds4(OyRSw}MXXSfPxJcQD zyu7qjabw7#`0jfszjTQG${4!axwPPsb;EP9A&LvY%760h#ElD-vphdN{+hz6631#= zFElF2JyVSD*RQBbv56s;%FX!3GiGC8)Wrci1$!K6oe5%&p6By@DIdM>h%M=B=s(i1 z)XJ|GMhPVF<$08>ezfXs9A)OIvOn%BzjBW-zYwxsZFF2)W?PU*^Ko$OwJ6TY%I2bx zLuG8!mU(zXkpO2fc^~r8U1NQc8*hZ2#8MGhT55iY2u{Fpy(IQ#X<1^`U}V)~tJ&R= z_yobGCM+8RMxRQ2B58MH;KSIo5TRYELsz$#VbCpW@rC5;%CEOA)415+T?ym-S%Yr1 z<-1N;Wq9vuZAZikK7*aIrawD8s1BhtSU*wjBo`tpBn~^Rn z_@0)e?XWmh#TF!*rxQ6y+bP6T|Mm7U&P}GGL*&;`Wq({uN%n0Hp+MPL0xL&D#9cLI zK6Qbo*XPL*<;^)^Z6Eat1sql6yiI?5>S;0u>F3|BZ;7^p)dn?#m+wg{4O#KzWkE%} zyW*yu+u@f({pf^r>NZ|DI_O%oedTgZvR;czI4o%?IXf`Ar!mNeKHg6-;`q4U6&2hK zeB=((sw|e$)itvg9HTcVTXWKCd|%7;CP_e0SF^fa1;@UXUCj}PsOVld1Z8;Yu!HGPn*mgH_S zx{aN3*K;XwU!5bFdOzX>=kc)(>)PjnB~;`&!G7{iZ0%w6(%dK<00h*|MeAl3#9^-aT9!MI3pWs8v=))z#-->ccxolw9XwMp&)r$u!88 zt?KjJDh+@6Z7J1BUV#!44zckfaww~pzM|bYKo%BuDJY*u&;)sKDL;#Y9)DTM4Ts}9_xNgNs z_bWa@qdfb?vY&q@EYIR%<8oHP>%*tL0}0)9%3?w#j>q%)K_nJ7+0Jot|Kq>ZRBdk| zk36-sv7>c`(X(kB9}lFet7RVM6;lBG=e+s zbS)q!uC|V=#za4S{e1LIu?)Uf6gFCQ$Jh?uoC2%g-h7Yigc|PR@QIR4**o3M{?+$O zUUUxJ?)E#(MJD!Er+T`o-S8_YF}QgYIjsyV^s!|=S%W72?2J^-%Uk?;ynni0f9v_S z-8+g%Zo^&anXi_78tVlY)ULnEbdhOL^wc(R6y_0tLITHTrQ+Kh^8#Wv=67dQr}64#k-<5RW zYv~NtVeIHwexa#0g|&76nLZ?bW?AR1(Q6)#5Z4dcazhvQ(G%E~v2GEzUY7&cbo83g zgR;r851n&6%(>)!j!C-Je2A_*=Ngv}v;C)X8OLktotIg6GCza{B;<^v%F1&qhB4aC zX+ls|)-7Gz9ZYYhhEZ3X)*ufu)H7T|)im#5&C>h>Z|&|A{I@c&zOT!3)H6Fnwz^5) zg!h3`^@a#+3$OLjQb1z;J;UzfeD_XWLW{x8^nKmXjGXOEfuY;;1+ZxQO}`H`nanX& zc0K5*S+sVsxt4e3up3yrPrbp(Shu+pRC7te^5eSjo|4g$h=6)#9^gpZ1LxZ#-ly5+ zZ4Y>5yJZ^*X6CrCD7U$py;wGpka#)N<5e@^Zj5ML+Wa;>Z6GDob0~Grgr&A!kW!Y(-UHOf965zoUAw)b2qDnjs>qiJYCk{fQ97Ky3e z#(NY;i&ac#=V|A`o3|Bfwy9M)*vH)KngY-0A?lNl%Vx|>RLrFe@CRpp6h^)xzlw?t z)4;NH6;5j=6BRK+eRflQa<4a0F_ zfPr3%Vw})%_S^Ks)@;Auspg*Q?tX&fkx3qgAn<+fj`_CUEXhrk)0%r1)*cPujNvsO zS;F~Dbha|eO2Uk1T%+m^;&Fpr3O5hm#9oTNE*go9b!bdc^xZo)#c$*&Ik9!<ZWoHgc)C&J}ajED>RlBtpeB8Uj zti9J(UIzJiVOv!F(L(w>zeqU`3%f{Z&DQQ5diAjHU~F3JB5lS5H#uMR%sg#7W<9RV zMsh2xLv}5SRz6qxDO6pe7h5aiy|;Rlhd+l7PB72IsB8^lJ`T!`gm@E1a)w#YGZ3g& zM>gxdaR}o0L203>00@-H9qL6A75e*iKTqUN_l~2PxI;3V+g@IWUqxHUs*Mo#dwSk5 z-IS(qJOw|W!Nt3Dj;3(zJ@<^F2d^&IdAq`QrkX!PEDxkc0bzDlN`hE!Z?>$MnNuv$ z-8H&>3qEp-S`FXuOe92eNCxEI1EE7rfelgJ(S%S4tB@!EZ)))^QQ~A3|B4!ZlQd@Y zA5VDcL^Aby8$0uVY5{*Y{rB(E&rZC_@5h^-{LkYgNBp<p=WsnTai@3$xL zi1faHzwRffJV8w_^g=8mtmMHTCK)V$2j<_O^ZWPz3C4f9XDFoNW9z*)4b_daN3A?b}iwkazApyp31Z5|UR5?K;gDaJ7O^eZ>lYc_}>$6L@0r9}G5 zx*%q1;{LI*1nHxuPkvIRv3lJAuBUZLt)_L`W$^sR2`7Y3ACVTq zv0iUS?S)eZ4I_H2JRJ8(e*DWjl_X1^xbD9^$?Zu``tP6%|Bs#jXFLDj*sqVh#f}5D zLOTUVyzs5mkmy>&amEW3RgxwIcoM{RtCog0VpYUpzFlpCl0%d2ZRh;t zs@(d{MlkE{;&EOK*E4?Sa$)RAwNy|3nG&)*Im^>q^?ZKjNCVTYn{2F>)?3TNHxq2? zj48aNjGZ+sb-fLLtB954CpGLFUt|$0&xaG-cKj(mWaNZ>xHR7xyT3TtjB?joo2S*B z?F`VIpCim37LP=&ugq7d+j=1B{2~*D+&aYv%Lm)bYK=(TGM%nVL7V_wV=lXkHC~Hn-5@`$ zI<+u$W)YRLK)Zlt_IQHv4@;C0IoGwZw#ER3W2WcyC@99V%DHv9bL-?x7P(kBy~XujJ_*Q zwN%K<#q@kY z-$rZg`Dz(1iP@WE&fqP@&$GIOb4@ga*5UP75|AFpJRi%}Uz_S2w=9Xcx$O@04`j4y zK<{`h*jZYw492~4&OFyq+w1YrrBETU#o`gs)1>tasTmPjRIM>F*6@h=T(dWnyTi`G;Z(siTvIhqJnFxKtCrZShUFW6 zjvZk*MQ1K@R0CukwXNkZQYJcIQtQOt-$kSL+FKw6A6%rXMQTt6by8~9hmPs|8hWnK zy?KB0sh@*Eb#;f90{QLjvP*USE4hfRuC4o20#(>Jc=~^80S*?!ZQi6 zG#BRV?BzJ3KDKdB0am*6c&}?Qf_f-~5eo0DE>kc~XP2g*cukDeQtsDay5OdBvviFs zTkvYLBEm{?ORWd9SeMhrJfZJuqN!jjz0l8+&+G9@6Z^ueHFJQC*9ueNb*!dSw;$6CL4-?YQabC>lJq~MI1 z5>CZlhuf)G;M(?c4TJN2$kF1LgH0IKh9(__0G4c`kremKZCMRPEm@D(3M#}|RFz+L zNtA8Oz|iW-MP~+N_ULOuk|Kwmgr<8J>lrmmPRytQQtN&uuUGL9!4cUpLFk<#oTF4m zLPhwED%ChbkVz%jR{nsOGXAk@wdPBu7`oQGJu(WC29~l(^)`;)(lFbG*@P75D*jx{ zWy*@Yn8DiPwSxO)laa+oSi3n@M|R(h%Iy?3{Whk<$INvVfQX*Hl}bX;(E={{mK2Lu9RxW#{AO$wUtf| zFZgcT_l1LG{y%?nRXdS?(!uVY*{}&<6Q!8?q5~RVHrpmZn?0^a z?JzVqE_`Lj-A}G=I5Bf{R6^EPn4Ykz#@um3c)7H2Kk6ZE7ve?BUbvCGp;B{xbH+S0 zsjkfKnApg5QJ8bzHAAfS)$P`FFBTRMT9vFP>)b&?Gr3tN^uEyhnf!dX#G-P_(bp+$ zZ0!AK8_v`vLj<^-;j|qC8(Len)LPD{-NOWZO?*(l))Jg~E>o*!HkDu}w(5`xVz+6z`(?j(v1j9iyk-sF-NzEz~K zS9iI3=(85;5kFPcmq7!V26b_}BUJ9dF-1c1~c0&?)_YyVMNMP4x%x`)e1{SxH6&B{;?z6;ULq#AnObqknwgMkBV%H0Yn!$P zsw0EtS*5uVeR^q1w2acSG(h35H)ipIBi0-=16HTITfL zdgpIx5Z){xo)k-G?KBj1WNbd}6O@4tj$(kp4my(hhWzCymEEc93`icW(L4lBq*9L!yqhmPbAmaqF18P%Wv}3A8anoxgFwJhdDHqM{ zSymzH+Ww{?VR52-xnf0vh)ZbN{BV0dPaBfHK1a=;&SfcYyBdtKT>n0Bj`Df|qh0Z5 z1Fg?}`^L_LQIV)|ag$CoByXL8Zq&Z6ijqTVMSA(N_U-r8gfjRx?K4KZ zi8Ijlahz)BERwML^6Z?fB4Q#bKLYaEI*M(92t?90nYQ5W=^3oMDX2m0s?p|A_$UAJgo8wGB+D*l;;Kwe=QFah}Mlwz1cR-WuGm6Pd zN;)xIXUCD{p6fg|ZVaDSJpYY$5JN9?FgmXh|B%#BU&%bFl92Y{#{b`@^!_hQ2g2%Q z)9|`Ahj!L$zScLzL&3;a2;YbL^2K}a&@LH8<<(p4EkS(z`R7 zYA~OaO;K4)s;0mh$N%%4cd6E;ZtCDMrBz*%P>D=6Aep9hDjec3G1)M)zRq(ja;rMc+whNLN z8mfHhLMwGRHR(KHQ$Xp&snEBf{Crb{7%(kl3wf@%xm8zrlHKVaPZQ3R;@4Q~khZ~NM3))JV-iXE1UbD@DZBGXjqP-n|l&-jsP;6wsPIc?v zl$EjcSg1^s%NAh&Xc|46=g(a1(jGQ&PLk0fU?sre|9KU8McYBfH!B1=>}S=2tq#8{ z@JsHk;(inx3~6l-vD|6*=O4A;l81?3m3}4vy=L^`ddMSThTrp4E=g-*c8ybmmZwEV z+!cHo3Zh0bWuo?6AFYo#S}n7#nEI}8Qg3_j)s>e+j6Azis&4Wmn6DVTe7w0xe)i9p zuB78vHj>hdiOgp^3 z0-whYhvCS4of7uDckc=b9b!B->hS9|sX=MtMbfK>`L+O4WLKzvRN zypnH~$KbG(eMZFPo;mp|Rq`55^g2`bSNq}SuQo%~v0kon>jt-l z9OqXHt_U;auIO$c#T_jiV%*sxvCX1=D5o9sx$ z0n=Vi9vQ~H!v}Zj--qywh>zQCHm0rCRyi6Q^b9pl$!p0NTPqsRt0~A}bH^S?2VFcq zLLYm!8`1I_27d5vP9g*mhlnpbK3t-GNu3(h9?gr`Zsl0$N@VDRV;6gR+__IHrW0J!u4mr?f$})7?j|9Wf7j;Mm=U50^q^XUD1>Q>BCa^WCbHOLJ># zJf2@(1P3NEHwZ#slVW0S0Jls!o;-cnbdHUwpQ3~aZ=hw*+gs*}y#6YD*IL41wQSd_ z(Wk4lw0p#^a(CGhkNw%Zd1f4n=woqYeV4n|;;m-5x97K6cPOQI$zi>Iof$HSa(iKY ze%!YWaiFSQV%$TxDY`$B5s|8ANMX(Lh%aH8sn6{Z&Mc6L-+b!IsI+igJUYWc(=Mj>fALp-`$(+wzw#?-<5OC_nCYWar zX>1SH>0Fmloudu^EV@-a4usD!ZEY2V%Ta=JAq_9xz3|eV=S%ar;T4!(5(Xa?#@No% zdDo-lPG*HYX^42LS?{TEe6SR>!7rLc@4(^wr9qb0ITa%;r`@f0OQzZfT*}3cvQb#S zI4}@x-P3p$b@9T53)HwkPx*!2kAcKM{#&84Shua|AKlTX;vyoPT#;b?maD&tW}1T- zAf_EzDyc7Lp!n4ikT|ZcuKREwY4R}vVei{L$kSY)G^NUfkQzwOcPDl219w7p&P&H} zpMBYdr7K;`wWu4Q9DIM11dA^pDW+}1h{q-vY|0O((A{kew!|DZC=A4&nfqe2u~Ozc znhDjYe6h_FWrI09+TmqcS+?Yu6R$8g@CGA(cFV8Mt7)!|l`j%k&hF2>@s7R4lxVcf zTDYno!R%4U6JH^0SK~it8ti!lM|!ysj}GHy5EK>&+)`$bpX<1@mQ$+sS+kcfUrIK!hD>*?yI1O?FYx`4$xJMS*|?giX?7zXzF<*IXkmI`SAaP%L> zkPC-aHEdB87T-J+=C)fn*$X{NxGfKacsSxEVi-~Gp=ug)%2ovz94~s~+odSSxt|r8 zY+TAU6u;Ww=bzGiE~7IcJRUN$ycsvJV^KivX>O>ofxK(!0_MMy9(WKz1)E>U9E8>t zTkIuZ_|RD;o%xd1p&Blek1Nw>)83Qa3}hC=>4BJ@3s)AeGQq;RQ4q~qyD14LO$iAJ z5TUxdBi}A}+k;JA@9SIWQ-%g9nOj=cyxw~0q-hnp2%+-3Ec)09cRm$*Zjgj}2(Oc| zy#CBQT(wavx1`$BWa|6pdKVdcZ}(}Qvzbsqgp}Kpz12W$#P>IGebF?$iQ}V!+tN!S zQ!+n7(EjD&?E40AU828v50q#3baMqizw3vNbL*5_!n&^9x6!RJH_!<)G$EbYH#U

tN>ctwiz+ohl7YI|vUyBGsl&2er%huLb5O&~*Q%+8fK$mRX9O&l~v`pPj zRtGka1L@g|!C(eBqE69!Nz*PtC7tYgH7Wv$tGvSQ zP=M_E{_6i1Z3-!~B$2H9F9GOQSD=4pg1R1ZA3)RU^0L2_O9nQU&s^2P!2xl0u@dZI zARWXVyO<=7+^ce0Qgxb+g}`xIpTv3fE3d3AL#3VCNZY8H5)Y1neCjp+VIu`MhK77g z57pFW;;xwst4{RuSGw<+*)F}qjVv>0Da0p5yOoVNY!1ZzoJQ2^#KG0oW{Ubk?Wqf` ze!1lwF5<~|H3s;7L&{t~ru{f3x~RZpWb{U3G16MD8>ws0^d=78&-%4q5GWWXDOVYV z@sO}l(|g?9tAtTEr-kO;=oQKJY8a2QvS5kX(z`hts6p|Z$BtGs%{3(j3cDKFRfti; z`%q;%BP<-D1@e%ajPH7zka=&K_6;-c(@r1=NV_g>e3;a;022KAC4wk|c$BS{S&eH7 zdz^ZfX&!}N518|ird>r70$9hwOUd>pM8*@qqT_ zg3gi3JodpDRgyZtPicr4R6%fZTSK-8QWg7Jg#aN zOW8}Cy8$1J{{s-$$Ere~BASy73=BZP$uqxbcz=PgMgoU5Y9@gBG1_E{bM4VJH8sXu zp4c9lW5UGoc>QV%3qo{J6mZIkM0)`w`o;9oS z=LU3?$L^ZaEgR*U&Wf;#JCG(0ufy`w?TrhOaWE9B>g!8{`BKu)ukV@_+YI%hSOPE| zua6?@l+)QMBZ;wfMnlWP0#Vdq9MZ_3LS9c(^b*QwKl5Wo8;@;;vQEh@_^)d{F+aZ) zM>0&^&%w* zv}3MgmG+>RrWWF`eagHr6r-24YgIQ#^*o3~@hVPTKmL@{DZX;go(0Z%B#F4*8(Ex~ zo=<692f+!vwy6dAr_sBy3pp4ICfEI6v2N526O~>2A>~j$R@N~;`doR=#^Qz}^TuE^ z{MWr-OP~4N<^x+>FZ2xUhkW!kO~Y7>clUTMzK+>?A?+~DX4EFU=2jBxq=-NGyS>J=fcyG_P0)`;16+D1OLZOSFK@fn>^xeb9 z=g#=B!+60byRx5539>O1YJg*eG|Y286MR4d6d`_nYZ$prXL)ppMxcs*4GcJwI<|{A z#)wlRyg2ubx_waegrW}IjL8w& z=JZKqBRi0$1B};;#0~(vCtO7m?2#(qmM3!y3wmw8Ah46q5dEfzZun|!TpX@$!>h3V zMlJ_C``*UxRtwAiIlm+*0)=S#RZ><~R#a3}?*Q=QiA+!d^c8mD+sj^!f5E^v*qamc z20+;z9Pi`c;jw-{1JLALhTYydFKHwX56`<^XzD!}O7uR#@%ari3yb9m!uSOFYTZgf z4Q{_0(30cncS#RO+wx7l`x5QF%c9Gm@`Z(krHo4P-cUFUECGk6i15j?T?#7en zRbwdd{znr4yIA&wypIlC8^#b_$KGTHDM?~>LauXVm$To5?3xxs} zARs5(#EQ^@f&$>3eU8_U9z9Y5J3mrt-j}I-yrhi4ZEdxlB3pk<%Ag7O`x$^Ap2ltP zysaJ?7IObTgQ`u)7MuL2kBJ+{-oTz1QouzA0c+2BQ3Rd}686G5<&o5YqWp6Oc4#1o z+`!U_wASroJZ8QF4Q#CFq&cw6`lC7CmJk-G%j&N!aRhM(S&tvzP}+dlVrmz6^d@kc z$CEk7g}cY_4W(}-oEx=U6K`UkM!jb<3Y8lCsry)^$fsAL=w(qQuSOd0%Ulx}VMw=PPGMVa%5@&iE7vZa_D{X0{_5(VPoK7NUissK-rMuXlEI?l?|(GW{9JJC zbY5`vUO=H8IQr&Wop%+;d@laQ&tE3(_pmGE^kd5SQ*qJJTAWmT#UA_Xg4#QG9whgS zGw@qn8v^8RJJcqz(w1>6wo<|A#=y!@p|W=xlZeahLLTRRZBtXzNKTCuHH}tRwbJAR(zst$#&&p3-g=}?8_VccD-<=i)LxgN>b6+ch9icM; z97FbJ&7AguRZWSNcgjSo9T>Oh#@V_E+%yEbpw`Sb6d1RDe(yw{`tYi#sPuqfivP5s zkMcZ}Ve#tE(<#x+*WF$0nQ4I%?QLvqq@|_7kf20%c6KaVn;>EW<@Mpi2m96eJu1Iz zUArqoEF&Rl>FI3ee3^XB@5m%(|x7^0+p1XbbFxWZ<<+O#uH5)ZbZ z0L)6>T7g8x#_Hr`=~dY94d&_WEV_p9GC(C$J~e|f)ZCf|_80*`k@`XMnKNh73$Bbm z5SoT49R()cXJt(txe8P*PO1}F`wd=UJAoR=)#BAF=e{}}3j!)#K5}eq40x0L#{IwO z;~!b;RyoX(k*VL-Q0ULst5{Xo-r1>$1k6&#$WJiZalG2u9=iVY;>C*(!KHAU3Yx2t zd);;V);iLm?QYL&AR!@^#{&WaDph~Y$ZELwH8&?`j$s|nJTq}HLor_53s(waPcEGO6j^eDMdY2CSyFh* zc(VJ0)v%0k-@8|!Q(~HckG)Y+Tufz@>}S=TkdUCJEXE%(JeaQ+e)_TN`WRh^-^$9p#n3Blq!%&uib7$Wp5H~}#NIn40LN*lD1*|Oa!DJgOMmd#I)ev2Km zx9nrCOx!Z0YU9RvaaWJ;N#2eF(FVMyD6YYI8rwaFmPGRC@Il$w*uZ_#f1b$QkP;Zazcxzi zYsDT?)EO^Os9*I^hyV#gB3XDle*XLfc?_U!hOE2EX!kUgGh^N%-NVPJEnuzOyO&$R z!s33C1#w)XrR9i{aSen#rtHK$6Mt5ax(}MH7LF4!Z#PX!lZ45t(x!7Po}c65NYxMo z?f%9Dl-|+Nv9GrmBnvDfA|j##Y#TBI^;{>}c#W&=k!<=OkEwloxSF1%`*r!Uc*kfnk5`Y}q=+ZR-cb@> zN&~xh`O1l@X^!Nhqob#9;d~%~AAnK>;srng^Zgf(6DIFoxNj50T4&B@83xKwr0oC(b3tr!5z+;Wj8*(s;Gpr1xRBNao*(mc(wW>+~J0qdLgXd z8~+{f=x}Xj0+mNv9(wk6_xr`7R9`Rw4dXlMr(3_OomWO}>+4>%h6%Pf_GKsnz~|8| zH5;$qB^Ma$&e6z?;?a}e{F6*jMI%T3F2x-8%n=Ca*)g>05Af2cdj@fWAilI-8ezHS zGCz8=QvmdGSgT@NmRDIRD1?Q8jlQQ@XqY%Q3?wj2odtnnzVIb@hnaM?zaW-HYhFyu2K?6mR`M$&w|uT}gNA{rwUYx0*nSU7er{S{cmG z)vt0WG3^B51$pt!2SnJy{CtvAuN)BXP|txY`4u8ewozXA6qtTU1d&ds-rH+?DoM

xbK2iJl7G=ZFIPo_bEfoA`^Av=g@uW7Sku!y3h?ows8a zIVf_~v#H2@W==wtpfn8)4G(bDTE#@Lqo`J)p+UB4Iw*l)*~=rAh1OtqL1EX`)y;aL z$va-ebKJNo^$WyuY5FP7oN+0S(`24Kp!b}<*7dM!0_BL^F%0q8QxNnF~-ieb}rJ$8{EFS9;<)* zwjn1oI8r)IW)~y<$hH0ad7kE%{|Avrg}f94i`r*A!)C-6^^cl)kH>UXfQ!^I|GE!iLo z<8K3QNbY%6vq1k4NdDr-M>_*K8a0b40jT}D4HG#09E!2dV;=?1fP|fwfu@gQXYoET zVhqp$6%80hL3maG-ZoKN8zi~vU8Ky#(?Q-vdFt7!2M_1KhD^(cx6Iz?driu{?FQX4 ziyu#rt-MrXcIxUP+Wm6M%9Lb}g--A&pTd5Sv>5Rhtzm3ZQc@rb0H-Rq9tDN-3`!6z zKLHp6tOZT@hBs(o4~hHr6Ch{5MU!srwDa`y=HaD@jy>P`Z1xTNvY5x-?dzJknmkH} z&zK>UnE))O6v_cJI}ie-D2dTH?lmzBDX3>*9YoJR4X~&Q{nUW-EMFWWS#pEIzYorS zi_ZS~704kUK>q=vpn?{_kn_qQzy?xXlk}w+(sxt@p|H}QO?^Ps5ihU-POTFGyRxxa zC*2MMa0PMZCb%b%G325A?CdN^yaI!oiXC0QAA(q9P9vdfZ-_o11?* zvWNn_XOX8o`V(_82o78V72HdjkQM9?cF!96mv9+qnr7#ET-X}Kl*JEcm)XKrv_Ubb zaakiH<6u02r<-TE?%gvie$_g9j)W=z;DI*)saXS*itmwm?`=@lH|Kt$(MWI)&-)A1 z<+c+T;3|^bH3GhHiwyQToWv3L)!^%+6}-6gQuS##U$Z^Z&CQKVGfy@R0s3Lczan@& z_9vMb-#)|wY`|KHSLLUPlt8+SBEezE)vZ|lrowWN_}1sF#;f_=tU=1(0#x=e5YT*x z`^P4uml7^6E@VE&NhgZ>!5?`5(t1*)Kqnm745T>(Q02%$5dw?Q&@vbRE(N?H5kTA< z-eIo7+K2YjP0@z#*??5nAN=42!U?#$XmTYyER4!mJ<7xZd-E0m0omhcPASTat(m0K z)eVBc_YnmHRswaXgkei{W=)t=fY)^q|dV?4E&tY=AvQMlO<@y2SB_^f_kp>f zeOMyh%*Bg1Y+qen1#WMN1U=diw@OqiNC9q9?OUgv+M{@m4_cs9i6m02nGWt;?S)bo z#l*^m#e=|^+G)L`vIpy;K9vlf7|;iGT^pgPQ^MW?SS0t9RE0PSg#lKEvx(BclJWr9WrbTIg zhN;7+1846I!!y&;{tQ0#UjXDlSBm8o$mQ$4-px`8csDZ$Js{|@+OH$9XvxOMPy`O{ z1|z|#{o+FT>1pAra6!QFgK0HES?}5pYdGsso0D}DZ@dG5N^#qCltfCJBM26^ZZ23uQA{vMuqB|WBfQ417#qHjN6&M^K z9teypkzgBDQnQ5d+V(tJol$fI9=LvsJYCQx1;+a7G0o>B5g+%#ta2o8`vmb!J~1~l;^Kn`3n zZg3;N3XHoYC=lRG2Uu$}R4_iE1tWl7oRx!vV{4<@+f*+#T;c`H z3G5w6Wm6yjv(bQ@M)vYo7hkdYA-WD^eP4{CGz4R5DqM2!IpNWd7~) zxmb{uW#;V%SRw$!EKtad8b7X$l-2BwSk`X^*_K)jKja@c7Cp8s2OY!$65$QnB4Aw2 zT*}x2+OH0CZRrls5N}djdX6lZjrj8X z-wX!7K9(v4m#G9rAG{#MDH&3Wdd73x(IqdWvO(K_gwA(T=4DNw`ShiSTtbKpyJ;4ePaW- zSj25xb{Ws+Ckd@m*r|J*Ia-CxD82#tr!3lS4~4w5RZk@sEd~u17%DT%C=0^akj z=oNr6Wznss1R+QFy;ZllNG<7!yl-2nplE~JER{2r5}krURZN{o zTtZTkAtw$J`jO5r^?vFD;CDs^m$ea%*N<Q8e33p z@Ickaue;XA$8p{O!Em4tG?L{=L0l;bmm9<`UA#E`;2zj28k!GmpqeIWs{%SsFPGBz z6bnx|9GLZP=F}?C&wV-^-E=A$bWhXctfWd>>wSA`(61sF^zwYoe#i?wMq_!Z>GEV* zWJlv9kNoZOnK87t-+FuI66Wue#%YOkD=$hyLxIn%dr}SFoE;5>G`|RRr6EWI&^S{Q%mNnxJPrvy z?Y!Odev{wtonZSzN02LiS$&ni%B}Uhy@?}bmeifHFTFwXgPJl^jXR}c05&A+Q^pye znWz(0JXnE5sVnWKKy;GK&H}R)(jX*p*d@n>MAt{Q7*W7P>_mY=ap<)_zTd`G_%jPnp;M0(X`JHSS@J(xA^|NS3EMzb8QceS8XTRJ zdlPUVJSP97T2Ogp^=nfNZu9HwO`+)$Kq*1M0!kUYOe(58B#qGdF_4N9xabX_D=$ng zGZ4bmxm224fx!6T-0hc-XB4%8B_3aluwG21Njq2Op`Gr z5IzKIJ~%xAc?dqUtFv>h`%5FJG2?(lgSPUUz1dQ4`u+ss7@P|6)?s@Q_zFZWkl8?p zWPMwXI_NiN@!b3l0ty5+)meBNMZnh|djR2yG`V4- zR@l_DaP9haz;|r#UZnxZ6VwdApUrhT)_xs+YZ0Qk^P(rg?(!#=3~q=3kUaS17`@{d zJ?Mw)JX}SE+-shq;3;<^J?TN8Do-Yu@J~Q2cosB+(;J9myk%h>2;5pA694X~0KXs| zMm%hGvEv4xJpMD36_k0eA2eF}2*R$8j?NouUC=|4j^vdRg#o@#-k|320EI$YitqaM z>+BBqfu=gs3VI;0$3SNXl_)fewM(1Fl^x|%+JqYV9&8JifDT=bM zlBALFR9AFI2M7kvltw@+&m~XG{d+UBxjPJ6j+MfCaZqivU|!B3odIHruH=>2pbqE3 z2A@+p4+`vY{qg>>I9SRA9<$G`74s6ttw zb3nJZ2Q-@jMz0I<9}H@Ml(GQTVW8)R0knV>K=t{SuyBP4wzrOepKMV)mBJ4CHJZVJ zigTT*S%f;MXErb}a8c2cT?qRXFs4(2Z%#(C{76m;i55S1w%~_Tpc5Yf0vzVMW}fyIZlzG> z2MC{33t9ZQ`(^Fz?Mu`B ze)R!@PMR|Ut>sosd_2RNG6@%x`uh0M>w2&f3CsE9NXAr$E)5D3vjQ>p^edqA0HRiE7!GcUi3x&_f!VzQ9{jY5 zOa%xfKs{^)s4}DX8NkK11F}3x2Ed)T5CDn*4gehoyhy+BM_qteVnBvDM*bKT#i0_; zgL=M30V#0wz1t1Gtb+Qk3q_@YlIfsc&}pWOxojJkMQYAPL^ zlCM9>)h$zhpWLPmoE?~G!h_b*X8>@35I?Ri$4@yP4KxNJA)4S-P&m0w5V#m6Zgx6Q zr%08{xE8DpK(OV5W$O%2LW0W4`+E9f2W$a`>c7D+oHVjm?AbkcV1G+_K)`q3-6GO} zP!2GRDEcuaz|Vj>5?jU#s~YMC-M{_#zzYhLbm(OB`dzYgkb@-Y1wE7nUsMGp0XAw5 zU)%#Q=cXbNp`wiiCjDpKgO|Y!yRI_zTggNjo#8@CuxD9bnuJO4I2MqNruzdiU zobR9MdIl!PW=Hkz-AuhC5aCp!SS(fTxMl%!&P}&B-$pQ)rjVqn0Lc`9L~Jjc>-Kzp zBKYm-{=-oxzW_%Lux-^+EhAWKr2afSqIxwJIOQ8&q2b{OVB_g&X$l)ZjR3jB6$;s2 zo&~UV{3WpUE-QdO|2nmNE&#Oc4dKH+#HgSL&_AO{?!UKeGcN6}k z!`gNze)x+aIGt;Z`Ia8=J{d>MLw~fl%dho-EEqKD11O;YnhsdFG9lW!dJBy9Z6!Hg zu(EG@90qv7Z#SvC^fp)lfX`!7zb$S`2-j-bjyn>P|YcCx{csxjc z^6()T`tpn8=f8cu@^8dR;0q8^=?NG}*!6&m$;vJNtP!sO$eFjkLNFK&xKlY$O57#D zcKIYEB);(?Hy2UBKRL|y2!K(2{2I(WgzF1n$>@L!8E=1qI19_j*COMgM)N)MTjU&h~k?g?%~*8)vZ8&jOhn zpj3xIN}QEfO#x&u)5%)kU&L)jzg>Cq*&pn#09gFn*j^Zx@&(1EJdh1TK+h=&+yTI$ zm~|%H1cEuR%mx9Bms$ja7?t>^-v&R0uNOG>anVx&&w=fMy5rziO?Byu!solx50mea zwXFVOCG=k})5nEw21EE=Ct%P)+_J?WFZhFrykL!v4iDc1hYQNT3;L#HwRpP)_2}a@47dzx- zI<)yPVU6C_StBfy2|IlVEI2-R5#i^qt4NGH^gP#nyUhMimYtS@K>q^mY57!q*w&PqEXL>S0 zJr*1_y9|Z|tWqS%%v)6f#hS0=#|9b@P$wTPZZ_T_dlWb^+w=5FSYPPRN*8-D)ErPN zx7o~eP~W&Zm}NTmXQ+xfeHQ<5CDiJCec6ECX+oblbH@LyXcAz_|6n2l0yP&T4sZTA z2r{_?OO6)L$HBo*Y7TUi0ZN-fK>q`Ttq(r}Z$lp%KubsUfw_<>yZ-nNs4)uNy8vZm zWW)=Iq9|)pr-}gL>2gx4IJ5Aq;54YF9kuz70C3cF?DWs;@ndk)b^dFUau5%Sy53JO zwbJcw>@}{k3`ituD7|^rKm&A`EdF1#W*iu1kPy(#Z}bP<2N;2v z7bLfG=YOhHpA_18hG=@4SL8=oDxN*g~}91H3DB6W;;cD)3w~VRt|k$FsBW_V}05QgSRHFiYy& zBE^z(vVhS>9|V+u7DxeZczw(V!~0t!ZXBZfQ|de%whdyQ`*H(216e!-Bp5&v2)5T8 z3|0HD)aXDUi>m5XVF0%%bTX9ktRLj70M8y~f`j(~!sHoH98{Xo`8(k3z!06Zd@de` zoXvd8618s*j={lTLILeivpZJ<0tx?(b333RvLN@#t=bqoV9ZBnXh%zn0cQnLUn-S^ zj+b|J0)#>bAdLakMt~d{fWfzXIv-wvuTPJ6M;4laB;N@*cXlDtnZVSzBDMo zf-rF9#yPOO2|#4l2V`w?fQe0bz2}-^uF)|UU4$5U-59ugfJmuR&>EL9FLn^YuGu^W z9gP5<0+3_kK;;d5S-d?!;&HB4Ahi9-e{3H#V*NocI)SO~&3L%i+do6w?LmyGXVLKI zmX*8_x#!rVmO=g60YnqpDvU=!UZi1aa zAe7PjJu0>DjOv6xw?GQBw9+a9TdrqGV!K=clw7hL)&PhdFut@mwEvL=%>R29eszE? zL2RKMaPCrKcbx9zT`~i;G?`R7tNAG;gvD}X3!GUE@Y%QJyT5N%xS{kFSQ`K{@*pWY zzi~MnLY-Ct6~D@HU%@{^_YQn|!-4~|1;VrpzzK&K*?^vCb}HI>7mVq-%b;FQ{!4vB zxA?U-D9{041Sr%eAkY71+W@7*ntxmgNo0^sc9%O^Y#~GY0m26>kB$C%FerDXf?_IA zOuO$aH`&|Sxo;H216kDzu+iqNh9+>RAjRGV;Lg6#5kQaKesJWTs&Lsv9-2A_SfqnZ z%=_o;763XR9?OF8dtegihrR%l28Kar-rv-j^?vRJA!Z0v70o_#rV#>uq%k-;G$SkU$ZlV1Te0<7_`YSRIm zSMQ&7&~?AmZ5k21O9bfRPvZwQ?o|2_d69B1D}cfPQ>)=d+s4OB+nbC=>|X@8o_%?7 z6BM})hGIc#55g$m4GtV=NdU|oU1_-pF=V(P9SjbPz1}NZU#Jdf~JxO$4eo zdc6m*g%~M<|BXoFSFd(}@vVZKWrNNJfG{=#vcu7{d#;E+a{qgc)@$kNas_|_(H|`W zFjx&(1oW1Uip_u+utxL(mb3n~iN^wD5eae>AoHRcTQ7}%2lZzXo$8eed;A-Hd?038 zVP~n%^uDSp;{$a7Yv?F|{%z#!+|qI1R*{;WFdZv_t5=VQVvWP~BmuUfe+STTFmb8= z-ff$mpCzPZ;4BYaP6uL9Z|d8)ZG{~h*EcIai!7S%@~4uU6L&V0XkL?`ICJ35&med4 zQ3&nX@-{xGlDdIr3dOGX8$5aN0X<|{q8_!@e`6peEiNYbk+fUn@8I>@@&ys=@BZhY zhcBlC^{Us0mHwKIjGf6{>z~qphAb*?3 z<$}1mc&7Q2c(&G@n;s}7B>@osUDD&NHd|6$H(@(Xu7#o{p z`Rr%+w=3Jz$>BV%uUAID*J;Q!$CDKr)@BgiBJtM0ts^e@qer)tmD>+YevH%S3h2@Z zyrI!zvAGxoib#_%r^_{=g@v>3cHr~x^rd%{09iyPIAz4=?MlT&umYHL%~fLFERO2` z?O|%l<6{QZdE-3bz5l$v*?!J2MJOvjr{5$G%OI>uoEE&*qE`-1B37EufmuWm0=(WD zdHfzn4~)J8r4q60-Sj4ZBZkH572FLuyh;=~;dW`HJa(5d_osXiE6}9;_ceM1%%siv z!K#(^Ey0pcD0lS=9<_qxyaw5o;sxRD{15sP70Bnh)naBnKcTJpQ=vFm89933j{~E( zd&}&Hj9Z`5g&)U54N9!igSfV)0bqFy^1pBWYQIN_12(r^H{3#_uJHc(hNZ0!3UQhE z_$f6CVx?2#==%HahYda%%NbZ#%S{a0V5k^qvVm#+_e zJDQ3~Mekr!Q;{y33~rm>2kUsay7(6Ev{p;M8jj&jjVA3ZPeJ4cSD5X0XRw-5Lz|q} zQ?Ol^vR!wh!r?$=%JSUFslCVo`X7ZX?-O&m`qZ~KI*j&jGZ=lhu{Z*%V)wv*jK~`C zU;Rvt^$CiZa`}%=n9$%E45y8<_7oebt#!z*@Mv@i8v}S>%#DtYOm}KbZx-wb*TLWI z3>4c7LCp{loQDob{n5@j?DDh6Lx#3mhoNbjKO({WIXBuhnDCL}=JV0bL}>MvNk*8g z5%~l3oa226l*oM)n90V|oeE zkbcsA4hg5#U;S{aw89=7Bl&1!tMMOrx9z2A3eJsH3x|)FrKt}GGU1Oy;-7C4KZ(E) zWLdU6H`l%v?y+}vgX^YI+y@S*KQlAqS0XHqKn^Q}tgVSxApG}{#0R)=AgUyPeMIMA zA0OFUhQ=YB3=UVegU8!-R#()0=PVm|Qy{iei}iZAm}}!7i&SFRFoy z;LGLTc3hB`&nb0AjGo;uN0F)oY~QCp4?GwQYmcsj?d}@DVvv7z+S?zI4-|JHlz-x# zSjCem5&lPeLB>*lI$@$*bDVgHalO7{|+$HRrI<=Atygu7>xY?I!P4Akb&Y_q)5*Px~PM zWmFFwXf+W!-itB&pqDGbXFVf#eWrBt6kXVQ{jnM19@b)4ZZRsju~>k%l_QI%;vmW= zR`qMm{+A2bGKu-CoDd5wiL+Dom<9e!N?~6R1^XDrdZdW1@|aBS{t7LHmC>K;YF1pG zqa;Ol_x3O0xB<3Xg925sNE_#}lE5f2xb6-bJ&l@h0b4H^Ejxb5+mu>PeUQaxP^+Rz zWT|$ssB4bXL5G>+zw!Z>(sXnmOau(k4Yh5ivQ&~8?`xe6Vm!`nph~A>yM5F`U0Pss z)_s9Ze#OID&wl2hPDfeJt6E~QP2JGe{wpg!~doSHDtMu?0i z&7~*QlHNVx6nen=?<>R97m=+izM98;pF9^G?bN^MJXcp!nuhAlh(!&S9HwpQ!1TyF zAHFm1jz+@b?dNKaS6nJVuGF5ZnHz#eZH*PL8*U#&Y;e0i8pah%bBt>mZWgPJh1UOF z!ml=>P3xB2=4{~PKf!a|Za@HEAqb!J@7J<&M>N*vT(oz}jwurL{DfeN+-g6imqi!q zJlh93M?D=WGvUfcz<}MH`?R%`*Xg=e)$>Yz~ zRL?AMr>5ObfG3#_6@w?UWPItCrLG0lNWmtGEgnfwO;@|sXKV=u>1)qQrAwOMK3!a= zt>6=lgRth_$yf9TjQXZHid1LkS4lB;je)ZR%Qs0h*#ZRR6lt&+xn5#X0yOd8zUDpp z?^y%|XvcO5_O#U4$DhGo6U)(Wt$!Z4ap-B)-E=X9i|t~f5+$e*jlg^j**Q(D9N&!E z;D%K4&2dU^L6*DStSKS~sf;g(daMD+m2aYSv;VK_+tIlwi)yWO^@T_6m()075V*aA z^$xu0xVP`E@8`?ss>8#a9*u)4-{*se-C%nkwIsdIzes)5a~ePZ6dfxCl3-%xD&`l0 zb=&_mNOhZVy*^o?g_Mj8{i@l7o8e%kfJ*_ge+Eh+I|9yW`mz$Bq^k_fd?sY2I|YVRTqBqf|KXZTk!e(1xNygb=$PBn9eQNhje zzl$_#%BA+ctI7M`@33m`{$;U!9o@VCVE<6<-A~}!AMNQc+}J-0d+&c^w?AaiU6&a{_j}& z4WX$UrniZ`X4RZgt`ey!hp>si$+_rk>yVdyJI{1wbk$mCXO&2E*DBx>8Y;CJtbCG~ z&4G}rL8Y-6-D~`wTQ%I}e|Z+-2_b(U@HPn!MaxdRwo!7VK=yD zz4Lc9OA|9G%%y(4tUo9c^%QBP{#ckcGRl8ULz*;OV0TaBxvc9vXS6S~w$3$lOYLDI zLQo#Hj?!|hDxkc(Xe6A+xi^4UuI;n8rs@+R)>5S6%m8b&twRAm5Y4MAw$i|eURm%% zRzb&`MPaYQY(146?Q}@Ae4E=egBtvfRtIdu&&20`q*LopD3ji^rP+w@{Z-c-z9ozJ z%Lxj0>8(#E$c7hhwXb%|(GCC2vHiYRG{B!3(tkDA#RZ>*ha2$9@Fg4Wq%8mwr5YDopHo+#$XGE zT;wYxG&+U~6Qy1`LL`^Fj)vr3<&t%={ocgbUnw&-Gvo4pE(Ojth0})PHs*s*>9H|U zHwF|6*p`#*lj&#f)B zOm~j17}haJGBu|wD2*sE3;n1j4A14graV59vlu0xuk!R)EA|DyuL4yKB5}GKgf)Nv zFO+HpJ<`=hyLIgo%#npty+;egtm3x@*OT=t%zM&xZ5B$uBP#WRf0UW1ABj~(9&+(g zF$nE79A%DHSf1NVCjL6|&TZebt-gtxqoas_a9i<6R5tO7nH-O~=K7F4FPS@X=DCEm zTME{zz^aPeqEftGz4;bPsLG!kE5RKpZ zsO;P*!{rq(3!TCsUrYOR4U1=Rv_;?SNsa}Pry{Pf6vPj?S8CrmgP6*976-hzt)f=G zal;#l(IZC$3S6etwFCH0ji*td-ZvD;4nm1(?ZqZuxw0dOfGq%-b?4LflS#fmA8#xaoeD8|Xlr=$h)5vUa6T;}6|wfi z8KoR+g-}B+4K^~UA+5)@6ZJflQ^QOgAw>?m@BG*5Zaam=T#=clSA&7Y@2k{*`!{kH0?e&9Qw1K4|~) zlOUn0D{jg;9W_fw;FwCoHY0fMfPt|j$>ph^zXoRQY}KpY>Al7HEq&i1YY)Co6jpuF z8v6A*{OR66?fvo3AHPZt|Ge|-_x}$=6Dj>Otn3$OPpGEJ(I_iPcKQh~8vKbwc25zl zE^pQ>MkYM|8HNF8UFTZ@Jp?7_hlX(EeqGi33pnQn3>A0ezbD7BE0;c5Eu*)>z_7r<4QQmq{rV<^V)eR4VL~z!AR;lS- zUgS%Id#54VgZcwrN&33u9WQ_wgMpM|X8wuK6Tpwzyh(qptW>Z1> zC(RHp`QVuKbkirM7hrf%O z0Mmn-v^OA5R9tYSJtRDhmwWX+tv2ao_xA8QLDVBn#Cbb-7NP>Tin%t8NwsuezmH#2 z*!5mC_N@#H!N z5t%R9qmjIdT6))}!tX{G%y&%(CU!*{POS+rAT5q1@meoV%-lu1c6vxmxzX`qz-X;d zG*OEtOce|FFRN7FGz^lseBZqq?#;x5AEn7T)k$9riSCysHz;PIIr=PTsd*Tk-p^_= z;m<2yOn*D-#U4~zr8oA_K(4L4sO}SqDN<~PAlIJscV%b3j(X-@r4R@N5=A42yzAD8 zt1#ZQx5Fxy#8u%@HXGh^%vaq|Eq>g>kRsajpskUXf%|%iY&DY9x~cC_%J7W3R3!o} zA8Sxmz_^TvqiRzSt{avHC|bkNW?44%t-PCK?R=5~U)~;KxzVsMOiMAnMpAaEqM@6P zW+;P42-BuMMOC%eF57MWxz>*#NtTv$K0m19i957Iu)LaTNt z+zZTcPR%*c5qqk?v=_tQ0{!acXfu3MJn7?)maEQ_VK{_Hpzns($ZnPx%bW>b($GmN z!@ktBy^SY1p6emvW_tORpzhGqVEMUx~@w(x6kWzEWoOf>alCV>;_03 zQnMH5sxMZx_&lF1d}@gi!}u_L%sQ>gK{Hd$uWE(NSJB~`p)t<6hO13A?E2e1hv&-h zSziXH_}Ehvg|(J;Qs4l@8cDPCSQM$Mc5#>-o^HuOI-rck+s5D8ZuZV-R_MEEjRebN z5x6yJB@0DbYVS7|t|cbr(PsKd@lf*zeqYS`RxO5fOKCctOS7`dJS&A_hm~FTQm%ao zztj|~8brZCebA+b!`8C(U`{0SiE^|h{uDyb!R8M9hk2O&kCp7k$mm9<-Mjr(=(0;Q z6IskSC*nk_jDe#%p$;eZYQ1tH@PSo3di~WSlS#pno^nxt_lpA61u6FbX@&5t>Le?CBs*29xt652+1CoBg)^lg8IBUPwLUtqBXqwBJmD%(e< zy=j>4h7cd!Ys8S!?(u*wn+NG6#k}J)PSYOZ6>iT89_X_NIomsI9%Qgki65C;{-asv zVYhT`cM?1<>I@P$#J~I^nysVR;%AXTc;gToOswh)szf+IaVVRfp}s)d5Y>3gd;ASB z=@Ggpc+lYTqRi`h z5hUs~CPGwt*uWXtp-+Sg*BzSGmm7yNJ5ifE1;U42-Ia$2#TVn!Ya7s&)V4>O29WOA z;=2q?fgcbqk2#^1!ylYRU+CD1pSd0TVfZd=r-hXer`^94?5D#eWwq?Lyou{ix6Rpv zMRu=jL=tY%0ueRgh1mvkKI2Ij=JRjx5F|K9|4g((yHw5UNW?R>aJ@u6G=yq(;K53bB}V7h?trWvnzPQhU_L#yNLPvmryalu;+=AbyV!{fl31^>wS6b&{~M~_@aNX)Y+965UxX`-Su zR@!It<#$jOga%jp*`MWT zsf>_p^^Ti-s&V$~D8@8}(=7|*3{O#ZlSRoLi|gb!6FHY>xU5DRzZ&VQ*Q{h}6kmR| z##OddR68-z?k{GI8k-cv4#Bvg6^=_9}{ubHDw zOxKb%pPlUU=XReR1{ zg`BaQ-+g}}xrEBbv=WV2xg{~rx9+|A@lsBRbVGS&WHd-3+O#=Qu|+axytUHg;;U$f zHfvfLsTNf>)8Jt`3MmrA?>g3zF;dUP_&Jzn=lg$=LwW6KnMUj>2B{Sekz;{-?wG!7OEoXjz9Jt+AvCtdOTxJO$0^8aN%o^EBrf7l*FSW=K(Mle#_& z$_4SN=53Bi;35x$hsk;+A$3zEq9W0#aSW1d(~?u7wjlNr;Mklyt&c{kXQ3%doAj|c@Yr;pt0dgO&Ero{7m`wxAL@(WuYym{ zd!!Xn(lg;jUN3QJ2VQKhu!g5!5 z8X}P+851_$0#;_i!(fb}}bt5UkYx$5U~bL+|J2WMYcmMsxv_ zIa_wbavQme8MeNXWZCu5gxFW2!PQ-2U+~4IUV|so9owqad$d7}hX-<4&bg~;Ic6q4 zTL?K>vI(8;b{v^sbFWIrOFB~uAIgit6h8GXuVrgoVq?ojxnc&_a<^GtgyRv^gykGs zhhjxMkK0`66L^60PWJe;nT{kXZzSPka#TQE!TIByIJap}+y3K_b5Rf3!8{`uc zn@7c=yyI01nQMO5E;f(n%AmS6Q{f2RAxrdXST!>%(^*%Q?UR!Jv<31!ZPo7X@#zXi z9HUw^ge(fc>C#-YS=qshk_*m6s46R}vCoJ!(zgEW-X}B;%GJ)gr`CW4G+T)i@cu#pX=hV^X!nQR5Sx+lg_;fqiac z{5iPGtfShMq7x44RugLFi@}K`_ZF`x+SCp8X+zeW*y{yLJ8?Ndc3vIpdu_%=OT++&kAV5s=Ga#jd$rB^sA=n>tdjg-0%3qV?lM%;EPZS^oKt? z+kGB4IF31Ot+|p`JbihtR@Qs{9M~92J_ipPI0G{>aa!Gg$MxsTj5oJ0qR{n9+7~NI z$Hpso=J2UH1@n)CWv>jSX3|rlx$A#JnI`WwAT)HbAw-ix97mYBAP=GR9v?UT@bl z*uJT3(zi>-^1{x=qp+>)O?PuhO8CjJ5xb4Y%UN^(%LRmcX{=S`#r_e6>wB2@tj}!>k*wFfu{$?$pxsgVK#7pPGRq#^wbK4&^+vL;uJ`LVSEsfeu9Ad?-n|PTx$|W4Tb9~h<{i!L(h9TXn99y- z?PRK>Ni;^@np6gxwzplWEvGYn8Ct?ubQSD(tbGDw3QZBn3dTha+vTWjk^3Zj)%0uf z;UhRE5$ota+SzB3#ngHASH2+UUaew|%%qoHg1k*7lvkqPM+Tt>7x`dp#b-u07 z>JZWMNeE3`Y|TA`*kyk`$Qg?d01uB-k2hrDDKCB4e9`yVF~z4-yZL|RU6c9r$*I%V zzfH!cOmm$oouDo4ILov3lrs&cAhy83QUS5O^}WzGq|UX$gSNIX6d&dMBzc^lSvHGo z(=K7;gD=mZjEQg-3+X$Ohel8x+q@2?W-SL1G3R^&+1Sr`W@k@7@rCB#*t*5ULWq#v z1_X&#-1A;vj-RV*4(u#n6wlU3eqeGa4{y5|5W<1q9nV-yyj<@1uDUg-<2aGJludR^ zj#kETwOFp#fjS1pQqNs(!pjyl*r&$K8Mm`LQP_IP={Vya6aMYgzG8ZynM(m0x>n-H zWPd(gJp$FyIp7ml`l^0w0n5)+yYBzwlo<$ zv#6mN?e|Y{*ecf(sLgK=^KD7=9^W9$N?RnNDMXTaS zDeT5`Zp6E?Onj!4POrrF%Go|EA%1D%@Z89;%fCMN>LT%ZnnX=G9#&MdJ{6~OjAukV z*?7I7%;(h`69>qa!={JM31Qdyx85W+AOFLagAzY7qqV)YIuxwyAwxaQO!57@a}H+b z`Xh1c zh^q9kgO}OKg5wsZNCQ?%bN(qv^i;DZ;#}?f`yBV+;e+q{_A9C1Z&!zjxh2}E*L=~s z93N9WslQ@&Ju24TFjI$1GG8pcNyK~eh{|#%i^9iGL)4w&2Rt)EER4-YNgx&VK{o%rszj|#hpAty8ar4GmMMF+Ww&Cl4D?Jcp`;W>+*OE5{ zhhk2xq4E-}zO#(-CfzYS;uS9S;N{JPg!8@`DSvg2C8+)V;?JLQT>_*KPsKNH>SrHM ztd{i^*+JYls}|R<(#-N&^M3Vn@8^vZ`%H1~{u_?}Ls22I&%upGpV=~P2xdO^`FN<6 z_NS6Wvfxuz)R(2{Cn|!vHLtoTNjBGYp0?}do9kTYxovi{E75~BNAGKDskqzfG0CgX z$x|x)!&`#-m5g(y2IHA6Y@AKE?a!fjFwFee9bAJZgL_r~UM@;L_WPoI zBc^7%n_tPw8+wK{tl>gmkRZf&PV218dHWV0m0l&^W1AasRf$FgnnO;LJ)8`UZQB~&s@Zb8{X2-^Y7VJ$}%|jXxSs&%FTWt zO~w+Ldg*CJngjfyVGh&5L1?y<(@?bi(?$P1SoX&H{XWQgAM3IBo=i_uK)IhXFE!q-zeiAy;ab850q z+iOiw%(VOK8}RRfFpXH}fh0$kA?|akmF_Do5g%i%7C(JlYxL`H^3v>0P{LlTD81_G z8K=o+67B>MAOD2&+g4%L4TTC5s;34j_%FuUSZ2wl-=BZFa3A+WT5$DO_$*QSy>f4( zJXk%|eka{u@`=xi@}*6`W*q7=pWRRxb6x7e=r~i4NwGMQIT<0U&G5w3`qmiL5f!B& zC~*8Euin!pZyYuZUnbyc>#&&F=ARy@hbMo(SYzGymo6@~u4TA4)#D0-mQdTAP3v@v zJYmRq*GX}9K|ZWfGe#ekYr4E*E5GRMq)Fw$>c=}#zdlTY$Pa8r+00}NL<)TlY;0_R z)M(tq`F|?1a<*;GD3(n(fQ~k&Xto?$mKSapqhQM4w zt-BIDozml`&arAv_KugU8B~kb*L&ZwHM_s(7s!kIHbKO^_kBvVQZpTr`#Sr~?1-8s z2hSqg>yc9&7cM-lsdiY*KE!Le@-d}7iMfB?{AZ?y&qNgj(=KQ>P^M^SdWyElN9g~= zfM8<8q6bkkd3cnlJZZ`=-N_YUH{Fj?o-9w9vWzlex6B$|8`&z;JFK2@x;-*f!BP*o zM(Q?-H^_IG81*Nv@&!=tqYw@RwJoo)j1V>qcNejGrUwmI!({3~Ese^8 z0nCiWN*_+l_R(|lbk|y2C;xWeVMC+7HMLlk)F#hQs$mU<<r)Epmw))7(LyL-NQ zbm)KNV|ydJ_d{y+45m$=&8Z5T*Baw%rF7i*@?fEuZk(M|t=)FxPUl)9IEzc9Jvx>X z*`XdJfBi$jU!n^blPC9ZQO<;e703>r5h2NJkpUl5e zDL7lH6RR(3P1fYJwLkiZvHM_*4B9xlg>wh_>eGz_vtCQg(V}-Yuz7P5=OrwA{Rrbc z6@+Gqb=Ui@sKNE4O+x0^CIU_uORd6{B`3^ZvkF6afOAbCIu@uS}h(QVrN6mi46~&fn^Xi z`Z4Z^d(YdnDj&RV`LHEcLUZ_50L7o;SdXMEmc}*nYoCs!^<+=03ZK26k1xMF5?rnk zg{68d>ka0fD>J#d?QwA^Uo5wEp-RTup}?rGTAGllXL%_FDsw$}(7L7GeKKIO4h*cQ z-BK!33uol82ztJvOffh}+Ftji62>IiByZuZxMQB7XKwSV&+5?wyJ{PhXjnTh)yS*$EA z9G9%Qd$zs$^&!I-&Y((7v~CSeso=h9(|Fa=)#Aa^(|(2~^Aw*)sHgP)T=QHyVLrH% zf6c6yVxw1qfN+$ZUkr{A{6=Zdq@FW+573G)wMUoZCw^8!)aEcJ; zb*mY$Y?zE6G?rNCT@19dUM@aCdhIvUDSc7$wl6eS=bHVjKk=#CGrN=*0|ybht3Wf~ z>AK-9V5U-T0f~Do?(iU}Db4F^$MDv4@3|nSE$SP`0=t^y=4j~iaK@k1*-D-e(mpxM z%-N~194!xY`am(FwSSBZqlQ;ovj2`z5bKYxscc=gT@a?>`$u|N*^9cZBUZ!%iFf0>Zq>bba$Q?UN10KKk~k$ zCMtg5rH;C?&vKTL@S+Vh!{9Y?I#s#jbu=zD3Ty2;26+y1==sr@8QD<+S-0I*3Q}X_ zO~i+mg<1-!-3q7}2!Yo@~2fLYOh$EEMr)7lXMcoP>$vPd=P#C5) z27|FLjayDHy>gvarj?A=pY1nRUq94N(vx$1LEq&FwkWdgkF?^;w#yAo#}{I36=^Cs zSn-$5!bxtw)?1HafASgWm~>D}$KF&61q!I~>}-#C2$l?BBHoi6IG{zwE=p$0xRcnwa+AuP7fY89K`|B8n6;tgs?s=?#&zd}U0I`Y-PNAl zJ4!co$5X={XS);4cE{7S=h9P~w0JI-p*Q-fzb=b*O?C4!SDjJs3gfqmJHw-Er#By_ z#1Irac>Z-HdAi(Nkzd#LzGZ76k0_Qc=Q4*K_PZ3edw95k*U}EzrlpWpT6#f2K{zI# zsXyHdaA=#6N6l28Hi*x;*1e$|<$tbOE@=3TpvmwUrY(-xiHMOo`ajZOYro%J{+kCi zb@E31T+u7%I3!2%=c%3Kuuwk5Is2*CHDvEU1PrQ-U(d$+;mJy`b={7nx)78ndLYHw z)-M~{0EPt^eoc3M(%fIr%xI8k^=>yKcmvE>W6oc`uplF%zlk^Gbxt zaXjlkevOT2$1f%lQ8)#cXC5buxp*$SxeSL4$!b&+$GulZkfm!?CY zck(m4sY-s{%$Oglt`e{UC8>+4oCc-KQ53VaVfR}DqWo-zL}_&s8+!D{i8*EtFXC@ z-HQU7dsn*U6qi@pcvoxRz!xpGrJt{jMd>9P-%B5B-BDR{9tNMDN3Qm?x z8J6Z-jYzDIzSLn+KIcm&_!*U}yP%97)qdB%x#-`2i!?C9-?n;nMCWvEesrGx$$qQ( zd4J9Ot5v@yg9fl`r`wLfNKN%-lu7XFN zfNNA|-{F%|im7V2YsHF6f|sf(zT?9&#)+#F>OKs(82N(icF#5Cu~60;Y09iD+l3&c z<-PC+9JgK{8M1?CAJ?7B54F_}yeUT&~m zjc?%+Pg!jdu+4hv-CFG)1wS%p5Lqp-Mt0n$_u{~kJv?&Jt781H9F}lL&UpKM{OcnU5AtWnZ0$kFWIt|ox^_@BhazY2RDr9XUsnE- zn+JykX|SyPKW*bXhsw6bLeI4GI8zlZ?)e^5^r?u3z+#=}1c$8Tn^#Ip>nYs%m*Ds) zyDNrq4^t0Wx9e*Yiw78+QlHenZ%o&StJ;ZjM-;Waw{jv>u1s|PNE#byn($hA)?M4l zm$`e_Nzh$7dEwyJr?Ql;JT@~>5}T{(GN3>C_rU1o{lMVCqj1^u80TW+`0Q*|#BEMG z430OyHOaePVIq%9G&7dXC3p_2u`sFYiW+W38K@)$M36nnMo>$4qF<0tt48UJ@ur-D zgg9*ZaaNoV%jZbJk!}%dRb7dpK9XdDhSZgI@x&%7%ebV{%U~VH45zHT?uod0{9{>L zm&P9UO-Th|X^CR(#u{|+L&pmWmg7S@3_^Ne1rzPV*(MK)>X9%}AM{UKHb^XVe;sK4 zQ-+WSiRG?Iofz#qG3anl?Kr((2k<<-81dVa`jtUuNR*guA)T#EUo_;A}<>A z>}BhsyoCbmOHG-Ldzn_}i}0cEn~pa?=ei5D$x|0oH|8B%8kRFhKA&llv_OAWkr|8L zqbc1u>CdIve|;0!7Yl#AX+I_Q>%RGo-_!J8_j~pozw_&U#vl9ow)et=e|usacqQTR zK9%d<`~QX0Q`bz@>B|+la>77$ChQ3#ekbFwAGD1}f%3jG>9eBOT=>=J1`aKN zkrS<)wfMTDLC?P!cGaHn8k0?EG??gd5)!_m03Q2OnlKUVzBf)bCNjUY*}qy({}~f_ z3?4WWq77f^%j|E^;to7xJ+z{(zqm#;$ziH9K%s0x%)`R2a^uhs^ojG13(@u7ngtd! zZ7vXfg>g(FpCUv7sio{}GPG72q|ZaWv;0n=?vZ+V9j3RVLnln(^3I84t7!`2h}O)< zPFyly4O(r6AF^DjNVTq7>Wu1<^(oSDLz_3Y^SW-P)IVTJz3A2OG3x5O_o}{ryWOdR zm-MlucHUMyZ*ke&S30eK(fy-nj~|UO(qaTF*X4~s{w(C&`{)9`evSG6hrRa< zYckvVhdGZ&8AV_e0TB=@D0MJMFXJE}(gZ}LMx+FU5PGPI4Uih8N*7RikzN9ch=A09 z^craiJ@l6LzX9irGo1Is`{DWUf3G)}Mu}$cwf9Cl zu2i|viZXtog7z_mY?F0;Hw<;Gd@xQ*XK`1xvFKLru#^J}a$cER$@3a|E%(fHdqPRZ zD031kM{FL>tR`cpcFS$Q8ImFMP&$7r$KTgAJ6LO@4`B zW$NaKwO5PMZr8>CNTH2M`jI6RMQ1<`#^R9nf>u%7SzeZ7-aul+dGW2W5lnNA1Np7H zlv`?kX}X_<3vNdH;@AZ>)T~+E9GT=ZJ5w9BfS7(e*)N5Kuk<`?ZVE3rH#pa*HQ6UT zli=C2d=S`ZU$Q}bEpYTDsd>Q~-Z)DDp2ox}1tHJzk>UWF;TJN%jfHNkU)0KC7KEySPSRee#ex zVq&QWLIwZ39SGG(y{nCWqmd-J8}b2STGsdCq)grK#aOj&( zVSb54(8b(Q@uLYT==s!W_ldh6Dzd1SbDiI3nkyT7->ZnGtoR!B+s!t$*T`m#<&NjB zEB0JVl1rNozNO!qz-@y{EcaSKcgxmR+3LSCid1m%T#q&7O!9oZJ+s5us$YOsN;mmd zgodUhP_-xC9S_7`mlR#umhRa$o`yxNv&SV~%q9(>Gs6c;t$hY=)_M`1*H3;xr&WmO zqeBaKIl5y|^QP|3)R$~aVB&ySkKIT-^NS3y)FbEJHX~&r#4>bHYO`&=XvSa8gukYQ zKQW%oZ~vP4?k8SPy91?<2QyxX$MX^L2Yf&J z_OoL$DkKUunKVd5p{ z{OR3!R${1^r%IcMSdBuq-_E_UuTuyM7upJ>;IU=L^F_|B^RG{1hN=Y`Yfihu@!{&3 z5l`dxvn+wK8i8#liPG2X@8Ypn>r0Fi__#Yai|T7NP?~woT#<1;AI)lnuJB>kuYmVG zTj~146-w?msPnvlo+eqdhCBG;-``VSQ9lj@qLx3vR{B zyNjOlGjQpKqJ{xO1X~O%7H0fQHXO6P?amkoZ^!Xq-+kak#{(HD+NmRV1hEKu`$U_BocqE_2Io~l@DNoZffPu*63^TDgcRe8^s ze+%o}=)XK1b$$-oiYbDOC6Nd$+58bM^+VAc!y}Qut_pe=%|>Pl+YOQ?hRq%LvH>Uy?`p~x{gJi`^Ivb{^C~jo*$$4#8@1hQP5G4IgW6(Z^C8b9 zGc2iYs+v0Uie?v0t~A^ay?vq|TjlAvlvZ=yGI_}0%=N-q1)t`q(#lDe&UY$>n<6ab zQhDvdN_v_uTgf81N{+MTS1or(Z$g0b1S<^iHzgg8tt{Sp%$4A5hMk(@Vw!-=yx9<1lsF8K+Pb17Czhc3*5(2Gt`0lj9gv%WtEE( z1s)k6vp&9i;FbQ!Fe@nXhbq)OtO}v;PZ}-nG6R`33on%lho)fm*0I7HU{j9IP5ZjW z%63oJ{8F??N{s0RW%OD%A74?M09DAZbep5x;;ZcR=D)<49aAkVik^Hk@%)aaUati1 zs~Sq%*h$me>K0ATf0_(*L0Y@DMx}=v8L!_mUt(j`FRQE*mrV=-Y&1c@deEA`F6^&Dj{1S8(k#0XnTn=jcPC`8v@&VcnLIv>~B ztR-xk*H7kZ=`&yC|Da{ORymh~cHL;J$VnQY^qBQ`nkS}-5$FjD;3V&$bb<<~Ai)S2@bss0i(IvE^tH#p=(2rIM7m}%MdQm*)W5AV6T zK{ZYFOr!6$MtrzTX7Q#?T1pC=#Z}0ba(lo%T^u{qEI|qPlS1-*9&f*g8*k!_J$y(p z#~CYv&s-f*fSVh8=ne;KHgESS6NKpvjaN~jamDXGBI*TU?B&ziVEy?3#^J!pGteQf z$1LtHHwsOS2CrW~Va>WRvwC~lbEV)lkG4&Bjd)yDpt+^tx}<NIg9(<_=Ao(_Q^7jN9Xiz!wgOho$_bv(e{DF8O?E7plfoTD7Dm zwtRzDu_|zINee*MyHNC*s)hET7yK1WO+tdAOj@l+q}cdtF*cu5yAIrtl?f(g7NTck zfUI&XR7c&g%X>g$#%EDkRvkTgo8;QE4cV-qdS(xgY$KPt4ME!H;X!D7o~(cqG4``o3n#b`AbWt81)P?5N@BbT2gfeDTguk6y* z2@yW;>Swdsrd3-Ea%2Gt(C+g$?WRL6%Z-lsZ7*Ea2g*6@MJpC-ZQ_=)?zHwg;nutV z$ztYsyU8#TX)D1Lt}O2KDs!!@VRJY{3^<>oj{KRy914Y*CH2}TpP{c^tJ%? z{6cBT$YLwn*FZ_BYQNQuY3J9xBrdPPHCAg(BI3R%#BOY%{}0q)zVcT^c@Dh&w;D#W zc{l8K1@j9@k6dSgnzLl&^(E#pEHL zjD_1bVkFa%k(TFA;jLRHbgx=I{=@DU@YXEjnh8^klDO2j$&4kf#~z~Ij%JeR?Rag&Xnz7?BNhUr;*5XsQp<xDK^<=h z)RzNbkCCH+!!9@0?wb4fIgJEG3fjNB0B^KU-C9_O-N2P>w|5z`BC zH4#w}sqNHf^8%dcN?CPpLO!I*n&pOn^B<;s8jGTBjf@0aY+ebQiarMh`*BUFQgchH>PVAQ!54$c# z*UT`l3*@BF8nA>~D^ufETlf`S$tuX|KoxM_ z?~rXhI=-wz@qSj6z1+H+yfl4<5T+8_z$YpuC@eyD8c#@_eb=b&7x*5F75FO%Dyb3K?&Rad*ntXpMdAe5bZh+7{bQIw`PT z*P5PLnD-4|F6u2e$2l)y`%Npm3+rE1^1#q00-+DoWGJ(|u4z65)cjeXS-}dgm_5iW z_hI7>X-vGTPrOV8sPJkOCekpGE5|ZRQ zf6dmNq|l|LvId*EIZ;-7kuY&yImKvaUNkKH z93NntO4n5{@{cd&9e?v6uvleShhn9?fiqVk1>JN<6kVf!t&>9`z6Bdpfhk_>ThyAU!d8v{vbbWez? zaGqI>O~xft2fiHrfDXRP65VjSl|>SrfeOj5R_@;O9etlCwolj3kLpgRyu4TG^d)R- z8oc@a^JTu$(aHrz%iv2gI#Ydf3Uc|6i7&v|k*870aw*#f7eMh`Ik>szKQSDGG*tq- z*3eWxeeuc$QXEUa-XmZtMU8Gey1^|K5~ARdLmi;>lSJ|zn!a4+1v^azUDZOHa-fB- zNWCh|xM2NtLdx5LDJ;VB58F=Y!uJ>TMP~d2*xR$(*UHUyKRKN+wxL+ehc!gAYA?9d zKYe}A%pkpVe5;Xk(xTJaPE94;+yghMue@fPKKXJQrt=FvxD}LvIV&n>q%t=n<&v{$ znc&WK_I{ZpCR$0>*QZ6PyP04)5gD#N6)MBuzV>n3 zBcBzyyb8{+-rwM?Q~-7Nzr37U4%y%R|Mg!ouKS<=zv!YonC*WxWh@QJ0y38eeF4C9 z|0R8#I2NqH{(K4K`3qPtz4;exB)n=+m7^E;~n`@}jm9;%-> zdAA}b2ilcOBt6s)G!!^U$LOsSL_>w|pzr#Rw2 zdp$qlb*9qUTctQtjG?}F`#Y`|bv5oLzR{`mvUMZMbq%Mdt92;oRa$DTOS(@jkG!B} z%%(5RMx52wa=1IW&F<$N>X@ihWU`<>SMK}qx@q5ytNRouIv-*mMPbo6#;bo@EAzqd zep|~q74C+e*3}0*=fcjYz~&8wbBopA|K=Ui=b$hk_NT^TG*?oz`E1{f{*tmTW2otE z@o;S8@{R6(%~`$kvsI5LqAQ5!4Gr{YBX33vd0Z*S{#GYWKGeCkyw&sQD>rulk3uQ6 zd0l(UALt-uk ztnXb1>Fl1a?qec8p2YBPomY$pOK~srJeux1AeIUOAM^zY4YJS53)=twB3)qeoWMaF z4oU2vDQt$!irvv;>&Mj?ZTa7CR9);T%m7L@J&dk}RbIC%@^%IA5~bW!k}FGDq@K^_ zU44;5C27;Qa{Oz(Y2`06#zvR!KwZ`*B}I(n5XtdW(E#Em-PkFgqpY%up2mZ`WO>Kn%bF8E0Iwt=? zz4@p~;=3BR;Rtc+QhZ4^0>v1prs@Hc%vgK56UivaEpOjda7&>H+${?mh;rV_xcPc+ zKR54-PXexQ{o6}g1PBNDuimeE?9s;S3Jq+FJt3#_kh(<5Oq6afacgCp1S{C&IZ>vf+w1Hhv>M)PRGOGSOW*$wExce@>p;voWRwsV>fJa!r{x>jKV39pr> zHzP(9%zCy6D>8g%4vO3VMS$=}j%ujV)-(N{}CVbvyo;+xT-HJWTZWAkV>*WH?T6^b-EH9H-taRRnda;Ct6lN8bzvOw{ zuE$=?+-Lpv7-gi>;?p}HnAY&h{mmT9moAZ*_rqqOR4W(uu-|4i;wIBEu=6TU z`^3m8-bUnr%V+x#MyVi$CpKi)NY230XZ-?S%#~(1E&ARHz|U7m7kjpC^oM&%)$FyB zXY&R83WOdloN{95D)MqoL`(3%_D3(mTX8YY{Y39mlFZ=~oC~zES3`trB1vB++Le^aNRx)Q`I&H!DNw3cMTYQR$hG#Zuw*kQH?4!% z$2>nbya8y%CDk2c+6}uVCMt40T!+tRt0A{Z(};Ut@G$s}gF4Y)Vn|84t!P~2>$*~u zu42EbO0r*zk8MBmEOv^{H?KDsp5bdAU9S}$}T|3QbZLOg)MMp&I`dD1+ z#I6-xwyYR$`>-#I=wrRjO4vDawnI+<7c>uR|1h}8hoJPZgTP~kcbgJM>& zueNIg+X95}WDma|4Z>rG)hxWk-iTl}DP^Ekabd0CXcKDF4=6P%KT8&Oc20Gut2g2e zF-iJO5mY?!CN8ypiXiY-)Cjo$V0&vGUvB%jVxa!TbvQ=)2_i7Cz^?2jdBb^hBKda%n!{ zwO(9=Ih;L>DR__3hrpW8g6zMvcWdiKzgDzZ)jHnWew%}tROW3xqu?`M>7j;`;HHpr z>v3}O5?SCE{RD`_@#6|G-rlw3sMTz3Kja(Frfn8Ol#)lqu0qBKsT1PI;SjA?rNK=5 ze8OA)Gw;HnZL(q)hxNJ)@@0;NX!<$BCQAw8{;9ey?kfrH$LJpRTZ^f;(g$oaZ&eh% zU=45bhbJQ~Vb~J5A}!-I^u({ZYG1In9S`S#BGfCW*PMoiiY9S> zyYjSky4)I&G_WV^PlL?;|Dux*Ebaf7=zabIZ~qr`=IoRD^qllRTWOZH$n)U(rBR|k zDU^@$T}=$LJ&~;7-XS}mx14l}+vEXyGxormxVd`#x!%A1slAUi^tX@pfB0W)Guj{j zzb!_=;5F#+a<>VZHvbu1mW`OZ&7_amSzz;v%tTSn4}{W_-iUb_;ZI)R~_$up5> z_J_ix{6Do~$^CP`oCxZ3ayxkPc?Zs^(6f~Fz5;r+liTqAFrN%%4_bEifBNYybKy|r zS@9Sjkf>H{lQ&kR^m2`xHkFfb1BB-1O>72lZ-a2OaTFPw^>%kqBt5_*&roJ#Y>K{< zYq(`tj&wrQ_t*!HA?=5U7~!U%qJAYY^e&iA%}|&m(XqKFuy?90T9_&%SyJ;J^_Cdn z=#KT_GXYA{^d`emk0!I)_xSpMgJR-&Q6MWO%61sv>&FOvs-Y1}8J;Lcj;5O%WmxftS}Oc7}@h${{y zmV0L{FEM_rP-;}B@SV%1fFWFg-pK*JO(alU8>g7npr+-*_V@d8KCkw+Bfm*kcMC9QFxvvGcPn(PZO!4%Tnlsz`}bKlQ@KLWeF0;7i-N- zCE^#ejf*S?6IUg0!Nh5?1Q%Fiz5S*E)^OdEYfIZG2D$CtkMnu-JxS*1!4W8RKe#yh zFV=oHS#H26Tuj7o&>(7H19XeiV0;swIfv}XP3teXbN%@SiXVx!Ty&x#Hg0zzUNL=G zm8`Uri8R^PVYJ^8Zr`0&ZZ)Tm2As;y4un6XqHh}F>8rJdy-ehmC;r71d@0+z$xgTW z+X9#7hO#{Ji$_V*HX>TPMzxnwc|O*Sg-eTr%b&m<`TNCo>w9E1gmSWsne zV&VVj$5Wd@UO{fAqruIUqR-;qVJR`36aa<`nVsZ4|Ea+B{KE&85cn?}pVb$K zKRUH^;|f~v^oG=De&G9Yib@|W8svI&MrT@5>9|6s0&>5BeIJaqotw9$-3M6Jla^%z z{cz;ya{4|Son#L?@QYb~(=(jO)cO*X6?3xjJ#sL3j6RRaE>o`CY!@&qg|*jn(J8yh zk>!=xd z{?3wB&;6P4phNC4=4M$$!MWW|1LZBK=aZh=Et(7YvKUn#fIGeDFuR?*V~Os|v8ju} z%hPs~JC`9_^fj?z$s9AGGY87Z5}yA}TM!Skzg3s~>s<2sHO3A_a-P$Z7TPkU+vJZ? zA&@F0gZ|!p-43QhA#I7t4F*476~;wHUA9ZM21gmlm^bOlSfUTmx)|`BkbS2ACGHFu zv$BYD0{+WJ2*j;lM9>~5EqXzdu4BVyab8B{R8}K8q>s?jqHwe;;=K^^!5f0tUA=;u z8!stMYSvT>GN!nN`oLN%(a_1Q7r<2m;}psF=||Usm0w2XR!bJbKPxZbi_=#r*5q=! z<3xQGSy^v5p||PgDYbeG025 z5P@r7^shc#qY$QxlE-s~Z^ReI?QV9b!@PIDn(B>;NJ(mEhmuXp=PIz(OBDw279>o= zHbIZ7Kj+T3+v>%o1EY=}QAWb8)|=XqgPDf4m#F|67|yk02R7bwg*w&p{^Q1C6QlW- zXLOgyywt*c)W+c+3skEj*+WWNbEL=LM zWNB`9@`WoA+*xDaXjXgff!h&u^) zj$W@AN%3-DYhhHyrO!e{wcRsPIhJ;FVa(5b+Yta6ysM#c*?qpz-|4}&Xi%6) zt{J)Y6MTRZ?Aui|sfDF3P90;8_@AEJsPh#{6epVm$$dnCa1JUylucj^067!+pPLm{ z%{kfn#J2cocIl##kyD1I&UjX&r@^-5p@49kCJTTJ5>sN6;bT?!G6|hMBA<5mACe_f z_7O&wg;6w}QAt{WKjYw9^Y7d)|8$7HlV?6XJ970ZnYP=H?aOxEza5F;dxGmBv*AMo zfaONeaQd?&sg9$SB^|N{^_S)LL&@&tT9@yip5c_lsKEYMK1SR_Z+aa(>%xF>KCD5c zSZ-eeFW~910Lfn(dJ7EZ8TXIIQ`ob^ntN;z5;#=W`Wcz3M02(`ADaVkko&Xs6Igf= zr`cRDyrh3S;>%1-TuV8ye-ekPL*GqKag(jLHy81AFUO@-0ALWf#x`$?6T8i)9Jr}O zs&N&vp$R4LH@Z979MZH-#@^&bRsb+Q3{TrE1DJb^m9~RJ^a1E{2hX50;1v%ip2EI; z`#RSIa~K@8_EtXiSH41ltAV^==%3PL=||Qn_pAdSsMD z^6RmbRwegYmxF4|chVuWj!*FW2wDugP@kyDW?ulaNxXzQW-dok3hz4_ZCHL#IHH&x zo{VL%#%tJz1U0Q#LIGfbG(g!QJ?46BI^U&K*u!^@a(>xQt1)1>4`p>J3M!YZNm%S` z?Up2l>`1G2-vPifpOr&RN?~}H&Uf>Adgp$8+2`<=V|OP)#3UUlC}wU+*uclD-T<28 zBp{O_CX!G*W*S-c(;7!cZf5 zVA^ia9^Lmyq8Y8Q7?ZRW6;6wmy3UVNk+k*epM^C!} z*f%R;$MfgUb%Y9)=w60<$c|{V&Esa!=)>@wP(LTzTfy7rnw~E0c zV*1ASCh&EBeE05wx5t2&I5Zyo5A|lu=g&G!OmIU}wR0*eKEWYd5Bf|!$B(M3bE*~s zTo@=AomQe)P;KSB0ZjQNBS_Lgo78vgp+eAi>>WG1_cz{^WZ7;Nn5Fpb&O-eCyBd?9 zKcD%&bmx6u@j{?dUdmffi^q>^0Vv!`KXT0Rti{+D7MpcSNR{9?}5x7 zL@x}O;X@*rIk#tqYSG)>I<1ki@Wo(rAHiW@4pZ^s%u)$GBQNP`1<$)c9#HK2qPPvK>4O)QxLmG)(?r} zJsk=@!MWj4F{*+gmX?-+k+MRUf!>Vt5Y`Hz!ph2_1CpcfJ0FWgZieu2y|^AO zs9|WVn#Y4NoE&N7;Or#6`KKf}4Q=lWfgj*f3N1BB0@%o{fJ2>T&4)DI2Ic|0^8QDPsr$(=kHC+vSR(GWS{X_^M-UpOS@&(G@)*0u1@<9)bAR0HQW&l)N)mOGaVB zc?SV~3y2LccWjP5uumbVLN>s!y3RUZvpw;pvT`jwZ00Kp>8oxnOY|Zp9Tf5yFm^wg zh^Mf-gJWjo%hoB-k%#v;XEQ#`GbtHiXHh9<7KK8z&77#+`i-VWxx4O2-`N6iM=of! zD;D;|sd(|S34IZ%up3Ah7tMu?vh_J6ZeeML+gST01^!M@amBLEJl>1~)1X6pGyGyl zZV;z6X!%=FAA0j(POaTrR9wiu=K>yvq(maqB5?HG=b{*$_x$(u z>Y22cHtnL>wy~)DZ8ZAAs87`W-e=q7^gj&U4GiIyN>PU2etq`a+?{~q=IZx&jvrT? zuupq4@{5g18}rogJgD$?&u>;&POsekBaMysh0SZq zuXkotQ&SB5TNKPP(OHP65`vPuJ9#A@q*|O}W^fGBCI%51nv--l=|Hdf-1(_R%Tum= z6y88F=~wCPV7WSdM4u|8dfo&?3teku$>EYIwz+qsyn<7L2HXe5>c}fYE%0qGSt;91 z`&aZR-z#QrAHCHKdz!Q3oLt#tWF5^2yUiUdGBQBhxT}cR38VWG1}viMNae8n+{zj5 z?j{bNQQDMNKeTzjzOqnMAqzP(vw(?fK0~7iJ-?k+`Tl)=hmmo-CO=#D{j{_+-+_-8 zb@M<&I9zM1#(}H&RQcsk&#En#Tb1{J;734L^00!(pFe!^yI@~#rj%H1o`=eBG#_}9 zcox-N3@=ONi~V;>wf#zHQFcM5eMX-sGiGJWutRA{KuVK$z!d*>(L2rAaQGhG*sm#; z%bg&_krK!AFwRtJ%hk|P-eYy!BAOS%m?YsivHcuU(IaxQe18QbFd9yBbab?{wRLn5 zt}#wiS60^VnQ7y@lPO0nOt}&Xwd=SqcGi*AO=AT;&X=DEGXA@^uf}GHl2C!94DliSd@-Y3+#U_U?bodZRSP7zA4vezwAHzu zh+GW8+np#jSxTS}CP-~=kJ&4(%{%eP%x`|s&wbG{7r!^fcfZ{1Y>_%HGu`--)YR)z zsQ*b4srntFe`e++(I2Ne*nVHo$k_OF_&7zG@7!7KRYNioaoo zldiZtV*^?rQSXJ$IXUS*jIFt$+*XT$K}ig4GE)f6!|l~zw#J=_!@79W(Hyw5!)3E^ zly!>z5P~Is9HT zg!T4w%A@_%`1iL->_c~)Z&FEm*Wiesd1aN)))HlM#WU~yl~cVk`q}0GhPZFM;oJGz z8U8zDIG^&&s(5?3o|Sd)s{kD9h3ESn5c@xT8ZL8hNRtuToE-T&t7InYc~838fjs!! zo+EES+-czpCnsJJyJ+q)PXZ5p>ms&E_CaAMkhCW2SY}%DH_#JrUlU;?u6ZyRn_GON z3IgiILbG^Y!(JAk9UG&4FvBlmeF=3J&eCh~nkPB2H8zc6XiVwB8UiJxDu7=BhWh#% z5~`6gF?|668K$u%`e@gt@BmTRH6e`;dd(3Lw`u1jvZ_lZ;xx;}^s^~fWFGx)v`;(3 zr@Bi&A*$DyU51Qe+@83@k_RfEG=#sqcFMsEF&gvk@l?^x?6hZ1d~&~CQ$kF<3ZA+1 zWZC(ueIe!ZL{&(WaFU|*$U}O`Fv*N_lv`qF)wRj+SeO!e9K__&w%g3CZ@;;#K537n zBn&MR*UH$4cqQ9io!DgYYeV#Ql>Oc@d`gYbhOFv#^!2$}TDr!nLNGmp1822|jwG3x z>lqtIXmY5nwBNpTKHR|INB}c;qK-#QY-VuCV~BQ;gI+7lNa>g%5ui8uE}j8pntXA=y{{j$)ze>4v#=ST z(!qnpeNwUMT_q8H>@pnClU2-S~m8%ov>cY%^57P{caSix%eAP|81i$c1Ik49v?qxb-uTA_{GkG#(cSB?bUvE!$mdF zEi*|V>$pYTT)~su`?Zk4i&xfjai$>1 zTum-=brRoGjyD4VYV(*YQlDG|kk24pX>8K1>kATu5gKFq`r1q!16VmQ#8;QYUl}Jh zTbVe45{WK}EB`ujH$CZj`$V`eWZ2;T{e#LH!>51!ZO;Sphb500un7$rUWS;W0pYJu z9*)sY+Hum+K_$BT=n#h;jCR9tV>}C}fo(4MV)|~}&Zw3YeK#r>E9uejLgRVb8+{^D zY-3{O#lB?lcJ=g(48_~osaKR|)E9mDP?r9AFdG}k4bsvQ@d%s@}`l z*(9SRElqd`Fs5BLj)RghQCB`Q9+)Lykw5S9kyrqcIpul$o11k$Lfr#A?<0yX*p7^y z{&&!GxpsSwkrk(g^%QO4p~_1`>fuWBmUS`ghNhd}8%L_0eWZPfc_k5Di}AB-Fa@ma zo&c~00B$@{IkD;*gg^16<(ZK-6457VM*>osq7A98`S@FlktvS`Kbx-q+Skji)i4hk zuK|m|gP5AZ>D8}4NiEBW>wGe+s=1S|u(a(tDMyEs@fD7&&u<+CPxcj>dmuF=#AIi4 zFK>;gKR8LrH3D_~f^!u1)o3W{hQvw{GUhq(PO#scH`guG<+9^f_t?v#rKQy_A_A>z zUl!Da0*NZc(GLxA8Xf^kH%3DeRaB^KL0KQU!dC!&5O(BP6w7(v`=z0$6T6D8wZw5x zUcK79Hwf@jJo~pD+@#MDNP0jeb> zDXF$LVxzI;MYD?Cii)}t(R};TDf)6Cql!w$trs~=Hpg(f1B9#K@}xOJm_BWzGX05smI2c{b% z1Y*v;o}=xZg>_ZQgs`+kT`v%iT+E_O2j$988y^c1a6me+M8MkVT$yOLx)dkOB5?I; z&`9z2OuA5dlGB1m1(XX#R&qR0wcpMDwv4w>RxujsdsLwoUl}CVs`FLR<;YQONo?g@ zzXIm*_ibEzvgz1l{-O{ExFXFd-Fso`R3t9Nt6>F7(&451H`sR=VW0HY=bHPjY~f(d z9$wYHQv;Sw=arltbY>$&w%X|n?c8!CKOzV_Qu3Bk%hw;iXOu6LTB<3Z84L|h+*!4; zx0g-okd%}px+c!LWfT=%eFB%1kZ?yDczM}fI)!?kp!*8M!^n~+cwPMrXOl~-f^LUX za>@^<>396)pV{(uZZ-r95(i25VuY1u+k!3&=p-p3ey@le44Y3LH1E1PVx)-Jlu|Va z~wxcELWz}~9{`?EL2D0s8dM(4HFfYBOcY1&k`eZcu9xvWYpk1!BKt{nA=PH)`5 zO-6eCeRmvSYNI9{?Cki~rrSSTtD#F2+POxDYJK42!;g#7CMFc7+kNBL0H%k8SdJrf z;KKqcDk?wh>+j(|xy*ZXkkT?T2&N__B9%sGr%yIH2>=|pSvD1!1QCdUfZAkF{)?a^lJQ~f4iIP@Q13w53NQ{o;dlMUTT@H3CM6b^m)SK+U-l`y1Fqi zM^$ROXHAxq0FQ=-#*d9=7(4!x7h6MLw1s-DBF#@c-Rk%{m#%uB4`{Lelsefig$HB= z>gWiyQzsT^M>=84Zl2o{ShJ3o6~GRfZI|x_A5WZBliGbPK*28Oy{zocOt&Qsx(cO` zLLL1No;w2&%<&igI#{2`Ky}8QOedG5@aQW@GmJ5rz%jBLll0g<=KIyPMC-5zNV{6v zpPA6i1nj2Ix5UAP0#O|Q>4u=&@^JRpJ;6z{x}j^zlba_jR>QuxTbKr}FylYlT1cRu zR_A-+O2|Y79q;---)rxoebs^8tmQl^)jeA-lxTHhkU;3OJs*~zKl@x=lBXUdA~NfA zI?3+IljC?cYpKbVWx?H6aJfKagV}C^+Ib^MtFK)4=TzPnALRd5$t~u01 z(FRWi90A)fmo z2{8K8t;>HOdB)`1tfs50{hqQpE&v2wAX7r4o8lnXSQrbj(P`{7CN)pkz?3IsD1L`# zGycBV<@Y*mlUNYvyl~63+^`2=N&h5z!T;~Np{71QJ|1l)m2NFN8bbiI0pMYcY9w{t zNIb*7fdWo34>4Ih{z_znwRLt@&)}N{2Q0U!ezw)0>39= zyr#!0E1tTdb%TntH&Fb5QL#-%vkQ5?chV1G`>_e0_CFmI;4_|gNpjq4EA6(zp)LVy zzIi3fnwW+-ZOFb&@N{<0bJDyLTrYmt35XF|TK>gLUID!Az{nXVBO}2-_f>l4@B6Cw z>fE__V`JlVf=%p@4W_~9;n+eYH}6*AEnCuvv06A#Mp(v(m`zUnp{2{mW!gRtZ;l(L-Hl zXW<;EDj7JmeOEi4zY*@Rm6$8m#gY_h>C?a1Oo^5lCG&K zkI;4X+u7|-MrM9i(#;!ETM|-evGjuyKd}1mez$(g;QH2N* zGLSqVlS6`c1x`0qoq*I-N+)ZUe~_t93JzXPRZjPkM_!13*|ggFS0)Nj1w4P#1m78I zcL)hS8c>@X=*^@_;JBJef|1mXCB9RrCKp3pROIUFw~2`X4DO|&8{w~X3qW1cPqqV~ zmhT>5fb#R>Vw`N-OUpA%jE4%`WFr$wGr9+zP7-&}X4Q#%v6hdky82@nv>k{8@x@r9 z--3R`FANNwTR*!^fSt=MyV+uI1B%sD0cJ@_1ys)iXxd;Aa({kNXp~!yV&dIr_ z{x0eApg8?4rTKn)R|=$yLfHM~s+yZ~^GA5Y%0E&L$wC5p?_hlyHX_kex&?xS2EpO1z#`N&e4)88%=1 zqz7ssH^dZbcTpb%G`Y-rCl}WPGWiN~WjDTzulUubTbL-{Gd3`G%2=w3#vK#Tlr31! zk7Krf&~Kn6?R>jaJm@Hy<|rp6Uz=gk7A5|nZaAv>y=Bp6q2bo&bets5T3^c8G_yM{ zf9%(UGl(6yZndMbnZtJHxAU9acLNQ#=9sW%aj}vTp=ZaaFqP2^=AxYO4=WW2WgR3V zgR~P2vtt7YJD{7OS{0@5>x;^6c3Yp^>YmlC8=dJ(_S%kEf`vC(0*6$(aZ<&MfBd0& za&VJSdOM~0VII;^z<9|^kcYgnhX0Qe_;hOm-1p~MV0a2QBvf(ZXgzc4tn^160|iB2 ztDA`JiBjHOeJ0)=qJ8h+#L(;Wh?!Y00n>BBX2{lTpK|j` zD5339*REWyZ0&rC%^0}>EH8O!=IzPjo7c-{ff}Z9lriwAolQ+cbH&GkO&HEpVKIoF z*c~(JYcU>cgZcP9U#YgFZO9(dvAb9ml3Yuhs;v+P%@-uOs8dIJD>Ma}SUv^#VC1dM zf7=QQ%y91rz&LgL6Gvj=(VMAu%3E~nI0#0@nowSa8k3p*-6cydrE;!K!!V_KMu{X} z)jcT}3s!LK191v_uc8I8*5;*|*dq*lwm@7n*|KL*2w_rV*W{PCC+*klI+g)5t04`f zW0{$?0Id>zmxHs3Eyz>;ypU-4)zb~*XUz=^)B?y=Uh)-qj|*|a;SIsnXJqRCqXdA! z`zN_wUJB-wn%r$Q1bY&qc9DMTyVq-(cvLc&qJem!t4$#a@nzJjxnM>G@QOKF5QmNfdU+(5=Y|&j)XkFC796Lzp0EzLr zW_`IR`081B`vM9vm$6euq|L03-y)Lq4Ekthk1fUGA1GK8Dj#(XnG7K`P)NU?9<@!{ z^-QrL@7Cs{^Wz}L6!b#r5FOI|GP--yw=v_Y;b{3zIuoKRAs#Xe=UQv9ix$99(C-vl zcD@*@n(cOup;BsXsYyri9~P$ON%C84`jB??vJy<@CY_Ui?TZvKUsM6!Re|o2_t|#$ zKQ~-{Zoa(No$gq>+r+q>Z2#m*_~&>a`iLEByWJYzzWF<33%K*;T{@Nv#W~$rzG@?y zZFI)}CQv+F9IttQMb~Wfdeh*kY2ok=wY6n~|48q09sf_phgAMeykFR-bp82taD2or zN}y225u3s->*@9yYWvIc?Pa@GK4yNcs@)-1`dW%k=+Qc+iuS}E$_O~`yy8^;SXT^f zq-S$2F3Crd8;SOwPB$38;@O|7(-7hFYr-c6_->1KKWR#=Kmf(Nvlkq2nUM7vvK zDHr6nSJzY-$)vqQG2|NL+SQO^+T)d}f5LUUG#ZNipdoOdHiIqTa$N`=rf-C5lWL&^ zg#_&s`XXqEHdXgs0i3O1b54$G!YNi|wE@BHg@w^7y9mtKr z+OnIjx*ZNcEFi+9k#scDVLK;$!N$j{Bt3_V^srn@P>68~ow&0GxSFN%3m@zMjD`S( z@^ehf^Y5Z@L*U_q$@!)QWP6F0Zk_LTX&`-mZRMfxXy>m{OVgC@e%eN!+VczgoE;Fq z$6CVDM8bSIz?OUDMGIcy9A7*il*ME@q)D|@%to zI8XtZwY3?g(lOBWDt*GSh$2B2-=akES2;l<`FWw!n3gp|@b)8RKeO_zoEsFEqMVj8ygV`S!U$IlvHzyq zkfli`drj(ioITcaT%lfv4g^fcwUww9D0!bv1yt4=1UNrNGVlHmd*2<_%?2xdLk%YYhgqZ*d1PCOAtn=ci zu|4OXbN)Kl^~-gMrT9H|uvMjZZ)S_o3+H^E^(j zN@UXrXp^XRV$-?X1?xi?ht=yIEbo4=0b~}&eLM5~TB4{jNF8*1y=UwA1A@EaRryD$ z$6!7_9fOMx^N}MEM|*U@7=P0>8#dTm++@C18@c%m zNjoM#sf>>;ltt-j%|x#3Dxrjxx=t``)f7hyS6AxPM~b-&t`u=$SZc@R`kYE*MUaM` zpglK>)szQ0=1lS$5m2y|I)NjzC`VN2bCeM+>1BT$l9krmy^MdNgwvSo8lx&nEu$(> z4$1)aCFN!R1w5<8_QL#Ck88_FUyj2&BZ#3VWw0$RpiN!hrOz>fX5!mckgOPdNRN}y z`wV9=K7r>=@}11o_bJNU<-`J;14?pLyc(vNv|%TACi7P5)^^y;Y^1pll{(+HynIDV zU2ms)*wNw7)+`VrVT#$aWA??fqv~j1vebM`XQDcu_d0urIT-hHdN&wvj$3ApJ4Rb4G^GaTHk0JTN1+%nCeMUh zGc?vk$A{kWk;o=hdDYf+<8-{I2chTO%un=vTv zy$-8kxAo+pv#YfIiR2-6L!CQlaOa5E&w`mVh4CW)-d6UsR2zER7Pzz1JougWx09Ln z@bQ^&xR>)ti6*>bt#flf%6k7wpA@*#ttE*aEGPu+7dA&)3r;rcLRcppd$-DaRn29y zW5+Wgnv+v=FINV(?g}ggU9D2xwbBQYwGXO$O|&gG8B9+K2`qr0HANd7==T`G1`ZCb zkHQlnd@!1SiiSGn0xM!A%3GDc$F4NwQLrJM+3U5k!@?ME^L<^@7}LQA{kg(bIVl$c zzw0*KK42)Fg3_FPGoD_}RsQy`q-5L5L)wN0$+LAkUB-*jdXNN=`|aEFOVdDL6^BR0 zc$5a{q&b~B6$}HP_1mMUyxljd?QacpH$oiZFsj|FL|R*D@qBjPEH#)hTH4Za8{vsc zz>8YzNGUqrE3fm)Qiiz|S8XgUy)^jVCi{ljbx~uFI)7cPdrejha;vLws)e=nc(&cr z$+H)%NsYfguxtB5`4hopaZXvu`OC6Y5-v$|A!-@zZ@7T4*1 z@B}5?a?Q|7P8^aK1E?9w>I2N9N-bCAoGqw8cJ~Ym7b*y@h{oXT&?CfvuDVLr5!YG z$>1~M{(b>^ETcrm$WjYB@7TQ%#&~VGX=d_+$Ly(TyR(lGZ1b4fPUT2Rr2^TMh2>?y zy*qV=5LW<{ps;apxb}joQck`tXaBc7C;{>iv%EW^QNR=Aj=8V0b`(ZhV~m~IX|h)H z^u>%&yxtAr&^a$yJIz~^*rudly*jExn@hc>#cYz@rlYYszBu5?>hm|y2_YgbC>%c& zBqJzfzx%TURd(l8&u=c0lFbJ#OpUvOGXsa;5+Pn!$Ny`!bC1#ZLplarLY4=K);F0~ z@2si14WQBhfB#sPT%&H)k2+GXQ;>>@eMM4TGf(TIx#Fs6G+Z{7Fmgx2(c{l-H2bh z3p9ULjhW|g5A0IgYiC;pI4NF8otq@D-Yi;bD5Jp3TQ0omQK^B8y^n;(xQnIL=J4N+ zyj55)#kUe&tc1RcZwh%Z^9;bLKQch_?!8#1dOzMOzA0kV?P}Sb`i?V>*&OaVDxiAp zD0yxOceV`wN2dCQlRFXz7Oq~hfP5DO9|UqcYDLHg2FdnE0P~k)8;K;kB3o|Nm+i(G zA$zWKXHO~1d^`+HD#IqG5&9lfii#>G=0m%c52BKoK% zyLe_0c=RPCcSPaaQ;u=+spOz(p||kn8soO38esAXLTW#08OcOGTb2{Zkj7nKSk;XB zF_pYHEcGj+p|;xG5+@~GYzIY*H(%Kzsm5zfvkvE)$za3SuSNT8OE8et&$d4$d9|fE zWMIDHMTN|)wUw|w(M2tkyOJ)_&Io}}re}dAPnTH@bMHg~9!)ssMFswHX< zDWVSmMY&x5%-feLGX*3?Kj)c&`590Wo0uTZe6IU;hkRpJ-SzhsW$F}Cl1sg&lnX3) zbf`;x)CAt$&ea`-a|JZZ&9U-|x%Q!R?~YfyoyC<@x+uc+^=2P-{t7DaT5WxKXQw>TMaz3s)D@oHU!TjhK)bTB31iNCufLCfOXNo9Vw|jF!{86|<6#amJmxn{bU# z{UtJfy|=7#-s{?Oqo(zRkTuEfs4XM-vze4j9s|L$DOERUt?|bGe?+50YZq_utPwbJbEijW+<@L4jcKy}vaZTTQu3b|2VjpMTl!*%p zVpN#PhR@9b;5z5QNK$SdZ$_^9TV}y|gi6>^y?Mxy>WG%+b~AH~(9yAMK2uln*GX?{ zOxU|njNjr`i__MdkxF|;(EBy!v6J^Ut#?G~8vppMWu|=@KY7~!MZJ8drAXX2 z2aPJbj1oO6?3z<-eN}NXD|@c&``tS<?k_}LoD-z(}Wg)(zx z;M$f>D4bbtZgw=O?cIDNiyIUC0sP z;4CWs-Mcpt(B@=s+~82ssA-^|cP&9tX@o)nP}9|i_3Cr5MjHWN<1M;X=0Jq~@0}*0 z_wCj%Fu9s4RjX?{>nt;-gU_6>!H9e-)fN{*`wMtB9jx=d9c!svAF6)U&}sBJK7Yr( zXZcm(uH_{+#^oS(MZXwbgMhZ<{QuxZ1aRyYTi_u&DR0z9D5P!oqNXXi;reXuW*Roa znDlZX>lDi?>{Yb9WqfTCnVL5Xn_NlGw6j^3{e3wAnLnevvIYUSasvoi}a=PIUKenACB zk*=~K7O4&byTwim^Y-4o(P-ZM=6c=8XRm7=%@yoNmgDL%U!r| zo@vgIBEfta9oWPH?Z@WdIoBbdoDk*=1Rp{xg4erN%RU@IlGTC3DW<@)$-wLr5zkI$ zjtB&5wo0V%HMVBy=3fUFchy1624SbnOd&AdeCI zy^!SxU%|NaNd7waV%KSzyrZ#_-g$0y_u%t@)$745*TH=`zZhH;AeT;eL7xm}u3^$6M3#{2;Un|MB6%d5-5ENs^pT;KtQkPsrG zKLm1<^gDrWzEOr>l*I|OIEbXCYC#I3M=yW55)HN!cA3dT8Lk_ln&q-17ZhZ_Y!QXa zV(zJg-rghU*2s$?<(#Z_=eTvU)di^J)+Qv6$Hm!fL`y|3! z@851q{f=nD?NUdGdW&Lm?u{YI`QbX>J@iUmc|fj284HL?7&*|Fo7U8d%fO29!Hf|> zL;1k{Y@f>Uz8qoojm5vDnk)m2-v!SXm8>Gad{IJLLu^@Js%P&zUOC_FrwglKPv7tZ zRr4N>kHqEj*NaNN2%Ln1znHy!0$uniw9&~=Nk*rjD%|E?6Pi=mT(BB;4zw*U7I?gG zWLm`eWXN|>DBVL}?tM3cvH0cPOT_&hiqN^gwq{<~tC)kKBy4TH;NU|s23Im!JK7TP z9UZV+tRzXrAgmW@*Wa0V;QP`=urGZ(0lE~v{D_&VAPk#OmdPb}Hk?k;I}&vB%&|4B zw>{X?^<>t$M|9Rl ziG9N7vDm325l$In;Q|Ej?5bD~Fh&I*%l>^B?p@APafxzq(lIIvUh^G)vxIE6md!~oUFSouM zaY5{$nX$b&3C52>)X`e$+0mi&d_e<}b1VC3MCE$Z_2B^8_Afy+iLsYojW`L2&@!fp z19DIi@DL-ibJlofs-BUU;;5-r63Y!J{FZ&%9I3Sd+Whpo%jp{bA}yb<0{<6K#6~A} z{iW>xT;G_E|NrMfOvNsK^EgG$I!}jwMMd6eXyI zuVu-it2@EJfBE=&l=w05<@$BJxGMQ_{e-$$&%Rui_@C<^C*yzS;s16XR>Y3Q_0og{ ze+?UPqedKmD6tYiE@QsU7T+=_C_bM7oInpc$^`5EB*8pIQOx2zLFrKcBC<2}8(wn4 z1(yr@)01Kvd1Z(AkqjyUxJAj{4p_HdjI5fS*d9HB7TahNE2r@MX$-T{-A1R%z2)i9 zL4?XDy3xiRUy{U+?)3zSz-`1Hs!A@M?=@4?=M4KPHQxLT&fWO@%3-lS)P$;|h z6;RHlV`G$m_W($qLB+>aJye(maI^Q1mjts)3CW^mpv}P|CtJOYZX`eth~BP0R}WJ3 z2UIfA!2PBkczq^YtSu7>v9`uGc><0fSX5zBS?W!>WX-vzhg+W``s8BZszyFNm*O`` zTAk(+&0)*lb-s&ZY1!Fv+rP9m7I9Y0ju{or(IGiGp{wffK?iHj5JY$x6h|)g1YidA zdXz_?bpcZ3z zu&1M=XJ8;j-nQ;I_H{i#vCDQl5fE?+pw~4khPG#ArUn6Vf1qu-xUc1+04~<-OJ>M? z2?~R&WR>*q1G+5LJWq!HK1oEKCzn>QC*pf(<_U?3R#pizdoKbw!>4BtOYX>4Q#~K` z%ty{)_im@&-reJ3X1m0wxE&efja_%MMfuT)8P<@I3V=zVhZsWbwY;JB_6653lVgYbE00rlB*+&1TFN-FzzFll<4&?Op ztq@VMv9YSLu>=AkPZhwzTJJ*`#@pZD*(qP0w9~%+}t-w6(OD1DzMwt^>#=Rn;@;Pt(&|hOaKalG(An zc{pB0+3ZwVof81R7n`8RVyul5lpoaF20CIz0FOf}nJ0_=wFe>^2vjhBDW3d?@RRsu1ml8F(L;nFRpO3fz>^3D; z)zGu3&I_>AmRnMk$AA0?pweHfxp+O*14tV;>Z1U1i9z7g&b{^kv|p^NL5X4tvqNe_ zGCmBMc7!k<)*RO~e4!hVYXFVzBL_SN^4hg3BU=ZDq;q?sfgb;NpYl=CjfN=%b}MO|6^vly5J0Ck!;;xT*QJ0m&i+BI8pldBRIKw}G^c#<7PDvApW3-wc) zCkt;C=>g1)LBcRVmJSBOk>eMhGad!L_HkJ_+wj$~Qo|EtXVe_XD$zzs`IeUG`C0Q0 z4Yxz}{n`?K?vv9t0Azk<$um9u@Fln=d11Ekge1olM7N-e*5P|{(Jq}eG{3CsPGXQSaf3w!8GqDNN0>R++;R?vBrLSzk18S}t$lri8qQZ-PGz&21sOp{T-cKy2@0JAIe!-n9G=ARR^nG3R9CkASbhp*w;S=SrRq-|-a zq`0*=T|PAe%7Wn871tXYE^WG(3ie=CW(HnK@%K2NsO#)ti=Rjz%k@pW2b7OYlJv5@ z1ncBmm{w0i2XZ{Y_}OM#^CW|C{@sr^z55?P(g6YnkZAB}Ki@Tu1$36~R_~JEllM=i zPSY{?(Mc&8Lq-9>KLB9p=quKsL8naKA*71QS8-q<10%Cx@nG!-X^L1cA{?_mI?rl` zZuQ4ueTX~EwuG-1R$Z7+!VMSkpOVzTv(ZqyCvCS%PiaDOE5g>Bk4B6&9@cH&N)=`V zo=6k~lF=2niP@U)kduU$YTjYD$M4CPy2z@Tz$u;W)Bs&oJI&yx-OWl70)Drr9c!^Z z;s^<>JtN$I8DAA3)O4glG)zjEP!Ileb&f`}{RZ6&cwrI18IakH9FE`73}{%b76Q5H z+!6T;+c@=S%*--RxU6IY*ncC%Hv3cKdt**Hid-EmwXe@~q@@w+HZ?XDzJ4v--}X9g z6OV^)5!0*^-q9PH)!W)_;!%zgJb-xb)HAq&Usx^trwXUp{br?o?UnSN)&!JJtDU7DT_}=FKy{ADbNFFj3Tq$OVg}(%8Yrc6neqPtC0DS7IBB z!3o<&Q?HyqZ!sUAXesiam5X5edQ4JRf9-8Zdi`;1W5&H*T}e!DXN|!+qBHC%nOTWM z{~kaLyRZ3?HL|g7>I!*bK-mJKVWBJXj~|;SPXSd#c;I^Rv4lU|7>lHWhG^ktGeOlXy-t2EklEcZbhl3i)p$yD_yVnFfI>yrS`)}!`e;ERm6-sjEAJEwR#B_HmY@v1c zJS!Q@t4NNxzT7Jcn~X)f+PXMYLTe-B&68lOHkO+~5N(Ya8#n$V9!z86VcSCa6cakU z_6)hJO4r!2o`^o~yp+OJQH0k|T}NL=mxqjIE5q>>$KOgrERM5N26x*F-3O?aWur?z zxkjbc`4g`JA}ATp8p;0iqhj}&0jN(clDhTEDB_+KEyK;aEFJ*(a5#(dJV0D5;jMLC z&3y}`T(zRCjTB>!RG?s;u%q$Yl{$N?JLLlO>(4x&6f->~?rz#3anyXX&yW{~CP;^P zc4RJuc!XtiTV3i_$NPCNc1f<-F(8c!@%S6# z;hAWy@Tb9#1l0Bo3@G$!O6A-03cDS~!vOY46?U-$1ACZZnp^0OxC zxXmBMlvh8#ptSv>-u-BgfdrM zSzY=u5QQKj_Q9sp`*p(^E(_%zUIcSDFniC)r4LiJ_VR3|CU0;UU`y^+7%gFDhVXL% zt|6#HCD$j)Iw%K=)q-ZcHFML%;@BnXd%U6?0glFpZ+`j#+WTQIl{1>OWiZ<=Ag^{i zy!99^pG%ZCCF()Lc6vaHgNXIJ;FbQ1FTKnGe*qoh=GU=jWtcx4Gks7~IbV-n8yhNm z4iM=5R!JT1bl70vVj~$>>_4%?LUJ>5ohIuL++11M4c90Q79`QibWDnU&akHB)n~4- z+Ku!%-EBv`))yFsBMu`DtnK$G>cYCic#~;f3{?^0qr3Vbd4boE08EemcSoDd@xB-R zc*06a+Ay!HrX`V>YKNnFoDVK5!?Rg~EN@sLb(x8_*p+|Oym~2=#23VubemDtQgdcM z1f6RRFaXZxFo{7mfmV8LpjN^mM@#HIh2F4O)wWsXP1S&E_!V+Q0`>5SorIzVX36Hb~7lH&sc6^CmUJ~zjHk` zXVFjG`^@{!!fmHM(K;?*9FY{GmR;#dTz+8I4AyoLK9#LUHNr(48LMv%OLaHzenuPB zK0Y|h0?I;$TXde<#NndiM8l6Jg_D(y?k*H9wZ3k_6++>p`w$J;p6xT7bS71+kXHYy ziK31+bXl^9J*ZY0(vaPjp{@|L9vh=B2Nu%7Se>;x?Gm&DCo9Jt@6-48*2l3iGXU6< zF{SlfX7Og$xgWb3FPQV^Z2gLP$iRff zxJZ0*UYc*z)ft-~ECOf>@)n&~-^m0)@S6xr?rQ1yHy zNI_TNhfdXd$@8N#!+jXUB3E|Yn{5@ z9t`az3Re2zA$%pT$_Ya$+#;xd2S2Ap7QjpbwK^YuOy-5v%n$V@^gjwo8uZX2{eGMf z7YxI$*={a%>od5g1y1Mzi`AbbBkTDs6Y>PfByN@%u zR`V#79t%auDzd(57=h1Js zC-vJwo2&5(zVrNBD`B>9zp2gI-mB?HmCQ|?YM~3^YbEAr%IFUS54+>EqEqIc%sY$I zmgXhTQ=r7D-7-Q(7Ng<8sYuREa{s7*clPTCkhRe~^gc*845++e1QX6TV{9yz#)Y0P zTVj(#DHC#ZtC3P4Zr{smgb%FBv7JRg%r8t!)6JDit=dNIgfWSKS+7xN02=wkeL=hH zk!Ot?lD20?<)Kbm1>=aApw$?@hi88yQA2*VFSx70H{vxnp)#@-_N{Tm%b#6uw{HPT z-zf&$o#*xa0tsczWrwO)IZr-{v_=S+bd%y-DvzbUO|gRU)N`KcP`M`TnF7V_NR2Vk ziKhqX;L80McIbk4r)bfKhO!P?{952U%U8Dk_8DH6)txm{L7?}QJb$$R_>3yvf-(8b zd~3eV(m4S)(~5fVl?zcIe4m~;Z0F-4NZM_?>ltaij+>=~F9@;}G_=G=s%Pm#XOsNs zx;TaHDy<%2!mRmerP#co%A2!JWt$U4Q$r8p=O2)oD57Rh_bmh*z3QXWaTnSMU}KQp zPSkvRR3fjUJ3upeWOp?lf`?UHbjH`caW*|&48L)&I9H_v{U_0NqsGhMjIfPqn_+E) ziGo5)b1QEPo7l&kCYuDU!CN9syhLgoSOh$b@}1d0&VS=MH=5r zJv@4J%atwDg+FZz*{Gtn^|`&}pECmc`u%RiM@Q~{bD%^0)j9LZ&o!caFCX=_#6vBx&B_WH8S(3y-quyTOk#8+HU@FbENZk&Obdq zy91h?&FnGGO13DAx)OOP;29rA_ZbL9hesV6$vOBG4i;8>8!a`#t9=lQldA}u)o#sE zAzB8vLP+F~JwN3qX^S-HFV<Z4pL1;fpKXI+mL^idG z35yY0myZc0mnHGj54_PnL_~LU*m4wWPkuFfsG+YeoKikHn5eiMS6#2DZtRBf4&xPb zR4Zp{Ru-F$VIz`4eDo+M{;)e<_#|0YFg8?AL*E(SG0t~H7=y#>T`s%;m#3);>NZi< zgtD^s!K0%eEV}E4)<@%YJpD9NPa}3rGpOHcCJ_kdyECCzruCGqCmW~y=IC@WoPdM` z`S^x|>5x)dA*nV5cQ%6MFV>Khp01>@;>=9e8Y0TVrvF?7ECQ(Cc+E-a!72 z{Rq4uyuK&}j$_8T&_H;~%3^WrQz|Pf#m)p^&wPkR>io&y z1TkEF#=)rigXO7L_E?8|w-iEb1{2`pgZVxuY~4oOoNK>VIyZwP8T&LV!P&)5Hx_0R z`-SV+gC>5a)-Nh3HvqNLaLP})w>{W2Y{}1)7QT2ean!eAw<(Eqh-tG{>X+k5VxG%GHvi1cKh+{3T_PjSfIk`&zN)QG-HdOyWkfw~$ z^i$&u!uA8jluM$Jg*w`AZG1r>no_zjms?iN>_U=qcf9fx)>Tu>9i9b| z@RJWQ3dh%6+GT}wgb7j_&K(^}lMbesNJ@uJo6sCI;M6f?2y0wDm7}h1U*4Si1pafi zQ|GC~kz{ih4NLm$CQ{Y1E-esq&Gsrj;Wn~2VYCL}>&0@2$=Gdm9&PCUe21rGY5)%r zXRGZ_979xjCLT07*0Ti_`hGXq@K%Zv$$0Vc#{%I4L7O&h@-@)({ZXkv<4$1+=`F_H z!{d=-lCQ32oO6>g;p{oTp?B<8t37W+qbP>uN+BL!$w#SFbIF8yLhzVSipef#!_ z$5$mzApZ{Y)1RMBw^IZ4Yf44l47S_5Pxgn&tqXG7eNRu$6sF<4P8t(>-re?m=H}I8 zYHx4<)qn<4{?7iCn)qsI8Z?izzw*7Y7UKJ#(AU1dD4NCy1cHMUO9%vgA+u=koE_=h zqweXYv6p#yP7$F|P4ULFU$s{d@ON3v0lO_*wj9lCciqX++BF$eUH*OO>2Q0X-m-p@ zeo$N$AbZ(H4xsK7oxE^YW9_-ragOxD1I16pVm~$d$6|B-r(gS8rk8!yiZA|r#4Ks) ztPwCu(@|KzJwA)^K*t}-dBn=^>!W`E4Po^F0H)56(==#$;1RdoxAdKsSP~UztMt3i z35V;--Q;9>#X%KmbDweXNZ(Ab(Ac5iGnarV`! zKcD~AaBKR`0r{NkwmKcwj5g@zQs;mjSyAWQH$F2kw8G&i`5}{!Rw3JVpH08K!f$G7 zDo>WP)`*VFo*nD#d5+Y{^E^rJ%ljSi)qx~Ya6qWFPok!j5s4oaG`pKic@PW&^?fjK z?uX}33>dAiuOE5QnS1RFRWDl7AT1|-M!`k*;Ot6Na`MtmGqdL3laiM%K_FiRFeI)& z+&JevCN;VPhiFse|JY_u%Q$fOyTBXi{F*?_m7|9>k{ZXi5?5~!fS+488}QcGC#-vV zdo4E<#nI&Rahks7nu=v*WnMn!PR0hN<{uvJ@b`oicy3TJ2AX<%wY79e-+7?sEL1lX z$v_AopIe=^Ozl+TzVknAZ5HnfoYvE-J9g~w{aJJ2wsfrKw6CMnaL;oTAPet|JN4rC zVnQz*jsL>(*tkbc!)HKCLHI9wCS9F+AA)}k-23}rA`uf5D+{_Xg&%un3!f`_N=#SfWwYyqPf11#2l;t4dkMwwb z|10Mu5o~tCIp_7L(jB&07>pQNV53*1pBZa+&olF@V4D9ew^3;Im6r0_69a5YIl2ON z-~Kd{K>l54ErN6R{{4B+T7hVRIIa?C<(S;YS-bHfmoF@&>OHYhNtn1xeeZ`oU;->Q zP+_Abernz_mYAA4dI>T#JpBBE3{@MLgW!}0j!8@9z;1L6Z#RChTKnrir%gip#HW-qeX);UpPr-mlUK5V=kHd_AFd7Ax%R{PkcP^*tjr_+^>6S9Y#dnQNQ57k5aVdIV{4c%XZi!m7QTp3pn4+ZU)HkMsLHLRrLX^xDi)Gh1D zPd-l0=btBbu$q7U(Bj?mKcUqh?P*n^veMAH`B;6T(xf_rQ!Y9?k>0a@H%RWZZCbw@6%}gs?Vvv{&;>aNhsUynti^v6#c<;A|no4yD4B|TI1W^*`*)o)^B<)xiYn*t}R-T~qg z4`@f+1qC`%qw_f*d^)jhx;e`wZm3&fRUb+boaiM2g0KWJcKcZ~nE>Q74q0EjmK2q! zWr1uj@bfo2d9wbkdE2dj%&Ww}&z}UzBm7Q9*sF^vYu_hoDdF&$nNYsWduPowD-Ba) zY5l31-~Eb#(IG+<-TZaFUSo-urJoX~1;3ovDXIA0H0#Pf`aF;ZpZrl%nf6h+9x3vh z(oZIcM;(CST<3i%w@^?$Gf(hb=y8TXC|A9`Jv`23TF4t+vrSei^6WY3_Q8AKScs3W z0gX?GP{vi@RyIw1GNrGlA6ykUA08?Dswy-ftEayo>atQJ6bcJXeu{THCo@!20j!9t z(QJ?Nk!N44Az%+}`?w%?kH?=)55rwl@fu~-)YM!BJ-#5)GX4fg<)`I?S?!3f*$Kr^ ztkdvNM$bRjW$Kfzu}!~OSYBa~9Qm7XZjUo?dK#e4rti~4uB>fL#Eu2IRem%$tR&B~ zznWuWi2V+DQW1zg7s4Ka;y;h>)BiOYpHk-@AC~vkMTN=x&$Ef);ezVwitN>m#inSu z{Z~^FSZLeiW^*?{Ni;P@J)!62sor3@d*pttcO)cwKEa3v7N%H{g*i!$XEy6L8^~@L z5GaCk*KE(4sf9>3SE^xyfLkyucCg2ETggsKbjsF#X;BP)nq|?V%ouyPO4VVEKLf zj$Cf{@FHGF?kn{zA!KBHZ3F@PCokor8aM}hlSGqhym_02YChu$q+c!^N*o*-!up~J zGl01LW2Z>Gkl0w6j1FTaDzxdmx@ds8U=mF0RHFn_>n0NvLj*-;d(6jd#gs?p0-(6hH{?})`t80b^9cNJ>sk}d&O-Njm_=@ zR)(%p@*z+wHfHS&?8x2oE{zy<$nvZyC3wJIUx(F!N$O)>+I*-@9es?QXBlEnw{Ju;LWX~be*ESGvLl2h^ zCbPeyaDi(k3R^L(|8Yog&kz={j@`NJo*KeWFa!Irp-eFEFVcd5F2gkbGZa)wok&(R zS@{bP;7CB~HeXH#j8(_*69%ZH_npHjs4-%vbk>(@3?IjJy?7&-d_DR3?7(f(E)!1m z{^e+evX!|QJiMW#_CNxrUDTv8I8X7Nvr3b?_&8MjWIzOTn3ijiI74HZkX|^lw|)Dg<;Or|<|ppsncJ5x(b6Lu_|N#AFh zU-nN!5STxm-#6rez^FNiAcb-0^oObLAVFhqb9LbSJVIp3m0POQ79Qo;KKKu zVb;81zDZC|292TyXMIlt+adD-_EYBQayJDcs*2g;(j3IQP_?kTE=@)--{R9jJfPq| zbqVPnHTN2Ypo9*}VHjBUgBXZhQ|b3*630qHLjCHWCCR&b#g(Y09&t~O&*`)Utn8vZ zInHrqTHzehlAM&JA)o7K6-T9Jh)ME?Ur&5UBwX(v;I1TFGucn%ltu$r%0RgFv8nj} zF!oY3SYF02$BW;QY;L}5je-M70juZBH9HFcb&vQ0$V1wj{K+Q&FacZ)2sH@iY|hJ96=$oLVvE* z^>CuR$}z;X0R`nOId8zxQACbClC%V3k0}J_x+BX7Q90zF1HP`j!Ck3wP7IwRnujlT zLwJov{EpTnV#74s7>d@sdb%x;QMqOT!Ovw`qXK!x9Fsk4O5WUY((v*~a~eKe&~OlE z!vBrtowizdFLfHapyf{NSZM(Xnr+Z)#AuFF8s=b1nMnwzaZP<<0uEX8YXjyZ2Q{ph-Pjn5M$UUFP~k9>eLJQ zD$Tqxl)D7;5Axdj(V?I+`GD+4t+-VLe}>Q=8V?mhTK|IW2`TJt&2IQvmM^w1;9Rlq%KcZv(SvI-Q| zldMYFMFI8ee-#YexV^`&4@#+Lxuu0-!YL#h)DKVMLmE%T0Banjgb5>?m??s23re8S zBY)Ym&jQgdx)9fv15xyv3uBVtqVekbZw2$qhbe^Ul^fn8em?90OOQjQ4kKtvyB`*| z^qvdP!zm@EoMY^{9{QLh+cf7K2O7>j*JeI&JCo z0VHjjy)G{%aeutrQU^b&c|o7q@q(V<%N9B@M&do@kxovofGwS-WA--mjVZQTzzNp3H8opC8G)iFQREZ1`DDb0Ul z3}3z65F4jvGO20mAZvlKvajMtfb>Lc+HZdVz?rpOBHy8;!*P zKEsp?3oS;&d(o2U5ga>fCeJW7xJ{C2QgN`RPYJEQJ^px(VRD5X?y5@s$&~bQW5Uhe zwl zWEu&nqPI`Aa$x#e#xrwHx-vpRo~ga@I%`PAKt#ub!G(`e(6vk)Y%TLNxvIMbe=YFN zUJ;9J$hF0TN@>xELz(k2;DE_ubW)FM!R_a~7xHn=R(T!;c{U|^SB}Q6eiIN7P=7Ev zZAxQu+1b>T{Pqdq2`8>Hudov?EygqaD8{8Bza0e(h1KBY7AKLAY3%^xKCN-qDJs_2 zNYi(7@w-gc$uCCUca{#+A(L%&-+8t#XAu8kSp(bp&CjL4&%UWhSpxuy&*U?JhuI34 z%JqRN3m#NfW1(Ae+7WG~D$fWM!FT;dd}CZ(seed8g}$(~(8^!uUy|kaSPO{ydh7?H zO=?w)AzSZi_r{04o$qislb+Nt+_9c!h4fN=jU;`y(|&*{%=Cz3I3C%Q6yFF$y;~Dc z1MfZD=RCfOt!)hV;;UZ)4Ql(RcQ`$|-yYhQZAs#+t~M(J6SfO)oY*GAbd;uh#69aw z=_v(V#MRYROHaZj&7>A0b&Y)5%5ZWw>Yuh65PXs-1Oi-dZ>wWFf*FM%yHbx+uP&a; zm)X9ZPsWGe$bIkZbUd*QA>x-u=zD2tb`5lP?!jCM&{s}w&hpgJ)&19!NDM@6cq%8( z^LP|A@XwaT{SEL^deZ^d0k9bSfzU_B=?opyQtfBT2FYJ(qm4HOz8gov%Z&L7ni|M( zvBw+EONdvt#xK?l-Rkped0PChX^|*s+}Ow`@(d^L>z-=1hYF}e?%n{HRVfvYD+cEL zU-yu(*s!uBN~OJn>T}X20pLw{yfusiJX!1J>YVJqZ*Xk)MxU;`FK1f|>ZcRcH`>On z_a^@zKS?j62n-(YG(^~fG3_sJaM)_fv4m(fL)sgk#<@0`|IHoK zHezSji{CGBh$3U!{bvsH`J&##F^0db&6+x=1d#{GGS#rb!!f&9n=|1{bxgoEMpEqf zlh0(YSfSUcHi@ca`aQ#^+NAdndHDvMF4HZhC{o`0Oj^5_E!=b52CAT^4y70?Qx*I> zypVJKCaWk%O5oth`u;o0Y2Bu5th#*(6yt}f8lMXO*A|l)Soom5k&F;30={=Ntijj& zMF5Wp#);~>^SN`cTG}|U*%Wnfz)ZR<$iT%%#~afcX-8Wo{`MWxQB7~Qjafm{mD%5S zTnSe&SIM#Ccht!U`0v}7cjx?;;Tatl@Fx*vE^IxhWC|xyg6eWE(AOpoCW5s1W~mi? zM_QO*$`DpUzOO)I2*5#0Pqpj&w}4d?0%iw!*7NfNo*%-ZUoZX#ugGs`wOu~{>Qeg3 zJy$&!Qaz>8W%*j*?X~43YZVxM0u@bRO=&AJil>nJ#pEqY$i=K(2z~EqKh!HvBE$bX zO-dA1tM>aBu%ZNXq^^J_yfIN!rMS{(pVR+ZMoMzOu-QQFm;N5k@5170RC`oD5=i1@>!BdA3VRPCy?pUcp z3Xf`P**uH6fa*N^NB*Pt{-ePJDC^bysF`{>bfj)*w=yk!B0m{iZo8LMo0#hm*it~- z-uK(ISgC+dx4V1%_ ztEIq3gGGIpP9Eq$!)`S_xWQR+OXX@S_fb#h#xbI$&p_L6leYYOD4`ov+?tFsPL*0E z!#*OykYpF){Q{c^XF!1?nAO1`YRW3g=3fox{(58J>}4S_Mraq@67e|}FsW;Z<0Qr> zxqQbF%@BQRo?0U~Njxx?B&Qn-yZt-ZzvETEdetr8f8AK3^g{(Ls{zgHz0*+`#grD?I{#Zu7L05VqhFRX!n#V}21SqUDmaebMyg>{b6LFe0PY-leJLeP zO_>9RuVvb+=`H=$%?@U5HdJfFPir=lw#q-ZU82(y!sdq45z&k5>VjEirR{r+PBvcx zi5k*PQ&yJ@W#J)xB~1NEK7?^uIy^i0-+hRf0}fMKD#lF43USYL@xoNDpP*RsE0()~1CK)R` z7&d1Zjb%@mn&R1=@bd8Iy=i#CVy`4%cQN|ZMJf!~s4Q_ft4NF4UIjAoYp5O^kv4Gd zta1>6GWQqv=kB(~%~zs#;IZTuYe6%7|MDvyO(kslUflnt4;uu;8t2lLl<)*%Soh}s zQQvjt;z{Q4tUZ*!P%wOdIuy)q>aKGU`Y*Yk9)02o(jgeL31#^4iRe8rMxqOIpH6Q0 z5*LJVXbUjm4hYKZ0tn};!ufHN|V3lEqJMx$Qe7!sp8K;ko`=0a*)0=XGn7ib#$AF1nKB%Nx zp$n~v#PdflN!1+!YlBcQ_-HbOGgI$=@(-qe&HrNWyTY2bf2xB^KifKKHl{Z zLIP{9Ip*l&A9E(|Z^!xO432%|f#mhNjO>Q0#$g9iqWl63uyd-hWrncdX;NfIf)`xt zS8{LDg{-ILFcsBor9eGgm+6ElTAiU78u91K7hKx4w`1+~XIg~yA1`&MRpuENaC?`o zwC0psgClAQ`-}ISw!z`TDGk!MW(G!`<|r@{(;DUPsFS4Op9jlrH+Ju+?qS7gJ?37= zxu~!IlCB01MN-io&SIPXIU3wdjws5?$1P2#23*{5U);nUAF-{yN49N!5q!|T>imdu zt5&P>anqMNki`NU3(gsSHmx+fX+F5?qjl}$z&p=YS?J!FtoV``emE+Q60$k(`&$T3 zCPlJKCk7u>)&&GK_CLs>7|pAB8su`$yCGJR(tF{(Mn`Cz^Uvi#678tff3D_zC#cV{ ze{Xv5A1eFYCJyxb_5VLVpvnJRI`~BQ6c&lYd48vOg6V;Ku8Uu6VhxknPL1(8{oAVe z43PGL5wxjZ<`Lgsq|PpzhhaQs0x)F@!oSP%drP9=s144~kKl`BNB8$=Lq#5<-dr|x z$H4ZNz_F`We;a^IJ&h0ev&svYW*5orfT|vj%IPTAR|+XAVslIKEXa*aL*!fm8nU|8 zi-F<$*((-J9De8B1JB>Od48Tjv9#@I4otpp3l}LUWb0Dt8z;2y6k%^=)hs&md3$4m za=U&1^RhlhjId+}-3aC%5p|d@`2Df0N#{)r=2?^@$9&eA$#pBInziB_I~$Jsbs~zr zN=r*QtVd1T<8vQ1YO}*VCTF1DtyJ=#_g890UB?6MVxZmzzu&az#TNKb5F^d9g>`60 za6~9T_cwQ+=IJ~4uR6fDd+of|N0Z_2jKg-n9ffXSiie#E(SoGI5r4kdrzoQ9qqb17 z;%BvoFE*Q>pLd6?yNqmRN`0{{M_PmE$ZIV;lQ06S7VOZF&{1uG z0#Jp)U>GE!a&*OC>!@7*L@19at}8itVsoZfV&hvfC1fLV79?MG3W|k$QK%xL>gKao z-?K2m7WusQcHBZj_9lKE1ekL2!$2Qd_U`Xi!VN2SN)=l9JNx^0(eOQm4hP>x)gv~|GTzFpE~*di_RGhj5AA^U*YKDU|3w)cG8 zzmLQ~tQ1RyY*kb4Ei9L_e9X*Lymk`A%UivaN7#roIm;9=_mZZ)&b}RVqMKB1wn__+ zY)o`#_R1_MEB9}%&$Pu$8rKJh&PsT?Z?{CDP1_bG}(qMZM0e2;yHRH2A$ZR&d#4&G)Qwc(j_@0n&0NqA`QJZ+3_Q=8%CT&h7yxQ z0>B5-W78p16Zy%qd%azf7Tzm??J!<-TpCz*)nyBhhaf$BvgVkWY^JIUTzQS<?iBR#sitPAJm4ZTV4|k&Z-{XQq+uD{BZ)j<0 zsS1P~X_v^~c`e^#*fh1)2m|@q6pS{rfV}U9xoum0WKx~0L_uF{i>``{nMx~%1J zetWh@qoV2I_a8v=XcnAA8MsH;euBr**@fWj1d2G5J=sg4^`J0<5)d250cMnm9FK^P zpS84u7=CoW1%p{RI0&hD1JG4*p`bk1RPtr9;=)2luzZo@b=E?^)cwI!`;H$dSxtny z*VvcgKdnvCsfF_L??1G)Wyi-m(RJuu8|^R6{)=AgMsg-#d9TG>_T(Fm9AfgYH^uGm zQK*rT0TimI>#c=t8_18z`o4QN%NUZsD$0E6EZ7j7gg^R;qCV-wGQ1Q*w{&f@Ki}-H zkGGeW5GcNMUCkV?#Qc2mHqUqMzPk6?>igYJT-C2+|i(LezVEnTvE)%**RpZ1z_70#`!~^ zYNkfi0pP*x3ui#%hKbqtLI}y9=12U+y5T?^xU?Wp7(SS6u(+q^-R$2yH?_1}E|by6 zIh5WsVPwA%Q1AOk2Mt$zkPw)hj69J~&mOOvM0d{J6J74tv-K3x2nD&<*}J6_(V^=J z_Ur=jnnwWW{5O}xD3h3pkWz+?`L$J4RDkIn{Z{9;db?xRo29%QmYfXGCm(VBx}r&Q z4(-U5$?$f~XNjdlM(hGQEDKL3&Q;7hc>TjZD;IN$E z*tM#QBzma`9h`@>w6yMEaKIbOAGv^_j8lKc)D~DQp{RruTwGKyuZlkD7>of(VP~+O z^jIubZU#(RQ6$=TVj8e-v~u3l6s$`IH5M~9LLy}m-4IsgrY-!{pQT01W} zkCi>E^6RX9mfjJoIf6D*O*4jTZ?ymDYbq=dkeBas6caD^*MXM;26AMEEa@ZNm4R?D zmg+s26d0hB%t+^mY5b7i@0f%W6;bYjs!v5IIo3{f%vw5z);HDx?85Ks$wFFB3t-Ph zJ>6ks=duCzMg6cqd081Ke<$Ih!cwQ!KW&-i-q)${(6Fm?)Ol1OZx?F^UTnCyNldRVx1nuFt|u|JK4c;GPyFc z9fgjLi5agj6C1wI;icKuNCtXx6bv$~U+_d6O7;ywnGgII`{YAQL`C^T7dhLwz_wGl zmj19d1zZxtD?QZR%`^i6Ic~6E3vzG^4Oe-6kz|c=~ zfZH_zE9ybS6jCZ?^{&24s+-k&p)%#*2mr?}PEML&#WJm`QV8?ohz; z>wv?xUpOSK-Z9VBN8R-n=95r;fqf->!i3| zcL04%u5m+Mqxcd*KJvF5QXvVfL0T(VIS{>=5w>=JJQmA#8g5T1pmofL?L;C9)!!f2 zj9@-@?(57^YQWk~L8!Lu?D&mM1fta*%ird!DGP0GD6=*4(P^{k2X zuj0){+@T1>b;HAhop~HqR%D-|tk-Uu-@O*eQn*1U4+T)`&!+BL z1@NC@U@Dm&tOo(5JDz`c=W4`O(hX4tofqv9HyoGe=Wl0|v%G!7g{t9#zAIsjZp~Ko zu17y2FUY&Aae}ELK3gKKu<-J)gIIHroZA9Gjnq_b6we{DFK0OdfMF-U3<+xFHP>Jl zfQ;*yuUS6vHldfyNJ|rT-}pLY#&}FQg+8D`DnOY_Oa6#-xUg+hDkuW}bbZnwd3nwN zZTIx)QxaUPhz1mafd&rKyJi@%9jr-YKZ$$$dhoxv&ng0u)fi7SJ}k{;fodYK!xHRg z^Ai&xf*<(+PK_a{a@^i+;M@|2ojGHL0g~H*(JAKLm7fL#PC7lwVbKCAT})W`1Rx*v zn^sdHtL-OUJ!S%6jMuYz%-D#db*^d<%H_HF`M~-Jn+V-EgPf|jY!{YVHM|@nUYbvR zebkwLZ{jNsJhQa)?pK`se}ma51rrs0Ay=E0pdgXk1upN|< zW;>FN*DV}ncrvh(>gn|g+ybK6Vi%)YzPWWV$Xhdi#zOb=v(h=JcbR#_ii=dLRoQ-- z(PvlE`ecuccsRBZk#k1dJ@<(r{LuWr~ z{z0a8=cJYG$fysnin5ihfKKu=df6SIRirTS{#6R5y1VH)mIJ-Lqv&w1v(5Q9Ep}qm z5mEdBoj#V>Uj3&zur7}}K`d*GmFl(2Z1UIaX=dtt0FxV8a4G#|zPjQED+n<(w*)XX zvZ4z_M~o^}1xzRG*2QyTO$BOKPKIoA+H{!bGSYBsFh_hA+jBHBN?5yW>;h%DJ2hmk z+MegQl{<%q->O@$mRvXzvHCS4!zK(`Ar`@@6oYrX&PgAJp8FMuVU$b~xAL{kha|A{ zr@7kPW?oq$sQ&cnkfR`8P2Sp~<8fFiShFC&dalv!zb`k>?Pb0_gRX#`?(Rp6NA4vOI43PvVvtTZ@SS=B!kfF zd)n{CO7*<5hGsfkZ`yRsew{i#p{EStEIWgA@f`&$(lGx#6`k(yzxC*lW0uP7eNhx} zNnT$-xyH7tTv_?0a@j?KK3i&u&dwEQfk<`sqq9w)@Xi^Ff4)fs9#U zCL>nqD1cBYC&re>Mq8Ue49^7zzS~MlX56~k-ZW9NAzEONF`%irAR9 zfHqFVH+Gn%2r;x@+oj};`T_lKJ#cI=ODI`bOYv>eM zN{YF=KQV5&9TZqFTgDDLSnO8BCzj1LW*x5ZMk{=fWyt)J+^8$3DKB4pJA9#L{KFjf z%)Y|U#tF2Ou&GLr(PCy4+c{-ap*=)sK!L+{XAGgQ96mi zfq?;#2cnJ{j0M*7CYw^>$jFeIM8SRAK)gnMM5nolUc^x*W@i23K6H3yR*wFlC7nYzL&cx!7@x^|A6^Ydsr0J8?Wi!x^z@iYxubRHI zY$^os>AWe&{l0wdFv}w{YKkoN7|Lm|tjxVWH2f^J1!`WzqMKb~D?V_1rZz1-@#bv3 z5`Pp&+vk5gyWGf1k2Edhy!Y^vX8jsk7Y|$}fi!(me@0;zSc$~M3&cmTMt7P#P|)av zYb3TmVsL!q-2UiJ z!F3f=smzDTC~o^ZjzfO~5p>E$0oAz{!4v4k34E6EiWxPm!%eh2%Pu@OFVR=G*Jkkj zjThZvGu$CXX*st?Db`E&ZVpY0Qrj26105m3U%NKzmq#BtzA7#ey@OM8;J z&)iG?kqaO`vrwgf-l^*kUXrVNoK;Mz2#J1YHe~^_WlwaR3W>gq@ZJpQg{8aKby{Ts; zB7Iu2x@u*4Ts=kYN^N3$;<(vrol_@xUU;fxd=pxC7-R2rcJ1LVofi@o8n7b zi3{~8Dx?7Ep})UKEs;_y&Nu?0x3`x>3!fz^kg5#jbpjzBSih7+uh}w-^e(NF{-It@ zpn9TmNnUa4FAKvdONim@^0M-g+nHM*jFpoyx4jIo;neIz5z2TzyK-O?&rm803Uq1J zOB001N746tcr9ZcExj%N{R|&TRiUnIKr6tbq;IOGdxwV3SgL|{qK`DF+sa&s&XAJg zwaX}I4nWj|-|l!saEL84*LV&rm|OGLGV_Z!=MC3?x+%@x2cXUifr2K2u)$>n>rp!k z?8NJ_!1jmfUB!3M4^>s|p6F!z*}Bs2I;>@2=vc9(kY7CqB{ove%#VAMJcf4^~Q1 z=$R#w?mh8?^@#U=|8UP0=-R@}%F4)qO003b>Y%=?IE$#Pb9;U zF0pnDtk`}vq88?&>ddfVCHXia;NEQfCY9HIJT3Ss#eLx95F;6IRh_W}E+}>C*Ogkc z+HSaf&4MuUW&eFb-%ipFWU^f6RO?8&fK*v4T_ zNG54%9>el6C+A>)=ql&*ToCanMF0$@CTBr@J{R*_9EFKgFHUO0{s|HkoBFjg7ITIe zphC=-dXu%n_H8E4$R;aNP~aj?&vy9Z(B{%97sXybHy@|*t-RR3_*T$>#QO)6NpL>! z;z2(S=r|;qMY5`UAfO}05Gkj`B(}6Ou4*E}^s*E}@%U*uebq_%Omq@TbSuX?19ElC z?lGrlyTXFQGxQ@P$44QK7txOHoZfd1ZcchVe_$HuNyh$QPGo~APrhEKv6KQZ{LH^} z3L$4`xHY?Pa>2^VPZ&o?2c*encBc3)puFAAc&mccWFCc%g{Q5Ikt3^n^2?-u-TN<+ z&g!qKk^)-);BzB|l;$t@z+4!#|K^^71c2M|uuUW`96=&CK{otObE3vXZf6QG5g{QI zzEmCcP8KLvMoNE8`tiQml^e!SX6|bRP|A63Y-RolG~hp%`b}acW1xE!s;2c_xt{M- zd)L?{Q+XXYA$JqIqfnFQZT&;t3)QZGd;l95sQBJxdHIt`?H@hvg2d>X?JRl_;sIfN zeFqhINj}^O1xl)c3fYcXHpa+{d+&eF>=zw7$Ta*AUXUbBWlYUV6f$8vhp3ejE)y6S zjL8{zcQu4$$QtEAVL@fyHyK{_TBAdOTtG}1D2O_#fCg!KWU;%q-gTyZgOGnMjM2nD zD}NZ2eTbKluO&OL&egN>GSKaMi$J#Z>b5I_}gYvo14TmJnM;?k&mx z=iaIBy;Ep@Ebl)DT3CyZ>zVu=rKSiRh>7PineNHdp|4J!1ipQvE)bX#e&ZqpIW6|R zevsv+BU3(^gqt-t|EO9k)esb*IUF-I3i_t6-_)T4$-I9_d6D8lw%{qLT10#XpVsVj z4hGBHu^WucyNr@#Vo73R3Qq+}p`c&_?A`o`B)-oiD-)DW8rws?=;cGaG{q9_jT~bo zC$d%DU;UJjhzTKi&{iPA|Do`J+a!5ALQv2TA)9-jk!qLmGFdbu`O@vsqwQb?x`O9q zmJy3#dxQ9m8c>}V(!b;w9wC?PaOpqfv7S1x&Y+Xd$?1pou+-K&Pa&9GSqY^(#N8{G znVB&0TwZ=;a4?1^qKw_y&c179_G{QsfnSGmANK(kN1ZFO*(^WGX`*sxYbLB{3AO=k ziRz;6*;$GtI4;9BARt}Wn6uHG(eliVDLKofi06GA1%pMMFLV>L(p0=C32R|$-gn%# z`|`+Jh4^?z>nj*0kn{tQxvDIvy^*f>&wn8_++zOxH!~pYZK<>fHPyK$!USOq21W^yS>I# zy&R`M^9fIR5gL2FjHYCZ^_*Q{eSdpzdb3w9qsPAJg733ydRTTk@7OV}&JT@x+0TrM z$$P79Hv@cNvCQ6j7<{{GZj4LSK+?HmJ&{Wl%AtgxAz@vFDEHj~4ggpw!vmuVrcvZR z#c5*vGxG(%nqHS=l}-YiNq|n;SXgo<_2xH6vBJ93Ngy$szF{*}Hz~5EE2OJi`IbnD zPZZi-GsVjkcAqWnoyUtO#k8^-DRrY9)*8Yp<`>tYZo6Z&Nc%o$YjXjnqhh(S-*aTQ z(hNEG!TWgc{$yU=(uE<#69vpVt7eYi=5zUcoPJa2tcSvh>;(5kM~uVO-M z%g!Unp((r`6ZgfymS(Ss3fN{H_W}9vhLQcGW#u$9iD`@e2=m-*+CLdo>DYH^4?Zt} zEA;l--3$wJo{D!MxYevg=)c=p?jbCHw#^%i65iDk*-~y`f^6fj9oRPEfv3&yyE%p<(7z~DG zCI$dw{2QdyS^rF+&~WR>l}@7m?DBTSd}_p;1gtT7BqjP(1oxLCUX7{685pc-$l zi>ptrT$}9PKS${zw%)_u&d8Wmy3a72}@1JpO|A zC>o>@KK3!rzCkZ8Nb}_G^!)te86LY*_Rn*jy?%ksi_RU;CCx&ijRy}ru@$IQC@eY5+feT-+dm7bn?oAT&!Vz!mLdj85Zja|`u3!Qf< zHfxooT~6gGJ(!?w8bt@grn`3U4X)5~>V0Wa>NqWYwfZ#gsYg+CMf*{kRU%p0bl(;> zMLb1jJlaIpqsBHK_|N}<)$CApu_YbjeIpn2QX$*D>>j3jV4#PE*;2ps-YfG7 zhXqPz8`o?5b0S1uCX+(HTOG-wBxhpQ7b^93!kf0S=chFkG8E$*;|u+_0=nXs=W|-M zp`Ld!5C%DS{l(#Yfvt$=M=vrj&lzHjEw|f)&uV4WbS)iIy?<6Ib`g5BHdVXMB^oxr z;jH^?<>l2|FGsb9lUGAZ)}2{G%v-<)Fse2Pv@ZK(LHy2l$osdj2JZ-<@qAJ<^YZSd z+y&{Y|6Edk!}w9yd-5IzGw<*CCT`I8raQ$sso&tCIijPwV(#f+6%b%Bt*5K2d!YP% zIJNCjIkBCP3a^osYws$8(I;f|2KS_o;45QkJdz$77!JTX7j0^ckBVQ>7iAdTxG%#U z>n`8=8aD0ZeLb;^iY`V7kydiOUt6^Q9b=nEvc#FM%nyduXE5XnJF|y;JC^kYJnb~( zZ{S5o=~fLZ&Yh=6yWClREi2f=m*RJN^x)xrQlCl@b-sYbmZJ8Wm|FbLr5C{#BcNm8HTh0XQvxP>lOW%mN zp$+V(#9AcYuRQm5;<%aj2A;e@Y>^C=Q49r1!qh>}B8)ERO$nXF&nMb;;rk=?@o{yXt5A zbrIrg?Z@nG)e$OGbh_dl>qo=|%N1uAqxF*|A({R5qjecpxArekhP-EZBQT#mi;O2+ z-G0=+qP}nzz91&tsjA1k8)buKL@H%DrxG*cu|&az6d>k^nI;AM+=`La zp6X;=TZDZ2$imwkU33s#Apm0?1Uq_7arvFj?Rl1FpK1HIBVP3t9NuM!a+Fy5Q1Wz# zWyIrBr_pe}i*s%GMf}$mX2E)k0@?)w*0ZhGJ%_iHzb&TuOS)<0^xN=L9D2yIdOGq$ z`)vcLojcZSO%xxrYr1r6JtO-yzgg{wqie%oKOFa`n><$I%P=^oDY9xOxI@q?^WJZPCLgb?mej3@@9Px9*sGr>#UAC@^!$;~6XE|%ej&~(kPaDKD)>yE z$E_NVcU}`L_}~$p(QOa!aawp;I(oOVv(%}ZtI*PD1DhT zn{RRYdsg^!dopqcA}-M-4#OGtV$$8jz6F{%6c6)z!d-6lp6`@6umUS)7Y>$${%1)i z^O?SBb20i1a-`$dEAs~r>=7SO&FSaJ>ywhW;!OnJ8MGbF?8b-u<}xD z!$ZZaV`l4nBPBGn_mw{>4V7!*fn%B3;1)U1>ZlVvq1+ucEf=UCu;Ki=B7ZT!KjN&0#%Pt==^pZW)4j)d)wk z@1K^;k{&-~71_qr85(APuoNX@e-o3DQfLirZH^zSbMUjO`^n>uze$2qI}_pe)IcSr zpdjl*?c;7VL)kYSx&-0#w+dEE*I0<8Nx0m!$p^WdZ;RPGadT%&V@E|gPJKYd6L!R+ zcJ8?g;U(-HMM?BkMbEABd?+XZ5M*3RC zIq4~T7yI=zG?(WdrQRGx#AEw*F6}b$ZTAHKeOk*kUCwRef&0Cg35&yP#@VAx1l1R7 zZ}cIrn>%mzgwXTv=01%PxIk!+6Lqns)jC)@vLW6bT@Uc60{RgVH&cEA(8F1$p>70kzU?U?UWgfSx*aXKT3oED%M$C$OT;_{7 zSa9T)g(h1&;n4xpCo3~lwNKKA5PbSrbEQ46>PNG%1%!rX+B!uKb<68f`sc9WnUH(W zdWY48d05bhk=j;cKBW6q^^3}$hUQvU?rY+Ts!c)YVs`;k+{dvoCVfPFj&#*W<#HAg zieL_N{hh3YSwZ)fDN#{Tp)+LjJ3+otd_2gSUrZso`H)W-4=j+S-@X7WM?<~!Kys;`xBWzJCKC% z)Vt}V5cS`WbuL71_>lu=P>>>h;3?$e>bH!ROq7=CTr_T73lvUA--qQH=vZkY{#ZjX zl<^)ts*JeQp@V|=NQOKL901hq`$(_AgrMfuX+Pe>%EZL+IsP)r7sUPxg}a7T(`ctQ#50el5{)q`uc7 z!#$3RseON&RN)}qB;odip(U7P!dymH*1hz5-{$tZWMEzGXMZ!qgGz+ny7O49A&)oNGC*(ub72K7WUnHce4BbYO5` zK+hCnF+tSs~4_Zxx%KMttXG4fhw96ef`lika5PshL@ zv6tcM1Y){}c~tFd`eJ0HrRNmRG}ypG7Ex53dq;m;Y;AUS_CNFSSqM1r?SX!Z;EYiC zG0KmhRjnBo^}#|(VpHJAY_$ccPN0>nTDh-XvvAG6Y+bNd+O3^3)e~uE1w&LPc*_8u zF!=GWWC^7QcI%%He!S6RnSP}penB9qu_TsPZGq^|A*++YT1VeV(c;x&=Hld>H~8?w zi-=Kw{|{BFDCCG~x8E=G+{IQIqRYGB|5WE_n2r|xapuB|m_Ma~^yECU4S9u@yQYzH zSHJRk$3m1a=Rcmm50vJ=DKjvDaOi-H0Eas=ah12@<;&yAxdp4II@i{Yr!-tIE-5K^ zeIDh0NNFlUZ_h+r#GL-vuA{xZr36D4Kw<;*bJ?TdCN3(n=uG2L+eY*5WS5V{z9pRg z)G+56SHcoq*Pph3i5eo2MnQzx!>rQW`dh}MY$h=L0`=okp7y!t+IF#XP-72oxFY%I z@dzH@y}s)3?8M^jt}TNzJLll9sPT^hgd^32X@|31Ka4kL!S(V1NlHXd{T$W&pwwe^ z{+T;Mh)ZI~k;kII{Q(Asrk{mzs6z9q1>(Wf6is*7-F8bs7G&14^py#UBgr@uD}i}M zQy2Ck6{9Deh_i>z>Fh(|}bD&%}LWH&cVZj>Kp__X5@5A4dL{yOTB zns>Hg%ceBDAD7O&TJKXw=AT{GhkW8}TT}b8R)dHS={RnGLoc6&mS^|I5S{qW!~2gK z#*$&5uS;$r1EAiirq3SXi!pM&t!3Tou2JK*V}f%pGsA7vN#`q zx!ZBvH5wcP?wVrpB`|zf-lM0g^dvteo5UE;HD!1S-;JUCs|vT*cUEgGnhBb5937dm zH(O={%RM8UF{l%A{+emY^py%C?0Vk29A0U2emF{&Ma!=(wz#UIZcR#e)6EX~q6Gx= zd|&bH1|I(V8Vn-e+Cpo&4ys@UO8-@310rj+Gv2jeuQj>+DqhlRX10Xq`kLK1{p2L$ zEtS2Qjzl|Qfdt!EAK&1#(+o`MG|fChO8=J%>Hf3#+hRXBhHlqoqTa^1e#dk2D>y~O z`{T1i7}+pyld$R6QHrdRJkB%hZSe)A=buOwN3RB*yfFbCO{*wwa6r~=!y*YzH2&On zSDUFGI!AW&H@(n0vQ>FkvJBmY91UL0+R*CljqH|ldCxzwb4NOw4j-bdbSlALk;aQ&=m|dAuh)LO z#<&6wGusVv0iKf0WZlB{BRsamd7=l>kM8O`;vQ5Fe|FK>#QM!>xFLB?8STs^+Yxt< zs@(?&CB^5mkW-q1R~_1?J-5CdW}P}w4BIkZSJiaNq1*4HNB4dtsJ07u;_$0$6&rEa zd&-{2)@n}}ieA1J#POb(z<8sV(wIfkWYQqiIa+xeC$z^)8;Q>lb;B)32}A7ob+B zw_Mg!*$dnqjdv8|OeR{^62q*+^!8VuJ8Q5q6^!5{SG2gGLPJar-UtEJ*ZHfBbK3o3N%iFVteHbO75 zi|)19NGqjzutXJoi*hbZ^}^LodusIZPd5+ojjJgUye#;=_1#wwOT=BPO%Jj_bpMH% z_iDcs>y_Gb8L?*-xjBxDGwgAbIZ$N4GoQ) zvBkuN55Q6=gqhgd+gq^SNWvX?-^5kA)9n1XL*Vq*-1zvT^ua+bzn4OK>3qm#ZJ2s% zk$ZX&>y)5?qg%%OKGQ8oKNcIjzg?+e)ngsSJ9guOEtT@kz2fGXOXe(Y-k7(q;PH&i z`1_gm4A5vnsTjD3UEd2qQRIwQu3$zYR;l-obqLe>%4usi_B+%x{7ycRndyV(FELpB z8h+Js(H?hfVZ2td`AC<-u*B+!Itr#cTxqYf?>;VaC|+OONil4*CjRff^3OS$xTxC3 zJyu92pK~|sUZ$mTrJeHfv%Mr{cFk2XI~AJKh$m;A-%P%f*sXdVyl9 zHz3$7%AK@jrfeFRX^7WV&*j&GYuk4|c@v6U+jShm`Jb=kN0+ekr4cr=(<+DGE%oQ9 z`pj)7{N?%GXO8?IE)SVcOsHtYUEtIHV$(;S6fN^QC|H<0c#vyilG#+(fQWfysn5ZI z(!F;7Hf>?8XVXg@8sPo;&IMQQtS!WfVgkkEsW0B!+0@%^+cqt}i_M>g_Ot@`Z8OBn!O43*s;MnpT4j349m3v$pOeW&Vvi9K}XCN;AaJ< zCqg)o@)AzPHQR<)Got1=zBC{_^UQY9GNgpO;A52!b~}?=qho>&iu&7a`n*Q>AKvhH zt6Hm+5Zo@o&21tjr*#Fz50a*Feqjja{U(l4+K2vI&+#uxSs!-RP}ey35W0@%<%!iQ|E+fb-Dc`PUugAgA^bA4G0 z5y|)LPG{!9QUw~<=eV0=g#YkLgSs!q%R&WLs*062&6oO|zmxyt&HwIkl9BCfGBOHG zzei118}aspP%uGu+#(cA=+y7r8JkYU;qhOsrmjYxlg1}LcUn-T`Fm`Ny3}!@wo0}B zxm!Ur?D5={eVtL?Se6O(>k%2=8%Dj)E1jdf^LifUkYl~49&)V!QH2;YZJYP)JxF@t z?)}j>CGA@kNbw=VlW^rVgq6-lYT23r$!*uKI~uCP2yLWGbsR12DVuFdy1vQ`uSXNL zf}%C-Q1L273$s{*^Yq8D5@(7zl56sf4_P{upA6f5vJo}q9mQi9=EZj+a#{<=Ub#N> zayOpP(84%xLzhW`&Ca*h{1Q%R*-u}eY~_j8#52>Cv)O-}rMfc^V!v)_;%=I<`)b(s zo(A)5DcHGfS$NE77)P%@!|@2SyU2b)0NxU0;E^pQZr%DeW3jJ_j-`7?uFHNgd8%Ps ziD~(=rY2!SzK+czSvt8cPu~HiTkk16JVZ@B_ub+03Hq<`I#GG)(Se9v5uu_OZDwL( zve0A8Bvt^MP266tC~ts{h+K&N({nE>eA~s&4KqPmaf@Hp4bO~p9G$Gb;eRNVhnUuJ@88^=eOIBWKT!3@1^s-u9{)~xIXl}G{lon;v?eF+jD|&`_iDdn@84zjSp1b z{e-VWeWiD%wK{iV@$AbBUF@mzjjkh=i{DDPlyVWf3I(tJ1dU-s7sP<(NDpM!=_?YUPR+rx4>a!h=cERE{SNZIiXp{1tMqf`NQ+aN~ zFU<$Y_bBBHOtL8UmvQ0|b)!>%w|nK}gn6b0We)vyhcEdkl;-SyM?<+Og?@3q)lL>F z4A_xf$DEOxcu)JzG}TX2kH_Hw;dY+D?dDlhIhEKCqF&!oOYL6=(6*vh`^ z&nj$&&O(;R%?uJSb|cwzlMDq}8L_sX9{tUfV+ za@tgRU(I2E0aGbZWY>_P?*Hsr1)uzvaL6jT0Fsx!^1^z>j?Sr%MG3F!B%i5mbls5K z(|ln&Mp3(`?>}3(cW2o;^kxZaT^~{GudwWEku}~?LI`ZO?=pm4r8m;{BFKcLeNT(2 zG5n7_0GW>!uHQ^iMqMjn+Cqe?(#Rbf?b#o{YhZ{hP~}2sM9%~gm@6=GCkS@IurHOb z{W?cO_WDlIt^24hQL~SPx?l00Ch(WvD-822*eRJQG0~Sv&LdpfyR;=SSgu)o!@NMp zUi-6NcO?D8zPvSldzY5o!kp4?nT>anwdh#-O7`$`VJ$^s_76R8rm|Vqwx9-7{jVCr z`5mo8&b5Z}u*G`u&D35PTQCyIHFF7d8I9jFD{5orH&ohtxGjar_}KRB5Ercnjew1` z0%FGgl3UK_q{A4M()IoXMgJs&agJGn5(EAvho3{;WFPaPBjijB*)(Qe63cV2ViAt) z=N0G04X?yp;J2R{07A_Vty`g8A^ju>fO9$4$m&S~JG?|A&mbg$ZtmDvrm!NjL~k?9(q zo?@DZoigRve$cUqR3)X#2drP{D?jk-j&7>R)DKOlB@54N(2b2&E9y15!0^X#l5y7r z)!-$UL7-|a)q0c)aPoEch%FTN>iU-6eFNj2<>IsZ^WqO2g{i)6Kiq(!XFPFVpY0X0 zvFNO;RlZG^pQe$47B8;?gG;@#2%PqIus`=5?_4V-dGy~1w(UW}$bH_88SP<9C8Z(T zl|@>PX@cwhe4gdN^Y+^GuE$TtC7EV34JWJmz^!mx-qv%fNz#=24i7aP3CQSYiw@)Q z717prUiG=aMc6&QwEB{7YR_D!WZ8V6I$orz5*WOR9BiYFOI_Y&lZtN^eOtmky7sr( zlkdjwn^{0153a0B7HOz(>hp2w0 zdYc_n%^HjNewI*-q(xXYOlt9UUm`>!&H(bq_{Otx$+Pcu=jDr^Yf?h_(IzKV(yvH&lU#-M>sOM-v?z&cCjOgX14=x*u zai^g#UPN!-4B$ou)xM1~Sb%R|csQN^uzy2lJqyi3v2cC=gBr}~cx9^wH=~^02qZm* z;eM+X-LqS(X_12K3# z{9t}9?F%@7Td1z#!G5Z*my@kR8{F%U??-QPDo z?;a9{rtCF>k)GDA=W2H$QiGmetvouWJ;#h zDa)fzOUTy4UL&>K+)FLjD3?ZD+*MOOJ{6}a?@bP=23m-wCLT_mc+r8lgMk~2Xn8LV zewa91m~%nAuB(s~W{LIoW-q)_vpX=ESrL(uAmx5MA?l#i{gc`{_~mgv@1$8=vqWqj z51;J>`{>?Vn=@bX8=jZKk*D0sRd=J_Y{E>3g|QPYDmByD6q}sxEuPtg)>yv1_`g*{ zILh)cy+FP67@9A4sja~ zonL9qs&#^OhuO|?U2DkgrVQE0N+1jgwio1MOHW1>3RnVX{gA^$hz`Gy6r_BS(iqB1 z{=&0X@df`Asp>Io@Ks!0q%>UpRV8fj0oA##>=_?aMP|>{QEJJYFp1X{9<^A{fdHW} z-1V>%t`E26r(a%x8eUnAJ|gX@)xDzr_5S9{aE{(A--8}AhSt&AtgyZK1TP~+TKii9 z3KKf)jRi*g(Q|emKt(w#Ak5k?_@&z|gOvLHp)#-hx;(pw0Wk*c2U#SI{Wtdc4GrB( zNDzttNwO@Uha^2Isk6Rbj;xjOe;Vhrs@{{sF#mR_UU#Q!0QMZjZI1Qz?w8Mu^f9=l z#XBstGTagc9toMJlKo|vTdC{s7nRl6SS*NO{j#Ru&y}QA3}*^sU0-_`qGSMG|U+ za<93*cLM6oR@Jq%zLHi-8Pxnb7hBCdy4&S8Ppg}3X{u(q%`;kB|KRKFY(Vm^%QgCh z?&q?S)C||V9OssnqfSAfTL2ESkkw=CnYTG<>x2;o?T!wsrx0jPI-obBAlP<33MMxLUn{QKFV?n~cU zTDtOC`VlYC%UR{qS!0jp+?K4nO6@c3JJDsX;`@h}=cF-$b0ocW5&{ODFv4>*?p4fk zuRqzF>{HzzCeR4Am|yecwm<)cVFJmb_gijgwQj7*1T-++yw9%AJCiap!42I6i?b=sYrRt>;3RVAW>l;R^XI{puSH875 z>1;Hy`|P6A@TGq{DQ>Q!Z!Xa0p&Hp_7zm*&3}0e%+OtPIcF#VRYBz#=v)%fcxy&^o zZRx1CGCxV5_a#j`;RAUm`^x8wj(g5N#!0y>ors@Q^Idf>CV8GSsZ@5Ow{|tQB>0Pm zmS0^s!CDslH|Bl9PegeCa9I8Izbrfz6cmPkWt{Kn_~*>w|Nc|6KrGhkSY^m&eH!`x z*NZ*wHFx<7$*?*9|Gw^fS=nof0VC)Cm-nnQU?e&3lqCG%e`MJIJGTG)33bT{{(^%2 zZV6sA_g`nifByPEf3Ed=#}5t+X`x7zbzHi`tvfTA22^OxB$s9pr6KD?K7NKzN%6WCj0dUw|Zp`s>%P zadC0yd-hLX@1I_jH@6=va$ZAX1H(fd7AGAKxE*)sEW2B?w#v=qn@$RaJQ(CvRF)<| zBnkcd?ETNFIQiM*BoZI+%a6ZA&h)-ob8LGO_a~k<8UA>90*NNFNJzrCczMChp6Xli z`ls37{W@0<6N#`NzesUI;uBVM*6ngTqr!du*ZQ&(;Z5n89 zuZTMuT@(xGlxf>qBD+~*W8(3bl%b3ii7eO9!2Ih#Hd~M!mK{5r=~bBc3P)U|S>9hW z8Lg|cKRY)B{N}$5faYMKOl(_nJg-K3_D8_~YUuJjb8@UxQ*{pyOE3M~Dyp;wB-m|h z#|TfO;O$BK_fO*JTHD|t%RvM}Jy+@KzwNHC`#)RZloHpz`5n2bgTN$R`G{X<_y^;O zPqLtX{=91!S8_wh_uXkb1+SyaB>Eug_u9Zckqc}biw?s?$P0b}Ckt6deCLk7t1B+- zEcDXp`;??)Q1P~aPu!5c4X4yA?Qfd!LdZtE^IsPals!zBIkFou{czUc#=lr(l}L{B z(a#J=Nc;yR46O*Ijck&y$Aio1T$KOOWT45fBg&ZEe_`h(u8qUS7gcQTh$_JeL#y@(<3 zpv{#Q<91qoH~g6(p*!{tdUlYWkMDK*)hk3qnEnN&zs2UYlrnD5O^3RgJEa&rNKbb* z9^oBGWTtX{UQvq^1OkB$XL?>lY^?}Zx!~M=eK+HH?ZF!>Vfoe7Vo#1t_iqi}GM~I` ziG?IyoEE?0)ppi{szK{H>7s9UZEH;QboT95-$BLOdP~Qk>+LKxKg`FO`S^atuH11! z=bE0p@lf~ghUUGE1sad=kAK+6lePapzk9@lCX6!`q1=x&b@>I4J`!W@kVSCWWA?hb zq_wo-I&kq+rQ;MCf6LT|CVIY4-K61r{BQ4xcS(6j>0o!1$~WhpUsHk`kK^jQXhx9J zqGKKeQkpnKFOjoAnNe`eBn}J>c4nB_Kbl=X7!i4ve63*cj)Lu zi6|s}{SKb8uA9Vg#Q*+HHS5wnAsuH{Qc`kKhs|cRjadOx0LlZ4AD`}`6Q7+q<5u)q zm>_f$g<8KzcwbCRY;XLi8d~tK1P)i9>x!#y@C zDP^h-wiM13KRA7?6GmKI2AHx(lBAIQj0`TfeKKm4_1Yu>KE4+VoUKN+bmYI*Y$B~# zzxzW^4<09HE*|vyshbPWA{TTD`{>Erf}QZ(ZkzQuGezMvUkxT?ZyJSuk3}1sp+d%=X4!`ya(CQ+A1Z+9UUCJ)ybK8Y~TzG z#^crM4i4Z^7z2toM<-RVl%l{S~d zgbl&jk@m^iY`l6KTyj}dSh&!?Fu1z<4q{W0$YEM_^1iJjMKkTrE6Y^U#JPJ*}`rO<30@(AVut%@{=vks; zVfxmG+co)vxz4Zfm~PaZ6j%KB`+~mYFznc+iKZn|Y535NX*gIb<^)?KJZjIUc&y z0ZYuxY@S|gAe!=Pl5;;&4b_o}V}A0WR_3p|g<1mpEt4)_B6$#289b(2r`v}?9tu@_ zus2TUn-dWhmYNzT4xGz;PvQ3Xcw|TjdU7%a5f#ke(BKK&*56E-#j6~Z8`}{z^B+GB zUrqEnsloY&8NtJ2`T*KNfa6FzkZ@~j>kpE$hy&vuO7>=ck^#qqGXKkz*8_`v_>iYPiOu~GCkfmZ zFcjC_1v2v*xJd2~A_9W`W1k>}i^pJ2K$=B~bUYuEplPl;uO=STe+&En=Mg*vmBb8j zUXyZXCO$K8gkJ7Xcipoq+CNyaZ+Fttk_8{s->;1=Gem3wk#fFy46t+Ran=X5-N&rS z@fWj~q2<@MzU_13G+#iHxsI9iXfSmUb^sK!4n>b=(auQW(&k50iS5@ur ztZB;02c)J^sFxV6o7c<$l<(zb+jl%|?;t@ZZB`9_HB-9N2ud2G0Jm&oyBE$Ap)%7@1-TS_dh4pI%W#APNwe*B=KI#UFCfy0ZUVw?}XDfLPQXqQ3Ey#?%?=nr(-wByOIMg z?%iIs7+ClSHiKZSE7b+Ga+)rb zNibWf-pdEr03VNy->8HKK)CQ`3RZSj)^2c!N=WfX2NoCur4(>+FJGMtwde*f<>N#B zIqpz806sAYJ~`N~F~2%7D|8wPn~-@6h2EvCF+SM+1R8C#KQCILO{kihv-idG(5oLR z^=v}^^yOCA_Q%KgzQ?!tnCqv>8dt<>G) z!xE44;;F{Rsi2{8_?cjY!*o~)3gvLwNfh?g*gVEhJtjbUKjxS&4e&rtj-*WY+j{iKmoEiL~LHa$fx0WT5hH8=004(l$ifZ6pt4H?!F1jol0f+g-2 z7+Ic8Bj?{;0q5ldT3XRFcuZf!Q?Fdxh@hr7N;H|B(|iMbV6@Z5-io_grJZlxyK9$L zuM!c33#VVjZkzw9Jxau>7U?uBAZl_|IW^sAi2v<_DM3DG31HfT6?glkad)n#Jx5{6 z@zvX70(N%$L@S*_hK5mmMr=lBCbG&ZepI0IE;PZfB0UnxoOR zg>=p7+1aDbe0yfK9r5mX_4CmI+Rbiu)(9u3imP}-9iZXsj}e|W>}o?$QB+8X^9eR* zsov28$gGH#s|*fsH3h}e%na4>`zN;U;pSN7)2rF_yHd86M=np$ygJqBcqAkw#$j`{ zn9=d0ovF)|l-(C8%Jg?uUwnGWA)2jZiW#lU##_C(ipAb$%ZOksGJAS^hJclQ(*T@) zVC}3AU0$4^EADYtE^x->=H?!c!Gk8PpkUsMY?gphU=>s8d}(6#U&io+k&(w@q9sp# zZyR$!MN7LKu3ELbv9Q&_O0+$HgSqG0ooh{{;~F7RQJcGHmP>f_yKcmqL;~Ocrrj286QTtc|CHu3p-G2b4#{F>ps0z*>@9q|gXC{6slF1W+ zK#+ynf|LR-lRe+Hy$Q*?JNS%^jqg!V?6*7$a^1DLdTI5hLA;ff)znnT9A}C#sZMCA$o{5G<1HX)O@Hgxu$A-(Wb7hZh3jBh3I%_ z7RicAN?nnKPibk*2eO7{%s-vCke@uqeLR8x_t%6KIky#dzBeI&d=Ek)FW09Nke==g z-1TRIN?u0B`K=LNfIZJgr-LHXuDI5Et}=LcPS_s&FiuAvuS^#o7Lt$a1F%XTJuc?r79Xh*rf?Q z;nS=r(QU44CXOd8^RYvl)#Oh@U$U35gGEqi%2y1AKxc+RHc z0p#qtgTJZ@JEqD)&`r4<;PCF%;!`R?)nAKXOE^zS@nx#;yZT0#yI8`z!>3U z4`ghY=EuK#u1wUqYB+pvFfGNesQ5u_&_zfo5Fc!{0So}EqM(q3z_-Pq7FubKz9aCB zOPJ3JtpjJd0RWXw&?cx{389rqPooIYT^?ovvhrxVPq%k(W&RA{+Xj+e2P-PZ?# zJH}C(hvqUe_GeJ2(-;kp7zr~BZrqJGBFd42m6hSq)KU~{+Elri8bP&_AOcv zr(dq!tg3rQz$MTmUQjdeBy0i47ZkoLpIpfHw1)-wki#`1Kz3}J{$cbc+8Tf6d473LTO>Jr9I0w<$`Eku@U-`~mXD#Vki^_< z+Vao}Apk@p9@TiSn zhxQLfuHc=v?}gTNpWcSS+>Z{n*8yTvEp-cviAji1eh^TEc-}NnGQd>oFlyzi-|T+~ zcd`xI{9y_|*dGpD{N=K+`T5&77+{0CV_UWbPuq_lyh)Yw`ef7d2MYrL@y71B z7~*Y2uR$!w@^XWB0E;R|IsoDLc&w*+@)hPsfWrj(Z4C#8qWg>ECDL5e!q8~`90P`d*tpWCT`5B$o z)>d{-_XvLQoTa7S0RibKydsqAwr1#+x;Q+u0^sLcvEaaFLW6C1kthv>3L&}&yXS#A z8Blfr0k5uJcUGPN$J}VR|^Z#cfTKIbd`qk>)hBnlQRWN*X8V{=#QL z;URCBo>?AU<@&y(JWzk8R#s+LRt{F6oQzeea}Z!llYW@Z0Z`Fxe5O>DVtxH;HUn8l zT$-Ep9KL7WJXkTXZc~Wi_I7m&UVF^^^5}5v6mobBRIUl#oB|Qrh2@J%8P`IpWAo=W>S*T|Wj23(O zoe3FLx5fbg@h3m{YY|L_xGRK5ySZM(RzY5rNg@dydJ#MmY`TgShx`% zUl;RHz#u3STh_2?j?0$VSyQMg65IA z>$wXXfx?4+B2zMgagtK}H0>Ypv!|JgZH-F{3V<~o?`<|VP?h#4iPhP>Qj?JIoO*UH z!Ck$0e&EZOuCqc7r|s;X*jPc$w<;y`}%RYxuymN9>f?r^W6QwV>&y! z>|l>bCT>@0Z_8BhkSopBc&zqZ#A%_LhoC%2a}n17aPZ!Ls<=ywQEm|*UlDZofN!c% zCnMyFp>wrDf?)VcSuozXu!@)%rNpTAPJVDlme>A%Js{k48r7~CvCo(l#!oIW+J6Zt zk_puY+uzDNGDKAh8Hd3P59W^kqQJ9&@9h2v(rpQJE7DLsOGk)>l(YG8qG5 zIX4Osx`G5p28hd#NfRLii0cnQYw%q4%1wY+)_&eRDgfd&JmwR{@Uh+f*VmA!qhon+ zjiLJDmI|3?ok3KdTxM(>dG0wLaHP4oy5_`$Pe?<+%`(CA=cCK(>w(?X1JeVhC@!S` z;>CAj1YLmD(ezAf8$LQk8kcKtZA|T(oxL!>;_fR=W?~36Cpm++v)(dd8$j_JWG#e+ zg`J#4j=kPGAjANMD^E^tST41{Mnpt-72TgI@x}KlrzsfZgp4&tZR`l#_gw?i?`Bfv zpgqp&mGPZ+#u^0n8ZbV2LjUBcE~7@-TN43NI$&F)`Jg2CW|)mM85u2l5|am@hkQ07 zD{y+CiiDJuu2NXcn2C9ij3n$92}yf$s)o9()7M;W9_sQ}p>L&g2O9?lsGs)aSLFS) zuP7@w; z0lS@%5pWD;-~q7YUyhAv_2SNQX{`GJT98&c*6p`fb5atJOelXjCFW0z>P0iain>V1 z(7K=+hKv;YlA9&Xnm#k`f@fi(&{lZMv!Z^eXtJzoJ*jGmmC{G9g9GztqSi|IHf_m$ zCZoeri8z2B63^STEo-%!hl!@jZz(j}NBe_jmfg8y*QCSAC(&qmxZ-p#l6aZkx6DUT zL4lMc6F<5@DOVid1Ks@Y?H#|NV6FG==-krQ=QbIcRPHb1cq8mFC`U&=ho=&xoTWaG6|A1}?@DmN`g>oj**%wc;S{pA)(nfWT*fvAThMAqVRVzp&veYoy6fvuG zOzJQ)FfcH&lYq22qhL+T*qAgatLj(>8+likNcBCi%$h&jMs^#gnLU}St3zB8%4PrzKuei}7?9XMIgf+3jr73d$7@|p!b`*rCV zIl%>OaQxY_r4#>%j8J}SOfD*VQD0w_npIXQv@b8N)Yq3T4_39WrZhNou-83cz$VU< zPCQ8$6XBZrkakW;>w8>{yXuFu6p+{ephVZZ1um;jSFRHfYXAWgB#q<_Pi6$0brb+A zbo?TLlA`Q!BL|NdkK8Cv&jr7b{WDM{CB3d~#)y?c&~Rsl&e>U&8inZUQo7_OaO@1& zUDg__?Z+Ur3@dQXWaFW?XC|Ug36nj-XMI_=AVplp^bFDVS*^klnJXSAztAnJsN|@gi zK_4V9-KX}26%?p!J-L&QRZ&xW&lV14NmUw&;cRVGQ--LitCpCeO_6+7#;yF1wj-&N z<;9+y!%IXy*Sp_pLwIfV?a&glZ~Fh6+M3C5hZzj@XTR z=8Q5DyzFLb{mB7`oyX9#jN%liQk#%pP>_-GlSg0PJd=zp0z8>x@ie{C5DOve?QZ~Q zh>H4!ge3FD^E*rXOesWTL%Bl{bqx&zfUnJA@C+-EhOpf&*?a>bGcdby<;qM`;NEv7 zz3d!iN+z*55#4T;06Ip-JbMVW4x&g^M_tS^%vlU`Q=&MVFZELe^dm0-C!ADM+YA~` zOe^KK=0ukH$b=tSzaQFfmqo!B{o2?tn$NVW+heg8y zOC9$+%_r&U=>a3%*C&UARTmZYb#?vV0cJ8dILJqBel$5`cMZChH{KZ9TXnF~jeKTN zVtcG}=;@f5jn^zTaCO^bal3F*7m2G{A0#$Z>_mDxuS2Vg~D8m|`q5xJ67y9|a72&;%Hv=yuIm6r)qe z?UWS9w3RQ&Sg37U%RD2v&+&`cmeO#AR>(#CD?u@bw$SkFQDT|(v=7nfd?~7UX17t> zrmCDAk4#GGBJmYTbuMft-&CU=rd0>gFA=ozjGmtFT*Y1qJp&65Yy}Yz?0&PpDP?Dl zF$g|&5NV^|K2aZnd}us38EHc%>l)R2?%Xkq>|wm)*F+@vO|$SJ^W&6;-OZ!?R~I$U zOgNn)$C{u~R8dJ8x)-J(wZ8VgC5Jx+04hVnZKRPv6~;JZX=f*gy`CF#oeB9x zTG~Gs$_?O}>RFynePeH?D{R(nG_oJL!qmDJ#RtqX2Oc%IA822m4^_<`{3s61CjLzy zFk4}G6}MAtXK4x2n&JVQbjN4Z^>7bmHs!tXvh4x&0}bBzr~*sFY_C(g)vV2!w71lGJD=bbDTP&J5EVJ0#zG?zDA@EmfQ6;?~`_ao?iiDy9Mp z$ERNuMORyP#i}cgiuukyj;g-E2cJ|I#3?RM{x-ACw~`%lDcB&$r<-DFP|tT2NR8Wv z%GpfL_e#pQr0+MYs6GDLO@aGftD*Z)CR^P1>uXs%sFCcZcKJ2pp~mfXOk7aEdDk2Q zU}-~NN*{kB2g6PDxqDT2^iAFDI{G%UKEq)$9(m(mER&sfGmjU;g4+%wdD!hfm^rXz zJy+cW0?RWK0jG#ygw~UXlp7zAlC{gd7g%J9@^OL}W@M;s%bDzC)HKgtvp6P_YXTd`c_@HZDgE2>)svc?}s>#8_6!0K#$)Aby<*9?Jg zPrvglx{S`td<;K!XCBh!rqgLz{tG#R{_>>U%6Mg@<(ZZeW8JrJ?eU$7#xslT_e1wN z^KI*SRN=eEk@PSq*f|nKKjm&qA1qs$Tjo+w^ozve=H$O=9yrg7j|*ovUx0pIia1(w z+8k3a(c6M$iAwq&xj;J+5#NNjd}1qUiYkIOTVYdnsDq>T5BWiYPbV`cXWw;%fdzAj z-Y@n3Q4(Sj7TGNr|7d^dUy+MV?|hV|nc0u`4l_ z0=I|h7}L|`wQt`QfHuerK!8Vgu)>*AwxPg#8lG?!+5(bdb)Ilp32u@i!glV22*2C?`4=bI;4~ z7xo_>T-Y#Qc{~n}j0pqOpzay_&3pr8jrUxd8jRzF07-#nPpuD;zkYo|)9BRiI%LOK zjvW#tqWxyo%I$LM1|QEJ+On|3SYrT!fh;o~=-HcL zT2>x_@->*9{`>?WZDodMuspVYO_fM{phl?ol6g`dYpcwm|3k@?Hq}gegbm-UqSAQg zu-Bk}Fnt;>+ueY+Yg{C88VGL76Fn7=mr)7IA=0zy2MZ+l!5H#m1+1H#$ zTwxW#^@i%DuTAe>OBGiS4-Ot)h_!kFqC-FgmS>=qI;eaI0sI2Ui!Sc2AAIvEw@_yL zv$LHLEv+CFRb%6BFfrs>c(QJTf_)oBvXugl@7F8LYEL3L^UZ;-3(impn5t-QE-o%^ z?p7)7%u=(_VE}ZuLL(B|JNAKAsxW+Cs)*}DTKei6l=| zE$Dvzwz7+BaYnz3QO}e-?Z$?I!*^8vctXv4{VYQ&=efZ6srY!V$Ni0qTEwKxxOeWu zj_XsO2<~q8m1zh#T81<+a#MHHzxVD0tv)HB{<|W2?SFo51IDL(!FPksq-1v zbvGHyTV^r7V^@3<)(8FB9LJEQ=`N%VFYn2;vFW+OCv!=7`<{0)eBN-{UzmHyBHg;@ z*4SQXnTfP2@o0(AaIW6HGUj}!(`o0t%n_bKc3^JE0amS^)!pEWoJDzhI!}`|WC6*~=`ifLn zWEY;;e(TBBxc4@1%!=;0+wmXsy+jCyo!F^Jt za~>_2@cq7=Mb+YYeQ6ew@$O3d&o~XZO$S_JCc-0Kxk~j&La(@gtNR|-D7Y#rpd*HV zO0X4~DnP^t3@bfThz>@NzTt`I~r&!VZTNy^7=oqpP$f}igz-5 zvk5N_s?;^Zx@WmvZ%IeG_9NtzUJh&?MowWsk%7fjYiZ_*jwT#XE0078gS^K1&T-!U z=h!k)>}~yZCc~KU_m@#@5pohj>9)-2pmm%1VH(Io5@#Ap_bDjP85%L#rjC!Q8~Y3w z`;Qi5Yyf9!K-cjhcX#qVL_Bm_%9<_xg<)H=NgI<6MPj}{cIi)h`pWibI6RJ92Jr$z zI`d@v8*x4|D+~ts=Dtu-Pbzfj_}11UyF8&>Fi%)AG15?5+nReQA;kItH*Ot>doJNg zDPsINHK10BS+b!~(TYa-{a0%eINe0#;>#S2){P&@H|M+AtH6Jo-T`*XP;O3>Dr{Iu zS{)j_HQY9T$ul*SoEPWSC%BF7Kmqc9=53sQ^Pw;y^6(tE72h*f4kRz8bnW>f83G4cog$IU$Di#LT zgw1mkZbA8Zj2o=knRUc$zR93EG_WtRc2#`zGy_-<(U2OlYVA3NbVrUIBj+o4LlNtN zrBmK5f_9oU&uB#Wwu`xI`cw>VA$dtz-sH1f`c*pq%lje9>zV6lh3m^trv8w?Fq%rv zrk{@&K1)$d|JE4KZ5kVG7!_v93p1ParW8=Dgt0L!2p(x*4;;5KQ~HwGH#Bm7+DDJC zL`Bccq*-()Oldf24X}i_wjJQox!VsN(+%JLKICkwsmR{ldbHwD`IG$_sb1>x4zNgp zh5N)0S1j(#cBMpS@&NhjgbGjob z+wzlLTQk_#mmi+=$)}!%#Ls@ernP&4ZAbe!KH~hkPcj4agesMG**Sv1DSalQY%wqR zAoyQxj{kP=e-Z<9y;0)T--A;!UmFeHtIlKtplC2C4lq$xFC^;IM6}Jt#uT!bbBVdL zv7G#TYMl-J;wJBNtE5vgOG}S?I>JKdnLgx(FYCZ78B>#ziUv_2J+f#c4W~{+#Eu$1 zp{G}BY8lnN?7-e^X_WIwQ#XM4r{QJWTvgd3-h2aC9RFU!hjW4`+adL{K=T5Pr2S-F zbB7^qv#6_(6{EQ$5 zbah=Sk%bJiGo^MpZ*G%3>u7dS`gKuoXSYUVVcMwaTfR1#{_Dl*pBcZp561pN&NXE@ z-39i7D|fb+%BTml%xO7)(#%}mj%R^$n)XpAmmD^PHi$#tKgB5yS0!FM7%vmY3=OX;2ird$zJ`TXxN_!v0 zk%K(Lsh3&z_Ux8wjGMe!HnG>eL=fFy@|7b8uQ^zZ87E8Hx1;)H=DIb)Ds%>hUL6id zxYSt0F9h!jcf02$Sb0l-!L{iJF4!LL0@?We52UL*eWjv15aCRY)stQDaldmPXz8lm zTtCLBX6wg0K6#F1=H(^E{~$=;x`?SxIScdFM zB5LZ^gztN#(x}pc*`06S7;nfjG)d{W!V$N&e>gVnbh67#lXnJ+t|Q|SvjGS?boPOh zl$*L*bx!{QvL07$$a-;Cv2%rcxx6x1W3)t&-B|72K;wMU=Y@_!`^DNC!C%$``#Rd+ zWjQ|mGQV<7vFSVjx1&!Ivh?THYmE_EWE(xg@I08?n|34S@7ki9BW$#Eye!I>tOK4g zI0|=Uk!MB;4|w{1HInwrst(M!!LM8mv88fELa=8qD8gHqzXy4q*LPR9J2)L)7lYN>}zW4XSK%s27s`enTs-;^)>RM1#l{*Wrx`h)v zFmTgpS8dFjxcvZ^3EiICN0fI-FISJ2!&PaeGT=BE(s^igIGps0c+UlzQ z?kU2@X_PqLxG%Y)#hSJuXO@-LE)W{Z_`2oiP?O>)6Ti))BvEQVND&L2;s)_7?}q15 zJV%R_H-(a`w;8ayZCM%nH_#&MhC>P&(a46>&bvF$E&|b%;2_Yjx1=7Cmx5 zFs@g(7tTo^-p3QkBWy_PkkTFo9!pVe;8<4->GH&7+`aqi65y68U=qna5CdV0Nws$J6w6z^( zR(4MJ4wQt+DSzY|FxrDI#1r47vvAqGg zLz}My+VRRq@Ql15a~Kc|Vny_MU0Th(@o16k{sTMqry8bRmhElrH|x`@*V|xMd-1=v zzpuvB*UPO(9GHJ|w^bgSk;<{8Ix}kfUU|`9Mt+Y!Z~g5(8O$(MLTEr~<%|;^>OoU~ zWTu3qPgnwT2Z7JL?NH!#{h+Y;g(-x5Y(;(871))q5lPwM!|D9d?7ek=QXh2AYD=54 z=2++~>$|2!F}O?Kgx&D!0VLI~=ho3-Oil?ACS@SJoyZ_~fxmd^`K>n24$z9+E|p{w zt3XRL#PFKTXrQg_sV@KCj)Tf3ZU=XH9i0#sWEOw@ZTItt3e{cVMzbqoDrHZ1KX8kT z%QtA6{mlim(B(4}rURG<#Obw^$wft0pkRd4WXI*`kn-ZS`9g!6l^PKGZ{D*sDW;xTNJz*_F z%U3y#h!Ax%T0r>SB{e9Izo5DN9&l=MdxUp+wN)a!x|>sX1Js(D7wTy{;BS{AIqkkx zJYkTj;u5)aW$N&mws79+0gh1a}N15&pEeliB*$rI-J&N zr;V)t_R^C44(nu^K;>ip)w)Qjsh4>h+HzCdb82J=CnPt{sH75VYL2mf=30mVyAnrJ zRV8G;>wNoLBi6NyZXA(^auH4yvD7s}p%yDICrC=kf2M1VhhUu_pp5e;trrrcz&VE) z^ZV8{%)NpfYSO9R_#Jajib!^@8I?13%-Ih`>=Ufcc50fS%5pO@rh%@3&3N!N&KGhf zk?xdOmCF} zgxpBma1$x(!?a9DT%%#}{jjf!GEuhfxiCLI1HkErGfLCaUevuBb(1^$qh_a+ROhsm zA2oCM18KanyncZX0xx3$b42`I>%i%2%JjB=bGax{uVaSP2P;h$7eVb`HIzkPKS>P7 zK4pH`C(7hvGwS*?jbNShQ-@32eH+6LDXC-c3vPIlS}>vFv0pQ+uX4vp#qhnJ)3Dt# zt{I}WDP=4Xq@&|ZN)SD;w@EnO+=s|X5_>pDo6WPPZ*l9Sn49&yFXtZRi3q*65860L ziqJ;s3yhAsz_CczNOmLfe(J&Y_UEZz?I?BJf|c9Md*qXYkKoTYt8zwoFA{w{99oBm zT7|X4z@JQo}h;F1sDyyK{hi^x&81eR0+O6%x0jySmka zWbu5qBGRyu2=o4#p(~!rx%=<6Vy>2GZ-_ zZ;EA7GNNv9m#dS_slZw zwl{=S6)*D?6OQLd zFM{v=PppqCsH0iSKQR7|5pU%2N62NC!Z1I9au15mR-iAJ$tn%WOzIyn;+2p$1A36u zit#b0NR-~@ma0FvRpBh&YC3PZRmV>$2-!#%RazBmuQ6&T@IazQ^SSACu7Y_Iv zzsVQTDSL^jAz1S4V^x0XH<1ez(4&Czhd>|gVGNo%t^wVw*{_1-iMryN!_BT=zm!2~ zCkbBk(|;C9DT`fZF8-uPpBX*-v{S+^dKbOS2->Aj-w2zQk|0j<^c)V>ezK>ou1Xj5 zCA?P3`e{-HPqe%#IWqHFh;SlA_D2X`cz8J7CNve3$w02Q{le75B=jI{=}xK~+)GlF zlhZU8Rze?sK!g5Mrqt7S$B$W{x~n`&IQ8YPOJ~r;9zh>5OtrD^zDkGiiWYuxiY$5*;)PGoos>$r#4@A$NH~H1ynals|Q(XUolxt z(bDpcZ|Y@mIr{h*MGSM2+YSz`u!t$`ZJ>WYGPm#I7vVSET}+bR>(1VDVuErp_t@N& z9A6!dP1#kJ9N8a^?X-0|*Oc!zl)vjgX|lrDH>uQAxoxsT7*?X)KsOgpMS%Lm?C7q6 zRcbk=Na<)_U9cs)T-mp%DXy!pZ{PeAzni2(#iW9u%{lCQK~G*zRh3#iBYjJ!ZRokB zWvNC`;HlenHaDSaA$JSHw~|Y4IO`m5{wvXv#Sg8xd2K)GJ*St6zYnfpk#L#f{d3Z zs!E@u7JPedXFYTAu+i)*On;k#>nZ2+=YQ%;-GgfmmZOw4<9a}u;c>8NCNS<++0t9+ zs`BfxB?006$b2~x`(>V!V$|ao0Gp3d1w1o%S^+&Lf;bVPPFJ!K8XgW*#ufTuzofGF zJNtlKK!gJ5d1S@7(}!a06gCIx73pW$er36> z4?Z7UjEJMAcG4ZE?=1wxjGtgQxVNFG(})CVXl|}ApqtK7m~F4JY1aQlRN{WRlJjPv zo{+kJ_o2l^ZCguA?tk?CZa?oq1F}ZgeMkKd_Z}KI*Jym>4pfH0=DvZ1biZE*cBAU& z-W4^nZPfboJ@eQ0%XjH}`bbEJNpEFL$1E)pP6d&4H-4dOZ{lv|=Vdlk+h?o!q%9$p`>wMwG7E-ErPJf7`2B4vYgd%p-+m^{r;n#f={2sMl0ZbX;Lhp z1Ia&?@puRxua<2=np|O5Pw`_bsPq75p9+7`VrcA0i)Td{7vw!#?mAmo*((ST=qLrV zg*|;utphU?Nw?ie1F``jSnAR%-6I82i*V?3jZS{D((t}wX%EHd@Z-BTK2x+Hkz$xT zo@4=OUS^-nGzR9wxe2fEiJ-SA=Ult!emf&(0;0)<=?XYIg*` zf#i_5J+mn&7tEcz7Tv@)~uBvVH_A=UCXs70wy_v&OfDnh;8o|>t(8uO&KCG;7Huz?&_^~ZiCP?+TAA}lb zCS^X?s_VjswR<_dyw?_mqiK6yXB^n@8*e+Ff9=rE+W)9PpQU$R9KQckssq&1nd+G- zhKEIA`Ki}0^0@xVPUQlb2~b~351y2y2;F=%{)3z^l9V!`*jm46-xPPSy`AuE3aM(g z25K*u{?S{pNq`1BK8=h_Od&^4!WQ*%#Rrh{5Zbna@Lj`_s zpsMrRK-lLCPr`f~UfcGk>9#}cf>3IA-Q9 zU{i@=2>u#3t@(;=!7ITrJI(?YnK67TnP*+)biCt?pe8cUl(R9*ZMCs67O2fIzB(G5jkK*BXKp zTU#Lk5Oy&YQ3%nw+rj$hYDqqgsQ!N|~Ti zTg9APw=|N$NJ1V74L{RXsK`)GqHetWtD>O;v7F`kzSS8>37%SCzRjj}n0Wato*DEw zm(GvIm zH|z#`KiMKKhe?B5hd{tKAhlP4`|Q_Ia#x$BM*%dQWiP&GOszK;-CX~e?US9!5Vb9tSyddibR@fWM6`zU-Zgofn`CC>$iS+;R`k9?E;x`= z?y>@LBWazVgxR~rYajXa_1_OSga*+`-#xC~Bh?}PMQ5<1 zCO8b)hF^JCBTHHM`42upM;DR$ujV?U`l?-d&rJOOM|KYy3v6uNLK4{~1?%achlu=^ zLTfWH;+rkX5#Qyy?M$w1kjB^614e|X17Q}0!IP_Vm?&||*w+mHE%|JVi zD|q&o#1qB-I;Y^?_h0r}rpa-ePKS_f3+rSEKzG7vVSvy`IEZ589hx4*k;<%r0 zsIRXd?3qc_Ssbe{4{kPyuR{JT{H${xOF(%EdrMiuGLMsqMsJV^l~W*qV*7%4sy_{D z;j=)v42t=NguEO?e*f^hNuWar7T7Dj01_HXM*}CY#ML+G!oG#Z5*`Ua(EKc)W0x=0*S$8*R3o^8O06k>< zJ~B2oR4*vH;kuFFM|d8ZzNPl6hL?%lMdrt;_CX0h z3}&6GyFNSp@grqQDNDRVlIz<*&9{Nf<1qEgX5hAkd>9UdOHDZEz-2iD4CKGQ_-?x$;-J9n!&D^KO*%!i32K7uIdV{C-wijO-n!B( z;>k_`WI7VdUqNr7L1;nRnk+?*VMfq}D|}r4A6s7?7gg7_jfn~fiiG5iC>_$$3IYNG zN;eYHDb2v3A}yeFch^WaLr6D6cOwl$4>8|HZ=YA6=R5z5{zT^NbM{_wt!rHiy!d8w z8MiNH^BkqwtKpozsZ*$tTcWRX@*b}%Mn5DB;apTuoI_2t#o2jG?|O#5*& zfX2%Lkq()l-49X-@^(Qy~?}e3<59e#~NHz{g;3=#7vgUH8lSL2n z2$a%O#n9aJqT!8M8ubM5u*da%?x7gFQf@z|E=+%AjlSGBGXDDk*Ud=Qa|R?(XUqN{ELd8*$5| zt#F*31r2XtgoV?_ACVV;^k62*<_r}8t8G6*cIfxV$>k`soShsxEytl($4XKFhJx|` z>l>;Qt;6#i-FqVwLe^*)IJij6ZT-0Usi<>k65AsLUb+c3og#zQf~0350p>0WrN5?r zTs(569uIabZKze$OftuXv%V2S{8f!dA9R9{b|H#Kq*Q^F&%0ixA_VM%-5LgMVLjuqPh&ZhrtAAzinj$>aNsTKAAOKy{Wo zHp65pTah6;IKw3C2i>nPdtW8$!e6XFs{>vJSXX>lSWH}=#=(a4NsoKGMw#-p>!|D3 zj-`U)_)kC+7+{dUKN&pUMN7$ay^s-vE_Hgo$4CH2=5$34|Ll~42;nPA`N{6r9Kbf-P!R@WR>fExpo7-h6&QDtT2hxsg=+F~AHz>VIn>fyx2h2?3K zvA6Y_o9CJc?nL8W6|GJWQ*&H4%9X56f7a+6y(C6Nv`pjZ@Yr|hXD=M6Ff_h!LF9r% z+pkBbU8`w+<51w;!npmKgK-Igwsz39YsdG0?x?M4KqJ?g1iv4spu|MG2yk(wWd3N` zoV?_)Qx)b!$Pz|pX|Oe$MQ0ePQ?9+aTi(`EM0vw2v~#Jaay+(xaGvXtgM$MOFyC0y zigaXJT5&PpZ9H;CJp1?S%2NQ7?aPH)%#Ab1d_@Jie;E=#U1>l4b7u`r{AXuvj0w_! z|FcODAbzqxOsk;4(cdrof`BoTjrLi%OkrC}B44G!u`u|ypI$waeS?2>z|9^6W z#qg$z@9C&U!~-WI^Ldz4vW?U5Hi^QGFey)|MRju zt`S+0_?KC##lJH#nU3sQh~cp`CK0?21Wtg*_H5`gXy*lneRuSsDB_`~0tK4ED$MXF z3IJ|p``fpoBA_JjHJnY~>qXPruoZEGpj?6wy2l-QHXkIMHJJDDs+PsM_u<#xht3GFKbc4h+4F)*)LFL^D{Mp&*751iX28TN zYrNLTHD-!dICKJb$O~7L5H_0nR22fLdgkFW95ihASaO_`9^|{f?P)oFY+Rhn!8#MO z*Bq{JsDV*JPj|PV1Cv>!msY>V*{|KWLM`NWia0SK`zWA-?PKYvE7tk5F*Wi@Lx zCn}2Ejg8BObrKeq56i)R^+Lb?AM?N|o6^V4sH&hn{pnTrtq>H5TqOCq#PQYri8vWo z`N~We`#*K>f5hrZ=;6U#v$MCq+ntf>39(P#PJLFWhr>q)!n{WIM`gKCM5)*V-K}G ztKf}m1Vy_g*);-Qb=eA{Xh2ehKUWSEfDW+^gUrFhV+I+DIUixiQJQ=G3FdwS~i(7JWAIMYCbjz4puw)@rKPB(I!cikS{|iU43DM zFRq#T{Sp1mes<$mRwgys*$g~~IsnIrikfyi-4XWlhh4o|%<~Cy;Y%k$-04&|S!urp zf(D5|0}7$osJOVb*&SoBg4eGVT=rMz067d}CVqYxRMY>y1|+3V#3`Pr3coCpCrme) z%4n!QZ^n^ntg?M4AMLHra4*m+^O^H{y42#Bbubw13v6xCNV^d?g_JPbH4j>s4tA>elwZREWIEv_&oFTS9zeyzc4{t;v}BI%v3838`RU&d&#Z?EhW@k*SBr zki*+w2}O7M)7*`Ins2Sr_4(c9-SH9#)8lU*Leq$z;o)(>F1d(@e8p3`T3dxcxIrz! zzPpPi$Lp;%>Y3?Fai_d{w{9yIqul*}Y1xtN>3HoPTrv%qF%-F@BdR8O{okh3zZ*x> z>H}B8Q&Yq?^lE1IZ6vt;A?SgCr5>!`o-0au4pv&~Yl>AqtPVYNl zEjj=eD=A3k|3)pY`UH9{3Kn#8NtL^mG%GwDCX)y8O-T$#I7xz%Csh-zZVutIS zs+glp;yD+N@gC9|DQn!>!U^&M2^{qoJ)y%Il;bb>l7NE274WV;cyxES(=3^&Gw|IK zc+N?(LH^m@!Y;SzCet2$flQ}&7=@-*oE0nO(5r`!022B0+6>*9_lBd-z5M*7jwy9Q zr*0kWn9yR(TuN1B00tTO&$%#0VW8#|66Xe88*=j}%(HtZe-&g84T2sXXPQ5ig)>20 zJivnG_NtKa-R)s7y?)x3~iv@(-}9weNVh zwC{^=#54rL98NY$W%W?0rj4b>RX%AB&jW zngF`l|1`t}AY0gA26)3a1<{7Y5)7GL^ZM%Q%WBWlMe-ah^gxsi42IZ@t{sT3mzGT0 zGYVYuNel})wYqrh=e^Qr8?E2Tw=c)<8OILN?00ud%@5>FSL7dM2+MF@1lF>@4flH* zA0Ogs*JD~FJnP^){ssg@;21NrdS+&8TWEfh`+}%L5p;^ETe;CD2&_+MJbLoAs;Jx! zv2L+1Kv2#urFVem8eq|8di>BS{)tU`VPQ6Sua=X1GOU(-4yh<9N%EHz6qrb5r%U$X<&J(QmeIFP5}BpzWpAY|3XAQcX#z01a%3?u zDKV7q0gNA(*jdSYQHfOjx>O{!_(0Cf0;Q^Nn(_PD&Oq698@ADu4{lu@6I)k3zm+y!U>pq%`O_ttH^hzP!*@ zlp(t~GB#$nHUt#CuIRX!gu=GwFJq`*|L+P-`4;irn`_>N%IzW?7Zy_)82Ij-Mk84sTpOqDz2k=&Y+UOPVz5r0>RUDl+e!it)mrQjG1RigUSYP~J;hTjpz%uXbXyBO?p0B54kTwF0GeOwhD(m4qswp zTw21E(9Uy+8;EoFM)D{10Zwt^yVq_%_kA>k*1iM0M022jJe*H15r};PM<13*P+Bl! zB)F*BJW@dX2;6<~gQD+n2N>?RfvM&B?KSlV}A{SqxA)O5En5EmZbgfoi4L6z_)|%0-iDN zlNH~MVr<~WEJ4tJ0eo3bq{wGwCWNgR6Goe`Vs#bsq}Bp49=)NKdXOj76nt;`ZD%%Z zrO%0*5gbM= zzhHpLid}z7DBV8Ng^8|Jj&f&(2(MQg^%_}p)X0w1C-8FUH z0tL2s!I+4sV=cpUmhZbmd8^%VXQCpPy>PdtvlK9)Z*ODd&R!?~z4I(18trqR=r zaH4XcS33Pg!a%*VcK}%Bwqy<~WsT#1MAXN4kmfRt?E$3G;<$|<-WMQKNP65wXXl_y zQivtP&M71R1k_iVnk|E+N0Nc^=p++aX+JTOSwYt93$+!7Z>2D>q*lYY8rQkD%Ue@kK2_%?d%|e#s9CN01#AeQjkZ#dm`L|eq8sqfpKiK;p-3Ahzl34@ zUs`7G!}E+=I_Yzo7%9);xB1a>>)q96w`-Oy{8qLYpxvWI>mIo9^UX1t*_rIL-1*_N zUGopnc{zcz{tg%p*5i{G^*sIwZj4H0{pVr(9TFv3S!c)Q$U?YV?AKic7nSDNHS~EJ zkB&=aK+4Jpn(T92&BKgcbbdU4V%Va7CYU-%oNmIz{iPJld3c*8>S>ecjOi=j-WwTA zkBeVClmz@r3D@nRq9<$i<)n8$B_+w-nwVzlUiE5ZW9Cv)ZJRFcRa8=XJ5dEhy+K@0 zlh^-TDNB>I8&Q0>cIBVn?*)7sO9DL&S2xOt@UPU3sQ^6b>h2z7T@DGp9U6X~0f7FG zAF+?)p>hH{{Ls?d7>~bbvlkY2yPf3e9(UK**V-=A0`TkKvnU|}1bmOK{g;}?KhL{c z(92fz&Xpw&ar~8j32-&CW93zMQxYp}#wVv`nXR#6Im^N;W4a5wm&U`>D2@)~F2&gg z5a`fubn%}iz-Z5V5UASguzIQS8%Y(jT_7iBKiXmLpimzQDt19oOF^P#mFAQ}G@QxGCee)Rdd zKVT>7vPl*d_H!O7l_LG4JA;xy&bO-vYVx;luhIak>SZ+*fDQ1b|6FeZ_Cipbld=Uh zRll(SkJP4Dr?cL{AX5Ul1W1;&L7ojxB8Uk{8w9Uhaiesv&I7r@L!j#iGD3C^_zB1j z!SPt_t!I2PV%7RZ2)(bP0Mhc8017AjuQ0}^df;9{R)<5t{vBa7lV+1AZbZhpgh2mE zz$4qnYBEo5^mdh1lUrEjDMC0uzQ0x}=)<{QlM4NPR^dBL*)Z4h6KjDEEMqRbi3IlQ4ArSWce5ev^B5s;l(~bLwh) zknmWj%8MGy^V0+*J1Hqud}PIOh>$xud|^8;hNLTiv?1MK3$1ZdW4%pUF$0gsb@~2U z@g9Z7S>IxPJwT*DwqIE@`h<=_7X7xHUuS$Tz}J7RWxeR= z=a!pr5I`0c^?+XTgDp6#`CvOx{!&TUS{bj{#b*f10im%b$grX~h-%Lc_*Y`wfdg-E z&z^Y$pLv4@SuB$qdfAcY(#+;;nf>o5@8ZS3KMACI@G9Y^YMKT@a445_Ee&np#(*>V zd9B$+lqbYR9~9gv8eRAlC9Bp?+pC`iX`k)TY9Z5?CWa;aJa_A&iYlwL8Bcn+NJ*7u zaugu$C41XD^JtR!+079%r$d4rZ+SV{UEEXX@_}vlnfL*3iGD};)^+&0yN#TD{2L_oSS10XJ5@k z$*f73$$93a?7hiRERoL<>m$-RllGa~MNj9{knIO_%VD3w9&wQq+^&4yLyC#7EiH4> zHhbuQp5thS>E;1k6@j0|Wq9c=t%0-^^J*h8(bQbA{)wXS3=@j4E32y$d*GyO%K(7t zKW78{VL}GL?UybI^|Kpx;$=Aj+DC5g1W?Lcu^BHt1HN%{Wt4`ll@-8Gdm{xYK^`6+ z;HA80(Lx=TO~-e%^F@FvWP|4^(89cid2+ZlJzp|RBXI7daS5ZG_PaV|jI7CHkgwyc-E|8{QdO{8SFTE4OMmsGvU03r z4M!Av4RDZ99}c>^;Wo7{6Usggla3b|p`Z?@=BXrH6mD#SC!?Lbf z*730zx|S}_5qqbo2*1moUV>!2*4F#_gFAAm>7|y#`S$g~!cs2hZ3Wtwm-2PsulcFg zXuc)U$uwQRo}Q6V{G|P{x4liAvU)&KrLI@2^t?Gw)ajBKNSbII!dWl@)yAJUreFMm zyZ8I5YwQ3a@2?^v;l0y0Hx4I2h75B*Q_bGl-Mx*y2gng2;VqO_W=B=kU~l*Cukm0{ zH{wvm_w%gJym9||p7sPavlMS&)CvBVTJR=6sI8aX^Hei=(OFFBsit8y)}?CI${2dc zHu|v`PzTs3yh1_>x$l2tkyKCzlu5QM&QJOz{B&Wrc5ldrSQ`4q-u7}a$(W<4v}xQN z!ZfElrM$O;Q~?=B5@-PdDQ_(8p6ohn(Hi~ITc z-Ob4Yazh4+3Vx>~{|N)ZQ?9G&1DQ=fa=pkcZ9j&`>VkISrC2_gQwH=1D=PU&8wL3t z4^(nAZerBImWT2*oSh?5xB9)vdQML}YHO$J>(6_HNKwnea$&UzSm0*@{wCK9WM)@x zSa-Ule4dS@nOsdzp(@s8&JU_28s-y*njHBY+@Z!XYU8zc zSY}gP__@DXB+w?@({U>@*FL32pGi5gs!TTHvW_cq+MKtJ$+(y3_xMkGm)I0rtHx2@ z;SV7~2MwR{Hu4ESz^Or6ygMD%wt}M!EF!uaQNj7;Ck@CVL4`B_)ov8=40a$angdergnU3>9q{0Z0tsw%`QCdMk%FJ?&E+m7%W0Q#Sm z!R>kMZrnm{jP$ki^#Pl+S%^N(VB*;2KXaVl&5%n_$jjV(&O0=5RBK4V}@N~WEs(^W<1kxzzWi0V4g+ASd@7?2btO5wQ zt*Aym^x=9~gk$w-eUm$j%YK6W;5ih5eq3x{;`rjri>`BrQE6(~^PX<>s=5|4gWVn2 zAP-mc+Hg+Oe2US&`H|6JZ z;~j~(IhHMT8{~py$ahsUOZ_Ea3nmW~jh22F2QQXBBb4+XNH-@Z2ac}o#iK1Vl3N9U znPm3fE<}K?b@&V8;nBPWXp^{#F+-FCW-r+;ecU@6!pqWBKClH?XX;k5ev1(4-MibZ z)TY1?2mLKUr_LwpVt9tvDJ80Gs81D{KDj^-cI?a2H~n3Dt%)@?ZWap(H9|;OmRMT< zacK*Q|3yI-mp-plgqu06R0)K88+lT0nPw%mue3Js1dNXFPQzJF_Kat_sK{c^;-mNa z8AVUcVbkTx7C)#3Di6=Kp3Nv62uDOPeZ}* z3Q09|EmYx#k-c|!O0zxTqVU;6^U5CWZSO%`NOH@xIwx+r9c>%gbNOX|>lUY^7G<*cKxy z{`p5&=U*UVbZc{SIv6w4&+dAJk%SJQb{o;O1d#>-qYyL8Ie-aAzwpp911d_{MVazF zO%9IC&>~HOaKhH&zAC5yf?5C=)HMc5Ge4(XQQ-Y0m-=2u0g#Hr@H$=kq6kGFFYY6s z%N7+Vc|8Zlwb{k2#SplLo}(g!_Zjbi_&JxnA_F;);`~~|*E)AOMrq-Yk3zlqrU`r5 zmdp;YOh}JoFhxVy8Mz=vdLp?de3pu}1TaE2&e0JkoKplE3qfQ?!C;SYJ3H5IPC zF%6*|BTA6wp`4W?q?aHoR$q3QcvAVJKh7oy90)xd3e1KBFPJYCNCf~Yfx;s|`dpE1 z6o4EuqHp=D?h{DP|KjW##?y=86zikaAc21&Eh`%jAjmx&jwd5%5HA2e5-&eLFuoqX zxX?ep1W>SW%x=C93sb_uK1Ho5co~bhy-KGt*i8?6-yKuvB%|d4XkelGwhj)adco;Q zpg|N{OhRHZV*K{d!lAFmM}GF*0FG*Uu>f(#=yWv>ovhrBFBY4fj&|l2M#Jg@O_l&O z`Sbd=c>!4yZ-*AYSOYRbmDaQJzc3@Ms#;edUkUsk@CTr@{ow<7Y6}Q@b~Ge0)Dr== z!uHS!6e8bkjN!PWTL5M+5lBXSZ%?YqAqcEX^yhTJUZ0|b=h|(8biIY6^qMYR{EyT> zZymDI3sfs(z$qYab266V@qXQnu_Px+9vf1Q@Uk%#UT^9?5n)Uu^N$~yK^Oze*N23L zu3iQxkv!?`%(Xc{cFV%%y4_F5&#&QZW`UQqXe<%}niQ$Fzd?)*Ym18d>+AO~#U1ll zj%ZaGGXA+*jKpJ5eFX%nh;UFgWVM3_rGf^>vjYvS+GSz%vAy$gk5t-&CnKznd&@w| znHnZR@fr)miC7D~Z-)bCP)Um7SO!AcNN$UX)GY|m>G%Cih5+yoxGrHh{rFjbBzdjn z)=|{LNKt?1GV|bmzikC%*(W@;vT~J24tswS|IvG$#{K@--2^n{uMqw{BnLFy1kzsT zu2I#}ve>Bmyz&9n3XfhF-lcmg%F|dWGW%n7RdYN~TQgBx%Px^Az4w{24lE`mC8e&> zKdR^N!~LGWwM}v~MdBNPdLmefKm|go17r@z3n7981U%!#Hdxr}c=uBMk3tF0k9gi= z4ujxIHbID$8F>G>Im)yxlS`L2!23*qSUv@CM@mpBA;7oEFG`e&Hi3B)agzyn##xq1 zreYoXuvZ)#J7yL3yI%jkMQ6a($I*57N`;TL!j}lG+QE^2oeRh%!ViIXd2=$xMnIGY z(h~KezLH5KL`b=LOwE^dp#_D@YbeA)`PZwW(6bnKdC>vpW_&tVS?Z2E0o=cfN?4VH z+wm~mvaqCNf5(LA-hxrUBt1jo&>UO2IIDfX)@W#1M8XM2JS?%cJW(6t^G zv`k#XIL*$^$zlCj_K=dcw1k2#BK@EW$>}VBYOuN$1rx47BET)a`O}uxxz&H!G*W$7 zSY8KtU2VS>KKpomeVxSra`7+`)ALJG`v7TWGkA5e83g=$^<0zo5}x|kcmC~R0d=|u zElB(u3-||6`ZD5I|7A@PBL#t6vc+VjTuR^h5>H;hY<#~T0GdGoxMzFg2Pi&*z(p9s zy@lE*&C|%?vtPa7;;3jlYoi<<5&%+F$r0Tj7G(f1x)cDE^pZGqD4^cGzmn~wCm9A8 zdP|%+{ZUsj1Qaxf%I^Sf{O23F0Yt?i5|_B~?$8B*GCQ~L4Ng)sT1t6g*efC_x?XuL zIJ8myAdOR+l(_Zp9gcwk?*)%ex+C#fP1-)-W5o$4B*eu*P)f8@ZT9tX$T!bGMgHNfZ@ywB zV@eb>#=*pNIj{(6V;@$4*xo8O?|;bYrPV&i8l#w-U8(fiX7`|(gjSe?(zt+(JjdLe zb1rFV##;KX9p>~D6p>ITXjygfpz|6qgNeGe2(0eLjI z1T#^scnow0vc?KAGcWhVR=j$(?Ezpp@7vn_hapiM7qpSey?_@$LGn z17Km(3BgkYBtlE8+yY~;M|vN$8LrEOV9iq8OG8^imPq};`J$2!iTbm=1sGI=#`mP& zcA<`oMTrKqyslR9m|-=kff<6=_Ya61m28GSge0FA5X4PJP*vVu`=Of!Uz#Ww&?|!` z3AMWnKFT;W@Z0pbJnmDKmz$|MDgJ1B|Jc^g;hf>EsD3xa1oSl*OLdGqNFQi}gvMOz z-e;tWsl!07*HL8v*tSmFN6}pFuw)IrzroPj6{B-N5{tf79+%j7FK7m*0N@MDlJxHTul39a`eaU)?n$^QN!9-=v8$sSBB-_*pQ zUL)@SRS?-xzp!d-xUa1+_F_|0&Us+D&Bdk|N6QhpO0nOp)TjJ|G=gq45MH)sHPnbxCY}My7$Bs&ZJ+>aLx96FyovqIK zyh-9Mb1{bv#+6b?-N^C%&T#(FbjJLSyMyTSD{9Hnu>`OCt{q>}X*mL5hFd#`%tbM+ zOzyMkCHA7Z*GG$p3X6IYgxt>OgU~ymG7Vs(lM`VI;P-rvTu*mOmq-grO2Bxdo&@x1 z1ieCh4Ex(q<0#Iyo75Q*&2eXTdS^ru7R}K==y(Pf7pa-1)Q$V~sFNqk;$?2+WIZ99 zbUbj_h0b=^E**xeOnexp5UXGE{JNE+C;Lcdm(VfDb3AfRv@fLer9jxahC958J}1Jw zCx`JcD)w=0O7B7*v5>jgHs*a_H#1q?*Zu3-eR{_#2?16!$EH2iM5JLlBlH~YDo@|- z=zXyJy0nZQpUZfR4Mk<0j$8G_@!HmZnOD<3FY@;X!-<4ISs9-OJEZm|kd*;!zjDOU zi~oaCq1P^Gks^zJTsGK}DF6Njd6!r_bu-H?*2W<@>4cmA2gie$wo5zwpwA2U0gn%3=usz4G@&ZwVW!@SX{DXjxEkD zex5`A)tJpCZ@YDAeyq=*IyGaHvf?x^^#g)X?i8xaqlL(FObIH3xK%NA6(b5!SH+Rjx1V^nwnX>oDaq z623hGfF@+wIv8ok4>%jP1@&vShaCS%;@m#J->95VYgR_o7e;XH&}ZZ?j7^%87&gy zw}`39exREm5kwbPrZ;?{Vo~{0I`2axpj&PCScqe|b99W6;h;(1f8S{Fdw-Keb^2CV znzOe0{VAh*F=>fn!)Lnz-6+xFDU>V&Hy`m(s1DZ zPq#(0YHH5#$H-vGy*LsoC04|K2{aktfNcj5&++Sg9i~jhQYQpXBa<~zutDY4`L{Ct zhNN^--UcHgwnnuDbX~3{KzpsS=9TQ0l&0rnYXN*4X zX#``xD4|F0VjaQgl`5U$IGcynOWdhPy`>vOm_fID#Z+4T zzs$~>BHxcb57TlS?|p{KHeT#YXUUV#B=0(KBrOy4q{J-^u00d8qYP28hdZxGWH{X) zDgxGgj4|5qXsF1y@@bFX$Kv9F^|7(STS;B~QSuCHs`&&2MC|=irXATf4@7PReQW(R z78CA)a3EuII1Ks>v1wdS)n^lQVb~p(fZ^jGh+T_bAGbmUYK4s7AKGOlEH;_WKM+s- zhhKu=-Wwl$W>v1Ysm=pOqMLx4K|`Byexx4-=xU0g6eoL8+b7e)%vv4O?l3Gfz*#N@ zxwS(2=kbFx?NrP)znStsiuH=d~jgD6M<@}eEL!} zq*_}?4L_9k%~Lsj?=ed*MgR>WXKC^-_*%?$X9ByPP-I6&S{su^Vy1Ex`|cmv4*)d6 zi*YEm@6O4GqElYmhgGmbXrmkk#AF5y#P(&X-*LZ2Wz$cT80*$&4st*S*0Olx_iSwH zB6Z0J_seFusCnJR&$3VVuZV>El;OJaHY%tN+3I#Dd6sy3AoyenccuquKCPy9?gZj> z*xp4AQ#w4U+*;od2@Sht(a`#y>w)o5patuIb zam!sF7&C!2L1%flT2WEwl@IfzA$P-HPTPo+6Bf}Jiey%KgJMo11*mowW0MZ`yy|S{ zI|MN9+`KS*>Q#~nKuw&e*pdi>o<;3&cv=%Nf1f?P%Yv;bfY7;@K~8srVn8MvNpU|! zHOAK@l-)?frOOmuVzfJK>KJg-7ia1`fQjZLaZe}s7^kz>C2hQ7V<*;OZ=G{e>ex37 zizjQD_A?CK6OvHP-DI&{9iDU9SK~)2PVPJt*$qzhLFE?B)ORFTe`}?$=QA zTB8`M9|0%G&dj2pBp|37hagvnA(3_#L5o^jg)VIe0%xYPl2nze%?lQjuAOe0Jr4aY=LHrk$;0JeYfOhYt}Kfm z4BH=ocQ_Df+cG5U|5>K;2ZfMTOA|eLVKDb%DWw3@ce9bX9(2w2X}srG>UiIMQj)S$ zV<>JI*k{`yp-Fp0r5h*d1`=GGov@8@h07@TKkA=O_xsia^kqGBnhK8Zz_fhOs~jr? z6-*rVJ(mzF2YVeN#bIGV8z&7m+nQwv$Za2xF6_hRQHecXhld@OkWblhm3HInnNzx? z3y!zFr(-Cq+!Tki1Z%#Nr*Bho8OF-hkP>^!eJ_7a-nnJ+nQczwp23YiEtI;A?rtCw za{zRE{^}8+rl5wbBnx8&nG3O?K9k|A7eU#L4_>-yW(|K{u$|ux%#G!6uAjo9&}BOb zl-=zaMZMPc-hMV&jrqtm?7rjX)4f#sNupv(3d#ukN6(qneMUyUo1xpoStLVTfE$FL zF2X_G@9>YI&~-3LkWDY14n9A>A3n}96`F?0on;Ia0El~l=bN$nbLf|qpr1^~n#S20~vLT6By1()u0!yS7z zWzTE=-z{OiRE;R^w^);NbKX`^-qo5mo!VIi1$zM-N%0eB32|p1{udg`iur@rT)LxZ z$sJxxYWYk2s4n|Nhqz^5W0zC6a-Z>i1Vz9>BY_mKK(Va;qJKSC& zmF?Qx%ENo>Z7B1(_OWBn_vqWVrgi<{)$Hi+?U}7qau$BmyT^(EAao*DR8av`WMbt| zDNpqc2EprBi{XQ%M!I3fH<3fKn(wHL3n4=vWD5L+4dIM{@FQ>}k#yCYcOU zE{<`;wKlRmHkgAG2R?~kcR!|Th29(Hy7t+b@u|CJ^D{UO5hLFbv;{`oc}27cRZIvru4Dc-K-vQ=`!@TP6NEF;8;rhdd_5cY(RqkQe5I0R;T%X&f^$K*10Bkyl8h!sVS1)mi}!Da z&~Ch{sfF(6Y?vYH?`7*aeMy;vt1

4-QV=jWd(w>*iKUwKwKRa+X;a2O!hvo9H_ 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

量具

机床

车间

用户点击订单行: 编辑工艺

建议先设置 selectedRow = row
当前源码依赖 row-click 已触发

打开 dialogcasual
loading = true

getitemdata(row.订单编号)

工艺管理_获取物料原料信息

U_MoType == 机加件?

写入 itemdata
子件编码/名称/计划数量/材质/基本数量/存货量

过滤掉

editProcesssearch(row)

工艺管理_生产工艺_查询生产工艺
入参: 物料编号, 订单编号

tableData5 = 当前生产工艺明细

getProcess

MES_ProcessManagement_ProcessGet
入参: 工艺编号=''

tableData4/filteredTableData4
左侧工序基础库

getbasedata

设备管理_设备信息_查询

按设备类型名称分类

basedatagj
工装量具选项

basedatajc
指定机床选项

basedatacj
车间选项

fninsertidx

存在空工艺名称行?

insertidx = 空行 id
左侧选工序时填入占位

insertidx 保持或为 0

工卡量具/指定机床为逗号字符串?

split,map Number
转换为多选数组

保持原值

编辑弹窗可操作

查看图纸

新增/插入/删除/排序工序

编辑工时/设备/车间/属性/说明/备注

保存/启用

保存为标准工艺

整套或单条下发任务

\ No newline at end of file diff --git a/work/ProcessManagement/ProcessProduct/高清图/02_编辑生产工艺详细流程高清.png b/work/ProcessManagement/ProcessProduct/高清图/02_编辑生产工艺详细流程高清.png new file mode 100644 index 0000000000000000000000000000000000000000..33b0e6036c08301068e30dea171a5db1f2a3d2ee GIT binary patch literal 759842 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
A5UsQkDr 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

    否: 普通新增

    是: 填入占位行

    编辑生产工艺弹窗

    左侧工序基础库
    filteredTableData4

    右侧生产工艺明细
    tableData5

    输入 processSearchName

    filterProcess
    按 工艺名称 includes 过滤

    点击某个工序 editProcedure(row)

    insertidx 是否非 0?

    组装参数
    工艺编号/物料编号/计划数量/订单编号

    工艺管理_零件工序_生产工艺_修改数据

    重新查询生产工艺

    组装参数
    工艺编号/idd/计划数量/订单编号

    工艺管理_零件工序_生产工艺_编辑插入工序

    编辑字段
    准备工时/标准工时/工时合计
    工卡量具/指定机床/车间/属性
    工艺要求/备注

    规范化工卡量具/指定机床
    数组/对象/字符串 -> 数组

    工艺管理_零件工序_生产工艺_编辑

    当前无成功提示
    后台即时保存

    上移工序

    工艺管理_零件工序_生产工艺_上移工序

    下移工序

    工艺管理_零件工序_生产工艺_下移工序

    插入工序

    工艺管理_零件工序_生产工艺_插入工序
    生成空占位行

    删除工序

    工艺管理_零件工序_生产工艺_删除工序

    工艺管理_生产工艺_查询生产工艺

    刷新 tableData5

    fninsertidx
    识别占位行/转换多选字段

    \ No newline at end of file diff --git a/work/ProcessManagement/ProcessProduct/高清图/03_工序维护与明细编辑流程高清.png b/work/ProcessManagement/ProcessProduct/高清图/03_工序维护与明细编辑流程高清.png new file mode 100644 index 0000000000000000000000000000000000000000..e3531defe7713db888491898cb3ab6629788e746 GIT binary patch literal 645143 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

    FC4s{h{0AGBmc>+>0_1<)?GnIwtjzRlP2l zNmfBYT zxh=O=Kwi38^~Q%-xq!csYQ4k6u#V=O18zcDMndFez_w6A9|UcYgws?eQmRE6xe(YC zfV1aBYoEzM5dO|+J`+hG3#V>gI20`|7DN+xGz^u<_|qvnBpGzrZtbkZ2$5u24$Vuw zjvxGXy^MKp`3H_uD`o5anix@w;{sM{NUTXuHKcJ&ouqgRB-miR$cMP)5JZS?)>U@xcj+T z<4O2;46AzarZU!LN!gZtVrtUUsR!5GZ1D#yVOe5vBXtkjm7wrpR?-Nxazk~8>~I3- zkK?^7HuEKc>$6eB-8L6br}nd^f#ig&5@^g-A5CEuDYUTKxxj;OLFZLM?lgiGjzrG`E1Qzx4RR9SFm z(0vyNnZn!ER}%+wIHJR)gUYu`=2piHhg6GGKNQnAG1lU=!;H0<&HDC+U)8)^>VgH zC+b4MAm2rT@U#uH-z^fs_{i$Vs$#Y+Zn5XQNrybUmWp`B_0Y6fzHHuWy|e0Ti9fwr z9}!0u%)Zye8JeHenX9xHa2QOHx-1T8d6>;a>7C6YCdrhBKPtE2V#u)md{=Ej3+;oY z1Z;+O{v+ID<*Nm$TG@=ze)ZvQw0=<->g(qj2)H~{yej`kH3=V0do(D6?$^4!S!2qX z|04AdAUB|RLtBu)Iiqd38GyiIHHV*<@a66XjrDt4%VSo@|G=iQ1a*LV)KNmq zhi6dljgB@QsZpS{Fxq^3rC{FCN!ZRP`OGuVxiHqxschRpv~S5D)ZqP!F`B^P5+0?l zPQ7LS;(wi|k3D}dofFsm6}h<@(sL(t20x6n{M^LVJ<{73SV2dliQ;Nhf}$67 z@x{gV#Ub*W0qOse%hX(XS{Ga`=$bWY{Pz$)FV;U%X;Hnv&P0`#knt+nqVED7mH0{@ zqo2~tHLJ;U&uyo_uX_nnoP}`5%uGxAmbv~%#ze>4LyoI61;(@Qu|y_+@<_aUEG{Dx zgmj=Bd@cqdp;U!F+xDbti|42JPZm1fV+FNi&iq@X=f2WcdMEMmqqpD%$PcUWV>VY$ zpf59_i|m0Z)qo*o>0rz#poSNp2KI0GCi0qdZAP< z6MgIS;V94Z;8jDCq}dk+nF4m=y0F2O`7fCv$A}}B7t&hEeM~pI| z;V_>s{38D;l?V4nksh6UlC}|r<8w2*ewDgnHrf`9H0X$^8<#W`dXKip(efTe4f zZO2%0AN6>NH_?Ck=kP@{zXmPJGb?rzC3rnoBe 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 _H%bdsa_s;P-UEah>A9H-e1W2=`4q9( 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

    n<)+qk4gCx>^(yx{$Dc~pX6#+|VJ(_J#;8soi z24xbqIcNm8)g9HK#Y1&l>25=fkU!1iL_QHY|1 z=h_%hLK}g$1(g|~=U+4Uih{4CrY+&I!ot&=Z^#I_JpYVN=GAHAD%Z-1fGfZ3u#@a$ zsehkS3RV$l87i^(S-?6eU?YTst?L&F4K!rN&EnNH^>xcsNx0~yqoV_P{~c&4*5T#f zHU%f@pwz(ZaWq!BE&d64Ap;x%SS%JlaTK-(@>_m0fKG}Q(7u?k4*uy20Lmj0ltC!a zFX4iyWo7j|=-j>ZF9|2P$!DX-ycj?(a?c<66)Ho*Zzf2B1a1}Z(1>#@|8JAPP3AeZ zvMTpwCh8>oHC~7$0A*;n8F;0zrdTsm<^Q&(Oc|Jyi@gQL%shiAIB6MCT3}OAHw9XT$T~-5Aw#s9bEt^V% zt|^kR4VLesn>zO|WqH1U(%21X)UUhiP3*HXGc%0AOu{*)=-&+ZiBQVm{SD!@!W0?k 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ÊiP-&8T1!*AM9BETP#Samh_%GU6n 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

    6ACB4$u8Dl+@dC&O1vT>=Y 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�TfXEPeSPmnyoos1 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

    }+fd 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

    整套下发 workprocess

    tableData5.length 小于 1?

    提示下发失败

    计划排产_生产订单_订单任务_生产工艺任务下发
    订单编号/物料编号/计划数量

    result != 0?

    提示操作成功
    刷新列表/关闭弹窗

    提示已下发任务
    刷新列表/关闭弹窗

    单条下发 oneworkprocess(row)

    计划排产_生产订单_订单任务_单条生产工艺任务下发
    订单编号/物料编号/计划数量/工艺顺序

    提示操作成功
    刷新列表/不关闭弹窗

    保存与沉淀

    保存按钮 saveProcess

    工艺管理_生产工艺_启用
    入参: 订单编号

    提示操作成功

    保存为标准工艺 processSave

    车间生产管理工艺_零件工序_保存为标准工艺
    入参: 物料编号/订单编号

    result == '1'?

    提示保存成功

    提示保存失败

    工艺拷贝 当前入口被注释

    否: 标准工艺来源

    是: 生产工艺来源

    copyData 打开生产工艺拷贝弹窗

    processprodutc 勾选?

    工艺管理_生产工艺_标准工艺拷贝
    获取候选零件

    MES_ProcessManagement_ProcessBindGet
    预览标准工艺明细

    工艺管理_生产工艺_生产工艺拷贝
    获取候选物料

    工艺管理_制定标准工艺_拷贝生产工艺
    预览生产工艺明细

    submitCopy

    工艺管理_生产工艺_工艺拷贝
    物料编号/零件图号/订单编号/计划数量/工艺类型

    result == '1'?

    提示拷贝成功
    刷新当前生产工艺

    提示拷贝失败

    批量生成生产工艺

    列表勾选订单

    AllProductProcess

    multipleSelection.length >= 1?

    提示: 请勾选数据

    过滤选中行
    标准工艺 == 1 且 生产工艺 != 1

    拼接订单编号/物料编号/计划数量
    逗号字符串

    工艺管理_零件工序_生产工艺_批量生成生产工艺

    刷新订单列表 searchTable

    \ No newline at end of file diff --git a/work/ProcessManagement/ProcessProduct/高清图/04_批量生成拷贝保存下发流程高清.png b/work/ProcessManagement/ProcessProduct/高清图/04_批量生成拷贝保存下发流程高清.png new file mode 100644 index 0000000000000000000000000000000000000000..667c2eed6ad8282d8f19db392493cf4bfdcee167 GIT binary patch literal 245086 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
    c97AIIOu^pb0SG#Xia< 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

    CB&>O>IJ* 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𝔬mvpnn-|A~@?hd+D*Yv5`5 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%0D8Y{;g3;$fLcTYDLU# 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

    VhqiZ+;0Ke;}KqGr2KhWUHuspH9>>pPw#`A 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 H`}ThUxInyL literal 0 HcmV?d00001 diff --git a/work/ProcessManagement/ProcessProduct/高清图/05_后台过程关系框图.svg b/work/ProcessManagement/ProcessProduct/高清图/05_后台过程关系框图.svg new file mode 100644 index 0000000..5d8ede0 --- /dev/null +++ b/work/ProcessManagement/ProcessProduct/高清图/05_后台过程关系框图.svg @@ -0,0 +1 @@ +

    业务数据对象

    存储过程/接口

    前端方法

    批量生成入口

    searchTable
    订单列表查询

    editProcess/editProcesssearch
    打开编辑并查工艺

    getitemdata
    查原料

    getProcess
    查工序基础库

    getbasedata
    查设备基础数据

    editProcedure/updateProcess/updateProcess2
    新增或编辑工序

    upOne/downOne/insertOne/deleteOne
    排序插入删除

    copyData/searchTable2/searchTable4/submitCopy
    工艺拷贝

    saveProcess/processSave
    启用/保存为标准工艺

    workprocess/oneworkprocess
    任务下发

    getNum/getNum2
    图纸查看

    计划排产_生产订单_订单查询

    工艺管理_生产工艺_查询生产工艺

    工艺管理_获取物料原料信息

    MES_ProcessManagement_ProcessGet

    设备管理_设备信息_查询

    工艺管理_零件工序_生产工艺_修改数据

    工艺管理_零件工序_生产工艺_编辑

    工艺管理_零件工序_生产工艺_编辑插入工序

    工艺管理_零件工序_生产工艺_上移工序/下移工序/插入工序/删除工序

    工艺管理_生产工艺_生产工艺拷贝/标准工艺拷贝

    MES_ProcessManagement_ProcessBindGet

    工艺管理_制定标准工艺_拷贝生产工艺

    工艺管理_生产工艺_工艺拷贝

    工艺管理_生产工艺_启用

    车间生产管理工艺_零件工序_保存为标准工艺

    计划排产_生产订单_订单任务_生产工艺任务下发

    计划排产_生产订单_订单任务_单条生产工艺任务下发

    工艺管理_图纸维护_查看图纸

    工艺管理_工艺维护_查看图纸

    工艺管理_零件工序_生产工艺_批量生成生产工艺

    生产订单/计划排产数据

    标准工艺库

    订单级生产工艺库

    工序基础表

    设备基础资料
    量具/机床/车间

    物料原料/BOM/库存线索

    零件图纸/工艺图纸 PDF

    生产任务/工序任务

    \ No newline at end of file diff --git a/work/ProcessManagement/ProcessProduct/高清图/05_后台过程关系框图高清.png b/work/ProcessManagement/ProcessProduct/高清图/05_后台过程关系框图高清.png new file mode 100644 index 0000000000000000000000000000000000000000..0566903cc8ebfe7bc5b9e903addc3e5bdeb3d9f8 GIT binary patch literal 1003404 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%0A$*~t| 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�C=-^!~7WHb9reiqDcX~Qd2RBbdDb##IWRm-aw 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

    HpU&k2CC07;fM%GXO7nk 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

    `bRpzqCh}Bw< zU->N_^H>LF-uU6ehjy%8Yo7r!3?LDChDYCAOFC8`?`hr4Ri+gUVL7X+Y*ujAA(IDE zBJsyYs<(D+oF=6%pTKBa`S^Z)rW~}}bMn0?{emcF5Hi?uZeyW%v&E*hM{XTlcq5D9 zd=7_c>MzOVJ8(88h8#{-8Ft1la7FQC42w3nW5k?r$w#UHug^zH%YYDI5bp#zJNI*>pdo}Q2_yfJ0AK?s$4!QFih znWGB;w&~Zf4#Us%py%=`GSZ{%f?64)#~DDJ6v$I{$cdDo=`ip__~Q8()f6;+GvHNq zEBIzSoIvL`yt}aGVmoZ&!G~r1qrF+iKKt4=BYym^o@SUR4Yq!Llzzw~(Ivl|Mk$@Cg2u z)=;5C=#tAV|Ei~IYqzqbyegK|3W(W6$LLPshtFRgc4%cZ>c^Wk>T|nFhz^4A6K2wO@6k$;I)zR~A$)#DED*bS15T$%D2y<2B#$Z}u2f z*rvmcFT$5GD(hd!1BxfGbr_6ydq%Vd>>Qi2lGL|8YwoBQ49|wpE*E7v$E^&1!CuBV=-69)Uqbqf275=?nU&g`DKk`fCQSSW0{xxpmciPkPh`m)VWA0q5GiA zumMVA%}->d={xSvxwQ)6u9PZH*=py$cUb!@-@>`Tl(H4W4IWaV`8t!sPh8e!M={U} zq>e0iTZukeYkY#;Oz6FPgBSj+i=ACzM5BW!C7*t$ehU_-`vkDe-Zg09^o60i%u#{n${xYE-%Vp!a%LjjDGIo61T`}KG%(?xeK6~-c888+{;r*hJ9Hn?^ z2!@iVA2CwR-TE|^aEKZ@(SRQAQID+Y!f$4r$=YWf<~ApUFSI=5R>8P^Z02A4qL<9c zH6DewrKQV*8&2*wo9|W%t%`Enuxb7J;1*2^dcCGZVk?$T8_?a2YgyPI()Fk;;_%p% zOo4y>(p>`Dvj*L+Q=m70A3H!18M~b*^iV}<+;n}Aqk<1+rNF7DWXW*bD{a4S#+wr_ zR1CGWqdx7el6gfaGn|f;M#;$!Rc+vcBs_5DJz8QZwc$|ZUj|yed78mGZvMa4Mr=LU#gz?DOoPLGSUH?lQi^#YNDAY=`Lsu<-+1uXkpOudcSQponvZ z7PG^1q5a#>)kA77=OSf%?%`;2Qksvmf<(m@N4|N;mX&kt2OBNbHl$isnMr+kkh*L| zFkop%OKua(VCU@d?n^hp?67?Db1K2Bq@3WK}qn606P z(ZgFvl1_!J7^pi?C41F2xk!jJ&3E%s2UF$?y+%9?NOf-#_35;ZiP>yJ_dIX9x0|R; zxxJN{^mn(!aHCaMi67voE9(>2kSapP**MyLJ{2Cx1kx@uD<6U;|-JYB-~ZE)V&7@(@`ydvYa zJ%^*aY~8B)U?_j!Ua#zJ`if8xbs??y)r)v3#{Df-I2AvNE87nx*9budfXB;tFouf@ z?i>N)Ci2*00Fl;jPS6rcHTLskK?3tv@Y%?lNDYsw$^ZBW9bxH(`M&Cakr!j;8D_xq zgb>bXBuZqZJ#NmP)~V+1uzrf{aanHbA}is?F={b7$QnJOow)89;pzyDls&}@>kE~S zG30hsoMN!MJ}rbX^!jtAV&gTad6LaMZ5?l_LEv%~v)71Vrovr)h` zk#KQ@GUi|2%63J?9XLG2p4nhr z(!bcVLBFK`pqf}(Od6Llx6e*F^VRIo{JpuGEtIa%D+Ep`jHsh_1f-0s77Z+?moaHy zf|4($jw-o+zdHWaZXUDIx7-ImN2YcS`G5;NUqSY+Di5xrQ>!EjX@p%9IAKY6P!`2;Fy z8!!ll5fTfa+r*XFP6^B)VBHU94>pGrcdi@JlO(oX`8HG;ki^h6h+L1fdQ_M3m_OSubg$JhD2b(2wrX^yf-Sjynb zzYyj|dTaI~yUU>1VUpe(6!6J^DX{I4;s)K+%gyQUbLr-$JnaoDWk(j z%)5n2bWO)*oBkg`l1yLs;rt*t0*2?#)x)GV{~tG^tFPS$@>?O8c)%=0u1-A*2j9mr z;@QD@HRAR-NX&qoZ^h5v%(NKY^MHlCcqz;8^GGxk$YxOYH%MsCIUhHr?vaVVubF`}73MmADY*V#7;{(Vda~14S@~o~nPr%T0!!_t18x?_V>YLRYafCLsE{84owv-f?*L(VY37aS z#SCl01AIGJ52#!ONs@6>HM2_{;lFADMxGK0tS_vwwdbN^w4?(v^mY!mALG^#ycsz! z9r_p3R8FZn)qBGB}fCd?;;$TW#E&<9CkKKY9H?}JGBGpV!>_@ZsMO5hsk!dLsOhM^Mac7 z73lmScgU73(Owx03STQ{K?_1fc|ltPDA9V#fJFy_m7bf8N8@3HCTY`LHY$Y;V)TP=4`F)V+=H$($j^J4+_`0 zlkgVw;;{s%?Y;+O-W_0>KpkwaQLBcR#y)Pc0u=hw5<`4Zl*{>>EX+h%|d$>waNl^MDA;ZPyO>xtGE)TpB;r(!4K#M2!42c z|DB1{Xe67V@s<;L7C`SwI-Q!DpJ6nZ5na<5PxxC_78vN+WBh%6+h^p(6Oi)Sqzk!X zsG7|V!A;~2(~2lz(2vxGwL^E9nj_p3FaqZI&H|T^BACnyklJn!zWG=S4evo1*7k(O zo;P&ugzgY59-6DLlHL9Y{V(Mo(m2?W4Sa0nsk2}#b*o>3z%UqCkG15Y}<0L%|Vaznw- zolM@9Y6AaS4thR!<{P8o)sX94p(ed_9%`v~#gOUhAA!GBSy_4fEZEedqy1P+69lM` zYhx;rnDZR|-+%vwbX&jAA>PYA<;)^PqsWzN1rLDZvB=n3V2H7SQ+wLy8B;5MzTQ4FN76MJVrbd3KU7?f+}Tlh!O&u6N66(ykn>ePpxKI zGig#oKLaW_SFU-81u>pXz&sio8PRKj$AbVwz@tM&NrBx0qBo?WhxsQH==7}5SoD`a zLpN#{8Hi1FxxG5{Q+;Xxl{KhECX-dB0& z^qs}^&eVK^ZvszG%i%x$*hsXjk`4Q;m}!ReoeonWSXkt`(FtX-Ht5pJb$+zQP(sz# zGVo?uG0?f&6O7c4Al?QFLAMtFOq3vJ0(4)VV4!jYlxO%a$R(GDbi80os6dl=5={<3 z1M3r-Pb=RN@0_eHlD!ZEV+nuV;uv>H1o6tMPM3In9)<#T4=U;|pa^7+`P}Ja0_A6J zq(O*v5j^|RnsA&foN5gJRExo>AK`ne|FPlVAAYF$%nZQjg5ANe(|`k(4vqJ0;wLwr zExbnPP+oH`kbMzL?V8PBis6D@Y0!w!7lT#1MJfU48*(LG0fRgQ$a$48UjEiM=?m*EV4BGynIfljs!Koqcp@J zFVBtKA1o(I4l0zRb%UmLmIZD_%7JGRf z*r`(8%ErbYJgGjOeLuaS;P<{6W;a5&&7SK+>eqsr4|0e4lzkUst^joYt_}p&fX=YE zO8iIPSq9lmuzVl+N2!j5C@h;@2Ef}$c@;Xc^S=NOo|LYNwN$M=u875x_$_Q*fDLE|cjK`FC^e8mA_QU=YxCDEo zlz?MDEP?>xo1g)Ly!jI(BSA9JKDW}@noNtl)zwt!6gu@Re3$!~gTvN|=Npkt9^`;M zYPXjT@zGaB0|NOKRN!fMh&up6t4RZI!fR}35E0A!^oem7IuKBOrV8B2)8%<_BE#}b zAN)V!du3&RMi`sE!D=moBEzuPy_?PCcuBJ32uXeDzr#6E+WUhjJXx8zPG@Xe{N7VgwX|&a==}M zmmT_fk7S@e>k+(dt)rcQ^HoUlwn}=Hn(9LM{jy-=7$6(xGq(Uh2Ex)l`)F8>-;rBJ z%7R}6c#M*fV8 zHuZnLCp6WCmw}+HNr#)W&*(PP+)KQ*j?kVy1=fEc{Th-@vO1;J3 zKArg^kE}1OMPJgZS}o9E_DfkACz0m53rgEN}*? zpKxidf}5>Hci&`x?@lV(fxeOf0#154f^M@0oERzolP8M7h7Vxc4rx=Kf@u+Cd2kQ% zo$36pcW>XG&T%qrg)qS0INdnaAU^B~26~prlM9v(GH6@t;<^KDI9zPBIKR|mp{>hO(XcZy&Aa7oNFo+#9F`r?VkpNdOGEd=|&xP21vj)#G^Ng zh=n7|4t4%L$eZ!)L^sL1ch6lww7LD)#s|u@r|7-UUd*?qmla-RFQHdg@AR8f3InB~ z@MbtqSB3e3mkqx3(B0V~!{qmu_AkdcD&5cH3Rr!* zC82xbL`8dg9y}bG?;)yhaaJ}!mG*p}kTBz;IsT`O3?$tF(lUfiS#oAs_1MYuX!!ez zF1vv%eI#fTOR=ls#zaO+7TEkTk{q(~GwABpdU4>PzA}mNTN{*u?7bP{_mW>G zl)E^>2ooxJPp}3Bd>b>A>txyqq1X^`>F)uR7eade)AxdEY5+e4Q(^%{LQQusoKIIFfIDFwKiJm=qJ-;HoIZM*~M8Un}GxVS$_zgjqT%4;BgG0LvYaOE#M9L!4bTz8UJm+AXXhi zT`p2Ce(M%0(eX1dq5>J9`7xf52=G7{Mj|F>JTWm{$R)!NqEd+2y6gEb+zrWH9-un- z;S4p;@YhtXKy4Ahamtr#nPC?h3Mr-%lD31EiGLCvQ^SdZj4HF9tFCav_Y zVvkrga-4)0oEvD?{)P&Czy~tvPC%UVWDi6jfYC(GjqYTXY2s-zyx{SZCA5-?u|!_1 zTuoRb48B@GP+xMp;e!?^Z@9T$q8*~Hze<0H?;y7u7Jm7@=+?`Jp>rb83(yWuHclOe z8E`=FLayU2AcR(TR@N(+6^`>iVC0E37u1(CrWnw9ISOb20PWAjA!bx}4?H|%RbiNc z&;4-T*TKJuJ=+|czf>2Fg)EJ60zfmXlBfjs9Cx#Wr3S>r+83;IAY6JtP6ev#zB{7_BR8Fo25Dc3oCLfUw$t5HL7}|blxDt zWK8d3rVR)0kSHa||6V^2px{qaBf$`WA`HYvUY%!QGb2SWxQyb!VFU3V*9YZ{R;ZB( z>AukmrwqM1G(rN0xds*Z+fC&2ut2ZnuDm%`T6b~M6n!k=r>m%j4B0hE%KMfWa8I`# zq2li)!wfcIK=tl~a5WUVipa~qLSCL)78lnCd8sxH@ZjbtXY%=fAMRX@$7#uhLA*(y z&ClsZ|DWmj^*d~h0A1!mW$Lpfkaw}YNkhw4xJ0lFBKurc2w7UZfj-&sHg z{Kji)RA7Ek4E&z3Tb^@u@f6VKPS_~+P^uR82@;U~{G&BRcTFHrN|8HYdJZwRKYw?w zGBui!g%l?4mCZwb?y>c^|A(!w49H>)+U8gsMZ_SaRa6iJln`lDLP5Hu5v8TOK}7@w zR2nG>K^g(+5&;S6?(Xj9o89N(ob$f#w?CDA_TIhcp19_knRO-Q?jLbwuTQod!4Zf? z4I^)0P|!gn&O>J!oAD6dVHhD3d1^NEhmndLWG=jbp1BQK9k~BK=KghH zw=lxtqLYy&D4dMuJA8WmU>SdsYMu-sw89Hv)3?_gfO?t?v7kF{PpcWhC(I^x<0)+ zvF5o0eaU^(!Yb6o9(`-h7-=$t-nG1NHmFc-hAoa|U=r9Q~DCQMR1 zFa$YvbMk|F1fTcsA#%I4ggP|y_VanDd>7|mecT4Lki(l>6J+9+Vbtk`4X~}lK^o)7 z*Y7DS7u@BgU!|7h&o9 ze3R8RK?9hp=h07>jlu_jHNmWhL(QP9=4^Lx7cjBU;Bj=SKr_O=+daXzM-D*HuAmE6 zgWfAQpvQwW8tz*BaX%Ea42Vz=ca#q37psUcrW1hUUhy%6lL2-MedOk4JG-roJ`R?7 zJf^!b>P1|K_vRoB!zw)HU0#sj(tdy}sH=W?w&3C6LFwL4)N!R=hLLR*zC~ZZQr!g} z0_I(D;?%2rQlQ=k^|{iYy5P^I1Tqr%M$o;#LQ8A2zgq#D{S@77i4^4kcE?RI)ZzE{ zr^i0J<|Q0s=s37Jsh?Kb4=pl{kN_Rt7W35b{E3L6&v%Ff&03{BpfN!Z_PN@E5Lf_F zj2=7#8P$r zj#O>O&8_dyH8ypZ2fot@ zGRX5qM4ktG0QEU&d=N7XvxjCO+{Ok)bgw`*2V$zspu&6;&#kB#T#Qph#r7$EkUs{d z4PbBQT@iKf*aLZ)0^`0nbTI6sCrzUP^U?q-L2?-l;e6OTxuNg_&?4<#6bKPGg6{4? zI;<9OWNNbk+mS{9r4R2^0P=+mEc!Q1%u$Cpl^knqFmxI zR4h35LR*#>nhkB=R$}1H3nIp*U1b3b<1*^m{^-gzLn3URdB7I3@4d1=+#YubMgt-3 zB&0K52Pn<4byY-dL^nJI&uIZw8J{t9vROKS898kil@9NGXF_EN1B4omulM@Il>s1f z$D|)Tpc)iE-xLM^9&EKtFG!Ca#IsnOOv*>qUVmWo$tyV8-0hmoY>5 z^uL7nO-0{V5zu=Uw0x%L8-OkDMX zW2&gmc?rEAKrySOiXI>KU@og4@LajoZ_wRA94kdz+TgGV+*c`aE`LSf4td&ZX!^kn0w*k;V?6EpSN!2oS$K1Xmz%Hs z63w$pSnm1G3(#y&R6@dM7^ZUu2COZ>x0OJ??T1{z<=1*GOn&XnXb^Z&pTz`duFG?c z4+y3J0?+lp-!asbjE$A!+}~_BlMKEEX2M?<{Zy$~s;n1)tdPFIYT*wTPZ01i_$-YK zK(9~9qYlwnu?JUU%pW;tCk?RaDxY;L%*~fR0@TN82D8*nINLRSTT|6Ct!8u(9-;Q~s12xL zJA?r$a0NJrvo!&cBGO>lYnf(9uy>bHSa(8mPG>8leb|25h)osr@k~B-b)XTWcn~M$ z(hz*-dE10l&`4PN1>7w#ObXiOZl(9<Ou7Kw z60#D=_3$AOn5J64iFev3m!&^tK4z`5w`~=pOCIyPwl)%DxAG8cDWIj4H8}!a$lIN- zpP68E95$8qA%UqV%Y@=tmBjvPOPgCCa6yqZ!?}#=MeNUxFzKcJ zn6>0PVsQjJ2fS$>>dwIMY-u6OjfVBR47%wKQ{7Fsf%yYir|N1UND9n%U_rp`p>j&Y z^a6wv+LA+Q2w86$5G-a?u)JUg3_)o~$9|=<1zIll_Vl*FGTn+LC}|B?%Bs_>(K?Na~YYIRyT@e2x5GLPBouOM_3$QDYVEjqGWd+Cs z^d~n*=-;ldO*i@^k@PHTF&)h(Fu#D~SRQq+XvB8Cs{@+Go$bU&a`xzXK)pGC8f4l2 zF2Ftn2;m%>4Z+;#deEA;l7WUB!0>~iLMHIh5S_!q3LSW{4>dQ2O4O2_zGr3|^G-iu z*ymO3QwMH8|J^Wrk#ji!)PJe*WcOMpV!25Bp#apv+#C^Wgd8Wpxd9mUv###}|K$h3 zZZTyt03{9Eg}L93nD+z>5NxRAwVZ@BWd|Hp zgLWo z(4Vk<7lmLSp|$_*baMOEyG%Zi*lFMaRyqfAn(1<&8ZB=`szc+zUJ9TK%wut^nd~Ku zsxnTLdz8Qc&cM>tR&!z(|#@(zZ&V6cGp+SFd#5%9Xu z3$x1yyDh`}wHoTDX5VCGS(`yGu>wfRz-~LCd;S3Qk%)(rl5HRl zv?$UISxHc7IY>1t4a$k8+d;pb$@k0>+vV!pW*Xr1PCjise6r{Mo&yY?;q-!74dR~R z(o|5SOh_&ir2KmW^33INfGz54Yki~jTOL4DL>r#J0+ZuQ>MS5Xg(tS-uSdmiE zwj#;B9ndaffj2?JYoqY}Sk3O%J7_y*j(}tOP(FM31JJ0RAFydHLYVZT4h49n1YUfK zP$u@cHzWj+H&O)65y&&|G4lNdmHXj{^NYFHwaC2j9{+q-rWg{}%V;WM-EUU-)Mn_X zrcNsgMDS#3xkP`*wKk+?1G&-(U~sVw1)vM?aNQ7y#+T^8a_72SuOg- zXpt%>AOiG4VD?Cy7Yq2{>>$&5`tqHu!V%>U9uE8lu!^%G=XPlCw9y4zKvLkvOb-pF z-MCXzuu5t6-8&{ORv(y{x4Galam-nYr|vD3$%2B`Mmfo2We}S};~3>$7?t*PtR~=a z*$wdS-3Zwo5OJQJ*%>!#|G*!BfIh1{7#kady<$QAiRD28mrb$N-#Td8d+FB*_I@cr z>o7VP-e3ZWjmzm4R@1u)N}1Q6&fFTooDl6mslBGq8xpQ*?y z-r#G%m^8jc=q+qWUgbl3`!AfDE9kNQ0k+{_-p040FJ96Y2AW_Ui>QZ)Z~E(P5R^?3 zcIJTwuDFeq{B_lVM{x)7D5QQAE&lur{e#~}8?+ro5R1bFw*qF{0x5AqXs|b0yua;V zT2E;v7z40#44C+GSSTp8F4Rtw{y?jGsVFzD1%=7}i@XqKLlyJsi;FF}BJXYUkkqIJ zl*l7tz`xIb!@Js;fKOihKH7ONA9}T7m6^cOWM6@U<5(Jqwqa%A$xlOu{w)CO{E&MD4HWSL&XE5j^e$e2?h7HvGuxQy$o$upr*no*%*qrn zKx_}tX1DOk<}uWA*g=u^J5aRnp_Nd-qKj4Q7ek~=1f>x8vL0aDv5#GU2L&f#_68lf zG4XRpxIcc9iF4XH@WLcxqLLBcBIP`Y#8Lp;E0sXC z544bk_~Sc5+;wFc2bLe2MFH{w|DL}6;WMG2XBrv;&LH6-rQsr!0sLUZ|0?dl@9cE} zxB=)xZ-#J~G@(vCI6{y9afC|ut;&w`dyiC*R84?y;26ne<=hHbJ>98Or}~|DKrKss zMFMH5z+SVe5wkF`>=0>VJ=Rj^j?_LEb|ZT|!mTZG4cnnVr4q9s<`~a01odb_mVf{R zxz+CoKDOVM#)S2V1Wx8nMzfAwrkvtA`Uhh@h}(vc3NwDU%J5w)zwR^p8=Y*T_`#ZZrm(ttzIDRKaw&$$9o<| zy(1+a$R%Zta9R58;w$z5UdYots7E|K3P0KgME!W63ZN9!52R9+|7jM1xs^^@H>{}$ zHBj4A(_k6h7FrO920}}uZV0n(*MbG-#HgrCUhu8>A|GGuTwg^=>vxWs8HAE zF(Sf(BxhY^Qh>`-&+Sp+1W=SO&v!G-qH#n$LfMl<8ip%)%}0~a6+<|Lf=bx?=AhH| zPIDYXbOIE9{)>r05y(qC=TK~Ht6i&bqBuq@=oy3D=5(C>$~a?9bu~B-+9=aFt^)|T zRQ8iyxo{r3+;H2mzP5nAOo?+JLT=*U%X)@iEP}=FQKp!-JMyvPI$)L<(vW}-!9C~m z;;|4!)G8_X!QiIrzziQww*^Q}B6*wlu!F>?REjcc>~}$d!#M=Nd<+;P=6!)41;w~P z3lPeHG?&lB=H^%E!jCx<(DekgfIX@OWNiA@et|0$J=r)k2@_opADfjw_>y%PXapQZ zpY{tNe!;;-VQYH0Q5n#1ACGBMzZYOxWjG6)k}%#- zg$yzSJrlS%bbIKNt%QB4pi^ujok44Y^-{$ICinzi8u#967P8YY{&FHDgsJDi2*KtM zO92&b2wMdf--rH$TJfgVpAp}Zv%vZcC+8{7A$e*Wsn#3(VFjd2gx|K8=tD?>-`L>Dd99)B1y?8LZ$D| zx5Svm-|lSBcmN&^{v?j#9@^d|8}izIjZV2=;)4xvkBf47(_VsacEv4?l)w4 z-_bCpz;G%NY$zD@7&->E3)nq_*Zi(dl8`^yRR1%Ozzhl_56*7Hxax&Re}1wk&?%^`j>KQAQKxuMwveBo_Wjc6eyl0pPwLg#qj-Z32{J=E7C)9vDO2$+MS`5a)| zF0r;`oWK##N8Og{C)xCdRixkkr-Le09A?w6kAl5Af4WPp)e5M{t46CAAZ%?$QH@Va zP{x$4FME%WQH9DGMhzYMh`pW>_<$nWU9M|!qJ+@Iyc!d3%b>2n zd8DEd_yXujI{Zdq-Db&Ukn=~HPj)6k|1TIhLqCrR-uw|KK+^?!_&{snr)azk1fN5V z#TgLMzaRC=nL@~TKHqHQ>xm!0K~)2LSOOrgC@Er#*Kp$3rOw$v`|+R#zZ8%NN?Xko?9Kj$P`j!1 zUzzxk2q_c5T+oz>{|%s19R36{M|A>0?9$W?Kmf5}gj9bVKx`{@RA&4LKrx4=_Azd4 zD6+Td2RFe)piGGM?t9=PV)ynT4opWgfC!8bD2uv?Y@|S;=-DdB(r};{tSCPE+L2(& z5kiwRg~j6)$aNgvei|6j5eTypz?cUBKDjLWJwVW#NT?NuW5A9apiW6(qwTb-WTF;g zt%CroWCgBpLUcTGk^7DXwAFzJBXk7Jnhnr3^8;gRE43iv?M@x51Ju79MqHjSxAhea& zjezSQvHnNkHozo!@WrPP+KNC%?H{!bfTXLOy0rHU+LI5p#xI~YqcT!aa!{nxoBPe} zEMQPvHpUk=M(^ju!l%Yy0Vq6z{V4}X9|C+sDg=RJJ>SkKcGs`QLNo$nrU1|t_Hn$H zE{~wI*Cm}nr2NkyhM6!8$UwfNE55mD1;(bBs(a+#4+-@=E5D$j%v&vpI6z(DzlN&y zB)}KxfadiHgU_Bqk96UDp~Vvlgtkd_37f$dI0Csub0n+k3{^BoRQPErxv3~IOd~1G zUGHHq?0UZgUi3o=iQ@54Jgn;auvia;gJ7BI`t5Yq6 zMeIbsgGW^#WIzC4KRjDMlTyVE?nGz zJlE^jFy0N>p9p!>Hy1_0XrToF?;#i+%{9q=s`oFFvH1pEhMgu~1EHm@i7te2dcGe) z=Foh5O3y7|hQY$4(S_UF^mE?ynJg>&H>AKhxBUj#P{XQA!1xfEf;maf zPzrK6!)mG-^;$X*${xmRxsQ-^1e$_*cV3;m@U;S(j6Oha_KX!4ZA%r&f{)=z&tbCX z?^2JCGaDcg-VFez4e+ikEINv|4Jws%!wJtn0a_0vdbSD{>V55zlI!q5U~7t^;G+=q zL_=c~O5Rqh(U0E98S}iFEu4}h!2{0K)x>K`k;-H^v)ORoRvP&CHcDKsAY*l|Z8l$O zh9oF-r?6YTi5$FGq%tVIq4ND!6%x8UgwqWro>*(@+Go8zr4K~+vqGy`BU$>M#eE1T zzN*Khp$p^WoJ3U3Y!cM+@N5ny+W zcS%G1-4Mpf3>$O|5vp~V^2l3)L@v{9V!WW$u^OY43UZ;ka4a^b@9!@FvPXXv83aaY zh%|ZvaXOFM2in>ompf>2N8b3)f774o9^iNI4!!n)h-ozmHVM)3nCRgVqH8oGfe9)L zybRCb;Af%n@iy3)8pmM_*!12b;6uTYr9R);BtoqOJ|`VGkWX?=AAvcl;IVwcSa>?#ePD(_S13drPhL$)6b;Z8VWnH;9_CMuCn;RPBT=0;f@ zeyd_mfajc7W0a*G_wCkWAFQ7^r-Ow+NBCpt+soqi5le3Ofn`r?35lhg6S9Xn-g33BS$$5&6x98GcA8QBsybEoK zgMxw}!M09=iby9CwZwp11i3_POpGHG50JlE;nsL7qS^)J-AA>US`?hoW16gQ6cA4mtELX4mh_S0V(K0%Fo($;ju%==Qze2o}Jb4n-uO1*mKw zG9$mkgH-+_7a{m!65bK$N#z(D5FYGrghHnBq$jisB8vl$yCUC;e7s%_JnwZ9oWW=k<9&6EuJ? z_s>rt&ORuLgY3$ z?vP}EE!c*!Nsk+LCQw(^W&@_>ji5aaANc~9-c3o0IS9MG?Lz{1Jt3cD zu6ZGVCg?2?5N9MCRBD`uxW)()1O(YbEuz(4;*y5&U2XQ)(!xG`fbxn?z$tTKs0nyR z>v-t98UYW`ZiV=NCH-(J5MlwejeDEssK?QL_X+$|QiTQ$yFm zT--CWYX6ji08<^+(}&*LNf<8pYy^R}FvVdNXgWd-Nn?QV7yKA%Kj==fj&(V3cEkWo zgC@Bs00G_DiO$Pl^syZr2p@J>HcD}J{*7UOorg+`GoU=rW53sW5PUmGhG2Fm0U7pN z<$nW-Uxv~1PXGmkC_AR<``8c+y*-J&Z>NJ)H@2!na0j4MI7yeT#zHN_uiJ;rWLGW3 z>fs<(AOt;E6P4oKOt5_wPJh@*uK!c*;d(y6-yh6w0~(lq_+Wh# zAIb~BeI}$uj7#tx`W_J)n>}Uih z4`wBJA?XjMf>{7i&`T;52I8eXt5T3ABqoM4=tAHb5A8e6Adc8I+N1|1w;Z=IrUk+f)~Jo4>+QcaEywba@4ry zK%3%w>Q*%as;dLViL zp4zBZq$C!Yc+tSZbzJYtxLiiz;y8mwW5DBKm>GZwCjp6Yu4W-+gv&uBBl{K1_0Sm7 z0Q-6A@L=W@X%)B{NR!C(kK#lFxU6}&<}pdvXhdOrXq+!Om;!{1&gX8l^g=)Fp|ipg z{ht#AnGO7tUomMO9$+4#4P9M-tqpmIVbZODU?D>cF_-_jCfP9Pjbx6ZoabS@@eX3O zNi;Oi;6(k6t~ix@fr1#S=c-_Axb5L;Wu3QMR)L-*eN!!8t3K@b<&Qv^SxJaF^G*wn z8>DVQ0}CN3u}k;7DL*6qOi@=XWDKMOY5yqjQwiX#(cg*)&iEIQJPx%+NL!9c!`*!-@`ZYk z*MgsbE01+FFi$p}&(q!fDz3qs+YSbS%2aUt5DWN^anM!@VyXf}o(zGQAoFKz81;^XKh`l{^OCdFo9OoC^4!cdr!uG=jtc$w(0q*_F;%8GxTPLeLe>Y z&-IwhlP9(l;pM}8b6Ht5zAp~tx~7=VNdoG3IK2q?Rk>h0KHQ?0PlWk`x6P0W6*!7l zkfV4KTKu`dmR`Y7&+Gul1c#Fsns0wsFxmTY-6h9aKz;s4Pg;G=AG{s9?XHb|{!c+A z4kcRa51r?yc?-n|OLm=#;{%Kw_CFi@x@cs|SMS^9ZWQlpk8ax^l~R{aQ%?c*ycz$& zF8Sq;=;=Z|Q-O2n`9kW05$Dtl@?`&@W9cdi@A*fj&nT zBfFxwB3r=C3i3ct9Zk9qUW(_5h%%0ex-pV6|DmfnC^aRW&lzGVU)Tw0*eukoKW)J| z!CMtFVK>mtN&S4Ga{$O_#t+n$oRs8RGN6_H;)@)0=F@iC)`9^MoaQ%JQ{xnZ&pWY1 z4X#)@Zp7+6T&~5484AOlrcjtML+egojU+C*P$tjf5JKN$!goX1HjvS?trO6)cZk_8_ zH)K+9=CBhUfADmMdLzI$Z#7Gnm6gT4or_xeNncZQc~XwvXgAk!XF9yd3*jBPNQwVHC@!;52Wp&`#GQ z3k%zZB)B`_uU}zKyPIaCquN8}_`}p}^T>{=^flsrGY|8m=vH%&bI)sZ zo+!5_CM3IPo6GgKvf;Op=Yjb|RBYiJM-i#th2bq^8;?&5JPSBSMi`cOs^>9G!UjzV zHGu6ehJQ89ba;p^)rWh8O2oOjyDP;@d@b4ilqy9h87_K}?Kj}SIIU*_K*8W}&4WNu zJ7p;mIoSJTWwp9T7N8cP@!X9bT^}_IrPdg#mHRmkp954w^W_yj#HoFYy)*&MpRHa) z4B<6}LS`?lOhXecZ@Fz4IO}?o7F`)H|0^!A@^~ln@1&^o#l3NhNST55 z*yECG$`%jU{HcGg)31~VUQi>~G_PB&J*S(v*F;K?L-fcq@$P<+5c%WlN(x)WM#;~Q zrr_5Utc^N6AfCOjR&C`pJ4_V zk?JlGzt(TUrJ)K`zHB3M%lio%KT`?s%|=P`Q{JFkTV9`xdHKplti%sS(*vv*H?@18 z%TljouE#=>BRZx5-Aw~uQSexCD07}wm9@62$TTLl$(j@nF{1k_K(l;{orYDmHKx_$ zzJscI@l_uFv7)#-m$9o!g}1a9e!4!C|CwCpVzhss-6+`{H&fA>n(%BuN$d)P*sg}O zw`t@L8)vCl9%eQRjqPGFrE;sBjGK4Jialq`vkfy_gPv2^+B~xDzlmF!cJrj8kkeef z^);%xC~r^wsj{^mLY-`}oY3IFLZz;#@+E4#F6s1utkp#W*ZW7!%*uN^l7eV8KC#$u z%{0kt@N#(f=l8PNYumTcW;ecn9H;kbl7KySnU{`lbS>|4T%hu?H^mm#Ps<`$HK!6Y z9_zvBQ-{!ylykY_6|RNvi=G@0X7yc?CbrX*-5T=xXG!gbO95$oAidHyEI<8gh#4fdOl=Qr{c;~wpu2xQJDq^9I&XMC7IkKer-koW%E zh+F?m$Z)Ao+9@qoYHDFN+|c(0+((Jk>(YwT7YSBxfm^A^&YX5TQS|84c1q6IEaSZ_ zy(6Gu4EyriiW~@7SY0GVx4UYlIYHK?@KEhN`JLUc*l}@?;KnW1nY(7gdgw90k$Tfy zz8)mS=2ddbOl^6nv!<$-zxb)KX(4^qh8nk_>G7n%P~1z3%k5M5Jhw932Rx_@T$=P| zcZzGnUs@!cjXn|>NlHE`HC;U7R6e$a-$m=@u6^SCtD)LE65fm3JUQ)`jQ8tOn4QO- zF-g&}Keu{*@5K;zwMRxxr^Wdm2#zQGp5IO5-#tRaf6|*l>>bf(c$XoYJnMnfLr5j#2Wv+<*WdoU$%D#<^dfzffVuj82eHP1U~$I?t0 zI4ABcxR`{k26XuJ%Dny+RYGk#px&PRw|HyyU=+E#H+gN*o8%iN;@Ub-H``ub=D+yX zVCpurWr0neO4DM1qO+P(zjuuxEprZKXF+I83Imbo(Q*U6>LU^}X{t&ZDGss50i3wk zzG-y~YAAA@6u*^iK`Q%{*go4Pe|n+A%4o>VCLPzr+C|IO z=Z4aXw_$R2gx(PtW`BwvU!r6`-vd5u!f|?VD{(B_o8!t7OPewlqVBC@odt5b5`xg3 zw!YmrAq(9VahXZ@mD>`^wt6DQK671*la?mFg@r4vA3W<95}WOe_C}n;f-Luk7TvVv z&#kU&Eacmm+s^mJoDtOZrtDD=_;fB`$3rHCv7s)xd2e1vry2F zHB!pddN+zMOCmT{^}{VP@a8D&P7NG99EyCmCyU-b`dmfkzeBrwR73i@ zL($5(X>I-=F8&LJiz$mTVlBgXFN+o!3svb?M4WGnv$?Jq_P@K}9qhI&9A(1x&hszNEpMuQ!;l6zE)SG{yx?@+ zjpQ(?56`1zTa~)-jZLp_8+h494G~3GD@1%FoW}yr!FEP{#hk2r1k`*`r<+8-zD#Ch zybmZlawWJ2>Qq)L*?m;1rSB^%?d<&Zgov!;Qc#JJN#vglKSI%0=Bz&%dHb0I&KOQY zzoBzfrZgOUS@t3|PpDUx=Z%Lm_GP6BWJZ2kE10g7|9bG$Gg|uh-)hAV)EjU4<(25E z4o&NuagQv|T&_EjThgf{_bxyP|IR6z93qDMJ4wRoB?T7u8nas5n6#+!?OiTH&14}-T|yi#x3bnGGX zmY?MP*ul|iYHD8l)@UI-#JbR6tV?KJ-GID>tLS+B8Z|Ql`#AuP0}BPL5TwAe}8nm<$Ukoe{)48n9dm{1yR=!^gLEul8}T4xPGlH`{J>h z`Hir*VR&*Yp#>6dP5QrnZ8$VkCASnURBUf=kNKog%FVt; zo0oW$^ggj%`%`LD@%=XYpD1Pr9UN~@hYqu{%T0pXlqz>8Ys*Owu>kJm^!n1D{Eg*u zY{o@4d6|Z+J>B z{5T>+_S6MVKw?8r4?CUSE5g@rsFqhLu7%>z#yj`?m?OyxI1#_Mr+X6Ki|h-k_u>vqfWygAq~vH47) zKF-K-B&^^#A-h^hA%tIz^wla=J8x?7lo7kHe}n9(JI{mEn;Y#U@mmrUw=^RP)Qlw@ zg@x_A3~w|XI}Qr_dqw8#C@JZ(Ikn8iiy>J?brzid{!30zIu-A?L>Ijv*mTZZqQs^7 zD?qrDIS-(uEFozG4Cwb!jvH<`j6;GMI=lag8z<$LA_TueuV zr>9y@?rl%)t17Oq_W|l`wb1_xr2fJMKO?~D?fAgQxPv(iK1XqV)Qh(L2($FQ@Vo5G zVH7}P0^O&U(fctW*$G5rAw@mR#6Mo_@qcc6xa=$Q;5rws+^0UuLW{hF?~^uFcZ*eq z$Q1TJHu32kS+0wHocHQn+zBg*70_5?@0f@de%2WF=+-MTu-abR{B2LmXNV&ptEs2A zxLjNQ!=xdF`V2mACm}sPWVYrfJ2x7?T)e?&zsiQXLpm6xeeRUI`PwwI+)|c)n&s^8 z*&cMGqJ&T1GnEjjf=^se)aw2pa0;Sr}zCd zML(ziw){%|lKcE@%Fw;#W2~zvUO=gy70<>UP)N z9h{tM?o+j=-_xF;RuzJfF6v~+U9+sj=1cU`aysJ+m6dbusTStb@ri72efU;_N*)u! z!rDZT3XWftqvQlFeC4#zXOMYngQ;TW?cLt$%k*5*si1qVFlp!}d+ zt=2-E1tpLf2ax2p$eaaL; zfT+9My*&9V%g+|XSMixbX@4n97Z4j-eC8>K7h{&`!HZ{u7g>uXTd)4v@EDWUxhm+921PbWf+MBBA7s`flGJdmmx&c$ zp3c5@ecgJB`(=N(boH~6$;`T13B;ecE4*Gad&gzaYQe^aCa+btU^4IgqYtEMS=ttBeuLGudP; zJy9u-II9Oz8Jty>R!jtnT?%?e7Zdj`v*q3?@+im+#%oou|MhdpqTEYTTl2QrTqS{8 z-Ra|O@u}P8ERO6s9f}0h#98wZ;>6K{ac(T^t43*CA49Iq2cM(h330A*Yr~LI)T(#z)AFDS@SJ+V>HrA=^qfZOlmWtY^lU*<7 zwU&PVW}5|Xqv6g8pW8IGk7K4&`Q>WT!uiu#ZABhhMi++3zki{&*B>@^y_T6(>Ur2{ zrK~7HBTp~SnNI{&3fa!pVJE@a;`-g!x78w@ciJ|Lj@#lp^?N*jvM<;N!) zgGVztju|8+_ii+aJ?O9tCOxGmMY-;AlA2)4!gQ;RpE%WRq0Zc|D}*@Eo6e8mMB$SC zlcl|?&dy7$vLWQz6muiIUvoh6Pa1;TeEZpR4VS$l!i8Qtx=Wg=jaCv8dvYb$skyB~ z5&T6;4HbF4jGYbYWTllj`iR@l9Cy~molB8*!~ai=PH@zPlb(&|ds~E2rr)Yo$4m!w z%a60wL#UkLMbj5wG520f)?Mdlug2`n#G2-p8LKl9EZ44-J~Muj*nI_aR9cVdKcU?4 z;KeN@qV?NGtxrHWHj%LZb6x1VSgT;fWbx(})u=RPpt#1chc zJ@C-#w>LB>u;y}pdDU+X+H^+#PGP(22UQXA@wBkY#P=wc#JCPHNuk3=F`?zG9*@=Z zUHA>;9pb$cVpGw&sUD(C;9H1M%CUrM-^wk_}Bc3qhs&QkxJi_G6ymD zL-Lt5=XcWuwU-Kr+XEqxx7@!HQmYA1hl$P2NkM5gZX2I&4%D3;>Zi5Cgz9eqb;i{pI3>tWk;x;oFwMZHxQt#xtrTKvzDF}eZ2B} zX*Pon`@?PXiN7x3$~h74E#EG7rdgAU68>Iq63)juncMyM4(4orA%560oy57d< z?kq)1hhUefHhj|NiBh+iD>llnS`dkGHMmTP#2hNX6I`nHqm^ll_w9Ro?iB_P7f`Ey zYg=nLFOi+xeL_Ox$A(&V^1N_UT8jT1YgKBVYT2op=%Mj)T>{UfMYSvkTFVhO)~2l3 zuWC2{#(#g&v&3su_eXs=1tBf7YNKnmKz@q)&I8so?OJ-ZYWwyYJMP~0hmzmo=6(ej z@>||!NTkc9FrzCmkGE*3zrsuNK+Y4u>~q@S5%!G@vuwur-qF?WE3#r><=TGlC(Hk( zZ|?Bn`nEflYkwp~*r)s#5F`Ho6jU0dVj6*2D4 z67jN`=ZRejIN{^t^qJjoeYDySvPC-2cXhOu-@~#KLUj=R(LIg;%r1pOM84GgFa|~y z6&RdW_tm2&r=`S_*vZmIpUh79lO`Z5?@TwH#_Lm0xB1MiJEQH^UHg!M!lp=M;_IC+ z57w$1To!9CX0yDimwhD}t}GnlHqJi2-`J?%z7tn-`t`$p(unH@KV1>^mv8*@HMD58 zmoXg{bQG;gyB|+VMt1sQqZpBha0KKPapWt*0QnuL9@HfJu(lb;=hsWFg>(d|IGCxCtG^$LUg%PBt8k*s_0_Cnnd)r@v*xl zXQPS-m%Ryxo?pS+eKFT}YTnwhymxSSqpja&F1d^-nZEl;$lI^u%34p$-elP6x_SNf zEn=^<(H;7AF`U*ZkJ&W$tIU8eqrZFCR)aaEvF`nTyOB8p2KzxjUH{7K@)0D0At5&u zg@~<@__0stMX&R(w{D49JB^JGfGe&x$re&K^vko?A_Uq8NQREm!wV+9!Dt?upaGyS z*(45gS`@y2uZ$(~de?HTuZs!kXNSkXncdkCz(3QsClx|QUHDvi@%&Q&d*)&oN7@-$ zm_-&;irBvu_Lzi8p6446JX-ZcVU-RwX!jdwy1ObnR?xlI)o*dd93kVRmd(hUt-&p5h@`C+D;ueDB%L}PmhldE0Ko;w9 z@GVh!{d5KH?;Li1yAMR756|^>kE3(>57-nm&tgI$uEp_^HW2nsGL3}q3+?^ zGX(wlYe~6m+MG!jyK25}ZEpEwvl1o5tqh0|z9v3u|KW&yu_1Z?-w*42y;VCZQ!Mov z*lt`)F*W!6x_6sxeP8OC@l5$23O{il>{EPF>Q50me&Xsc!aa@DhJf<^q*?5b4A3Ec4?cAVkqq2D5u#Dz8Q|c19)N^oB&1_|IRS zF@cOdbjQDZ@vtmt7GSZ|JAg&YoFyVcLyUwg82_jG{{WYI@$X;1-6WL0P}Op(yg)aG z=1l0@P`ziIj!|(>w{mF1m>=FHO3kb!JLz3OVZ+1!ebVp-S!Trdzph*@{B{4->1hd3 zRYBo{RU_Uh}b`v72h&bjTNGPpU~Y(8W-GCu$ruiD=AU<}LRd*CDeV95 zyXMCUeRD-lX=&9%{pIA;RF29Euws}R0VGPV!N64PS7;=|xP!RevWtt0BL@sI&X8UT z3WZV&Hsk_*5b1#i~G)D@*iIb%OlM1~<@DOti52$>Q(DFC9(nl%HBVH;o=8 zyXxCd5=6Z|sTRMr0Ph#gFQ@9m5Imwi_|EzWz$9hhruF7N<+dJGAYSNROEFd?Tb+E` zmKxp^&b{ogLG`POc76WOIq+NMd{8wox41Y|9>9>3sKuPtG(L_LmBQtk|FpTh|H-d! z-wk6X-YX@ja+_quDXIJ!?VxXwOm*gny=0|$o%|*lhu>eusVul5#>5xtMoG=%55jvhT1y(Widdgr+S5}jj`YiAkw!q^+TA3iV% zVd1oVDkbM!ZoBC!tWF>oANtTGfyeR^7k}0V&h(kTa6->cc__-q-FrUj3GjipcMl$A z9C+uWql;@D1Mdp;@zDTX{vPU&Sa0sG?By7b?T@y8{nG-)kce`J%PM{%R*CoJE2cy; z{iiE^KLz_P&dqDlB{K7ErnnD92aX2GCT2x+Wd)EkXfRkM)p622l2hCqHI}!%ocAns zCm7FL3_oO<W~Ohk((P=c+;M=uFMuYMC+VFTcF$5pH=p$WmJ*E*ETY=T$+~E2r?6 zLgACMd>Q(>U)Vt<(6F3&EjaFR;^^E=R1U=OO)MNP)`O)a5)r$%X=!yg=F2m69ZvR* zjkczxH*5A6Dk4c_Z4B^mq~stX+s)aw0%EEb0LPh}&NGULD8E!pck zO5i~-tGde3{eQ0S*~;8{2;gvKbqN z2UZB>A7ecAw@)phRjJ^3iJiM7rS7c<4s?>mIkyULrGZv0BoTVRdW*$qw&2@Xa(Fz& z58Og>Lg%F~2}g-9bT}8+R6lHG+%7-0^MJd{G{aGx)Wy1Vak`HEX=hKf=5!Y4<$x59 zON*4Jz)=wQc|6{j5wnz{5~8GJLvzK)mx}QMSEA56;#asmKv(!U93vuWXYX?!Hh~C5 zAEGh}%*QG@1_Zxpxg03{3p`R?49zP%$gABEwX^RYW39Fc(5Edaaa3&e`Bo%0P#^BF z{)3GpvEuDoJ;U%(+_%c2DCF`;?`>DCiPrQBoL$i>)wIi*`rOZY$xK_F*E+OsnYMk@ zJjyZ9(1M`2#Ujrnc}>{fQxqx++os9=mi4Qr{mN5!m;78LlR><9-=bT%I3wKc*!ql+6Kxj_3gQ%uU_7Hcu%$WI1<$-xE&yUWGT_;Mj*y|QPcANPxg=8L2>)LTe5I0 z;S!K#U)<~L+;ATcwlncf=?Qxw_t|aivqr@!oaxy@MaC8ZUF~T$!vH_{TW$T0dcD?! z%K%Kr0+8^b&vL&K2Z;IQy;r(wa}^rzVo3}*nr&O$w8?|}PXRI{fo9esE_$p49{lTof0=8hfYRDhCw;dUl*XXU26-HEAyemb)Wy9 zoejf7nUCAd|7KQyjGUA)G{G13aeLIS0Rqdwml3=vRqsE7bv?WU`Yy6oE=|R&Ji2Ev zogy30gc|0Amy?sM$jdomgiiS6$&M>me3FKR-Z^6S!YWFmS8eTmEOgpf%E6g9Bce-pn2dP@@~lEa6->ptmxw6e@ZfWVAXkVGEkg?-W|m>H6~3&o{%~+ z%mmEy{nl>_!a^08FBI)nOaWI=<2eXu=o zQO`t1zR6Z$Zku+8)HFTv5rUX$59Um$8(_u@|DHc45vzBEf^tWczg4vCVBcoq_ea0` zBHkBoOA-C5P?MtbM>gpuW|OYmxKT3SX(mMkIoz*lX;6U#SAt057QW!UBDbr2d`&GD z`#;?o&R_7u>>*c*Ql?Hs1daSss@lLQO7K@crliCXKG)Tayn7D0z2-h*+XZO81OC=V z80NIyiBHWZh5l~i*;6z4g6h?7mXw%JJn?5oQMK0>d3PTW zYN_K*O{o1*LhX;eTOL+^?@M;A6AkgxE^ z?L+{m>MiTGeD4u9g0`2aEL z7876o5BEs#v1o&d>Dsg;t8Vc|lgMYxN6n8@WF~LxG(F|MJd;*J!X0!jl0`bZtk6rq0N7)AW*NC4OUaWs7Ue9 zMb4^f`K9Q>XIZc5ujexi{+u@pu}K>~N*|EVDMe~o>wEw4S%E#7HgZDiJeif&Z+OEE z#K^;r!*1`aji^$3i&lQRw)cA8pf7(-)(%?oYU}AGoQgHP5%?13zy=2g!<^rH`OfQI zy7;G0ACqGDqxFR$gY9BvK^jzaVZ#6{bFSgxy*q0caKd67RW22nGricJ+P6PgMlGYM z(=M%85(iI}H(TiE6>@{FpfQ$Fa`f^-N2cSB1e{2OP%G-P``U@bPpE3u6WCamGaEZY z$<^82-QC&Q+10f+*OOyqSb1_<0baBb~K~4M#!a$(E*v6nQ7{KH~#Tx zT*)w}>j{Jx5xgGq|Aud_fwJ@g@NIKl4vJUFngqi5=V z`~-Lp{zxtpr}0Y83I(sdoL8L27)%K{Ud5wUU`-@o2Iv(9hjFJ5<&X^EhEKzj+4P#C zD+bHfL8N0hC!1s=B4R*eA1?y=)V4jc3RMGi2I6PJMMp?K31 z(u)_fe$(tdRIp8)(I-FE*B`sdyi%a2j)wr;cUSQwPVSxc9cj{~uY`9Y}TC{#6eZNo9pl2_cl3 zO)5(E%naEp7-zrtgG3o@6jWbdI*mHmir%HfC~lSxNE`6?_xHx9fNT*XJw00Y)0&#eieWfo zZq&%gohrCCiPo4q$%r37$tQ{t8@D}-d1*j}vhrFk-11aBr5BDHdQqXkMhv1EOQ0_@`mSCe>$C$J?@~NF8FlqBwjg}Q zC_0_dgptVi>({R>4(+jg+i=@RMj@zF!6%J!J%GIWt#LnAT;X#VVSizknAGkk0ASkM zmuqW#nELu~>%0k|Y}C5j=M^+MkEOMqj!xmm#HJ77YMmE8#^u7k zPXTzE;oW$*+N0jwXF=PW{`vXo@Qa?5s9k;<8qv!3*4AoT%IE8OU0q$!OX)gCmSVQj zy^=2kWr{MO!I3KUTDw)o#Jshv?1zr)D=H?0DxCY%l23!49YMfCOLdtfUtwZ#i4+ieAQau@6c{)?iLu|{3;;1rY^-+V zSeMKe3pzmel`@O5!%ZmU2rYX$zho=tL#=pux{$Vbp(9AMBQ$hOp|*bW#!kp}|M$k+ z+t5(0wzhcU%KF~k&i-;2h*Y0ggY)0(Fs9AqG4mne6wsh10H)9CA9Ev_5IKz%6(Dpd zlae~Za{JcptlJ*|6o8QL^X-h;+dFVO5wqyeU%x)A%T4!1~9e3pemuEYS>6Ei_v{W zTo9+MS<<^x?afdq-9Z6?owWcO4bFg!$$SrXmWi5LOTC}LzyRXd$UxtM9HnJU`!xW{ zmGjgcHVl`~=>Qry0H!_Y-!X@oSfr-olLUsyyV{{yoiC0KGaT0GD8TFr{$4 zO5ct}oUjWXflxS@3b?Ap=y)NwELa%GKqMZn-Z3#Yc9j`PdJXX#URw?&jX0Oyhr}_w zCBNp-t1FZ@x zn*S)slX&muvqYIgAPXrJ1O}=#2GGGl&RzSxI?>%d1lHyjRLK(WgTFX2BgeAGM^eWa zpGn3u+_`o80xyEi2NxrowfN!)+9wVugjatO$~&V>*mvQd3?5Gl>LSmK7Hh zlb8&eGtNp5{h(Lejb|a*2oB>I*admeGxG3YuQM1*Xm1TySjRiB`GC@OmkMzmqU5uk z1=Hq4Amw)gp>GUq3<#@y4TSzs#@~}XVSGudV;FnWV5<3pSfJHekL7_bM~MH!lSM{q zV;v40pMIX2_NOqy^(~z)f%!RR7-AquQ;gDl{`&BtWm+DH#9#csGv$OyL8le1=Ts(r#FnD2x=>G8#tOZg3y+0eWBycw$CG&DqAy{8lz zxhW?G?W*O1c!>MQ);z%h+M)g1!t%(T90o`XWtad7(6a$jKAPJNT4XmsQ$Gz1 z*=_%@s(QRi9A(RYvJtCB6zx6h#`REiu7J__#Mex2B6ZY^hH z;uu+RPy69b;MICj*)wlJmlSmy<~KhE)*>@AGj#D;YHfX%xdVkfpdDyyG`F;H8IT&r zXZyJ!icKUT^cQNgS0Pap2fq;M`n|oqUFzAhT5GXUupVI;$*Vr*@CRaHBCt$c>#Mj( zyr3-@#z18Yohln!hNgA$+D4y&dWw;opLe~yaC&(~<%4Kq8egnLF{`5DB!KyQ?!WU;`fZBW&C z8Waa~YP`oDzYt8Swb=C^_!+gg{JXzE)bnCc(=~-K9Psflvq?}J zD?qI31ZU+5SH66?uk^VYJj&^5%JrvscNBUsN(|oR_>=J6WT0>gItOfwLgfu!8*$@? zuU}!?ETDcdRA&x#m-OZ7C@v*c= z&;n1&c%GTTuxCD#d-N9xNbkprsvjckML8`+>Qk}7cl}s6pTx-gvA{tJ>jf52N$pC)!V z2pUye*0#1=O(8>U&Mc0LN@4pWP&2h*tnZHZZr@zXSwoK$4f54cT_3Ny@E51JbT^ zX)Tm%O+i6{`<4mdyOZBY38>zOW2oQIw3akc6bKv8oI4y)$94=RBrJadC&#K(+3vkL z>n4to+~)}&pT}}%k-Hs=WYIv`-($G(Gs?zgK}jE`WSD3HmV9h%YHqIH_A&?t&h+Aw zeFL*|2zoR@x%(=edR&G>&^yk~&b|3s7Ut$G2?r@!9^edjmOy+GF3AIBaQF5Wi)wC` zb^a&@=oy4@6yq^Q!NJPIqt_8vmu3I+OXRKK)9&qHX*X>yFl2R}o(qnNVPs~om?B}` z$jzy=Suxi$FksNAwB_vUn?e2jdm`xKXOPeOWi!b@HHuZAu?3=aT?mp!(5*x)Z67hSfe@?QyvZlinW*X4pIS4{bVPTxmo*AEl z3w)Y$h85sC1Je89_0musBC}H%3=6u2DmS-KA_(SSoDg?9zxQY1;rM)3lV2;Wk&iTM zGmoRY31$$mmr+qYF{6lchErRLz>(XY)uz=jHDkVg>^o!DB6NCuT<7J>jjbUIrm$v! zRoWuiXP`K|({jbkU&WC?iH1ZNVq87IwTlc`0a?pJ%WKoYu7SG3q=JIR>D%Dn}M4fQ@$bUgkZ@*$G*PZAvl!n zJM$-D0&RFZjDS_6GEQ0bgPO*5#Nbr!0B9`<33f#d51WF*`J2p_F>`TmV5AW!xo&Fo zRV5qV&(hk)X8%_m0n`OTLDRa)t)-!?Nc=d5X|hvGFU=24LG#SCYk<438YeK;7I9DW z@6EbI`EIA+^&c$2<(NhjMR#(S^nn;ogqup#-_PHn%#4M;nv$~b`11>=qS5CP6CsJQ zHDsB7V?aYz<>{XKV=EoAGG9gYwEG7-F$Ot@6`&@2eW=5!l@-={sOlIa;IswE5nv!R z39)p~t|FF)^%&0K`9%nhXc#Pe@tRCB@6>FoBsCwXRPIsj;zo`I=m;)h}o?C@9KEG0TOu z6zaJ8Sj14@^d|g3jtZg?8%4Pty&(|%Fb=Loh4oCHTG=w(Hxl#%n#UJRhe{<+Y&2b+ zc3z%MLf+3`CnLeM1KBN~D1*sCT$B!obGIMZEt8X> zaHwc+sfXmHs;J71HplWtZq4g;Wg|E7Sm74)=jV60`C<%7;j<~DGD1*_l%dvUt`kZKLB)FBGiUUNdjvZ>@FyCNc8WT-o*o-)&r&@e(k(avF3AAC zo&*LPl)Ur=4Dz4@6lV?oauV=1a7#^(w@de;TbF zV(%!%gnb}PnEWnKit*jvpdBb=EY-S}76}&Q(KhNRY#bE&cW~=KokCRS5}J#UJ^-2< z-#N*LDl^x!SM(yu(18|X}+nvq+!t!s)czy@D(I}{t{4Kg9A=<`Fcis6U`5acsn=Rji z{sDx!a&zM`C;`I>Xj3YT8In^l1~SZ0Bd2e9OxYr^98BEtiE<=_uO3J5eWN7=26*1BW`O(ZJ;o(}gw zQFsUwb5kUDKG@ubEaDQ=0XahpY!v#Y#wN*ir8#KlCd`c6od}_ zdm<1j;QyP5A4o<+h~++C<+z!yQB_;>>Zh?>XB)24!eEI6EXe^Bf2&kyFA4zZk9iS> zz#38_E%ZmXF7Kx{u-2(yG=|@KeiPZEtD}=L-I*#uFKuqoU?ZveX!jDm)U|{7BhwI_ zIc0*_OpaGJi$l=Jn_fEZ)-Cm_{~Fae$95T~-PU62w{L`h^F%YEfRDerstgfM5K$#y zyb1xH5t%)=umHPI@@n}sO>*zaq~1n+qpQqLyHrxlV#4^HT?DVzF@l;xaxGr}CZo&O zpUXRew{a9|x!}MFK>1Y=>Md~4ShZ?nLPCnHXI4V!{Q}-sCM#m}P9=hm3gW)5rz%_z z^uZl|yT#7I@#@vA>%7A2Z_&NLTKWmkx->FD1X!3LeBCO!POFgR& z0_yq~>^ZAVq*iB(8Z>}X+S=Ml#TIb1fv9&XW+kyWWNoRk!yQ8HbbAZR=vT_s(7`UV zeQF9nFV}=KuY-oe@()Q&{0V9@T`G1Lzv6f0lhpDbEw+86-b?cFfZwCpmIh1Iz^(4il!uFa)JUz(>_Np~Z#jx$lz2^K_1i#ho3UQv{ctG~cand;UPZ;N1AEu&#_#e5@f7 z)(hL+_(z$3>xguHO#G%srOopKoq7t3 z{i#)5%b9@Dv7=hBqZ2SH%kYeolN!`9nVcl@e6Z8TEepY`w_A{sP`BP;2bL|z+@n}Q z7fawtVK6lE6QBb|#SDx)cXsqcW*FHywId59-V$b0It%8Q1>wl6hszvdem4lm{KS)+j~_pl>37M^)P^#w1tv&)Uo_L;PAa?&`I*hm(&0!SFC9$tngr*sM$&NF;r@zmW-~Yal*8}rp{uwz z0bLNLxImS&y|=$bR`%WE(Jdx;9pMRX$Ku&ORw3zwi9l{}tBKJ#5Mh$TzI?fHWjF|L zsSnC`-Voi*8b4uyaNr+{hrb_a=v)XW=0cbziSG1rbz*6^3dvQ+`A>X`QOHl|R-@I1 zeu^LymnFX*ip3bd2AyxM_%nzbGa#&iX4AF-jc{3&lr$7DsSbx5@=?OceI+KOJqkF1 zRC+68)U-CQpM`53Tj+2WqHvDwyuTmJLDl^JZ4I^kg*p9&QbU7r(M`3S;l74O^O&9? zaRu+h=ga#zK6~L(#WHG9WRyR8j&_tusGcdpDROUE$V|TgHI=6Z-A{5BEOHVImC?wWc+ZHvYPZ1{+|LyTPP_W0?;NQ=8_e!s}wc2x%_vYVw zJrPgpd9CA)ZM09Tn{;d7_ZIbMkMK)M)>RO*jpZ-Kw2iwcZWGpN+EM+i*(`hjBXFn! z3UIU@{|Nj;xtMU<1Y18ZgxTLrh?@&Ov5>> zD6Idt4E$$;%4zPi6n&K=G#F#0aoe{{?(n0-Nh-b28ap~b7Ww4+13fjrb}ta_ z3HOQ$9hVQbXEMj-)2}Gy?y4tPcJ=kSL2i7OJuo02(0_Y*G3z?-ahgxmU;pn>r+WqC z-R1_<67=}(2M2Y9G!7RjEbmf?%RTPA zuge;XI=KT^-sreB&mD*gQK?mJMTbe5f#2n>1g@3^>{izO>n|jMDCY4vM^`N5^BX4# z5y%Jw590jN_WpV-AA&9HH4t#2Mikhs?s>;_sK2*USXZ0dWJ-sXk5E*W;6jdudJbmb zQgl}r9&XeTd^z>^_vFQ$b>v)w_zrI?a7q~atG25^+n-xfzMl(52u57lP#!D$zsH0> z60iZIo)3{G0ZiqoFI*?U-#WbssBt-z0COO>x-e*YU;7@CsmJzEMV+lt}2EjNHW*~>Dh^i9z^>a@~WzXW|--a|9d)| zI2WC@N2{B%enXvlAnE2~lQRJ$4-(8JfP3c&@j}n=5X}}~iYlyrPfiE%fHwN)b%&|A zbFHpgQV0yn5+6bIXnfq2$T0N1{}2JD`qs+8dMw%%P)|lkgQbCgEA`Jc#w<&5tJ6vw zn0}$J!R0_5xi|n;_~9t;2V{G$0TXYmrp)uHo&j| zj2zio@=y6aT5}dkQPM0`SD7=YdJ`DdNbIc5k0L-BtuxnF?#{=Kd&|2$zZ zobX;m1b>lEeHFmUa{FDkk+Q9h@&ip2(bh#&`Y#$dC}sf&~1}7|>EW&>lifS@t_? z%t%%(Qp1<3Wv-6hx5a=tm)@)VM&-GH0r&^Fkok4=dx99VuSEae*ZNTxyEISFNDN(z zRpr+TL@)6;*f4Ca&mL#QfYN}r0uSvE^$0Ed?>!}9ziSA+hR4((qT&mDI<;a$JS*M$AqNJ8 zaWu+c94(sROPs>c@-9)jJcjRSJj8gT|M<+Fc5yj?vcGCjMK|R>)50>}igRdeEHl~= zlMq9EP4Jo%)S63d^TJ=q#~mMMxlQyGvpXj>y#6~*0?jkYBO)RWEn>)!LqKi}Hn~6e z<{R^RG}stLH)QwFun0oKfM=y%2cQW`RbZBv=ijTdY`LDVo2!)v_*L4*bn;e1h9Ak?uqQr*OFGOwqMQCa%;O}cnx}(e3lj(d5SA1 zZvpHQ5kvOllj_S$3&*tm*vb6I2sTdv91dr8+5_C{=_<9`?NL{!0XS0F=knk7gIQ>u5`x)$JbgS1-qF1K5$+fkg{F9=^B-`Z!G zQ;J!>1gC#Leq>|NWckh6ZKZl3Z)97HG+#3Ot0Ax>z84HpQ3(8BRy9FicXDxYVJLUz zc|J5_0FS2qpY>dLLom7vWR@qN!5#xZC$q<4iB}hpd7z&Jy@mjml<6W*A_nh+f~ARI zbV`A#pCJ10$;9ft>~@^%ECUii%KaNZ2Z2}e7kN}|?cwiLx8wIC89aWKzc1X4f1e1J zg`u*&_hb`_tI)o!9qQbm(fs`C3L?*12OwVewih6(1jhT8HxIuji(%9X6g&FIO2SEL zgna%)18EZmh<83OHcVA_l}->r97l|lPo%jjB>6*}PQv3sBEQRS5`4Y#^}hwOC5!?9 z%92uUT<|!i+@jM;E{UPxvG^ISxeQ6o4@>}K0kdKklY{ub1GrG~Mg8?xb)ql8S6*IJ zM20e=UK^0Ou7X=wxa@l55`$J{dww{10n*a}GZ0q(_kKveE?U11P^DtEm7cgg51;78^v-{{A}a185UI$HO}aT7kNA8C}2Y} z_CcNZAaDIwP|Z=CEs|pI1EnD|6CmrojRN`l#(-Fi$k_Y0@RV%dTS4tW6fNZSS%O1o2cTzbTPiFH z2GRN&d9v^J;*OLd^NGxnhv14k%W>58zmvdTTDZZV0z*Z{ z7CN-2WtcNajKwu*y6?KbKhYS75qMVrUJd!~GK=lGt`Wu6aOS=72|{f02UWI@AttR* zuq9>k>z^hapWSnKHuG^h+&?D4Aq)8XSKzrTu8!AdAO04-fxgrbNS%qhwG!AlDyz0Hq`eOH8Kk_DZ0yuP>qDIe;LQut9W@3^x5S*x+ax8I@s{K>y!M5HdYK z&tYTerg-h@@3|F}!TIhg@CpZ$JZp*6A=(_eQG|W~Ekvo=QUVzRPGmRN|4gFN-JKgu zGzpBbI$AkW!t1W;&5ftR*l;UA5jUj&hwg~}pMww^B)b4fPx)EDzxw=k*}I87Kk|DO z42wk3dv5!QmsB%eNxgxPiqV_|tlbGE=D&-Gh3WGKNLj8gZ2Eex8rkX1Y>+n)XqQWX zh}6z>2KoVzBEmF1iTEAXZgFkJV7B7lCZBL#*=W=*?Dr$hv?|n57SwI?*yYsza$6A? zW!j0c|4`z&kN$NfuOmG~T2dv(%psge1O`;thY$IG%_Fn30f6!#xjGbL)s6vS0=t_$|zSO zqiCEgfgkS;PZ^@ya_iz520u+d#vMsqMUqq`7)m=gAi5+y9t-z5ir2TzN*?-={N<(5 zia`udK9vjcN6tkWd^8N@2&Q!)(hz2_fYN zb&!?A@Yy#DCa?2Evg-arH7<>PKhs$>TJ9_wU3li-ma`YQ5yA1<$vq5b4;ew*%j(Uz z{zb$jU@6A*W&&j=7rxE;YC4X_n?Ia?zh^n!gRE{cGJWxYc})1CAO2)_=Z)kCY*xuG zRmz@!#SmnB*Cc!lLAkQCi#{(ePxZ+R3PKzu=CLHlQ110#wWI^n;pD@S<+4`_MV}$S zvg1MI2B^Hto-OM$H!+Q9;0OdzR`7^{hOD+0%VXR@-vkG

    &+@I?Hk+c$}pG-oq%l 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

    4&wOC4?c^V6>^& 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 @pI$1VS5cvC< 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⫬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 z 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 z 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
    {1MF1d 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
    H9^y_wUU5?+peG7q%SQtWr+O8I%9r&0Bda!% zwo21QW{X`cC|&$CZK6cJ095ghG4`R3mB2Ue$J8?5RWa;>6z_}VZVEWNaw?wa7cYrZ zeL@nnyFzXx2RtTA=yKnFxxEV7GnRX*)zjkYdfS4uUIf;EZCJ>$mX&?1fS9QC^BWt@ zCVKR!sHrjG{>Bd>@aQgyDN5@14j<2T3AMKJ;n|MWL89wj&~QNQPW4mesibe0gV@&! zyG&(is{~v<3YY=XicU3`{p)*>y_NT5uPT=Y5ou{i@$86zZ zm0KY*0XAhAoq+Mw26I3uVS`E}4)b34_n|$-Jfql6o<24PrjRpz^j9Hi1ipIOFPgUF z_J+Rws`d_iTF?%mXMOKjalN6KLJa)z8`MK-OLjw31#TzB-EFNrX}tht?WVezlIkv= z*dA&4Mk8l$iq3j@EOZ;auf%ta7X;D#{NPYOWO?&-G!mIz{ddln~@*6%;Ig zT%U&#V1$F`N^CuUHSF>>a0zsD2yISFH-sRhA!hDkrXFJSDdcPE5iK2#b^(0p% z(JF)GWyu9y&Qk@|%DO&+^X6w14Zc1-i)fqShNiDHHAqe97nJ5g?&d?dx-?aRgJV^F z5(JW6F8(h^&N`&72+&T8^e!~O3iOW$S|PYNs$R-thkn8|2@J+8&>+2qDoX%J%_kNF zD}V_p)o4FSXZh}_??aJ1s8R1M9zEZq`@+Wz=}2FBbT*f2oNm2VyXT=jKj{%{oD+Wc zw{T=4-)iyDB>4BZ+jzCg3A7ak6oET(;$Ia`wURkKpNn6%P;w8{bm z7J<#w7r!uJ;oxS+t8qGoz(y|&gZ7y;jieyAL+7{!9>YE)?CUR8n?7Z}#vz_43CkI# z_RLe@ynQGBt7ccY5{n-%xmih%?wjt~Rnn-4Wyv;Bhz$Vg{4&Q|&9%+-Z9GM;=EXUZ zK4>lYO1_7&N=fitt+ys71;b6QzTT}VazUZ)OD{)(Q>=)2`AugKQ6sZ1IO7uw@|p=Z zonny---7+Fn-adQNGntuO6yCoj zsfg%U8Fv&)?PI4xDXmf-3p?74q>_&wiDRc^rz+Jf9(d9Hd7@jnWHuqJ9K8QPd#!i+ zGau;4g$c6_>R~MAChLm@wrXdBY&D%pxlQKGHCic}%OK-=M`PuRHng=uAh1CqbvU%( zT_~Q9h%yOvfo9E;`|8kULQ+z4a=33}@q0+=j=5LIKE#?$t%2Ot%0c^e&v=0K zxd-qs(u*rhEkGz4?kqH6IZ0FHf=vYNg zw~ovC;Re12;AeJ}5O2|`19ZXcE+e2Ih7ce3)h-`-Np!V^-7gi+ zNs;{g!e*Cs+w(M7)i|}W+6B=zLkw{DS)JZ1eNSh9!s1=+1+1aT!%)`S?hzkey2dO? zt1NTE`a)(70k7U<)HqOxtsdh7fAzHN9Z&L{JlL)yUkV_O4y}4frUy-!nI(>Yya<6USHpQ>VdPR5cF6M4b!G80HRky#U27 zAh1x%;N4Iv{iTSnjM1|Ne8dS$e+Uk&JG$j=UxbJAXnuBDSvmWX0+GE>=6!#A+j7Oz z^2&YnY>4L_3)tF+)Ye!_^byuMpL{Ew`D`z<;%Cn!DJ1uK98_ zh)n7fzwM)w^BHjG%dQGmaKh3?%PU2i~UnkH@`*9O3`p} zwK`uA!7$4k#na}duD%oEs#XwIL1YI}HQhTeCnZ2F)>hm{O3;N#l@8XbtmZIz^I^T) z2E=AA$^sSHY7YWF%hjw+l0Cc7Ha6z%&y(ot&@%M%L0F%a|3BHBI5IFzoB5e4bR-*o#ugUef8Jdr4(@h2yXVukSU|`8pRtx0g9-}d=f6cF-R9Kfxf7&B# z%wdfDk==N>$VG~+TYq!uBVtBPcJqFOup9~ssw2YJ?54$!!)BKD5z32|48+xp-;Ld- zHVHCXT_TPs@X-w-B&CT>o<|LF1}@%i@F0{8YI(mMxbRopxdL{@v^vX{!c%O}X0y3# zC8Yj`1>Bo_2J*Lh>3pcosAHYWSvs}+Sif1)(lqdP&qzWUU;pK5PJ{77)<{TO*LJvp z-bgza@s*#DH|B&K`LOxsD-$K zE#5;rjQbEk+XN4=jzLn=RWSIjy~c5lLLM%dd;9y zZKKWO+qkW+j(E?SN=g-7Z+f*^Gx$~a?V=}y%dMiSv{a7Bu)!`LhW{%@FEClsx3b*% zB-M^Gc*qR*3Ma7LXIjQo?emxo8)j-i^BM4caOg=}8IIse;VkgvDFXlz`-(&VeK(b= zlT(~K10nKPVePlvoUUQ#zSrGdni_Yq+y#=TBGY_>pa0RmZ1fdsXT)bry6dCU<1m{> zkHG9(NtzbBGE|4nPL5`fX?r_3We_xMtbz7{wdUKim-&Vmy5z4HaH8%U{Ryjlr#Bnl zwzOb}4Ov2W|2#tAB6|TXVlMp%?zs>luGi+~$QkTRN0M&Y$Jqrbuc%pAeyCS6ai(64 zh;AiYXBIc9nhI{-jk2Si)^4-Iw*v=aENas{8a_tYMw45F`95>ZKt9Zao|wLVNNK;# z&CP0LaOv)DLE^$F*_i*Qm%PMvGv#+T6~!73^<&oFXfzBAi5&EML8z$&&pw`UHSDt4 zudl^%ot_u2Y|ZgXOxP6={-It(5HXb=gp%AF8sgUa%o>x8GvQWIK$C3iPIh-xV z&Blc<161Rx4uiYQGWg7Z^hXpXpHpvtWzRId53u>N;ZkPyv4>>Texn0rcen0iy;B<= zm!|%Hm`u~Cr~0he1?*I{{3tYH-kKhD^*U-a!}1M3qL)st3b_m30B7k@)o`OZ}Nu4Z^Zc7D@jZurwds|+@Iw|)5)?D5I&cV@0T27`r6egbbq$~ z_Wp`R3l?^3pf084V6FbcZQ%Ub)RK3QXCE^y$A%Bv6Boxkw{_2R2+sYDVe+_7gry8? zuPlF@icSe`JMCDN`_9roSrSORUT6?q_E{SBA3QS${jOokj9f}+>_$|$1&}mC`Gyq zsck>D-g~JgQjVU_WD98}q2@?L;%D`YR-=bw;Nsxxj^6zLbqek#8mc{q_nw1FQXDvF7*_@vxPHvXYc6yBaZ6I#Vu>%kyUvH4CW;&gN3~ zwlLS@Guce#@%!x38SRTXD1?dyBw8I>?f$qqxdCON#mbx;he8QV+mA&g) zWih);P}v}OBI$EGEK_sKucf4_d=*8db3C+E^K7MZL=iH`xGFlO*#iy?4K0fvM%Q0_ zjkrM!A&QV!CFyU#`Qs$+uPgH$t?xEZ)`wEKea?^>PEc#FWu2E}2kjM>oa9*=H66p9 z>jfhjrLH}vlVA4mL6mJ+`}}>7E=gVpK`IV$l;s-Te&dLK>hU?#A!^Y8Mr{|uTN18w zFy(gZgPen9?gp9RvZ;h^fD%1jRNh-1>hxakK$43l>$4_$H2Le$(CjYKjBThENasSb zM+4*ZEek0i=-B041`4}2`Vt$ZKh>+M-bP|!NgLYaEI98LeJ5ZrN|<%M)#Uq3?lN#P zY==0_kMm1kPgv)wWkoEHA?xhj-wA9)mBG}_QF6MkF(Nj_xbyho-TyAv@6i<&*HbGKipjiPIDB;Jb2>x?P8XyaR3{PWdipQkPDa%z`7JP|rNW~Ejz+=&x<>yF-mWzf(1`hOlN{ z`W6A~FJvg$(gb0nUQ_AAI(qvS1-tt%kTey^AJ04Rg5^m24>~r*a{v}_>$$Kz(PIp(@gVfIED3N#0KR~$Sb$oyh!QIct8HFT^3=i- zwV$k&1)v3jP|&wwfL-;+iEnhO{QMlYOii@Mb0C7JcTiU-bi8r5e2LytR;?!V_(u|F z+Gk{zqt}8=VOe{%vx?wr&sg~cz8TE%p3{VOq2-zVmaYOI#p0`Rv#8@7q{PU1V_iX6lPVZD zFw6V?&EdcuJ=I>;+{fsH!b4%#XH1DfG~f1rXu@mB$jx)p2kExv1AF#NO12mhwC?d@$_7%6l)+JCQ=|Z;1nat-A-2Ce`CciyJl&u`m$xs051uOs*wmdeH>47!~iJUAUg0-vD1nFAa ziOBIMRqO+z)xBXdIUA@@Yr>aRbS=E&Op&1BPLiU`a0DI=X5KX=q8cPL8I1b|sj(m* z;isRxsU8d8fQH2^H%c9dh#FXPloKvaq??UM$B^I?XuLF~>wafy2!-!sb+L#&_lg90 z^;&mIDniK-CO(&w`dw#{iy0VB6D-o`tt1aTYZTNh@1(T{4h3LWMr0FMn`JkD_D)0R z&ZV_l@K;`S-M&q5E?!4RT=T+H^z(q@!ka_Tree(J`p*r(Nd@N|0d1a=W; ztIOPKwM*ZY_W8%c^BvS>S0#w|vS-Y<+r8(qe*25f#N+_I`L$&55>M7jNy}m}d>+;k z!^rWsm*)xSzt&l>fqEAxuWf(J6sCiy2{)w^6VMHV4}=E-wzGOKZB}Ee_vjBIu6%zs z-5>?KZ04xow%QHTz~_8u10V6Xa>~84Utvxly}l-4;6xXg>D)Ja^dU|0k|oIB_Z<{6 zV`nAObov_?-n&#APG*Yr*>ER_76&}~;u2vsY36a&TU4L0FUk>{O&ZK%C+@1hwQMrhdzQZTh{;ncAj$ScFG z9Q`KsV@$6RmD%P2lbwFP!gnDu?{>eObbyJ_@F3(+=f|ZrQQNJJs?;~X%Si&8!NQ;G z6rsYgSU;=Ys_$xb9+mx3w?~Okdx-q3FQ{K($Q0BrlDB|+aWa~U3$~O-df%eq=*b*I zP0Qe1GUFF%Qa^|;M1z#*Bf3r2D-xr}orZ{FEi+GM51GW1VzkeisS~rbTBh9-YPZ*V zY67mwt{9rbWz}%1%|CZu!7p=5stc9ofo22NDt~UlhY%13iP}N)XqB~~ox+A?OM2C- zpu&rg;rB|A>I;MZip+VN$S{Slu?gFd32j#rAoVpXwuPDGzsHqDzGEyQ!EES~tX z!gc#W2oIhs`{iI#>Aesj*V$=9STRJRIV)-C6^?*#Lhp-Nj>gTX2SQ z+T6D8RqOm*?EUr+@=aE}xsVPTp38Y1wtw)Z+{D%ZC;X|{--foEXCVD5-=hc;DfVq= z@%SZ%i&0eXg1}j)Tz${w#9qw31f3#b``Ty|VB6BYcW|JbiJ`-f+@V1b zNcUJ4AE2<=$w)r5LmI~La+H7zBcZg^m<}CDk~eUde30(+01tpMvyB zx{f?Sc*atu?HT`I5)HVg7fKV=ZTUGZvixJDp63#w(oePe{uXCCyeyATq@>uX?Lilo zkPkPpBXOuO!DACS%9pfo3s}P2XO?@roI%P;BX0iYVXr`EjJF(0aPXfC$+^H(*UoD_ zwBbay+JuSVT>U?TOt+ za;SU1Ed{R1)ulen3rcL^afS$t94Ki|c_;@n2;8*Iloaf@cxr*~soY21ecS+yvSEW( z;C72${IYq~sm!VOpPLW9E*3y}a%qLD?QH^N;g*SA68J8ads!{}@o`5vYH=UfE$d7E zxC+Wv%FKiZ{)&-{7i^lImd~&P`fa8^uZDe?Cf97S(CWZA-7z$6(|=lWu|Vq=cs;;Es`*!1kOXo` z7go0jyLMi&Y?r8e@DHf#1IHG;bl=4b-}S%Lh>iOsTh3y|MWSQA0k33;YS> zCmsH;x_;=+@U6){j^Jl*d!%Mbf4*-crsb#xQP(rJMIDkrYP>l!^Gbw7ok{o>Fdm=9 zh$BWw$of#x5`r|;Y3eaW*>S#>J*cvwoEfeV`|akKd>ko=8kI1;jWzu=Y!awyPC?Uq zJ$v+5>efhO0>tPPU4SPF^=9g~lk$N^pA=l5HT$`1+q?Ra`SRB@UFH*33cF=A9-hS0 z;|r-t7t0RTtC}fua#{Hn{saQgJyRePA{Jcwa>IQ9fGn_?!98XqamVnY?(8CT!g}A; z+HG=v)KH@GuHYyPy2x^hZ6YxM-MM^JaIrfQ5k(VYc@t&5clWfn30)54e^*JrqH5JJ zONozq$ejvDHnWgtB;$NTblH+&m0Yv6FzGr?wM;fM>|v|;gChvmc`kYI99#U3*@c~;rUh)j>(^kn{j7LaHyu{Vxx|IoMpbCxGDWwRY%9yMO{-a?=J5=L(og<=&Dk$iWF`6Pv@ABmSIH(n>UoQP=x5{ zN^^QMBbI@cQ3`K1V~>vZj229v6IL%| zerK`0$2K+cXzD`)OqPgeiR~vBlAHn>Xq-wk8yT{!TC7#3>*PeL^zttdY|AE^ZcHZr zWKeE7-`gDs0Nt$b7-r2_H^f|XBg;ADX{29(pCB8HokE|`ROR^ko;^1PM9q*{XyJO*&O8Zd1)v5P`jPx_peK( zq0?t7^Tc#y1(xk9=Xo7MpDVX|chsKu6cR&GLC)!=z4DQ}km;WmwseFk2+Bnc2e~iA z>n>b27L>U(*<{|%&RR_JhL#tUacIsT|G`#WYys7iVPdK>;L zHc3IZp3imLtchP6l{OLEC%wUTHOUbj`IqtV{xw}pjx)A{Lu-S z)gaRrs9$=YarSp7pi4szom;b!r7N%Vrsu6?UiN&6q|N_(@am4I2G%_7B`V z7gUJi|HNK*57X~DDnbhEqs@NrdqiU0slmnYhUrXo()fowvFt=>`Oz61ctNZWW+M%z zj3H~j;(4@GB93gX8%(gWvvG_8-upht*``^dDh(SG-Oq3|39w^DG{q@|$sMr8+h9z! zPX$X4nOsMIz`yvJ8Nsjc>Q$PlVNY_6sR_ikepOCOSiw(@vba&pM{Fx zo4yr`CI~6nyz&Ltjef|>XmM3-J#KHrG$xT)KwVY?u6yB|xU9hOrK)mx#qLK!qS5zs zbsbf@ zf?^B_$ZolHR6zj~z$uY-3Laby>+jz1?~tSEUX{~Z&e;n?CcW=YMY|Q{dfWC4c*x2a zYpD0#%+Aa1#Wn}FIYN!Z-LLCDU>sX%)YXFRUuI9ALOA7IA{=%fU-PNQN`pO6(?@7D zhrjnqIdIWWgvE20FC--{)b_KKG0iM>4Ss>Y=GrD2#rDi)CCtj;420s`ERs)7pxeg{ z;&zCgZ?&h7$nn9eI(oZu6o%4g#`VJA)EVhar`l}tqq;=~En~~Hz~GZHKghvN>RAC3 zYzIn(a6C3#W*aSgsYb{6E}luIJP(ep-8W^NJgR4Pxw&;xlTAf+mWyt&^?N!UgSTeK z*MbWT7k4Z{%Xprqpa0LxP*^{UrI3a_K~;)P$qrSw*J){2kpL$Sr=a%7Y%zpp>Ae-N zpp!xh__)a$B9|^y1hTVb0Z%#n)Og;K`<~ux)3dQ9ZlPOvrURiwSZ_67-F117tA8Q> z#lEcYsE%x~8snim@Bn)n$SOj8cbmA&&w@N1#5G29Glg+o=(YP|zorff<_v0R2ZE2OF*PStL;k#Q23^ZYw9Y zw)gacaZ1tWlOW5zymHhBcF}4pkOP>U#aEiedoDY$r0QasMh#@fG=HJU$z60v9a@ll z(O@^Z%c(Lbmu;K={}vM>jVaDCtgK2O-j!)7){T=GyK2cYIVdKqxA6~kt}tSY%w^m= z4xCMhXDVe{{6i!KhK3(PK@v?(|=*YliQP^LfMep~jOPnkwAv66hTk-;yM zgnBpnG;EU`=NxNFg$cPSO;ec8HF!WrwXceJzZ8VADo<xr9B6(66jSS@B^R;2~#oaYaMSG_81#NHd(#us_0I|{rW29vZ5v`xYhIDUHq5gjsBDNkS5qjU-wf*C% zv|-{b|Ko6jdYtUN(F2pqYd4OLtsmWRzO;Q^MDK_8S^Kd zW!VfcSu*$0OOop_Uys;&56x8m4}A>B_1?{d4*j#SMJ`OJhi1sTNw)s-Ygst5oM|P@ zM7~zUgsPwsMwzsAK96+nyF(L`rsFY}is+_Krzx;#MSSF{fExalx|>WD&g!kweKQ&^ zo^8O7GeN)cawJbP$e{?g-7NIp0$UO8Vlhn(vqe)GypWq-8u21X`C-h*p)c#SO(*)n zsDiRU#g%W&3&uCNB&MqADAy2PA~EK6lNf#5<1RBZwjPY1#?eoJTyx@{l#wSdk^Ebh z+tX+ZFkGqyi-Bi#IsaPB$ryv#?)7ZLQpf3h94{c`$*vcYfzBu#sSeZx+)3D)>w3vYdKa`jzZ_D(UYwaZGU;Uk!CJjLl2Qo92ds zbT00@*-`IOT<|AlsY^OEE6fF(^%--tK2DTw=7*7s?35F!n(tR?3A+mTodU^QRW&m^ zb}R}4ihq&fR|JAO10*> zZo#x6+LA)iz4JFrzgS1_g+gl=?+x`8_3TR}2%BLDnT_`} zx$84HoKCUfv6$ysa5_o&Oq2U$aHqC~0_0obqpqShN04RC{ZTGxgQ+@&`ya46Kg^}B zA?jNs9adQu^?0j$g7x-E=)dvk!N^}<9?@(+4%y;AzWxKSG%TM-KJ5V)ro^I9h|)#i zMVekkKRr7!?jEIeadQ0)%lwC4C1})3;Pg`}PG8d*M$A87Up_1;G?-B0_NE{wO)V8t zNI=k8T%qpofM*T7a^1EeDEmA*u`pYm*R!*GR+B8*w=d1(AQ*>Xr7**)npX~?~uGD@m}~$1KC@iD3I{J z>+kj=Q=>ZL8rA570*2*KqKmlyzM<~>%PsY`m{ru=Hyx;{CcFAJJn;$`$os}BCR_;1!7W)YNGP)uVC@eB`Cih9AFWr z*0q0uKT{U-6kf$$v@#V_=k> zuSnCOUQui~y!K2(J+ao?GHc|QAQ$f&RYF+@IyOPx!p}}5DZb7Z{~vqr8P@dnZH?l# zpwa|X5JW@-q!Z~~M0%4hU3w3M4xy+BNSEG=^p5mSq)Q8(P=oXuI-!IlZ*c$jKHm3! zx*yNEXFZP(5#blJ%3O1fIp-L!n-y8okGHIrz616S!GILeRy!5pq{VH-3(~&JSaQ)o zeNKmX{@XH$yVr|Q3|j+td+op-N4S!)e+T9D=i~!}_m@r{RXloZ^f9m`Cu2gX>I2bH zz{g|)?*7Kow|6$)I*BNeZ&bYaF{DpfhIEt-VchTX@G+TE1PJMzA>x9Lsq+q>Z?0d$ zbc1gEaQyA~6kRc5eIdbCf+Ie1{RhsIWWl#ETSVI*R941(yH)`c>bS7I`%IhSjr@+5 z4{5Ebe{s0h*OnwZmC??0|8Z&~AS$mJ7S&TeSbyGb3cN&1q!o?a&yUPb6MGn_&a!38 zQf6-Mm!RoUWhnFTdjs2ZI=i5OMs!>Q$IN%E>SB^4;J`C(9#xz^KcEcsc~e`1?nBB*`fwu(4~)i+B^9Lb_39RWY>^wYn9PZ$w%#hz6;V)(0j1b7~Z zt8%|E;=Z8sibWKJ*?zY{B17#K6x>I<19XtfK_huUg!0A69kH?IdqrE#1%sZd%MTfi zl#kRX$heZ1s=eih<{5OdA{G5>p>2<>Yg#wm4nJq=(DTQuu~21bU^UKvbqBQD=01p| zMil}qgxnS09j^n&z>E_Lb~w7!QWA5-#Il?b?cg50l*EKLNie@9!1jvPutzspD!Vz|qGaJGch%{W$4m zxMeUmIE`$LGnpE!MX#IRzj@8Mb6OAI9Ni=FE{WJe+3$L@H~iQ(yA6CtYOMT1yQhHv z>4IcjhE9$(=Yg)V$32`3suE6hZFV${8Nku0gGWj9_o_&fBL?(vvKWa?Z}PkBU1CL8 z8ZLbrDESyC2_&O^=Z5#u@cp0J57N$WjUmn5^Bxhd73`uo8$)qzJ^?sMiqGrQV(Rn` z#Ptxa^tA@p9=9t|uv?V&lscSurxz~X){bLhNaJFuJpvoE@kZqXpOq(rv!Zk>1pL_t zME&+%gUOR!?R)*5&ty*c%sqpJ5)77j+(Rf|#;GxHg7B|GHcOIvQ)k1o+GgL{S=>!u zxm#!R-?g7v<_it`~oOn@~E^B!r~}yr*2=Lc%rh!x+tOg3oWy}hoM4@ za!+S28t3L&Kl5q&Yn7TH!bp>!;o3FBTdf}E=7Fa&_(GiN6L%?A!`lhayQ3cYtfpBQ z`Nf-}(a#v6(Swf{FG=tmp8WPxK1ZEcdiE6U@UPeS67$tzpL1}u&u5`c-8*Xb?E$4|(`Ul4`%P z&Cw>8azLLR%vEKx2mCN8ODR07)cKOIKDxK-?y@oEb@V#eiB8S+urXX=EJm$$8pY$U zeJnIy@d8|7fOY!7B98f)Oz|6^bsO%GVqKHJcR;o)4ddPt$P3e~QASyb{C##RHD z<#_pQKnc|Z*9xS#`G+h1{*^-Xp0seN?;NrFSx^Km%)Txi!!eZwY0X;P2*MZFFK4zv5RGUTnYHepFS=*yw{q7hUgvUBXHRe!xdb>bfer zKp~9naKc_gs+pY+DeSdeRLHwwSj!hh_Wr);gM${ljh_am43U9qWdGAo@SX<%Iym07 ztkTo>OwFbY3yhuc4HmlI!yuiVZ<5mK?3yug+THK=n6&5sIcA}!S0giJG%vvG_>Gbo z*NCmfZIIxw;q2T|Xs&R=%mcC>`=ns9e=%#oss_n*RPjLe@20TZ-BRrGGrT;3U&`3C z$Gv&jx=;**-9ZoS_;CvFY#?d_M={H>HC}P|JrccS)7pT|z|i7dUouuKy;Lm-5QihQ zGz!R`m5B~hFU=oMJeqIW-{cN>(J!7aCfPFqy$C#H)wA*IlNUw3sVearL1=1;d9cmp z*_OVGQ%ik11}Z5NdJ^-DW7Q$`#UIAUBlkJuS{}L^U$)6t#Q|Xr_p5HPsb};aGUON4 zYXiCSeBakuO;Vi z#Uo1OOw43+yyEDsj;?fGe1I?J??-bABlzqZZbiO~upy%>;k!xrth)DS2kfXS3+6Yp zQOscjJ$`|M=B{`x-V;VqrbP0S`yV)UhWaHn^^LLJ=Y8}ItS}>47oLEK0dGG7qn|U0 z6n)RWoxB?V!_&w8rQQleE0aViftbQd{^uhF2G08|Xr%f?y3)`l<)%_PDF@-iJ8zDb z%;i_b>Rv6peKXVnH6gp(PiR#%BMWks`N9(*kYQBjpb|T>zd0|N`VM)|{u$6zC4UvT zq%oUWd7iTD?%pFjCp)AC8J-3b;L8@j<%P3Cg_AE30hK*>X$*4Q2>5SE+gYn{TUk#Y zC-cnXDgyrs*yMR%7+w`TRK zB(LXNF;G>%)bZwWuXbJi3ro_O(7b zC|rI(YkC+i`XWL;g%RGbeB|kugYMqiQ?tyX@f4ZcG)sKec1?;DDC>*MNkFwY6;G z3r8SdkCG={52f`@L1wQ?pdle4?TH^=8&K0rn#&DEuaRf5%<5M83PzoQKaG47 z$~czy(=$pk-cXq@?k2$ng=7xNnlz2<&;$Lh7apY!>QvOpLUobpPPG5d87}$ywz~J5 z>`)o+9gI48XR$G_LwNr^3#4r!%g=Hz=D-|5*3zTClDS`W0K2`5u%B}geu|5nHCj!0H(l|b!iOK6onAwu%N*MA6|TJc4;HY4QxlYJP9)WGVV;tXly#>s zFQtnL2#!{g8$t3PbtSH|fy;-q+4Y)~)f|gl_e=T&Rt&)Eq9L`XZrkO%UqLJgf4o`E{_Tf2vMYC(*E|P_{olQi=A3!W6Z|Wy1rQfCX0}dlJ`| zXST495wFOte=wG}Ugs~7Y@Lo1TYm+1`Ld~4j9kJCuSss8TS&5E3{>}##Q7%Xe2z-~ z@vOqy3*l%gQ%q&u&QQ6x7+*_Z zs-PbaFzQYAJWk<|`yfBy4tmn|kHJD}v^J5}d9w zKJ@b?Sx}pi@^H z);+ekn7dWGy57`+uRi>qXH#qNmEx>BqXZ*jqVU|tOW9CHee>bof-MS{LaBNHg(D;z z`_34gsnp8%ba;jnp^O(lxyGxgrI!uF6&xqn3d(>kLa>o)B87|E$Q5#PNSvNubJSI?ZEVEUYJ7Xy)Nek^>s&u(AX6Gv6 zk7G}+9*{l0?Zx$Xf=;-K{e~Q_Ea9)sgKhlOTeyCS0rB)=YtF+1D!4WgUN+tpG6U%B zJD{f^08n!7T0Vel2Wxl8)-nO*B&<~RP`(-)uu7bXIiA>C?EUd}aNt;Nfqq22D-nr9 zWZU-@l6PEiVibh)%n#ArQC;hgt&z9cZK=;Da0JIi#OIhPpiCiU_AX8Ez^-f=zoC21 z5ETUpaliwYx%7Cwzt&Hj3z$D<3@S&A4+uZC>kxA$yS?$%I(h4_5a*%hCJa>Yk;8SH;pYBWwfmrs1J+&_!;UC!10M!tG=zqMzlvJE~D z#6|twMAIkmR(qqOQ?$Q`_YafXIF_a~5W(Q-?qv}WTAA@8a4bfqCT++HZgln~i>p(- zNWSHL&B>egC9wri@Xr3Gk7luu*JQr^JM$QKQ4cN&j=s>F=gGAxk#?C4&#t}S`HjB> z4iHD|B{RXF5;3m^0C<-)qso+ng@u`$eb&wzr_7DVSeC%hz6G^rSDhUnTq$H@71$ye zP?GC7B)=C1Z9wLx_sFa32dU{nyTy5BZWP53y^&fv6im4Mjrj9E_OH|yZu6Dw(^7iy zi2?lVF=|6KgEHye!bq&t&X(VbP3^!CM`d%Psqx}^`gOA{l24Tvfoq)RGhq^IA%D!) zKFfW3rx&ADwo0F{<2L|ocO~<{>qrefW-tm~W!FcMXs;IW|jQh6tm)#E^D|4#7 zl!n+p-nu+2ZzgMCS=5oyqq#^SY zmQ!iLm9I~E!;HphcWBjle1e1}TbrHSGl5W<&k8EP-Hg@(?t9c6yuj6$UnO3C4F8s2 ztfTZGucNo*6b4gN6UpAc`O*1#VI9()fx7yB(BO1xKF0)O9zwWkL6uNK;@2L*@zy)? z?Mu`E>D+vEqzWBDjaf29#iHYyPq&JN)&*k_uo66m>X{Foi^SRcA3V%5z&m=s_ zcW_qDI98n@ZD=|f9wlN_s(VnbxV$+JNG7|s*Py7z9IydGlBnF0Ddfh_L(H}`Vqtk~ z5#fcq`i)5QZhGu{YCy^Ed}|>v9PHp$hg0`_RH?}w9$;u_{Q%dR^X~|JWrI{6GTI*O z4zAd8^IB7Ib=LZjfZ?WOaR>@pu`$s}U8Y9_NcghtgyDhG9heADpEEVApz-{Q;RhE* z$t+4WpL_j=Nsqqaq~77e>SId3h1Qv~j2JnX*WD-B1cpf`RK>oS`FFRIC$HR<`w*!} znX_0AS@_5Tz$K@JQ>N(%8GC1+xzxrJe%F`EQ`ANG+cEvrWrP0TVA9rwf ziuFcG-@p^e>t98Ke1=5GU6b1cmD)tFq#(Zngq)kVMgm0Jt_emqO;Qep3&%7{IN2zl z3Hq?ejwhrkaE>)-Za&PYgdFGj{Hjb$*^088Z@@csUPEShleTpDZN0T&Y<|X`K;O}1 z_)7)cVzI}Y*2JKT=~7FH*n3f}pf~VEfXrlMZ}Gl%9j=7as|~FV+}uoF zKwF}I5*Dz(U#a#D2YKo0DdDY4I&oglez|MFHZD?Hg%SZ!DhYmbCPt*y&?Dv;dw@x_ zuBSruhnDXYcT82Jddo;~wVBG%=ew;(_~sX>kbem9T|S${%9QI4dkAs%84e|2E=`mh z{u6?Kt;E2(837_VPD-l!o+G-!C(~asQfB6mgu>h+2|N$_->F8)ErnJHS3ODNpu2A8 z?YDDsghXL1w$zS~2Z6`Bv)Qjwlz#S(AL3L|5dqU%+}?$a3?Iqfq-L34n*VC z**rd1oiT1EWm>gX6wb|^fE=qRJjfjm`YmrDB9f2FIr)vNBBs197ay}yD(R%?AdV3| z5>Zmg@*X(W_|ING&O9Z*)b@|RY4THo7!_i$o4eWV^c8wBoP|9ugZz;|Jtvnr9!NdC zk*r$0YkckZPz+xIcIyUv0Qhy4(eXP^aTXq__!iIy5pQ&%FH4C!zr6vRdNtvS#PC1k z1MG(&a>hULV^iUMmSBy&!nFqv0^%NW94Vbl8K(v}K-UN4`*y<47M4s|2p1_EhPaPZ zrmK()D5~1*dlNcoCpXp_1WD-TG7prMJ;xYj5Nd?s6RXKzyk~V|gC4*g^1o4Z$Ev$ubasr3YF|=)cg-Tr{QZDMIIic% z^78|OyQ5&cvB)@?qGgKBxtXsoEepNeJZHbB>PZM~FNq2^Owl1LhW(>*3ctS<9{gb^ z_eM>An9UXXd9%H~JlZACE!KzT>xH_Ev)lX8^@zrc;NawuZ-28M$Neo}Pg>4tkdzGb zOKuAl4oF~cA}W!2F>CgUj9SOT$nhAE7CS#oc^T5b>Q#}$zLpFG1eOZ3tE*Xd#!V35Vh8vhB)E;_Gd=8IMeG)QZD>8 z7Gr*rtks_uO+Z0(C$kP$Og`f7M^8TX(PZ<1IZDhReZT5F%fLGLW5ji+#I#!FNr!kY z{~cpw5Ia87r=s2KYsE!hd&wRzV)Y3y@JZJjM)BhStO?0=7CM(Ry5$1KNAHnT6#nje zMiU4%CFfeD)1v$A4*=Vjkmj)lyB*Ih?{wact)(u;$hi?fHFFHByJ zIS(-mePK#4?i(Y|lj4kOwK2tECsS4i zLXW!uZ#GvIlGk3kycC!`hI&sWJ+Tro?ftvcv^LFL-)*T)^}JM@s2S< zp|I1lt@x?QB)g~SYqtbq>uKawkTt`uM0@5dR?+VmaX~+UzmA=NkB>iP^Y023m}|8t zd3iqDLwe`{!!9*JNB((rA{}0s@$br5;ZWCvvU0T$W7Frn6#nX9NY#FVJnP_lWL|33 zVwDT=?tOQ%Q`#+DV@ho;BUU#!G&gkm-repN!%6BRWqD3Y&Z7(=!fU%1(a@QDe&#Qh zOJIXmSz|Vqp-+--g&YrZSM7+MBUjQ}4~b$)R4$<5n(G!W8sdqglgUrg?nmuCnKdkZ z9o6EQ+uQreBmY|qMbTaah1Cpei}@dkWIW1Os`1s_PaCUM!SiNyI39J9);hmRS6;{E!)}y&dXPY&~w9ICv->3N&b$s^Q<{evC z$=)ubiNRh4eIep9yZUR)U`bC0W>b|ubxSwxrwDdgzKutr1WbPWo=VDR?WvBlaU+Mrt}nL% zdJFIGC*KD#`z^om0T;6n3~6q`^^M#(S`-P>w^SFSrb>Ggs-2a`bGdNmp~F90ew_E7 z?N&7~DQ~Z?j7ZsUvOxrKbR70|w_#EJ(@Ut90GPss5R{RA+o>%0ceUhO_tEU@poH;3 z&~|M-i2sk>&BZlwMEkN`l6ZyR)ksta=5i*K)V!CXwnL3I-I`RXj>x-UK*yMGT0l{) zf|Q58e(E}6it-%4<9~r*?Ij$m$S`$sfRu3U(6A{jtFWHxuydu#$o{^nQ4b_>>^y5u zYpMo4`zGEIxLl;kyd@B+Lk+=YUj!7@6RD=p*5)fib=I-wxM&9_!ss`l9ehhuOD&JF zwF88{t9}j7;qP)5S;@ZCTwE~a`Y!3B?o3Lkj?d?`0_A+nlFx7~$v|E{_{_xztne(*g3H!FMF_TYh z{B!rcMEh4ltj{-PuuG!-e16%-gY~VJhN!8!+#NHk4{j&d58$l?kLY|>vJ!tTg+?23 zOlwR<*=7E&$(-`6+RRit0hM(HMc7nQ<)p)XlHfeX=j#4o5JHIumw2hd5wLv>$wGO>Cw;vk%yd2?fA2R@}OVdE%r? zlPM;Qkgx5%%GNCX`aiJmg=#OV7M(^wlc_;|U3!#FLi1 zmbv_LjT?k-3av=-x^G>h!(*gV&4>d}j+NbHafZiq zj)MyNccTiqzlme%2e~o#o1D0kO%rQi(LMiMJK$(V)uG%$;dQwM!x!MWD*sKeURI=c z#duLq!X3skFmOKnt$bM63{v#|!=x!hcjEV5JEU(Cbl{qEIla`gYMj&+Pkbj^hO=9L zFJVK>1yc3lUOKsF;r6ZukF^seTTe0fb}{iz@0g1Rr`I;yp9{7z?0D&Kt{T~OZ{qox ziqbuQ)7BHt2~{_P{=S*^>T=VSn{lGorQkX*MJo29gIQPV(xqY<5QJYi5Xt%bAmEQw zeZ34n5o*?yDelNNp$j+7YL5V2c|KpqOtmVrnv-8{)M&R@*+IR92&6^0_rwj))6%LP zCY$6wRwG)UqUqiqN$}{Km@X8{liTDmZFv!dE+OiFk@UIZAVw52DdhuQthR|bR3i-5 zY%t_Ez&>hMnZ_%JN7;3iEq_JAM+YKhnlrU!EJ1OAAquC74)ms)a@{q36r!hqe|lb% zvVc5r>*a} z^Fg4}F~^2;=*SxaP0vW4>tp5_{q$}PGaISjGua1U-JTdLLC=p8mWV`iAdJM`KElT> zMXna;V}H!V$+HsgY`q$=W6>_7dgoBwSQ(hsP+6Zoe+BvOgEcVhM8%oW#qQm7HJYO zA~+B#lwW#QB}`ABwLCVrv7Yzb!*!rWx`IngQCq^l7sX+8XT;e9h6{466~q6S@An1I)xBY7 zqGaV!rQurjpQ2hWz0%K%G{MC}@l2lGzI3M`D)CgoTe^xnlFCM>Sb*y?6MjgtZbG;y z1eX>u$>d5PWdcp3U@3eV9HB4NWwp~qDFnJc_^`i@*kirqDnhTin6_R*o}-d&;uZN* zAprVK75IpG$f~g0CXJN8YH#n5%edW=~z>Qd0R0*@>Cw@0LO&00!3s_B9OBJ|s*UJkBzSnD5JS=ic}?9ab%0T_?D z1M)_gC8`L~dR(9>pUvIwb(SMIf26aObh4f$W9ax~VNbXXkGZ{W%}!HiWrLw8Bz&WJ zjE%^HJ*|u3^I$CKkNf$91b19OpScMSpc3x8JH$(Co+z_BRWs%FS>dshQTJtR2yg z{Hd1Ve|TOlHu%cK9I31TR$$G1^O9lzO@Qat&6HP3->wn!Jy~bbs^#IEYf^`S-qEG; zfE&9!VxBCr;En_NL?{74fSoLb&davB5_*gFW6i-_!NW$wSUOcPH0|gPjdNAR+P=|? zo)5RhHKk-`%^E|i;tCNWC}u_nDD_{>g;(a|y}&?peqQjmmsH}eo{1 zj=-_sHsI#*_=QD-%0!Ef4Y%`mdQ{S4!+Pg?xdGH;aVni5=ej3WMpYAZz!n(smNGR% z7sDU>i;|R)!1u22qZ<_-C`~9&*U5K%Vqz_^3e@n;}b>Jv%>eIHv^rY zZ+fMeA&$tP0YM-noT-k9`%c5_`rdVJN`xQO5_&#>`y)aRJx5`%_$=wf9C0JglMn$W zyfWT}KmA?2tmnAP^55~{YtA3{3EsVE+|2&hcpZ)NH2)p1WJmvfjeBuh4(Fo(*PxTb z^^X2Ko<7G#2>&%c|4(|;Z;(5Gf3h-CVR7+&j5sas?_LNaWvuPh_m89gGo_A$1*ioT z{>v+g8XP2`u&MXwRKJP^{Jjt#iszg67BK!fBRF;#sk2$EvE$XxA4mN2m>TLs2YlXt z9@D?{e?8`Z7w~Gj{=03}WBzM++E5ZLj2PZ8uR|luw%^~|1P`zAWN{|y8XoK$Ht+lA z;x9SZe#GU#?_YgJ-1rcI*~a1;#Pn7FuTvdnjpumtaubVk|96vB13;@4I8vFd_g8J* z|BnA|M>AB#6~}Y=Hx}^UZI%BATfzVT*!%zeq`z&)|EN3sf7kSX*Yw{T@qgXkzo+8= zlY@Wdz%1xzXk%zOFELmOykX&9dMsizjQT2?^g?jvW9#A|SbH4KGmb?q5b4ALxN-mR z!8R4=(C|-Vkq~S`hY_0g8eYrM9v0zumAD_f~%BfBj!k?T7vq2pWbx zGq!?}u#PD9gaC-WfY8Is&NR zqGZnBsDs}?yE~6ff;RO%woFZex{=<*7mXs?39>#)XIlQslb9qUEwNyK4>$UY30!OUaoI%JymL9!G-< z7)%;70iXB7I~&FO<3n(-qV=v~zQNtGLs(W3k-7s0IT(&ryX)0hTYPsE*m~~Q?7UUd zlRoVnwcsDRkOUWqB}eBC!CmCs&JKn4-yOA`BL^c}sP&uq65OHRe!ZU9Ih(d8(6W2M zQNDRj!R&PTs!ejt0gW6d>bbHUAAJ9D{D0Jx)q1E~t1s)%7ben4`im9LRIQpVV>1ec zRjIi(C|2|>9>_%8l*rj#k&$Ae2VLX2%tFjJmKRlXS@wnjLfu?w(~71mtemvqWg*UO zy}aV{Zy#Mv%W=v-D8#R1Ep>g5`rJnuae{msF@2@yOnS-mYq`V(90`&`m-CfbzuG5Y zlWDd#Igpceio6@JU`dtv20Kef(oq=3di8T=hLjD9tv?+|(vNWoU4@2sEN zMUXm}Fswnu;gO(k!AfV+ufq`9jQH`MIaTVYpVNtnAKT*I>NS^^ z`E%BI&|lKt9Zdxu8-$WyT?QX8Pyb^$f7Fz|6c^Wx7k;rCAyLCyBU(yIKC62lV=N(| z**~XR6=P~+1J-Zwybki8)v)qA8%QHLdB%IMu(+7y)AYHYueH8rx0WJnAOKfpW_?&qp>iwvMZx483k&qNqHyT;WGYXs)av4A11d znZE%sO_2 zy_{Kbe5t0bJv%%8YKh&a_zh&K55}%jS)9;6`9QQHhx0n`akF=i$w9FiqHtq6^3lCx zCCyEEylc=vuk2k8HN};xQidL?vW-%`g~7Dp4q1x02jQzb>qX)$LY0oLDd#dyyLz=X zVji9*$ZmdaPGeE@gSXnX#np>FSwfHk8)FL+Q7o;f+Q>fS%{z<7 zE}!Q{TMIM`GqPKp4}(G`b6 zesGAcn%HY;*u=H>DSE%y#^{+|=jiTuI{x(^ETGk#9}Zy>ib{0O*=VEwee75lht=IV zW*_M*ZP->n({A%=`PEo*3^IR&PzTt`j;R-OT$DwvO} zve9-9$0Pd3Wu^nAa8t5_zkWs6nKzJjkVBls5ULv&q{F)eaJ9yifj1 z?j{^M9>#^L&4d36(_Uo)JA@J9(x@JzcD6Qv#gSVfxV;P zgw!Y7?#=mPC*|5|nE`{8v{4P+$ILoacDByE=U1d|oNx zf7!!V^K7rR+0I$2e=gUSyT^4h|Li+bYO#*Z5GyU+BuH!jE_y+K6<$H?JNzZWbrvMK zyaX*aimc{%z+GVcF@h7{pF_%WOB+%@Vr`vGO|6-qPNExq>wtM|RH(R+_Pel^92Fr| zLNs5g;PtnfY3>q61v8E9sq}zlZYN3M&a_{L*b^e&TEO>2pKB`q2|O zMQ6B9{bAI7z}1G&6qlvK`@!EeO|!jFaEA%vEri|gDDM8vsIWiyKyY6}Sxx~wJV)Wo zomDeq-O;CjX=Rpj%&K;p+Uk*UuXI`sWbhnmMUYoH(`Gzm-%8^v+I6%!Qpin_PbeRt zp*}XVQk$tpPWyjs@{iAv(01L2h4q%B&xgugo8Ab(rA*wchon|Csq^w`S0ue^E;UWh z_P?b;%gcbl9M3yX5mg$%L5Dk3go&b6>-{C#-FeDHwYxTFPCG9y*xX;kHUlKVDG;IS zYaDidp2Ui>U~4QBcY2bjpZXD0(*fFucsE&F_hfG!iUKpJU3wd0!0hDnVfLd6Aom=G zTe(CT#del*h;|(VX(Hvghx{31prlR2koC^lz@Ry^-jjFVw_5Tt6?`^}dQW4U8;{~1 zp#g^-)7Lrc@-p%)pf>ez=p=0Nlmq1|vo@nm`^Z^l`4w?g@{D1QwF!q%!_^-5?!YBE zerRs)81*kKL}A+xlEARMW2d+o$Yf1Q#5l~o&SRyst=&k}-Ldn+RlEW4tBADlJZl9( z0n11YMnsWqX3HKhhmzJoT4)B88_-kx59@TkTi zO(xSw?m@)0F>Ou&TG0xQBJ6*PKI0V&^osW%}){NCe!yq;TvaQMGU^rg8f__Kn=) z;#x|12e~j2S!xl71F$ok3ZCD(BF^@rz{Wa#R%Cr`P-4NAY$B11mtjhC^n0&lhUU%X zrlNlFN(YBAY|nr^Bs(U-G{0m{FDg1FzNW^Lgk*h4uCSj|NA&z<5Rr}B{bmaL9;ks2 z2;eW>5k0o_=`t`QEmFSEpCjg04edkze75cZxoxwgj~(mw)8fWsS<@=9d}zE01lVJA zCs}ls;?(!{C#a@Vny#Dm+(43A(eIc)j-FmB@Y1u-oM>KSO~y~1s&!?EeJ|3OHaa^0#`!EYRToN(fYDuSP13%%b~I1=aIVlG zfYck zPyIc93m^(@v^EFX?3cZl(E7~J$7{XCaw4{Qn2h^Zk=j9V9Juw$4Zzz->-!XRlqE@a zgSotHPykYV5|yO0e5lPk`6Xkv<@D_?jnd5tOOg`G7|ki3#~Yc`=P1_rCxQTPC(8#d zAm{W!L)hb~0uEf|X zg=uM|6Gb;Z4t=WT$s?4!!ycSA8KwQi{?X`D0oAh=6$0T_eZA_feEW->jCAZeEI9;b z>vn&Kh$Gmzml-4>rCx_NZ!4*WK4f0do4fBs8Qt(5wS}$^<3A-i&woU~uT7HN%7-HB zBz%@{yG?JO|%OXXHt~AQ_CNIzHe;K)mpXxb9yu@ zGMUPKXpnMdF#gljLFAqgmv@_wO8jJGpD*vxGkpCQMpYI@3eG>WyNlFhT{f${ z^<&dDMeATfGAPm@S~`vm6T9AaBV`p0oE8y?uiN#etN4Dp)3f1^**S!TMeMis`C3p$ zcRI*oK4lhOKR-Mqmyk{{)rw8<9UrCQEjywkVu?&6yx9GDWUC8(uXr&Ny|WUpP~s%n z-L9lb6n>3+VG7c`x>Uk(c943Rrz)>zBswJ^)Dt8a^90BtuOk204O1J_&Bs<%{7uzs z#p>&1uMF!#ODVHh6qmEskiToE@>v)3@*^kybd0G##(g7LPN&JMLVqGJz?AQ1%Shtt z2Jmr0qFyw)e{`U;+hNDyPx_7_EKmmdFrJ53Z9V7Ya*$Tg_DI-L%R4sNGfMJaDvL)6 zuNEnxyp@u`@oN8-aTOaD(cWxA)ZG&UIu(xK3`=5 zRUyD1Foc}vRujlSxo_^%R4~MPv!e%2cAv)9YCMjnn5eN&B$Y*&3;`0iHp};!OrSmI z+NesVvE|FK26kJDMg!O`c6qzZH3v(pkF7x?4dxR}$<*15VUeNKR5$#=0zb368E!Qx z^LbZ?kVm~g_9UR4H<;q#`;jQ~G6=tgRQP<;;cW%#rz$&LjOl8eM7O7Z+?$X(-kU@w zYZlOrd6Ma$0}~XFxNmQ{W7XjSH-6)991Q<}Di@L&D7bQB-KxK5TbE#kFcXAlBfGKw zsa4UsSe@-eR^rN8rbFP+yH=0Bxa}}(-xoPbQE%C|^Hb!$KGtxb)5l(}L#*7%B(K#6 zer0n@ysbBLS}d3oZF+cG=G~&Y@>6|m4Of@C+UnDrLt=FM{0k^Vm znis~NT=}8oUdOULH=qhOanNJ$PB&_hVAlPci3|SKoIO9FM;bgnYp4=xHVZ zISDUb9K`2_=HEaw0k+cylRAW;L<$r6Wuj;Lhn}`^YhgOIob`5Bw!YqPDP9UEiCpTC zC{nezXie~JmS3gR57Xm(7%7!Nm4L?eEzV1aKSCWt?E#^<;ECmXIg9?wyyitK5jgP2 zX9b4Mh&yd-dGKu#ZH-$o!t;Cddk^cXm%5+3KK%H_TWgd|s$Q7g-b&w=_AKgqpg8d7 zaJ}0DbjB*%tZP}rBZ!M<_peC`o6x$N8$@brIW@qdt&XL}waLzv2%7y!*)5mUfcJe{ z;^=+?1J|D!-yN6p3FvEhqv}7lO_(W8Dikx}Q>^_k^^v6_9J*BT(-rw1+QIGE-lx*) zap|Jz^Yxzoll)NUCmcesBd3~GaGw|YQPX{KG4{=u0iL*N`(T@ntFuTg_1+t_FLz+R zxU@3x=`WE0(aX%Iiyc{#cM650tx)$C~OyMVe7EoR(N!4AS--!hErE zwCox+SxOX+-7R?}o|NDVD>V>n@Z4+530M~&Vbk|sKIgUso?V>8KG7olM2pGu_OVIX zEGNhdGeB$hQ1!FcfC<#Au}7Qp^t=~8?V@lC-Rz61f*g%zmpPnfSLF+l}b29?ZI+I3a^5^H) zCM3u+=37m*7Mg5>X_}l+Oz!4_3S$3Y0V@NEkeb4f#%I`8YgY$^j%e56i%!o`P4wz@65bZ#=E}=Y3l66C!aS>K%3!97=5=o$ zb~u~wO#CS7{UfpMP8#9qzD^rAFLR^{HN0FVzx6D*C*)a+PNjE;N`k&(Ns-Qlo}aJ8 zZwz>Y24~*NY)^uW4AN^3-`n?`TiQhW9U>Kou$9ZwOwtjxBHicS=H013ckLtHNcqle z4~lL!IC$$)q(W+vLr#tK=Jz=%g_tdmlJOmy9-~19FHeFN^lQA&(~n*gNaW=07AK3A z`+i@aSZ#A(YiYJtn)&|3t5fK7n<7+8QJ(hkI3z*TebJUlxOv87&alt^jKX~=9m;WB$MHKr@KeEO*P*ieLV^J1J<^sKut&`)x=(fMtpo*-(d zYdSO@i?m{zSK@sfK9jtrbaN47^p|!AZl&<>V7Z6(tarr-FEkBYefkb5xO)tLiH1RC zZf)@A-+efj;Ps;0&Q(CzZmWf~;WyUkt9G=F7RoXY~|^Y9TRzSS1M zrvKDK8Ex24J+*inBynB$_sYOK4c!LD-fCMiaXmi zS9V%BUo3FK-ZXA7YV7Rn%LY<+YP~RvmQtzR8ley57sZlS> z3Nx5S)7rT++LF`}u`)0;t4nJaqR{K>Y;Pe>)TG*A+!nooM8E!GK8iU4wfXbAqPQHe$=a=yywAY9ha^y!Dh&i?f}2spPAK+df`r>C z(ygv#CTn#8D}lg>Te$H*Yn$$a`Nc-fcH|d;vHp#_2?8f;bHWJ;H(Q45vB6*`G5EzV zB?)XJ74qtTT5mYfs`sv*b;E(dSsDTLvRq!K(CC`o{E3HVB!eOP=kEh3aDIi-$>EnB zABLosLOFRhm6AaQfVhHAZ8@mlGGvWYp?E40WWATI zEZZRb!n?de^ALB}<}PR6j3Nn@*Gul*ba!#fKkCS$Vecr*%MB;?(!k<+=nY2nzSWtD z&+cZ@u>8aU4LO_xw-7fPU& zLMgqJ^7EPKW)yJN(H(gK;}CfGz_s~TMQX@KXTc5yckQK%5)71AA3M#>=_?RmmVZ@) zwZVIJSk>dov5xR!8kVW}q9Ui@x0t_pvd^?1Aym{XLfp36%u4l<#MCya>x~ zMtHhVUWG$()kKEhTcoDaEGE9s$svQ_YPeghRy#*3_C<%c8 z2_z)E!F%ub?VtIP{p_{Zo@>rA#vC)i`87Qao0tfl_7@T9m}W8ea>D{x+BbWc&9V4` zKD-jt-0Ag;1DH zdWj^=dhjcW5Um%idVVMJJAYZDz7o{iLhFv$dU`c~Vq-%>lC1ut6J&*i;Bk^viAnMZ z${F;svFJyR%5|x_%CkM+n;KHdXs#r6AJ>7{%J>GQ_(x>*m~L35`RosWY<-E;_xE)^ z*r-xZTWm~%X^6hQDL$)D7yXweoL|+&#>ut+K=i%T+vM2yp!8SXw8B2N#u$fDy4X;d z;E~x?*Bu27K19B=)A4?q0?99c$awVUOL5|-P~P3|S%&Evn-kC=tNyFB_q~InruC-R zoY=XB!yg1L5y4Iw#&h(`q}_~MgdwK=9%Jf(rl}l%6Z~+8{?swv2vxSL(+T)h=8|$PUVonK+B;3iEIx|)s5>q_mL?7%`@Sq~p0bpQ zF6;=JHaks~4eReWl8JDywX(R#I#Enhv3R%A+kq%MwYPi4y^7iuje#CI#aHc|*NKH|HiPyN6O{_`DLdf2MaeOZO~kt~?5OC5Zzh{K1h3~x)CXy+91C(cJR@_1{wY+O^|Sk#Gq zAY69;@1c{sTiPZuLk(D6`bTE8}MwbOZ)tBZ$)+$-fH;I@5tCZE|jF@E#-e661h zB=#nP0@d9%gHoN9PlSov7Hi=A2c1&8$8a-VgL{y1zU55aF3BkWCEiJDDzr!}!>GV= zdu-_ad$;ymmsLd$2P)Ik%C<2uzDH^)i9YmR(Bco@U;z$X5|a8Wyfdk-M7(LOS~tSS zFq)G-Jo=M|{p7#=B%J!!Mtwp#2Pb4$zeR$+nI4f@-O0(?S975+Po498l!$1WiEC69}|j3-e26mmFMr0!oax9$GbQy-LN5 z7c`o}8>_c+&1_wo`-!KcZ2}D4l9e20$~TaF1<^=lN~GDu_#aYbw~i&#fdvvrKv|St$aaFi6tSoQeDemMofMQ0M^dz#}Gp_&^dfx z7jul==%-cc8-6Z%va`&ouJWgiIncc8$8CUAt@BqTCb9Nw51&k~c67v?sUI@~qZi7f z#Aym>zavO{xc?xJ8L7>YIQ6ae8Xx@vn?-xqbPZ;uR?_QLkJi_YP1pYNTM3&7 zA(QF2ltumPxQh^u;VFf|rFx+fS7fjHFNd@9S2+v+-VfTGV?t>^ec?U6qdNQKrQ)WB zqBd=5Y>-9oRp&i+TOM*$2lP>odyfaLDr0|krT~)pI_ddDuxl6woqy&f7Gw)FjT3S& zv{K6R6PEjc+6_|~_Ga(zoj1fVl^K+VvZ##55LSl=`RvhC5R33;T2~YOzxm6zfa?Yj z?@P?82k5?skgn=at$wnjnQntItjdbCre^{GZH?4+!d6Z4fV zpg=-q()c+Lw%fSn=8%X!c-8~qdi~SaFx88>RnFK3(s6P7iDDyGTm|DTe-Bl$3GVuol7ry?N0UAUYV!P^9dRX)h&9%NS`;0L z60oas4HcK7u$3-ew6NdpG3Is5*aD19y$o8#?X$dJ?}?>HNRkpVfb^YLA z;yFfkqgIiJM+pPJ&49X)^+?u}gV~RKo4$WnI^!hA3z}~)$7ski)*{!g zI?|N$?R#>Or(+w&%IawqXKu38W&MA}@q;zB2gyHD%o0gRN4rK+ME+=ovQ=N;=iIBm4jP zxQZ$1H&;gLhS=;)7q=dymNUnAy`howMB@VPsE2Hm>}4(xw8CIbh!= zV!CY_da}#s<&;^-?(QJt+i7+4SPn%u^>Hgh=!-E#$A&~d5tX8GYW^;6I5nGTI+9E_SSnP$lF0%M?cRs)TBy_k({j``?Ra_EQnVIhM9ew5j z!L7LS1Bn#9HuaVCo)7k2Tg$#U(BB<=Ks`Pq99ydGD2S z4n0@e$3C|c4$XvqSgZ{S&I|aQ>SzeArtI=zqr^b2FZzokS1_eu_sc_6+2KS>BaUV} zK{Uo{qHgFfJ5Q`^et_QiULmX>sz09z@!Cb zrA8lNVO~)V;btgbLi+;7$bql~M04W$BL()BzK3V?ES^GZdG6I3xPUupmxHl1_mxqT;~YHBat2$Y z>D0)l<{`%u;B-96uALq*u|BgPoAh5=31DT*OTF) z`qJIf!hTLRB`N8-b!^=2X1cEMk%q-|0Qa^EGzd@&{-><&) zzjupK5~sO1N>=HJD}l~hFM7^B>vvQ7rfC}h^HmNlkQ<)DjcOQ}3(vfEt+89H#&V{d zbh&)T-YjHtE;oyQuB%HSCudi4xBdiTX3z)2d zJ(FhSSIymjO4EQ83g4>lh{b{^=kTD9Y9^5 zAC2_Jv&Uo~BwknGC8G_`nFaqZgyQ=OzIb$$$5*E-*sfJ#Ez;vX_nm#};$rx2Ct3Q6 zsTu@jNfQgvxAMAU-d!O06V<*#IwoeVb4sOpbT@2aM=};hu!XvqTd?!b8mH!#_iYN> zcQtzP0)5~g_I+z!&)#>g7IyQ{NE21rn@ykO%x}xBB*fKmR@(Pv3?T2QQ`luUNy_Dh zJ)z$j_)W7fCbX%qH)IB)6_}A3?WVw$KXlO&)&khFb5ke;!uL^}j^Cb~D ze9Zdtg-8DG6H`?-TR!&Dr$3nzcv8ML1=BY~8wC0vXyIB;NHne1p#`h`476|E;!eCo zmXJ^}G&T~;}E(!TGYh7UZOifpD4%sVd_(z`lQD^p1FdFZgyl)>9&J3z{Ev~eB$cF$Hy=L1 zVxQV1xMOR*iK8PxWxhOF`%PP?h<_Ou#EaOX9d766kj0r;lKn&fi?AdhHD>l{s#-wv ze_4Ie*FMOlZd0;-E>u>E`8JsJ{(Sc>HmUjBivWx+zgZHxXkX{7Qhsd4Ye`O6n!!lL z#<%1$yP8PTv>E0>{o1m9h@pK4R2e%ZaQ8=#ESIDuEH_9wLe|*0B`n>|@{=ya-LJdU zF52sp25lNpP*xy)So}j(73w{cHsa^TryR8SaKL!z8?qjm6R*6{jhFgU2uN@!ywS98 z|Ml1lJN`%-X0-@G%dNJgaph? z&jVNwn!})A?bb6JUhlSCFdz8{{x`P{`x_hmz(-6*gm7JD9p`o_<`?(c1;Id{b?Xsys+2>t5s$|>^7mdv*i_5>l9xQ#}3)tt4S z!x|-%ym4MYzq|Frn!gA9A?kB=VH}y<^#-O`-IsaCM>q~TwAZK9 zc_Y)2tGheRB;+}GPvMpW~)?UHB}^zn__Ra453~*`*4@ zRtkWLB%=FU`WR*N0tU0+z%?T!@S}`5+`R$8lf`#AGE&mx0ZkITsVLOW`xn^UJ$rHSEF^CRV_ z#FGaQ{=|IH4p^?jUu#&o#@6Fdt6}R*XeGzkV)d1|zc?%Io(wQUZ#Osp}cnH64D9g6FPeA~h&o^SRdaqpUzg8xcoE`J#+_KVK91`ZD)N z?u@MeNNxY832>aYOv+zdBp+?ru!Z2lV8lDl)-#_3gUhujyTI|P);sNXezF$L6H79= zY+CfHL*)x}ELg(t#nvLC(HqWj`z@Y1MGwUHC2`7E=sCv;LSI@WCI|44c zgZRxF&ppurBwt~_*<(AQM=5i`91qJYU^6>v8jS5NDhq_`XgP2qy7m{Q8h{#@kKoIf z{waA9wjeGj%z%o-o@|beW?ENkj1<#d9&AsoZ`|An-%||wSTBRn4mFi2Os#5>DP>Bg z3GB4s&EB3rWQXOWTV+YsNF^~Hos<(afA{VJOM9Q6G^%;L6ag%>Cg=(aJ#=1MbB5H7 z)zwecyYuC*dnvz-g62z9wRUqQ@>iP ztlQ-M2iq{Ok74Jl{i^f&BP5<;wd(lHJ!(bOARB_6Vid@D_w|C&Eah$Fp$#g)`K+M zRSh`z)Z7%wru2*Pn(Vck6=1jX{PJ^|-Q+k7T!EC?JCsb1_iZ=ULJSwt87l6Z`(>>m zG77R204WPZ+`(LCn3vKCCh05aYE&A@>7!|^2ah63D4kxr5?i@F4B6;jmz48d%&(n& zv;L8__r~~6QJyTaL7%zL;g%seQ|YYh3{Tvn1zJe|4;QxclKI8qQm-+e|NJ@hRX9OL ztigEjk|1Sz~WPs*w#>|MSz(Y zMELo6hh72U);5Qn(%?YLmc_b0l@kbJ9}%5lb|f-#k?e^fxk!0{>fHN(_?5`y1tiGl z%ixd=ePZ14LOfzoXXvKHqyn38;>`F(h0F2Ge$H6nG(^MTr?q*{=M%?s9WbQDq*n$2 z7bmU{LPK4^G+dKp-cnCeJ>|=s=6JhIU&d<-+VpZejJdwB-tdvXN~mHsVXyYPwqXdc zD1Sev_F8#U?HNgg793z5&O;74_|*9}6WlWe%k>%v`{-lTg!J~739rjPEPm5=Jc!}U zk%Ouy#Pc`(D;QU1Y%p=~jWwKNc7mIzG13-@rK#>mlVYZm!h5s zTrxsCIXmlZCyLq+h<@NdlZ=uK2+nLcUie3&ZGQBn4DcPrTTK7h=-9(~0pSa2v{Rz~ zEBWNUl&x7%e-k5D8gTrKj;`+OI$65!oQy}KA$@TwQo@4VJGiEw=%4>CwnG5-E#kk2 zl%~~Ytkz&bmM)sgGCD%PkKqTzV$--H)90aWL7wWNHRnEa|)f6p@CG`tZ*fUg{7(k@$2ee0A7Ia*DdF zVZVxuzSTk9y26HzdQpx*yZxc|zxR^(5w_};WfCyYyW~uN%=A~U@8f;Rp8_H=S3s}4 zYv(&7mc(5!X1~PN0;EkVib#2Cb<1<1JM+CPy?3oQdV`k2BpToehIi%ybVXStnl%ly zq@_cN^~ubbo}5|j77;fw*%Ijo3yhFqj>b9&=4oR@?+U70-F+;EB-LkS(|*!aCtJq% zW;&v20)mL=jmYl%*p+Tkv`a31jcnR)O)n}1KVH%5{pRHx+Rjd(*LzVBdFqORhn(sx z$`vT=iG1gm3h%AW4L;$_hJX;CTkd-w{%Y19?8&y-$g)ZJMizOn)A!9w!fBWuVv;NV z;Qz1yE5r0)4YrD%ebL$OCI79Du0o4)XV4`o;%9-uQ#OcP@iRiKrY~XECp)+{mTY2E zFR_RW!Ag)@@}~nzmjhsewpgMGSGAxn<>(6hV+nh~|HJ?Ap6IeRPoJ?xm6U4ZePim^ zEC5Rp>gnnBWWNi<9mq&5LHtXza{%lQPNB}Y;QGI{M`)KE*Lzqm6g=;{TRyC53Eg!H z0zV1ULH)^Uo1WKMX_f^s>1^0ZuT+j*vNp*9E?$odje#gyDc_LAi%?&9` zqHo==@>qlB#dk-l_lC)*27VR;U*#{WDcYG##S8pnwKvZvjMtDVs{=467Kt@u4ly1^ z81sOv9ADrE!4U&1$WjmD{c(ZY<{5+D0kRU?TZ;$UscTrg>6c3JrT0$i_FUJiwRz%& zq@`HJSs_O2mpMgUmJ|O`ca}Pv39~3+6oj7O$*g&A6QrZ~gSb|3g?ax>U*Hm$pMWXF z*SStYq)2-?la;C^NRVH}-Kl2+lUrGidm2dhYj#WX8jIj?F-)I%yh_FP(0-(W&yO1^ zF^?NX3Sy%HGOzET^F^%obNc#JK>$ z56Wy#M$f}2y=jU(A}q?9xsT-`!JQMucC@S+J6O(aFr5eD!LD-E1S255;rI{12zX83 zh>^!7;dQV0Cpwf3SGhX)zPipQ$W1d4baB^6r?haM`jJP5xi@_)s1uycs%M^Ur`ML6~Rzta%%l4a#d^o2@<lHoHh%T`SX&Vgy<~(FbfkXwMOclNnt#(*tcS@mNDQ zdPf#N+7)X5IspQif`BkRLD%gbc5tve0AxNH%5<~bTEYqjAGm`CmhP;#ywty7=pIES z^ERSyZckdB0OQ7}-=8nG@{OLZ;YJT=3v|(PIXr5($6?M3X_;s6m0rs~6;pwXaZ2G; zr&g{Kx%mxz5-s%y5s^JyZ7N*1JIwE*D9xBFA#j<(k(4GvhB<4fdFstTdFs=#TR4emxsa1x&q1p!?(4PYo_(NwZ-U2?Yy9gxi8BIT<_0 z2Agv#`i)prIB^S4cu2X{}AsfAsg*z!Hhe#RvtWR zR8nz@cW$L^g~G55)> zi~aSs{J}}c=b7e7IvV+-f#Zy@B>i8g57l>OH39Z-=`W>~ZWM5b??^TRE-{}3m_sp1 zP*BoEz=el}8qCF>1wSEGH99FFI{HvaUctc!7gpm(`Cv0WHGeSdWcx*6nZtk|F}PRA<~fVy;V3piwHcVPLiipRw2>fBkN^o@i1eb4XPgp65}yk zJtolVeNYoL)}WlayYtHNTdW5gjh5PA=TR9x_+jFa zFh*O+dvhV%FP&C^L~kPUhT$WVv0dj7(&+V^C31}(U`AQQOW!w@Yn;Fqr(}NI?~v*k zk7@G#BOWj_=rsALuZl`-uSZtAw5I47T6X``Y^ZAawz}?<=jV6K8PO=%)cfd0 zz)*7Migp6H5A)HuAtc0eRQXkvI-S!uz~pH|qH4(IL0@D92j3gp<>i`~X*qQM>N^8A z>sNVAw9NL5I=pToDz9?vnRHi(yP+978bg6IX#H(lWRtYERI{? z1ICwyulkk3J*ff!v##{jXmCO_6Y*ZR7!o8Dvgu)}(cfzcfIy#menH{X z&`XXS!?5i{g8uPRNZu`f5B&ZzHJyP_FtdS&G?h7#V9$}ay;w2turKrUQbACYwUwUQ zAp_gCxBKyG|_hFb;BH_50)&a`lCl)HKKE}ib$hybEx9V z+P*arVS(R_kd4Hbl7n5obeFLNq8hH%-m8(u@ANi943RTUa+c7agd(2bs~AuT_i_zn z`tD|KaXNs%meFLrG0J=_3PK1zerIr7RFx?AZqasfFw^~-{| zOKAB6nVCNtNTb-PuW6af>1U*0PUdDxPhK?pyvpuuE=m0~O<&U=v{&A{2P%}AjM z6UzBs{TH%-BP#RGRpm)Du)6JhZyP@DKTV8tcaO7a$`cWwZ?>iJXW5eK7`5UB@=be+ z4z?0eeLKkBXiWV}H3ZkYvevC*f+EB&l{39u*Lj%3QN^UeJ34nH8R=u?oYvxKBztt8 zFTsVga>!bdm!MZGZxzUk_;S00#*~(v0Y{;IqJ`_oTY`VegcUpmDNk0%hWxo_5yd{Z4v- zy=XMMuLm_Kso{12q*@~2RSpxO4u8)I=Aw4$()#-RuD$0e%YfgI*}aPoQLZn$d42@G z`(%y|{ZX0@xxoT83j6eg;?Yg>NX~=V-AuJ@1g-RNyK@y>VyaG1 zZ1TMiK7ysCxzf>+glc~%mi9Xtk!Y_DSx1R`s2}D`G>mUBtSy=;CyEYV54RZ3ZNld{>cq{LX-uZf}!846p7qvpASGfH$QQG1Qued$Fj?#wh$v{}vA zQ1sJZ?nl^Ez~UINL~&@RIi|63W3D~y^I>lW#4w?{SEF8Wy>BM~u<_$ocyoaZXit|| z#i%jxtL_5#6ow{0kXib(mv#(aQd-}vLv;J54o*~tR%4_x?ofW$Cx9$}cw;{`(oDp{ zpFPn#RqDQ=Ptc3HVFvmuET0|_ndS9)aS@rFnxR2CKoAyd+RsdlZe@A|E|V#U8#Pfd zPkVC36aFPEF1T^KA@aBlBRdL(+9M1nyps*vt3zYcR4RJR|1CsHKVyrA`rCs<*rT2h zh0}K$ax_pcXxb9_GZxR!yX8GgAK1U&(jLQAD!kjEbWsc2C6`yVti2WqsCRgh8luG_ z-<7$mD<878e9%IBC-UOpC?D9a;g6MPNrI*RIwr4bs&9PZ48Q75C<{AZ88(Ri<*p}$ z$G}n4S=UA4ucV%B`~wGY+y>C=^xx!}dM~rJk_Ta&e#!LbgjA1--@7`B_-a&v(g@wW zXYBTEQx(bDDAYuCW%YegCJr0gljp1L+uGQ<`d1i)<|d#bEjuxaynyHw2Q&9@(b3xE zz0y4LOm*-MkpQn&-F<}DT}k<0U{6?ir%5T(oH^BuL5wT#_VIiWR9U9(>@Xa1LOg6k zh5|I1g^gjgs=QX`4=wd5XhTkd%OusKSECv3d4C z2ppyZ^*7QL79tAR_~?Ge>TH}t4>xnMWVcR+SBv(u`CILGS+8vInT!SpF99H<76ZZRaCv)_g#eScuhA&z4)WiJq-R}X?_ejO>Wge~>=2NQl)V5tc}0{7XV9LKB4V<@N_S|K$sI;Bfh)YQI84+O|z3sb9MO7ekSLN;nP(`=7z|B>YuXKA5s}AD^0(bf#)4G zx-ltf0JHO3at`7rphivV9&P23(oaDKV+~7UWz({Cgd7}{xV*2WX_?-s!}PbnL@LB+ z4n{&(wDWit)p(_#fW(aRC3PRK;44-Z>e2fDhXtSva^|G+UrciN+xg?a9L#pfG{%~% zsFdZbusm65FWUY`4fOrcC0h>=1Y@Ngw3G}#ut!zP(PAd_0t$k?EqZvLTh=>M)J0|7 zAy#^D(*Htu;{tM*<5-4C{`qAEQU8RQh*?`NSYMAPFG~ey?K(fxLoZM+MVlur2#&Ga zV!`RDgWm67kusEQCLtwuR_cqlf=if>FaB?WalQRXt#kSxrjZ>gCu0bQ3+C&G)!$|B zGDr_}7?TdpSRM+G~9ZM3|`)u@YqN3E^Od6-b}QPa3pB# zuEZ(AKcwFb-fd0d$ZeoX-OMwky3b(*#W~DYooK zZ=QK(X+WG{l?_s>IPA?(hj-N*e70q>NA>ZR^_#h~zgwrNJ7m_K`PH0T)GHooY5~5C zLwSG5e4`Sq4(1HTTi03~$rqTPglNAiv49o(w@J-PIcodZnG1ktrmrtUS6;k2fPIE} zj2E40QXn;l!6$Zk;TG5iEk?!Uw=I!r=4LF{VQ3_D9hZ^YT+<&ysgZ;Dsd9+VWY(;* zG|aRT-yGrW{}uiES%>Wz5^0XVF#I6ey*F+Y>vJn_X{X}S;on>-DCe!t*}v0($g<7X z_s}XRpo967K+Ul@KD5!GiBv|4LQw&lP8ShOxZN$m1>}qVADk!H=cM*gtOLJUH2O7D- zeQ=wRQeO+FWnHMTfcG6vuQsTBQx|R8GH%wg1=twBa>{?J#{7w8F^i$2WSAtnK1ZER zqCBelTlCsOb@Y;y6(U9=ZYsOYPNQT8%M_*HG)KKdpo$lct@8Njw$vWYl@`dLJB z988!>uENHgVud!QTtq6i4*3`Bie_MN)?j3xeM35}D0DP_<+_%%GDZ>ra8OCAI zVc(9Rs^!vb7@Ps%42vu$u+TFXcFb*lIXyjQl)#SkJ6EY2+JshK_bAqPvlqL5XU&L# zN1B6U1Dvwu4;Dg;u$ygI5IDRg@T{H~H%L z``c)TFJTU6q7J4Mw=XO&^AV`u8|Yt>vA0+ND(i$=p(=*2$%xkbISm?aOHF#me=Uvc zq@dv0)YSX)C#-!=Uw?b)Y~0nq|NS)cFZC7|#-)|;HoWqLUtGBRy>qW_NPd2C+~V)2 z7o7fbs;hRYOFuq;PzkAHf9$(1=GJ}u&zL`yKeed*kH_*eK3czgpnZ4QYPmEFjl?M-i$b0+X z4pV|!oPrn2qsJc$-N=n%6pp{&(GeDCG=vB}c-8&&y^=Y%5LcEv6O{NvH@!L-ll-lN zxXLUvI}e@7CKDTcW_%`3(?%Wr&-n#1!-gx?r))A=T-8bvWShJ= zdr=~v4^_C_$9{XFXIrNFQo}j^Zmo|eE*PN~{W|u=m45{9BFl)D9!6n}&`Dl&{hBV;IW#OyNYnGiLiz=#;Wg6L zau=62%ewU3sMDA>nDxw_wtsvy$^=6G6@Yqgbw=Rj7;*l&r-fc|QefXFF>{d>d0G=V zSAJ_Lr?9_TW|_r+Xd1gJ;dOA(IYfNY0u57Sdv<2BLi z6M5Pl`P+Mx+Lj$Zmz3SMAO%34_^3H;+7?Q1#{+@2_pVF(Ue8__7)e^fWR}*|cf|RX z={Xvy)-Mm@rB#F^yUBO#g4$zs!5<&uEEDXo6Xil{=nlQom1jd2?i{GvM7A5m#pRL!qR z{2T`16)o!B8XWs-#|7=(&ullh4p0Bz}02veuvwGON1eP#ZbEz zLt5i5qpdn!5(_{(dD|}yO*S6LDb#$ZyGnGqPwO-w3Au`$2n>(|& zrz{Qq&CiS&Z_W_s5=vLC(C!ceH^Bqjc9qnjH)|;lSR5GaNR0oahznRcE}FNwIgU=j z|Gm8fSEFT;J8!~GWA}EnJ))iFe06((}@rz@1g5dKJ&Zgs0e3|JE4_|%;g}<6E*e! z7?;#eT+g2JYbr1wzk1nwePUK{q|n^;S=ch+BcWrX8!u4ys}KOs7|1XhWpG?`}%@u4JnAJ;APRqfz z#Y`ukkGq zR_qNn<(J##HA^^<{n6NHV^7P0!0{PnwdJsq?>Q?m(BP`*52)q#W+mKI*~0sRnt$=> zNtgCd#A`RaryAMRkWzL9&JQ{*ei*a^N`T>Qd58(^sT-YZC=3&0+6U7p}5 zws!L3xfwZ93FfOsBP}Bt05h*Qt94n{1@*H=>52L>W^VMZ-5#338EkZ>Nr#O|+M%BX zQ_lMmJUw7>olD2x?KQ>rEbtAEb30dIRsD_TM$sxl50kIJ1rd`uM3~-v3N!3KW8x>2 zj&2W`=E?7Ea5Z$d2H|TTg$N5vQhBOFJE*a;E~ye*`zNr?t+uQ6r1?q)WL&q zUEabCL6nB2mcMRk=z!0p+Qh?PY{_~@cxBjK3N8;lZ zy0#r3%TSrMbk^HS|M*cic>3mrr}Gym8;3eYo5%v)t=AEi}E`AF&i> z)4-E(C2_X#qFvMLNp9Z)ql)@^Jr-b?3a8qP%0~ z^9m-QCp-_lbV74<(k}8}FmHxN6=C8#xH16H+o!Q-V1W*To0zzOBR{Ovez0#eGg$3> zQ4x`(_?KA%8^hUiS7i+)y-0nE%W9HkjVa9s;~Q2!YJbI$Y7Im7(#3P5@UL^eYpw%@ z1;6JUaY09y=d~+1qZe<5{DKdci3@fujq2YES~zKT9{t>jQdR33RW3noo?G;#_~HDT zADtOb%)`=-YkE3vm+I?Jjaf)AR@n<@F+8xkH1LIHMuscJTBoBeJk&ZQ$CVr;Z|Jgzdl0vS^S<l-0D7$-y>AC3SHFp8{zd3qJ!O&j4-&aQ^3f z^lsQE8fD`IJm0JvyZd|ZyG&f84r2Wvd$He+s}g*84M=;8TNNPxw&`GdvWyx2@t>%D zRh_zt1?jOzfd1Dr%J-drGE5|SnA}$!I`UW=d956VjuHtYUBEFkQpR+ak&b3Ex;qo{1>&Gr4C3yuSo$m@)(^!0!^ zE_Z(Q3Y;osB|{GBwysP>s;ImNCDq82?zf%^eM5-6b^raIdOO0ExX2vWgNj0(6O%UI z-qe83&f-tw*1?wzf^F&HInt=+AU@u z_|?#FB}>Gf!5!f0{SnK>-uj?d_994zcOPlIaZBaX#wJg%*HCl1SZGOssJyXp~ z@A>BH+7p`e^vfJ1;U2yA$!T&45x_gL)H=vCNZ>B%*U-pm?rq0a^EdlG9H}-90HwEjt zu+e(1D;9S}w%0E-gUfnWJTbS*q&EPzAhnI=67g*c=A`aredC{^3WR73@;UxFZ~3%#laL3)AGPsN%E!qb|0Sg= zzlY-^1WTCpbI8meb1wE<{*P@6M(fawU2+TY*45&5Jy_&;)E<$`?C-%b?e=d5EzTxA zFImGaXm@jf9uxV8#iUPV3Fe2djAcLg9CZ5>3J0%MUJ34R=cpJ<7&YHX$?*3Zxcs6E z-2X31;k;@9SLg%Lu&}y_&^UJm8R`D+o2hde);l93?FQ*Len{25v74TBxholV@$>!sJ++^T$zpcmZK=Gm6QGET}J%7V$jmr!wfctAI^48xcAYdJC>7w`8qLM+a=Qq)G~>nJ!C}j-6QADMFMK z-(K(lSPE;XB#htVdR2BYlmEtQ5Ihul((S-}+*|IOH&oBn1&S^#o1m*-1=d@|_pwA656XaVBgBeo`d z$8Se;x8QgD$83m_d@|G=HI-4m{?JAVRe?2V4wor=Ml`|_DO!*KfIII$4h!N4^s!;A z(u)^kk?~xBlR3!O)q(fdFmw&|Chy;jFa~#gnjFEMx;iYUQCx9ZA!O-R0hhM^b)d#U zdl}6Vei+_ucPQk>+LXf(@=4Hiv8wpY3try1dAted;;h>T6`a1 z=kF2hhP2W7Y=5m2d7PhIntmud45oC;`8@1Wi4UN^8j%0;LUvF$WQ9|)KZDrU80QlU`PHJ{=tEw&2hl*$d)H6qT;0l7wuD|9ZT_6ir_E@KDlQ`N>T5j;18WG0a%Dv74|2J^7D>}}C@_nw+Pvs3r_`p(539ZvSV)r_=R*Ne5zkVHM!{hf*TN~K<8@ha7LEu21Z`q zj4J$rrBhoT%|=yME^gYzB8=JrR&=BSU46$4k98#R0ISBl-?sE zpdy4G=_=BDjg$}t0qIJW-joiJ-V>>zcL)$j=$%jk36O+*!SkMPe()m~*WG4j&ziN@ ztgSC2=N33>RmCm+%hfS|?nxfM#Vz!F&JCFgC$9L(9V-s5T5sjS_i4)rQdb;rTBPqv z|0R{AfU6P$Cn*K_zwUgoyR+l+W_LzifGfGwJ);o&{oVGaZ5H9K-C=hfE0aNrZ~@Tx z(MhV+c}%$Iwg^zm+dEHP6Fu8l85Zt1Q!6yExRlr=s%FZJj+lNqhxTs&%j6y%@tn5V zh7CB3YJW5<0z2x#IKy7=#ishTwld{W2|(1TZ?0CzUQH}*7eL!xPT7v9OnYI3fYdcp z+F|rDM`~g!L{Pv-?qC~RE4n#dH}drSG_&%Jfz8{9#hrC)f!w>G+fudVgH<0$<6%0R zrB#$LgDTo^=a*ooSI<(6>})~sj6_x`%U3!kgxnCM!!uP$7Y6Pe%(&Ybps9i!aBa7l zQ^erO!v3*Dme1~&Ar_I@UVMq2VIqAe(V%~W4u*b%|G)SrQKX6`GOF2?3Suir9|oJ)86SI<7_!(!yKIfl;ryz9sOZ@~)S6Pb z<98oaj5s+C3JI`kAX+<9Wt*(^w%BesWO$&u!zw`yy99=eK5VL~o`>j4>vX_8+{<~! zGk>19>eg;=vCI3P_I5r^)Ej%31{yxl3e~V=N2Asi)n;rRB+|D!TS)_z(X=BnvRKZHQK!N=xt}*Sadx<^ah=iBq(RJI~{M zR~@TvU`ilj0RB78QC+bxHx%bt+Q~MJ^l^FOsDF8{nUx>Pp_^;+U12NTTG>6HPx!mO zXUw68F4+i!5%?Zb=olG(*XOnQJcs)9l3r>ch_| z=;+?U6I^7Z8{h54bf+_ghFeP&jVW&t734On1EjF#)7z=NFOLADwQ`M(5ynX&W$B1sbJDIrtS6Uk9cSA0&hL z7%F8vVW5`tTk3GtT;FB-ddN?B)&4XQl@JkH;5OH9DJZZWsP;qu;w`^qQ*EU227Gm@ znw?OK7It1(q?5KxOqP`W`luR(+9QuAou#O4_;)@j6DtAEWz3nhmB{Bj-s zT^0cv3{W&By*tdwG2qUM8DjZfXH2f0OOGXDd9s9`%QR4C6KZoh4-rRQ=S z9$kSJF@LniSL2D_S(Q_AXWcZF#pl|$JPs5@A$H90DYi}a4e{qQN)cqf%jF_FEC8d= z>8DYLPJk42U*zv0T(BNEA=6igjd4dVdFi!uUmZEGh*OPUX8j&1W+`&7n{Yv-sd6_S zj73n1C$_dVHTERXUy&71LT*@Q^Xe#;(aF@qgSws;#CjR{o%Gab?Cb9WPoxp+6uRwX z?w~dt`%Th)Qqpse52!J(_XV)_AUk#pX-vEQtozHeK zI@RUr)CCmR#W$Tl&K=ms4U^$2RSEn`IB&rYJ>Z>P3oQBJ&j&We^MQhRguRAk0JlHo zbTeMS&8L+Uq;iefSB3mpv1uNDMYGt1LpJdOWxb$-2QX!prsdWW$Hh=RS<1YM@t02D83Re#{ zM6U?@kkKqG!YyYn_3`~*9fi;O%Z%MU&rbFdk?$=X1&`{Ema!wbkuRPf0#7qk`K6-H zS|?_Ez>@{wI2?vtwBDKhQJ{`@tDjGOPZp?FVH3UK;M*KwV(JKEz7~##og|C+^zOfD1b((FdPG)Zy0gr z%3wFDwHt15&K(=Ra5vj?jWGgbwuj*)J%k&9Xp4+!N4vH1sVFc^jD@>0?U1O(ZQuJf zy~cI)cb*`VbvInmXmop8usTdw$UAynVM!{3vA^_I$7?Sz4$?vM!L2y^=OT?vKe^dCzqjzO_5yt8U-0tHKuzR?q^QV)$)>ubRRy z1#riQt0ASC?}K5hOj}15AF?(UQL{rb0{?LVWCb5`@*aynZmKVjFL&(K)$5MfN*=!= zRgvUIORaonwf?B-H?MRCKd4N?5gfOeZp93@xF)|rQ}~pn4!Se?N+ut@rPWXNbZ>04 z=x}AEdnj&Q7hrYp-@|v)N7435VmjvM-Fvda+22;|n#b$TZg)#F8*NIEN?>WjW$A&V zxwP+PIU)C>HD7KHS8I5zF3s<(r#M}r;^%1PqE%&OsfWUx0edV5og-%(fN6=aYHT0! z&(>+`5S>52kg|eR5F$KTdcpNCm3vTpusn9)AJ#{QXh%Tu3Ee07V{#!P@gV?7FKFYGylVn0+!nMcLDSSK?j@Ss%`ta(l0rl3exM zw?YbRC|eGN%tc@?D$R6ntVwAi95oG&;KI`qgj~!etS@aYA;kdMkK^=Jao=bfSYFDo zb;;>m{eFuKtnws(5(vlO`XXPIz(3aBi+H?!qNFa6>kKSgKEZp__PWBmgmfO7*`kvr zvbvY;0i`}K#m5u6I2&G-Lc%p;VN`6a=kz3Hgs)K8%Mqh!6I>03l+e$T*1V>yo(QNR z?W6l&DClsHzmH3VZTEL7#!KdQX!m(b-4WU^dB+0&q00evbJNW4S?;lT@MxTkM6am2%xjuhC z6O%!cpoYTKIVG3&2{x>mXl>TlCw}WO)^^3R$GvSqtkEu`UlZBxqY1qN0@B_#AUr<0 z0(ay>{?ux|5)>%R1KO%D9hJow_J>j#u56*}HiRV1xw!w)K}9JV$-Z2Dy;MH03xKD{ zIKDMlQnY}l)$bIb7-~wk&Pnrq)tWDyvp3TK+%oSeay^u~08NH%W(Co$VgIzMqGINY z-N_tr4-rSpzO-YwaWE6$(c7o%K$^S5>3@vrLq!bd2Vf_JLVXT&35F7zK{>=XgtWI& zRz4pf%y_;*`Sbc(IBy9va@&{qK+jwd<) zoxJWbo@}b0cv);4FuqXY$f!qDJ4mk}PRzFF1eZ*kR!=*+kP;%<&o%c~v1ip&xC;1% zOsj9BEr+wgT(@t5Nw;@G+?n)^oxVlgKzRYK2G}VuMr|>zTnliz=opx8k=tPji|dYpHfyczZrs3Fx)+? z=4$Z3%D`pXQ8lH;33X8NIF#WQGm8MLt4bahG=_oc`Q~sPc&z_omF);@FXlu);WC~2 zD*j+~l3Q5zsn(dw+s|V|IVG|8ArSu3EQ2Y%bV8oCacc_{Fwy3%z5?20W0~y4{f&F@ zf5yp~ic1prlnj%ecOBwrR3P@lLX#BE4>p+D_6c%@&cvRXy)ChK;S`oNQTB}CP1S4F z7$+{dL*zN}k+lVea-3nAmEm$Ji)B?&+Onc_nKh<6oUXLIW@qEFMM;7dnz(L<3nGL8 zJW-m3Iz9fmcl6G30617i1?9w*{a(-IYC}xO4WyCMQd+W7ZzmgWyZ$s$;T9sCHYO)+ ze%?E%`RDSp@p1(TH0N`G6#raPJeA{nvqJq!1W9pQYym}rhxt2neZRmJ#EVHT6WIU7 zL#OH1ZYqC;xGWuR7+ff8$`kgZ(6>JJMX8D$Cg&K4%b(eN_`LX!oL9c(z(07sII=}L zZ!M3oj1=C+fTV&f#904|h?;p9D8xz_+5ST>c0PX2alAZL+gx()r~| z+~;InXv%F{1AJx7uKQ#A8VrT-9`erG8bETno3lfa zI!bw*CJ5-t&Yth=yb+4~9YjClf94G92?i!O-9&zJ=J(G0!ku5* zmq-(W(QY!kj$7L&=H#e_hlRZaG%NU?++_C_sCCe%uLA?6G!%@2>WG}ofKh;eRhGfq zY6e)vUsGYqzVu>M4{Wu*D)<_-Pp>mC016}neQW8(X4>ZT?I&9&Kdt&$A6yM9H|s5S zq&5fTEFVnD<+%@j{8BVxu(bsdeQxt9d8$!FP=}>iKW!mUy@jm^Jt`?fO=5&7$nFzx z;wE>v(kee-e048lBz?H3ssd(6A6*;y%wuI-_8vs20WwiO@s}VL=JZ~@M#Cl|yS2_c z{xUPCZ2U~HlZDPgV(~)}FI?I;sDR@u%fWZ_{7<(o61}>2Ms>xE8jv}EpXNhq9#KN8 za+V4(QR8*fU)syv0}_s`O=3tlasRrJ5s~iU~9L)kj^OraO~y0%S|?Ml_k{MQ z&j{Dwa@RRI5P{Kor2P5AU0BL-405dQSsW7f@WUEUMu}-Iy`#})zLK?+vCdN3(E#kK z&1=`@Pz#I{+^pJ9w?DCJ;1Xb{l+f52AVR|OXMKs!flWh$IQH5(@PTG8E?)O$>T9=wAO4I3)8_YN zvm6IojM4^17lo`>%300hPcREpX1>Juyau0xttMYo>7C9bKh%0DV-56y_jQcf%seFb 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

    mxOu05V9sYZZS43uH*LtK;mPcCKs|Bpfz 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 literal 0 HcmV?d00001

    ?gFTrqk*Y9w}ne5koHcB0m((-D~8pZ98-vL&+~?o zM*tAJWSf$PMhRv;abpsc4*6@y6(Rs$e-$}IU%i@zi}Xn!k!Tu0VIT&GPn>In0|N|> zokKG}UIUyCR6)TwVc3+SlQvutSHgtu6ZIH6l$UE3I$aGl+oBjsyppb8hysMV22FuA zfYYRk+xpW_hcPq88rEj5WUDRmyB>f(Li5%cM&6Q*|4hyVwbgtIePKPsbz_!05baY5 z-obA`{fPsn-oz~oq&-0T{l8WP(>)FVfVho*nzm{(bFK;Il z2A&Fm3(+Mp=&>@ot0KNEOjMU6)uu)hg|$O-K3XGGW8a#XSqs5{2=3;@kr9&d=)L3(qlS}t3ljqlFX!i`txs&3ra25HuIsDoxoR_YEQb(`*21gTTB9^xn9 zQX4l&zFRgZRHT{ZfwM8wS_qaDzp4&&4dD8pC26hO!Gz`hHJ_4Eh@`!Oc^&oWVj=-1 zWFJ^l;!8h}k$xBo6ya?N?kL%L$+R)bW?s$);KCVHXL@GwY@F;cLGGSFdc<8ho_LUh zP|zA_fb>*04?+4e0;Wf2aR`=&>#xXwOgpYcXo>m4nn+_^EClV;ncb7h;U`f;Cup>z z?=qg?j${3@?li}t*kA4dmej|lcbF7N|BtNm0ITv^+V)nHm|&Ddv4dD*AQ~jb0s;zF z5(|O_yP!s~poj{BBJ3E6v0=eZ6)ad#EMP%}ScwJ1iXx&Qf{IiX5M=-Nyc-8I|2hzM7tX`O?bA)O3BaOgo`}k`ojkmdU)A1f6g|nogQ6rA(MQ z1(BK^QuOV}T6{i$_9?LU<+~3(!Ux(k7~=y%nBh=%0(IG;LnKXOo)y=PKb;_vXqF#cx%hH^X#wk`HEDDTB_qOIcNry@O zanp76zW5r1)|tDH>L%V8uGo0VWZ~KH7NDP?dK318vY<$6HLAWSu5Q5xl+*C=7@j(( zp&5*pX?SGc58YlAdt@2e2z8V9pVC9nzy>-xZe@_fT?1C!S87$>(MhR0nR1>Tbr|&^ z^lwEyn727?1XE4%hZ)VYXL9ebXEo1$>bK!?o!M&x6@NH*5+HVIF07x5+=E^E9wAVq z#z2c^(EIYpceJc;87+~rtUPkSLEI*Xp+WO5Ywt@xRB~C_OL+c)1f+_%QoN9H$7rNb zMqO2}1;fekk@N+bPUmzHx6Q95-ba-plRKaPCc%p8-T+)i);%7~V5aN61NTr)xQ!r? ziAM$4^`eV!-DLLjnZlX=jfcflM`34F`QtxN?e2L`f6Y&5?oInW{ zMlJ8`r&uA^B*5`^4V0h5?U_%V+en~5#}a;A z5#8d>3cP=)iO$Hqtx&jn~APvlxLa535xUaU-s;T>o8{3ig@MCKsIRtB6@TfhwI~Cg! zsyYJDQEuWPJxVJb>HED#3R7xcK;25r^1}edNr+lSzYiz+!)>ENY}%kfR}lJS&J*8$ zW;bnR=q^j!IoQ%tBzzKx^bWb7|(z+ zQi6mRSV+9<#jzS)^BOkmh{5i96`repc1QQn>iZ5YT~ciKa1MLiMe}v*)=heG3w9)V zKI^KB)?h4m8=}w%QmT(&eP)95W=U8CeEWd;Re%c)uxSp{IHCs*e9=(>ukN;_FUVK* zBYvJziv<)m*g6U`dC{Sapq=xrWnL>UrJg;Um1)>#!j)e8Mqj92wsP>0YZpBZ_H1a| z=kC6Tz1~sk5J0?v`CXv3)}<(44|Y$R=8b&>uEfH;%cP(BGYhzMfMD@T9!}kaJ|dPd zAfndZ0ojtd0WDGPulB-}!_oZBeGd^f`vtV|!QlIi947hM&&30ez2wyFO?mFigVsy; zjt=@W(q*sNtjVT0Y2YXK=mgD_yvFMY1`{Mb`abpuXZ!95_z98%JN6q*X()0N5(DM9 zsFD>l&cOS6D+Q;WuA57;UkV`kn<+%=6lOdt9=l3#J)kCF$RW>_7s0G_MpKwLprqVh zCAd`;YRVpNcAVQPz$a?>@r4ZFx;s{s_=}rMpZPZjaD?1(niQ>;wqhT@qD&eL!TM<+ zUQ@RjH)I$g{N0pUa4E#mx@HdkEVK2<;$r{RZPR3uNPD68+GdR0lJr$gd9l1rFcZ0K zOpapAq&CXrb=m9N&sXN2m^c4w@cCgoA2d)!RiJ>DfT-t70XW5lhEPax+F9_s&9IIw z=v72ZU*ah2dKY@5u`Uh95vbwVloe(g9)`qU#3U4EMygbP)9{biDD|hWLIH^=Aph^W z1UHqJ`F6Vdg@OB;ZA+eH-m9W&P#sn5K={PMx1dZy$?wY;Mdw7dV!G9>x|~gG4bB14 zPNARV-q^8_b>nCoO##klK_1ho(0<$%Zwc6>Wv~<*0&s}|M7^%KD$s7!QtYf|uoftl zg`tKNb2dJr(;Df;OE$ZQiYCZRPf3A$zD#=1)BnDV<`r5-85KjaC}h`3ZOS-D^F2@e zG#?2|222+Tklcl~s7@6i9ShfV#;86=I*K}a+`amenD>{9n^tppaHvbAUj(<@~8| z%Fma_%wKl5w}Hi?q@<)%F}G1-oOb0mf3Td56+bqz$tV^}NT>-?u=a}dFM>j=4Z)*& zQR6cYHW-7Oo}Lg20#DzJqE-jK1uQ`U^rKxO|cNd}z&o)D?M2rjbl1tMxm+*Ze^Q zrqco6q~#JVAvqEwc>d}S=BV9O3xaK50S9UZ)214`Seq6RT-L^f&PMiTAT+d>Jes;~ zXFuW@2#ia#DX9Z{u$fhi*#tOTDznFeX^kbwejJ$y^7K%M9LgA880|-OA z{x+=X5PaIZ<1n(%? zOoeXNmA3ZMK>%r6QtsMhA6@|-^XZ}s4Jh*I#%x`lcTr$EDvhY^k@`Ias-z9Yw;dPI z`{+MRJNsX;1|5HMS4oE|f{|FbEi=KYih(P;Bvh3kM#txJFirxX)3*2<5os4%rXsv? z5I#^YGu-#!i_$e&lhhl}n^^fw%m})FfrQi?9JK{(G36m&QYj)IO@rvMWPBFAm_Q>T zo|;qkR;5ag_;=})h8naxz*HuV+pTQB$FqZPh)_A7zmeDlpW;-TFBs1Aa1ig%6r%vF z0=tn}Mp6pV8iEPqZkvQP`b=dWD0McdOK2qX4JNM|#{NnZKP+NH*1zjn`&HMZ|GanB zDx(W!4fv+SaidAA+1pEk7rjG@vQUTw1tdCt1y)5-D#(WN66#0d|H!_Y-efAT<-QZ|sZ_?7C}dB`{5;=0DY2oid|3MEa^pficBfxad+r!dMuls{}p^|bv_ zQSdO0+A!y7{duNtM9Zu`)dMwdT^)tC*T0qBN`4d9x}RRE)5~wh>Ur6 z`$=Lnh-!WDPA}B3M95A_MKl`VV&qa3oczLH06U4QR0Wt?TWiQGK9TB8aYoUysG4c) z&=2ppGmXitk9_#~3SSN@Q8j8Iz{{7W&SV){AC6!2vV^8XHG1XV6Bg@)`}!Yjg!GOTt`{Fxs^C1w)6gC1}vrRe6i`-q6&Tbiqlj3M=lRPg!)7N_MV4kjHkgowd)5FaARlvYv9Ry%Pf)sB5Hpm~!JjPG-EV}0 zWI98s8a=kQlwL7Cwa{7A?;u@8llNfgVS|+=HN+*LB=lU2G)0l_a@wE$M-;9YK$X!v z_C~y9QhSj{K@fqZ{HVTR(VJ65BcoF!*?O0`yt5*sv+H}{%q9Zr>9a`s^FuE zxubYGH3=f`g5e8+Oxyq}P7Ik*>gCE^RdzH=isY5Da9?dilT6#h0quUA?6HG(~^dux=R+4l8<&`?Zt73di<`=ImLp z^1I#r3O4*U$swTQ?xv}yzZ*Pt|DsNd+VxyK%HrkD9ea0V#+O!~h>qDaCmb;Qe`|KVn`@lfJ;q#$!sR*11BHv8@#1cL%$KI%$nVdxxW8$ z9i6XY%~e%>Sc3%cP6ng2)I}*_nzVWTL`Ru43wt>BrR#zIp&ZaeG~+qc0(Gzs(kqN~ zF>5WSQYVtrA|XNH3!%H37L0_Ve9BPlp@M%ak9FQ=zowpEVJWxI?1hOnWnSJR0Es@(Wyor9m@=m z^Ob=Ft#eQJUo?FbM~xRdixYuHb!aCgsr>Rs&30G!>u1tPl`bU#=c%4C>zy`+*Cc3i zV@e}1WR)ax^4`v(_OG~z1on9-9Q9N-?S4kD=Y1_5k{tr>x2c#$X$M<&rUi)b0l_P7uJIxn&<~1-0-RoQG4%uv+iieDG zL#I|xSTwSjYEeT<)2svz(k7mCLZr(Te2(JPuc+{ElkuZ`&%mLJhP~x~(i(pnCfCrX zs4ubf)=Hx37e!VutPT*ZX&HU8$QHW z1~dWmTp4H7NM(PD)&?JVmGujGTPggr1&-IS6cj#+irX4% z|FmpG?f3ppxU&YByMV&BwJWKnI>qq;#tXxl{Sp_zfO8ovL-`aJK;7>RstjB-J_}Y> zb1ivH6`nK!TS6#OHZK$vQkB)GzW)3~DBDlqq@sgJo%~$$t*#AX&28H4!YCPZ1_4^ z0yHCU)jDTYzwWh=o@UK>{qPOQbz<^21|y|*ni>RMnXuV<-l<&!Ry7`V>vzZs->7~a z(05cFRroKh=)DWLWtb~1GI6vOi7bbJtc& zdfVLtQ6!JR4nIP-qs8Qxc%=4RrTr>$%~5)xtT$!^n5nW1_n6arNour}ZRI1Rasm*e zJ~I3q7XiCCHn{Lqc7Pz5+_I=MOigmscTTm>1!hls+jr;9(FaEDPaS@3t4S?MvS(zo z`o`ZOT`{Hb!QPU(r%gn03?B{g@ZY89=Poe>1$R9Bw|_RV5P7Ge zzhOC>_yZHZi%qC-+rkC8O4(w=%QWgkC@_~)|ZFf4^dR2;*( z6LZK0)m7O%>p?I;UWTJ%dwRs4!2&&WIfq91HjY(cn`Tfj;$WvO^{j~m(me5iLU~s_ zX*goV=qlcX0E{haG0D@w{nEGawru4k_^obSEAW##bnbi*88@XtffaLs#0|4!s45%Z zLOOeGo8&o;s3vJ?nKQs9r)e>!q6E`_3u#A|%${eoU4jEbvs{67%g;g9h5m2dI|WBP z>+t)qhg{S;rxzki*w<2dx=MY)&ZLq3FHx84IFDHZiVFC3ntk$uzjj^nii$$lYwtuE z2+4a1{EheR+b2UYGa;4}lX%N81K(P1Pr=cM{Ui2B zh-f*Ca(M z61#g^7#sb8M2%;%#gwd-h)Z%Yq59ns@|!r7PtBH5z{UELHCwh>04CO$3Tj?Z<#`@@ zH61y{wviE?K*k#Fw{M^LGXR&;Lv7DsDT9`u{d~kvab@x+C8W_g zhert!O%_M7qonRynavZn&FgMjTt!_qyyg_NwQfO0J3egogD}cRkDSU{&EI{lQZH|N zX1JhXD8}Ax2D$t!G$WPD`JnU}#oo#6YiW%ytrmr1A7e?}=}yos`Cto=R{*#ta{f4m zHe+dLZOY}lltM#g0c@&k_3(z_q%I4Y9yf_%1S_kozdDGovUlG;)O^(&IR{j;2a~g0 zre(#&rLxBJsPORm{QaTh$!Aa*vZ(R*kkV}5;3RO7laF^HA?r#9yspGquGx2+^O#sg z^KbAQV7muPCk4yvS7Iw==Db$<`Mx7xWkpj;_dYLo2h#rlol!oC$nYV)hWTQ`H0(bD zt*&~8v0Y#3jtKk#3(REkUykol!Pru*b0Qzl?1^#5*>{c(SlftDdHaQB9LEc;5jzX zN+3dcB0taiwaV3JCW=~c7mPsGvtNxu7LlZA*4gn#mFjtG_{>6A=YT6>OiXS$sg5em zS3)Gru)Y{LkWa&fH%KL_)IO3ZP0gxCuJAoFz)|L&zDT;mdq5~IfwEc3)1AjS)Ob-z zVZ=#~Ie2(Kmo8#qdXtTWG62?AkqAD3N3nr2wH)qN#%z=yFx0GAe9rUdpl8JSt3>$- z10G{0EHYxo>&>(NqMShLd>Fu4qw3PWs#SF*%2ZW^m~pi_-cDa85ahy; zdd_JHqNPw3tcQtbz1%lrohpQUswnH2{?gh85J4uQBrTn?05*k`uJ8)sHoy{Yd!I|b zjWQ|UxE}4=J)@3!5M82mI}LSsU}{LjFxXFoWcf!2+j2u3C&@uVdts!PR?if6*G?7ZMSX?K&w z#t0Mc9paB)t<^3n=gL|Ir}rhdqQLGoo1QfVFAn%qNEPv5}=rpP;S9SXqF!6DYcZOejT3fG7};=3O_KeeXcivTXeY zN$s>*CRu?r&)OCEd?1ZffpF;>(n^<|PJxLfyaqngC-r6`z`G~%R$RoHbVJ$@L!%&T zziQa+n|ADInS-{?AYj&JrPa$#EiISw*POx-6fLCvxX0~!_dW;cf*8!=d~#AmVEM(| ztCa(tt&}=uLNbvkw2R}RG!m8W07vM!kVA+i{C}U|6l&xFbTB5KtB~hOvlJL~HhJPkxgl~-VK9ze zTKD1qernN>PoEl*SMEWwI0ZsV8!)Al_;&!j2$kg{LOtnqkooo6WDA0zTuVH?_$SlW z_m;emIYgn4GBsBD(no~XS-vvMdZ0HOjFbCYC`Ls~d5{l%YV>J;N3p*sPLiA7D*H?5 zAp22A<$QGq8!4SSMb*@6WX@yiz|^m!QfEA4aPt!Bak_zq#9(T~9j4sY{xiCA2&h%F z!PL8N4-70lZZLRTmkgr$Q|)EaZp}eoZB?si>du9^PNH({!l_fUq+tptip@2U0d+)Z zQY!Eb+OM-N4HWzN>&Ody#|$*e=LMSCeCPJ5 zBVN*-eH>?MW(!${|GM?Yc`}0;e$MPW+4CT+O9kkfrk#ls;x2M;DKa5O7}TqG?`5bI zl(?L9NAW+%e$&tVn;f#*r8vFD98kG)9>!ZHgz_F%zzLMWv-|!!O#{$+qIC%fQkPXL zZ$W&&s#fsY#bADsBfEB`K?xrm-DFZLj$rTPeZdQ^ z(P^)ZN|m%NBHl)XwG@)9C-bw#e@*M>=y;!WY|V#?SY9_kiWBtegEDEcfG|9}Hr~%S zf}0JO5eUl9zNi+K)9XVFd>(onE3?we>qghBk9if~C9G${EV7T1q)bi@Sb#whZ%8R% zw()&Odlo6Rcc9(pTDvC{y&7`krw^9V$u_V=nlVpqlr|Bt7Thbq;#Cwc;TUD#PWyD5 z-}ltGb@s-9iKjsNz{SQ{Sv^(PlU?V`aSok|8Q~Cu5yg!QP-1KTJKS$}zE890G%5MV zMP9vtywf6`lO!0ymsI6Ws4qI7ocPBZxGOHFkvI=Hx9fQa<9`8eWBX65e-P@BBq5_o(iR)tMSeypuahC^m<6_91K-r;g*n)-qb|N^i|T{ct{TytQ2oCDl%X; zW)@2gZK1}}KJQj*31m^?~<{F$y!#7v6?DI zaZ|k-jxiBL&hna+d%z>-xi{!9eLb2GR^qpv`%r2%nx^EFlifZG-J5o1);%Rrw!sP zro;i==o10k<^asjkj+3FW(=+g+rsn6_vg`?fnCUYMva7q5`|F*M!}&Pcw5T!sSjrM zXwPdHHa}oO#>L3PA3{ZZ%WTR45^q1y7CX1zck{7nn zjL3F6H3B3#_Tc-W{9|3fgYx6if{tVDgh`v{0=Zqg3hI!dwfiuW7SAs*`RBj_jOow# zn0k6}bsd#W>MhuWl#E}lAOc_*nKvf&n;m#kxWLS1k0jBjIjtoR;_?9>$RxxXyU*lB zANMoA(vx=zF&=xMq3iPj@VMIN_cv*@!4wC&oo|?CG5t}N03h{y(tMVk`Lh)<%gE9z zaird7VSd%#7!`Q8`nr;w6Z)>+2(swYlFU};enlW6Lpp^|7iYUoLz9@%*_Jmy0T#gqH`)a5mDUYu z2KXlPVZOTYwbyL*-7jG;HgDMQ4XSG`#QNTJWH&Fvv8W+0dP+=x9uv<#f)xxp`^(YO zpaO;-cO5uwbHJq#6|wF7T+Q$q&Z9b2aU&P~B*TOE4&BjM7eKKL2_Udt*>3>pmrG*N zs6}zX^>ugxs3;?t0M105WG*`t>0+X=FTGE8pw*cm-*WT#6r5b~o#?Zgm%CNB8f-wa z4&wwW6$`_!{2bC;v7Agtnr~`qk-*wrrw*`s%rguLNy&lvUyuaQinH4ygr9~c7+B-L zOH_i-Rq`AM%QrNR^hs zF=K3e)42W|f7Yx2lR3YqYgPe?-&Mld&u?Kt&yW#VZ)n|zqA?3|DEM@zw-EDbT;9{5 zpmY`DqQEX`{^WPca3?OGMzVy1$cdY2jAlg`WuBHX_2dsyI}O4C5dnDK8ljA$$VK{6 z-?6idX1Vzgu{9?=&>CoPnK@1ch>UB zxn|MJogpFTh>N{`?@+baTG|f0&6b5E@6oz3iH~}T1$1>d%_)j8h!|Z8@MYVM*5U*k zQz|!i9wT$^a1!1FZO9NdUU-?65U!-~LFd^2IdUCEtOzrIoDlcpHA!6ww_>v~a%DU< zBE19Y%_RUK{hvgy!sw0OKcXY=VN)H4Ufl0yC? z{*g4yvZp6@%rXqNR)zb3xLX%rYGO_EY%-e`t)!-aGd!DbVi;S$zQ*U*#&N=f zy3g7a8hRdlAA59Z0$%!6GF$8Qdo3Wq1zqj}e+tE+lzJ#1GH_@=>dH9BtU9rdL0o@I z1jrQhf3n1zQ1Qb1A7DL6mAv{wdkcG-2$o8NsFgAw3{yPjSoyL^hZiyfYaq&;tt;J79*cE;tMhhlo*zfu9)vShY9;?z9OZt#+dx0{`|k3r;i zy~Q=_Q+lJD`{D7iuMn9y@G}49m|N9A5)CquhZK{c63pZHD4>{4Xjn)WhWecvwSR>2 zKIch}bT7DC0l4KCw;!7)hKHITJfwn_*2=o6`vJgjFs&MIl6)h6f@jz_o}ts0tUI^= zZ_^tGFV_i=`IK|*{XQ+5yrg8ujobD-czIm$!_5^#E);B>9Njl$wx-}7iTcFk`&#XM zseKnJ8{l2Qda41}20eiIk z2)T6aCnYysdU1fP^tQCLyoPr1!-L~owb5CAbGEzZ`(78^9%_#LzCOg^2g$4%Ax9%% z1!q6z8ZB8M?E(iwA_1?PCqb;JAOU{B)A$h%?M*QhnumMQd8m+B)EsW<2eJ+F(`k9# z+NRFNIKRLSjegO*dqW8u@vwUrhll~?4Troq+tuY)GQzJgE+CON#1lg&Ap|GLB+0lm zBEh<<4Q{BiLj)i0e7EKh1TwYL9ePth^d4|>aRg-I%$Z{eFy(>%LvRh#bH<@t9DTWQNzHPO19WE#_|M7{sxt0yN5@2O=P3R0&Yty4tyT-=hK4jWw~za(XH_OiOLmQtQ(dkhFl#&oW0~-a(FK2K>tDB38A(#{2Yp{A@#z;$)RF8pgEm1=1Zp>TO^0n zy5}J>Kjctu*VDE7iE%&LSF!nh6GaQHRh}nF0+lz}Yu&B1U~7ia^F1d%2I;%oQ2yti zmpLQVaMeOw&I@j1f6iUkYe<&Y&?869dX)Q5LitcrqNfV~vK&lIGH*npgHE$oR5RJb z((8AAGyNoRZ;C3XFYERp;I*N5p>>G)yCdfc4>wDQ*E1sir*>SG7|_IEV~WM=Ljv+& zBVvb`U=7mad@zG=q0Hg0et52QDtA1+AV*$(V2Y&Aaa)1#Ovc7MbqR`ClS9KYeH6Yn zMs z9saRb(BiBCoqEiQ8E2Hd+U@*5I;xlnbg3NTZe;hIc48lqS!WnN<1r}YVY^IB!yAwYohK)D2z4|w?M(%LG4F+riXbyGxf--y1H|R z?!*s;cEL%1b{x6VBcbSSwz7H{gh~j8&6~oCVzpmMT6% zLwS_So0!QRFfakL#i6hO7tM0{ZYsFb6Ij_ExF}BKN=QLnPfDuM5&83Q-c)MM7^H`{ z1Y_uR4J9n;P*NPNbRrIQ>{kErg7>|8U;XiM%&fy>qwg>KF!6*Y<^9kjcRn1r^LkXL z_hCC?!`8p_-oF4L-h&5PRGOlhblVZoNJvmnsce!KVqBkAu?W z(ssQRzQK8$3=PSv51AtpO^_cJQo>8g#r+>f?j6vrW?3^N&Qui{k_c`2le0nq(S_FN zaBHXgvGY4h=2vzz&F_Ox*Y^x1E z9AXiD?5z*kq2eOEbL*VVBQF$e)oM7W%+Pl?H`f8ZS&)29v(v=!-R_`*S6&15ob4Cf z(R7mgvnFA=Hw*n9CSqFN9#4pwnw)3bro~Sl|NQCnu|be_T4)1RjDZ9$5GArP(rXti zIVFrw)*Ksg65IwqHOVtD#@?TB}{aHmGOvLDs4>VTz^%;o{0dV_+M*E;DcK^ zC#vQM3LdisZ1x@JYCXjbpkwGmbR~qh3UPNxamW^+=Us@F6c4xbVQbyB!A;@@y>&aD zxBim%Yo`u}7Ji5|X;kj-O(^!URkydw8sw(d(cck@Xw4 zI5E&L*)%S#D&6s3)}{MCRkt&Ghk3c>_-XFlaVtze+INW+4@>lfQ1Y00c={!+@(h5)^e1FOR^m!E(Nr{(G+4w1m z^NI^c@F&jUg#J$qE9gWT$~HZA&PmvK#&l4$BHJZ+M%u9Ik!u3q-3&Gxq}!_JlH^Sd zC*+SlG$L?~+u8SP|G4eOKxVaG^OgkyrPlYuJTpyK3F#q?5uh z0O*XKSW!58J5Uj3O8R3?SzN9eAKWoAesXzIl~Y=EVZY!xM=Va;RcvZ|vUaWZYvpy#U}5@5GlPwXA&0(6WjRG*>_SmPDS!X119BZoaVCAxI_rpjg2aDF z%`zqy3RMp@Y#n5Kgbi;w$n6nlUP!CfbYgL+)skO+3PMLoinJDk`M*KvH~k36*s>&e zM}z9WMs*8nNL16ARAE|9wPt?U8KDbun`fIvodw^NSvXNJt%o#KI7&**40b^u}ILUOW_i(iFiO1Jb`JMzYA}ZX6A(znt>@B{r za0$Hbkp2Yn_y~SAG{mCEnXivvWx&s@FMo|FQ+_UP`S)TntWqtMWTO3=GcnDKEb73 z`V>C@;$GabkQx6B88fl`Qm(iA9e2NjiYw_(wVmeJB%!UixYdg!e>!KUs7&l`F=p_ z7n`@|Dv#=U8YYTC_4l2gd#JS|%luupm)_5(npc5ou?N4cq`69~4;&7DpC2>`svso$3~?tE3I`9hDC zjuAo;>f^);1=?A>1jAZ)|IZr8HNCwUbyt6&e=A`2;?^TUOQc3D+c7?4cU7JAM|frx ziB!a7+ey)O0`xlzjCtDh0un*u>BjdAE@6M|*ZxY5F%L zz>xU?^zxCCBH^yVJz+ulsiOn`8RSpk@hh5JHD03yy2&8!1=QqZ72!N5^;dM~2ZVBT8o8LLu zBWmQ__$3~-;hJk~p3QyS0`Y0C@g}de+Gf(s8f~LTGG(Q%q4+=YiuwBRk6O~01`;pO zM&!+0u$St6M4y{S+Ref%{WRR+=>ztu#D7?R^&A*^hZRGz%+vuB8(w6YC|#fo9BFcen!UsL4{19dK#(gOa?qxl za*rxpK>KfgTV|EJZ{M*yl#(Wzq+S2#m}Zi`UmN!E`E)YE zlNdx=kr}*yq~Gd>0p@vrh1Py)@HW4k5dEra^VnJTeaHw$f!<{LeO%t^axE61`6v@^ zO3rsV&r$B-_QWcGh8Eq3$xu{j&tNqwgS80F=^bglE2WZD!0U&vnTekf%>QyfZ6b?JEV!Hew`#`u zqc8Wo{eIXh*UP3q?kK%e`R9b`nvW@Sj@Nq zmgog78Jup4aES+s*7K-AAocpLs?#>?`p%!1jO=VzURCM_Ams=B!HUEg{^*(#Sd_Ts zB@mM9!)yX4slq>w+z=Yt#=saO^;}mvbP}~1_@h{R!)KSXl@<*X#YX}ol6As0fEKc4 zd$}gX%a4CZc-{*KNiaU#09Z|e{UPP;JM>aLckBG5MbCHEksU97vCeJT(&KM4t3w8R zjK8~IFK+z3*_Z38ik5EaGUa;U^7st{ILe@PMpU8#YKxkNxQDo?^Plh2)ZLCRgOqKWyRO5JDep9 zdW2O=XHoe18&Z~8&Ae5m*}470r4HR%Kfe3aY>oTuSc;pzfTlW{aO4P{Umhq|I($v4 zN@ewccv#cVRK|}a5uEq5g+Ch@;(nzii&YYcz0n7D64w{Nd zGd=x$6KtgfPy%v?LRERe{F!pB8bx0;2cCg;UVXSg>owRs+tNZ+atkEt8Fg%)YuuH;|~zkHtfTTJ+GJAjjh!DF*y22@5m8v!|o-YI`W`vPPN~Hix)O#ObGG5 ze9_HkuYP@1$wu~#&bOw?oMj=n)K%$qrI(Tq9!0jquiE-88()!Z!v4$NF#pl@qR4Hk zw}ys3p&TBoAyxEHhlbkO1<;?R=ptpb!2nqp(sho9wEmDyoo)X*BXBj`S{>fuUA8B~ z=unj=wYqulcVmNQYaW{C{61vq`J*KXzSeU!SByqavhc}rDK6SRd79hoZ{qsnpeV%7 zqIewMy(}%L=5%2dN(~WNMpM_5#8d2VRo31ei%;hFX&12N)rqK)Ke(RkxbVsLSSyV?AcMDg4M>m&0&!%|v(ZXUS=Xif11~^2KXr_2PdXs!_onzos z6yjCG7NMQWKQBrVD6q)mkhP4*e2@*}B4}Dk&3hiXJg#eXKMd8^}opV*JDM-9vZ_%U*nxTpskh6adH4}odz^7Uzy~VYii%5(a;|=(r z^qIH{XYcLJT%iX`bDmUxzfa^=o8J`&#`nPGaizuTf(N=m3D5RbEV%l1$*a9zBs`vX z{6%&uu!RKw7Xt!4Z!gp2O*HyYI2yn-{f(5eU_&AzeKzaDRhKb|IE$_jh*Z!0a0xzM zcdBmO{GybpQ|LGyk*}L2RBrfc2L6pZ4qmI@>vj-nY?Zx@6hP2>*-xqi>pmWfcL7`g zyiXc;PL1lU3sqo)>7`in%(VqeE_VO{ef<9JFx%al_ii(y%Uv%d^^LSm2~P0rpEh}x z(Yp%U+&>iNL0@vVAyUkGK5wR$ZG6Eq?aX*ulq(h?eN!*D8{-<=^3Ja3s8Vrd{F?bnK-1!PE@3_&A4UueJ9qM@$V)rj zUih5<+4bOuF%9z{Kg|??Cg0dkLp(#G@NxyvOfLu}7YbuNV$EwEk)D-nfCSS9r@FtQ zjoLz5A*2;V5;o>HBlTo0kfIgYWrZY4B3B(m?jOq{gIaMPhXrzWtPp7o%4irOBGPDU zr&`y0V~>#^8jf8$=xVbqBjR#Q|9{qtt-PQOq^x&Pyqn0jO2q**E2r{FzLCvb>=GIn zZf|w<`v;Bk#~QhwyjeZ<-uBlwUwA>Zu%5dooy1{&09>OKb>Xt3IVDqY zF|Kmm_}~m7o&;5r3E{p?GiO(_z`jZCR$?=a)zY^KBj5XsZj&4-^#O4Zdu05hROSO% z>9+j&H@YGRrAUz|N?f8CC7&%TXLEkzT|7TkO#EDWRZyhix)MN9Fe6aOXJzMRC7ix{ zchs7ARZJwA;e0-lsfMFSERzd5MPVJ^_2=A^+O+pX1uG~SVD?b*TE_a6tO%VDsa(Dv zkOq7CK?uiHz_8UaY|U}9BALeDb?kVL$l=TrXhqLJucSd_`9WQvSwXgFm%MPnf=1>~ zRqOl98)I}RN7ix{{3npa6BmTKJ>4|Nbj- zv2~mmU%zpKA`y?YMyR&`<~cv*{t44LMbJ3iC^&WK0@)kv^W@7Y10}inZOJ;qdSOk% z(Zr-vkJsz@Ijbre$ued$Ql)ch=CcPQ#Zt%C1}JkAdR8G62DKRSAV%VYECZi4t9vF>Ga}Pecs@rjDT2 zW(tXoHT~E|$#)D(sZY&V-?ExXjpI)*n0{h;Ak3h5W%F4ObzPJ3?=4$!gm|?D4TlJ>f`fvVLfi9FjsO8f577o<0*ozqn^p#=1SB&~+0ktu@5TWyyk8Z; zzby&MOI!rMkQNeyDyUG#ko6atZkD?II-aT^=mRT=V=VymVIC^Vs5@VLj6^&YAYDky z<336`;>-p3n;Z&)&T?t%$IDP5F7X~OA0nQtLPKl6hh;V4WY*i1!9dO~A^g6!ObB{11WW%jOTd@W+yI54Tm*AI=YfxV>Ik5BIB!WJpv zJ&m4D)ez6aqjqxiVO&WK=dAC$b}gn#XAZq}_&iAp@bf&e8(-`*b;ewzW8AoLFfCua z0M_ZF19u7^`s;K_4Ua$65PH){U>;aZGSk`p;jl$N-@>kCR&V)VL8A&FR2OwYJ`If8jbA6MCq(JQ;8y>Vg-+U%?*Arkc&#TJ6G&&TDB7E~JCatwuJwkN z?mI2_l#S8z)^z8PA|A@(&-~dN06yz{95rqqAPGPsu>S>EK2H$Gty>~nn?vcSWz8ya zt8R;*+MXG+ffF<97#tJ91&JlJ2RJccgVfY`21<9Vf^Qj3agN4ZB(~~N`v>G6VCfFR za!|M<7lbN^XaBXg+5AwFr?MyC^aJ^la9a#L7EcH&R=v)r{_saF)3gaVo_f8&=cVc zsZUT|HVhW8cm$N{c5;ZgBrzvciJ1$~XKr)|1veTE1T7(oOyg31t{wKk5lx)uDTBCa z9pGL-zflZyUDfk3urtX3uP)Vgl%@p*hgW~HZ$%E^g7Q3#1YZ!H#8`18;T-&BWKBzL zsrQ8o)sneb+NY!qs>yw%!x_y^`J-wcwhUnwE_pvlXlZ>|pSRN+tJ1dM6uu=RZ<||> z0#Kg@!4S5oq2+8TSfu=q=QCOGhM!c8OA54b<|*zx0L z9{M6|u7^?alDndesgvWOawPn6<{-vuUB(JPTaJ;&&y+%lO9dA8`a8jI)XSwsJmURV zzZ09_Os28&-LtQ*FXXL)p*Cd@{NbnE08Fx@nFmWUutMg$!2c3SO4@EMT=0E*G!x=h-ojB>a@WFA4(QhBI+P=r+l_rq!9>m8OT) z+t>|Uni&9cNPq|0B5w2oNlS5@D$N4NQ)>I5%rCe%dd!v|Mt&a}j6GojXDXt= zwj0ZJY_=hRDm@D~kGRj{8k;e&XG2a2(E{q8+3qB-_HtsVBJC#QTm& z7=$Y@QyT{viH>7Ga0&`g^0M-*v_VMySvrqOS56kBJM5xRVjwfwJiI~|1W+rJZ6$tC zwe|Y}3NC1NmKCmym;{&|C*>gQ!m1HMv#s_kCNZSIy#>xMU#mRDlcE~IVP)wcw_Is3 zAIDRlVTeEM3%(78j<2l!qVOabNZ_BAHLh$h;CVGwRzj{9M2b|zfL#a^je!P9?f;7ibtNNg))g^d|&R_MmB0UNu`7meSPx}2wV8fA$E3xo&~R@u2`NEH=MkeoqC1(8%fV7!)GB4A4-4O9iyjw5FSvfgRwr<``KF76^5|=WTs%t_pzR8<@y>{u z4ow2)XUdYKwZp|PrqqX`t|qvsYh5G|1FZ_9JOMmFdyH&S$@)>~w+||fz|qFPxwvFf zi^t}y^sCA?#Pj*<0`$2h@TZjL;9Q-Unc6-X<*FnjEPp{LV8T_1!WNL$h5zrzwg|j3 znVz}w!5j=)xgbh?fWhtpr<RDR5sID;mV)VhU&~D_N8!DpXh|aoYkNSio&Vgp!DL(w{iM2L zSU+)D^r#s}ihSN6EJAb^DY^|PDG$TYWXqh(@^KST$bqc3Q6pM+7I%`pkLiY)gP-9| zHcvb|tK;ycXzK6=$UKZv3waB|m>$Y%op*$Hi933^0q^P_GXK+%%6VxT$f<6eD?SvLChUe-o*ErwJe2BqGVY>0 zoLxYTR?o8q+bY2?7(BG9EU<|El3=WRFHVp=gQs*+o>KQId4xW1PTa{NHRzOCUf0=W zDG-=Ui4|W}Hk*qRb^{s%bgwVvILkUDCXWHA!R${Vgd%&r#zg{rst})3h%y!!M;^hR z(0vOD{`(fPO?J!}Hu8L$$#GEjl6b$gi?`>M%RPdUcVN15i0tGPswYLj!jMi5z|Fz~ z@OnXlq!+AlTc+m;BUFCsy6x9}M-n;cMYxrWb>Iun)6@2NyV<@KCM z7PrAJBQVndrria!=Lm2ejqCOWH(og`_qP01{7|r-BOE^3RZ1^`;u})ziSJG|m08U> zrDkxeX!`I(Ui8wy=9BbtrJ+RR5LN!ycuX?oL1~7@?W#rA@~%gD)hhy*zOwTeoHZrI-773WQ3->FKJO9 zUwySffediEC`-exMK8SltI_2tESw^&W&7a@v(2SsT*px966%c^!EW}zvzKQhsK#1B zeL>U_4Vzn!;JF7q9XU;QOyZEfdAS0Wap{D8>@|3VgH&dbMBsS@90!Hag6fbS4J7uv zuPqoe5&O#lAJ1Grxr815QrY1;fsA&Z42qbDqeBP9XsN_I^expRC^6O|~pB+sa<%yJ{rUhIau zFW{CGiO}g~V12ql>>VI@A9*`OAu-Mzh>#%^kww(vQ+sPI_js;L0VZXx6Y!EKj&7X7 zd^cp=QIhD|XOwi+ivFStUm4}I6b>>ZER(bnsp`2LWrWmWCOl<)LG(h537#l9%a*x$ z`4-9pjIb>97%Cs<64F$c|N(_}3@9QBPTH3EW zB;B|nl!Ce{*OfTgq{D3;e);v+RgFXr(>z5v;BB__2QKubE3gP>Tg`qZFOfVHRpeDp ztWFPu0@Sr*iPjOQSf`xb@WH?QLJqG%R@HjHst#0ezzcc@4BoAgSSu|NswiH_-|pMZ z-KWaiC2bqL^+#{fJ@BJ(*HV8X2Z_fny&?o?m23FQ)>_d&gp&uO;ZZ3O6aUrRev3Hw? z#DiSo8WtH~(W#NFA7?L%Mj0(($K%3fKaui=_|El=!7y5d0I9E{7D2G4|X7gZ{^N_ zxY`{&f=5D%!C4Oj^%FiOx1S1qjuh3pegalf>ce}!2@DOLj3PE4&I-v5^z;GvM2`Zt zt@kPi@R5`Wv6_e{VwMY&_Oqf-5L3GvvjLXHpPH2g{vwf9R-_S|oK+bhgXA86@rT_^L@lIK?vy zrvFm$!e4}cKqt$3(BP=1?%YV4?@5gux8I;h1#JKn>-hN{eAHr)t)`}vt*#Lb&!Z`m z7?hgZN`{8pVm2$bPYYN@0YU-(G#bPo#?$3zq#^kCREK0neH9d*(m&zBvl;75-rqJKG^*J z4m5fS+;QoXOoRtQp**kXMX5wMe!9b0m>T4x3~8o!6CE#h3kFPQNQUzD zQ3OC&r%-ex;uGHXAl)ti-O=~aUSct8yC>!k)rvs}t@T)23ck{YJI-CwL&|?SgNXr- z)PR~(a%Ln;r8ggR3(L1pC{nr-)+6g}<=U5pLuMN4(tPBmqWbSl%N3pK@5a>d-=XF8U^7U5gFZe~DF4T%+tFs0_6ed@3#F{RvSF&@b zvsQPOffdS4)dp7^V7hIl2qq->f;0o*yw_3r{v%x)?b#PD%-0V}K4}*6yRxROq{**z zJCT{3EIT%Auc;wCja^H0o1FfS8QN^(Z!E z9ZRmwiwJYSb93+cpqncb%v)-vR>gyw#O&8`L9u|j*P;J0**sk47PjxHGDE3ECq+@CA;E&xbt4h+c1K>kD2q-1?)g`++3ax{ z@V$(5&|or5sGh3or1W3HyU>xuaaBMU07I9j%%>~Kl_@X{`IhwjhsU#PH)rVoZuou@u9QRdNd^UP zBd)pjzE~x~f-#35Q*_!wS_Tg5VU~V?ybbx7Rz2@!(E_KVD$y_ft;J!Hv$TgjLp(?> zX;0*2Avkg5f+ep7SzX{;?3hqhbv7ZfN6<4<(mQfUtU(>U74IQ@rZD)3w<3xpFTnsa zRpJbEeN*96z(qBn1zho9neMfdmd0{Fog?H)2AK7aAQzX8@{(z=+J#p-FMR&%?Afmf z!wqt0p8Lr)Qaf#9;2`2t5(imU3W8)!A!sqtb%fYbL8`f}~pLsY1%vfr$a^>*Jb z83J{fD6K|#rJ}}?7t`JO%9J|~@oJAVHu>Tn&EC=~ywH?S%Fd z1#o*Z%KLZ^WvZ^a{R=EXz(sCMezgTPUVEFn!$1~yKBN%OW7S0%k#Z7krksSUD*Zgb z?$(q5*FL1_hwfqJ{)vUsW5_F+V2I_IcQZ6-$wK7ZhqDzjy(V|qWwQiQBkevs zRA#2?{VL{BpG#u?5je^m<=BD0vUFmdR}<+9Co+2M(e`pHy*e`I34N3$Ib12jmVb&f zgQc`@8%t!$`n%`cJo51F_L005!t*(ukq^-NP^;hCuE6&u?b=R<73d6<$RB&ILPRYa z(fU$h6dSjaiAWs+%-ib#TS_5B_7+$${G2<>4(tX~&308#mexQqZuHhn!n zOusiW(mc99Y*H_lU^c-GP}~8;;cDT;=`&_Xltp&TZKR1Erj;e8)8c{4(u+s&2{%eo zLMkhgg*+tcOS!o^n(Z=<0`-0X`Y1VT*G_*woY>v)qkxn=AdYqv-!)P&Mm_JK$$w|O z9U(fXforF|k4KFb^vHfdFn%Te#ek&ByliGiNCU;1n~Ufq;vz?Y1DNER#Xe^jBbAOV z#*eTx1}h<*e*w2t`iCocdH&#_5A?= z2S=4Tv@f~^eQ+lw{)hr(w!@oc9*p~Z0k84A_}(_DaW9)rRFqC<662HIaflq~4j{KO zo+<#Fc%Y|A%0L_?o5e5DjW|-zRiuk&=;1K-Y??Ko*9QXqG2egx;iSIm8$wfQerK*& zZ*_Z_lLYB))k2=m&cz%QtO)GFUAkV#Esd8*6`_I=rgy*#RuDXSP>VWxUNVA&JXU$( zj9>!!IM7|fwf!Q1GEalt)O(QHD^l{TZJL?pFBE{4!(3j-tp|$341gJDE>)K#G;8oO zUy8cJ6W84TQhEs)UkWj2*;7-fLLw;|rcV^>&gG_cRRhx?Z8l#i=Z3q*-``tWRD0)P z9J^NCXMU4Q$*)#%DK!i_f8f#3O!@ogtNs+~K^WsG2)+XI-nNw>Y4xdpC1XiY@aF&0dDsTADl=$A=a%0_{Ab`e?essCvF~`Ge7kcJg%MEzd z6u9NR$M8O$nM>*<8RGIJm`k>r^Wu7^{~qz)oF7QeL38!V$Hal7jXr2JzrBb#ssCu| zm8DJ2j;T1l`pl|XQ;#h_wriJq)7bFMb)(xm?tMRS&v&l7P95C)L%+{w|2|@Bi--l<0IhS2uTQKR$(#0;1Ju4gDFq~0tnW#2Cl6%p1S)W{=7xQ0eT#|Er zp2%X{+R4N|N!m%G18K8^wGt3eQy+)$_Hg{`vO{%r_3V#+U#U(VFKAvbzk1-9QB}Je zzk?6Fc=O=WF?GUIyf7NR6(H$lewwmO;vV!=+QWw&iiF>Sedf5ii49Y|?J`vnBb92= zg^L$ukLR`{$X}dLnPKWzF+^)7xo&)mwsLv6VL7*3Jn0$WV_nrPrzc z<{fF@zCHeSw25peJgz06BwDY63x0CBIW~BuUstc~Z@%HnZmn z%Qw3=iEW}n!;gM;|31~sMs8qZT~w&4E<98BsJZHv+r9huU+G*iRW3T`%5BeFz=qe{ z&|0QD3>+{Z?;4v%lWn0IBR$i?+G!dsc%RyB9K7eu^1*u)&{L)Q_=Hw99{wb->5A>A4V1Yo@iP{Q--ia^RFnGd zA4MlMO@HN4^RKpCnti3Zm;7s$jh{dcr%#=l*`U?B7c@x}NmPE@+e#G61?>X=S@by{ z8t&I#`6s8ccaPYA*rw*S)ycSHi~I?vw0e_2abB*xsp_MDNJxls;oIS|bjn?1HT<>z zUZtL~_NckPzrVGn>bUly{O1>!vgE(#nbITk+ey!4>>4tKKxrxrCp{zGrhIt8XVcss zr&((?UtTV}?CLj})x)~K_;QS+qmq1+n>cIVQe8b2;ONW+JXc&SO+|WU_1?}^j1pQS z7tJ?nu{2ve+8P;Y1#b20n5d|zZ{**~FVQ(%{-3(KZ>KGiIvI2NQis^8W`p?i|Hs~2g~icyZKFhpKoUX-5Ilk47ThJcyK4yU?hKFw z*93QW_rV4T8X&m4!{EVnVD~_h_xqpkc@Ous_rYHW13lf-U0t0LAlpZ*MPPvy-c=fc3TE8Rfq>W4!G}pkE`!>=7fy zhyfW2rNii8MTQFx?=FMG4>$q%cW*w@(bYYGkGjcbzztMTRVBZ7q9?KZ8Na2-JkC5T(Qx7pDJ^MXup6Kx?PoKOX+z<~~q@2f!|K0JdU^4Ddg~0hPkg z{uq2K$&OK_(iTsO@88_O6A*!GSmQP6%@OeNw;73U-W1q<4rm*gzjZV9%>ZsnWU`v) z{f}@E)o2vK^~~SF*6;UQxculagwqEAx{L?k&Cu)@es!_@KU5z!e8N*L;{wo^*H=JC z-PQ-F!S8Y2*jz!000jdWtOpdS)>ahWWz*z9Dtiz;2x50zT_bqgEdXZiX5id>_j|M| zKX}rA{pfs+=Nb?YSSOGnEuegUYim^DbeN*1y;~m^L0&FbL0RVSctJpT^quN8{8q3> zLq!NFbM)@}@ST|9Qqh#CyA^Kh_5gksp=lUcXy~^Jx%s01&8>psq5sf?p!vyI8KHmf z70+4lt*+mBq)XKcRDkge`yajv?E|=@fa64T7 z?Hu4vq1+1Dzn}g8>FX{x0I0mGT_1szyUV=q(qyyENz(*PI3V1-JXMgxrqpiI3U8y6 zuWU5L%i&$MQ@J)gIG6)aASl{ zz5=*;BL`ZJ9T+}I01;u{g28b|W8hSDHZlA?feZ8v{IV2RV0s{7ExTm5Q$8>e@#duv zJY55KN<_zAp~O2mIsG*s=MQfsb6Wlq2DA63F(eep90bC~_wb6QrltZeuqX7z5?IK} zssvuMelCDlfHCu(AC;t_7aY`JC2W!1MuNZ&1Qf!Tmq1rkg!WCCFQYQl@JyN_LGMf zE6epOop4~911lTbUn}yTmjIABU=K&T6&gK4z}s*F7H0uO!O;cCsG6CXvEzhf!5aE! zmH`&mm^(s>$rchI_C`(QF-xoSpD+3Iyp-hI zVbugN0IGlQ!4s$%$!EIf3))vJ+JKzwFaqQ+8sBud=>|3qzfn~MI;%fpfsEGruw)R( zNm{xOAeP+rfv4*LkjK0_(!Q>gXQ9(t(*=;&kdTl+GU@65<#za=VAp8izj~EJsUG8> zVtNcrbfDF!hKrNI?_OG2Flv_MQfUF` zTo&_zLOf0ms1BkyF(yaHua?r&i)GDgz9ZNTvkQ_*P{u((jBm4TGU%i zoGC9~-{0YjD*$oaR15ehd0xuOE8dm%vw(l`S^s^DBvST5H~l6LrHz2R@cb<2~AxU7DbA@ z1#Ead{81mwxw*Lk8r3O){ZCmMY}Ep5377*h+-*P4YmH5`kZ5UX;li0lH|3E3-hI!y zgw25Q>=nt8&AK&LVe~wp3wb?&)DGtJ=P8unk+@J{X#;GR zy7ms|(@u5N1{cjvKq@mwzCk<~xTm?lpC6n_Z?g^oWbJnCK+uJQ`WlLH^rjR(5;F2d z8?E~r1cZ|SI8hQ1Xdu7VygbxEyltbdJ_V3GZ%_p&)}1?d;2YwYo13dY4eBrlsKr=7 zivG6A`gu+-E=*D4;nRplnw-YbsRPlXw1;EUM(Rn3O*omT;# z3;-}_svAc(TluX5WZysGu+MRcsGeR1ps3ZO&-=mFB#P zY565w@1TVS@+mYNES>pIuM7Jq(bSE2v?!G?;(VefFL`tprI87=K9mcXSr8%ewlIn9 z(3VIOkk+sZgn6xlK<&##xF(ELmuw$!=ZL9-w_`s)94~l=!z@uT%D_V74Dj#m&2Pox z9A!x-JnBE@(i8Bdpr1F&koc|Zb?2}ROeET4DVY=$eVfP7XVyR9W;Sy^5KbMe7}Ln2Umg~NAGa>n~|nQSi7`z~PCdH|dNm?E#CSu^o7{{nkra`FKp;$ws+2o$Ip zxU|$5E5zVZ=+WcHSe#BJ@M`pjKX~%01OPGzoEWq8=|hS-@KI3#$$^)1tf3YX>M@(Y zRv2(yJ$v)=SS`t z!o7H@er;bTmdA7#>A)B|pd7NHBWPyuwF&_|3?)FSffwr&%(?83X z>n5sMW|K{a$+_^S^yQADJ3=|x1c4@vmmrB}v&||p<1`nE4m$u01$^!UP{Ca_V37fU zD?7LGQ+=BvYyfzo=PVtdB!Tf&y0U+P4PP1YRv)Ek)8jK6JA5boPvu?%ra_J9Tc^H5 ztq1?x9_1uTYNnSnq(K-nq;!|mH4-GKqjY*#zU$oWlbtJ+D5HTKKj_|W4=0-zUDZ&~ z8Ve;qc>&z}qybneL)5WKrhEks&H>b8z+lc2hj#*2TOu0TfC}HQ14xrf!P^8%4UDH+ z%H+*g_b8JAf{w=p*aHoI0&tKN)qN!a+U|Fq-(LXEA&U%xk;VSGc=i~$w5V$9(43#m zW8~C7Um&_hXw9vD{Jm4X{l=hr^Wzzt(s)zvXsPL7H0#?uf;{S#To$!*9cek1f-uukF2+*K_G9=xzDn93QoNFLk zxE6u&GFHjbP}rOmZjsN+{rvoZy@ofWa0X#4Z{IFsHlBI|Ro#Sxx^Oeso_DPN0iay` z@iAPYlauEfuQnSux@wmg0Am8ozWS{_VDWn;ouJ?f#Q*7ez@GvBbeES@gNzo{@e6V$ zVoy}gF^zOECzcL?4fDod?HvGt7fWOlWJCMG74v*7K!e$6Xpa*h+&fOrz1-Bkza!h| z#Jk^ruN8j=WHEOx%cynntfc7dYUr84Hhi+J-3Xhl+qHhv^{f)C7@=U>-T%0B#FLksR8@lv{fI)+0kJ*I|44P@LQ{EcrgWPh7!>^{K`{>jdO6_g9 zkIq^9l@5L462p^R>dIDZI#~K%`aES&wW1zz)tHW4?a7&xRSjd51a+CMLXHt&IN65#jFT&K(cT=_VYLu!;>5Tgp1}V>$XYxA|8=6$ghb6B#2-GSCCEJ(j?Ofb~T$Msu1ae7X{xlj8q;l!C~ z&=tA>xA+7+ zY@V@e^FS({|G{zhq{x|wOPT8|p=oAyI4kuo6l*g(R^jSoI=9DdJze-oeAV~w2a-2k z6uog77<=a~l)>jw>B4%J2`qIz`+mPK=b6jQJroDimvDp%kd3bBVzS1*=e(iD4&ws$ z;}^p^cMcO!8>X(dJK=20n{v(!SH-N_c5>Qbr&LdmV#&@)^xs>^_Xi2ki=+=^R^WzC z$)Z+Qq18}0hM(_iZYmXbnSU!GvY?Dmepy3KTtlAU>Nh_e%Fh-Z2PHT+g{;j#r0NJhkFdhf&ryhEs2LBH0A5#l|+LKINuD7Y>E~Qr76>wG@=H z7jEpB6S{QvidT6#(F~LpV2w=KSsAj>>{jFJ$2Dv5>!LbnuB3&30)*c${rAr_9-utg zQ`1hpQlUHCN{5O8Y4=vzyM{B0FC8RZAsMA|&h6cpj{ zGt|ngSP|qtTtOTwHc&(0?{9%6o2bu7N9c0O&r*{d=r zCwq7tME7thR9~3=F#=S4r_r*BsPQWjf@5kU% z=ph3T7vqPNo+fR0ilndx#$&&@=5Z6&lr%MIU)lg4j}WRkjD49Zzr_C$g`F3GCl)2I z5P?M~o&cFP6ChA@)RXovUEE=5Gfp}vqfX)|Vi^tX*v@&Ru}R?)*Gk6?HktN6qYB zY-%(<=c1Cs`u!^7?y~CWaKmLm_KH2s&A{elwXhkt^XU(Uj(v}xOcl+SF7IE`vneX7U_=3Ao)AcP@jpe zaG3IApjW=|M7&MBf|++)07Ax^>LQqIvC7j zWdbOny+-`-)Qj zGpFw(Iz83HL%d>KbB#Z8YA)Cp=2|qql}m{sP>C7H&`L?)nV)J!UCBwi6X2c;tM}@m z{-UNPUpdrAh1Ox=vQ?Ggy~F?Wt`eg?>9K$y1T_5B zC*^cA!%_WbMBYsWspgi$E50t%dEk<_;{I(z_b3&K>;s`V{LS zG=}emc+30WjD79F;m1Z2Tp%fBMN4DeNGg8zW6fMGeCuileSy_=h-33h&#s@**?bPS z_L2U^vZYjfDg=%-9nocQ2$ zzG)(gMZP)iIR(7RE0w(~KZ96SwXiqgEyo@Q9Y-X6aTJs!dwdr-1e`2KTb(^wv8=U{ zf@=g9JiV)unOAjv2C@2!MiZ>3Z$U@jHNq>fB-^h(k6sPtR@&-HB%=YUqVbHiOfVuS zxTQWww{A^LP&lLfBTGZvuMUQqO~c9`tpjCv1P<@kdgw^R_vxRh!4{)wWO0_Fw;R-| z&8-7D2oF(0CP2BOQ_f=le8WG-Mo(WNP|2%1ELJs;$>OVkYk5^Zm3tf_Y1#xwYV@+J z=oXw(J&M>2)NN6gnAmd>)vYlQUi_p_@NhDqPIIQ=sk&)!<#*d59?gZf#^sg3j-jAk z%uwf*oCbH$W=Puj+rFwej^a+K_yM82!9(@RGuO7xxv3P7J4N=*U<(yT{?7>FAWOBW zTJA++P8_k|T(O`Z)gub_mpqv@Iy7ldtCC8KgMWn75l)hx1U@wff07^1`n8N@%yKv~ zm_|=$8C609{!zJI1U{O^ILZjZ-!!Go@M8*L*qp zuHC*3iB^Xzliaxde$@Lw!b`It)8&Iv+Ua-v1dTRsD|IWMcB}pC)a|=mN#jkp_e8Y@ zpIPW^Mwd_x%)F8dcP)9{IaC*1r7Ofy1$i^^yhgNV)>>ssQq#am%wcN;YO35jf~1pl zDVI=HPTnc<1jIx>D0t}Of5jcfxD=wOpu{v+s`X)Wg+&mTc3`Y1A;00?#lKe`@bHrE z-1Q_LCVdw5Xw%lA40BXII;ncUjdWSPX^D) z)x}-I7e?~#HA081s;;SQe4uy4OAhiQr0gygP+|j)(U`HJi)H#Dx6}hBN4>x4pnueY zSDQfwp+rE{xl+S`w1Cf+KXoutD5%naLQ1fUN_*M=4;B!@(B9?6L`lM|PMZvNU+}@g z0%KE>jzN_1_e0{VO*J`W^Mn*{$&-`Px6|43 z!+(7!<-C_-p!=c2)?p_>KE7#=Ih*<26&GLQwdD#G$n1-G-+T*>Tihkl<0HF`#r{!i z;L!6ifQoiI)hoKKQ|q9Q$w4~WG>xgm-oDVGK4SBSi*R=IgHE-oSa|bc6-P5hDPrY^ zN23eOPRPVqaB}iZgJ`tLSaO5+@hu^kUdP1NE`7lI0D8*cGBHIEy{j)2 zaU<^XsVp7&3X59NAQ>&bWE~K4{CkPRd5v&b=91YZV`o>YMj`1uUAxpC&{Br}iMg;c ztWUksswCBh*kJp+i*>ZzD7nDNgdayi)?$EYPeAd*l~2F?Tkfg#wXRd=$?yIIZRHXd z8Z7?%gAfoZ%u^8hyI)rNL_8N(HqA`YkWzz8y{aP0YNxR^&tGX}+8bifV#~{aS*WE7 z4PPZjbtI64$k|Qh(1k2&DI{_(f$7kDqQ&$adW({DS0>X|C)WpUM_3fn)^d>2I6vE1 zGHFwd?0mVn@9Pt-G2@+fFv9W@`%iH6&q{p=QNc|Ck7yOqza)Nvqw_QXmOl&mSisiN z{&2EtW_*-ZM>XvtWHUH&YC;w#O3N>qY{w=^*1UN zrVMs~R7j$@D?R&y~*4g&6p?Sv%OioN-_~YFo){pPZl1I6~v74-Piu zYaaf&(qYe}*d8d$AVusf+N!A^14(?&@}zQ--TOHN_v+(Qn{roKV7r_9As90$oL}uk zh7|D7lZQ5AS@{wszo|?p;Bc}eO28=`|5p0R0c=W3Q4usNWB0XFfJJdT$gj?*KokZh zR*ACE#VN6_t1ES&WH7OR4}pp^ZiJ`>C2m>Bal|_E5$*8x78Q|H;t*#?rm0gP#nFd( zxlOc-km~5;@%*gRC$(T1;am!@{{bwr`tKzXNP+ct=TTA|5!aPUVF->_IG8CH||T^02+^Yma3J-Kc`^=hfYMs`H?YfVgK<)fcC6!~28BWBzraJxOz9qxsupMj6qmckGC=Iud#M!|FhbwDQ zBl4Gn3D`e)ZqPgbfZk#=f5lQ@<#Ze6Yd~G#mpM5wSUD0WuaZ3f*c&flZbaEffC4jZ zP-UcIN=0_c`d9`za%B>;1XL%PQS~C6r_k7ubi=eS{}$=}M}>hy&zd_xotdl3-q@I4 zl~)d!tJq$(qQmCCva)vzVlwG1-nS?;QhP_j?0Vodph|-}wWt}Nmp3gaKNbZ*JGwF9 zokf0>b!8On_5K~Ed-4)_!qKk6c8Z6Qp>q{1T@q2lW8g^bCD!i)8Buj>yboznFCJS+Ms^jXnVK^d(5kU9 zu*w^k@rnuoi0i+W=kW1ZkXAh`W9LXfS)0*dw;}=fg}K)|UrQXz64t> z{_+ItrZK;)h{UiZ9lzgd>Byql??jt+{1RM^X(HG*8#&7`Xi)*712?6-Zx0|jSxGqz zSUpiJq>=(zPgk&r{UkE#RaO9(O1kc1@k{1)5Ur9XnH;~6RZh;Q-zoe#<)JZ@w*iKY zVvI1&J?>c{$|nt0t*9F{%U$HN*LE@Z*Efa}3+QD4R2Osq;K{<9-f&HGf$ZG;*U%^|FuAJJeB-S3P$9vKTK9pvPjycnvq^LZa)RFb9H;H@$%?i;mCWamt>7u1 zr7hVk{%>t(WeG>E1*2_IC=T1+%ad>f^bTlDos{+E6{C{`X6$(U*mZCZ?m0c`7>W$_ z#i!3I%h}h)VyYqIGF+mnflBI*x#Mb|PQ@UF3+7Q0*C>m{ZLH{561JKZzon6#08*!* z(L@D*2MZ%1c|}c94OfnnY`m%@KlMTj z0sM-(A0F4${ru-%ag#3_$-w2J+=X6)f9V!X)P#Skt#_@-vw#;YRx0clB3C}M&qzyJK62ERB4HXXf-WbmvCLZUILaH6pOm= z+g%j;f!;5o`=x0?2k%QZUk{-AZ*EDl8PeKwi2pcWcE_57k#iXdTofjJ;r^jH^d4us z+?g3vYU?T~bU*uQ{ii|S8?8O8_YUoudDFy{$Ws#re*7HqRJ4r-YW7IoJjWO7Weye} zSb&}SMyB6kW|tg}TT2E~UNJDHEB&umy8Xh_Jy->|$z=n5#2!h1i6?T>EwZ-ZqcXI6 z0vn`QX7vf2sXn5?QRXrj(-f12lO>LaVUSd5QWe;JDJ^Z`F-e6bJk5%Yd3vh8lEyN@ zO4G}3PXg-|o;{sV;vzk9mE?D(bd&=gYcPm7?n z@?sLbsHDb2ZQ&|v3teQ#q+nP<4(3kSsY`LtUHNU zX>Cd?U6E5d9KTYPSCCm+DzO`C;JH$f|H{}hn`Iq)vifm59dC=9Z+5`I9J1J##8c1Z z7FOQL>^&?+gTusSWPO>1*b+B`lZ|*GolHGh;S``N-}^0N!P$+O`{-9&m;43Mv>6U& zt$?03Yy+j(B_!-*#PGp?X~DyyPj@{l$0<&v6JzCutXpI^qic}G$)5T2xe=>RnC0H0 zXR#$!Z|)EzMRrIeHjXXRNQkMdlGJu^tZyWTv)dzgzAG+aEPglO%q+DNIA(I~Uu5-& zLsfU3V7oPOcevQ?Pdh2-8RK^b8y zwGQ3-_}L~(ulAe{$JD^VM~2n5KS;&@s(v95;EV)ml?<0IDWQD?3$i~7`~hPo^^U2m z^k9b7$#Z@4PuJyOyV^RNX?K02T1_ZG^S|!#`wLGk0jg&oB#+TZP)rOfTd&qn6Uxs} zG4$46F)k0|UbMW-tunfiN;Dk9BReS|pTxH?K~yTg@)0^{<@n$H6NJM&plQ)1-PU{w z#>h6AsK-RiR^)I7h@}pmxi2}Wveu3V%n~NP+S|)~tq9tM3I4b0@%jQXK51sAuNl;6 z>|2-~2(_=0le7MBm-lbpvitu1{P~mrOG*0MGXIx>^|vVy{y!j`xqkHmD4MstfSZc^ zzsR-w!F#94E2|;vJg(KgKqCc*@dzncfTj|)8l0nOPZ3;XL=-u3oJp#pSzIu-9Vfuv zssv!$B{DOiUpbw=?U>yAIEFw>Q~Dn-H0G?t@*XNlyEnP7pNl;Rg(=j1F#!2&YIb!cKe1O zNw%fN`0UpYAxrniCZ>>T8B_i+M8EQ`BUzoNcIg?`RUe4j715kRpL>B4g2&z#1R zi;j+1)9Js9$6nkW&Zfh&DiR}JE`+`kxmcCM9jjT0TlelKKh1eocdqTsQeO63JwtEy z6h)X6w{x z9tzait*$0YwOSpj6RfZa7||q?e}(k(gLR`!@{X+P)Cp5L~gSiNOY0AEzBsABb5$qEvQPSYzG`p zK_A*Uq&)c0u2*>kiPrT^#KUF~(LT=X72O?t;wfbMyLxG)iLRDKYayGHe4Uf9PpSt# zcKsT*^NA7I+t;>p&nODGZQi)2t&8bbzFF)r{|te0OO9OqETBv?%z?4^0C}RJjqdPt zcTD*V*!cCO^~yuTaJQXP$DtJk?UU+2J~uA6j-e^rDsR^3rZ*|3|Fa$8%)r+eYcz7F z`$Va}0w`q%Gf88WBFOf=y)!z>wSSC&Tt2?rzwhS<_cga7}|2|1fm*_u4H_;q#h}7ca z-;fUEAkxfqseQ#a_ayvP*@iJqj1enk++W zAM?LZ84!MIZDar3&;+}i3F~_(B@nQ!j>#fP?1noF_uzyl55{=gQCgmb%TqqX)z}=h zC4a0tW}zN|TCIK&5#7*0(Lqa;GIRO`S$*;FvB;M%;iJ-w+N#Qmh1b(zHNo3k9fB8c z)7@a2g}+`8M;JtDVIuVVl67|-iTVM)c4**?VL0cm9=#N3eJ3dJylj7SMLKvIvc;=3 z*68yLkxgZIA}QXTsYm>ut$TBvLW&yrg@k24iieH<1ePWxY&pE+vTF*GeNi^dnYpN8 zoU0Q#<(1UaN+-RhIv$CD8v5&#(Uhc@z?f<8suJuX(RcEF=WwL0x<2i379#=yRkL&Ce#*FX%x+@PI1zZ>B@m@++QWB)pG)KTNed&j*O_PM7G=Stp?AgO(AKM zU_9iV`?wi?++(p9!Hp;#SqFVax-?!(`Z6go{v04HS_>|HF2noO5=zzErMe3u9daqi zrQcx*ZMC2N$#yJFO0@N_2y+tzAa%xs|IknDoo4-3|NS}r;&c2}ohpE}(rON}_E{4c zNRN0(|74x>SbXfEh?=onx$U65r7}|Ya^rqX3#EBMe4=7`q3Wu4>rFOvJ*=y_uREd^ z7W0qs@B-FZ5HI%}bb#%=r*&N5n;#l*Oc z-FYZg>seIy3J~jwq-RlgnYn$ZEW?m|VNSdhQG|27|EYa2W~}VQ*FpboqdD(k{w}_y z)1BcR2{u%Sv(0ADMyQ!erua%2cYM_R#3H()>)GdqWzLC_NmYJq9dx@Hrib#$g8Z3>nP^q&A}+9db!O_V1y>Q$l&?3H z-`LSLq>QXR@O#*)-_mjar@z}eo273O=TX|#;OusCgptsL<3j?z^z#F4Gf|il!=$5e zPDja3@_U7Y&J0oib~MP^PR&>5ztqxmV1nHaA${Nc>->;D1$6zWxp$iH-W-S4pe81c z6igrWYVn)2WI(Ni%Of}T@3yRiBaC_KqIlyqZ<>=UOL)bG`Ao}dF-J9l<)t753f7T6Y^D|@xvxjY=ZQ34>6 z^mxdK>4i=r)zJ+l9Ukxha#|egeKyDu-SnT3I7Qw9SF4oFZcg#Qds62+K}c3sC}_bO zpOb@s&wH*qrd^zURWEDj(X4y~W3XNVzQV~wnrv~R3Ds(b8PX5-@cEt}e}c=VNx!z5 zz@Vh)3g@Jfu=D1a+*BZ)>(DTD0JoLpQf8{kMYLiVMMn6=GI1WmC9uco9F2RuWV1Te z?4EiKb~1fe)PXtqedI@NaYri{qe1yC3RD))OrE!IL5XBOPMddjTJ7EC$swqDN8RM z-a#&b<%??jY7eY!TM`3?>N6Il!Vt62Lq$QeTsuKkghz9)IL@?K3p@Yl%;|7Ormpya zs!^tbT4%dC6ycLh78)lzvDPjxMcek-Ja-4yR&2k;u!WT)N9H28DF3Y z&Cvvpx%7;e0_1d|K42z(7KI}p;pz7V-iHMCy-8;L6JvAP^2)|JJc+Mfew7=oXrf_- zyv`kxUsObt#eZJ|wnO*TpJIpA+jaTFVzCGCo-OF$r%}=vZVi*N_@{n)pBTg#cA>v) zba_{c);NeD=J~QSDZO=tUhgrV0vIwo%0Ru=(`9U#94$2oWZNWg0d{l4dX4Se;YhNX z{?lYN`v4z=JeSJS#5`+%z2-8Mz-A_Fe}OUH4k3zibGJxs4%v)k&rK-X_l<#f$APxC zgo%RSL_e&`OH&=i8RzbMp5*Gq=7vMwZ?M*s9H6`PjTejpG#g0aEXzuc?yh;Z?Gccn zPFYG6W_2!NH(imAL{Wcnfn&jmT~5d9H4`tG#1wl(1IN4N9hr}d=-eHpu3zl9{xn^q+DU#d84MQpq6;y=xmC9{kh zQ=H+@snA|;{+5G7Vra-bzxQX*AKw3HeU4>6lH`3b$7({4^v3=gwJHW|8(Zr&=1}t{-=v5UZF;$a1_kVnao{N&z{$TgJ?{=dNJY^r=A4noF&ZNkwmC z6HEHF4(~)uM{Mkd{WLE?OvQ-~ub-KN5VpRqSv$WBLNxbD8dgYVd1+qwjzB#;TK~yR z41~35|7o5S@DZ=B> zGgQr~hosPzP>v{CRp)T_JQi8gz55<7r5R*#=rZtdZYkur7RCLy zW6xnCZD5dSRwc3BNGG78C(`5_eK)9bFjAVT3j^bveerQ%%a6C=%y<{WPA~dvK>6}w zlFH!JUQ_5FEFgS;slo1`z7$}cQO9*_*MljTAsKrgzSt%}=~zPBeK@Za-LBSbHQ*!K zN?Kl-(?w8@mKb~y~8arZp3-;#S9q6AOK`|M|UjZMcDH(I?LifNQDr6l~QJf%K~KG~~A zeLdqLwQpuycs}ogcix1$#xyW1d6La;v2S@ma{Y$MVRn4BA*#NtK;~LT+~8D&{-7p{ zZ|th7S!r~ZEI~}Qm^L`3A7=Ej?J9y0BnyDr-pUCIW6Q-znqjKuWg^FR8_EO^)V^K~ zNx;@y{aE?g{a>Lclh< zlUA`>+co%t<|_BZ()aO#yC$xYJrc)haHv)Fm+#WYG*XjbTV2_SRYfi{(hDa)?xI7h zZ>4VHsrCAu<{RwRSZIS^;QS!h3R8VOFnVG6B z*Rzn9;5&RNm~2=TIWx++B8*n;oCM5G`x*RM@?0W;Cj4Q++)H-r&*3yCis{u>>uNm{ z^~C`wm{%$EmbvVxOK8T9%oFJzpaY;MQW|A3NH+`#Q+aAiXi3&?R>MSS(%c+AKA{Lk zUuS?M_^0bLP`|l`s9zQ1Df+$FUA6offc2(7wTQq!%*k@14&pwrPsHNAto*%`pxt31 z?AxDCw)0X+aDQ*RE%LKDr>`&GfSr{)zQJ;-pa{{8k^Q8%yDr#v=(2@R&1^$s=W3Qs z^JL%E-?=u7QP0&&^y3fzMDj|$@S|EorNw;h!~no>$O^vCZD4GhQM3!mfJAnwwWI^8 z7o1AG5wb-)g!vHhVU45P7p3M%ujzx6np|X!+OI_ll|!_zSL#!lNgUMmP*D6v^tXo_ z6L=T z%^&~Bz7^LF3w33Yp?hy;c8(wACe}~k(CsXH z=>r6;&0D(wh8a>6VFiqpF$*Y)Oqs3YM=>^*Yf2(O#b)S_Y6eP>L9~ zIuE^|{*sgtb+Z%s$r|Q7wAIQC)?TdUfHHo`IuV97UKvdb74I$DUP;o(r{|6?dov@# zGzc5GXKeTc2U(r7VW!GN-&#mQV0vs-R@k8-zD#~?isfxvj^YuYiK(-J#E5&NCpb8k zRqlG`ArY=%U!K&2PIaTjH*xBadA1|1G;YyWI+r%R0b;>A`X^r?NyvBWE?Q?qdy9y? z`d0{ZH}b_$l=B&xG7-_cOtZx)6{(kuRrp%7GYjKK%g=vOwGe%!mxE+z~ z6Od)%k>%X`L7fp@+fb>Ze3I6<0T{yxt@;Mdoq@9p;aZ&*8^?2#5H4DsXv?vW|5-)` zK}EX_1wN@>) zHk#J`(~e5jjExJCPw$|C1EdC3un%o_L>jJUInJF_B0i-Jyb26E{%AMc?h{hbha8=3-iJ%s)EzTj_l`tIrDqzzr0}4 zgYH)Enj-u77s;$`buveQzPRnA`Nwa#=tG1QRkbvW$@(aj^Gv(MyMk>`8$)7_D_7#> zav0MdRz&#^-LSX|tczFOa5)-Qkjpq3x}8L^Bc}%pl>&n@OqtXViDO-VJxO+$!;`$t zv>j?DI(6S`(&Q^dWsX`#sS=evbT+Wy|2_dQ8H=A`vm9B1nm_l{VN;h)v5TD5kRTu= z>TV`h8M=R(YshN2{~DX;9*fG z!~q{Bnr|A8JMx4r*=%&vp>MOu8f0PZ)4zQacu%iT@T*8X3Eh;4?+^VnWEwNo*vvpG ztaB5&7*Rb@fS&nmou74j39Vi&mbOqfE~HUa`RJ1d$TP&vr%wMpMdjKPYjoX&ttn$= zd7VeZ-#Tk!E$nDaJph>W<2ql5!;}~#JYdLMIENd{@CNTVEGF(*Ih;Ey;Fx7)*%K3k zF8Knf>A9^TDJWnq1sXjg4%%y{;?GnMG`v*Cr_gOHF{X|i1cGt)z8+wC#q_7V7lv-pQD}~3|w;((nt*5cR5OV%GY%og#>@yTWG(wDtXgoKmU+7d%+b0^WJUM$&z zK*y!905n8P2&2w!LT`}qZ3iFXbP-5Obt{hKdshe25dH;Q&nW;nLlJw(>S^72DM6NC zwLOEN;I3Ve^mN;^NsaNEObu>S&m_{}O-Uh@_f>0xf|nhZz|=edB4znZ(sW0=w^V+Gi#p6n=}6)}PwLamUI zx11&-2y-zr;bJ-qNH_4d$&q$Xq{gF)51*Vn+=-Qml8Rq-6!V7|y>i>!P!E zEoWpY!0aX9i9Xy{f`t>3v=)_IGO_Iy?s~Wt))tiH{2VO~EY@rLt|@q)rnhi+*Fi0+ zJqU^G?IZ(y)~Yo!FcLu*neR5=h$b=CTcDq7SGZ-$ihN4rxk zO8GbTI<`qMAf$0+PEDa%a}1C2D0HP3g*lS?33l7!P*!n2#u~7lbGB{|VVI0dgKlH# zhJjf0vwO!Lvf+u$n4XtJMkx6qupF3=X*HzKb_#P;F}?G+MP{tmeo8jRt?D};^fs*A zX<{En$`qn0m!ch30Lh-pixteB``*bO1JH@rHC*QQj|2pY4Ghlv z(6*HVVrgrbh)eVhGjRAClwL$Jd(=r9%Qly+Jo}=(a3VB@{vfukuV>H7B;VA7>x_k) zj@qV{LKlSZZ{E<)MsvL^&MydlVvj{6Kw0{sZ6TCNFgxz@%}7n3+>%@)S)G;qN!@!w zSG$-YycT#!-Tf(wfj6wY2n%oakU3+5061n zv9{}R`&kRZzh2iYE#YzHt#XX)`&*nM9*@U(vIVYPxP+E&Iu#GI^rEk3x>Xd!f{}>10Z2azb3gh02hF9g58dXhPE-ks0-*7-gS= zuI07poafp1gJipP4Qa(XaqXd+|@r<~|iSa4DPb zqwzAUScqbtk8cQLxJ`UqkA5Fosc|YX8j1sP{dl`-FO;x+fE|q(SeigMX7~om>?vrg z3^fQ1giOlppSOg%f}ZlI5z`YmY%bA zxyEfN(F{x{K_Ug}Mt&(}Q zH0tD!GrSuK=(Jo6Ron5op@ld#uREOXmc5;aiFeL!Cq^h}Kj+?wG+R1LOHZeDhw)h^ z%l=^nmOKE0_&aOkTQJn)W{Qo#X8w~rcB2gTUmuBRKS=Ceoav3>49`|l;0{E>@ZNEPkUsAx4pX@N3N9oS}acYY+j09nhFG}e_Qh1p9# zSW%n3>>BkX1v?D?cx&8d{W<*yGZtA?*Or-H(QGjd+m#{)6Ox&0zjw7C-^6mIlowcWS-^;s)Y5GxfNkl`*gQ zGZC|+GbE64ms59G;dw(5U}sWXe<$JWbS1V3LWNZz{A347bc7t@1ky^em3kVZ)vKUT zW~l87W7h$CC87`hcxA<$KKn4)QNMKu|seMuj zb(GxWY~TIWv*rrLNso_Czj{%advHy@qr4u;m1d^WKG3Jk{uD43upxggtjG)-p*BsM zV*8>bTS7xcvvSyjL1{rA!GkL)IedjyM!v_vBE&tg3f7)c-n?wFp-{K@UX8OjK#pq4 zTzFv4ZCib1X0zN)=iPH%o3(I9G<4u<2>%rp?B{tk(>H0jlj~Wh4RcKP@+D^8fV1+AVpf+SEpIalNNj$iQ_xgSWj`}>TOiRq-(h`ux>pysO2(! zF50~6YO|3(=iMH~IE5B2m52z@IErjBRTAF1NR9mJzFquaMH0C#>*-5G*}jIbiN!JB zz4uzgUT!u_%li+EYmA!4Y(y_xNKv+nN*Q#|aB}qQ&c&h)ZAV z7VDH4ZVaXrt=+?#aA`}1^@0|DD(@fOGcv4t;1od&rxutbe?A}L!1QU*{7B#J)?9W^ z)pVxTZV^~ypl77Qp!=n(Tar_{gtCL%fkf(r+tGO*Y?DxHEYXCE>y1kqRI>8nU@tVV ztfVcxZH9jp*87k~Zj6pTw@|}mpF7WwGNH0^Pqj#vV#>)w(em-!|HIT-$2Glp|6i{P zSCLQzq*bI#x}5DcE+{Z5c^*( zh>J*c_&WWF08z+WzbGZKGLAV2=5xnz89@{%g9dzfEW$~wI_7^^y-}SL7A2(qbVbM; zeSHQ1*{pHQ_R~LT?ztHnW&$PU(v?jw+IbXghj%h__U>&?My>x!hHlkPz;7GX#-dP=p{i2k!*#Cfgx_g9zV$91WS%iQ)t8bk@P49{ zS9mH+l`sv1H@-wxBXc%q->zn{ROB(Cs(k%PO*Lc*Qru9(Aap--dTRSgeLsCGjcbQ4 zwYXB$e>i5(!>@*j@qs044I&V?}}+gt`rh->(u-p ztqV#sL$(^~^=%RD1S@jGVNOa?YWgYrQklF`3W=Sr!331*f`awq=u}yhQPfA3y2Dzu z$r0#2u#kAKPawg6UC+TwX)pOO5?wyjRPw=n(zH4lY6%}m{9v@ z|D=V?keZ|f6>pm2yHCRJXnz%H$S|sb)#u_;)Q?l=^2zA3s0P>-$n~ew))AYS9ZH`H zEQyp_#FL7V9!J|9MLQZYr%zsQnJ2VXhFylWI&*QVODG1<%Rxd2dcN}Q zM^osEltYNwNBY@HnOpS)j_c0L(F&n}d|GZ6vM)v|Lh8mWY4jBucklDt@AZvbxX`(s-o?dA119J(^oe}jHRjStQJ zRTHjmOcW_rE+(R&b`o@@Ay;JV|9r|Px^Ld1wjPF>z~J>;Jlz$Vd(J)iQd$%~>Yox> zS>>6rXr0GhJuyyB)2rjT$JAFXM%jBLicG(Dz4W6!U{#eTr((<5TH?B&R`}*skV1FxJwvZh~}mhJ_^i23s?_CSiuFQo=g7f{$*63B{o?d&Q9giL_Le; z&ogeA=yyLb;`f%BemDx_^ZTXIPB(Gxi4Y4W>@$_gP7jOAubVAH_lBo=CZ+}S`{@{{ z`}bF#r^eW1lbv>}X(XEq_EX0ZL3zuZt!fQt9S619RKO(u^n3!kG*Uwo<^^yg&*N!O zK0uot;ExWv3{o|4N10bA^#VQzF=M-kEs4*!WT9jXTn;vePvgArBOO~55k&)}@buB1 z`~m2cDapE`H}USjwSl4ehJ@7HTfWhqV29&-R2nFWjXKMP?V>HI=R_}_%lClN#XPoK zrYmlM(*)Yc=JTwJ=??gpe#@(&EP6hMd!B}GXc%L}MJ=m?_ZmMQ(~lK%2fivWoZ+Vz;oGpzAhLTl`{#nSVpOCQrR5bRJ+G{lq5PAfr$0 zFeiUySG>&|?DYizxseWoaOX@699myk`%!F|xg5w-RXQK@mlz@cTk#u$;Zoc8?SA5C zRKW~*NR?auk#~u+AH;foGgvY6tEwh(0O?;*NLYnTeqB89{_-xz-u)g|T`ymN z*;MRpJk_u%QB8II3Yyg|++}~gmHcr(zh@boMA&>^I5)$CEzjguKEnB#VZLOw6!IhH z^sH*#yFxH3ye2GT^77JZvs3<=o+F2l!>3z&pFy~uc7TcI{s)+;`V}(7bC$T=osWJ! z?vMRe-bG|LftU<~Iu(8IyKt9)De*Q0f(dT`g%UQ>Nz!g!&L}q*&*(>0(EE|f+zS-- z8C)%|v23h2u#acgkL;$b*$H$54@=5{28w5?BjsRC4-dc4N*r|>$jO@zss_s1tO&ch zH+g)j>86}6zNZNH>}bq;Hxc%WO?vWuD$V_wPVKOZ^ zi>;(T4IG;agQXK(XHTZ2=^c+FGwe%ejl+?N z{2ikk>sZ{5i~R>bmtV^TI|KT~j?W4z!b3QDZXzTX{Gv)S&W^spWfRf83$&3uT~UN- z?Mz#FbP7rr>ow0t6)SVVyR-TwePgn77s;gA7|U+)`4d>>jlDBM;h26_CypY;YFQXB zcVEC)p^n&hPDnB9cm%R82vvGxb7 zF5hxAGm_G>n#^6r+4Q8j?7Ps$;Mtp*`sNoRJttku#;rb1o;#%Z%%R1D{uoe~ok(KT zv6Y_K5w2za(I7xfN+Zs=7Z{NYX^vHtc4rIdjd&eTr#}dTP0-phUNuz7SVKZr#BZ@D zo~?!hxYncit5&#iFTW+Gxa~3I49#cUKIHbpaIeZVJQ%dl7xkJ-)LkY}=(QW8(-hAq z-y=v2&xqw!rHPzDpG~~+eTt|4ujFe5Q~S7HAJ&y=ER;O!+-QSIn%u<8K(Ngpjip*F z)ixzplxu*g!-^FFu0q1WD9%xRigPrUhM%PsjY)+%3nRhjb$TSK{d+hN&jRy>LBrk0IWwl z;rK6+PuToM5d`MLjBh(eE8SQ(%A``E5Yx@bbt_sw?f8YqHLiZZhJ^;`!0WnyNCte` zBG*$|L;O!8B#_i%H!yBka}|H@#aZmq+*t({L8VhW%ruo9Z;VUYv@b> z;~Ti!&p~0QX?uFyH?vr-<^5D#B!($Re)Wgbk7XaUa%#0%N)^H+sx8YpI+8f31b2^O zSyl+YvxL;LkQbPILvfH6Br@y!Mp!$VAK)gHVp9_-iF)X$W@dx&aZOyOG>8Q7sk9E$ z6#*+NY-qgP+ya7GrT_VwxVEzmw-crNd&1TA*VxV)q0N(#@AL)UHuxl{W@XdP)m5c; zb?#5?x=m_3OpHc=mIT|FvZ&#n{y%mD)pOpH!M}QvJ**^;|H1g`8v`jkn35oxbL0i` zsTM^EuQ_c57ILe9#cVIL#Iq#0XA^3T2VI0<>YrL<=)t4Av_VUc9oD`)me~$|ZEo}V zI|XT7`q)ZF3rD2us(CYB~{I z{i*(mCJ-A8nj4PU&!J8(w)jsA=$-O@F(FYoT9I;Oh;w$3YxtcvA=&Qr+Zw8uBWCSd z#-z4s=A28~;#bOR<(!h1_FH&bw^Ue%u_bM;qIk9OmCQ6V$CT|81x)zpf|U4rVh$?X zemmcvp38&RcdJhVN;tvkQu1 zo@U)59V1S%N3FJ3kWh9GQwU0tM5Z7AuQSU}xuHW)G5?(<&OBio0^xX&MmM19L%hR96PSdOwGB zGQZvx|3lMy-a~vj4b3B{SuOPfywHePSX{So* zsh4^ zTX6P2=Uv&Hj!uOdh6zZF4IyF$N(hPS|CCkp2Zrh13WpUd(fd(uw$88nEUkZ+%gDU) zAGqhHzf^sVJ%tLG-xq35q`d$sXb4wtS5BW=29QCorHKvT|5rtogmiC>ewd5|U*P#5nf)Spu(KW_ym)N9gB;Z<7%9OGY?I zamiX*<+Nmx80zHMG$}Wol_gM(J|N1hu}rbhomvf>Fm>iXg&X#QEi~IIe;%#@QlPH8 z=imp!+`IH{!ETrvsdd0*NMqPzinOZFA> z!!>_+*Wj!5{WcZr`W@MU!ZqUta7~q+R227h8CT=S#6#2bh-J82cjgNMW%h&eWR%C& zYKBiGNER`_7ZURy{e~0k105;^>}!Pwov=UgaN%En zUVo8;nD9MLvO407M8OBEtM>s~rL_KGnNi083QPchK)P=*&a;b_BW zs=eR#$NJvqXHloTvhB(wv&7`(JA&k7(_|2_BF{DXq@R`_*P&vKjm|=ALv>}5AQQ;3 zBvlx1M6Va8(C$r_1^v9uNo#8q+<1VtB0{0+<}wl*TPnqj%^(*pVq&7Kmotf+_z7_ZR{RoON1w=d}lX~RHuv7lGY`1J4kVN*u>!h-i*(HPj3qCa=LX+EZ!N3M(dG=aF~W^Y;o((1b+sq?QX>gK%COK3v>o>C~{-K)2OU3ey=w zM==Nguan9B1cYLTh@$>wXLdl(Ho?DUKW`fz8-oiIm1!h^3!6hJIa@*K5SDhS0ur+_ z7ldTbB#IJMlR;XySr<1Kbja7erQ~jEuCcNgS*qvgROwER(}RN8onx<*@qB|Tq%tXS zXctr7JUU5aBjvkZgJoBk;V^za({{yvcHcwe6+|AvUsnlUygK1ijg2*ZP{F~vK-YP&QLy;)SX;{GL-vKso{Yh== zA~YcbyLwTX79EiERHP(1IgG2QRhzw8#nj~Hcin7;#pUvk#TT9?0+4?Br#fYGS|iup zmK)SpCgC)s=%VTPDGmh%LEDJ+W$*E_mbLk%dd`h`oo5u=N-o@IM5=trSNCD9Y7;5u zZu~2s41cz$%FR48e}3%4#0hyxdiGd;k_UyKTjkZ3t$#nIWloj3oP#&PKRc&PB3;=0 zramG`iF@a9n1YR;7_tAUuCqNFtXVIN{VclNoiYL(`A&WMP*_m%OXjNzli&(-3N{8A z>dc&G(u>QxTA|U7S6liHKBA|vbB}vOwi@gBAcp~MCnJv+LM_;XjC{D^sM((wkHpae zb~g?nJH=1wX67SlsiX5CapE;?4_W0!&l$^8&4wSNICN<1#Y?Ke?`k_t3y5P`J73frdkU zEnx~Dw(jZ5!vscVu27L^p|bMJ*Tb)WcAw38?MF$9Ic$`A3v?ibEri4hgdOyWb2-^S zW2~7p%LqLGYPkVf!V=%xb6iuV#VW z1-Qq0bsol;ivIpF8emIgzhG5ewR9*3b8CI)K0k4i-%lqh>#%cvAHkzm#W(Wmv1=3i z8JU5vqEMR8=9}FL!4>4+Yel^M00NKaTO4itnU?x4%cUvDxwxQiWY#hibyQD#x;=;a z`{zo>F};dnb5Vr=)MI?;r9EWIj6M@}=#~>ZjLvs7wA`%M0XsLYfB!v*^Yx7HSE2{q z_PI74;!8XD^m(!iNxc+BOfWcA3)@bqu07a|rl^tsl+vm2GNRoYl$74~5Qjk4n;Yw@;*PXDQ%AR^x5B(_3M2G?L-g zVPD8cK1Ze%oDO#UJHf@#sYu*`oD9=u@zyge;~CTWk(!ovdINw%qB*UXa8CU~RK~E^WbUzGs}|ie9|cB`MX;pQl5Xa- zwTX&N=2D%YMYWxLTJi;6Bv30LKTEf{{Vh)g=}O^tAk2l(0{Y;KHs$AC273bun(kpZ zWm4F$5j#6WLWYvMUiLGpK`i}~+a&0BHI=y>)~PCuTa;_K0cy~zs0?VXeOTF0KUM0? z#}TJ|2z?!qD&A}ho_AUV#@2iubNuD&c|op%_VDNAqWnZt2*%u7&TW1VGn z#W{95ZqX#hm*$hvfPlftCT+WP@7~F9!$P*c8D1^zo(ehS=0mHg#yLk5HzcpJ;kvN{ z#-crO#&HaP-J_ecO}}?NmuUCPETyu#FE>U_F-d@yHlwX&*9IOBJ+AvfVCd4d+81ux zH*!I%+9v=eNste>(~cTP0JSN0IQeZh>+GGA*ZE4?FJDy@VbEmchD~bA)NkZyc$7)o z4q7p1ReME;nLLK8&-Yi(O2~6nMV>F2_B!$xY_(zbDerye->Ucq=m(_rPG{rp2^nd+ z_MT*qx_JBgO9Pwg<;^zBD+KB0)R6i52Lt&x9!jT-Q?Y!GQrXivE_hs6 zT^FL^VYn*;L)nsLjz2gYN=!HkOShX-^4py**P_)`h;GF(+jt8`V($gIb{=>r`uY`~ zK@Zz1|JSBxj8>@dT7xD_WcQuuqzqP{{{|^|CG;9ex6DP zD<+VK>Tew3$`yY}9tyWQU}`KfDYQgI{+h#xHiN7bXl=wA333OZ{hn?{OsfhoW!zk$Sr)#at&y++=Gt#O5E@oiY_|CZATJ zWj7}H6g$2iX~v#o*rRD|LxZ*cojU|z8Qbh+eO=Fseb^H8jIOElBF?hh!hy%g+K7!d zSKXa$1un64Li{kBz&5@$fK;Pwq5EahY_{#~-AL6_tF+yp3AjQwxxYqX?EIBmm@AP3!Y9S>(A3ky1lgu?7EBaaKqw8Lx) zcjhC)93u^@CeLe%pn()2letuQO)kKaoK0rE|C_~_JP{Q>r$5%;hw(-Jq;M21_qV<8 zI%)xfZ>seh9P4hz3;iiLW~WGX>dRm;#uFSf9}H_>>fAn};WN_r$W4rXDyOphrsBao zVZoG=Rcqb6+c*h#`@?1P&SPMk6rk!;6+gH_@{`g4;r5Hu9}c*&WOaEfUSIxW*1T%f z;T!xi^_R`Ai{EnBc|a3n5cb1!s?vS>}F!_6ax#7Y-GCgW3==* zZP~|p36YOl4JGA(rB2f@)Cbfg?!UOkeB zxg_w1ojUzo&n;szSp>tU9(q;VA+;1u6gA`ooxfTH2igy~EN~f?Kbep8wZI*yJWY!N zy}6bprI>exYF6^|1YifA(C*HMkWptUKD-(^@b_RBvp>4{e44hr?)4ky6ocdOesEL2 zF8x(1bH15yNc)~kkT<$U-0|t$NJ+i~pN?OuLm{iGaWSdGS>bqbe?j|z@-6Rv8oPU6 z+NFs?Z;lz$l`2UzqzkX^(+VtLE~@2z=QYn^XHXGfL#_*CyfOFA%?!urGU<$`@Lo8Z z#C8z2e|jubDqe<#HTPhA-kE6NeAOgKtrOYf(}u@%G9(VB+wK|r1B+U0o)^=;rkCJx zY8k>D!rWVKL8yP1-hDpH7Gq6-tUhV7#S$pjy2wOBdcB%G91D(4!A|0BwZeKKxXGOy{H_PS=}j zvhq8Q$}=2`i7;z-JN|VY;#mRp{AzGzIO$*|L!+H`+%KCU()*0Q*iC6~%JNcZ!WyDplrQDtjW6 zY6$|Wj2yk3TFA2+du3Jc7b|u$-k9ajz7Bhf&yYp0&|YRd?TfW30!Dv#-~25jniw;n zs=vbI^YemMNqRg%h^;{%Qq`|o;E<#P`Z z9X>VuhusHG)w;+p7Sd*KxZUCeDQ#2wCU2X*fdoiU#ROT01m;U_xz0nN&1kZ_%I*ab z=q1j9W-0IQUBbju2nP7Uer;p|c6U3FAj7!V4()-7H!`f3P7WG{5Ot2}tMmFk#Mu!y z3qN%3_-H4U^4_`g#8vtgt-ZS4V^;gmJ@n)8>Jc!tlNM zK7X8Agw>V7=PoD;oCLj5$?$L>6&qDzN%8#K5p+t~sx>S3Ue)Q@G+em5m>p$IS~ifP zZY-5v>7%uMRz?#)G%IeLGCzFx`5y^nw?{e&+GwHcRKsyfcBc6f`Xuui>G*TI1xWF} zN`s%<^tpUeD5%jK6KIW!H~UUzQ|^CiB&Q=(N(xVz_WV(Qy|t42lx@xOB|vLg?}I6-=fy;~>onGt@DX!OVk4Jda5U6E zpU+}Jx-_$M#qk^5eG|w-D)EjY>!owfjl>3&b!jPIdIfrCo2_f(SD3wcPG_*?K1oIX zdw_5(w~ykkNM})BJ#W#2T_wJn$9jSwlP^TSq_;1(tAAy;lw$G!c)(>>6izp>us*lEzVO=f){G^IuZLXJGrjx9H+ngtQW$b?`pS(NqR7?px?fN zU{dIZottgGwj{14MeEXoF3|L~q%~3;!7=-Q=DqTprk`GG@=(J78w+Zkm>WS?Xm8?Q=IwNLy!ibs zGE;J%TtIMP|MT5XX<7N#RcnBt%Y8xoi@d~85Y>|-@0*xSt3YL@P#e~$+y}IZq)|wF zRCT~1DT0`4oD~$Z$0yk+FsTCmTR57It2FP%e)eljSwVNk*nb4cO`#owox~gADWP$L zV*Vl#F+#El!PTZS4Ob@lXM&uuc=j{mH5-Gf|6%>Jce|E#$9+Eh|Gt9*`HKq&v0Zo5{JZ%bX;xKYWIY?D{DA50p>m!ISNnmBO1Bk;43 ztjg)GBh5}`Nq~>Wb2iI=_w}HbcF5;Asp5F{UP-GO1p2sFMl^%?gF7=em;a-w>&@!B zf7+dCUgBMtB!5i0tl!VHGFk9|_VJ{Be+u^~=STW!ux2~R;778uF1&jI(8iE=m?as| zsCnPV-7ns*NsQ1cg!mCr^q_fjmVrW^UV`1N~5z}6}6*0Bt+jshJ0g)_!6o0`~ z+K+nYO*fE&5ocE`;rjFhy+01~ax3N!^rn^%%N$)5K2DvuSMayI;qQq~LMIVE!t4*$ z{5f$1gcXU_^%}K@+N4`8{yV2^_fDho)Tj6}`P5)~?~umgqyEPcT>9m_6Zn75^ zZl4kx&ySs(qvVdT-Ze?WX<%0)waZ}J6JL-8ymc&M$+5dImSRIP@6F!zs zmC(2-Z`($e7TZFiBcgMG&XoV9Q>SR0q3(pG8GDWWJfzmfHZ#&KWOgLtDQ?nGxWIvQ zG|TG(MZk=mVxrH?Crw;d9<13Rw*WPD)Rx>$Or;1`-cH4n;(W@;Kzp%(YkvHZ$Sgh$ ziYwsFXQfus<${eimofXLMV?H8q;f)n(zyfOZ)GFH?izwnIVH?3#fDQ+QcZWcP^B zwGv@?UJc(ERM|G}IrlK(mpQ=>qP}{}D5bAIz^{vkXaLjQ)jf@0mjm#lKw|kl8PT3U z=wp$gL|#HHJ#Qv8Pc4Q<14pEyGuDR2o@ld&O(F!-9&VA4kxgN^-8Kqao4DNrj>^oP zkc?cYDb(qQr%@u20#-rA-vtKFJG;A><*e#%#uR!albw#51U4jRs@Pt(D%&(~uMZ0Z ztf+#WT*Bo`q*m-{#7)oWqRUz56AwVjgIYE2I3O-(5KfPb*jc;x68D>HuT@25ARFwKwSB;DOHvj(5kDWq|F7Dj>YuF!uL* zm52J3uYNmzjelvcz`FPOGCPr-cx#>WvRrRzL{$l>H`-|YCy`xdJD#@;M&LIiATK?H z-v6|YT7~-dIM`nyN-*?=;}kPWW=;Lx_z3bQ#M4+jd}fD}y}W+=LZVWC;O(VnG{BmX zRKAcvsB~0n1<=#BK84AD{YC91`|%kSfO3CPZk$J@Ra$S-=w4oSQDLcu!nf~{VtHb? zYM_yNoPIVg3mN8wTQsufFenl5V~nn+pXk`NcDWqouLc)@FvPzKIO+D)WBj4D$ zirOqZ!iR_TaC5pO;m5QL-<*le^NuD+yrWe~c1vj9r$`V{1Uxg9?P(}(S6kSIzbB?p zVXil7&d1)_@6)2Br$)0>N5}2lnJvk`*Fc@@0e)mR5Wrf2DZgJC$w#gYfu?fzJ9M@ z<_K?HrH!&IDj|?H2`lY?Ts-p@=-J zYAyaaO;}|V@Ue9{X|vvrzO}l8|H8}dJQmB&jM-cJef7Ut{@`3WB%r^@K!ib*=V z_`mI%pHaklwO#z8H2v+3^{#AB3wMy0VI&J8 zp$yHbF?hDwS9dj8RyqWw);G@T?_*WcryWoE^2*jNi>fZwu}sp@uDR>Ot6?|XJmg>R zKvnzalEHUDDei^xU$@e{%59SuEjjcR~N(^1CQ^y zP=dlPeI)%Np!=RU;>LCTv1^L!;8n!r{#|ws-i+Vtd$UvTCcZxeo>8III&M@Ve>-K8 zK*iqK%y7jC^u?_s-=se*4zP3noCo`@ZYKCVdN+V+sKQ2U;?j%o=|lPA;^l;~YY~5H z1C)FTIHrH>p{+CQ=)nKOj>xBpVPz^m#e+H_;QF(Acp1h?h zkKfID!N%|JtvNh;@6-H?e^ynzztl2LxH){tD%4Z8a4=t7d=hf-EIOnn+a8&4kpp<| zO^LhZH!r*tU8C{g+sar%r>n3z-cJ>CG^OjRL>jYkq(DFaFd0qcg3)AG@#jWbZiD2r zDTJOy5(r|f&eBEe{qP-(sz2*@_Sz4Gs1=>wwEUW0_m1$zY!9FOea8yPv-6?Z!ZE3DzJlUoaEtRk35xt%*VTBX=v2}E z`e3Z9{xX55c_U6WXf$kWeU`?=MZ#N-@iNkT*q%*{xyElGn@>c4xW-~318QIs!0NKLzXFn`Q}Ols_agU?eE3=E zTuMgZ?&o6oq*wuRHEhEtOgl#jBI2y|&hYG6*Lkp{hf4;tG46`bKcAnwS%G&zdPZug z8*MXZ(FdQR;eU42-Ng|fy}dM{$Wk$w&|Z%2h4HeUh%AE?Vk+LlXq!bUL${B-?&Pl_$~6Osp&H3?yR8Lbk%>9nMr^!<;Jois3T)-NPd?ahR$B&-94I z7df#c5Nop1+P9&fOp+AA9c^%e+)NeGayutf?UZmQ@lz}le*JF8z6H*dhb$~jw!r11 zRzm`V&@NHc>wCZbEl;k}^1%JATG^?p15ixt%dYq16&1^uI=LJ+mO67x-5yX8QlZ4Pl7JL+3`ZJ{!7k`|SnkZV8umkru1g4(7n zzK5!u+9<{uJ~Y`gcm6W5t;5qAxnS$3y}kdzn1bfWWxTy^>nH>Cl3w-$J(a~nFr*H7 z;`{>>D^>Go0-zhmb!RcZ`ZQEDuF-oSkkFB`Im&y#pCR0TTez#DU}MFytWz<#Hv4qT zExQ#h@&oRoAmPxFB6CHQT1Q9ogGW;kl8LeO+`%F#vPGWV3&IqFw$#roLj`ka+FUju z9hS7s;Qec;9D@Tt_v<}6vw&CURfa`EyA|rV)IE{q%_|YuU zbM7POpXsPgJ$kZk{f4vKKiL~xLfZR+qv=RFr_|XbsUvM|GB#VU ze%y%A%+uPA;k3O@o>-_nByP?Vwn| zuX?al4NTJ?>vt7KEzPir?zA0`Im%FY+e-jSV_M~oIyE|(cw=O{w zH}#tz6Qwe!!am#L7Qb{n>0=twenneWe&gP3HE;92S;^Dt6 zo9dy+AYVHi{RPi3;sl2X2Va{Z+IsQ}La*!iwDA}bV?l>{AH>N3-8{1al-wI|YKJ@*tBl^jn zR=2(N^^nuMU)u5B>t9K@vi+$SB|h$m+S)VvUpF0iw{+Y^wNiVg3eZaUD}#eiDFwC3 zYWmKLvS(Vnt-8#xlBoMp?TBt!Ku?{?SLC{+GnmS0gEkGKSl8U9Lwo>y2Y> zTHDu~h$54vGHjmx9xFDSCU6PbElcBztp=#;c|{#koJO1=VlDdSZ#(86ys zu?i^mbSXAo5TEN-u@4vDqql4co7g%?X29Dg-e>q<3ck}IiYrvaMv^S)!+?~BgPEgR zuowgK7T$m#>$2*QB_n9Zo^cR47*NpxF0KhWrflLpYK5Cbg`8YkjKh?OMM}v<|v^rwnWE^ojP3) z(;OpLV0XHO`8IGSMX~0KHc~(Jz?uG7_qciMCB1G*(YPNJk(Sh0)={$oizIZRP;oWg z5;LayaGIVP7&+IYfuUlHzT3K%{lXoZz*dMk9djhkofP0J=pA-#@M($9xfM=11#R|v z9|fvK0*}BYK{o;#s~qVKX7;n2mUu(C6$C`nqq$Gy9y;PN>+&vzG+vM6PJuK?8N#KE zF&Vy^qV-6W%>lh-8~@OBl@0aC5bo6Bn%jUQoRx;!;|A$CvlZ~Hlwh0zV( zZv|=AlQe(9ANyhp4+FFPMvuTq@9QSKfapy9n?0kN_0L<}DH0u-W<9g*Y};R}ygyB# zizLzFX)PZGxCeIV`K}tX@@8nrpUfupSPR~A^FLrl;VvA{e6ZOrwK5X)TPpK&8rz9^ z%Pcl|!&M(vPE=10I&W0YxEU&LGN#mT-W`2)>%?1HV6BC#3qrEWG9>kyJp)cXN=dMR z_YhBY6F%5s^Q)`0${noVTXAoWT${KNI1oR6f~T-8(Ge!Z~8477fk2@<&Cehyva z2{X)Z3T<^=5V-f@SAN;!00DMRs&V5yso5ZGXH%(gQ)krm|H38dPq+}yi%dPk zg^Omx&t$qseE#lCT&0lX{UUma$z=wE5A`Ym0&SORF?0liK?-6{hSCl1_x!uuC=moD z@7tHW%~O$Oz8oz7i<`H&t2`j~=7`lYrDTps0Jji&Kv5zmP0v!4`%)1~Mfrpc-`6ZZ zVvxi%yK>y~L*ikKm9N$=UHEE&UrPo2Zej3|o$9B3$=Qk`=72PFD6i4mtZ3iPB9`f@ zhZ}@>E1OlV-JInM=?7MBnAoKK0yd7(Eo0NIn4Ne1#*Rj^A=$`J6tQtR6$#Qh`)Zx2 zu8dGP%JZaBu+gKq{zO*RX|b4eT;igamGXE@XfI(jdyX`yt@-To-YkH_(8upO?556# zfVcXDeNnz68qDwE3QB0O<`l&2t;|Q!3pEG}fR=VHd>>CrbI!N3dEK&&%I-NbzV{Yr zgd{MkP?K2>$ZnFh@rh%*e>4`C3~fI(%3M6{-s4HaqbAE#6rcEJ9kOf&f1v9leGANH zJyeXs2AzT2E@yUd`(F|xmJS(j))Du*^P|!$KT|l=gWo8QP9=>j4x5q92#$MxjoMEA zy=jr9(!!*LDE0EmBDUMh%{|B6!Art z4S;X1#!mG7&zOeKjy1usggP1kl=Qkf>4aMzLGclq zG=z3$SGj&5Sp9G!wxbqd;=;VdP4EFtr!pz}Upg*^kjiQVQuPQMy$xI}( z-Woi>BOpH?I9GGQvD|wI3o91u3;TfXg$;|ZvPtr^?j7FF!j`A;%s!)*{|)y${Q_X5 zKKnk6eQXk#R7)zDr=xTIrs__pz5-KX?cYdWF*)L1I_AIUHoEIQg_foQZ1X2Re<^GR-obk-_b&+_v$ z^?zDG4LarkZ2xe}vy;nQ4MKx4Kd9e!VqObD3`ZUJlqUOdIp|l3`Gtdb@y)zerl*A% zue#L**^rCl@?RMM4#vU`H}VB`-#AY6Nd($D>RLJ6=PQ5QU(u_i1BVlAZG3FD*ZjI< zJ|RRQ0B<0bZ=Dq7n%CGq2SOcvO_%oL2I?%SGjKCmuk-fS*qcmX} zXKTL`TN_^9FK}AWwmI(g(Pe1*hF$*_&BB&O!zh)UeUf9b{e|lL20B)z{`w+@B^uh` zvc4pO5V@Ams@9p-dy`RKICcIoud+r*|BZCv@7H%g;0@3B)Br{Q*@E?pjOLN-wADc;==56O{k*eUV5YU0n3Q9lY!+Qowa*1489Hv3@^qtw$|0bX zu0M2Hkd5iUExiR}5t-}Er!Zx!F(X|8pCI&&#mWFNb}T8Kjl^Fd>6*Od9o~BmY8ZM= zcZC_X<#Zd2Y@s-d0w73D`=f5Kk&6d1>rh`nE9_^%#MjD0gQ}%7#e6gNQ`c~+$rY)) zb`yw4J7zj|`VQJ7zfzx|qru#=dj~P&U)DXPsOTuJL!qpt@_uBPRX)X0a_-Ds?>U?1 z=3k>wj>m-I2=eTPjEx(Lasof4xkiz*&(9~#5HcFc@439{;jGiR)bqrY?u5ZFNJ@Y1 z_e|ZzM~}U%cQAu{ zqpDjf$u#Iw&Y$naJ$ZJl?RtAX3^xTGXFB zNPFdl2rgR?UZ{JudTN+z>EFlGPcEfzR@*tWKujVZX(P~Nf|PIEO+}j-uWW4!fvf;N z0)nu0B&TF@5t+XoS5YovhA;lRamD7{mrHi*le61g5|mG<%mVa6O^}lI6V=oWT)g#{ zPZzSSuSz6tbk5-QL+h_O!B+ZXS+9mqYnd2rH&4N&P2Vc0Yle3cpY|mCJic7LbXebR z50b_1NZh*$mw|^jTLl5q^Fj^9YbQnqFTD0jI<&YOn)U$}xUJIW8}olUgj&%?<_qLa z?3}Fy$hKy1O$5Ww(OLgLvE-*IC#q%wB8Cqv>|T%+_-Q$HLeU2(F zT%xqZx=Nov+ay-x;!?k8yCm6ANX1p?WYH~>s?ml-!2&^1EuE}z2`MZde@a+Xaim!4U7x9X#u<;(?DIk*(z8)lOt}J)qQccQ45_Xu}37La04{x=ar< za$lBVM|SRt)1OWA(gQOFJ^dB3$Ks!oJI{jUz{hISJ&%JsOE|>x+PxFX1O2axB}ENC z&3k(+4P~NR=TS5QP37T8ZHwiIS(ka?z$ebb>Jt%V`(c|;6gzx#7g(%1gNR6>dXNa$ zz-P%@RB7KD#6Q<-Vh%Z=i;Z#HM5pm)zUa88tJc5b?mhV;Q7_)^?P@+Z`7`c>(1@Ij zLtkmDeEawt-av-PkXx{zgB8ReRoW@+46aCT9ya_1OPyNQnKBMkCNxByWOeds1?HFQ zwtkY&gb5jNW8Rpf%(%75LZcIUIK9Y=lpEOsDf zsde|H-3Q?B!Bunq|M>dqfT*@DZtpd?ioiuuQUyV}yHupR8>C~Xp&J!x21L50yStTc z7@DDn7-|OT7~(q^?|tvS_kHJ|bB^OVoW1tmYp?ZNzqK|xkuUzMYBU>-kB9If9 zuad6SMwjQb4R~JMUWjln30Jr^o8JG3YRL1WuiAV}GpJ#=WHY1CdpFR_L&p837~(Uw zub%3q6}e`^nb(rc`~ZT(-V(mfzPO~9<7dz+^7m1NM6_Za1sQu)Zqwmm|G{*^ZXxA# zLU!fVOPCT(JbgkHGqz3RL!5@_We4ClWlNZV2$>S`sGj~kq; zwqGsre?4Q|GZL6gaDLapX?GcuOP#xOmnbZM@AO8~aIJO0x65eLX3#q?Eh`a)qUH{v zRyKdxE>;(8wJu_XYLXv~wmW-mURa#=V#QIU>XOH3Mw8(knuIA{lnlQeZrMM3eU8<( zVvsa=wq3>tL~2OY723+4*&jy-c~7{rnWEb$!0z47Wr$m}piR5?nYp3;flWyjXq=;5 z1v6iE&qLZuf)kv`)Wi`z-sAc!mLQpG+HE1)z4O0i(IRi|wd#1ED}FovB2lAZ7dN?3 z$K`4<>)ZF|Adh0TClBg#;ckRj>lUtFv$u}h`q%dyT$B;#M|`3nq0b07cI>I}8ESJ2 zVLCm{&5U)HpEAJ6-TWoa2=PYlGNYt0QG_Iw7(Cj3F;3UcU8z_=LH5?mg_71+kA_4I zoqBK5kN}7qKuhc@SY`Ds8(w|ukRJpLnumB05O!3bHhF{KGrrb_DV;c*Cl+0G(`~8yk>-pNkRzy_nFyP111n z8YXW{{b_^8LzAOq{1zs`^R86Z=#VGA3Q*~NJf7?+l;Z;r5wQO*L?ES#)70l{$I<$f zCz8i`ah*?jF6^28kNtx_)n>l<7pD?xfB09vzTG@WZvCckB$hDlLAIYwu|dx!!y=pMC?p;)i+x@x zzHGvc$!>Ak;V=2gfS6HQ=O~e!{zDP%);;Ge#axop^W;Bt76fTJ-n&kk-WdSn-Lk*! zOv+kS*u#B6!YttU;#ijIwv)NbT^xRXaJK{lMJwvNFlk&uqw6f-zM<_Qc#8cM5nbj} z0<8l@kD$3N?PQ(-c1cl(S!aI)O${PXdj+AXM&LtEmYoH?N2`>M14X6p{g?2Y_LfGw zw*)}r$n5FLg2(!$WO?pKZ8BmyBc~0LMo_ zxy`!lqhqpX!fe)C8_Z;|>TN};+bxTv!l>ozH#9znb4QC0riB}KRwqjo!WUER77Ec< zHvx{L!P1@Asp^NtyW3I1mGEcEpgVOzG6{hqy@I;)!Y&t07KbKT_tFxZT}|3*5L*|Y zGbcAiGZv7efzNQnL!_<@yRbHIm&)qS0GYXaNk?tSq?1XHH%B&$^cW>G#15B!<kAZ!;s7`FAF;F`9sA+O6M_mw$AbNZSNxviB}j^&uydIt!;TgxCdIEf zy&9OGNu%cTsTRnfPu|u0iT$A@Fj2k0Ovf%J&ZHKFjtY+w&y7b7Tn@WbhFw!|<%`qc z+t?^;10tzAzow*S5fDd_llCt$qY1Yf8DFDJ8x(9nBcWXE;E%TEhuos{;hERdr1c8M zt6PrU5tCe63zIPG@E9-ST`}hIjVWd|KPCDom+_L9a0tGIBUccywFcL&zH_EKIZA}ZVcW$D6|pPB0Dt|?p-@6zDSI^o29k(u6E z*DA)`lC;@em&OfWUWW6OLG9kcB2uY*w+O5?eKl`=g>cy)S18G~c+LCEWiC!@X-^4p zGe-$apE-!WOzTq7DMsI6oOV54ibaqJb}1dahJU*&O5*l$R4X3|L1tDy8nz8RyaHP;&6z86peRj&8At71}ObTl=5(}L#D z<@$0-7P3?Yd0j-|aYrU_N!{13yZQ@D$HmPj$=>G1qFl`Bq=<)ks4I`UOL4iw`p#7$A%koa#M)*{CS**x#^9!-^%03 zZx9HH_myV&ZA;f?$p2YOn^HH==W#w0T>V@Pfq*3AU7fp8$_Zh#nH7ggaz@|QPuQWc zy=^LmD^rN4DSlk&D?PvP@v`eYL5hlL8WdpG7cR$2;kU!^cxFM8*iAd`b>h;<~IJn4J3XJ-&u-H63 zHM5fdk_nYbI!mglJ2zQ^!`m{taNwm$uQ%W7fEWRiicPlD)N5c5>YHGFSLq~}weS5? z%G3jyWbzA#qO(8^Eh!}}DX(MPr@|o+TqahF41;0=5N)hDaiv`c$8xC#ZANfA10wAc z!*(!UQ^D2nBCBU;bY5O6$JilTu`2y)@%kwHrMaTF#KUZw{-n>%=c<=?{D&E$ka&|s z!TWMxI);0m6C8O(8?jQVx9x#Vl)}!~+3ejrMv(?7%(1=4s*lVK`z%z4sp$9@xM1Kd21FSr0Jxy4sx{OxwA<&@}@)-%4!Wx)K%@ z3XE`PE^7@fHVsshM&x_Y*!b`m$!%GV72&s5YS8OZ`dWNlLfoqw{+nPnP_&jjS=EWz za!O?CnuDuy3H@v(wncd&b9Y4nl5+g|Ev0}A4pVXJY%7oLq9=c$hwbY#AQ;^L$=p|j z`K!64F-Mj6p+6JtwW1rpGve5{6E)h(xkzemY*V_meqM(tdx!Y5*^_^qgJ@QGSPbcF z>ux#3cG*7dyfl(9w-rINwyWzY!p-=0V45wWUQc8$CrM#?%h9mG!^bH?7@$;=a13o6f(5(Ya3?WP#e3cKa(x36Q@ z`Xm(1Nc$2)igSpU1W_8%hulOF+(FD>bIREov(ED^5lz|tEJR(5KzFlBEchad|LRcj zWZaHg;k?~3HL)u;Sgv-N!PVzPUViJCzs3QX;&JYV4!dmM#js#(&}{ID(rNW#7e-Iz zv|f86_DK3Ct4|!GazuEJ!9=8y{Mmban+BOULwA#BYc5jMW+TiJSrF;QIRWu@f{h0boWp7K{DpyIjLRe zSQf*%os^d|V9@G$E;&@B(s)(xfPOE^)pEE2ojQCjekDRQ$=AT?tiC~OwrD0uT#xb( zz`0*b-oVJrJ24!crBVZ0DIrq7NYDMPmgcOA=ouKq`Y(_@fdZ{1A;R$}T;4XDvab;3 zCdWS3mB+2s8zBSOyyVqx<2;+7{W=9mbP2JL1FB4B3O{v4ShL-#kCs2VZ#Y z@`_EIjW&4O39`3ZIlE$A??(RJ&F^cXUo}jH%Qxt&&xLROkfd7Q?V){vFrj8r%p>16 z;=ka$T*&XqNeM^Bns17W9y8b+8S(haZO62X?sgunzh^Oh-X&!1QhJH7aI=F_M58>) zyPZTU!p1(zVZ^y{Ip-Q38Rct3qF$#YvT{>-L`!tUP1sCufLw|x5UMAJo7ue_6xa(Y z!+(rd6XkRBS&tNTY(Fy{@Bu@-t^;2zCZ5Emz*?ArdP(VrpJBHrsA5ZllE+(1@T{x( z4OL>?K9#dD@~&pe9yFfI&DXjQeGMSAIBtkk2%I=2p9P(nd(u8GQ3V}iemAr9Uu3nQ z0*$($dU=aj*4@H9hXz%aVm}{@xvt<5ZiZ4^?=Cn~nPU>iJeNCoD4lmMR!mmEX`*_Y zQmUb?U0}VnnN#@kvxV5!wTuil*Wx;q0^8GMfcwmeGgm`ch;JA_RHX^LYFxQyuoS@b zTyJYOmCCpPjxS+zMc*}hsukP1+zSNVW2HSKaD|<{yDSe>;A>B~C&r^!9M9F&W*9Eb zOysp{+`<|ypC*TRuszc;9eBqe9Fy$QP&YU70Cw0OvTjGqQ#KfUj=VZo9FO$f4uuLe zn~5A_yw@2_uPx5HE)EzFVi}R;+fLoX5iqvSH&8&^_1NG(!mI+F<@X;b$8BRG(lJw- z76414id4ia#h#n{rNPA{az_6>>7B&v!%7|s3IlKWU>=saQ7XYLTUvvn&6EDMg8l`O zV?J#c2~iuenZS{)q)x8TkK1!nraDS6LF;((vm$vA;bDpn} z&hCW7zfbmV0w6W%lnu zZNY+T4Fum_F|o!;9U`0jN9j&j(o|`A*i&bVHmO?o_7640LtQAm7Fc}n?OU!-vWMXl znV)I91X^NSYtTsdr*T z1JsY}y)N&y+~}$iuNqNNntWj`(}7u$l+x?y6A` z%k0i*j1|-lXlCY+qIJbF0`hd*8gUFVQO?~9zCM`R3XF$K2tFIWvU~sc107G(&5y4t z70B2Q3sWf(YP;5CO`@4iVjwW_&Nh9^K+y_7+>Y(;c3a%Yi@x{5S`C{?YsQ)Ye$U}M zsffu{T%eU}qwKt3w@MXdft1~~9D|oAdNG*@#cMK5Vy4vEs<7GeUl5Y3C zE3t5!Dw3hgAP(3mW)#0s4kWXc9MQb%2{qmdie?YEv#C+7uOOE|CfwOt+HATVRy-Aw zcY|LRj1rTjEj9^_e$J&*I%kv;+P>`S`4sU$!WKrJ!QCjcOn7)PZ4KtAe*K;B7N>u) z#=!BkR5(R!7ya~$`FrTCYhbg5$nUmfU~z!$-3eIo9fWmbMIHxQ{8K zK7b&u59h1L%zUOt+h@c&*N!g#_Ai(!o1)UVGesJ#DYinHr)|g2Hq_xPZLRthYrgG| zTU4a8E{EOEfWENT0RWoCKIWf0jQzWl>I{LcW~$v~y)Pr1+3v3E9i#NUk^bHy2E$jE z0f*`{LEI)Q7Ul*tY6WJ=s6ujl*X0 zdaT3C;Gfwntt}fKi&b-y$amsyZd?>x+&J}V0hM|=UV}8uPuv#aSFL(yS^ihInGi?z zaMRsb1)J^WB}uc5{OI{|^r*~Hf8FAS)GLZ1=gXy*g{xz5BZNtf(#{nleP?BDjc+>h zs*H3ZYa;^Vuj*_|UM>nv6II1;`Vl>y#&b4Fyp!MTW+KNpFbTrBFbceKm=17n*#~YS zp{Z>vCJ)SWwb=}%)1FINhWqMn@S4BP%(Owvg}`P>z6qh;JEpNnNBOoi4!@P~SDycX z4B0}O(7txQ#i`PTpe-aVK=1C<=>j7E!eyaA!7d~1%8nZOcMtrydO7=)5J8CGX1bc= z1V{18!yKyan&Wyh3i~*f*J=G=g>hScY)0FQxPtNWZZGN+zJL{e!yF>Fdu=T}JJ`o} zN{RT8#0d`%;<7w9vScH@OaeI=w06;e7W!>=7piJ)xYoWC?6r$I&hYd9b?YnBoAgD= zg=e;TEyl585ZvO`bz9oo7Q^gU6dUDT%nt1pBN8!Ka&bq)pYkwsV&PiD>$Va%SVnE* z=s2C9zVPLaCwTXimj~ZYC-(5Xt$AWFFhE2;`v2Ni<)&FLleVASoNw$=OOd2q(yQth z!uabVr!D3S)2HsiHQ~Y1%GX!9sS3{KS4m!}a3_E44y5}qeUT6sSRs`kxct;2r_7+ZP!zBpHluy`8Xx;?g7 zSsLx3;zo1iGWT z{e?{6zh3nFG{>9r3qyhlk)pe4if8#OQ%b%&Z4Ds-pJ*pkWo9w%@vd5d4`R-9dYVn) zOb{KP1i5+o?H~TLm5#0=0vbArj@DDH#@A7aPBgW7b#rcr-5qkh06{bw{D-jU`E+>< z*6%;}^K9>j8~PIkv&U58J>0uLagBHLi*_KSI23_dd3gOB*ZTb&41)bn5&!-PAfLJb z+YSHw_8(U-1pubbKmP6Cw_nJC{E~m){^M#S{O?~M`i~!e+*(Kkb>8&g|30dy0KV4$ z^MK(Rf&ZUB-a<;!{`ZUD3A7trpHJEO$SD_2kU-3qzP`7$wbg5MA*c@Xmimna{Cerg z(Es{!dyL*VYFb(e35o3_7Z(?+YFKBd*iavIal!j!{u1&d!cZ9P>otx`33G zRY87tZ?9CbI*60xvN$v}^y>F`zcCU1yIYpz!Bcv!N1x+8q@|@RfCJ*-;NWw0hS1L3 zf8N{M>rknZD?i`psv)DRtIJ6uS8F?8R8;hPELA=F-|cdFgagE~wY0R{m)q|0QA&jO zpRFg^`JAm09XurE!DvH zl1oIyAiO7XGijBi;IhYzo-9y_1QZQ=bh>D z#?{T-v{=u+{(eVC$I8k|M+b-1y5!v!bjf61e;kYNbGD<4*6WjN;GHnpIA*=ypE>UT zzorJ~`|9c=zeg&=!y?zoDJe`6t355(S7_}_pYzRJW1zv!&CSUXnNSN|YHsd-DYyUC z$1gGGfuZ9~os$ams;P;|>gsAd+~H8DTAV-%n^KsOr?{x7!FihoW38^P&Vn-$1$56= zM=#6ICVx!{vb*=+BYmW=!3BAq*DHCN&)$or6MmIC%=N z$+TH=ax%ZuZ;Q2ix#(nIT-ddoVV$XabPRcBy9grh)gXDdrO z-Kk9NuXxMlwt8s4x{kUg&2`hH7Ej`LJS}%y-ePrgW5VsY==lU%>M`uEvp zps%k_X@50Jp--sw>Kvr6pGp=igoCzhbRNpiJF^)x&~>;d;ZLEKoTm|t$ZEg|sDV11AC^7dd#+T3LI zk2KV>E_gf|m_$Pm{Tg>2aiK?%R8yJUh%UF#8ud%OQqK=Zfi?Kn$pkL4bvWM-h?kZp zrqsV^g}B}m;lBK+M;QT)dM%FOQE1oqfl)4%?S-2{!UoKIb)a)ON(c#>OCmxV>psJE&uwbcFn{kge0>r9|4LWx)=Nt}v^ytGd4!T@S>5x7vxvHLag)C&_W-srjP4>^V z%z72y%oY}2*qN?Gfm{RYT0Dvtv+l~gzU^6PZ8aC?&4_wi#7j(C>(jH(;u4`097`vw zU(5PbrwZ~^B^I*H1f#Nn4RK!jKF?K|93CPR#U8HTE9cGbjyu;dg>UHbr*OozhSSBsm7PHp1N{((>SRe`tQmY`v%;mLYb~fIoxI*U*&?C}?Lx^qDNiM_czPnK zMkD{#W2KX{L2mBKFfYo2+s3D_%at(T`G!GvNqPT@YeYHq<6K@kRHhr0dmQDM%hcxHe4kn<81 zZ1YrxCM|jDt(DX!>I^j8Z<_Yq6bOMGK9DElP^CykWpL4XV3BSvJYbOZ(YA)ULrXS~ zX?A!f=l}F$ydP;PmyKQ^#@~QNqKQ z()ly-?}XLWy(V+a*Y06`^3QifY}{>sr~dtJ`nv|Ym_CW;IjI>L&wx(9;^yJeD4dui zIZC1C;!?A9*%EtLY5E_O5de;R9*8DAA0(ukLE^3NG>g+RSKnOtUau%c_TJT(6mdq`}9>F!Y7n)XRAAX~vcbz&nA0^{Ikz$BF3nG+B zg)SI_tAYjaAk`lG)R4OOec{aRP&;H?m)VpOG@orjZmnSy zfGIE7Yo6v!bK&D}hf z9rPJ?8Ik+!;$JdN)bqQK&a{+);mYDPQx2vy<>vf0(+oBjJ3ts9?DdvHpm24l0OuUY zTQZ~t)+$`W%UYMZ^ts4+thR>*T-vkIJ2W+)mSC%k?T4;*q5dRa^&ndrYIR_R_cQD9 z50#6QPDsY!0o_+9tVp~a42UPp?Gi_m%Fl3@brq($E@dCc`JCT6yY+y(N<13l=2 zIddA@$BQr9S(M@mu9><4WtOP{Fj~~SSr$jL~kr`y!gu%;}e^2-3JB_!~1b# zp+Js}jQmVe{OMlH*3$;u@W&D-tY(IuEk+Nf% z)_#5B+&nguCv;iTTKmKZ16W%V=%5|ot&#}y0@VlJu1e+V zL2X-%pMm(Fk#}q5;)gq}eEjL3Xg|%oP^;lqj)`^nI)d09GpJ(kmb%~gT2CyL{6{X3 zg&u646fdm0^qQ3v96GXw#Ke4X_F}9^CclcAfuWR3ZxhI{yWc1xFV7dPuWZ*6-c}M3 zcs;!YeXozgE^fF3q@#!d$q3~ij*S1*F#YXe{A$~+TS#TZPzvRZ3m_u{EGLzNx-DMy zlX;ZB7klv?bzM*_pj8~m)kSO8TB8)XyPjSr;{M&!3k5Vt)jpOnzUf*o zr41l^|38m+Izh$7$Xmc#T2?k9_?-6FdZI?n=XF{(R|U8pfSM$WUV+0ipcW0Ty9@bv zw5PvbQN36ESazT1p@)}}nO~HNxZvJwkhV7!d|v~-YDZ39wqI2yX<1(0r@uApt9L|> z;=rp7bG3D|FMbLcAt2zfdpnVtP`OPRmHcLmY@uP{6c0mo&y|o#(dC(?ff1exM@U3W z@VaE`-t3Z4hAG_7vm!hx^wE>$z0hnx&xTUx3PGD$64loklg=T_BatR^9oSFlIc7;RWA*^8&5m@OjlQc6DKp zD{L`N(cf6W4c{#(;9lOJnXSYniZh9F(XN`DG3vC%Dh&sLL-;zv^o}-fORIl7{{NDM z72sMsM7w!<_6q?HFyOh{)FgcP@S(3y`atQ%Nhw(!QxJ*qEGjPcJlt3YMw@ye7YXF* zxCM>+f#U!)6LO${*O!Sb>p5lH7tLK5FicKA$L}ITcc+{sCIe^#nfdiH3w7%PZEyOr z2Bk$nvny=&0x8ZEUbI3$2NUwVO3g^bn=a6aH6O=beQwPvw3m-}9=tB?&9n2V+{el` zFUi8VhJxV=ZG_S9y-Cztccxz{OxXnt(Km?*o(#htfj%F-(zg07Hc zCda^1Nu5rzmHg9TpO|_ye6=6zh{G7oz?76uY}D&eLWP$rtrgScFb{$Xb1?aGtEgd@6F1eCmBS>NOduk5skRb}S9?)>8^p2ChEaSv}i- zjTY@T7_1=|@NL%m2o9pjngLZ@KA8tBTB(4nqouQd0to;jqX%GBNc!Kh{R@z7`AK4Z z+jheOUL_|bIXicFZT{V93xp=hNgu5W zG|iknA%r3!vvx%ivJc8wO>=y1gn8Fp=8dBf*drobn+^8)es$xOlW%f51@{SMXlNi3 z!b)BCF#b4Vxi9tU{i?BH=K8vYy`X*%2tlieL!lmYr;eK4{; zWq{CA37%86HJQG$*;eX;lG0aiNLQ|Jtl{j=o9C^hnv6GI<2P+evPgy799&sFY^b29 zHZe1RIy8(b8-ixxwc@u`!;jB3^ywqS1i`)^*QoRYuxyR6|I6m73im|SBMbrUURA}( z!7&yc6BQNZc(%W$oe5wB@{+Pb0A%;uAchjTE_&Dg8rim59q=!P=8sOc3Um^7TgnH~ z?O+lp8L)YIsSu0pm!=|X<9rvJ?Viw#c~X^!*+y+{lwckD>C+OnbBUW29RDEhRt;QY zc3W+DO~H{^t<72qU+N#yP@@~47o&*B1YXx#?Y=s>u!eS4em+(F51OM2=xu5m4UTyxz9^EqADJ1aYRXZHQ8m zqj6Ib>m`(lH00qLm5Ky^h#B4dQJ0fS-Y1DwBRiE?xjy{d;Ju8Q25c=dN}?j$!iO0P zD+Z1Rl(7q|;5N`YZ?3i;6A+Kd@!9TQrO65Sr{z>9Hw}Yf1D-Xrev?H=PcI<8!NG}5 zr~jYN`A!F@D{e88|B+m59a%v&cH4~Cs|D7r&N%^fZNm;CEvTxSR-_v*InIzHK+Sse zC~8NLZ$8z21uQ1z8Ns3v0g~K3NG%cOc(cP=Ce5qpfYNTc5rIkf;yT(W4z&l{h4%%$Tv`+O|yK z&5?^-Z|5|Mhf1N`%ft=dxq}yFK_4qkW3kIo9PI2K^}b`i+5Z&US1iX;lb%mc9V!9M z_~pwJ0BHhzknsNA{{F(eJiz4q0ocy%jHLTzW@eH_0_fmj?a4eIE#IaZSS9qD1 zMIuvcrta?jWtjQ+N7VRRrkM=hiMweL(X3BY#<6_J zqt^hkmjkl4@-J?#NL@5}fDxldnrq3`Qy!eI`D+&b>x6ouuC6Zs2rxzKb2BpFfOp#q z$f>tCa>ZdNO~l~FquYX2gWNw43!`OGo8$Q^C#d-eGXN&dNvr?$7T6zvCGoCZz-T)x zM)JB);@vZwMH3#wbhu3=p(%+K$Uj4O%0k=!?tTWaBY97`#pt0}1TRyC$?K`_*A(}` z_;N9TV_uW)^nheuV=h42)!+YdTITi~pYYL};ORR9UdWV7U}SEI9uUz$bdh6Or_@3= zuSOdU$0jKl*^drA8Enw20Y>pZShacxEYbuKb62%h>Elt?W76&`Q^@+@CiuL7dei=u zn_VT*$w07ZfYm33Ru2S{>>|SP8=NqGw%$FW+{Y~0z|ldCJ>#1Avyt_S?oOusY70U2 zi`~%9HX~EZ%G>($pfCbuj|(O?+p5l1o`=b_9ckor*L{l9+7znBnNAj44H|yk@D+)q z@3Q|Ku}fwENDw7%1Z*ShG-C#g+K|vt5Tqb4uLp1s0ORC{1Hjpp3MbApBqAtI7CcLT z$<`LwONKl$Nt49dgUBQafFJ}BA!bQrU; z6S=B77w#oG!^A4dr0s9jvH$!k*8H7hi0hCiM~h~auub2^83tChQ3w1!7Bxowa58$e zU~{yiL8x*83t;x>alU7EzAF1tCzDh2gVv;3kw_;Lmv!|-ExVDhuU^ojJtqtsKX`1V zfMR%a6%Y2ego?8C!ZN<-emGFTfrfd*MLMaD395-c#{r4I7)Z!|g=-Fhl;H75U>6Ai zrmVhcZ)3~WvWX4W1Gj@uYXt}{2qN0o+ z^qm3m1uFdrnWk}F@25^oFOq>5GfKi~riEmVti8Nkrm{yv>C2MT)21{bG{Zv|0 z&Mpf(H%3zhhpm1q&F*Q>BI^c#uV*lY1@#*s$3AXiPP&s$ZgHL zKG0ySyu6AIlY{#hv-`IJgp`fdKvCral3XfrIcQeb_(SIWd}~Bi+=_ERmr6fX;B0I$ zo?MR2s!yX*DAjGG7zepN5!peuMGc@gAPV*`Kb88`Ax(-gwLBLT1?2Sv#V4k3b&n9N z#NM-x`rzb17*IqSOSVPBh@hb0+MFhg$m?tw;`*%T^f*u@giL}(zo?>^XHP8dTs|J` zU3p{GObl1=@_bbyE9je!XJDLxf-SVzYI_dHeeRhA_3kcb+m+8fLoEmoSjP=JFC@LcZ5Rp zBTnW{jBD^$b5Bt&=iwZCblU5%WvaFnJEcFQpZ2|pB3Mmfi)|)P*^Yn7_jT5_F3N(Y z(-!(cGdYWCHY}glkLH|<^ zl8uhsxx3wcr=+i>K-XXkrbz!m+>_fh?}ZR9o0*Xp$3kND<^vo% ztovF{J)8_jS#^4tUe=w+tUZkbd(G0#{oMg^jYkK;|5OW0IgJYJCPB-R8=$F@6cJxx z0RbKCK4|~1^}j%I{|u4VF9)EuK>WB`n<;m7gHJ#Jh~`Pj{_IW*k`|@cdiym+oF4;D zsQ@d#U^>PlzRB#oTwOYJ+Amw>`yBB?z$&*%G_h3MHK?=e z1IhOb^%u|2&*%Z66K%p>a+&wO8y97@2KZnM&T6|FTMVt0!vuQ&+|bL@~j}BQ6g=d11znQbBB@N##*R)-48q%aXGRn zYl??Q?W84Ow6cnLRz(#D!7G++v^&u^7P8JNh13;C(+vLwbLbsW3=g`0V%3IMbrhjh znc02lr@W%+5 zLG33~+x3&96UxHrntXa9^X{Sc$W*^E*RGhJlREkD&V+-R3{3RQ))pV&8Cw-~WqHfa zQ`YeHo^Ux{yBFk_-Byeg8daWcBN`{M!Rm&`;@;Hz2RNcB+8p0IYtp9dMI@llZoEN; z4mjtzRcs>Rn@on_vyOj?edNk{Yg~$o?Z~1U21Fx)P#j}$%M0cb?^PEuF@LYp{O+!< z9Kd|As@4`^;A8GyXz`y)`iaYZMFJRyF0EaEn;T!=H}L-Wx7VvvLRyRNlufa$UTQNz zbsJFZ>RrYKLUy)=`08}BdODhybcv-)sx|2j&KjXES#F5f%Px4wR5?UD>k(PNl!oMzk+%E{QRrnt7 zV~M6|)M71r!NxpO6zeg3CpzZUlbqKgA?fwO&6KFaRZ+%%s8 zF6qLF)R-Rz#xukUKndvSwDU#l{8UBn1c-rkFx#S=)A(7hilZp$z?3~sgipUd&sjrN zbVZh>@Yq-w)7k-Be{&*no^n)8(YPjz!S3y(cqWj@_Bbu)#<9hez|yxzoqjk+G0q+3 zz8X8}-{kK5B8O0S;{u9DPlXEQP)36g8p49aqaXfCAC0E_BUGMLr|Fv*>MDC~eF{8kVHbDlh{BiM!9%u;DYyqJ)Jb@~335BSkdZRT9@CZIq>O)wYKdlRG`pV) zAYz;>`U1f9ji(CO3m!*S|F#!ySRDf@09iy1Ad&n+gi*wR!yix)LDh!co9!@{{I2V> zqK5)@a|z3jYKL)Q#rlzrv1gj8JIc9mxRw_)8cS3TeHV*Dm|&h3+PS}e!bPtwX&IOTP$=}%-g z(R3*Kh%*u5b*;n-Bk{BAmbk?ju?M12n3z(mUctQ7Uh6NRCjO0AtEAw` z=`DV%gTQnWsPYUgJ625pyYLi3$5;Bp%dqBcAfQ zZXto-;ukV*XNG$|?Y+F%3+YM=T>;#t(rFQ^qg)s5;iMx$4z4`%Y(}o6A86#|_#NL+KOZttjW8XOvf`q}aqlF=Lu(5rC;?#{esB&Q z5at3oW&D})uYvpfVlEgJ? z!@Yg!e6re{5?QjyR>NaLzW)4K(7^?%TZXNQ8MYQ0A=;HQ#^Cs;&Y@f_P`k6PEd72+ zVWvq)C}t>${&h%FqJXgnu_xX!>9%>-8J8*3u85<|;YN$krS`>xMMDyAE*Uwn2&9C1 z9q(6A>bC>|sJu`#5F1C*%j@CP-^?s5!@a$1IDK@?%q>1|(^tPQx96mycUu<)pXUP0 z5D*dkW&YMaF#^B+)NDJ@A8>(dC}h<;kh9)oVtt*tyF-=pH_2L$T%+iC2A4@r8kZ`) zggKPDVSwX#7i_*bIFcVrfTZ&2qGE$=%E$-vf`7%a8>c=D!$r9=&aB5dYIhmQ@#>_d zyXa&*$J(8{L5)|q3$5ir8KZc(T}q!zGP!-HGbEJdHY=ae$s-;|zjaGAwe&qE_IidA ziG-M-R_)?zj+=CatKEja^5?wJB&v9!!rZ(*V0{XOp~H{P57P1Lp`i6>!jiQAT!b<# zPP*P03pse<`T3}(`ov}#Qctu^U#4;0}y=?U55rtZnyb1l@Kr`J+**V=^Nv+66H z`55zGy7g_>FIXBtPzMHN`JPGS?AH4%-REwzW-Q=TK*Td!)e0wY1i!z` zl}}dssbTFgmt@E!<(n_NSyd`N0;uFJO}1L}^FdO=sOo;j#}ZQq_xiwF-VL#duH6b`~j@V~F8S8S#JvAnnP+1q32 z5f&XsHg@o-BoE_B_9W6ghOq4e=D?z<2uM52X&~Iw9$0m3E9Vd5H!0cU#)Lb#NX_-y~+f zNwTM`HJahY%#len3+deCaqMKL1pArfAc$q+TEa8*04fe+IK6|lcHZy6^S_4loE88e zj4A-!9=AOsTU*qWfo}?cWdl${WF+`9??zWh0p_e+%I$j(M=Ut4f?GC#*vrqyU!p}B zv8lajKOP51Qb~GqyMob>>s?%Vr9c~#dJLRYcGYqP+F_SozWa~CS{n@_?gjjT0Y z11!|HSsHk$s+rik;S-M$WUI4be4qoB*db42HEHLfFncnhlQhXRJdT`hWck~BYq@wL z{Cd01%-;GqSP&U!z5R?u7|R;7-uX>QJd<4kE~^DuN{IV+=^5yT$X#GRxzG;W+ifCp z50z-;80hE;W9b>_tiE5pPS+=kGvVl@rH00bQ8`Rvh%}9Dv)qTS%$Imt%AEKEr6#Id zbWeATF@Xv*%)z=#xv{xSa;eLtVD*+ph10E(fcD@jy0H(n2_oJ9s-2p%r++DWWz|o^ zbW?mn(?xBKpXW+aQfIXqe;2~h)bg5*-@dGlD%(5xZNWU6`{-_Uw6TSQZJz%a4S;u) zT`*JNI(i*pg<||U0%O*{0xw+Q+^aJ zTX_nd!y-TETV=A}mbt_XE@gmp@l6C}#a(;PdJT5BvSs`8|IqX2Hln8I>&?650AdS>Q62N_v6CQm{uOA))=r^sF=! zE0BV)d_L*T39IWW>X#UU`3vfV=Xiv8%mhwWoC{0^Go|vB~)bpX}|i zk?8`KM=AivQA7jG*X|=f7HMS_6}bbjg9AYM&M6`@H#hgr{Uu)rV1k65w@~m^%MRQJ zTlYNyj0UUZ?+>Nxvg~-}rk(7AC8W0_G0P881La|Ooa3_dtL zcxqgzaQfjTopbhgH|fYs2?KPZ3WMq~y+FNF0aqHoC7vq{31|`8Zv7@|I%p>g=r?BL zOp&mCj;@iL(Cu-lowd^I>76_7Me})`k?)U>oZ1DStqN8BAHKdjpr`%+zdPKFt1ex$6jC9T(4J;!Qlg%7KuKAz*G>r@Zv*||P+^4oFJ zpx#1KNn_uwg2Aml-K^RUOqU&frRBXp)sQByukJr73lmC}el+4y@yL0HI>$VXJI~EK z2JKnB-swtp7337Kvl|EO5nF2pv^v}rF!TDD`-g6O)%;y<{y22fDQ>1yqOduTYwF_3 z`GxD)dH-64^_pu3{+zU`kfc16VoeJcI%Ch9Ev zHu}l@`)Ag_8tD4<>&OQ`r1Y-1{!2@XcCyu5r_V2q%QJl0L@i`{le?l*kpa0zuI2Q) ze}QUQ*0?9np8d@?kjTl=JDJj1a#kkG(5cs2H?LaCEan#fR@$K*u4g?2Ebe1vxit{#v?T(SN8r zTQTC;{E@^@!-_U6C*}Mmi_J|BEx-EOIs3f*8E$(CVFBkIsae zF9#9C5!oyKrPu|H&X`@dWyvv$OHf)K_epHL{p$2m&!SeYm>?PBsk)WP-Ee$)-i`|S ztiJtx$}1zzYx%E6KF!0y9&GDLUxoC|)uQenk&(Dx@7x1Jsq>4oZyYPG3SlpH9o=Ye zD5|6=A(^WfuT6_6T8UYeFdxuSTw$Eyv?seYW_S@_Brt~C`X^0%Hde3f`+G`ae0Szc z-GD0R*D_Me?=RJ04Pi@ZkH1%FwpXS7^M+~Z^h11C0|X~lRpg-E(s)&q?eA4_LWU9} zC)moCosrCuYWuRmLY{DcL<{RL4G9fJVAo4ZRe{zkR2a@CP1rJP@}|yX z*t1MPC*S*oyw#aAu4Ao!m)&d56iV^)^IPrrbeagPpWH(y*sw!q7t3BtcIPk)YgZIIHtsuTWt*(RoM z7N<3j?XfhuzJ^6^eU7531NrRwNN4tGFQ<`WX{C=V>Li7gbQ%Ta-gITCcCefsJg*YJ zUi`shFS)HQx&8f$EACnJwn^+tKWpC46;~kNzsBqBQ`Aq2S=k+35VwchvwcZ2uhp?b z_d-@ol_~ACd;f6sn6jSbmV$)`wIhtJ1Kwzrv$CB3BW+7E5`L@J0Hp04e-QC$tHc-O zi8CfPXT6+@B5Kzdt(mWW`7WfY$g!KehogfK!g3i1tiOBEs^vb=@L8*$Pj(Yi)pJ!#iEqg0 z)2q9oUAA4zC&9ApdaRFkCx5Qxycv(dXY)%{#-E8gH2V77=;QxWK2NabsRXNxtI4EO z>MyEaHn}=m>uTxUn$0O{>Dv(S?xVSr#0S9x@m)!OnOb(<5!tbpX{o=1T5b2WLe>Bh z;t%W;i{P>kyJO;Gx+xzy=Kz4F5uLkQfu-I_U;kxzB((A3Yl zf%Is_DV8shCQiAV`t}^}n@G%lR9tXMLqK?COwpqUMXi1dt+*%Y@Fgo>MsA4tqxr7M5y;U!)U9v+I;-t$r1TL;0e!(a8+^j0} z`u4qC{*|R`*59YML#vFiN%W|e`Lj=#b0|kIpV87#db{Q2#^-B7?5{O9pD*nZXV2S} z>NvGjf7|ukQN7`&;RwF{^(*46o%3Inqy*SL3b}q=XO(8N@1Y7KN$&Ki#s`UKA8Hs@ z*BwpS+-Neiy0&ukieEG5MVkEI%41)@RzT#R9i{!lHVB5`$55G>yhURxuN*JFzgtq4tNIyY!pHHM|(@lgIkZd#v}eo=$4fN za(zSnrpB>iYkMvAUZJwzB1R>2WiBO*s=dB^fs&{rRuBPU+=OBN}(-JhkEW-1Xf7w%BK+Bff2>BV?ZW+uh3SrxT97eE9aE zc=4vUrC#@vl4AEF42DvnC@J++^Tdu?L6h^D7m`*Pe%PY)VBK5OqoEe-GClpWPJV7W z$$NgHbcS1{LY+&mV`jFVWm{eMvP=BV%16G2Y@Skhy)56qq4kt%uCl-;<1Y&Yo|G@A z=Tx#o?0J7?r<_$*uulxH@hn13?|0LphBu{7X(YltP>paxpU{#i4zbqxT3X_ zk4v|}SDV`N4Z+~|Qu8m7zy4hqFP3&8W*WZOwM-lj+&?v{XY~&19)w_`$Nk zzYnH3s_*i=r;gkWwW+9(gl!W?UVHj#C9vJXEv^`IIek<|d2sZmP zH`w*_^5Wi(Zz%D(Q8jL$dQw4$l9i!Jw4PDU^6eyP5# zBu`Ohmwjnx+`Q2ScLvKiA9fuPncneB2ZI8RZ7S_my5A9h(!P>MX_azyssL915(ymoeQmM%3FRZa0DM5e|KPa$38(`gP2ssXctuO4BG_jS>q z${v5owNOFu*aN?vQntPkq3aK}XVyP`5*(2~_?Rhcy~H+GHI>(A&xy{e_805^ip<$8 zk~zo2<;<4hOP3TT+T#m~0#__cFnZuFxO|R?_iK$qL7KcQazpvXykGMBqhi&ye+TDJyHLVF`CK)1QAjwfY_gI+PgU$Q2S2Vl@B?{|Jp+P#`>ql-a4N zs|PSA1F!Hy?b-f^TbSP$$06r|KA6#E|o5*sj92h@4oo%oD2I$r8mi*uRl6kDST^r z^ep>Q-0QN?M^}5%;#OCJMUJGSzH~W0@Tk_Tw~$(k+rV9s?l^)Hgx2xLks$#h<{^;$ zHpS2NbJ@KS<EwVGYY;`Qpy^Xuw#7Oxu zQ*Fiu*DABfn?;uFM%7ER8?{H8r!D!{OTDZpRz1T>{7upoN4#l$5~y7ad!iE$JYv5YmHc_$$~@{#w9b#!smH~)luxf-#*nKnu| zCaVd3z4}B_j_E~V^rB_!(qFA&ygtZrsyHPY*eCE>G?o9}d*WH~)iKf|w`q!P`zaAiFB7;*Jq7_xfg z@2L#J_9Lk|{{DvSK4&^UaSg12svPrfX*rSH7Mf$n`hl$31hC+G-@pOsd>xrutk3GACbT zEZ=-AYka7S{9m`g76I3>51BJl=Fa_PTIO?p{~cdrCzpqdS6#ee2?EoDLpzzJ;>~Ks zFWn!Ct|DzCkR7;QYb|4I%a<>m)+v|W!Adyx-JW?!y_zjhrw@`C_RmLm>HhPwsBYi&W%|Y!H)DqK)M;F z&Ea%Hs#*M#+TR*BQg)7sTZ;#0^p-_cW1)S?ZR{}QIzIscHh5QbZzn3XUBK`|l7jx(rrCeEvG$<+#|~bc{QmueXCc|^TxXmMvKSe{T9G>(LK2UfnvSdP z_tY^ni&l!<%JB_a;l%!YgS9B}PW*lv>I_$NzheQkkwupN>|LGjeR)w(FXcL&mZ84> z?*j)803>(A1E#WEDgGowH|yDQN%GAiymFiJ`Mg z_~);N97u_+r}Fbq++B{e1_v114kNuN0nJ)id~c^a<2q%jA)gvm9i8YIZQ+M4?Ms#| zEC1nWl$4YreAuL%Rb>q5c6pJ*&nRFuDj1+Z$2*_KT(sUZRX;tPD97QfMkp`$Uw8%q z0?arhBiCs!oPdy)xI*czAG2vxjI2$yjkA@9r;(NU&jP;xL*zApoG*o;t}S_sl9P|U zI?oegw}W)0h(JmF6i(#z>m36=LC7uuoxOG1Yi~a$=J8nWv0A`dt3f2iOW5{qqK~x+ zkm>hPzyIB^=SY%8QJ3zBkVY-NKW69KWmGASH@FEW+Vr5>VmNOo+k*u~^}M7*=wr}& zEf?aS@ipNk9WS^d!h-rTXEMqjUGx6@SuMHpu__OMNN``2dY5@Biu>tvz5bK!kB_RT zs94A~qAHr!YeCFAJ9}4h8(K`<8L&J7 za^3&%AZ>6ri6uXwP~mv<`i#~OejkQZm8D)Dd-W>_!OV95Lo2uJ&jYo#_3wxYQ~=vZ zl@#x^w1v7#^C1JT*EVzO!)qY6CB?1i#=AQBz+wh@taC-)E1wPTHO)&H2hGN&D9ie}oB5p)MX;=^Lo~QH-gn zX+6Z7?|v@aqZu(9C3R|H4_5LE4mM@?39n~*EYx|QUQLZO9vQ~NhYzc&6r_*Tfsk?0 zf=RT0{qRRvDd5+WNF7FYReAaROUIE#g;N7xg)M9s5w1a5<)=@dAQ1+_*wC6p`T?qM zwNM`P>EX4U>rbC{NsZKS(uSjjIDQzI_Rp}hlaRUpk!#?6SfE)qj>Bx1T{~O&Y#!o$ z+t1Ior%GsG4U$8r4<7Hdw6L%^dsb*pt2L6mGWBL(bK|XU^M7CCrv4S+;q+Lc>og?W z;7ecM(tkx8LyhFP>0&vL#KgoJ;uesm95@x4{9M0JQPDS$$lHc+V|U<*w|EjEs<^ z^d2I~j`X4Dx@!JL`_~VDXrgV&aOlirq&DLpe_XzJ5mt*=*g!V*xr}kxN(I)CP{=Em%5A!}95g#9) zSmz)g&EY&)42FZv40qkFx(Y-$a0LxfjvP77?t|IatEs8orMWHha1bcGJ9GA|uc{Tb zA|va{Pv(AxNFE?!m{3W1Z*T8Y^{CFz9{QhQdl%B*u5Yh@kl4Sq&*~Qt$}!4zKq~aTt0sb`vVH)fibfsOK)o71TRJtN*o-`-#a_ zv<+6~y?gh*CD))X3JS^vDcgLrKJI_@@L+_$0vn!V(YH5 zkCN+iD=U*BQE2q(R*f$j{C5Rz+(}lg??IZbqm7Jff*Yo$C;FbMZ3I=gMI`AqwYGAJ z5I8+3hz*)h{ouia#(DPpP*zwIpODatNGQ!huc)k~A@&Sr%YGtLHywf+0sF#6P23^Q z;`lK@Xx74#{ZMnZ{3tWJ1<|#n#;JJCsIi-9nG(Yl!LFsHg@n4lef0J9=^`RY=qJP! zt9Il_#k<=)Lzf^NUYz_eKG;F-F8ae~e=BN;d1Pc{czAMsd^vfR1n~0lO@$&=4_51k zF;QY$APowI)?`27I?w%y*|St5-Qn!PgWlSiNL3|I;Kr;QP3!ukI86IgKEYAWnCQ|7p3E!V;{|3nmao? zzkG>Me>!x@{tMk^6Zx6=yc`7U?uJO+qi4@Pm&0e)NwI!RhdpIe+ty>N=Fgi~ERujinNU7CK6S!cl2y+Pbz~ zWu_n{+uE~!xIc@pUHaW^W$6tfL)CV4uUuw&G<<9jE1lT$!ga7eseHB`>jNPQo@QBRiXE4o2Ffd2<7a-g*<@Y8h>q&aQ3 zac)q|PX(>e+6R^?tW7#~@%_Z=4P$~4@L{l{1PwxBVoXg;%A$|LiWq^p!BCUo!qflt z>&-xvB6mSU@WQpR6hn~fnNZ6=w!mY8T>5|x(8-GI8besePt4QL>cAun3WBy86ts6C z3ZI69K<6ji-k|j9xxU;okC>R48Wgtr{^`Nyb2~UVs?_MCJLF-Wtv@MkwcqbKT}Bsc zV65do;gXkALou#Wc3;D^(buCIRSu+9E~&W|A-Jh^q||N;*pQQxlU8a+;Jm0c;P_l< zK(pGEI6Q1ex>N0J9dD{h&Arkbp#8O4{;ecOm2f02ReqL z_VVT4z~r&thv(#?buXt)Sv+vI3-b9#M+^$(xf*(A*juHA3p|5IVNZ`FWiOPu@rT*V`i5c?s^SebqttaJ#Kh9E=3sHle4?;4RY@y}TX`Rmbvw{jXmIKjf;|r7 zr=r%#KsFdcuR`S83L$QK#@ZU)6=)E+TlIp}@81CZ_dWO1(wv~|b|XbQ1-b^V^7r!G zDsS+6_=)zSdsd{|8m*n#`}a_GNby}pYi3pg0tzqALwk>EMh>T&iW+3tq@Qu$UuaqO z1t9*=ZZOZ`D9y7F*JSApms7DU4p?6E=g%i~?f7;hR-qX+9H0F;ygtAeCXE)d-RQ?q zN;!t}T_Xo5SO9}<3LG|)mJrRkb}hR@`x^3CJhLaQpz(335xQTp?lTu=E%3O?U-|;Kk~Y zij(*6H?Cj*NT{W=^r`MX1t}QkW{bu6$!XA9EV1`|FHvj-S>_PXHfDHgC zrwot(NZRS^plnO57vbuPQ4O-ng+7-Y|iR zoW7pZRt^#^&drr0tJzF)?86r)+oQXbdFE7^Cmn zpcp*5-Py8GYJ^V0suWHkV_|P@LQfM&AzDgGDpE0!27Y{w0U=1OqnWg-nwmgrG*tH! z;9&r#6u`VeKtKlMT?3f_Bs1`VR-ze@0vZ*l$o#KFN1IES#pODVJy4#-K|c zBohluR<*LK%3*KIDTo?+e6{b>L;07Nop`YFTY+}FeG7|2U&@(g63XLhzJd&oCYW8UgEscEf;-DIB1TxC^OIG4`K)}jX ztN6-Y$4f&0Sh#W>`K9JB^sRK}npLp%KHdXB%8=|^zVhJOvB`l##WTn|wL(v}veME+ z_f%-dofP%*)TV*}&i-*%+R=P}1Npls1eiuX9KC4wKUaMFBria->P0*t+vDh+IUz@^ z$+4>_A>kFCxsmiPl)BuxTeuy?TDNI_!01eOt-ZDH(7BoZHtus5*LnYbA#Cp27Z(*5 zX{*GSJ=F9QuSf|Ci+^eJJklT{D%dkB;cV4bO=B%BiBiuHRf8PEVE%-%hx`wZyIxh_ zx9h~bztk()ZVKI!^>%diDqMCv`-apAcT9PIi&KVjhF|6ykr6%y+1wWbaX-2?CjxVF za$F~KU29&Pluw%&>^K8wGV_Fa1##Pou^E@m}fE_=58d$%_+1a^z!e8N(VH5c9 zPi17N6>Glp$QxHOKZF|DowK=(Bu^Za!}L3)m0YdD80xNWDT**7PNfJiM+7w7n*pG zTr8_p$*2(&6J%jHsY@dV`pL-NA*};L96BGzW=_=h4foZ{U`kdW?|Cr0j=pIe#ryN+ zFYYgReQ7~pKtNTUxrs@T@7!FqjioWVnK$$1MFl~gV%@7#doECn9*sv45nm!@rVJ|% z>)5xhFbG-%o=A>KN*b-$C7KW)zey*}4y}QrqJk6yg6ad^(9axvD6ktVl=BG- z2fhZAbI@P!$qp$AXrPJhfQQAVjT^7()?xQ;C)Z(>rw_mQ@l;n8$;=GMm{-MbV26{D z(UVY3e|^}Q_F&PT_>$MpGcqzvxeWT7-hTY}(X>xQSh!&SMg7S_cbBR0Lx&Ds+OGuP zLlOgv#-8{Q;T8`Fo$5A-N&B{65}=M1{8T?*Uov5XLz1OF6&0^7of} z3@_=KvKCKY*I%LUb&1EF%_^_q)dj7cV$S1(9yqk&tr|aQRX3)SFqx3-wL2Id78Gcz*nCnlP}6xDxqkf&Tohg%|Y=4Ld*=m%90@RG!$_;`bArA?lep3hyd*z6Y=%)3%xrRRf0Lt zP*qh`=rCItC?Ze?8E@*CnVf9z(sa+AeZDf2%;eWKJ1?tYvty(j2CrbMHn%A+VC=7- znW~4lJTCcdV8A?msLb2jo4lhBSz|Z$UeuSD{{T1s%g4a-mG3K)ESo_bA$PZ&+%F1c z!c=+h$&)9_q0-=&EXG?uHW_T6i$_M{LZ>!$3ph0{hzixfo>jQx9bO7fgW((tm7!@~ zj@ENx=FInke0dM|4tl@zKpRG3HhFn@_xMFK2l_)-fCtioDHAR*K7Bd~P@tx!W|Q+| ze=gD!Nb-W{Y6mXq!F$Y?^dUb0Tc@pBDxedj6j@#8C7{Oh`Z?@lu=uklPv-juZNKox zlBG-GaLGpU{KzOb2QsF5%wsfPZe)i=1x0#hqwiI0S=COQzomyoP0Cs0qeqV#a~Zrk zKd1k8!bqZNwJ^^jPjt(bW4CWXRPU+Hdaw-6y+H0qcX@T9)MI57(+&~}nvK)?&5 zzSya!*Z7sr+ecHjt+O&RHg1jy6frk*lnGW6P>@8s)_y_X{i`gq7lB)%?gi0Lru}yc zvshK&c+7Bau{_ElPOsTDvmA8_}qMgpsZO`QF+3UQ$a# z279VS)U3_}bH-t}U!e|pNL952NKoS0t};7j4(Z7Sx}!TF18=G_$p@iXb7PX;o6A+Z zPPe8Zz~!$H(KB_JMOk|6MArv*rd2Cv2d;?N1JAA~CFP zkNgPaTYW<841v#S;qE}Ql*cd{hy>656s47T0ICH&zn?x`;1P5r4W>qQohzRp3=NC? z!a|PC$7D;Hc3%E-1O3>vS5xT0u`EW{_02+&i_XQnmjz?xWK_9waPd743x&uM`8%8D z`38M`NfSYL?%bK<;m+=`UOM97V@^-e`!Bs&X2iI-xbVh+v6C;pcY!O%RtQQ>`8ZiE6As zgye}Zx?DpLh6U&0K>oQ}yob8VQMpvl?D*-yK3JPX)7rT=H8o*Z!3|yK=PUr#?p$vG zFB~#nBK^eKdFE?>S(TmCiO$>SidEdKSI zHnH8Bn;Q`k0SvW_`%6J^D&m@^)d@Y2494Zsx98@f0sNn)%{O;4K~%a;?V<3Pf#hJ( zPB^cIN4bqB=XH|PzwSkiB9E;#DRu176wHWhlHr&tLpJ!NssjOGFzw8OOOtv>M0nd8C= zrPq)pCTUrwVQ{JW>Jnb;CoAF28>}L|)~;_ZFD!&ueD=%)AOXb7o5j%Ko|wu=>y00p z*twaISZ%dgDqpv8bn>a9uaG<9^ zEF=WC!%*iEY?e7y$o6Ca%Y>nvqmOS1gia4W`Bm%kcPt>1V8t)q-SgO5Aj-)`Z2!a? zw(3?*JcV4ZpTo|%=f$!^43XpOAk~uF6#6$J<`~$#`GAUw#RtB`mey973=Aip*Lk3C zpcLCqEatDA#1_rqj6m#6tiqcv(gxJgLBfYD4^^O~XY}7N z--fk^KY7ymfRJ&B(nbBgx^#CgOp)D{ zk7go-ae7l0eh}sc$Ekv#6<(8*lYP#8j!;Kro~z{Rv&GtiSo##WmMe(6z_*oA;dN@)Foo#4i$d?{(X?4`0o@_HHpU|hEBHd=#dEQ)WitUTJ1##AFIt| zBkhBgqoiZdn@fJjTApcf*Xc>fTBz`o9=Ys}o9ZwJl-bSo2x@%e&b)Hlqp&PFwEoCD zG|f*#%`gzIn>SowqJJ(g&m}B9)@>j|{J^4j7xNXn&oAJ=;zd|?DPI5%9NoN|W6qvE zOEV+^g`{MIaw12MsHkiP%C9Gp?W#1%2uX93lfoD;3Xtc+;n03B)*KQC5D;!*ur?bT z8@sT$IoHd}3zj6rV(3-_rMaz}G~?Ibeixr!UsEFqtq!LEe8IWr`f_5~HNJt{!h#cB zN+mmf%u%G)TD1al_RBt=;J>kgtm?BJpHA8}dCT*A;42O{kV(IARS+OFfHzK&6aAM~ z&;$gtb5KRzElvPWYe5Cv6sc3$iUS&g2x~6JzQ#EB7?UG)x`~6*XK6g5t1II;+$|=N zh6sX0Z9TXxewQdvvwLrBG20`Pks$q|XzEtvA*-n`ZJ;1FCVjYy?u0PdsKT=G@UYN^ z?*N1M6wjA@|5*mv58dGEVY|_HC3Iwa^Y!I|$HA|2=16=033>jdFAVeferdEY%8b4$ zi_&Vg{Cq&}s6)p?GTZK#08><18k3yHzKNara&bSQK17eIKft@wYf^R{S9R*f2bgcJ z*}12?C{j5TBseTXCBXwnk4l|TR_nQV{w+p9}x&Wi5X`@`roMkagO97YAGfJ6#GRPJP7d$9S{I%Y;j^Xumm zT~U-fFL>3==Q#|=5-A!zKGSuo+||^`=xXj=LHz>A2QtqWg?b)dPA#1MW`>3uh`B#o zb!U^ti;`B_;;(=P#J}a?Gc0T?Hj06(^FDllz0#2W?nhH0J}wisGkRk8`fih(8MGSb#xq9jbhiG7QylNA;Qvh0N;vv zyW}u2?~97jkH=YiZ5z4bYJxc`Ngi2%^b}~q0PocpF^;p|CPh%4~F)< zNmFJ#H+zLSKhw>eCeHht=}6b{$XU5qA#0F zCqHD8jmWBoOAvJDiY@nTQvLlbySp-O*`^~!h+sLK(Q7)#$bQ8ZWi*~JjSqzHS#>5~ z5JoKA4tpa8x1g37%kMjazk3>TWu`5cBa?U>LYeScL;AymkEcBr@F%U778VkMIc8qQ z1kl(#JsER;>|uv2nzJx{*4$$0LTC~5^`sn~Xc5ejQ1tI0R+(!nuP*WL-D*jqz#^E> z@TIS>*s23zIcf~Sh&3g9lt9LsLl9$-k6IkiP|GW>?yZz-@93}l%c{FFq)TqwnVT}VW3D10IG+6Ist9?WN`a!Eqq?P<8V~^ zEx{D`yas@nMjd&6e@Ih2I9hSC^Kj->FZk&vpv+cmjW8$-!R|6%{gHjMe)&{WGs!X2 z&!GocAsJ{2Zeb{5ALk*Op%3nG>F3XBK1X7YZRfsin4TcokHC_29h|S z5LiG!fd5tl*xLy@SWm6);(nMctB@*Y30?($!U4WpjKJi?MaoW```RAvMG_Pad>c!d z$HGmxP1Xi5>T=&J-n(E)pD{8rLT=?W^3KdFUpySrbatL9@vuWx8yIeU6uAVwNzI;; z-|{eXDXt&MA-4WuNe9@1r(4;%Qx$n|5cdpjHNIvGy(lCW<0Q@dXf)t09L>C3tJ@X@n}#Dhab z%yl5u6%{|q3#7-x|1L8o2=LlPeK6fGOBY}_Tr2e4VLUngMX^Jsc!QPjU8Y((0ng5u zX$_5lL2wYmfM$h+grNTf(g#1~++fv;A)srahaIs#kpb33#s)frFg~_2jg>ll7k-6p zNS`^95Xj8iufUJJxofn|6_^v5_3^3kp{R28D9xeVU1@-;?RFf`zbm*S1;Gsp#dXVd zSdTBu9Nk?(R;{O}_d70dTqDYOgfV(%wET29GX0M;Fq#{A$<0o7~0OLHIc(NGz5Jq?QO{q5{rBMc!Tz7 zGcy-4ON1ep0YGGz5?^P9_z2P#*8Ue2J0_FT7UKB&E;7TuPx3f9EEdF3&+6;bq@z>+ zTj-;E2?@ft-(8gGM||AwFeJY9r+tXgSxvq~91+vqMo~h;ettR*h7bY$>(S3<@RK|d z=5DKCjOK7RrQ_5Q>Li5-t{5BkSCxYSHr9(9yA3;9Nr@m#v_M09(SL?T08i%n0)ezx z)E>b6V6YP*v5O85yBLi)?m6M72gzUmf* z$z1x!yJBVl8ZUHweQ_R<3t9Z_m2quzJnRHCE}u7PM^2h9^<>`LjZxaL?Oiy3b%S zr>g{x!phe;c+d)@IoMgsJH0&{b|F;h;$IkAwor)F8RE$lVL{mn7H)+rgfxbC0Kwdc zIWrBXg+)nJ4;n8Lfs-}vY-I4&)WQ4E5UV;q zU})3icPzkART9Z#TWz{&q5WeVkDonb3x&*s5$V7$2xoqDIX_(KX+BE?lZX^+&bcAc z>Z3}OJurHHMh2_PnIwAo{pxm{8Pc6ulJj8SZDO3dO|2FX=xfhzlO9P1bOSPLyd}pz z28mvWbOHwhy|vT(c3WEZd+>yaV#iCAB%+X$`zu498O21OsDL(sxxCm5u$Y%~w?6F{ zUDOef-E$wGAcWGa1gibT-{20RwMHO+b{qTC`<%^3zcxm4d5U*Fn#-`7m&(EV=*;H2 z93H9w4VQ!`;e$^huq@V{{^o}ijG;sr+t~5P(b07YrdnOWl^)1DB_Cz6txV@J}u*ce1lL# zx*~&Zst}9Y^lbsdiQlNl)`9d00F?cr*!Wqvhao-@2d=ufAK^SladJ>)3j&2r9o7-U z2i0032#8=rO;n$7qF#Z548|5Bt*B=tbH@1}B72dam0fyRcM6=M94tPB8c`SUEn;i0 zZJYaN7DHf!%Xvu;v=_7lgv5q)Sc4$T91VluQh=m$85-Ouc1VQ*ak)41C%1SL zX}NkCl019zcOiUn_ADrEyd0y#woVv&ou7@oeQ7j02NX4ReQN>ApJadkucgq<3Rl)1 znM}>MLPK2rUk0j>S3d2#j1{5~sY&mK^)T3svfTu^Qbn@bVj_k4U+^Z&zXTbrWqEfBL|vI`{3zN;M8$QG~UT z9o5X?1tg2>*Z;c76ImeSzjI(=!u)^<26d+b(`TM@5W-{7yOZGIBY@OL)z6$6D4~(H z^Kd09Gp1>#zFRE?p^Qxo2n-~}_%vUWmdz2Im6Z*R`W6t$TNzgJrA_29vSz$AEQzS+ zLV1_1%YA(KW)Z~qK;~+^{`*y-MT8(CQj&lUYBF7CXxq1Sh2ZgQ=-pD(1Pzk#TOl$n zz%ym$fE>CD@E;B57eoW4A^1EHFEZ|Wn#7$Qw?cwhX3}E$GHr|PgqDjoAoDf&ZW5g8 zNCkh`@m@$6l7hnQ%ec87!6sLiZyw4{_ffWjksK*LRRu3#TPFzard#_T79bykHo-Hn zimK;$2pN~be&fWuz5?faoe27{&^->LblFksVmaw=x9E;z-%Z+<&(1A&S%gw>fKp_$ zAS5?*E*a2mS7C^h%-B2SX;i_a!l4yN`}&%;;E#6&n@K_^MC24ya%OZi|E~;o5)_I_ z2aWk`E|46^r;TL`Bq}>GV*(svU>qB$QDQwzZbdZa4&>^AzX&zV zUa^rYSFQ|kogT9TI6NE9VPNP(q5LR|2PlQqGLS&aWVr9wC_fee;vt*$UXS)SgQGd& z#uC`$pQ}O@@jOLD)R#*+Skt@|Xm7?9q81HE`j~)NGNzf#QVMAty+)5D}95XMd~ zv&+{Ds2!36GE8xiV%s7V{1@kdX-LSEA@&1yjvt#u1U^iu`mwf9T@{tTLSSmQy3UNa z3Z%5(H+O1g1q*sGxGC-X(K9&4EF>(9v|PS!0(=ug<=6-ykXq{!MRJq|(gXfLh`w&V z{Z6t!n+3Q80fUDSm)nh5Q2_8*cO-LmeEIUljsPA=8>J1V{8r}Z*kqf`3_OH7i#H1a z37vK(iUmgXAfysLFMADh+DV<0qW=~yNIp?c+88nT(B|36(f&-5*F5@$gNa=-X=n_2 z@5s=zs6AWGhluE}4C22~2tlg2qGA;3dzZny1~k6xmLR$*#%1U!$ruRVbHm746rnwN zh~)a|o_d7u(3)da07V^yj6%g{kkBS9y|nL((q%=H2vYBWa8wgck6HOs$KY?wk`|4Z zmXYri1IAs%P_&(@rai#_mn@+m39QV}Eux=uJ$V593v~R|1x9xsgqg50wYht6WsUJ00?t(BdXv95b0`>whGea_DMmkD(BsK8)nvsl=^rz7&q@@BT@tlI_ zbtiDi-+6X4RhY!AXG3%h6*I7A35V9>>&LoNorjw_K3pVi(%>u;cnSgz1RYM*W~KIfw4sz+Q5V#zURG{nAPN(JvmCw~c`p*F-C z0rey6z>1Pfk=1JtQh2>w#7vt=Wm%iO4-bY;)U>$(l7lbwHW!S=SSFtM&KuIL%R;4(nbRK@EgIpdTb>p!|HM>30#Jgzd6TqRUq-Q zaJ^8NnV#xH)z4_8NaJYHPUc#q#Nmai)EDlASGgS46Ya3__5&`Lnd(qRPnB#7*ix>e zNLhoR>ZKm>Lb$nlFnPHNAFtMe=Bc%*Hofr2!m9w`#;VFQ5>C8>Ih41Ex~WEpqSCZJ z%s%+8H2d@BTZE8p07D>UXH9<{@)&G027>?h+0IMLbmr>AuAm=C3{nU^C3@#N!jK?( z5LEOlg^G?Me}UyPjp=2hMLQpb6G5X8?b%pmGIyX?D+a z(jDM@V9SQ6TlNk?6kX?`QahM>rnAvd2C=3qi1)*Md@~J185&1JnIilA)D9nZx2&%^tKkAViAY>u#JPvI$tRwxh}3mdjK}u$2QzDZ5JkNtC7?Na z3?ANmeRxOo<9>|lw2TZFuM*)ko~kMh`lAd*(9y6oM-k?PN3XJRQBTI`Aqc$mF9F7D zktt5y7Pl2!PhAwWY5}r^qckanodB|N4}N#TX6jOZtIDUbY#wRLudf)vJXC9Ilp)Tb zkVzjQ3Hs8yflvbcyfM6Y`}Xa|hZq@7>r$wbLzZ^Zs}CcMQTgs>y+j@FcPCyimvM1| ztpAx`GWC^_;e|Uzmrfw=wg9p0jWl7fOdDV}W|nHT z_4Yf&65z6Wu<-0*kS(K#5IdPDjUd#P)0Ae*dDww~lrCcX>bf+$5~ZOiX>MFs^hX?yy`7%`0)T}=WmG5GZ6{ff^b}|c=ZkkKCM^?MDSr=_5 zNSMz>^DX}Q5(3%GJGZr6<&8#Z@sE0#?S4y%DuIq^1lD_Zo8dtqACAr< z+bo+FKpF1FS*)Olppke)WWLTUmVxy7_HFW4VVsC8zZkN>i1TeTx<>h_!diCN(FYJI zCr|gi|A(Fd4@SZo-TcRQF=-r~()om(~Po$Yb7&Bo31fKT|>(5r@qH*;LAriw;pl;`jF2+Q_5B) zzK3-x!8~R9wAT?F5Iez3*+<*N)5Z5U13)Bkb%vX9(CDxb|Ki#nbi_q%ka^}SGc6m$ z&4hw5f5m63he|iYF{61VH$QMI+y!y`?e*#Wbhx9FV~wC6h=dx+x3m3lhi}0wk(498 zHU*kk&(|(97*^O8Ip5Vb_x<4zN0`$ud?_rDYW%T@9=U@$%yk}obKA3LOnJ=yDB{y{ zwliHOC)pVCG^yLs3lm~txNfEkU1FOQ2PxV*IiD&?uj~5Em*qMx6jc$BhJM-lFZwwk#@;XYA{qzQrg-zpi5x#)94$qiE zld6PpkAaW+%wo^9(s&(~x-?$yIT>WFxdO6+lFFKudL+R_W4ZIhFfCm>Z+l;9_B6&&8{+rNs#M^1;M@zsQ0duENZly3XBl#Z{U&GN&S_zwGsW&LDq4mbh^hf5? zO~1bvWw;qkm2huSj`pUV7E}Zu_Rdud`VyfqxLq+wmdx`e^+1ojG&;0=HhCC!OlmcK zp4C*F>lq?du$B9fwYG^C3Wcto<5-qGuTCS!f1qi6F2iXa%27yYp>*}%apyReWY4qN z*gV-J5r=IEOaIUCLf1-YEDK5gEOA6JD9m(4==9hXAGE4 zv|~FFI#o*_gSxCVMFeWGy`+;9offw+MtHESZ$@`9s*VUm!>sg&54qS;?0~XZ8lzOU z$O_YzDEgIpyr+gbOZ5hOYb9ul3}hRnPmu90x z*)#lS_EY0Mp~vwBxhq5koIYF$A_7GmbEP0Pc7bJ^ln`25OKz%CwxRDtMa+N3LO4y2 z9%CZ-u8A3K>ajD_sec?Fs+LJxM~j{n>Ac9Koj{fg1&aMDjFjnx@DAuJWYmtP&%T0# z`oW->2%?_RT zpL=l-%DhAE#Wc*Ifx*FmrLAG-)%!K~zy%XjuGP|v6Gb8??KBwoN6)_e@P7vU_cWO9 zdeW)OU8`;-ZADkLea=+w(xa zjmlC-D=jZ~KXC9M4K9c+-)32N4LqGj%_Hjp@b{X&9~F)PqJ7E``*l=P)&?Swo(<37 zmLBF2#|sv0ph_>3!@9a0d+-q~8fk=l%C0<%Nq?p0+0iHc;K4fDq`gizb@OA=c082b z?m^gL@g9WZX>4E<%3Tn0Amuv! z$*y$7Y>FsJ0>|h`s+&}}M_de%vXpexf1WMMu1qAVnBs?>roSgP74K!l5-8+ULDwJ0 z60trRyw=)^dMI?w(JihRG^MzL(XD`z#PWSsM;~~cIfhvk8B!FD2_21(<%Myw4lfq} z&)(5#MEWLo!MVumzsd5@$+VfgVF~qg z=x?a|prja7=zPX!_C;;fbc5NAPpx|FF>s01vvl@-i>dD;v_5O2sP~yPsSR$rewwyn zR4rW%ROQlvBki}3l0}$*%6_LrCU5t@gI!0>A5EYHhj1$itLFR?rccom717DbV%On% z5y=#GrX>5F3mNGcb)=J9{5Qidi59|5MUM@eTIQ2&*l1o#UO#)8_$fucp`W_=R>h#2 z``B#vmZ+8Ae}`o z$`U97VW*;ZpUa-jj4h1ASbk(I4~p)#@mJu!o+g=Tyb$+V^WXEhZC0H9&XlZddEJvA zF#ZbuU?q3NG6-Vsrx%J`z(cl|oCVBtoOfG!N?g%0; z5&QqlL?1WhlbiVd&zaoZW~q|%%W8MK#2?WdMcSaUu-kURD3^`?YDUgv_R0#R@s6A4 zeiruxGWtB~=z(e*Nl5^M_1^)aX}7VAN(xlgpor{=NSdqHwawCwFz^X6@Md=1fxX|c zfbXxO{q4rIm&JXAhyh^=7my#@Pj9oVSVD&2`;ooLPi{=RS=^73$80DvkM@`-9y>}N zTSI@0RM0L&1#NIc|IEYF4Ey%}Wj*o5EJ{U1=hr>EFBwIem3MZ;5B>cr-0fG*zv7ps zybLeuWUH|mo?B-2QhaNf&8g~+?!iY}*?UZsgA1N@J*!R;QrF~DkBZVuOr03)2ffw4D(x9IFj%JH9vMuYt^wnK@)m^vh}oi~B8*^J-Iynj}AdlVx!? zf+)SYk#gkZC;!AK=SXg*LkIDo)c-vAA}Z2jprMXiY2e&b;RK_m&0AV|Bb}yvV(u5I z=4{YCjD7e_NiiWq%3j{B7*wv)W7ZU}V00wivLJh({;${7#>O}3?pEYu+#_P1cKj(0 z_a!B+N}jxVh_ZOqZ}fjaJjCkxMLa*O=_NNH@NX1bpFingKh6wu5gim64Oa#N@( z%NV#UV0PonJQil{mwHNL%U3gzsrmgVCCII^!zRY{_EVP`bsb;w4sNrQPQQ1E#og|u zg4vOm&tE>aH(wFyl)j;vL1pXzY}AUau^wA3Kiy@p zCU2O%Wbd4AQjzDo&8lu*p_OAl^^&N0BRUU%zXyM>-nz~5krerfLg?g<)vWkw8TpB# z9ce%PhMxq;Pn5_W?Wdk?mV19AKT&Kz+E1nUiHMG$Od}mXv67#TS(965ul1MFujt!z zqyjY{c5rZPx;+VP7{k4!Q|g1A3)4{POsp7L#nVkUl@6?EV-4)BA8HDDbbX+M_Y|AG zf;@xU-Rtwe4~DJMw((-~&@&UbMHR7&hH>nR+kU%Bv2QkwkG_c0UImwC^_er9~Zl9Y}KJAunI2 zz~cU_T?^#;97mN+agWzu{f$Yq0r?0Un2|*(az-`zTlo9jCA{iH>A0=KtN8HDy6r!@ zvg>amP8p6|wzSHm$13JK4bU_;gVW!;eAtOpl+MnT z<1M5>fXpkqr#NbrZYGYi2GS~wlD{OoJs6oT$cDI({xZ>bD@m0Z_(FuE+Ytz(!xHs# z14LWMMsrdE>wkYnJ{!`r4zh#3&3}(P{8-NZ2r@0n>#q26Grff`nUzPOv9~XQ-S#)< zGN)xem9xJqY+5xrHbC14r)`$&S7JST=(s!?1K0X!06}~jFCIuD%kj~LlBZ6}V|MSj z{Ad(53Mrug3j32HsZ>srOe>@n)H^y%h?>%Z^s)*VeG5jvOeNrWM5lsm>+DTLDXp|MeEarU`an9k;HKN78*8L69R z^4~o4DB>mK^_3${apq1#XP9v#uF|6HbN3*+H&e^h%mgF{#;@Ob87_C@nwj)eplj+W z=ZQ?*hl}&R$8Wyaq+^?ZBy@(xj@+3Zq~u`L zSOm;9%BSCR3=3PTYm0ZuC>V-6ytW0gu&g+eGqyALDUm$Kba9FfcyN$%ELTq- zV`)q8GiS5Y%-o_hwuU~ktaG4fGY?ys$8VewkUhI7;xK4_py;iPlR<4EPP^ea!?KFh zWibHrsL5fy6qoYvkFf!wi?9^DfAepFqPLk=vAT8Q{HS;3fmvtoTCK>o7uz8FisA$A zE>85=da7Guqj}T+qwA}~s@k4FkBOiH3W6Z12uMhGD$-rjA>Bxe)G?3_MY^StknRwW z?rx;JyWiRe^>@$r-rIlNZ(p3VV%GG`n*G9G^YwxXu2g^lVpx7GlrLb3GI~hoL%L%+ zrT%(oBZB?&&^9?W;_#ngp_qX6#{ED#kQ1k^ET5&zx#gxaQxES!)PNatxprlejdzAS9 zC2^9XyCzdF5VRI&#IwYcOX=;EH_d18 z$o&sIS>L)g-7izJ4G@JRk{F$7t|o7fUnj!7Yp*Z@IprYQ{TQ5FidRs5#yERQ8bCA& zQuq#jk}Cce9ft{CSB(1^OJ41MDr#m2JD!KEKp4L!lHBExZTP$4truYN*}zs?0Y=|g zeEh}Ei|rN87a*a|p08lZt1iII-3_K3~uX{`J{xfB`Iv@iH~FuMd0WGfITQvQ$R z`*l_;bVns`)^x%?R^z6}Oo$UF0U-^NW$?O%#9)nyU)ii4_NY-%L3GPc&b|4aS28O3 z%1g^AfH;+2fVei?d0=Ya0Ox{-q=WUO$^R0kNELNaTL25i8zfsu%8;n>R^zk3G-3>752TC(WsweVm}m2Q z=vG&q*Dadq@||yp>3aRi(XoLK%#VXKT^f$LLW?98MR&HZ&FuULzfoz4!*n#mN5ac#ajX_QVnU5Uz@G|F0vre>k1HNdY=DvI|7AD zfRwsmX;x+{IKT=2OC-uplMnohh%d=rS9X%XHc^qbS&E(hm-uFkreIfqG)jy`n&ja% zvpG%H4RSf2W^rHxp zha7iirmzgw2#B#SuNS5u1yF*NP=j;k$!0L(00UJSz@!Om|D7Py3@j#EE3xRxweX&l)+=o13e1Xgs^ zU3Uqgw1klko%RJVT=xf4U*1DZ>In{`0C0c|9TLczzf%mBaz8Ug86Yaqy%;vNnTeHL1>7-8wp@=$9#&pfWRn06~Y0CB=CW?Mu1l`q=>ht@Hu(=^#^?>AnXiC zi@OWV2BQ5WNTD$PTR=QRp$8K{+K>vNq+xzIBfQ4*+-wUhgv??fV?Wdjac%LtyT#yW|aCwe^tB{j{^L39^kr zi*0c%6v+L8-$9Dze){GWB#uyJy*}jV2xqGnDMfNi3=4FehOGNk9!Y|@M(~R4Vhyr^ z==KP(AcUV>po3eI00!o1Mp7@wabEJ6KuO0GX(HBJ2M!XF`cz0~w3Ff`PbqJZe=!iH zBmukKFKS*sn_e!lS;ym^Y;~6=5TXG;y%kE1&OZxn z0V!1Fy*3$JaZn)cc2-E2(9m<4cMfDHBbGLxYUX7H|lQ9|@ zb{OCImD!cyB>;J$Fqn`K79a~S2at4a1FsX)US}QQ~owu&h zE)N5%2L`(z0hR~(Oh^AU+2QZI>t0nQx5X4sZ8Hg1Bq+ob@trpJg^p$;7N*T?1xp7p zm`+vHz5DYssv`66Xhcv*Q6*vRW#wjr2pND_aXo{ZZ0z;BmC?uNT z6)DK%ErjK92f-TJ^k4u{@cLh}hF|WgdsPS44YnWxe$Ua&j_e}w%Yw)P6kNGbFCr0) z=*T{i4Dhk)o+C)r6X3uc5Rp3)UmT`*3HTyr0GyW!hKdXOFXxfWGh2B^Ln4{~Ga&We z7%&0SK?NE{u#+Jil(;Z}uqEIEAp1Ivw2}mO5mHYEC>Gc*c*RD#Z#@%4j?MyA_P}Ha zfCCCb$0lGRpazhAoIrsH_FiAaO784fPMJZ=1+h$I&xXVjgiIMAe88O_4AvQkk7B}7 zfsGP(18GxA0Ltf`epEEq9u%L+l?J$t{%Qpu{jY5cKk2NC_dg1@Ds%=RNFcnn!T!2| z{%U0VukdOFw&hY5h+DhQb0Ub15jyEpFd6~UXxyE3q>mAZ-U2=;3CJwN%aN$DwWp3$ z5dn}Z1pw3lfI1R@831s<002Ue1Oy=AC;zo);kN)l!36+BEoA^83JD;iyN(p%Qm|z~ z005j2I5!f21OULg0C)}nhylPT5<#wX)sYGy0J}r5GDHAC>Lktx0MH--C;))a3jlzqxG(^KJS1n!MH!srNO28!qis9i=R z(a{Z(SC_$GL9iHrBAkUqBs=xVH!pz;{Xqr@4xvAuAORSInDI}9f~f;oK==v9NdA5r z@W!4YNS_yQt^yDv$Sy)EFew%;SR3e67!?qfiAd3t-f(jC9fV0Ja~l9akuedZ&|@m_ zDhHu@4jBA1Fw!9L4$nuzV<~X0NfCM!(lM|;AR*DSD`32UIWYdq zps80tWF-(GI36>Dm_2X`0+I6bGNuvif26bkuuCB+&5w^H#wCrXs&8B@0+1w}47?)y z1O>oFhhk<^fLSVlU+fbWF1AqrIVQfhBs-#x&KFp_C-3$vM8BS~)G zM=K$IJ!c~NL$tg-=rsUB+awI&-fSu8tJ+)(ItoBHh#))ZJwQt_ckb>la9P!5dUq{5 z*~^1Dqs%~Rn@md*2y38tKz56;!(sfj;;|1GXUq1&6){|k2#$gR4j7pk_y`#oM14VW z~zT(l&XT~xt5sr22S8S-yhjffr*))J}Ey85T0FryV zKYn=dQe#|IbM$G)toz!QwS!|97f8V%B8G5ocF^^qxxr+Kwc;0~n!r?pAZWP)u><@e zKyln2IOpLDrY6CFuDb|D6hgV2Xs$nB`>g{)^e%$@v4MJk?Sj|8{)!_#D9Z%*51vLi zF|h^vyyb*$Kq6*A#PZ2Ni2(@5M+g%w0LF^*2Q#T&@HPnr_>#b#x0l&urwxjsUZ(y1 z7d@(BQ{eb6R1kKyv0Q{;_+6np`gK^+1pNZvKDGbJ!hqR8h9K@KVzzSNQ6ltK;)RVGNDUg(VDRKb zg8u079VFH8actkxKwglffV526Jr7M{JFcfWdN#*k9ksx!fe1*Sa2=-PfdgZI666m$n$mHRAhid+>v#SR!h*JGVV0;3gU3+Mmy5}?6G5mEp^f3pkYt0j@zNh!F$A~SEZ#7= z_ka}9Zm&GJGmQAi1hBJ#sA5DgkqD5^ur2WV*Wq(y1#AFy8)Iu>?}9qT|Ct8V&X6Ef zHas6lafHe?xe%a%HqiA3W)R~DlHyzhpIC#ER^X{k@w&o+F!~Zb0JjK&S6^jtkAxch z8@)5zxJ!#ml?x^4kOMBai-7M(FoXWWr*R+9(O`N%V_jEz*3BZYVU3?bOAP4Z+3YKj zd4;-P0*2&I1}qixU(vYmKhf9){v8N&m<;9rM>O6thBD*YFNlWD%3^spTROK^!d`qGBb4&b(c0;0kh6K2bInZ7Z$-|VonI9xehF3e{gfrE5-uQ#+W zrpe!*6hn)IK+fBtdh1IWBl-`m1SrA%=b>i@VbvtaXVGAM6j9c~zC7Y!5o!t~mN`JR>sWcq3ysLn2{!NVqHW*e z-O&MhocFV7uD_ieT4QW4ZOd$9g=Q87LL;sbEcmukK~-@A6V7e-1R*=omOyY{vpv|kV5sLny=#-`6KGfc*VOt=8^JE4jNrJt5CDBM zdo@y17i~Ha9cG7&5QO_o&kRPm@!!BzCzu?Hx+5e#EbcBCK>NQl03-7akXArBLS|5E z6gXt0#36PxIeKRR0su0D?t>x`ZKTd8Xkda1Ge}zxS|Vfyxr%{~KLBCy$>UMlfwP6l z*smURr<+@c@&=GqKtAtw+~Jxxy+1n{a`S9?GH9F-*7y}9V~r^J@HD7`-+H)=6Rbq# zg0HjCfdlFNNRCdQ-$1lz>xM%(hFEiLw_=4uk3RvAxE+eO%5l2s%Z4mZhp$Pe(V05*PRnd!B8eJ5H^L-7X~t z)EOI$+XMs^6~a$E{1NQlSM8p^2g9m;@MPYM( z`+*T1`+rx)bHYIn0MP!R8B{Ca_g^V1E&b*}qgBcM_vZ+gQyXM4VIoi&)K{yx#{aFk z2izS4_i`V+6=Qo92KpjEeNw>>1Mh=4lo*1nv;a>80*%VAE*SKH>m9mboxh~WDB6DfrXiwFB*FVsDb+C z1e&lyrXrXRlNb;Ruwwz&y8-Dy0>Z;26aUCdq!aX}2&Gkf3DvfMj|tftT0Wlt=JOOn z=O*C6CB)f5xl|Yw1GoNHW(L=z)hsUt&58C6lmfQsL5m*16F{^;HYw~0h~C3shrj`Z zseo6}x1KLRo+F;i`2`+VT2i^4^LRbMah#+zpjhp~0jX3%Q|4FdkEdu2< zpzn_mOH?Ch8Zh4$34If23XGqKaLx1}uSgHn56=YrBN8vr{EZV_s0JlM!j8okWhwjw z;G_}O8k`0wGRRtc7llU%#sUusxr157yeZ$ACTuVibXb}$kjGeGT5{bq0iyY?C9K;H? zdOFH%V`6FpWBg0|@WJx(`Cvn>x1_LJ2I?JEend4fowM0DwQposo~eQ`GvKldLoX0S z=n;lq;Di6Fem#&c4I~A#+DbF9Q%$doj^hF3GecsN8|cR_EEHM1l#~4Duv`PkCIJt; z__QIxU&VE5@e)j%{b|{5eM8YX(EAF2d>f-cL0;SUGPWULYuH7qMVjYcL)a*n;3r@- zHVc#WH?O1>>P!B}^+xo+I(LfAVCP*BK9A!q*sYEQSayjg*i^M3{h3-nX&z zpB?}!VFaSNF+bIp=?E_8=-+|{0u5~gdvDQwFv!dd|8D}4|1Hpc90B6!_ECd!P1Xl74u@ZB@HZV}n(unpKvk-_J@UmkMF7q=Gr(E)>lAQV6l2OyPdejpiK|49ZgNMa)>qpNfU(G-~%2mt~T z0tiDU5UK7fQLwkpv0&RzI{{xt1cJi^mJLkX2n=U{G~9a-3PvCq6sEzTkpH{h|AxQf z&cHdog}hS!-NJ(P-nvULNFy))H^;#r4G?n?+vywp6M^rmD=F`jy8`OD^a+sTJWD{w zYR5u5)Yb#_6V2kcQP{5LYVT(m#*Pr3E)5bky0`oLx=J~$AFa~4=4L+XtzPr5ApT~^ zmAhwizNRtaTEW8~1CT%bU*yZM0c;`C$MDIw2ZnU6tKG3xnO?eSq+DwiI&Vi%610}r zZqL+6_g5TpoHjbd;Lk**RBpyEVqq*F?#5f5v-S?H#k#D^rx0;jEm>s}YwUf_&i9xZ zvl$x4=-O#{z16osoU4N)2=CMw>wKSYxg`V9A`61xcJq9C{`2#8szVj z3S3_JDX`in%1fQpEEVciib@I`tp&ipUx&~Hl`k8J-@c`PtTA9&GCM$u*N`>5)fE0N z1E0xZ_?2`ec3WAc%@Etua+_VJE0+6fg$bNRt~SygCp!g7)zPW{EZD6IzkMW{bss}?FOx?wVC9=r_qERtHXp}I_W0^lNsU%|6g*<KaRVU3{9mg#_a-VNFuEle$xtZLbuQJ?Q6qZD9Vz-@) zb)Ji0%5uq_udh&2-|I*jv$Zb2d9Q3u)#0dSeSIMu*Q1HAG!0!bqCHl#%B)F==uH;4 z>v_;^H>c&0>EkMls*1(@erjTj9H(>KVYl*?AE!|}L3ZZ2MMgV7v0U^E7{&jxQTcsM z_5;unz5f+Mas7b4FRaB+$zHW0ECh#>O#WuK6pvRcipI9}QpM)wJIp8UOchix&Bz!w zWV>yRnHHWbu3|W_y6j}H4_P05#LO1J&Enb5)t~U@eZx0;VpzqyDlYu-=y+C(hT|Ni zmi=7U?X1R5RNv}(Smjb)gL)YoQT}{Cb=7`S(0-&9UPv;AR$f;^%BFLUEvk0s+={o`onpuL=hL@0)m#q-J#dM54JN97 z%Cpg_04(3C?Jt?m+~jIWKK=3JR)?|M;rW@KYhzL6W*pB%>0KqiYP=X22`MdO>R*%LzeNTxZ+u?Ao${v){2#`O3RdRx5R9kNd|6YbdIYzh^sB!h#R0 zl-g8rUGfGCT!hc(BO=KqO^motKK2h$MCJZI&{a!eK0Ibd;p8GRJ>MMTI~q}2JNe~b z{Kh(w$iNP5n-VN{mR--eVLxbBp_?J(lNjcc;dboDJJ zkL!L1U#af>DugbWEmfBW)K*gFJA5y@{+(bQN)4b0Rh_ z+p3JonOvzlJPlP7c*x1+xxk~!KlgQJZ94Vf^KAPpRO42CO`Z0B$w@)V{ zIp$NfaD2SJeU8;$?6Fa`OwQhaxjYh^=1H-L3!E-B>?D&c^RB96F_j8$&C8!^*E-~C zcyDi>+%ER#=elZ#m3d9oaqw>HV;Q>C$Gp=ConrC9pU&?s;D3p-V}0f8gzB_%Uiq$^ z^c@VfW8IK_cp@s?hCFLibB~8uc7|3d-EIFIKR*J32szLQk~~ z=g3;XX;oUhV_1XDrrgB#^~1r(^I3)_&o4I;bo0=*j8Z6amj32R>_Ruj=E1<8)pg>+dgN#oyUH1V-NV$=kdT4hrj$jP-D28ckawI(2i?$mE>= z=u^UeL|$T@(Yg06pssx}>(Y;~#oG-MDGsD|pF;D8kBAg2HsMS6N|#@}l(Lo}QN2Yc zbW}MqpXBz$bkU|eqxwe)*VkE{TE3}!^>n3FliC8nl)89YQS^ZIQGD&gqSNmg;_Rr? zOHIIL0k=0>NwEw?owgRcDq>4{4~;78)6=$CqVD5&-n#SpXUl_GX^CHa1f0LaC8D&p zRj9Y4t5&db-<{559IO;Qd^x$9+j32whD-T@Ly1E^w?g>m{rUNlWeTa;p`~heb&bwk z&gK5W>P%l>(+AD_2X~Y;1AVX1YyJD)CJ|G{8lzxqJ~Q*8DJ&fH#a0Q8hnOx=htOc-D<0+?Y%z6x`|kd}ps`-%Rw);kpF6MMst*>$ zbM=Tt*&v2{9y{F25z}>)@Sz?ITdHNT4u|dKb9@1utj}3*(|%~;e^s_Vq@jReSSWMv zRJ2X;EN)pSr4TO$rU*AbVoax-|1r0Rk)r8RRk#)PWwXisD;{g*A1uOP%AjH# zZM3v=iIVs1Gdzce>qLfnjYBLa_pXNEkxj!|Z`Oe`g&uf=Z7NZ?53OW?NIA9a4Hw#b zbJVkA>Ftxu^-+m;cY@cvu^dXcIYO&mGg{Fwi!E}EMDS&$iA3a4l7^8=3YR@O_S#{a zSmU}gB~~x_y?k7~e4<~JUE=Z&cB8dWQ9jO;h5LAfgTE+zo=Hn`9=lpQ=8-jrR@bCt zjYqzbVEHh=lRv;>I!}XRs60k;Ph3AeXWA{$^I~b>zcj*)z^Z-C1(pn+YU@uD1csNd z1!$rrv!Ij&9hUV9$sdk&SB1U^(oa@O(3%vc$eUZP-_FsxS(IHNVIalF&mAYAX^ifS z$`M%J+(pKx*-^QpJz9K5G1uL)?6^qC%Sy*^R|<8=6$^KIc3-t_u4u5lD1ohNvZ}_N zg^Rm0dw)B&bZkDd=F9Vr{*90wK_VZ40O~;N)5g)bPsQc)nS8-cBH7Y+wv|RK3@X|m zDUP8|L|+Td7A8EgF#8=(d1|^B%4I$r&)ayjO(swUl}CkQ!~=!y>1&btOJPp`J~%GD z=rqi#gO?gwr0E^biEGH;H)@XeCUJ?RyrAwe7utG^AKB9c8S|&H=)DF39d)QvV*ca} zLX1M$Vd!bG;PdZ_!F}J4c6I62rpoSaO!G3YsfcdX-}tn-m8m&$SYCCmV$-r}px;o8 z2`BB#shf5!^46J84d82)n0E*>IJcEKz;KZdH z>r{viW}}q~zm&ugzh#Ld%@c}0e-}96>EwIM2uD3KuPin+@{!0x^or&6*Aefy?1I^% zo<2L57oU|beDuC1;O5XY`P)^65%Zs7j67G^KGHOG&Ydn&@cp(#)htf=1=5#eY~;~X zLc{CiQuGOSi~_wk_C}&O-ewzb&Whb^a!w$}7Rk=S8e_sFm2WD0%x|oUIY)t?3{ONOMidC9YQ1M)TpM$6cIv*S=>rus%#I%S}=u38U(&$Sm#0pW#CV=DJ@SUq;q!qB` zL;rv&RZi0Ins~`oagQ{udoRo0LqWYQQ^dM(MnI5(<6J-857Tx6jdoo;aO)lLrdFOaXfYuSocu7$+PF9+awqcEMyV>j0{Yd9nf`E!EyM&VTb#4{>Yjqe_@P4;NEC-)6 zw%VT@HE^9RNI(!z8=d42&M@?*su?$j(}wiRC^0f5g0PB8<#)r!6-M_iIk*RC+k5P0IYmTwoS)qN;0*9W@Ab7_#c>j*xbw86Eeb}aTCVNAV(!hQ zm2|q4FtW9ymglTi;gVUMt-Cx~CtD2fNSl^@}qE%}(87V;jvO zwyDYtdL335^r=q+Kk}zWQ@MNa5D$xqde>}4b0V54y;RGpFd6Ts>YANz-+NqNNDGQ< zMQG=$N8#Q^^E;*4=h_vWfGFDFQj|f01(q5ER!Tapjm}7~E&4AXZI>YtX5Xi)U=~%lDOL zLbmpZE-dTxrLIeEQ?Aj{L=j@HmtvGFM-I&Wq{EB1jue71+?ax|^rx7GZQOg`Wlf;{ z>^Z1W9OeHToqSWj&DwV$i*~sBElhbnkK4!sk4>m&oP$5iweAD+FmGgh980|39UVd* zd}sI(T!@`O3iVsVGmCKK=y_i$74!>qVBGI_qK#&yI;<5;*HC zHOw6|zX@dag$-Z^3vKHb7sninIsEvgYgtjS;UN~|Xi{-xuef+9Hk(J3InHiinYO%Gfi*kxUzQKhAZ)5qrtvc^4w_Wem|YAw_)rr6-r$30J&Ndp#zWkbp9 zy+%;I#0ktYL?Wl2q2{G46a`dO8k$+E1vwRwx?A9z4i6C7h2e@MU2_*qxp8e&nS9K` zZn1CQ)U-pXDb`NKRQJ9QU8|V5j$9M-f>!=Z#jgYX1$IMOyI7neF`ZsnBJJrMLA=PcN6ZnS87`h`HL)mJnDVq=d8i$suw8I_wg2#ut7Y^ zVvvNs}O|{nsjyCDj7v=RqVp5t>e0oIqf18e38$$vakd(n%gbx@MRATJ z4A-8tjtFR10+m?Z^FMc_%klj4ha7~Mm8!uQ#%6hhUeBu(q#SyA#IP}7&XQ}ecgwTx z#pfi6^KXo&73xX#7BikgBYFL?9Pvt3l|?G$6dL0^Rty5FlA*cm0~-NXx5cwW+23X5 zf9oj-_K}WOU@v{k{cZK-6YtyS)~M06CogQ7S*sWCqC|A8V1@GaaGohJrcDyZ3;Sf@ zp!IY5VRbRb43}w*Gg+aA1UxhP{QUEax(CGe^qtO2JSfY0B0UM|p?GJ0?IjF~wtH7Q zo}GCnZ!gvbNWP^~J?g&dZ)0`+tG6LmgM9%HMSC~a&Xs_4DFd-cg7Q0E#s!?2i#JOv zC)d9Ap>N2Y5GWB%iv{`IK7TKl-8WOm8SonKC0i`FYk6|Z&#bHg6Bbq6qUhO{{9uD* zpJ1%Y6#YjAJvHxl2$TIrpZbq{x6EK)BExGS3~rtY&scG6_Ige6T|8ygkt7uV>@&$( z%DqFYghP(f6#ekyMD&+t9&+}r8+6YP+GerjvoUL}seUzB-@|fHu3cJzF&>6n;9o4E{4{loRuL{yLmWD>Je<8A7MB41k7|N zyYq$U+2YmY?7Uw_5qx5}EyIKgE`Iu?@-FE=3v&e)ySawFCR)m`0tcDLN|kKz1@Znf z!fY%7zg3wKu=gABAFTx+%Bp@Hi;`|>HY4tOKI#22<~Z&54&A`uC;3JqN<9iu8J(ut zyeL=)x8*+JfkvhNrRao&LgrbAPjQu8a|OEFbH=Cnq2M>ahCPXXGnW zS$Rg+2g-tR*I#~F9En+32rswY`&`b^LZ*t)2(||Ii`5PTt9?`5PMXvckF&{`aPrq! zF4I#3+jWETpDv&<>K%LJUr#+#xIxe&b$#BkSB)revJ7bJs8FBw4Wu6|D&6?gLaqov$BCZIz;mP16O96m#b)d$`Li zcfXm1PTw=)oByyiS4p7RSf_L}63Y=0581oF>F0#pwBoIqJ(g4`ymUDuG|N{j($fYo z7%bQypR4Mgf%4T=#&FKZvf=E%9M+#qzJh8H-w-Qgv?V_VL!n~msLs3K{Q90!b%Mq(b(G74N+ae;TeyY4rV)#r3T&_MgAD?N*;*_X0_ON z$gIa-%8-l7*9=h~r}5f~UdhxL8`VqvPR>=COtSl3jU$rW?6nd`i*9UsnAW$}d5IH+ z519>*+|kCceeN&HDDZaNHOnQOcfK~6CE`uc^(R!!s{i-$%$;}Qy}(yZ37 z#VB^#jXsGPyTNlwDb4MqPu=+g-t$qZ^Oh^KHyavmpW9h7DPh7MK!ir{KSHxjCsIav z*#9D*k7+E<$in%BP69!z3|*1tPxPC&mlhb4RJdjA?h^UDL3a}xsnwXOs~Beq zmB;g0Y_GKm*02^+mVwtc9jW?P>53L_ppG@aI=W*noR_QXnQ;fLW;MC5m(YuAREJpU zx8O}5Z}bGbto1!U`2ssrb2-#c3Jp_tQKIL=*d>DEJKy)e$h|B)kY6Y;)E{5qSQeL& zht6o#o8)CRWhIIkBF$n&`a&(JQj)IB?n(XAoP?s4#sdigx^urMky?tb{i3m#yUI^B z)~6Z=`u&t1Dg?Z|67_nB>m(e z=Yuf@gZ2TOW~SK2xD+vHC85O2uZ0ytD?-VZe-I1b_8Vt7Vv$rFCfXmy5cJ2LO%`L3 zlAjA9Z-LQTEA1HFTQryFUBKIK8vbRqY(73<#Y5nvc1Zf9h-X4{&m(KMmi<**@d%vv z*@J|Jy=*V8m4##SFZE52stroI7IU1>2C3Go=#+ND8?L|DVml0QOOdqAg)fX)?hoF& zp7WkidO)$XsG49=hZB9_SWzW*ydjG!jcT%%?Pcv8N*1n7R z^|yRIWbhBNB1mac-nSJvEt%-o&GRd_7xkBFt-})+eW10w7%yAz4!8&3@ol1JGF9%m z!cl+F;xv<023NwWE8*9>hWja^Zfa4yXKG<*^nR7cAD(6&8sX)Knx6}2O52ST7WN#J z5$Js^`Ki5}W)$zNZWgFtE2-S^iBKFrNJMq{TH(IplV_-2&IR#t%VtJPjMA(3N-qXm$H<94tkY+`f8!}f^PI1h19>VcmE_aOOOX2TsvT5@+9$nQ;25xB?MB5p1~=WIXIry=p<)Z}Qqf7`7oWUR|N zXhq&CMk#ohH~)QeyXjN08~Kjsla>ANM^|)`?44u$RU9JQ-fAb$z94kVZVvm>sX3M* zDv1}1&Nw>yx`7e%tM$vy6RE-{myMYjsD8>u+@N08wODoib%W>OuGv|a@^!n>duPC^ za6w7JpouIJKav&LQXI!t)X?=6ju#Y1+m=gMDEw|3r`U}3QpH-@GdE7TttDI;brIDt zPfQo>tqA6R#*42;MS(eVBLmKiEEUNU+}vd6ErQSyPOPFePt#vm6?Ey>?ct#n zpLnFGa#`4RYbqk+KFW~j3yso&r&u0Dw54C!&NlQ1U$x{h{Ss@j)d;$V;TJw8WJo?c zPvM87iZN6-m2q#*?XCb$?z`b!uEN?3k_I<8_O+>;^PVBc+l396TqagobDQkNG?tq_ z*oU)!x@}v~nN^Q(;3VsGQn7*~e%VJT#_`KCy^FD}%}7$y!3zUyv0R<|(+-r9hAuzT zg0`Nb70u8Xo>Kmv=_TCXfgZjr?k*E@I*g9Ao`v(WT1p^@ie=r%^mfg ztGrds+V@4y?@0{-O-}FS2klMeCe+h^L^36m*6d*fy=tE?=&l{wTHAEw{AAZ@5Xykv zlpA1YgJn151Xh@z`K?C!OTx*DJ>F?`LOKRhl0ybp$WFBUvqIFDt_;TYoD*vO{bVe} zLMK>K^EbHgleanrE}J?MAw7xI|T6Aw!dtwpETg8k}F&Avs<#h}#2hv0xXz?&L3l0S>G*e`D* zxBqxA-z%uRi#st}aWt0RB|CQrKf8Lif$?F#^7S&#vZmf8_w4htUD0zwOFK>*_-}dH zx?-ycoJA+KvxA05^A`JUORC@J7cGdTvwyVVYy|j6(_}tU=vLMx=HYi%k)15WwLWg% z8%Z8K_(3;repJVc)leNt6fD1eAfFXrrx3cMxBAg^B4XI(xqG{T6$o+jwoBiL)lIJe zRf!jM0fW8%&u@EiSnZBa_lJ1rqlPA-JYd|X%#g)Yun<*}KRY=1(&bJ+wG~+^R?Ir_ zLp*AP-sqG&TH2gRwAftI6>(R#Qq<_%-4lj3{qJ^Wh(S}&RMsuRAoxACP5Bo%LGjk?6;-W*xika|FDD6r}CnHg7T#CI_}Yt^>+V_?3s zmrQ@3!dFgGEDzr-o^}emTn*NH>Dd`8iyxalJxJ6UQBPRlR{T}`@lLG+cUPy;K4Do$ z6FHIN=*u($v^J9pJB~J2EhZYO#ply0qgF+;x1DA)QOoYzWyVcKW{^ZOtj>B@daZAt zj6Tb0JHrp@OD&}dyT1rnwCCxBNgG;$KmKhZ>++-wVx9g6E}vyXSDOlM`;c;dOCS%A zY7TzVK!`$lDMz-@L;KX+s?^+DGVF({qocDQODoQo*U$RG^yQ5`mY8mm_n)Usy%=fZ z!56Uk{?HKkEO=v6t%)Z`Ss_CDvaJV(u?zU}RiVj-kyH5Yysp=h4 zDENAbk$n0jXuv4@k}hMrTOZAa5L6=zgOLM0jbSQkcxI7gcurU>5c1xzFSK>Fc7RY+ zLvU2&JU!tsi`wN{NR}2aog2fE8=bet&0nOBRP)t@V~Kf3*>OR$lIJu2NwTX)ZI*#5 zahV&BU>3R(^$ceg4CK@IUHdR$Vb}f{zsG51=6QT!x1P@@scvBjnJg3eMQYlV{rqA* zS-{5esWaTvI7DeA=DSyl`wf%fn?qQ1w@g*_oCe)a0?MQm9ZWto)g-K&a^JIzTz>U~ zK>%~g_IkF)WAwX*^|U+oKRF^tZt|9)ZBIvQGNsguZaEB%>O0G*@71_^AOF%BS@}RO z+om`^6Z$)i^b%IW>PWk1aDP0AN(vHa&HHT3V!J%vDMF|2P*R(Eu_I8}#AEAbNc;)E z<<*eKiv<+(`9zNB9=1<;{Z^XgrM2W8k7+33Kfbt!q>n$f#E*TllbSOm=Z|T9uUKIPY`PoEv&!!(bH`NIEzHhns#r10zIBIS>=n~sS3ip@n&hf*uIuu*lHBZW@}Zrtf%)D(tklKQFW*M8 z&&T*x8r>=keoQt@9)I88tqG5N9>a}3BlerWcE*+fI(et?S z<~IJBdD3UR2Nr3k?dq<66~B75U!HGC{X{VhKWEV35HYYkvC5DncmY#?2lCnbN5Ypc zmjBz}sQtKq1tXi~PQq!Q!$yKvcNjl|T*8~3fmF)n9ejO_GX1TO2VF|{Ur9Wdcz2Hn zBou<|gdMQ>#;+;9*lyaHX3=;wt=a9+6!5Dh;2N;tXuNK298iSwGsShuP%7}HZ)Wa( zz#oIF+Lfg%q%Yu4yriXEHhaH4a{JD=o+wc)Y$4nUb&Cg6n4j%94Z2lQqiEi_RXh$$ z(9-O2eCT1UqFQ@M6`6F+D+?`IWY)^4I6l7y|HJQCS!U6l0MUc448q)2@*Wv!Nhs?< z!%14r=Zo1wd)Y7D98Rwx?tpQF*_lp!tUo=*SmYpoZPm7LtO)&u1-^!OtA?{`jszEL zaz&|1P=roi9jl<9{;c4JgKuTcjg-$^^-W%g5XP5qm6mCl=I^b$DS2w<%6o}S^a2zb z^BL^uX)<9R!^2LZHLZ->E(s+Myt)aJdV3hoKBUEtB#*oxUw>VR+E2c*ILm0$AGl|n z@`*lEzAR5pa;5_M@#*TpUXlu zTjNm0H2P_iX*QX8Gw1fV^o$XEoG$D>Gv*s<)p89YLFJ&hC2us}S@Y#d>)!Oexdth_ z7Y_UrGG;-USR^!Jkz1*)+!3`QgsdoXb_0bwXjkjs-mkv(5Uu6aX4fg}U1CA?yVbYI z(OQ}v<4hiLzex~J0$o8q7_Y0eTVQ+xriWo{lK_!=sc;VZ< zn%WIX_awZ$iM__)g!6%kwz-uPos95BzkG)Q=6s^C#Lp{r+1#dTH_y*(OTwI8x!ZD=!NfT-7dnekz6+7BMZI<)sc5Lh3 z-YYHPfHq7&R+ZD8_y_iiEt~_lhQ_bFwoKY0D4o#5c(#!7SuHm3nJ7+OncM@s@;4C~ zgU%nF`g??R3=U{V3%llJpy10ua-y|(yVRFQbHRbkcEIdkHHZ`r>%5vK->#$8;F)`P zX)?S=k#l)gbtFl@u64#fe)5M|-t~w6rPzu>LqC1UY3Bm^`uZg$a@a`;r1;-G);CUk zc=~1~^BcQT&D;A?glE@&&GjW@i}7K*EZ;S}&cH|1siI~+W})eHja%uAfAIW?nNydr z4v)*5zf1&Eri8LEKPdmCX>o3X9QJ6!LB>X8K2O&8a7a&ploo^IhzXBh@vrQ|jNn7P z%G+)lv}~az#II8by%{nNH@O67=lk8+;~wCX)rIb8`OVL?GA7Ry$eR~kqt=Kj&bDE$ z5XmO+_rVzjy;8{5WKXmBP_V{!dSu5U_C(zTQI?itS7X2+;Iu_aTQq)s~f*Gj7* zV-1XrjaH9-y}wklFlFhlc|X0i@pyZCbhplC$9p-X@OS>#=z8Hcxx$&?=);)M?Vg2d z8_}(I0}-y1RK9(>5}7mc)Z z{mplnTj8?Uu3CWZ=CU7CBH_sAHP1#@fWHEzeKgLl{JCuRI{RI_z3Cnb?ZehL9DX%J z`lvUF(=wg(!k$UsqdoxvX{j4uk% z=yQ98UPJ1e-=iK$P9flZy6ixZ?#xWTdnx!c>D2H_yTI<^azcR8_<#ftMex#)(9;U4 zq+Jn-Z>%Ndx1iGUJ>j;6zxqsDqW&=Z>1Y(a*K{6fo_Fp>U=C)WC16l-L z?oaXTaNAE@UB5TV;i8i{)S^WzIsT!)LTGM$BYH}_elE-s4ddEK)!YM@q_wYU(WzNh z4st_ub4r@rOxY4tZSu>jET2rfo|g{Obn&Fny2f zM!LH@hlZhhK?py?$#QkIJc@Zx55MI}TsH zLTgo-Htn2g)~02=B{FCm=4E$M^v$`THb=2T#)^tdTT@RL?oec9`^U_B`Irz^nx)nm zI^eDjUjl)S(VwOzB7~Ztx`%wJ59w#$~sU@8zDHRh+8*z<6+E~WhF$6t1?PB_0~k87jp2|8KjvI2RiSSo@o+nN-;Oxl-Elv?D- zmT|%L9ER&#g5$HfQjF=pU&+~*bTA@!;mfukx8j*fys&>sP9Hq2t)^t=!$fAhRB{?{ z?5ra#HtBTAG^z97Ea3W@?#g*OqZv1bdL4>SIM3EQaa(QL5T1wyU!0NZ z17!ZUA%2nly&-tu8-mWv=MF^vY%9|{KyUEKx+05C{m-@_hTjNYjmbSN`y09ZncaO} zLOZW0<6*XY^bYd(r`}Mvx+ota1)bW`WY;*1d|NI_32{Ah9q6~qIT}#6j}ssJI>S!r z0Ay#AGhKN`Fv8_cQ3XKj0w}Rp{ELQqu8m;4;U@WWo3{$Cn(DKvWX`#XfzNjcsuX;*;@ongTn1Jo4X?z)X;H0TO$pf7XT@ySF;}}^)x0xoMv${^AzMA%ga%eG*-m=E$XiG z6b$~%WiRo+>vRxUlr!gTCkt^$#~L)`t}H28gygUFN7d^7cqpKZiKlVw^_k-QbMr0Wmwen@1Z@%WGcp_-I zS{v2a5pRp48`*4}vA&AyX^=^68o7Ci`H~G6y)aTdYH8V9fEAW@6SR$A?PFy*txrhU zg-(^Bg1Qh+ydQ1$9LASQ65~;KCZhALOI~_~!onJr|4y!)J$Lx)8YKXS2_P2sUJ6Mx z?ORBF;C{`EC5<%O+SvdNB2y)A?^s}A#gS&%^uQ*74PpNOF9#i8IGy@U6zN~){R@1& zL^Yv%^L>xA{LVlKZzaJ1Liy>Vp4R6i(UXviU!}(O@I$4|><^scXP&t8E^Je25a5`h z^wYt$cfI~`U~83OkJkS9SnOIqe0xiVcP;mFK-lp-A~>3c`uX}|>5vgK@l|?b0T-X@ z=;-gc#{4lNyR$91KI-ifw0PY%OkjA1W)+oF&)zdkKZUSex$p$skjG9QDCE4Z*wP9- zHC<*;SmRQ4$V~@E_Phh=o$Y?o8LhzI zqFjs$HI9&lF}A1TFR0@2FHCHr2BxwG&gO=#m5$!8Dp)?>g?i}MZO)!_>1(?{;8g#6 zNmIkSd>unZ<<(tVvdUlZLeT*7|G#;@w`tsCRS1yK6cao1x2hsLB#c!_dxc7K=##v5 z%1DI=<%K2(CTpkAJ7xwcSdFr9Qu%8nw{NarJ7>fevurv&hGwQ>iZ9d#^6^-3eMO3? z1b^sp{$O1r`=Rhy=r~C+5+o32hJv@}M9v``{-en6DxKc+&AX>f=Dzl3Q25sQ=9cCD zx$y-FOx@$aG43ENXG|?VmxZXz%yL*C#4lHtKr#x6l2+Y=pOiVDS5vg@*#nrL2Ho|? zSP#FBQ{|7u?x*DjFPrshzodoQ$O>WTI<_xd6n%=zwxRX;s(?q9uR(ON=S>}A7U4#yu(Ez~2jrmrx6no#5Fae8I-8E zo6>8`)Fnxyg;7!WPLN_rNl1x$I#~(Yx>QYi%h@#3r!yc+wW`HoT4l2DjJ(am%Y{m}G19@3EkRvNrl-C-a)g$zzp}6y^8I~i-TIO#i}rMM{U>#X zoX;#{aPjn)_5Z}vW$Bd}Lt?x&kPjx{yAp8tCtguZ{bPb?vDFCim4&ZLvs2W!T6(5Q zpvU$1;y8+7ZTivAmcxAk%T!sN4juJHc@f=}{b^YWk2{91_kuzQ8_B{u48+%0e#V$I zeO3`Ki5ip{1W92yt7YP5(tzrvg~n;+du=>vtsW=>56s=C&-}fBzI*P+(74yzV@I7t zHLebupO%1wUNDs4a*k9KV$;f%a>2D2BKK-tb~QCsI(Es4LCXYa&)$}}x#iMVh*!W;0jB?uz8}?dC=;oiH5Ep6RXbUrtL4UtDbuuwf0)kHW>?}ZgOA$ zHI=vdr0`XDrT?$$(GdH)<$d*E%Zmmta7?b+b^5s;OMr#ajFNHE!E1rjQQe4`oqH12 zXFpDgrFYm*;kZoe&}CIrFkrb~!kyD7;q)(op$AF#F&z^SFt+j9SZ~&>w=Y#GR^Z-X z@+Pn?O(@xEEcHRPx8sDw5f4@Kaq&tURX)3Zt$OP#kIkf{GsFHsZv(!coqfl;fzbUC z^*gNP=-MD8Lh)w3Jpxy1Q9f&o(oZM%g+N56CsUH(XcE`i_YnJrJC$t?W1g{SK621l z9ADirnQ+C=?hS=Pf$o(SSE_SXEwQN|S2OCTTeb^4hM^}HQSF=%uP3iG-jd%xzC#92 z%Y?@OBa1MaeT zAiER!=p?|j?7jHwElv@OxL=KP>qq9eT&>}kr+80j*_Bsab0sqf{@db^q;K!LoWatc z1?3CYF=~-Zz!I!mZWe}u-2{>23u{*Mr6zAkL-A#>ARaR%Gq4GSU_!-YNp5yYYPQ>w zYIMm2j&-g@0>k_KX6(@^oWk{Y+^FxU-;k(+lW1CvF(Y$gkZ(m-%W4N4JXZ6o+laae z)R!K!p@bm^9U9Q@It$W@d|%pY62_|9&BW17-998(jP08re){Wh5ziKzRBb*N2p20k z^n&%@?xTQ#Fl6f~Mj_T>ItL9E7R;9xxFYQKv(tp>Qum`CH0*31h*NfOp)bp8I;%De zCCdSr=yr3uy)VU1{nz8M%iK%i6%blZlYu1)#D@KFkCRBDpxm@eI5MhWlfyO0&=7?M z46kFn%QECL2MiZzqzuA;D~10ycD@`S-)FDm1vg*8fJ&6r zG1L{js6o#2if7-sXMpKkVB}=qQ#FAl9g-)>>rNG&b|~tGTuMgb&IZzfiRwclo$m_g zu&gepL~r@@$%SOt5wQH!Nc+X(=lb5CS`jPV6V2+>r(3DG$4JEb6^n-C!UDW zXQ-jh**RIX=y-vHePM^L0_8@;5w^#FiUEz7h}~G?sCL#t)&ff_Hd^3%vR-Zxun@NE z#PE}y?A+0$e6jlD=fVGY{}xq}j2lZx11oPP-(*o#@xk zzg{faeXq0qlqC7&+um--3^5OZSDgvwAr?8~obMQ)e}SI9Ft+yIJF8HKky1)#Q)Nyu zNh!ETt+~X8L3OTZc-aLdJ2#I!47E- zxJhl!DTwMG{xP{o3K73t3D!2YmubOIlTY#P|GY#O zmArx`pmMDU6cY{w%6ZTOVhc+fxmI?O2%w_&Ke-C$k!oPP^MG%}e?K?$=hyv(^ry~{ zM)|kS@SdMJ+WT)70I$Gx*5Ofqys+MrqYgBvrsR5F5XZ6owXTC?ip~c1lWqQ;8w;;n zz8Nd$&m>OWw3^+xyCnHw-YbZxOM4M)&@T z^D@2&<~xvf(7be3c8GdiEAM2IvPj!rvCQhvCN~P@b%6>Eh9c z!6B%H(^uC`^H78Pa9+feW={%7p_gXNQ+V*pPk*+gQr(bHrx`)$GRe4N3-)zmYYRls4E%ooWiUQAnHNm#(*s#v})}3TSVY z@_nS^syTRqKaXTuh%Dq%S@Apn_~HN7vQ4qVvtZE6FT7@shP~*W@>&=1N=L~|1+}W? zi3&jZGolg({n}hqVhg$Uj7hSgh`r448XNNqE3r;;@{r+s*GkDe`HjZMzyj~2|4!={ z^gMrqgt7mEgqJ-Wn7gh{r_b?Soq2DP;z4-&T3v}~E_!r>ypQ{vFAwR+$3R=BZ87rh zA>p)O9kDJA0<>iSKOMM&D8XY}##^vz+aqrbuFqS86 zgRO-h7tN!tqFP>~#TJLfjt2`vx@$WtZapY@r^VP~J3Cd78lB5r>#=%lxx&xC++lLo z`D|&pFdXNy51k+GeatXQU`A6<6j(^3B26`8!xz^-+hcLvF{E1ol1h}KE3W8#luhzT zt&)>M4}A3&y#jyD?Qy#TQXmr>J@*iT=ypo~RG*HfKT$7nk%1RR=pb)P@w1C>HkVIq zxr3wp5Vcq5^lk_V{uAdP0{$U5Uc9*7_gOS0wu^r>Y-mb;4_GfYe8JhF`0+J4eZLaP zzM574!{p~fPwO`b=2OyU`t+Z&ZJ0_qYWY$u-+*-!I!(s`9E-6VUpw8sQft|i6lcHW zeEjxJBT_bRpD9ijnq}&j@o{SrC2~*4+xG>(DfQ zGPzSSw9dUqmr6PAkH>SK=-WLIm{E3b_1dCtEO-K?@!<{!@{znBnue7jVSZ~YRPeq{ zog;^xMG>p-#(Y^tjrZ$vS%IVG@xLLeaMwP?-vz-t)_(w*vA_NXWE#BG|2B9Ui1h+D zh@fv134W=z4f8i{>$cZ;t4BADw$ao-74(+oCIL!EqWSEK*eRQHFHf0tVXmj~jd`Bq z;?9HR1?5k1qa4RZtILmCwgSxI5({n9i^FTJjHEt`FkRan;zaH6F(Tj)qK@*^F6v}# z`jpq8c~JJGPAw-W;v;L8RZQ-yfHQQj6%au0`Qdvb^uS6csEDhgZ8Z2jN6K6bdV9-} z-IwGP&{aZ{@*zFQhn0@D>L4+hU&Btp{iDEhBhb$8>cTeBawjxh6Yg^rOXM_gkIYLv zEhV{I^kIfTn-iw)`xe1n%k{srg7>`!5nTJz?u#A+8u3W#6f(w|P4MIF!`pq}Q@lWZ zc&ujH-T#ON4)F0<=>n;q)u+FRWVUtvqzz#d_J)Lbp*y>HDhj55ytv~F$(+4n!h zcBL~PEb~w5YJMk=R5oYx;}G#MC8R(8=wZvPpe-K_mP#?{am@fs8L{G#VJ+IqmZ8&ZJsfI$g=Vc=FYX)()1)Xj5xN!BJB!1sFPtAqRQDnrF0CGx~_)u-Ae+J z%iE2EWkg-IiP{SWHLAQi8^l@Np1i|@4M>p^p;B&A8z(G`=;5746|8(NN206BsND-7@7r< zyfXOsmDQlGfyNRi*T4`~#uuoHaspIhCIe=OP!Y>nqMd>1^v6}T{N+Ev|C=bn-=#tZ zGyd-20_oFIe>-8EJqxnNvrOiB8OfiM_1l2Va5q%n>pA3wOb{pd`s66JnN^=ZI!puu zTEW3&p{32m-1^XRlY&F&u_1m>AEI?k<-BQJYDFSigP((AFlR~>Jg~v+;=Yf zpOj5w0a)hX>W=l9tNTF~DX50em49{SW~nv#%1rm#Ea%!xA|s}GSC4FID#C8gMBiP# z4JIaH&+OB~X7+e~$aAUuoV38kb-c*UXZ-QK8$Zo|w5Uf3 z3M(nMc5YO9gKWF{iFrvTgrg}a7ImqqoO4IcQMH7LDsP}{KvbJ?D8KcuKKwm+yLT5v zKhj4jzr@t;qB&Ti?+7OKPyR!~CHmM9KEQ(EOVr<9uGe#K_SXx{{~u3Cz~u>IgED6a zO8RIz4f2s%vEe&M%=9Z1bkhKg0O+EY_8c+>>+#cb`8X%hQY@7155ye871*Vw+f=Z7 zbD}tJ>MUYvmuOjyKqY}f|zE>^jP7Ao540|-o{;yVs_Fiir>oy$0>a6- zKG6KM{-`_CA$+7gn%$unf6QN6gOA2z&o*fL7bru*p-t3UGg)`iHF7*2*DY?@j^w0- zpDM?jetn(@X|E`Ii&YZh=jCJX^{KV$Qv|c-%xM|FPp0#yfeF&X?}M$Uwa9P-A=+*C z`i=Msho2K^Y6x4xJI|$nL`wUYkvr4%fIWMTf)9rk*quw~bv}OmteQ&Ztk0XD6fveW zDd7YN(6v)88v&vrNLt72e#ct(04%&MW5V)mb%Nm zcVj&t{uRdIfiWLg;6p;lyMGC`WjL18fC=pB-J+|HL+0JeE?pkX>`fVOgSbO~#ap1I zkha_SNb2NUZ~{VY_6A%>P^TovHK0^xwVP_*So(l_ELm8a6>17R`>OCuIRn z2Y4}pUQOUku?B*5VA#L$3`DgafTJ_p%$dt8NA7OXNATc|PV>ZqllD8X^k_x7+~dKJ z!(lydwC-Jsy!7(+gjvJ^0o*U$ZaciPvGAr2tB$L};1xuvsQ%v^D4dGSc@~B-LiP^_rTwOfMODrdiz;tf5Y; zw`t^Oq$};=Fe(obB=vR|?6l@oerB3|9a!#U0X`tnA6TTTs(IB4J5Q){M$|xt+UHN@ z`qwLW~fsy5Lv9XHTk$a2~zUK)?xd-%z` zSs(2hzD28Ufk`{9npV>mlIhAEhAYtaGW|*Pve9_s!YmMZ*D~_#udy4BL9K!9R#ZuB zNKXx+KmrT7d^~m+o=?4Kh5M?49hdg1&Aif8ziEg6i=5fwP!dW>E&Zd9$db2L%jX;3 zsUL`Lv{Jc;N<2=YbH^v&W>M&OS9uWb$@xIQG#LV+`Ss=-Fngs|GYy zA4~0UH^*QNqfk0rmS@4GX|DAgN;NNEb*t$=)Qm73Xc%9s5kWRt1xgkZ4CbL_QR8r-M>GZ=$CcHv7`i!$)j$Ws_g zk0jd*Uw7IdWXDPmD7wrjt<8NFXwbJMMA*z!q)4)hWB7RNTSzrp&DI5O8x9_EfcsfB zE(^tI1&Y4VPXQEu4OF!v48-b4+g6$i#kkln*DZCnOogxFiCyJtjelFWma@6zSiuJa|t__^j5I+|Yt!I}T+Ch@5D?WoEzs5#0(RZoV z&!6^S#Zh6Y);lOWB0LQU!+aA8g^{Dy6AO_?F{ELMq?d4~p1edT5^9*iT}qn-3@n;Z zDmcR_lrJXV5KkS|Uq>NlVKq4iaC}G%Ln+Zl&Ryt{VmRMN`D0ou{UmPh@;+c&`g-8z z#CTd)=56JIT_E~`d{THL<5^?Lf3pCeN_aYn^i|VK{+=kFM4t+01h7BB*L2OLV#D-E zg`&%GMr1x~je-f~y|%ruZC`j0?1^$tXYvQbCuy4q{NnGU^CVG1=}Vh`GWCC5)O54j zUv+h1od!7FbMckl-st@RI0hl|=)d1N0D|8s1Gs*$3UscdO5Hl=?Vud$C65_+J@R=M z8M!Hld)W*6)Bn=-Wd7Id;YPq>|BKbD>yA?P!S`gRG#sP-ul3@h-MxDaHx)V4uXMPw zpx%+!Wt=W!KV}-A6319wLQl}bA)d4WX@hec73#ZH>H2B-Ephl{)@&RFgbnWQw1;^! z@w|)IcbwqUA~!^2ZIHXo8sxc~E&DOK_HObC@CD*8__^rnKvaCO1uH z>t|iq=y;FRCG2Ju9f_4)mtKiY2;+|~8Hg=xE!xEyrODyqb!0~~wnDp{%q8yTiGTim zF+=?0vk)841serAVkY1UBd0bf^+Iqgy6d$i7V4P%m#&b4yS(5V91R5X`(pnOsKgIe4m0?Pgngix|f}fJfVjUB7a+1N_oewb)%$ zzG1cyOkMs9Bf%*2H5r_YsT(U^Y^sHDMQ5cfUv_F!^VRp*1mps35`e2!D6Rvmn);@C zUHO)hlI2gF@51OMU;0*<*u)40K<8PmzNQe6rDs0{g)r`Np%fe8L1yt8;6v8I|?VWY$= zCe#P14DgJ)`hbiN)bqem`Oxtl`)3xHE8{&+)e-djV+`}p%b1e0IZaJ1!)#{tpKkd@ z%eUpj+w^C059+na^mIO~oy)(5^XHV@ECTp_2IdFtJ2)@d5M7TSF&OJDF^!Svecm$o zG!FY9iO)GLJ=T##IQPXqZ@2tDe@Fen7)uXQ`D1|K1N(IR2wH4PV*YWJMYMead7IUWFGLq&&l^Wvig)UfyHRR3uVW-tb9_E{nRmu|7Ubl! zJ04bD3w6o6B1Pap)Fvvs<=0GQD@gMdaKy!#o%h?jvBRk>2u3N%Sp^uS-eoQkoBy~m zaKe|A#i6>;Ad4%g+G8I}2;I2cJ%C}hxqs4>-dW9YuyF4Q-oG86?d;q1>1QwkZ--b{ zo!3*S-_&R0RlnaOym@54tXtn@18_(5g#j6pYyX7&SHcfOvCO(w&-A@_{7#oJ$skw9 zg^tT7>GEewB5HBW8YqKHr>%FVTCcC$=-D@=SXH;{<|=LTige3n2D_}Vex z?Jdc!ZX?}u@rY{qwd2Bbt+l|hm~ejs`SjWL79)-0gELpwo`Tqg@4=4A0{;}5-*!J@ z_Fd{ZvjO(WS?H*5@ub5+_V+pj?|rre5EsQr_!V={OT3{PEZye)HH zx1LfZUfHD6^rUn}ELDbDGZr>gdE%7W`M&1N90$xpfEJ3djiH?3)4H@6Y$CnQqs7wv zn~$fzWv${g4w~~g(He3n6~tlu($LzX3^T6MC$0?Fd+N)N;K#Z-4_p3eg3zWQD5%2r zp|V`1#q^vL%WYQ4il!aAG36K0pJ1f;|3@^YpfW(>w~;1t4m9&oaV^aCV73;u!R*^Inv0uciUvA~hoq}LN~W`5#XV9%uZN%qvynHBDS z&))ssHSieMUL0qg&7-e1qT5b>9;994k`q)zEae`wsp%0q#52{~Bc#BcXgg4N-Wlq> zR7IY`2$aRO7n)nDpsstwX0NTrfk}#`fl)Fe+;Jndn9{5)2Ybi%kIIT-+%xl&cc)!f z>)(Yhc00r-8F(dRek~$6d>q>DlVeHu=_XJDuHqEK(z~&8zREYyDlfjW!$WZ{!CJw@ z`MNul(&*3?pYO^0SbZD$Q$>_0YQ|<(-%4a`BbVcFVPG-reeF)%qrK9lnHtHeHi23k zj?qfs@VtZ)h-WeUstAkS1PShZ{4e>?jj)>`!LrSrb+XOkY9THO_KOj>|2&^_qNI7m zLW)FuTQ`<{Nqy+tN~1yz{r#*Gxbz!HCZ<|pY{0t8bU{X~4@Ep9W${(uW!^SjiG^pZ z$=H!tl(~n>HGibp1l?dN1@n!j+;l^>_FUn)XYo;So8FSM_({vb?JYWHbHVT`6CL4P zpwRA-@g22(+&qyXNy5PWF}2-2+*o%CluWy94)AV4J{}$fdpe$)57fN=2Q@@XlzS&x zVsXt42co2QCwGb1)#8#zEgkMchA{GEx6=IbYWa_;;qEI{K;YEKY$@6YNF5fB_)Zrq?^*oD><(+ru|yc6Nin!yNrh({U67dRsl zH_1-A2=Pu$hK+1v&C!NG^^gN^-`gu1yy^qDbIISN%Ut~8eXn zTPH8cq^%2H#}Uq$F{!K^67rJf9sHq5qDneebjMKVKB0InC+fC=%qU-B%Hy3tz+Y~h zZg)8^T-O>Nb`N$sBMPggg8s?1{8q%USBbt*SS1`(=SoGhj(U8DL&D= zs)v!t%&~DzyMPgw0(72wzkD(?(nOt~tv)y^Q629zgr>(v{Z(-z*QYv{gcXgGJ(_sO zgy=#$FIrhr-$#O0=i_c?Mfon+$hJ)KajGNP4Eu5Msk1{vwM*8~UigZq%O{8z5Gh}o z|112yD|2W&K-&!bdL{}6Z3RduDGNYX`NXEKb#_fQIyjnXP}jho9XYY)^*Zce=y+4q zT`PW*QMJVkt__R*U(YJDDY*N*9{9zUt}R=udqJRQ3W4H_k!fFF8NIVlZC)3f^$ZY^ z8XN7z*|zpSCIkbA|M^l}CrUDxt|ZWnWfq~)qtX$h-aja;UM)+WqI}^LjX}z@_>of< z_I8;#tcy!aI~zd3=)(bY^&rqzip}iR;s6g6mZqij@eZ=wN+zTXGxJ6?dvnVb8F|lFe6dxAGKk>4^QY*_ZR6V!y^Y*azsi6SId{Lkp<7|BXGoi&qf$z7GoI9QU62Qg}t9u>4PCCI`tpVN+9wAz^&R@m-Id_kC$^(X z6mX*~WtF47)Ky{mtk)5c`ZPtaJhZJ`%8=19j_(%c;=5W+95YGt%+u`adAysgvEiN) z2!`h>2DVEVFDEsWOXkRxT`uDkgy}v(noR)u4)XMoCpYIJhl{A#x>&>Rzhm+n7ri2@ z*^@b;Aa(u7J?q?!d5x5U@`Gu2!Kn%E$Cmr1YT8TN!&3}iGaWAZiD`9BB`1qclRxzJi(iwKC@l73eH)U z%e*Hy@#XgQUz&aff|j!OW^Sb%>r1YWI77sp5^dJh?w0wm7#Rr@LsO&ShZK|_2lMHH(ygz{W&ssTjle69NX|TlBiZ1iA3QyZz3#_8|^t~%&KQpay zB7T_f8jJ$e*1TD*HsfXdYXlKqtjhfLKTV#IU3 zOdGM&7rflDeYznMAU}~bdRD}U2T+w&wb3nDyf11ock=1YHys(ZLpR^w2kh&r25)S zDwTJbuCFo>A^AZi>sURfcV|t>zGQTO7F2(2t}_^$gl+89bGdj)nlMOul{8D-bJl@3 z;rZJ44sM-7`Y`PzI*WrFuUhYHLDeh%<<&?O`C#5_7NBPHOW$2#vEoYf{M~@HLfvwy|dTz!H!UZAhJ%6oQ&L2;gGzKxFE0SxY<1 zgL93`Lle9Uu6VoriMJS14=&z7%VA2JA-km#F7$4;l^HBGFmrD8C7NrC{Eb}-89{SC8I zq?xCXdM3~hf|;Bb^{pGSN;@B@fppYL1rsteULitxspzLETFI0dzC-V(%-;mlSwp@Q zS2!UqZJ#Ahyw7HHrEVB~P3uVR$A+K!^IE;NUiNmsEW6=#@+(-j^(jdJRK6MgRx99F z00j-9$I2IA9l%dNejp<`^oU|KzBVNzo|@KFx^F|uGk0S#HD31oXO_tPMjap{>=HBikA7%yu8jjvp!qol(HdfnMrfevFln>UD%a+z zrw>jd3Bx`ua1hnZf4|sv@za&1+`1>Zw=>I1Qhu~bpqckdMwets_|`Yjx#GSlgHMIF zt##?5((0G{8e2Q+IVnj9-dxuSl-LoqK)m#(Tl2!;^81~aG!@$Q$|NCT@3Hu!`X)Db zd+dTo{naVugbDY*fL;SKJnu4V935@XG|4)R0(SP*%%<(L zmDfkKbI(H+(JF(-;c8IpqkE%j%chOGXm%;#><&6p8&>NzaNR_acjZFs65&0~z?WyQ%6V%%$X|u8T4_DzZRpjIC97m=n~F(?{kkrKeCyAq}`|tpZ-xWPA_- zW)5$cQm{_>Fw-1D+&`Y#-DK?Rsk^(~p4(mBPlOgU-?-;ksJH6~QMULX=AF1MU+fd~)!jUX#+v#a)% zX8VP+sD>e{0;!$sfZB3OI%!+(H#WPDxK43UN>sRCWAvfx`HuA2?@u=XzfZ5y3mr~0zVnb8!}~ru3>Fl^$cPht;v0Mf6pz6(g9J&%R??reYgX9Ly@Y*;KIMe5#T>dzZ4@j7l?Q`Sccz7~1l? zr$kRU>);!kQ_pkUpEX_9qDtoSNAXEN4?tDM%^o-Vp@|bvG-5@^rbK+wyMHM0n`uSz`^p=iKVO80@6-)E=1EEI4j}pnoB(?Et|RO${|=4aY<2XzeMyqszp4 z8iZ;-L}R=*A=vr7y6td$YRjnq_Z?T3CKBKBcm}^Sl8ZEt<84G$>_`t{a~R+yVtaFD zZAwEfS$gAb;7?rPvE?{Yj=-|{6I{%47%JL<7g)E1!j;7*(Q#Cb-)9MUQS;IsmS>E2t|6tnS=`RZhiU^fGwB|8c~sX4{<_>hT{JXiiOhP4 zdcH!3SBGEzN6NtW6q}+kORU8;%Ox@Vp&q@i70N&Ek;)eeIZs;Z$IYBY^Yc!5(l?`e zEUGM#Ayb7hZPn&=HK`4LdSC%&Ii5p!y3##Sl@nT?4rPc#mGhw8AvC#r5pSPBAO$+i z+KYmp__dqSI#EO}Nygbh+H}gC>~l_&5LecW9%y0J)x_3HX`4k%NtAqBVtE}>r4W?` z>9QB^#~R?G>d3~)`(=1DS@S6^|I54=9}9Rknd^;K9@qYl+m)1Qd`bukXS`}s%JUua z>vGdR>%sSBMT1}tEu!MjHeBHEyBTH{5my#9T8Y%NmO5!_ycK1}xLB6M)DbML+(xPe z5>XT^s*2&8VlhpDjyp0$8wqKCe_l3tp>YL~r9vZ1Ssc?I-VPQ%9rdBVgg=i0`4!`g z*g!JWJ@Ig71CwR}d&|&5N1QxvzTlGV4ye0Ex+4hw;A|CF7>ZH+D zYY4^jFw%>(x^;b+El%Vsq_UW?IYA~Ew+E1RLZ&9OM(?x0E*YYvqGvoIe!Gh(xb?HW zeG=ES_TS`xogkSs?%iW)*D+nmvlexIGZA1-csucvmX4s{i9mh+j2ohZl&z~&W&-j1 zoi&!s49t-gBE!{UPj~CF=_J+ZjQZFM;+25>GVhT9$H8ycG=w_sCY)EB5s+Oukb6nR zqUlETIIDA<=?30i^-aR(8|*^uwrH@IsC@;$vB$?|(WQ{xyo$B17jg&CEoau|sV5+9b zbZ@Tk)qy-)T)Xx|f^u9BC(M?i#l6@{*jv88$fy90=S?x+Vh!F(umijc3Ljd^Z(!vw zIoX___KJ^P2j$v}|s?>y^KlS?qUKPR&=J_W?iuuw!eAf%?ku zUGcvVdbqhqRFFTl z=Z&d1H>RERhW|;3yh^&4`^2;4v&)G#hwNFl%PH>yZ9N+n%Y2f0EKgTLDdXoaw~&bU zNV*_95%~d0NSivlP?XFFH$lW~fy*++X5RZJJwel6i?*Z>>^n*kg`9Fc5K9p!q;=2I zUeoV>HqR|JzatxoKEAj91Yd?1VT+Uf-R{x2DeHr$B9Gr{c|~>?8sHccYG;%>7}_z6 z;WDjWp^>cwH!9vPa~sX|b>=v*NR!uJM6G_BVk3ZU+gp9N*M1W5_GY%<8FUAODz@5?AP6+7ud!=+XspE92^D;x z%_SV4;Al_vID%v2+T|nPHEf-YN|e_P;wD8bU*Cu2TWMfql(b zC&iy_eW-oxJ5>!e(*=0Xu^TiHWhIX~n&}yXZpc|TTd80ZWj|KVV?B8=7#Z!ZV&|6Y*l%?WbwR&6;&^d;8{0TH?ZAGZ?B8tcm!`}< z+rw5gjze!Q22cx_U^W0%#g7^QcQFjIl1Qw~eYNVShHGQ@SsRvc4IAvDk9WJ|rz+_1`QYu&9>ALsvt7nOtK!8|xLk zuKN}MVuL@=JRU1JMG4+@i-w0zkZ9xn!+i-Ld(R{n%k{Ha= zwGYZ)Zhk5(jMEj%r#59FQBs5&XUb2{c}C(H+k0tF*r!q6Nc)laWQnzNo+k|^h3Cxw zOk`hsC)>2NamTMZYe!{SEtAZgZZ?2kBu8b+k!;11K-Zk|rR(SS_1R07OT+~-i8I#l z2@9ukc6($wMkrfy6+{gG(BV*sS{`X8>fquDhvFe$=)Hug@ShtJ^QAbRZ=hIbNSsSJ zsa6v$xrl=*K&NS zcI^4$W^u?lST>P3A2^dlWzgxZyADe7%XLmRdJ;`#pq2Kg^_L{AvZf+a7q!>xTOJWE z-(-eBw{6xkT$D+7oh22ltAplMj5chT;tg<{Ee%M&X{i~8>Z(pG6Z@Gc?V2!>LARbU z6y;gyCUJFGcZ)dmUjlv#{y0z)w$#UT4lXq$r_GQc{i`Yqin8I?YxT&W&|1Vy`#hs3 zNMpZBUbQ23J8^V@v=epM>k>YgH7?F6IAtThN(R}7&Pi2+?UvyN@_V2y-}S}FSQ05q zE2~_EYV)RYcoguRDOb`|YE?zP`~Q)3l~Hjm%{C5%1cC<-?(RAX?(XjH?hrJ1aEIXT z?!jSj4<2N2cjui+?)~0d-*RgvWCXx$tXOoAE(n*%nO=_-_7?Ply2((4f}H9376vs2Wtf~~GJ8C(wUPCmo}ph&;? z{+-SPG7RINS>v4z4>wh04Ej096|ghO)Jy!#e?_IY21D81^e?9h+GhqF7W^-=d6GQz zT&eqT4Q|~yhXf;QL1XO&65e#mrYph1j-=|1m4qF&{-_V3RjsT^?7YneXr^Us?_?8j zFvNcrrT|14(Z6;rg6d0&_IKGj|6ICoGZh z%3&?UvX+0PgGV7M%mR3#wlq=nS~W2hXctWO`#CTR9ouRkF;wtAiix9Q<5q*Cceq`t zXL8w1my0gpsPtBO8DYwemcWXwFv3U zfE~;Ti@RS&!`RP>DtzZbGti{Fn2Z!;0K+EDX!@DlcHC#puYr2uL%ic!UAraGOWBdVqX@>W4n&cT~$*y%I%5!mh+po1pR+kKnT0D1(S?%)L2v@O( z7etH<^_^xXEvm*`4IJ3S;x_UWlP{P2d$x82(dT zSWQ+*NQ3XV<1cxehOh-{*iZC$M5TO}7AeOR<@d$Rf$N_K+VJdoh;_fDs|4LH&#$-a zqYI}E+)~M{GY2>-yUO1e;ahOklZjpqG2&2~m0}FB!KaB zUL#FKGv#~Y!_P$f4HPV)on3l7Q(wL=w+*QXg*(1dC9&zQ6Tf(U2SHm71{L*ChKuRU#V1TYk#w?fuz0X;a`RJf< zc6qRkPcNkB=H;E`NC_za5pq#-pi1*{hJkl+EpXIX>h8_2-)Tb!@e(*y5IY9vJku&# zSI6qZ;KJ*m;UnR)nwB4XMXhs&Vb)nK9a1h`eO9b{#aiCHKWm#67z$8(@-=U#IXjOY z&LZD(;60#^l>AD&F%|_I>)Q^ax@~XP^C^F?gs}qcV^xIb-ST=nYZ^_C%@p@ zEMGbv@oQ8_oEo(!OK{T{-F{~)gANJE+>j80>s^MGSy%c_`?v{(Q@v70Yph@``*zB^ z?+T{a0?2^80j1?ecEh=w{w9C(ewyWhu{mu%BhFJ67QmQJja@SEjBkBfK5c3jYD_=- z(M~g5!nP&;%2;zG=@gKhPb9kgNUO=at?Chly`->Uv(^ih@|hqe z+*UfGgY}IG=OUq%>}J(DDiJth`sXa06QzBA3PsgY23-eY_71Weq|R4sSWxqmXf6F1 z3sIACW2(1otViJ#^yx250K!^{@<1{PgA{M(;ZCF9QGdya)Kq_qH6^l9l;Nb4kj30Z zGz~`zDpt4@5gt;-H!ghl5KABg#!aC{5!vdkj|V1Q#N`CUs7)J_n?u~!`t!qYY!49< zfyVxkXto4wh+GDUc8>|sp9I55Q2NgQ?2BnrVcjj$JuGxpJXH07>#pv7G~Z*6e2rn? zY|@~Gt*e$V+sThYeYZfbmhscY)HI}PrF--%!F#&0M7+dKorRvTY>pLEOCdoID5aU{ zVe-dwK{ui75$4}rbaW!e7O7#k6R*!2Zv(>y1Mbn{mE8u@7l*tVlr$Q-n!9=PcOYn1 zkl{+X&$|T8eQ|qORaF*Dwll%lZM^gZYgejTu_9+%@|fEfsG=q~pejQ_P&BMtgvG2-`XJzE~ODc$?1z`(Goa(cyS3y-cJI8fk@8dJmpY15a)&Pnn$N5 zhvHPM47G6(tDA@;<6-1<=dL-K$|X;(gY@9Um53teAZ$i|q&a2uM*~js${XpXSGD-K zqh*=jcqQ$*?M3XA-Yk(t;iK`@o>ym*8IpL%DzMxh^1Q}pAyYn0y~NW!?blz zQPRd+ET|-5PNd?+*0~3sWD5#?0H-f=ct5f@H2MYkCA=wbQnJ>hH7?3`sPRa$WMA8I zl|0&J4e8owg#d*mxbcb~A<3I(qJK8mKonakp%sJ7(+KNyj-*&be_PCw^f)}4dC(z> zugBzK418t1mqGl~JdYH(n`7h(=fuP2e;QYWvwkD0zWlzMv>Q58rlUpODuIL1(xi2r zbc4!zY?Ie_Mv)h`vqKYlTh*h0!0ysYXpW{zA9&G?Es6pE_3$LFq&2$vW!<`#c&k>z zaC(R8(T~%gb<_c_bU)hEWg4ct>c{Y6wHf_ETEY#dpq`)=}3${mH}4zA!S%Nsr! zYN|oD>#v~w-#1;$2yRWQ|_^e*F^4C>{kBtI^W;3qU<# zctDxv{YsR7{Xo_~Bn+E3(7B;!&(eK>JI2#z=s*8_(BD&19h|nN_af^O4+j*sc3zVd z;hRCVA%GjJnsri*Ubn(>$5ummAKr9iR`r3bVC0Bp?ZbgU`0ZY4GsfJ^isq<+Xl4px zJnzK2NQ502ytrHot)~b80%DOnA1>W7T1&iUMBz2P&CD12ux1hROe^A3FDZ)gJ1Qcw zPK6eEnOnVRwjZawjW(U@03H#@tajk<9q)pc<$PSE#Kec*usY+*v#4SiS51-r0^zHRwoy0A3x`EIW~m+!B-B=*N(5@-BT zK+NC73{>+b<0tn=6Lw_Nlwf(gJ-IMHCa#r4LPfaQ^G*|=**ec!&#vwm&d~#kimCTc zVT2t(M;iK)(0vS(g89GgmTXrx0#j=SLR;mBImKuYbt%L8G-TRTfGKlW*3-ow?D!8rohF()}ax+SBLu9z8#)h-1`n}=rxq$3|gs^Oj5tj|y^-eg=|#N>7) zhMh@kW%D3GWxEu!$)HbG(E`;E2co4t@WWnpj$Q+tu5!8;6&Ck@f(P_ho~dX6!78falMkcmFbRP{tb+<-P%nHuB-%zJ03c*iq7RY$7`BUxF3_+VGp^I z^sbNp?o*h5wyt?C)J)Y|;h|QOlS4oJCGiu_V`ph?ZJ+BL4c0nrsa$H4AP#D49Qn~N z!@#k+O(hLU-66`_{BkF4Ia`<{QgP!lueo-McxkQ=QAy)A9Ip$}<;QCA25THrLb(ZS z3iq~sW@OB_<)wuUAqxF&^>BMZBJ}MW$^J~0&Y5(30$ute&{}QNB;Cr@EiAQ;biQ4A zuB`jZ9`JaOJd(hfN#u5vL=0n zHzILtgVR5ij%MU#Obdg9dX&0G_PDgT?Z?(DW}UNABBCYAE%0>eHgj1LKaPVAM_1Hb z!a`?vU&NSK{Bfk0m#1k}e!i}2qH}$mY6)YbSw>I{P&b}T(uKfOF1tiyF{wXA;D zbjX$NdMvfsj4_NKhUF}X#Z!Iw5Xe$+1bY8@qaBlbZyZK45+yQkWpN!b$C>xV zW7YKZ>cpyMkhivLp7AvaixUB~3Aezd7cd|1!8HZJOaZWzYDA7-hn{Vv<&%Gf!|?iD z;}uIDt7>QC7VB(5W-I+6xI-jEshEH%Kci#clc>A(SHMAZKb*cIS-k;kIJz%m5taYr zy7nQ>!d*m3kjwnW#h47zjsgtJmsuyHBNL-=Ss$5LX4RSZJl}=BIn|v1V87!>8$NuX z80SDv_xnI-Hk8}j^zJQ_N3@!NA!O?QyGqidR@p>LTKi**t*-qIwc%yn=W$hnh zo*2XC8f|2}Rs%ND?V;A9t?0qlypC`BFdA>?SX>-ikC~Qgwiq!LjEtC*+Y1oe*%Nq1 zu48gv{q1+@0L~S_bNVy_sG3UMe^52xN5JQ|ZmVK&l-yP(*%!iTf0xh> zB|s|BaK}Ih0;WA79d`af-}Nw%R!I$~*__q;sJlkY>Bb(;zFQ#tUbpE3_7}KslDceS z>bE#8o7JSrqO*JNQIP0=Twjlq_4Zz?%pjx*U8Nj1c~$+uymBRu_&}N3KGb??FI)0Z zpzD}RVrHOFust6<&>X?oNeF9-Np(qOzHv!6VS628H>BAo0W_xR6kE$Y0OAL05+LAeDUY~Y*92<--Lo1t|w6`&({9|n6D8zmRt$EOU zVfksz-Oy6IyKN_p;m;iLuw&wF{sfi!R^u8_B`s(K!>L`pQ8oJqgoA2QJbRWXF4FrI z0{1U*3A$;35Bz|Q_Fp}@&GG%rEb9=xyxp?y{(eY2d@15%-DLjs2V{{v@uxLeOF`R8 z36=r-wV?Dk<0o-f))TlT$8(c6Y@Ca@xZ0!wA`QygI|y|RK|c)~(xxZY`!-mM2ZG#7 z`93iASO9{?S!?K~L0uTN4_J&SfGF`o$b_$bNCeUr%0>OR02;kDv=2!h%tVG5p{ram z$py4aDO%QE7)6l@Rwn*FTkq@QaK#dqD>)`)i0s=NQ;``=jb<2 zdfmK~AX(&|T1(@44d^Q#J8bUK+HT@;BLDGCl+95>ynJ7}7(sb-8zijc_c2zNwM|Gl{?geF72e6I{pw{F z?V1#Cn?rBrny+afxvVRRSi0XytRjB@JgdS%L_%V8m{2icelApjzHVB5Haex{PCmu{ zjt#*}J+0P@woYs`*JJRmjE)^oG_Px6*85^+V|p^V@7QoM#@>q&vDJ3h2yc-42X_S{ z;BZ3@wOPHKim44|#3~(V#`cGsY-g{B{i}?o!@&;->_dD1DT!hB+YT<<$xmF*Rhs@Q zo>bVFU?KDwv%XgqPOKu(NStQND|oP)_uC9?y0oQW<<%XJn%oY_f|>&x7#dy_c|CM1 zxAHj$SIJR;nE;(SixuO7Vy$E?Iu?n~@S$t@d8c}+VV`%`_McC>-Cyzb*(t97cFo(V(pF31JjhQ-EJtQ9G?j&*+Y3F; zFg2L}4H}GpyusTH5C*I=lCv5aZK4(_f~+>`CWsC36&@`+YwMh`AJA2a@SOT~c(T=q znbnKInti{F>`f!C1p!OjS$k_`t{tt_g<=ZZw=q4vnOz(Xj=bFfDAsEdTEDX-d&jO2 zO=`N+YF;L%mspP1u1$<0RxCz~uj8hAtZNkzvp`~wB&{?1zXiL<%qL@5syy0Q+bd0s zgL(JPy%ylxnupS4-^4tvE~EwZMJgBu!tyd5sG;cTy-|oRDUt3q6a2lp&*RnI<=|X> z(`=nsjxV!brVPK>oG+bGM#6KzWbSo=&x<;$`fMikuOs%)(|@wl4IrJ{c-~&W^GF9s zlbjJfg#g(K{9n84x9-;gmV?C;IHs!}b%c6}#MqH$wQNYYD3=h7iMk+3!mG(`N{FO! zZ{EkpDAUP3w`t3IZ15l?lCy>gfedQZswyn6AEt`N02Pqq#0~*yfpMN}l}MI=y{sGs zHjO(#4~(kBk+LulNCYieN9Ao$W6DNfHfPzcyA58p5v6>;=hNMs`cqi<-Nw8=6K?}= zNo2!d2UG?dUkm3+g9>(zWGIS@DN_`9IQu5YSo4h1q?oo+1bT8H#n#GcAbY8CU2S_u zo+7NmBBK(C+<>y+h=_Fo>oA=+6S(;sEd@(=5iGCB6yykDtqX}`e)QoCXS6F2m#!H! z`BLk-bv@r0qOg@rcrb!r^Hz((XKQZ3*N*>jidTO!wftZ=_y%|9_u?c_J!?xqfFhEIo&l_toYQpe@b3UgbNt~*&xTTZi7kKYNY=v)@O-6-PPO1jX%JfmO)*fVQWiS;*tEKzeK z_r}B7Y;I~C)7w^!Eb`c|QMz56L{@8q$g`mN=;4)z9_wDDR_&bE4-OSB#?2z9zcyRu zjjL;RZ(-g!TZM2bX3Qz1uiBR13WiX{_NAlkqa&nYmToj@9~QiML8t^X=1KPOq04WV zjBNwoTWiZb=LRgLOh^1+Cs;Ar^5&g(ymsoK(*k8WL6>k<@A(I0+W6qEe!0Lu7`+eV zAE4lD&zbp%{|S5VpBnw~p`8d5CZ7G@(N*Z_1wJlV0lRDjS3hS}>pukkrc&MFbrpyp zHl&Gj>93H=o-E4Xm1C_Xw+1+=fvM8Fkah-+u4Fzv!4rMb)G`tF(phe6axQr#r+jn1 z^pS6M>bdmyF-Zx6`LYj*vcMdGt%Pp+riqbDkE=I_51MR9yIwV-h!&JV=mVELClysXEl&FWOb!!7LCGKV z4Ss=8#A!1iuO#L{jGt;Zty(JMWk^B16YHlbZj67m(OH_rCuuR@A$n@3%Jsx45*Nv9 z;u#g#*Dft9>A6LB6P{35(#Mzvp!}Tbr;jCn;g@Vm@52HGusH@4ixS*w^I}+GsAdV7 zEUwK1&^Fzs4RE(|5>0U3M#KkKDaACha*wIH6C9oAN5bs)-L*OvWvNtn<>?Z(nZMHJ zg@D@rFdM5jFtqUuJuw{$TEv>B^_AJV{Z6q!5Koq*!c}ecjg`pu8OA}DeVn+o*;5T?^RuSIY?g1!zJ9E?Q7fRnNUhc@3~*9V?ra0#l1q;@XN`;QMK5=6<3AFUnE_J;2L-M4)kDb&M0Mj840}-V(&$T zy%hiOzwMhpn-2ZsO5*+eM@Ft&U7nr=-Fg&B5^M3p>cUNY$*xtnh`bXv#sYbV4>@C9 zC{hZfsh`}2?Q^s8it5zna_zZyz6ljilS6RLlIe|~Uj+w8*Q}t;y}KH`Bt?sSef|o* zxE=XgUCZYC;5hBwajahFugCmNzVLH}KL19CvT4g{To&9F z=P43CzYmu}Gk|lIXs0N8*OP!06K{Q;|0n$_O;aS}pGUH%JBbuyPRv|=FC8be_ZBcK zA@)|bcYA>SBc=)8)@Ae^U{|UdaTiKi4OkG`N8+IixE<7mDSvF=F7ihy*t4*(B0WU; z*ukOMHLzRqupQgbo4kNVSy=J+LQU;D$c18jOjT=^`Y#r+FysuVrebbjY?P5Pn&eI#?1h>JmnAK0Qt9sw=spBRaj;%H3dsl!URR#e7#qAk{3e-M2Kuz; z)_$PZJDz$(y;rm)Cxmw=inlO*o%vd~M@e@;iIJ$O&(+l0+cYD1y^dvns%WW7Db0t( z6rXMRh~{LrYD3XV`{w1TINO2Hwv~}!?p;lS09VArji}?OLRP7}el$JBTW7MAMV#WS zl|foZvQWQ)96*FtWcmAwVBTl#2UcTFB!vgMGoU3Dgw^4dQf-HI79rkFxEe%djiXCl zv^ZNALv00$SbE# zra2(376f{L>WL_9Wz|SL5C^*sE=7I>D< ztP0F!m%XNPF*79AGGy&KJNRo~Mz=Q(PGcu9w`C_Hrm>zOFuRq`@aB>Ii4-?!_oO2_ zA5H5g&SwC9$w*$&BO1P2MV3=hExa9*DCh4zSr=n_oo5q??tZ9dWDW^{M_AzodKaBa(B57+v+cWK? z#0mEX*;i0|uA5GIlV{Feho~OqM|Ix&+c3U#;8#2+s$ON%Zk_PZ4{1Xx)X&k>|H>X6 zDG0aPdoZTj1Oi4wj1%^^#2wZKC9ZRLS4)~yDbWWNZZ)eynBOE>6a7J9XsOR6Qn`|l zI)$36JCYt>;T^`|hhb1KZ?4YDmCqVhYjRpwJbVVfJh>UQ6uN#hF_3z;L_z!5Lb9G| zC?F&D<*Ngmebb83#FY+inGC5%N~^rem7W9pxx^CTV0Thwhp{1y|4lt}-MYy__f|QM zPNV&MY5K(_4^DBrojcp{YNof=cEfba2GXQqQ%fT50Cp@?=SO#Udgs(y*kCxAV=A-E zCI6HYFidj>${s;p6tFt0&u45H#t1`mdx%EsLe->bV8<{P<>!44|}0psSD-B-A5Rz3!SC zF45H7ROmXHR7nx&O(q0$-t_fxBtK0PF&2CWmg1?W@3T!H4FU9uF|Ae+1sM$Ttnj@( zBR!`A+2YzX(kEJPyaC#DdNzTV#Y1M>sOXx5z8H`-9puT1y;M%f|-E= zC-0sndU^YQ2u&``T>zs8?X3rG$x$(V*s~17beTD!{EoHt$!+;Uv>A@n5xl&huhbv{ z-)M8K-QWI+KO1*3wuXPFmiH3ag39ub#r#?fw9C7l!r2K%n$ zW^Dt{Pp%fK3jL20DUIWk2#p^V@~p*Uq;J1!Ek&h0s__iGqHAYMxZM><(v0y83@;>U zP74SgyXt>yrfj^F<)0^#YlYBVS-E!5BHV7EF$iv`ZwAEeRBzub&>G;txTRRmlSc_wyeqMLYj=S9pGEi=f}H} zj`%Gm=Im-Qx)+@*`ic#H@EpWc?O0`*1et!ckXmu7kz?vnxYdTlX<06Td4N zh4$$uLMmG7Ny-ksq@R6ux+Syc`29OPdK;1$tpAr_;*$&Wx61{ev|69EiZM@OnsRCV z1Onp!#Q%%`fq0&EIR-MCjt!qVW?Bb~gUCVSE48k7=8>Z6VN2=caEp>s%b!>Y0(|aV zn6lPBj%Xk5B_PXFN6=AmMxcB~hcOZo9iVNk`cz${Z^2GoOHT!^MUc1^ew_sAZ4`Os z9aR146DeJ|C_2@;mza@h-WQRPY!!{Xj3VVjkF4vlhiwB=kIlBorEfxeVvkVyiJz%A z7dJY=94K2)t6OQLdNlbGseh@*5@hcTkZ*OxPln|!r+wolrB!hb%jR+E8n^NgH)z}P zG8Q!P;UmGp#w~z3I;%d3>h7Bb;zEiH4{NTFI!TX5@bh@#Q<*?0$@jXUK;SXv%w##E z2+^vTbP@xQs&M!j7b;y;9ep|e1e1g3*8EgWC!yc!_c|kVPbHd`59*)kSiceEH*C*s zE}JOEeE0@qS&xV{C5ve_Zd}0{~X4#k6xL$ zVBLY!dF_iQ@27|Mr^vN^e8e;a#K>FR=PLLAbxW=ollhp!{*LcHKoPv=)pa~}z*-*a z`%$@Rg$G2&;#>!h43`c2b7;JaBh?1EFhLntDFVTnympnt_cO*Ojzz(|HKp4DSmc;U zJjxW5M)yrmb!f_RDK8o$P7HeZ7Z1|ctcmmiQo-up&LBC8@a*5K+6)o^Ugw`TS7QzA zzos|(9()F9AlEahy(uAjJT|7-N-ww%=qjXm^g7QJjb|+xPnN!Jz2A;`{4Q|VtufZ# zl3vR*=yZpCy4hhpSUuCsg=Fj^^RN+kzdl-Q{lF}+xllX`-}l12zlo@@_?ss3F!*I| z&q}WWH#2IpT^*eAJ-PTtbu^IIg5KNE%!)=@!!DuIx|mU`u=sN}b*~})ImqBEGSQW| zgEn0?G-%yq5E=Mkn6u95a_R~%A~6K@v90vid$^m(^1HH->!q{4Yz+DuZ)~gfC-1h} zJw#~Ae}+x~VQa@^vVBL$dVO<$b{f3$8u+P-#3RNo$a48m+kM&rdu>J;a8vx6`~1HV zQ&c7*swQ@O=176^ej1VHxUN()gg-8}@=2b|EItzWSM#HSl~URVfBX}|(EI@ZlPx$3 zPs4EwQ#MM@fJ@3@0dIvhCk(Hp8R76Gju%Tw^gAx9Pap&`@+)r zN8ckXx2LVA1(20zU!2RJpwvnS30@O6%Y!|0A_M5Tw3%d?UrF zN)DW~X^q7;L-^->V9?I>&d!r5b^G1c)3?8!k)FMu-d^hy!lN0W+vdzg!lx%0@+bLs z&ZN#+Pz3yEHXienlD3suB}U8q)z}lB)U)_k|6K_ww6&Cky)Zm68I$xrDXi*t`_gX^ zv$tDSjh_hqf{Zk(sadJhsGkQB7(|GCy|joFYAuY>BZU=qcCTR+P-y;Rwrnw*;MF3j z%-A_w2kPXzE0zpymli+ylWDkkI@J=umVGvc#N5T?8}Nmmxy*PW$vfTV& z-*vXdDAgZ4ckuO3Z~vqq_Es8j^uelx%OgSd0s!|TB6WyZFW-=j@K2n zy?$F$yIT*_E{`SZ4!zGTqbs9YL6H!lQxzf1m5!6c$g3tj{oX(&4L@g~iro@Z&r^FJ zFr4`FYINnhol?^U>eNWn(C2NMDt?>7spR~PFE z-v(7@*R3}zCG#tW?P%B#~%lxgP(ptlZB2b*L8cqL&D-#n)D+b zzp8BRW1sgeV#?#|#vtgcg71HLy0X?*PGq#@d)!W;eOL!QPJ%x8ko>>%iNQpbpiLVa z$&211?$$uvr25l_bw`IkkD;O4Cpk5vF4m3vR+v<1Br7K2HId2Ol~^*SnMYYcBFzCk zY7lBrw+Aokp2}xeaeeGz*=-#ndlFeY{UiT0R)?{eZ$0aiq z9al?Y1R0%>u2bt`S!Oi$zw7Q&0JhstqQ@>^ys9&Dxq^6|St;_-N%M4o{j2X9D6Zw9 zXRN6!Znm22eee`O)>dQW;eVN2IQicFqK^NZXU)%eo%X8D^?2d5(e}( z{GR>giNxo5-{*T@OE<2@8{p_in*Wt)qW-YLa*k>J1__vukoyl!5V}UdE%fyem(V#w zy>7c+x6I*pQm>B=M<_uYM7vd2jKi7iy!YaS%J}WA>;kZ$fk*;)C2dt^_4$MOnm^5e z7^#l9hfcZpU*PYnZ4Y{rn|Fw5z}yxX{%NQ)uwZHmo@>z9k9P5{)PM z2LjRkr<_j&DhP4B|3;0N%~Ep=6691sSoRDGF|OQoCw$yXUdWnznF6Lkraz69Gs)xm zeoh9mq}9hY)xyb&v)%MaiOjzilil1cyw-I|VIp zy-B<}7@0>LROnqJ{o;i@$w&fFzytSdN!MG1iywFW&!ie|+x{qHsxb%Z zOWIwGMh8R})G8%D4Gc~AszuV>tE9F`*=I##ICePv0tm&=hTShp>%9@57~;>-MwXk^aSzX{M=|| zDc?)rTM0mdIU9^C0c5+xVjDWw-(hUIT^KfYD%=Amw8~qIYBxs20q0=>A`c>L41mYeNnOTA8lpmF94zG%lO_K zxarwCZ#Ifo^r=lXy~T`n!i*fA7{KfRoHuwU%)6R7O_hjk2EqS8EC>Cpi!eCzr4I<}&66x312!9u2@YO$y5n-FezB2(r_Q{3)@3O16 zqRDP$S;Kl9QQ6gL02L74S@|}_Fi}Y>!XLt88*3hZlRd!RBntO@)1+o9K;j)Y z1`IU;yQp?w31xEkmr)=bn)eR}lKLC2`4EIt*&%}}bJL0?o z^4|HCU0n7mg<7F5t(0{<(t+4;Hy*|1y<6Nr1=4lnI0bFML4QnrXl!FEcB|J)T@ z=7dSidC!Dtt(*LKs8qHTW2O)nA9}m)MK&NSQPMZJ$1}=#;otGAJBc~Gpj=xFu)=OD z*=8T{J@n%I<+h2ddtiKU88@d4dADgSs?t9VeA>+aD* zi}{xLLcDxh#jFizgd`d8l}1q8C4-q1^I9oBfBLntrZJT$&XRS=ZrZo~Q^qroeMd>Q zWL+nXHf&XwU-ji1_(JlNcTe-8}Q83y`)&z9aMu(jW^>2o*?gYY?9v69#;{0Y#Z9LWEC zbe4DK#U>F$6gN{NFW1&aVkg)AC<-bC>v>5QE&;XuK(&b6Iu-4AXkPLJumsh8tq$en zGdsnexm>^W^vm;ppuCrSk|8D~xxo2O$Va|%;Pv+keo#$H*c6OfrKk`AMwf3xa<1|Kjp>+uT% zJI$b6LjE||Ecd4?+0x8;G9>0P*K4Nd$wFZOPZLEVpcTLBs5i|TO-3{ECHF}QS+R$?hf2os~=$*Y8z z*FUu5n#OvlOWS>pJjKUhi?^5W@x9ReQwJT(}2u_ZHy5SLe*HYO?9lYM?WTVvM zMiXXWrGKB(kA!tk$dm1e4ReN(3?|3Te5UWI+X$ zBfpzJ)J17s@s(caGkQRY-PEiPxh)rJ;g0No*z=RCIe;W#Z|H497Y)BtHjzLnn(ud# z`{pS1Ykt{xNhBCCZk(g{3~d_g`_s8ef%-Z3HfQMJGmIh&QOcfCTlA}e$k9qC;Z{dn zRkY3H%#VL27l5!qrP+m<#8L2#MkLipc;IsfBr>HQ?G8gT#>PULCaAV3dB_(FVD?Zn zsYM}6sc=MZhe$wvh4QQ|2IdTMr>cfw?(Eh3>xbi}s-hILFGWga2pvf{8V5Cg{Cy-1 z-M^a%z&_7ghhVtcwHCINHViERDQy1B*=g5H^!vt+#gDH-IeQ6y&C<@rh%>;-0rz_q)LX5B;U1(EiB#BC zwgl-CM=a_rcP(`pdRmmeAFWj?1H6N9pJOoDbcC!4As6dHv`fsXha-6Qw*AS${QBM+ znz5+A_Xl^~)x}2#ntLN>CAMNxXqYCQFy z@ORAj80(tOAP}*U>Ym=+AE+6o>wxX$rdn*yL)o_mM8iA+$t(5bzR2XY-`wxJc4^NT zR;b4C^R0n(qwfRWEPUT*liR14 zb=eQ;g#zl0%+7qfw=W@@F#SU}f=72g)aZ0vq#EP|L|5Wy@@nA~1#l<3#Bj>1<__Y9k!TFdYOjS8futRNlXT_S|v}*mggca&Snmm)q-XR~j$xP6B;svNbEZToy%pq|;pYEaR@pPPKt zvs}aVBnbY5)>=iIG=?!bSf5@l!<~0;CinxRdKYK-O%ke=Q04?i7ZVQ&cSU(269NCtC7QMbvnFslJ<3G4_h$Z*}l<;#QS8cqS4t*6q|g^&L06&DGQf_tu}btR@6^f92PN#sW+TeC{YJD~+y zapS=jJ`|E04(>dBLL_6US#mTGeO&9MQ7-$i9WKG-c|qlzLRJM~iRVm~f7TDm%F2td zsuHa(am_%Q=hL-t!4n93HUdHy5FF>;a8+gAOhNz5QWD@nh7f@RB@vE%`X=1Nm>aIm z-A4Vgg4*vYxxL(-wticihn&~tgl%%{&EaMe?PY-f85i8w0G*!ZPSk;Qv9#d=Hpa+O z0&$doRucyb5)ibhpOv*NRNeLdIxzRtck`m88}*d-sTfuKn~V5OZ z2mfLL_EcqgVS5uL?lUqsI{kp{3++2afs9geQNthYJA|xb)NIaSS7IB&QKo7sQMGyC zsoJ)}5+|RnmOki84uK?>qOQBd_UM6S0}O7RJa&B_d$Q+4^i&&*v_XexYW^~EQ^M(Ls{6|LzyRCx7}VCj!nCQ4Xr@uC?$#ELPCoN8h!k6gyJmyg+(PZ8SqY@odGIM@M1yS4HfCX@@BkCiv4YEU=^*nG0k&1e6AHecAt z0FqKG5mV6EyTXVb5(L(noMCy!5g@_yh*lZL>n2xMV4GP;$xDkt+FBc(!+5xB!7;We zdjbjNZ&l>$d;?#L(o|3Jdw;cggV_Ir40f(DC|tVABw=8Rg5wPP7}|q~$qW)47YU^( z*8danQ?zYw+wN)=A#VjIyO~pEXFee_?W%P^@UJa%^Cx;}>TdA)ao_HE1;l2%^cV==?8(HZw0!h>Yae+1Axu^PM{8 zxS2+YHow~N2URzZ>2juH!bQ<_^iyX4-EQ>J~> zAu{N33sO`t)%1K#)H;>&@n?2n4t!7Z4;Mdw;4 zevqJ?ArHxNeUQ^b)isgY^lv%nBML43DFEe_iJg2NjJc{KO}nGO%0*hR^=5j=r%Ard zvc&TwuJShOdTy^C>Fgn}LbRwQ@ArDLp<{2TOD#lHY`Gmg!4w=iBn}YnLBOB=UlAc{ z^Ql@gvnIkG99_i>Q;BAFKpII>Z~{j-1gIZ+3hy8@y!H-GTKuwnKhE5_mcwGf>f-=B z6OqITLge{QD##jI76&`ibS8UQeZHMNoaAUgYfHB@ILEBJf3RMDB->E;EbG@|U%-!R}lQ(Z4dTh%vxLj$V(kc?g>M#Gas|=jf zBA>L_TWfdUKpRzsjre}UN)>nXhu2QP;s9M$a%9C`QTO{R@a`j){?lGK-)z0|bTO&F z#~5J%a`3kRsD?s~GAx z)xZr!f)~>>;8+wlRkwgc0U)s{X1?l%%s!y?`vi>3W}~*jsyfRMkxn*R1L^&t|FaAwsA4 zC`z3WGRv=`kWHgcL#V)mY~n}TN)!-GrGx1f$dU+&f5ud@55}-L_V^-hoG&HMIz@Uy zX*rp~zF#S>5t@URD>RdP2C?>DoWp`+@I1-Tn?Y6Xw|^bipP!7`d_9 zDj76My?>nEEX{mH{ZAy4hbs0*pU@{Hai-xI3!eitMnKkUt5)8!{`ClxnW8btOsLDt zm03kEX;QWpChN#m?^eYu?3t2f47NRuc04^bUnbnsb1KTU1lC_IntSLzk%xUaOYeDCX}~(4=|3ZsL`W&(a}_ zMMR=RJV!a&qK}nhxsi`6DIVdt3X|^qSwc-#LapuANpa^!?&hU=P^rv7K+T6W!polK zXi0;a+ree=Xh#$_U5q+$!U5{WE21c$spRI9^xF&3%n?C9QnOU@Cu$Jq^!S|ck58a% z>b74~q=Qt{YM+LX_w^?7535BCNg-3jX=DEqaR(=AhK!YiiANx3B|5qn$}iX)xLWC! z?HU4Hrl87<|3lVu$5Z{ifBX2BPsu1nBs7qOvS*Z)WGhMdME2_1^U_3CA+jSYd+$+* z?CeeUCiB|&_q?zA@Ok~tAH80==RD^*&w2KF&Uwd03XB>3Vqk#JIjx@-8F;nk-m#Rq zL@hDls+mM}fi3!n!PmQ(`}58Dt{Z||?nrUvJNui#nG_sK^7T9!Re~1;yem&ueOXV7wODK!2@&s2?8)5>H3w!duqZD%o~m*-WdmMaX) z&oW&jrmnFLJfkrrmJ&#IZ0}qhRShp)K+9BLU6QU|PkEe1^h;}pQ73jGIj@M$`PJZ6 zw)2yQPuNVoEL7HS%0 zkI&rK#8^qLZ+#vn=xfIq1RPKQ0512J1G(8F$8U;V%#f~9ob9fICpq%_EbU&uZij1K zF`;QHKGBk%sbdxd%$tY2Ur*+o)7YutX`R`k>z~h_n@X5dupv3KyCC5nn>6)y`U!m9 z3VG$jAhzJPfl(9l-Cp+fmp_O#etbQ_w3Ek7w5yg4A%|7QNx!fX@v-pRDHl%7H~(*d z`iOOpOA1mGT{<+F9=Dtuom+f=fHFLi=UzF%E6Gox0=G7{ny1Vr-^5@^KQ@e%Cj zHw>qq>IApq;!Zi(m3!2_Bo|LB)lyeaRp?u*5fHTAj1SU1dpKYB)7jjdvRE_1d|OAg z>52M8a^a9jJ|3N?KkAc449?v58KPVKh&-9treUwt@%Q;-?dFD&Sx3Z=ZESCiRByhN zkTQScbu9kV*m+>1tCwX2soZX1IU~uFKaA>s(0WpSq{masRBGd;iTeX8vUlnJCH(cy z@h+z%Yqu7wb_;sblfm3-hF28PW!e0OokbO<+ttrq@#o3!M7BB>12p?&7ZtBcYiSE>Cel# zcOdm88@WX!^f+DZk|FPVg5hJ8k3?>1Iz?D-3hEH_txU89z%8mg3*ZL(PKqh<3nqo`lo_$Bwb&d#GnUu;BbCZNT(E6e3>d@i#k zQCb$n&=h7*&b*3!?^GLV@|Wz3^_W|N_r1shV@xk8JE(+dn$;^tTUs{BQQR6O7cw+& zqSWP3ruC=9T4fUL9M8`zJN@nL)D%*{QIsUJ8htbN;mJ?M2_3Xu@Lkp;*R5w_w?5wF zgbliDY%_O`nJB7)KDK{evei9p8UTU&C;MdebvNthW3jx zmlMOC^+k^9DAyjX5D8*j`@$0<+fM@TtH}PG{np*l^y}reJcX#%onL44lrWf+kQYEb zxElDBqp@l>HNKne?nGIdWPz_;1U#cvZt&N&v(IX@Zpbp4U9XcUD0ERv83F1 zO~uaY)zmJf@6-zTU9P^|TqJjXW;gM2ybwO6LFFyb`epO^U+0^)KPIq#3y&(V%8(dH znX5Au{wc5bjm1gOb~UEy81=Sv)OyXzsfI7ai|UM8NzRG2Ze_9phpDzThc1&>H+ssq zJ}(tnP1j6+gZdKv92AuL{vN0QgFk0EcDkyU?p#Y{nYhpfi>KZHE?SVky6g1~{YgJF z#vtWxFdb)F4d3-3%Z}-}n>qm9@x=aSv#44@j5- z@75$me9+!|yDfNNxs~^}?oO5VFOTF0PqOpLS-YMFwb+S#i5$|Wl8slZ;|k?KR5-qU zS;~3o4_S(Ts(#yaP9EfvxA(Rn8#n6eEsWLXu_m5unqZ5?3R??OCqpyKlJlyC?R{N5 z*EUAiwqNi{d15ay_}WgS=7q|uhQ4FubsK)^xxCg@?7z@kz+lczyKR=e{m2iEF53Q; z+-SF>TxsvmJ~Z~;=2c|?I%EF!z$vv7TaI|IZ)zEW%T0a(O;x4zuV@Q5QhuC%?H89c z_PEn^K(BCN*>*xASD*7J>M8~JoM#C4vywbe84YhM4}Rtt5THuryDaAbACwY$R`6ov z-Xree(R*|P-nXnCdT&_Yx$H>kf5+g2;DbOWs`dX#UAy{@_Y^!@y~60bD`BX8_ht|} zMv`q*p*EC3aXG|`z~3HS`myH0(r|=a?!Ypg8Q;kjoc@B`m#oBvmkYRim)h>6`yRD9 z#^-lP=F0s+sY~>oyz3rQDX%F*XsOjb$9k^a0 z$ZdWq>VHN&e{umR)NOHAj=)`8NmqvsA)R)*V)&@($(N908Z#V5p%i4@0?>eH-0P+B-aP<=zh(zyA-HEii1iQ{HPYi4Cy3a`|#JRaMtaPf!+$%a3u8NlekDFA4u7AtIbps5e>S;3`&gf2GX{TN7PX1 z)9n_7T1D~+3l@7QN7tM# zad2ahe{YuBn=AZM?~uD55Q6JBA-ZxmzrApvQkV1%8?>}ph>KzyYY4vaWRe6Y<}FwlIBI!o^INaQqb!e|60|zAl9^iwEm26{HTCh z-7H#|q^LI6uFFE= z@EDOl`v!W8^NP*WPs?s)i)Is_#mow3Vgno*^~0RIn0gC1xeDyQgb%81Es+v>?b>54 zLj(J?dPldt;->Co1+(kyjTxL6>Q~I;qIwcy~s{Hb}@Ot-iq0dP;IDBhU8l%JAp*PeJ)N_@64|EzYi*7Y0GT$DcNjmR4=_(S19mtQ~+7k8|kQOD$$0dG>hflT_gmy6CWB~R{7wCKO)F^Xv6 zTDsaiE>-w7Te|3Lma0Zx*2kKmrZdiS13bB1uEDspceg}QVFXd?azp-GBT)w44ei{HJ?eUInp_x2ed$yUos9}M2& z4bc#BY+tQ*l<;S)aht1iv}ozuvF#f#*=Xz9&J~%qvuWSGn0w7!N)xk~?QENn$vWa- z<22djc4{=po9MNb(-@zvG3D&v?U|0>o?Bp3@``^69&%R#)_=6e`h@m6HJOe{sh3B3?|ncRHJ%PX*AYo@LnOgkl#0-OeZakQLNbK!UY_H(k_s*MVEfJv-c-D&0y}&%I^BF1ecbVZ^`xy3ibGP>)EGO zkNYgx6wltB$zCZ>U+b#oY6=Um4)EMb=?RA~wDlm*KcZX(K6(+n{hJGXngq^TKC%jd z8=K9qrNm;LmwL~O&}0@T|K-2^>8N@AEJiXRZmBzHLH1> zE=k;>Bx(CgmL`E7uMAx+G&Qc3C3{7-#nv63Ynh+n)Blw?Jh#6mAuGw%aVval=U*A? z5jSdR6t?FZudUx`@Nt;+Bqa?k$#^mXA5;sT^DEEbmJw-*@3wv^Q2&}$U5v?=|Gq?p zLV6N?4DEt!OO#{eYfHVL!yl;QVt8b>ZWaZk)KQd?dz|8)x5lx$Ih7o%b}uu7)eyZ z_9XIrKj1eIS0iV- zWE;8uk7T^gBkWXQAWkkXZ1vl+aRFx`o7#u>6jyNZcbE$Uil^R&PqB{duvNF!Ij#z5 zN=}|x8dOW4{!y0wBeN+W7;9~)nGr8*HEAP*z2C5@F>s?q!pLHjp-9z-&-~`-C*m~P zNau|xm(t>My|?DN1(J-n!dRm)*)&B?h8;JtT*)*mbM>#H?i5b!Vq@eGmjvY+65~Zc zmWJmL%38j+f7_(i&IfbP`Reu#Zg!IsF>2n2tYlywrd&QgFwVwrtC2>{$z`pBUu243 zS0kage7nW4Eu#Ca;hHrm zz55^JcH2}&Pq=8lI$QtjVVnoS`wO1PYi$Zf*l4vZQWdlV)>Ks}M!&!PIy|8^Z0|TP z?3o!ctw^r=ghVmj!XU5ym9FkCPj{2-v{jh?`54`8MqAmf`fuMzsk-4f|2Qr2;ri64A ztTg4?Sml}77AulnnR=eVE)>*XU|+FgsT4X-$`%|n7KM^h*~SiLE`N{R7_-TpUF}*L zOrzE+U~C-f5WZ$&BORJB(&i!Tqal7rmc)KzqkV%ZkPWGv0SBD*f^L{4yMSH-L?nGz z`)A8t5(bEi7oW5yCmp%Uyj5hl$etB(t~*s473~EAcN70bm@gRnWlLa=#v+DKkIu$H zdEwkdUtyu$K!l(XrfPfObJXkEf$cVH=c?k|B&#BL@K%OVBf{y|%~$qmjZFoX^~18? z)MqIB`Y`v>2Cq`#UX1?8uD;kbhMfw?;#qPF75+)b>m7_8&3S)ii%IM4;`dOhXP;R5 z3Qbn5dD*+Hel!L;$JH07$t+XbxtG5tOl|6?rD6}|%g|psLE7_Pb(7JsB_FMc!6YcM zZZ@d*?il2RmB&^H3{u(S++I7!6+i8?kCJ3ypmVqpOB&2EHm$(W(1LJ13YEj4R8?~h zJ5ZE{W3YQGC|chF@AuH(5wGQItxoR!)uHvmoLkhZx8$*rUWW$z`=W|fI)_G#_FZ2J z?)$0sxMnZoh<@u)UxrwXE&m9*m$kjQo1Z&zkA%2Qwm!{I&{|L~d}Efvv~M2f6)6-@ zscOXL1~r%qb1aPyzODraEx_0Z?K`{nS*$8Zc$0f0k&0!(G|huRQHq=}QF6~vbtU;* z4lwr`45rQ84EJd(t=RIO7Gyg4!-Z9UskfwBlPodq>CASogV&=7)m$AH@`-m5W0;wK z`?C~{XPleJjhAanlJ_J{$;LYYT-5j8TUz`U){AuJoyIza;dy*pHOy3$mk5nSzlKm% zn9-I@e>~oBUhDa^nxz!3&yT6kDvU3sy1CTEUY(R>$SQn&$$3s@TvbX-z|Q_}R?f)K za7Cwz>9xLHXC_ML*5c*L9G#1V@8|iWV@BhojD=6LIb_V1Yg7yn6vlMa6A1b+RjV%hXDo$7P?nWZdX zG%VWIT>0#ZWg@cWrPO?nh z#&ky2<<60)NDXyt@H%6+oJoy_vxSy|J|-U1EH?c)``wa-+SbKF+gFV3)*Rc_vvmWJ ztWC_$9b!r&ZE>F&a9qqA%K>xJ(yYRhKZM_BJ9bCM##$;Z%yXZ3`4@sbeVjxs--M=> z!xPJzz6N&I9txEE;Sh+_#G`IgG3}I_i}N@q9UA^}?_zwL0l7Xlt`8CGziGNd%QO@m z>d+OM{9=v7q5(jTX#?cVMbraco$@!C-g;EQ=SV~@#C##p zrfo1&IzA&QFuNeN=|kro%|hLQhVY3TP;&JdaQt)kD?`SqtG461>r{15VSRERYuTYz`AwL}bA70T6*LvB7FJK(&-{`E!QA?=rld!opqR26(fum5%4E;Xbj zrd5Zw(o!}*9y=UToFiB_ZpzNS>2j~2ceQ@OnjiZ^KXl%FczcqLDV3%FuAJE;h4h)O zNd1Y;!`L03vBr1jLSOa-g~1nc@{A})7cM7{%G~R-ZDzBskB>xA z5@cB#FU$1iy9s@By6Qp1O-9a@6+OgMotVayB+m(9&jmZanTFn0F^0LmYc6f37iG%g z)uP*7`>F-5mJOAgn+ue`@(l1KJWdzX{>gNDNcHkD&9JhoIWh~mH4MGpEvezSJ8n#7 z^DYyK+kP7A6n#JJzoPvGXiQx460i+KwIU{rIXY`Da`pN2{B0k@Sue4e zsJdXsS=}BL3p~|jcUkW6W1b6JA%1)_;o_^haoU98mHE$a@Ukj;6e5wXXe1H|P_BAr z@UBc~E3jzyOyZcW{7RG41r^OSCLSS&rxf}Vg5;^w{8`B!B&m&S2>aMrlT)cW29O^`OPNP{%0g7C7oSBRp33DJer|&*|WKB3fqiz?3e9tiPx=AJQhn} z5gc!NsF?e%<7suKuFNfKZt0oz7bD^!_enNw#>*8L`YmyeO7VCW7S&LwI^=#Dk?zX> z>C*fp3)MTQk2CAa&}_+GoEMRtCm6_~x4gTM$GB#2a#&-8QTlv9pTX?) zL^4@$X(Ydcc159%nl-#srwocUqSh2156rFRLa)z`Hxn+gc^B#F8xPa;HgadB(tTL&NhNT6xEiuF`YcVcp?h02 zsI;KhXX)!`;2irxONqI!&qO>o`&O-4zh+3e;XpEpxqO3q;XiZFQoQAlmlj;{o#(4; zSKj^g0?wtNi9SLogTYgVOqb?k@qH>zDG|%&uJ4voO+^#I9^t-&`G&lU9;M5Ujs3XU z+H!^+H>+-rBFADkbkFL#qTO~kN}LjcDrS6yD|$=avib}EVO{mPYM&Xa*}v{6HO#=gPmObD7mqn2)*0++pdf+a=r3l{7d&_0M`LQ{c>eu39emLp$5X-)>BKbs-yf28oxY`gt-Z9X~g4>f`iD6~lBc+c|bL zbdDw8_@&2JHE6mTyIN-wELhkV#8IHTmD;&B)0;7}VOZnsv+_pP_>Pa9QAhH8YJ+LS z>aQM!R%*t0{QX+gusa8dC|4`uxQt&O5fwJ(S^q}-LTt=5ynV=TkxqO(NpHI;z$c0^ zY-d@m3=?0+-4xfqTpso{<;q&fa`pD67KPR#?zG6|<=7z+++3_YF5kxNZy)NQN6q{~ z>f1j%Ma*_DTM2QZR%OWvjo$7FVg8;y)6fkyts3YpnnG)}35|TMSHlGq31_bMe1FE- z!(N}*)!wnA8`hUy6Se$HuHo#fV^{hLHoOZ+3qGprCg{dZ-4Dme+Ch=Y>T5v zb~ZMj`0TOPRsyN_*m~LiBkUr-?i&mk*KTKMJiPSkVQX=34y)9}Y+=6YeLYERU8}M$ z7SmO1CRSs$Yu|8dDspA6?}Qj-P`&!aoshX@Deo=?r>WF`oJVB~d2A=$zu$~?ykgRy zdG8f7Gq<1emHH-jXM*?~0SpC`^Y;K|RktgK<0<&Oivkux+Gu~oW?a8RMaV~AupA&^ zEEykRzg<*Jy1qMkwDU&js>)(X68mwg8#uRul9~C>0jnRIeVK4gz64~fAb5H;c){~9 zny77lK|yypD$HLP?!t%W=E={B#G4z+>yJ!^>T8r<`(*t}lRCtzHb3b?^=S&HbiH;@ zqVc<$=>iKsd~=E&>buY-f?UE%*}B!QiO;j{yd~vsuH=9HoEy8cAZV}CZIiWI(9}2h zxg+vubM#<2E0y%=l#8d$>~cnXhnXp3;$OEj6y>F8UR!v35o_|O@Sl;Jj=5 zy~(f2nvQWl?)6FymkQcuiOIXM>k-(KD-)Ev7oMJphVaxB2~XV(Yx%w$dT%^D+nF%( zvPPJa*e;IGYkBF*c~8NndD_m$H1tLW!=m1Mx%QK-<7&9Dg8YvrS+Z+wUfIXW^852W zN+|T$F57QZg|V0$7dR-zPiwL;U+pTiZ}9Y_5Xv%XH&(Yfx4Rg_)1T!w$njCRNAcm6 z!{#E_e%1EnoR6_;D7Nim4S#s)u+OKT-hvJ!A4*EBvee3$BB>nhWf{=-eb&v)Mv5}C zQsv}@%Y&{?*@5HMkk;s8WN6fp&-VFo#dPPLwYW&-l^Yu8v>U2ya|3)#Thx)O=qS{% zA4t&34@81UE{~wve@te+Q%-%@hwB#J;?<)1d9xAqT$y1cn=t$_l3M)By$wr-(MxMz%V7F&*yq5VZl<}XH=>(xtsc0|bcJzP2B zXlXO}MpK%lFXM6ZXxPz$B+o&zenBYR9DC7j9`I<(sCDtVg;rQ9xmIbKbItbjqzoZD zX_W4`WftcfbN&8^-m-cMfrwT^UMvsW>TiLgn4BJ-=8VfW>dHav6_nSgJ`N7xs}}pEjpJs z&U2YKwtomFcL?vljIu^_iw8M!o#Hl^y=UqIkIB@t0nA8}W&BFYKceHVqjlAC#f6K{ z=2rQg9hwGd5*c%hVuu(+N1aziQ&pMgqdP_17UFlEUe$}wuV zKFTY7l}F8ecdJ<}*LcxyPMJM&GS0ifnYg)dLOr*!&~T;7kH26mpq(4K2`<&$l46!+ z`BB*&p7(fOc&BV@ZXu%6@`*Hg{P$_@nOg&bNq0&GBYHBNH;V50Q^)hjvTnpn*PM+p zk-uX!b<=JBvtqfR^JU_JcE%n{l8$n?KBds58piytgAfopI2sdDtp5Ah+}S} zm@LR9t#HH7*fW$*VlCN`XDd1)>&7wB{+7yTJ+1Tz+)Hm8mL0KF8$G}Td`yl5*>a~1 z0%_O^TC?rDLkq`}*}Dfo72hbSDBdV(y*0)?#j*C)$CI$^orRp6Cc%-F$)58ihAoSl z${(=P+hKy$R|ixu`dOO34d(_^hBy3+H?Z~H*1uB!O@mspEYvV>q*@vTZiGr}7;R6H z3NFi}h3DKA>F_r^w%oxQV%?Oi24MjI=*76;#hZ7J0%#ZoF^siAt=t@&(orkp+zo-O=e5mZL==b}4n^1!V;# z8e?Z!YJ~N7qx8R#^q1I=k(0`QS1Zo=^|7BhNLM~MP_bsP@M-6X2*>otbsaxGhhQb= z2ezv`Lv3GO`L3RoWipU6{!OG|>2mgTXOU?F`qhkTke+P_ zuV9Oo-jENmC*#CjjP~kUxtK_R#iHxbNTx%!Y(H*d@Vd)aV}>n3+c`4rA0Z5$wc|b_ z?ltM8c3N>?{8Hi(V1ZWZf0!R6jm%FWSpYB(qToVkaL8%70GKI2*{y z>R4?vYlq+sVew5++ieVZiHd+@QwHylwiV%iLPIA>)`9-ewhP>`qdpUDpLTilBU%|> z@{$g8{_Z_D z1?^n_sR1rh3v*>j_KM}5>f*lL61oQ)H;Jpz$9S7cOjla`ykBb+#n3G+#t{>dnhkRa z#XGL~%V2Or<bQkZyqYI4|}QU;xdC)-+Xh~vtNlkG3UzvW-FM3pb2Gb7!6QP1duTed)sNE~tUdduQgA~Y9oN>0$Tl1`u@<>wraopFT zBL5zJU44D)SzG&_>t#M?X-oC(Yq}s?O&FEt#>dOkG)@G#EzswhJlM#kwpB1uf|A|73Sc1%+dJQuQh~T!KOsocd8BUpCO+6Q6V2 zCp`JKl0|D9S$|9Bc!~X2J^6t~T)$Y*6e>@{{?5%c!vtJOC$(OAQZ-aUCa836vC zDc;|E%nT8eK>Wl{D8Ob;In7FqBN|6c)WYFNmv_wnhSObaU;VdN zZu90JLi}vxASET3TlP`oZtPQS`K801au03hV)_sF@}zXpAS{1eL=Z&-EYc>t$N#C^5DT|2c@?*1 zQ&@KfO3(3NrUGZ5D?A&_P>dhyo=Ax(79I=pnKEsfvA{g+IXu-6GX1lyK(eNx*T!go z=cSoODzRc5qzC1#1q|eksxy3LyYF#j-xf*FQnZ*pe>%d#v4vA#uD}V$LY-$cm}=cn z`nAQeZ-50i=jXk>n#2=e^-8IQU0%MM?&x$&hOt|A51Z27xd;)$&2JEHhNMY?2&HW) zkM+iIWTGW@#q!9?GDn2m8{chPD{=8#s+IYsQ$uH0 z7B^vAy5cyYVIgOfGB_R5mTWkk`rYoek={^ zU{O1CB}(z3o0;Kz2MMJa5{-v$5B+ZZv%P)@j~wdCEh@r~n~2T+=mnJb^&ubBjE$ftg41q+5eYWYy2-mR6-93}$xlK4pfkEzTfD3vfg8bMJ0 zrI5virl;nc`2!4&zzJdC=_q8{(^hs=`rj~b#r0rfuCgP^&hVE?YYXo+IgAwFt^i4*?Pr9piZfEg3{b`H!a4>P(UcF^^TV6oS7 zdAaXjs4t5Ut!1N+;3F7(Uxg-Mm|A={BY_xrTgv>#qs6`s_~4{f2p`$2u$TJ~+eCmQ z_~NXD6HwU}*w_mJGK$8Vkwlzn;{1L;MJVDDMF?i}7NNxnfRhvUX8(6_B3&B#cgV4a zsJC*}A(RgUKheQiC;si>dKmy;!XM`)Fu*FlGy~QFmbdn?CesK&?-hoiav(#2;se@? zi%eYl7X(UCii+?y4U!{MAcPgVE&+WQ`B?Y(5b5SF30~s`L<_nKe1dg|!yL&^^$yGt z3v;Z)Au+HW9PFcDtIiCM?j@ZN0Q3&9>5F%eg-*YMgKtG=Ox9wzr>Jn~2!fdD2n&?7`60J)Mp8r#}L$ zuy_-hFd8W`yhH-96y;R*VQIerSm3)r-$dw(Ebm#@*rNj=^x)4KGI$Wk=2Y?m2t(rE zi*CynaoTQ9Rt@?e%C&aA4mS_?EZ|1{$f%FwLVqXjweg! z@TiJ;bJa~agwQnsFPzswiv(|aS}&ya<8VVkjlD`MGrFpqxL+tT9pE6dy>v1#l}?Y- za&olGUtbiRmWB&OwufBayrx^*XlxI9bPkr1C<|peP(KGQp=AIXg`Dz<3Zd5ya973u zi;0m0BMPOh660mLW*;xX1G8ri7o;4*pK+1thkf~%M5xN#Kj&TV(XI~h2#;Qe8ByBr zfE;ua*Y%gjv1SPOBm?)@ zjormp^Wb~Y%fX*l@!T^E`Wq!K0^Fk`r}qa2L=kQPLJJRq4Pj=;%RXBlcRBzf6+l?a zBMTk=fPi2E5RP(&2S9iOh#)+Oc?3i@9M*~d#D7wDuM<59{MlLz0fDcz6(^OYxlJZ# zasY%sfat}8h(Z>^1q-Ph>N|ji8Gy)vV`cz>h(Q}WfVeDYegH%;fH;c>0X`B+)EU8I zc~c@Mo1s z#Aql;!ro24W+b_EHD2J)?H#!z56=sHa+ODc4SvkQcz2S zU((4ia@v1ExK@HDRe@?g(C5by5Xh1yg#P^cH`U_q{b>)$v40m%^aAP_z(ArQd4yK=~3_B)&ei};ia5e3oH$Zl8%m=DK< z`zL!49Bten{kNa!Ezkxecve;c;-gd=&dY|K$6{20Y+(%lc0;*}$9oY3?Dd0vMyYfR z$%eg_etzcdWb(dvfrCL1fGBr-Au--IKNY7q@Ozg$72)3R2m>H1e9F~v;P=Z>UIZR@ z5e`W}!@8fEgz$a2{s8Fsr~O3f(%im_Ul!DB9&-KETzSZ+;eeS#5keWK`0^O#ULPgs zQvuYi);*y7UB$owA6{Sbbe0#&PEGc()U8s(cSj5(VzXS|q_h2*5gz(G0Vf<6+_}&L zxE-yFp(3SGx}7tPh!E#MSs>~H^gm{VoNFgUY%CP7ED@FgeMO0D23PR{<~j+=d@r}O z^*w6*xe5Zs7mu zXNaC7<3%O`e_oU|BVZqdXalTd6WnMxPNssDM1$g0a7<$$;3!V};n6_O(A;?djdSVA`;&+^K=nW& zp6xIFji3P>p}?Dbb-#xK3!sq;kRcx-fuI4onl>uWeg6p6MgeFDebhfV9 zJb*?HBr=R(t5B%7>3~K8JAy`5<^Ck1b5Kqlf~UqMK0sp{+%*MkG9o0uo5BpB0cSh# zUkD^o(_ljs*spT^`59~$C3L{Ya;RG19R*(ColR}f^*ua))JzFpH4yo6K}^7wC)3I|7i)JWE9lgc+t7Lrix}}^CP|@ zh?U#x4K8tlEyV$*OfZJtXeepi{cP@ODd2oMm`Ofjd(>YZc;EFU*bmVL2j}icZt$J- z`ww9309NBP+Kzl;`s_oWv%IO66OHeL$(iI-AWA{~4Q8M%tTSk5BbbRtLJt%at(wCh z{6IHA$(Xx*-g-foM|}5U#<|hyTx9* zKKy;W-*zwsoB$LVvgKD~Y3O?%yf}bg1Sk~y(}u(1Tn0b>8Lsr8)U%}LqSP`(rKVHUL)eT7=$WJ9AjlF~{G zVW6h-YCH6O`wJi-;U(El@}2#$WYz)b+cezmuytbr$}p}Y@m>%`wvcQ?2ol)*WgR%MrqkuSw1o>NSM?!4zB?ZTB&}Mcf-54c^yc;#vsb z3E2>?nuZ3`fnxj1Y$M01IK=<#;3e?h=yM-L9hfc=rgJeW@*rRIHh0n)uMY+!=lhG? zj#Fit^%wq`>?D*3kXc?;+8;3{{y zxJl*qKotw5e6T{?f_SV@otst#eIr6eE9H-BgC7( zDo6=_v$VS^$U<_K-o8o^^-`=lpDQi~XDJe%6uP=$h(-X{MLlm*5y=!lMuiXV{8S#Q zJ2)3D%q6h`?A$0YlN`*c&&b3?h-VH9V8&r61|y?OezcDpnLkh+(~Rhm8JNBP1A6*% zJVk@cMxE9X5}Nf15gb2sMr6lz9jr+uu_xvJ;7Yh-6Rlo#s4e9F^_m z9~t>aALEVsu*d2F8>9`vTQhSAY!{3O7O*z@Bh|YEVqJwY?F?X(odp*c(3ec%R!Ysqfc9DQ;>E0{8wfRy zLKH#22{MkZw*cGnr!9(6xow^-0>-4<{z-@(bisKr&6ibUfH4t{=^flfb{j7VNafOS z=xO9#^51Rv4F`!edk2sfvI?Y@78by8-e-9StXgG@Y!{FS1V1a{e4v}656&t{$Lf4SQOCRARZ%dgk?UDkM{fHw@8`#(w*EvhknU;IEL&OE|mOR_QU>5?hy# z9=Wg_!fgy=lpZ|zS74FykdrTC526XdR}SkgD3<<0>#aPOt-SBWpopTx+%SvZDE|;v zoB#-me$c-^9X-U}3Xa1$9^~lNcGaNw=mCeBl*bjXoj1mU{)|H6ar&qSKM#xo>!omZ z7&HTy+Dp63oY*0s zd7@LpR%3%h&cVkX^m{R0CiT<(L>>vC=hbe~j{i=-Mjl>vD4_*kZi$?39|6)7K%qN#?Dqd(e9q=R;h}5ezL%W{Q8scZ;jJRcsSTK z3Rl1hK==xzwhgkb^k3DM4h&Z`0igrU+D}=!y`vS!wX@|HUdu-l1Pl2!RN(>y6(1jj zgW!>BUnH8R`3!|oEpvxlr$NW3Pahyg^oJYHn?Ntm*9&3GbMO4wS+~&Kx->pF$>WPp zT$BuWkB-1>P8}s@M64wV%ZLzmlPb#2b~+lra>J{NJ{JU-8YGO z|XI)*=3-a}^59Q>SjAT=c5 z?6BgZ#4wLcr;1r?`2dwp52gq{v%dVsa6u^^Pq_@HNGC+Ofs?9m58QvZ^uK|1e>c%E zN8AopHTl5_JWL*xlcRBcafFiX z5uzjz`8y7DzLcd1n3KPf-V(7f!|L&`@olb5@ATPINo%^3tW+nHkf+o82)Q zOqQPEEmm%++=wq_O)cC_{&Jn$;K$G1t%b7nVb6=9wu8=jcp-IaySYXGumX->-t~g(rvHaMzyTnpZ54aG_HnXY%nc(EiuZ z!<9tr#n&?JvHiB}YMGY+8c_DB5Ky-IpPTz0n`{1Rqu@gE#(1a%JUAD2&Fmd?(a;H^GHPx#akO_1(^ zpm?}-CatU#v$GjJR7oyR!)2fltC{5G&&P!}QczNA0W%54Rh?_0zlc{*a4R-Q6Y;h{ z9%vw|_3=Wo*T2}H$Rgw9!l|iJigjc91GKCi=*c?0Wzex465(C#f9PW;YtlF`O#zIpm64DnH*tJoIeCR&Y`7ak+q{ z0C~BGXnJ>GJmiYFXzYUv`=UudPz;scKn_Fh6YlrNkxKu&mPl2jql5^OOA!AZ5-dA3;L}zPi7k-$_XAGesB-w*@oG zhTM(3v6GzDcnpG+^J1@))$`bXgNhIf;mhkoB+QB8K-l2U0$%NQ#YV@s&xq8>M+cN<8qhG}6a@aWq! zu#Jg#4q8x0Yz<)53a{^Z3)T?)|-`T<q$hp~^!7Fk)k1(Cx`K)DJ^THgErS*6RZC zhjMT{f#fk%{P8sgzZX~Op&#jNv$eJ(!n3xT=HmRt^-xsD<&jDX*|5utz#o=CF9;WI z-n^-&H!elzdV`qi zi9DxKXt_R`oCh)p0fA`5cp%;3U~dcd>vsV<0s&fOF~lyL>@M9}BK$imt!V}0AqwEl zLAFgUz_>eeY-OtTB7___HZHNSu!x9=z!2c`N;s%=g>pJXnt!*9l=SqcNSJ32v5B;_ zbQCyg;%8;UKKuap5eYXPrawz8N8+|8>g(&vc30E(>=``|Y*`!MpJP4*n7b(?P5KKg z^_!noQR%PDc5}87>V{25d60`e%rg_Vo^C^kFR|Q_q7Jql3=!~9##qC9I^+Kb=`q5x zusIhjVRu2%(oB1B$iZ2T2mjR66rxk`F$by0cKYO1AC*)9279mlEtExMx1k<;F$+je z?01mlXVxGEBzb|lA%weVIx*>1iBi>Ptq{KJ(|wjrJ7Yk`^v4wt!xt=8ofX-d%>sZ3 z*@+Oc`~HUq5)n%S#@W4|cff8$nyDSiEv%4`NAHv0~RMido3X~yIB8SAR z0ch7r$S5i#{YO^r?@X(fZ4Tmg2BU`-aJvgdHgnX`FF54-A%rG4Ct&q~%TNhIhBxE? zjR1gX&2aMkG50@Aes^;=s|mB3q$M%_^#x(1o%X5zv&mk{L0srzNpMkU?S4MXK!C4gf%D8B2tv@bn_PA$T;{v8;tdQS z=m4MQRyJ%Qq(afNQX-qpAFk_MfZJ!q9NLxcU}~;5y58 zt)I{eSQ)sR)$--sBxjmmoopTfiGEYhazA?Ai^Lzk0V37ixAaLy{^U@{T7vym<%KTO)V5IGRFv7rqkG9si97lFStq{*QEh zxDKg+5=SfrF(m5@!S@h54x2+Q8}>ijnUuV>sa7Tq958#xbsfn+csL?>1pNn(*N7YZ zF#9scAjG@p^_WMH(@Tl@{1G2Wc1ezdqOOk+MqWNtfK+<|G4RN$+(8qjUD5Vg89Udj z%Jm3nf|w6?-CDlW@g8EqpsSN0EBFpcVulFXB8C-D4cIbN^t1n9;R;&i*TzJoZ$0mz zlcl>eK#1}XvuA>k8g_GcDsq=ObAt}INasnxinvwC)*w|^q5*rQQSc{du4jHhE^-zL zG{DniL6SLSkTr+=rCUWfO1GWzw^g;dEY$C=kvL@ z>$>jyG1Bh-vhv(ak7l>ZxtBVdD%|SAT{0k@7`_nE%z9Gy64xi#V;KCJ03;3=Ly>P%XGDq6$+bQwO zo^2ZjsnML_95i;*ZQojz%)U16Kqa>q_3B8huP_P zUX-c2q>Aww!H4o^M-L@zb1uQOJ>INQb0|%iiYxIB6Yj^kArKZ{?WN-E^DLe2m8({* zI_cuGJ@-}il|7e!-+eYTvMUbblAHa2BtEXn(g& zfBBOW<3z<|r6rbIpJ)HhzTxlaUOnZ(g9nv8?~;9MDXip9aqNRZlRM2p%ph9%98g5Y(CSO2YF zV3j7PBg}m-iN`7}-sALSoZ3IXoC6iKMs`oWT4whP7@D5M*6!}^EnBuIc=b`J<{1l! zBHh0P4*9O%5!9cysBqgd<>@rm>Ewi$&kX$)F#H2V^A5FNXnJDbWM zU@9VS;{Z*aoGP$Fhj>MVXV066%Sc?N9?jV+V<74M;b6ymJJ|ITZ@Xgeej(_{Xu4 z{f&-ZgbTtS9Hm)Kza11<^VGjCFVj%n?$zIJ(fgr9xOF2f)V}S9KOcuH;j&+^?Db07 zTb+Aat-@)&m6g@dnk!vGT~gG!FRjBO6O`Tm?4$28Zr=|tysGaB6eQc-8t)%n*J?r+ zo`0yJbm6R7b^k~ju`ZR|-sV!~knAyt&5>&eRL2Am?cS=j%>#$p(mN~Un3G2YR&icO zQ-!8&e$dlCWPZzVyo`-*h0vjO3)gg!U%Y37jd}W!_QvGO0Th2cdjz1nyH3eqNibV+ zelS!XOLSV(|Bi8ca=FC9%VVIgTZr>@rhs3w{`UHMS#mS?bL<-cF4beBnrVeu#Md_3%6A6TV~ys^x< zu&x`jgI7sx9fN@YGk5yypV_!HHa6}_^X<-%2o2{Hv52Df2bJ9YZtm_s`t8gjOw;3v zdR>JAe?uZ=aC-6t7i4dViHX9MGh{;8_EpA7Tkq|9b$@S3O5Kall4QrqGLOR`h6b^K zsHiBsPu7wNm`A1C{qyviuzkzL3gRxjLImyaC{yWC3srMmqA)h_)AK6);m}X_PlSzG z=jZiSU5wrH_9k4a>(Sml5<=L7DT;nAC7hctKpr!4%-tPo|~<41U? zx(Vu%aY(|ZSD*4kP^OF!ibGZYJ+Y0CjI{jn^b8xRSPg2BqY6RF1?tC-f1ZNAXie_# zx?3ogA(xlyM1qS-R)@0N3>z8Id`z0m_5pMgi2%bkNKR~i_``@%oO+Qz2TxSnk?V)O z{@oYPzZiOs1i6fKzjM0+Vkb;I;nP`~J@x3%`nRz#C$>)8)9Dts*|5&v@cgc=5OUlB zmni34YGqYs?urr_HawXzT(*%NDrxj2DZO<%+9fZLHnP}%s@D09!#&*Q{m zCuaJ^O*TJV3pyzvWT5AnX{dUyd{;%N`k9|Uf5Pf>)b6Z4ul%6yvYRmDlgFP(1l`Gl z^Td@;M*+GZ#?{imX6N-oc$};!v3V+XI&FVUQ?7R3AzAlj;-PKMF$#)8*P^2<-G97* zlk&Cr2&fo7l=nRPrsK>;%5}U|E%Y1Jyfycz&3KRdMsmGI<-PKo@ApPzxJl01gaZhh z%+a!X{7;Fw+dL-FQsDG#nZshG08^;i2Z+hp+1XOmcIS1og^EYdvoq3t4w~nQ2rK#F zx6LuV{l-;)Ukfq$WrsT&-t+Fi1-Ja!Ai4T#{JWG+?)!Z@4}B!}zPt7QPM-V}mk4c- zB@Q2?7(*q2%}`zgw>|v&^R^|8Z3wzG`rD{Pza5g^*8+os4tp3QgOEX*Cm8ZtGMofsuGD^Lg(MY8z^sNg8PVP?BHIRHdmLnM| zDl8OhxTUu__m0nU3B({7ZTG_{q#jSoJT%6O+gqu!IYANkYMD`>9;h6(H_Oq!%Es2Q zIq)%Zi;u9?6a}}2J8=FBnZN}CYk2V@UKB}B)D6I6KWblyr2T78)*k3I$24vkDi4p& z3bp#azCPru8K5YJ*DiaK8MC5~d zudmn^&hKsCzkh$!Y}2L!^(Ab>b*PjS;Cydyy&v@vLlj^GA5l2rU3g|btv7e3(a*Q3 zS79u`_mcoinxKaM7jU8wC)<)gRnE@^aJuRC)(QGJYnRj< zF?Q44oiBuQ=9%Yee0o_?6|!hnhN%RtAxo_T2`MOt4L3K;t`DATO7|SfnN@Jivlrr? zcNMx7n?%Ip<;_Hzs%9Di+uMgc$H$t&GhjO=@|J*Kdwo76#03a^9`RW4vLjaMZaV%m zE?IWd0iJi(xckBrySGOaJ{PnJXuYU`pKsP`9;&}LNZ$|cURTFVBd2lFzRN)^fiqvE zsv2dUVEG6eCCu373%Hgf19?}Q#t-*Rit)Nz?(RG)v3_dWHCXZ;pEtLj2-%q>T5yzH zx;}eXvh(CXm6~|r|2Eyu&dEJJh01=5L_ZPR*e^@i*50xQ3{g5(qZt0$R#PCt*a|wa zn-3p8WLM|rRNUE-*X1p~{=h10nYyx2_2})!YPt{h|9oXo2@dbuH;ZNaT96YteSbIa zNC}liWXVCnXFq299Qyk5^QU9t{?@P6C)rdCwVeDKP#9V*3M}Lo?C-d{{#Ojb=Fut_P z0X~%|jJVV}O*k*g<_{r(ohaZBzFl1A+J=~W^~U<>!Yy{;6Il9b8DvF4uTdZvg)hy~ za%n1uCWJWnmc{4UkxoHvI8Qjk26BfsNFl|h+YiVvtV04GAjlq2X+!B9whPiYt%_*Z z)n#$Y^vEOhn>V1u@pl7Ymt5hz4cGm&7ZGyh+;eNfO0$lN%r%XZ%}Hy{(A-megVBxo zaT*N7@Q*d)+^n@9Q`kGCaGH0&zP2(_IlDl;UF_!M%<@88*--Usw-7;~1NglO)!=EF zMKkd)d5`@i=<`gYYdEY#ewM=wdOI_@atzB%;HiHXd};&Ng1?S8{M@(P*^;($b`#2* zWgw8M~ABGIP<~+Z&70=a!U9XNE2OT!F|knG+uTE1U`P zq)qYWTE4ag=PO_(LY#Fr{LW-mIg~xQ{&G`X^8DrAyz%f)Zg414^@n8LcIQs=y54fm zoBP`EPVRvHct*9z6OGo~Z^^TjeJr#!x;+Zi6Ant)NzO_v+m}XgOcP-0pU9WRn4pQ3 zM)Xexe;f%l*S0UGr(|~R{yelZiVOQdz^N@^&reCrSR=b`3w#1x$CTf9{g%;H&+3CN zA#?xd$N2YIOA10%BA~)BdCD!hnYOoSy)<_M{<^PIXe%IT)7GCt38#w#&ZM? z@G~5IHKx{wJ)-YaKzdG==>0Z-Cz=`}Jr0dUVDf z>_3@HsS?)>_gyZrANPH+xCE|gt}h(%I2lzX+}GWJPe8Eh9VjXi1?h(`J%o~4!f?U+ z35!z2v~PWU#PyP?d$48otcoAa@k`i+-w$)J<{RV9JrI;ycUU4d1|nGivI6z3?w)NK z?%ja8t1|%Vs@{E_I(F%ERk4N}|5RlAY`C?VfC;uv_m^|1uI-t~F9L2`0`LAW+*&UA zwx3QBpVsJU1goZw!$bVRP4-)~_jND#$Zq}eN!zz@k)esST#xAcG7G@-%}tG`@-)@# zOJByUj|PvAlg5#n*gr2OAz^{Is3*8M&0gOTeWfh9PbNXhn)d;jUA zP`PGTt7@Tkdu+CfLsgczI>04waRu`$e;&U9viseGgLQ|60Rt+&^^?^|ym5o&3oi2~ z@VVX|F5JC+K=<8{7hzrIK%$f1+AcZU8{Kz#xFSKf+iaC+} zITi4sj$Gja^_C}RcS+8A2jCr!KFWFy?uih zrB)v4dJxjAz)?8Za3>EEAyyOOjYY}!gKIoJsiVPAX1amD@|-!oRX}L8QJ!S}DA}BQ zwE3J9))}<<&x9vpr-nkDPvtKRYgER4DvXDIGpqq8O;OwD7lo~Z9B-6TK-el7p;B$Y zBL`59(Zt?cIV=LR0 z`UUp#HqI;!yeL~-LEF8xDo2PT@hOc@D}-@gYcD?pg~&qn_7;bhF^)rMzvB9%mc90( zsx1n3IEKjWZoQ4kD0(Nkpw39H)4Ag(a>u4J+b0}^4x#4!L2sWx__#p&#J;Xpwo85S zYy>^$qiykk>PVtjj=~WFMlze460Od1$viMHC}2hR)p^;X`piR6_2Le|+nla~6!!G| z<-$zP3$@ar#mE1OyiikHix*ttiz)(is}ggKbMM|g#O4Rcx{Q$+-CV@#DZ~jtp}5 zx*CbQUPXbw)H`$j{5xoe64onM2kyzQ!OCHgAjmhK3+0cL~P zode(26*X~O@&E{)`D*oe~Et?5BDoU4f!yec3rf72&83THnc=2p|=!2M2fzGy3( zpS+_t-IT5u)lkmNc9W+Ku1+8o;l~LIK4|}`9TrgJ+T&<17bzX#mg)j+w1gob$TMFi_00T1bYRFoypnvf_^PwdU!7jAS7(eg#8ivbcLdliP-vP3(la9UAPHxIy5u zfu54g48Xf4P*J+KCx@Q3l<~F+$%m5%50kk%WIns{K*78SkB%*jrJX=9H9H#-p#$HL z0wgjtICuinbsl2OFg!6^=jY4i*l&V|S5^_tcojzo#k}|ogw1CKutAuww}R(kDTD}+ zMvnjAwc9{nLm?M!vH=wmT&@tO8SgXD3cP+zxl6^N5)}HB5IuIQy=X`Ex;~U&IM;tZ zyX&`HHPPosFua|R$Vk0rX_L&B$72GtIyN(w(E`Ud+;sD1bx4R)R33ae+hrokWUN1O zq$hCda)0%zlU=sh??L~?1ZG7QM1WG8+XON1rkHgzf{^YgO$t@7OaSx*Ds_4ju|8PV zQA~q6zcWerK{~(dt1}NP#lYMM7GnA$AsT|p>PNIr|L)R`{kuV-PMo)u1RWA@8{Xd~ znVo)3elR_iu`j%q^2F!er85hY@9%m=!I)QA63T31V!~L8Y8c@k4*e`=O_(s@H2iB5 zfE%j#nU)>oyNa|ri{s2R$#*$5emF$Y4))P11^5vB03E?wAkwZl!5O#CyYQp+UTbr% zgJj*5p3Y_kvtxR#@L+4g)E6=d$HG{{_riC>&eax%r#XF_w07FYTbo;>PR$?9*hhe3 zp=@dEeHHnJ@&qdqtC3U>|4iaJxU)MDjbfq6~j|=6!azl}`7wweb3Ko#cQD zY?!2ovVoUM=LQZfA%vw8A@KooVi>8jGu@@#c`* zQ*Lp~p(3?Cwje@GZYdP|#}jwTcxPKl+If>r0OVpEg?htMY!0{-QAHf&$dQqpdgEc6g| z;fFR!;Xwct@GuB_QBh*VhkgwSXQmtEvQY}+akb!mprd{ViCIbn1VdDh>Ae~vGjiNa7HOnn3gd8;)0{e+D-H+-wi^eV@mvq4?)=SD8SmFNlF=z32j-e@wRm{A zl~O>a>kl#Fg@%5mLdehks^R|q6)c&^6dVwEMKdI$7RA6>OwA6xt;(U;sk@uhIdJ9* zofAyApSgVbWs&u^+$&C{*|S$nn7gTgmPvBvUxz^u3Nw{Ou6!?2_C3AxV<=KXsolGG z185d!q>>RB{o!Cf%JugBDAIIkdI-mXM>3v6Of8fCVH*8xjFO6P5r>|%izqqRk$^$v%}ymLF<_^k-wn!)RECRU~_#{ z@UW3rN7Lk&RmCU9O_}-Eh2LBNSN(amD_6C!!9Y8~Z#nyp&-yjST&g3J`X>@GLW$pyzQx(!U<=7g;_~juq)P&(5Ot$FU-HG5$R08kp_{@-@rg z1J*8U%?@0qTx~32UlkPQJ7KPv^a8~uy3|`!i*bzmBvAtChJN-TNMEwqV6OnM1ByQD zls(=6T}VnzrWPLUs7B^0E0ZbB*a1jWT)WG%92M=TXSHPo>HwRiE$z|?a2{B~_TA#t z{0a-65}!HHLuFuAvbx*wU4SO#c|e>8ZKr=45-HrL1Z5rx-3g!GM@_@95u3j*EU?15 zo6yi2KU@5r3Y&Q>X2yt*mqL-x>;Q3Bn(7^_LmbG&S7_yr`?K9jI2|{>t>J z%;FP1_nicEU3g*P^d|ViUzk-UAW7G1)C3X3(*!$4u;5rPhJG9oPOlZZkSaQEhM0AJ zo?Ys?guUuLgfKmCWm`z(1MUT}K6k3#@C#uny-zFXXhSw=@1|Oh8eE(SiW*EHWIcYq zYArw|FaQjSHaW)zWFtxP%Apt&e^#U_ripUwA{t6o^Og+5IH0W)W-O{@|8x2rg+!>A zXRrU4S5yF~EO`E07J4k;6j$dfD?hBgwD%*(6kOg|c13`EIzT!WsoRjM^Z zQ<}T`Keaeh`5pN$LG9IqEijP{fUI_)F2-K@_W;&TYs;UDqMP>7`O()`SAYEYakUHL z)(R3IX5dzCebooOG;j_W-7T7cKpY>`oKK-LjJlQd_4Q#A zmU)C5T_(pYMn@FL3K<;3W>IJP#IX%mVp3(BiE_ zX#=lZ_)*6rEz0arFv4}}@f=*tBUQ15$8&mtu?*@0Le+g5PEPmV_4ejQI$-@2N_9sc z)aH8;HOgnPz)e^qTQE(G#9xCc`ed}lC8axBpcELA*q4eCV5O|=R|V}%46+hKne*%f zpL1Q%*$`RGLUnQkMj*o}FCE1fqtia2QU#xOgG6@t0dLM%> z-HJ#X_*l96npmj%vm5KKuM!zK_9PugQ1F`=LoNTg!!H2tl}o*H$Hz=sapue!_P6UH zBbl?=;Kp8J5qany-UNT$l8IgIK~G3_1+eMBHe6g77ynMj>fNm^QaId5sdo^hX}Hix zng9B5vvPSLu{MG^Wpvx9lNK3g)#U|Ne-4s0U6;PrMib}@>Dg^yRYC>oH82jF5=30B zj?(GABr_!ig<_8Sz5lNKiR%uJ2q$}L+PrzUfvE{`Yz{WwFIlpunALI6|@A z+O64=R%I`Wp!<;l+l+CPGmSKiW7b`tvM*(76AW7=^^q78ll_2y;q9JZSjY}TnvMV7 zkx_g?`-#sigBZ{FE!#-7oh)c?D0Ln%x|E*HjV=$LvMvso_dK>S#G1If3(S3b$ z%iUT6jUF7RxnX*H>sxqk#2>g!#p3`uJ>YOn!kjGV06Mezo*o!3QXTWzuKnXYaY3zULF^3edUutUfTcH~Md0~hDC`Kt0 zSosmOZm_w?7Mf9%;*Hn6MnMWxGfEvDD+H`{{c)asHUtk(MI2IazbfqiMbZiz3i+cj z8~&}Uz_#(ikfzhu-x!ukA@ET+!km7*saN|xY``^t@G(V~7SHuXltP6hnsf{gkK&=c z>|l|W+t07#J0V)j0D{dJf7Ez3d}YAYGw5qo6K8# z5Q>i{Ms8oZdi9hAmRVE1WhD*)y#NnT34jg%;Mxh~4AlR@V}KK;D_1Lx300qc-6GQy zC9KKw2pzA&Fb$!|?FTRax4VI_FGF`pEg!y+QBiRy#5oWRV*H7>cqLx{YGFaa_Ye2K z=LgTlt_2Fi;>`fu<*Y<|bC!_kFV2CsVcFm--!`DkArQ3p-8M%vtO>))l-)i29(cHW zRK)t9nxD!dpw3tx>|8%m`@(0>e2(CZ6K?*{^&tL1{(Za#5ZyCU3> zW+06@z_6la?fG6Rj(9L$0Ux(r1KfrjL_j>c8^JphfFPF4*yuJ40}WS$yRsMRwY!#u zc}Ei^9jmerf~{O#uSlI;55qM>C0yF^X@zL&YdtGECK4j{!Hh2sQ8lKjEv3)$k*3qJ8EXhyd?5%mZ!1qVZ}Aw2xv;v3`JvC+WUhUQTOje(Te3rdvgCb+i9 zlr6cl=PqG)CE=Af#crDCO9(y04nmRc>_R?cIY2Q0Z3{fKlhLh@*%uD=_4iB6r?@!1YW)@+F_Lp2 z8@TE4Pd6Xwv_X~kRgxpiqi_=91Qi3P2HBL?k5mOYUOS%1@Bno?ffs=l_8^j0{8KxboTXK)9WMrsL8+vB7B7k9vu+!*Msm3+2L7_$09sI2C~6RChm?h95yr?jf_@KGw+{fx=CQcf4HRsgMW!|r zG^TLb@S-397@C;8BBBfia0;IA@j}(krf9rdGaS^Z2`E0~F#FwET zM@rSRuS*>@{>5|WB$2xShb@Qarr^~B&12)o^j-ii$oB%5$-|Eza<5>+#ga0>I90h? z3g7T+_@}4+yTyTLGuWL77Wgqr8s3E24*g=R;TSL*BeM!M;30++j~xEv5Fg|TMHEDn zx%g8hALtFq+DUwt=amp0g!4at3A=PRUg#EbQ7Lp;PSJF>$1y9^8NN6+AqQ!>v;mSm z;x!qD`yD|PKGm%pQ`THTt-UPaV$CupS z8*;fxs6Np~#?G`f+p0tkbrZUNS4m-)8iB_#hC7Y^`0wKD9%uVVo=Va(KJa{D9+d-3 zR%Z$_Y-kZ)ro^Xrd_W>fZ#t@hl5A9qJW>(kQG{(@s1_DN70Uhw@`Zr3!&o#zXqmu! zvj6;dhafM=OfExIQw|v@Cdf92T)gOtB!Dz6^`L5yasi4yM5ojcX&8CnasZnr2bL)q zGUwUOL2G1vO{mq->6=8SLvlqDl2IlwEbKV{Ey%R%BD~~zKqrJcBYdm zj0-1BoahfUhd7XH*RSI?3){b!D5&qZEXQJPMWmvwK1|r0`iDX4%24S%JIQ;E?5aPV z#(5&syB_V;>PBocueLP&(@5{X7s-DBI_mc3JJWoD%;6TlGg%!P$m4;9%JP^sG~45^ zmCk~XRe%M0McvqZr)tEc?Y|i=t2EE;&O2BjVv*>x{8&*~880odnJ@f%aji{<}et9Vn=uHO%b_{@6;sQVOf0Zo$Ahv*iEZX$Em_YL1o4}2$^ z4AVHslYj#fS_k6?U^yL0Ts>L`e1or!t_nh87nb$%gX z?*`EO;iFzMh7#wgU7}}CNgTR0=!u-=%}r!X67>yf{tWreeV8jL_}Q z%lt8b;l-eC!`2EMA(CGkUS^^gbFGckdikp`eSjpt1b}zEy(O(%b?`5o_o1J$_8PSD z1GNjV#;Mqc-C{UqB#($M48q>0qi+jF&N@V;EzYDAf=U|@)+vTdVjhstQ#A;Vfl9`H zKwZi_KPWP5#_-j#CdLSLH1NR%Ss|EwoT2^`GCk? zg9TtbjsbMdSBVb<&VYTvTN`hkX%uz=tynn=^JITeb7$bab#`={QB{CW{o@u#b%9l0 zXjd49flOf`|92ZE2;IL%epg}YfP#b=-?b<*_YK2;&^OM*pI#^V6EvFsY2et7DusX) zhU{4uMA$=!$g482m{(njnZQ!ni+mSWBeSE>%u-cVouB$O3NLUQc`v|Y-`-aS3gLrI zqpLpR-QI!K%vp<$ryc$pGXwkbJ86q0)*!+m1ysm^QLONnm0=`8*GvB29XM?}NmN9Y z@}RLvyu?9+Ha;^(Ka>@Dj_+nQY88zc*p}#`}w5*RaziA z>;Epy)a0Z7>wuCwuL3+cF0vDdJrdzDWtR&ZkyAO11cVTo4We}sWVwFU@U}}aF;2L~ zuzMTzCOlpWSpcZ$au%A1dOnEx`7t&YJUOa!jvwO_jnfAWy`>cJ7CC5$5q$Y2BrF{qZfOH}ZXmpy zCUVxjhTe-*Gi;KmgEBgTW%4b8_lC zV!N}&zd}2TX4-ga`@m~BzsI8^yUOIrxp4Y)_Ym(l{p!b6UwB7123lQ8?@6lgB1~fu zqa@9*!w3?^G95vEShWvX8E#~X+=0xPNOzK~)rLAEInKgRKDITG2`L)Ff}N8wl(DeL z_3<2|)Ig?p))Yw&>90Cbg7Aj?NeIZg@{ggugsOr^L0KbJ6bJd@zpU*ko-SJppm}+D zIo_t>ZzNPmtL8P4W+>2F!i!wev$(-b>$Ej!!Ragfer0?Fbp0z;(8(WLaTF^xf?;V= zwcKR;bz^kpwM%qGqBpfsA46iv)%x34#4v@)B)J8$#4@E2fT~Pe? z;^Lw@6sV`Hk)zSfBVi^ehPsr{#voR9q6|Tpy3y##Q^2oiqpy^my!*|}z?%{WW$Ipd z#UY*PehHL|3PuwE*E~2#X)ON^D5YcIQr;`n9?;#M84>BX@rLnd3^_OmxP!;0=&?-{{A4@p!?sH^+=@jZ|A+o{7#=X_83&m)tmYXwLiZUo|9Qx@V z=*6Xf-~bz(2@ZZs@+W4LC0viJs*NE5D)E^AL#ZS9ujzp1=m5JQa8~Ju91ksid;++2;vcfEkzu3lT>A^8$kntf?)(6033o7<}?t3{J5|C2VJ{@CSuIP zz@_0_QP-N<8m>H~F=p-c$hCn-a^DV z$vGGe==t&wQ9Qa5TtRaAfz>#7R}psBBSvHVG~fx2!VlD)%G*;G_@bVqgV%K_aVy>B zK?%ZB*Cj0#m1d-8V;S2Q{G!8WH!))c0${eA_GnJ_25d3Bi^#TjC2{Ttn^cDrlp_b9oZ`ZK1F=$M*xc!-u z!EnI$xOhe-N@ZX(a-GK~nM;343#ujaU6)6vB7S}uW~s?C`9b`O%(Eo%t=a`YLsC|b z9{saQ9c*ACl1u3pP!27ITc8dc~E78 zfQila0Nh10p-2-lY5V>^P!D#1qZuF*vsf0p1$A9K%4uXepSHFA_(8;EiV9^1IybKI zdhY&4gIzr8jch_^^&AU?BK-vKpaq=*Pe6f!X$-OsOwOYQ@;tkDFgiTno}yqO@G--- zPQq+lX*)+@J=(UAxNISWiw@xSYc zb=dC1K4R(n;#;fp^4OU5knMH&gu+G%-oUsM}(|?+PVtYn>01Itrgbh^Ywx`3f-U zLXpY>tJ6*G=>Cw|{lXZ|!Hd2J2l87d6k2_N9^p7FLtzc-q_k8-BW;#HD~`g-Zvd>n zgXS+s&^YKJ6f{b}qg_NLHh)`^vM&JU2((rSK@f`M0X5x}9Aw`Z>_w#_-f*@fwgfQ4 zsInw!lyowdd634`wTEnKddU?HRc{HVMn9m3Y#JKF1T7W33u1^td((+sgP>cGIqaL}2T{@e#6;h44P zpjEmojdyhifKncm#z@5+31BNmH7rzZEpQuA#rovOOfrnX) z-ZA)FW&3S`h?vtw8ZOC^Lldct-jU}IV239^h6V0oSo#7kVKP`gUK)vx4A9y;|1Uk(cWI&_-_sUbTnf{nbo`H-&2&gx;(CvDu z=nGix#-IvQaq)9xU<4r3xkiyEv`Tly&aEZe#P%M3E^k$)TDaUL9c8&&b#vDN$+}NB z%|y$_{uaU>#sadBDzMQ|l?{*Jmvd^8DCewzA5sd0?ijdc%C>vE#xs%b&z?Vj2#+uq z($IEfq;FH5LvsAr064mSFHr$7}rDj7S+HI<_91jpOG`oau zaUb6BcYlN=OavLpasw}Y^fJ%W_$`RQo&#b!8%r`AF@GDW|`E%p- zz@!6W1q4)60@YdtnFz{cqzLy3uET#^jG)OKO0sJUyJql4H_3BA zu9@^9Y+VK;!mw5fEEalpjQpyTGy5G7?~y@TpbpP8}R<@E&<-@MlXqFeVP_`E2UvMU+Kt!I}i0EoDG~5N?QhRtp?Jhfvs3 zRAvac@N67`ci-UYIRG-DS{rzWFmvrP5D1!q(WKM=ZS5eg82ANQW*=bqyb6@qjP8MY zoIhD;lgxl&Gc18_DMMq#Pt?&nq;R;F0&o*yu3ZD;MJTRS*;)&lko=>q4W~=#EZc>Wjx=U*>?C^vtP|pMi{DCh|8RK$+lsFQ?#fb(0b9ji=wQIoq=qV@6*>JK4 z2W$$$En=(p-SGyf?C6r~5~yixT>cO7|1p~x-)WBQCrji;$Z z?lc0F5jBVLW++%>W}rvv6&sRi#h6=WX&o2sF8h$01xTe3=Zg!D=4B{+*&tGoX#LMc z`!E-18+A4z=h4KxJ7MOx$Ml8;^ODH}ri1?l+JzHkI0suj57L4tq&}^+)0rAww9r-e z`hMM~lbZM|lOs_5j&D!7df1hCquScqTmm{6 zT~`y-IT$)Sw+R69B1THGa{7NjqT(IMR%$WGR^d<;aLTg_4Yj`U`wl^NRqYiI3dq;rQ(V- zFOH2VdR~JWflZPirRQJIf6kJFc^$uG)obQIK#2RAIn zq~-GGF+SF?2w1*PZ>++cF^qfkkZHF1mc#JfNY00KG$h)PPzh>wVuK|6g~^Wra=4w? zMhsAoii}ib8iWNFz!zTP0Q@XZ7mX)g3vC~%835AAkQTrkBZ060K6YsQX8#WO3rG=E z8TSG8q955r8QM9JQbLxK1Wd{V9SOOwaIzT2-WxRlk)dqryP!@O_z*oD%=3Us^BN09 zBgn5@&|+T*O-O?dc4ivpZWkgi zxXPR3h=!yQ$VYH*YE<$ak_Ryj$^viy5B^Oq3Bzi?;4_bwy$t~QX%ZKY3`G<`siowH zxoFw!LXEm#n02}c;`2fLq|o#}nw9VD%fIpY=Fs|>>MTm4ii{~8kMyO=v`8A|%we1{ zWG@m~Snfp1kded^W&-J03XlytQ#n-Tp|N=cCtM)?PVA&y0)U%I@vSXCFr#NQ#IQZk zRapSLW1)q-6mt^>XG_^S&@K_=4WIoh9T|7qk}% z`eoG@Xs?(wZ|hG0vTzfu^*Hu$P^Wu&2ld)n$bW87$D}(#Kkr*NrEGq$&)NYDEEc1b{d;}t!V&Es;iZBI(XK8XlHvmSNpbw}e09|H`?wlADA%JkCItNu^!dYSh zhd{;+yM#3DagulU_u?2y@K|qAvml-rj1Rv}f*oq6Kr@dj{Gj@vd{v8F3XvgQXcq&H zBFQ)h3T#&?1?F9FsCZ7ACk&c>?uHw`QHvAg)RTeYD`U3BHx;k$)q}62*p6nUc92p2 zy*MdzX{3p!K*3?V8(9u@>_j0&q@l;S@)~d^BqB{Yc<|sP<;@`UB8#z|dwEuebQ_@Z zSVVEq<0)t&F(Dm<#f$4g_OtkpYS49bQ7ikSb8O+j{$)(UDU9RtfU+aU12hzJ#Hp}= zZ`AC_E0Khmn45s(=>5xyrKT3SQh`K*wFvtPgYiq_omJLM5mB*Q$h@V1zu>s;$5O7l zhdvMl1$`4J5eZNi;z&6Yo)OwbQy_sR3THX<_oeDybVaHK9leY`=n&$$F&6I}-jqIM z!A7688x4d*=Sl(3KZ2PDHY38!zJ*7n-d##E@l-;Vz5LE3@;M3#Nj8ojh5&1S7|rB- z1LH~T3Q@)caKTE09-@RAewBn@ zInea21B8ngPlo3mOYJf6b2RD|8#F2uq?YU;?1kXC`yBe|a)_Pf(W>^M0vmpsXPgwq zm>@rJfk<*DvOB+*IKpOV5uamWF9ST_CBeW&7^aNe7shLu)2Nm)=q2M1A-0yV1QNiN zcAVS*7FHOn5}|ciKZ836P>|%3xi2IEG}R;+239QKg341w$4Vy*BJVkk01G<-Qc3G01NH}l1Px0p^iS;P;hLSOY{bxo z#{b^e8zICF&}lZupA(1<0*X{XU>;6e1BHQ98-#~(`M>Db$wL|xdbw%#P9`G;r63Ya z->4fmNR%gziz=|N>O()41NPLv8VSR*r%!)nbe|Oz7Rr;dg2GezgM&DcQW3zRFdcJF z6AFf3n6CMmy%o(>7m$Mz?3dLkU^p?D(sr0&Zkn4c0=`xZnwH|w8^yy|00Ew~rh`IY z)=Uz%6Uv~ES0D})N}Ik0I~`3V`%!3m@S>{efA2x9czq(4kPvqQkbqA9`VCY^!wW(4 zB$4V#or`x4B92e1AAu9eS`!jSEogNh;d@0SE=wEIZ;SvL!D;3nWWjlj?+@vKf=;3N2RQVpAke`&B+;R7 z23HRqR>I!eq6h`);%$5h<)xWd01*B} z-bykBn8RF@8503|mXJ5$#Z4i`^Dig!20&*tLai1G#xYD~j=*`UgSyD~DxP16VNFN# zJs74{=(>M!7B$TfLhk$yc?jt!l3^!F22Qi->qjZG{<>gHIYWlv^}bN^5Fq3#ZIUW6 z#?I82Pa@l<(0!@9QH|l)Ip>2(L0uQs1tE<&JQa-n3W^_4!2wn1w}zs`PB<(1|K5E- z!Ocb9?vO`mFL%+DvCls(SfDPF=vXy!4$E-!hQE*K&#k?=^5N|pKC55w40f+G4951fp; z63C0wYzP?e8EQgYjXFrlW8UWHk z191QS_g}gsfm5iS^w2SQg=Xk6Vp~_Pd`1%xdNH_tBXd}X-x8coz{MrqyZ29jNM$D` zUNcP0XY@9na(sbvmx^)|zTlpI)$>`oG%1XUJUt&?R2rjkZrr>%nh~^sLXy&FQ{f=O z1giR;Iz>)6cK}!n&KU~3PoIk4z9k-QJV0EUN+iPEdxice?N*<)N>TUkx9bd4>j-DL z{ogsj>qI`;xN#%tv>Gz?_8#=w5UTod579bF_w3pAc#*7&Q zS+*X-N$OSLR(oZqAR+l)UoV`cDX=%6d3yuE+1W>mxfTgJ>q<(B`gjTwju`2MTZ>vj zlDd#Edxr7;g47mTxn0x1;L+4PQI3n?V`>4-Sco(`3`+CMsFJ*D=34l8pj_TyYKrPc zJ(33RqXJ*42b~i!zRV|MGgK!FX{Jr`y?eiK`URfv4pQST;C)I_aQE}i2y=oCeRQp( z{{8VNZn~qrdZOtWe|P-&FlGA!0I9qj+PfZ!20nkVb{am40eMY;=>J}pY8h$ZKi~0; zfTiEk$?4jug+oIiE$Fdbywm+|i`@uDeJpyA>DwPWNZ>DIDR^>jp+11xQ3k&Mv|McV`)Q#vcS*wRO&uCyX%%_&^POtP~F+Q6S&PdQN05&ZxhMz$W zBiB*+{q2l(OkmGIUlG^+Y2Z{JoVK24Ydt0CvQ!A?B4&>vo>}%XzS#&Dq|*_PPD_CX zK#mx35z+|VY}(=sK--QU-?!aq#`#8UKwR(Qe7RUOc&@d!V`}9>6g)mRZ{B2Vv;=G< z5`yk!s7)3LGl62j|JASqdWanEy=9gA9Pl+c?a;7;H)@K2`X__q$rd zl!l4pjQP-zU`)mWma6y<98xYx$9O>Cy;vHXg35n9;v+3ElXyYkowJcN$ydWV=TSMM zn<|5k^HGmwFYs;8<;$1jir;BGKb;u(o8+phDq=q~X!dPjj)2KcrR|r-NOGh^M^YjF zBE`SnhK(EhLBJw>+av=ojE658k4HuhI+}SYq}}_zDE9(p^RHR6hDi+Of3y!44i1f& zPAPdNG?eC>jARtGkgha>o;%V21>+7ZpAf@QPJ)(Q8mK$E9>?N}EBvI{k4Mc?ihA&% zn@Z>Zy=o;G^NH0MtTKQ0>`{#Fho$&l4Jz56dcQAOGVn&He?8v#6z`1zTZ=GG7ig?- zF7T)~A3jXx+zNte4*v{Yq1@lQd-tf>K(*yXJs;Crq5zeFmpy3Foo|XQDK9PU!p*dC z0(ryIwPv@w&Q?=PM&qFn^C|LvQqsGU67L`k+7omA3w)TDe?Yd? zeN3S*GASwP=FK^+O^aX|`=uout*}~CZQUC}lyzhD8#szxRW#p}K3Lm1{Wp6)rc6F9T zBD35p-0@iXV0o^AQ<`i`EYfA&;)s)eY5b^mk(2p#xPr| z(PiexMzSx;e3infl||h!ZO`7llrM6Wckt~drvoy)C}{*EaYlD1*(IT5y>6Ag=H-t? z7{w{1NXZ>Mq$JE=>rub{4wdGNjSRp0y%+lK-8;+x%ce+ebB)9wXwdN?Ss*pnBXLXA zJ#+{qd#ohQB8O8O$$V7?z#{9ve zM1jj&AD$C-Iu2XqR!zz@%myle!g%A>t&=&*{P4S?$40H6Z#9x{kCEHiwb-TnfK~S+ zZB197VgL#_ncr5eUQJE?82i2W6+Yv@RfPt!uWv(&@pY>=`F3iJVrEy}pMM#T3QJeB zzP>sFCy4l@j=|G*90lYa$ZIJ%dAJaSK_z-4HBacO=Pj; ze#)o6yB24Qh%ej!^sc(mIK_1S6ZG`gnjLoj^TZpiTx!lnm%Kf`WGg;%y?XWPX#^7> zTN7mz$6!)%Bhr`NT(yidUx|k#GzMBLB+5ISp0yTXJ*|nhXLL(Qii57*6gX;>-Bd{u ztfKobf8`!HK6m?p{&vYf-EO32wtY*goVyrn%-f{E#gxo)y8^g}(QWem`*#RXYt_$) zFuDd`&sOvKx;T=lWzWtA#TNP%XZ5ABn2iYkiI$D4UEGz6DKUfd0%~h%Cz4iQV-(BE z(YTBO&-&9mkx5Z&0(w5h&0_iK=P!Te&QvwKPLa(@_gm3|; znb9L(PH2M}4gX{;+bi(Bx&`;VD}py(IZa>k81jA{-QeRNqR>NeNmD0CI*hCRnfkuJ zAppDiB=nq)__EI2DJrs3)M-|yz+DC!XCZwR1T;1=$~s+-#3fouWB=;PLG{I)`TQum z;`9x-!_-uqg1;#H)52=Xq41>R(Tp*tdR*u%mklOVe|{+Ke_fQ>`Zmo}ZKeWCr!!Y! zpnY?)JNo4Qnx(+ae)XgjFD!;OTOy|E<5l~1@7@C1A5|D6sb4LP#zl^)LFzpGQy&W< z?Phe_PD^!Z)&?z&ExL{YuB6E@%tp%Aj8ZjlzH_D%wx4Z26@Ad05#$!h9oO$!c;ocJ7;t^fhv#hzW%rSBWF+xsv`i5_a$TsrAK!riZ zlBxH+Z}w)Y*Cibi<@Qm0xB%5Jwcs#`>)7m8h$H%udnmpl5|{|F?CDeQdwlY2R=9WY zQ8KqpA>!i%-xCpTjqRp|vY*Xc7~M(rU#cU}MUhJ_-k^K^kSJg`g(8U;Ys` zS$FhPnz=Fb+b>N+>!!ON+k`dus9h9+%-b-VG`C&@Mch#_4Y$kEy*i>)6uRn@)^u8^ z)!mLQlc;~E<^IOP+-V@pu`=`ZnomL;b>D!+JTP&+T8all}YX;X#v4TnFIcgYq)Rh z&acgE`|$0_sgE9!cj~{DWgPkD<#KTf6WCo}Uyl}rh?DT*5dDdw#~=AEp%x9Krn@&c zdSu`_{zQ5IS15`e^z`)TjaAToh(;M9=IK5pX&opPBwiI4|GXQ~uYB$NiSW6Vsb#$u zAAh#gx;S>4FK8)u?C*(-f1%vmakS3m`y%IeCHo#UKPt;y>}LNhO+3@%Vp*NnJ)3i} z<%qoZL9t0w#!18oXM-x5$D}cZb3anNUE=VaBWm~}lWNvu$FRE#oHFo_a!8EMFu#6= z&@vrUVc~S~pITa({ zGu^lKz;~VUpDn4W$qEkTeJw6=N4h=@jAS^@uP)~4JlhgR;2#E25ItsMAlFX!!M9eS zhPVh~Uwted&Q`!gHsIf^H`18FF#jw-0*oYEd;E(RFX&t@pR~91-j{drh26~|p6z+f znW?w&NZbR>W|f*Tq!lRkQsg^S<5wWsfm&eAZq`;!z7ey*%o7`x}$ zZ40iq_qj>W8#D78n_4YWTbp-|s|OzWVWX)m_xGldlW2`SfKj_b%(@~JkNePtpr;I7 zEdVRjkoHebg-_PK#IKAA%;@>6>nEa7$QDSW{mvOJjoGG_iTSw?9YB#&Q#D#WUY3`; z(`SLuOFl0AUn{$syJMO$`SSSpdhIT6{U=4~1I=;a+dVHtY)cJZJMcZCqVtxB_c}P>{CG`XYLI-#%cFYnlgduxKe|ibJ6e2LawB}cgIlv#f_rUA zQ)*}0UD1gR+&fM%!oHs;JGe!d{0-S! zCbz^T_Lvne{6ksJl5;~|JzY% zYG_bIDbgULh;X;5P|={|6h%aoLK%0bfs#>Fwv0s4Nk(OLvQuV=vMYpSZ+_3~eIq{K z-}{gA=(z9udSBP;dhN+8dsCgge%^RPus}JkM!`m*sr6>LoP~XjLK?q~ePMdRH~))k znhWbvhP|%AcNhNV&719{zzcELnH0reO@{dSq-jR!W$`0AP9jz2QE>{we4j3U57A9` zPb$RwHa~oj&{_TL^SU2w%&sDj3`JO>>tZ?`SFKyuj8Fi{e}*|Lb6XOq6`M-{?mpfh zCBWWvtjBlHIj!D93uY$&xPMfXcfM>fLYgN@k|<_(L|3QSlj-i(Xx%W6zH3xaJ-RSv zN$B-i@b{Kor>MMXvfq0`U%U|C2_=$Znv=n=)?g^chK7A9{6qU-IUPDwd~=c92Ii;x zqO>-fbS9u^%!s+PHHa}YuLi+anZZPQtV3PVTBOUWodT2}8~>kl@<4X`RL z!YfGha1c@7Ndni#Yy3)f9$DFe?>Cjp?q`oR}M8-!ss?G znUPuNANk^r9a+kG zxM)zv=famafSRXlZIAvwUEP6Yb~xsllL!IBAy$dvLpV?l(?DBTmII0u;3p~1BTs>L z(Os*Sftwe5ufO1EmHTqB(a*2ser1-)L)*a*-9w-A<^QZK2Qzm;0X>}4X0mlXpm8&2XlfaW3qtY1e8DOp*WmjZ;@F39l|)GVaJP-@=HaF z>|TZ~Gr#_Au;hsv{zstoUz1lnN%dRXA9l0yeDxG6M8B4*UBkEHZ zaVvp#+01KN)y^vrk26m36B!!tadoDu_;OgR8*V)~Y?BjbH+1%3{GD33XTkV|PNMG@)F0rUu{5H^+@u%@F(sUm zKb*_O&db{yy@K8iiF~6E+i(U%CcaSg7&o({?wZKx#ZZjCQuE=%$uCSxz9`OD87}S& zU6eeS5-`Kg@=DLoMdyz4wX~EU>Fg-4wCwu@sT=Ad7Cys%jn$XmP^z#B@7-x!LcE|K zbn`h0x<~VdUTM2_=|}f8KE`)GzL-{R+8p@|>C$`=>MnM7^%W4aVWSF);Tb?RSMm0> z=uC{N5`#h`s4COPXF9nazm(k3{@k|r*EipHdqVA+_uQ-Ozfx8{MY|^@eoFb}^0@kx z3tvZl0e11PTYWPYKRuLlrKddfS$zAOO|xe$zOdISE^p(kS-ryArVTx|)wpaDv_B?zK=}G3)|6dkLh00kfC_z&K+phj+tt!Jp1ZOR8b!$Fo@>Z z;fU{FPA1`INX;sp#!u9N@u^hIj{JQaS{^r=?5{tmf{=Ju zp)uSX*<<;?3x!-(aoQWvZl#!%U2CBI{_Lyu=Q{0MEQ|mGAytTOGWikS?B8PMhLp(o z92CZzReq*}ABPY06^T_Qie4{hEvf8D^t`6fwW0hLhsvwpeW{9%PITvJA8cGLZLIa$ zT3dTt(VnM@O$s#}1qBB-Hax6wtapD}%*LE)flkw;eQ9Y-Wed7N5s&Yq6p!45uD%)B zDb?Y`2la*AC1)PA^N5HDaHbdSQ+yPPS94MgXW_AfFh#J6)O}(O0+@q^>;K*EViAQO z@A)f^Uv5kgM?uHlB`um|5wFy&YW(MN3HdMOREFOdfgxgfMBAqd-$Ded1H}ib9V8e) zipfzrW`5lyfPGcK6)A3ciwt%)nb>K~G~3KfV_h z6SJWyIoHr6vU1C0s%#7L(21_sPrB(sab2?_)D=x!q4_7PS=Vs2-gY8tE-XS$Mp>K3 zim|0AelaT>_b)fuspfjL@BWyby(g8V`O!)0j5K>F9V)*<*?SV>+9nvD8r9a98EY5vdVyVZ(+EX{JBe8A6y+s6`hF2^fzbP*7D% z{!ccOcv^KKtdK4QyTm;3+ger950bf89H8eWr3j3&@r>wgh5^#8&zw;vL%WC%fih4; ze`WM%Fl<6&;YDz#tGfGa-3ZYygxJL25Z}w;ijE<9TEP=?7pUd$U_H&274kof*0{0_@iyg%%MT`k>ujmB6m0PIgKvd zuz&OtQo9$UN4i6KUfvw0`GioF%O}KkzJB#_@bTdV%`$e$;kJ+)@8G5anQOeTc5?i$j z7AGI+BZ5xidsC5f^*~H#DeN|4H)Ku$vV#4oY;U(^Q(B`C3Nv8j3BHPAy&I9geOs)B zk2{lw)^<=5vNGt39tH=xI&8+Gzu=GGE<8jkg|1njK!^bFQ<@dlJ`62d5ZF7*_Y`6n z{{3I;=IuXrYyg=%*1xB5+EJM#VWKwwP8RyTV2ZTXwifI4Sr%(562g65uFRUKQEq*c;9XRIY!vTa0Oo-Mp zQZaFo%)X!)JH6rcb0V%}ut}-`H}q#U{$D5`cOXIaNuW7%xVRM9M0dkZE@(r~7bj(_a0O!*a$(P&oi#RANku9+&EfUlz{^7>WV$Mh z=M2A>tzNSRW&)SEdHp^bb)Um#fh+6$o+g0H17pU@xS#8 zxb{t4iqu$eL-?5kb*GaWI43mPOhyzRM6eXq6*_5~@P{SPf zM-i;TdO zwRWrf_h~et<%+=nY+xI_C!~c5pMS2{k4jI>1z`Y%_`3GfI-Ia~sQe%m!PH0CctN)=PI03E2{yh|T? zKHT>lMn*M4^A|^uMTl^uRs^Re3-FD%l&aJcG5kcFR3G6OA-MMiwTi>-iZB%HL%~hc zNo5(OcaJFa>7<3r|89e9DvTs^Ajfu3Dty$W;sq~1L83KIaFuXSnL_YkpB%x|x8q61 z?k8l8qc~cIke4I0Glc9bi7wLZ5!&WVTo@{ofEz-N&o?9E$pz=vgH-XXd+=mtfPdX?@L^4P$rHv>p7G_wvTy%vN(xQP{EtWGwFm};+o>l z;JvUH)kbVkTu8Ecll{`mtH?5-2;G@WHljgJ7ksZ14enmiEe;qbFT6?(h&st-p>#0w?Es}Xdb!;q{b>j{KM9i@3X5Ys+7pp59`l(7E?!H^%K<5Q zXzV*h;Kl^x(k6{KW_Hg+>@pA8L8LNwJ1He390m!Yq#!Hh#w@{KGez}WphD~k^PD583foc$$gF=;L0d|Fx> zhLEdm*VZnFg2C<@KH*AZk?6xsV(wrSkb~{WBtsKWIpQ*!=kJAt)jQkacf(D?PP_yd z)}Bm2b|0J4!3lW%g|r_e64&+pJpY5}W#;LCycQ4$lJtL@ksdU_VEnYF*|pOdDm0EJ;4uLgjG-^wrYXV< zI>2c{o#F8Bg030hRdl@oqnI23g=_O#Va&uJ<5pnhgf-S7Qv$;RuPg^EDc{ITDVYJI zegPRt&TkxwiHLiM5J>mxwQI@PkI#1hx+dsTu7(p}dLOx^>D(B31N^o^GNA)W$RE?qdqboq@?X_^dFiNC0Sb%6N}a|KDf*nQyEBqfpY3rrokiqFGGt5^|+ zhALF6z~QrdJ5s%1q?1#vAB9N;YBTnWlZJ%MPZQL7*M!+W=>Z%JFYrBNv}-l7>b4d3 zo?n=;Sb|D;pvkK=p#pF!zI96+J@yctQy_hVxe*M6SJ#?!BK!S_bn4SZ`P=`V*kYkR z)B;?b4GBiTu{#&=j(GMAem-jk)Du?WBT~>Ax5g*nyp4Y;^NWX*3VwiuN7B{WPtnd6 zq|Z)TXX>Ic9~))4OH;EHl|*h1z(PdlrU;}>&=blvebAX1YDV;V_@Gjcuz1JdrC(o5 zKYxDc09#=J(L$=^$*2S}tB6f$LgNHWi-j5TDQwJWN#sxwf#6286Fk_4Jh^jSbi&6r zlF6vBBQH;@PzT1>PchHNK`jL5qd7%m32-CW1HJ$f@a|&O61D6t)Z=>sFx8z7wJi#9w2_xTaPBXv8b6!bqQkoQEd-C1-md(6!$fjU!< zV3-Thql%!0AkmpH1J1wEK@ddoKQ78wrq-z-f>uK+cPF z2+Le1?7wf?aPqieGxQVSi^_^+J7G>C!YDEHEu+P{PHwm#UOkt~s_zg=MZk!u8V!L; zI54wg19J084xl6YeKn9W42t@Uq)=n=_u1K~u4W@g>z)n3-Vxg^5b_O@kbVpfLl(AH zX7%LpEB=Hu2xwn<&TjEJ2LwZ%i4CfYN=>kO3#2C#rvb$ez=8&#ZZkE;QiGV6;G25T zW0CXdmR%M-0*cCeU8Ay(>+7Til#&inh0M&%h~J|V3Jww~wi*~3mc7v3)dU|0lq>%A zu#5<|EgD0)fbwI|E*$ORVqvSh~h+5lgO4R*ih<7$rMS4!33>L)*J32Cp7Sql9GZs@(d%eW4V!R zipBy{$vx5i^MYq4?}pk(9>$e7P|~@Eb4tac_oFik$?(IU%_G625zT_uE4#->9K)`p z=E4iWnzo_&9I4Qx!H5hKow(94+d`W<@TcKOSs@97<@k6y6c2L#Sm_v=Hp>_JRDl5j z0$ABMn}}Iu8UfJA1;o-wB+@l;y-ZhbXkSwq@5iiGhFm-bQl0NIDtx+n^=ej+Qp)@d ze7x(@k+-q{_v3?YFuQl>)T~HyokhLf#SN+EL^>@AoceR&zO(pbJJ5?lCQ}%fp3de= zLM61LhN?FQBHzwWMh`X0^#=m<{>0w{rGlty$e_FLlO`f2Hk+)BmVHiW;LI_8Y z$*-gROE7%&tceLH!|>0^`=35}LW&$t^8d{v+`5Z|W?vznpHAbY@)|JrY_45m{Ih3k z!Ki^z$poWV?f5cJA~hZU3!*1C(p|X}w$>z`2McsGI76zV_fQA^bajwTB_YL^l^F^z zfvo<0pNN|#ZvjRRFBWXg0>9I{4oo1~xkyU;jB1IK9ViC;JL%12=Gl#7S2k|r_BhpV z_{~h2!qI?rWx~MMI)%gZoLXk2t4|v8%Yb@3ClEw}X6N`Bsh6Z4lVZeP9_%d9?P&fY z4FwdM!8lGS`~KizZ4ZnYdt|`}=fE8()n-UtMVK$(_KFss3fAq-ou_{nsejIiNN~Yr zMnIK#`yWKrxKIFJNJ4@&=;*~gIT>X$QADpcAyJGCcG+^m>71mH3CxYGbV$q6_rOzL zm|w2{j44NXS0mxKm$7Sqg!xLQNDv0A3uq*GCQ;xnqJHw(kr#oq*FbM2;rYLbEkrzR zoMV)14$_#i(*B&*(WCd~#+^_4eM1bE64+Ki<5^7mqoes$=6uL8c$$tZU%X@qlF~{y zCZdzRF3PYnF!*Bz6tR^RqL{()Zb&*0;cE_o$$wB?7bBt$;!K5S9@BfccgY-y+On0FB{I_#GI7(p=kQs5|6ga*~)K z9CNR3a*>hIbT&8sEEo^?_#+$Sah=?M0=NSr32BU_yHqng@nN8~2+I%c&&aV%FElwmi zbN*QNHZ#YR6oT>jB$cbmzRrzv=CMU}6ZNJH$)LLMiGZ&+DWMPI+( zMDlrQZ0eDLL?^25fj>?j*=^8)&^xgIqT(ry=gFDbA_J|JLuQ3#<@D{0V?t)6JzH&W zoj)L<`GeF>=OaG>5zp&{*;GLuA9jN}x#zTWd4T(GhzDM`gN*K>^hgt)v?HWU3VVf~z?3GD*Wna!^0uS5H-j5#l%|Kr- zQRkDcNiYxN6L5oj0Tn9*^MJ@3tqA8K7u*$-Ll;=kXlyhRC339_34FNC>n1;yyOL`Egs|wUG#}t3un-5y0WS~3Mo(W)i zzYC-7>75xN={3VN#gr1b1|QTjRKCpx(nBT?+|os{v^Z)7*eO#}GSp3%6j|3B{vppf z92ma7wic3n5eeJqInwSldeji3_(?>>oqW0~g4YLZ9L-q%$}9SVJ42kOxrC#f;E>Zk zh1@~$zOH7dei9{^5uyuTM(&zac9>3uqK8_xc`tBKR0L4wB4g+h{qkDn$on6_o#?#( z&>e%xCc&qEyBsYtNVW)R490@%pAM>JA0Lgv^4WWETbUx85}L3TB*Ht0pC>ib!ScH>%!s}`FoEGjNeCt8THhff-$Uh44QFQ@)TXfry?H+ZUqs9GH*+7NToc z0`8D8&EsG{n7ty&9Oo^ZyC2!xO)Q&!f?;3@7uQ?y3uFgDNu@M-KN{>2M)}m zm>UL9=xdvixETHkt))5xlHDI81LR#RJ=kj+P?Zfr~SPYzHZP0PQ~5=;CO7 z;z5S_FgGGsNe9D3E=?K-ohsen93fSyzm;AP_{!`>5+*UDu_M4p9yJ=o{Spny2;_T2 zeCphEx-H`i<`2q=wM0~^?6&qVAa$dE%1xN;nghR!-OE^f>uog|Ien6hvNYl5r1U&! z?=kw-%>y6%^sD@wos}W6#5K{;@Fcvm@|5-;Ymfg-Ys%4T@jOs>*9Bi&?Xi6*Sxk>?XYw zKo{HK#zjj4NCG8doCeWwAGej|og+-fbSj}j_xtx@z??mgHc=UbqV@ho!T~ztfDbDH z#ZdGzm9c2dgYnjXHzomQN&sJ@i^#PjfDJFI-aWLX`Bs;Fu}l-$kw=db@!*C%%UDkk zl2tYZMkB{JMpTrGcBL94GD0GO{j9lXo(A2&(1d&gwqm~)6agJ<{GC{Y)Q(UhC!DOI zEPU~V&>Fdkd~^lmA?xzO{*L1Q-|c@X80B&tA|vERMZrae5vfFf>)nDR%M5zCOXq2q)q6Uuz<80{yV;|d+F3X}rT ztcCo2n*l47U=d!IO?->Qo%f}nfS?g_@vofhK;K1#zJkH-ftWfBFmNPaOlKS(+l_0p z#F^3EbfHm3YCTCRrZOc^5ylPoz;c)k7#ahWC7oPca}8qNPAoE>Jhm;(=4%)ppdwUG z6Cb-Jlyu#ZZS@oGmOcVdRX~}pvbPUM0Sxgm9Uj95*F=enBOBrWju?>xO>(N>govOJ zW~6@j@FL*$QZ^)RO^{ic2Rsu;*wAc4V`IWYn^?Ai4G9FY6w+w;+qj`ElV4*^8m@m1 zP`V1e^=aw*TNq`zy0r5imI~r^>F~mD13+X@pR|+sM@(g)9-hPmSV2mAtlJW!ILmJY zmlF=RMLmH75z^tA6m&b{9Skc)qXW9GK2rcb4LV>0&3@nmdNFu`Mu_9^%|9+LSwfg9 zUHN5XJFdiEEg&X#4t~-Xta;KBN+1g--0l>rYCR|}ow$$i>rt|1uD$C!A{!iN?nF2C zpfV3_yE)U51}Yh0?6@C+R#f=ygOmsY_ZWYc*vuazXIaryG1!$+1!D``B!bv#G?|?M zF_Vfx#6{}?ZYSiFQ09N2sfmfevkC?RU^ml^gIYgsRI;490r%F}WyF{Ej2`bLu9F2v@yO z+%Kwk@a~1An=0)of-SHg{XRy}c{2hJ;y^q0@f&%3WA@qCb@yXl7}r?Orx$vJh2VI^ z22K)V?*-kt*j0o?a)U^tKb#1%S{#gc!ifU9O=@QH7H13Puo3$~;0qKWM4x$xa|JEz zPhvh5LOy!8;Ik#9QuW)z-8~hm=B)8BJu{@oRTuvJPK@J)zljBrxf(=7H&1a*12PaN z8cY#VaTgr~%_ZYWSlEO+*-sRX#5|##jF-^;8C`_`%pqE*!~yUG7FBNsRU3_IqM5uK z%{cApYa}Ku(*Q+L;-vE-9omuDil4C#jliKgqy$rStm}`!HUQt6-sTi+lO`4BTF_e@ z*f?oHLW@+mnV`d_Bb>YodWRZPLY<)3Qs#eJ(0jfWQoZtm>^J=j`XtcKQMkFqiKhx2 zb}O2RIH6D+VS?We)2>F2<(&vLm!_W4q2K>E$wpE^068m5gic*5CAOri6|B!iv}8#l z&;m5H$Ep<>mtQ&-&L!;KH4Humt{|FY>Ln7Bj(|)!!1u8F(5;0L5eKwy=ZOXkzAanep%##|=IGj2OHD)mdG0Xy z_Ote*FI%6)Pt)R>)4TQNULlV2KFX)>Hukj|wdhMI3*FP-`O3e)SCJ8Kimoo13~W*> z66r!nCtS@>S{|Y}&5Y7|Flq!b!V6NBrO1_+@sle*5`~avzdFo29<9X9A{>mIz$hA$H8mKi zKc#4Zr2?T~qFw2#pGDH{w0b=!ip+rJQfv_`u(XZ!;BLDh(#yKO-- z7XY%>E6r-yX3dR&m_G~M{4A7H*Qak#6YZF59a$%x)Sc{sZ7FGogoL6O{MO@9|774cf(w);`2|7VNJ9rSt%yYH;i1=tv-yM6THSc;@*XIaF1WW z`Znl?y1#cAv6T%J)jH>64QZ)7gVA_*49=Hgyk*J@c$lz z%yq#%)+?#3di;1W`F5qF(+0D zN|a1q-!tz?tlue#ddY+-5lq)0o);Qk+mVy*e~U&fjc&Bz-hrP`bHs2T{Vhj1Cq;ZL zP-gv@xgyZ<-W!79O4Bd~&1ELCq~ITZf}2i2mMp;M!6#!XAmIvo-qP{3nF0p8P|>1K zg-84ocW(%(hN~0Q?gfM)`C)rbC)bWP$T-q_TmvNf6iQ$z2xFEeWAv=^rOe7W2;A=; zLt8byJaB&8BO$zia-4bZ5XDFU$y;FVrS)$#5L!n?WG~)5vgg=P$3nkV1YJJR=prLI zoe~I#tabYjjV%@d12v^?7ec&HRH`z}o#kjA+9NU`884v z#b&UhSRFirJkfW+43tClK*DUvmssBm zw1HZ>kcW6k0v2c<7(KxhLn*VzHoLe&%MXwX414uA*t;+KI}2U|c0$E>U*J1H2IWvx z%?f#Wc_6{nL#Gdd!;ptz^t3#+p)5i@V37W~6`|8l4J2(*?>9z=K;3pH?A#HkMC{Oj z1!LSSdbNs=vogWh6=tJ?NZ=4yRY~#?*i7&O`|`!DKA2raeHln7Sh`&*~Y z5Eh4bM+RhjdnR#L=iLHdXFc;&x$KXSi;DI@aAOxa7_~u9PjCAa=$QcgDNxQ2J4(PA z2o^!0NIxs?3vtE}o|q?u_GWWNya@+DiR2xn0h5zrKCl#bt z8_<%=CciL{?8UGi4QuoS0Fz)T98KxE0n5aWP#RNK_Dh*P@h1n3Xd?26mMgO`B+6|I zU7(|+iN^7SYhkZ&oi4uy*+)e$AA{5NywpeH^gC7ZpWeXmo^@bXd%G>GWXKnOg{ zd{lCk(j}l=#d#iHbcZ->sR;vlJ--Q341E zCWBL)h9mTudPj(J9j*NYj=LnP2vyZ<2qUEql+f7L{{P3e9tY!^4t~pLLYyB1h-BVs zgO1W}R|^Aig+#q6yNZ0k9aDT|H)+kH%YJ(0dr|0}br;Q5m3Ii#(^>qQejri8zS>p2P(Qa> zo-u=Fm;y8o_$-`E?K?{IRyg56>!0R-tTF%jO;!{)L=!FkGoEN~e=?~tZ!ol3wl0Jm zYB{t3U%8`Orc?XWG4hv%mXQVvGl7lzm_c?^>D?FJ(;CN+@!@aqn>+dpZZ z6z~Q{{f-eD+CYRnS(G@|4R#D2fbb+w-d>|&tGb`|!-5!6a*)fuhn7`IoJ%)z(}?xy zzMI=z9yDwd1K$y%$s%&Wdkzjx-l>c=Z4aQ1k%#%?$S5?dUpZbVWMJ~?qg;JOvyTz_ z9X+Yl_wEax^0BZW@X6atvj71zD=f7KN$8Fb30KRJTH@&e$MAM%Bw zws*n;mp}zOJkDVvvcrWa_61i3H;taQM{;zbDlF8H<-dqfTC@-meOkY0N|UwdnvM3E zUeK)t$IeV6DPe0#U~4Kpd%z3G!_YlblNY=El#f~m5gP%Xgf;zy&F7LCKs)?cw=f43 z#r5YFS9!^-xR!Ftr}P@lUi|9M?1!+qPrzUejT-!LgXb_CbCO%y)r}|a2#vfdMaoQR zX{mn$O^Y*-!6bq%)7mWQ0G@vj!eWI3Ib*ie$Qc)d(?{(m`?8`jd^Rv5K;CV~6lTv| zvUJGk(l#f(W&GtfZR4_EL9Z?eP|_D4ft#lpCth`ptbKd*BAml_a_RS348>u*<~Aby zP7`W=vW_KLLDy`AA?Sd;2|X(r(Gi{;Z5C4PmdZGyEJ|3BR2Cdy%h_pubcxmk`E7en zfVHaR_wtWG`bgA>eBWnpcXUw4OD1>{xvIsv1Z17JeX1}0yA{9K5|v503eYbr8+}SvaD-l8fnkQc5AVzLyp~(op(+G0hwwk_7@nh=% zFIy=3w`clPPoaXJ)PtT!&Qw17nn1^GKk2V;A(F7O5h}ADF-Xa+?Nf%9ef_&P>jtS^ z1~slf$(29xe|m$R`b4^h)6jJd{4h*0{(;Ho{qH{`bX2uog_osN{+uhnE*uSZp^Rz; z>c7GqdxVvPCC1>pwq|565Lnvex~mL)W`Ut4qkG)B#^dfsu0-n~j{4Px~xa z-SvByfxw)E)Pc<8+6k`!*))L?q3FR-HsHFCsYLX{SC*YS6r#mdcLgNFMXnGWLW3L| zniippBOga@%lw#_V*i6(b?0211XX;ZJ4D&aW{`UW|C>h(*Z@^>S))n?lXEwhy)y%7 zglDlDEy14vp`)jbO5*^*g49Q~MC$?n+6fJXTnMcyUER2BR53D_@scr@a+6TabxH~C za35-}8dwrHP&Z82A)cZgxu$ZaRSfd)C!a#H-6o&LCcMTr;k*Nz5b2kcKmFA<*y&|* zM=eKE{~IEML7j8tQ<{;GM&2KAz`US}s7?$cNM7SSqE7BO`bKD00Ac;ChwmRD&h4z5d7DpeX7*CV z&ne0SixN$qVKip8mMN<6IuJ>O=OXF9PfH+x=V!t9%*&FvL>2m$@G(O!)RCRm#PDxp zUpf9w`RP0+8lJcD(A_8aWTerM6q z^iBWj(D=c0&c0Czs550frI>&2K3dvKCQpNflXH&s@L>ls)9+0ghhvv^aB+C;V&NDK zLYWi@2+CoBuT&43>ayo)jbTF9HZBgWt*qB^!cr#ZxobbFvgfH9)G)G%G7I!~W8K$9 zi8GY()=|~dV78Q*z;Qz9NL2clg{q%KWY191L@3jb!1psX4C@{5WqACXmX3T=iM0U% zt1)PWsc>=3t2X7S+c*NMg(K91Yx)CIk-hj<-961StmB*SWnmO^qwpwY1g}=%Rf;Y< z<-_+JdB=DRLIW4sl7Ero=M~)egP-tr@fz@LcrP>KGz*vWOfLSi{ zI)sGG_yawql~{)MQ(>Ro;CO__QYQddi3eYaWr5A0@{Rc>iMl5GMU1tCV~rt?VP5K0 zy?yacFKx0>WQoT>hv*&TU#nrKOh9%K1{cTO4B?jrk%L2?JQ+(xYB!sIS;7J-`2m$W z=1O#J!u^)=mdM$pcXOPwKEOgM@*U=Nq7u{3T`wWd6`^XULq5KW2zP3Ckshv8Oz0x0 zJMz>#G9v$CezHK{`Vu>P=onxZ$e&i}tb94Z33jg+=*XV6_CUI()VT|-SNgN17nLV< zzTx+?ZS%|k`zuow6#g(AvQ^$f@&w^hu0D%>h8dU++-ahB#kOt7F}5t-Cll<#Ez4aRX{#ZV^R_JQY>DXkMb+v@aWAQ<}>H zXfy|DJT7=m_2azWRB#N5{M4%&X2)90ft<{5`50i48KC}h64wv%Qe`pOJB10o{&OT9 zu|(Eh`l6X#f4_GZaoe&-RQE0kkyA>XUNWv){II47>I$w_Dr^C3X1;mOF4(nfDl*E}}Pm4WlQXLFanpD0|RL!R9gn zfPm&jG`+Xtl5s1#i-|o=a4U4;&tb&j4eYrT2%ijaW`;__kaF-N5;39+H>omrAZxk#1XPEGAgH^YORY2Uqc9m=-6Uxebt|BKLx{GtF~voVv5c6B$ZSMDf}MEH0F1 zYmILBx$oakSJC{=f2JO3u0e=U0Xt(s$jy$B4h(N^iBs?4wJr>Hw*Hob0y4t_eS+tC zeQ+e4M?vPzTOz*c56rfv?U+Qm`QsxI7PDk_k;U@a6YmT^Ls>gCXB?``89P^`cfJNg z7?CbA^NyV4>dW?Un;u8sO|mpISo&nD1Co$mxLG(K-)@R&YOvAp$${%EKHdBtPIAR| z&)n+|cMR;}l7BA;;>z(=ac85VdBEbH6QnCEM*m|NP5GH}yM#W>m_D7>bix8qUs7`H zf{MY{i<1Pqdq0ILbYcQF@Qd-&Gyp_(XuzJ4=OkbAHm`2-cTgO3W^HbN(- zQ94jsTH0ADeA(RsC2+8YAg!V&tMJxOrB}}*4uAd&AH>O5HnpPOjkYik>_UDW>FmGQ zjPJkm@HNp*(NSB-;=cyxNKa6dpyoNSCz48YQh@>-p8 zfwZ|NMdf7MjNLpa_$DR8C(ANob|`e*IcF`15ES`@r3nS_E#7qgTb)Ap>mZvBV$204 z9M-;gurB8@r{v*! z7ZVisb|#a!GFe_}3qsVrXdACnXCJs|?uXpm76k2pNg9H*m}K-z0i!SmuPkntOWSd? zv;`wD7X{2|4_#R*GSv{=EDhUwXZ8*g(j9{=EU>{N_xJY47S5OW{sZtxZ+C2VI!ikX zuz^0-NSMazl8%z!DA_%aS};&gG4v%G;7Kt2RWKMN{Z77mFgoL1M=2RCXkDX5C^J(= zwwWu@p$ZgSSXc;91Pid#h_Z<1c7u&@X+4SzN`QsXOdlvIrE`f7I3ra}9)qd-| z4dnXayV`v=na?EK-$u3_d<(v8=zJSKUF7=@4qejgm(UL}B=IyK0{TiPwcgoh79jm5 zFZmd1DOgRr40d?QFxC>Df9Mk2j;biG((vQC_+)Eu71{y~{XCouhcn=9hIA}>47>>P z&c8j?wsuJ+aoG`h$I^uvS2mt_cOAK_+tc%d62QT3ADh1jaCzj&{^>Ef%lD5}eHU+H zUoCNTsptA+)J?F6lUPk;AVAS`K})>;IJ&ivZQmc+wk8PkY2=&L8pnrYkAch6v$ZIL zbzU-W^J#cL2E4U#)@46FJVCWBnTtcVnbVOY3LYkw*HJz~&Bh0S1> zYOZXnq&&JyLq6K|Rwb5n&xgm^*G99#-_KT7qPGwZ1~otL{w98%Sq!6wir0+~6s2*B zRvMETmT`LBvxl0isXS+GOKbDxO*)DdAca_YDq6kHx^KQFuYi?74Rr^$zH79?=6yeY zvqdZVCbjj}U++~u_J7}=II3jK|Bu9D!c)$@P~Y;ee=KtZlre+qv{X=;xnS~Fn4D>=D$#^KXe$R zQ#8}fL7k~AIqH|Npfk-6GNvfsMF2l|N(K6=aTkd8OE{(?(oZZc)$I-M&WAM5ImK(i}Wl3paQkh_3nXlK%w%73R5Ce0q^&wcoVQJDSEew=nj<%uSR|;?vI8T#dAdR4k@b31%8Xxt z!UClu3v7l$0MYH}EAx+PDhIDJt_lkISIy z1`Z}}=BqKZ`uP|*tjM|(uj=rpk;Hv*PjujTB&wF^;uC-h(orp4e}C*L}T<9LB~Sf-g1pplf^z#GJrO!m8`3s zBy*-R62`D(0|+i`2g~?>Oq6g$rItUqaBg2O@TBq5#|^YQGa%6$wN+>xm$kEElSCW< zBt1!hZ474+jAUwz*ueMn^!0ThaNNw~OKe?^cMjg&BPufNjxABq7Kn9K_M}U1J=ONZ zAh3NJRFq8^9>eZRjnU)+9PZ+Xw_yd*rce^!sF<=&!{@IObVViyB1`e5^t9H#jEdTt zxUPI(=|>U&6H^%{$M_3ek5rf{>rm-(U7vL`P?N(`Vs-auM>@;}?2yoWfG!!Uj2>Q3 zrdEDZJo7tE%$9^S*_39ET|E#wz=q|A3uuLaF5`*`y*la(K%;im1wRwE^)>@kq|%Wl z4>u=%#UZqwkSp62bZ;80gXxTSV;ckKh$o>C+>aol9i#=P#Ap|Pi@ zCmCJ&WV3(7O{A%k>2t&<$H*u|hXES3_AchV_3XvdnGN@6L-DkJFA_RQz-<&Q0%{9V z*~;QROXLh4V4?iajp(ieJ?!Q!t}n~uw&$9n(3Th&j9nWrBauY#KY0`;{tQRwkH1GT zB5w;Yly8I~&3cbHk@A<#%_SFS^ul26D$TXsNDjw$5LsMgI!66zsbIK0-vZNTuqmw{ zy~%n9ps2Ipf%FE?(seA_F`Z8!6FS`u36`4)AHrjP76WBABks6$FIVVSbR%5COdU;2 zVsh@{;;1)pZuGT{V6n$t5ANL~g=G79zy*lihzu!3I3nN;Y(_$nCye4J52YNwo`=VS z6kJh`C9vq}htCnLUA*&GVQtx$oMRm+>sl7^J3x?J%;oV{41ulygR}kknXKXX!5h>H zd)?&oyGxS4StFYGy*9^JPXCy7TfuPuUg~a2z3n1Bo8^)KVuE~fduQBmzZ%=m&U_w! z+0#nDNcvUjz}Ht7R2Jt2EY&U)n$5k?fM*OS3<8wBgie@x>K$=4c4bjQlyXqvB1JA= zso^5$%ELq^=jEO|NhK^5xN9nFHy)E{aVf0X>{*g(p!k$x}~BnNiCj+;%8_ZL@8?s>D-wwA-h( zR~^Z|V1jZPo%I`PzWs+N%P*Zv1N{}r3y6Z4Fhf;lFjZ|SKc)4!scP4n*dft5!egj1 z1XM{S;R%ZPs|4HIB-=0$vb<&3D4rmCMD0JhzP7E7*ZyK;H+>nF*7TA2NgGQz|0Vby z17ekULiJC_wV4I~Au4*aN}OZw@WVSsy~N}*M!_g|XI|QaHEhQz4OwH(!ZKkMUS>Lr zldx9YI<_JwR+RD^r`SY|I@+0CJF#LIv4BUOySGLuHhPVh4D~UHCRO^wKTgMh!Ms#9 z13I6J^)u#*v8X}wb==N~JD2`&1{zJgWtQyuwjQ549Yz|^9Dkgto z#*U@?5wESl+;Mv>a~<7dF!(1kb({)lux9ksuHksuJe6_E*O-Twu^W8DfNvZeBUnKa zy!U_$wr@mVF>7ZABqfV}Tu)*}Es_GkIKO(0?UgTGHF=kJXYVH57Ej*vQNASL0r3#M z0Ec0&IMDZlOH%lFPeW3uPtSL^Z6@V;T47$=Gcx?zJZ%LZi&gxNl%)+spzfGX89Wom ziaiKN>xGPdV%$FPI~c25>;Har`l+YCEG_kw5~7-CMEWI03=CIlZL;|3S(j_OW%Q`? zp3sg^Z0W#N97Y0Uzi`kryFZPi>w)dSTMM1!p$z?w=1P!sUU*dKSKD4b-TN)iKU?Z| z%|4_Pqi23uDWLgw#;l?IqaH^?bFNrd+$c)Y(QNg*d*9-Gfn<~fSD!9@VkEbWx@Vd5 z10301H^W&SVkh?mIFq+g)JFjZ^A0(|B}OfFmUZn)c-H2abxn!&}TI_qbo{Zv!|>1Tx$NlO;zdnrIH$H z|5tWd=}~M!Ms`pBv58vHq$Sg_=jDtwap{}eD*jov%qnd#zbu1Nx(JHN5`lwxjNe8M zxANHZcVp_E*KP|FOUtaE5ofMFPc(Vg;CXeskwJRAV{xvmsGZ99bmjKrTGB!1>H~Jq z(D}UY2(MRUOW3l61w8lH`PxQbFO6J zx0}I>>ZCdPSA$!`7dgcoTzPJDl4*W=)K%Tb+8d-ozjLj~V~g;%s!2WQvE+4SWt45% zG@z9%i~1t;Y9sVNUjCW+>a1FRl9olihp&gEX}znP?oJo(%>gcgA$RsA*cS8j8tvBN zo>kgzP_fA5i-!2#_<=CRO8F;q{i81Z2sT=}=9#T-X@&e3Kb>g3x1atooPD~x_JQB! z!Ziz0gcl8V++C2IZ1GUXM8e9V^3TIiA@6zIwK?qsi=nihOSw zo6u*2gY^Y@2O4;maV8Mq;<{=_vR6;qIg@AHk(NDvjxGZyhURds_;g9{Oih)4Ld?mn z{z5j7WyBEsG^c4cBJiw5euez5p{A#eoc&$%6Fa}&+9CbjWpm81W9Z(5T4}lLzd9|i zG}I4lSotWVLOaI1(5+hkxo?GoP|lYf<<6*x*i{r;Se>a^|UAp{Q~6(w01SNxWc0)$api zx~ua?B$mFe9fULrYzpgjYub@|)M9h=CRfJk1Uaw3(8sf%mZo}oUg?k=ERcBlvM;(v z?KH3I$_^4`V7yCs-Qj%a;L(+97AnLDzuj*Wx(zy5F2JfJ={n;)RvaLVuEpDz@5VvuAb;=&7^B;KRU+Y}!uC%WG zEGK<1KBVOBvIl$pEVEwyCw%ILYbA#B@&H3vk)s>EN+&$RU+vg>toaRlq^)z)24f$*88pkRpDYuC!FRzZx zN$eYn!$(qwX@>FXc}H^*X0l}j-dT`+{6aFn!4A1Y$1eQn+jD>LSB0DBBMU{s9ziZ~lY3piND)-0gr}(CDMEZ5dgCRaxsHL1g<95rd&Rs^aho0@@krrPO za`&QS#>a|7Rut!i)cM)fIR{z)YdOeg)jK=GI=cH?TI0f*xl=__SWuC) z?D*y+%zs-{@I%&;;<%jtkkq>?v@+x@oP00#?U~JK6yxz0MixuN=DEr@wkXc45^$cP z9dq_aRfi87`^)9!_EGZaRdCs=Q~hai(kmmom@5nAJ?(5uqaG|h8zP~afAfm-+8b(G zt!K9-{A+#Y`|K+}VssZDOG@q?;!or%&*U!rn=ABK*}uJO><(EsNSFMYbtY8x`0wmZ zgIi}m<*QJROZGDd=i!yT(d9q+5YZwd09EZ?xwGT zb*l3hnN;-sNY{z5ta)wRA6|JeyGhJtO@I0OC0b!lFPp1h8^zuXjy)0keGe{cb!MFY5d1TSQdel~f;{wcK9}!@g@253sYf`nL-4EO_p_Nix>)!f9W= z_QQ7Tn;r*>To^j>Zt|c+!M1`{nv?>AXKViMP`f2;Q|B4zy0PkRTDFP8`=Xu$e=E<6 z2-W-8aa1@V>2HViU?eK6kXE!~(zczP{PV7C^KbGgwEv-fanGvqm#x)H^gmY2DU=t{ zyf<9rGfS+}`m#WhvBMp;h$l{SX8B1hkAD=O{JP6C-1@!eg&$IFQ&0Um1zxw-^;v;r z-=}ztG%nj!NGN@h*Gk>If2*y8Q@`d3%e8!KZ%beFb?NRIb{86pde>Aq_EsIWu@{KMuoVn3qNDLw=m7$hktp!3wRo@@F;1J@Wv;ckjtADC8=(%KC6L zq3W)BoBw9((te-pLj&0fvXOd2KjbIxsVL?7<@4%ij%$1QEU{drB;6wwL>W|iXv=j! zdE+vMy8AP)%e}64I`UZuyCK%YbBG2Y5EiUI+wa9dks{)E=b9qo7v4!ab)o)u&DWbp zhU*1AJiTv=@t6PI_^tebw1&2V#oPK5vrd~ccka&R+hkX6H~7nbkzQ&=pY@jixZ=0j zcXt)!Lw5be$beVS^(QO>KhN^_8Ez6eIeab9`D;Qf2b(VR>&Ud12IVeJg1E6wc`Wwj zRlJmxT3?>k9-*#Za;n(Nwh5Vm{Ey)%-c?@ zii`vAd1YIAPX(Q1pSvWX2h*ZbB=?Trc5Ps0~3T5!;~BU^qM)#_ex z?)}fuWX1JekMC5zZfJ zP^J?R!Rz8Fp^#Xe`}w8OxuTtB${B;&jG7Mb*qWpZy5}r^?CL%@o9|HdJ7x95>0(o+ zxOPA^m2nYO*m6yUX=9$`O~vSt3ONsBJF8CTaOE_MrSWIJIS%gpV14Ou0;l2p=l=3G zMM;87c!KVK-LL{GD!?j(`}ceONOJ+yPFXsDKs_mpziscksoU2pZefMh=}I}HiiiD! z>l#CS_thO1Sy!55)v23(Sh2k=mT!lLkzV0teSN)Iypq-7jzRXm_lq1BD@Q!<>$+*r zuho;;_fhUv*Ws^u@^Wk924>{EvVQ-s?U`jKc6Xn>Vwm+V!>{~RnCZDvw=b7Z>3@&@ zrXN?|7($+!N#RdjSl_pdN(YaY$S{%@R1#ZSNg z=6FplvaYrH*yUfn7QdcYHOjrrRW!TwafzB&cflKI#RL4?Y{KJ~O>tU$IQI0Z69$gu zPnSkmpNv;aw9ee$5@%a%)@$_hl}$>VLSgq&@h?G#nygKam_Pkh_p)Nqo^3Vlcb|QV z^0g{?_ejT!&t@otsHB-(N4kFX?P}5dUH|4|3vX|;en(CYk9B1Y$FAbU6!&J^3!Q=X z7#S5D_=)b>rl%O`%X2{hv$p(zP?KC)fi54 z5k2QZf4@oP*}~S1Rs?Ma@|##C_rOnZVbCSF{!6kx#a#IG%E{0lo15nzZ1-F=+%#Lw zDZ=Mz*oNvu3Y$vp-nxcKo_l3zpnC1)@sM-ptk0&svp=lyk!`8x^KAe1wwX+YJ817) zy4g5J_|dSB-IWl5(33~n(rahbiCQg}eRO!}t!k!k*UM9qIUi^ z(>B=wT~2N(+nVUMtloPrLsl)KOU-_KjSKW1Oz!@2`1FtBcAIx!X5V6P> zE@mK|c0bC(-&g)kRhI9;IO|J4YjZy+iUk$R7pmqAf9Dta)%P*t@Q>$DHb36iRjfN% z=knUdK&u(Q5`QMV9}I7Ck4fg|JM%qQU+>1w%e3~HUs?O<)NIZ@k)f}Y&vC{`S&*5+ z0ln{s*TtUb3`}#0e5z$xxJJ(6?c|hQ57bv|3@eR|H>A5A z4)RN!w#HfdvJ=(pci%K@5KUAvb{3t`-fJ03g5sc3voW)$U&OuI+E^zd?YH_Y)Mz=v zeW{H(;cEZi{rXNI$F{q3b;*31X161~scQmLFBE(n#^U7TuZixZc)OU=8i4)nt8ogw zNc3r&6$7WQBhgeJv3M?kR||a{qy!{bDv%^6QktN7eziI_&Sau zrScgIU~p@%d4^mNqR}2#(uv$gP_p*s2Qq%-5xSou0Znf2_hWh&Mj=`XUVB=mM@{tK z`~GB=KMhtfyQ^6SXe(2w#zIRacYwN8&^-T5KzyCu`$)L_3p zZsM;-0H@C=*Unde;Mvv`00v%)?&nabBcCm7Ix1+y0Ax<-R6bkZQX3H z^NVR+xh-1X(yt3)WhMMh&!<{BccUEJ(S5}TmDmhX*RwhjPH)~YECVjL9#&Z#nVoB6 zYbUnNFMxgGyOnM#SaWH>Sc+QG6OnChl{r-udRm&T^ryb3>#sbS0!8tARTzYN&S$h3 z8pzXD3b}Wlky#y0X(B|Fk$Q}5+7WZ2E?Yk|#6Z~k{7<0viDS*f%woK$&q>$TbMUsG zb@PVQYQ(_Rhnuh`&WkZ@f;|ETJMwO($MB*+o!qhP#&{;gnyHK3F?_4RZ}z9P8$8>$ z^+IWzpdjP`FBnWq;p5rU_1qQMtvsxq7QAMQ9^(6QHiA60_(``pB~)ze!~h5MK2*cp z-6qF5*%DinK$^*5lev*_{gM1&_#qI$0`uCdJgUweVZfI_FrlpR^v(iQFz!H$>Z+M- zE7^K}O!QH<=xehpiJroyuBI&)6n*gQ&VaeYK|qi|CcU^gnugZ%+h zBIg{+TYKfo-qyOV@Kp|_AAb(q2nI3MR`_X`WII~-`Qwo82u7+pvy4~M9V$L6znvp4Fn$ z7AnSJc2)AfXZas_`;F5o}WV~%%ffB9IB#Y2iFvn%G_5vx0M3}sk1g@jCb4XLl z6PJw;cOS2!jpPBQ*H!GP4zLirHvDG?<=ZU(&1v080H@1G4vjRn!=_s6?E&(t*tp+G z__Rja#-SrjlFGn{P|TKR$D^qIEkKQip9VK`Qd${un@+dg+XERoVTB$y^QURT;^yd6 zwattT)yX#v?h+P8^&z@*SPiu@se=*_mG|6cKlv)W#z!5|Q(9xoe0QZ2q~_=S?rdWY zfRV4k+jkV~_mUdDHVyZBU?)DZ<4c?tTnaTEmOt@R=PzB8Ii0&keVmHij*xp_Y1b}h z7bmwz_OCS$ct$C?PiZCU(?cx;eI%|*Wo<0kGi&zs8l4pQatgXYQZA^Dr+~5C z_jtG`f4?%8kEwuAW~|7oCA)VXeX+4kTbbKVbuXM`$Fgk1dTT9~Q2+bc|r|y(N5?7(bQjaO&7d&%~)y-h*C?I7qFz zvmJIkiS4{1{Mh`kB__)q_+)wK%b35ISX7E_np^W=s6<+YIY9QLXCUaj`R;dlue}|M zsK-%|9ah@cgr1sZxvk>d+2;$-_BA==e$QtBKJ+NP6wz$-I{GYs8@S!xPuMCv1IIfy zIPFYUL|`;!q^k6G$sl+t)jC4|A}eZ@NoI2=S9{|KpGvqZE8ezZ%H=Zso1x`L{7}DB zYA;Y@*KeM|xRuvJr`*wYf-<)V>v?(piJX-gYbh$O(?9*lfbFuSUM!L+J zf8_(iDE|3a31^{DA)I5f+~Eu#^$cqnAw^l+&dnwkA8vdB8*n;N=|3>ja;LQaYgW6V zYc&l(pL;qTsQ>8!&%sK39z~c$@hz>W{=2(7$R4THwZ7#Hr%mxDeW#vc>;AT6h@Y8! z9eL}+R2{9u&)7=3!gaiiTpksh$Ao}x0JMo!_2Zgc(A9Bn_Qp$0QnUI~6x{SGa+@K* z)(mR0yy`^5#<)H&X5qUh@l!J`Lw>`do#UBXmwWw?}gG z0Kj#iPgX=na_h$_`;p1l^c7A7mu4Zou%}BUdHr|tNd2Zi&#p-*$jBUioRKk@6ZaXT zXwG{+c($0hxh&fTDcYcqKe$)bL%1Jda)-smdcnBAUBQa?YB5zU zeoMx6z6xXU#OITB|72cb&Gw_BT?FdVc$V0sIvAqEB-_NKiibahvi=1Ddsr7O{`<#n zFm=HU8n4&>zVwThfz!Ag)WDLMep^?rI&bI(@&+PjxobkbSIV;u67R5pq?Ilm;lQET z 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�yw^!=NLv9RR;o;@&Ej7U^8A*1>=y|O8PMb0x&w~g>Ktqo4 z;Sje!**4=sTWF`Ke@a`Y3C0MZS}u$)^}b#mB%j(1EXDp&mIn8hKMs%I_34qe+Az@`&K2G}U;=hmNVI!#r?y*~^Hr z_XzF0Xr(SB4@QT)5jvEJUS+ta(kDz39V-lczxb2fYXW-h!oIXBa6yE#N#HmBS8o5= zH$^N6zxu#2L7wH!vUb+GRBgLtwBFy>>b08#d-QC&?)v7bg4xn6x35cFPhRVpU0&Ll z@(emM#dEMPg{B2&e`wOgh|NjC7sB|wJ(joH5|<8f?^!TZp>njleMoiXxUK%DAJw*Y zb+DY1p1=IY*MI}oIK0Ui8HK6rRh%;_|FmXI&!4t6l_vci5nec?I(*i<_XFKSWP5cG znsWJ*c6sY@i8c!N@bK_ibxg|o!ME&Uq8+*WCI5M{J$fWEn@u&I{Eub|E-M(tIv@?@ z*1(~buWqf(iQ1(g!%EEpRRVv;LXJoO{Wr~~+oTm$odL~g-uRzFsZ1|KbwDoXI6fY0 zq4*_1u6y<%$8r2FVzd|`a!1*g^Eda#XADCuiF$!>wcy(I>-b99OY7(z&(9p7(Wdht zf3|(KY`Mo=yN0}Y=VveKdbwWzz3h*N>(b5S>)H}hbafM*R1)IU^XvCgUEyXtcH&Fn zwxr9&^{tJuiKXA-TOUQ{Ca=?*SM)O>F6oQ&w1$8Jx%$ycj2X-`Cx*FDmEbzfR_ zQSRcJcE|f>8*|a#X??hUdPeEviVyJ4I9v)kWWa#ytPr3%b?#hfe|V19fxmVHM71kc z-4r8G(Wv4ZL$1Ae2O2%7yB%nE;nq)`Y!{st684#s(9G-8U1n!+P2NNFW=N zy9U&MSl^CmGUb9aLYBg0A%5a37_5k0k37g(raC&-LmctpvXuWmcE!!bYKmR{^lI0_ zaU-VQdzpG?k(R&z{d@a+j`vfa@%Zce=n^4pM{M~pEg|=pK+_VG)nwlHj0!iImfvf2 zFF$yy!f3XZUz3TgrJ7Cc#iTs}{^#$dM73V&Us@AyU%z&!uXa|x7@ANQ<-DoEb%#b< z!KG{UL$qJHSJm2n?rN^QugCslQJzoK6L&tm{Ak$QAX9}a=z`s9e4VOpGbECJ!gToN zl#~z>GH7jfhfoLZqZbvom&N3*_>&4>FoETdkju52rW*cD2G~vvyDdfB4>4))z1KW` z%G9Yt@lS{752Aa%7v;){6Lg&jyJ4`hy>a!?5&5PH@qOp| z=f;*7m|ZnXd8v19S!+xeUEM{G;|E*43jdO{3s37MjjqSPsmwTf;UpE#TUqyJYxN#* z_*02x;jl^31Luyc{#xzzPDAnCy~bsLRe4p%ZFb7ZF3OrSrk0xZIpw+6DH{vgAKkU|EJr$2e(BfC}f`O!t$E?Wrv z-DlcRh4?;m*Sns)++=32JLCHM!>wJKf33`M{SdpvT;0*8bgMyB!5-btW9Ih%@rh=0 z?w%xdi(TJ>b`*I}bo>~*JwCqr^2Oh?w;u_RQwx52rKgMioLHq2SM4Lmp%Tl^}OsMqiqDO5ZKt#37vgJU7eg5;eAieVxLgX&Vzw8x zmyv{146eAi6Suv+8{o2xq5<`;xEnX5_A8RKzW)YPx0wvv+?8eCD|#ZX}8$`V5#Yua};r`A~o6&7DPW=dr-Wb9P*^ac;YY4h?jf_B83nN2+g> zbv{VlCX_rM*-lESE_r{(dPCkw`>MG2vW^akxf;HE)_l42reu?9+jXB=Ubgld6K3cs zrmvbH|2BNcpYHBMlWr)c>le&Oto}T@po5FNYu;&80BV4+_2UmMxS*VC;;-yr5_55c zxO<)yFu5Cr@*YSWN<}R&nZKt_{gYNCI59CTny(%loF^}X!IrQGaa+1TPwx!U1JZ+E zd@;Tx$q>_=$g{1KLKFxnsGtjghMbGSwh<-vO~htaZHmLyNokK+QbnfzS^1(`Iie= z2TFl097roZd!_{S$})-W_;i>vQrexrQ_;YjMcHS;1d#BP+qZS3b|M)+SjINu3D4S- zyIy?X>EtoHJB^TuOZ9#Ol8dBABx`X+08H_b>+R4OzsjRDO6yFcd%3~J^r6ig8)LRP z{bkl6ce-`Z@q|4)e{IMdE~{ABlv(5DsIL&6dv<@RQuUdqD@#*-f0G+H5X2eEdlOQU z1u9amBY)+T#*FY=JGYeGX!}_7t~Tjyyozk$*x=At3G@4vXg@Bm?RL^%eM-enqtvX{ zC(pVo-mI>Dy+O-${mQm`pXxmOH#Ao3^}l=8;bD#K1)E&hlCCu2aq%cIQ?h*q%su7_ ziTf4rAy-=9(4^nQgF|%@6K#I_2~KYy)LzX9`30b5Q!J`4P+{jKpB%OGpaKH&^A&0# zARu8X5fdGap@F~M5%N5JF{+csO~R}*Vr48Znq1f8In78v@-cjhU*S-~;{B)FN;?j- zw{pDv(>9kS4F=CMlZz)^k67FEY7@vnKVnt9`dj_K)emR>W3Q0gIJD(l{!FcFcCAGb zrK(lBll4+Mx%z*q)x4)zYgM#>GKKBk4u2kRUbi=UM;nAP7I>lPG z6goO*(~xpYvzcK$d&aG~9^5Y_q9IW`vF22(L1fRQKS$bM}uauSCt}AAY5e+dO6!H?yAoXsSa5}zF`o_QD)!|c} zx^$tknoEZZhCHW~NgBBn(KZkRd+bQHuT%f~RIZPUX?Ka6RkDdxb3@p0sBHUGL(HMM0d zlt{L9iZO{`$R*YOty{M`IK+|&#igd-Pi%VYVmm1?r0jm{=}rS2HPrKJ17Lw~=b>;W zi>*GSS;e5Ex1_~AI`7>=Y;k2Y`1(f>+ggZiJm(Ojb*#SB)r}INw}05hi#ve_&`*)K zy!EHcL!WT_>tkrJ&Ff+OqD$u>2=7G7&u|iB>=F2|vIMHUk>ln9?8N8s3d8hGNv^dw z_B{~awQ^H-hUTWP{nOps>AxZm+7f3s2 z+0ZlQDt%K*->R(~bYMiMx}SP~{-|4VO1xBc`-2O-!{3R)BTG*vaeeV_& zwEEhZ18`yn+O1At4$0zuVbgy0D4upHX=i;z+`@{Fec#!WAO1_~?||y*NBD)6aIYar)J! zw*IqBnhM%JhkVta`7J&ntuQR}cCJEz+QP!n7p`~lZ-Ss)c>Pv=;$+u~2lZ{&KImN8 z!rpwW={j)M=$?|me#`6q>OY6%o4Z!s^S*kw^z8uaYL`wa3A)Xh3iaBJM$Os#G~dmu zdwk#HQEfz1^IH#ag(M4XY6e^P!nuD3vCB})u-C|EcBMSOY zov}a3$Sm`SiJ8Jam~bH`rdA|OOr^Xcm_lZE^etS}QKDuBol2Dtli>g#pBJlrcYk0L zen7uP%Jh`3QYdL&ArB@#F%t?WJ=K~#CuZ2o{OX;hPx`31Zfd!aQmv5Hk}&eCoXkEl z{e*<+pBJuo)6J-~ahW`({;Ff~pJy8G1)fTp*hjMZz@=514omG{n6|0ySm7A(%~yYw zuj2NkJ&%3syS*Pa5`}1m>pPLt6^0HZ6uh%na=s?c3)5bf`*J#@BZN0uT zDLQ)Tc(Aw0x2+} z^e~$_Rwxikli_Q08Ymu*mY^RY^aQOR!mCM)L1X28M>hLb*;a2=0pZ z+ED=qc)u%FUhUgk@+rJ~w>90EB^>S&k}#y$`t|accy%7X(829v!qLoo(b1|7^FYZC z+a`LNF4Z`HZQLC;jU?hdaT_9&34or14h7YG{v40)6Z*R0{U(Vd^4W~~yr9T&D70>w zMF~Eca%U}mMKq%4zZOQ5@SzW+PAJy@@P^qfuq*KBQFkVs)uwK8c2j_D2 zbL)4tmsvmBT9n3Iu>1CNu-kF~mD{Nj9vz32j~wlC_u}o<1uY0g@w(D7|FMVUwxKfy z&M5kvS7>2MLkD#fzx}syE3Z`$La4?YnltC7fg->N?Vb|rgK#qvUyQB#PXqwdD**0J5N@14A>W_{JW zj*@NtsMWR5BbT}sqE(RUY_dILQ5ugBgNYg$eOMHEqsr;s(YamCC2r-F=oT#pr89bE zaK&@WSSU)-ES%Y2YN+G(@fV@T6d#MBmE-#hMH5%H<<<=wN-8Syn#=ZxC#pNSU|c$q zBW|9>omI(xY=gw@am#^XW@|nw8+jqLjkUPeLnuL}`LptHc_5kTS z7~RW*89qThtL#qPxT7(Zt>-rX#+}T2bRQA2&+g6*8}jS#r{<31?$yb) zm)<@;$Z9KSX287X(v>9z&y(t2u4G5iurJi)6H1THm7mYV*ktN}m_jh)LdSWjp`~IQO0R{<>%LrcJ_di*(2U%wxGms@Af&_inMFnb`#IJ0AD({F9iD*%jW#7`k}c z5STpig;EkdPF*+X7K^UTZ*Sch;fqbxtEW%(dDp=VSh;vboh~vFLUP3Sya~<`jJrA3 zPBTB>?}IWN_-Hh$bWn{qEm`kjXFK1Z+>5W}$m-(M)PIOEz^t3!udBe>gVq;eR#LWo zI*xuP!`MHOk;ng@6NF_Yz6vpG9xV3{3sV-y-L&7Xj_*(uCRJX`CAULwaIUs?`&q3) zuLCp6>*#0QfAAo{^vzNncp~~sy+GW)3MV2J*9MP4G9f7DvgkCfmhPR1v%$fPxSz4I zFO06mW#f>{9`aht&p5lw3|uR1Vwq_0Jx<2mBt$Cu1Ku5W3zh1gcqC5BHxkdKB_2553Lj-QOh^$;Jn`r(F-%T6x&8HTcvD+2NQmn=ik@ zIScm<(fYh;)y%Z+5)0WWynXhA_}rcv9uYCa{{6v;b1g^ffqNIL+9K)0G4*~wT0Nts zi>ow2>G#2-Q*QCI&&sS(Ywa_Va?&pzT_lTM>7JD5*dO=xeFS1Gps*CP##l`{SuBiW zK94v?8})m-mc3T|tidHd|47H(f(|PZZ zAODVSTp09>4V0rrMNng7>gR<+ljV|l@QeeUm1!}@%q7OQcuw85`M4vI#WBOn1F(mn z?UD2xX56YHiDuP)+n;=rN#VThgABJLn76fZJgh7&v-%qwzezKqX9FqMi zkN|HA(dtuBUS1v^{PxFAoq$Ia&!L~i-y#TH_{yHp2S);3wp<(LX?Cgf%gXV1I)jtiC zoQOO%b;h`{V-4Jmp>U`WJTppt>ystV&oeMKHEkAC+)3TI^uvWap9B9}-*3u%DRRs? ziHZs<*|UFjLbx(3yu|rZ2gzs^Ma5FQYH=A1ymA2(HQIa5Nk>t|EZ?;&-hTv^F%I-^ z_oxb)Z&wxgs@#1nN=3fLxAFfjwA;%ydRNqYsM>PJM74Y=7lEeC>d_T-yCLF6Y5e&~ zett{v{mk}Tf1|E!cv#rGWqSSTdZs_^T*PnzB5rTN`%`$%<3T)~oU~;}!|$u-kf>*c$XhPtd*hmtiWaWBMCTFKk523> z$S?Zp#O^lh(#4(NB+AUhnyn2hiF9!vy9RV_e;pYasPsHfs@L2ZT==n@#KM>j?zcba zg=K1R2g!+_*S$PA{rIE<#O^mvUWa9asYr18Xi^pfN5+hqzf~KTC8VqrB(Ca_qGD`?DX0{Y=~!Wd`}0;qLqng&J&wC; zf0S%<$l4h@SU>0)<7dN$h1gk13sN9EeY1b&j6s>kw2VibrO*KvI`3T*fzf3JWP#kI zwLhxikGU}lwvJ=b8wf{`2WbV59yO}uv||DGT$8Q|Qy?sl0XQCb%R~@(Crz@wagJsW zTX$OWP$-I);KD*W=H14gjbEYg;D7NvqceT0+Fu?|wj`)O4msnrfYX>RywS)y`XiYv zz>$be7F-Hh!~0| zgRZXUB{Zv%nIBpDtpya^#cro@Z=kOqcJA8W-t4uj8m(vx@xHQV%Pvf@C`YDRwW5%H zFce`a$p?F9I;Hv1tfr}E@c(v>#Kji9p18W6-2eRbYb&u3A}xFycb zt~^8N6$ zMeMa}FU#v@?UNaZKM`Ajw-DF!`*--o%(bPCLz4Pi_zM?IcKF2tBospNuWwhoHkGcp}uZe=ME3S&{Hx143f2nrE9bH17y6uS23) z629UqDEiG{r_lL&Z4>bj`^&dPNYC-uQj1YYdANoDOvvC!16=YL)k#}QaZkQKq6Qv) z|3Cj^eB91jnCkmMwFvCWCvfP>n>#-vK#F>a#`ry?m&n78-B~S%fiPQWPSF0thp%6~ z3M@R~N9L~04De`tmRDY0{fGGbIh4D;iZ4KqS0t-jSXEp+nRv-Jg77N#5 zWNf@?^X7PmawG0XvWru;Kq^PZ>d|5Mpg->D0vV9Z{vgRol)mHO${g;3>KoNF>t?lcG^hIEp=59hdjVNdc`^FP=XTbC9?9 z+^@F31L0W@lL|fRLWb8^IsLRX_bH`??mc^g@lOO&ioIytQTS&v4M!Z@+f=Qa8FL8> z@a#2K6^$9QWb;w0`&D**gd#TM?mnYSPC#o2n0cf9UkAp;lhrc$&G=z(r$~n;@qBIIDh^U4{1b`Eb^jv0cgj$UuIx%6-%jhKSW8)d^A72 z|5LnWN=QjfRhqjR!mcqDvH4=xZr%LA?!3kA(?v$J{b7iVDRxm5)RE%VM2A-QMe@kBv^`;Tl#$(#3U zNB-}c&52^1Q6>7mXn~EH{W1(NS;*j}!2aUhEb=pp(%$~z$T;aS(a8;YVVR=LG|nXE z0#U{RHH6*ZaukIu*XCjc06IG8ea!RXvHLzeHQ9Xk=fB4xZQ-b?9ria9BN#9SrUGEN z63Z|wr`|1OjFt3O=wfOa6b!NCP^var*EW zH)YThk-1?mC!U?{ku{u=+yaqMKEELRLD_4PiM=>UsG@6_g(2$dz?7jHcE4{`89TPg z%$C4{Y+3lWOXsJ!O%qcYh=}l1z)GkyCZGvkeff(QFZjLR@OVI*vti4@0|yw&C|q5K zfr>=8?4QF&jS`w#+b*~X;?YCy7w6j6YBIhY5vGOx|4F2DG)Dw{$!8=b=RF#ttP1j0 zoZDQG56(-&x(^mF zg~#l!T>|Qakw8~tR~EgK3<*asezw|yJFAyt+b?>ImM^#1BGa|&PGnoSoBt?@k>x%R z!_s4|j7e}P?hJAy);J{!f5#fTL^d4j7_;X5%l}24N|L`iJRZY07ICth&brHsfa%P7 zTRy|NmWV&59Br*pIQx`pt=$h6(zYbfai3uETLthE@sHcq(s};;)U~tQT3e8-s$vo? zoerlnIOtXRi{<_dR}%PEZ4Sf|fM594l5FEh;ZXjS+j8dg>D=;NB@?YkQgI=qlt{^* z+cRmmNlx5h+87}D-i=DQdG)@*G8VJb_d>vpt5o=D8C}5{Pvo|22M;^g5(~$}+_7N6 zi_&XwHm7-b!}#kowh&V!Zkuti^uK`S-V8}2XV`PB-_pJ{lTzs1LsyeFekg(Q+^cfp zjQ!dBMZB!Yt2sHM>?ufQR^q_}aENG>gVK0rxnfqg+y0c!ktL5H4+jx(V7KPoDJYnU zg)=mivT~TTGe&Y^Q1BFfKOdc@rHdDTf>OCyhkBqO)IgDU@)vGZM%`a7?jU*WHY7c3 z`4ElUf|`^_CI=c5M;Uv!mfP~dg)_Khw(0STqA+o!Y?Lm|mbP7mZeC$xA}EHHQ|y}U zcI@EGns#ALvBCJCN%fUyxRoLcBEVjaj_xg4eMqMBEGD?poJzMW&&rmum_l^#*pGDl z=zvmo%!zT|lasF{~Uhl|A);pIe!;%yrr?-39D*bUyBYrq*k1CM8R z`M8-gZv_X>$#+-|C}>{CIc4pB>fT+PNiAxZxFv9JMdN-e50l7^Xvmr12K&fq7w~vm zLVSGcd@)sB+8}V^G&e7H19N^Un>O!4b*0A0i-lh`t#97U9i3E^-qV->gl^)D9?E1c!8 zv|A-+(n!?ynnfvsX1ATD_qqhvx5J;q%|~j~<1pduQh%fHqhPK!zC&c(ULI## zGu6>D?+){>#*Nz&cvlMNC0Bz&!^2q#=_lt8P&B`!lK%B*7lvhsTb13>7vZ;1y^ott zppni`b=$8Axeuwl;cZ#jAlwDT-@kg?&ySIU2ZX?R?l37D27PlXnM%A_Dv*i$gMcoa zAG;IaxO%}tCim!VWLE{8Ib*%WcE^r0ur{k4^Jo9kQ*w1!^(UTx)Ae(qHXS}b3rZm% zmCR5`G<*6J1-&o9|MH7D?nJ%tlj>x+La@)144}nh@Ow-S)pEfA>kJ%Hmz=mhFNs zx9J%J8r%C7gUYXFhUq5lbS++3t(jqo*Fm#Tqs8gP651dySBT$Mj=L%R*urvXh zl5lozuD&5EKU#&fMvo3YfByG;2Z)uY;`GF`O$2=3#FN%BC(oWcij|!ElKo6K5%1g7 zhmJItui2aGI@)44UzJcENurzf8-bT*Y>aL;oh#zMJvEoFSi#}$u^3ur^OQkshMa-N zZ}9-)Q+Zc3av2zm@Zd<6)j9ER%QP54U?M1jiG$(b4A9 z7#N@sKX&X~@Y^i?rm&~??#=SN3p>1BDl?XJ`#07}zSI+*ou$;oMJjXa~Mwpc?I30O-tbtL^M+5Q9TLFI%$YY!zm#?@AAV0`s86Ahm3_ZR5Da z^wziqD{O3N*mCI?KLyFQ74Ywj&o#ff^U9=`2FJd57q(P65{5?p+{JBkXk=sonHQjH z?b@}JTVTVAXHpxbp~g6K8@C!yqBG(<1m9T2Q4mso6OqaixTlC>#O>yGK0PbsnZ@0H zD$HsZX#l-^o1V%S7qlF}{;rz5>jX13aMfjK2dqs?3X-Dq-VPZefE5HE>5cCiS?!lI##&-^OjJUelGTbJM*((oy zd8EM2remeM7COY5fe3v4=zk6#tgWjfj=Z_fWwd0;(Qy?1umw_Lox4AXQiy8vj23?f z*M1wrhYL&SGQ*o#ltjxWG-z!&jpNojni$AkDOHJ6)iKd5>VZ&airX{pJmn{q718g6 zb?*4_Q$+#nDIkPwWBO@5E_z?OTB3GhtXT3QN-JV&Rp2uV5_U$2VKa?C(W6x8*_a{! zLJl_#a^D81)E7=%qhgWQ%5)d=)aC?<au*hArj|L>7ST*hYd&)T~h0mXu?%VFm^%ynaNvm^`%X9$&xi&ysy^_76*kC zycA^qJ<{!CDoc|NhfN}5BO#gEquqQ^Vyf|d``TZ#dNrZ$lp5lIjmE>a=G1X=)R{6`Y%|uP-arNGlcQ*EEy{FoZigA%S`bj?(~H8%(onzTRT` z-A8V$n)LmH{$AHSD6BIODND&8^5^F%G!#S*4cNt^iqGS05Z8;fL{t8OX&Q9Ri$4YB zr}4~U3PBB*Twez=QPNZCS_gmJp78kqWlbjhK2#h>CSMjwg6$ChYNbu$RK76}E;DG# zKOg2}!9YG}ogF>9KUSFH`lhj|o`}XZ1V&+NSK~axNkOaxKP4p<0%vc!Yzkx=^hpCLH{)V*#8 zbumZW-BS_|An`nL;sm52e8qx%GKttmIp_U9Dy}(CHEs^KSu54odX-sJvVAz_8D*+JrgF&5*2_i;2s z&Y!=yM4i{=TM?A`kwk{wfMo_imT&G>{=E!)dkZi2Vloh&*KP6J{Q3LaFSyAM&OT9p z&GjLPTMGQ|bzp$m&NZ~8AaB>5H}7I-=#qK_M!Unh_Uw85@H&8ddwuv~%8M6Mm6Vib z%vkl3SVQ4`z#E@6zluxxurl?MEDGpawUf`LG$Mj%=QHH!fln-e$ zqP)#W@mjt@Rzd5kiOl)-lM(v5pbX2t;OX>HO#(hpo?W6YFue-vcUxCn4bso*Gtz_` zN2_*fWVD>u5B~oC?23)|)hUO)5r4{56Y+$mK%nAc1;vtFX077=&OeaUQfb361kecQ zC2j$h(Z+5u+NM9ofdQ5n7_5^vpl?)0Xz;lxnT8=2`N5pidSdJ@b?)5EOaq>HoAiv` zpV4hsaKd_p2qT6}Z#j7PXz2uAZARzsHQ^JAbvNGs)!SnPS6}AA`5kb?COk}DJ0z!_ z2#j|VK~id!nYWzdvNUKLfsqJ2A$xAYC8!?$0oMfiuDIB8s zFWxw7Nz;oAy7m4)$Loz#*CkpIdB{uu@$kr{G(m)av5HpO@O})lp%02h^@0iwJWa@B zjqTKr)Pd852FHHwM7ftFZPF2xR9d0eKn>nkB@xF*`Ae+*nJx#^R3!B&2$~pNKkYp; zcvTkAh#U2)TskP6sP@306DB?r^$97K(yZx;0BEZt+t6zS0E`^@$2O*)c3Xa7$+^w?wfa}7B6y?3~n z$x**OA4Wu6)2y|YQnd(I6*L4RraLkl(o9Sx6rteFKGAr_Gvat!xO0UG!a7I_`s-dv z@#REEm=b6gufsJP5*at4uMfpOaRo2p8%GL!yLzJBK~J($Fa^hK2Pu6g2wO5zXt-rT z+pyPk#il3NDQ)sGvtIJ@RZ`i2WYNzaYorUxhD7Rd!KLgR-)wym8yK3YTkK^irG8>S z@dqPx7UECl$+YwpGD_%MAxGJov;FV&|Lw#QVe{6ksK#uME{$sq76_Sw#(m*Pdh6a+*5S5G;O{KlG zBcxJMXct9k)80c`DoJ~3mrBLc(*7OyW4xdD`*Z(cR?l_c_jR4)IFIu<(e)JF{uw1A zl&|MTtn$oEO*fK^?NI>Oi6J(4FmOYOx)Fqc3j!NRob=RF!VZ$3Kz-q_C2MnF63u>u zK7@S@_&ziXD+epkS0s?BsH6k~MnHfk!v_)w=%>~$2)zb)doi|$HZ9IHnro0v;J(52!oL+>m^VQ;gWhdZa2}=!)%v zAbZ01p@bTRVo>k_zampc=-NkNXXP#Ca^m3jl(kdrTr(lwV~irmqo zN1@{!3n>>u0TXy*Oms{PHt`~Gm(qP>Gs8fg5#t0yRT}gAzyOj{QbNyYFmisJ(hP_Y z-H48qjU1|p^rFAZvYLXzkv^{b*L?2O;9S=Z-+OcnKe+DgR)V9~#B(oqTgegP4I9YJ z+XVqtNl#Bl+osw zV&SVa`oi64nGtSuGKCQuZ9`ba)2D@vW~YfkqD;9pA*53BZ)@t}XzH*D6Y& zR9m|AF3L)$BtUY&7q3JYFEVa`RR9n{u>h_El|#c+)Di&$bE@UeAsB{ko5j#!Y&pPr z6cd=f7oChqqg$b9!CzBTULG?lL7s!lBN=b__e8*;N{|7{zXk-*YlNc+<>p2dHh{)z?k9De0bv;RwkSaXQ+??S18LFHAxJi$ z$*{*<6g@X}b&6O<$N8VW1b?iMBZ!!owSzbRkyk^SMBK`+Gpx>poR4J_QQE>>pP73mB2Rcxww>z!`;Xbr<<7Z_6C_1L={5@mgRd`K?e|tA&|ze*cEU( zbQ1prBQsv5tU zB5h3KrSJ@_YxGh;dPq&ZfEyw4*wcHkNq+~t1$NI(_(Eh%#8imd9JJw1AM3>QV9aGl zkqhP8kM;HVp5~26_>dbih&d>KPDU{gBfG+g0va3&<|toBc^Q6xeiAn?izf)pYH~y- zpbSK)40;FHPOQfGu3sdv8*you{-|F2^UxDp zqGOpS0Kwflcah_9jGdsA{NOT`$IlB-HfkWE58MPc&tN>l@Dh%m2bh$%1Z!qKe8Uf& z;n?15QOHqA)_ug;(-eqPkiG=xp{Msd8e`EKKa|!2@XL><6BLJUL?ZMNM6_sp|7hM9 z_+(xQy!AOo0OxeG1Qb~_wG-mwxfBUFyRfRtD18?P$0;1`71k?8Kr}(9*?UPy zRMY|0OqANAKZJ_qVU7d@2AIJ=cYxGp9rh^}<^WW1B{DE<%=sh=$}LMdo}Plz%mbrpSyfH6P}Eql{UT!2NSg|Fb=WzF{H(Hc0t%qWRXdd zu`@(5^$>g~BG4ovyvyf+RuRt#XqAeJN?s1)6yWjx!q$mIhT>!cIWZ`-Saswt$sow@ z*qibqfV^jviKzMKK5`oJA}r&7FCKpIPP;cD!UqzB+7@=Y81UZAwAZh{ZAXGBub@y1 zI2ybD1|?u_P%}4Argu*Q(*oRgN}iLx0vMtg*xF`{HBZOA+mAo5xNgRGpK(j=!a zOrl_CFWGum9vVanXFX1K4-M%*c>A5=p}=SPp8}mzRQ1q=-cFalsQ=!+W_`v}hK~eSlTd}wc`y#g% z(!uwlYe$429gENrRG&nQf!W8NV1#gX9uNuGU3Ka_we55uaw4)o?iTXp0O=E8V>IZ~ zZ~z4`r$mh?$=|tmFIrFl$0LZ?@rFWwOpnhCRLlZxm3;4o$KOg$N@~fpz&_89jk>x- ziE*cn@WX5*J}oa~X%YfMV5wWPaR!8+S>;-U z(J>AqC^kC{-TM8y^LMM1uX5A~`GD@95IZtPkvLtN1zr{E=f@F$we_*&^^|5HG)Qlo zL-d1~ycdXCHEO`RaLVA1nd-@@sI;jYA&dc);~*9-IQ!7543_;#Pk%ol&ZUxzY+-tdWOo?blE8@5qq9lfa<(l7X*oZ~`ljkY z@(qcFPx=aE)4)y;1mMncfU^MAgii+_!}sxH-bQ^L9e&ihpRb~#q5{WU8;?%Z?#F9R zJfbqhADARiLp0~Y3ZOT~_vzDmBj2=ic1+K;pD{<6u;f`V0AG-60$BN+~wiNz?US>Bn~8DY0+)%e;ii2sxfH{^(|2Ob5>`=Dv@7 z$))Q>Zgf9;%92G;2P7DY>88a4Js`fA0l%eS5b3W{Q!SAt;N>8_fOpk(&Hv027C3|J@6zAxru0ga)NlW>YtnVgXoOz_vf8K8nGkOa-vOXN_zQYcXb}rx zsNWW)t?W7snm|MrDM~vij}urqbf%Ra1?-*8N>2yj@v`hj0t_T6yJe@PDqgkYR8&Kg zHg?%YWF`$mn0|o&bHz`C;`oI);O-FnK_N-5wzigNc*G`a&9%36u5gE`mkkjn26h7U z*-UD_g~yEnXzg3?njz3Y;>WHAIl|{#CcZX}xrGG7{XR3GP%nv3=TXGLB8W`yp2U9R z=Nbint{!E~J@9t?A&v{v$edKq1qGSh0cFa_-rgQdHXw8`)U1JR3%wJl5P^3F<_JI; zK2wmDl@$SP3yLLJ70QS7UsIBjw)3dxL%#-uG&D=>f~w*eQM^I-{AR2)nBOP_!8K;1 zI^yjEve|?Hd z1f+`9e?m^`EY#RhM7fgtR!wC}S4U?Gc`70);0VngO-PuR~IBFT^M&+(x}<~oI`A@`rgedCYl7oNjl9?>7qu%KXT*hpH;%4K3_e|%OR zewCOkf~r!g0hpQKXFSz4Aq5Qr-wp*)hIm0vF;Bpth65v%$=dVsP@pMLg-A9ZGrO>` zGC>wT%7R7XOvFY-J(>Wg_4x7QxD$5ra*ohWC?4D3e&8@CtTHk)QS>xHx9;c9pO-o{ zpE83OH9Yk2(_QQ1b%lRV)Y9kE8v}C zBQ+SMArFCK7s7G21SaALs&n-e#$vl9yTiW+4t)Lcr4ja;k5F9_g^5MlOd6*9v+1t8 zqeTFO@}k}ggr%$UKh*!Ggb8(?WGU12t-y1n$V(OASqQ2MJmn@kK=%;ePt`3Lmus8F z;8}D)OA#;XXiPL{iwF*}eei1tcqQr1X=zgct3j?INEnhebI3o4}Q20mnfg?NPvAIi8%Fs*3JDimv=K6_9R~8Wz)bbE_j0&`Zbn zu@$KE5DMV{9axtbBglez{0T9@w+Di%2iZ5U_4b3i^nFlLkQF?``{(gSQ7%g8*@k2P z2pp(~6Bstm1OL8+qz(05V&j2C0-0JJlosbz(9=ugGN=Tqt3M;DclGe{42L10M}>^P zCIeM)Y`%^T^`D#XXLXTyt|WCbvR^V7RjDuf8Le8sJ1$N+;>1{f1t8d*YH&rWtLG`_ zrMK*06h&ykAc5kjeTeaat02uDcwR*D>#?>|($cN*h|Tp{ckbAs4&0px=$}8QFnXH( zL9M7l+3#@?g64LcAq>CLCWZoF^`2H*Kx5Ts{0AM&k=TxaE%1IGX$;swmBmo@r z&ijfS0zs}p1k9Hij2pPL;>VBod_9{BBL$lHzX*x2wXYEvtMEE9ao?00MDVjPXP%e` zNx3I{Dq)%@OqUEES{H#uVjuxZ@%b-+#$jb~!2Ep~`rZ|FR(<$@32};cwFJVEFY^c! zt`Mk$4+f#SXA~oWsba8U@3YK6GP~Bi^w~THp;?0ht+kVR$f)sk0U?*>iyEFFloqUQtM=qpJP5z*0u4|mC&Lo6(95bQoh2sh8n%)q2eSAv*XXS6A= zXI##}`d=anaKJjmv_FY{>#UQ&XG||p6?7bE%bEf?1hGB13^xd>Nq($Mh%ij0<5LK6 ziiv3yufYx=Jnr=t3X*uI*e@%xW~N5Pu-}k? zwKO-cA{qGEg#q>uV-&T!SV=fqFgtZ4@?f^;Z`0zn)6)NRoIvPNxx+HAfK)Ce{W$G`FmUUBK&s&7=4n=^AK%s@V*%Uc#$*S6qCV$N_XU zFiN1OY%d#IA712I%Z#in6c+))98(RXCK*(LI|{IM9Z;z+A9rS8qNZU)l5C_;UU@MC z1EypWC{gR~e+eU6sLP=AQ#|WH?{QKz%oC59C>+48qkRu5vho}zrh4uS{Qm~s(m@64 ze%MtIUpm02Xb9{8&((m^KMEtqTUT3)yEy7m`snOCdMl^_g4@CHf-A+jJbj)(!i zUsJOOh7JHSr2!~^Q#PV1xW^|&5c6GJn95sCN{>P;KyXUhKriL@#Wro%LU$VwHqa1C z$DYVW(vq4|e_m3bHfnAJB^Qn0DKI-fxdb2Y zGaTqmzivkW&Y_Ug=P9jW?%{wGZJ;{ zi6MR*bxgHnW@cVOGH3)^3IDkNakeYL9K0g5lw^1htaA*r;yQeI5-(w`B~FDtcvpxK z%m}RAFnZtn0#qh(oYv%W@bG-3jJQQy$@DvRtF+$H$0#0mjKtOpY7)|R`5`R-=FOWc z^J}x|EkeD}_3Yzq%xSRjnfV`eJrq^Zf>xJ_b)fdPlxI(fC*$J58}Uw2*0v2wE^g%I z#=+p(0=|g0zz=I{ZN)!WSbhD$whZAQ$&g8q1{33P*h}!TG~3dhgBU>ch~6N0M~0*u zh^oaTELT|^q{U;URZ@e5cb{?aK* zQ0dasGHR-bQrU}*^FoFT3YKRcQ|BiuH1J$KaC*95_Ml-`F^?>b`@6eghqmB`OxUrT zN&LRV)gunf| z`ozPl?{F}oj*EVLK4u*lRU`%SM_y$Jeggjfb$FOyNwKgG3Dgt zA>8=n(Id1pa{!U$K(`)}3>-0>)}Fd^^D211Xoh*D^8#HX`YEwTmm3Cw`Y~>E+1ok% zUdM7ODj#Pe3rTwSf(XxGkt7!Q2B z@iY0Z(}1mM#~Mc~9BMYtTLijc;EyMHLIUa>h)rtm2R(SOM#BZ1hy8A8pKZ`J%YD8Y z?SK@}oIfZgW(ak7n%uO`B?~3ic2t*KD4FVGjru6yzUPgs318m(%8ff#y1I{4M>1`DIZx!*vX?2KFjh zs|bFm*3~`gn=^$h)mxXVuh{B`FIV4)77N33b1*1kX#EWEO8Qyv&L)P{QTo}^47{S#JEmWy8q$|5shOTSp2t!uy@P+~C!Spo@T-8y8fS(_3emO)5< zsU|S<>OLfr7pEcV5QCoUgQx&NrvZ{i@U*v)BP$}XLR5jp{IrLBjV*v)ti891Ib4Upu>krqE^mdLHe{za^1dt5`2{8LGO5P%&e5*R1< zzpSgnw{|-*AOhzAuT7D~6kRtSjES4jEeSaa8I-KyMG&_1?1b-yq)`Uq-`a~r?UiWh z1A7S@j}6lLIYb9&0T+NX=q&(Oi3fH=Bt?+!O#kPK8)&=GaY>F;hZ;bTr8U>VwEi&}Sox8hHU17(y61iA4^8gWM7DM(5QS2qef#u%uOVH-ZqsuC zpc*ewz1r*QUIP&~YdfDh;{dcT}ipu2*( z_Yjy|?xZh=&Y3j@kFHGHHrP4h!9KG=`w#3Y<$1;YrSwDc?N9In4+M6A01UAnydOZC z8ZN>`s7NVparXF)1)#whl{u<4Ti3&9GcZVp{NuEb4-hw=j<>fr0jyDE2hWi5CGfm2 z$(XBM5Lxs$fNkk7z#a0d!d)L+`@|ualRe?c#^0&uE zhY?$@3c?WEz<$o!gk~U7%s6TWcJNgZb%1sZn@VV)k-JIs7wImEyKn@dJ*(8yQX6FD zmG8Pr4?SpQV`pCtxd{;bK-&h|tv9!C6!lD;2qJjvUk=3>)SOjJATff;)i4HqvzS)A z0vABU<;#&|lvh^D5PR*fRjZD@8R_W{y^HVZ~*F~u$W9qQ)zA!_UDET)d1coHBUEi55S~4yBW=K#6+1vsxDn# z`V_egQF+TCxGeXmxSne}}zdh`sA`Hz-KVFZz5DZcSP+K2wZ&btMEa7~j+|XWv zg7eg9yV$N>*Kqm~c5Wgyr{P@_t;a|WP%U}FPIZoZZOJJEWNbVZWSbr6$HF#7JXf6Y*tsPf4W{}!AD3F6n?NV zaO9B|RG~2E=nK_!1jJCf!@)-az1+ziF=)u8D%@AVD0j(wsQE1C04uBasRfzjf0sIWTN^kqG}$*x_#kH@Y2*@Z5H&7y}nc!>XWrVg%uVE z>rAEw7fB}kN< ztSos10P(pcXv3!!QMO|TWPxrA=4W3pP6_>}4{izQt&=UUF@6BrIy}i38Z;fyGn9y4 z!p(8}5er{10VR4x*3zX*G13rub34)6mn=q}IgI=popNgn9u=X!5-4_JA#tm?@oqTB zn5{y@q3~P&mk?an3`U@MpJp&HScC>Bu%_Wq>$!jcenb9MFdQ0~MA&9oSy?1?JvfZo zuEEWd7K}_ z2oDK5TKC2-qN5J$oUpM!apJ@;UHXrGp!=1p>1Z63EsxqJ1jPUHeyKZ7F;jr#xG|ti zdCjZLO!Md&aDafSVZ0e2+wEV;)zWw8JRY_XK#?P6vg+qc zkojN!Pi&F(PUIJt>-SReyRO@%0+X(^~&;}C%t#n%Xx z@W=yhh!|Gq$D+$z8!6cyVv4Pq8BwPmFuH!d3C(eQOC;MeDKbNlv-yitcN&1)m8aZF zt!WcH4NQn?CED8cTu^s2FT$vtJ!<#v-YxrpC1bsGq-H;K`Y!;A0#W60`c}&tvIYpl z@y&!Z1hPa|_j3ZpY9cwRp+P~dZ~2k0s3HbIlmwj}XBBb-F=7{&>88z2f+&|f+7ha_ zQZ|){L8rwb5;f1gYURpr6B8*EE*z?pd;VgM)SIzePVUuIf$>4?ySoUT3=izj(?RFK z72HJ78Pn0={mtzYKS`M##)A+LLF+Wk!sUf4QIq2Y=_S4u#n?GCWw@U77bt$(hvx@e z7ybu5c7%>rJ5t--RJ~um=;o**QP@d31iR{u_Qf>?@Iol08%E^K(S0M6SIHqiDl-6H z0H_=3!kWLB06!WG320O=aiLWE#cf6qaFf%Oj1oi-b3jSZxtr{PN9@* z{pGm}miz9dsSv%7y(Sf*mC~__=s+g=uhMHr17ZVR3GKnRKplXiqQ}mFXY1f7X7K`> z`+*+&T`Vjqmp6|TFqAs>pn48?D^mnKfH9ZSa;ZfdB7P_4VBu1x({3Ps|Ig*e&Rv8I zYiMu~`^je$0Ir`-=<(wl3Z=xjTjw2 zfocRoF5a4U0FLm>?d|OlpfX&xbZPnn!chE=xX8aN&#$=78*sD;w2?I{3X%EO-4B9w zE%((6#R-nTP?`xB-ihdMB|yz39VY=s28cN>sDWRMLhyTEIG`}s#&s6HwO|k}c~+DQ z3Jx?16?kW7wOX%$=Z_o5*+U+80W_mgbx=RS41v%Qpk-+kV)K`yeGmy|Ezwk2$qem? zK{c<0goF#_2MMYosbTdP0lob9YTkfegov9E6d{J3V8|#fEy5CD#U6XMi|u*Jr4rpY zfXEP0hDMW^@v>62Ph#_sXSEssftqsfsCsahcNwEzIKkHac+gaLw!@j`0e9g0cjp`@ zV7H+zfs(*Hfr_Iq^}eSk(=R|l`V0ZFE|>J?_V9J|-R-g)p_8NIA_CToiLo(=vr`~` zV~YCYe-{iThL<%1yXX={9T)7tk*9y;|GApqU5$0*PiQr{N?WK~D;t_Y%L` zc==${@KH$`f^rVt^T)ZJrqbUNN?KY1r9_E!@o%7|@MZq9#vKfdjFKFLeR%u|o|B7{ zQ{f26qzXk4VGFAnKq)rnWY6;D%PB3WaRyLDCi@OOQBvLDd*(Y&JuJ?CqPUFAOJ4aj zo97@1fv$LRM=WEBGHml}6pc`A*W6dj5Cj50uj74;9>8mc-$3HticIDG>f@BC*+6*Dpga*kICraapg2_i4fI#ey%&2`gfs4vl zUU({3!Ayh_HS_ADES-=|J`;RAnUl7pQ3vd=rMf=w5-*F}U$tP3xamF`@V;a6j#n0d z!KP<@f`WIo-u#PMbz-wnB1ZFpb%;R1qZCcIXNknA6T3NZQ{v>eZ;0_$LdTLv-6{4T zC;fYa)Pg8iuVLD^3KlsrN6-7D7|qvXbgyWd9y+gbM(=m_ZKIL zr?2A_g@%I_slWdV)pH^m>8lizsZxLc5eeD$&mgz^rEA zod?7n>Ov5dR!^os@HIAe7mh*g(;Stka`BZu-0F$I0sj zAEPODb%)Rq*lG;6IIz4QKLBR2l6jX4iSXo;oHbp)v4EK$KT7qPC_7F2&S`>_{ogCy z1{vM?okKW87@v4T0)5GE&fdEQo+jmtp71E8#vrBx?rG?Whh!_pj%K3}u_|8^^1{=A z`5j@?VTla(ZC~;dbOaMS}+19RJY)cx*H(8Q=Y@JUumFLsEGlMaF{c+t3 zMjoV(r(pYn7cQ9?#3o(1xLJp~qZzIpufKNdZFnPs-)X1rlg$NBOOA;|5_gBt!Y1h& z{cQ`xRe`XPeY_qhgsU4KCm`z-aS4ecuDh{NbOofs44;Tro#EmAmt7CgO6~`u%kJpy zxG)w<_R?R-C+`)%boUs^;PHjrD*`Eyz|9z7l=WI}4*`In3$e{EQ`?i?Kvm?Oyn+mOW+?M!MaDshv7 zPe_XPWpFJag+9T1TIWSPx~1w9qha z*;2CZ*)1SKfW@pOKz8sC4u*Xygm?0bPpdKI!rvrxtjKv-24>Dnwr@(-$h4wG1GG zT-XKjiy9{ME4zOWvIO))VszEyIY$@C{F z@{TwbbX^}na{ND6dYQRU8|iK=Fca)h#4m&qpViz8Mr3TA9u5j40xoPcdU^~owkVrY zpf#rFeZRShix{m}h2a6v6bJ%ZNi;^FeiGxpA4yZ$yX#_L)+cUi+EVtkj|P1k<7D!| zdmW{O_7)`w>DbbUha!Tq>(BK@$RdOYHd0!J>9$qM5w8-<>=6RdlpX zpT7>GL>?=kv~sk@X!(V(1_+{aJB5NjB!nQ!A;Jsd*{3i3ZKJT|%bTFU-cVNu6^fV* zf(U?#zU1aklo_vV8kA~^^Vejs@NMpgxQ;0P6FQi9AAro9GJu*Z(HcJx6d>z8pB9G& z13HKzh&i}W)3GANN9J4n4Fcw2rS~XSGl9lhLv1b8OIi0|gDMfn=DH|tq-aV%8tp-6 zBQ)^Y8HU@Erzb^H4C}6DMxXk3v@>r80L$S~VuZ`(u$1NhVT1oU3HGAV< zzP9g0Rcm2Ab`*gA89_qgMc&1M_#sDIe#(mc{)s<-=iyh%>{6Lb0NGzbc=l_OD(wQt zohSG|{?iz=0nikv3Y;hXZ8J=)<13EehAP8^I3Z|3(e}X?=JWn-zgL_AZ~RGd*L|BZ zfkbE}ZDzE=b2bjg#zSh2vIih^BC{5IhXk>qp<(N7+JD^~sqYUz;D1)DE{Y&L{V*~M z09VRq0SF)&D_+k)Fv}~MA#czLgiz@$DwpxQR#J?r`rf~7$YF)<(?<3LwCm)I{)-votS2Hv&eY?Jsy9$&VTik-oQs_o4=n3_v>jwj-T! zM%;$-GzUXm>cXzo2hsVc`w6AAI>KQBT0m&tM+5Rt0`qO6ZQ~b=P12?R`z@3f9Dr2U zSCmblRdD|;$`@F5Ie4*(-A0J+aRG{k#f0kX!~`G3`Mp1Pk@9|xS^xH)h>|w43Yfw7 zmt*QyP*I`thaKq^rR(iH#B3an9cu(oj?=28;CW904Eky zoglnU$yZ3tOus`O<1xB9+aC{oO}TOdvcFVF7A}vcc6=H4qUWO$vtw%b!JC824oO<1 zp-R5F$MLZG$L*K4sI@KhKDt}@PrS_BvbKKCydQ5D>kP8`ZQLeb>^2yfU2UbfqFuIH+x${@DoB#6h)2F%L-mZr3*YUCvuw*8t zRJ}Bb9gBek8I`CvR8|rkL~h$tpjFJ{;m^+l^69Nd3|W(8FS3E+_x-qj-p)}xVdXOm zI^tA0Cf|JZni^L7E@+umusC4f95OR6xbwP!W?ygObbDT+{`@@Jdr5OE3gPaE%Sj3} zy_-lC(2o?Kd*h*NO-FAX#t2lzqqn(Aod>ZaFfKI_yb~eDtL>EUk^j>%gOB}GV#GYx z9#hDjlRB7NltwC@a!m_?LxVqp|UMz|;|;MwxWHR|#`@u!yB zlCx!W@iY6B#g+)f!O`v6sBFGiuL@4?h4YV+=4V-rjK0t7c0%?zH)vnfT;-5Yq%3vk z9z+lq`glb&(+N-tmmE>kAo_`!MCYVJEah(r>^}#AXTUQmXCXzZ<%MyCfd`gI8s=nY zBRKf^UD|Gcyk|rFu6~y^RU4De5ud#5Z`1BPRLD*cEyyoh|UyIj@EL+g`jGf+5V#4RLm|MO_lEhD?y7c8p7r$4q$PEACH1kc;Fp1#UR z&fgN#mpFpWEhKAbz1Scf6j-G_Xe$h*k~QKmz-Tb~uY!7HE1v$Os~vqod=cAwqMHxB~u`g5lrS+K*N8&vrfC zs+KCeUJ}{{>@?F5H|p*0@Bh8~@}Gbm`}6vk`}m!h(Dch;R@~RWm+ob>fXaO`*lm&m zD3^HexH|UgQjRU|db48B4eL^;-rrb&^4#dumJ;^N}m)?au&cUzk0;BfU@e!)kndJ82|8XG6I=V#cC3uIW0uL%*-=u`1=xoercK`Ct4 zk%cj@#T?!8#m|++g_2@CGx6{eDN|3ftIEW;D{;-w%_>rvxyh=|9Wf;vkM?XAyh^Uf z(mt_*cP!L*vB~L}ktW}bO8e__Rlf9xXXdo}izPGN>le4tXTED6Gg|mgJfv$M8Y15{ zuw~x%3HGr zhl*mZZR|<6UT8SEeacgoN$GHpVvx}KJiUe6tlMdNLxdv_3tEmth;{P9G@FfBEdzEcM7h_s1t0p$>e?I56FjM|gjA5_9rBUVwj_onCj>}0h zKI}nHLUVGBualpLsa18!l2?hDzI`CsC$ny(_EVCKz6?$8>#U)n(Z%`csYTmRH64be z$g_;~Z$n)MIz9ZE4%<}S4zp=Mt0*1cd|vL8-v@!z_Y94G;nnwJOzWtA?yA#f`vp^e z?k;Vk(yo%VDSU|+56v1#dECvP_})^a?X%cElN+O*mph^9GjBg~`CCzzhDhL*RZ1p$ zvt7P@xlC5)c}K}cii!P6RDHQ`1{4k%U1K~rJ)M_pDiE~K?J@V;lE z>NGigwlKJ;H~4}5xD}0KaE&=t`*Y_igSM-4-E7=KW7V%u2Jbz)o71|ln*UnBeAMp6 zZHvLyViN9|8`r>Khp1KTHiIKa(fqXggPv4vGC2GAh(!}4v#K8Q=9%M z^<6?{aw>ST*Voa%F{i0+f=*Ch)y{5Y%4MHKlJLC+tpXRXaWlP$a@UC}*^sQ*rsoCr z-Y4^6s$1sj;xL!RX(MDcJ(#Mr zT)I-@&1mE%?e|^5U##tgW>;-BuuJZL@MMeH579L8-5{NS?U!05b7#ulX4nS?o=W*V zE*C;toYze%j9-7az-M8+Ih1MJmudy72p4{Bn^$|Al6nRr)l@@j?6{|>^PtHeN~_nQc^T%)VSwY=?LVo5DkTmg`jO>(O*h)lkL_bgdFd%6uB~&NSO}=v>l0l-m$; zIw5cQsGGN8?Wtf&e>1U*;u)kee(t7^^|5n#Zz{FAPGzW7F>d75IIS%~JG;+PM1K<>zk?>chZ-0LfaOL8y|j? zYzWoQy;3%#<2=J3I=AbDY>tGN?}d!{yRTI9vgU4!?-`nPDO@3v_2xu!>V<`EvU5M= z8lRQVSKhbr7hn=!B=@SFOwoM42VH^Xq5jQtU3QO>ZcIM=b|tUkx?ba^X{oSz$*SBN zY@X(NLsDsN8*`qO$s6?Drq1E=ab=+!zPL58z4rX1cTU3DT&=IY2Tkq>@&0IE82#Gk zIQYKepR}p$Ryl`6RkjZ=Q$D{es?%RB=6rlz`mvqz+<~qv4%B*nVj6NEMRmI39M5fYm~I)dZqYhq z@*>R7tN+e)`?TWf1tOm%E?q}qVF&8t4a&P8zu2xQwa(Y&Tihh&f0X&+D8J*4aYU-J zl&rAY7`DrC)H5f8-7zcvTWh>8i&0E#%EE$EG1cI%QTm~D-S5*jM!ig*tS;)7sGXTM z+-}uducmyHJS&*C!l_)w1q+(Nh;Z8J%Z6XL`kkeWy-;PCOE`z-*@1^q~Ep z$oRbWn9i0TpZPSJx!o0{*3GZiuaJMe&NY`W`D*I}Bd5xV>1~_HM%wurCVBILZ$_B5 zG1j&9eRAAiP&Isc@l>~?@L`9V(SYxH5b)$-=g<-PE_$1fb` zK3Aok=kOya7q?lxmS~{K+s&*pm{9wJCZamUW7KSP;e$9SKP744@XZ@N z+>rr3E{8`%>=FwGvN~e6Ie)Ov8!ME0p_pW|{;QgWD3$ynk^P;I$N&DO>B@yLcQ3($>q?TLv ztEfWZ!QIOXZ4F)l4_Fq&Y^RoOQ4IdFxESs)?ikcGq;>DSx)N2kYo=R_Ys?CX)mik( z>(dv)&o_G4Rwn1}y|K$iA}26bRlIF!%5H-~-U8j192_#zwDVD4=&F};`tKYKej|3M zC$ycXa1GT~b*Cju)T&&(zK=}@RS5=77fuHqs^}M~H)goPe}$qaL^9s>J0bf>9Tj?$ zPir7~r$yhwwh#TBYU}edUMHqT=}LTLm~h>+c<&IiB)0=AXLpmx$%b>)`_$|U93O^# zetcy9QLWA{TACK^{NOXnxwggnom>_|+a`^gSc1p;4%sdqaX%^L=oham*_EBKZA-S! z@}|HCkyXL87j!;_&$tdp?PIsDYuhGXHfvIKLQDB|eZq)qz`?<>uZ{NvkMyVAIZ@|7 z{)+4<$Y(us^NG20@h7XkfA-J4p61SA&fs7*S5nY^^4_Yixo7&8DmimX^^2#0|Av&V zXT$w;araw}h|GV_Jd!{T4gIR7!qH;Nt0Q3|6Ej<@mGI8yexINg^PON4i&v?mChI@e z^@i~Uh3AtEWj@Cyukc@Ixa7^AB`I~EYTtf+w|Xf_h<~&+?7scDIX|g2o=d!L8Z6CVTNuQnyDF8-Z%e4r z5oQ6}#UJj@xpu4{UoP~STaVoyT#nP=#|AQ}Hp zx~TkpD;vQAyE&a7pG&g#Ufe#Ybvm@uD6lyBb$4N$28*B&^nUcX1g3i`!^M@yU8Y@eP z0fyJK9bOu#XOY?+n1_rp04gna_9SQ-F|VvqK{EqG-*fG=Z2Jhx4r8> zsLqz%3eq~ZmQ5s}RI(&H*oWuhCvs=Kv_Xz6`|4G@Q*P~(AJXnpSlkqPy)2{Mj_mb9 z-KyHja5THLA|^%b;5c){tfJ#5jR{8ivu8f!_|5qBI0U<@dB2QlPcSa%-Y0u{Fnpt^ zP>5)Z>P4sZ2dl~w7(XvuEUa)|(c`mG)mn5QyxU)jozKtsqJ96#5AU02$#SQqENw2_ zHRkI7T9}bnBDL&+aF`Xd>{IQom9{iebs;?}A99b7j8_XMPQL5xfp2C@JXRoOCc3B_ zr^bA`yH4c5_ly;`SH8R1^If$pj%rPQwE|zmHR9u)bm%y1;NJGc>5DnC%|0c&t1Y@v zuDGA+a;>wgGxVWDPuHYl#U$<8VC9L&<}))Ni!5CPJHyECGGcPCFCM%<)UNVvDr_dO z=4-$?cFueYz372k(LSykY|J^DXO9KT-##hOT^kl>I4oN0cxqPKZo-{5q9G)@GsDA9 zEzQh|SGA@`wwt{Fp7g5Y z*^9p5Z2{$Fdp?Jkjc zzD}9k+$7J;=%}+<(D2tDVE70oBueX`8ePGlV^BT%kyl;BnJXkRI)`oF>X7B0BHks>= zN4Qjv-LlM`$>ljPQqvqzRW7*am`6MJ^Oc_;PAD%n+bm=hdzZ zR?FpKuwT7;SBh@P-rYN+t34FP0#Xh)r=(tfI69XQXZlw3asNo3!WADGsY`wOR?cot zPfjm*+g$x{EURff>ElZd1&^~9R_CfJ8k0Ure!AA0)-lRzIqT_pX;b67qpUr*PD?RI z#a&<&RxmnpGMM-1(Sdk9O>sA;XVq(IY64VDw(HaMkv|$-G7H$ssOj979lTfYg|9*D z<11D=mfY5-H>!R-!pXJ1(DN7DEo~s>tc`KIbeQ`WZozGJG2ps+|Tl>F? z7X+jidJlFyu~l1b^fmk4@#m8YM5`uo=~CZ4zJY;ZuFIVp^6xs@+6%qhjzp766rpmI zYR4dT_AOv(;wxAGd1ZBL+^oA5#ZKqgmG^0cDcTj@wr!}F^{sVp`2KAhM-&}{ZdtZz z;b$4|>u&R*XRj{=_PgY~*1cvh{Px3q@2AjQK^gD4F3}?vo-AYZ!RqF^4>ifU=e}E4 ze-CJJ2@ChuTrpBKn)(|HxTN{+X7yIdCw&k{2d*2OE2{hZS zxTxgqe1t9ZrN6v8S2oSPSc?Jg^rI8y0|yw*_bw&L$S=Q9>Q^oK=^G4FoUTWoXXuFN zXYb~M+nbe{VNoB=%FXLaZG4bTtLi@So3ZmT1cZqxNGRlfFW!!JM_aUffJkq6eY7db zrYmGWGZp1ICjX(;ezAF6(g{uawPFF`a4`k=My7$x2GD<{E#>OcNT;ejk6*2WZ zcJA?uzNias#Tgtg-mFv<${{(8oTWP;rf{CGPcw9LT$s81X}!pDsUfa)Yi5F9SlV5! zjWAo$=@%BfEv05w>yY-{EP>bFN~h9$9y*TO4SzG{GN`F;W}OdJ+x$tn)U$@yUa#6> zs^GO_Ly7kw3%B&tCep`C4;%~~g7X6^mP(d{W(Ej4*!&~&n3F$3j5epepq!eE=7=e? zwAW;$_n^4DcKT|{qacyK>_CaI9ppU7KmegXe4}waEp2zN;(Q2C*-tKc@@4LyZiZwo zvSjDgYwb+>GG?)_j{ivKYi_w{BIIaQeC5a?cix#ZGL_5Uihg!jpj9MCIJha@IREA8 ztBUA=Xa}|0k72)pfJ*5G?$XMHxL3t9nbeY{n?7Bdjg&fbH%}|Ky}+)F^UQa-o3Et> z0*}c*4$RQkKUu#gPBlC(qug}DFJE2DMS?onhB;`_m~?b%S&(FU8L_mz~wR@qf z=BrYuH*_n?Fwg3Y~Hk(Fe2t|y9cqz@4Nz}xj%ukDk z*Ix57_^ff-_2f!hv(*!lsU=k&ElM|Zs_VLL+Yd?9^!RvxzB$uaYmm||=6LmNYpsY$ zj?2k-=}Qa;W8XA+X|YPO@>Ld}w&!;{%pqtkeSYjab8oG+eWr%d{)^ulnyKWEtC`+B z8#tLQK3O0>y#L)EeVL8!>XLU)dS~sh*(bz_aRr9^nbnNW9iiXs>$mRSs zX*|Q}5uLj#`Ro&6z2HBrA}_68w4t_I1FILD>9^;dS@rVD z!p)Io_Wf9f(B<7x|NK}>D_dKPqn}CB+y5eR*O~UK7>pb2YSXyBM)z9Ww({~d*OG&e zMaGq!mH77l!M3~42U0rqi~JqeR?fv#^t+~%xxaPc7^X2-X0q%Nt+h{9WU*&hz4Jeq z=SRVbpWT?Gqg#4Jb??83*q?UjmYNTrM$b3(Ssy0Gh;LF0J>e-1_JgSxg5TdPTjZw^ zUY|KPe=s~aC7JbQSfw6|)%&w&*q7TxiQG-nwE_X-Tlze;3**b-*=J0>EKypyDJ>r_ zo;9$Xxq7UhMI4h@Ef`FG;V%hc9BS7Gb;s+Zr0|mplT7_ zn^KkjXrzuxO6Hv5IoFd{>gG~6EtI*)R{V^iha_k==`8RGn6kYi+-{AbZC3Rq^QIal8#y5clpB{gTqNnex(tKA2t$ulJ;;Q7xNU? z+Q+IM#uNuKRXsUrO5vscepIAPoo z&bGD>pLFdj6JEA?Smd~)KPn5aW$&`ON8lXtJuP^)YhA`%LY)$Cmww=L9K# z_;}2IpW1BuTJOu#5q^t%pVqpFrXA6DO*oz$Y}eTHQqX6MB7=?ohafs;skbJ)+s;;f zo86^vTDivYEDiI{8~#hT@Y=i#9J}`-^B8qpjYH&S6)omgmnaDX&W-`{`I;nXG168) zRyw0Mc#J94^azufitwCWqYpgtz19VoY52zYw@YcT$H=n{MCP@ad%e3^|To zzo@NEJn>cfiG9r{2BIFIOZ7fpvBZ)D0@#iNDI1APvf+|V@C&>0r8yk`3% zCV4`=HFH_2TUORMNj3UIYyw&ay`IEMrW&Wcc1&FFqtW$-a~GyRtjVb397qlx6Mrnj-xR zA3k3KXT}Hxj%VGNT~kG`MNI#N%O7CoM#)jINB34WRgm>!k4Z%6J65qGG%!CX!#l0 z(|X;-Gb`D%j1#jnxP}vHPO4;FD1DN6Pf9cXvxApN-sJqDqKrKSBV16<*vFc6XrI3R z;QiA~DJflVS9?n=gg1X*9~HED%@Em6C_pYJrA{*AI{UmDM)q(uKe!oE5v%B~L^lLrwHQIJ*AkdCEOq`Mn- z1tcV;Vd?JfmhPpO?q0fMf&EtT@qNFU_nYs`zzlydbKmDa=a<)Y{VdR-2`>sa@VO<+ z*yO92fMOa)_w{X~DyC1~eUNr3w>u@|cBre3i<4PE{fIPZ!`_q#2cs79^a4c9CSo?J zjt+6m07>9>%iLLxIu^q;GXE62vm*KyX>>y^_m57)mn;?S{j>FRHRm-HSlGENVUmF- zX>;_9rqwml|88m-n;uPX>eyn2)Bd)&oH*Q4Uj`!Ry+OseZW5^Hx+`Vv9nd^jx zs>W9+KTQIl1-B(t6!GjVf(qM1D@N%Pewri!n6rMmVc6kL|43!uV_2_REBLK;1Eg2e~L21x5+A<8Sx6~!{Xp37Fzrk28xMa zQDk)%rX_lcW<@E%+jcQhPX}_45~cXXShQ$CpXkiZzj8a}$SG_W{*W})+bBMbP&`I_ zApph4wH49KMuM%H2a%HLnfUZq#4XaHt7Q70`OZ>(#sZc3 zD5m`K-O{q&k(hDgi-GjV8yp76Z&3tUPS##Z(*r?}7baITH5r#H%*Pt`IRA=`fPzH*?gdfeB_yw{g5ib$HYHUnN+rz}~b?j*OcyIEG)5bh8#dA1+ z-dUY{soC0R!75pzpQex7#gsp~Jap;WbFk*uS*^(W)&Dac-7!ce_s~ zMXokNkEMsXq~SXs)u8KM;N^?Y0wRgQn=}x-hGvg}ghveE+m1}bMo><>IMU7yQMor* zU&L}*5f8Bv?F2Z|{iz`&)I_Jez5ZOdm9r2F<=(021k%QwafiP)N4beWJ(**(sVf9DlUzR=JG(D8aKi7Q!oEeCjC`2neKIqZ4amaP37QVQN5_ z-S3>;u-6p#_#`~Qan29d7ELvdgu2K6nGsZg-@V^Ui;@i^`Tk1nO`o?YCf0n7)ny*7 zs1}Mv+8hCI+2MnW?j`v+6|)(4ZJ9XDjkNySuECLhI#kK|;H%vSj-uKhFGIKvr@|la ze-%75G(y>CIwc2^X( zf9Ac{x@G6O^zQKkJUHa@P_lr_2TDs)Q7s>3z>Vx6>0P#t!tFV0bg=k`n@8!{)?H1eOO>#rDKTn>%x@2o3o!6w83v!iO{N#kEOUoB&SJIFN zf%x98m`fm=Ah-@(!_6L!vNxm?8fz}=RxD6&k7Ihfnb;(HwL1zWvPofJjwqxzs*dNMhG@zb8(Ax&pF&Ue>#ZBZWTb`HFa z^L>!-)N16XH=9W(!&CW#v(~f$(J6UWt#(`z>T=pwot-;vLs|e!_|DbkOs zK1Az84BHmyZ^(a{eT;>xB%#gxKn0jYxcz1bQ^Mip;EqR!;;WPzP}d3rx;>kn9n{0+ zG9mXs=R-NjBU$|?g%jj!cfaod^!OSUh(5ZeYj86xeyiHKL3p1~Q=Du6LM@#0Z1{A| zu}befO*egwq7g_x)B<7Kmf_0Nwx-*qNur*x@ciT;ARPm2Ci|eEUcSB{j)uR>uWu&W z;xoZTAbjD8!RKE-Z%Ddd_GUR9X94`=yF6CNd96;0_;k<@zhwzA*<=By&N0+RFdR_u z?N)Ai)+atRGJd}I$Ia3}V9z}|)oP~Bet&E`fxUDhZeIN}ua42jJh~CY?asG1tHE^w z+2+N&Yg!uy3nt`yoJU(dR#HCA zUA!0dOF?%Ie3sx}3>>SEYC_2HCt8^Z#amFHROl;xP%6I@xnHgS?sveQ1ZYi~5?~O7eDs3AYdjf=FnitPyt!VHt2}@6OtOiNnme&`2 z*=NyP2Tm?CbenPRmmaD`p60x*Uh~@{z^)u*k5?eM3dO;A@U@=+{dGy$z~s#?^@8K1 zUu(^qrFf028rH)CHSECACI61C5#-PN;Pz$Kp3|^Ot9|gS>ZVXn)}q)-ps<~2!S(7( z?Bg8$Zjy$R2)^S+TD@pTvrTVwbRV)+AgHgWM8KaA(){xBLI;Z*_(|oK{#2*fCx3^2 zlvIt4+<66mSm=zRj%Q;mt;mq{Y+iQ%CV4e%w+;)J4!lu3N6g1Wk*&Zf_44L+%7Fhq zM2uEO1^JUs@V&z%+|_V>J~KFBhG*--<^An#4-XOC_wZJ>IUS24MbzzYd6aGoqpSh}Uy}>s$DT}& zO_Mq~$V#~vRWieBCz7yiUk)6GTz4JH63D8^Ur>^AmkKO7LNdVab}EMIm#0ULnz_(j|!wh3p|KU;s)uv%bQz~ zx!EIeJ#eg}6|auMFg<*+{{0$Lt#RrRajIRJ{e6_Wq81tfCJZJlHoo?5_dLIbP8J)f zu~Ihy_3eeRAK6DB7ep>!sWxnKEJkdcJz0(9SlL8c4ZjIy1@Lf17OeThOW?wy>E1Pg z6DI`>0y89BHJ7pv`yTs|?>0FXlu8ldTyBz24J50)CsnUKx6(~BfpAskR12N9?M-AK z(kZ`8o~SzJukd2#-TibNYAU_JR4%>38OMpDE=f|iyBss1eOn_VHR-`*WwPQDBf|~6 z>dX?@_-UYZnq|9dwEPb}*0ynV-$xpyPgkYugOR3JR|Bk#j|m3vpp+;Bqxy()3LLSM zB>wtG$nImn0oQ2ZK3Qb3EX3So?9)fzKoKxFZ7?S*!i@UZv8g)W0b#rA*BxU4-kfr> zK1Osl$SXUE#0=}Q_^Jn}IEgUym|cZV`RY4^hpGb zmd>k#UR4U^I1$Hd+i;s5=h5+?4;q^`(Kb~}Z0+%}8^i3%k>yq5i+>V%t=0B8hA%Z# ziq)DCL0RkGA3UT8@d>y*fXJ>8!}hF@52$w|*(bYLBPIz{k)d!UPLGF$_*OxNhKzEr z3le9XcIl~yjq^>Tdo-0ylMlML03UDsa>0qU45Y-z(^L4t=3QER^snFZGQS&2g&R!g zr$jcCOG<|hc4|%eJqfgk53hHHUkDJh(9AA$4P?5H=B;yN{-f$zpB7Jd>5CSAAGwi9Go(P(C$g%1k>rVMu%AZ7CD|zZv8HKm6gI9hq_hrTu zIZiMUOZ?zD%FxST4Y+7QjHYv=JYT!MrMT3LLq$&6`j8pEju+Xwm>(yjOq?jPo_a#I zl7Aowd~Iy1-~FDUmTV>K%PQ@t zOGhnoh(PAvw3e!o`B4$E*-?7@LO6~L9l)S2oUR? z@gP<2ILc8@fGi{)LLvQW$R=SZBgV3&>8KqsHp$M$kQo*V0apIs{`ui{9^@9H1ZqVeU&!qW1%xLn#5L;iTreVZ$X%6w)k z5~qjQeH#+4Tcd|pc=DPznIDU0GeBOI)^#h6ff$`WOtw^@1$TUivG8E)Qa_W`W>nyu zTim>C;~3|qQc|Oz|B)Oe6cavZA z-KnsEI{g&o!(T>X@PDnkrvG;w9h!7sFvbbk_YteO#G@DDb|~hzkwducW;|d zG5`NZP4XMiTPQ>2tfoEa_GS?0ag{T=?@lZb-ON^-_X|INX$hTQy^nr^INFPW+DP{GVc|ZG(r=B*VD^@I*=6uomftPui5OI@`#U zV-#Z^zatt9v4kDpt8{Ajm?gadU%&fs>3RO7w?9)BevXIHaA7ZnABP1dHy-4(l)fevhw~|KS2w4*Vd3s6hXeHF~9$XwdFu<8bU28e|8d)N}r~u6t&}SrD8*d9&BXim{d7x85_$h zU4awx0qZfAseP__wJ|rYn12hyJA|&}D(ZMGhe585M)E8VK+UL@o(K842cWIdjf_%# z?|(%6TMMZ0*Ib*1*ieZUuAAZn8juu8BpR!@N@otM7lA;0b%v__VUg|L&?7SR-wZ~dRkmsn3K;v^TtGi*p{S-VnRSOWL2`vu&@qe&z+qjdm8 z&Fn5h=z9LQ2e7GClwpd;-oqW4->u^Y*H1hs@`p2TjCQWfeT`LOMml-Hs>hZgID1x< zDbk^c?53<)26o-FR?FlyM1}9YV4$TTskD!Bg|E~e#r~!_&E1#D`pb(<;dwvx;(F6{ zt#1Zk7_7`XzOM;uI9;n!-~WD(KiHDd(8qp$W$bI`1AAoCJq=esMb^CSZ33D0tPM+1H z=PNs#E&3j^ub{lTNIPs2q~i#i@h!w-@63Q+6T59LSB@r}4bc0Jgf73`*kuM;N!_-J zdplAR4?Houz&k1Qhlae10ZEN? z)4L;vrHIg9^D#{*g!|CN?U|Ty7(!l!8T+fn^K$$IP;ieO-b}HPHy;dZkr!pM_jcK2 zD~E2^*J;PQu8AeLpW)Gcsi^=hB_kS+(+WTETOP)5={h#Eb?QxT?^A`Z;5MnHFio&g zRtZZ_zjb^4#X_OAqUFi(sj=O{i~%C7n7S8O+^x(aC6xr-6n(-m2uCXX%g9jDyZ2qm zqpD4o;rUK&rO!0dma6{VAryPSzqv2U=CVHQhd9iGM-o;=Kof|5_7ab^Eab>37vV}b zdnM1ma;e3`LO;2`#p8xJQ}ae5)wB{1H9PB1{Ur0{2X`U<@<`Zysna?(su^CU@Rk6p)Y1{+CP@HfVY4syW#v||px94~ihH7c5 zK}Jpk7z>pLp8jK%;t^8Y{IT}yqYovWVldrd^_h0XgIb8-O6El$5u6=9wk{P0&d+qA zI&Qo@3)f!s3)f@FQrJkyb#IJh_SJ#2wv`s8KkP_ro^A? zRI<^(fMZ8Te!dYSTsKb7Sz)N8E6v1c|HaSOJd(J(5Y6TApOf_Rb#kiaeg_(=yETml2BwL;CIUEZ4}PqF?WL zj$hX!Edplr#ht@$-k1z8PCv@DYPZNo!<8@Ad_KKsRirkI^F;mHPqh)6YB}w-6Br%t z<{TTd)$H9TDgyj$dC?ZH68=EAE2m$Flc7|#LUhtB(*y@r8D#QiK>*9+#&=W=~!UuZ>78I_n_9dDxOtk zzv3fbvz}a@RasfjSU2mJ20w^@OFFlD(>1{o{m6~`C?r5$C6yyU*(NN1`Z{Z1GGnkw zDtt_G!P)uSS_qbE!stP25&Zb2M9f(bf~(omayfUMJJHQ!@5;)wmxQUf^XyNdVeW7L z0%^hV)=C!DvOsj|JuDRG52 z<`=47L*cl?iL&CO17s6_zW&fQYlRsPToL~@wq3iIWd z;D-%MJsiQa@h0v&G3nO+CRabQ+SKHF?vn*q)p?59_!I2B_R2Qq+UByu5Q>M#E~*Ba z6HfMDtwm01{j~(o?}jx0{^LKth-|4mI$PZ(Z8p6+R;aNW5kA_ABz^p;Y?}R300Xt< z?bzWZ-&_SZCAKTE8Sd69CsxMI9{R2!S6Dh29!)5agOMC(V?b z8L`N-LGiplGL(qwaMcasiZ)M}JCBt<0w`;MzR}WBy^*81d+NIXC8mQi)PTPA0k9mR zZk8R6VC0;VVc72wUpiY+6jBh7enqJ+N#SH>9>xyZz?Kx}a|?*se0q0MUnF`?T&v*i zCsfqcgvw4PbOdHSd}{hmNF;`jV_i_%WpkMW=P`O$?MbKyOJ%2FjL6aUQ4mKWUcViXw zaCr!g#5}?Y_$|?ZQb+gK4gA+0EPgFr(k-( z_PBlXU5A?>R=`FIV#6^~Z*b^bm`gBdtWT4gMjAI-m8ioSAs*_=TKy#}=X-|@mOCrw zkY#edYr1h}8Cks}iHW<7lKh#QNLr=lD!q{L;O#U?_ECX|~la|Mc;jp;G{=MbV5MvZG?%a0lQu?s&tnH9d9>e=g*v&qtYdS;8W zE5r1L%Eeu|-xF5Gwl8Xxo$RjPniQ%8AW<9LA1KIf_}41^Pj0ySN`GD~2>Q(lNsJh` zc8N&TT1!*N$1YUSEm-){t<~7T{-Yx&cWhciwzyPe^`F9FZLGQP*XIHX0a?UUcp+|r zb0b6eYNSybH(HE&rhQqNc~_UT9{OofI~LMJf$mpytdwRY?^6~)0g3mOnw*p8tcOZM&RG7*trfk{f`aV*=COD^;< z69{IN`J}N!z+;ledmfIsXd!zbR^Rsy9W(3Jv#IA-L3k>2>YIftc=7<-qMV()$_|l+R*} zlC)Ve_&s5i!dezqtLXqv3t9S_zBjht~Ia)W=PbJo2TM(9e6($pfy7XDf(EC0)Q ze8sK#fqNvSEd3rrsv{kj@~kzbUe0+juwiHRdKO27VB*`#)Ns;xU!TMvwBTJtPr}RP zW%r`q>5Qb#ld$jWikh@|m~u6}gzSb4L{W3?+;|+11S-TULhY=0xz0aHD(6s7$7xis z_eCnQ*0U9Tcc&BGN@U!V$ZzcLlX%dzNeuDXvzVnfy9I9qD9WC4B#^cSgTWQB4 z8IM2ZcH{r0+KFNv$_v78GIa2*>DzQwuK)KueOZXZ`3!PUv5auHx$jhrN}V~bgO z10ckZ9VYc)$X2!I-k5iuwQ`Vm$dw)H&G-xjGS~M zdUDJ0&_4Is`q!6*MZF^#Bv74%=X0|qC99Doow(~F8hSRqXXhpCy|bE8)Wh$!GNAnbwRbxmy_K^Su9RY0}dz{rG z%Hg31K%8qYbZ`K1Y#%y!yI5T(eD|0s$Nxin9|Z-IGx^n7*XaUlSxKnt>_y5!$s!Wz^ zE&|t=zjkmTPf2Us(=HB3VNbifjK^+r;HuT5U^S1tYS~Gz4m7}hUL>I@*=Do+TIIykC&vE?wK<{dOO#6Tlkwe35RLKzVD9#sJ-{5!W1hS$|lU8G8f zI4BigZ$?Z)!jQx5el5AbLtpPc=-qG5*5hIP`FtFQbh0E6Gq-!|GY&PDo54i7JSq&* zEvgf?H5|eX+MWU`9cosDN|W8V7r-M=vaWn>J-XFF5_bo81lRA?3Bf>STDs1v1)r`( zuk_P_sFR$L?T$jZ%xa3}95IX+i9WoXYvrHqOw1K5w?@$6F${q-?!q+R4#!Y!Qc2r$ z@9Sj;Xl>h7uJiZiBEyKP;~n0+r>o=mpI_t0?dWl+SUqcuubu(tsmS-t41&ECiYKPv zW~#|c?Z%`|KyAIuxCxcO#e9)>S}iFu!={!DNuuMvP@DIBAkq<~o^Fh>AA8Q6Y;Tn{ z8dlSSZYP`{=cuHR&smPx%ru-BCTTRK)8>nYht=oB-P-P>>7jC6?MyB)GjeVXEM`uB zb2Lu^dwak{Mc0<~srqXrq!9C1WYn{rHuxmD@ROF1D&Q(nNq9orlu ztFO zfwwcXFNZ0;uL9X^WXA8wn-1}pya&)lI>7=VMgaDg`BoC#L^#D)x;Z|`m6iZ!;(dmnj)DfM$W%R!@FNTr=Gni+IBU2Mi{kO(8Y=7t&; zD)X*8Jvq0H{wIPG#kJ#+13x+SN_Nv zeO2Bhzk8*xmXMUXI>do z57=t+pO~tPh7wauxBZwZZX|hsObpc-hc?$Ln$lE^#}8@I(n8~JIig8=c$Bn;l6d75 z6S4KiOpB&nH`;k4^{8AJ_??|oK2mXX7)hE+Fvo52<^Eh9q3IbYQvB;Keg_q;Q$clh zlx2=hiM7WMG%~{C%!ZD|(E=%)Rpzgqf zF`W6n*yRqlu)Ce4`y1%hHF{mN$iw?HyO?{~A99z7nz&B-x1+Bw|BOoB=ydG0GVxXe zR&#vOZL}%X(D&$pNZBD-R9gI^?bBb+{B!qHx#VZ|8z>dS;QN zeDZ)J5@6uMn>=zX>6sFQr;A!vvvoJ=LGtD5@)V9=4V#DGDw*B_FTsUK*o?P!^-R1- z9Sgndafx#K_~Tpbx=(Uyi;;hVqkKjgcKjXWuSIcQdJl(gN8GdQ~}4b=dB9 zvzqH)mpWvzDS;VD(}lJ5O(#EdV8Gca)R@#XS;X#Iq>osYotpx{IWdHHwi96Ml#Jm%+l8yd_x<49#ol_j6Gwai5X2LKZ4(&&wU^_Ols^MDBm;QqJYN7g z68VZ!_aI${^2L*EPzcmXzBSeY9V@;MZ#l+bKni_}DA^90G^?XJ?RC4C?&UFU_Do*n z9bYvBl)e@yh{Yh)k0pC(1y9%KL_mXjKsTy1yoNj1_EE_n(H=jlk2c!FiObS0KOc2N zP`YH)upO=Ws~DWR9TxF>V!fBPDtns92raMP0*xZSxKPLU8sKqRKk>&Aeo3?! zbT+vMpOvI-j1e*?j~)hyMI1RbFR~BilY>6n;-4%QUcuYwbaOZ(DtYNGH`LNIQk!KOgTa&V@7q!x<6d%gB`^ z&4d>?%u*%-FWY}Ky54X^r|oP}e&i9GZSv{55D=5%<9TOYQ7_faiwe(ijX#s$qj366 zI`iy{?a^+<@-K*3%QCdShTFJRbm?84#IOzcD*B&~9pCk;tQ6%=RRW?J71@l3lOO~0 zH56Riij5)<3=J9@X@`cJyQuERcmSEK)rMF!3W`0$`M!guBi<8Ut;VZKb~;WE*4*91 zS=WE<+OL*1Yb`fUR|e6=&m4Ls3nuHnJYFp4yb!ZB-5W2FDVdub?4uGtW@Og+D0HmJJr(6FfH@da-6` zIh7FYP%?X_JBy@4ccO1lu3QX+>@{1gklS63tXH&tQ);@8#Hr#A_+v>|^Wxz}ThaP! ztx-<5A}LdpZ%>w9iVd)NKy)7anW8frVVHh-`4OsYmghywtlxlwGO1MNvSOoQFpDlt zqMq1l2F*_X$BY>=&L_Xpady?ixf|NY^!uF`AJVTRNvU3DAo|g?rL(#dw9DDEvnH*e zJE$UN_`g7z{v%c=tuDSkeTugRWeHI=xCH(#~i?2s$d8Ro}(JMy7VtO#A@ z!Y69ii=@Uvw$8Z)=0gB*`_vMc152Z(xv6K|7q=j8TYJTSr@H-6H&u>I4oe1pEtKtB7^;Yly$s<@@AbsVtjJB zitjaJW7kUpxL++PXvkckId>%<^s&z_W#=a{o^v4N>x8?3(F4Q)wzx4Dh3w6{t1uoO z-Q5wfMs-9sXamS?cHRU2-!^Go*}xxW6zi+qK$C>ztTrIDEsCf?gf zONz7ky!l(Rh+`tOOMobA3hvn2?F)c|lU=iUEaFMkn(U?mv%%MvMK;65QiN}b6dSmA zJcHAApUPbKvg6gp=V1T@g9|lO_<>4iz{|+RV59!=-b8sEgMEF<&`Oq+rd(XDKT?#>C^ea>()Uy^>AlqWl6=br>b>VvAHUo#u{IG^vQ9 z(-hgxaOQ*~eE<*9ilvjhiRmITFijJ=bC=VwwpaW2nCR46ZW|8*y03)USC*RfH6m=h z-mY=sW1sP}=#u%GZxi#?!{Nily9OIAe!gzrlc3Rpj%5gt3 zG6ru1C95?r7UsH?Vi*Qh8^g55a}%6o*{0H6Et9NcOLv(b&iQU#y1F%&NOv?;SRB3B zmo3w4ggMYGT%BWCywn@^;|bicD*7%0C3!;?AyUu0vtR(%PZv8WIJ}RNuqAVO8dmmY$moiIApjjSfm@aHcX2IT8*4HOfj79ziXtL>BxdQCa5s zj6rtNv}Lb2Pkbf?hl>InjVAfO+}2Np=`W*LgS~CAL=CG_Kx)%tEhepKV+^E&@#8zJ zX&;yfl?{0btZJQ^q9eE3Q#2UQeg2sDA*R)PJ;kVFCN`%!^-B(kxkEbPsWgC^akm)N z5$2s9j_S~2ppz!kkky!=NZ>7Q8u%I0_;da1l!$rXXeyE{pf>f#)(v4}nfGFkLKM;BHa_d@-=0EG!BwVldhy{dHPrb!^R10j$$QJH z6f*hAH$?|!cc#G_{Nq*mSHrrs&BKEsoAQA=@7>P1$xE4?8SM0<( zmCcf$6c8uR&(A!1q+7sp7~0Ia*{5=!JQ<5+wNP!|U@w=6X9Zy9(w}CGn_$zYSapuXDy0<~5%6Q-u>z3r4*qTh|o#f@Z86LPRI z;${JHvyZslM~oYoP}Q0RZMG?8Mf5au3c$wG*fbx9B(lm?Kz)Sez7m#J_cr5~&1euo?8>@~XGsQ;cBStzDXdAEC$+-*yti5ho96i`S zasu*`JvN%mf7@3SOX9z2hU=|~0p6&3h3Hf?Q?r)5IaU50%ZoGl?P65h{=>u*Gy*FS zFx6ac6$cQXFrCel7^S6XKz~L;@PfIZ$0cAz{V3Dcz%@NSZ+Gi~Xq0tQzY7+TX`hq# z7F!zKswb73auSHOsarF`gr-8sc`_QebD&gaKPL1abY+fMW*y+`73(+yrQ`)4tgt|e z3pV$>S-oR==uNlIZw6j;jF_ZO8d3}C*esw7|2UiLSp5D_RN_1vWnqf8#uk%VuDi;t z*V`@572-N$;Mc@dkt`xk(*i_$${jY{}Rb2?c#}Zc#z`X(945ObPdmCEuUmcWxXx z=Nmbff_0};IU4ur%|ENi?pVa^_<;Iq7%sIk%+MD$I3Ou!9-g~j3Ob&p~n znPk#*Rxwqmq%)m`ZQJ+A%VDTXY*Lsc;L9`#*Q)>TIEurZU3vPsS5VwB$>hQ+yAVf$ z);cB1EM^7LZJe>yjX6{BtOQlG%oyEXe|1fKTy)J_-QgX^PIFXEV-IA(ql@KtD5$%9 zm8c;So?qwT;c- zvSREcDxI)^hO6x`G5K1e%iY9m>nz*rR(q^OE4#1^HxPOaJOO7_EtMPZ6SD9O08mnn z31dz=;=YN-kVv^RQj}-yU^lXCaBX-j)l2OeR?o@VzHSyaqNg6aU1^*Kif;=4iEZi< zkYguHbvuJ2bLERC78+dsRgplcF`=sZ^77*0xQlE6?>mhmr0co{&f~ z+0R7104*t|+Rr_K2g)>?<}|gVqQv3?lgQz}s^3{dnvT1hwd& z7^J&cgR9v!SdhTx($x;2CGj)j>;auu-e4& z6*hIiU$?(7ZfOeFlEfj~m*8mS%h{G0HBuEVZjA~h#VnjkNn*m);;}{M>9YwWOiU8b zrTd#*WQ+#oH@I{7_tAlx_k7#FoC%VNcslxp7tP^Biv=;*DE2I!v+ZkQg;DZok`H)Z z<7CtPDRd3pp16A8xNzVufDnz=Nl0xc6#_>x>BiD1I8tQmL{t-V^Y2qb|MS#gdnZL~ zl2CK{f)|NiAoZyZR?lebLs_oVsrH)eG-mpz(#~YM{+kJksfb#3#VzY|uTv(C&?hL> zaix-jBpT|)bib&XQg-5v?`7blCH>XNjZ!Q@N!pM0rQL5du@6PUXRFYiwZBquov>T-a2$wp&xU9hbGn8t_85p zW$7LS%VgIBZ|ba{$4NmM7e#wVoRQxW3GV*A1o8g%A?seQ)HXQu;h96APwZWO$v4_H zyQB(lq~azJs8j1S$i+0;c)cnfi z-}HYOIaHB5u}HU5y0NU~^D~(dLArEK@c2=P0u>A%$u`tmxoKl1+_f3fG-s5j;O_!xH$EZn5)t zVe`~=iT8ZgPPQ$BkP1+*Nxwgw?)T^Oq5S+iYr@_E>?QrZFUF`92owCb7Lb%1??4dhgK2M8 zI5PGV`#WBL2aMNWbr}t%V!HcBZW-~6sc$tpsge0D=f{fKeM4V%-c2ebasK&x?(UMF z;tVOvVS?$|ptk#TDSWlfC1ajIu+Yq;dQ!bWmuIncv>P0bVcI49P(1eYW)%(9?R}JK zN%`djVyO3L#6|><*^ivxQBnL(Dza*&+sLY#{U;5mD>IuYni{bHzmKg$qud(Lk73;r z1-p`2usYyqd1@CImyDQJ8U^e>U&g!Zv?1MI;NJpSQPI16ONx-~oJ|ok9sgHZ#-^Dg zyRwgN8gqs_t|ZL1T93NKimfV=UtP5(X~~}&()G?p7E#-5*YpWbWcLJy=EV(c9#F@D zf^FX|_^F+v)IDwfHbz;NK0ofSY?oMf6LsL&&uT&nzD|7PKtS}#s&?RIVW5knY@ae$ z6W2O&__I?!x?Bumu`B8rgJ-Y#S_IESVa=syV zVmot~U7@Oz6nOE0Qye)8Z`IbNtt8$xmjihiLN`r|v>Q#)nvk<%s-6)6E|1pw9)C=% z&OoX(`-3QP@1z!yXzjoF=ArT6M79|ZKV)F_v*cSQ8p|~waU8;mcEXs3c#|?{x|ibU zpWYyhnd|TnV)5r%pGc$1=)}2QgRAl$&GpR({4zW6K6l(*4?POI{d+$pun&5tmM0(J z*E{0kCic^qe&7!oq2#r_LX!8gJ}zh62heMao7DZ5J77CL82^<=tWiyiblg^BLQN() zC`T4}$iDoj=>YeP<+rKA^$j3yi$7LY%s;_OGgrt@AM}ZKu|_jLt6SP(7C-`np_g<_ z`Gs#7jwnZ-yLVUw{@JOFr;oi^r$q_e^=P*3>j*h4|Di-qt_-7?o9rDC^${9IT7qE% z55&!R41-P)p1U5^HF6sEzh`9V<=-&^`xzkAPJKRoz69@boQ&N0S2 z-ce71g2i_3)zgGEpIZr;qRKOeazwI!P(54lX0;BHF}Ah@*r-UEtEWXVJue58G;*GP z)RDdW5MsfNcX0eeXfCPIFv-DsY{yRG^h?;6MQW+! z1$>0;Tl@rrvBB(;3R|we8KR_K>gZ&JTvZgeMAce}s^h3?$FnKhrI?sKV3?Ld#H91pMV!u-;29VX%%jdly>tlVYTGtQ?RvFPit@`C z7ou)cHimsWWH(t@D$65HlgfH-u zaa~#Pi<&{8cUbhV4h{>))`?qB-Vyz?3yEjz$DtH<%PmpyD?>&iM4g(Ro~Mm`6_c$T zdUff9tVL0NCP~6VT1=Ef<^+sT`O78vZ zCzdjl*_=r1V%}A0?d?!m>noVR{gig69f{XPoS$RY^P{eqQeD>iOUz?zUkS z$O~)rEbf>ZKEw9Kjs{KPCkP`WYwtBa@VSsdbMWdYmXM&3!7w2@lb6 zj*6$wdwnm(Z0jP^q;iQF#=?%wE7+2vqIqqoowg?)bf!$FIF*@2KlHQQl=*PE7qlix z&>6LK{9L?Y<@OqJ*VL4%=q-qfN~_l+Qo7Y*>_`lY!94D}j&4)4$5>~dP(mh}>Z+Hx zd~HEzbIlyuGW?M5F_*{L+|7jfoM{SjcoW*47>v`QM!JscgBwp7_2N{&$$Dx$+2vOX z8ce(hiOr33nZtb;h1oNqmo|*n{gaJXf%?@D|gLS+wnw?(36OI9W3nQI~Ae z^70e?-r=L-PUvkDKJ)t+5!3=5xGEmH`@=fGNDY4Dyg{9{8=GJ(aRHGDTt-grVrsr* z+DV`G3MiU-+f}5AaB6Ine#7Z%#|5*pl%1T4P0SKxu|r?sq%wz-eD>q!50|qZWN+F7 z9B)#QA&^O;f3Mi`;RgW#G}enmZsKFMcjKK}CI&_tST@crk3>_VGFsDJQ6h?-$^Hm7 zdc{3dX2=@18AVg>6@-K|lsIie2DZ{S@3+O}rcX&Rhvm%RnnkK>CAGu@q5zwhg{{{? zYCGhwR1(`k4+*fYcW8W9Z$G2M+sop940H< zKGUemlAXx>xu%KVa$)H;UD4x-(9C^4M6hjN_FE#k!>DQHOR@I!37j=LwL{cl?O+Dr z6C<{}uCwFDH6g-NBd<(;Ro~DxpaAE8g6NBW6L3QAT=+exZ>DW<&*IU>Tj0#H^AxFS zM}0OP&@IFP+jDX#9b8qDk^1A1Y%oU(7sBoTQr5!6c_?*X1=*XHh~KLH)E_m5gOB%_ z$+z85;wjN?JP_{|NpE6M|D_hB)s=w-YRfZ)0xTk)Gi!FY?fEw=aH&pWacB-ujpnH? zQc$=x4GGYe>5#3y^blXW^MgS7Rf)>G9lRfP*NWZ+_Is>I|4M)8&6KZadXz~l-&SRT zMy+q50nPrZCCnLHEz%M0S(z77b9HIoYxe1{d=maG)KO9W6DwF-HlUcR{xyyLgE)#t zN#WYik}NA+d#1DD58zIF3CsAK@KirbyzErEu^97IS4_Ju?Tw)!Z2m77{74WBCm~aE zD#IbpYGqEF)!!!tpp^gz&+XQb9ENcFoZNxJ^HPWW?Jq^kb1zVQieDvJ8gvBHd@vKS zs%CdQA#FE8?u^X9OuYP+<0oNjyVO7@DHqn=D0t~JP6e8je0`~X=A=y~)l#oN=FLcF zx0%MFS;LZqf3=-=41j}@^d~R--{AF$ zq!?(q4C>MuOT41JQE$=fi=9!tF`HL}Kkyv(=KKXws8&V`(q1L}1j0(ETw&E|0bIl* zlyES|v0dxni?Mjg|F)3#f0W=U+Cm6nw#jYB6yd@zheP6`7NIws&tO|Iai@|rJ+BMP z(H5*tukE6Nd@xZ6Z44!;FZ)3Hj_~A3{p7-K#4Ul_5NItGed*ESeui*Zg$TXZeLbU( zCve>s&O0a~A*px$-c~+_re15Dmf?!gO^PU2=K>|}Pcv=Z=I|)=tX@rqAEQf`-AwoL z$dcwb=+*|$Z-p)sq-?#HJGe?&Sl|%TGz&3F{Ror%F3xCNZGV#5>U>g~`rJm-Y`u3H z3Q|Qoq+;^An09>9e{?(WHXbEO!J*t=izG*3`es=R@!vfee#vFXC-j!52PY1qjRl<` z-JSm4+vO+^i62LuG~rBH$t>8FxP|pw?2X3_E`Q;TKvTX=6C)^gRhPgCtADpyeYWZT zj*BxCw@i5|N#w!jyY!=6#lMJj?_rGo$$W*lz`Xw*kQbk1b6s;^l}>8AcPhNW7Dn1m zt~nrIX1y=?fvDl*J^({I{VU;mPzDt&d& zOx;DwdHx^Nkc9?qi@wb z9#}}4f3kFtNcCB{Cz#x8^mFz2YBzvqbTKNupnURtwM}-J=@CFIa9f%Ic zH5zmoZ#S?7nl(n=gz`)&~`LspX<^9E-4Uxdbc5dYlQr(2Zn|o zHcxl8ePVs^z+WxmVmGXYeG&toxwgrz1a#mBkB-{^g_xzONzT7}ZjOX5hvSgx>t|%d zUv){Ln)Yihq+Tt|t-3pU>gG{}vJ)W3(~0{;TC?u@?o(TO3yvlZ%IkcRFq#P6g#R&7 zW#e?Cj|hq@8=-s76bU%}XJTG@lvA0G&)1KbSG({wyG9Djl6wt*InJ}jJd|j9tV@?w zAmlbS41>6Mc6U&akh1r`5;|$N%!$C3^zgi<`WFNP@Y6f}hSr-R43hs_> zq}~&ibfhmyU5YqvS+aGi){r@yUtPgy62va(whQgKI+4r1$3!h?U7gB4kQAUybX^&` z7<>-my=%FF9M(CB*}hE#s|)XsF(B~`raXuuT#J7I0<8dS)np~$H@Ie>u|{O6mP=Gs z63Mz>+{W#i8(+hu) zjPz^6utBk0P=IxDa&^VQ&EIe2DlQ_uAGzomVVVv6c*Ymw@Pc`fiwq_0SJW_j{dQnog!*a3p45B>t@=ORZ{g`K5Pk-K*1Oj>CTE zY^TEVAt%q-`Rsbv-;IL-_}kE^&e%FUBMihgTq4^6e`x>FlY<9F_~r3 zB)bwDshVj)SK5i%OETI{CV6$2D z^-1D_Pq9XSie!8oMZrw=WCRa#dnTdMu%+^+_4B2t&9<#kB%EUYIEv0)GtzpX_SxbF z&+%47aT%{#@WOI@CufLcPk`%y`G<^CWtvIVsB21TQe*sV2c)g<7ZL29pXzkqkxM25 z`M$_3tEgB*PZ7L4hBpX73z9_q$DrcyoV2thCg+p(TmRfuMA0jXEFizuZP5SqyEbp` zt1Q6`%N`*=>9P&Ey6*lED!vGu*tWL9`#VCZzX$ovRipPo^Xh}tqBRt*PFqTWn!ceK zp2h$r+iWU@a^6bYBcszmTeGLhOO5mAW^H z`|F)vf*~fRL$wHInZjS7-|^7L_v)y_9CXup^ety@ylHoaC>At_e!pk3KGR<_OC-A# zE4FMTi2RurpjZWU{W#S{O-vS{Tirg`%H2HRo<^KKG@~p;xw)tgXUNch^R5G2PDPKw4QB<$hw<6&~YS=s)X-q~5`SI;^vO$wsNb3MDri=RA) z`p4^=-YixkW3;~U{%XWs(II7ld_zE%Oh^e{3@|SWM_R)Z`&R%TMH4*_yc{F?m1g0D z_h2^n>)Ll285xXf)%57qc_FO;m&fnffQcW@Tn?6+nhV32h}qU)G`#s-v#(u@#N3%J zn{HBO=2~utldcx+1fU?I<*zmA%)P&n5(xr!p|Xgmp{yxuQQko?;jwK1J&&BI3u^5@ zd0Da!+EMm^wnO-P+s~Uo&qId23$%qYXaBf@o&K@10MK>KSdFK(p>8E$GtU+ePO?UO zo$R2^$RBED@H)O!g`kj%jf+9K>fnd`*x1#I^^_$3=$qdz8wBafV5H*K2hq64Rl+b$ zns;d;7=&w7Sa?1M#UCS_2v+&t_KwJAq4_w}vvT#1i;am?klT7#>cdm-Qb#FDAJYJ6 zjDgH*HOPnQb$*Owd)et;Ss2qkvNF4CT_V@LiNB|3Cgy4bBJGOg>gVSoopJA>@=Z?%G2oxu_T}Ctr*NMG$H1b8}P&L#_>%)(t1k`hzCtFne4xI?GTbd7?x)v2)I%r) zBOYhhe%T)(a2m9b=y;>93o8)tM64u_$U#<4j^dhks?mv8J(K`0uEgY>vCkA|!eDH= zQOXl;-WbV3Vg&A+z|7IAIq5VuU;w(Fj)9>lWnK}*s$he*(~p#2PoD*SIW{&nG@iJ9 zqxSPZD$3<6M<1{6M$g^zgFkHDr1wh&Gxoh~4x(vZ#i^Nw`j=N16419vWRInVl0gqf z(xTkcewtIqfCufxSNZ|kQ<33rTe#z=?2#G$o+sJQ_ZIpVD^}V$0DYHa-gO|thALNg z8SA$nR&+ee8^*)*X?B*E3`^!u%fv|K&KBcnn_fCp6-1VP+2mgc#Ea}t85x3DC+$YS| z`6vWg9%_5A)xk|~L~{eQipv1s2xs9cu15f_=%p$9t!zA#{-5fr_@~|0I$}Kj=itN@RB}u!Y-Vv#&sHD8)p}YVih5ik9%y9lK z!!5t%da118WYi2BKO|!u;+pCdn%eI${F7AF$TotV;)e!QPN)y*MCYj?J&^WLpE0yoR%mb_sH{l zp3A#$_>1d3Utb1IclF*q&8}9@DH90XhC+Re_XOYIvj^Mf_5KAW#h=}ZvILbDdCmt(IdtOD#MRYr?}5H>Rbu0UDz{%)FYpPT zguL*u4@qEa>aX)e?pYM^iXalh{qlkMgfSJ-{?R})(c5m!*2>KK0&##>^tflqH! z(ZR}pf8J*pdKUJm;Ps?X)Bw@#Hhfwq@#9SuYcX5FH;` z1umD(#8~}G3mNo|(-&P02ou00mSI7Q8e1!W&4)6Ad5&jo??^iz=q2IR;D(;;$5Kj0 z&--JRU?N2IKw=-zzxOi_&cp5Y%=`XXV z5)OgBOZ`BjBDA)`0fm(-gP?+2*!{L*6?u!>H-^Ud7zCJemCHVQ7Y77#s@6EEaKGD{ zsxn;R>`RWaW3Zku^>`t|QiTQ#jR9(Pfcs2%tYfbkdV#S4Qob>wm6N!(4ta+GL#k{e zn4grJO|Qh0YW~Z8O+J!@A9{vFl3IWyB_*Z%z6&Upt@5>-mPfUQf2-mwESE~2gO<3m zR=A~p-aep=c)B(GU9s(OCn0u_%45o*nD${ogAM)GAV(;hhh$U@vzAbvj@w)mJa%&8 z%VkyE)R|x_xlsFxd6=6}YJ~Q4Jwab*hhw{|Fg6)&bbSZP)3O2Pn!(VPwAByIVwVI= zwjP&DV_(1RWE6K_RsM9?4bIohrAN0SW7lrjBak9NS1hwK?Ro5x))W<6ZT!j`0~eQc zMD0g<#oO6AL6*lll?qic7I6`={IZ1+IqG#=`awwUlm_3jW2bT_2{mKC>dNGEnCajK zo!_$Hbw4j{oa4|OEgbca!U*(c#oX0zt^*B0ALz?o9Y9M(3#l}1f@^eWREEke^tC=4 zH#Tx^CXBVfpd8qXLwAPm0T;P@3~B5L@2ilea)#mdi8GQtEYcIcm>64gMXt1*wByEs zF2d#hVC1Ut&{{QO{@AfK`sll2A*b%Cju4pSFuhz3`TFo*Uh+tu%vwnP= zKc9`gC2~HV^#IfDM`X;z+uGX1m!2F9WoKmY8dDltSXve#EhrkD9js~dw%!!PS&01g z2^Y|oP|d{l6LHwxcwtIv;T3{umi;3*dRJrjEmaHhWl+h!UpNLO_YFu6%a~9>bIe(wTuA{A3nP-?2KYspQv`e>L@}*Nl-i zu2#LjW+gER|4*~vF;eGi7kn|$Y>|)5Gn@u>kFHa0@7a~l=vfI9VdpbvNK8X(P0Lmu zM%T1i4_DX=lsOZsYPjuGtSrJVitg zwu`U{F(S=sY8F1dDWt?obLZvULoHdZ4Uf*`K&RLezM#Ac_&VJ8(P85OHey6+tXD4j zS%n?#UT$3kEH$+{X7^ZMjh_+PAtaz<@O?$CbeS128d&80hP|&G>t*Dj`Nqo4InOIq zaIuSuD81^5HJD8|Vh37d){2lJ8+C?ndy=0d&RxS7m+@L)nXa5IS1ih}I0_afmk+W} zgA~Y>m6apkmgnKz;r*Ojb9oA)siD7!#Oid|RZC40EJwL0FV2oi-b_s(qC(?N7pG4M?pYGY8lqs@(#72W&O zd3P4jh`GOq3nBcN7e{{+5}=Yncw`}fln=0)t`B!iltU!$t}hs6(tc4$6YNMUA= z7YyWOqTP}8&8}No_;OL8M~n+N~b_>s|#LWe#I|{v~!bqJE(x zy8J%{TcE^PiZNdB=Mk8THK#s>{w+R+aXGujdxdtIHeW&;3gG1HcCqaY-E&=c z!xH{PExK^ky8zS1quU*>uNZL}O>o1K>eNe3X1_2{ zv{=BPP(60SwQQK2oaL1G*z)QsEqWWv%5;r0$N;$E_*78-#)mNGKetcmJbNPyQ=W?N zjL)TJ;ro@e9(bb>YsM($-cz*w{o(z@oRo2~__7c6k9I3|acwoQr$M%6+s5@#@l6wu=iGTF`W6+V%57d^$!A(j_QhPqH!VV}N$r z-DPf^EGW)Xw-%O@=;eC$Uh`Cn)1Zqez2!FCjNaePOfwMBxYdDp92-pv*G0?Cr-gD)6O|Fnik3o>SN`E3$WC5gNsk8IDJME$K zY0Ub39=gnZ?CQJ~WXdWwCY@Q2(C~jGF4Zoaf{M(}^z+C)nIRCWS+ncBIv2@}n>?kw zN+Q@CaIc^J4qpiIR9M@_$o7CdXHzm0_!$ zc@pMYS*;AulT05o#z)o*(rm5wkH_8j&Ahm@m8cu~;ZcGzIwO*(P4Q+t%GRhyVc9p) z(xMp0m)E!WRiU4FLVnN~oI9>YYtVab4f*#ypcFnmL$WP4N=&M^))L(uXyR#KYBXjn zG%VYl^Of=+8POT=W6agstr`5bbW|On9WJnlr*l-|CmV@^yhZKvuPdm6K zF3r26za=f=OIhs8-&?Woo!$IM@qot!w&x42ApQu|U)WS;brqg+) z^4D(W(h)gg<5b^|prRCgg^rj@=AZ*@u93eBnq09j9WRD!bD>hvj zTSa?Wk;+BS@I*{PBzr%o6A3 zv2G@A#tR5nn^h@}p|6$}6Od#N4Mtsde@*BmwoA2r#bq~k>_<)#!C^$#)1kBA` z5;XX>)fgb!e~(vmQasWpC;8{d;m00qExbs!yFOrKV92t#n~Oph<(aoUD`*}Ktug3a z{8FAqwi-cTAI2$gyX`qujTPq$%+Yv3;;ZB1^<;hm3A7>zgzdFCUXrrkP1U0jMU|== z(_Hfa$QZ}bJ?|XMRB)4}2@$OT4qSd_X66e8b-NhFT_bT|%W6&*iF}3O>0X>B*1)x$ zetx=~^vC|ij9h5Jn|<<%@O_(et4~+;>BL5jg6HqE!HNLap4y+Fri38SiMdT?z|i>{ z25*`DPh)+^i+0vf+7{r=>dIK@q*bm=s~#zLU2w^gvy(L$ugdV!VL{r>9PXgjXNUcMwc{Wmh=BB{bb z50;vf_l4Jac%q90gkpPBqRK^DQqpo&PPA8HvO#J73PqMiHQplcWwd${;jl!wyhBzI zhuR1Mn?@R#2S2{nh#b7>xSCKFH*^<^CT`@il`bgxfxRVRujkM5muRPf4ff(!ti@i% zvMrK&C(p!PbLMpxb1YY20!G`+UU!f39_{vu9V(-#Vx1f>CWX51k_5c=mUqgh0&^jk z7rT}Wcp3Em`Nhs-8ZiWdB0>SIlIqk-N5@I+-dS=daDwzlMu!z`A}!%}>uz*%rMh-m zb)QB2(0q-(XrW7sc^*w-(RD-HX6VY5!)l_2U-r_T<1sb7?ghc z)O!4w@1x$&eTUa1XI-AUD7N+zaSF$j&(4O7*|D4XiK~^&4q0hulREHM3Z3^nMNPV* zTe~;u^NI=Rq#|O2&#kRdsP3T}3Q_u9ClwSjtg&Hm{rX_$_-wYQ5Py1+Oc)fOu+&WU zV!`z=FLFqIZYCe12f0FKic=@^W|~~KeahK0lBFXXxn596vmf1rKMot`Xy)j{Keo7YX7RlcD0@8 znm}7-b}Q>fvyIu{n=9Xg0<;g+Y{RMaX6mczsMNw;W0nSXE0@Q=!mahm4g;-|7LQ50 zqc?R8x6!`gQwUs)$VdwW?6lH-w$dtreZlv#dRATfK2mrdEkj+f8#niva^Z=oY1G=1 zzz;H5RHfPC+cJ~zkMoJqvQDT@SNp}0KCW~6oQvJ!hg;`0QjoDmG1c?4^qoTt?TjaS z$bOKE7NO#qkrYH_#lXm&fWYiNabgymg(>vU5@|lv4%(^nUCOY)sA^pmL^M)fl0T1- zMG(pWZF!H6S5$9BO&Yl^T>sEx_~3wu;*g}M#-Op|{ZV9`iB7*AtW>-wEB)Z9_ZSma z8Vh5!?CUe*DVtUqqL6KANuMeaDV*RyYb)ug@=~Ozf};9#(#Ux#XqS!NocB(|LG{R_ z<%j*Yfu@(S4ETG&v%1LcM$WXBD;*3;7H z`A4P1*D=!g1#qI2zQwxqyQzb=6jq2CzBM{u8IFY+!;Szo9k0(?rCxn;IPP8t+LK>r zcP)S`l>c>--KR#H`W_U-ol3~t(|ebDlTv(J{K>9Fe*@fJW;!Qag>yBW_48-XkQu;n zc6N4S!1Y5af^Ph-ugFAP7#F|4n7y3Nf5rQYeB-=gCKz~d`%69f>)Vclv0m~`b)`S3 z80_u)Sm8}8S)G~123;i`4~X|xK~vr2$>2*_a$`eLKfCuE-C^jkK$XW2_F#_9G73nY zl1iL{JxMW#?-vOW1L#MxK_kjVg~-(#*J&W)=*PWx*bZprb^Q=}2JKYy}l1^6IwpUAdUoG6{ z_I^?rXLZ=KSHDFw1kK{yJJ{5vPxFLs^6mJJmX>fs^a~Y)GQnhv-PI-i5Bj7?w(4!M zAxq$EBh5P2o5bQC9O%mZNHlmqFiutZn=G<2Nqir`wvyJyTP}9WU&u-GC?*F8^Vlsf zNb&H()Yw}F2j${nrB)k}!by24QzQAt;ugFy zIw2tQ3zi}ShIl)o&l#WYuORGOPxK?L;*6E(?83r<(7?TeVYMhD1eIW?e{sIoO`+8% z+@D?n(7p_FOxh#W>lQR7ynmx0hOPBUvETZ=mX1U)oR~{@iwj~p8FWTlOb5@$yJIon z+#)g?It@kYMzL6K=aG0|^FC`OF1rr2gW=*MkxhNy8e^{}Q4tf8{CtMRF)|L?J0y{r zra51p)kaqS?BjQc2@IcvIAKf;YcO?phiq{H3x8eEG^;$l!Lvgpg}wU{w+&a~EYwy= z+_%u-u{2?@mL{*LHu1JHv!?a-IL$4yUKvKS?kAV2&OwQ9&JZOZ?by_Yvb zsZA|XB`s=vL|F*;1)7*U8eY*&U1VSNx*Qngwgjx%GjCz^M~065s;lkaRlV5fSU~Wj{z&z3m4|Ds1;sb=V@rQ{PiZc2%5|IG>e()GXQf@iL1Q86hFJ z>-0V|P0bXBvqf-4u(Hj%`Hx1P8q=q96|YtuO(7CWXP#Ht9T4hJ8nVX>ILd{si096h zhiHK@*F{C)IjGP1`4J2_BV%I_;H1D{@?;O$%gCGRl^zv|w{g}R&6cvW7e6?x_m@HS z|Hg{j16BT{i?I)HqmHi}l$|MhQr2s>oAUn|7k8`uOs+;KC3_L^ zs@!mtf3T0XY|b@5=V%#ql`}ELvEf|O=^W;6nNy#jKzP~4YuUH)j%sk)YVSZ^oRtF^ zm<*4y3*Z7)II+|2VD-Rz5pZf1o8@BhXRKB8g-}C~F0#-b1`=2pK!T%@<)K8JfTKYG z7Z`RQ2Q~ym>9v2e^M;(Ht2tQwhRHr*S*_asatt$A7P!dF>}MOqgW^jzp~1v3dB5~)J_R!K^Y82l#Ev1J+H9+X zRXJF#@50c4jFOTr?ef7X!ngVW#F6al-misSwe#P2SBJ(|TCJrk<0ZMT5}0v>eegBP z!6Dfr89f-zRU6hT0_o$$^OL~m*PT528L6sbq;>GySp1rThLnGws(tid1`mcyTT&xfwkSn$z z;i>|QIvk|&Hv*Rj99tAV(jA^=>CR^LFByCxz-1d+7EKG|$kHy|=oYz+d;?xS4b zgg7VV<>ezoy+YZl%98`Q`W_OelFeD|T^vo52|88&{JGtpsG6t%5(XjA6z%R z@t+)#&7*ru-D0k0AOtnAjdtik=0wdJWR$H|Se4V*_Ep+j~Y5&vs?C;V_eJ4Q8 z9|(sg84@l|hNFP=g(Q8J1%+!#Lh@GwDilYHlVt?=?H6qxU#F+I=r_S zx%h0h+cF7lZ{3C!yqeJ@>Tj|a}R6=B=1v!f6S4)U|y zWcHPY#_Y~qi$qE4v;cUoksC-+LuU`-1Rv=n7dBaUx;mJd1_)8WLx@~mUN|3Qsww?8 z6E9I!RYe@#_2Mif{srED*BX!7vvyFdgD7z+9tVY$(%hcnl=|V;aGG%=92BAMSbn6Q zXgYW7AHp#gffVSVzA<)wPZ`iKG$U@+_0(um*#R#@DlztA~!cz z7n_-*OX?!=?O8T>Wy}i@9lHWP&T%K#bZ|%rknTFnF!Pp0mlTwga1 zpH_e00vr$>&thGCP^5&|?`xGx;ai+;txtEI-eyATTBqJ#k&fpKKgD^-U_Gp2T{dbC z{w13wt_h;3DVoo^E6^2QegQIY2-kSjYauXfNg!B2FO|mZuaEXO7}S5gUo6~zU;v21 zVKryN_BI+OCgajgaMzSSQW~BgIbT`#kGiF$rBP6{6lzKWUJ|H_i+}5%{_d(tMJdn( zl4<(krm{?DsTmof+^xV6o}tpgMkJ~Rh-Arb75c|HUn)gfll#_yXn%$d4;~&KxCtSm zn&nmC4$>oe3pk$MgKV_2KaY8C+ZX7%cXi=>r3Sw*kFb6I{@vTN4GhxUW@XCYt#88_ zUpaQ(q=nGY1p(7JBH?<`wGJG!V%!Mv#o5^%I!}=O6@D}DCBE}t+UW0!moX3_JfIcW zJ4yqzrh&wRBs3K5QXoUg8eDw?L@S25st!<`jZHw^L$imB&V5%jnV^!CL8H4ys}wV! zI^$OSKPv~Pb1nX`M8J6Pz)u}Z#U3u6n-RyW<1J(|7 z`9-_hr3_&(JR|TK;=3Rca~ao$_hy}lKW9SAK*2Ek94N7b>vI7E6lvmq9X3UQfz=)~ zhdS;ddP`hG86!8a-Ku3~O`+Cs&l*sTmGcytPBVGYv4)9{$_qnQ7l^w~x09B|BYLvVz? z4K9!}APy=h5k|x$(-8nspp#*%zS$FA4}XA*NIYOK&z4EXz`kL zkSbg}KNHPu`Wu)vtBSJHQZxeAMohQ8HMOhLSo_UK;Jq=P|F2O2y29`!58&$Wx+Y9{ zfpewi;xn0X$?mndxXdgE1XPO7H@cy(T25(wCh z;ZP$WkIh47VBx6oY-Nbz?k!=cj?kemv(&?)H&Z`8(Dr9DTsD8$81(KI`bVV}v2VW{ zJ?rc1!Nrc_wFKEWZAM)E@th9FCSurK|2%kJ%LHatFC$`;7i3z+q2L@Nb6l%4G67Va zEl=gb@{1aUZdUF|-sDdp;N{fyuA4;7OlthQ+MEBn5MJxr;bvf%GXN3`r9=>UKq$l8 zQjO|u0dl1CEdyS2_!tg~Tlx$*ZI`aLeX)dI9q}6aV$fya(D&V1U;=QT5ydQ@rbhs{ zF1fy6J%izXm@R%J1#f177Tg385~~VZ8ylaWrwdHZ!0UmO2Y}O?&|X|x($+sm03@UZ zpw&5i9&)HChFr_5SWQOzz*EFRPE@9B^sXvTb6ODv;m-gP64KM;cyTZsN=zKI zyK7eAxCyimGO0~%pzGY)nm!>e(9;07gR4UD5db<6K28w}Th&|uu88{@H1TcC@o!XE zyNdOs920d*e}9k;@Xf&NC6a%`eE+UBUcUkWjSxBogI>VV8XjuR`1-19xmltOMPTxhte;n3+4V^7W&WjL{^8f3xP!&Aic4e4s zmI0U#hFfPVjtxLSz*7dg4WX24Cf ztD3^KCHE~0CFHT0+RsLb8`k!LkSWCR*|L^@qLAR z%~I8{bmx5;ZY=>NPkwf{G#dyDLQu7US7JynsXqhU^(>$ys1WOYo|?&Q%m(vb;m7S? zm{PEmlb7dI9^P&CUh(M~dK%OUcmf2#MhDdin8ABMx%UlFBQ`o7YsR<)@x%X~+E(DX z8MPJ#xK9q~_pVp~*(BIZq|7}0mkR*W4lDF!KNco*CI{trV8>iGQvittKC`p>J%EDz*!T@ZB+pJy0amO+_<|%U z2){JqYYpH!_DV8Ijd7wSG*=J{}3kZMXkp zh$ff99%1IDlIG9KRL zi>oUZcrYxxg&t~Uic0qBmd}m89?4&^}+oDT!QC z0b0ME)a>l+tSoWg%HH3`$v}qv{4iMF`1$!=US59of)JSj41xkF#k4j0J~{^+!I+pB z$Ch8Nmg3^#i65JN2!QA#ZX^7g|5F;8cWVJ*Id1#|S<#7!iPcM9`BYLG;{@2)$tm+c zvZJpMmK|bJ^k2-WKA^9ovm9m7Pj}G#G4I>#%*;#=-D2uiVnsy-q?zudCKd3*#et&+ zxUWAM8*eQwr7cX3;8w!!&Cq^OP>2JSBEI!22N(s->dfLXymG$v5dx0oz>MIBaWdYE z!+MSOP&l#Xe1U0qUlq4Klp%^kKNQj&0ZJmYw6!y@kc#UY8mOdViSh8Ln4nGDo)2~& z)^d|~-<`vO`VZAcfFL=RQ{B-%v{N8&1lEyLz$97*7QFFum_P-j9 z+04?~Ix~PP47EafJST^dg&1^_ssVvu@0^^R+xSQGS6YUKhPmrRMc*&XvhkmuT;Yr~ zaNcU^?)D!>x}}^1C=_i?&2)h4r3Sa~%kUyu;KHw7z54j^_dvQV(pN?9QMG%{w|tnX zB%_(*#?ut~Xq_)7@jw+c__ACEzu*mUzkqQ&Xr+qNIpL-VS)oY({nNWWU$cEEMyAr-_xD(JzD-TDchMpEE@V?%^p zfjU!T7|K$5O^MN5K;uPrx$Pn1M?6|(f0XdrgO`s_(^*WcUDEA&XXq8>+EDf!KC&{^ zlo$AYdi=X6r@&n6iTa5$W?V%T&$sHuzFGt7dbeCrtTo^%Ir-$|B*Lz`nEL-$bllYx z6cjEN((Aa;(a}GK+t}Fb`*g;DGyWY@WKdRp+sqmkDt z^C<$5VgCs=;IGN}*7MjO8cYxSQ`p;|m6mdIAZssnMC^We3Bi|}w`>Hy?!YzZtu3YM zuEL|6H#Gr-L51~JS6iEmLTkY(7j_V(gs7yXYJrw-r3o%1hsw3?VOoz}mb|`_QUqZ@ zQq#hI%)_ZNMJQOfW_@F0@K@9=8RJhH+S*hQWiVN3J;W}FacE$`!rI#V$?oBy{GL&vJcEOy zqpj3~T3=}u702I=_c_p)em8kv_?cQ+#c~=(61uTDo?5upJ%;!|VZ{c(5eaOXZw;E8 zn?rIT6;3jBO{}bR0QeJpAtMcqw88?l)7khmqvFrUJUk~uFk?%Ef;76vqk)s52vP-s zHtrn!7Jb`|e!j?d+Hm3d_&cD!r8FCG9`OSU|LrqE`kFbrj;~eU-w!;#QlbwX8yh>l z#lgkpJ*#ePJk7P9iU)|jT@IHgy2i##OiU#bRlQ!<%8rqdu{eP1GpEe~My>DgzAnss-tTCvqA|K?9WC;MWlRi!Avyfbw#O0LN4U>4}SvkKdx6|7-?;62K$6va&(z zTdS+5uQb>R6|xiqqNC~k18>)M#!K3EM)Sz7>FVnjNVEnRnwsWCC#@AF5Qk>=*v)$y zDJq5=zW00c@EKS=bEpXy#^0|%{J^YgVP&PtvYVQcB7}xqrJB1iX=87H6y-PvP8_0) zlQ{^LlhY)!OC-jX$%pva+$Uv9MrSwoa7D?xN8i&Y7qBMo&CQ< zeVF^eJsubu8d6gQg%>bb6h4Neq-3!M7pdgD1 zRnp$^@sE*_k#9lB9JJ+Y_;*rO{eD?ticHGH1YXmuc+O{?QAFuiZze)qmzd#rwD zcLkE*kX)YZZf}nyQ!_G7fmSswWX|+g*#mNE*i6;OzY~SL1A~I_7?pw2>LOvrJfYF* zj?F$OEG)#v!NI}C)=}ay%PT18x1s}gDft)#REs2?ov&11@|aCYA+8|4ZRs0i#1DU; z330u73GiW#j#aInWV}@mOoXQJ(eCE9_n4U+E3%th{BpKp*lOmy6uvC*ev)5Mu(!9j z7Uf8eda^|iQ4jvr-QB$|4G4T-*kEGoEV_Nq?CtGush`^d|8MZ)=0ur>hQ{sM!N9AR z(`Qphr1tB1zzD1(qC%G!;M8B;Uwa-`E&&o)x_fw_Lgu2L*PH@UWzY@;T5i{J^siVH zU`z2I3;5W0YXenY#?h~$V*NAOP%>11b<;{d|WDq*HXq5xWrCuw?IrpT-=AyEhsqnnUvWb z$o}zskW^$;l;-T*Tmb;Hx73fhd3dtrf1yUGcmb%BnF%=IeUT=BFTuA0?K%7V_fv=u zCxEJ0IK?p_vH*SK2mRIBp-R-&f4qk>9*2UCJ}6@bY7Zi`HK|T1|?)9r27!AcQ6faBy&}W}r3YIvr$!5G**TZs0S49z78J z&T|~|rLI9cu*$OT~lH72qCjZEY`0LTNBFmxVt4k?ol z@6=*>vl~}Fy&meyGmfNL?-gry^J-5F~ z>j%8P%I#W9+((agT*=O7c3Q}!#KgvdUkUCrFu|Xk0q&tf;YrH_fzSE*c>sZKsb_sR z55JF+Epj=mR&Mdm_m^~m+5E@p%67A+-XxJC(*Hx&nFsWkwg3MPgCUG9jVzPMQcpx0vZ>Hf|8;2pyS|#I=oiUVeO7Hjk|V!UPrZ3_ zW<^2uoomJ(ws(7F{vH&Tn7DNF;t11LM(m!VoU2hYngTy7dEdBZDc#!F*yyRL}Xg; zWo2_bts(##r}firGo1i!XJvj^ZR~H& z6+}?O{*NDBv1SkQv`T58otwKj>U^i9AV>TkO9pLCyL~&{`D1`XS;k~3<#NuWM{7uo_wL=> zGkETu6S1+e6^ciUdMPQ5$3%Pc=FO8Q2f9reBo!a#ofhcFhQK=mX4?3K+|J4QEH}-` z>4Q+i-{qY}@8taUQkjQkT6M zf9v}7-|p-kI;saBGjy4p;)aTZs$J#0U46&LF@X%3Dj_V)pf)}> z_PudkT^%p1O2kuDHIx*+J$uBtZK!-P!0LG0vNV&7_tkl4FJ2rq_jt|I{QPZOx1Q}f z*3QIe)27Re{^T7}HvOY9`~TjBzq)J!2f$}GPYE!u-kEG{6?D~*jes^Pid}n#=MlLH zTjWUM%a(w+I32C2uBO(2)GXH#%93tDl@2J7!FK>GFiq52r6(S~x^`39r>tGVC^X+QoT~3JMYsk&leuc&Dn}`hB4) z?z6h~?R$isx#E6rf`^=SpFQ20GszJD~pHFHY8>PVA__a?3}uY+F{U-vZ+4}G;` z=g!A}xZ0MBL_>zW@ZT9a|Gul@_AI+aVU7+Ku@BwNEi6)9J}%s(=AhzyXnBJ$~Xc5AEvIp(3F_{^~1(w zkLJU7k&+&+d)(NuKT7i+>kJ-x=_o&x5ahX~ARx_TxVid%OQrp4o%>HXSJS3Vo6}#$ z*v&IqxUfgK5JwbeT`vFe-?x+fpY;-Wm&;3@2IQ%8OxDF0cjY2ZSTVst09p00z#YU=9i?T9!5 zJGonFqp%;Ryq>E5UHRmr6#?fE6_sH-vZm9uM>}PQFEljN;fW*hk%RHNMlbpY|H#w$aKdB%V(KG9zTA3so&VieRB=&-%)n_nU@RuA#ica)sqzW zjT<+P$p6-H)sJJ$=N37?viyOsgS@2i?v!a`K;G5Mm)lD=<`ky9Tx!wj_w!1esr9lF zlmf24uBeC>Wt4Rtg@Emf6-O7^u3TxMzTa!xmTlVxtE!^gt|ivU$QR94FaXYl35z2u zuDt3eXWip*c}@JV(&Z(Ck9mqovd}f_7vWGV>aif)XlcCDv$KmL{9&Se)PmMdKfZIC zpTg=Rt_OmnAO7K5pJ9@Irm}m7$lKsHok7zpYib0!nv(Y4E8v=6(Wh(p#fyURoOAUJ zEX4Y_*w`J{yB-v&Xa-nw8*1MRnnFWkk?C?ZOV3ZjHh0&%_Dj_(Fmgvpv4i#ox9flWU_O`L)&0R? z3Q$Ceal!g_f1b`RdHHfhNU+M6h6bSt7q9rAGB_mwTo-AWpE&y+y@BR-vjqZP(xPF9pt4?dn zvdOcXJB(cv3q)IAo}GI0CVSJ|YbQq=_Uy#W`?s&4P4zyY^6I&VV^(J7-oGEZvymJZ zxSmW&k=+GTVD>+xprX-=i;Fv5I|F`-j9g^nbg50B#noR&zR%*}<~?z|RIHRgg~gZA zJ-03p#A0GbYSb9sy?*BGSxOUw`k`Tua4vN}c@PSct-#C+7cl(KJ4y2UnI<*f@WTm& zVImtE!&z_+MWDNOo;ItTmTYK2BUnRvbez3{VQqMd%&wOK3;Yy58{`$Vc`&$DWG#W?)n>MJpOUg&6 zfrDorips*l*Y#x5fu+>AE71=8{ASs9(N-J$%P*6}q5J=IgByP(CMNzJ9D=HtgBPZmMFeE$5o3!hJ3exZR&tDefr$}(10bEH{h zHWl76J-3l6Dh6=}I*zZZsR4^|+xB9<~VJnUeKC?uHZ>Tw;Kj_!9(62T`y|ODsj<*EnbS^5vBItd`<{ zE7RxuI$x?&(vTyV7@p)wP-M@J9mDxqaq&vgZ@j2^4h&D5vNJoWTM`z~Fq;+>Ydy2gm&!l(S+s?n-LE**XO@+FA}G}QU0 zy(+h>JKPCM?tW(bu3aV_H!S1v74`nd2_^3fj4yI**b*2RC=Q6vjm~K z{sg<&&Tqm+#7_$;F1F79hq|73NZ_im`cPlp@VwCn!cm7oZ;HR z>F|_tt&sb66Ed1t#@1r#(r5N+V_)t?RiOBpKh@Cij?TDoc{gqth^_bae@fXDO-)64 z8CO&PnsQY`C+!9 zyvIwNA0^ow)iapjTDslbIq%X;NwKK(?+^Mr`NDn2Z-7d=MsBIKh|IPT+sZEMEMaes zY+K#`W#d$V9CIDAL5`P0lh*oB^AF~C4jec@ln;L5Bg*gpW&9+0KRzW;g_E9p_PVfg z6RuSE%#;t>wrx7wLm&qCu|i?f(9a*SmOqEE3l;+#%hWQ@_0cZ9YqELs=Brc6KYjYNWBc~)3r}z1J$QkXy8lVJY_UI1ojOGv z)`oSx(}VaeAH?43?b#i=CsSqg=u8y{{&C7=)7u z%g;Ot$tSG+~8woP0ysmD%M-Q@aKE{zmkBw--@4y|md$^`t9rF9N|8N1w z>`3YpAwHpc1JRG=w`4D{vT_D8Sd1N&YaapoH+xIA&FJ1LJrLzWy)r+YAHkYE{pYcQ4p1^f`YC7-Cl%u+Z4}xI#?$l`C#Dl5J2;D=M6o zJi`p1r%j3KCi!U1={M)`lP9A_j-(I^I&dJTLJ%H|#up`ZR|qJ#lAze7xk-_1@jP z_K1kcrVvQUc$}$elTJ7!e3_mNDRo#z>Wy0yG;M7?o600lk zjwo`yt3k)4RgCQp$;bE~Q>~R5eImm#X?)1e+}T)bB)fi!Nc0UZeC_#F~sRle9X!Shq6V#pYl( z57mNpjiF!iYDdSuk1Oy#0mU?G1nD0B#m^i+d>EV_1D8=*RGg7TYmaal45YQXPMfxY13jhRi+PS2C=1_lyfdJQVa@b z8{fTm?_KOLWo0pm2H9ZH%%7xNietx{&ztAc)aa%?e0sL;6@!7Vri7h1vCPIsMMY(~ z@`%;4Eh+zf+SNR9Xtt_$iJ^ULn$qIToE!^vg*A?S`u62-`}gmUtOy|&p|7X6DY93} zoXmeEEYRe(>hZ1{du86xX#?$aAhD11*8vbzb#-<34%%mqk8q1S_p&%mM<6>X>JGIg z33&2i2$_naxqoY?oeit=hE=Y%V_TleliNdD7IB4SUTEIlz` z#E7|Zm6dT35%$HAr9*RX?&uyC7FM?2>C%*pzeaB6igK5W-@BB3LQWCkjvt>q>*^a) z>#4#epXAEaT-U5&;&4FkEjJogNQT>i+}Ie|PiR*8*$z5g-fSdlg5qO4{rF>0WI@Fz zR?1rP-SJP*s|TRM9zXv)lnDHeVN^wNjv?wMk>)jiR*h4DZ5Lo}*kZ3qWQm1CS(%c46H<@ zQ|29{OsF|DRMeG}&uKabEWptPJ?IA&pNiJQzTT7Qa z5HD_f^iWW!9e<1L@AuD-UApul4T`8O_&@blty^z=_Y}LHk5U*ZhMmxVbM+$(dD(@9 zPS<`t+78gxL`y~Rf}cob{oT?%n;O3)^yAM*GB7O|HgMogogphx%?gCyOp&?Dyv2Wi z701k0T@ZazDPQ*N`ud4I`I2^z)S9-w+A8Po>AKPk1f4y7{rZ~S{T>s^swfXW7;Lz+ zsFmbn54GeD`v>*F2><}pc>EdssuVRB0cgiR1kIA`?fUC&uD_(-k4L71$c*ZXDE=Ac z)-gY>prF7qf)KwJXTQeMs|%TQFDc%>bN6oS-cSIvf`S4>*zdYQ9vKic+Jm4o4C7pP zneyz`um1xanqNdQnYTD{0^H-QoMZXvN}*b1b#>-4r}|q(Gur4&iqmLzvA4IMg}3C+ zolKKOix-d0Jg7NwVsg?aU4mD_>b8=iA#`XsSlX*`6AjLAXUXB8&3o(`z2?PKIqCB6 zrOQ+MZY)slc*N*4ne*=E7|ADOAXGie1iRqm;Be{vf$j-ZrO(d)W+3VaslD=uC?d9u zQw~o^XxwRW<;s=S(6Z0py;JA8T?T!>6#k3Z3bFc^xR)e6DanhybjgSE+AmqTrftfQ ztcMS+(O&&Hxr<3yq)=2btVHgqLLiW_tWuP3b6s;PJe=09Mif=@5jL;xH78G=T-@P= zi&U)YUbfG)a8pUA#rKX){08t>Ad;-#u;Bxvba<6Y&zPLEuRg&ge>p*Rr!s^50R4HNzS#5d8}JTlQ=%6-Xu#HAohAJ%lvJY87c!7I?8k_>F}N z_d*^xP{Z11!`q(;s_8f);k;`Z_hP6R&YYRf?z(JqyYtvAhkWPJy~~p9Z*1*^+R};? zUfE}EK-v{12{|BOM{jzNas9e7Ry&zqMI}KiP0Ho}-uETjP$})R$jeYRKqB1=Lk)D% z)L3ktioaAEDtI2~mU0mD)39N~h@6p%_f~p1GAMud?%h;pv5V64Xo+TZZH`Rzp0IQc z2hXeZv(o1?@v~8OAy1QN2d-YdI#9p%;Jm1jwG~AbrKJNU>pz2@4Bghbuh5hi%%AU` zxNVGEWoaiRopa`~JEvMpmrt;^FJ3G|hH)%=SIs(X{FJ#pRFS0LW2HYwqR;nraq&y) zNQBB*9f$5Nw$HM&RigqzLP8wx&51T2z=k?FaO3gB7-1D07LhfsuK%O*n%{r_J+YgM z?ens-LC6DcumG2agnHe07JB3eJjTkQs&fv*E)JF?mB(|v>z_Qkw(;%@0#AMVT(1F= zb(@IOr=OD9YTxIVwefRIW~i+oN$~yuF|inWz+0 zl|^K-KKDJlR($omdF1*I8ZQmw-kvbG`t&JV&2|0y_dVS(k4My`naiTZHFC0}uXE;< zI2c9WZ(XSbK*%AR!-9{L0%;7lQ_5BMtDJwLLTV;|K|~(d&la4T{d@}lJc(+Lj@*sw z)}__ck3M(CjGrXU7wI!AuoZgISh%fA{||59#w^u#%)2DkV#$^HM-THd56K{Bpye&h z%vN16Yg-5wn|A-Uv9BwzW4UN7Q?&R#LS6n9q#CECn+VvjD)If9;@$3PfaAvilZG!} zWT#iLow~v-3jfvpT_@_DEMm98^Jcc`qtR~LJ9cP$DuFePb!)UcOz+pOq4VzB(PtKf zXUv~{Y{HS8KsoDmxs>l0A52i|=r%KEa|4YaVLL+=i>|IOXGuyIM>x`i!o?0^))JKM z4^nYnDfM4j8Jo1}pDi7Q!`jIy>4hqLz;0>=zfbfM90geysk-82|O7d9+4WKRHMO*?9Q^&r&0l2bm>1q z-9CTOsFfKB+=#MYeeo1UElIxD*tuThJW+vOc9|SU!ERbG5H%8B-30Mj*uD*wzQcbh zW0uF7mzS42+BiA*IuE>=%wn@eS(O1gCpl3JtWl;LmJ%&e@6%3H@7ltD2nt$pIRq?woV zpctX7E4}NUIB5Me=<@3XKxJjS+Bw??Xlm}ByQ{Ti7{-Rg#Y|HSZ_D)wAkT=3gRft& z((W*L=+N~0_vcWe?WTwBYoK>yn0l#K6Cq#^73k!n+5N^Mz-33q#BN?~oKdK5mDEU2 z$4qgQe98?9s}t6}dCcY%pNnv*b2D?FIc@Q(HgK)42m zDol^LAYP!|dl**Hs+n_cvC6ALPEP%vs;XW+;6fkRbpA$vC2xm#ejOH~TsZsYR;3z3c*gIyF0! zheDTq?)2?$kVoF`31q3#CS)T`6RKkt=x?>sAB>9RD&N}hCKp%SKTNZkwe??Yxb;97 z_t(d_+5V=fNNSm@)5hlly6{@+C#tDJN)pG0X9WeK6=zO}&JV&VlhO%`+XhQWn$ohe zSgLc)!i)?jIw#Gi8j0n}5=*1|eMeUDDTu-KJE?uV{4igx=|qlzTh2F`C9^if#{*&2 zU4=ju}Sz-1ZKZ@~>m;k)(EKhrkwBVZGZjg7&QT4!Ob1`R5s+Xkhz^6{w( zDeTc0BxGEV_gFw1d_=m!{T=U+JHQY2nAN%n-n|M6!pOOiMF#7bhtv8~w%_6duj*Fy zl6RXk;8i2eQ>g2^&tjMK*_03-zVciEc+x43pIZLkiTSd#$c zQ=-!e+%XnJr~qL@NjylOwu7t_SFgH%OfG)@{CH~7Do4l+Bj_v1e>EU(^-c&Suc85K z*R8|iH!sYE%z4w^M$()Bt^905zGLNS<#JQ2&Fd+md53lva}zM6i%yTzr_GYXk;p#~lkGwd99S8$D*J%1uff8F3uVV=iGzcKr)PpJ+(?Qh-yt!d z2-ErVM^1WsKc&mBowq((m9V5Vp!EHFxD5l|a*?s|Z)8dZ$^_rWAI6Wr2J?_#r-U!! zo(#cgI)O9M6j9j#uABSci;IsxHhOh1elVbp@E=Jf`51k^y)SB-qd)*W=2`h;*AvpM z<9qk+rHjP-Q);icBg7RHD_R0`${K_DKJu<7!cL!loiOG8oh!@yy*+| zCq1oyGuQj7$7iR-1$61mo$%$P(b5u9n9vf?w4lcK0=VOM_O@q<&^kdeBXdRp|Bj zUo*ZCkbgYF6V0 z23QgZ=ck9HQ8W_Q=ui*MJAD78+^zDOdQo}}n7%VGP*-MHv!3+b4%4hq&e>m-j`%;gao7>jwcVGFoF)M`UpV7m+VlvhW>l-R!k0g(UF1a7t3 zlb-4PHsGpg2a5Wgrf`Iv-kxE`z1$T0N>LGUadGG|0LtLtZn66q{@3nX!2#5_?E^9m z3BH!mtny!hJOLgiu^smArNB*U4Z(sT=H(F8xknvj=vgro!MzfZGiH+*U9q{^SWc>o zA=PnaC?_LL4}VK=s}dp1!s*I184LIt|8^D@?fVZN#G9$N_W%6xu_qI+bcutPQ z(-<*%Y|I8>?3S!Uzf+KWx?Z=7&CbfgA^23aIBii5BMUSYJsTdvvgqr7`Dd6=sct)o z7`Eb~+wPF@W5&?$^?7G_MXKJ~*9T@cfk@2Q;ZpixcAV~#% zmE2UGY}>Va_bS}w?WL4`w#%0%lI+`c?sGnI;)|Cr<9@rbl|;$GAejs?wY2nNN3yPK zcOp{CwPiC;pE?!vpQ>gnGrLMDX5W{Rx-(2o53q}vYH_MC%_Is{{DmE@y44-7U5Lb9 z1)$iv$D?WI&JIYE8YC9JciS%=*+#@I#521H1z_jRLvoVKdH^j%Fm7lHMBvoJjXwA} zwe7RnE-y2VsCBu<;s31?E*vMp5(OY{+6O zp2XQVIXGKYW59GO+TL{ewmwuU)vG6ciCvrjrP4 zKD?%cPGgJHk>V8igb3FM$2}nVQJ!ELofmhx2kmz^>5;38%z!IhUO}8O4Rc|(M=n*m zedLiN&!8(_4Lda_1fdC5LD9r@nM>K7eRhc)XdfSmx9BkTOB{s?MdkPrBOb(g6Bk5Y zaZao;nSWBw`W+Pdz6ImVf8C|mM&9$mw4*ERu@x1cQ$o`H{kxOCbrRu92K_TlqJmrB zTtpX9VPRq18QtEwklO|yJ4yaOQ4g@JP|BoR|8rO9RuDp)<+d0uwqGDuNEa>FLiwlUp+I4OETzQ4S zA2TP#*dFIH7&WT3+q;akv@sjrnb8R%D`e>KA)i#eyf45M1SCIH_ohJ?{dI3Mhc4Fp zTK$CS8$C$Y3(U;wc#ro8vG^3r*R5SEiW%0h)RC47#q!c4hi4raeg@79AK93cO>PIb zo1UILwsHk6+JGhNo8OiEn*Fq~kZyhURMbFk-*z)4_^rOKYaW4gkD!6eY3f^G2fK9W z(4oVJXP!QMH7>}6-6{bua15H%3vFr=&nxXExH5w zCEVhYVI0i!i+<)kGIn=!A#*~h{d8)cAG>{m8YDviq9h30eYR+_U~^4svANc)K{hNH z$Zn%K*IUDn4!I^;|GN?Z236FdjHCAz4IeV({QG129<|sLhm2^)J1(J|8c!peQy|m* z<=QIAZ$;ZcU^_E;ESa?6b31sb?}&L#b2?loRM}k4wR6_4y?EK20+Mnia|-q`LdUPT z);J_ErFv%au4}u|prB|B-70)s2(RPT|7zK@wl}Us?62>LQyS)%X7r0;L#d=}OsYEK z?=Qbt?@Q^P<^f1c`qK=(nMWtYIgaNj_TN>u3fvHEM?)p7ey4WG)F7?GuInuqv9{o2zzvT%d_e`NkOD#zQ-jx=->;c zSsAv%acJX{P(L1~;eyTW`Sa($EiZ5A3|=@EJ!8g<;z5I?ly6# zKRE&ALve>Pa;UMcB+$`jblKD*cF!?-#$HLh;uMU(q`P6mhxfBS&x0Qh9_3bPn`=0A z>h8F<)Lq|U-D1^IA@|Kc&WS#OYuqk&XT&m1#o@g?ODZZx?J zbk}w4{7sw23>`~woA_OFh#K#g`j}c>jeY@QYI)58t|lQ@@||bzZr738B6t7Zy-&T~ zyGa9!37=Ova4K|v>bs8~H0W<~U5>fi&tquf`m&Sug3hlcpP&klq6SMlyR+&D);mPL zg3oPz=>ALkGa8x1z;1prF2Ilu9Hr#?tmyi>I*?@jlkDtMFH3|sRdeWA5*$bV(7D~8 zkGElKPWbMLw@wEpMW=;u%7$&h(q)=T-p$W%aJ{Z8gVLIDX$FSI{e9)lZCK#Cm_l^F zgsC86r6{5n4V2DFUshmH%6{|u^<`Kg8WSfD95|Ja^B3ryy`#`Nyp#db={lE5IK{oc zV-pn5p`3%-5TB-qP`KQlj@(6By#wfDqBJrugj}qvLwzK8nF)h~nb}h{x$rY*R__jJ z*S2l#uPHK@Gp88$y6T=cr(d9n0mBos$Bh|-jYz}neDQt@r+>kBk35bAS2_&#!`c{M z=st`6L!Z`FbUdOR(9VEB4z*HzNY)Bkj{JH+n( zR2w+>hX!2;E$w#)2Up%wa)x%y-vG4w7&N_~a-VjROHWQfM&1x^t*~~PG$}>A0S=k< zZx`muY`K!=FD>7~x`0mEvnIk$?^j#9Va+0Nss~L0KUnFt_F3~cW~EsvL6PTBHZ&CO zTF0#yHYjfudZhBZ-L%I2D>7OyIu@8#LjMJ9*1?B3=7~QwuA4Z_ zvWnKHYY7YxZo#51{q$Bfc$GDNsS^6281_MGH^J>Cnz6U{SxiYHuW4qqWsY%L*xV&c z`V{?1xiaFrr*|N|o?b{Z{#_H=p?gtOM}Jsx!7@6h(y7rgE!D?Ix?%zi__Nz(0%ai=uocUJ{_&Ci>Z{Iu9WSE$=Ur!J4w-F0`dM^ zm3LF1I*ngN9u@jP1-H_3FYTif<2F`U<}0nN>`?Y-djBIdBD3ia^XDw5#lI`94`VmC z4%2o|oPZQKD;5uC>qIAwY3i!cd8Z1WW^<&udW{$O z8*3BR3(FtJ!1Vd%;+q{lX3Qq&sP2wwDt;6WHoH=n0Uk`BxPXYK%E5 z<&NOA;Ytu;2AUnji&=@*dO~eUx0d{X=3}bq`~;;~69~EO$7wEPE(L%Nn(6Rnm3){Q z*`X-0#3>Gk_FEt@i+4%Sxb9FcjMZ|}hrg|H2i)C?A{dMQQ9O;*)_6t}vzaf&&0E%w zPE3OqgRulj_^*c-p<8CPlhghhCFcY!b~vk&3)X6?&q-!T*xh9pRvp2vQJ1kXX%q;8 z?dWpRJd(o5{8!lTqmGj-Mi6%vc+5UDa?7i6yimKAFXU3SSX}`Sfdj`r_9$^nYaI+O z63DOjlZ-9WWpL=BLBBOL5ZWsJvB20^>tLs{=c;f~I&$1+jb6IqvID0qb$6$nf8t>fy_GC#>gSZH3T|?(y{?-y0p|r$$$|Y7X zhjxH%p}z?`H1(9$&X%Ra<;lVbjF9=b>cbRc}acRPmVP$1SV209EN%q4w$&2D0)ubcAu*! zI^B@zn(nPwyCIO;TnI}}Cqs9I=($ynPOX0P1luqB%I3cp!n3a>O$S6Kc!7PLG@1DWX3UyZ?y*G)tDWI!BlYPFP-A6(n2A;=7_c`1(>eIVhFTLho+f1_kS?)C0bULm*+cwBv?svd&o&q=4;oky?$Wd{{5X_ruXOI ze(Y!0URbT!pnUDu21ji?nN>)0?7asMoL8@Y6Ptbe_AA^67MS5lXKdoj3Df(z4b<0P zsvtV78N&sIZL=j|Pu;7D-`t>cVI=GVL+wS=3PnX~?A@2OIpxl6BqD@>JVcVemZczTo&n%x-xRmsi?pDq`Xps;Q~@*EW6$gEx7I>U2rM zrbjw$!f7bpX~A7t%sa4D9z(4SgetBqUH=Jvg*+@S@1rC3Oob2CRq9UJZkM8NI_QkB zh`VPOd&eDgGP`%{l&1@pENR?^FNtxVS?*LMTzgc9{!hgZ+B5WLU*fQQ_s&6k&`KYr zU4&N*-=+&(OGp25Y;!Bgzt4BepaShniK&)!Za$QX^41yAIqjCTeSk``^?=?&Mg*{( zmvrVp0m!0kIfWTkqZ}$<=Kx% zjvYI;e`9w=#nV}Qc3C>tJjedy0inwd`-a77XlR%gJj~4KSl3dN^6^akV`CP{iEgJD+jK5rLGxz+r#$@nqF1t5hvlDAT6gi}(7`6}crqCWbWXKGx$dA=ytO5`cg)Mid;#=6UM%>y&O^N>Q(mkcfnRL@OSQv!*~{I^KK&+ z1=?0BX=ub_x!hi~^GG>zE#tAQaHSdT?sdvA#m95stQ$v{Ov;D_1}=!$Qh_G%1(tyJ z!ndx0f7ZUhY|fMA8f43q6Tn^Cli;sAvB4#+9s{%#Cxxr>UfmCQC0vVA%11XUA~8&G zxjh&z=R7CQaIneazTCDY~O{`4dr{ z>8LLBcQp55@~=;JdRB$$pHPCchXbNJ#I+c%H@ zMr(d?r#E}EbRwgeCwyyMySVWq5iBn!39EidaKg9-M(r`4O5y!uY#(Bdvye5RgIS$S z%5@~Sg(|M}e>50PISaFhHj{g2{7FKxeM?`ZPlU0lY53oTtHuh5e!!!&%$4JODM2Z6 zccd_;V`O8g!~~MNcdtDSi-~d7R646X=IrUyL#Dt$rF0V3MCJuDSL)QslS~9puok}f-y{=SJ%fwC9_D|j*VXQ?UKQ$sq@o!Pf|Qkh=+;hD$lhsTq8y#f2c?^`5!x=oqVYBd8)3l!;WDyq+p|Fbgh6${BL zPr`DrlQ8JjHV)h%OO0F9Pqy;&$)01!DiDyC?2Zref!t^C02oe_KA23VhWX>?li8UAPMjFvmpbyJ33GYC z`_Or`_;_sEBtVSPa1|9BnurMmx*_)yP0~BMXmp}U%SWkPxXdUDRsT=#m!{EUj=&_k zPGA8dt1yCZVj_pWzCNeg#)vu3>HR7*9FlD?FNNMX^VUw3J7kxThQT;V$-LZgO6Q1ZDI{l^7TlzlnT$eBgbD*rjgw&s zsrb~eAwytJgz%-NrsfeDoKtdF^w5$`i&fosis7Iw)QN`l!M9nE_dk!td z8pg{qlFIaGokc-UN6f{%5bOUI|2i} zUmjX%t43fd@2#XnMZvLl8ysJ>w>5O6Xh#{alG;qB)!))>v5kBl%_*#G&hl#Sk7xVt zkj^icHM#UJP$7?K*up3={LK2Kos-i9RB44j_8dD_B=bZOXGL~t9+#*YeDMBD&iaSk zi?8UQO*GlEb*t*&!QvHUUVNV*Wo_*mxWuFCrE=~tqrAag0KiAUvAx?Y)1{2MMbg-N zyX*Wc!q{{+G=uz~Jbql7x)7Q_*``##09P#YrUnlhBx^8}ZVhVr9>zBubPnv@yNbq2 zWjte@o2J9avMk!{FlA-sm?yFVSMvqIOxQw!_`15Lar_-lH3FNes;Z8T4kbPttGSQU ze@12RZ+;Z+5X-pU3d-G!Zr@&+y0a&4GLe#r0xI{8eQSIrhI7U|`FqGf-C89#uON67+IMeN<&>wDgIG zbYaj^Az)Y9{ylpxa&-_=MD^81D2K&Y*S$gAN5Qj^Y2qo{tDo8g5+2iEZ0Ti5YscTL z`cI_+#l5UNKLK>i=MsF)sE)Y8~2u|`jx++VRa*#@F*WeqKv0;#n$^%Sod z8FC+5M&{XBE>ygeN^T7OQP!stG%zs88q(*5GxeD8fU zmKFZ!PIgpOq}Y}We{`$7$Tovbu;PY+I4jFc>=NFh-;(hcuCCx7>o%|=1dewA!Wzt` zxFPrgzVusO;Jh49NLaFTZ;p?s@{>OWIR6wtPsl6cL!cT(Cjh>oZ^`@j`W9OD+3K!k z@a8Sg`sJ>r0av&Z0PdrYot-E-c-*d-r+#W3;`Y*$5W0H;sKFZO7~$RSVxhB`$Bw zma=N9Jiuu81(q6T^<8TlsJpI&N*Ep{ZKr{-&qOc2zy7FERjxK*%2z}A6PF9rZ$10F z9koKikFmLz7{_&U>$^Aa-t}n=6vH2`>js;*YtyEg#Tha<(BH1ruHIW{q?`D06C=#V zOvB&g;47=6kwG48!O<$FqtK$6@8y;uhG}rej^D+;tj`evI8u9A?M=n`>Q#I37_3Yb znr0!%PQ_yVqr$=_M&vZWVHu3plcd84tW>p3_5&NL0i=1*=C+XxfWs#U9I%-HUDR~P!wW~-jMB?2T8YnTgt z%~HwwanB$ZU%21AeY?4~^D#EcQ1+z7i3Y=p8f}}gqt1gyARUnS9?0N^kMU~;;upp{ zA5-_Le{$^3jjLo6J8G!JFE2y9o2rh*I!C2>+@?jO@zUxigz>rbX1ED%tiZU{dkd*kos)4(^yDJqIWumE3M}qxW$DVV^)*<( z_|K@0{a27tFe~j&6@KJ<$-GQn+SpoLyu)ezEf-f)9CLp=6vlFR7-_2N!9=P8DA?qJ zmF939&c;-UcS14|9DBFyd#Z-&rN;vIo8QiznI=~YT6h1-Jc32tUH<72BW4cBXb^v6 zB8zy9p5*b?{dJcvSps`Kbl9+++d5O9J+--DChUYDRWa!$?kkTRVH%x8KM)ohPOsuu zay|oB)%IGnM#Tgp%Wosd!Ji~FR^BzgX-C(h7zQR|>80V(5fN(R$B&;z`{K_LS$P}% z6Moa@3vTJ)HdL7B6uHL?CtpzQ@{#{-t`qVU7U@Y4Hhj`!cEPTA>C{E|LbOpazH+8)1hWh^#SunmGc z*7UEtcI?`fG)?)H^OwUNCI6OIFzWr&Mo#TLepM<&|s(ENO zxR3XMXJaa&#R0h{Bgr&Z5&fsr$o4bU zg3_d!>v+lgQ7)wIs3m%U0C6zRR4fk(M%t}SLvck>gs)Jj=M>+V( z72X4h2yJUdGcL*e5ZPfd#-%weIR?W-5gUcvx_>{mxK1l9aCb5i4m5&0(h;+SjC!+f z4BGa{Ar;Pwy3qQ9*>K&*jIB~tU4b26%;#{lwH-K?TEe=|*)wNyVa=I8^6=@?)9ZW7 zZ)MhzBZGjB4i#&X9SN|#UsiNw?Mk3ON4tKNv$L>&GR)p!y>a0quj)tB1$XjR5cLFP zN?Mke_c(m?=ejG(>zEgPyWM=6_V$)q z*8a`iPqoMHEvyJWpYAy5aHYerYunzJ7bK>stmatm?Z>Q;lb~jwPwFE^R3OzCT-zA! z82neL+f(8uWA&HI2m!@*81PJ@mJIF46cBMejBt_k)!X!u(f9k-HoSeI5noVA>*F7O zP>WGy#Od_(_1a0gO=^vElUhIAu$1O@mLgzE3%bWJif%@}`~B-djtnaNrNYI{-Ca!0 z5^7UVyUD_Kpx`G|JM+#)#>S5%UkJ8vG!!Z`?GCpYnZ~j9cXqWD0*)9@=k9*h(Hk&? zJ@6U>+=w%L(OUuN=#9ngChksUnJnGPdJ@)ZOpT2{L6zM7*=xPl=+V_Qdv)&Ek%VqN zCavKOtwzCBDS3~w_Zx-dHqMKTFXZNe7qU@Emor)zj8e9bbfTz7Zq40V z{O7i9Rg+1fqlpVVIw2F308i2SHJgW#=?H8gT3*JN9~JwX$I2(TPoh*3>XtQp)6 z;b*X|Gck)CUfcI41%)`zFO{gncgDZNB(S;Vp$_>A-HZKC!`~!jG4D&JYcMJVA_R~g z+rEAKhi~viO4YCNscihPgd4k7tT^RhZ)Z0gsFid3=1p2mgZ0k4E+iYg{+s>A|>o?&IU%Rv=lMwOpI$nGYW_o7Xzl+;Oc7 zWl7tMNXFKix@fm!i27Wj-rWcWe=)N_#_4g(+CODSTQlg^Z^w>9nB=ES`NP2tca~Hv znh_x0BFO|H_g6%Y8ZbcYv6oaC%)}N+{Bx<>KcoiR=cT3VO4GWs$L?E?Jap8va;97O zq^16Teho$6zFN6eVT|!9KXdNfJ3$h=6sN%S)EA!FxOVNHUjE$O5;|&S=c;tcMWf{z z$zlXs8ss}O5}1pM2i$>PNo$?V@)~R{U3CD(GSjTonrghVnCtBSHhhkQe~HscT6&2? zr_^k(uYvNk-p$tL;)wf#HAC?#4;{Ju4wurLw@vRR#;{3J585LF^(wck!_71`zM9CZ zI|ai-7B$tzLncODea+=iytt~evPk&l(eTT7jWM*2@oK!x{J~h0eg_DpS81JeE1NN) zv$W)g7L}}~8RQ>RhUq=4>2WJ0ipo0fVt=U6dU3yLv(v(-sqw+L#s~O!M)(PPH$Fl> zM1cd4r|4VL=d4YeX&kOP_RW)8QM`~@WmD6uW8O*5MM-!*YVY4hFod}Oa%Z0!pR)85 zJW<=0Q}CLsD%&>Ff?MSdg?pTcM_;;z5Vc^kR}>IAYjmqT+8Imxq6?bGO30)y_`_7xxzy@@i!so zAW^gL6y^Au{oP7~NN4Lm3C$`esaBiRI9$XnCb%mivt zz*>hgraOxcQ;UTQY2|2FcvGhh+WyFK;|~ASr#Y+M=CF$77?dGmITe)hh~Z3hO3c1>^JW1TqeHKJ62t6#Mzl~nte0q_Pe7Zx zx-eyANJVUygdJ2II58-Xm_yg?kJeJkd2+`c<{mDvUA`O&sCK+MOb*{XQcr>BkmT98 z!L0ZMRLt_A?!O2IKp-0aQQPBq!7%E@P)Fjz#Ytj4Q0vg_iFMbzur7}XEFc_2x9|trnUdj}#4lNG!tzQ^HU}m<78;>;FAza!O z&tdio2}0oyl}}3-NYYkQbVa}nWXjyoF*F)LLA-henKgP=S6QqlD?vQ^2_uEPVw-|<{IE~`@ zTysvy`90TR0#gUDIXaBsvegR3xpN;3Ol3_ed`VnV)Tps;mC(m@q}c0=T$}u@AsNC% zu;<4;xMAxX<-(m8zqjjG$ADkK$^}8@c*A~R%(hrsfF+xIth@zss-){z*wYc9Y5&MM zi!+5wvTX3#>s7YesDnqIz?xdh51v-K3`*m%j*{|g*%ol>} z`=F2zd!3MWiVmZDV~7^>xn?$>OCU0rTtK0Y=&||O#06Xa{PUi$gVPB8@*c&Z$g`K9 zt1H|UcdUq$>tSMY^f&`e8@$1kJa&q<#idoo_Vy9#41l`X*aass*T=ZOJrgdjfEeDy z%7~@}{umYEl>z(F6JRs)kV6AkQ!%h#rT*XG9`MNB_2*Od&v)I(A-MzV0e8PnQ8MBA<`meftyHhi^=Y6hi0o*RHVM9O2JAL*n4prJ@X{JmVz^;NCYRKlfH&t%hjKX$< zl=JWI@Zt0d8#@dF*Cxrjkl9B0Z10*oYSCuu3hPDd1h<-pGAfR5r>F`9psw*zFP+oJ z?SnGEGYBBTj7R6Ytq+~U<%u>Q4z%Y@4FlokMOPBHQ_?jZ?C3pXMjD@)Zr#qZe&+AY zTsg+GX8ECrp!AxXk4v%Uf&^!AJA%v{g0`gl?pHC%-8QR~D7gTI2kBp~f zfqkUtNDhy~yzKq0iQ^K<#pKJO{;a@$GSb%n#}=HU{9tM?bk`?4fhm+(| zQ1cENJzAXeknpgu5>^kfN!%1p(4hg%-+#%;gIowD6NIFc8Nr7ReF0xyj*2o`y0=P0 z@Ss%GVq3d-@MxCqZwCEe_a--(3>`5d8GOtfvU6oyFg<*kD<)ji(?$L9kuf#YSATP_ zYdJ~~?0uu?AY^11(+B#rpzCtZCM8XPue^U<+y=xX`7%SS(wO3n4v${Vz%^KtUE8-8 z2e`AH$I(H~_djfxNnk-iHQ^DM;XVMaOD%QvI-Ak2nzGei9)5CZ=tS8a2wX0qG?P zLwq5KhM}yjB*VciAi>si96fR`1D?cCi7P=+S~%IT$-`GO*`?Y&QS6RM+?T?bp$#94 zuhXRgk!jDJ8WmFn!|?AYq#1)Alv!?iz6C!1j2~?wg5sgqQ7ppxs<8fFUqd#=)QL+` zd#ag`tqjFM;;p`2tKa(O$i~7i_eMS7w>9sSy?T|*1sQOw#y2V!y5=>iS$(;~#+QjF z-*MLRzi!_A72I>N2Vj6G;HrW*QS-`eNQcnSP_Y}e;A#=ZuYs)joh19R3m!pJ6lD9| z5?dzY3rhCx?Xg}uLE zYyhZW%FGE=GLXMdy*|!`%&>_6KpW?Z4t-Nzw_tu!mh(~(vH_!5M-C{h7~MNuV@ZYS zf4Bg)JMFh`I$RN(u>Gh>y?0@r$MAh%Xq`@Pu`ieDgd|rTsX&0XT$(@|RukVXpN2G^ zcF9Vz9@m`gN##A84OwB?VjRx;auYGckP>*C7)&i`sxr2fD=4c4(C7SLGD@^eCi_6- z?e?AE^XQNNquG4ESwU*C6HG)9x*NbmFH-{-)<8jam7VyqZf$4WpsPd7*K{ikZu%5#yQ80B-&rH`c2|Nl;&bpmE|yd!#0-G+v@u(U&zB;TM* zMT~4>cCdD*+szi?`G;no(ig$SGD5!X4NQ;NA~p~Zn(g|M{}k$5LhR|T{;4_XLG0@E}_N+e0 zlaj%WM&29ZB8HYD^n5;@rpkcdhO^~xOYN>K}WSbHCs1+z+qSV&?6~0I% zP;Wp-w_a~#?S+!R7s8zfmddPpoL-2tQT%&0#&{zj+LGv-et)O~gfNYxX^S`hvqtit z{eJ=4=hHt9I?R-Xp#&#dM&Gd~$7^!yjdrKO&C$8*gJlqL8Pv%J>o73OW^Gpwf%8xBJg}S}7^8+@83_N2Ia7x~2Sla0s zjU-$PGIZ#U=}hWWoW?~gJjM+%fyH)YZtdNYYkKFRmvA@p&Yu5P_UDLUy~to^v&99g z47r1`lbp`|ciM^Q0i1wC1CCh>P2>y3J%s;(8a%R=n`;)yh?$h9i?9PRyV(&xYTWZN z;-Yk_q&o}tN`{^PFZiaI*~FT!b#-mNG?Il*vRO9{J*q&IaKXWhQ)ZJ;6sCxlZ{Z4| zlD+He6}<@Hn%=?L*%_GNb746@gP3&Ad?KwZY))N{VM?d)vTEG13y?rDNLimtyK~2# zeVJ8%Xywr>KxDyzl~V@`ae=sDT27~s0Ia%>c_(wqe}JrLu?@6NV5LIH!^Fo>I8JDh z7Ef@o2cjI`S*+bKq?$^XWPn2JcAcw#O{(JVh(!1GT%5$v5WZiE*}^4DJP8ZTR$MF? zUy;vvhLrmsZvaUV_5UAtUl~@_x`n&cZGxa8NGU2PN;d)$N{Z4c9V!jd5(`iPrAt~u z8tFz-L0Y;OC0!EI%^ef;=sEj7&;5VrkL_lzwPt)V;vMf8BYOkL$)y(4(y-qMm-@|{ zA=1QuYoW5?6(u!1D<$v>)}f;=G%}W*J&lDG&|Q9Dkd3-1f#Yq3@WyszCP5^EJn--uqNgcBW*=tLQKiQ4Fcj=eN$7HE%fE0 zZ9WN*9}FqQUqjjo?3x9LrGf9_XRX;u@4U_gH430H$l$xxr6t68g#z~V7$DC9Ukgk` zqix8w2Vzt))Gs`+{$S$gLCT^bu=4an_biZ|iAhP3;H$Ae1o>1T;!FVcnZp5zUBeI| zh5{&?*ab$0IJ9ws?~T^MUPDSfzj}4lvK4GKwNt!HwdD4J=RS-5RTQ1@GUOBhA^_P_ zK9{-VA3yFrNHm8b0w4SmtbmT^RX%Ku|yvf|44{AF8a>hH4TJOaOKUybg+x z48kK2OH7AUsK>lOm&fH^@rCn+HbM02gDovrJz)EPg?>1&=_hI*E&yIthXe#cSMef? zRR=otfu=(Eg&%+-KW7T8L7+_(n~n-0 z16&^E$qW7?04no8e!N>@h$K0MH$GuXJ`RK8#ApIZuqGuxUGJ_11_v)dZN5XG*;5-PKLb`I0!qVb zE`mQHyFM67DM8}<{%rZ)LttzFSGdeL7X&&2&q2g-DPK234v-8;FH;4;8;~QILP8JV zegaow7b-Cz1=wd<2(bbCD%{`OMkDRjP^gwsq$=8%CxAf^UPBhXC)v_kBg8Ql+aA)_ zZ9zPI7HVhzO2p{{%o{pVEyE^4M4Q=9z>^RfkBkKO4GDax=6~|9;UpP@a65tqBAw_U zH$Dw&0wU~v$kYd*I;H3C^n z$Pk{72LAd%EXVUCPyp>mz1YVhA|S~R^s6DXvO!dx-IDtT(v<;ZG2m!>NC7VB90h9C zFYyebh5-wPy!$Hcad`EE_Qbj)^V3pU#k1)_B0gE?APB=Ho-ehaX;5z(TUyv(Se^CO?x_`?1%^JBFr=1Ql2Xp~J>H~F4}dE^_zCWH2))n_Y-lVytvTO}Np4tkgo#&URe98`#Px>Di0 z@dyIh(Y%>iS#F-5{ZI`p0SQyO!E~ZdAVqoZ+L(bM3sOe7Q42D2A@>U*I~@3QnOFXp zJbVgJtYHu43-Uvhhgjg3PEL@aPVXjg9r$BWYe)_cq_aXC*_9Pyxsb|_kmM5`w~*o# zsN7*_>A4HYZNhC=z^Q=v0B2i{-MV=ntY!x?0K!mOzf^IPYZwEqG z`(u>6u$H4Uw&6j70C@la8!>G#V3V@}Ujv-}4RB}>UF>8UU!kGVqx*oFgIO0uvn>#*okF zJoqb^AbQP#TzQ2b7~>el_ekmlM4n!sFhwE}x?dU_=fG%H`eZf^Tr|LXwgI}_FEksk z2YicF<1KYnSz^f^9XoIm`R?*JB)=0NWJvvJ905P^1#oG=+ckG35I0lRPK3jKjv_Fe1=7 z%>Wia9+6fJLLg9QMeHX8ijhx2((GyO@9iS62Mf}_BOiXND`qag5A!tu-isB&VE|x( zlISF#&R@tb4MYR1PQS|djRkBXm>)>Y#v0-iXNi#=0*Pgi*9sndOEbcEQbJro<$_!f zsB`5Fk-fKXk@DyuiXrRj8bQs7mAsKI4x$^Q`w-&;#H%`M6@vR7+NUkNw*o~Q#TQ|~ z2w8L`!4U)$L>qah6O9TJj{ED5`v5SpFkJJA z(#g3l;DN)F4*814L%tL}E$uEsHn_sg>9}W)Jd>+}n$6Q%-)pc`I!HMnN}dXS1%Sto zKK}EW=@_zd4h|!9His$~^{Np@Be zdGWn^TL42i2iKyc3ap2ghlryxvAqFCzQa;L6s!~{D-aPoLwj>W$e4?9!z#+nWigV( zL4|nVwEX>~Es^`1QTx5{sIVE9AH8SPuGV#>bX+eULf9FPKqze`!k9q$<#e@DjISFW z2?+!m)e!$3rBMWTL$bnT?*4SP!Q&=oG6kZqATridY#=p<@~U`u+j&8&ZV^G42s)Ux zZlvu%_5|qAXmZ4T07ohfv7q;02+yDx@X#~ApX+lW0xbikfP;+<&N?mxSGeXxAx;3h zdvao;{t1)0&f*DBUak{8-;tLDx^%7wk_`&3ECfD*ZihlKLo8MwE2oK-h;8B)_;419 zh&I3=C>P&83piT`q8P>CcL2e}4Sq40BO#o*xTflKk=pWZ47yAij z52#0Rct(p$jiHQ(D!~z2I<*i0*#f2&l@JQ9O0&Znv(YXBm;&|UDC*H)++*EgU`zl4 z*5P>%sGSDgNM9^>;H)6IaDYL;THPuDaY+x=SHVKU2wu7r4CqVCVf+deivIFaJPj6=fl)%}xi_q;6OfMwp!_Wve6;y9wIf!b3I@pJ4foJ-w zXpJr?hCqZl+E`!TW<`(G)c|Z8Dmen043Y{0uhEV$P+*n{LCXoNR!B7E;sS3Eg^Cy* z8$;T3gctq|paYw&_tU6j(&KYm2K%7j)@ z!5y%|CK1&khUBGyv8aG@()&wea>8^hAlZ$ub@VQQ!~F>?1Voj+fa-xTNmJ{4AoHx@ z=|LU0(?LN5ohMIr02e`G#e9j7oa9mM`K)~*TfdVEd7@I}+8RLF!;C-~PFT*LpFnx> zhvMR0T}U7YD5J+wAx?k5)T>v3Ik>;;xIY9&DXeR|xiDmy5R?yK+N*FAXQcF>!)Ajz zG$$1=z60nP$ajdlL0lDu>Vk4fTM$jsorSHKpBFlO6M&z}r!U~60ik$ly~Cjig3RRn z1Acu-1LTIlK*ans+=mWgP(rEO#rUP0wr%1pzLCP zB$QP^f|N&&>2kn%Csx=?VcET)0Y7Y-928$iOKS4&fW01n zy9s<`dHI{L-&c}g)b z39MeQ_)vV8TJkFpl+DN}x)ivvLU8Ub4&snRGeQD!qa$J@!2p8*MlmA=a}c7&MZh9} zuzD1Q`HPji+c5-0AiyR+sidp!!17xMJLcZ&6NnS?3=+R}Pql6%6e1)93Kv7ER)X;W z5sKC>%oCwwjWKL^lL#3B%mi4#pGP4obIgeG#iGU$6rW?fS5<4F(j!cwpPSQQ>60z*1Px60|?G7ZXl+b)4|SCe9d-UeH1W!Bu|;C1_k)xbu5guv!j|Xh$dxotB*3 zdJ)_u2>B=Iz~m6FmIJ^7Vs2vFkLV#q;rm}0O24@M>{^k=03l9 z>UCreg**vA95NXr7|~l6MyAtkFi=L(?U#Su%xP~NT;H^O$nz)Sv`B)p3<*%$5sW=| z;Bjn$6hOdIK6YXbvpC4j&j-W!!$kSu;2_`;h-mN$yhfk{egR@E*H>3h9PAG;;)mXe z#>2;%wV*Z+<`we=$y+@8 zU5_`o<(FW_c4kw=yPI!ed+#X`ME-LqLS{9^qi+Ho61ZEls*kw-FTQB&P} zVE-VDd>CBd9K}l~!?hWrt`R^c-E29)1YFm3j}TS~{~m1AZY}Ub(rKZb7kJa;@MX;N z`F;+g;R6tKx0(IZOJ4hR+#@I-xgQ+~TMO}7`*KvM??1!#$Z#VGH{wt&KIr{YI$jHy z1{ec}Z!P9A(#c?LItfOC1cNNzL5MOUdEmefylcAxP*0k#_}Rm8K=JWv6_#-yR0IQ0 z7yiZkRD~IUCe&5>7%<3}WkP$ZFWFN>8;!t(ygM!okW2QuxA8PL@gq@Y^@?jUo z1v#8x$NX9?o`_AMfln%nnmYFf`&_vMMA+`b*DKo5C ze~xP#ku#7TMsyYV?*ILmV*K-#|Nh3x)jt#Z?@w)gDWL?~t=}K;MSX{YR!wPP_g+HR zy89vDfw%zAxuQ2m#unmTc>*<+BEGvNjO;-%M)W`<<%tK#wDMY+an>#sTO&DyVWsJBs zBs7ttZ?wVpK#mp7_w2_|d@0PTw|)@7yuQ4B5`WIH()4&s)F09xUzApT9FbA0_wB=| zbBl?heNXhKQP^q7)`G*S?CtV1cmQLV=OIVWvF_F1SipYi)K?y<<)M483ts^Zbx(Zx z@+N{~=HDDR;dK1OuO$MTSHU8?N}g+k5DyRb8J{}4asQpxPX=}@NFQnt^T^Ti#uMT< zitfm*%ASClywA%Kzz{G@2O)fX#5h;Z(sG#+xaz%Ds5MsWca+cZFM97( z3^NOffD?fnQ=xZEPJqDzWC;MH^YT9FnPTPuJ!U=x2DjK7gP$5nM^>HBB^UC9ypD6I zE$Y8y6BpnsDy-S+86dayQBV={d^BTm6ac;3Dv!t#^ny)SLaZ;(c#Xt}-mX z1MC21dI-UNAPC6d=no~jh52z|Ya>TXjpFmcMH&oJbsdfN`NOeyDtm?)Uc>zDi5VTxl2qddRM6Oa23QF~eq%_R6*1R^ zrigd%zQ3J;7$eAXBx(u|eTA$>o<}+S_K?JvYxzd?mg`x_9Yu^u_*(Qj0LA*FYtDLU zX&8D8Kz^P`;%ZB|Y0+<;=u{@eY)^=fe}lN@cpvaVdqiYBNjdzp_+bD(Ku^%@x9 z9YboOB2}>uZVl_d;rU={ zLVB|}%F20y0s{ZQYTZCAoP#48Hw+9r2wijae{0G8+H(yiHV8;jkX;;`);GcQQSP@D^oaK>fKS$JNg)UuO< z&k5^a_d{((!;DIEt;%nMIUE@WTfzYb7?FPukDb7N0l^CA)2hP65W57-9Dxzw;8WM> zvdIBA!u4RJ4WVpH#Ta!DkZurJ&j`RTVruHH7gqS@C2q=#@6n+C3jU%yA=;H5@g+Mg zxd_`_0ci2qq<18d9jp(k9%y#<+kJ#MBqwmMAZRxnP7WHtQinNL+3wSA4yRQwd;bum z89LCVMzJ}*SF+#G0ua@ijkaA@2R^p;||Ed(YA{I8xUx^)* z7GR2P0BvMGK`sG!C@nr`2^p?}`<09CiB?5o3{Z6Mmn@8SB)s!H+HJCN=b$td8UytU zKM+YV6-jioseLIs;1_@w1bw-U-bM}^MiL2@0d5wu<5YdX!~sn8s9Y!wm>U^60i)JzUPH6%ruBb|gt*!jOU9L*mGg7KT?{ z?T_sNAvbr;a(Hr$4nRSH$nCPnwMw2_gAajLK<3V)THdn#ndMZFEqSc=Nvh2H9k(XZ zVV+{LW^Y};9usjEP-(V9U=$hb6-t;?p^UEf7m#4a0g`Zv5@3!zuCMt;k`Po!d}Pj% z*;%BvmC?XmV+k1&9ID!=;~Ia})-i2CK?yzS-s-dnyNCyeR>CH~4 z3S)v|!BtiAMs5njj|u;EH@vRd!h>*@-&d6RQ;aBLpbJ#-R+undHi#l@A z+&rrv&w<$h7eFK!E#TT*92{=d+9&2TE5o74B#2sM;^BxU!#Z{9#aPK>C=5H<2vV)3 z){h)gK3I*?yxie(ZS#ox{D@uSvlGnU2NV6y7ce??QO8?|A3r|41YjuKJA01%X7k)f zES{{sk~)d2*471*DV;ZcXMs8JsBX9Kc^L;LEqA_*rN!-&jvVV{C@1j^!Is5iC&dkB z5hFPA&dQc!RPSxnXKCJS>m19a1Cx63&Mkxby-9kCv%k*6 z4!_8%;p+vLEGWuZH$l@nIoy7N`MhsEJqWQddSZHA^^G>vn%h)?1C#xdub<3uTYM$D zmywmDdgt$M4udz9=K*97zo>?DC|f5o-0-VtW7jF7$d(DyU#kygo4nAuUcOfjG$qx~ zKgZ9;+WQ~34P20O+_h~-((jzEX!pe33huT#y~390up3KOw*4j{q-=fy?=@6WfT893 z)Vn!sO(n*-%X{T6&$ z^ky79EBxJ(6EOOIa^>BRhTmJ_*O34H4?KqN@4r`0OJI}kd@FZ8jhf0W?^G>Ox0a6% zw$t)$WX1~yvFTJZwy>&z@3Sd1An&v_*)YOA{mHze0{XPEZ;O)9aMPxg{om>uuHau@gL- z5 zV8Gc%=pFm}j%l0zv3h^M;GchO|EII>pHGngy!yXBM76yB<8J=@)2VxZHtWAX{eO5z=l)o;|Nia&7q8pGoQ&Tor+{A}+Cg<> zMT2VmvWwD+Sbf-xt;3P+n~mG@YC{{sbq}$BzrKd*|GJYctYgQQUH3g|X2Y$bN;K6} zUX46jn$3WckN)kR-Rf%U`VmPk?kjGU1CgsCT=Z53St`*Do%0c#{d3dRyfW4U1U_z} zoyxDC85=rUVzB5R+1hSAOwZWUvKAbwuSup=yfZpJ3_o^U^>S9NQYgO5EvRa~G;;an zykr30R>jv~l6~j-bo>cw)r9@%7o7RBzaJG99s0-3JUnUflB?!S{nulrR6297-j7%} zI}%bbu14mkkKVAvsGPIZG=uuh{we~L$sbdQE1u5}(ooa*rKysepEKI;d3@W2-TB7* z*LX1)nx8cM8{#=%;krg@&pp z^wt56k8NM4*qNuZ64cjce^X6A-^$ebR5q{5fPbjI^KNLsNI4H7kNkfg9aZ|@9jxF3 z3zw~!_hzcMPrIFFqMqOnM?Mt-fLOd=PLXti(cU_eYBw<=v{J zNR=nU^ODOoWI|Z&+#ui z>F}f~pW1snH3iZ8uS#4()jS`Dy(^I4J|%2sHh#npCkAhZKB_#CI#JB@(m5)@()&gu z`LB&G$Cc7mR&=446s64av(g*gRwT>NjQm}uOycV)gIp$c*W!&eYj=Fsz7~a8I_BNK zku_IG-(0sFYJC6~1UDsaR&%OMccF>=0@jfpt5g8$ytz`a%SAgxt_`eb(vn-`JyJ@C=n6dRr zg`t&4?6WjV*ml zOYPE4MlA8ztuQaPG*V-yR1H-sd?J0D!owB22svVD>>K!3!`q9GJwmS*zlpKv?ay^j z7~eh_^oZ-~H&zSzC9dAqE8L7L!b!{4<3vlrahg(JR3pESl5SV&+>i2%rBRu`HfYB} zlt@oFqQR@E7(O%49Y00fDYwP_YB6jAv4IW`jidj1vm%es$CgEAYcnq{X@`dd+>{CD zS(sj7Gd8%aCL?t&*fODt&HbZ2I+-&FUtwTN3fVbNaAF>I{y*HfK9FTm7$$4oztftDz7j^ZkH!qwaE!D8rHCwwiD`9KO6x_9MK2haGEr5voK-2IywM(Pgvwaym_-#Fn)yd|i+lhx)yG?+hP znnD-C&Ytz{Oz0i21fy?R`Zt>*N{J zw||X5(TsTkY1?>~r&_6g5uXp+Hv3SV7-M#s)q=rtcG~$JP1Y(7o2~azkNsZWO#FQ3 zANv=JFR#58dR%Bf7}qQ=z~xaRY)WHO?O&o)nawgbif20i?5A-|Hf2vAFjz5-~Xi;0?;&-Jq z=|T}f2^r;gHfjo-LN2Rbk4WV#^X`?N7Gfr&Ida%i3Kcf|FY%#QE)u;#W`1SbymJ z2P%weQijg<$(|5Xh2aY;z4yjFiS+Q#VvW8+3lR>bZu#?^(9N8psvkM~0V_wT%rel% zAb$f9t_B!#`!cGS+jzpBeJ`Hpe9N^9`)KPpVW~PzNXR0;BCj1gG-R_ee({05xX{Lv zSsp=oGfNZiJzDm=FIq=E^|Q}xetPxvgWJh;teQdz`kO^;#UDyU_Px#4e=^KkcZ+sx z+Tl*mKK|lx;g^RD(ud@KEg>iT%B4at$|Y@8XG_&V_2_MU z0&&LSQqGhrx|Q~N$yRN-@rlmq`c_T9XQkdQ4N-I#ed@gCcq4+%tdlC^3S+kkSj)eB zFi!Um^l-bms;N5NJHRh!qwsS8sU32ERmPnYl?2xs8iG#dhxoB^mn-|XEzfE#Rphl>BrNb zdqjGz=|@vhA~mJU@q){^EL4U=>@RUKMRJkr)eXs8ljalESbe2wm;6`@y>vv-t52p` zpK9N>^cS<9pB|>9T-TXl_P-l@Ovr68CY^D6B625vt5uow=t!lssM$Q0R8YyX(DN8N zndBdD_ktDr`-W%pW7AH~-K@vN81|48Wk|j7@OzjNwE`i zBlaWC10|o_o?;k+m2I%pZ{hR=h3Dxyi#43wv_}gls;Rbz`CTjDzg|~N?cgJRrM@#U z;)P2c#_oz?TqOoOk|Q8rFv^YmJzK(YFSB#18D)3&(!S1mjU$!}$NFM)Xj{e6U1n~M zie~W@f+gF5@ZR`gqI5l*(XqS~Zgc6TGg9G!GGQSd8!1Xf%`taqXOrpci{q$o-19*4 z(+>})!M`#94^O4WUFY6>n@?QE#F6wkx;iwM0!{VBaNlXZ;cM%y{hh+}Ga&=M?y=Gx z)WkWr4CAcwtM7BWZVJS2pIW)a>cXL8Io=Y&fUAj~8R;NLGei`U!=>l#A+Y>fmHRzue(s`Dj_`AAo9!v9 z(9TzON>ojC%yA2wid!|~vI^etOMd(D?pC8WUqnHvMya*004epIt5;GmF^|wmLHr%pWhz>Kj|R&2 z)V~Z0_dcSO90L;S2O82PcI{^ynV4Wg{>iP6;mG|q>gmN0uoU?qJc638O)lrvE=3rb z*}BTm*V(fT+WtO~-dC<^Fg+F;FCe;UqFQV{)4^h7FO(QH1B|+XjzIF)1jSe>GNcbx zf~?gG7-;FLtKM;S4*6lVnufVqn2kjGm~7I~l+X*EocQrDZ1k3m1)j1`-0Q@nY;;i( z=@LFgYJ_aDEt>w_Nto;$>u{5qi_5KLvSi6q*FVM#xNO;4NjmkG2VqX$78CC*SJPSw z%9HUlvbgz0TeU3T!h@^Gr1e(o>X=+qR5|Up8^~tN{}HPD=A%aWHJY1O1)iv|^L{nzVtTDoveUQ4zav6xGwtufLFaKqJ!syJaTK zhkW!c5%JWHAhqf6l5puOVNaikRI*ib5`W5ALX5!+<2J{O_#%7vEYmNTbDh+R>DNr{VMHGzr?p?lP|J1A{GoOsV z2iN*s3?o6@T_d^sk3F#cPWp$Y6r9MzLHXA+;W!YnzbLWeGG%M4bNgiJv9|wX_1y(D zj`xmzXh|;t4m11C-fKbaVkSO8%R)Xf@*5LxltbLjZ5}Qi*-iOQSisZq;#>V|F6)Kq zJ17aoKgr38@6B9w(&{bZNnK>7JY-pQp)UW02YG-K!x;vQU{{8-dp@(Ld=1fgj zFWwKoEMr%~P%!R=vnHkNRla03+UKZ9n=G6;RG9sqy4p<3)o#o4oPJ*Bw7s*a^31Zi zMS0cz3m2xzX|BKbI@Hk1xFOi&rSSJ=+2K9?ZS*He0^3 zFmX+P)+J4~kEBbT$1x*|aB}e3*KhBtuDxC#)8(-X6r3%X9+KwQu1I)0Z*ALRS!ogrg!8p^Tj>&-=(gAWx&nVu*r zvqw!b9vz^}JXXOPgaNxC+C?KD&;k z#>7zznYx|v0NMCJBsbKCc-ml0SV zq4VX6{slE-Dx_|GsTu{>DhA2F3vykvT(a=Ph|C!_z6b^DHG@{AhBNyvW9Bhm{U zd9Mq~&n0gMdt)mZiZZ>+3!K28iV8pNu?u}Ue;s@o|3b_nMn}fd33U2~o{eRvPMxnd zA?E(l{>3;XlZXH6D+(HcuHi0YDGss?cKLCxpb6c5jz}q!jQ4|IcE?=m46qhhW!LtU z+jdB_m4)tl@0@(t8RX#5qnPBn<6p6HxkCY$Qn-r1-8q&LV=I<6r6@C2lbUqZpj1K@ zUm1@;laKZNt?~dWpa_9c$myf&q-6#m;2V9GwG$!Q8tKc?zlKH<>>LI z+WE16XUv`V7pzsv8H}`TePvf9ucYKB=I@6}=FCbd^7@sw?wtF( z6muqXdD9Ih{$!7>xt3R3E_ag+v{j=UTYYBk29fI9U*e?Q(~u~NieL!!YIvv7NT$ga z7*m$8^vG0gFtT#I8?$ltc?d!NH4dttfpo^%XZ6!lUJ5>Q5)TKgqL=P@%)Mi8SZZT& zB-WpnTz@baRuE-aRI}k{MG!yM-&6W9>L@dlZr1TH;_hv%DLB(IlGR52S32+?E1>VK z?mgNiX=9|&Et#SrQRXuEdOcJ?&Qyq`ZH%EV?{&9=RBp8|HN|N+^(WN}!Ffq%*2r4A zk6g<(wnM0uhexW*|ANMx4Sn>+WetlWQMbkXNI$j}y18JKZ@eUtL0>t`;y09rr#daJ zChnI{Ohmw}`dRe7b^&d}N@KcFQU*o!d?5NfkGutu+|M%dE!%uYKH)5a>ZN-fI7Wts zvpJi(*|tVTlD4l5WrL4DOS-tag!!10D9X#LqGYv~pfa$Q&}O>ao$iLad}VtImz-!8 zFLDkqGQChLC^!$TquDzkzb-eJaz`y`Gl#$6?$*rPcLa zRN#mk@Tv;=%$j2Fnb4Euai$?R(6Gp08~1vLRW@Iue}(H4(hM=v!II|Gj0`jS9z%Vqe!N_i*|mhOfXhppXKWphs>J%5!pC!E6Qj=l!O|pc zbOKM6dc+snsZ-C*X?8^1=TEKr{&otLqSNi^rTbQ z*py?(>6Dm8`+IT)>s54Wre7D0LusIE(B^RX++bo!mn0QEJ{g_Wxyyc>bqQS7j~%26 zJ{5A!My9{Nh(D^;r0Rm1YDi0`t8Fa4{U|n_rY`M=MmVFfDGc&JG*we~m8?x&f*a1A zM{bRG2t)0kS?dR`U*~Gw9eZO%)*a}dnfZNizw18=e)liN*x}GCDpz$Sz2C-|brpxd z?!%qPB)dL8ID3aX&d6Hnsi4Zhr)j?S`t7CS>iLAS?%cAj7eyj-StHGTwU-%vqZHiL zXrG(Qxfb}X=Gi5RixofnaYb99q*Qai+HmrXMZOqJVT$x*fpXfPM^~GpuBr~b%r&wTq<^yu5LAmcd+F0+hY zvrTXIhQ`9}0e*wvuth3Q@AAb!^Ni+n&d0tf`yxNF{m$Y&OD?uoRd^7`?`hN`|20su zzcg{%;0FKYxR}>Qm>8?GZf}@`_1qlS4WAk&wS$f%1@Oyr$QrcpdA}~w_T>my@@k?RbDZO zkGd&^DQIr3v#g$7=6cT2GIwI?)U^Ct%O&aWod2=$xH5ZBP_wDmSyGR%Jj**ZeBt6B9cd`MJ_&ZzN%j zD?V%S^=FAg7q#TOTqx*U?Y$Ur2A3(%N0PSF3|FYOC{2$|<3rXb< zX2z~+;H7Aqd}GKcj{Jj)W&jB%6(p^RdVWU#@Ka0$)Lab zXv_8>)yoc#7V1Cjz{4|6owvNxltawRvq+itV;jHtIFBTCR0zdTug+E%7Q4@Sy(DI9 z)5O{8IHo-C3Zgi ztZp1SxOa0dVR=Pw6pvka%z0jlt)p9d2s3Z}JkTRElH`*MAmnlTS_V93%m>C-ich@o zxQd?2l}pRU?}PRH$Yuhjr5YoB8vfo`J z=&Z6Ikh@MhnsZ4P8Ez~c!QsQ7)VR@UH%ZIUK^Sm7 z?pk;|I_`cFe&?l!51cTz1&vK=%L`RwabNg~oJbMGy^+=FvXsj|(0T$LEUYi2 zvFBe=t+4Y<^vB?L`qWFtW^|OxLFuG;rMjt8#5n2ZJ1SKyt7Y%igIH+PZE*51uI+k2(+dF!xd!9!(%d7Om$MR>VxJ}K|&bb^d_4R7rN@K=~ z^=7A&O{ki~-7xgCJgOzSd}bw-0#ECxSY7h;KYdPdg+@1~&vFoV`};5R58~#}P0>x} zr*WiHUydDo_t^IaGv?g+r?S)8!wtB)4WHM`8W)YtD-XrDVtU!FL=}jFT}KP-e~&_& z=A;4-#;P$Q#6m{VujEDZ?E~NI^m3=XYP+2H=w&ZsQ}sd3T(7OjlHySl3hy<3e51iF zK8N+PvMUhODNLIq6>C0!Af7iCJ#jLXecuPAX6mr;47mbv59mT8|e_BKnv zZB~x;K8x$c4r+_6<7YQ<@Q;?hV|lS%J%ESTKzylQo^otE)c1CKR@(r_7GJ!c$5B!N z1(I^D)zlT3-gi$8x`OMOO8Rz%WpC6>Ob`CJu%BiSA-EuS0OTW)zT-urVwz2l5y@YB zQL`*;hGeU)=^iFmZRA4koiU+e>r%&0nQ<{c$rVP}sC$e=ib*^e=@KYgLOz?eQeL{0 zhc;jSC#g}6Nd5&b!Q|MqjOk6`jmMNp|AF1UXB`l~f4?#O>m**}x1&Ght!&hP%W`Qc z6rc3M)$lQvdikh)NjqgS7iRkokygAUS$&dl;mWH`^N-$A|M>3hUf&nPYko@9>!Bke z2Co?Dq!2_TQuR3UsW+clCc9Y_Y4o{kEYwW|K)59n5B zlJDwtE4ct!0u{z+qa~8)LjURqrT@H+>YIOA$aNe{7(L;(#svJoJ*n6a*E)kOG)eu> zd*_e*Oe$5hFU(zeZu&Fpqk;88a-z}BM0>RG1x0-c{E5g5x{_}kO&r5NPo{Wb*oKq0tF`u-yY}pa9xm= zm2$YI?ca8>{iuS_o0H8Jm%F4ce(9{IQe~~vekVCIWB%AQW##3Gyh|ke)?C*7_XV|$ zy<-5~2=nMuxH0B2VelwMx}#fGjfP9!Hw8DbFle>G<#A)aFLmcpf~=q7gJ|;Zwq<{{=b}^$J6CW(^1dY@ zBGaJg!cd@03U!25MTE-@W3}{-;Q1yDyISKQyM2LdsF_Zcs;ViiW!9{?rvK+gx!W=V z^fFOV+NU~~e6VK{{t`)a|Mux83a1)KhS?Hsh9pso4|d4o1gN}mV=n3}s5f7}(z|r8 z%CEwmz+k3+=}d#bNm+MW8>7zgWgT~MRZhF?8O*?T#q}c#4xgUdp6u)R;T{syVK#m)H$jrhFrL=T#x&?gsWYnS>rRl zm0_~HT6^J{DFTB^E!0tP286HkDTtrJvbq@Ls}RvC+*c@J)+RT@xjA50K{I2wRGeUB zv;K0*a;(Zud|LE@;@e06S?w#v|H9F1{Joh>I}{`cesCBTFbT3fk`0^*!0I1(?+nTM zqWV_HB|2_~TZqhzjgMYtfSylPr?pAr)Ao;FP%hTQxqR2PDE6#v(K3hTLvsNMDfM^O zh`D8SM-=KVoI^bjxF`FHtDYh|WTfZj(2c4ilw~6NL`KYPw#_w@=t~5U`7D=E%A#P8 z&SWG?EYcY4|H>3^%v_VS-iD5gvE~XGde?d3qQ+XEqN?3`q>5tIv78)L{mvK}I%D-f z-=TQ|5GoZ)NH}7@B=TAqE}w^NB;!{>8*%*zO_rW74kBFZ@`&wxo`U}}20i(4eo)4J zaHeVaRZfxF;>hRQ|54!4!T*xubaDO);{coa%MFG^4=)5>50_C@OL(YDNNFe4mOK4p z$UYzemkIE@itrov@1*S*N_c8lx`(Nr&uKR~!$>`Q-#=KlY(gsbrj5u~{Lw6;whtHL z>8@xY9Eeu(e{A2)l=eZ8=1r2|U<~yw4|Zp|Z~8ALpUiUxyjv5oa+M9rGSOZ|5R3R_ zJ^E6mebZMWYW}L4J=YgY@oryXiwVFqGum7&w^LWgHO(aJpKzVAGxLysBzv60Zl#8$e@ohS>mdsqTW>i>#IO-H zXWDDhfVQWV!DKB#FT+!qFgT|;^XI2;ym9XB5Ole*Why=W!{h9=4rF;yj(!{iO+}@ ze5`LwX%8gdy;OXPnk(qL(hCV=#oVa8u|Iy&oHpK8!E1-IJVe;$NC7 zXh(0U{c{4ftTM1Iq^RG^8h@_Mmt4N=jCh*lDP`sMFgvOfiV_g-QOO!5j--_ueMkgpKjJ(#S7;D(TGl}dU zBTgwL?P1;fzU}8-)X8c$v^XH$sd(avs>)D&@My|MtgdPuw8Koo1amX@=9Jr@d2}E5 z#hUD(_<7otl0*W20>_o7MY!GJM>3s7)dI`SWt7Bi=3-6nRA?&oxQ-=hSQop#X0o|A ze|uodsaN%4)m0*{fp3>RCZbs^O-!GnM=Or;n~AoD(_eCHN-4MB(DKR@cx)u2YL~iU zo|jpBN`kjr&G(G8nd5}2>h!1U_Nkff;rLs3{amrh(bEieqphCNY|RBp#+MczHK*BI zlo!VwKiUP!U!- zCSSisTsNxZsG>DC8c98JdGD3 zXTy75eC$n?@NA0r&)oXQ*7$KO%9}xM*KlH0O9=$y(--G8`HvMa zJAAaeNv0R~sfc=GytIi#T3#3^h%0#U=^R0k=hWx(=(}UA!nOu7PEK+Or74{s>%>24 z=pGYQy7;j1wyj%fz~oBwhM3f#{iG4U*f2f9M3Q{)#{0D0q(#in<(`k2kHpEdiqt$_ zlmSty&vn0j^R30d_a)%Ho%9K>rR7fgH~2g)cdyL{JV}xEf5kyG$oq$B!e{cKIEkMY zi9piI7BqM(+!oj!*OoIgRd-mw*WlG~w_`!|+tg~M3v|*m`x$);Z6mc+=#{vvec9!y ztov42J#*C?EHkVIYV79DpQqOGHox9N?e_Ofr&B#0&9kg8!7q+U^>a;-mknO%3(X_X zP@!`bwqKg=n!c$*Z(G2^F43pDb@hdvBp0q4@&1efhgbI}xpWV#yI})rCBaO*ti{7; zM(VRKr!=?+B4oO8^Qx40*7IF*vV(=T*|{6C)4la}qLpGrYWP0Os7$GFlE26vUyq|x)C zou%mtNEVEj@H-~iXd8-$Ha;s*b@1Dw@!l1wIVjlq>8pC^JWx$kS2r1E-Mg7X#G%+4 z;ub6A_wGH}k^@8O)5ac7stndABf9;~UJ^bWInPQ^DDzs6Q8hI6x^c?t*-c}Ek;;-9 zHUq*^^B3hjLz?oL>OP;Ud*p4_Ht;`9#eKn96QAcfdxS-8t+89dNPVm8Nb6&roWU~< z7YOup=@vFm+QqvZ-{OCTgx{Ry-qSQWT6DHJSugWq>(BlS3|=>JS5ke^IOS#CaA8uc zkMXwQ!|E9h?^1R_@Z%T!)8GAbT;kFc)zV1+a*_0f5tHe>@Kr&M@h#!gXN)H~tDglg z=WXI$Zf-EllMcvZlE$`V|RkN@XBWE+HN7 z@$LV^)LD2%xwl_mk4F&^P>>wrC?(xpA}!qwA{|4Aw2E{|cXtd814Bs-4bm_$AUzD- z4eyQT_q@;JKfqe9HTQR4*WUYcRhXGUgbpNCaX}S+LQTYz5hH56YfX?5!-;{OLkc1f zM{~_39hIb_i}$sg1G!6qoD|R_Dk5oeE3yFoG@-?QwLGAg;z%pHCno;F&rGLEHHHBu zevzOMAw(We_*i9u_~S5)G@cakyj0)dkkO^004-2^=~ z(-f>kL{3zKFT=*!Hgt^JPt*P~>&?hbw=)2;AR&ylwhuHHN{h&s6wmD2{>RWm%Bg60 zqw9BdEe&disA^?-J^KN5TK+?mkj01(;?bnU2yEruT;gRC*?cZJG*rwZMLNvKay~k9 zIFdR$uq2Q(vIzSXZ(k4bWOOoya1w^$H&U-WxJi-IAKTt8qQYLQn*etkrgyBLnBJx;v>W-$=%NW@u62GwA8&7UqB~%~8T5%6n6skX}L zVIyefWIiCSzxF7*yrQTXVm+_2P~4)f2~nSKnO?Z9|CiT4;>;Ug4+rF>Y(}M2eHwVvwEsODg@kmhY{Vd^nXH z-OAvhVHjqz8U2+XLv4fD$6+#JnR#w`OpZcU+6l-rb^ZvmAu`RJtccDW!Awn|a>Sai z1}juH8Q`YSOh`<6L3z#U{?P>jIQlt>`P?N;AF1&yf>v6aQ61}@pBu;huJc&` z<-(5;XItdB91f<9kh9=7~Nw9-FWb?l=xyZK~kfqW{RKSq5gy;6b~N= z_azUO2^jFxGZYx-wYtpiuchOTf!PFZ-&-hsaJgfV(rLEd?GV~AB4r>$Wa8x-Dff-6 z(tfT&VDruA8QZ(~Ji{%gV9rZraXk>IKn@vMGnO$Gw%CgYSltHj*| zuCDRa8U4|ep}6y%+bh6V{>-(O9e_paeIwbx?+Ar*E~f?(z{?E4lk#Lkk%Di^l<#=n;n9P$qxD`p(3Qq6|I_9d;$c!@bwB<%1Ia-nDrN6HWKnB zU+6-!1%OywYX*7!%(o?m`04`K^-=RpqlXzmpzKJ@`bFr7Kzz7blY7Q#1oGoN9H}DA z+(Yuei!fN?suX<8DB)?TO+#pB`;b?2s`Sq=MHAY_NT(mCt#UECu-HVkJVuNWBhbX@ zAhUHqb8A60TG!R%;G(34uCyH4!YaVicD??0a^T~DeUvDvuxNuxnh2I zne|Cm+i>S!D(fzI>NHppMRA8O8VPunxEL9Z0uN+=J#QJms{U?`Wp!N&pKUYL^l#tR zyvhT6rm#@vm>n#((-|nI<{J0OL+=+0{#Os|_I!ODbx$5O%4RM=WCCGISlVP9a_c6W z8h(f0GMR<*Y*3ByPzUr-I>y=en4~GQ)t+%YtVfY<`(Xu4hHbm=#`iRqswW>3aW-E$ zv&Pkh8#D?0bCZY=FZ+{+MMO@aqf&NWet#=F1S2yY+RAx&{3v!~@D)a+O=z~EijAt) zd6YZbt(lreB{*o8bfx{}sPJ0?>8I1bzP|$ntap7gR}wZIq_&uwV%`Q$`3U%Y&=ZXdvJtD!MR)Lib@#{F;5 za5guptfbAm+43sE9ap_xfR=Kn&Fm_$H;~`TOxm7lY>2OWz3oNhF82H_ z@mOamwZc_6&>&pB{!PCyDa&hxq?yROT|I52en)3{aCcrIfN}2PAVYYy65k~ zgllDComDV7G6Gc zy4fFXd>{h9jiBRgWa*1e_1;OJ@J%a>I!pWcV3xX2#pg)&(J!33_r6AE$Anhz^7Pz3 ztVqaPxSPjcN=C3(NAGqt0=jlt^{hVAKlgPNZ^A3M}rg5lX6Vzq11n#j%lv z)R|Z_2sENY@CqMWfnm3A?|A!m_~pZ|R8!?`rU#D+kF~lS zK@Zo@?30rQFJTGf!e&c{Bx6Xrv4R&%V>&z!4;<%0$Lg?`&H4oG|EANe34u&IhkQs$ zCU3Vd~s&{0wdyqJl#QP@nZ>@`!b8U#gUa5gw{_TTyLj{pX!A*T(oE(v(S8vwN+Y zkKzaxzxMYRl5eU$__ z^ZYifw5*s&N5dwxVc(@kc>pNNm(+B9>8nJ&&tjl6;NExz#Rar!CB_^1>e zmeYw*0*&!&xD?9HkVoPb=5!UjsV%QM++U}pQAL^wnDpPbiqc5m4cpqkRpV6kxH`Nz zT<%=67)j^%x-kq|yrQ9^!;qGSq?yh_zko=N*7J#d+b!&7mZ^4ow*qD-oEnK&L~?L5 z70{*sZ7OA@&i2JD4qK%ZG+mf>3m}qb!c36IN0_*g=c`?sScPglviIivCW3@?q%8e> z;EnSx5OQA3rThz9CYV#Cxuo2l6E|sOc zqKHzW1`^U4LvtD?*I=IO_98V4`ez2FNl|yij(rZ2`CY!2of#_V?UQ8(knsjRvr%gP zP}yk9vnks2v?MQQ&%b{j&~IA{*y7 z8~na*E&-e^^a8*q51!)sIls{E@11tnag4fglg>(uciq50F#vT0G7q-owC-}W||q-FqCp>JL+=z9E!(0 zH@e86Uo~-fUH>F^h1Gja=!1*ked%F?>a60(z~GI&ezv+UkJz`P5@e~fg{{ps$L;TT zwjcI^g`WUvA-$4rV(Hx+kS{kh>#k2mx3qGO>Fz2iL=D@!K-p}qv%L;2=yI-lwN{qN zZj8f;oB13OCT@m{A?cc4I^G;WUeDr%@9$t-nQSPAK z-~WKgBsdEhpFSAmoM{JF+onJVEkZW{1yOGxkev@S4HlhRJ@JU#p4u1nwrPup}6!a}Us zOKJn5rBy*Hh3UC$CL?xtWaW6OSrh~#$M5FofY3>mjpnFNJZw@*>@K_88z;5{sv;(~fu0-UHE71c^<`JcE!(C**g`WQ`wB(U)jxIcMLe|bke8H8E+TRv1ubABBziWK&YGS)@-XQg$DqZ{ zrhW5tS4N2bgv#%ZTI@xA?TXp22y|Ob)U&xWh2Q>x-0vB%Nt%1u^j7kK++;jzy6|(* zlh8+C*J-()A)_V{ZqI%bL3m|+zTMmlbWQI}^iJ>$c!0y_WV%HTJ{0=^>VV!c!M+kPb>-#p!x_epf3-B8>5v)&awC^K*SM@)c6#A~ts=70k+zYj;2N5&;JF;QC|MhL((%5whr z2{e?`84rr*s`B6Zx_?Rb&lk3T@%IB*u$S`XX}#)5>iYVDess!$v2U8UUk=X!BpOkR zt15DL3>>m)QCm|xuF>+-S*_gerArvD{*4zOtGus@9tza;dCS6Wt0?HD5#ij2gcUf7{O!`SpIGzKMz)ZO0BkNZvjVJk`0KO_R?W3Q4I%N}IXuSg?wOg=S&t_*Pv z9Q)HUv&A=R#v>(t@Tdt;!v7-2#AkI!kQ7IvI!Duj8y zlToRZ6;+u3ePQKD`+V!t!pIcBlJ9_o27QYfiEOw`&MY@JQIpbbPxlIRvaQdq6cso* z5}h<5^agg+bLqtO9eMc62ah(8Enm6&Sr2@NM9If@-oiRl{-*d^q z`D-28zgM(X);1NzT8D7}o_SAEWse{AFMf9%B29hjp&W+naB=3nA(pZYsZ*(SaowU6AxQB)cCM8$j;c zn~Aork1Oh$oc}txX^45bf^;#W6d;kcV($D#Sm*I$g@S_ebFrjA@)C$^`|lb)jP zHHFjYk$^5n&y!C`&J zWy9~u``yi4TvA~0+wooda}r&{Nh=eZ=|>^}=SKg2d9rD7mGL8G8wsH_OOTjPA-9|( z9Pqar5^hun3SbjCA;PR@w2Slw-JbT9{y;&1G9*s4?H}vZNpNobmIWS_=J!UcN;Z z>Z+RG!dY#AV*_y)r9f?z(NbV(mSQOK>Z`FB@PkI_Sa&16(2@04?Y;CpB|fF62_eI( z>bQjOuO2N9BY!B5o<@BV^r=oP@l{gopcv|?-9MHz$MA?UsAB(QVcBV%bn{)AQZRm< z9&DqgVKtA}$^W%aP_$YX8oun%F_9mjaKJLA1A<~CUq)!SvL6lEb~^87G&e#T8T1Z@ z%S#6d%^4$I^@`+5t?aD_hnwz~WEFEC&YHYS=9Rq^wosGMlVK5JKd@8^k8e>TFuThLI!()S$a*08*F<++0i3O{;Rkv>D9X*8A3TCN@70?Z-U|DpQYkNzA{%E{$ z_~-&z;1>Y2v1~aUJwg97z1t<8(V1qTKY}FJUU$AN1DlD>m;7anx$*n^TOGRh{~U`d zY;tt|*r<)zG!Xemy-rv|G;UU-=G`MyP(hxdP&7ihh@g&lgn|*Fr7gPQKk+elh^Az@ zLCaZPq-OnG{vc&tAbd*3AAOTN?V4}$@z+XU*rsYkA0Owj@S7YCX6wYW5L6G__{3xj z|K)&WAO9Dty|C80HE_bLxxz!?P1mqV4Cg%uU{wdu&Av!JPn)a)6CQ5)pJunztULBSwwf) z9L&rHm~Ueer007)d4tdGCqL^ZvD%6s-BD6dQ2}c(JQfMGFV>uRtYpvG>76sitfaF; zre~3BL{oOOWI`p^W_c0xN%Zc)-@kg^K8wLWvAD}K-l7r|{W)>w+Sf+|Ffw0B+B`2D z%6|>&-1%GA*(jDEfmd+Dx6{f`6jv``y;OO{)1zgHF-NpA9*kUf{jC6AltD($ zlyw_Pl8_{pAv2YWaK(r{+CKZdcbvm5Ru=SlqDY*}q^P%es!7<5?LsA}gP6-j3Z^jbT1;~`&Sd2oymxVdPXb34n4uQYZT;Sk=z zu{^$n>h%U+$Q+tg^clxt2sNuVstHoXYqGzL+d9KmoLwC);`HNVKjsLCq+(c(Yjsv3 z^zJb0;QPz&DgfPsV{Z}i0z)ouG3niqs-vK&ucNPbYScdyXR8Wc$t7`G7Q`WKSo8Yv9Fj?5I?bP86JY&xG9FWxyz73oEi1k-uB^n1kCScC zA$o<1>51XYNImr?-nHEY>8t#x?D#b!(VQ}`DM(aCPW_Ob?FiA zctC6-YN~Bw*P5@uL4G5&QO}Z=h-CU`GY`kVAT-;3JHRV7sMwaH=M*NIvV=5X=BXt8 z@2|}#?hg$jwE?nhdKmuL1EzyB505Br&LQu1bO05WH0OY}Q(xVkh;0pic`a&~q-QyN zx`E|9f)&QsSP_9fcD3W>AY>BF@*&K-rSy9-u_Tem5RZVv58;b~SG+sF6!zGF?(YwR z_2(F05<+>KDO~fi`IakgS}WDUiHO%{i=ZZEo<3`u^47*=NJK<(i78Bi03FE{5k@OPyD<4#F%{_ z)Ty#ulFw!3MQpZ)AXKuq=5pLFGJ`2bo$$?ky%F4BS5CRiQtp&b$LT-dud|GB5mu?E;`1xP_G%=e+%j+P zMVtcH@leWCBSLR}whbJ0d*Tot#_1~}=33RTIh(o+)_s@0?qlfMnR99|WN$a_k-fyo zd0fNG&m!RY`W;Z6Z92&ds`j4N!;09;ZY#-DMa(Vperx^oApIXqoUa1~?-rak8mixWmXxsxn--IWIj~4zk@651!Cq>_Z9w7OuQRgE@uBt+J}8tCJE&(81f@~FQtIbPqW#%+bpU* zgZc5nI3*@mV|3$DOnuDvb3I~;0=}B{$zEaTaoFisO7}Q7cDK=t+&Ay1aXcCAm#{P# zMZH)zyLUzSHZkJXnx+D1;<>|4LCbYki#=am9o1a%xis^FhLv00-#{XKqof67^J=OU zZFdDpq(VQ5hn2lpdGlxo*ic5;x>a}mV4|PbCtp2r|K8{4f9QK8nHnh$j_cmS$8Kw6 z2D#JJ<0OnkTRqeOA0U1~ol?^m9V#hHiDR`u>bT&oABD;wIgWL{O# z|K9z{GEyT`OoG)ai(d2Ct%wc%*4b<=n4`fK&+h-77*o#0q+=EHqC&yQH+Ft_2c4t6 zSXWqk@;!oX0khuww`(Q1aEuH%9i^EDvu_u!SfeR;tT=qiekI-3Ors+TTaRz;Yg$81 zcGu>0=$jcI44$WjJ4h7*_W$3c_e8>VQbOE4(k%ZK zPikWIX-+Hb&!^b9Meb)H!9vvabFH)11H>gqqu%v2xxyD`*Ma%Ou}MRfEvUAc-9~JX z(+TzqLt~CoANBnOf9Wa2xc%wKAzBv8 z%CKY&AzE^QLIorv6VC!F>vpD23k(A`{=mb3xpVzZxJm-|PkVC>Theu}iMO9MeTu}9 z3Eq0h>E%9oubk9?555Uj{AE7-QZ)r1$-A??Pb_;%y+US(Q=uiKK02{b`f{h>%3v*Z z>!K!DHE-pUA9;_^ww)Q* z23bLZ7iL}KXLH6Q@1HljR-i1KYLk1AmHcl?oF_q%QFIP}WoCD3c@PoO#)Ma(nl{&D zYo#k27ScqES_w+4QEFo@0K^Hrct~egh5YUSBZ}vn$mQ|}x;>#8J386DoVO8PbsjDg z@vjyW)dZTg*6I`K?C=xN```jV-j!7rEAjo)b#*YPR}8zkxLh;#;7x^)3fPQi;C80l zxN&bSXXs{}NJ`s>XyVeO*B_t?#e{#`;xS18*DC-0m$j&xV6QJCXs}q$00;9$gSI}I zHdT!_8kG{Y#Uc0#K1ImBx3%3tfVg7zM!1hfhj7ANs=S1#E`z#RVxY zfzsJl&{p2pRA>qS3bHz&EtOMYC7$5*Zz3ts_VBeeT%tC)d~VRrV3 zX1H5~(E+Mf+vMgico}P~R)OSBOuA*EjhIGC!sLFot|oJ!j){?KTC9akcgSmyj=AOV+{Vkd-mpX`%(#$y*pg`X`ZLb-AMsR4 zC~2i%^Ya_UhgMN`X}|XX*5W*i;)l8o`u>MD64zZiy>`0qGq^I--5W);?#5^TogLjD zGylPuMB}4%5z2tNdX>7OLt+PDjd@>~#rK@UIS;v;rt-P=9+8m5!GxQKy7Cb%7Evg; zf{<2T!BwzGnN`-*XqS6+*C;UFR*}LbfWGkn^R1=SdF8hfVS8(lUP`iHek;N-{oG73n^BD-zF%S*%x^ZE;?&!$f#^mI-)p;ylf(C!4FRog=vXhY@o@uQ6gFAO{zTT%Fs@%hwo9FXs!BzDVLgH`l7PEwK?~K!ljR( zV@jPEm>B4&ga>4MynQFa^_8E6V@%MMP|QbA>vRH*ZW|&`pIvIA=BpBH&lS!XkF> z)^g_JkbN7At)Znwmi-Y5q74za^C@Wx5wTbRyOi)Fqg|MyD!~pim-6^MJ zmP-m4#jSlO;A5g!%jU@_8tai)P)qT~HA;+LKo zux&*Ad1v0?=Kjg^DB*Ui_-53~ih9$U(?~=RMP>HUB|gZyQzetr(fn+5Y$@zWG@d@c zvM`Kk+gMWn4@+^EgXM3Mlhgi9W;>{B6+ROF`mG4lMO|mCmYq`Q*(mPj)b5SW7{Nmm z3X-Coq?H^c78bk*ADQtsX8bc}TPa{UV^=Fmq=J8ci{UA_qSdr^YxKZc@xP5*&(f&$7N6wB|JHMA+`wo>cKoGuS^H z)zZbWO{3ym;1@LUC@)`x)34|H6hl%K!DgFur~FKq$n1y|jRd;k)Or(hZ_nCZ?Rd?x zGA(HVaOY?gVZ@G&{{cm`iuhUHBEE2UMEGNSaug<{jz>*ZsoC8EeF%?L7q_5ki$%Wa zmEzzLI0Ic7HD4F-;BDPo-kt6j_Oq?8tF1!SP9{5nzWqiTm`V?$h4lY3^1t{>JC=7# zPP`Xj-0Bi+Cztnl4QD|(kG{T#S0douHaY|8&syreFBS8`LRM(31Fl<3Rv;h7pW{c% z`mZ-62?fbw+_zg4K$N!JsUQ3S?CN>RqVT!#kAqX%?ncPby4e;UIPVsw0_HS8o`gvt zYt2`9b|bAXo}OH3ZsI$4t)|aCV#1^@X)vJbdi(GJwp61$z{o0HQ@=2K`HL&MqJ-}b zz{64C3ro6?_c>r(nNOz_?e(3=sa|C(WX^!Y`=g%eiHf>jJapAL90s+A3`^B3zk*mj z&vgu!i*S9FUMQfioL8|Cq{m!0BvS#lp{wbrCbhVFiT_C?_z-P*q+*wIq`vWikwV9n zfqyB)+a{`oC6L=A~2c_sj5E>{+vyGETu#0Uq|_ut09r?<^dKUZDcP-Hn)ijwFSLKPK=s||H)O+wpVEb#Ut|tnENRPFvJp?6= zC{EWu!n`=B4d_X=XYXRXXu;LX%Mrpcz$fGsVe{6^cTzlmrNpZh#Dn+-tQVWpN=6>0 zH7<3y=~!F_+2(=aq=v{k#l^b0M>C!ley`k^WxFiOGEB{Q|8z9gvHKa02o(qMrivI`=bq|$+>qZ`OBzSA zTz7+2Dr?Pnl1+Qr^h(X*!k_uIF*MH}-ZPa)>+vrvjJTHY=iq`O*5_Z3VTfb!h0P+S zT^)!)Nx`aDGdj?eM%OH5`SO~~KriOUcZtiVHdaU*oA0YXeswR015_pfU#GI{Z5f?X zS6rN~!U}J58I%ebKPBCLvi>PczE%&$k6~#r7tsK8{p*`o8O~e zE1Mhf6Bk~sgJQjpk6ZB{2H_jdZKlNnUhl)+#+&5JT&xk)7ZHNA4Pdv#qOUEX(c-r> zA6IbRD|=w%hqo}jZg@0%4Mv(91AEMZIC<=#A5bOx#8I(7I8IbcO4RW2M~%KJkIQia z@i+BBpyAbt?G!=wzL@b30#xE6w{QA7_D+5FR%0$dsAO!~2g0hGJ2-$dglcgtsdGm) zaujncQVA*-;6OH&Kj38WW~Lg{Ba+Sk;_d~&?DRNVdsI3Vkg+g-xajnUsWlzo`giLY zIMCe-G{ZI0wP~zn_vk@*4QR5tX@rJ>F8g=>L}~=*QHvpawc_-9`jb0{SZIjJXlUrS z?=xNV>t2+b4$`g$kn)$74O+dX1FeY>nBiDO3cg^ULooXQ{Aw}4!JA!lxyc$%oKzU~FwlZ`4F{tRQL>1;_&bn27GTi#P{(odQzgDZ7F`CBr{hhC{|?e_h4^@>Tj$TVfW#LJ?5X!H1E-1cuVABI|Lyjm=)wmH zmx-qYR`aQF9#UqU&JZF%ktc)gG`Xf-oXqm6VqOz_{6 zw0=T#+2x>zxs7>8x(ak?Cm?FjGG`sQB(&} zhgQd8<%nRSJFMDw$rdX1&Pba1D$iWF>x{KO&Rf*80v`nX4F}K+ZQU*1C>3e8AaZ=)BR%ZHvR0WN~ zrR3|`z1;N8>_0W<<4*vQgd3C|t(Ypbt={N?FXR$dDmcB2MP*Ldm;L(Xi{9g||13@HMq|z9*d9f|q0|RC8IiG}uor%W#BL)I( zc6Wl@KNXGkjdy>C054u7R6kefU*GmAB_l-}p_ZN84R4@2jk)WamLe#pXmqxCy=oKt zXlhLd$?bzn{y$a*#f4M$TSaXH%OsI5PV^3O&tc7{Z(0MtlT_^Bl#bh>P+r1en?df< zrh>T(oaD@^_P9|?4OhqhlGVW@X2czt_`UUP>&34u#!NQM!@QS#cIm4V?`aYfV z-fcHNk2Nz%gzFy`*G}C%9&_R!dsyUuZB0H7 zOI&19Q3$&`_jmC58DVPcva67|N+Nei8mL=A6sW+QPLTL&v(gV@-1>NcBk%QG-mh z>8T|-19-Lw%&mkn!gy6PDj(Y$%nh71Qn$WSosx9FyH0Zv)c=wlxi-KV~Y)g6?~w}SUZ}R53BOB>e3Y# z${{ALWahOQ4Za{3(Nz_PKVjXj(Iy2RQrm_~d&MZcZ~|K~*Mw@LXm$yD4c3NRy_e zyE&6n!4l98VzOIx@m9uyElL#*gi%^y5^b-;IC+MPeT7wyEzIdSTx5LD7V1up^s!Q* z&mW?Ks7(q7bn~+5KdhK@nJruL!DL00`uVe7b$egV;nT9rM7+-fbaC} zR=TQb)cGuI(Z@4uA-urXADwMGwRgbA!aR}H$DD<4+#pysQ@He^nXx}aJQM@Vu;4>G zf&9<1k==_B&QoKT-L`3!!^!JWlj1n;$;42sv)y4vpi-sYS=SsleW*&R=+dB&FckOr zT>jJr#J+vd8t}{Ne?%VJ$)w39eQ9-=?%&H#gOU&UNz%c;iP!Jr7m_4ZZ8Ekn-*ZEi z%flQOcJuY>c+91!Vf^I=RBTun!mG=5yJ;qpF; znyy|%mWcIp&(Ne|s8a>?4aB@fIlY&7Y>Y+_MFha#qy)TLP-uSV>bLUpLOH4a9X4}U zRgqxfuI`;uyu%1&R?!6R*G1vD%8~_C4VoaH6b<;k;QQVe!uIm>KW(L%yHWxZ*$^>@ zo(vuVJEAm4m&ndwIJxeT8)efkr4g@;vg-6*Kfcd;R_f7f<^X@XPe0(#5D7P_q zA^zTCkcfH_C0;XKL#I8KZGiY&pG)I~O)`Xy%|Ctfn~Zvsyji{Azh z2#hOF7*0U=6A7RtGJZ!l12B(4yA3;;B1`W?;?s~no*;H&!^CE)m5bmw`&S!H9mfLt z#Qi8}d~+pC|A=Z0PK#m0#=(gOj1w11lQZFZManSX4$}wgxuA#UY6RP&Srw1o!?Hql zW?+Sh+P|1xfQSIqS<0P?S$$MxT=nP4`2dfUmC4lmBIO78kdk30DTkSMjbF{bWcXCi zl5L9}p$7ii9-n2`Xb_3>22IBFD}F|AXU!RauR2%RUU5NPgig8H^43b^I$2fFbz9Bl zKK}OSW|}87(1tXT(o(<(9e*NwuD!N!y1V>apl76RC)Ix1_SL;nxX16i(82I3e}K>w zRNiuosOPU;i~pG0aq5F_DTVH@Gq7(?@Re-i5?YQ`f+|8+C5#d?^*x!SDnt;YDAWHa zNPuD`?~>=XHvyEo|Ni2ee~{<0GO~h0{XcR91F7M9mUYPqM)mNoi%EvC@;5x^qID23|5`BavB|&k`p^aS6jq7eB zbCu8=?uY%DFpP-~%=1^~Nk@P47{a@OQ*XyYdY1&gxeohdFHaA>n2%DLk@nzYndv&fbf<#OsZSJauX6Ty^ z_aedA;(4;(ZIIZG8|_R3+_Y>svr55Fy0CkWr;x>o`;-XD0u*%d2uU{Cdkn5jWay;Z zj0jZgSgnwu&2U;0=y@&)`I8Oo^fr3>2FL{7MRwg5E(un8^b8L&A8if!Av}iT=;T+> zx~74LH*s~Qgcc;oztG`N4p^&`a$^@4&W&-S?S&(r{zpTcrPwv=Wu)d^yWaxm=mQ9M?d->DIi$_x+tc{glxoFrZDG`$3hLyIqIs$!aZuC z*%0aNR{ZRZ(+ZtN*Y;>63SDlhO&19}- z9sy=KK481tXY$wt4=(FpMqepP)O*<64Y9m=tZ_K=Ur3Xj}TlDlX|% zmZcXB#&REPa9L_-i?|{pI)ixv*J(@&y`I_t9Q4V@Wlwv4W>w|L6}{peCS1=4_tB5L zpQ=;SYy>q^&ciy3-0r?LZW2gQ(g0x3{#QW9{P5_x0-irn5SLJFJLUio)mx1 z9p3)sgK-LQ`p6X;J%Gl3h1vK1dyju=?mnV&-aDRuk1Vxq$+wf{zeoG6y=Ibnu2<_} zu`s}>h?&i#Uqf^KDW~-F;Dn?{pm!T^C&WkKPV(fZvF?{?_8a?z%l@w?(HK)(uzo4} zk!{1ea-H5>V*JC?J?KE$g4(2Wao5Z{zq5XE0>na7(^|6JhS{^ii&UPxK>4Z`jb@%h z$b7-dbv8MV%O7$6ORp%UTpV-{SH!kh8iZN50!en0RI@Yrxui+Yv|iw%%0yUVT=zi* z>tOLXtKuIuLa4aEkg3S>5Gd>^Xytr(v^ZdwWc9lhrQ^BH0uN46%MZlCR)R)8iPDW; z2aNQxxNvQNFn@ytGM*pySvd(PhR#^Vmm7qSXx|? z;NJ{~;M)1M`g&-Kdk?n62OD9y!ThN^JPU-LTy9#>Kl7wN)>Mddn8il?#3ON42H^sXEzaTNUJpquTKI= zxu}0VHgi?_z4;ObLCtE`imbfqh+MJ0hVE2V-oIg_hB_c39kkf&lZ)i}JO#`EEnNxJ z+lsinLd#pr51Xhyj!Yc@QQtBz^}J>WX1_M}rPiNPjsjfz<4-%9lXi6{inmY7RWhf) zFKtjyL9Sc20!E8j!*^aLtF%wKxZdobL0`c;(lwe!gcx@S*J7lgJV_5dtbxXH)5$TG zl!h{HrL043!b}^qK5EOWe;IrcyIOr)Be?~d8+lg0u}b1IO~3aqB02U7#f)E{HXKpA zU}}JR_CE^c4amY>+HBxqclN`+y*z0znUWD;_zYFh5{D1!$K7Zsk5wIi*O-;OWV{HN zxLb*mAL&vds?cqfUbKCKJ)3r!gHlny^E2=dm-EW{P$RHNn&dSU&p;qhN% zk}ohG>h-F;o_s1M5N#*^HT{(g-?v}&UksG<0`-f6^i?rl7>)gY{WS5de(oEq7s`wu z=bCH3$>%CZd~w3)YW$mz8}n>I_H)L@@hX_^;bApC-qZaH^^$XoojUiJ^vY?(*4>q# zU*Q>8yU}{n6+gl_sHX6SsY%WIaK7wJE z?!q*ROB<=s{JNW|mb)mVJA@>L&DS<63(UQUc9`Zwx<3Y^m3@8Be_Z~S<3wb`k7t_j zGxU7HO&Qi#iL04Od>inm@rTYtti0Mhuk>xj7Kh<+;DJSLub)`?^5r6Ldn`! z8Dfh|;5pdcy?R9;XgSug6T5E6S8ua9Poo#9bw}Cg&9~Q`xna<>anpB^T7#&`)(Ltw zN#_U;?IIaa+#NE|b?5LaU=Tv3kgsHD|7fH2Njg#i7QwqX?3kqqQP=wcHv~ueR7SJS zzUmnI7y7=35yjkzD-0)wX|ZFMk|#7kuTF4n65)DlAid#pdD*2|m;^<3=NB&Wx3(%A z6+aaCg6dielP0?LRq95Knq`*BqCRVB2=2cwc(@jH<_n_01@W^rU{)bhuHda6?pi0- zsOTu1Ilq17p{XjJy~j-%gKc3n8r+8S)C7lkV^M2gyl!0h0afw9!V>4Yy2Gle@uOMINOW& ze|uZiR&j3?RqM7cisF`{_D8kU-g~5|y=SaQOI1;{_THmbQhP>f*WQ94_DUp#h>-A0 zKc9QQ&o6)FdGbe|Jnx)yUg!0CopYoWNRfOlT0(i35*B4J{b2k`V>U)HG*G!iZ5J4& zP<8sVQXoGDyAU$|i8f?ODs(G5S;-yrSLLZgMX=+?%js@y=Jr!vCES1~ti{JIL9$w= zr9Q}Bi6XXy?^7>+U}E`&6xdmjkr$fFiCWpe# zJ9^!{lvpboaExQylWkPUtI zb}e(PPW8G}QPt^7Jsa!ML92d9*1bI$Jg|~=6mv$HG|RB)s9g3VnA(hrM@pw?-JcX= zDNbN_*F4tvmkU@}2+jUJS!iaEIx825>-|G6Z^EkW8J-z>FN)txnfmth@1>rT^Y z7Pq@f1eNs@7fQc0k-KU@7K|VHMqht>($f;S)2f-h^PZ=y#9mXIbNNzoBPAL4q{^MZ zaXkE*-B|o{?sG-|Wk;Hss2=(GAXM=%`@Q<|YskhAbkt^(PZIE+GbRqbP~xK-*3!K7 zdPy4MTDE}H5V3}YwYPQyb~o2DwXD|mT+AV}l4cbO>5Up9>g3`KB6Y`%TrFT?@~=w+HYQyTp>sq-8~|fv($SsD+v^ z>N*zc3-~oXxyoLs-%SnG4$_ysZiA{%Li1h9og>dIUR1+!4IB1CD60o$-a1b%)-94e zwz}-ttu0%lpnX?>4e7;38W#t;N_+g=#eP39iSePIod07sF+0|^ey++tJv^0?SG|X< z_w311MgAT5&CO98n_yHF6V$pxp+$SJr50O>x*C&iqv7>5?|X}P#u z4QAH(N*wd#2N_yoxT~*7#V$1^6k#Si$gkMU z&b!q(tP(H26ZVs1<|mJ&ukbD`%JKq*RGj?)c zjIs{gGJ;JPyInpCSQgDinKHfib{O(yYW%>J-Yys7jeqA+Ete=MH^cQ6NjO6hJHt95 zd)-s3Jlhd!{zns0#vS@0;a`)znMk0f*>Wj9MQdM?iS*G!o#Ii;WQC^+C#@)7*l9{} zdl8+hKB}C9QI{i|?cEfYMEjpON)2a&N;=>!xDbaGQ5veiH z`nNMzim%eK#Dz7ykIB^bCNgqKyBweDbw@GmE>*sNoQ+Rh6H@YX)4V3iS>SPaYf4Z- zOh{2csKxK(bi%Hmk(pE4`}7CVv76T@1q=8htETjm^WW>Cz{;H-ljY%%N6F8fe^gg2 z-t=dG>P#t1@);T|dX$$h4|DFSYlB4R2)KKPMBT7@%xGRzb-eKv^ooYYm5wo|?eGsQ zcaz)hqH|FNyXEl!#aI2L#$DR1a+d3k$#C*zv!ds&=uxWi@M}WoGjCg;!5%%v6ZHJr zr))Z0hbgnOp+MMxtEdF(=>(74;ZMWkY2O>gW@z5W&xKHREsA7ynnZ{UN!(edXl)7=~2GtD+H_!^5cd+z=^ zFTIqJ-HOS$W2UHh`6I=%z4_$zxa6MH(rvEL^034H?z%c|;dBEl5Wf5D6|U6NbE@J~ zA$cJ{r@K_;?vJOotI+f#8eoL8W!tDamoW&|utf1+-&(U0F$8D8!^O^2h=KvJ$^j zqS?`Mr!yaKM%iD%c%pM8a=x8H7lZ^`-}}JQ9V+uPJr@F!3eWhq!p`8!_v3w^gmftb zgnt4+2_|wT*~4XUkl!Tz>T?r?P%LYiKJ~nTTuoZ93pE8S$_Hznujm-8$*k4p(ILZR z`OwIftrXDZMA!DzZ5NYGe>Pa?I&xQvjXrdWHEj>VLx}ebyP#W%pB8doN9o(iuH41O zgFZR$pfSr0;&Soqvh9K=C84Nr09g!P@uKK}bW6DrtWXsFq3wuYhxU(F-7kQnhFndx zm=+H${0c^5z#>n$>P}xdxiBx(T57~kDDteVOe(SA9N%*Ao2@d`XOGVzCtvqhocr zyl0$TT7PaBf<({rDBP@|dq1d?*Yf)v2_=&F=H2{aN_7)RZw5x$!_pkrLF#2<%ga+b5eqp|!>&clfLCSK9P{C%;iq1_6 zcK`9zTsf;09^u0r0u#Y{rzWuJ+=Ay?lhMQ!i4KcE~Iz2BxZ~$ zsiF8+>)YS-p4L!Q|1u8MtU?;Il^Ym`?YafwtgiyE{9D~&g*SAvr+Y?V;3m-eaITV2 zwv`lNU{O3SZ2sFPejbezEwJFW>G&VX;5uv*ncJPJ_+7g z5M*&g4Q@7QHHEA4^I93Ovdh}*?G@glnR)fsd7TfV*5Ct{`meP)?6k! zF*Q4krnEK9T;wEQ9_&j%^;VOz<)rPumTh(=s}UjNl+LIb#q&CmW7&PdpZ^QXKNRz;^2gsF7lOENk1Ia~Md?(X zrt8hWtf->OG3%;CoUlwN`K21Zy~je_f_uh}yr(l(?4EgH=`O8QVn8FRP){uF-s%Xp zUv@-zu!-SxxQkz&5Iqh?z0UQx%rw`(*=?(1r~BQx{A@`fDUk^``Zg{%BI*WBir#ZpooqpN zYeU^r8#-(#VXi-Ng!h(pPO}WJ)93&Y7-`_vs*`=s`PkZQfMh@$+vv8?NLXp=jl1FI zzen0>&hQmW^q9v%spALZaQuuj>KHrLv|;A{=mwwIx->V#Ad zAt*NOepU6+rjc65F8~bB!=$ix<-xRE;l8>w6n&>>bpu0soAE|KwOaHTmW? zeXKcqF_<0sF!qwlV8^C%v63xEVk+YQq-y8LN(8HcYGa5u5n#;1*3D-<0%2cEgoNpA&j%K>9 zQ>x_=3p~B0p{Q8%tWbUo60%oNwWm-7W5qQ?Iv|`m^7=@3*SVkXuL7n1si0o6h7N0* zK@zn$vYK9N>Yrdt!mOoh7O2g3QQ7EgsCsvK%VAfWsDd<6m+<`T!e)JH%7KsnPE1=E zUbfV;t7?XsTghyI7)96Q{&naadnUt*yCU?n-l#)pKLN)2RFg8DfZS;AN_zwdLa{ z-$q=5WaMkB60Qx=l4anB;pr8NUtAfVa;j2FEhLQKh}fLk$Nm!^GR2Z9bZM--P^Z{C zSsE5cu5f&_vjEWfm8X^NQUa@adwNARhgB9U(va6{4I4NlVhcqubh1JUAj78+ueSZiw*u>#1xq%K~m@8q7m~TM1|rXLw5gydIy@y?QtEtK&v!{FRbD{?{12>Rsfogs|yE94vJdG|4sPl`ie2D z=CEfD&Dc-?seZyK-R7ZZ1<@Lp4O_{uOPT34QOs@#-HNW-y0{-NVrF{YG(`a(C1K-^ zN{*ruK3rY~fV{p`q1tl(S=QgYsUG8?c(RtdFz|iH#z56-!8CA)6}y~&NfrjH;ifAc zj|p|Q_UAseuIGZ+OHiB(iAINdPos%Hc0Q|#YN@O3giwCF_?E74YxhV{A^fM23XMGA zyuOF9U%!P&&{AApU_;ALPieZ?dTVo*2PTGGzfx^tt$%k>rQZjjDRjrY^1noqr;>86 zhU}5+Zxi9Vd-Zx>m&$SP!j#5e_YOCcxlKMZ%2b?Dk=&c(!p|Qo!?<&EC{CT(5k~8H zt0Q9vj*<4=o1fPT<7iz!7SvDQ9Qx_64Dyv~Ci#GP2J=No|&-Qm?U^kMU0_xtd%H8&69CR#&?@eLl754UA@!7ar$L zh#S~JQLC#}IxL)LLH^BSjA;J$XXKu}52dq;{X}QXPyfg0O~%T+?eS(Bsj!0JV0pRI z%rTCQ=Y&hWw++nFZF{cvoa#&oSm96TfXq)GX{& zbGG1&SBjz!2=NTE71eq4`};a{Zt!FDtdaPM1%7~4++**RLaS?<@iNS{Y-Q^nE1-3J z?t@>FUI7(eGtfwQegk6VANVav!u}>JU^{lr1b_h_<~w>5>|a{07#gz*)w!Oni1J(* z@ojQi1%|Ypy(DN-FKO=-_8R04RFW_6=8(6LNtv<&F5|me@PV_&le(RH`@Avfv!6WD zWr7Li!FoNU^Bln^|$9-XWvic;M+5GZLy;_ zgeUEG=B_UNhQ0sKD0j1C&OqqfHx6EvDgULV(ToW9K(G1uxOJjJLrpNtL7Pe6ol!dT zYVuZvLy;|eyv8SWQ~zVIm635U{wGA3)Ygbq@Ph;^G?J0>EgC`!;gD_z5%bfwjjK!M zva(hI5T^^M^`brk_vo>L{+y|_`!`oyL4t|`Xs!s1`tw`vl}Z;&XF)owR73Nj#xrio-%vJu!PWt-b_kS!;#scJ&zU1v_U#fWGk?RllFP5`H5 zkhb|+i-{QCC8k8iE6#pbm5}KnVfN;pto^`o_EU7_Heshd z`BNLysn5JT3Vi!LU2gymiDfP-OKtv~3h15f`H^LN+|cDQ22!Di>y`C534-V*1Ad24 zZ{PU46>s0wJM2EEIj`&>{o=*6vy#NTe*B9{?ud&hh>l!ShSYT&kS zmW$xGF5ZuE`++`7J$X@;P?Zk6XPx;B4JF_?xHe$K+R|_(lgj#Clrr)rYAcJ!K3|dbXN)ta=fS3x(bqc}qs1 z-BQPek7K?cP1*-Myrie*wJyaRHlw$=#hUfACPD>6@b9ED;oUtFd5#HAE>W{qmaVg- zr2ek%<~athhpYXb9duVbVm*q)e6rjIbZd#5opEmw*@8N!Z~gV(LJNU?54TiM?T6~_ zu$Pa8-EEb9-6-4bjaA?Ij?3y-Hs=TOs<{34zY;U!Y2uzY3i4#br^MGIdr~#G_K{YG z;;oAQp+`y2Ym&rO#=r%8{b$d?8s3xjTj%_Sr(yf-fT(`@-fKqZHps#>?Pq8FdOn3G zQemfYuj<$>3NM|4vBg;)A19QOF&4+uN3Lk@O`OK)<)5yhV;0k@S5{Kln=W=@PF$6y zi^ZYZf#jKdqZukUKx<*r-wx6S!Hrq{^1e|(I--W#d0#cIr& z84wg4G~4ruVbBO0du(bJcIb21o6oE+sZC2xmm{4Jrj?P@ir8CePr zF+3=3Obi@Ar`=&Fysb$_P4zE(m71XEDp1o6SJ_Wgv?n=p-kG!moy~>B zTH-g#Jb7M7PpUbT7}L%MbW;K6Iv6T~Q!_%sBjs14`B?`=y;e zR7)~oy2};z9Wb_&I*KH4%*j5k$`lmpFr`)vhdvx`K%mD>ElnsKq{m6iEV%S``}kDo~F=7)}gJV zk0DaVRg$J*=Ix&TC!+=g$!v;Xvl##;*4DUdJifb|J+H-lzjtgj*axJdwY?#pA?luW zsx+v@VcCKDE@C-0A>qEzt)!77Z)H%p=C=KD;l(z; zzJ)GgMrsvUCriwH=HY}|K*Vup%~ANyw)TTd&mlKFo&L@!scP)1badNL)QU~sw|d5x z9X)l{=+LAZ6l6B?7~64j);I>qdNA5^Yc0*qdIo<9rv{ams?dC!U$9M4EcT@R06(jD zDfzUP#zwD*1rq9q$d34jf9FFDrCrXgmDl4xv8-D;1xs61ii%jR57#Wv>`@miwO-89 zI(DQy6>DaTvIdDd8TC+esTdp()HW^$hErD4uCQeue0Syz;(ud zJD1!*XhH}YIvD0o&O-gk($S^58vOieFrgJ!X0LLv$*=*f-iIX1IosMXX>OvhPfjI2 z{b-4Zv|x}t`BSYWDZK4RfFEk&gBI96 z@L!mWNx;+f2f$jrW)^tTBKT9QAIvOt=7ymOLzc!81<(1}ss|7q}{V2gNhCTfYY>N<0&m2jWX`Rn}r9(sla$6~) zh&~QW8Fq+!91h9jq-rGk-K>S3fnoIAyZ4mc6PH2N+F!g(xVOMu&&RTTE*!b)gZ$OS zHm&4#Pnx`Bne&Zc7cyplq9}YBrlGW2o=?x2Lv&MGIy{=F!Z^e`6+~;WR$V+_EZ=?O z(ARbgX~D_r6O5eolJ*>%PEI{JZ#_AWIrtBC+Mr8hNopI@7Msd(M=)Wvmp_If%z^_# zVu;gfzUY45=ge9NnYkq5Up>0M=COupy;UYf;mc;bC)bLBu?d_1 z_kuaFV=9YJj-BC2pzYbPFB)MCXVb}TJDn5K5b8e{4}%F@OdbE+vbQaJ5+uyWXA?R$ zt1a13m(|>CIM#xL-(ozc-vxD#$lvYf`mjC9!wc9*$r-z@6)> z%?A@f;1L&v&h5ogfVL^B6yfteq=)GGiwKhFPyY%ZIz60e-~0Q_JC-%aG}B6Y`KW7J z;?TnJRsBgDmDKa_az4_KZV=6#aHcDhsA+8R48~%}{gvW=>U7)Hnu_LNm7>$(`GfB! zD0au%K_cv!+;?!t49-i(-?(vL+_=BQ==zayR5RXd!SA&Gvk1Gd5bJ8*&=4vuV`lNK zBWc#3W|dT;Z7}sHiyc;Gb+%J7;7mhkm0irshD)PIN$a#SU#!Ig$mgF~mezksCP`*T zkb@C0z!w2`iV6bb6ZC34KvI<{El;R`%HidQC>1v199O0>X9J{0Es6g-i zuX{GJYqlZv#hK+1g7fEiagu*@_k^?O*6hp^dTRoedU$G7PCdji88$&m$aAo=Xwti^ zm%e#JBrrs!jiqksc0q?gk^$T^44w#W3gz%H^+)|2;CWQF(2Cbu&9$4^PLrqRD$MKt zhyN=@??Q|d1~lp%8w3w7F|AObLymJNr?%&VBh%5EVD`0KQ*wV39|2zTZResTk1P!% zObP!_A);~L*l65@h8aJQ`per1wXA&J*Z1uEn#?aLH$-)CZH>t>;;NK5XI6UZ1Hr{v zTy(v&c;eltV=VJj>MLnI5N!_?Q7z=>JolHm`3M{P+hUHkr@57xhIhkhU~hXM&v`bo zsZ8u*Yp~C(vJ@l@73o^H+<)|bIbxyGewZ{8TQ)i>d(UI}eyhBwC19q(8Y5*lX~p^2 z*!)=~WJBsEmuaI+iA5c7&kXwW`OT9tN}2>uVE2g(zJXpF&C)uagI+W+J#K z9%`Q7ta)y5WM%nw7pBp&jJ0%>?@9@Qvy3TkRrujRE1oGd2)@P2RDpaee}ujYj`lM$ zilovB#1H-Jr6r3rn{fZ?-g9~kXFcp}(}3{_^6SiCb0x9_yD77S;1Y1)Jug*cR)8gN z5tl9gX!oENq904e7Z&T|&18wBQH2JDP~^Kb$tQE>@}dE9j>EG?B zIvm`c)_*_~WNHZOo|UXJkvHOVpMNLKEq=AiYOaYB5y?@|leL-~?WEfIWkHWZAGQL? zKju6}tR$-t{g3W3u_DQYFZkJy(btIeG0|B9GfY>NsP($ZSW{MNbLPN3V(S;O3(j0Y z4wqSDFMDG?8OH&4l!pnUkn=QYS~RxRWn!h2$er9`>vEACQw|ybv4J^u-KJBAeh{}0 z|HxofP%uzbL|1`7EHXej%|F`Hu)uez_B|9(`$I>LJ~MezyeZfj*ty_N$CRm1%;ITr z?j0BkSQ!2z4#yV!r$EbLVoET)HaCHf|CwYFafdT(PEfja17Tn-Z+#xL{Z(T*G^B5( z?N8II%}x7R%M=o07RsG!bV61+)aH8QD9wedJCnId%Zf4r&CU^hd>?&W#aF@ylky~D z`%%o$r6ob_ACDNSqXqAD)jXHtW)0yNm~Y$pN*!^^7ej0%WxI}1c^_EQThv%3`w3b1 zUe*3(rH-Zar>KtpDz9Xw;Me(dux&BpJ2I{3lNXgJ0 zUbX)D&OpIqf%p1$O6yje=40al_h5V6PkTh@Nv}=%icl>>c@w{ z^8P;}XqQ+mEXWU-rB)o6m{gv~9f6DuW#t7xw1&eq#xrkoNGeYl7LQIM4PL)+c8(*+ zeO4O?Oq}ALb*#!de&x>Qv{V?0g<&9E3+e$r7I2* zsADA5!@!pAk+}<~rDVlr#Ow7!k1-88TgIAch80!Uf-*ECDCUG)6m743Em$#x{RYWL z|4iX-SJ-dmu6w(k==DR_4`00Xz@3;u7(8y6fqgfxuc&BtvTOb%mz=r)d1VNjl)Mxs zxm=UtFvZugo;(XesGR2#9t3um23PkYZRm|C`0`O5c%AnwC-BUW=(7~!gajWU>~B;z zv$qnc+aLZzHw|`OB<(h_BqX%dmR{_GrjAnGDy}H7^RIh7HK~4IuFJ$2fx*Y%?n&%0;E1QyD3AlPlj|8(poM~ntv;sQ3vtN~;9JcRHvD0B-sRdJpwaO-L6G7!n_k}ab==ZpkaJw%tP@H0C*}|7U6%r0Vy#pB5Rr<$;b5m!fg|rh)v!idGBl z&v6)fiy={Kg%dNIUR5or#+_vzRo=hkrDeRQsojW_nGREo3p_vn+tph{+K>vt$`i2v zqx%-3ZwpR$3f>%i{}hsT71+K8OxrT)H}cDqwhLT8@BQUiEE5b~H=M;+J3~!qce3R{ zgC>S9D;h#sbzkDBb~HFaD{grAR3j)Y2eQ zSwch4vNaV`Z^uw;o05P;I4eQ!8I)t1lPY(|zW?oH^U ze?Wv+gJTQIqlF(ofRt4YsN@l{rBAE~`8t<3Q=30qUX;Ow%Q;@YqOF#Avn31Vot0B6 zuvY#^AJcYd@kG=-oh?4bxntA0BpCKxoh~o$VxyC2ka@`>idklXWMiL62L+Bp3JcpL zPS3{41Ns_gxihgKw&_0CRP|VgxNqn78aQslU<_t%zc;?4(h0wW8I*{LML@yOR9iEf5J zlzlG_-Y=kkMBu_x@jt9qeu=fyAG_{Y9;nUKYYh0y612d$6nVug3ueqr>wE@7ScMeAaOc)e}=FGF7mDEK4tj&SWLIN06#xxr|TD;4ev;qZv!GVL~XA`}7 z?c(KNcB2)l^iPsf?Xw@zVVjp~EdpNtwxCBE0Ma!X&afY|KR+*VIO-i#7oFye$h^yJ zg-FF=O^kz2j!Sey^MX?zmb~&6N2gr)Wv0&_m}$+oXgM>b>V%<3QtZ$~Te)Yrf^Ee+ z9+Md+{BjpAKVB|WKOs*+P3gKGt`F^6gYh7va z9KO|(+0z}92ii+i6aLmHc%cy5|3(*OF~b`#`46)|g>$>Buvgp-F6H3Euao(kH|)dC za2X@}$4f$XH@0c2jl-m!*lP?V!3wpkO*xKtGmp7%emngcP1pIZHRJm_Nk`!vIiX>^ zQA&?1{XmNiE8(^mhMK_+HWq2LSg-f|<0X!n$mJE%(HySQoIcxn?aqsR7uGrQSTW=c zav>#%o#DcC`A7A?CXBh4v~X?)cY&J=YV(ccxK&SAzt{(I%Vsgai_$Q6@4qo|K=WDM zXD-uSgnUCO6m?2(`Pd>+;%V*eQfeaG;trCl-ir^hPH*K4bM+<2qoAO5bfyiW-uWvr zdhf?xf5)-wI=)mFK0RH04GpxuQ<#KWTn>OOdX^aUcZ(v3sEr{)oGp`B;yNn}mk``Q zJc1fkD|}QbZTJ?n-333Xgh_5%eiFPvViYQyhJ>DC4D@iApD+WIYSTn-Nv&uT*PVoZ zzB_atO>4@su0Hh<%@40(sqytAr$~&+5nGU{|M{1KjoPWwYEpy3h-O;tA-$Mko&qVj zDTwv2^-%a0Vy1t@h39CwbzZG?joXFpb?~vPo6lpB&HWOkq3lsBy!Xg=RN?0j`Sz`G zT5PQc=n6KZGCL5EnYes#eSV&-INf*s!{j8N;I@;deWtz@pY~WiectvRlWlX&JW zIfHbjmt~+(+tq!=_gAquxi2pqxmD}er*Iqql;%(Et~2fgsHacDe_fbDsT{-fE1hER`l5iC7s;<1ii|#*n~NbKA5`rPy3D6z<>9@EY^vDn-6-kJkln%AS?j4N~f&G-{D|{hhpe~uHGsnCxkJlB9Fl^j5Ozn-Zlxnu5`>a)G@a>`}DSb34a1c zXaVM~v5M#yv1X%0@!*<@x95KHtK6VD7gD7qa?(N0mql;`nJ44BBbOngD_5E;Q}(SC z+W6iTo#VukGKJiubDRCn68i-$ICFy|BYt}nv9aCL8<0MEP;`_l z{4EHN&B~SH!K-Latf#@b!nWWe*$o1RQ+zye+MdVT1|uWeE=Q#@g?ET2(fO&bjGtb`rN;G>a> z{Qfq$Mv6qYwwfL7^(##V|FbX91BeXNF469ltwDeKPLD)ZT28Jm?9ayL6;kIWl+!9H zke`1&nPntXzpbOmW!a^-CyNp^npcHpc$#lAmLHewVPz=|Hn%?xum8yp>{`2<+oAX^ zcbU3H$L}FXU%7!702x(a;sX8xAOGndq&|wqfKsvl`kL##JGvvMwp~@M+UO>($>idb zJT)(Z0+s}NaE+eB!Oa=K9A1EXCdG1eG?uxWV3E*%(!19v8~IoWcF-N&O?$Gx2!rlW zJsNE3-ncT82LO;-hWqAb`sfoW5u}QISzC&un0xF?}|w$a;&Czn&CV}z%GLgy$(4l z@Y;2X8c}!Yg?*xf@hLp?*C0w0<`O4G%NQAT?W}2j_i59oe`MF4*Do0V;$?KA7@}L0 zEf_BD*O&d$P*Vh?lWN1g47HRx`<4(dH|}V0F0st~y~(>h%CX$$>#BUzvn^tMJDg?O zD5_f8@CrqP+E55v@4E%>eK8q2y;D86NyHy^3@2_RwB zjYIbOKDI)6yHorw9e#+bl+3VC>wvrpt~;2ir-Q{*xFrv-*=iaO+RF?Qw$Qzo^relj zWoN$Pa=PC)*G!V^)!+Pi_Kn&3zN%@4^bjCmo)i;4T-?1}Bs)}6UuAp&IiVBi#Plcc(I;#~eq zp=OQXjrUaZ^?%nG;Eb-1X5&T#Fz!(^cwAj(-cK|&gGwQA-i*B|sQZ?lj~*5>?F zwcU({(?6HP|L!0h86%#1HwVo4A+YWeDY~^GyO=STK1%A7?72+-_GP)QZHZ{7gF=e|r2n)laE(y@Z&PG-_x zapMG9A-!)5)D?qw%j?4zlJZ6=SVnD-35f52u;ubix66LKOc=VfeKi!WX?w#F)CxmEONXUR z3HLY$NF-4a5c#6r2DoN~r#jhkbMSj#&$1p3`cxPOgdJ(XVFg!_Gx9Ut?UVwR6^GYN&*hc#iE_c%vUc{bcWWHZ2hY zYJu5#L;hf10>9Mn?XMaP&A>6TdRXKDzAFaXc&G~r)l(g)Ir10w6Igj!A{KeMl)`r+ z=f9yTUh_QVt9)By`=JLZyLz4{Jm2xfB$Z(^mON^2Em;{dVnjS+66!EL@*`jbS!l5y z+fs5CRFCP)1Pl1%F75V$XmNcm8PHTce6o(Z2skm6%JT=V*v=P)ESmsTTxA1~2r=HGdHH|e#pC)wddcteBYg(eZXtYgE z#&Qnkc1Munv{GguZ)XkbKsL?C{tnciV>lQOVq<7y8;1_a>*Olv$$#RWlij(Z9w185 zYVMMi*&i_y1_Uxm2)csyavg6Aa&K5-J=6XIXU-gehef3}BGCgM-wwCS3YH~+%CyhItZuAu_=J(jp&&w zBa0A+OMm|tb=%wa$S@=b8~t^_S)9skuG`@TlZPY?Yh`_Z__hg-zIb63!pJErCCXm| zLgwaO;EQUnuCH78FI8dA3(1O42A2J++NY*GDbAF+ECAQ7D_?~a&#^;xTUY_ek{4i) zTX97FliRM|@Hb{v)UB?8=bfunw-`B35sD4LBdhM?)Ci7gs-`@V;}R38aW7-FSUoPC zX%IS0G`M^19r7RJ4%!wWDDJIbD)FecN$%+_G(1rJCjYu2y|SN~eMvpBeG@=y_Yr#L=Q|87YY%S6*G(pXFMmQI zVR$9=qfTgwAY_hPCUj#cr;W(WNossv%aN^%pjC-izn_<#{Ja@-uH8)iVvnb(n%zs){q;b} zylS_WDblV)ti`yHLk~s~B-RAptmqZp-i-9^@8e^j^DrMvR=n`nZ)%P|S@U&vRB9f6 zmMrG|(hDdcUymX2`@$jca;ni_3-6kVaGmVaQRlyqLn9Z2`+dspDAcaNnkLzWWduYP z?pg=jRp&(P#eAo5Ba)vH*(I6>n6fpZh{nLPy=Q(u_eITxWpkufTfF9vsdZ`lWxAn% zj_w+sISHr;FR7iz^qV-kXP#_-tfgVZEZkM-yq}pF2%K&RHE0&LJdyMv7j^FYKOy$k zcda;Z4(No4C_1J58tc5sd{GlzjcAM4cCrGQve(hF!J_G{*dEQlP@6 z+5s^!H2YSIeWGi;5YOaV8(?IAX+=3G*)+Jw%-Olkf2B!fU_zoUEX%A3`}pP!ZO`3> zx^z9Ej#Fh4k0_?x`fpS6Ar34Vh+vmB)@}i}2%r$dLDGJ~fCHFA@0uFnHbBeP3^#KIH^= zkiEuoF&D5e!fvv2{=_DP6a}H?w|0G*CC)7@>XLaDVr{Ji?-fveU zPI-}v(9hlInm>a`;*m2jF2<2D!3XftF#9P|_iA0_X$MgIwVC$>ri|)3$`U~o?iAkW z(O&${)6B=le{IUNV|Mk=t{- zxQP7PH1kU~Hf7&RWCdnm;5=+CJ0>noI|s6S`To?niFh4*?`cF`07rHx#>J>lYs2=u z-{iueR@l>S1pU@R`0l5Uau1EKQp{DTnD1r;^XpOi1|9_4Pkn;ML#`%E&)T09V{FIU z*9zz1!QMkagj;MLjI<^0T|vmJIZP-66Nbp#u1(2Y!$EjQnj}=P@8;YM7bsddV)vP} zf8e+}AgsP^OG!nNDZsaI=MCYFY1fYxNm-clupN}6lC<&OK5LumtPv7?7()6fENW<< zADUL@ge+!f2}|>|GWq=iD(1E~H@D*9RS$VZDpKPSj_S}pgwW^B+)=h;vbaRhT-h(( zs5D~YtAak~lp!ys*FoKu70RO-4hlYGBg$B`%gyfuP~8zDkp=gtQju9;DC(GI#9=Kt z#riSq!OJItGLoeym3heHU&grb*oH+bonWV{x&D&D)Z!CYx>{bH$0)FdUE z$q+I*OeW+GpZ8Z=!UD}VD&_4GeEyuqULQ@G2f(tkDVN2=8x(&u)WqqO9 z8K6cG#c8@wHCL!As6IAiOHOQKW*V_$mgbNbZ-m&m&sM~dxsFE;xP9{WGr_07_1fR!_WBRFo*dwPj;3(%5 zC2oT}Vzw?DaA7{b3(O00*}Vvco>wc3N^bOg^mlYobguM=>mBamxU~e#(jLl4`;lk zjYc__07o6i?+bt`(RQQ(EjVSfD;U9K&h;Jn1)b<^O(K2J29uu2*BV43pHz7EZRY`l zF*Vs0`WYfcX`Z3fgxgJzeLt}Z)7%18fyrs=9ruW6iaoF~(dY2^S|--Z%Q zmA2MtG78?Wvxo-UEPPXN_iHI3Z@dSUWwsgWg%)GME5Aro39vDW>Yv>5VILCN7c%X5 z?23@kd2#$bMRvI=_=fr3WNQ0@VfI85>?(8hpa00|ZL{e9fF^!laE@wrZD= z2~Ebztz=c>9p8xVAkosLo-~-5JS`(VjsKL1mdfh1K`Z=wBgY;(&J2M1uDpG^!OAi{ z`?$YkIMm0vuRo>RVBR2X%HJ3JLmq1Ec>Ti-M%ajJ%{vR8R+;ru^&qvwl-fO;UE+3T z%lZT_9T9OyS%68l>(ToxC&9T7NjU6nMdl^P(fb^WE+ZyYjV@-duh9iUg#UJ7nz$v+ z9m*k39gXuuyUW#;_>>=Y?k7Pi?_7jw*aWf-gPg^=8O+NeM*eH3XzpTi=0Z9QsZhoB z>`UQfM`s{?v#9r0Qjo6#D_w$CG*4q8NPBOhMa+i#P$etp1N~}+8|Mt@kK05TGO}oHQ2ZMS9&yx~vV{ezd zsw;iV#R!)4>g0F5Yi{@jF#lPeua#F~Q=U)6EHtollF=2R5!&Q>@xe-3M{{f>Bj^77 zixH0`mJ5$fsCBgqBt!&A+G1lbtDh$cUwKwVKF)Au!3YN(?Xy*nrN^^nQF>429QmeQ z9m38+&1f0P?$k68Rhu>|0=r#OqSZd4NGKT*o!Mkp;gA{^>{U#?euZ8@(YL~yPy4ut zZaG8BDK=Vr?PasiHo>N-_c2R?-JenIy(tdxxRZu}*zoO5t!FnsF+Ux)u&Tf=Mc zqB?Y{M^(;;Xl<)6laPmvz>d@7-ULXV!4&&?zpyX3!QNwB=Q9?dX z6yGwL$P4{4xnWVPKv@$SeOB>t!fGwbFy;AwhtCFvdjFL_gb0%U8RXgc#To*GueX3u zn%h~Bu~z3mP1P;C7^#gh?q%T$GS#M$3G}jJx{G~xw_hU*Ob9%kGZerM{J-|TGoXoP zZJXz)sE+~)(wj;X5mD(~K|neJ0#XG8q=eo}qM%?vQ0YB%q(-E-pwgsw0)*acC?P-~ zB=1r@$Mb&Q-}m2>AMEas?99&2+%xw**L4l#P%Ggau@M;IaXI9(^`SA|AnAis|l0_P?_`Timqx zrEE8%)c`1Q#|g!LWH_(8A@hk!-3iIV&kUREA_UBgC)kw#*MSHiwrazkL>D;UCS@D0prTz(|t?f3wvQ-v#Ex2915rFL1HX#cgQ>qk^i<#-%5#{+0X9#e{|# zZW8Ney`n3ao{-D&arwSQ{Q?waoDA7~hfTMEC1O|$P_*0m6SodDds@>rM9K`(OUooJ z{l5D7y21i4nWTk}6Yg_Ycv+a-jR#ywQPQ0z5PcR|L_QE9%jC9_#|-nij2 z2MFt1O1YjM;I)zL1Vj3J&NvvMjJ+Z>tq{lRF2E(u6g4CW(&vxU%A8o0bS-=HA$_Z! z8WLLik(J~jV+eiq^rCnYi&xp#ePEx%!MDx+-hL(yR|IXG&{WmA@HdHVeqO5kVb95E z5s*qDzQkHOhVtuJ8d&D2;_X6iNiDtg$Ge`LUDXR`dEFq+g!98QY(|tc%R*+o`_kDj zSv@^=@)ISe8exsF0?7PlEWjl=m|1SPpmXlB-Y0&0kej@w<16qW0%}W{m`Bo`eA_%_ zf`?hlYjjo2dDwu*a%>x00+Ogo!nbtQ_$o-9+au#1GKY;ewe_6Z z{i_qj&kFAN3sqIP+C7s8uT?gGjlu*8BW!m+=hS-xRK8}vb3yTHZ=@^HCd)Lp#)T#G z$fik;qF}n1-Eq&)nP$DkJLlK0u?>=Z;j(-@xUgy-^-mEh8kNl60g-BjnBcuwW%SN3i`i#+(ugyoj_D5 z=Lx~*mznJ-XXT5u#=TvL=3NezK^=WNXH!jEN$Cvp$vg z+#{YSt~oWE*{tM?>JzL?_KzeK`ox;u*0d#WU)r_0Eg36nsbkl7pGVfJZfAV;FWG~g z_jhbEQiard>UGebF8UKI6z>kL^7VA?r3!T&I-*NpbEG{zkE}hLqy>bEZ~}M~d}~O1 z`xk~)2aF0$o;3utU?A2D8(JE=A(U@`J=-A|$BvovPc1SnsIB~eB;By=52k|HF9zmb zkL67$0})nHfy?6F(zU)$?#mnYWQQ$B6e)t&==7QOPFPeiCLZ&Kr&-ECx^6msnr{JN zs%Wn8ku@P!AWcCbNefsVO<7DILzP`)5pyqkL)8YLu4>BT-&5u4RJpaL)5F|?SG>(# zkx|oCL2HC+oTd}{$#0*e70uzahPqP#o?8hu%eLF|RqDPOL%vSfsZu?n&gyOdj8tHB zaO~libZ99XDZ6bt2JsNKG9(FI;s?pE>lSw!7O(YeL&@^_czG{2%AdEo%|nr<6_e@l zp)pgocWdFX&IRx5e7x%`lY`3x<$VbMpDVg1m+42_gTn@O^3jl)#!>|a1ov$zHU}JH zUsO;SXaSUa?j0m)8B&FIUrpqURlI$~43TrhlwN-;jF;Hasw#Cy*jMvr}dDt0Qma8?*+O z!-u=gU%f(gCELzAU=e6ltVGC)i%ZD6n^y#Vx2S%Mj4~EqVr7z^9^6SdyzTLH?OP_7 zRy@zZ#dm58nY?!U)RUHw1b}zRoc&_)XEnS(D;BGwYF&8iUe(LpHtSI86(pUI^9vFZ z&|ORI9oqG?r7a@O@rq5SYjT6SNiSf}<7*xCWle8cpqAA(ye(@!d0zV1tq9rcYrT4P z)#F7=m+=tQsO22jL@XY&>JX5yYh*gYCj-IX%;RVgNVR9{J>q$e$-D=+*M$5%lP)_o zn;no+|Ch>;^@(R=F{L$*xInp33--Sr8bH+yi#J0LI=L)4%Z6nZW8XeAVPUGq%9W;bo3()G<-5k7FOSB#aEGt?PU%OLw|G(3D>shC4K`$ zd7cZa4j!#qfQr66@b*!)Vx*#!cEkFaWW#mWrd?Zc3nH(JozUO3T=F?8&_C@hiU?cl1cvDf+eI8#U z+xSTQg5*66FweAK7{2zf;CN-nSa*S{KhNg_<0p}?`$Jcmi49*Jt&%zq1GjT3w;7g4 z3x2r!0qDyha~%LQ1G(c}zaU!ASgnuZMQ}KLQtn*6Q^85a^&2lzuMh+D=n2PV+CHH{ z+s$YCG2y*Fn~6J;S>+z!>QiNO}Sx8yrQDRJ*uq zuGPXOkuTPYKO>aKnw(vm_3V4!Lz z2NaxdAAEfW_>Da^=d3Rtvc=A>N}IQt$Q*fGRk-<7&Zj||DN ziDDq_fT*)Q^_F%L_m{`4lJ!~2z3s*25=->D-fo(+g>3)5_P4#)9kp&@YcnJk89gOc zafd52ZX^Y;2J+OTp^ejLpNR@8_}ukcMV?#mA3upYxUc(N8}R5oP@t0b2I5|i*5h*4 zqSCJkzU=kq+OYt;i+Z~5w8v}q52b!|zZljZ<)K}s?9ElHi`!Mqsr8^qycqcM?JiT| z#;dQJ#Z?L+KF*H_X^i{Y&7lc9kLL+p_Io3;G>Crk5WT9*tWe{3B*JG^3g>A+dzf))_vv%Uj2m)|q!J(I{&yadn+Hkqe2O}eT=qS@V) zjiVtOxRT(yofj_$6Qw%PuzPF;R)l@d=wLFVZ=S8Z1nM)6U0;-%D#iAOjRxF0JJ@Ho zlajEr`yW2?1ckm$H5>`o_2H!MaoW(I89#86W4rV^Vlp17=s| zm|bffg~}3gSM~tTQbiG@pqV^xJNbx;53^a?e)~v~R16S}K4 z`a_EyQN_}Es3P6Rp?eJ(-TS0r|JuzybaK%VcckHVL>v81CP4l& zn%3w!jJ{6?t|54zM>Og)Q|ft2dF-p=aSYr1f0Jf>DmLMy}8>A|UFhj#y?b4OWjHmUKf!o$4 z*SW7TB1@I$QmlCD>NFZ}WZ7boHhWj7_;0R+@bv~)?<~2ks9iQ|hL3N~g!iT#BFx$+ zpC?GeDnPhFgqxRa!2J3i>O*{0w71*~zpVW6`%azJjGY5$dL?~KcHO|We%D~AZGN(# zfa~h7iWy+Z{l&zT?0Ko!$oNRQ2|e@nsygClqW~HJ*Fu2aZ4T3gP>wk?1k}nD$wowk zvoLqx=v*Yts@>I*!9unA{mxALG`ZU@aX(&zd3PViv)<~LEVRWs?+smGDRRDwHEFg_ zsQuQb{CRd?jzdjt&DnDun=nJld6_}Pb1NhAEy4o{)zJPJO!T(u)#(tA6}TTRLqu@* z1=<<-_}x{TgH5E|fJQ`6kv57xJ)6SZ_(9)kJ1NEZL1*NWpY(I-+#kZssnEE-7+=Gr zd3VbtMg^-mLlpJSLv)&>=F6^O3}@M{e>rM#v~xtIJ(=E`SI^K05EZaRQUdr;#qptN zrWHVSXdby@Yf!G;=lwet5Y@yt?5oxGE3b1Qd(}v4ei+{!j=X8|ggz=<$PJyGI}m6T z7+9#2m@?j22O_aA)qu6+v_y?v(099WKi4XzV!1EAES~i5WfP&L@qTP-5EYjPZpa$;`UmCs%=I?LnQxSg`}bx1v^cZDCW1`hzRj95#@;KX(1H2` zhOkK}eH6BF0g&m?%of&X@w_H|P>P>jHvMSJr%DDZW3Q|+cK2%k{`NC9(nnU3lx%6N zO@&FrA=J+{t4rUVx;FEpS2g*4zbxMkT;!xB2f}&7LAfwGQOY~FgfM?JurImuoBrj- z&+z$L#O2tUTa|dvz2aq&s2lb6jpueoCd}2F<5M0~h!m>-9BPdkpV9i)YaOU+Vnh<1 z>kG*U%gpm@X%7249^ga|@6lZP0MuTvZTrSE7=pfZ;~+amA^I6D5Fa=XiSx8WEw8E? zgqh@yQVRS2*lO%!u`hd(!*NrB) zo3KxGvstJKepG&g-VaiFcT&w|Lz=it+%zF}1^;*-(}kbSZate?n`kJ!xiE!}`SGa{ zGIl@bv(A?oAqngrp6wW;$r~T(+2IU7ip=aK1`N!6_JSOgKQVXOLEzQ9(76nuKI_fY zq51B>%3f5Wl;HHw<@(MsZeP_VkOo+ zQ_1vw@__W7(TzhD7jA@_uH#GOTyd| z;~=qZLa1w`4w$OrBQz6Jshws<)fS|PT~@nzKI(vEwgv3|Ld+QwG>0^PE|j=d+?u(& zd+0JxQ)j-@!*znh1NgB{p-yMhKQVE=KNrb_Z)Se5>5# zkdf#(5$d0DB67u~Qd)GlvA_A*MhdVOfjugZKHXRUqp=QviFnhfkapno6{KuT);1ia z2i_X{$qOI|*FD}f$AiCym^g5M33hg-48lF0}cRop)1n%fzzuY#81$iV7;kUbCXb!RZ9`5nCSJZ3+$)L+1Wju(1rIh zH8Wh@6NKUK7x;K$q7E-{xk79PQo|WpX7g03SQxbUsIoD?bjw(ypvPMnkdTyjtDl}7 zWha)_>0~5c`jVK}NDDvfk?O~|1s}W&dy+(l>@U3Ul%%wLZu+c|LLq(k(813I#u#_vSDnY$9#a_XblMiPgprS^ z;#ZLXivpG7iNwFFwm~f1u*SIr3VH-}9#)Z_JhkHjWypWZ)qR5lE>gsq%HeU`d00uy zJ1c?Jh$w}x6K^m-RBxen?AIuwBID@>w#S_m9o8$hhs;Hr{eeZ08U(m$GM3SODSB() zgmpZ6Q+vKMo+PQw=Udj{oxI&eE`Lc_Qsw-QQ&ykDys}X0_G}SP?X-`;A<5V@Rde(C z4iOKq^_8&3r6ZDS2;tsI2`4*$)0&R1Qx1>WBewYYFN;I5gV}|nmO&U}m9|SG&vBjp zl2e<2#!l+|dXKQ*!9u+8u4(3Lr#xfVs+4vx z#>#YX7msU%Bc+5b*A8cN3XLV!rWQ{!C3zKo3Zy)~)}L7tguz*G-C^}_@D zja~z|Y7KZMRTtJK&E$HPqSKeh{AInc+iQod?P}Y)Jo+6KRr+fs+FmV{{6V{D!-zT% zakFiX3{B}hxg>|7$>7+A2UjVMe*RXm*Dxp?&DSBW?b`v?4f(hZahoFO@-!z+qgf@K z`xiIU11Xq?B<~hNBNH{suLA3zNv@|z9O`j>{PWHTiX_ij)1T;)-nz)q#i-#%|^64AtLe$<+U$EIc)xpL| z^p`5DjJ|Go<2M}vyqaYv*+JDW$e~p}1nlrwjI>kRA=o7H#>vK(BqZ^tYlg=qf336F zn`hgd9A^Kk+K`_q{C=@RpSa1$Mn6DPKijd?kLhvZUwEnFRiduKp96%6Ho2cCXnpes z);M-Ryq+G)KM3ZTWb69JQWl2>VKAIg(@%L;LBOLL5br$J^Xp8mIOoNG^9k;xSH1R$ z{iBt=CSS^{8RlEFYheaUFqPEx0eDt=x#q^RYm48@cmX2}@Rr8nhsE7T!uvU>{$?OA zgrX&#?Uvg=WHjszS^jinxUx(G6Um!4x4sf-v_Jo%XYeOblR;rdHQr-jNvpbK>WOyq zMu|iMffmZ8?6VE*hkf*Uo%QEPwD<`uQj&SS!isv1_N|svpei#X3eU`voFtg>g77)M zOU8(mPV}~^ud`-v`kAUyiA&k0fH0}NYVO{zTztl{j-P^>FTm*Q`Qg{x8ou@5{NtVL zlKbTYyQkLGgYPtSa-4aIjGfA@S9})Y!q)UWvvBU*-GJOn(8WpG^FidN%DA~ z3t(W4fHs~~_EC0=A~J_u9O_bj9a&mFmncl~5u0x^X8*b`m;eU=P78Wo0~-hcit7r8 z!~i}RPtpA964jKcUHSW78~t><-NK|PCjfS={c?9%=(dHvWA<%vkIFr>w+F`7-d!$p zr}>O7{b{gVnTnt;->Bfj&fpH|Aaf_Qa*J`&c%J)#uFr$IJO-)6&(&f#DmYq~Z|WYK z(8q5C=VAh)D@z0+>Yftz`bs`>cwjyh#uCgTafkD`&PYfY*iS`Fj;>SKs$G|ZHtr$R z;Q&6w1Fy1H0f_wdrZ8Wl1xe@uvcH*}q@c+qk1#mvz+!&|wd1Dgoa>t{knVPt& zKn_WC$@RuN%A=Rxo<1oW(Dgb!1rB0gT^4KuUhQK+ z7`;TJF4u_x|FJf;)q_IIA$~6>cV~b){HCU)1|IOlug-KV?wC15ao!_IIiYwEmd6rJ z`smi_&FufH2G58SusQKhv)$h}TBptg?I1shaagJ_u$o$`zS6zob*FO)WB~bcVpK=n z5Uob8UoGj9gglfCPj5H6$a>n~juOP)_R6m4fOrv>eZnSw^ep7cbabP}6RUS`!|BVA z!Y;3j2$k`s>v2nd{?#2gK|bop!4C?B`T`=ScVpP$pj=yimE8wkx)dtBmGtU7SLMeA%I})>IqsIbGX8*CS)LfHwJi?& z^lyHcc{H3psHq@c`ub@;45z{e$Cr~k+|osW04)w?REW~_p4NWe&6Dfw>1;GU627)?oQgCFc|YnR; z;^Rl!fP8H&cC{*-rBzHzaJAO6IqZ2T!F2(N$Hca;`wxngbF&HKQ6JR&%;kM%|2`?( z_pzBjn~;5`xe40gh3$IWI+KKc43x^Z_>POYSBK|f;x+-Gk%=K7>VqXPEDm;_Pu%+u zlsZ%a#G|ClWUorxBqgjN$R4q_5dx)hFt($GV)^SI&1E!Bs`{RyUKtebuWS;3V#F^;-jJxOe zi(voLXp|qV$oJW>S>|rHd14|mFJjr8{QDAE5;QatEcu;rKO4TJ40vNfUKwhB76+En z1_vFk-eOkn#A6#LstMS*Fy#yAn;deO`9La&Kf2B!Vw~snnd1Meu?^mm#x>2ttRMys z%DXx1zF%#$T@RC#5c-0qKljb2)YBs-e0?-|0EJZ8W$DMhT`Z4QqQC;XbG)S&CDrd3 z2;RO{5^w|?MFQdjYRoL7l1d>omS8<&jN&a(+ef~qc?u~1F$4NuaCKQ)D92={JUdsq z8ju1|FQznK9y4|)q`&LRrcTU3Jvc_n0P0YaXT(D~$=<_bbhW@@kQtAG`tg8$(t>CD z0=6ppQ&GU^JF|sk7bJF!rsQXoR2m^BH1`016j2gKaUO)OfBtdJ;bvF%wzH?J<&xG% zfL$EMK^s5=s4Td8uTjx`Xg5l}@{Bm|lEC7{zM$PL^RA1iW%^iL>acSYoBn&ir22Ef zta!F>Ioko=-5h02hvAWYLhNpNW5zpvPYJ9v7Hd_UH!Obn*VVwr>w21(d!zw{^J0g) zG*Xx+Y>&88P1y|SLw>{BLtU5f+Xf-c!py-gch-xngsCUKR?eD%7FFz2>W2mVz9A%% zsY|kfZv1&o4}8B@GC{Y@p(o#{H16T1@;A=1o6jzs)Gb<(cslSLT|4Goj)w{IuXUtj z`JMc?BE0ydT|k^_bsvPgR-df14)n{0`Z~LICnnQJ1fJv7bvMKEvA|(a{;jBv6$LqA z7x-QeG_?(IJ&CvAW2V0<8Y(7PC6NW6A1) zIsK38^*`qsr-_RX|19xoV)vUrr^}~_DQB+!5j{9fe0cu1*4$~r(cv}u<9`bJM|}XN z-EZ&$$0?I{H+P8@`$P&7`;iGE3UaXmb9lHOc8TQs+BPe3?P#lsZc}_S1Wy~I@`ik2 z9YRrodDdPi)&QWi2=tFE(iNr2D@XA5jNy!DM>=dMLgZ z1d~5E>IK~Jb=Vv$VYBYYp|X!4Zhs^uDQ7)w-i?60@&zyC#45YJ|7((!@YK44`AG{0 ziNM0qmoJHZfZ-2;XE@D*gyi}v0M%J1&eRcL)B#udV7L}_*}q7>ORjzomVyxB7C<7g zZ2*SPhFm`W&1(ah=+oHHzwbdp@=u%pqcV<9|LL6nyGBU@(S?lSbfs{TOMyIuQfG#}N4e&lds1 zv!DFhKI(sUrr$RO76Sf=YyVCayZp}>@VhQfj{gi+|6L!z)jz}k|5GLZH-ih_1jvX; jd=u2G1Duc^xzJ}wxMe3OJ|_4cyCsTpYL5$LUikkHMa5

VNcK}X7 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 z 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�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