Commit 3972fbd1d9bc03b3562fb94a98e28e52a7e22193

Authored by youkehai
1 parent 15539001

fix: 根据review结果修改

yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java
@@ -50,9 +50,8 @@ public interface ErrorCodeConstants { @@ -50,9 +50,8 @@ public interface ErrorCodeConstants {
50 ErrorCode TASK_TARGET_NODE_NOT_EXISTS = new ErrorCode(1_009_005_004, " 目标节点不存在"); 50 ErrorCode TASK_TARGET_NODE_NOT_EXISTS = new ErrorCode(1_009_005_004, " 目标节点不存在");
51 ErrorCode TASK_RETURN_FAIL_NO_RETURN_TASK = new ErrorCode(1_009_005_005, "回退任务失败,选择回退的节点没有需要回滚的任务!请重新选择其他任务节点"); 51 ErrorCode TASK_RETURN_FAIL_NO_RETURN_TASK = new ErrorCode(1_009_005_005, "回退任务失败,选择回退的节点没有需要回滚的任务!请重新选择其他任务节点");
52 ErrorCode TASK_RETURN_FAIL_SOURCE_TARGET_ERROR = new ErrorCode(1_009_005_006, "回退任务失败,目标节点是在并行网关上或非同一路线上,不可跳转"); 52 ErrorCode TASK_RETURN_FAIL_SOURCE_TARGET_ERROR = new ErrorCode(1_009_005_006, "回退任务失败,目标节点是在并行网关上或非同一路线上,不可跳转");
53 - ErrorCode TASK_DELEGATE_APPROVE_FAIL = new ErrorCode(1_009_005_007, "任务审批失败:委派任务找不到原审批人");  
54 - ErrorCode TASK_DELEGATE_USER_REPEAT = new ErrorCode(1_009_005_008, "任务委派失败,委派人和当前审批人为同一人");  
55 - ErrorCode TASK_DELEGATE_RECEIVE_USER_NULL = new ErrorCode(1_009_005_009, "任务委派失败,接收人不存在"); 53 + ErrorCode TASK_DELEGATE_USER_REPEAT = new ErrorCode(1_009_005_007, "任务委派失败,委派人和当前审批人为同一人");
  54 + ErrorCode TASK_DELEGATE_USER_NULL = new ErrorCode(1_009_005_008, "任务委派失败,被委派人不存在");
56 55
57 // ========== 流程任务分配规则 1-009-006-000 ========== 56 // ========== 流程任务分配规则 1-009-006-000 ==========
58 ErrorCode TASK_ASSIGN_RULE_EXISTS = new ErrorCode(1_009_006_000, "流程({}) 的任务({}) 已经存在分配规则"); 57 ErrorCode TASK_ASSIGN_RULE_EXISTS = new ErrorCode(1_009_006_000, "流程({}) 的任务({}) 已经存在分配规则");
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java
@@ -95,7 +95,7 @@ public class BpmTaskController { @@ -95,7 +95,7 @@ public class BpmTaskController {
95 @Operation(summary = "委派任务", description = "用于【流程详情】的【委派】按钮,和向前加签有点像,和向前加签的唯一的区别是没有单独创立任务") 95 @Operation(summary = "委派任务", description = "用于【流程详情】的【委派】按钮,和向前加签有点像,和向前加签的唯一的区别是没有单独创立任务")
96 @PreAuthorize("@ss.hasPermission('bpm:task:delegate')") 96 @PreAuthorize("@ss.hasPermission('bpm:task:delegate')")
97 public CommonResult<Boolean> delegateTask(@Valid @RequestBody BpmTaskDelegateReqVO reqVO) { 97 public CommonResult<Boolean> delegateTask(@Valid @RequestBody BpmTaskDelegateReqVO reqVO) {
98 - taskService.delegateTask(reqVO); 98 + taskService.delegateTask(reqVO,getLoginUserId());
99 return success(true); 99 return success(true);
100 } 100 }
101 101
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskDelegateReqVO.java
@@ -14,9 +14,9 @@ public class BpmTaskDelegateReqVO { @@ -14,9 +14,9 @@ public class BpmTaskDelegateReqVO {
14 @NotEmpty(message = "任务编号不能为空") 14 @NotEmpty(message = "任务编号不能为空")
15 private String id; 15 private String id;
16 16
17 - @Schema(description = "接收人ID", requiredMode = Schema.RequiredMode.REQUIRED,example = "1")  
18 - @NotNull(message = "接收人ID不能为空")  
19 - private Long receiveId; 17 + @Schema(description = "被委派人ID", requiredMode = Schema.RequiredMode.REQUIRED,example = "1")
  18 + @NotNull(message = "被委派人ID不能为空")
  19 + private Long delegateUserId;
20 20
21 @Schema(description = "委派原因", requiredMode = Schema.RequiredMode.REQUIRED,example = "做不了决定,需要你先帮忙瞅瞅") 21 @Schema(description = "委派原因", requiredMode = Schema.RequiredMode.REQUIRED,example = "做不了决定,需要你先帮忙瞅瞅")
22 @NotEmpty(message = "委派原因不能为空") 22 @NotEmpty(message = "委派原因不能为空")
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskService.java
@@ -140,7 +140,8 @@ public interface BpmTaskService { @@ -140,7 +140,8 @@ public interface BpmTaskService {
140 /** 140 /**
141 * 将指定任务委派给其他人处理,等接收人处理后再回到原审批人手中审批 141 * 将指定任务委派给其他人处理,等接收人处理后再回到原审批人手中审批
142 * 142 *
143 - * @param reqVO 接收人和被委派的任务编号理由参数 143 + * @param reqVO 被委派人和被委派的任务编号理由参数
  144 + * @param userId 委派人ID
144 */ 145 */
145 - void delegateTask(BpmTaskDelegateReqVO reqVO); 146 + void delegateTask(BpmTaskDelegateReqVO reqVO, Long userId);
146 } 147 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java
@@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.bpm.service.task; @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.bpm.service.task;
2 2
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
4 import cn.hutool.core.util.ArrayUtil; 4 import cn.hutool.core.util.ArrayUtil;
5 -import cn.hutool.core.util.ObjectUtil;  
6 import cn.hutool.core.util.StrUtil; 5 import cn.hutool.core.util.StrUtil;
7 import cn.iocoder.yudao.framework.common.pojo.PageResult; 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
8 import cn.iocoder.yudao.framework.common.util.date.DateUtils; 7 import cn.iocoder.yudao.framework.common.util.date.DateUtils;
@@ -14,7 +13,6 @@ import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.*; @@ -14,7 +13,6 @@ import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.*;
14 import cn.iocoder.yudao.module.bpm.convert.task.BpmTaskConvert; 13 import cn.iocoder.yudao.module.bpm.convert.task.BpmTaskConvert;
15 import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmTaskExtDO; 14 import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmTaskExtDO;
16 import cn.iocoder.yudao.module.bpm.dal.mysql.task.BpmTaskExtMapper; 15 import cn.iocoder.yudao.module.bpm.dal.mysql.task.BpmTaskExtMapper;
17 -import cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants;  
18 import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceDeleteReasonEnum; 16 import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceDeleteReasonEnum;
19 import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; 17 import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
20 import cn.iocoder.yudao.module.bpm.service.definition.BpmModelService; 18 import cn.iocoder.yudao.module.bpm.service.definition.BpmModelService;
@@ -41,6 +39,7 @@ import org.springframework.stereotype.Service; @@ -41,6 +39,7 @@ import org.springframework.stereotype.Service;
41 import org.springframework.transaction.annotation.Transactional; 39 import org.springframework.transaction.annotation.Transactional;
42 import org.springframework.transaction.support.TransactionSynchronization; 40 import org.springframework.transaction.support.TransactionSynchronization;
43 import org.springframework.transaction.support.TransactionSynchronizationManager; 41 import org.springframework.transaction.support.TransactionSynchronizationManager;
  42 +import org.springframework.util.Assert;
44 43
45 import javax.annotation.Resource; 44 import javax.annotation.Resource;
46 import javax.validation.Valid; 45 import javax.validation.Valid;
@@ -222,10 +221,9 @@ public class BpmTaskServiceImpl implements BpmTaskService { @@ -222,10 +221,9 @@ public class BpmTaskServiceImpl implements BpmTaskService {
222 AdminUserRespDTO currentUser = adminUserApi.getUser(WebFrameworkUtils.getLoginUserId()); 221 AdminUserRespDTO currentUser = adminUserApi.getUser(WebFrameworkUtils.getLoginUserId());
223 //原审批人 222 //原审批人
224 AdminUserRespDTO sourceApproveUser = adminUserApi.getUser(NumberUtils.parseLong(task.getOwner())); 223 AdminUserRespDTO sourceApproveUser = adminUserApi.getUser(NumberUtils.parseLong(task.getOwner()));
225 - if (sourceApproveUser == null) {  
226 - throw exception(TASK_DELEGATE_APPROVE_FAIL);  
227 - }  
228 - String comment = String.format("[%s]完成委派任务,任务重新回到[%s]手中,审批意见为:%s", currentUser.getNickname(), 224 + Assert.notNull(sourceApproveUser, "委派任务找不到原审批人,需要检查数据");
  225 + //添加审批意见
  226 + String comment = StrUtil.format("[{}]完成委派任务,任务重新回到[{}]手中,审批意见为:{}", currentUser.getNickname(),
229 sourceApproveUser.getNickname(), reqVO.getReason()); 227 sourceApproveUser.getNickname(), reqVO.getReason());
230 taskService.addComment(reqVO.getId(), task.getProcessInstanceId(), BpmProcessInstanceResultEnum.DELEGATE.getResult().toString(), comment); 228 taskService.addComment(reqVO.getId(), task.getProcessInstanceId(), BpmProcessInstanceResultEnum.DELEGATE.getResult().toString(), comment);
231 //调用 resolveTask 完成任务,底层调用 TaskHelper.changeTaskAssignee(task, task.getOwner()); 229 //调用 resolveTask 完成任务,底层调用 TaskHelper.changeTaskAssignee(task, task.getOwner());
@@ -486,23 +484,23 @@ public class BpmTaskServiceImpl implements BpmTaskService { @@ -486,23 +484,23 @@ public class BpmTaskServiceImpl implements BpmTaskService {
486 484
487 @Override 485 @Override
488 @Transactional(rollbackFor = Exception.class) 486 @Transactional(rollbackFor = Exception.class)
489 - public void delegateTask(BpmTaskDelegateReqVO reqVO) { 487 + public void delegateTask(BpmTaskDelegateReqVO reqVO,Long userId) {
490 // 校验任务 488 // 校验任务
491 Task task = this.validateTaskDelegate(reqVO); 489 Task task = this.validateTaskDelegate(reqVO);
492 // 添加审批意见 490 // 添加审批意见
493 - AdminUserRespDTO currentUser = adminUserApi.getUser(WebFrameworkUtils.getLoginUserId());  
494 - AdminUserRespDTO receiveUser = adminUserApi.getUser(reqVO.getReceiveId());  
495 - if (receiveUser == null) {  
496 - throw exception(TASK_DELEGATE_RECEIVE_USER_NULL); 491 + AdminUserRespDTO currentUser = adminUserApi.getUser(userId);
  492 + AdminUserRespDTO delegateUser = adminUserApi.getUser(reqVO.getDelegateUserId());
  493 + if (delegateUser == null) {
  494 + throw exception(TASK_DELEGATE_USER_NULL);
497 } 495 }
498 - String comment = String.format("[%s]将任务委派给[%s],委派理由为:%s", currentUser.getNickname(),  
499 - receiveUser.getNickname(), reqVO.getReason()); 496 + String comment = StrUtil.format("[{}]将任务委派给[{}],委派理由为:{}", currentUser.getNickname(),
  497 + delegateUser.getNickname(), reqVO.getReason());
500 String taskId = reqVO.getId(); 498 String taskId = reqVO.getId();
501 taskService.addComment(taskId, task.getProcessInstanceId(), BpmProcessInstanceResultEnum.DELEGATE.getResult().toString(), comment); 499 taskService.addComment(taskId, task.getProcessInstanceId(), BpmProcessInstanceResultEnum.DELEGATE.getResult().toString(), comment);
502 // 设置任务所有人 (owner) 为原任务的处理人 (assignee) 500 // 设置任务所有人 (owner) 为原任务的处理人 (assignee)
503 taskService.setOwner(taskId, task.getAssignee()); 501 taskService.setOwner(taskId, task.getAssignee());
504 // 执行委派,将任务委派给 receiveId 502 // 执行委派,将任务委派给 receiveId
505 - taskService.delegateTask(taskId, reqVO.getReceiveId().toString()); 503 + taskService.delegateTask(taskId, reqVO.getDelegateUserId().toString());
506 // 更新任务拓展表为【委派】 504 // 更新任务拓展表为【委派】
507 taskExtMapper.updateByTaskId( 505 taskExtMapper.updateByTaskId(
508 new BpmTaskExtDO().setTaskId(task.getId()).setResult(BpmProcessInstanceResultEnum.DELEGATE.getResult()) 506 new BpmTaskExtDO().setTaskId(task.getId()).setResult(BpmProcessInstanceResultEnum.DELEGATE.getResult())
@@ -519,7 +517,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { @@ -519,7 +517,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
519 // 校验任务 517 // 校验任务
520 Task task = checkTask(WebFrameworkUtils.getLoginUserId(), reqVO.getId()); 518 Task task = checkTask(WebFrameworkUtils.getLoginUserId(), reqVO.getId());
521 //校验当前审批人和被委派人不是同一人 519 //校验当前审批人和被委派人不是同一人
522 - if (task.getAssignee().equals(reqVO.getReceiveId().toString())) { 520 + if (task.getAssignee().equals(reqVO.getDelegateUserId().toString())) {
523 throw exception(TASK_DELEGATE_USER_REPEAT); 521 throw exception(TASK_DELEGATE_USER_REPEAT);
524 } 522 }
525 return task; 523 return task;