yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java
@@ -110,6 +110,8 @@
    private MdmItemBatchConfigApi itemBatchConfigApi;
    @Resource
    private cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi processInstanceApi;
    @Resource
    private cn.iocoder.yudao.module.mes.service.pro.cost.MesProWorkOrderCostService workOrderCostService;
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -117,8 +119,9 @@
        // 1. 校验
        MesProTaskDO task = validateFeedbackData(createReqVO);
        // 2. 插入(自动填充 itemId)
        // 2. 插入(主键由数据库自增,忽略请求中可能残留的 id;自动填充 itemId)
        MesProFeedbackDO feedback = BeanUtils.toBean(createReqVO, MesProFeedbackDO.class)
                .setId(null)
                .setStatus(MesProFeedbackStatusEnum.PREPARE.getStatus())
                .setItemId(task.getItemId());
        feedbackMapper.insert(feedback);
@@ -371,6 +374,7 @@
            feedbackMapper.updateById(new MesProFeedbackDO().setId(reqVO.getId())
                    .setStatus(MesProFeedbackStatusEnum.UNCHECK.getStatus()));
            equipmentService.afterApproved(feedback);
            tryHandleCostAndAlert(feedback);
            return false;
        } else {
            // 6.2 无需检验:生成产出单(按合格/不合格拆行),直接完成入库
@@ -380,10 +384,24 @@
        }
        equipmentService.afterApproved(feedback);
        tryHandleCostAndAlert(feedback);
        return true; // 已完成
    }
    /**
     * 报工审批通过后重算工单物料成本并检查超耗报警。
     * 成本/报警属于旁路能力,失败只记录日志,不影响报工审批结果。
     */
    private void tryHandleCostAndAlert(MesProFeedbackDO feedback) {
        try {
            workOrderCostService.handleFeedbackApproved(feedback);
        } catch (Exception ex) {
            log.error("[tryHandleCostAndAlert][工单({}) 报工({}) 成本/超耗处理失败]",
                    feedback.getWorkOrderId(), feedback.getId(), ex);
        }
    }
    /**
     * 根据当前报工单的最终结果,更新生产任务和生产工单的进度
     *
     * <ul>