Forráskód Böngészése

fix: supervision by role

shc 8 hónapja
szülő
commit
3156876385

+ 30 - 12
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/WmSupervisionManager.java

@@ -48,6 +48,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -409,35 +410,52 @@ public class WmSupervisionManager {
             return maps;
         } else {
 
-            UpmsState.TaskSupervisionState state;
 
+            // 获取当前积分包已经监察过的任务ID
+            List<WmTaskSupervision> list = taskSupervisionService.
+                    list(Wrappers.<WmTaskSupervision>lambdaQuery()
+                            .eq(WmTaskSupervision::getPackageId, pkgId)
+                            .orderByDesc(WmTaskSupervision::getCreateTime));
+
+            Map<UpmsState.TaskSupervisionState, Set<Integer>> collect1 = list.stream()
+                    .collect(Collectors.groupingBy(WmTaskSupervision::getSupervisionState, Collectors.mapping(WmTaskSupervision::getTaskId, Collectors.toSet())));
+
+
+            Set<Integer> init = collect1.get(UpmsState.TaskSupervisionState.INIT);
+            Set<Integer> ckt1 = collect1.get(UpmsState.TaskSupervisionState.CKT1);
+            Set<Integer> ckt2 = collect1.get(UpmsState.TaskSupervisionState.CKT2);
+            Set<Integer> passed = collect1.get(UpmsState.TaskSupervisionState.PASSED);
+            Set<Integer> rejected = collect1.get(UpmsState.TaskSupervisionState.REJECTED);
+
+            List<Integer> supTaskIds;
             // 负责人
             if (CollUtil.containsAny(roles, List.of(51, 54, 55, 61))) {
-                state = UpmsState.TaskSupervisionState.INIT;
+
+                Set<Integer> temp = CollUtil.unionDistinct(ckt1, rejected);
+                supTaskIds = CollUtil.subtractToList(init, temp);
+
             }
             // 分管领导
             else if (CollUtil.containsAny(roles, List.of(57, 58, 59, 60))) {
-                state = UpmsState.TaskSupervisionState.CKT1;
+                Set<Integer> temp = CollUtil.unionDistinct(ckt2, rejected);
+                supTaskIds = CollUtil.subtractToList(ckt1, temp);
+
             }
             // 事业部总经理
             else if (CollUtil.containsAny(roles, List.of(39))) {
-                state = UpmsState.TaskSupervisionState.CKT2;
+                Set<Integer> temp = CollUtil.unionDistinct(passed, rejected);
+                supTaskIds = CollUtil.subtractToList(ckt2, temp);
             } else {
                 throw new BizException("无监察权限");
             }
 
-            // 获取当前积分包已经监察过的任务ID
-            List<WmTaskSupervision> list = taskSupervisionService.
-                    list(Wrappers.<WmTaskSupervision>lambdaQuery()
-                            .eq(WmTaskSupervision::getSupervisionState, state)
-                            .eq(WmTaskSupervision::getPackageId, pkgId)
-                            .orderByDesc(WmTaskSupervision::getCreateTime));
 
-            if (CollUtil.isEmpty(list)) {
+
+            if (CollUtil.isEmpty(supTaskIds)) {
                 return Collections.emptyList();
             }
 
-            Set<Integer> supTaskIds = list.stream().mapToInt(WmTaskSupervision::getTaskId).boxed().collect(Collectors.toSet());
+            // Set<Integer> supTaskIds = list.stream().mapToInt(WmTaskSupervision::getTaskId).boxed().collect(Collectors.toSet());
             List<WmTask> tasks = taskService.list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getId, supTaskIds));
             List<Map<String, Object>> maps = taskService.listTaskInfo(tasks, pkgId.toString());