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

WM 仓储单据 BPM 审批 + 设备联动 - 实施进度

记录日期:2026-09-07
状态:阶段1 改码完成且 MES 模块编译通过、数据库字段已补;阶段2 已完成代码分析,尚未改码;阶段3 尚未开始

需求

  1. 设备入库、废旧物资出入库(杂项出入库)、物资退货(供应商退货)等全类型单据,实现线上创建、审批、查询,**全部接入真实 BPM 审批**。
  2. 设备管理(设备台账)创建时自动入库设备仓,与库存联动。
  3. 设备**复用物料主数据模型**(已确认)。

阶段1:三大单据补齐 BPM 审批闭环 —— 改码完成,编译通过

已确认现状(可直接采信)

  • MesOrderStatusConstants:PREPARE=0, APPROVING=2, APPROVED=3, FINISHED=4, CANCELLED=5。
  • 状态枚举:
  • MesWmMiscReceiptStatusEnum / MesWmMiscIssueStatusEnum:只有 PREPARE/APPROVED/FINISHED/CANCELED,**缺 APPROVING,需新增**。
  • MesWmReturnVendorStatusEnum:已有 APPROVING(待拣货)。
  • 三个 DO(MesWmMiscReceiptDO/MesWmMiscIssueDO/MesWmReturnVendorDO):均无 processInstanceId 字段,需新增。
  • 三个 Service/Impl:miscreceipt、miscissue 的 submit* 直接 PREPARE→APPROVED(无 BPM);returnvendor 已有 APPROVING→(stock)→APPROVED→(finish)→FINISHED。三者均已有完整库存流水 MesWmTransactionService.createTransactionList,库存只在 finish 中执行。
  • Controller:miscreceipt 有 /submit(仅 id)//finish//cancel,无 submit-approval/process-list。

标准 BPM 模板(复用)

  • MesWmItemReceiptController/submit-approval?id=&processDefinitionKey=
  • MesWmItemReceiptService.submitItemReceiptApproval(id, key) + updateItemReceiptAuditStatus(id, bpmResult)(APPROVE→APPROVED, REJECT→PREPARE, CANCEL→CANCELED)。
  • MesWmItemReceiptStatusListener:监听 BpmProcessInstanceStatusEvent,分类 item_receipt_approve

下一步要改(未开始)

  1. 枚举:miscreceipt/miscissue 各加 APPROVING(MesOrderStatusConstants.APPROVING, "审批中")
  2. DO:三个 DO 各加 processInstanceId
  3. Service 接口 + Impl:各加 submit<Biz>Approval(id, key)update<Biz>AuditStatus(id, bpmResult)get<Biz>ApprovalProcessDefinitionList();改 submit<Biz> 不再伪造已审批。
  4. Controller:各加 get-approval-process-listsubmit-approval
  5. RespVO:各加 processInstanceId(前端据此判"未提交审批")。
  6. 新增 3 个监听器:MesWmMiscReceiptStatusListener/MesWmMiscIssueStatusListener/MesWmReturnVendorStatusListener,分类 misc_receipt_approve/misc_issue_approve/return_vendor_approve
  7. 数据库:三个表各加 process_instance_id VARCHAR(64)(遵守 sql-syntax/sql-script 规范)。

已完成(改码)

  • 枚举:miscreceipt/miscissue 已加 APPROVING(MesOrderStatusConstants.APPROVING, "审批中")
  • DO:三个 DO 均已加 processInstanceId 字段。
  • RespVO:三个单据 RespVO 均已加 processInstanceId
  • Service 接口 + Impl:三个单据已加 submit<Biz>Approval(id, processDefinitionKey)update<Biz>AuditStatus(id, bpmResult)(APPROVE→APPROVED, REJECT→PREPARE, CANCEL→CANCELED)、get<Biz>ApprovalProcessDefinitionList()(复用 MesWmItemReceipt 模式,过滤挂起、取最新版本)。三个新增常量分类:APPROVE_CATEGORY_CODE = misc_receipt_approve / misc_issue_approve / return_vendor_approve
  • Controller:三个单据已加 GET /approval-process-list/submit 改为带 processDefinitionKey,调用审批提交方法。
  • 监听器:已新增 MesWmMiscReceiptStatusListenerMesWmMiscIssueStatusListenerMesWmReturnVendorStatusListener,同 MesWmItemReceiptStatusListener 风格。
  • 编译:mvn compile -pl yudao-module-mes -am -q 通过。
  • 数据库(实际运行库 mom-xgdl):
  • mes_wm_misc_receiptmes_wm_misc_issue 原已有 process_instance_id
  • mes_wm_return_vendor 已补 process_instance_id VARCHAR(64)(已验证生效)。

未完成(阶段1 收尾)

  • 输出前端联调方案文档到 docs/

阶段2:设备台账联动设备仓(分析完成,未改码)

  • 关键事实:MdmItemApi.createItem(MdmItemCreateReqDTO) 可建物料(必填 code/name/categoryId/unitMeasureId/itemType);MesDvMachineryDO 无 item_id;内置设备仓 id=5 / 库区 SYS-EQUIP-LOC-01(id=11) / 库位 SYS-EQUIP-BIN-01(id=10)。
  • 方案:createMachinery 加事务 → 建 MDM 物料 → 插设备台账(item_id) → 自动生成条码 → MesWmTransactionService 入设备仓(IN, qty=1)。更新/删除/导入路径同步。

阶段2 现状与分析结论(2026-09-07 补充)

  • 设备台账已定位:MesDvMachineryServiceImpl.java(需改入口文件),createMachinery/updateMachinery/deleteMachinery 当前均**无** @Transactional;仅有 importMachineryList@Transactional
  • 现有依赖:machineryMapperbarcodeService(自动生成条码 → BarcodeBizTypeEnum.MACHINERY=DV_MACHINERY=400)。
  • 需追加注入:MdmItemApi(mes 模块已依赖 yudao-module-mdm,且有现成注入先例)、MesWmTransactionService
    -MdmItemCreateReqDTO 必填:code/name/categoryId/unitMeasureId/itemType;可选 warehouseId/warehouseCode/barCode/specification/remark。**无设备专用字段**,设备-物料关联依赖新增 mes_dv_machinery.item_id 保存返回的 itemId。
  • MdmItemCreateReqDTO 缺少 categoryId/unitMeasureId/itemType 的来源:设备 SaveReqVO 没有这些字段,**需明确默认物料分类、默认计量单位、物料类型(设备)**再实现(横线留待确定)。
  • 库存事务 DTO MesWmTransactionSaveReqDTO 必填:type(IN=正数)/bizType/bizId/bizCode/bizLineId/itemId/quantity/warehouseId/locationId/areaId。设备台账无独立行 ID,bizLineId 业务约定用**设备主键 id**。
  • 设备 StatusEnum 需确认(设备状态字段 status 已有,但其枚举命名与取值尚未核对;物料状态由 MDM 控制)。
  • 设备物料类型:当前 MDM 物料类型业务是否允许设备类型需确认,若只允许 1/2/3,则新增正式设备类型值并同步字典(不在 MES 内部硬编码未知类型)。
  • 设备「deleteMachinery」已有点检/保养/维修关联校验,删除库存校验可在库存事务存在性校验处补充。

(阶段2 尚未开始改码)

阶段3:独立设备入库单(未开始)

  • 新增 mes_wm_equipment_receipt 主表+明细表、DO/Mapper/Service/VO/Controller/枚举/业务常量,BPM 闭环,完成入库写设备仓。

注意

  • 前端 mom-pro2-before 只读,只输出 docs/ 联调方案文档。
  • 跨模块改动后:mvn compile -pl yudao-module-mes -am -q
  • 详情见计划文件:C:\Users\云\.claude\plans\optimized-honking-pearl.md