kimi
2020-05-18 c8aee7b9bfd79cfd741d7e5692520f4f51a31a86
src/main/java/com/highdatas/mdm/service/act/impl/TaskServiceImpl.java
@@ -2,6 +2,7 @@
import com.highdatas.mdm.entity.TUser;
import com.highdatas.mdm.pojo.NextTaskUserInfo;
import com.highdatas.mdm.util.DbUtils;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.*;
import org.activiti.engine.delegate.Expression;
@@ -44,10 +45,14 @@
   }
   public String claimTask(String workflowId) {
      Task task = getTask(workflowId);
      if (task == null) {
         return null;
      }
        TUser onlineUser = getOnlineUser();
        //resultPool = serviceCaller.getResultPool();
      if (onlineUser == null) {
         return null;
      }
      try {
         taskService.claim(task.getId(), onlineUser.getUserId());
         //resultPool.setMessage("Task is claimed");
@@ -60,13 +65,10 @@
   }
   
   public boolean completeTask(String taskId, boolean pass, String reason, Map<String,Object> other) {
   public boolean completeTask(String taskId, Object pass, String reason, Map<String,Object> other) {
      Map<String, Object> variables = new LinkedHashMap<String, Object>();
      if(other != null){
         Set<String> keySet = other.keySet();
         for (String key : keySet) {
            variables.put(key, other.get(key));
         }
         variables.putAll(other);
      }
      variables.put("pass", pass);
      variables.put("reason", reason);
@@ -83,10 +85,10 @@
      }
   }   
   
   public boolean completeTask(String taskId, boolean pass, String reason) {
   public boolean completeTask(String taskId, Object pass, String reason) {
      return completeTask(taskId,pass,reason,null);
   }
   }
   public List<String> getTodoTask()  {
        TUser onlineUser = getOnlineUser();
        Set<String> result = new HashSet<>();
@@ -119,15 +121,17 @@
   @Override
   public NextTaskUserInfo getNestTaskAssignee(String workflowId) {
      //TODO 需修改
      NextTaskUserInfo nextTaskUserInfo = new NextTaskUserInfo();
      Task nextTask = geTask(workflowId);
      if (nextTask == null) {
         return null;
      }
      String nextTaskAssignee = nextTask.getAssignee();
      if (!StringUtils.isEmpty(nextTaskAssignee)) {
         nextTaskUserInfo.setUserId(nextTaskAssignee);
         nextTaskUserInfo.setRoleId("R001");
         nextTaskUserInfo.addOneUser(nextTaskAssignee);
         return nextTaskUserInfo;
      }
      String processDefinitionId=nextTask.getProcessDefinitionId(); // 获取流程定义id
      ProcessDefinitionEntity processDefinitionEntity= (ProcessDefinitionEntity) repositoryService.getProcessDefinition(processDefinitionId);
@@ -136,11 +140,28 @@
      TaskDefinition taskDef = (TaskDefinition)activityImpl.getProperties().get("taskDefinition");
      Set<Expression> userCodes = taskDef.getCandidateUserIdExpressions();//候选人
      Set<Expression> roleCodes = taskDef.getCandidateGroupIdExpressions();//候选组
      if (roleCodes.size() != 0) {
         String roleId = roleCodes.stream().map(expression -> expression.getExpressionText()).findFirst().get();
         nextTaskUserInfo.setRoleId(roleId);
      if (roleCodes != null) {
         Set<String> roleList = roleCodes.stream().map(expression -> expression.getExpressionText()).collect(Collectors.toSet());
         nextTaskUserInfo.addRoleList(roleList);
      }
      return nextTaskUserInfo;
      Set<String> userList = new HashSet<>();
      if (userCodes != null) {
         Set userSet = userCodes.stream().map(expression -> expression.getExpressionText()).collect(Collectors.toSet());
         userList.addAll(userSet);
      }
        List<String> roleIdList = nextTaskUserInfo.getRoleIdList();
      if (roleIdList == null || roleIdList.isEmpty()) {
          nextTaskUserInfo.addUserList(userList);
            return nextTaskUserInfo;
        }
        for (String roleId : roleIdList) {
            Set<String> userByRole = DbUtils.getUserByRole(roleId);
            userList.addAll(userByRole);
        }
        nextTaskUserInfo.addUserList(userList);
        return nextTaskUserInfo;
   }
}