ソースを参照

任务人显示问题

Signed-off-by: liuyc <56808083@qq.com>
liuyc 1 年間 前
コミット
c02b84018a

+ 1 - 2
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/TaskDetailVO.java

@@ -13,8 +13,7 @@ import java.util.Map;
 public class TaskDetailVO implements Serializable {
 
     @ApiModelProperty(value = "流程信息")
-    private List<Map<String, String>> taskProcessInfo;
-    //private Map<String, List<Map<String, String>>> taskProcessInfo;
+    private List<Map<String, Object>> taskProcessInfo;
 
     @ApiModelProperty(value = "中间的业务数据列表信息")
     private Object taskCenterDataInfo;

+ 3 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/TaskPageVO.java

@@ -48,4 +48,7 @@ public class TaskPageVO implements Serializable {
     @ApiModelProperty(value = "计量数据类型")
     private Integer meterType;
 
+    @ApiModelProperty(value = "预设流程id")
+    private Long fixedFlowId;
+
 }

+ 78 - 26
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -565,7 +565,7 @@ public class TaskController extends BladeController {
 
         task.setType(1);
         task.setApprovalType(5); //计量
-        task.setFixedFlowId(0L);
+        task.setFixedFlowId(ObjectUtil.isNotEmpty(approvalDTO.getFixedFlowId()) ? Long.parseLong(approvalDTO.getFixedFlowId()) : 0L);
         task.setStatus(1); //待审批
         task.setIsDeleted(0);
         taskClient.saveTask(task);
@@ -1063,6 +1063,7 @@ public class TaskController extends BladeController {
                     vo.setMeterType(task.getMeterTaskType());
                     vo.setTaskDesc(task.getTaskContent());
                     vo.setTaskReportUserName(nameMap.get(Long.parseLong(task.getReportUser())));
+                    vo.setFixedFlowId(ObjectUtil.isNotEmpty(task.getFixedFlowId()) ? task.getFixedFlowId().equals(0L) ? null : task.getFixedFlowId() : null);
                     List<TaskParallel> taskParallelList = finalTaskParallelGroupMap.get(task.getProcessInstanceId());
                     if (taskParallelList != null && taskParallelList.size() > 0) {
                         List<String> names = taskParallelList.stream().map(TaskParallel::getTaskUserName).collect(Collectors.toList());
@@ -1118,44 +1119,95 @@ public class TaskController extends BladeController {
             throw new ServiceException("任务id、用户信息不能为空");
         }
         TaskDetailVO vo = new TaskDetailVO();
-        Task task = jdbcTemplate.query("SELECT * FROM u_task WHERE id = " + id, new BeanPropertyRowMapper<>(Task.class)).stream().findAny().orElse(null);
+        Task task = jdbcTemplate.query("SELECT * FROM u_task WHERE id = ?", new Object[]{id}, new BeanPropertyRowMapper<>(Task.class)).stream().findAny().orElse(null);
         if (task != null) {
+
+            List<Map<String, Object>> taskProcessInfo = new LinkedList<>();
+
             /*左侧任务流程信息*/
-            List<TaskParallel> taskParallels = jdbcTemplate.query("select process_instance_id,task_user,task_user_name,e_visa_status,e_visa_content,status,sort,update_time from u_task_parallel where process_instance_id = " + task.getProcessInstanceId() + " order by sort", new BeanPropertyRowMapper<>(TaskParallel.class));
-            List<Map<String, String>> taskProcessInfo = new LinkedList<>();
+            List<TaskParallel> taskParallels = jdbcTemplate.query("SELECT process_instance_id,task_user,task_user_name,e_visa_status,e_visa_content,status,sort,update_time FROM u_task_parallel WHERE process_instance_id = ? ORDER BY sort", new Object[]{task.getProcessInstanceId()}, new BeanPropertyRowMapper<>(TaskParallel.class));
 
             /*上报人*/
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-            Map<String, String> taskUserOne = new LinkedHashMap<>();
+            Map<String, Object> taskUserOne = new LinkedHashMap<>();
             taskUserOne.put("name", task.getReportUserName());
             taskUserOne.put("date", sdf.format(task.getCreateTime()));
             taskUserOne.put("status", "2");
             taskUserOne.put("flowValue", "上报");
-            taskUserOne.put("sort", "0");
             taskProcessInfo.add(0, taskUserOne);
 
-            /*流程人*/
-            for (int i = 0; i < taskParallels.size(); i++) {
-                TaskParallel taskParallel = taskParallels.get(i);
-                Map<String, String> taskUserOther = new LinkedHashMap<>();
-                taskUserOther.put("name", taskParallel.getTaskUserName());
-                if (taskParallel.getStatus().equals(2) || taskParallel.getStatus().equals(3)) {
-                    taskUserOther.put("date", sdf.format(taskParallel.getUpdateTime()));
-                }
-                taskUserOther.put("status", taskParallel.getStatus().toString());
-                if (i == taskParallels.size() - 1) {
-                    taskUserOther.put("flowValue", (taskParallel.getStatus().equals(2) ? "同意" : taskParallel.getStatus().equals(1) ? "待审批" : "已废除") + "</br></br>结束流程");
-                } else {
-                    taskUserOther.put("flowValue", taskParallel.getStatus().equals(2) ? "同意" : taskParallel.getStatus().equals(1) ? "待审批" : "已废除");
+            /*预设流程(平行、顺序审批)*/
+            if (ObjectUtil.isNotEmpty(task.getFixedFlowId()) && !task.getFixedFlowId().equals(0L)) {
+                List<FixedFlowLink> query = jdbcTemplate.query("SELECT * FROM u_fixed_flow_link WHERE fixed_flow_id = ?", new Object[]{task.getFixedFlowId()}, new BeanPropertyRowMapper<>(FixedFlowLink.class));
+                Map<String, List<FixedFlowLink>> group = query.stream()
+                        .collect(Collectors.groupingBy(obj -> obj.getFixedFlowLink() + "@@@" + obj.getFixedFlowLinkType(),
+                                LinkedHashMap::new,
+                                Collectors.toList()));
+
+                for (Map.Entry<String, List<FixedFlowLink>> stringListEntry : group.entrySet()) {
+                    Map<String, Object> m = new LinkedHashMap<>();
+                    m.put("taskBranchName", stringListEntry.getKey().split("@@@")[0]);
+                    m.put("taskBranchType", stringListEntry.getKey().split("@@@")[1]);
+
+                    List<FixedFlowLink> value = stringListEntry.getValue();
+                    if (stringListEntry.getKey().split("@@@")[1].equals("1")) {
+                        value.sort(Comparator.comparingInt(FixedFlowLink::getFixedFlowLinkSort));
+                    }
+                    List<Long> userIds = value.stream().map(FixedFlowLink::getFixedFlowLinkUser).collect(Collectors.toList());
+
+                    List<Map<String, String>> userList = new LinkedList<>();
+                    for (int i = 0; i < taskParallels.size(); i++) {
+                        TaskParallel taskParallel = taskParallels.get(i);
+                        if (userIds.contains(Long.parseLong(taskParallel.getTaskUser()))) {
+                            Map<String, String> taskUserOther = new LinkedHashMap<>();
+                            taskUserOther.put("name", taskParallel.getTaskUserName());
+                            if (taskParallel.getStatus().equals(2) || taskParallel.getStatus().equals(3)) {
+                                taskUserOther.put("date", sdf.format(taskParallel.getUpdateTime()));
+                            }
+                            taskUserOther.put("status", taskParallel.getStatus().toString());
+                            if (i == taskParallels.size() - 1) {
+                                taskUserOther.put("flowValue", (taskParallel.getStatus().equals(2) ? "同意" : taskParallel.getStatus().equals(1) ? "待审批" : "已废除") + "</br></br>结束流程");
+                            } else {
+                                taskUserOther.put("flowValue", taskParallel.getStatus().equals(2) ? "同意" : taskParallel.getStatus().equals(1) ? "待审批" : "已废除");
+                            }
+                            userList.add(taskUserOther);
+                        }
+                    }
+                    m.put("userList", userList);
+
+                    String var = "1";
+                    List<String> statusList = userList.stream()
+                            .map(user -> user.get("status"))
+                            .filter(Objects::nonNull)
+                            .collect(Collectors.toList());
+                    if (statusList.stream().allMatch("2"::equals)) {
+                        var = "2";
+                    }
+                    m.put("taskBranchStatus", var);
+
+                    taskProcessInfo.add(m);
                 }
-                taskUserOther.put("sort", taskParallel.getSort().toString());
-                taskProcessInfo.add(taskUserOther);
-            }
-            vo.setTaskProcessInfo(taskProcessInfo);
+                vo.setTaskProcessInfo(taskProcessInfo);
 
-            /*Map<String, List<Map<String, String>>> groupedBySort = taskProcessInfo.stream().collect(Collectors.groupingBy(obj_1 -> obj_1.get("sort")));
-            groupedBySort.values().forEach(group -> group.sort(Comparator.comparing(obj_2 -> obj_2.get("sort"))));
-            vo.setTaskProcessInfo(groupedBySort);*/
+                /*非预设流程(默认顺序审批)*/
+            } else if (ObjectUtil.isEmpty(task.getFixedFlowId()) || task.getFixedFlowId().equals(0L)) {
+                for (int i = 0; i < taskParallels.size(); i++) {
+                    TaskParallel taskParallel = taskParallels.get(i);
+                    Map<String, Object> taskUserOther = new LinkedHashMap<>();
+                    taskUserOther.put("name", taskParallel.getTaskUserName());
+                    if (taskParallel.getStatus().equals(2) || taskParallel.getStatus().equals(3)) {
+                        taskUserOther.put("date", sdf.format(taskParallel.getUpdateTime()));
+                    }
+                    taskUserOther.put("status", taskParallel.getStatus().toString());
+                    if (i == taskParallels.size() - 1) {
+                        taskUserOther.put("flowValue", (taskParallel.getStatus().equals(2) ? "同意" : taskParallel.getStatus().equals(1) ? "待审批" : "已废除") + "</br></br>结束流程");
+                    } else {
+                        taskUserOther.put("flowValue", taskParallel.getStatus().equals(2) ? "同意" : taskParallel.getStatus().equals(1) ? "待审批" : "已废除");
+                    }
+                    taskProcessInfo.add(taskUserOther);
+                }
+                vo.setTaskProcessInfo(taskProcessInfo);
+            }
 
             /*中间业务taskVO复制数据(只有待审批、已审批任务才能查看到具体的taskVO复制数据,因为废除任务时taskVO被删除,但是单条驳回时有记录单条数据的历史信息,所以通过的任务还是能查看到)*/
             if (ObjectUtil.isNotEmpty(task.getFormDataId()) && Arrays.asList(1, 2).contains(task.getStatus())) {