Browse Source

fix: filter logic error

shc 5 months ago
parent
commit
923dcc887e

+ 2191 - 1708
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/WmSupervisionManager.java

@@ -89,1853 +89,2336 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 public class WmSupervisionManager {
 
-    private static final LocalDate SEASON1_BEGIN_DATE = LocalDate.of(LocalDate.now().getYear(), 4, 1);
-    private static final LocalDate SEASON2_BEGIN_DATE = LocalDate.of(LocalDate.now().getYear(), 7, 1);
-    private static final LocalDate SEASON3_BEGIN_DATE = LocalDate.of(LocalDate.now().getYear(), 10, 1);
-    private static final LocalDate SEASON4_BEGIN_DATE = LocalDate.of(LocalDate.now().getYear(), 1, 1);
-
-
-    private final WmPackageSupervisionService packageSupervisionService;
-    private final WmTaskSupervisionService taskSupervisionService;
-    private final WmScorePackageStatusService packageStatusService;
-    private final WmScorePackageService packageService;
-    private final WmTaskService taskService;
-    private final SysDeptService deptService;
-    private final SysUserService userService;
-    private final SysEnterpriseAreaService enterpriseAreaService;
-    private final WmRoleSupervisionWarnRuleService warnRuleService;
-    private final SysRoleService roleService;
-    private final WmWarnUserRelationService warnUserRelationService;
-    private final WmRoleSupervisionWarnService roleSupervisionWarnService;
-    private final SysUserRoleService userRoleService;
-    private final SysUserDrugService userDrugService;
-    private final WmTaskSupervisionAdviceService taskSupervisionAdviceService;
-    private final SysFileService fileService;
-    private final WmTaskTypeService taskTypeService;
-    private final WmDaDrugEntDrugtableMapper wmDaDrugEntDrugtableMapper;
-
-
-    /**
-     * 获取监督分页
-     *
-     * @param query    查询条件
-     * @param operator 操作人
-     * @return 分页结果
-     */
-    public Page<Map<String, Object>> pagePkg(WmSupervisionDto.OnPkgPage query, HnqzUser operator) {
-
-        Page<Map<String, Object>> page = new Page<>(query.getCurrent(), query.getSize());
-
-        List<Integer> drugIds;
-
-        if (!SecurityUtils.getRoles().contains(39) && !SecurityUtils.getRoles().contains(37)) {
-
-            drugIds = userDrugService.listDrugIdByUserId(operator.getId());
-
-            if (CollUtil.isEmpty(drugIds)) {
-                log.info("当前操作人没有分配产品");
-                return page;
-            }
-
-        } else {
-            drugIds = Collections.emptyList();
-        }
-
-
-        // 筛查区域和服务商名称
-        List<Long> areaCode = query.getAreaCode();
-        List<Long> entIds;
-        if (CollUtil.isNotEmpty(areaCode)) {
-            entIds = enterpriseAreaService.listAreaEnts(areaCode);
-            if (CollUtil.isEmpty(entIds)) {
-                return page;
-            }
-        } else {
-            entIds = Collections.emptyList();
-        }
-
-        String entName = query.getEntName();
-        Set<Integer> finalEntIds = new HashSet<>();
-        if (CharSequenceUtil.isNotBlank(entName)) {
-            List<SysDept> enterprises = deptService.list(Wrappers.<SysDept>lambdaQuery().like(SysDept::getName, entName).in(CollUtil.isNotEmpty(entIds), SysDept::getDeptId, entIds));
-            List<Integer> deptIds = enterprises.stream().mapToInt(SysDept::getDeptId).boxed().distinct().collect(Collectors.toList());
-            if (CollUtil.isEmpty(deptIds)) {
-                return page;
-            }
-            finalEntIds.addAll(deptIds);
-        } else {
-            finalEntIds.addAll(entIds.stream().map(Long::intValue).collect(Collectors.toSet()));
-        }
-
-        packageService.pageForSupervision(page, query.getPkgName(), query.getSupervision(), finalEntIds, drugIds);
-
-        List<Map<String, Object>> records = page.getRecords();
-        if (CollUtil.isNotEmpty(records)) {
-
-            // 获取服务商信息
-            Set<Integer> deptId = records.stream().mapToInt(map -> Integer.parseInt((String) map.get("deptId"))).boxed().collect(Collectors.toSet());
-            Map<Integer, String> deptIdToDeptNameMap = deptService.listByIds(deptId).stream().collect(Collectors.toMap(SysDept::getDeptId, SysDept::getName));
-
-            // 获取监督信息 && 任务监督
-            Set<Integer> pkgIds = records.stream().filter(map -> Objects.nonNull(map.get("supFlag"))).mapToInt(map -> (Integer) map.get("id")).boxed().collect(Collectors.toSet());
-
-            Map<Integer, String> pkgIdToCreatorNameMap;
-            Map<Integer, WmPackageSupervision> pkgIdToSupervisionMap;
-            Map<Integer, Map<String, String>> taskSupStatMap = new HashMap<>(pkgIds.size());
-            if (CollUtil.isNotEmpty(pkgIds)) {
-
-                Map<Integer, List<WmTaskSupervision>> pkgIdToTaskSupMap = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery().in(WmTaskSupervision::getPackageId, pkgIds)).stream().collect(Collectors.groupingBy(WmTaskSupervision::getPackageId));
-
-                Map<String, List<WmTask>> pkgIdToTaskMap = taskService.list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getScorePackageId, pkgIds)).stream().collect(Collectors.groupingBy(WmTask::getScorePackageId));
-
-
-                pkgIds.forEach(pid -> {
-                    Map<String, String> stat = new HashMap<>(2);
-
-                    List<WmTaskSupervision> wmTaskSupervisions = pkgIdToTaskSupMap.get(pid);
-                    stat.put("supTotal", CollUtil.isNotEmpty(wmTaskSupervisions) ? String.valueOf(wmTaskSupervisions.stream().map(WmTaskSupervision::getTaskId).collect(Collectors.toSet()).size()) : "0");
-
-                    List<WmTask> total = pkgIdToTaskMap.get(pid.toString());
-                    stat.put("total", CollUtil.isNotEmpty(total) ? String.valueOf(total.size()) : "0");
-                    taskSupStatMap.put(pid, stat);
-                });
-
-
-                List<WmPackageSupervision> supervisions = packageSupervisionService.list(Wrappers.<WmPackageSupervision>lambdaQuery().in(WmPackageSupervision::getPackageId, pkgIds));
-
-                pkgIdToSupervisionMap = supervisions.stream().collect(Collectors.toMap(WmPackageSupervision::getPackageId, Function.identity()));
-
-                Map<Integer, String> pkgIdAndSupCreateorUsernameMap = supervisions.stream().collect(Collectors.toMap(WmPackageSupervision::getPackageId, WmPackageSupervision::getCreateBy, (v1, v2) -> v2));
-                Collection<String> values = pkgIdAndSupCreateorUsernameMap.values();
-                if (CollUtil.isNotEmpty(values)) {
-                    Map<String, String> userToNameMap = userService.list(Wrappers.<SysUser>lambdaQuery().in(SysUser::getUsername, values)).stream().collect(Collectors.toMap(SysUser::getUsername, SysUser::getRealname));
-                    pkgIdToCreatorNameMap = new HashMap<>(pkgIdAndSupCreateorUsernameMap.size());
-                    for (Map.Entry<Integer, String> entry : pkgIdAndSupCreateorUsernameMap.entrySet()) {
-                        pkgIdToCreatorNameMap.put(entry.getKey(), userToNameMap.get(entry.getValue()));
-                    }
-                } else {
-                    pkgIdToCreatorNameMap = Collections.emptyMap();
-                }
-
-
-            } else {
-                pkgIdToCreatorNameMap = Collections.emptyMap();
-                pkgIdToSupervisionMap = Collections.emptyMap();
-            }
-
-
-            // 添加参数
-            records.forEach(map -> {
-                map.put("deptName", deptIdToDeptNameMap.get(Integer.parseInt((String) map.get("deptId"))));
-                Integer pkgId = (Integer) map.get("id");
-                map.put("supervisor", pkgIdToCreatorNameMap.get(pkgId));
-                map.put("supervision", pkgIdToSupervisionMap.get(pkgId));
-                map.put("taskSupStat", taskSupStatMap.get(pkgId));
-
-            });
-
-            page.setRecords(records);
-
-        }
+  private static final LocalDate SEASON1_BEGIN_DATE = LocalDate.of(LocalDate.now().getYear(), 4, 1);
+  private static final LocalDate SEASON2_BEGIN_DATE = LocalDate.of(LocalDate.now().getYear(), 7, 1);
+  private static final LocalDate SEASON3_BEGIN_DATE =
+      LocalDate.of(LocalDate.now().getYear(), 10, 1);
+  private static final LocalDate SEASON4_BEGIN_DATE = LocalDate.of(LocalDate.now().getYear(), 1, 1);
+
+  private final WmPackageSupervisionService packageSupervisionService;
+  private final WmTaskSupervisionService taskSupervisionService;
+  private final WmScorePackageStatusService packageStatusService;
+  private final WmScorePackageService packageService;
+  private final WmTaskService taskService;
+  private final SysDeptService deptService;
+  private final SysUserService userService;
+  private final SysEnterpriseAreaService enterpriseAreaService;
+  private final WmRoleSupervisionWarnRuleService warnRuleService;
+  private final SysRoleService roleService;
+  private final WmWarnUserRelationService warnUserRelationService;
+  private final WmRoleSupervisionWarnService roleSupervisionWarnService;
+  private final SysUserRoleService userRoleService;
+  private final SysUserDrugService userDrugService;
+  private final WmTaskSupervisionAdviceService taskSupervisionAdviceService;
+  private final SysFileService fileService;
+  private final WmTaskTypeService taskTypeService;
+  private final WmDaDrugEntDrugtableMapper wmDaDrugEntDrugtableMapper;
+
+  /**
+   * 获取监督分页
+   *
+   * @param query 查询条件
+   * @param operator 操作人
+   * @return 分页结果
+   */
+  public Page<Map<String, Object>> pagePkg(WmSupervisionDto.OnPkgPage query, HnqzUser operator) {
+
+    Page<Map<String, Object>> page = new Page<>(query.getCurrent(), query.getSize());
+
+    List<Integer> drugIds;
+
+    if (!SecurityUtils.getRoles().contains(39) && !SecurityUtils.getRoles().contains(37)) {
+
+      drugIds = userDrugService.listDrugIdByUserId(operator.getId());
+
+      if (CollUtil.isEmpty(drugIds)) {
+        log.info("当前操作人没有分配产品");
         return page;
-    }
+      }
 
-    /**
-     * 执行包监督
-     *
-     * @param resource 监督信息
-     * @param user     操作人
-     * @return 监督结果
-     */
-    public Boolean createPkgSupervision(WmSupervisionDto.OnPkgSupervision resource, HnqzUser user) {
-
-        // 校验周期
-        if (!this.checkDate(100)) {
-            throw new BizException("不在监督周期");
-        }
-
-        // 校验是否已经完成了监督
-        boolean checked = packageSupervisionService.hasChecked(resource.getPkgId());
-        if (checked) {
-            throw new BizException("执行包存在监督记录,请勿重复操作");
-        }
-
-        packageSupervisionService.createPkgSupervision(resource, user);
-
-        // 更新监督结果
-        packageStatusService.updateSupervisionFlag(resource.getPkgId());
-
-        return Boolean.TRUE;
+    } else {
+      drugIds = Collections.emptyList();
     }
 
-
-    /**
-     * 周期
-     *
-     * @param period 周期时长
-     * @return 校验结果
-     */
-    private boolean checkDate(int period) {
-
-        LocalDate today = LocalDate.now();
-
-        return (today.isAfter(SEASON1_BEGIN_DATE) && today.isBefore(SEASON1_BEGIN_DATE.plusDays(period))) || (today.isAfter(SEASON2_BEGIN_DATE) && today.isBefore(SEASON2_BEGIN_DATE.plusDays(period))) || (today.isAfter(SEASON3_BEGIN_DATE) && today.isBefore(SEASON3_BEGIN_DATE.plusDays(period))) || (today.isAfter(SEASON4_BEGIN_DATE) && today.isBefore(SEASON4_BEGIN_DATE.plusDays(period)));
+    // 筛查区域和服务商名称
+    List<Long> areaCode = query.getAreaCode();
+    List<Long> entIds;
+    if (CollUtil.isNotEmpty(areaCode)) {
+      entIds = enterpriseAreaService.listAreaEnts(areaCode);
+      if (CollUtil.isEmpty(entIds)) {
+        return page;
+      }
+    } else {
+      entIds = Collections.emptyList();
     }
 
-    /**
-     * 获取积分包监督结果
-     *
-     * @param supId 监督记录
-     * @return 监督结果
-     */
-    public WmPackageSupervision getPkgSupervision(Integer supId) {
-        return packageSupervisionService.getById(supId);
+    String entName = query.getEntName();
+    Set<Integer> finalEntIds = new HashSet<>();
+    if (CharSequenceUtil.isNotBlank(entName)) {
+      List<SysDept> enterprises =
+          deptService.list(
+              Wrappers.<SysDept>lambdaQuery()
+                  .like(SysDept::getName, entName)
+                  .in(CollUtil.isNotEmpty(entIds), SysDept::getDeptId, entIds));
+      List<Integer> deptIds =
+          enterprises.stream()
+              .mapToInt(SysDept::getDeptId)
+              .boxed()
+              .distinct()
+              .collect(Collectors.toList());
+      if (CollUtil.isEmpty(deptIds)) {
+        return page;
+      }
+      finalEntIds.addAll(deptIds);
+    } else {
+      finalEntIds.addAll(entIds.stream().map(Long::intValue).collect(Collectors.toSet()));
     }
 
-    /**
-     * 查询审查计划
-     *
-     * @param all      是否全部
-     * @param season   季节
-     * @param operator 操作人
-     * @return 统计结果
-     */
-    public Map<String, String> pkgSupervisionStat(Boolean all, Integer season, HnqzUser operator) {
-
-        LocalDate today = LocalDate.now();
-        int month = today.getMonthValue();
-        int year = today.getYear();
-        int startMonth;
-
-        if (month <= 3) {
-            startMonth = 10;
-            year -= 1;
-        } else if (month <= 6) {
-            startMonth = 1;
-        } else if (month <= 9) {
-            startMonth = 4;
-        } else {
-            startMonth = 7;
-        }
+    packageService.pageForSupervision(
+        page, query.getPkgName(), query.getSupervision(), finalEntIds, drugIds);
+
+    List<Map<String, Object>> records = page.getRecords();
+    if (CollUtil.isNotEmpty(records)) {
+
+      // 获取服务商信息
+      Set<Integer> deptId =
+          records.stream()
+              .mapToInt(map -> Integer.parseInt((String) map.get("deptId")))
+              .boxed()
+              .collect(Collectors.toSet());
+      Map<Integer, String> deptIdToDeptNameMap =
+          deptService.listByIds(deptId).stream()
+              .collect(Collectors.toMap(SysDept::getDeptId, SysDept::getName));
+
+      // 获取监督信息 && 任务监督
+      Set<Integer> pkgIds =
+          records.stream()
+              .filter(map -> Objects.nonNull(map.get("supFlag")))
+              .mapToInt(map -> (Integer) map.get("id"))
+              .boxed()
+              .collect(Collectors.toSet());
+
+      Map<Integer, String> pkgIdToCreatorNameMap;
+      Map<Integer, WmPackageSupervision> pkgIdToSupervisionMap;
+      Map<Integer, Map<String, String>> taskSupStatMap = new HashMap<>(pkgIds.size());
+      if (CollUtil.isNotEmpty(pkgIds)) {
+
+        Map<Integer, List<WmTaskSupervision>> pkgIdToTaskSupMap =
+            taskSupervisionService
+                .list(
+                    Wrappers.<WmTaskSupervision>lambdaQuery()
+                        .in(WmTaskSupervision::getPackageId, pkgIds))
+                .stream()
+                .collect(Collectors.groupingBy(WmTaskSupervision::getPackageId));
 
-        LocalDateTime startTime = LocalDateTime.of(year, startMonth, 1, 0, 0, 0);
-        LocalDateTime entTime = startTime.plusMonths(3).minusSeconds(1);
-
-        log.info("查询周期{} to {}", startTime, entTime);
-
-        // 获取领取记录
-        int total = 0;
-        int allOperatorSubtotal = 0;
-        int curOperatorSubtotal = 0;
-        double allOperatorSupRate = 0;
-        double curOperatorSupRate = 0;
-        List<WmScorePackageStatus> statuses = packageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery().between(WmScorePackageStatus::getCreateTime, startTime, entTime));
-        if (CollUtil.isNotEmpty(statuses)) {
-            Set<Integer> pkgIds = statuses.stream().map(WmScorePackageStatus::getPackageId).mapToInt(Integer::valueOf).boxed().collect(Collectors.toSet());
-            Map<Boolean, List<WmPackageSupervision>> collect = packageSupervisionService.list(Wrappers.<WmPackageSupervision>lambdaQuery().in(WmPackageSupervision::getPackageId, pkgIds)).stream().collect(Collectors.partitioningBy(sup -> CharSequenceUtil.equals(sup.getCreateBy(), operator.getUsername())));
-            total = pkgIds.size();
-            allOperatorSubtotal = collect.get(true).size() + collect.get(false).size();
-            curOperatorSubtotal = collect.get(true).size();
-            allOperatorSupRate = (double) allOperatorSubtotal / total;
-            curOperatorSupRate = (double) curOperatorSubtotal / total;
+        Map<String, List<WmTask>> pkgIdToTaskMap =
+            taskService
+                .list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getScorePackageId, pkgIds))
+                .stream()
+                .collect(Collectors.groupingBy(WmTask::getScorePackageId));
+
+        pkgIds.forEach(
+            pid -> {
+              Map<String, String> stat = new HashMap<>(2);
+
+              List<WmTaskSupervision> wmTaskSupervisions = pkgIdToTaskSupMap.get(pid);
+              stat.put(
+                  "supTotal",
+                  CollUtil.isNotEmpty(wmTaskSupervisions)
+                      ? String.valueOf(
+                          wmTaskSupervisions.stream()
+                              .map(WmTaskSupervision::getTaskId)
+                              .collect(Collectors.toSet())
+                              .size())
+                      : "0");
+
+              List<WmTask> total = pkgIdToTaskMap.get(pid.toString());
+              stat.put("total", CollUtil.isNotEmpty(total) ? String.valueOf(total.size()) : "0");
+              taskSupStatMap.put(pid, stat);
+            });
 
+        List<WmPackageSupervision> supervisions =
+            packageSupervisionService.list(
+                Wrappers.<WmPackageSupervision>lambdaQuery()
+                    .in(WmPackageSupervision::getPackageId, pkgIds));
+
+        pkgIdToSupervisionMap =
+            supervisions.stream()
+                .collect(Collectors.toMap(WmPackageSupervision::getPackageId, Function.identity()));
+
+        Map<Integer, String> pkgIdAndSupCreateorUsernameMap =
+            supervisions.stream()
+                .collect(
+                    Collectors.toMap(
+                        WmPackageSupervision::getPackageId,
+                        WmPackageSupervision::getCreateBy,
+                        (v1, v2) -> v2));
+        Collection<String> values = pkgIdAndSupCreateorUsernameMap.values();
+        if (CollUtil.isNotEmpty(values)) {
+          Map<String, String> userToNameMap =
+              userService
+                  .list(Wrappers.<SysUser>lambdaQuery().in(SysUser::getUsername, values))
+                  .stream()
+                  .collect(Collectors.toMap(SysUser::getUsername, SysUser::getRealname));
+          pkgIdToCreatorNameMap = new HashMap<>(pkgIdAndSupCreateorUsernameMap.size());
+          for (Map.Entry<Integer, String> entry : pkgIdAndSupCreateorUsernameMap.entrySet()) {
+            pkgIdToCreatorNameMap.put(entry.getKey(), userToNameMap.get(entry.getValue()));
+          }
+        } else {
+          pkgIdToCreatorNameMap = Collections.emptyMap();
         }
 
-
-        Map<String, String> stat = new HashMap<>(5);
-        stat.put("total", String.valueOf(total));
-        stat.put("allOperatorSubtotal", String.valueOf(allOperatorSubtotal));
-        stat.put("curOperatorSubtotal", String.valueOf(curOperatorSubtotal));
-        stat.put("allOperatorSupRate", String.valueOf(allOperatorSupRate));
-        stat.put("curOperatorSupRate", String.valueOf(curOperatorSupRate));
-
-
-        return stat;
+      } else {
+        pkgIdToCreatorNameMap = Collections.emptyMap();
+        pkgIdToSupervisionMap = Collections.emptyMap();
+      }
+
+      // 添加参数
+      records.forEach(
+          map -> {
+            map.put(
+                "deptName", deptIdToDeptNameMap.get(Integer.parseInt((String) map.get("deptId"))));
+            Integer pkgId = (Integer) map.get("id");
+            map.put("supervisor", pkgIdToCreatorNameMap.get(pkgId));
+            map.put("supervision", pkgIdToSupervisionMap.get(pkgId));
+            map.put("taskSupStat", taskSupStatMap.get(pkgId));
+          });
+
+      page.setRecords(records);
     }
-
-
-    /**
-     * 服务任务监督
-     *
-     * @param resource 监督信息
-     * @param user     操作人
-     * @return 操作结果
-     */
-    public Boolean createTaskSupervision(WmSupervisionDto.OnTaskSupervision resource, HnqzUser user) {
-        taskSupervisionService.createTaskSupervision(resource, user);
-
-        // 更新监督结果
-        packageStatusService.updateSupervisionFlag(resource.getPkgId());
-
-        return true;
-
+    return page;
+  }
+
+  /**
+   * 执行包监督
+   *
+   * @param resource 监督信息
+   * @param user 操作人
+   * @return 监督结果
+   */
+  public Boolean createPkgSupervision(WmSupervisionDto.OnPkgSupervision resource, HnqzUser user) {
+
+    // 校验周期
+    if (!this.checkDate(100)) {
+      throw new BizException("不在监督周期");
     }
 
-    // /**
-    //  * 获取可以监督的任务
-    //  *
-    //  * @param pkgId 执行包ID
-    //  * @return 任务列表
-    //  */
-    // public List<Map<String, Object>> listAvailableTask(Integer pkgId) {
-    //
-    //         // 获取当前积分包已经监督过的任务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<Map<String, Object>> maps = taskService.listTaskInfo(wmTasks, pkgId.toString());
-    //         return maps;
-    // }
-
-    // /**
-    //  * 获取可以监督的任务
-    //  *
-    //  * @param pkgId 执行包ID
-    //  * @return 任务列表
-    //  */
-    // 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)
-    //         );
-    //
-    //
-    //         // 复查
-    //         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 = CollUtil.isEmpty(wmTasks) ? Collections.emptyList() : taskService.listTaskInfo(wmTasks, pkgId.toString());
-    //
-    //         Set<String> createdBy = list.stream().map(WmTaskSupervision::getCreateBy).collect(Collectors.toSet());
-    //         Map<String, SysUser> userMap;
-    //         Map<Integer, List<SysUserRole>> userRoleMap;
-    //         Map<Integer, String> roleMap;
-    //         if (CollUtil.isNotEmpty(createdBy)) {
-    //             List<SysUser> users = userService.list(Wrappers.<SysUser>lambdaQuery().in(SysUser::getUsername, createdBy));
-    //             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));
-    //             userRoleMap = userRoles.stream().collect(Collectors.groupingBy(SysUserRole::getUserId));
-    //             Set<Integer> roleId = userRoles.stream().mapToInt(SysUserRole::getRoleId).boxed().collect(Collectors.toSet());
-    //             roleMap = roleService.listByIds(roleId).stream().collect(Collectors.toMap(SysRole::getRoleId, SysRole::getRoleName));
-    //         } else {
-    //             userMap = Collections.emptyMap();
-    //             userRoleMap = Collections.emptyMap();
-    //             roleMap = Collections.emptyMap();
-    //         }
-    //
-    //
-    //         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))) {
-    //         // 获取当前积分包已经监督过的任务ID
-    //         List<WmTaskSupervision> list = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery()
-    //                 // .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().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());
-    //
-    //         Set<String> createdBy = list.stream().map(WmTaskSupervision::getCreateBy).collect(Collectors.toSet());
-    //         Map<String, SysUser> userMap;
-    //         Map<Integer, List<SysUserRole>> userRoleMap;
-    //         Map<Integer, String> roleMap;
-    //         if (CollUtil.isNotEmpty(createdBy)) {
-    //             List<SysUser> users = userService.list(Wrappers.<SysUser>lambdaQuery().in(SysUser::getUsername, createdBy));
-    //             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));
-    //             userRoleMap = userRoles.stream().collect(Collectors.groupingBy(SysUserRole::getUserId));
-    //             Set<Integer> roleId = userRoles.stream().mapToInt(SysUserRole::getRoleId).boxed().collect(Collectors.toSet());
-    //             roleMap = roleService.listByIds(roleId).stream().collect(Collectors.toMap(SysRole::getRoleId, SysRole::getRoleName));
-    //         } else {
-    //             userMap = Collections.emptyMap();
-    //             userRoleMap = Collections.emptyMap();
-    //             roleMap = Collections.emptyMap();
-    //         }
-    //
-    //         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 {
-    //
-    //
-    //         // 获取当前积分包已经监督过的任务ID
-    //         List<WmTaskSupervision> list = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery()
-    //                 .eq(WmTaskSupervision::getPackageId, pkgId)
-    //                 .orderByDesc(WmTaskSupervision::getCreateTime));
-    //
-    //
-    //         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> 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 Collections.emptyList();
-    //             }
-    //
-    //             wmTasks = taskService.list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getId, supTaskIds));
-    //         }
-    //
-    //
-    //         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());
-    //         Map<String, SysUser> userMap;
-    //         Map<Integer, List<SysUserRole>> userRoleMap;
-    //         Map<Integer, String> roleMap;
-    //         if (CollUtil.isNotEmpty(createdBy)) {
-    //             List<SysUser> users = userService.list(Wrappers.<SysUser>lambdaQuery().in(SysUser::getUsername, createdBy));
-    //             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));
-    //             userRoleMap = userRoles.stream().collect(Collectors.groupingBy(SysUserRole::getUserId));
-    //             Set<Integer> roleId = userRoles.stream().mapToInt(SysUserRole::getRoleId).boxed().collect(Collectors.toSet());
-    //             roleMap = roleService.listByIds(roleId).stream().collect(Collectors.toMap(SysRole::getRoleId, SysRole::getRoleName));
-    //         } else {
-    //             userMap = Collections.emptyMap();
-    //             userRoleMap = Collections.emptyMap();
-    //             roleMap = Collections.emptyMap();
-    //         }
-    //
-    //         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;
-    //     }
-    // }
-
-    /**
-     * 获取警告分页
-     *
-     * @param query 查询条件
-     * @return 分页结果
-     */
-    public Page<Map<String, Object>> pageWarnRule(WmSupervisionDto.OnWarnRulePage query) {
-
-        Page<WmRoleSupervisionWarnRule> page = warnRuleService.page(new Page<>(query.getCurrent(), query.getSize()));
-
-        Page<Map<String, Object>> res = new Page<>();
-        res.setTotal(page.getTotal());
-        res.setCurrent(page.getCurrent());
-        res.setSize(page.getSize());
-
-        List<WmRoleSupervisionWarnRule> records = page.getRecords();
-        if (CollUtil.isNotEmpty(records)) {
-
-            Set<Integer> roleIds = records.stream().mapToInt(WmRoleSupervisionWarnRule::getRoleId).boxed().collect(Collectors.toSet());
-
-            Map<Integer, SysRole> idToRoleMap = roleService.listByIds(roleIds).stream().collect(Collectors.toMap(SysRole::getRoleId, Function.identity()));
-
-            List<Map<String, Object>> collect = records.stream().map(rule -> {
-                Map<String, Object> map = BeanUtil.copyProperties(rule, Map.class);
-                SysRole role = idToRoleMap.get(rule.getRoleId());
-                map.put("role", role);
-                return map;
-            }).collect(Collectors.toList());
-
-            res.setRecords(collect);
-        } else {
-            res.setRecords(Collections.emptyList());
-        }
-
-        return res;
+    // 校验是否已经完成了监督
+    boolean checked = packageSupervisionService.hasChecked(resource.getPkgId());
+    if (checked) {
+      throw new BizException("执行包存在监督记录,请勿重复操作");
     }
 
-
-    /**
-     * 创建预警规则
-     *
-     * @param resource 规则信息
-     * @param user     创建人
-     * @return 创建结果
-     */
-    public Boolean createWarnRule(WmSupervisionDto.OnWarnRulCreate resource, HnqzUser user) {
-
-        boolean checked = warnRuleService.hasType(resource.getWarnType(), resource.getRoleId());
-
-        if (checked) {
-            throw new BizException("类型已经存在, 请勿重新添加");
-        }
-
-        return warnRuleService.createWarnRule(resource, user);
+    packageSupervisionService.createPkgSupervision(resource, user);
+
+    // 更新监督结果
+    packageStatusService.updateSupervisionFlag(resource.getPkgId());
+
+    return Boolean.TRUE;
+  }
+
+  /**
+   * 周期
+   *
+   * @param period 周期时长
+   * @return 校验结果
+   */
+  private boolean checkDate(int period) {
+
+    LocalDate today = LocalDate.now();
+
+    return (today.isAfter(SEASON1_BEGIN_DATE)
+            && today.isBefore(SEASON1_BEGIN_DATE.plusDays(period)))
+        || (today.isAfter(SEASON2_BEGIN_DATE)
+            && today.isBefore(SEASON2_BEGIN_DATE.plusDays(period)))
+        || (today.isAfter(SEASON3_BEGIN_DATE)
+            && today.isBefore(SEASON3_BEGIN_DATE.plusDays(period)))
+        || (today.isAfter(SEASON4_BEGIN_DATE)
+            && today.isBefore(SEASON4_BEGIN_DATE.plusDays(period)));
+  }
+
+  /**
+   * 获取积分包监督结果
+   *
+   * @param supId 监督记录
+   * @return 监督结果
+   */
+  public WmPackageSupervision getPkgSupervision(Integer supId) {
+    return packageSupervisionService.getById(supId);
+  }
+
+  /**
+   * 查询审查计划
+   *
+   * @param all 是否全部
+   * @param season 季节
+   * @param operator 操作人
+   * @return 统计结果
+   */
+  public Map<String, String> pkgSupervisionStat(Boolean all, Integer season, HnqzUser operator) {
+
+    LocalDate today = LocalDate.now();
+    int month = today.getMonthValue();
+    int year = today.getYear();
+    int startMonth;
+
+    if (month <= 3) {
+      startMonth = 10;
+      year -= 1;
+    } else if (month <= 6) {
+      startMonth = 1;
+    } else if (month <= 9) {
+      startMonth = 4;
+    } else {
+      startMonth = 7;
     }
 
-    /**
-     * 修改预警规则
-     *
-     * @param resource 规则信息
-     * @param user     创建人
-     * @return 修改结果
-     */
-    public Boolean updateWarnRule(WmSupervisionDto.OnWarnRulUpdate resource, HnqzUser user) {
-        return warnRuleService.updateWarnRule(resource, user);
+    LocalDateTime startTime = LocalDateTime.of(year, startMonth, 1, 0, 0, 0);
+    LocalDateTime entTime = startTime.plusMonths(3).minusSeconds(1);
+
+    log.info("查询周期{} to {}", startTime, entTime);
+
+    // 获取领取记录
+    int total = 0;
+    int allOperatorSubtotal = 0;
+    int curOperatorSubtotal = 0;
+    double allOperatorSupRate = 0;
+    double curOperatorSupRate = 0;
+    List<WmScorePackageStatus> statuses =
+        packageStatusService.list(
+            Wrappers.<WmScorePackageStatus>lambdaQuery()
+                .between(WmScorePackageStatus::getCreateTime, startTime, entTime));
+    if (CollUtil.isNotEmpty(statuses)) {
+      Set<Integer> pkgIds =
+          statuses.stream()
+              .map(WmScorePackageStatus::getPackageId)
+              .mapToInt(Integer::valueOf)
+              .boxed()
+              .collect(Collectors.toSet());
+      Map<Boolean, List<WmPackageSupervision>> collect =
+          packageSupervisionService
+              .list(
+                  Wrappers.<WmPackageSupervision>lambdaQuery()
+                      .in(WmPackageSupervision::getPackageId, pkgIds))
+              .stream()
+              .collect(
+                  Collectors.partitioningBy(
+                      sup -> CharSequenceUtil.equals(sup.getCreateBy(), operator.getUsername())));
+      total = pkgIds.size();
+      allOperatorSubtotal = collect.get(true).size() + collect.get(false).size();
+      curOperatorSubtotal = collect.get(true).size();
+      allOperatorSupRate = (double) allOperatorSubtotal / total;
+      curOperatorSupRate = (double) curOperatorSubtotal / total;
     }
 
-    /**
-     * 获取警告分页
-     *
-     * @param query 查询条件
-     * @param user  查询人
-     * @return 操作结果
-     */
-    public Page<Map<String, Object>> pageRoleSupervisionWarn(WmSupervisionDto.OnWarnPage query, HnqzUser user) {
-
-
-        Set<Integer> roleIds = userRoleService.list(Wrappers.<SysUserRole>lambdaQuery().eq(SysUserRole::getUserId, user.getId())).stream().mapToInt(SysUserRole::getRoleId).boxed().collect(Collectors.toSet());
-
-        Page<WmRoleSupervisionWarn> page = roleSupervisionWarnService.page(new Page<>(query.getCurrent(), query.getSize()), Wrappers.<WmRoleSupervisionWarn>lambdaQuery().in(CollUtil.isNotEmpty(roleIds), WmRoleSupervisionWarn::getRoleId, roleIds).orderByDesc(WmRoleSupervisionWarn::getCreateTime));
-
-        List<WmRoleSupervisionWarn> warns = page.getRecords();
+    Map<String, String> stat = new HashMap<>(5);
+    stat.put("total", String.valueOf(total));
+    stat.put("allOperatorSubtotal", String.valueOf(allOperatorSubtotal));
+    stat.put("curOperatorSubtotal", String.valueOf(curOperatorSubtotal));
+    stat.put("allOperatorSupRate", String.valueOf(allOperatorSupRate));
+    stat.put("curOperatorSupRate", String.valueOf(curOperatorSupRate));
+
+    return stat;
+  }
+
+  /**
+   * 服务任务监督
+   *
+   * @param resource 监督信息
+   * @param user 操作人
+   * @return 操作结果
+   */
+  public Boolean createTaskSupervision(WmSupervisionDto.OnTaskSupervision resource, HnqzUser user) {
+    taskSupervisionService.createTaskSupervision(resource, user);
+
+    // 更新监督结果
+    packageStatusService.updateSupervisionFlag(resource.getPkgId());
+
+    return true;
+  }
+
+  // /**
+  //  * 获取可以监督的任务
+  //  *
+  //  * @param pkgId 执行包ID
+  //  * @return 任务列表
+  //  */
+  // public List<Map<String, Object>> listAvailableTask(Integer pkgId) {
+  //
+  //         // 获取当前积分包已经监督过的任务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<Map<String, Object>> maps = taskService.listTaskInfo(wmTasks, pkgId.toString());
+  //         return maps;
+  // }
+
+  // /**
+  //  * 获取可以监督的任务
+  //  *
+  //  * @param pkgId 执行包ID
+  //  * @return 任务列表
+  //  */
+  // 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)
+  //         );
+  //
+  //
+  //         // 复查
+  //         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 = CollUtil.isEmpty(wmTasks) ? Collections.emptyList() :
+  // taskService.listTaskInfo(wmTasks, pkgId.toString());
+  //
+  //         Set<String> createdBy =
+  // list.stream().map(WmTaskSupervision::getCreateBy).collect(Collectors.toSet());
+  //         Map<String, SysUser> userMap;
+  //         Map<Integer, List<SysUserRole>> userRoleMap;
+  //         Map<Integer, String> roleMap;
+  //         if (CollUtil.isNotEmpty(createdBy)) {
+  //             List<SysUser> users =
+  // userService.list(Wrappers.<SysUser>lambdaQuery().in(SysUser::getUsername, createdBy));
+  //             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));
+  //             userRoleMap =
+  // userRoles.stream().collect(Collectors.groupingBy(SysUserRole::getUserId));
+  //             Set<Integer> roleId =
+  // userRoles.stream().mapToInt(SysUserRole::getRoleId).boxed().collect(Collectors.toSet());
+  //             roleMap =
+  // roleService.listByIds(roleId).stream().collect(Collectors.toMap(SysRole::getRoleId,
+  // SysRole::getRoleName));
+  //         } else {
+  //             userMap = Collections.emptyMap();
+  //             userRoleMap = Collections.emptyMap();
+  //             roleMap = Collections.emptyMap();
+  //         }
+  //
+  //
+  //         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))) {
+  //         // 获取当前积分包已经监督过的任务ID
+  //         List<WmTaskSupervision> list =
+  // taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery()
+  //                 // .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().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());
+  //
+  //         Set<String> createdBy =
+  // list.stream().map(WmTaskSupervision::getCreateBy).collect(Collectors.toSet());
+  //         Map<String, SysUser> userMap;
+  //         Map<Integer, List<SysUserRole>> userRoleMap;
+  //         Map<Integer, String> roleMap;
+  //         if (CollUtil.isNotEmpty(createdBy)) {
+  //             List<SysUser> users =
+  // userService.list(Wrappers.<SysUser>lambdaQuery().in(SysUser::getUsername, createdBy));
+  //             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));
+  //             userRoleMap =
+  // userRoles.stream().collect(Collectors.groupingBy(SysUserRole::getUserId));
+  //             Set<Integer> roleId =
+  // userRoles.stream().mapToInt(SysUserRole::getRoleId).boxed().collect(Collectors.toSet());
+  //             roleMap =
+  // roleService.listByIds(roleId).stream().collect(Collectors.toMap(SysRole::getRoleId,
+  // SysRole::getRoleName));
+  //         } else {
+  //             userMap = Collections.emptyMap();
+  //             userRoleMap = Collections.emptyMap();
+  //             roleMap = Collections.emptyMap();
+  //         }
+  //
+  //         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 {
+  //
+  //
+  //         // 获取当前积分包已经监督过的任务ID
+  //         List<WmTaskSupervision> list =
+  // taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery()
+  //                 .eq(WmTaskSupervision::getPackageId, pkgId)
+  //                 .orderByDesc(WmTaskSupervision::getCreateTime));
+  //
+  //
+  //         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> 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 Collections.emptyList();
+  //             }
+  //
+  //             wmTasks = taskService.list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getId,
+  // supTaskIds));
+  //         }
+  //
+  //
+  //         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());
+  //         Map<String, SysUser> userMap;
+  //         Map<Integer, List<SysUserRole>> userRoleMap;
+  //         Map<Integer, String> roleMap;
+  //         if (CollUtil.isNotEmpty(createdBy)) {
+  //             List<SysUser> users =
+  // userService.list(Wrappers.<SysUser>lambdaQuery().in(SysUser::getUsername, createdBy));
+  //             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));
+  //             userRoleMap =
+  // userRoles.stream().collect(Collectors.groupingBy(SysUserRole::getUserId));
+  //             Set<Integer> roleId =
+  // userRoles.stream().mapToInt(SysUserRole::getRoleId).boxed().collect(Collectors.toSet());
+  //             roleMap =
+  // roleService.listByIds(roleId).stream().collect(Collectors.toMap(SysRole::getRoleId,
+  // SysRole::getRoleName));
+  //         } else {
+  //             userMap = Collections.emptyMap();
+  //             userRoleMap = Collections.emptyMap();
+  //             roleMap = Collections.emptyMap();
+  //         }
+  //
+  //         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;
+  //     }
+  // }
+
+  /**
+   * 获取警告分页
+   *
+   * @param query 查询条件
+   * @return 分页结果
+   */
+  public Page<Map<String, Object>> pageWarnRule(WmSupervisionDto.OnWarnRulePage query) {
+
+    Page<WmRoleSupervisionWarnRule> page =
+        warnRuleService.page(new Page<>(query.getCurrent(), query.getSize()));
+
+    Page<Map<String, Object>> res = new Page<>();
+    res.setTotal(page.getTotal());
+    res.setCurrent(page.getCurrent());
+    res.setSize(page.getSize());
+
+    List<WmRoleSupervisionWarnRule> records = page.getRecords();
+    if (CollUtil.isNotEmpty(records)) {
+
+      Set<Integer> roleIds =
+          records.stream()
+              .mapToInt(WmRoleSupervisionWarnRule::getRoleId)
+              .boxed()
+              .collect(Collectors.toSet());
+
+      Map<Integer, SysRole> idToRoleMap =
+          roleService.listByIds(roleIds).stream()
+              .collect(Collectors.toMap(SysRole::getRoleId, Function.identity()));
+
+      List<Map<String, Object>> collect =
+          records.stream()
+              .map(
+                  rule -> {
+                    Map<String, Object> map = BeanUtil.copyProperties(rule, Map.class);
+                    SysRole role = idToRoleMap.get(rule.getRoleId());
+                    map.put("role", role);
+                    return map;
+                  })
+              .collect(Collectors.toList());
+
+      res.setRecords(collect);
+    } else {
+      res.setRecords(Collections.emptyList());
+    }
 
-        List<Map<String, Object>> resList;
-        if (CollUtil.isNotEmpty(warns)) {
-            Set<Integer> warnIds = warns.stream().mapToInt(WmRoleSupervisionWarn::getWarnId).boxed().collect(Collectors.toSet());
-            Set<Integer> collect = warnUserRelationService.list(Wrappers.<WmWarnUserRelation>lambdaQuery().eq(WmWarnUserRelation::getUserId, user.getId()).in(WmWarnUserRelation::getWarnId, warnIds)).stream().mapToInt(WmWarnUserRelation::getWarnId).boxed().collect(Collectors.toSet());
+    return res;
+  }
 
-            resList = warns.stream().map(warn -> {
-                Map<String, Object> map = BeanUtil.copyProperties(warn, Map.class);
-                map.put("read", collect.contains(warn.getWarnId()));
-                map.put("targetInfo", "xxxxx");
-                return map;
-            }).collect(Collectors.toList());
+  /**
+   * 创建预警规则
+   *
+   * @param resource 规则信息
+   * @param user 创建人
+   * @return 创建结果
+   */
+  public Boolean createWarnRule(WmSupervisionDto.OnWarnRulCreate resource, HnqzUser user) {
 
-        } else {
-            resList = Collections.emptyList();
-        }
+    boolean checked = warnRuleService.hasType(resource.getWarnType(), resource.getRoleId());
 
-        Page<Map<String, Object>> res = new Page<>();
-        res.setTotal(page.getTotal());
-        res.setCurrent(page.getCurrent());
-        res.setSize(page.getSize());
-        res.setRecords(resList);
-        return res;
+    if (checked) {
+      throw new BizException("类型已经存在, 请勿重新添加");
     }
 
-    /**
-     * 警告信息
-     *
-     * @param resource 警告信息
-     * @param user     阅读人
-     * @return 阅读结果
-     */
-    public Boolean readWarn(WmSupervisionDto.OnWarnCreate resource, HnqzUser user) {
-
-        boolean read = warnUserRelationService.hasRead(resource.getWarnId(), user.getId());
-        if (read) {
-            return true;
-        }
-
-        return warnUserRelationService.read(resource, user);
+    return warnRuleService.createWarnRule(resource, user);
+  }
+
+  /**
+   * 修改预警规则
+   *
+   * @param resource 规则信息
+   * @param user 创建人
+   * @return 修改结果
+   */
+  public Boolean updateWarnRule(WmSupervisionDto.OnWarnRulUpdate resource, HnqzUser user) {
+    return warnRuleService.updateWarnRule(resource, user);
+  }
+
+  /**
+   * 获取警告分页
+   *
+   * @param query 查询条件
+   * @param user 查询人
+   * @return 操作结果
+   */
+  public Page<Map<String, Object>> pageRoleSupervisionWarn(
+      WmSupervisionDto.OnWarnPage query, HnqzUser user) {
+
+    Set<Integer> roleIds =
+        userRoleService
+            .list(Wrappers.<SysUserRole>lambdaQuery().eq(SysUserRole::getUserId, user.getId()))
+            .stream()
+            .mapToInt(SysUserRole::getRoleId)
+            .boxed()
+            .collect(Collectors.toSet());
+
+    Page<WmRoleSupervisionWarn> page =
+        roleSupervisionWarnService.page(
+            new Page<>(query.getCurrent(), query.getSize()),
+            Wrappers.<WmRoleSupervisionWarn>lambdaQuery()
+                .in(CollUtil.isNotEmpty(roleIds), WmRoleSupervisionWarn::getRoleId, roleIds)
+                .orderByDesc(WmRoleSupervisionWarn::getCreateTime));
+
+    List<WmRoleSupervisionWarn> warns = page.getRecords();
+
+    List<Map<String, Object>> resList;
+    if (CollUtil.isNotEmpty(warns)) {
+      Set<Integer> warnIds =
+          warns.stream()
+              .mapToInt(WmRoleSupervisionWarn::getWarnId)
+              .boxed()
+              .collect(Collectors.toSet());
+      Set<Integer> collect =
+          warnUserRelationService
+              .list(
+                  Wrappers.<WmWarnUserRelation>lambdaQuery()
+                      .eq(WmWarnUserRelation::getUserId, user.getId())
+                      .in(WmWarnUserRelation::getWarnId, warnIds))
+              .stream()
+              .mapToInt(WmWarnUserRelation::getWarnId)
+              .boxed()
+              .collect(Collectors.toSet());
+
+      resList =
+          warns.stream()
+              .map(
+                  warn -> {
+                    Map<String, Object> map = BeanUtil.copyProperties(warn, Map.class);
+                    map.put("read", collect.contains(warn.getWarnId()));
+                    map.put("targetInfo", "xxxxx");
+                    return map;
+                  })
+              .collect(Collectors.toList());
+
+    } else {
+      resList = Collections.emptyList();
     }
 
-    public String getCurrentPkgTaskSupResult(Integer pkg, HnqzUser user) {
-
-        WmScorePackage scorePackage = packageService.getById(pkg.toString());
-
-        List<WmTaskSupervision> list = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery().eq(WmTaskSupervision::getPackageId, pkg));
-
-        int taskCount = taskService.count(Wrappers.<WmTask>lambdaQuery().eq(WmTask::getTaskStatus, "3").eq(WmTask::getScorePackageId, pkg.toString()));
-
-
-        String msg = "积分包【" + scorePackage.getScorePackageName() + "】中共有审核通过的服务" + taskCount + "条,监督员共监督" + list.size() + "条,监督占比为" + String.format("%.2f", (list.size() * 100.0f / taskCount)) + "%";
-
-
-        return msg;
+    Page<Map<String, Object>> res = new Page<>();
+    res.setTotal(page.getTotal());
+    res.setCurrent(page.getCurrent());
+    res.setSize(page.getSize());
+    res.setRecords(resList);
+    return res;
+  }
+
+  /**
+   * 警告信息
+   *
+   * @param resource 警告信息
+   * @param user 阅读人
+   * @return 阅读结果
+   */
+  public Boolean readWarn(WmSupervisionDto.OnWarnCreate resource, HnqzUser user) {
+
+    boolean read = warnUserRelationService.hasRead(resource.getWarnId(), user.getId());
+    if (read) {
+      return true;
     }
 
-    @Transactional(rollbackFor = Exception.class)
-    public Boolean checkPkgSupervision(WmSupervisionDto.OnPkgSupervisionCheck resource, HnqzUser user) {
-
-        Integer supervisionId = resource.getSupervisionId();
-
-        WmPackageSupervision supervision = packageSupervisionService.getById(supervisionId);
-
-        if (resource.getSupervision()) {
-
-            UpmsState.PackageSupervisionState state;
-            switch (supervision.getSupervisionState()) {
-                case INIT:
-                    state = UpmsState.PackageSupervisionState.CKT1;
-                    break;
-                case CKT1:
-                    state = UpmsState.PackageSupervisionState.CKT2;
-                    break;
-                case CKT2:
-                    state = UpmsState.PackageSupervisionState.PASSED;
-                    break;
-                default:
-                    throw new BizException("监督状态不正确,不能操作");
-
-            }
-
-            String remarks = resource.getRemarks();
-            if (StrUtil.isNotBlank(remarks)) {
-                supervision.setRemarks(resource.getRemarks() + ";" + supervision.getRemarks());
-            }
-            supervision.setUpdateBy(user.getUsername());
-            supervision.setUpdateTime(LocalDateTime.now());
-            supervision.setSupervisionState(state);
-            packageSupervisionService.updateById(supervision);
-
-        } else {
-            supervision.setSupervisionResult(false);
-            supervision.setRemarks(supervision.getRemarks() + ";" + resource.getRemarks());
-            supervision.setUpdateBy(user.getUsername());
-            supervision.setUpdateTime(LocalDateTime.now());
-            supervision.setSupervisionState(UpmsState.PackageSupervisionState.REJECTED);
-            packageSupervisionService.updateById(supervision);
-
-            // 如果审核拒绝 任务监督信息全部放弃 重新审核
-            taskSupervisionService.remove(Wrappers.<WmTaskSupervision>lambdaQuery().eq(WmTaskSupervision::getPackageId, supervision.getPackageId()).eq(WmTaskSupervision::getCreateBy, supervision.getCreateBy()));
-
-        }
-
-
-        return true;
+    return warnUserRelationService.read(resource, user);
+  }
+
+  public String getCurrentPkgTaskSupResult(Integer pkg, HnqzUser user) {
+
+    WmScorePackage scorePackage = packageService.getById(pkg.toString());
+
+    List<WmTaskSupervision> list =
+        taskSupervisionService.list(
+            Wrappers.<WmTaskSupervision>lambdaQuery().eq(WmTaskSupervision::getPackageId, pkg));
+
+    int taskCount =
+        taskService.count(
+            Wrappers.<WmTask>lambdaQuery()
+                .eq(WmTask::getTaskStatus, "3")
+                .eq(WmTask::getScorePackageId, pkg.toString()));
+
+    String msg =
+        "积分包【"
+            + scorePackage.getScorePackageName()
+            + "】中共有审核通过的服务"
+            + taskCount
+            + "条,监督员共监督"
+            + list.size()
+            + "条,监督占比为"
+            + String.format("%.2f", (list.size() * 100.0f / taskCount))
+            + "%";
+
+    return msg;
+  }
+
+  @Transactional(rollbackFor = Exception.class)
+  public Boolean checkPkgSupervision(
+      WmSupervisionDto.OnPkgSupervisionCheck resource, HnqzUser user) {
+
+    Integer supervisionId = resource.getSupervisionId();
+
+    WmPackageSupervision supervision = packageSupervisionService.getById(supervisionId);
+
+    if (resource.getSupervision()) {
+
+      UpmsState.PackageSupervisionState state;
+      switch (supervision.getSupervisionState()) {
+        case INIT:
+          state = UpmsState.PackageSupervisionState.CKT1;
+          break;
+        case CKT1:
+          state = UpmsState.PackageSupervisionState.CKT2;
+          break;
+        case CKT2:
+          state = UpmsState.PackageSupervisionState.PASSED;
+          break;
+        default:
+          throw new BizException("监督状态不正确,不能操作");
+      }
+
+      String remarks = resource.getRemarks();
+      if (StrUtil.isNotBlank(remarks)) {
+        supervision.setRemarks(resource.getRemarks() + ";" + supervision.getRemarks());
+      }
+      supervision.setUpdateBy(user.getUsername());
+      supervision.setUpdateTime(LocalDateTime.now());
+      supervision.setSupervisionState(state);
+      packageSupervisionService.updateById(supervision);
+
+    } else {
+      supervision.setSupervisionResult(false);
+      supervision.setRemarks(supervision.getRemarks() + ";" + resource.getRemarks());
+      supervision.setUpdateBy(user.getUsername());
+      supervision.setUpdateTime(LocalDateTime.now());
+      supervision.setSupervisionState(UpmsState.PackageSupervisionState.REJECTED);
+      packageSupervisionService.updateById(supervision);
+
+      // 如果审核拒绝 任务监督信息全部放弃 重新审核
+      taskSupervisionService.remove(
+          Wrappers.<WmTaskSupervision>lambdaQuery()
+              .eq(WmTaskSupervision::getPackageId, supervision.getPackageId())
+              .eq(WmTaskSupervision::getCreateBy, supervision.getCreateBy()));
     }
 
-    // // 按照区域 to 服务商的打包进行展示
-    // public Page<Map<String, Object>> pagePkgV2(WmSupervisionDto.OnB2BPkgPage query, HnqzUser operator) {
-    //
-    //     // 分页结果
-    //     Page<Map<String, Object>> page = new Page<>(query.getCurrent(), query.getSize());
-    //
-    //     // 根据角色判断药品
-    //     List<Integer> drugIds;
-    //     if (!SecurityUtils.getRoles().contains(39) && !SecurityUtils.getRoles().contains(37)) {
-    //
-    //         drugIds = userDrugService.listDrugIdByUserId(operator.getId());
-    //
-    //         if (CollUtil.isEmpty(drugIds)) {
-    //             log.info("当前操作人没有分配产品");
-    //             return page;
-    //         }
-    //
-    //     } else {
-    //         drugIds = Collections.emptyList();
-    //     }
-    //
-    //
-    //     // 筛查区域内所有企业
-    //     List<Long> areaCode = query.getAreaCode();
-    //     List<Long> entIds;
-    //     if (CollUtil.isNotEmpty(areaCode)) {
-    //         entIds = enterpriseAreaService.listAreaEnts(areaCode);
-    //         if (CollUtil.isEmpty(entIds)) {
-    //             return page;
-    //         }
-    //     } else {
-    //         entIds = Collections.emptyList();
-    //     }
-    //
-    //     String entName = query.getEntName();
-    //     Set<Integer> finalEntIds = new HashSet<>();
-    //     if (CharSequenceUtil.isNotBlank(entName)) {
-    //         List<SysDept> enterprises = deptService.list(Wrappers.<SysDept>lambdaQuery().like(SysDept::getName, entName).in(CollUtil.isNotEmpty(entIds), SysDept::getDeptId, entIds));
-    //         List<Integer> deptIds = enterprises.stream().mapToInt(SysDept::getDeptId).boxed().distinct().collect(Collectors.toList());
-    //         if (CollUtil.isEmpty(deptIds)) {
-    //             return page;
-    //         }
-    //         finalEntIds.addAll(deptIds);
-    //     } else {
-    //
-    //         Set<Integer> collect = entIds.stream().map(Long::intValue).collect(Collectors.toSet());
-    //
-    //         List<SysDept> depts = deptService.list(Wrappers.<SysDept>lambdaQuery().in(CollUtil.isNotEmpty(collect), SysDept::getDeptId, collect).eq(SysDept::getLevel, 4));
-    //
-    //         finalEntIds.addAll(depts.stream().map(SysDept::getDeptId).collect(Collectors.toSet()));
-    //     }
-    //
-    //
-    //     // 获取全部的区域 & 获取区域ID
-    //     List<SysDept> districts = deptService.list(Wrappers.<SysDept>lambdaQuery().eq(SysDept::getLevel, 3));
-    //     Map<Integer, String> distId2NameMap = districts.stream().collect(Collectors.toMap(SysDept::getDeptId, SysDept::getName));
-    //     List<Integer> disIds = districts.stream().mapToInt(SysDept::getDeptId).boxed().distinct().sorted().collect(Collectors.toList());
-    //
-    //     // 获取区域发送所有b端包
-    //     Page<WmScorePackage> b2bPkgPage = packageService.page(new Page<>(query.getCurrent(), query.getSize()),
-    //             Wrappers.<WmScorePackage>lambdaQuery()
-    //                     .in(CollUtil.isNotEmpty(drugIds), WmScorePackage::getDrugtable, drugIds)
-    //                     .eq(StrUtil.isNotBlank(query.getPkgName()), WmScorePackage::getScorePackageName, query.getPkgName())
-    //                     .in(CollUtil.isNotEmpty(finalEntIds), WmScorePackage::getDeptId, finalEntIds)
-    //                     // .between(WmScorePackage::getCreateTime, , )
-    //                     .in(WmScorePackage::getSendPackageDeptId, disIds));
-    //
-    //     List<WmScorePackage> records = b2bPkgPage.getRecords();
-    //
-    //     List<Map<String, Object>> build = new ArrayList<>(records.size());
-    //     if (CollUtil.isNotEmpty(records)) {
-    //
-    //         // 获取服务商信息
-    //         Set<Integer> deptId = records.stream().mapToInt(pkg -> Integer.parseInt(pkg.getDeptId())).boxed().collect(Collectors.toSet());
-    //         Map<Integer, String> deptIdToDeptNameMap = deptService.listByIds(deptId).stream().collect(Collectors.toMap(SysDept::getDeptId, SysDept::getName));
-    //
-    //         // 循环拼装数据
-    //         DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DatePattern.CHINESE_DATE_PATTERN);
-    //         for (WmScorePackage pkg : records) {
-    //
-    //             Map<String, Object> ele = new HashMap<>(7);
-    //             ele.put("pkgName", pkg.getScorePackageName());
-    //             ele.put("score", pkg.getScore());
-    //             ele.put("pkgState", pkg.getPackageStatus());
-    //             ele.put("period", String.format("%s~%s", dateTimeFormatter.format(pkg.getStartTime()), dateTimeFormatter.format(pkg.getEndTime())));
-    //             ele.put("districtName", distId2NameMap.get(Integer.valueOf(pkg.getSendPackageDeptId())));
-    //             ele.put("deptName", deptIdToDeptNameMap.get(Integer.valueOf(pkg.getDeptId())));
-    //
-    //
-    //             // 获取子集包
-    //             List<WmScorePackage> b2cPkg = packageService.list(Wrappers.<WmScorePackage>lambdaQuery().eq(WmScorePackage::getRelationScoreId, pkg.getId()));
-    //             if (CollUtil.isNotEmpty(b2cPkg)) {
-    //                 List<String> b2cPkgIds = b2cPkg.stream().map(WmScorePackage::getId).distinct().sorted().collect(Collectors.toList());
-    //                 // 获取子集包中的所有任务
-    //                 taskService.listAvailableTaskForSupervision1(b2cPkgIds.stream().mapToInt(Integer::valueOf).boxed().distinct().sorted().collect(Collectors.toList()), Collections.emptyList());
-    //                 List<WmTask> tasks = taskService.list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getScorePackageId, b2cPkgIds));
-    //                 // 获取监察记录
-    //                 List<WmTaskSupervision> supervisions = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery().in(WmTaskSupervision::getPackageId, b2cPkgIds));
-    //
-    //                 // 获取监察结果
-    //                 Map<String, String> stat = new HashMap<>(2);
-    //                 stat.put("supTotal", CollUtil.isNotEmpty(supervisions) ? String.valueOf(supervisions.stream().map(WmTaskSupervision::getTaskId).collect(Collectors.toSet()).size()) : "0");
-    //                 stat.put("total", CollUtil.isNotEmpty(tasks) ? String.valueOf(tasks.size()) : "0");
-    //                 ele.put("taskSupStat", stat);
-    //             }
-    //
-    //             build.add(ele);
-    //         }
-    //     }
-    //     page.setRecords(build);
-    //     page.setTotal(b2bPkgPage.getTotal());
-    //     return page;
-    //
-    // }
-
-    // 按照服务商的维度显示季度任务信息
-    public Page<Map<String, Object>> pagePkgV3(WmSupervisionDto.OnB2BPkgPage query, HnqzUser operator) {
-
-        // 分页结果
-        Page<Map<String, Object>> page = new Page<>(query.getCurrent(), query.getSize());
-
-        // 根据角色判断药品
-        List<Integer> drugIds;
-        if (!SecurityUtils.getRoles().contains(39) && !SecurityUtils.getRoles().contains(37)) {
-
-            drugIds = userDrugService.listDrugIdByUserId(operator.getId());
+    return true;
+  }
+
+  // // 按照区域 to 服务商的打包进行展示
+  // public Page<Map<String, Object>> pagePkgV2(WmSupervisionDto.OnB2BPkgPage query, HnqzUser
+  // operator) {
+  //
+  //     // 分页结果
+  //     Page<Map<String, Object>> page = new Page<>(query.getCurrent(), query.getSize());
+  //
+  //     // 根据角色判断药品
+  //     List<Integer> drugIds;
+  //     if (!SecurityUtils.getRoles().contains(39) && !SecurityUtils.getRoles().contains(37)) {
+  //
+  //         drugIds = userDrugService.listDrugIdByUserId(operator.getId());
+  //
+  //         if (CollUtil.isEmpty(drugIds)) {
+  //             log.info("当前操作人没有分配产品");
+  //             return page;
+  //         }
+  //
+  //     } else {
+  //         drugIds = Collections.emptyList();
+  //     }
+  //
+  //
+  //     // 筛查区域内所有企业
+  //     List<Long> areaCode = query.getAreaCode();
+  //     List<Long> entIds;
+  //     if (CollUtil.isNotEmpty(areaCode)) {
+  //         entIds = enterpriseAreaService.listAreaEnts(areaCode);
+  //         if (CollUtil.isEmpty(entIds)) {
+  //             return page;
+  //         }
+  //     } else {
+  //         entIds = Collections.emptyList();
+  //     }
+  //
+  //     String entName = query.getEntName();
+  //     Set<Integer> finalEntIds = new HashSet<>();
+  //     if (CharSequenceUtil.isNotBlank(entName)) {
+  //         List<SysDept> enterprises =
+  // deptService.list(Wrappers.<SysDept>lambdaQuery().like(SysDept::getName,
+  // entName).in(CollUtil.isNotEmpty(entIds), SysDept::getDeptId, entIds));
+  //         List<Integer> deptIds =
+  // enterprises.stream().mapToInt(SysDept::getDeptId).boxed().distinct().collect(Collectors.toList());
+  //         if (CollUtil.isEmpty(deptIds)) {
+  //             return page;
+  //         }
+  //         finalEntIds.addAll(deptIds);
+  //     } else {
+  //
+  //         Set<Integer> collect = entIds.stream().map(Long::intValue).collect(Collectors.toSet());
+  //
+  //         List<SysDept> depts =
+  // deptService.list(Wrappers.<SysDept>lambdaQuery().in(CollUtil.isNotEmpty(collect),
+  // SysDept::getDeptId, collect).eq(SysDept::getLevel, 4));
+  //
+  //         finalEntIds.addAll(depts.stream().map(SysDept::getDeptId).collect(Collectors.toSet()));
+  //     }
+  //
+  //
+  //     // 获取全部的区域 & 获取区域ID
+  //     List<SysDept> districts =
+  // deptService.list(Wrappers.<SysDept>lambdaQuery().eq(SysDept::getLevel, 3));
+  //     Map<Integer, String> distId2NameMap =
+  // districts.stream().collect(Collectors.toMap(SysDept::getDeptId, SysDept::getName));
+  //     List<Integer> disIds =
+  // districts.stream().mapToInt(SysDept::getDeptId).boxed().distinct().sorted().collect(Collectors.toList());
+  //
+  //     // 获取区域发送所有b端包
+  //     Page<WmScorePackage> b2bPkgPage = packageService.page(new Page<>(query.getCurrent(),
+  // query.getSize()),
+  //             Wrappers.<WmScorePackage>lambdaQuery()
+  //                     .in(CollUtil.isNotEmpty(drugIds), WmScorePackage::getDrugtable, drugIds)
+  //                     .eq(StrUtil.isNotBlank(query.getPkgName()),
+  // WmScorePackage::getScorePackageName, query.getPkgName())
+  //                     .in(CollUtil.isNotEmpty(finalEntIds), WmScorePackage::getDeptId,
+  // finalEntIds)
+  //                     // .between(WmScorePackage::getCreateTime, , )
+  //                     .in(WmScorePackage::getSendPackageDeptId, disIds));
+  //
+  //     List<WmScorePackage> records = b2bPkgPage.getRecords();
+  //
+  //     List<Map<String, Object>> build = new ArrayList<>(records.size());
+  //     if (CollUtil.isNotEmpty(records)) {
+  //
+  //         // 获取服务商信息
+  //         Set<Integer> deptId = records.stream().mapToInt(pkg ->
+  // Integer.parseInt(pkg.getDeptId())).boxed().collect(Collectors.toSet());
+  //         Map<Integer, String> deptIdToDeptNameMap =
+  // deptService.listByIds(deptId).stream().collect(Collectors.toMap(SysDept::getDeptId,
+  // SysDept::getName));
+  //
+  //         // 循环拼装数据
+  //         DateTimeFormatter dateTimeFormatter =
+  // DateTimeFormatter.ofPattern(DatePattern.CHINESE_DATE_PATTERN);
+  //         for (WmScorePackage pkg : records) {
+  //
+  //             Map<String, Object> ele = new HashMap<>(7);
+  //             ele.put("pkgName", pkg.getScorePackageName());
+  //             ele.put("score", pkg.getScore());
+  //             ele.put("pkgState", pkg.getPackageStatus());
+  //             ele.put("period", String.format("%s~%s",
+  // dateTimeFormatter.format(pkg.getStartTime()), dateTimeFormatter.format(pkg.getEndTime())));
+  //             ele.put("districtName",
+  // distId2NameMap.get(Integer.valueOf(pkg.getSendPackageDeptId())));
+  //             ele.put("deptName", deptIdToDeptNameMap.get(Integer.valueOf(pkg.getDeptId())));
+  //
+  //
+  //             // 获取子集包
+  //             List<WmScorePackage> b2cPkg =
+  // packageService.list(Wrappers.<WmScorePackage>lambdaQuery().eq(WmScorePackage::getRelationScoreId, pkg.getId()));
+  //             if (CollUtil.isNotEmpty(b2cPkg)) {
+  //                 List<String> b2cPkgIds =
+  // b2cPkg.stream().map(WmScorePackage::getId).distinct().sorted().collect(Collectors.toList());
+  //                 // 获取子集包中的所有任务
+  //
+  // taskService.listAvailableTaskForSupervision1(b2cPkgIds.stream().mapToInt(Integer::valueOf).boxed().distinct().sorted().collect(Collectors.toList()), Collections.emptyList());
+  //                 List<WmTask> tasks =
+  // taskService.list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getScorePackageId, b2cPkgIds));
+  //                 // 获取监察记录
+  //                 List<WmTaskSupervision> supervisions =
+  // taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery().in(WmTaskSupervision::getPackageId, b2cPkgIds));
+  //
+  //                 // 获取监察结果
+  //                 Map<String, String> stat = new HashMap<>(2);
+  //                 stat.put("supTotal", CollUtil.isNotEmpty(supervisions) ?
+  // String.valueOf(supervisions.stream().map(WmTaskSupervision::getTaskId).collect(Collectors.toSet()).size()) : "0");
+  //                 stat.put("total", CollUtil.isNotEmpty(tasks) ? String.valueOf(tasks.size()) :
+  // "0");
+  //                 ele.put("taskSupStat", stat);
+  //             }
+  //
+  //             build.add(ele);
+  //         }
+  //     }
+  //     page.setRecords(build);
+  //     page.setTotal(b2bPkgPage.getTotal());
+  //     return page;
+  //
+  // }
+
+  // 按照服务商的维度显示季度任务信息
+  public Page<Map<String, Object>> pagePkgV3(
+      WmSupervisionDto.OnB2BPkgPage query, HnqzUser operator) {
+
+    // 分页结果
+    Page<Map<String, Object>> page = new Page<>(query.getCurrent(), query.getSize());
+
+    // 根据角色判断药品
+    List<Integer> drugIds;
+    if (!SecurityUtils.getRoles().contains(39) && !SecurityUtils.getRoles().contains(37)) {
+
+      drugIds = userDrugService.listDrugIdByUserId(operator.getId());
+
+      if (CollUtil.isEmpty(drugIds)) {
+        log.info("当前操作人没有分配产品");
+        return page;
+      }
 
-            if (CollUtil.isEmpty(drugIds)) {
-                log.info("当前操作人没有分配产品");
-                return page;
-            }
+    } else {
+      drugIds = Collections.emptyList();
+    }
 
-        } else {
-            drugIds = Collections.emptyList();
+    List<Long> entIds;
+    if (CollUtil.containsAny(SecurityUtils.getRoles(), List.of(37))) {
+      entIds = Collections.singletonList(Long.valueOf(operator.getDeptId()));
+    } else {
+      // 筛查区域内所有企业
+      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));
 
-        List<Long> entIds;
-        if (CollUtil.containsAny(SecurityUtils.getRoles(), List.of(37))) {
-            entIds = Collections.singletonList(Long.valueOf(operator.getDeptId()));
-        } else {
-            // 筛查区域内所有企业
-            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));
+    List<SysDept> depts = deptPage.getRecords();
 
-        List<SysDept> depts = deptPage.getRecords();
+    if (CollUtil.isEmpty(depts)) {
+      return page;
+    }
 
-        if (CollUtil.isEmpty(depts)) {
-            return page;
-        }
+    // 封装参数
+    List<Map<String, Object>> collect =
+        depts.stream()
+            .map(
+                dept -> {
+                  Map<String, Object> map = new HashMap<>(5);
+                  map.put("deptName", dept.getName());
+                  map.put("deptId", dept.getDeptId());
+
+                  LambdaQueryWrapper<WmScorePackage> queryWrapper =
+                      Wrappers.<WmScorePackage>lambdaQuery()
+                          .in(CollUtil.isNotEmpty(drugIds), WmScorePackage::getDrugtable, drugIds)
+                          .eq(
+                              StrUtil.isNotBlank(query.getPkgName()),
+                              WmScorePackage::getScorePackageName,
+                              query.getPkgName())
+                          .eq(WmScorePackage::getSendPackageDeptId, dept.getDeptId().toString());
+
+                  LocalDate[] period = query.getPeriod();
+                  if (ArrayUtil.isNotEmpty(period) && period.length == 2) {
+                    queryWrapper.ge(WmScorePackage::getStartTime, period[0]);
+                    queryWrapper.le(WmScorePackage::getEndTime, period[1]);
+                  }
+
+                  // 获取当前企业当季度的包
+                  List<WmScorePackage> pkgs = packageService.list(queryWrapper);
+
+                  int total = 0;
+                  int supTotal = 0;
+                  int total1 = 0;
+                  int supTotal1 = 0;
+
+                  // 生产企业财务部监督员
+                  int mahFinaSupTotal = 0;
+                  // 生产企业销售部监督员
+                  int mahSalesSupTotal = 0;
+                  // 营销中心法务合规部监督员
+                  int optLawSupTotal = 0;
+                  // 营销中心财务部监督员
+                  int optFinaSupTotal = 0;
+
+                  // 获取c端包统计信息
+                  if (CollUtil.isNotEmpty(pkgs)) {
+
+                    List<String> pkgIds =
+                        pkgs.stream()
+                            .map(WmScorePackage::getId)
+                            .distinct()
+                            .sorted()
+                            .collect(Collectors.toList());
+                    // 获取子集包中的所有任务
+                    List<WmTask> tasks =
+                        taskService.listAvailableTaskForSupervision1(
+                            pkgIds.stream()
+                                .mapToInt(Integer::valueOf)
+                                .boxed()
+                                .distinct()
+                                .sorted()
+                                .collect(Collectors.toList()),
+                            Collections.emptyList());
+                    // List<WmTask> tasks =
+                    // taskService.list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getScorePackageId,
+                    // pkgIds).eq(WmTask::getTaskStatus, "3"));
+                    // 获取监察记录(不可编辑的是监察过的)
+                    List<WmTaskSupervision> supervisions =
+                        taskSupervisionService.list(
+                            Wrappers.<WmTaskSupervision>lambdaQuery()
+                                .eq(WmTaskSupervision::getModifiable, false)
+                                .in(
+                                    WmTaskSupervision::getPackageId,
+                                    pkgIds.stream()
+                                        .mapToInt(Integer::valueOf)
+                                        .boxed()
+                                        .sorted()
+                                        .distinct()
+                                        .collect(Collectors.toList())));
+
+                    Map<Integer, List<WmTaskSupervision>> roleId2SupMap =
+                        supervisions.stream()
+                            .collect(Collectors.groupingBy(WmTaskSupervision::getRoleId));
+                    // 生产企业财务部监督员
+                    mahFinaSupTotal =
+                        CollUtil.isNotEmpty(roleId2SupMap.get(49))
+                            ? roleId2SupMap.get(49).size()
+                            : 0;
+                    // 生产企业销售部监督员
+                    mahSalesSupTotal =
+                        CollUtil.isNotEmpty(roleId2SupMap.get(52))
+                            ? roleId2SupMap.get(52).size()
+                            : 0;
+                    // 营销中心法务合规部监督员
+                    optLawSupTotal =
+                        CollUtil.isNotEmpty(roleId2SupMap.get(53))
+                            ? roleId2SupMap.get(53).size()
+                            : 0;
+                    // 营销中心财务部监督员
+                    optFinaSupTotal =
+                        CollUtil.isNotEmpty(roleId2SupMap.get(56))
+                            ? roleId2SupMap.get(56).size()
+                            : 0;
+
+                    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))) {
+
+                      supTotal =
+                          CollUtil.isNotEmpty(supervisions)
+                              ? supervisions.stream()
+                                  .filter(
+                                      ts ->
+                                          UpmsState.TaskSupervisionState.PASSED.equals(
+                                              ts.getSupervisionState()))
+                                  .map(WmTaskSupervision::getTaskId)
+                                  .collect(Collectors.toSet())
+                                  .size()
+                              : 0;
+
+                      // 获取监察结果
+                      total1 = supTotal;
+                      supTotal1 = supTotal;
+                    }
+                    // 其他角色
+                    else {
 
-        // 封装参数
-        List<Map<String, Object>> collect = depts.stream().map(dept -> {
-            Map<String, Object> map = new HashMap<>(5);
-            map.put("deptName", dept.getName());
-            map.put("deptId", dept.getDeptId());
-
-            LambdaQueryWrapper<WmScorePackage> queryWrapper = Wrappers.<WmScorePackage>lambdaQuery()
-                    .in(CollUtil.isNotEmpty(drugIds), WmScorePackage::getDrugtable, drugIds)
-                    .eq(StrUtil.isNotBlank(query.getPkgName()), WmScorePackage::getScorePackageName, query.getPkgName())
-                    .eq(WmScorePackage::getSendPackageDeptId, dept.getDeptId().toString());
-
-            LocalDate[] period = query.getPeriod();
-            if (ArrayUtil.isNotEmpty(period) && period.length == 2) {
-                queryWrapper.ge(WmScorePackage::getStartTime, period[0]);
-                queryWrapper.le(WmScorePackage::getEndTime, period[1]);
-            }
-
-            // 获取当前企业当季度的包
-            List<WmScorePackage> pkgs = packageService.list(queryWrapper);
-
-            int total = 0;
-            int supTotal = 0;
-            int total1 = 0;
-            int supTotal1 = 0;
-
-            // 生产企业财务部监督员
-            int mahFinaSupTotal = 0;
-            // 生产企业销售部监督员
-            int mahSalesSupTotal = 0;
-            // 营销中心法务合规部监督员
-            int optLawSupTotal = 0;
-            // 营销中心财务部监督员
-            int optFinaSupTotal = 0;
-
-            // 获取c端包统计信息
-            if (CollUtil.isNotEmpty(pkgs)) {
-
-                List<String> pkgIds = pkgs.stream().map(WmScorePackage::getId).distinct().sorted().collect(Collectors.toList());
-                // 获取子集包中的所有任务
-                List<WmTask> tasks = taskService.listAvailableTaskForSupervision1(pkgIds.stream().mapToInt(Integer::valueOf).boxed().distinct().sorted().collect(Collectors.toList()), Collections.emptyList());
-                // List<WmTask> tasks = taskService.list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getScorePackageId, pkgIds).eq(WmTask::getTaskStatus, "3"));
-                // 获取监察记录(不可编辑的是监察过的)
-                List<WmTaskSupervision> supervisions = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery()
-                        .eq(WmTaskSupervision::getModifiable, false)
-                        .in(WmTaskSupervision::getPackageId, pkgIds.stream().mapToInt(Integer::valueOf).boxed().sorted().distinct()
-                                .collect(Collectors.toList())));
-
-
-                Map<Integer, List<WmTaskSupervision>> roleId2SupMap = supervisions.stream().collect(Collectors.groupingBy(WmTaskSupervision::getRoleId));
-                // 生产企业财务部监督员
-                mahFinaSupTotal = CollUtil.isNotEmpty(roleId2SupMap.get(49)) ? roleId2SupMap.get(49).size() : 0;
-                // 生产企业销售部监督员
-                mahSalesSupTotal = CollUtil.isNotEmpty(roleId2SupMap.get(52)) ? roleId2SupMap.get(52).size() : 0;
-                // 营销中心法务合规部监督员
-                optLawSupTotal = CollUtil.isNotEmpty(roleId2SupMap.get(53)) ? roleId2SupMap.get(53).size() : 0;
-                // 营销中心财务部监督员
-                optFinaSupTotal = CollUtil.isNotEmpty(roleId2SupMap.get(56)) ? roleId2SupMap.get(56).size() : 0;
-
-
-                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))) {
-
-                    supTotal = CollUtil.isNotEmpty(supervisions)
-                            ? supervisions.stream().filter(ts -> UpmsState.TaskSupervisionState.PASSED.equals(ts.getSupervisionState()))
-                            .map(WmTaskSupervision::getTaskId).collect(Collectors.toSet()).size() : 0;
-
-                    // 获取监察结果
-                    total1 = supTotal;
-                    supTotal1 = supTotal;
-                }
-                // 其他角色
-                else {
-
-                    // 所有监察的
-                    List<Long> supId = supervisions.stream().map(WmTaskSupervision::getSupervisionId).collect(Collectors.toList());
-
-                    if (CollUtil.isNotEmpty(supId)) {
+                      // 所有监察的
+                      List<Long> supId =
+                          supervisions.stream()
+                              .map(WmTaskSupervision::getSupervisionId)
+                              .collect(Collectors.toList());
 
+                      if (CollUtil.isNotEmpty(supId)) {
 
                         // 我监察过的(有重复的的)
-                        Set<Long> advices = taskSupervisionAdviceService.list(Wrappers.<WmTaskSupervisionAdvice>lambdaQuery()
-                                .eq(WmTaskSupervisionAdvice::getDelFlag, false)
-                                .in(WmTaskSupervisionAdvice::getTaskSupervisionId, supId)
-                                .eq(WmTaskSupervisionAdvice::getCreateBy, operator.getUsername())).stream().map(WmTaskSupervisionAdvice::getTaskSupervisionId).collect(Collectors.toSet());
-
-                        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());
+                        Set<Long> advices =
+                            taskSupervisionAdviceService
+                                .list(
+                                    Wrappers.<WmTaskSupervisionAdvice>lambdaQuery()
+                                        .eq(WmTaskSupervisionAdvice::getDelFlag, false)
+                                        .in(WmTaskSupervisionAdvice::getTaskSupervisionId, supId)
+                                        .eq(
+                                            WmTaskSupervisionAdvice::getCreateBy,
+                                            operator.getUsername()))
+                                .stream()
+                                .map(WmTaskSupervisionAdvice::getTaskSupervisionId)
+                                .collect(Collectors.toSet());
+
+                        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 = advices.size();
-                            total1 = init.size() + supTotal1;
+                          supTotal1 = advices.size();
+                          total1 = init.size() + supTotal1;
                         }
                         // 分管领导
                         else if (CollUtil.containsAny(roles, List.of(51, 54, 55, 61))) {
 
-                            supTotal1 = advices.size();
-                            total1 = ckt1.size() + supTotal1;
+                          supTotal1 = advices.size();
+                          total1 = ckt1.size() + supTotal1;
                         }
                         // 事业部总经理
                         else if (CollUtil.containsAny(roles, List.of(39))) {
-                            supTotal1 = advices.size();
-                            total1 = ckt2.size() + supTotal1;
+                          supTotal1 = advices.size();
+                          total1 = ckt2.size() + supTotal1;
                         }
+                      }
                     }
-                }
+                  }
+
+                  Map<String, Integer> stat = new HashMap<>(4);
+                  stat.put("supTotal", supTotal);
+                  stat.put("total", total);
+                  stat.put("mahFinaSupTotal", mahFinaSupTotal);
+                  stat.put("mahSalesSupTotal", mahSalesSupTotal);
+                  stat.put("optLawSupTotal", optLawSupTotal);
+                  stat.put("optFinaSupTotal", optFinaSupTotal);
+                  map.put("taskSupStat", stat);
+                  map.put("toCheck", supTotal1 != total1);
+                  map.put("checked", supTotal1 != 0);
+
+                  return map;
+                })
+            .collect(Collectors.toList());
+
+    page.setRecords(collect);
+    page.setTotal(deptPage.getTotal());
+    return page;
+  }
+
+  public List<Integer> getVisibleRoleIds(List<Integer> roles) {
+
+    List<Integer> roleIds = new LinkedList<>();
+
+    // 49	生产企业财务部监察员
+    // 57	生产企业财务部监察负责人
+    // 51	生产企业财务部监察分管领导
+    if (CollUtil.containsAny(roles, List.of(49, 57, 51))) {
+      roleIds.add(49);
+      // return List.of(49);
+    }
 
-            }
+    // 52	生产企业销售部监察员
+    // 58	生产企业销售部监察负责人
+    // 61	生产企业销售部监察分管领导
+    if (CollUtil.containsAny(roles, List.of(52, 58, 61))) {
+      roleIds.add(52);
+      // return List.of(52);
+    }
 
+    // 53	营销中心法务合规部监察员
+    // 60	营销中心法务合规部监察负责人
+    // 54	营销中心法务合规部监察分管领导
+    if (CollUtil.containsAny(roles, List.of(60, 54, 53))) {
+      roleIds.add(53);
+      // return List.of(53);
+    }
 
-            Map<String, Integer> stat = new HashMap<>(4);
-            stat.put("supTotal", supTotal);
-            stat.put("total", total);
-            stat.put("mahFinaSupTotal", mahFinaSupTotal);
-            stat.put("mahSalesSupTotal", mahSalesSupTotal);
-            stat.put("optLawSupTotal", optLawSupTotal);
-            stat.put("optFinaSupTotal", optFinaSupTotal);
-            map.put("taskSupStat", stat);
-            map.put("toCheck", supTotal1 != total1);
-            map.put("checked", supTotal1 != 0);
+    // 56	营销中心财务部监察员
+    // 59	营销中心财务部监察负责人
+    // 55	营销中心财务部监察分管领导
 
-            return map;
-        }).collect(Collectors.toList());
+    if (CollUtil.containsAny(roles, List.of(55, 59, 56))) {
+      roleIds.add(56);
+      // return List.of(56);
+    }
 
-        page.setRecords(collect);
-        page.setTotal(deptPage.getTotal());
+    return CollUtil.isNotEmpty(roleIds) ? roleIds : List.of(49, 52, 53, 56);
+  }
+
+  public Page<Map<String, Object>> pageTaskSupervision(
+      WmSupervisionDto.OnTaskSupervisionPage query) {
+
+    // 操作人角色
+    List<Integer> roles = SecurityUtils.getRoles();
+    HnqzUser user = SecurityUtils.getUser();
+    Page<Map<String, Object>> page = new Page<>(query.getCurrent(), query.getSize());
+
+    // 判断是否要查询指定的代表
+    String memberName = query.getMemberName();
+    List<Integer> userIds1;
+    if (StrUtil.isNotBlank(memberName)) {
+      userIds1 =
+          userService
+              .list(
+                  Wrappers.<SysUser>lambdaQuery()
+                      .eq(SysUser::getLockFlag, CommonConstants.STATUS_NORMAL)
+                      .eq(SysUser::getDelFlag, CommonConstants.STATUS_NORMAL)
+                      .like(SysUser::getRealname, memberName.trim()))
+              .stream()
+              .mapToInt(SysUser::getUserId)
+              .boxed()
+              .sorted()
+              .distinct()
+              .collect(Collectors.toList());
+
+      if (CollUtil.isEmpty(userIds1)) {
         return page;
-    }
+      }
 
-    public List<Integer> getVisibleRoleIds(List<Integer> roles) {
+    } else {
+      userIds1 = Collections.emptyList();
+    }
 
-        List<Integer> roleIds = new LinkedList<>();
+    // 获取药品条件
+    List<Integer> drugtableIds =
+        wmDaDrugEntDrugtableMapper
+            .selectList(
+                Wrappers.<WmDaDrugEntDrugtable>lambdaQuery()
+                    .like(
+                        StrUtil.isNotBlank(query.getMahName()),
+                        WmDaDrugEntDrugtable::getDrugEntName,
+                        query.getMahName())
+                    .like(
+                        StrUtil.isNotBlank(query.getSkuName()),
+                        WmDaDrugEntDrugtable::getDrugnameTy,
+                        query.getSkuName()))
+            .stream()
+            .mapToInt(drug -> Integer.parseInt(drug.getId()))
+            .boxed()
+            .distinct()
+            .sorted()
+            .collect(Collectors.toList());
+
+    // 根据角色判断药品
+    List<Integer> drugIds;
+    if (!roles.contains(39) && !roles.contains(37)) {
+
+      drugIds = userDrugService.listDrugIdByUserId(user.getId());
+
+      // 如果有条件参数查询交集
+      drugIds = new ArrayList<>(CollUtil.intersectionDistinct(drugIds, drugtableIds));
+
+      if (CollUtil.isEmpty(drugIds)) {
+        log.info("当前操作人没有分配产品");
+        return page;
+      }
 
-        // 49	生产企业财务部监察员
-        // 57	生产企业财务部监察负责人
-        // 51	生产企业财务部监察分管领导
-        if (CollUtil.containsAny(roles, List.of(49, 57, 51))) {
-            roleIds.add(49);
-            // return List.of(49);
-        }
+    } else {
+      drugIds = CollUtil.isEmpty(drugtableIds) ? Collections.emptyList() : drugtableIds;
+    }
 
-        // 52	生产企业销售部监察员
-        // 58	生产企业销售部监察负责人
-        // 61	生产企业销售部监察分管领导
-        if (CollUtil.containsAny(roles, List.of(52, 58, 61))) {
-            roleIds.add(52);
-            // return List.of(52);
-        }
+    // 获取积分包
+    LambdaQueryWrapper<WmScorePackage> queryWrapper =
+        Wrappers.<WmScorePackage>lambdaQuery()
+            .like(
+                StrUtil.isNotBlank(query.getPkgName()),
+                WmScorePackage::getScorePackageName,
+                query.getPkgName())
+            .in(CollUtil.isNotEmpty(drugIds), WmScorePackage::getDrugtable, drugIds)
+            .eq(WmScorePackage::getSendPackageDeptId, query.getDeptId());
+
+    LocalDate[] pkgPeriod = query.getPkgPeriod();
+    if (ArrayUtil.isNotEmpty(pkgPeriod)) {
+      queryWrapper.ge(WmScorePackage::getStartTime, pkgPeriod[0]);
+      queryWrapper.le(WmScorePackage::getEndTime, pkgPeriod[1]);
+    }
 
+    List<WmScorePackage> packages = packageService.list(queryWrapper);
 
-        // 53	营销中心法务合规部监察员
-        // 60	营销中心法务合规部监察负责人
-        // 54	营销中心法务合规部监察分管领导
-        if (CollUtil.containsAny(roles, List.of(60, 54, 53))) {
-            roleIds.add(53);
-            // return List.of(53);
-        }
+    if (CollUtil.isEmpty(packages)) {
+      return page;
+    }
 
-        // 56	营销中心财务部监察员
-        // 59	营销中心财务部监察负责人
-        // 55	营销中心财务部监察分管领导
+    // 获取积分包ID
+    List<Integer> pkgIds =
+        packages.stream()
+            .map(WmScorePackage::getId)
+            .mapToInt(Integer::valueOf)
+            .boxed()
+            .distinct()
+            .sorted()
+            .collect(Collectors.toList());
+
+    // 积分包内已经监督的任务
+    List<WmTaskSupervision> list1 =
+        taskSupervisionService.list(
+            Wrappers.<WmTaskSupervision>lambdaQuery()
+                //                 .in(WmTaskSupervision::getRoleId, visibleRoleIds)
+                // .eq(WmTaskSupervision::getModifiable, false)
+                .in(WmTaskSupervision::getPackageId, pkgIds)
+                .orderByDesc(WmTaskSupervision::getCreateTime));
 
-        if (CollUtil.containsAny(roles, List.of(55, 59, 56))) {
-            roleIds.add(56);
-            // return List.of(56);
+    List<WmTaskSupervision> list =
+        list1.stream()
+            .filter(
+                ts -> {
+                  if (!ts.getModifiable()) {
+                    return true;
+                  } else {
+                    return roles.contains(ts.getRoleId());
+                  }
+                })
+            .collect(Collectors.toList());
+
+    // 监督员
+    Boolean review = query.getReview();
+
+    Page<WmTask> taskPage;
+    boolean isService;
+    if (CollUtil.containsAny(roles, List.of(49, 52, 53, 56))) {
+      isService = false;
+
+      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(CollUtil.isNotEmpty(userIds1), WmTask::getTaskUserId, userIds1)
+                    .eq(
+                        StrUtil.isNotBlank(query.getTaskTypeId()),
+                        WmTask::getTaskTypeId,
+                        query.getTaskTypeId())
+                    .like(StrUtil.isNotBlank(query.getTaskId()), WmTask::getId, query.getTaskId())
+                    .like(
+                        StrUtil.isNotBlank(query.getTaskNumber()),
+                        WmTask::getTaskNumber,
+                        query.getTaskNumber())
+                    .in(WmTask::getId, taskIds));
+
+      } else {
+        List<Integer> supTaskIds =
+            list.stream()
+                .mapToInt(WmTaskSupervision::getTaskId)
+                .boxed()
+                .sorted()
+                .distinct()
+                .collect(Collectors.toList());
+        taskPage =
+            taskService.listAvailableTaskForSupervision3(
+                new Page<>(query.getCurrent(), query.getSize()),
+                userIds1,
+                query.getTaskTypeId(),
+                query.getTaskId(),
+                query.getTaskNumber(),
+                pkgIds,
+                supTaskIds);
+      }
+    }
+    // 服务商
+    else if (CollUtil.containsAny(roles, List.of(37))) {
 
-        return CollUtil.isNotEmpty(roleIds) ? roleIds : List.of(49, 52, 53, 56);
+      isService = true;
 
+      // 获取当前积分包已经监督过的任务ID
+      List<WmTaskSupervision> collect =
+          list.stream()
+              .filter(ts -> UpmsState.TaskSupervisionState.PASSED.equals(ts.getSupervisionState()))
+              .collect(Collectors.toList());
 
+      if (CollUtil.isEmpty(collect)) {
+        return page;
+      }
+
+      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(CollUtil.isNotEmpty(userIds1), WmTask::getTaskUserId, userIds1)
+                  .eq(
+                      StrUtil.isNotBlank(query.getTaskTypeId()),
+                      WmTask::getTaskTypeId,
+                      query.getTaskTypeId())
+                  .like(StrUtil.isNotBlank(query.getTaskId()), WmTask::getId, query.getTaskId())
+                  .like(
+                      StrUtil.isNotBlank(query.getTaskNumber()),
+                      WmTask::getTaskNumber,
+                      query.getTaskNumber())
+                  .in(WmTask::getId, supTaskIds));
     }
+    // 负责人|分管领导|事业部总经理
+    else {
+      isService = false;
+      List<Integer> visibleRoleIds = getVisibleRoleIds(roles);
+
+      list =
+          list.stream()
+              .filter(ts -> visibleRoleIds.contains(ts.getRoleId()))
+              .collect(Collectors.toList());
+
+      List<Integer> supTaskIds;
+      if (review) {
+        // 获取当前积分包已经监督过的任务ID
+        Set<Long> tsId =
+            taskSupervisionAdviceService
+                .list(
+                    Wrappers.<WmTaskSupervisionAdvice>lambdaQuery()
+                        .eq(WmTaskSupervisionAdvice::getDelFlag, false)
+                        .eq(WmTaskSupervisionAdvice::getCreateBy, user.getUsername()))
+                .stream()
+                .mapToLong(WmTaskSupervisionAdvice::getTaskSupervisionId)
+                .boxed()
+                .collect(Collectors.toSet());
 
-    public Page<Map<String, Object>> pageTaskSupervision(WmSupervisionDto.OnTaskSupervisionPage query) {
-
-        // 操作人角色
-        List<Integer> roles = SecurityUtils.getRoles();
-        HnqzUser user = SecurityUtils.getUser();
-        Page<Map<String, Object>> page = new Page<>(query.getCurrent(), query.getSize());
-
-        // 判断是否要查询指定的代表
-        String memberName = query.getMemberName();
-        List<Integer> userIds1;
-        if (StrUtil.isNotBlank(memberName)) {
-            userIds1 = userService.list(Wrappers.<SysUser>lambdaQuery()
-                            .eq(SysUser::getLockFlag, CommonConstants.STATUS_NORMAL)
-                            .eq(SysUser::getDelFlag, CommonConstants.STATUS_NORMAL)
-                            .like(SysUser::getRealname, memberName.trim()))
-                    .stream()
-                    .mapToInt(SysUser::getUserId)
-                    .boxed()
-                    .sorted()
-                    .distinct()
-                    .collect(Collectors.toList());
-
-            if (CollUtil.isEmpty(userIds1)) {
-                return page;
-            }
-
-        } else {
-            userIds1 = Collections.emptyList();
+        if (CollUtil.isEmpty(tsId)) {
+          return page;
         }
-
-
-        // 获取药品条件
-        List<Integer> drugtableIds = wmDaDrugEntDrugtableMapper.selectList(Wrappers.<WmDaDrugEntDrugtable>lambdaQuery()
-                        .like(StrUtil.isNotBlank(query.getMahName()), WmDaDrugEntDrugtable::getDrugEntName, query.getMahName())
-                        .like(StrUtil.isNotBlank(query.getSkuName()), WmDaDrugEntDrugtable::getDrugnameTy, query.getSkuName()))
-                .stream()
-                .mapToInt(drug -> Integer.parseInt(drug.getId()))
+        // Set<Integer> supTaskIds = list.stream().filter(ts ->
+        // tsId.contains(ts.getSupervisionId())).mapToInt(WmTaskSupervision::getTaskId).boxed().collect(Collectors.toSet());
+        supTaskIds =
+            list.stream()
+                .filter(
+                    ts ->
+                        tsId.contains(ts.getSupervisionId())
+                            && visibleRoleIds.contains(ts.getRoleId()))
+                .mapToInt(WmTaskSupervision::getTaskId)
                 .boxed()
                 .distinct()
                 .sorted()
                 .collect(Collectors.toList());
+      } 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);
+
+        // 负责人
+        if (CollUtil.containsAny(roles, List.of(57, 58, 59, 60))) {
+
+          // Set<Integer> temp = CollUtil.unionDistinct(ckt1, rejected);
+          // supTaskIds = CollUtil.subtractToList(init, temp);
+          supTaskIds = CollUtil.subtractToList(init, ckt1);
 
-
-        // 根据角色判断药品
-        List<Integer> drugIds;
-        if (!roles.contains(39) && !roles.contains(37)) {
-
-            drugIds = userDrugService.listDrugIdByUserId(user.getId());
-
-            // 如果有条件参数查询交集
-            drugIds = new ArrayList<>(CollUtil.intersectionDistinct(drugIds, drugtableIds));
-
-            if (CollUtil.isEmpty(drugIds)) {
-                log.info("当前操作人没有分配产品");
-                return page;
-            }
-
-        } else {
-            drugIds = CollUtil.isEmpty(drugtableIds) ? Collections.emptyList() : drugtableIds;
-        }
-
-        // 获取积分包
-        LambdaQueryWrapper<WmScorePackage> queryWrapper = Wrappers.<WmScorePackage>lambdaQuery()
-                .like(StrUtil.isNotBlank(query.getPkgName()), WmScorePackage::getScorePackageName, query.getPkgName())
-                .in(CollUtil.isNotEmpty(drugIds), WmScorePackage::getDrugtable, drugIds)
-                .eq(WmScorePackage::getSendPackageDeptId, query.getDeptId());
-
-        LocalDate[] pkgPeriod = query.getPkgPeriod();
-        if (ArrayUtil.isNotEmpty(pkgPeriod)) {
-            queryWrapper.ge(WmScorePackage::getStartTime, pkgPeriod[0]);
-            queryWrapper.le(WmScorePackage::getEndTime, pkgPeriod[1]);
-        }
-
-        List<WmScorePackage> packages = packageService.list(queryWrapper);
-
-        if (CollUtil.isEmpty(packages)) {
-            return page;
-        }
-
-        // 获取积分包ID
-        List<Integer> pkgIds = packages.stream().map(WmScorePackage::getId).mapToInt(Integer::valueOf).boxed().distinct().sorted().collect(Collectors.toList());
-
-        // 积分包内已经监督的任务
-        List<WmTaskSupervision> list1 = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery()
-                // .in(WmTaskSupervision::getRoleId, visibleRoleIds)
-                // .eq(WmTaskSupervision::getModifiable, false)
-                .in(WmTaskSupervision::getPackageId, pkgIds)
-                .orderByDesc(WmTaskSupervision::getCreateTime));
-
-        List<WmTaskSupervision> list = list1.stream().filter(ts -> !ts.getModifiable()).collect(Collectors.toList());
-
-
-        // 监督员
-        Boolean review = query.getReview();
-
-        Page<WmTask> taskPage;
-        boolean isService;
-        if (CollUtil.containsAny(roles, List.of(49, 52, 53, 56))) {
-            isService = false;
-
-            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(CollUtil.isNotEmpty(userIds1), WmTask::getTaskUserId, userIds1)
-                                .eq(StrUtil.isNotBlank(query.getTaskTypeId()), WmTask::getTaskTypeId, query.getTaskTypeId())
-                                .like(StrUtil.isNotBlank(query.getTaskId()), WmTask::getId, query.getTaskId())
-                                .like(StrUtil.isNotBlank(query.getTaskNumber()), WmTask::getTaskNumber, query.getTaskNumber())
-                                .in(WmTask::getId, taskIds));
-
-            } else {
-                List<Integer> supTaskIds = list.stream().mapToInt(WmTaskSupervision::getTaskId).boxed().sorted().distinct().collect(Collectors.toList());
-                taskPage = taskService.listAvailableTaskForSupervision3(
-                        new Page<>(query.getCurrent(), query.getSize()),
-                        userIds1,
-                        query.getTaskTypeId(),
-                        query.getTaskId(),
-                        query.getTaskNumber(),
-                        pkgIds, supTaskIds);
-            }
-        }
-        // 服务商
-        else if (CollUtil.containsAny(roles, List.of(37))) {
-
-            isService = true;
-
-            // 获取当前积分包已经监督过的任务ID
-            List<WmTaskSupervision> collect = list.stream().filter(ts -> UpmsState.TaskSupervisionState.PASSED.equals(ts.getSupervisionState())).collect(Collectors.toList());
-
-            if (CollUtil.isEmpty(collect)) {
-                return page;
-            }
-
-            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(CollUtil.isNotEmpty(userIds1), WmTask::getTaskUserId, userIds1)
-                            .eq(StrUtil.isNotBlank(query.getTaskTypeId()), WmTask::getTaskTypeId, query.getTaskTypeId())
-                            .like(StrUtil.isNotBlank(query.getTaskId()), WmTask::getId, query.getTaskId())
-                            .like(StrUtil.isNotBlank(query.getTaskNumber()), WmTask::getTaskNumber, query.getTaskNumber())
-                            .in(WmTask::getId, supTaskIds));
         }
-        // 负责人|分管领导|事业部总经理
-        else {
-            isService = false;
-            List<Integer> visibleRoleIds = getVisibleRoleIds(roles);
-
-            list = list.stream().filter(ts -> visibleRoleIds.contains(ts.getRoleId())).collect(Collectors.toList());
-
-            List<Integer> supTaskIds;
-            if (review) {
-                // 获取当前积分包已经监督过的任务ID
-                Set<Long> tsId = taskSupervisionAdviceService.list(Wrappers.<WmTaskSupervisionAdvice>lambdaQuery()
-                                .eq(WmTaskSupervisionAdvice::getDelFlag, false)
-                                .eq(WmTaskSupervisionAdvice::getCreateBy, user.getUsername()))
-                        .stream().mapToLong(WmTaskSupervisionAdvice::getTaskSupervisionId).boxed().collect(Collectors.toSet());
-
-                if (CollUtil.isEmpty(tsId)) {
-                    return page;
-                }
-                // Set<Integer> supTaskIds = list.stream().filter(ts -> tsId.contains(ts.getSupervisionId())).mapToInt(WmTaskSupervision::getTaskId).boxed().collect(Collectors.toSet());
-                supTaskIds = list.stream().filter(ts -> tsId.contains(ts.getSupervisionId()) && visibleRoleIds.contains(ts.getRoleId())).mapToInt(WmTaskSupervision::getTaskId).boxed().distinct().sorted().collect(Collectors.toList());
-            } 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);
-
-                // 负责人
-                if (CollUtil.containsAny(roles, List.of(57, 58, 59, 60))) {
-
-                    // Set<Integer> temp = CollUtil.unionDistinct(ckt1, rejected);
-                    // supTaskIds = CollUtil.subtractToList(init, temp);
-                    supTaskIds = CollUtil.subtractToList(init, ckt1);
-
-                }
-                // 分管领导
-                else if (CollUtil.containsAny(roles, List.of(51, 54, 55, 61))) {
-                    // Set<Integer> temp = CollUtil.unionDistinct(ckt2, rejected);
-                    // supTaskIds = CollUtil.subtractToList(ckt1, temp);
-                    supTaskIds = CollUtil.subtractToList(ckt1, ckt2);
-
-                }
-                // 事业部总经理
-                else if (CollUtil.containsAny(roles, List.of(39))) {
-                    // Set<Integer> temp = CollUtil.unionDistinct(passed, rejected);
-                    // supTaskIds = CollUtil.subtractToList(ckt2, temp);
-                    supTaskIds = CollUtil.subtractToList(ckt2, passed);
-                } 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));
-            }
-
-            if (CollUtil.isEmpty(supTaskIds)) {
-                return page;
-            }
-
-            taskPage = taskService.page(new Page<>(query.getCurrent(), query.getSize()), Wrappers.<WmTask>lambdaQuery()
-                    .in(CollUtil.isNotEmpty(userIds1), WmTask::getTaskUserId, userIds1)
-                    .eq(StrUtil.isNotBlank(query.getTaskTypeId()), WmTask::getTaskTypeId, query.getTaskTypeId())
-                    .like(StrUtil.isNotBlank(query.getTaskId()), WmTask::getId, query.getTaskId())
-                    .like(StrUtil.isNotBlank(query.getTaskNumber()), WmTask::getTaskNumber, query.getTaskNumber())
-                    .in(WmTask::getId, supTaskIds));
+        // 分管领导
+        else if (CollUtil.containsAny(roles, List.of(51, 54, 55, 61))) {
+          // Set<Integer> temp = CollUtil.unionDistinct(ckt2, rejected);
+          // supTaskIds = CollUtil.subtractToList(ckt1, temp);
+          supTaskIds = CollUtil.subtractToList(ckt1, ckt2);
 
         }
-
-
-        List<WmTask> records = taskPage.getRecords();
-
-        if (CollUtil.isEmpty(records)) {
-            return page;
+        // 事业部总经理
+        else if (CollUtil.containsAny(roles, List.of(39))) {
+          // Set<Integer> temp = CollUtil.unionDistinct(passed, rejected);
+          // supTaskIds = CollUtil.subtractToList(ckt2, temp);
+          supTaskIds = CollUtil.subtractToList(ckt2, passed);
+        } else {
+          throw new BizException("无监督权限");
         }
 
-        Map<String, List<WmTask>> collect = records.stream().collect(Collectors.groupingBy(WmTask::getScorePackageId));
-
-        List<Map<String, Object>> maps = new ArrayList<>(records.size());
-        for (Map.Entry<String, List<WmTask>> entry : collect.entrySet()) {
-
-            List<Map<String, Object>> m = taskService.listTaskInfo(entry.getValue(), entry.getKey());
-
-            maps.addAll(m);
+        if (CollUtil.isEmpty(supTaskIds)) {
+          return page;
         }
 
-        // 封装监察信息
-        Map<Integer, WmTaskSupervision> taskId2TaskSupervisionMap = list1.stream().collect(Collectors.toMap(WmTaskSupervision::getTaskId, Function.identity()));
-
-
-        List<SysUser> users = userService.list(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getDelFlag, CommonConstants.STATUS_NORMAL).eq(SysUser::getLockFlag, CommonConstants.STATUS_NORMAL));
-        // List<SysUser> users = userService.list();
-        Map<String, SysUser> userMap = users.stream().collect(Collectors.toMap(SysUser::getUsername, Function.identity(), (v1, v2) -> v2));
-        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, SysRole> roleMap = roleService.listByIds(roleId).stream().collect(Collectors.toMap(SysRole::getRoleId, Function.identity()));
-
-
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN);
-        maps.forEach(m -> {
-            Integer tId = Integer.valueOf(m.get("id").toString());
-            WmTaskSupervision wmTaskSupervision = taskId2TaskSupervisionMap.get(tId);
+        // taskPage = taskService.page(new Page<>(query.getCurrent(), query.getSize()),
+        // Wrappers.<WmTask>lambdaQuery().in(WmTask::getId, supTaskIds));
+      }
 
-            if (wmTaskSupervision == null) {
-                return;
-            }
-
-            m.put("modifiable", wmTaskSupervision.getModifiable());
-
-            String supervisionMsg = String.format("【%s】,%s", wmTaskSupervision.getSupervisionResult() ? "通过" : "不通过", wmTaskSupervision.getRemarks());
-
-            m.put("supervisionMessage", supervisionMsg);
-
-            List<String> advMsg;
-            if (isService) {
-                advMsg = Collections.emptyList();
-            } else {
-                List<WmTaskSupervisionAdvice> advices = taskSupervisionAdviceService.list(Wrappers.<WmTaskSupervisionAdvice>lambdaQuery().eq(WmTaskSupervisionAdvice::getTaskSupervisionId, wmTaskSupervision.getSupervisionId()));
-                advMsg = advices.stream().map(adv -> {
-                    SysUser u = userMap.get(adv.getCreateBy());
-                    SysUserRole sysUserRole = userRoleMap.get(u.getUserId()).get(0);
-                    SysRole role = roleMap.get(sysUserRole.getRoleId());
-                    String roleName = (role == null ? " " : (StrUtil.isNotBlank(role.getRoleDesc()) ? role.getRoleDesc() : role.getRoleName()));
-                    String realName = u.getRealname();
-                    String date = formatter.format(adv.getCreateTime());
-                    String resultMsg = adv.getAdviceResult() ? " 通过 " : " 不通过 ";
-                    String remarks = StrUtil.isBlank(adv.getRemarks()) ? " " : adv.getRemarks();
-
-                    return String.format("%s【%s】,审核【%s】,监督意见为【%s】(%s)。", roleName, realName, resultMsg, remarks, date);
-
-
-                }).collect(Collectors.toList());
-            }
+      if (CollUtil.isEmpty(supTaskIds)) {
+        return page;
+      }
+
+      taskPage =
+          taskService.page(
+              new Page<>(query.getCurrent(), query.getSize()),
+              Wrappers.<WmTask>lambdaQuery()
+                  .in(CollUtil.isNotEmpty(userIds1), WmTask::getTaskUserId, userIds1)
+                  .eq(
+                      StrUtil.isNotBlank(query.getTaskTypeId()),
+                      WmTask::getTaskTypeId,
+                      query.getTaskTypeId())
+                  .like(StrUtil.isNotBlank(query.getTaskId()), WmTask::getId, query.getTaskId())
+                  .like(
+                      StrUtil.isNotBlank(query.getTaskNumber()),
+                      WmTask::getTaskNumber,
+                      query.getTaskNumber())
+                  .in(WmTask::getId, supTaskIds));
+    }
 
+    List<WmTask> records = taskPage.getRecords();
 
-            m.put("adviceMessages", advMsg);
-        });
+    if (CollUtil.isEmpty(records)) {
+      return page;
+    }
 
+    Map<String, List<WmTask>> collect =
+        records.stream().collect(Collectors.groupingBy(WmTask::getScorePackageId));
 
-        page.setRecords(maps);
-        page.setTotal(taskPage.getTotal());
+    List<Map<String, Object>> maps = new ArrayList<>(records.size());
+    for (Map.Entry<String, List<WmTask>> entry : collect.entrySet()) {
 
-        return page;
+      List<Map<String, Object>> m = taskService.listTaskInfo(entry.getValue(), entry.getKey());
 
+      maps.addAll(m);
     }
 
-    // 执行任务监察
-    public Boolean doTaskSupervision(WmSupervisionDto.OnTaskSupervision resource, HnqzUser operator) {
-
-        // 监察任务是否有监察记录
-        WmTaskSupervision supervision = taskSupervisionService.getSupervisionByTaskId(resource.getTaskId());
-
-        // 存在监察记录
-        if (supervision != null) {
+    // 封装监察信息
+    Map<Integer, WmTaskSupervision> taskId2TaskSupervisionMap =
+        list1.stream().collect(Collectors.toMap(WmTaskSupervision::getTaskId, Function.identity()));
+
+    List<SysUser> users =
+        userService.list(
+            Wrappers.<SysUser>lambdaQuery()
+                .eq(SysUser::getDelFlag, CommonConstants.STATUS_NORMAL)
+                .eq(SysUser::getLockFlag, CommonConstants.STATUS_NORMAL));
+    // List<SysUser> users = userService.list();
+    Map<String, SysUser> userMap =
+        users.stream()
+            .collect(Collectors.toMap(SysUser::getUsername, Function.identity(), (v1, v2) -> v2));
+    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, SysRole> roleMap =
+        roleService.listByIds(roleId).stream()
+            .collect(Collectors.toMap(SysRole::getRoleId, Function.identity()));
+
+    DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN);
+    maps.forEach(
+        m -> {
+          Integer tId = Integer.valueOf(m.get("id").toString());
+          WmTaskSupervision wmTaskSupervision = taskId2TaskSupervisionMap.get(tId);
+
+          if (wmTaskSupervision == null) {
+            return;
+          }
+
+          m.put("modifiable", wmTaskSupervision.getModifiable());
+
+          String supervisionMsg =
+              String.format(
+                  "【%s】,%s",
+                  wmTaskSupervision.getSupervisionResult() ? "通过" : "不通过",
+                  wmTaskSupervision.getRemarks());
+
+          m.put("supervisionMessage", supervisionMsg);
+
+          List<String> advMsg;
+          if (isService) {
+            advMsg = Collections.emptyList();
+          } else {
+            List<WmTaskSupervisionAdvice> advices =
+                taskSupervisionAdviceService.list(
+                    Wrappers.<WmTaskSupervisionAdvice>lambdaQuery()
+                        .eq(
+                            WmTaskSupervisionAdvice::getTaskSupervisionId,
+                            wmTaskSupervision.getSupervisionId()));
+            advMsg =
+                advices.stream()
+                    .map(
+                        adv -> {
+                          SysUser u = userMap.get(adv.getCreateBy());
+                          SysUserRole sysUserRole = userRoleMap.get(u.getUserId()).get(0);
+                          SysRole role = roleMap.get(sysUserRole.getRoleId());
+                          String roleName =
+                              (role == null
+                                  ? " "
+                                  : (StrUtil.isNotBlank(role.getRoleDesc())
+                                      ? role.getRoleDesc()
+                                      : role.getRoleName()));
+                          String realName = u.getRealname();
+                          String date = formatter.format(adv.getCreateTime());
+                          String resultMsg = adv.getAdviceResult() ? " 通过 " : " 不通过 ";
+                          String remarks =
+                              StrUtil.isBlank(adv.getRemarks()) ? " " : adv.getRemarks();
+
+                          return String.format(
+                              "%s【%s】,审核【%s】,监督意见为【%s】(%s)。",
+                              roleName, realName, resultMsg, remarks, date);
+                        })
+                    .collect(Collectors.toList());
+          }
 
-            boolean modifiable = false;
-            String remarks = resource.getRemarks();
+          m.put("adviceMessages", advMsg);
+        });
 
-            // 如果监督记录创建人不是当前人,就记录监督意见
-            if (!StrUtil.equals(operator.getUsername(), supervision.getCreateBy())) {
-                modifiable = !resource.getSupervision();
-                remarks = supervision.getRemarks();
+    page.setRecords(maps);
+    page.setTotal(taskPage.getTotal());
 
-                taskSupervisionAdviceService.createAdvice(supervision.getSupervisionId(), resource, supervision.getRemarks(), operator);
+    return page;
+  }
 
+  // 执行任务监察
+  public Boolean doTaskSupervision(WmSupervisionDto.OnTaskSupervision resource, HnqzUser operator) {
 
-            } else {
-                // 监察员重新提交,删除历史的审核意见
-                taskSupervisionAdviceService.delAdvice(supervision.getSupervisionId(), operator);
-            }
+    // 监察任务是否有监察记录
+    WmTaskSupervision supervision =
+        taskSupervisionService.getSupervisionByTaskId(resource.getTaskId());
 
+    // 存在监察记录
+    if (supervision != null) {
 
-            taskSupervisionService.updateSupervision(supervision.getSupervisionId(), remarks, modifiable, operator);
+      boolean modifiable = false;
+      String remarks = resource.getRemarks();
 
+      // 如果监督记录创建人不是当前人,就记录监督意见
+      if (!StrUtil.equals(operator.getUsername(), supervision.getCreateBy())) {
+        modifiable = !resource.getSupervision();
+        remarks = supervision.getRemarks();
 
-        }
-        // 不存在监察记录
-        else {
+        taskSupervisionAdviceService.createAdvice(
+            supervision.getSupervisionId(), resource, supervision.getRemarks(), operator);
 
-            taskSupervisionService.createTaskSupervision(resource, operator);
+      } else {
+        // 监察员重新提交,删除历史的审核意见
+        taskSupervisionAdviceService.delAdvice(supervision.getSupervisionId(), operator);
+      }
 
-            // 更新监督结果
-            packageStatusService.updateSupervisionFlag(resource.getPkgId());
+      taskSupervisionService.updateSupervision(
+          supervision.getSupervisionId(), remarks, modifiable, operator);
 
-        }
-        return true;
     }
+    // 不存在监察记录
+    else {
 
-    // 执行任务监察(批量)
-    @Transactional(rollbackFor = Exception.class)
-    public Boolean doTaskSupervisionBatch(WmSupervisionDto.OnTaskSupervisionBatch resource, HnqzUser user) {
+      taskSupervisionService.createTaskSupervision(resource, operator);
 
-        resource.getSupervisionIds().forEach(id -> {
-            taskSupervisionService.updateSupervision(id, resource.getRemarks(), !resource.getSupervision(), user);
-        });
-        return true;
+      // 更新监督结果
+      packageStatusService.updateSupervisionFlag(resource.getPkgId());
     }
-
-
-    /**
-     * 生成报告pdf
-     *
-     * @param entId  企业ID
-     * @param user   操作人
-     * @param period 周期
-     * @return 本地路径
-     */
-    public Map<String, String> exportSupervisionReportPDF(Integer entId, LocalDate[] period, HnqzUser user) throws Exception {
-
-        Map<String, String> envPaths = OsEnvUtils.getEachEnvPaths();
-        // 生成本地路径
-        String targetPath = envPaths.get(OsEnvUtils.TargetFile.TEMP.getName()) + DateTimeFormatter.ofPattern(DatePattern.PURE_DATETIME_PATTERN).format(LocalDateTime.now()) + "_supervision_" + IdUtil.fastSimpleUUID() + ".pdf";
-
-        // 封装报告数据
-        Object[][] datas = buildSupervisionReportDatas(entId, period, user);
-
-        PdfUtils.generateSupervisionReport(targetPath, PageSize.A4, true, envPaths.get(OsEnvUtils.TargetFile.FONT.getName()) + "SimSun.ttc", datas);
-
-        File pdf = new File(targetPath);
-        MockMultipartFile multipartFile = new MockMultipartFile("file", pdf.getName(), null, Files.newInputStream(pdf.toPath()));
-        Map<String, String> uploaded = fileService.upload(multipartFile, user.getUsername());
-
-        // 上传到oss
-        return uploaded;
+    return true;
+  }
+
+  // 执行任务监察(批量)
+  @Transactional(rollbackFor = Exception.class)
+  public Boolean doTaskSupervisionBatch(
+      WmSupervisionDto.OnTaskSupervisionBatch resource, HnqzUser user) {
+
+    resource
+        .getSupervisionIds()
+        .forEach(
+            id -> {
+              taskSupervisionService.updateSupervision(
+                  id, resource.getRemarks(), !resource.getSupervision(), user);
+            });
+    return true;
+  }
+
+  /**
+   * 生成报告pdf
+   *
+   * @param entId 企业ID
+   * @param user 操作人
+   * @param period 周期
+   * @return 本地路径
+   */
+  public Map<String, String> exportSupervisionReportPDF(
+      Integer entId, LocalDate[] period, HnqzUser user) throws Exception {
+
+    Map<String, String> envPaths = OsEnvUtils.getEachEnvPaths();
+    // 生成本地路径
+    String targetPath =
+        envPaths.get(OsEnvUtils.TargetFile.TEMP.getName())
+            + DateTimeFormatter.ofPattern(DatePattern.PURE_DATETIME_PATTERN)
+                .format(LocalDateTime.now())
+            + "_supervision_"
+            + IdUtil.fastSimpleUUID()
+            + ".pdf";
+
+    // 封装报告数据
+    Object[][] datas = buildSupervisionReportDatas(entId, period, user);
+
+    PdfUtils.generateSupervisionReport(
+        targetPath,
+        PageSize.A4,
+        true,
+        envPaths.get(OsEnvUtils.TargetFile.FONT.getName()) + "SimSun.ttc",
+        datas);
+
+    File pdf = new File(targetPath);
+    MockMultipartFile multipartFile =
+        new MockMultipartFile("file", pdf.getName(), null, Files.newInputStream(pdf.toPath()));
+    Map<String, String> uploaded = fileService.upload(multipartFile, user.getUsername());
+
+    // 上传到oss
+    return uploaded;
+  }
+
+  private Object[][] buildSupervisionReportDatas(Integer entId, LocalDate[] period, HnqzUser user) {
+
+    // 获取企业
+    SysDept service = deptService.getById(entId);
+
+    // 获取服务商下的所有c端包
+
+    LambdaQueryWrapper<WmScorePackage> queryWrapper =
+        Wrappers.<WmScorePackage>lambdaQuery()
+            .eq(WmScorePackage::getSendPackageDeptId, service.getDeptId().toString());
+
+    if (ArrayUtil.isNotEmpty(period)) {
+      queryWrapper.ge(WmScorePackage::getStartTime, period[0]);
+      queryWrapper.le(WmScorePackage::getEndTime, period[1]);
     }
 
-    private Object[][] buildSupervisionReportDatas(Integer entId, LocalDate[] period, HnqzUser user) {
-
-
-        // 获取企业
-        SysDept service = deptService.getById(entId);
+    List<WmScorePackage> pkgs = packageService.list(queryWrapper);
 
-        // 获取服务商下的所有c端包
-
-        LambdaQueryWrapper<WmScorePackage> queryWrapper = Wrappers.<WmScorePackage>lambdaQuery()
-                .eq(WmScorePackage::getSendPackageDeptId, service.getDeptId().toString());
+    if (CollUtil.isEmpty(pkgs)) {
+      throw new BizException("当前服务商不存在可用的执行包,无法导出");
+    }
+    Map<String, WmScorePackage> pkgMap =
+        pkgs.stream().collect(Collectors.toMap(WmScorePackage::getId, Function.identity()));
+
+    // 获取c端包下的所有的产品
+    Map<String, WmDaDrugEntDrugtable> drugMap =
+        wmDaDrugEntDrugtableMapper
+            .selectList(
+                Wrappers.<WmDaDrugEntDrugtable>lambdaQuery()
+                    .in(
+                        WmDaDrugEntDrugtable::getId,
+                        pkgs.stream()
+                            .flatMap(p -> Arrays.stream(p.getDrugtable()))
+                            .distinct()
+                            .sorted()
+                            .collect(Collectors.toList())))
+            .stream()
+            .collect(Collectors.toMap(WmDaDrugEntDrugtable::getId, Function.identity()));
+
+    // 获取服务类型
+    Map<String, String> taskTypeMap =
+        taskTypeService
+            .list(Wrappers.<WmTaskType>lambdaQuery().le(WmTaskType::getId, "100"))
+            .stream()
+            .collect(Collectors.toMap(WmTaskType::getId, WmTaskType::getTaskTypeName));
+
+    // 获取包下的所有任务
+    List<WmTask> tasks =
+        taskService.list(
+            Wrappers.<WmTask>lambdaQuery().in(WmTask::getScorePackageId, pkgMap.keySet()));
+    Map<String, WmTask> tid2EntityMap =
+        tasks.stream().collect(Collectors.toMap(WmTask::getId, Function.identity()));
+
+    List<Integer> taskIds =
+        tasks.stream()
+            .mapToInt(t -> Integer.parseInt(t.getId()))
+            .boxed()
+            .distinct()
+            .sorted()
+            .collect(Collectors.toList());
+
+    // 代表名称
+    List<Integer> uid =
+        tasks.stream()
+            .mapToInt(t -> Integer.parseInt(t.getTaskUserId()))
+            .boxed()
+            .distinct()
+            .sorted()
+            .collect(Collectors.toList());
+    Map<Integer, String> userMap =
+        userService.listByIds(uid).stream()
+            .collect(Collectors.toMap(SysUser::getUserId, SysUser::getRealname));
+
+    List<WmTaskSupervision> taskSupervisions =
+        taskSupervisionService.list(
+            Wrappers.<WmTaskSupervision>lambdaQuery()
+                .in(WmTaskSupervision::getTaskId, taskIds)
+                .eq(WmTaskSupervision::getCreateBy, user.getUsername()));
+
+    // 获取监督意见
+    List<Long> supIds =
+        taskSupervisions.stream()
+            .mapToLong(WmTaskSupervision::getSupervisionId)
+            .boxed()
+            .distinct()
+            .sorted()
+            .collect(Collectors.toList());
+
+    if (CollUtil.isEmpty(supIds)) {
+      throw new BizException("当前操作人不存在监督记录,不能导出");
+    }
 
-        if (ArrayUtil.isNotEmpty(period)) {
-            queryWrapper.ge(WmScorePackage::getStartTime, period[0]);
-            queryWrapper.le(WmScorePackage::getEndTime, period[1]);
+    Map<Long, List<WmTaskSupervisionAdvice>> advices =
+        taskSupervisionAdviceService
+            .list(
+                Wrappers.<WmTaskSupervisionAdvice>lambdaQuery()
+                    .in(WmTaskSupervisionAdvice::getTaskSupervisionId, supIds))
+            .stream()
+            .collect(Collectors.groupingBy(WmTaskSupervisionAdvice::getTaskSupervisionId));
+
+    // {{"2024年第四季度" + user.getRealName() + "监督结果"}, {"服务ID", "服务类型", "代表名称", "产品名称", "生产企业",
+    // "执行包名称", "周期", "监督结果", "监督意见", "部门负责人意见", "分管领导意见", "总经理意见"}};
+    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
+    Object[][] datas = new Object[taskSupervisions.size() + 2][];
+    for (int i = 0; i < datas.length; ++i) {
+      datas[i] = new Object[i == 0 ? 1 : 14];
+      if (i == 0) {
+        datas[0][0] =
+            "2024 年第 四 季度 "
+                + service.getName()
+                + " 服务监督结果(监督人:"
+                + user.getRealName()
+                + ",服务总数:"
+                + taskIds.size()
+                + ",本人监督数:"
+                + supIds.size()
+                + " )";
+        continue;
+      }
+
+      if (i == 1) {
+        datas[1][0] = "服务ID";
+        datas[1][1] = "服务类型";
+        datas[1][2] = "服务项目积分(单价)";
+        datas[1][3] = "服务供应商公司名称";
+        datas[1][4] = "代表名称";
+        datas[1][5] = "产品名称";
+        datas[1][6] = "生产企业";
+        datas[1][7] = "执行包名称";
+        datas[1][8] = "执行包周期";
+        datas[1][9] = "监督结果";
+        datas[1][10] = "监督意见";
+        datas[1][11] = "部门负责人意见";
+        datas[1][12] = "分管领导意见";
+        datas[1][13] = "监督时间";
+        continue;
+      }
+
+      WmTaskSupervision wmTaskSupervision = taskSupervisions.get(i - 2);
+      // 列的长度每次都变化。每次都要重新申请空间(长度)
+      for (int j = 0; j < datas[i].length; j++) {
+
+        // 服务ID
+        if (j == 0) {
+          datas[i][j] = wmTaskSupervision.getTaskId().toString();
         }
 
-        List<WmScorePackage> pkgs = packageService.list(queryWrapper);
+        // 服务类型
+        if (j == 1) {
+          WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
 
-        if (CollUtil.isEmpty(pkgs)) {
-            throw new BizException("当前服务商不存在可用的执行包,无法导出");
+          datas[i][j] = wmTask != null ? taskTypeMap.get(wmTask.getTaskTypeId()) : "";
         }
-        Map<String, WmScorePackage> pkgMap = pkgs.stream().collect(Collectors.toMap(WmScorePackage::getId, Function.identity()));
 
-        // 获取c端包下的所有的产品
-        Map<String, WmDaDrugEntDrugtable> drugMap = wmDaDrugEntDrugtableMapper.selectList(Wrappers.<WmDaDrugEntDrugtable>lambdaQuery().in(WmDaDrugEntDrugtable::getId, pkgs.stream().flatMap(p -> Arrays.stream(p.getDrugtable())).distinct().sorted().collect(Collectors.toList()))).stream().collect(Collectors.toMap(WmDaDrugEntDrugtable::getId, Function.identity()));
-
-        // 获取服务类型
-        Map<String, String> taskTypeMap = taskTypeService.list(Wrappers.<WmTaskType>lambdaQuery().le(WmTaskType::getId, "100")).stream().collect(Collectors.toMap(WmTaskType::getId, WmTaskType::getTaskTypeName));
-
-        // 获取包下的所有任务
-        List<WmTask> tasks = taskService.list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getScorePackageId, pkgMap.keySet()));
-        Map<String, WmTask> tid2EntityMap = tasks.stream().collect(Collectors.toMap(WmTask::getId, Function.identity()));
+        // 服务单价
+        if (j == 2) {
+          WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
+          datas[i][j] = wmTask != null ? wmTask.getScore().toString() : "";
+        }
 
-        List<Integer> taskIds = tasks.stream().mapToInt(t -> Integer.parseInt(t.getId())).boxed().distinct().sorted().collect(Collectors.toList());
+        // 服务供应商名称
+        if (j == 3) {
+          datas[i][j] = service.getName();
+        }
 
         // 代表名称
-        List<Integer> uid = tasks.stream().mapToInt(t -> Integer.parseInt(t.getTaskUserId())).boxed().distinct().sorted().collect(Collectors.toList());
-        Map<Integer, String> userMap = userService.listByIds(uid).stream().collect(Collectors.toMap(SysUser::getUserId, SysUser::getRealname));
-
-        List<WmTaskSupervision> taskSupervisions = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery().in(WmTaskSupervision::getTaskId, taskIds).eq(WmTaskSupervision::getCreateBy, user.getUsername()));
+        if (j == 4) {
+          WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
+          datas[i][j] = wmTask != null ? userMap.get(Integer.parseInt(wmTask.getTaskUserId())) : "";
+        }
 
-        // 获取监督意见
-        List<Long> supIds = taskSupervisions.stream().mapToLong(WmTaskSupervision::getSupervisionId).boxed().distinct().sorted().collect(Collectors.toList());
+        // 产品名称
+        if (j == 5) {
+          WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
+          WmScorePackage scorePackage = pkgMap.get(wmTask.getScorePackageId());
+          String drugId = scorePackage.getDrugtable()[0];
+          WmDaDrugEntDrugtable drugtable = drugMap.get(drugId);
 
-        if (CollUtil.isEmpty(supIds)) {
-            throw new BizException("当前操作人不存在监督记录,不能导出");
+          datas[i][j] = drugtable.getDrugname();
         }
 
+        // 生产企业
+        if (j == 6) {
+          WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
+          WmScorePackage scorePackage = pkgMap.get(wmTask.getScorePackageId());
+          String drugId = scorePackage.getDrugtable()[0];
+          WmDaDrugEntDrugtable drugtable = drugMap.get(drugId);
+          datas[i][j] = drugtable.getDrugEntName();
+        }
 
-        Map<Long, List<WmTaskSupervisionAdvice>> advices = taskSupervisionAdviceService.list(Wrappers.<WmTaskSupervisionAdvice>lambdaQuery().in(WmTaskSupervisionAdvice::getTaskSupervisionId, supIds)).stream().collect(Collectors.groupingBy(WmTaskSupervisionAdvice::getTaskSupervisionId));
-
-
-        // {{"2024年第四季度" + user.getRealName() + "监督结果"}, {"服务ID", "服务类型", "代表名称", "产品名称", "生产企业", "执行包名称", "周期", "监督结果", "监督意见", "部门负责人意见", "分管领导意见", "总经理意见"}};
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
-        Object[][] datas = new Object[taskSupervisions.size() + 2][];
-        for (int i = 0; i < datas.length; ++i) {
-            datas[i] = new Object[i == 0 ? 1 : 14];
-            if (i == 0) {
-                datas[0][0] = "2024 年第 四 季度 " + service.getName() + " 服务监督结果(监督人:" + user.getRealName() + ",服务总数:" + taskIds.size() + ",本人监督数:" + supIds.size() + " )";
-                continue;
-            }
-
-            if (i == 1) {
-                datas[1][0] = "服务ID";
-                datas[1][1] = "服务类型";
-                datas[1][2] = "服务项目积分(单价)";
-                datas[1][3] = "服务供应商公司名称";
-                datas[1][4] = "代表名称";
-                datas[1][5] = "产品名称";
-                datas[1][6] = "生产企业";
-                datas[1][7] = "执行包名称";
-                datas[1][8] = "执行包周期";
-                datas[1][9] = "监督结果";
-                datas[1][10] = "监督意见";
-                datas[1][11] = "部门负责人意见";
-                datas[1][12] = "分管领导意见";
-                datas[1][13] = "监督时间";
-                continue;
-            }
-
-
-            WmTaskSupervision wmTaskSupervision = taskSupervisions.get(i - 2);
-            // 列的长度每次都变化。每次都要重新申请空间(长度)
-            for (int j = 0; j < datas[i].length; j++) {
-
-
-                // 服务ID
-                if (j == 0) {
-                    datas[i][j] = wmTaskSupervision.getTaskId().toString();
-                }
-
-                // 服务类型
-                if (j == 1) {
-                    WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
-
-                    datas[i][j] = wmTask != null ? taskTypeMap.get(wmTask.getTaskTypeId()) : "";
-                }
-
-                // 服务单价
-                if (j == 2) {
-                    WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
-                    datas[i][j] = wmTask != null ? wmTask.getScore().toString() : "";
-                }
-
-                // 服务供应商名称
-                if (j == 3) {
-                    datas[i][j] = service.getName();
-                }
-
-                // 代表名称
-                if (j == 4) {
-                    WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
-                    datas[i][j] = wmTask != null ? userMap.get(Integer.parseInt(wmTask.getTaskUserId())) : "";
-                }
-
-                // 产品名称
-                if (j == 5) {
-                    WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
-                    WmScorePackage scorePackage = pkgMap.get(wmTask.getScorePackageId());
-                    String drugId = scorePackage.getDrugtable()[0];
-                    WmDaDrugEntDrugtable drugtable = drugMap.get(drugId);
-
-
-                    datas[i][j] = drugtable.getDrugname();
-                }
-
-                // 生产企业
-                if (j == 6) {
-                    WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
-                    WmScorePackage scorePackage = pkgMap.get(wmTask.getScorePackageId());
-                    String drugId = scorePackage.getDrugtable()[0];
-                    WmDaDrugEntDrugtable drugtable = drugMap.get(drugId);
-                    datas[i][j] = drugtable.getDrugEntName();
-                }
-
-                // 执行包名称
-                if (j == 7) {
-                    WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
-                    WmScorePackage scorePackage = pkgMap.get(wmTask.getScorePackageId());
-                    datas[i][j] = scorePackage.getScorePackageName();
-                }
-
-                // 周期
-                if (j == 8) {
-                    WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
-                    WmScorePackage scorePackage = pkgMap.get(wmTask.getScorePackageId());
-                    datas[i][j] = String.format("%s至%s", formatter.format(scorePackage.getStartTime()), formatter.format(scorePackage.getEndTime()));
-                }
-
-                // 监督结果
-                if (j == 9) {
-                    datas[i][j] = wmTaskSupervision.getSupervisionResult() ? "通过" : "不通过";
-                }
-
-                // 监督意见
-                if (j == 10) {
-                    datas[i][j] = wmTaskSupervision.getRemarks();
-                }
-
-
-                // 部门负责人意见
-                if (j == 11) {
-                    List<WmTaskSupervisionAdvice> supervisionAdvices = advices.get(wmTaskSupervision.getSupervisionId());
-                    if (CollUtil.isNotEmpty(supervisionAdvices)) {
-                        WmTaskSupervisionAdvice advice = supervisionAdvices.get(0);
-                        datas[i][j] = advice != null ? advice.getRemarks() : "";
-                    } else {
-                        datas[i][j] = "";
-                    }
-
+        // 执行包名称
+        if (j == 7) {
+          WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
+          WmScorePackage scorePackage = pkgMap.get(wmTask.getScorePackageId());
+          datas[i][j] = scorePackage.getScorePackageName();
+        }
 
-                }
+        // 周期
+        if (j == 8) {
+          WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
+          WmScorePackage scorePackage = pkgMap.get(wmTask.getScorePackageId());
+          datas[i][j] =
+              String.format(
+                  "%s至%s",
+                  formatter.format(scorePackage.getStartTime()),
+                  formatter.format(scorePackage.getEndTime()));
+        }
 
-                // 分管领导意见
-                if (j == 12) {
-                    List<WmTaskSupervisionAdvice> supervisionAdvices = advices.get(wmTaskSupervision.getSupervisionId());
-                    if (CollUtil.isNotEmpty(supervisionAdvices) && supervisionAdvices.size() > 1) {
-                        WmTaskSupervisionAdvice advice = supervisionAdvices.get(1);
-                        datas[i][j] = advice != null ? advice.getRemarks() : "";
-                    } else {
-                        datas[i][j] = "";
-                    }
-                }
+        // 监督结果
+        if (j == 9) {
+          datas[i][j] = wmTaskSupervision.getSupervisionResult() ? "通过" : "不通过";
+        }
 
-                // 监督时间
-                if (j == 13) {
-                    datas[i][j] = formatter.format(wmTaskSupervision.getCreateTime().toLocalDate());
+        // 监督意见
+        if (j == 10) {
+          datas[i][j] = wmTaskSupervision.getRemarks();
+        }
 
-                }
-            }
+        // 部门负责人意见
+        if (j == 11) {
+          List<WmTaskSupervisionAdvice> supervisionAdvices =
+              advices.get(wmTaskSupervision.getSupervisionId());
+          if (CollUtil.isNotEmpty(supervisionAdvices)) {
+            WmTaskSupervisionAdvice advice = supervisionAdvices.get(0);
+            datas[i][j] = advice != null ? advice.getRemarks() : "";
+          } else {
+            datas[i][j] = "";
+          }
         }
 
+        // 分管领导意见
+        if (j == 12) {
+          List<WmTaskSupervisionAdvice> supervisionAdvices =
+              advices.get(wmTaskSupervision.getSupervisionId());
+          if (CollUtil.isNotEmpty(supervisionAdvices) && supervisionAdvices.size() > 1) {
+            WmTaskSupervisionAdvice advice = supervisionAdvices.get(1);
+            datas[i][j] = advice != null ? advice.getRemarks() : "";
+          } else {
+            datas[i][j] = "";
+          }
+        }
 
-        // int idx = 2;
-        // for (WmTaskSupervision wmTaskSupervision : taskSupervisions) {
-        //     for (int j = 0; j < 12; j++) {
-        //
-        //         // 服务ID
-        //         if (j == 0) {
-        //             datas[idx][j] = wmTaskSupervision.getTaskId().toString();
-        //         }
-        //
-        //         // 服务类型
-        //         if (j == 1) {
-        //             WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
-        //
-        //             datas[idx][j] = wmTask != null ? taskTypeMap.get(wmTask.getTaskTypeId()) : "";
-        //         }
-        //
-        //         // 代表名称
-        //         if (j == 2) {
-        //             WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
-        //             datas[idx][j] = wmTask != null ? userMap.get(Integer.parseInt(wmTask.getTaskUserId())) : "";
-        //         }
-        //
-        //         // 产品名称
-        //         if (j == 3) {
-        //             WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
-        //             WmScorePackage scorePackage = pkgMap.get(wmTask.getScorePackageId());
-        //             String drugId = scorePackage.getDrugtable()[0];
-        //             WmDaDrugEntDrugtable drugtable = drugMap.get(drugId);
-        //
-        //
-        //             datas[idx][j] = drugtable.getDrugname();
-        //         }
-        //
-        //         // 生产企业
-        //         if (j == 4) {
-        //             WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
-        //             WmScorePackage scorePackage = pkgMap.get(wmTask.getScorePackageId());
-        //             String drugId = scorePackage.getDrugtable()[0];
-        //             WmDaDrugEntDrugtable drugtable = drugMap.get(drugId);
-        //             datas[idx][j] = drugtable.getDrugEntName();
-        //         }
-        //
-        //         // 执行包名称
-        //         if (j == 5) {
-        //             WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
-        //             WmScorePackage scorePackage = pkgMap.get(wmTask.getScorePackageId());
-        //             datas[idx][j] = scorePackage.getScorePackageName();
-        //         }
-        //
-        //         // 周期
-        //         if (j == 6) {
-        //             WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
-        //             WmScorePackage scorePackage = pkgMap.get(wmTask.getScorePackageId());
-        //             datas[idx][j] = String.format("%s至%s", formatter.format(scorePackage.getStartTime()), formatter.format(scorePackage.getEndTime()));
-        //         }
-        //
-        //         // 监督结果
-        //         if (j == 7) {
-        //             datas[idx][j] = wmTaskSupervision.getSupervisionResult() ? "通过" : "不通过";
-        //         }
-        //
-        //         // 监督意见
-        //         if (j == 8) {
-        //             datas[idx][j] = wmTaskSupervision.getRemarks();
-        //         }
-        //
-        //
-        //         // 部门负责人意见
-        //         if (j == 9) {
-        //             List<WmTaskSupervisionAdvice> supervisionAdvices = advices.get(wmTaskSupervision.getSupervisionId());
-        //             if (CollUtil.isNotEmpty(supervisionAdvices)) {
-        //                 WmTaskSupervisionAdvice advice = supervisionAdvices.get(0);
-        //                 datas[idx][j] = advice != null ? advice.getRemarks() : "";
-        //             } else {
-        //                 datas[idx][j] = "";
-        //             }
-        //
-        //
-        //         }
-        //
-        //         // 分管领导意见
-        //         if (j == 10) {
-        //             List<WmTaskSupervisionAdvice> supervisionAdvices = advices.get(wmTaskSupervision.getSupervisionId());
-        //             if (CollUtil.isNotEmpty(supervisionAdvices) && supervisionAdvices.size() > 1) {
-        //                 WmTaskSupervisionAdvice advice = supervisionAdvices.get(1);
-        //                 datas[idx][j] = advice != null ? advice.getRemarks() : "";
-        //             } else {
-        //                 datas[idx][j] = "";
-        //             }
-        //         }
-        //
-        //         // 总经理意见
-        //         if (j == 11) {
-        //             List<WmTaskSupervisionAdvice> supervisionAdvices = advices.get(wmTaskSupervision.getSupervisionId());
-        //             if (CollUtil.isNotEmpty(supervisionAdvices) && supervisionAdvices.size() > 2) {
-        //                 WmTaskSupervisionAdvice advice = supervisionAdvices.get(2);
-        //                 datas[idx][j] = advice != null ? advice.getRemarks() : "";
-        //             } else {
-        //                 datas[idx][j] = "";
-        //             }
-        //
-        //         }
-        //     }
-        //     idx++;
-        // }
-
-        return datas;
+        // 监督时间
+        if (j == 13) {
+          datas[i][j] = formatter.format(wmTaskSupervision.getCreateTime().toLocalDate());
+        }
+      }
     }
 
-//     @Transactional(rollbackFor = Exception.class)
-//     public Boolean checkTaskSupervision(WmSupervisionDto.OnTaskSupervisionCheck resource, HnqzUser user) {
-//         Integer supervisionId = resource.getSupervisionId();
-//
-//         WmTaskSupervision supervision = taskSupervisionService.getById(supervisionId);
-//
-//         if (resource.getSupervision()) {
-//
-//             UpmsState.TaskSupervisionState state;
-//             switch (supervision.getState()) {
-//                 case INIT:
-//                     state = UpmsState.TaskSupervisionState.CKT1;
-//                     break;
-//                 case CKT1:
-//                     state = UpmsState.TaskSupervisionState.CKT2;
-//                     break;
-//                 case CKT2:
-//                     state = UpmsState.TaskSupervisionState.PASSED;
-//                     break;
-//                 default:
-//                     throw new BizException("监督状态不正确,不能操作");
-//
-//             }
-//
-//             String remarks = resource.getRemarks();
-//             if (StrUtil.isNotBlank(remarks)) {
-//                 supervision.setRemarks(resource.getRemarks() + ";" + supervision.getRemarks());
-//             }
-//             supervision.setUpdateBy(user.getUsername());
-//             supervision.setUpdateTime(LocalDateTime.now());
-//             supervision.setState(state);
-//             taskSupervisionService.updateById(supervision);
-//
-//         } else {
-//             supervision.setSupervisionResult(false);
-//             supervision.setRemarks(supervision.getRemarks() + ";" + resource.getRemarks());
-//             supervision.setUpdateBy(user.getUsername());
-//             supervision.setUpdateTime(LocalDateTime.now());
-//             supervision.setState(UpmsState.TaskSupervisionState.REJECTED);
-//             taskSupervisionService.updateById(supervision);
-//
-//         }
-//
-//
-//         return true;
-//     }
+    // int idx = 2;
+    // for (WmTaskSupervision wmTaskSupervision : taskSupervisions) {
+    //     for (int j = 0; j < 12; j++) {
+    //
+    //         // 服务ID
+    //         if (j == 0) {
+    //             datas[idx][j] = wmTaskSupervision.getTaskId().toString();
+    //         }
+    //
+    //         // 服务类型
+    //         if (j == 1) {
+    //             WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
+    //
+    //             datas[idx][j] = wmTask != null ? taskTypeMap.get(wmTask.getTaskTypeId()) : "";
+    //         }
+    //
+    //         // 代表名称
+    //         if (j == 2) {
+    //             WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
+    //             datas[idx][j] = wmTask != null ?
+    // userMap.get(Integer.parseInt(wmTask.getTaskUserId())) : "";
+    //         }
+    //
+    //         // 产品名称
+    //         if (j == 3) {
+    //             WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
+    //             WmScorePackage scorePackage = pkgMap.get(wmTask.getScorePackageId());
+    //             String drugId = scorePackage.getDrugtable()[0];
+    //             WmDaDrugEntDrugtable drugtable = drugMap.get(drugId);
+    //
+    //
+    //             datas[idx][j] = drugtable.getDrugname();
+    //         }
+    //
+    //         // 生产企业
+    //         if (j == 4) {
+    //             WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
+    //             WmScorePackage scorePackage = pkgMap.get(wmTask.getScorePackageId());
+    //             String drugId = scorePackage.getDrugtable()[0];
+    //             WmDaDrugEntDrugtable drugtable = drugMap.get(drugId);
+    //             datas[idx][j] = drugtable.getDrugEntName();
+    //         }
+    //
+    //         // 执行包名称
+    //         if (j == 5) {
+    //             WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
+    //             WmScorePackage scorePackage = pkgMap.get(wmTask.getScorePackageId());
+    //             datas[idx][j] = scorePackage.getScorePackageName();
+    //         }
+    //
+    //         // 周期
+    //         if (j == 6) {
+    //             WmTask wmTask = tid2EntityMap.get(wmTaskSupervision.getTaskId().toString());
+    //             WmScorePackage scorePackage = pkgMap.get(wmTask.getScorePackageId());
+    //             datas[idx][j] = String.format("%s至%s",
+    // formatter.format(scorePackage.getStartTime()), formatter.format(scorePackage.getEndTime()));
+    //         }
+    //
+    //         // 监督结果
+    //         if (j == 7) {
+    //             datas[idx][j] = wmTaskSupervision.getSupervisionResult() ? "通过" : "不通过";
+    //         }
+    //
+    //         // 监督意见
+    //         if (j == 8) {
+    //             datas[idx][j] = wmTaskSupervision.getRemarks();
+    //         }
+    //
+    //
+    //         // 部门负责人意见
+    //         if (j == 9) {
+    //             List<WmTaskSupervisionAdvice> supervisionAdvices =
+    // advices.get(wmTaskSupervision.getSupervisionId());
+    //             if (CollUtil.isNotEmpty(supervisionAdvices)) {
+    //                 WmTaskSupervisionAdvice advice = supervisionAdvices.get(0);
+    //                 datas[idx][j] = advice != null ? advice.getRemarks() : "";
+    //             } else {
+    //                 datas[idx][j] = "";
+    //             }
+    //
+    //
+    //         }
+    //
+    //         // 分管领导意见
+    //         if (j == 10) {
+    //             List<WmTaskSupervisionAdvice> supervisionAdvices =
+    // advices.get(wmTaskSupervision.getSupervisionId());
+    //             if (CollUtil.isNotEmpty(supervisionAdvices) && supervisionAdvices.size() > 1) {
+    //                 WmTaskSupervisionAdvice advice = supervisionAdvices.get(1);
+    //                 datas[idx][j] = advice != null ? advice.getRemarks() : "";
+    //             } else {
+    //                 datas[idx][j] = "";
+    //             }
+    //         }
+    //
+    //         // 总经理意见
+    //         if (j == 11) {
+    //             List<WmTaskSupervisionAdvice> supervisionAdvices =
+    // advices.get(wmTaskSupervision.getSupervisionId());
+    //             if (CollUtil.isNotEmpty(supervisionAdvices) && supervisionAdvices.size() > 2) {
+    //                 WmTaskSupervisionAdvice advice = supervisionAdvices.get(2);
+    //                 datas[idx][j] = advice != null ? advice.getRemarks() : "";
+    //             } else {
+    //                 datas[idx][j] = "";
+    //             }
+    //
+    //         }
+    //     }
+    //     idx++;
+    // }
+
+    return datas;
+  }
+
+  //     @Transactional(rollbackFor = Exception.class)
+  //     public Boolean checkTaskSupervision(WmSupervisionDto.OnTaskSupervisionCheck resource,
+  // HnqzUser user) {
+  //         Integer supervisionId = resource.getSupervisionId();
+  //
+  //         WmTaskSupervision supervision = taskSupervisionService.getById(supervisionId);
+  //
+  //         if (resource.getSupervision()) {
+  //
+  //             UpmsState.TaskSupervisionState state;
+  //             switch (supervision.getState()) {
+  //                 case INIT:
+  //                     state = UpmsState.TaskSupervisionState.CKT1;
+  //                     break;
+  //                 case CKT1:
+  //                     state = UpmsState.TaskSupervisionState.CKT2;
+  //                     break;
+  //                 case CKT2:
+  //                     state = UpmsState.TaskSupervisionState.PASSED;
+  //                     break;
+  //                 default:
+  //                     throw new BizException("监督状态不正确,不能操作");
+  //
+  //             }
+  //
+  //             String remarks = resource.getRemarks();
+  //             if (StrUtil.isNotBlank(remarks)) {
+  //                 supervision.setRemarks(resource.getRemarks() + ";" + supervision.getRemarks());
+  //             }
+  //             supervision.setUpdateBy(user.getUsername());
+  //             supervision.setUpdateTime(LocalDateTime.now());
+  //             supervision.setState(state);
+  //             taskSupervisionService.updateById(supervision);
+  //
+  //         } else {
+  //             supervision.setSupervisionResult(false);
+  //             supervision.setRemarks(supervision.getRemarks() + ";" + resource.getRemarks());
+  //             supervision.setUpdateBy(user.getUsername());
+  //             supervision.setUpdateTime(LocalDateTime.now());
+  //             supervision.setState(UpmsState.TaskSupervisionState.REJECTED);
+  //             taskSupervisionService.updateById(supervision);
+  //
+  //         }
+  //
+  //
+  //         return true;
+  //     }
 }