# 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:各加 `submitApproval(id, key)`、`updateAuditStatus(id, bpmResult)`、`getApprovalProcessDefinitionList()`;改 `submit` 不再伪造已审批。 4. Controller:各加 `get-approval-process-list`、`submit-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:三个单据已加 `submitApproval(id, processDefinitionKey)`、`updateAuditStatus(id, bpmResult)`(APPROVE→APPROVED, REJECT→PREPARE, CANCEL→CANCELED)、`getApprovalProcessDefinitionList()`(复用 `MesWmItemReceipt` 模式,过滤挂起、取最新版本)。三个新增常量分类:`APPROVE_CATEGORY_CODE = misc_receipt_approve / misc_issue_approve / return_vendor_approve`。 - Controller:三个单据已加 `GET /approval-process-list`;`/submit` 改为带 `processDefinitionKey`,调用审批提交方法。 - 监听器:已新增 `MesWmMiscReceiptStatusListener`、`MesWmMiscIssueStatusListener`、`MesWmReturnVendorStatusListener`,同 `MesWmItemReceiptStatusListener` 风格。 - 编译:`mvn compile -pl yudao-module-mes -am -q` 通过。 - 数据库(实际运行库 mom-xgdl): - `mes_wm_misc_receipt`、`mes_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`。 - 现有依赖:`machineryMapper`、`barcodeService`(自动生成条码 → `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`