# 零件改制功能开发说明 ## 01-功能内容 ### 1.1 需求来源 因现场计件和生产过程追溯需要,将零件改制流程接入系统管理。该需求由罗总牵头,组织技术中心、精工车间、仓储等相关部门讨论后提出。 ### 1.2 应用场景 - 技术中心根据现场或订单需求发起零件改制订单。 - 改制订单进入精工车间生产流程。 - 精工车间可在生产任务查询中查看改制任务。 - 车间派工可查看改制任务并进行派工。 - MES 加工端显示改制订单编号,现场按改制任务加工。 - 改制过程形成记录,便于后续查询、统计、追溯。 ### 1.3 功能范围 - 技术中心新增“零件改制订单发起”组件。 - 左侧显示订单/产品,右侧显示所选产品下的零件。 - 点击零件操作列“改制”按钮后弹窗发起改制。 - 发起改制时要求改制零件图号不能与原零件图号相同。 - 后端生成改制订单编号,规则为:`BHGZ + 年月日 + 4位顺序号`。 - 后端写入 `技术中心_改制订单记录`。 - 后端生成精工车间工艺计划任务。 - 后端自动添加默认工艺 `改制`。 - 改制记录表回写 `工艺计划流水号`,后续查询统一按该字段关联。 - 生产任务、派工、MES 待加工显示改制订单编号。 ## 02-程序开发步骤 ### 2.1 前端组件 文件: ```text src/views/TechnologyCenter/PartModificationOrder/index.vue ``` 开发步骤: 1. 新建技术中心零件改制组件目录和 `index.vue`。 2. 左侧订单下拉使用 `订单信息_列表_查询数据_bak` 获取订单列表。 3. 左侧订单/产品查询使用 `技术中心_改制订单_订单_查询`。 4. 点击左侧产品后,右侧零件列表使用 `技术中心_改制订单_零件_查询`。 5. 右侧零件表格增加操作列,提供“查看图纸”和“改制”按钮。 6. 参考 BOM 查询/维护组件“更换物料”交互调整改制弹窗。 7. 发起改制提交前判断: ```js var oldDrawingNo = (this.form.原零件图号 || '').toString().trim() var newDrawingNo = (this.form.改制零件图号 || '').toString().trim() if (oldDrawingNo && newDrawingNo && oldDrawingNo === newDrawingNo) { this.$message.warning('改制零件图号不能与原零件图号相同') return } ``` 8. 提交接口使用 `技术中心_改制订单_发起改制`。 ### 2.2 后端表结构 新增或维护表: ```sql 技术中心_改制订单记录 技术中心_改制订单排序 ``` `技术中心_改制订单记录` 需要包含关键字段: ```text 改制订单流水号 改制订单编号 原订单流水号 原组件流水号 原基本件流水号 原零件名称 原零件图号 改制零件名称 改制零件图号 改制数量 精工期限 工艺计划流水号 状态 发起人 发起时间 是否删除 ``` 如字段不存在,执行: ```sql IF COL_LENGTH('dbo.技术中心_改制订单记录', '原零件名称') IS NULL BEGIN ALTER TABLE dbo.技术中心_改制订单记录 ADD 原零件名称 nvarchar(50) NULL; END; IF COL_LENGTH('dbo.技术中心_改制订单记录', '原零件图号') IS NULL BEGIN ALTER TABLE dbo.技术中心_改制订单记录 ADD 原零件图号 nvarchar(50) NULL; END; IF COL_LENGTH('dbo.技术中心_改制订单记录', '工艺计划流水号') IS NULL BEGIN ALTER TABLE dbo.技术中心_改制订单记录 ADD 工艺计划流水号 int NULL; END; ``` ### 2.3 后端发起改制过程 存储过程: ```text 技术中心_改制订单_发起改制 ``` 处理步骤: 1. 校验原订单流水号、原组件流水号、改制零件名称、改制零件图号、改制数量。 2. 后端再次校验原零件图号和改制零件图号不能相同。 3. 生成改制订单编号。 4. 插入 `技术中心_改制订单记录`。 5. 插入 `车间生产管理工艺_零件工艺计划`。 6. 回写 `技术中心_改制订单记录.工艺计划流水号`。 7. 查询基础工艺表是否存在 `改制`。 8. 不存在则插入 `车间生产管理工艺_基础表_工艺名称`。 9. 更新或插入 `车间生产管理工艺_零件工序`,默认工艺为 `改制`。 10. 调用或复用 `精工车间_工艺保存_派工`,将工艺计划推进到工艺完成状态。 11. 更新原组件和原订单为精工车间承接。 ### 2.4 查询接口调整 需要调整的查询: ```text 精工车间生产任务查询 MES_机加工MES_零件待加工显示 车间派工相关查询 ``` 关联方式统一改为: ```sql LEFT JOIN 技术中心_改制订单记录 AS GZ ON 主表.工艺计划流水号 = GZ.工艺计划流水号 AND ISNULL(GZ.是否删除, 0) = 0 ``` 订单号显示规则: ```sql ISNULL(GZ.改制订单编号, 原订单号) AS 订单号 ``` ## 03-推进台账 | 轮次 | 工作内容 | 修改文件/程序 | 验证内容 | 下一步 | | --- | --- | --- | --- | --- | | 1 | 梳理零件改制流程方案 | `零件改制功能设计方案.md` | 方案内容、流程承接关系、入库节点 | 生成 PDF 和流程图 | | 2 | 生成方案 PDF 和流程图 | `part-modification-plan.html`、`part-modification-plan.pdf` | PDF 文件生成、流程图位置调整 | 开发前端组件 | | 3 | 新建零件改制组件 | `src/views/TechnologyCenter/PartModificationOrder/index.vue` | 组件路径、动态路由加载不再报 ENOENT | 调整查询接口 | | 4 | 查询接口调整 | `PartModificationOrder/index.vue` | 订单查询、零件查询接口名调整 | 优化界面 | | 5 | 参考 BOM 更换物料功能调整界面 | `PartModificationOrder/index.vue` | 弹窗交互、物料选择样式、eslint | 后端过程设计 | | 6 | 设计发起改制后端过程 | `技术中心_改制订单_发起改制` | 生成改制记录、生成精工任务 | 增加改制订单编号规则 | | 7 | 改制订单编号规则 | `技术中心_改制订单排序`、发起过程 | `BHGZ + 年月日 + 4位顺序号` | 增加默认工艺 | | 8 | 增加默认工艺 `改制` | 发起过程、基础工艺表、零件工序表 | 自动添加默认工艺并推进到工艺完成 | 查询显示改制订单号 | | 9 | 查询关联改制记录 | 生产任务查询、MES 待加工显示 | 订单号优先显示改制订单编号 | 完善验收 | | 10 | 增加原零件信息字段 | `技术中心_改制订单记录`、发起过程 | 记录原零件名称、原零件图号 | 联调完整流程 | ## 04-任务矩阵 | 任务编号 | 任务名称 | 状态 | 验收标准 | | --- | --- | --- | --- | | GZ-001 | 编写零件改制功能方案 | 已完成 | 文档包含背景、场景、流程、表设计、接口设计 | | GZ-002 | 生成 PDF 和流程图 | 已完成 | PDF 存在,流程图位置正确,流程包含入库 | | GZ-003 | 新建技术中心改制组件 | 已完成 | 路由可加载 `PartModificationOrder/index.vue` | | GZ-004 | 左侧订单/产品查询 | 已完成 | 可通过订单编号下拉筛选并显示订单/产品 | | GZ-005 | 右侧零件查询 | 已完成 | 点击左侧产品后显示对应零件 | | GZ-006 | 发起改制弹窗 | 已完成 | 可录入改制零件名称、图号、数量、精工期限 | | GZ-007 | 图号一致校验 | 已完成 | 原零件图号与改制零件图号相同时禁止提交 | | GZ-008 | 改制订单记录表 | 待数据库执行 | 表包含原零件和改制零件信息 | | GZ-009 | 改制订单编号生成 | 待数据库执行 | 编号符合 `BHGZyyyyMMdd0001` 规则 | | GZ-010 | 发起改制后端过程 | 待数据库执行 | 成功写入记录并返回改制订单编号、工艺计划流水号 | | GZ-011 | 默认工艺 `改制` | 待数据库执行 | 基础工艺不存在时自动创建,工序默认改制 | | GZ-012 | 工艺计划流水号回写 | 待数据库执行 | 改制记录表能通过工艺计划流水号关联生产任务 | | GZ-013 | 生产任务查询显示改制单号 | 待联调 | 改制任务显示改制订单编号,非改制任务显示原订单号 | | GZ-014 | MES 待加工显示改制单号 | 待联调 | 加工端订单号优先显示改制订单编号 | | GZ-015 | 改制记录查询 | 待开发 | 可按改制订单编号、原订单、零件图号查询记录 | ## 05-验收证据 ### 5.1 前端文件 ```text D:\景耀\JY1.0\src\views\TechnologyCenter\PartModificationOrder\index.vue ``` ### 5.2 文档与 PDF ```text D:\景耀\JY1.0\零件改制功能设计方案.md D:\景耀\JY1.0\part-modification-plan.html D:\景耀\JY1.0\part-modification-plan.pdf ``` ### 5.3 已执行验证命令 ```bash npx eslint --ext .vue D:\景耀\JY1.0\src\views\TechnologyCenter\PartModificationOrder\index.vue ``` 结果:已通过。 ### 5.4 关键 SQL 验收点 发起改制成功后应能查到: ```sql SELECT * FROM 技术中心_改制订单记录 WHERE 改制订单编号 LIKE 'BHGZ%'; ``` 改制记录应回写工艺计划流水号: ```sql SELECT 改制订单编号, 原零件名称, 原零件图号, 改制零件名称, 改制零件图号, 工艺计划流水号 FROM 技术中心_改制订单记录 WHERE 工艺计划流水号 IS NOT NULL; ``` 默认工艺应生成: ```sql SELECT * FROM 车间生产管理工艺_基础表_工艺名称 WHERE 工艺名称 = N'改制'; ``` 默认工序应生成或被更新: ```sql SELECT * FROM 车间生产管理工艺_零件工序 WHERE 工艺计划流水号 = @工艺计划流水号; ``` ### 5.5 页面验收点 - 技术中心零件改制页面可以正常打开。 - 订单编号下拉可选择订单。 - 左侧订单/产品数据去重显示。 - 点击左侧产品后,右侧显示零件。 - 点击“改制”打开弹窗。 - 改制零件图号与原图号相同时,页面阻止提交。 - 改制提交成功后返回成功提示。 - 精工车间生产任务查询可看到改制任务。 - MES 待加工显示中,改制任务订单号显示为 `BHGZ...`。 ## 06-决策记录 ### 6.1 为什么改制订单号使用独立编号 改制订单不是原销售订单,也不是普通生产订单。使用 `BHGZ + 年月日 + 4位顺序号` 可以明确区分补货改制任务,便于车间识别、计件统计和后续追溯。 ### 6.2 为什么改制记录表要保存工艺计划流水号 早期临时方案按 `原基本件流水号` 关联改制记录,但同一个基本件可能多次改制,会导致生产任务或 MES 待加工数据重复显示。最终决定在发起改制时回写 `工艺计划流水号`,后续查询统一按 `工艺计划流水号` 关联,保证一对一。 ### 6.3 为什么需要保存原零件名称和原零件图号 改制后零件名称和图号会变化,如果只保存改制后的信息,后续无法准确追溯改制来源。增加 `原零件名称`、`原零件图号` 后,改制记录可以完整展示“从哪个零件改成哪个零件”。 ### 6.4 为什么前后端都校验图号不能相同 前端校验用于提升用户体验,避免无效提交。后端校验用于保证数据安全,防止绕过前端直接调用接口造成无意义改制记录。 ### 6.5 为什么默认工艺设为 `改制` 改制任务进入精工车间后,需要可派工、可加工、可计件。如果每次都人工制定工艺,会增加现场操作成本。自动添加默认工艺 `改制` 后,改制任务可以快速进入派工和生产流程。 ### 6.6 为什么不继续按基本件流水号关联改制记录 基本件流水号代表原零件来源,不代表某一次具体改制任务。改制任务真正进入车间后,对应的是新生成的 `工艺计划流水号`。因此正式查询必须按 `工艺计划流水号` 关联,避免重复数据和错误显示。 ### 6.7 为什么生产任务和 MES 显示改制订单编号 现场需要识别当前任务是改制任务,并且计件、派工、加工、入库都需要统一单号。生产任务和 MES 端优先显示改制订单编号,可以减少现场沟通成本。 ## 后续建议 1. 补充 `技术中心_改制订单_记录_查询` 接口。 2. 建立改制记录查询页面。 3. 对生产任务查询、车间派工、MES 待加工显示做完整联调。 4. 补充改制任务取消、退料、异常处理规则。 5. 如后续恢复“非毛坯物料改制需要领料”,再扩展领料单生成与仓库出库状态。