Commit cd678e997ad152a8aa5657877dbe877b210ccf61

Authored by kehaiyou
1 parent 80d532b0

feat: 【工作流】--减签和加签共用处理父任务逻辑

yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java
@@ -15,7 +15,6 @@ import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.*; @@ -15,7 +15,6 @@ import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.*;
15 import cn.iocoder.yudao.module.bpm.convert.task.BpmTaskConvert; 15 import cn.iocoder.yudao.module.bpm.convert.task.BpmTaskConvert;
16 import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmTaskExtDO; 16 import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmTaskExtDO;
17 import cn.iocoder.yudao.module.bpm.dal.mysql.task.BpmTaskExtMapper; 17 import cn.iocoder.yudao.module.bpm.dal.mysql.task.BpmTaskExtMapper;
18 -import cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants;  
19 import cn.iocoder.yudao.module.bpm.enums.task.*; 18 import cn.iocoder.yudao.module.bpm.enums.task.*;
20 import cn.iocoder.yudao.module.bpm.service.definition.BpmModelService; 19 import cn.iocoder.yudao.module.bpm.service.definition.BpmModelService;
21 import cn.iocoder.yudao.module.bpm.service.message.BpmMessageService; 20 import cn.iocoder.yudao.module.bpm.service.message.BpmMessageService;
@@ -229,7 +228,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { @@ -229,7 +228,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
229 new BpmTaskExtDO().setTaskId(task.getId()).setResult(BpmProcessInstanceResultEnum.APPROVE.getResult()) 228 new BpmTaskExtDO().setTaskId(task.getId()).setResult(BpmProcessInstanceResultEnum.APPROVE.getResult())
230 .setReason(reqVO.getReason())); 229 .setReason(reqVO.getReason()));
231 //处理加签任务 230 //处理加签任务
232 - this.approveTask0(task); 231 + this.handleParentTask(task);
233 } 232 }
234 233
235 /** 234 /**
@@ -258,7 +257,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { @@ -258,7 +257,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
258 * 257 *
259 * @param task 当前任务 258 * @param task 当前任务
260 */ 259 */
261 - private void approveTask0(Task task) { 260 + private void handleParentTask(Task task) {
262 String parentTaskId = task.getParentTaskId(); 261 String parentTaskId = task.getParentTaskId();
263 if (StrUtil.isNotBlank(parentTaskId)) { 262 if (StrUtil.isNotBlank(parentTaskId)) {
264 //1. 判断当前任务的父任务是否还有子任务 263 //1. 判断当前任务的父任务是否还有子任务
@@ -274,10 +273,9 @@ public class BpmTaskServiceImpl implements BpmTaskService { @@ -274,10 +273,9 @@ public class BpmTaskServiceImpl implements BpmTaskService {
274 //3.2 更新任务拓展表为处理中 273 //3.2 更新任务拓展表为处理中
275 taskExtMapper.updateByTaskId( 274 taskExtMapper.updateByTaskId(
276 new BpmTaskExtDO().setTaskId(parentTask.getId()).setResult(BpmProcessInstanceResultEnum.PROCESS.getResult())); 275 new BpmTaskExtDO().setTaskId(parentTask.getId()).setResult(BpmProcessInstanceResultEnum.PROCESS.getResult()));
277 - }  
278 - //4. 处理向后加签  
279 - if (BpmTaskAddSignTypeEnum.AFTER.getType().equals(scopeType)) {  
280 - handleAfterSign(parentTask, parentTaskId); 276 + }else if (BpmTaskAddSignTypeEnum.AFTER.getType().equals(scopeType)) {
  277 + //4. 处理向后加签
  278 + handleAfterSign(parentTask);
281 } 279 }
282 //5. 子任务已处理完成,清空 scopeType 字段,修改 parentTask 信息,方便后续可以继续向前后向后加签 280 //5. 子任务已处理完成,清空 scopeType 字段,修改 parentTask 信息,方便后续可以继续向前后向后加签
283 // 再查询一次的原因是避免报错:Task was updated by another transaction concurrently 281 // 再查询一次的原因是避免报错:Task was updated by another transaction concurrently
@@ -296,9 +294,9 @@ public class BpmTaskServiceImpl implements BpmTaskService { @@ -296,9 +294,9 @@ public class BpmTaskServiceImpl implements BpmTaskService {
296 * 处理后加签任务 294 * 处理后加签任务
297 * 295 *
298 * @param parentTask 当前审批任务的父任务 296 * @param parentTask 当前审批任务的父任务
299 - * @param parentTaskId 当前审批任务的父ID  
300 */ 297 */
301 - private void handleAfterSign(Task parentTask, String parentTaskId) { 298 + private void handleAfterSign(Task parentTask) {
  299 + String parentTaskId = parentTask.getId();
302 //4.1 更新 parentTask 的任务拓展表为通过 300 //4.1 更新 parentTask 的任务拓展表为通过
303 BpmTaskExtDO currentTaskExt = taskExtMapper.selectByTaskId(parentTask.getId()); 301 BpmTaskExtDO currentTaskExt = taskExtMapper.selectByTaskId(parentTask.getId());
304 BpmTaskExtDO currentTaskUpdateEntity = new BpmTaskExtDO().setTaskId(parentTask.getId()) 302 BpmTaskExtDO currentTaskUpdateEntity = new BpmTaskExtDO().setTaskId(parentTask.getId())
@@ -799,22 +797,11 @@ public class BpmTaskServiceImpl implements BpmTaskService { @@ -799,22 +797,11 @@ public class BpmTaskServiceImpl implements BpmTaskService {
799 //3. 修改扩展表状态为取消 797 //3. 修改扩展表状态为取消
800 taskExtMapper.updateBatchByTaskIdList(allTaskIdList,new BpmTaskExtDO().setResult(BpmProcessInstanceResultEnum.CANCEL.getResult()) 798 taskExtMapper.updateBatchByTaskIdList(allTaskIdList,new BpmTaskExtDO().setResult(BpmProcessInstanceResultEnum.CANCEL.getResult())
801 .setReason(StrUtil.format("由于{}操作[减签],任务被取消",user.getNickname()))); 799 .setReason(StrUtil.format("由于{}操作[减签],任务被取消",user.getNickname())));
802 - //4. 判断当前任务的父任务是否还有子任务  
803 - Task parentTask = validateTaskExist(task.getParentTaskId());  
804 - Long subTaskCount = getSubTaskCount(task.getParentTaskId());  
805 - if(subTaskCount == 0){  
806 - if(BpmTaskAddSignTypeEnum.BEFORE.getType().equals(parentTask.getScopeType())){  
807 - //4.1 父任务是往前加签的,则进入判断,将当前任务的状态设置为进行中,并将 owner 设置回 assignee  
808 - taskExtMapper.updateByTaskId(new BpmTaskExtDO().setResult(BpmProcessInstanceResultEnum.PROCESS.getResult()).setTaskId(task.getParentTaskId()));  
809 - parentTask.setAssignee(parentTask.getOwner());  
810 - parentTask.setOwner(null);  
811 - }  
812 - //4.2 清空 scopeType 字段,修改task  
813 - clearTaskScopeTypeAndSave(parentTask);  
814 - } 800 + //4. 处理当前任务的父任务
  801 + this.handleParentTask(task);
815 //5.记录日志到父任务中 802 //5.记录日志到父任务中
816 String comment = StrUtil.format("{}操作了【减签】,审批人{}的任务被取消",user.getNickname(),cancelUser.getNickname()); 803 String comment = StrUtil.format("{}操作了【减签】,审批人{}的任务被取消",user.getNickname(),cancelUser.getNickname());
817 - taskService.addComment(parentTask.getId(),parentTask.getProcessInstanceId(), 804 + taskService.addComment(task.getParentTaskId(),task.getProcessInstanceId(),
818 BpmCommentTypeEnum.SUB_SIGN.getResult().toString(),comment); 805 BpmCommentTypeEnum.SUB_SIGN.getResult().toString(),comment);
819 } 806 }
820 807