liu
22 小时以前 e347fd6e8b523b75e7eb28627ba3597cf9e40f6a
分支
用户 liu <2021943741@qq.com>
星期三, 九月 16, 2026 14:26 +0800
提交者 liu <2021943741@qq.com>
星期三, 九月 16, 2026 14:26 +0800
提交e347fd6e8b523b75e7eb28627ba3597cf9e40f6a
目录 e9bde03ee51652931c54b4409bd7ba747ceb6c5f 目录 | zip | gz
上一版本 c9d19b4c1c46a9b3b2681c12b3f0ae92e0ea4379 查看 | 对比
refactor(approval): 采购计划/采购订单审批由 BPM 改为轻量级状态机

背景:原提交审批依赖 Flowable 流程定义,但本部署 ACT_RE_PROCDEF 为空表、
bpm_process_definition_info 为手工写入的无效数据,getProcessDefinition(id)
抛 FlowableObjectNotFoundException,前端表现为 500 系统异常;另采购订单误用
采购申请的分类编码 purchase_request_approve,两者流程互相串用。

- system 新增通用审批配置:主表 + 审批人子表、CRUD、跨模块 ApprovalConfigApi,
支持按业务类型配置多个审批人(或签),并校验启用状态与审批人有效性
- erp 采购计划、采购订单改为单级状态机:提交 -> 审批中 -> 审核通过 / 审核不通过,
驳回后须修改再重新提交;审核人写入 reviewer_* 冗余字段
- 采购订单独立 ErpPurchaseOrderStatusEnum,避开 ErpAuditStatus.CANCEL(30) 取值冲突,
APPROVE 仍为 20 以兼容既有已审核才可入库/退货等判断
- 采购订单提交不再要求选择流程定义,删除 approve-process-list 接口;
BPM 回调相关代码标注废弃但保留
- 服务端强校验:仅配置内审批人可审核,审核不通过必填原因;
update-status 通过分支同样校验审批人身份,避免绕过审核按钮自助通过
- Mapper 用 LambdaUpdateWrapper 显式置空审核字段,规避 updateById 忽略 null 导致驳回原因残留

测试:scripts/test-approval-api.js、scripts/test-approval.js

数据库变更见 sql/mysql/approval_flow_full_migration.sql(*.sql 被 .gitignore 忽略,需手动执行)

Co-Authored-By: Claude <noreply@anthropic.com>
已添加17个文件
已修改14个文件
1867 ■■■■■ 文件已修改
scripts/test-approval-api.js 201 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
scripts/test-approval.js 213 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseOrderController.java 29 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchasePlanController.java 28 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderAuditReqVO.java 27 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/order/ErpPurchaseOrderRespVO.java 17 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/plan/ErpPurchasePlanAuditReqVO.java 27 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/plan/ErpPurchasePlanRespVO.java 16 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderDO.java 25 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchasePlanDO.java 22 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderMapper.java 30 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchasePlanMapper.java 45 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpPurchaseOrderStatusEnum.java 63 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java 8 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderService.java 24 ●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderServiceImpl.java 156 ●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchasePlanService.java 35 ●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchasePlanServiceImpl.java 129 ●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/api/approval/ApprovalConfigApi.java 57 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/api/approval/ApprovalConfigApiImpl.java 35 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/approval/ApprovalConfigController.java 90 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/approval/vo/ApprovalConfigPageReqVO.java 24 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/approval/vo/ApprovalConfigRespVO.java 37 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/approval/vo/ApprovalConfigSaveReqVO.java 35 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/approval/ApprovalConfigDO.java 49 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/approval/ApprovalConfigUserDO.java 44 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/approval/SystemApprovalConfigMapper.java 33 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/approval/SystemApprovalConfigUserMapper.java 47 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java 9 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/approval/ApprovalConfigService.java 88 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/approval/ApprovalConfigServiceImpl.java 224 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史