hsy
20 小时以前 3fce1468a7d6686d0c60a382e4cfc768145e8b55
feat(mes): 生产计划取消时增加关联工单报工校验

- 新增错误码 PRO_MPS_WORK_ORDER_HAS_FEEDBACK,提示文案为“该计划关联的生产订单已有报工记录,无法取消!”
- 优化 MesProMpsServiceImpl.cancelMps 逻辑,在执行取消操作前检查 mes_pro_feedback 表,若该计划关联的生产订单已被排产且已有报工记录,则拦截并阻止取消操作。
已修改2个文件
7 ■■■■■ 文件已修改
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/mps/MesProMpsServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
@@ -352,6 +352,7 @@
    ErrorCode PRO_MPS_CODE_DUPLICATE = new ErrorCode(1_040_509_006, "MPS 编码已存在");
    ErrorCode PRO_MPS_HAS_WORK_ORDER = new ErrorCode(1_040_509_007, "MPS 已关联生产工单,无法删除");
    ErrorCode PRO_MPS_MES_PRODUCT_NOT_EXISTS = new ErrorCode(1_040_509_008, "MES 产品不存在,无法创建 MPS,产品:{}");
    ErrorCode PRO_MPS_WORK_ORDER_HAS_FEEDBACK = new ErrorCode(1_040_509_009, "该计划关联的生产订单已有报工记录,无法取消!");
    // ========== MES 质量管理-质检方案(1-040-600-000) ==========
    ErrorCode QC_TEMPLATE_NOT_EXISTS = new ErrorCode(1_040_600_000, "质检方案不存在");
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/mps/MesProMpsServiceImpl.java
@@ -285,6 +285,12 @@
        // 级联取消关联的生产工单(跟随工单当前状态,且不误伤合并下发的共享工单)
        if (mps.getWorkOrderId() != null) {
            // 新增逻辑:若该工单有报工记录,则不允许取消 MPS
            Long feedbackCount = feedbackMapper.selectCount(MesProFeedbackDO::getWorkOrderId, mps.getWorkOrderId());
            if (feedbackCount != null && feedbackCount > 0) {
                throw exception(PRO_MPS_WORK_ORDER_HAS_FEEDBACK);
            }
            // 1. 统计该工单被多少条 MPS 引用:合并下发的多条 MPS 共享同一个工单
            Long refCount = mpsMapper.selectCount(MesProMpsDO::getWorkOrderId, mps.getWorkOrderId());
            if (refCount != null && refCount > 1) {