| | |
| | | @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); |
| | |
| | | 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 |
| | |
| | | @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; |
| | | } |
| | |
| | | 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() { |
| | |
| | | : String.format("ID=%s", employeeId); |
| | | } |
| | | |
| | | } |
| | | } |