Commit cd678e997ad152a8aa5657877dbe877b210ccf61
1 parent
80d532b0
feat: 【工作流】--减签和加签共用处理父任务逻辑
Showing
1 changed file
with
10 additions
and
23 deletions
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 |