Browse Source

Merge branch 'refs/heads/featCnbg-supervFilter-20250325' into cnbg-master

lixuesong 2 months ago
parent
commit
55b53faa77

+ 108 - 102
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/WmSupervisionManager.java

@@ -7,6 +7,7 @@ import cn.hutool.core.text.CharSequenceUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
+
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -14,6 +15,7 @@ import com.itextpdf.text.PageSize;
 import com.qunzhixinxi.hnqz.admin.api.constant.UpmsState;
 import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType.AreaType;
 import com.qunzhixinxi.hnqz.admin.api.dto.WmSupervisionDto;
+import com.qunzhixinxi.hnqz.admin.api.dto.WmSupervisionDto.OnTaskSupervision;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysRole;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
@@ -1377,6 +1379,7 @@ public class WmSupervisionManager {
             if (CollUtil.isNotEmpty(supId)) {
                 Map<UpmsState.TaskSupervisionState, Set<Integer>> collect1 =
                     supervisions.stream()
+                        .filter(ts -> CollUtil.contains(getVisibleRoleIds(roles), ts.getRoleId()))
                         .collect(
                             Collectors.groupingBy(
                                 WmTaskSupervision::getSupervisionState,
@@ -1622,18 +1625,11 @@ public class WmSupervisionManager {
       return page;
     }
 
-    List<Integer> tids = tasks.stream().mapToInt(t -> Integer.parseInt(t.getId())).boxed()
-        .distinct().sorted().collect(Collectors.toList());
-
     // 积分包内已经监督的任务
     List<WmTaskSupervision> list1 =
-        taskSupervisionService.list(
-            Wrappers.<WmTaskSupervision>lambdaQuery()
-                .in(WmTaskSupervision::getTaskId, tids)
-                //                 .in(WmTaskSupervision::getRoleId, visibleRoleIds)
-                // .eq(WmTaskSupervision::getModifiable, false)
-//                .in(WmTaskSupervision::getPackageId, pkgIds)
-                .orderByDesc(WmTaskSupervision::getCreateTime));
+        taskSupervisionService.getSupervisionByPkgIds(pkgIds.stream().map(i -> i.toString()).collect(Collectors.toList()));
+    list1 = list1.stream().filter(ts -> ts.getSupervisionId() != null).collect(Collectors.toList());
+    list1.sort((a, b) -> b.getCreateTime().compareTo(a.getCreateTime()));
 
     // 获取当前操作人监督的记录
     List<WmTaskSupervision> list =
@@ -1676,39 +1672,19 @@ public class WmSupervisionManager {
         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));
+        taskPage = getReviewTaskPage(query, userIds1, taskIds);
 
       } else {
-        List<Integer> supTaskIds =
-            list.stream()
-                .mapToInt(WmTaskSupervision::getTaskId)
-                .boxed()
-                .sorted()
-                .distinct()
-                .collect(Collectors.toList());
         taskPage =
-            taskService.listAvailableTaskForSupervision3(
+            taskService.listAvailableTaskForSupervision2(
                 new Page<>(query.getCurrent(), query.getSize()),
                 userIds1,
                 query.getTaskTypeId(),
                 query.getTaskId(),
                 query.getTaskNumber(),
                 pkgIds,
-                supTaskIds);
+                null,
+                roles);
       }
     }
     // 服务商
@@ -1732,21 +1708,7 @@ public class WmSupervisionManager {
               .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));
+      taskPage = getReviewTaskPage(query, userIds1, supTaskIds.stream().map(i -> i.toString()).collect(Collectors.toList()));
     }
     // 负责人|分管领导|事业部总经理
     else {
@@ -1838,22 +1800,7 @@ public class WmSupervisionManager {
       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));
+      taskPage = getReviewTaskPage(query, userIds1, supTaskIds.stream().map(i -> i.toString()).collect(Collectors.toList()));
     }
 
     List<WmTask> records = taskPage.getRecords();
@@ -1911,49 +1858,61 @@ public class WmSupervisionManager {
 
           m.put("modifiable", wmTaskSupervision.getModifiable());
 
+          SysUser supUser = userMap.get(wmTaskSupervision.getCreateBy());
+          SysUserRole supSysUserRole = userRoleMap.get(supUser.getUserId()).get(0);
+          SysRole supRole = roleMap.get(supSysUserRole.getRoleId());
+          String supRoleName =
+                (supRole == null
+                    ? " "
+                    : (StrUtil.isNotBlank(supRole.getRoleDesc())
+                        ? supRole.getRoleDesc()
+                        : supRole.getRoleName()));
           String supervisionMsg =
               String.format(
-                  "【%s】,%s",
-                  wmTaskSupervision.getSupervisionResult() ? "通过" : "不通过",
-                  wmTaskSupervision.getRemarks());
+                  "%s【%s】,审核【%s】,监督意见为【%s】(%s)。",
+                  supRoleName, supUser.getRealname(), 
+                  wmTaskSupervision.getSupervisionResult() ? " 通过 " : " 不通过 " , 
+                  StrUtil.isBlank(wmTaskSupervision.getRemarks()) ? " " : wmTaskSupervision.getRemarks(), 
+                  formatter.format(wmTaskSupervision.getCreateTime()));
 
           m.put("supervisionMessage", supervisionMsg);
 
-          List<String> advMsg;
-          if (isService) {
-            advMsg = Collections.emptyList();
-          } else {
+          List<String> advMsg = new ArrayList<>();
+          if (!isService) {
             List<WmTaskSupervisionAdvice> advices =
                 taskSupervisionAdviceService.list(
                     Wrappers.<WmTaskSupervisionAdvice>lambdaQuery()
                         .eq(WmTaskSupervisionAdvice::getDelFlag, false)
                         .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());
+                            wmTaskSupervision.getSupervisionId())
+                        );
+            
+            String lastUser = null;
+            for(WmTaskSupervisionAdvice adv: advices) {
+                if (adv.getUpdateBy().equals(lastUser)) {
+                    continue;
+                }
+                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();
+
+                advMsg.add(String.format(
+                    "%s【%s】,审核【%s】,监督意见为【%s】(%s)。",
+                    roleName, realName, resultMsg, remarks, date));
+                lastUser = adv.getUpdateBy();
+            }
           }
 
           m.put("adviceMessages", advMsg);
@@ -1965,6 +1924,41 @@ public class WmSupervisionManager {
     return page;
   }
 
+private Page<WmTask> getReviewTaskPage(WmSupervisionDto.OnTaskSupervisionPage query, List<Integer> userIds1,
+        List<String> taskIds) {
+    Page<WmTask> taskPage = null;
+    int taskBatch = 2000;
+    int firstIdx = 0;
+    List<String> remains = new ArrayList<>();
+    while(firstIdx < taskIds.size()) {
+        int lastIdx = taskIds.size() > firstIdx + taskBatch ? firstIdx + taskBatch : taskIds.size();
+        List<String> batchTaskIds =  taskIds.subList(firstIdx, lastIdx);
+        remains.addAll(batchTaskIds);
+        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, remains));
+        if (taskPage.getRecords().size() == query.getSize()) {
+            break;
+        } else {
+            remains.addAll(taskPage.getRecords().stream().map(record -> record.getId()).collect(Collectors.toList()));
+        }
+        firstIdx += taskBatch;
+    }
+    return taskPage;
+}
+
   // 执行任务监察
   public Boolean doTaskSupervision(WmSupervisionDto.OnTaskSupervision resource, HnqzUser operator) {
 
@@ -1981,8 +1975,11 @@ public class WmSupervisionManager {
       // 如果监督记录创建人不是当前人,就记录监督意见
       if (!StrUtil.equals(operator.getUsername(), supervision.getCreateBy())) {
         modifiable = !resource.getSupervision();
-        remarks = supervision.getRemarks();
+        if (resource.getSupervision()) {
+            remarks = supervision.getSupervisionResult() ? "同意监督结果,监督无异常" : "同意监督结果,不符合合规要求,不建议结算";
+        }
 
+        resource.setRemarks(remarks);
         taskSupervisionAdviceService.createAdvice(
             supervision.getSupervisionId(), resource, supervision.getRemarks(), operator);
 
@@ -1992,7 +1989,7 @@ public class WmSupervisionManager {
       }
 
       taskSupervisionService.updateSupervision(
-          supervision.getSupervisionId(), remarks, modifiable, operator);
+          supervision.getSupervisionId(), supervision.getRemarks(), modifiable, operator);
 
     }
     // 不存在监察记录
@@ -2011,12 +2008,21 @@ public class WmSupervisionManager {
   public Boolean doTaskSupervisionBatch(
       WmSupervisionDto.OnTaskSupervisionBatch resource, HnqzUser user) {
 
+    Map<String, WmTask> id2task = taskService.list(Wrappers.<WmTask>lambdaQuery()
+        .in(WmTask::getId, resource.getSupervisionIds()))
+        .stream().collect(Collectors.toMap(WmTask::getId, Function.identity()));
+
     resource
-        .getSupervisionIds()
+        .getSupervisionIds().stream()
+        .distinct()
         .forEach(
             id -> {
-              taskSupervisionService.updateSupervision(
-                  id, resource.getRemarks(), !resource.getSupervision(), user);
+                OnTaskSupervision single = new WmSupervisionDto.OnTaskSupervision();
+                single.setPkgId(Integer.valueOf(id2task.get(id.toString()).getScorePackageId()));
+                single.setRemarks(resource.getRemarks());
+                single.setSupervision(resource.getSupervision());
+                single.setTaskId(id.intValue());
+                doTaskSupervision(single, user);
             });
     return true;
   }

+ 2 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmTaskMapper.java

@@ -246,7 +246,8 @@ public interface WmTaskMapper extends DataScopeMapper<WmTask> {
       @Param(value = "taskTypeId") String taskTypeId,
       @Param(value = "taskId") String taskId,
       @Param(value = "taskNumber") String taskNumber,
-      @Param(value = "ignoreIds") Collection<Integer> ignoreIds);
+      @Param(value = "ignoreIds") Collection<Integer> ignoreIds,
+      @Param(value = "roles") List<Integer> roles);
 
   @Select(value = "SELECT t.* FROM wm_task t WHERE t.score_package_id =#{pkgId} FOR UPDATE")
   List<WmTask> selectForUpdateByPkgId(@Param("pkgId") String pkgId);

+ 1 - 3
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmTaskService.java

@@ -235,12 +235,10 @@ public interface WmTaskService extends IService<WmTask> {
 
     List<WmTask> listAvailableTaskForSupervision1(Collection<Integer> pkgIds, Collection<Integer> ignoreIds);
 
-    Page<WmTask> listAvailableTaskForSupervision2(Page<WmTask> page, Collection<Integer> pkgIds, Collection<Integer> ignoreIds);
-
     List<Map<String, Object>> listTaskInfo(List<WmTask> taskList, String pkgId);
 
 
     List<WmTask> listPkgTasks(String pkgId);
 
-    Page<WmTask> listAvailableTaskForSupervision3(Page<WmTask> page, Collection<Integer> userIds1, String taskTypeId, String taskId, String taskNumber, Collection<Integer> pkgIds, Collection<Integer> ignoreIds);
+    Page<WmTask> listAvailableTaskForSupervision2(Page<WmTask> page, Collection<Integer> userIds1, String taskTypeId, String taskId, String taskNumber, Collection<Integer> pkgIds, Collection<Integer> ignoreIds, List<Integer> roles);
 }

+ 2 - 9
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskServiceImpl.java

@@ -2939,17 +2939,10 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
     }
 
     @Override
-    public Page<WmTask> listAvailableTaskForSupervision2(Page<WmTask> page, Collection<Integer> pkgIds, Collection<Integer> ignoreIds) {
-        return this.baseMapper.listAvailableTaskForSupervision2(page, pkgIds.stream().map(
-            Object::toString).collect(
-            Collectors.toList()), Collections.emptyList(), null, null, null, ignoreIds);
-    }
-
-    @Override
-    public Page<WmTask> listAvailableTaskForSupervision3(Page<WmTask> page, Collection<Integer> userIds1, String taskTypeId, String taskId, String taskNumber, Collection<Integer> pkgIds, Collection<Integer> ignoreIds) {
+    public Page<WmTask> listAvailableTaskForSupervision2(Page<WmTask> page, Collection<Integer> userIds1, String taskTypeId, String taskId, String taskNumber, Collection<Integer> pkgIds, Collection<Integer> ignoreIds, List<Integer> roles) {
         return baseMapper.listAvailableTaskForSupervision2(page, pkgIds.stream().map(
             Object::toString).collect(
-            Collectors.toList()), userIds1, taskTypeId, taskId, taskNumber, ignoreIds);
+            Collectors.toList()), userIds1, taskTypeId, taskId, taskNumber, ignoreIds, roles);
     }
 
     @Override

+ 30 - 20
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmTaskMapper.xml

@@ -1407,19 +1407,19 @@
   </select>
 
   <select id="listAvailableTaskForSupervision1" resultMap="wmTaskMap">
-    SELECT * FROM
-    (SELECT wm_task.*, f2099.target_id f2099id FROM wm_task
+    SELECT t.* FROM
+    (SELECT DISTINCT h.target_id
+    FROM sys_chain_node_check_his h
+    WHERE h.node_id = 6
+        AND h.check_result = 1
+    ) c 
+    JOIN wm_task t
+    ON c.target_id = t.id
     LEFT JOIN ops_freeze_task f2099
-    ON f2099.target_id = wm_task.id
-    ) t
-    RIGHT 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
+    ON f2099.target_id = t.id
     <where>
       t.task_status = '3'
-      AND t.f2099id is NULL
+      AND f2099.target_id is NULL
       <if test="pkgIds != null and pkgIds.size > 0">
         AND t.score_package_id IN
         <foreach collection="pkgIds" item="id" open="(" separator="," close=")">
@@ -1437,19 +1437,21 @@
   </select>
 
   <select id="listAvailableTaskForSupervision2" resultMap="wmTaskMap">
-    SELECT * FROM
-    (SELECT wm_task.*, f2099.target_id f2099id FROM wm_task
+    SELECT t.* FROM
+    (SELECT DISTINCT h.target_id
+    FROM sys_chain_node_check_his h
+    WHERE h.node_id = 6
+        AND h.check_result = 1
+    ) c 
+    JOIN wm_task t
+    ON c.target_id = t.id
     LEFT JOIN ops_freeze_task f2099
-    ON f2099.target_id = wm_task.id
-    ) t
-    RIGHT 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
+    ON f2099.target_id = t.id
+    LEFT JOIN wm_task_sup sup
+    ON t.id = sup.task_id
     <where>
       t.task_status = '3'
-      AND t.f2099id is NULL
+      AND f2099.target_id is NULL
       <if test="pkgIds != null and pkgIds.size > 0">
         AND t.score_package_id IN
         <foreach collection="pkgIds" item="id" open="(" separator="," close=")">
@@ -1477,6 +1479,14 @@
           #{id}
         </foreach>
       </if>
+      AND (sup.modifiable is null OR sup.modifiable = 1
+      <if test="roles!= null and roles.size > 0">
+        AND sup.role_id IN
+        <foreach collection="roles" item="role" open="(" separator="," close=")">
+          #{role}
+        </foreach>
+      </if>
+      )
     </where>
   </select>
 </mapper>

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

@@ -40,9 +40,11 @@
                   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
+    LEFT JOIN ops_freeze_task f2099 ON f2099.target_id = t.id
     <where>
         t.del_flag = '0'
         AND t.task_status = '3'
+        AND f2099.target_id is null
       <if test="pkgIds != null and pkgIds.size > 0">
         AND t.score_package_id IN
         <foreach collection="pkgIds" item="pid" open="(" close=")" separator=",">#{pid}</foreach>