| | |
| | | reqVO.setLotNumber(reason); |
| | | } |
| | | } |
| | | approveFeedback(reqVO); |
| | | // BPM 回调时流程实例仍在运行,必须走内部方法,不能被「已发起流程」的校验拦住 |
| | | doApproveFeedback(reqVO, feedback, true); |
| | | } else if (cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceStatusEnum.REJECT.getStatus().equals(bpmResult) || |
| | | cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceStatusEnum.CANCEL.getStatus().equals(bpmResult)) { |
| | | rejectFeedback(id); |
| | | doRejectFeedback(id); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void rejectFeedback(Long id) { |
| | | equipmentService.lock(); |
| | | // 1. 校验存在 + 审批中状态 |
| | | validateFeedbackStatusApproving(id); |
| | | MesProFeedbackDO feedback = validateFeedbackStatusApproving(id); |
| | | // 1.1 已发起审批流程的报工单只能由审批人通过「待办任务」处理,避免业务接口绕过流程 |
| | | if (StrUtil.isNotBlank(feedback.getProcessInstanceId())) { |
| | | throw exception(PRO_FEEDBACK_APPROVAL_HANDLE_IN_BPM); |
| | | } |
| | | doRejectFeedback(id); |
| | | } |
| | | |
| | | // 2. 更新状态为草稿 |
| | | private void doRejectFeedback(Long id) { |
| | | equipmentService.lock(); |
| | | // 1. 更新状态为草稿 |
| | | feedbackMapper.updateById(new MesProFeedbackDO().setId(id) |
| | | .setStatus(MesProFeedbackStatusEnum.PREPARE.getStatus())); |
| | | } |
| | |
| | | } |
| | | |
| | | private boolean approveFeedback(MesProFeedbackApproveReqVO reqVO, boolean enforceQualityGate) { |
| | | equipmentService.lock(); |
| | | // 1.1 校验存在 + 审批中状态 |
| | | MesProFeedbackDO feedback = validateFeedbackStatusApproving(reqVO.getId()); |
| | | // 1.2 已发起审批流程的报工单只能由审批人通过「待办任务」处理,避免业务接口绕过流程 |
| | | if (StrUtil.isNotBlank(feedback.getProcessInstanceId())) { |
| | | throw exception(PRO_FEEDBACK_APPROVAL_HANDLE_IN_BPM); |
| | | } |
| | | return doApproveFeedback(reqVO, feedback, enforceQualityGate); |
| | | } |
| | | |
| | | private boolean doApproveFeedback(MesProFeedbackApproveReqVO reqVO, MesProFeedbackDO feedback, |
| | | boolean enforceQualityGate) { |
| | | equipmentService.lock(); |
| | | equipmentService.validateApproval(feedback); |
| | | try (var equipmentScope = equipmentService.beginApproval(feedback)) { |
| | | return approveValidatedFeedback(reqVO, feedback, enforceQualityGate); |