Explorar el Código

Merge remote-tracking branch 'origin/featCnbg-supervFilter-20250325' into cnbg-master

dengjia hace 3 meses
padre
commit
74dd29a53f

+ 2 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/TaskManager.java

@@ -234,6 +234,7 @@ public class TaskManager {
               query.getProvAbbr(),
               calcNodeSum(15),
               query.getTaskStatus());
+          page.getRecords().stream().forEach(record -> {record.setCheckHistoryList(new ArrayList<>());});
           return page;
         }
       }
@@ -273,6 +274,7 @@ public class TaskManager {
             query.getProvAbbr(),
             calcNodeSum(15),
             query.getTaskStatus());
+        page.getRecords().stream().forEach(record -> {record.setCheckHistoryList(new ArrayList<>());});
       }
 
       return page;

+ 233 - 239
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/WmSupervisionManager.java

@@ -1204,10 +1204,12 @@ public class WmSupervisionManager {
       }
     }
 
+    boolean isSupervision = query.getSupervision() != null && query.getSupervision();
+
     // 查询所有的服务商
     Page<SysDept> deptPage =
         deptService.page(
-            new Page<>(query.getCurrent(), query.getSize()),
+            isSupervision ? new Page<>(1, 99999) : new Page<>(query.getCurrent(), query.getSize()),
             Wrappers.<SysDept>lambdaQuery()
                 .eq(SysDept::getLevel, 4)
                 .eq(StrUtil.isNotBlank(query.getEntName()), SysDept::getName, query.getEntName())
@@ -1219,252 +1221,244 @@ public class WmSupervisionManager {
       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]);
-                  }
+    LambdaQueryWrapper<WmScorePackage> queryWrapper =
+    Wrappers.<WmScorePackage>lambdaQuery()
+        .in(CollUtil.isNotEmpty(drugIds), WmScorePackage::getDrugtable, drugIds)
+        .eq(
+            StrUtil.isNotBlank(query.getPkgName()),
+            WmScorePackage::getScorePackageName,
+            query.getPkgName());
+//        .eq(, 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);
+    // 获取当前企业当季度的包
+    // mybatisplus hardcode page size 500
+    // half half select to avoid network exception when executing too long
+    List<String> deptIds = depts.stream().map(dept -> dept.getDeptId().toString()).collect(Collectors.toList());
+    List<WmScorePackage> pkgs = packageService.list(queryWrapper.clone().in(WmScorePackage::getDeptId, deptIds.subList(0, deptIds.size()/2)));
+    pkgs.addAll(packageService.list(queryWrapper.in(WmScorePackage::getDeptId, deptIds.subList(deptIds.size()/2, deptIds.size()))));
+;
+    if (CollUtil.isEmpty(pkgs)) {
+        throw new BizException("没有查询到匹配积分包");
+    }
+    Map<String, Set<String>> dept2pkgs = pkgs.stream().collect(Collectors.groupingBy(
+        WmScorePackage::getSendPackageDeptId, Collectors.mapping(WmScorePackage::getId, Collectors.toSet())
+    ));
+    List<String> pkgIds =
+        pkgs.stream()
+            .map(WmScorePackage::getId)
+            .distinct()
+            .sorted()
+            .collect(Collectors.toList());
 
-                  int total = 0;
-                  int supTotal = 0;
-                  int supTotal1 = 0;
+    int taskBatch = 10000;
+    int lastIdx = pkgIds.size() > taskBatch ? taskBatch : pkgIds.size();
+    List<WmTaskSupervision> allSupervisions = taskSupervisionService.getSupervisionByPkgIds(pkgIds.subList(0, lastIdx));
+    if (pkgIds.size() > taskBatch) {
+        while(lastIdx < pkgIds.size()) {
+            allSupervisions.addAll(taskSupervisionService.getSupervisionByPkgIds(
+                pkgIds.subList(lastIdx, Math.min(lastIdx + taskBatch, pkgIds.size()))));
+            lastIdx += taskBatch;
+        }
+    }
 
-                  // 生产企业财务部监督员
-                  int mahFinaSupTotal = 0;
-                  // 生产企业销售部监督员
-                  int mahSalesSupTotal = 0;
-                  // 营销中心法务合规部监督员
-                  int optLawSupTotal = 0;
-                  // 营销中心财务部监督员
-                  int optFinaSupTotal = 0;
+    Map<Integer, List<WmTaskSupervision>> pkg2sups = allSupervisions.stream().collect(Collectors.groupingBy(
+        WmTaskSupervision::getPackageId, Collectors.toList())
+    );
 
-                  int todos = 0;
-                  // 获取c端包统计信息
-                  if (CollUtil.isNotEmpty(pkgs)) {
+    // 封装参数
+    int count = 0;
+    List<Map<String, Object>> collect = new ArrayList<>();
+    for(SysDept dept: depts) {
+        Map<String, Object> map = new HashMap<>(5);
+        map.put("deptName", dept.getName());
+        map.put("deptId", dept.getDeptId());
+
+        int total = 0;
+        int supTotal = 0;
+
+        // 生产企业财务部监督员
+        int mahFinaSupTotal = 0;
+        // 生产企业销售部监督员
+        int mahSalesSupTotal = 0;
+        // 营销中心法务合规部监督员
+        int optLawSupTotal = 0;
+        // 营销中心财务部监督员
+        int optFinaSupTotal = 0;
+
+        int todos = 0;
+        // 获取c端包统计信息
+
+        List<WmTaskSupervision> taskSup = dept2pkgs.getOrDefault(dept.getDeptId().toString(), new HashSet<>()).stream().map(
+            pkgId -> pkg2sups.getOrDefault(Integer.valueOf(pkgId), new ArrayList<>())
+        ).flatMap(List::stream).collect(Collectors.toList());
+
+        List<WmTaskSupervision> supervisions = taskSup.stream()
+            .filter(sup -> sup.getSupervisionId() != null && !sup.getModifiable())
+            .collect(Collectors.toList());
 
-                    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<Integer> tIds =
-                        tasks.stream()
-                            .mapToInt(t -> Integer.parseInt(t.getId()))
-                            .boxed()
-                            .distinct()
-                            .sorted()
-                            .collect(Collectors.toList());
-
-                    // 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::getTaskId, tIds)
-                    ////                                .in(
-                    ////                                    WmTaskSupervision::getPackageId,
-                    ////                                    pkgIds.stream()
-                    ////                                        .mapToInt(Integer::valueOf)
-                    ////                                        .boxed()
-                    ////                                        .sorted()
-                    ////                                        .distinct()
-                    ////                                        .collect(Collectors.toList()))
-                    //                        );
-
-                    List<WmTaskSupervision> supervisions =
-                        CollUtil.isEmpty(tIds)
-                            ? Collections.emptyList()
-                            : taskSupervisionService.list(
-                                Wrappers.<WmTaskSupervision>lambdaQuery()
-                                    .eq(WmTaskSupervision::getModifiable, false)
-                                    .in(WmTaskSupervision::getTaskId, tIds));
-
-                    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))) {
-                      // 获取监察结果
-                      todos = total - supTotal;
-                      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;
-
-                      // 获取监察结果
-                      todos = 0;
-                      supTotal1 = supTotal;
-                    }
-                    // 其他角色
-                    else {
-
-                      // 所有监察的
-                      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()
-                                .filter(sup -> !sup.getModifiable())
-                                .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();
-                          todos = init.size();
-                        }
-                        // 分管领导
-                        else if (CollUtil.containsAny(roles, List.of(51, 54, 55, 61))) {
-                          supTotal1 = advices.size();
-                          todos = ckt1.size();
-                        }
-                        // 事业部总经理
-                        else if (CollUtil.containsAny(roles, List.of(39))) {
-                          supTotal1 = advices.size();
-                          todos = ckt2.size();
-                        }
-                      }
-                    }
-                  }
+        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(taskSup) ? taskSup.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))) {
+            // 获取监察结果
+            todos = total - 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;
+
+            // 获取监察结果
+            todos = 0;
+        }
+        // 其他角色
+        else {
 
-                  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", todos > 0);
-                  map.put("checked", supTotal1 != 0);
-
-                  return map;
-                })
-            .collect(Collectors.toList());
+            // 所有监察的
+            List<Long> supId =
+                supervisions.stream()
+                    .map(WmTaskSupervision::getSupervisionId)
+                    .collect(Collectors.toList());
+
+            if (CollUtil.isNotEmpty(supId)) {
+                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))) {
+                    todos = init.size();
+                }
+                // 分管领导
+                else if (CollUtil.containsAny(roles, List.of(51, 54, 55, 61))) {
+                    todos = ckt1.size();
+                }
+                // 事业部总经理
+                else if (CollUtil.containsAny(roles, List.of(39))) {
+                    todos = ckt2.size();
+                }
+
+                if(!isSupervision || todos != 0) {
+                    // 我监察过的(有重复的的)
+                    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());
+
+                    supTotal = advices.size();
+                }
+            }
+        }
+
+        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", todos > 0);
+        map.put("checked", supTotal != 0);
+
+        collect.add(map);
+
+        if (isSupervision && todos > 0) {
+            count++;
+            if (count > query.getCurrent() * query.getSize()) {
+                // Only calculate one more of next page
+                break;
+            }
+        }
+    }
 
-    // show actionable only
-    if (query.getSupervision() != null && query.getSupervision()) {
-      collect = collect.stream().filter((record) -> (Boolean)record.get("toCheck"))
-        .collect(Collectors.toList());
+    if (isSupervision) {
+        // show actionable only
+        collect = collect.stream().filter((record) -> (Boolean)record.get("toCheck"))
+            .collect(Collectors.toList());
+        int start = (query.getCurrent() - 1) * query.getSize();
+        page.setRecords(collect.subList(Math.max(start, 0), Math.min(start + query.getSize(), collect.size())));
+        page.setTotal(collect.size());
+    } else {
+        page.setRecords(collect);
+        page.setTotal(deptPage.getTotal());
     }
-    page.setRecords(collect);
-    page.setTotal(deptPage.getTotal());
     return page;
   }
 

+ 6 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmTaskSupervisionMapper.java

@@ -2,14 +2,18 @@ package com.qunzhixinxi.hnqz.admin.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSupervision;
+
+import java.util.List;
+
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 任务监督mapper
  *
- * @author jimmy
- * @date 11/07/2024 16:46
  */
 @Mapper
 public interface WmTaskSupervisionMapper extends BaseMapper<WmTaskSupervision> {
+
+    List<WmTaskSupervision> selectByPkgIds(@Param("pkgIds") List<String> pkgIds);
 }

+ 9 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmTaskSupervisionService.java

@@ -1,5 +1,7 @@
 package com.qunzhixinxi.hnqz.admin.service;
 
+import java.util.List;
+
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qunzhixinxi.hnqz.admin.api.dto.WmSupervisionDto;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSupervision;
@@ -39,5 +41,12 @@ public interface WmTaskSupervisionService extends IService<WmTaskSupervision> {
      * @param operator      操作人
      */
     void updateSupervision(Long supervisionId, String remarks, Boolean modifiable, HnqzUser operator);
+
+    /**
+     * 按包查询监督信息
+     * @param pkgIds
+     * @return
+     */
+    List<WmTaskSupervision> getSupervisionByPkgIds(List<String> pkgIds);
 }
 

+ 4 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskSupervisionServiceImpl.java

@@ -111,5 +111,9 @@ public class WmTaskSupervisionServiceImpl extends ServiceImpl<WmTaskSupervisionM
 
     }
 
+    @Override
+    public List<WmTaskSupervision> getSupervisionByPkgIds(List<String> pkgIds) {
+        return this.baseMapper.selectByPkgIds(pkgIds);
+    }
 
 }

+ 53 - 0
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmTaskSupervisionMapper.xml

@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qunzhixinxi.hnqz.admin.mapper.WmTaskSupervisionMapper">
+
+  <resultMap id="wmTaskSupervisionMap"
+    type="com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSupervision">
+    <result property="supervisionId" column="sup_id"/>
+    <result property="taskId" column="task_id"/>
+    <result property="packageId" column="pkg_id"/>
+    <result property="supervisionResult" column="sup_res"/>
+    <result property="supervisionState" column="sup_state"/>
+    <result property="modifiable" column="modifiable"/>
+    <result property="roleId" column="role_id"/>
+    <result property="remarks" column="remarks"/>
+    <result property="createBy" column="create_by"/>
+    <result property="updateBy" column="update_by"/>
+    <result property="createTime" column="create_time"/>
+    <result property="updateTime" column="update_time"/>
+  </resultMap>
+
+  <select id="selectByPkgIds" resultMap="wmTaskSupervisionMap">
+    SELECT
+    sup_id,
+    t.id task_id,
+    t.score_package_id pkg_id,
+    sup.sup_res,
+    sup.sup_state,
+    sup.modifiable,
+    sup.role_id,
+    sup.remarks,
+    sup.create_by,
+    sup.update_by,
+    sup.create_time,
+    sup.update_time
+    FROM wm_task AS t
+    JOIN (SELECT DISTINCT h.target_id
+                FROM sys_chain_node_check_his h
+                WHERE h.node_id = 6
+                  AND h.check_result = 1
+                ) c ON c.target_id = t.id
+    LEFT JOIN wm_task_sup AS sup ON sup.task_id = t.id
+    <where>
+        t.del_flag = '0'
+        AND t.task_status = '3'
+      <if test="pkgIds != null and pkgIds.size > 0">
+        AND t.score_package_id IN
+        <foreach collection="pkgIds" item="pid" open="(" close=")" separator=",">#{pid}</foreach>
+      </if>
+    </where>
+  </select>
+
+</mapper>