编辑 | blame | 历史 | 原始文档

排产下达自动触发第一道工序质检

功能说明

生产排产下达(生成生产工单)后,若第一道工序需要质检(isQuality=true),系统自动为该工序预生成一张过程检验(单道工序时生成出厂检)质检单。质检员无需等待该工序报工审核即可直接在质检列表中开始检验。

涉及页面

  • 生产排产/生产订单下达
  • 质检管理(过程检验 / 出厂检验 列表页)

行为变化(纯后端,无新增接口)

1. 排产下达自动预生成质检单

覆盖全部工单创建入口:

入口 说明
生产订单绑定工艺路线 bindingRoute 生成工单后预生成质检单
销售台账生成生产数据 addProductionData 生成工单后预生成质检单
印刷单逆时针倒排 processRouteAnticlockwise 生成工单后预生成质检单

预生成规则:

  • 取工艺路线第一道工序(dragSort 升序 + id 升序);
  • 第一道工序 isQuality 非 true 则不生成;
  • 仅一道工序 → inspect_type=2(出厂检),否则 inspect_type=1(过程检,process=第一道工序名);
  • quantity=工单计划数量;
  • 关键字段:work_order_id=第一道工序工单 id,product_main_id=NULL(未关联报工)。

识别预生成质检单:quality_inspect 表中 product_main_id IS NULLwork_order_id 非空的记录即为排产预生成单。

2. 报工审核时认领并更新

第一道工序报工审核(nextAddProductMain)时:

  • 若该工单存在预生成质检单(work_order_id 匹配且 product_main_id IS NULL)→ 认领:回填 product_main_id=报工 id,quantity 更新为实际入库数量(产出 + 加放 - 报废);
  • 若该预生成单已提交(inspect_state=1)且为出厂检 → 先删除按计划数量入库的库存记录,再按实际数量重新入库,保证库存准确;
  • 若不存在预生成单(如工序临时新增)→ 走原有逻辑生成新质检单。

后续工序(非第一道)报工审核时仍按原有逻辑生成质检单。

3. 列表/报告展示

  • 质检列表的工单号通过 COALESCE(qi.work_order_id, ppm.work_order_id) 关联,预生成单(无报工)也能正常显示工单号;
  • 检验报告下载:预生成单(product_main_id=NULL)按 work_order_id → 生产订单 → 销售台账 反查客户名称。

4. 删除清理

删除生产订单 / 删除销售台账生产数据 / 删除生产工艺路线工序项时,自动清理对应的预生成质检单及其检验参数;若预生成单已提交(inspect_state=1),则拒绝删除并提示“已提交的检验单不能删除”。

API

无新增、无修改接口。均为后端行为变更。

前端修改点

无前端代码改动。

若需在界面区分“排产预生成”的质检单,可参考 work_order_id(非空)且 product_main_id 为空进行判断。

数据库变更

执行 sql/quality_inspect_add_work_order_id.sql

ALTER TABLE quality_inspect ADD COLUMN work_order_id BIGINT NULL COMMENT '生产工单id(排产预生成质检单关联)' AFTER product_main_id;
ALTER TABLE quality_inspect ADD INDEX idx_quality_inspect_work_order_id (work_order_id);

注意事项

  • 预生成质检单仅针对**第一道需质检工序**;中途工序仍需报工审核后才生成。
  • 质检员可在报工前直接填写检验结果并提交;出厂检提交时会按计划数量入库,报工审核后自动按实际数量修正库存。
  • 已提交的预生成质检单在删除订单/工单时会提示“已提交的检验单不能删除”,需先撤销或删除检验单。