gaoluyang
昨天 8c65f898ed6e5b0c7a94c792c4562f6ec831dccd
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/approval/HrmResignationApplicationServiceImpl.java
@@ -150,7 +150,7 @@
    @Override
    public void updateResignationApplication(HrmResignationApplicationSaveReqVO updateReqVO) {
        HrmResignationApplicationDO application = validateResignationApplicationExists(updateReqVO.getId());
        if (!Objects.equals(application.getStatus(), HrmAuditStatusEnum.DRAFT.getStatus())) {
        if (!isEditableResignationStatus(application.getStatus())) {
            throw exception(RESIGNATION_APPLICATION_UPDATE_FAIL_NOT_DRAFT);
        }
        HrmResignationApplicationDO updateObj = BeanUtils.toBean(updateReqVO, HrmResignationApplicationDO.class);
@@ -190,6 +190,11 @@
            throw exception(RESIGNATION_APPLICATION_NOT_EXISTS);
        }
        return application;
    }
    private boolean isEditableResignationStatus(Integer status) {
        return Objects.equals(status, HrmAuditStatusEnum.DRAFT.getStatus())
                || Objects.equals(status, HrmAuditStatusEnum.REJECT.getStatus());
    }
    @Override
@@ -323,16 +328,12 @@
    @Transactional(rollbackFor = Exception.class)
    public void submitResignationApplication(Long id, String processDefinitionKey, Long userId) {
        HrmResignationApplicationDO application = validateResignationApplicationExists(id);
        if (ObjUtil.notEqual(application.getStatus(), HrmAuditStatusEnum.DRAFT.getStatus())) {
        if (!isEditableResignationStatus(application.getStatus())) {
            throw exception(RESIGNATION_APPLICATION_SUBMIT_FAIL_NOT_DRAFT);
        }
        // 全局免审批:业务校验通过后直接执行审批通过逻辑,无需流程模型。
        if (bpmProcessInstanceApi.isGlobalAutoApprove()) {
            resignationApplicationMapper.updateById(HrmResignationApplicationDO.builder()
                    .id(id)
                    .processInstanceId("")
                    .status(HrmAuditStatusEnum.PROCESS.getStatus())
                    .build());
            resignationApplicationMapper.startApproval(id, "", HrmAuditStatusEnum.PROCESS.getStatus());
            updateResignationApplicationAuditStatus(id, HrmAuditStatusEnum.APPROVE.getStatus());
            return;
        }
@@ -340,11 +341,7 @@
        ProcessDefinition processDefinition = resolveActiveProcessDefinition(processDefinitionKey);
        String processInstanceId = bpmProcessInstanceApi.createProcessInstance(userId, new BpmProcessInstanceCreateReqDTO()
                .setProcessDefinitionKey(processDefinition.getKey()).setBusinessKey(String.valueOf(id)));
        resignationApplicationMapper.updateById(HrmResignationApplicationDO.builder()
                .id(id)
                .processInstanceId(processInstanceId)
                .status(HrmAuditStatusEnum.PROCESS.getStatus())
                .build());
        resignationApplicationMapper.startApproval(id, processInstanceId, HrmAuditStatusEnum.PROCESS.getStatus());
    }
    private void validateApproveCategoryAndProcessDefinition() {
@@ -684,4 +681,4 @@
                : String.format("ID=%s", employeeId);
    }
}
}