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

生产工单工序报工仓库 - 前端联调方案

涉及页面

  • 生产工单 - 新增/编辑弹窗 - 工序列表(process-list.vue)
  • 生产工单 - 工序新增/编辑弹窗(process-form.vue)
  • 工艺路线 - 产品页签(工艺路线产品报工仓库配置,作为工序默认值来源)

业务流程与数据带入

  1. 工艺路线产品配置报工仓库(mes_pro_route_product 的 warehouseId/locationId/areaId),该配置是工序的**默认值来源**。
  2. 生产订单下单(新建工单)时,工序列表从工艺路线带入,工序的报工仓库/库区/库位默认取工艺路线产品的配置。
  3. 下单时可对每道工序单独修改报工仓库/库区/库位,修改结果随工单工序一起保存(工单工序为快照,不受后续工艺路线修改影响)。
  4. 生产报工审批通过后,产出物料按以下优先级决定入库位置:
  • ① 工单工序上配置的报工仓库/库区/库位;
  • ② 工艺路线产品上配置的报工仓库/库区/库位;
  • ③ 虚拟线边仓(历史数据兜底)。
  1. 工单已存在但工序未配置仓库(本次改造前的历史工单)时,自动走 ②、③,无需补数据。

API

方法 路径 说明
GET /mes/pro/route-process/list-by-product 按产品获取工艺路线工序列表(新增:默认报工仓库)
GET /mes/pro/work-order-process/list-by-product-id 按产品获取工单工序预填列表(新增:默认报工仓库)
GET /mes/pro/work-order-process/list-by-work-order-id 获取工单工序列表(新增:报工仓库及名称)
GET /mes/pro/work-order-process/get 获取工单工序详情(新增:报工仓库及名称)
POST /mes/pro/work-order-process/batch-save 批量保存工单工序(请求新增仓库字段)
POST/PUT /mes/pro/work-order-process/create、/update 单条新增/修改(请求新增仓库字段)

请求参数(batch-save / create / update):

参数 类型 必填 说明
warehouseId Long 否 报工仓库编号,不填则按工艺路线产品兜底
locationId Long 否 报工库区编号,需与 warehouseId 匹配
areaId Long 否 报工库位编号,需与 locationId 匹配

仓库/库区/库位三者同时填写时,后端校验层级归属关系;只填部分时,报工产出按工艺路线产品兜底。

响应字段新增(list-by-product、list-by-work-order-id、get 等工序查询接口):

字段 类型 说明
warehouseId Long 报工仓库编号
warehouseName String 报工仓库名称
locationId Long 报工库区编号
locationName String 报工库区名称
areaId Long 报工库位编号
areaName String 报工库位名称

响应示例:

{
  "code": 0,
  "data": [
    {
      "processId": 1,
      "processName": "焊接",
      "sort": 1,
      "warehouseId": 5,
      "warehouseName": "半成品仓",
      "locationId": 12,
      "locationName": "通用库区",
      "areaId": 31,
      "areaName": "默认库位"
    }
  ]
}

字段展示规则

字段 展示位置 说明
warehouseName 工单工序列表「报工仓库」列 有库位时拼接显示「仓库/库区/库位」,未配置显示「-」
warehouseId 工序新增/编辑弹窗 下拉单选,选项来自仓库精简列表,允许清空
locationId 工序新增/编辑弹窗 下拉单选,依赖 warehouseId,仓库变更时清空
areaId 工序新增/编辑弹窗 下拉单选,依赖 locationId,库区变更时清空

产出物料过滤

同一工艺路线可以关联多个产品(工艺路线产品)。下单/排产按产品获取工艺路线工序时,工序的产出物料会自动过滤,只保留「通用产出」和「当前产品专属产出」,其它产品的专属产出不会带入。

产出归属在工艺路线工序弹窗中配置:产出物料可归属到某个产品(专属),也可留空表示多产品通用(适合同线共用的半成品)。详见 docs/route_process_output_attribution.md。

示例:路线同时关联「油浸式配电变压器」和「光伏固定支架」,包装入库工序分别为两个产品配置专属产出。下单「光伏固定支架」时,该工序只带入「光伏固定支架」;若该工序还有一个「通用」半成品产出,也会一并带入。

工艺路线配置页(按 routeId 查询)不受影响,仍展示全部已配置的产出物料及其归属。

工单工序新增/编辑弹窗中的「产出物料」选择器同样按此规则收敛:候选范围 = 该产品工艺路线中带入的产出(通用 + 本产品专属)+ 该工序已有产出 + 工单产品本身。产品未关联工艺路线时不做限制,保持原有可选范围。

业务规则说明

场景 规则
新建工单带入工序 仓库/库区/库位默认取工艺路线产品的报工仓库配置,可逐工序修改
修改工序仓库 修改后随工序保存到工单工序快照,报工按快照执行
工艺路线后续修改 不影响已创建的工单工序快照
工序未配置仓库 报工产出回退到工艺路线产品配置,再回退虚拟线边仓
仓库层级不匹配 后端校验 warehouse → location → area 归属关系,不匹配时报错
倒冲扣料 仍固定从虚拟线边仓扣料,与产出仓库无关

注意事项

  • 工序仓库三级字段为可选:历史工单工序没有仓库数据时,报工自动回退,不会报错。
  • 前置仓库、库区、库位下拉数据分别来自 /mes/wm/warehouse/simple-list、/mes/wm/warehouse-location/simple-list?warehouseId=、/mes/wm/warehouse-area/simple-list?locationId=。
  • 只清空仓库而不清空库区/库位会产生脏数据,前端在上级字段变更时需级联清空下级字段。
  • 产出仓库改为实际仓库后,虚拟线边仓的库存不再随产出增加(倒冲扣料仍从虚拟仓扣减),属于预期行为。