Преглед на файлове

feat:supervision v3.5

shc преди 7 месеца
родител
ревизия
d90e3f1a43
променени са 2 файла, в които са добавени 147 реда и са изтрити 22 реда
  1. 1 0
      doc/db/36wm_task_sup_adv.sql
  2. 146 22
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/WmSupervisionManager.java

+ 1 - 0
doc/db/36wm_task_sup_adv.sql

@@ -12,6 +12,7 @@ CREATE TABLE `wm_task_sup_adv`
     `advice_id`                BIGINT UNSIGNED AUTO_INCREMENT     NOT NULL COMMENT '监督建议ID',
     `task_supervision_id`      BIGINT UNSIGNED                    NOT NULL COMMENT '任务监察ID',
     `task_supervision_content` VARCHAR(512)                       NULL COMMENT '监察内容',
+    `advice_result`            TINYINT(1)                         NOT NULL COMMENT '意见结果',
     `remarks`                  VARCHAR(512)                       NOT NULL COMMENT '监察说明',
     `create_by`                VARCHAR(32)                        NOT NULL COMMENT '创建人',
     `create_time`              DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',

+ 146 - 22
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/WmSupervisionManager.java

@@ -962,18 +962,24 @@ public class WmSupervisionManager {
         }
 
 
-        // 筛查区域内所有企业
-        List<Long> areaCode = query.getAreaCode();
+
         List<Long> entIds;
-        if (CollUtil.isNotEmpty(areaCode)) {
-            entIds = enterpriseAreaService.listAreaEnts(areaCode);
-            if (CollUtil.isEmpty(entIds)) {
-                return page;
-            }
+        if (CollUtil.containsAny(SecurityUtils.getRoles(), List.of(37))){
+            entIds = Collections.singletonList(Long.valueOf(operator.getDeptId()));
         } else {
-            entIds = Collections.emptyList();
+            // 筛查区域内所有企业
+            List<Long> areaCode = query.getAreaCode();
+            if (CollUtil.isNotEmpty(areaCode)) {
+                entIds = enterpriseAreaService.listAreaEnts(areaCode);
+                if (CollUtil.isEmpty(entIds)) {
+                    return page;
+                }
+            } else {
+                entIds = Collections.emptyList();
+            }
         }
 
+
         // 查询所有的服务商
         Page<SysDept> deptPage = deptService.page(new Page<>(query.getCurrent(), query.getSize()), Wrappers.<SysDept>lambdaQuery().eq(SysDept::getLevel, 4).eq(StrUtil.isNotBlank(query.getEntName()), SysDept::getName, query.getEntName()).in(CollUtil.isNotEmpty(entIds), SysDept::getDeptId, entIds));
 
@@ -984,7 +990,6 @@ public class WmSupervisionManager {
         }
 
         // 封装参数
-
         List<Map<String, Object>> collect = depts.stream().map(dept -> {
             Map<String, Object> map = new HashMap<>(5);
             map.put("deptName", dept.getName());
@@ -995,6 +1000,8 @@ public class WmSupervisionManager {
 
             int total = 0;
             int supTotal = 0;
+            int total1 = 0;
+            int supTotal1 = 0;
 
             // 获取c端包统计信息
             if (CollUtil.isNotEmpty(pkgs)) {
@@ -1006,17 +1013,62 @@ public class WmSupervisionManager {
                 // 获取监察记录
                 List<WmTaskSupervision> supervisions = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery().in(WmTaskSupervision::getPackageId, pkgIds.stream().mapToInt(Integer::valueOf).boxed().sorted().distinct().collect(Collectors.toList())));
 
-                // 获取监察结果
                 total = CollUtil.isNotEmpty(tasks) ? tasks.size() : 0;
                 supTotal = CollUtil.isNotEmpty(supervisions) ? supervisions.stream().map(WmTaskSupervision::getTaskId).collect(Collectors.toSet()).size() : 0;
 
+                List<Integer> roles = SecurityUtils.getRoles();
+                // 监察员
+                if (CollUtil.containsAny(roles, List.of(49, 52, 53, 56))) {
+                    // 获取监察结果
+                    total1 = total;
+                    supTotal1 = supTotal;
+                }
+                // 服务商
+                else if (CollUtil.containsAny(roles, List.of(37))) {
+                    // 获取监察结果
+                    total1 = supTotal;
+                    supTotal1 = supTotal;
+                }
+                // 其他角色
+                else {
+
+                    Map<UpmsState.TaskSupervisionState, Set<Integer>> collect1 = supervisions.stream()
+                            .collect(Collectors.groupingBy(WmTaskSupervision::getSupervisionState, Collectors.mapping(WmTaskSupervision::getTaskId, Collectors.toSet())));
+
+
+                    Set<Integer> init = collect1.getOrDefault(UpmsState.TaskSupervisionState.INIT, Collections.emptySet());
+                    Set<Integer> ckt1 = collect1.getOrDefault(UpmsState.TaskSupervisionState.CKT1, Collections.emptySet());
+                    Set<Integer> ckt2 = collect1.getOrDefault(UpmsState.TaskSupervisionState.CKT2, Collections.emptySet());
+                    Set<Integer> passed = collect1.getOrDefault(UpmsState.TaskSupervisionState.PASSED, Collections.emptySet());
+                    Set<Integer> rejected = collect1.getOrDefault(UpmsState.TaskSupervisionState.REJECTED, Collections.emptySet());
+
+                    // 负责人
+                    if (CollUtil.containsAny(roles, List.of(57, 58, 59, 60))) {
+
+                        supTotal1 = ckt1.size();
+                        total1 = init.size() + supTotal1;
+                    }
+                    // 分管领导
+                    else if (CollUtil.containsAny(roles, List.of(51, 54, 55, 61))) {
+
+                        supTotal1 = ckt2.size();
+                        total1 = ckt1.size() + supTotal1;
+                    }
+                    // 事业部总经理
+                    else if (CollUtil.containsAny(roles, List.of(39))) {
+                        supTotal1 = passed.size();
+                        total1 = ckt2.size() + supTotal1;
+                    }
+
+                }
+
             }
             Map<String, Integer> stat = new HashMap<>(2);
             stat.put("supTotal", supTotal);
             stat.put("total", total);
             map.put("taskSupStat", stat);
-            map.put("toCheck", supTotal != total);
-            map.put("checked", supTotal != 0);
+            map.put("toCheck", supTotal1 != total1);
+            map.put("checked", supTotal1 != 0);
 
             return map;
         }).collect(Collectors.toList());
@@ -1028,6 +1080,9 @@ public class WmSupervisionManager {
 
     public Page<Map<String, Object>> pageTaskSupervision(WmSupervisionDto.OnTaskSupervisionPage query) {
 
+        // 操作人角色
+        List<Integer> roles = SecurityUtils.getRoles();
+
         Page<Map<String, Object>> page = new Page<>(query.getCurrent(), query.getSize());
 
         // 获取积分包
@@ -1043,21 +1098,90 @@ public class WmSupervisionManager {
         // 积分包内已经监督的任务
         List<WmTaskSupervision> list = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery().in(WmTaskSupervision::getPackageId, pkgIds).orderByDesc(WmTaskSupervision::getCreateTime));
 
-        // 获取当前积分包已经监督过的任务ID
 
-        // 查询
+        // 监督员
+        Boolean review = query.getReview();
+        HnqzUser user = SecurityUtils.getUser();
         Page<WmTask> taskPage;
-        if (query.getReview()) {
-            HnqzUser user = SecurityUtils.getUser();
-            List<String> taskIds = list.stream().filter(ts -> StrUtil.equals(ts.getCreateBy(), user.getUsername())).map(ts -> ts.getTaskId().toString()).distinct().collect(Collectors.toList());
-            if (CollUtil.isEmpty(taskIds)) {
+        if (CollUtil.containsAny(roles, List.of(49, 52, 53, 56))) {
+
+            if (review) {
+                List<String> taskIds = list.stream().filter(ts -> StrUtil.equals(ts.getCreateBy(), user.getUsername())).map(ts -> ts.getTaskId().toString()).distinct().collect(Collectors.toList());
+                if (CollUtil.isEmpty(taskIds)) {
+                    return page;
+                }
+                taskPage = taskService.page(new Page<>(query.getCurrent(), query.getSize()), Wrappers.<WmTask>lambdaQuery().in(WmTask::getId, taskIds));
+
+            } else {
+                List<Integer> supTaskIds = list.stream().mapToInt(WmTaskSupervision::getTaskId).boxed().sorted().distinct().collect(Collectors.toList());
+                taskPage = taskService.listAvailableTaskForSupervision2(new Page<>(query.getCurrent(), query.getSize()), pkgIds, supTaskIds);
+            }
+        }
+        // 服务商
+        else if (CollUtil.containsAny(roles, List.of(37))) {
+
+            // 获取当前积分包已经监督过的任务ID
+            List<WmTaskSupervision> collect = list.stream().filter(ts -> UpmsState.TaskSupervisionState.PASSED.equals(ts.getSupervisionState())).collect(Collectors.toList());
+
+            if (CollUtil.isEmpty(collect)) {
                 return page;
             }
-            taskPage = taskService.page(new Page<>(query.getCurrent(), query.getSize()), Wrappers.<WmTask>lambdaQuery().in(WmTask::getId, taskIds));
 
-        } else {
-            List<Integer> supTaskIds = list.stream().mapToInt(WmTaskSupervision::getTaskId).boxed().sorted().distinct().collect(Collectors.toList());
-            taskPage = taskService.listAvailableTaskForSupervision2(new Page<>(query.getCurrent(), query.getSize()), pkgIds, supTaskIds);
+            Set<Integer> supTaskIds = collect.stream().mapToInt(WmTaskSupervision::getTaskId).boxed().collect(Collectors.toSet());
+
+
+            taskPage = taskService.page(new Page<>(query.getCurrent(), query.getSize()), Wrappers.<WmTask>lambdaQuery().in(WmTask::getId, supTaskIds));
+        }
+        // 负责人|分管领导|事业部总经理
+        else {
+
+            if (review) {
+                // 获取当前积分包已经监督过的任务ID
+                Set<Integer> supTaskIds = list.stream().filter(ts -> StrUtil.equals(user.getUsername(), ts.getCreateBy())).mapToInt(WmTaskSupervision::getTaskId).boxed().collect(Collectors.toSet());
+                if (CollUtil.isEmpty(supTaskIds)) {
+                    return page;
+                }
+                taskPage = taskService.page(new Page<>(query.getCurrent(), query.getSize()), Wrappers.<WmTask>lambdaQuery().in(WmTask::getId, supTaskIds));
+            } else {
+                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(57, 58, 59, 60))) {
+
+                    Set<Integer> temp = CollUtil.unionDistinct(ckt1, rejected);
+                    supTaskIds = CollUtil.subtractToList(init, temp);
+
+                }
+                // 分管领导
+                else if (CollUtil.containsAny(roles, List.of(51, 54, 55, 61))) {
+                    Set<Integer> temp = CollUtil.unionDistinct(ckt2, rejected);
+                    supTaskIds = CollUtil.subtractToList(ckt1, temp);
+
+                }
+                // 事业部总经理
+                else if (CollUtil.containsAny(roles, List.of(39))) {
+                    Set<Integer> temp = CollUtil.unionDistinct(passed, rejected);
+                    supTaskIds = CollUtil.subtractToList(ckt2, temp);
+                } else {
+                    throw new BizException("无监督权限");
+                }
+
+                if (CollUtil.isEmpty(supTaskIds)) {
+                    return page;
+                }
+
+                taskPage = taskService.page(new Page<>(query.getCurrent(), query.getSize()), Wrappers.<WmTask>lambdaQuery().in(WmTask::getId, supTaskIds));
+            }
+
         }