Browse Source

feat:监察->监督

shc 8 months ago
parent
commit
f55f7815e2

+ 4 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmSupervisionController.java

@@ -54,6 +54,7 @@ public class WmSupervisionController {
         return R.ok(supervisionManager.getPkgSupervision(supId));
 
     }
+
     @SysLog(value = "执行包监督的审核")
     @PostMapping(value = "/supervision/pkg/res/check")
     public R<Boolean> checkPkgSupervision(@Validated @RequestBody WmSupervisionDto.OnPkgSupervisionCheck resource) {
@@ -89,9 +90,10 @@ public class WmSupervisionController {
     }
 
     @GetMapping(value = "/supervision/task/avail/list")
-    public R<List<Map<String, Object>>> listAvailableTask(@RequestParam(value = "pkgId") Integer pkgId) {
+    public R<List<Map<String, Object>>> listAvailableTask(@RequestParam(value = "pkgId") Integer pkgId,
+                                                          @RequestParam(value = "review", defaultValue = "false") Boolean review) {
 
-        return R.ok(supervisionManager.listAvailableTask(pkgId));
+        return R.ok(supervisionManager.listAvailableTask(pkgId, review));
 
     }
 

+ 187 - 50
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/WmSupervisionManager.java

@@ -2,6 +2,7 @@ package com.qunzhixinxi.hnqz.admin.manager;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.text.CharSequenceUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -44,8 +45,11 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedList;
@@ -366,105 +370,238 @@ public class WmSupervisionManager {
      * @param pkgId 执行包ID
      * @return 任务列表
      */
-    public List<Map<String, Object>> listAvailableTask(Integer pkgId) {
-
+    public List<Map<String, Object>> listAvailableTask(Integer pkgId, Boolean review) {
 
+        String username = SecurityUtils.getUser().getUsername();
         List<Integer> roles = SecurityUtils.getRoles();
 
-
         // 监督员
         if (CollUtil.containsAny(roles, List.of(49, 52, 53, 56))) {
+            List<WmTaskSupervision> list = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery()
+                    .eq(WmTaskSupervision::getPackageId, pkgId)
+                    .orderByDesc(WmTaskSupervision::getCreateTime)
+            );
 
-            // 获取当前积分包已经监督过的任务ID
-            Set<Integer> supTaskIds = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery().eq(WmTaskSupervision::getPackageId, pkgId)).stream().mapToInt(WmTaskSupervision::getTaskId).boxed().collect(Collectors.toSet());
 
-            List<WmTask> wmTasks = taskService.listAvailableTaskForSupervision(pkgId, supTaskIds);
+            // 复查
+            List<WmTask> wmTasks;
+            if (review) {
+                // 获取当前积分包已经监督过的任务ID
+                Set<Integer> supTaskIds = list.stream().filter(ts -> StrUtil.equals(username, ts.getCreateBy())).mapToInt(WmTaskSupervision::getTaskId).boxed().collect(Collectors.toSet());
+                wmTasks = CollUtil.isEmpty(supTaskIds) ? Collections.emptyList() : taskService.listByIds(supTaskIds);
+            } else {
+                // 获取当前积分包已经监督过的任务ID
+                Set<Integer> supTaskIds = list.stream().mapToInt(WmTaskSupervision::getTaskId).boxed().collect(Collectors.toSet());
+                wmTasks = taskService.listAvailableTaskForSupervision(pkgId, supTaskIds);
+            }
 
-            List<Map<String, Object>> maps = taskService.listTaskInfo(wmTasks, pkgId.toString());
+
+            List<Map<String, Object>> maps = CollUtil.isEmpty(wmTasks) ? Collections.emptyList() : taskService.listTaskInfo(wmTasks, pkgId.toString());
+
+            Set<String> createdBy = list.stream().map(WmTaskSupervision::getCreateBy).collect(Collectors.toSet());
+            List<SysUser> users = userService.list(Wrappers.<SysUser>lambdaQuery().in(SysUser::getUsername, createdBy));
+            Map<String, SysUser> userMap = users.stream().collect(Collectors.toMap(SysUser::getUsername, Function.identity()));
+            Set<Integer> userIds = users.stream().mapToInt(SysUser::getUserId).boxed().collect(Collectors.toSet());
+            List<SysUserRole> userRoles = userRoleService.list(Wrappers.<SysUserRole>lambdaQuery().in(SysUserRole::getUserId, userIds));
+            Map<Integer, List<SysUserRole>> userRoleMap = userRoles.stream().collect(Collectors.groupingBy(SysUserRole::getUserId));
+            Set<Integer> roleId = userRoles.stream().mapToInt(SysUserRole::getRoleId).boxed().collect(Collectors.toSet());
+            Map<Integer, String> roleMap = roleService.listByIds(roleId).stream().collect(Collectors.toMap(SysRole::getRoleId, SysRole::getRoleName));
+
+            Map<Integer, List<WmTaskSupervision>> collect = list.stream().collect(Collectors.groupingBy(WmTaskSupervision::getTaskId));
+            maps.forEach(m -> {
+
+                Integer id = Integer.valueOf(m.get("id").toString());
+
+                List<WmTaskSupervision> wmTaskSupervisions = collect.get(id);
+                m.put("supervision", wmTaskSupervisions);
+
+                List<String> msgs = new ArrayList<>(4);
+                if (CollUtil.isNotEmpty(wmTaskSupervisions)) {
+
+                    msgs = wmTaskSupervisions.stream().sorted(Comparator.comparingInt(WmTaskSupervision::getTaskId).reversed())
+                            .map(ts -> {
+                                SysUser user = userMap.get(ts.getCreateBy());
+                                SysUserRole sysUserRole = userRoleMap.get(user.getUserId()).get(0);
+                                String roleName = roleMap.get(sysUserRole.getRoleId());
+                                String realName = user.getRealname();
+                                String date = DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN).format(ts.getCreateTime());
+                                String resultMsg = ts.getSupervisionResult() ? " 通过 " : " 不通过 ";
+                                String remarks = StrUtil.isBlank(ts.getRemarks()) ? " " : ts.getRemarks();
+
+                                return String.format("%s【%s】,审核【%s】,监督意见为【%s】(%s)。", roleName, realName, resultMsg, remarks, date);
+
+                            }).collect(Collectors.toList());
+
+
+                }
+                m.put("supervisionMessages", msgs);
+                m.put("review", review);
+
+            });
 
             return maps;
-        } else if (CollUtil.containsAny(roles, List.of(37))) {
+        }
+        // 服务商
+        else if (CollUtil.containsAny(roles, List.of(37))) {
             // 获取当前积分包已经监督过的任务ID
             List<WmTaskSupervision> list = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery()
-                    .eq(WmTaskSupervision::getSupervisionState, UpmsState.TaskSupervisionState.PASSED)
+                    // .eq(WmTaskSupervision::getSupervisionState, UpmsState.TaskSupervisionState.PASSED)
                     .eq(WmTaskSupervision::getPackageId, pkgId).orderByDesc(WmTaskSupervision::getCreateTime));
 
             if (CollUtil.isEmpty(list)) {
                 return Collections.emptyList();
             }
 
-            Set<Integer> supTaskIds = list.stream().mapToInt(WmTaskSupervision::getTaskId).boxed().collect(Collectors.toSet());
+            Set<Integer> supTaskIds = list.stream().filter(ts -> UpmsState.TaskSupervisionState.PASSED.equals(ts.getSupervisionState())).mapToInt(WmTaskSupervision::getTaskId).boxed().collect(Collectors.toSet());
+
+            if (CollUtil.isEmpty(supTaskIds)) {
+                return Collections.emptyList();
+            }
+
             List<WmTask> tasks = taskService.list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getId, supTaskIds));
             List<Map<String, Object>> maps = taskService.listTaskInfo(tasks, pkgId.toString());
 
-            Map<Integer, List<WmTaskSupervision>> collect = list.stream().collect(Collectors.groupingBy(WmTaskSupervision::getTaskId));
+            Set<String> createdBy = list.stream().map(WmTaskSupervision::getCreateBy).collect(Collectors.toSet());
+            List<SysUser> users = userService.list(Wrappers.<SysUser>lambdaQuery().in(SysUser::getUsername, createdBy));
+            Map<String, SysUser> userMap = users.stream().collect(Collectors.toMap(SysUser::getUsername, Function.identity()));
+            Set<Integer> userIds = users.stream().mapToInt(SysUser::getUserId).boxed().collect(Collectors.toSet());
+            List<SysUserRole> userRoles = userRoleService.list(Wrappers.<SysUserRole>lambdaQuery().in(SysUserRole::getUserId, userIds));
+            Map<Integer, List<SysUserRole>> userRoleMap = userRoles.stream().collect(Collectors.groupingBy(SysUserRole::getUserId));
+            Set<Integer> roleId = userRoles.stream().mapToInt(SysUserRole::getRoleId).boxed().collect(Collectors.toSet());
+            Map<Integer, String> roleMap = roleService.listByIds(roleId).stream().collect(Collectors.toMap(SysRole::getRoleId, SysRole::getRoleName));
 
+            Map<Integer, List<WmTaskSupervision>> collect = list.stream().collect(Collectors.groupingBy(WmTaskSupervision::getTaskId));
             maps.forEach(m -> {
+
                 Integer id = Integer.valueOf(m.get("id").toString());
-                WmTaskSupervision wmTaskSupervision = collect.get(id).get(0);
 
-                m.put("supervision", wmTaskSupervision);
+                List<WmTaskSupervision> wmTaskSupervisions = collect.get(id);
+                m.put("supervision", wmTaskSupervisions);
+
+                List<String> msgs = new ArrayList<>(4);
+                if (CollUtil.isNotEmpty(wmTaskSupervisions)) {
+
+                    msgs = wmTaskSupervisions.stream().sorted(Comparator.comparingInt(WmTaskSupervision::getTaskId).reversed())
+                            .map(ts -> {
+                                SysUser user = userMap.get(ts.getCreateBy());
+                                SysUserRole sysUserRole = userRoleMap.get(user.getUserId()).get(0);
+                                String roleName = roleMap.get(sysUserRole.getRoleId());
+                                String realName = user.getRealname();
+                                String date = DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN).format(ts.getCreateTime());
+                                String resultMsg = ts.getSupervisionResult() ? " 通过 " : " 不通过 ";
+                                String remarks = StrUtil.isBlank(ts.getRemarks()) ? " " : ts.getRemarks();
+
+                                return String.format("%s【%s】,审核【%s】,监督意见为【%s】(%s)。", roleName, realName, resultMsg, remarks, date);
+
+                            }).collect(Collectors.toList());
+
+
+                }
+                m.put("supervisionMessages", msgs);
+                m.put("review", review);
 
             });
 
             return maps;
-        } else {
+        }
+        // 负责人|分管领导|事业部总经理
+        else {
 
 
             // 获取当前积分包已经监督过的任务ID
-            List<WmTaskSupervision> list = taskSupervisionService.
-                    list(Wrappers.<WmTaskSupervision>lambdaQuery()
-                            .eq(WmTaskSupervision::getPackageId, pkgId)
-                            .orderByDesc(WmTaskSupervision::getCreateTime));
+            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())));
 
+            List<WmTask> wmTasks;
+            if (review) {
+                // 获取当前积分包已经监督过的任务ID
+                Set<Integer> supTaskIds = list.stream().filter(ts -> StrUtil.equals(username, ts.getCreateBy())).mapToInt(WmTaskSupervision::getTaskId).boxed().collect(Collectors.toSet());
+                wmTasks = CollUtil.isEmpty(supTaskIds) ? Collections.emptyList() : taskService.listByIds(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> 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);
 
-                Set<Integer> temp = CollUtil.unionDistinct(ckt1, rejected);
-                supTaskIds = CollUtil.subtractToList(init, temp);
+                // 负责人
+                List<Integer> supTaskIds;
+                if (CollUtil.containsAny(roles, List.of(57, 58, 59, 60))) {
 
-            }
-            // 分管领导
-            else if (CollUtil.containsAny(roles, List.of(51, 54, 55, 61))) {
-                Set<Integer> temp = CollUtil.unionDistinct(ckt2, rejected);
-                supTaskIds = CollUtil.subtractToList(ckt1, temp);
+                    Set<Integer> temp = CollUtil.unionDistinct(ckt1, rejected);
+                    supTaskIds = CollUtil.subtractToList(init, 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("无监督权限");
-            }
+                }
+                // 分管领导
+                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 Collections.emptyList();
+
+                if (CollUtil.isEmpty(supTaskIds)) {
+                    return Collections.emptyList();
+                }
+
+                wmTasks = taskService.list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getId, supTaskIds));
             }
 
-            // 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());
+
+            List<Map<String, Object>> maps = taskService.listTaskInfo(wmTasks, pkgId.toString());
 
             Map<Integer, List<WmTaskSupervision>> collect = list.stream().collect(Collectors.groupingBy(WmTaskSupervision::getTaskId));
 
+            Set<String> createdBy = list.stream().map(WmTaskSupervision::getCreateBy).collect(Collectors.toSet());
+            List<SysUser> users = userService.list(Wrappers.<SysUser>lambdaQuery().in(SysUser::getUsername, createdBy));
+            Map<String, SysUser> userMap = users.stream().collect(Collectors.toMap(SysUser::getUsername, Function.identity()));
+            Set<Integer> userIds = users.stream().mapToInt(SysUser::getUserId).boxed().collect(Collectors.toSet());
+            List<SysUserRole> userRoles = userRoleService.list(Wrappers.<SysUserRole>lambdaQuery().in(SysUserRole::getUserId, userIds));
+            Map<Integer, List<SysUserRole>> userRoleMap = userRoles.stream().collect(Collectors.groupingBy(SysUserRole::getUserId));
+            Set<Integer> roleId = userRoles.stream().mapToInt(SysUserRole::getRoleId).boxed().collect(Collectors.toSet());
+            Map<Integer, String> roleMap = roleService.listByIds(roleId).stream().collect(Collectors.toMap(SysRole::getRoleId, SysRole::getRoleName));
+
             maps.forEach(m -> {
+
                 Integer id = Integer.valueOf(m.get("id").toString());
-                WmTaskSupervision wmTaskSupervision = collect.get(id).get(0);
 
-                m.put("supervision", wmTaskSupervision);
+                List<WmTaskSupervision> wmTaskSupervisions = collect.get(id);
+                m.put("supervision", wmTaskSupervisions);
+
+                List<String> msgs = new ArrayList<>(4);
+                if (CollUtil.isNotEmpty(wmTaskSupervisions)) {
+
+                    msgs = wmTaskSupervisions.stream().sorted(Comparator.comparingInt(WmTaskSupervision::getTaskId).reversed())
+                            .map(ts -> {
+                                SysUser user = userMap.get(ts.getCreateBy());
+                                SysUserRole sysUserRole = userRoleMap.get(user.getUserId()).get(0);
+                                String roleName = roleMap.get(sysUserRole.getRoleId());
+                                String realName = user.getRealname();
+                                String date = DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN).format(ts.getCreateTime());
+                                String resultMsg = ts.getSupervisionResult() ? " 通过 " : " 不通过 ";
+                                String remarks = StrUtil.isBlank(ts.getRemarks()) ? " " : ts.getRemarks();
+
+                                return String.format("%s【%s】,审核【%s】,监督意见为【%s】(%s)。", roleName, realName, resultMsg, remarks, date);
+
+                            }).collect(Collectors.toList());
+
+
+                }
+                m.put("supervisionMessages", msgs);
+                m.put("review", review);
 
             });