Commit c2db893fb898ccf0b66806cecfb7e20c60c91493
1 parent
e3b86b3d
bpm 增加流程被通过、不通过时,发送短信通知
Showing
11 changed files
with
160 additions
and
31 deletions
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/message/BpmMessageConvert.java
| 1 | package cn.iocoder.yudao.adminserver.modules.bpm.convert.message; | 1 | package cn.iocoder.yudao.adminserver.modules.bpm.convert.message; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceApproveReqDTO; | ||
| 4 | +import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceRejectReqDTO; | ||
| 3 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenTaskCreatedReqDTO; | 5 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenTaskCreatedReqDTO; |
| 4 | import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; | 6 | import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO; |
| 5 | import org.activiti.api.task.model.Task; | 7 | import org.activiti.api.task.model.Task; |
| @@ -36,4 +38,20 @@ public interface BpmMessageConvert { | @@ -36,4 +38,20 @@ public interface BpmMessageConvert { | ||
| 36 | }) | 38 | }) |
| 37 | void copyTo(Task task, @MappingTarget BpmMessageSendWhenTaskCreatedReqDTO to); | 39 | void copyTo(Task task, @MappingTarget BpmMessageSendWhenTaskCreatedReqDTO to); |
| 38 | 40 | ||
| 41 | + default BpmMessageSendWhenProcessInstanceRejectReqDTO convert(ProcessInstance processInstance, String comment) { | ||
| 42 | + BpmMessageSendWhenProcessInstanceRejectReqDTO reqDTO = new BpmMessageSendWhenProcessInstanceRejectReqDTO(); | ||
| 43 | + copyTo(processInstance, reqDTO); | ||
| 44 | + reqDTO.setComment(comment); | ||
| 45 | + return reqDTO; | ||
| 46 | + } | ||
| 47 | + @Mapping(source = "name", target = "processInstanceName") | ||
| 48 | + void copyTo(ProcessInstance from, @MappingTarget BpmMessageSendWhenProcessInstanceRejectReqDTO to); | ||
| 49 | + | ||
| 50 | + @Mappings({ | ||
| 51 | + @Mapping(source = "id", target = "processInstanceId"), | ||
| 52 | + @Mapping(source = "name", target = "processInstanceName"), | ||
| 53 | + @Mapping(source = "initiator", target = "startUserId") | ||
| 54 | + }) | ||
| 55 | + BpmMessageSendWhenProcessInstanceApproveReqDTO convert(org.activiti.api.process.model.ProcessInstance processInstance); | ||
| 56 | + | ||
| 39 | } | 57 | } |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/enums/message/BpmMessageEnum.java
| @@ -13,6 +13,8 @@ import lombok.Getter; | @@ -13,6 +13,8 @@ import lombok.Getter; | ||
| 13 | @Getter | 13 | @Getter |
| 14 | public enum BpmMessageEnum { | 14 | public enum BpmMessageEnum { |
| 15 | 15 | ||
| 16 | + PROCESS_INSTANCE_APPROVE("bpm_process_instance_approve"), // 流程任务被审批通过时,发送给申请人 | ||
| 17 | + PROCESS_INSTANCE_REJECT("bpm_process_instance_reject"), // 流程任务被审批不通过时,发送给申请人 | ||
| 16 | TASK_ASSIGNED("bpm_task_assigned"); // 任务被分配时,发送给审批人 | 18 | TASK_ASSIGNED("bpm_task_assigned"); // 任务被分配时,发送给审批人 |
| 17 | 19 | ||
| 18 | /** | 20 | /** |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/enums/task/BpmProcessInstanceDeleteReasonEnum.java
| @@ -12,7 +12,7 @@ import lombok.Getter; | @@ -12,7 +12,7 @@ import lombok.Getter; | ||
| 12 | @AllArgsConstructor | 12 | @AllArgsConstructor |
| 13 | public enum BpmProcessInstanceDeleteReasonEnum { | 13 | public enum BpmProcessInstanceDeleteReasonEnum { |
| 14 | 14 | ||
| 15 | - REJECT_TASK("驳回任务"); | 15 | + REJECT_TASK("不通过任务,原因:{}"); |
| 16 | 16 | ||
| 17 | private final String reason; | 17 | private final String reason; |
| 18 | 18 |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/message/BpmMessageService.java
| 1 | package cn.iocoder.yudao.adminserver.modules.bpm.service.message; | 1 | package cn.iocoder.yudao.adminserver.modules.bpm.service.message; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceApproveReqDTO; | ||
| 4 | +import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceRejectReqDTO; | ||
| 3 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenTaskCreatedReqDTO; | 5 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenTaskCreatedReqDTO; |
| 4 | 6 | ||
| 5 | import javax.validation.Valid; | 7 | import javax.validation.Valid; |
| @@ -13,6 +15,26 @@ import javax.validation.Valid; | @@ -13,6 +15,26 @@ import javax.validation.Valid; | ||
| 13 | */ | 15 | */ |
| 14 | public interface BpmMessageService { | 16 | public interface BpmMessageService { |
| 15 | 17 | ||
| 18 | + /** | ||
| 19 | + * 发送流程实例被通过的消息 | ||
| 20 | + * | ||
| 21 | + * @param reqDTO 发送信息 | ||
| 22 | + */ | ||
| 23 | + void sendMessageWhenProcessInstanceApprove(@Valid BpmMessageSendWhenProcessInstanceApproveReqDTO reqDTO); | ||
| 24 | + | ||
| 25 | + | ||
| 26 | + /** | ||
| 27 | + * 发送流程实例被不通过的消息 | ||
| 28 | + * | ||
| 29 | + * @param reqDTO 发送信息 | ||
| 30 | + */ | ||
| 31 | + void sendMessageWhenProcessInstanceReject(@Valid BpmMessageSendWhenProcessInstanceRejectReqDTO reqDTO); | ||
| 32 | + | ||
| 33 | + /** | ||
| 34 | + * 发送任务被分配的消息 | ||
| 35 | + * | ||
| 36 | + * @param reqDTO 发送信息 | ||
| 37 | + */ | ||
| 16 | void sendMessageWhenTaskAssigned(@Valid BpmMessageSendWhenTaskCreatedReqDTO reqDTO); | 38 | void sendMessageWhenTaskAssigned(@Valid BpmMessageSendWhenTaskCreatedReqDTO reqDTO); |
| 17 | 39 | ||
| 18 | } | 40 | } |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/message/dto/BpmMessageSendWhenProcessInstanceApproveReqDTO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto; | ||
| 2 | + | ||
| 3 | +import lombok.Data; | ||
| 4 | + | ||
| 5 | +import javax.validation.constraints.NotEmpty; | ||
| 6 | +import javax.validation.constraints.NotNull; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | + * BPM 发送流程实例被通过 Request DTO | ||
| 10 | + */ | ||
| 11 | +@Data | ||
| 12 | +public class BpmMessageSendWhenProcessInstanceApproveReqDTO { | ||
| 13 | + | ||
| 14 | + /** | ||
| 15 | + * 流程实例的编号 | ||
| 16 | + */ | ||
| 17 | + @NotEmpty(message = "流程实例的编号不能为空") | ||
| 18 | + private String processInstanceId; | ||
| 19 | + /** | ||
| 20 | + * 流程实例的名字 | ||
| 21 | + */ | ||
| 22 | + @NotEmpty(message = "流程实例的名字不能为空") | ||
| 23 | + private String processInstanceName; | ||
| 24 | + @NotNull(message = "发起人的用户编号") | ||
| 25 | + private Long startUserId; | ||
| 26 | + | ||
| 27 | +} |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/message/dto/BpmMessageSendWhenProcessInstanceRejectReqDTO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto; | ||
| 2 | + | ||
| 3 | +import lombok.Data; | ||
| 4 | + | ||
| 5 | +import javax.validation.constraints.NotEmpty; | ||
| 6 | +import javax.validation.constraints.NotNull; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | + * BPM 发送流程实例被不通过 Request DTO | ||
| 10 | + */ | ||
| 11 | +@Data | ||
| 12 | +public class BpmMessageSendWhenProcessInstanceRejectReqDTO { | ||
| 13 | + | ||
| 14 | + /** | ||
| 15 | + * 流程实例的编号 | ||
| 16 | + */ | ||
| 17 | + @NotEmpty(message = "流程实例的编号不能为空") | ||
| 18 | + private String processInstanceId; | ||
| 19 | + /** | ||
| 20 | + * 流程实例的名字 | ||
| 21 | + */ | ||
| 22 | + @NotEmpty(message = "流程实例的名字不能为空") | ||
| 23 | + private String processInstanceName; | ||
| 24 | + @NotNull(message = "发起人的用户编号") | ||
| 25 | + private Long startUserId; | ||
| 26 | + | ||
| 27 | + /** | ||
| 28 | + * 不通过理由 | ||
| 29 | + */ | ||
| 30 | + @NotEmpty(message = "不通过理由不能为空") | ||
| 31 | + private String comment; | ||
| 32 | + | ||
| 33 | +} |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/message/dto/BpmMessageSendWhenTaskCreatedReqDTO.java
| @@ -6,7 +6,7 @@ import javax.validation.constraints.NotEmpty; | @@ -6,7 +6,7 @@ import javax.validation.constraints.NotEmpty; | ||
| 6 | import javax.validation.constraints.NotNull; | 6 | import javax.validation.constraints.NotNull; |
| 7 | 7 | ||
| 8 | /** | 8 | /** |
| 9 | - * BPM 发送任务创建的 Request DTO | 9 | + * BPM 发送任务被分配 Request DTO |
| 10 | */ | 10 | */ |
| 11 | @Data | 11 | @Data |
| 12 | public class BpmMessageSendWhenTaskCreatedReqDTO { | 12 | public class BpmMessageSendWhenTaskCreatedReqDTO { |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/message/impl/BpmMessageServiceImpl.java
| @@ -2,6 +2,8 @@ package cn.iocoder.yudao.adminserver.modules.bpm.service.message.impl; | @@ -2,6 +2,8 @@ package cn.iocoder.yudao.adminserver.modules.bpm.service.message.impl; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.adminserver.modules.bpm.enums.message.BpmMessageEnum; | 3 | import cn.iocoder.yudao.adminserver.modules.bpm.enums.message.BpmMessageEnum; |
| 4 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.BpmMessageService; | 4 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.BpmMessageService; |
| 5 | +import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceApproveReqDTO; | ||
| 6 | +import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceRejectReqDTO; | ||
| 5 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenTaskCreatedReqDTO; | 7 | import cn.iocoder.yudao.adminserver.modules.bpm.service.message.dto.BpmMessageSendWhenTaskCreatedReqDTO; |
| 6 | import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsCoreService; | 8 | import cn.iocoder.yudao.coreservice.modules.system.service.sms.SysSmsCoreService; |
| 7 | import lombok.extern.slf4j.Slf4j; | 9 | import lombok.extern.slf4j.Slf4j; |
| @@ -30,17 +32,36 @@ public class BpmMessageServiceImpl implements BpmMessageService { | @@ -30,17 +32,36 @@ public class BpmMessageServiceImpl implements BpmMessageService { | ||
| 30 | private String adminUiUrl; | 32 | private String adminUiUrl; |
| 31 | 33 | ||
| 32 | @Override | 34 | @Override |
| 35 | + public void sendMessageWhenProcessInstanceApprove(BpmMessageSendWhenProcessInstanceApproveReqDTO reqDTO) { | ||
| 36 | + Map<String, Object> templateParams = new HashMap<>(); | ||
| 37 | + templateParams.put("processInstanceName", reqDTO.getProcessInstanceName()); | ||
| 38 | + templateParams.put("detailUrl", getProcessInstanceDetailUrl(reqDTO.getProcessInstanceId())); | ||
| 39 | + smsCoreService.sendSingleSmsToAdmin(null, reqDTO.getStartUserId(), | ||
| 40 | + BpmMessageEnum.PROCESS_INSTANCE_APPROVE.getSmsCode(), templateParams); | ||
| 41 | + } | ||
| 42 | + | ||
| 43 | + @Override | ||
| 44 | + public void sendMessageWhenProcessInstanceReject(BpmMessageSendWhenProcessInstanceRejectReqDTO reqDTO) { | ||
| 45 | + Map<String, Object> templateParams = new HashMap<>(); | ||
| 46 | + templateParams.put("processInstanceName", reqDTO.getProcessInstanceName()); | ||
| 47 | + templateParams.put("comment", reqDTO.getComment()); | ||
| 48 | + templateParams.put("detailUrl", getProcessInstanceDetailUrl(reqDTO.getProcessInstanceId())); | ||
| 49 | + smsCoreService.sendSingleSmsToAdmin(null, reqDTO.getStartUserId(), | ||
| 50 | + BpmMessageEnum.PROCESS_INSTANCE_REJECT.getSmsCode(), templateParams); | ||
| 51 | + } | ||
| 52 | + | ||
| 53 | + @Override | ||
| 33 | public void sendMessageWhenTaskAssigned(BpmMessageSendWhenTaskCreatedReqDTO reqDTO) { | 54 | public void sendMessageWhenTaskAssigned(BpmMessageSendWhenTaskCreatedReqDTO reqDTO) { |
| 34 | Map<String, Object> templateParams = new HashMap<>(); | 55 | Map<String, Object> templateParams = new HashMap<>(); |
| 35 | templateParams.put("processInstanceName", reqDTO.getProcessInstanceName()); | 56 | templateParams.put("processInstanceName", reqDTO.getProcessInstanceName()); |
| 36 | templateParams.put("taskName", reqDTO.getTaskName()); | 57 | templateParams.put("taskName", reqDTO.getTaskName()); |
| 37 | templateParams.put("startUserNickname", reqDTO.getStartUserNickname()); | 58 | templateParams.put("startUserNickname", reqDTO.getStartUserNickname()); |
| 38 | - templateParams.put("taskDetailUrl", getTaskDetailUrl(reqDTO.getTaskId())); | 59 | + templateParams.put("detailUrl", getProcessInstanceDetailUrl(reqDTO.getProcessInstanceId())); |
| 39 | smsCoreService.sendSingleSmsToAdmin(null, reqDTO.getAssigneeUserId(), | 60 | smsCoreService.sendSingleSmsToAdmin(null, reqDTO.getAssigneeUserId(), |
| 40 | BpmMessageEnum.TASK_ASSIGNED.getSmsCode(), templateParams); | 61 | BpmMessageEnum.TASK_ASSIGNED.getSmsCode(), templateParams); |
| 41 | } | 62 | } |
| 42 | 63 | ||
| 43 | - private String getTaskDetailUrl(String taskId) { | 64 | + private String getProcessInstanceDetailUrl(String taskId) { |
| 44 | return adminUiUrl + "bpm/process-instance/detail?id=" + taskId; | 65 | return adminUiUrl + "bpm/process-instance/detail?id=" + taskId; |
| 45 | } | 66 | } |
| 46 | 67 |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/BpmProcessInstanceService.java
| @@ -47,15 +47,6 @@ public interface BpmProcessInstanceService { | @@ -47,15 +47,6 @@ public interface BpmProcessInstanceService { | ||
| 47 | void deleteProcessInstance(String id, String reason); | 47 | void deleteProcessInstance(String id, String reason); |
| 48 | 48 | ||
| 49 | /** | 49 | /** |
| 50 | - * 更新流程实例的结果 | ||
| 51 | - * 1. 如果更新为已拒绝时,会进行任务的删除 | ||
| 52 | - * | ||
| 53 | - * @param id 流程编号 | ||
| 54 | - * @param result 结果,{@link BpmProcessInstanceResultEnum} | ||
| 55 | - */ | ||
| 56 | - void updateProcessInstanceResult(String id, Integer result); | ||
| 57 | - | ||
| 58 | - /** | ||
| 59 | * 获得流程实例的分页 | 50 | * 获得流程实例的分页 |
| 60 | * | 51 | * |
| 61 | * @param userId 用户编号 | 52 | * @param userId 用户编号 |
| @@ -153,4 +144,12 @@ public interface BpmProcessInstanceService { | @@ -153,4 +144,12 @@ public interface BpmProcessInstanceService { | ||
| 153 | */ | 144 | */ |
| 154 | void updateProcessInstanceExtComplete(org.activiti.api.process.model.ProcessInstance instance); | 145 | void updateProcessInstanceExtComplete(org.activiti.api.process.model.ProcessInstance instance); |
| 155 | 146 | ||
| 147 | + /** | ||
| 148 | + * 更新 ProcessInstance 拓展记录为不通过 | ||
| 149 | + * | ||
| 150 | + * @param id 流程编号 | ||
| 151 | + * @param comment 理由。例如说,审批不通过时,需要传递该值 | ||
| 152 | + */ | ||
| 153 | + void updateProcessInstanceExtReject(String id, String comment); | ||
| 154 | + | ||
| 156 | } | 155 | } |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/impl/BpmProcessInstanceServiceImpl.java
| @@ -2,9 +2,9 @@ package cn.iocoder.yudao.adminserver.modules.bpm.service.task.impl; | @@ -2,9 +2,9 @@ package cn.iocoder.yudao.adminserver.modules.bpm.service.task.impl; | ||
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | import cn.hutool.core.lang.Assert; | 4 | import cn.hutool.core.lang.Assert; |
| 5 | -import cn.hutool.core.util.NumberUtil; | ||
| 6 | import cn.hutool.core.util.StrUtil; | 5 | import cn.hutool.core.util.StrUtil; |
| 7 | import cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.instance.*; | 6 | import cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.instance.*; |
| 7 | +import cn.iocoder.yudao.adminserver.modules.bpm.convert.message.BpmMessageConvert; | ||
| 8 | import cn.iocoder.yudao.adminserver.modules.bpm.convert.task.BpmProcessInstanceConvert; | 8 | import cn.iocoder.yudao.adminserver.modules.bpm.convert.task.BpmProcessInstanceConvert; |
| 9 | import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmProcessDefinitionExtDO; | 9 | import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmProcessDefinitionExtDO; |
| 10 | import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.task.BpmProcessInstanceExtDO; | 10 | import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.task.BpmProcessInstanceExtDO; |
| @@ -13,6 +13,7 @@ import cn.iocoder.yudao.adminserver.modules.bpm.enums.task.BpmProcessInstanceDel | @@ -13,6 +13,7 @@ import cn.iocoder.yudao.adminserver.modules.bpm.enums.task.BpmProcessInstanceDel | ||
| 13 | import cn.iocoder.yudao.adminserver.modules.bpm.enums.task.BpmProcessInstanceResultEnum; | 13 | import cn.iocoder.yudao.adminserver.modules.bpm.enums.task.BpmProcessInstanceResultEnum; |
| 14 | import cn.iocoder.yudao.adminserver.modules.bpm.enums.task.BpmProcessInstanceStatusEnum; | 14 | import cn.iocoder.yudao.adminserver.modules.bpm.enums.task.BpmProcessInstanceStatusEnum; |
| 15 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmProcessDefinitionService; | 15 | import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmProcessDefinitionService; |
| 16 | +import cn.iocoder.yudao.adminserver.modules.bpm.service.message.BpmMessageService; | ||
| 16 | import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmProcessInstanceService; | 17 | import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmProcessInstanceService; |
| 17 | import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmTaskService; | 18 | import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmTaskService; |
| 18 | import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO; | 19 | import cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dept.SysDeptDO; |
| @@ -28,7 +29,6 @@ import org.activiti.engine.history.HistoricProcessInstance; | @@ -28,7 +29,6 @@ import org.activiti.engine.history.HistoricProcessInstance; | ||
| 28 | import org.activiti.engine.repository.ProcessDefinition; | 29 | import org.activiti.engine.repository.ProcessDefinition; |
| 29 | import org.activiti.engine.runtime.ProcessInstance; | 30 | import org.activiti.engine.runtime.ProcessInstance; |
| 30 | import org.activiti.engine.task.Task; | 31 | import org.activiti.engine.task.Task; |
| 31 | -import org.mapstruct.ap.shaded.freemarker.template.utility.StringUtil; | ||
| 32 | import org.springframework.context.annotation.Lazy; | 32 | import org.springframework.context.annotation.Lazy; |
| 33 | import org.springframework.stereotype.Service; | 33 | import org.springframework.stereotype.Service; |
| 34 | import org.springframework.transaction.annotation.Transactional; | 34 | import org.springframework.transaction.annotation.Transactional; |
| @@ -72,6 +72,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | @@ -72,6 +72,8 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | ||
| 72 | private BpmTaskService taskService; | 72 | private BpmTaskService taskService; |
| 73 | @Resource | 73 | @Resource |
| 74 | private BpmProcessDefinitionService processDefinitionService; | 74 | private BpmProcessDefinitionService processDefinitionService; |
| 75 | + @Resource | ||
| 76 | + private BpmMessageService messageService; | ||
| 75 | 77 | ||
| 76 | @Resource | 78 | @Resource |
| 77 | private BpmProcessInstanceExtMapper processInstanceExtMapper; | 79 | private BpmProcessInstanceExtMapper processInstanceExtMapper; |
| @@ -133,18 +135,6 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | @@ -133,18 +135,6 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | ||
| 133 | } | 135 | } |
| 134 | 136 | ||
| 135 | @Override | 137 | @Override |
| 136 | - @Transactional(rollbackFor = Exception.class) | ||
| 137 | - public void updateProcessInstanceResult(String id, Integer result) { | ||
| 138 | - // 删除流程实例,以实现驳回任务时,取消整个审批流程 | ||
| 139 | - if (Objects.equals(result, BpmProcessInstanceResultEnum.REJECT.getResult())) { | ||
| 140 | - deleteProcessInstance(id, BpmProcessInstanceDeleteReasonEnum.REJECT_TASK.getReason()); | ||
| 141 | - } | ||
| 142 | - // 更新 status + result | ||
| 143 | - processInstanceExtMapper.updateByProcessInstanceId(new BpmProcessInstanceExtDO().setProcessInstanceId(id) | ||
| 144 | - .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()).setResult(result)); | ||
| 145 | - } | ||
| 146 | - | ||
| 147 | - @Override | ||
| 148 | public PageResult<BpmProcessInstancePageItemRespVO> getMyProcessInstancePage(Long userId, | 138 | public PageResult<BpmProcessInstancePageItemRespVO> getMyProcessInstancePage(Long userId, |
| 149 | BpmProcessInstanceMyPageReqVO pageReqVO) { | 139 | BpmProcessInstanceMyPageReqVO pageReqVO) { |
| 150 | // 通过 BpmProcessInstanceExtDO 表,先查询到对应的分页 | 140 | // 通过 BpmProcessInstanceExtDO 表,先查询到对应的分页 |
| @@ -251,6 +241,26 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | @@ -251,6 +241,26 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | ||
| 251 | .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) | 241 | .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) |
| 252 | .setResult(BpmProcessInstanceResultEnum.APPROVE.getResult()); // 如果正常完全,说明审批通过 | 242 | .setResult(BpmProcessInstanceResultEnum.APPROVE.getResult()); // 如果正常完全,说明审批通过 |
| 253 | processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); | 243 | processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); |
| 244 | + | ||
| 245 | + // 发送流程被通过的消息 | ||
| 246 | + messageService.sendMessageWhenProcessInstanceApprove(BpmMessageConvert.INSTANCE.convert(instance)); | ||
| 247 | + } | ||
| 248 | + | ||
| 249 | + @Transactional(rollbackFor = Exception.class) | ||
| 250 | + public void updateProcessInstanceExtReject(String id, String comment) { | ||
| 251 | + ProcessInstance processInstance = getProcessInstance(id); | ||
| 252 | + // 删除流程实例,以实现驳回任务时,取消整个审批流程 | ||
| 253 | + deleteProcessInstance(id, StrUtil.format(BpmProcessInstanceDeleteReasonEnum.REJECT_TASK.getReason(), comment)); | ||
| 254 | + | ||
| 255 | + // 更新 status + result | ||
| 256 | + // 注意,不能和上面的逻辑更换位置。因为 deleteProcessInstance 会触发流程的取消,进而调用 updateProcessInstanceExtCancel 方法, | ||
| 257 | + // 设置 result 为 BpmProcessInstanceStatusEnum.CANCEL,显然和 result 不一定是一致的 | ||
| 258 | + processInstanceExtMapper.updateByProcessInstanceId(new BpmProcessInstanceExtDO().setProcessInstanceId(id) | ||
| 259 | + .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) | ||
| 260 | + .setResult(BpmProcessInstanceResultEnum.REJECT.getResult())); | ||
| 261 | + | ||
| 262 | + // 发送流程被不通过的消息 | ||
| 263 | + messageService.sendMessageWhenProcessInstanceReject(BpmMessageConvert.INSTANCE.convert(processInstance, comment)); | ||
| 254 | } | 264 | } |
| 255 | 265 | ||
| 256 | } | 266 | } |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/impl/BpmTaskServiceImpl.java
| 1 | package cn.iocoder.yudao.adminserver.modules.bpm.service.task.impl; | 1 | package cn.iocoder.yudao.adminserver.modules.bpm.service.task.impl; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | -import cn.hutool.core.thread.ThreadUtil; | ||
| 5 | import cn.hutool.core.util.StrUtil; | 4 | import cn.hutool.core.util.StrUtil; |
| 6 | import cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task.*; | 5 | import cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task.*; |
| 7 | import cn.iocoder.yudao.adminserver.modules.bpm.convert.message.BpmMessageConvert; | 6 | import cn.iocoder.yudao.adminserver.modules.bpm.convert.message.BpmMessageConvert; |
| @@ -38,7 +37,6 @@ import org.springframework.transaction.support.TransactionSynchronizationManager | @@ -38,7 +37,6 @@ import org.springframework.transaction.support.TransactionSynchronizationManager | ||
| 38 | import javax.annotation.Resource; | 37 | import javax.annotation.Resource; |
| 39 | import javax.validation.Valid; | 38 | import javax.validation.Valid; |
| 40 | import java.util.*; | 39 | import java.util.*; |
| 41 | -import java.util.concurrent.TimeUnit; | ||
| 42 | 40 | ||
| 43 | import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.*; | 41 | import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.*; |
| 44 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 42 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| @@ -254,8 +252,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { | @@ -254,8 +252,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { | ||
| 254 | } | 252 | } |
| 255 | 253 | ||
| 256 | // 更新流程实例为不通过 | 254 | // 更新流程实例为不通过 |
| 257 | - processInstanceService.updateProcessInstanceResult(instance.getProcessInstanceId(), | ||
| 258 | - BpmProcessInstanceResultEnum.REJECT.getResult()); | 255 | + processInstanceService.updateProcessInstanceExtReject(instance.getProcessInstanceId(), reqVO.getComment()); |
| 259 | 256 | ||
| 260 | // 更新任务拓展表为不通过 | 257 | // 更新任务拓展表为不通过 |
| 261 | taskExtMapper.updateByTaskId(new BpmTaskExtDO().setTaskId(task.getId()) | 258 | taskExtMapper.updateByTaskId(new BpmTaskExtDO().setTaskId(task.getId()) |