Эх сурвалжийг харах

feat: task time range filter for supervision

dengjia 6 өдөр өмнө
parent
commit
c718b1a7d4

+ 4 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/dto/WmSupervisionDto.java

@@ -54,6 +54,8 @@ public final class WmSupervisionDto {
 
         private LocalDate[] period;
 
+        private LocalDate[] taskPeriod;
+
         private Boolean supervision;
 
         @NotNull(message = "页码必填")
@@ -277,6 +279,8 @@ public final class WmSupervisionDto {
 
         private LocalDate[] pkgPeriod;
 
+        private LocalDate[] taskPeriod;
+
         private String skuName;
 
         private String mahName;

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

@@ -172,10 +172,11 @@ public class WmSupervisionController {
   @GetMapping(value = "/supervision/report/export")
   public R<Map<String, String>> exportSupervisionReportPDF(
       @RequestParam(value = "entId") Integer entId,
-      @RequestParam(value = "period", required = false) LocalDate[] period)
+      @RequestParam(value = "period", required = false) LocalDate[] period,
+      @RequestParam(value = "taskPeriod", required = false) LocalDate[] taskPeriod)
       throws Exception {
 
     return R.ok(
-        supervisionManager.exportSupervisionReportPDF(entId, period, SecurityUtils.getUser()));
+        supervisionManager.exportSupervisionReportPDF(entId, period, SecurityUtils.getUser(), taskPeriod));
   }
 }

+ 1 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/SysStatisticManager.java

@@ -1230,7 +1230,7 @@ public class SysStatisticManager {
 
                 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.listAvailableTaskForSupervision1(pkgIds.stream().mapToInt(Integer::valueOf).boxed().distinct().sorted().collect(Collectors.toList()), Collections.emptyList(), null, null);
                 // List<WmTask> tasks = taskService.list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getScorePackageId, pkgIds).eq(WmTask::getTaskStatus, "3"));
                 // 获取监察记录(不可编辑的是监察过的)
                 List<WmTaskSupervision> supervisions = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery()

+ 29 - 10
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/WmSupervisionManager.java

@@ -3,6 +3,7 @@ package com.qunzhixinxi.hnqz.admin.manager;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.lang.Pair;
 import cn.hutool.core.text.CharSequenceUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.IdUtil;
@@ -67,6 +68,7 @@ import java.io.File;
 import java.nio.file.Files;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -1269,11 +1271,12 @@ public class WmSupervisionManager {
 
     int taskBatch = 10000;
     int lastIdx = pkgIds.size() > taskBatch ? taskBatch : pkgIds.size();
-    List<WmTaskSupervision> allSupervisions = taskSupervisionService.getSupervisionByPkgIds(pkgIds.subList(0, lastIdx));
+    Pair<LocalDateTime, LocalDateTime> taskTimeRange = getTimeRange(query.getTaskPeriod());
+    List<WmTaskSupervision> allSupervisions = taskSupervisionService.getSupervisionByPkgIds(pkgIds.subList(0, lastIdx), taskTimeRange.getKey(), taskTimeRange.getValue());
     if (pkgIds.size() > taskBatch) {
         while(lastIdx < pkgIds.size()) {
             allSupervisions.addAll(taskSupervisionService.getSupervisionByPkgIds(
-                pkgIds.subList(lastIdx, Math.min(lastIdx + taskBatch, pkgIds.size()))));
+                pkgIds.subList(lastIdx, Math.min(lastIdx + taskBatch, pkgIds.size())), taskTimeRange.getKey(), taskTimeRange.getValue()));
             lastIdx += taskBatch;
         }
     }
@@ -1618,11 +1621,12 @@ public class WmSupervisionManager {
             .sorted()
             .collect(Collectors.toList());
 
+    Pair<LocalDateTime, LocalDateTime> taskTimeRange = getTimeRange(query.getTaskPeriod());
     // 获取子集包中的所有任务
     List<WmTask> tasks =
         taskService.listAvailableTaskForSupervision1(
             pkgIds,
-            Collections.emptyList());
+            Collections.emptyList(), taskTimeRange.getKey(), taskTimeRange.getValue());
 
     if (CollUtil.isEmpty(tasks)) {
       return page;
@@ -1630,7 +1634,7 @@ public class WmSupervisionManager {
 
     // 积分包内已经监督的任务
     List<WmTaskSupervision> list1 =
-        taskSupervisionService.getSupervisionByPkgIds(pkgIds.stream().map(i -> i.toString()).collect(Collectors.toList()));
+        taskSupervisionService.getSupervisionByPkgIds(pkgIds.stream().map(i -> i.toString()).collect(Collectors.toList()), taskTimeRange.getKey(), taskTimeRange.getValue());
     list1 = list1.stream().filter(ts -> ts.getSupervisionId() != null).collect(Collectors.toList());
     list1.sort((a, b) -> b.getCreateTime().compareTo(a.getCreateTime()));
 
@@ -1687,7 +1691,9 @@ public class WmSupervisionManager {
                 query.getTaskNumber(),
                 pkgIds,
                 null,
-                roles);
+                roles,
+                taskTimeRange.getKey(),
+                taskTimeRange.getValue());
       }
     }
     // 服务商
@@ -1731,7 +1737,9 @@ public class WmSupervisionManager {
                 .list(
                     Wrappers.<WmTaskSupervisionAdvice>lambdaQuery()
                         .eq(WmTaskSupervisionAdvice::getDelFlag, false)
-                        .eq(WmTaskSupervisionAdvice::getCreateBy, user.getUsername()))
+                        .eq(WmTaskSupervisionAdvice::getCreateBy, user.getUsername())
+                        .ge(taskTimeRange.getKey() != null, WmTaskSupervisionAdvice::getCreateTime, taskTimeRange.getKey())
+                        )
                 .stream()
                 .mapToLong(WmTaskSupervisionAdvice::getTaskSupervisionId)
                 .boxed()
@@ -1912,6 +1920,16 @@ public class WmSupervisionManager {
     return page;
   }
 
+private Pair<LocalDateTime, LocalDateTime> getTimeRange(LocalDate[] period) {
+    LocalDateTime beginTime = null;
+    LocalDateTime endTime = null;
+    if (ArrayUtil.isNotEmpty(period)) {
+        beginTime = period.length > 0 ? LocalDateTime.of(period[0], LocalTime.MIN) : null;
+        endTime = period.length > 1 ? LocalDateTime.of(period[1], LocalTime.MAX) : null;
+    }
+    return Pair.of(beginTime, endTime);
+}
+
 private Page<WmTask> getReviewTaskPage(WmSupervisionDto.OnTaskSupervisionPage query, List<Integer> userIds1,
         List<String> taskIds) {
     Page<WmTask> taskPage = null;
@@ -2068,7 +2086,7 @@ private Page<WmTask> getReviewTaskPage(WmSupervisionDto.OnTaskSupervisionPage qu
    * @return 本地路径
    */
   public Map<String, String> exportSupervisionReportPDF(
-      Integer entId, LocalDate[] period, HnqzUser user) throws Exception {
+      Integer entId, LocalDate[] period, HnqzUser user, LocalDate[] taskPeriod) throws Exception {
 
     Map<String, String> envPaths = OsEnvUtils.getEachEnvPaths();
     // 生成本地路径
@@ -2081,7 +2099,7 @@ private Page<WmTask> getReviewTaskPage(WmSupervisionDto.OnTaskSupervisionPage qu
             + ".pdf";
 
     // 封装报告数据
-    Object[][] datas = buildSupervisionReportDatas(entId, period, user);
+    Object[][] datas = buildSupervisionReportDatas(entId, period, user, taskPeriod);
 
     PdfUtils.generateSupervisionReport(
         targetPath,
@@ -2099,7 +2117,7 @@ private Page<WmTask> getReviewTaskPage(WmSupervisionDto.OnTaskSupervisionPage qu
     return uploaded;
   }
 
-  private Object[][] buildSupervisionReportDatas(Integer entId, LocalDate[] period, HnqzUser user) {
+  private Object[][] buildSupervisionReportDatas(Integer entId, LocalDate[] period, HnqzUser user, LocalDate[] taskPeriod) {
 
     // 获取企业
     SysDept service = deptService.getById(entId);
@@ -2151,6 +2169,7 @@ private Page<WmTask> getReviewTaskPage(WmSupervisionDto.OnTaskSupervisionPage qu
 //            Wrappers.<WmTask>lambdaQuery().in(WmTask::getScorePackageId, pkgMap.keySet()));
 
     // 获取子集包中的所有任务
+    Pair<LocalDateTime, LocalDateTime> taskTimeRange = getTimeRange(taskPeriod);
     List<WmTask> tasks =
         taskService.listAvailableTaskForSupervision1(
             pkgMap.keySet().stream()
@@ -2159,7 +2178,7 @@ private Page<WmTask> getReviewTaskPage(WmSupervisionDto.OnTaskSupervisionPage qu
                 .distinct()
                 .sorted()
                 .collect(Collectors.toList()),
-            Collections.emptyList());
+            Collections.emptyList(), taskTimeRange.getKey(), taskTimeRange.getValue());
 
     Map<String, WmTask> tid2EntityMap =
         tasks.stream().collect(Collectors.toMap(WmTask::getId, Function.identity()));

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

@@ -237,7 +237,9 @@ public interface WmTaskMapper extends DataScopeMapper<WmTask> {
    */
   List<WmTask> listAvailableTaskForSupervision1(
       @Param(value = "pkgIds") Collection<String> pkgIds,
-      @Param(value = "ignoreIds") Collection<Integer> ignoreIds);
+      @Param(value = "ignoreIds") Collection<Integer> ignoreIds,
+      @Param(value = "taskBeginTime") LocalDateTime taskBeginTime,
+      @Param(value = "taskEndTime") LocalDateTime taskEndTime);
 
   Page<WmTask> listAvailableTaskForSupervision2(
       Page<WmTask> page,
@@ -247,7 +249,10 @@ public interface WmTaskMapper extends DataScopeMapper<WmTask> {
       @Param(value = "taskId") String taskId,
       @Param(value = "taskNumber") String taskNumber,
       @Param(value = "ignoreIds") Collection<Integer> ignoreIds,
-      @Param(value = "roles") List<Integer> roles);
+      @Param(value = "roles") List<Integer> roles,
+      @Param(value = "taskBeginTime") LocalDateTime taskBeginTime,
+      @Param(value = "taskEndTime") LocalDateTime taskEndTime
+      );
 
   @Select(value = "SELECT t.* FROM wm_task t WHERE t.score_package_id =#{pkgId} FOR UPDATE")
   List<WmTask> selectForUpdateByPkgId(@Param("pkgId") String pkgId);

+ 4 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmTaskSupervisionMapper.java

@@ -3,6 +3,7 @@ package com.qunzhixinxi.hnqz.admin.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSupervision;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 import org.apache.ibatis.annotations.Mapper;
@@ -15,5 +16,7 @@ import org.apache.ibatis.annotations.Param;
 @Mapper
 public interface WmTaskSupervisionMapper extends BaseMapper<WmTaskSupervision> {
 
-    List<WmTaskSupervision> selectByPkgIds(@Param("pkgIds") List<String> pkgIds);
+    List<WmTaskSupervision> selectByPkgIds(@Param("pkgIds") List<String> pkgIds,
+                                            @Param("taskBeginTime") LocalDateTime taskBeginTime,
+                                            @Param("taskEndTime") LocalDateTime taskEndTime);
 }

+ 4 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmTaskService.java

@@ -233,12 +233,14 @@ public interface WmTaskService extends IService<WmTask> {
      */
     List<WmTask> listAvailableTaskForSupervision(Integer pkgId, Collection<Integer> ignoreIds);
 
-    List<WmTask> listAvailableTaskForSupervision1(Collection<Integer> pkgIds, Collection<Integer> ignoreIds);
+    List<WmTask> listAvailableTaskForSupervision1(Collection<Integer> pkgIds, Collection<Integer> ignoreIds, LocalDateTime taskBeginTime, LocalDateTime taskEndTime);
 
     List<Map<String, Object>> listTaskInfo(List<WmTask> taskList, String pkgId);
 
 
     List<WmTask> listPkgTasks(String pkgId);
 
-    Page<WmTask> listAvailableTaskForSupervision2(Page<WmTask> page, Collection<Integer> userIds1, String taskTypeId, String taskId, String taskNumber, Collection<Integer> pkgIds, Collection<Integer> ignoreIds, List<Integer> roles);
+    Page<WmTask> listAvailableTaskForSupervision2(Page<WmTask> page, Collection<Integer> userIds1, String taskTypeId, String taskId, String taskNumber, Collection<Integer> pkgIds, Collection<Integer> ignoreIds, List<Integer> roles,
+        LocalDateTime taskBeginTime, LocalDateTime taskEndTime
+    );
 }

+ 2 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmTaskSupervisionService.java

@@ -1,5 +1,6 @@
 package com.qunzhixinxi.hnqz.admin.service;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -47,6 +48,6 @@ public interface WmTaskSupervisionService extends IService<WmTaskSupervision> {
      * @param pkgIds
      * @return
      */
-    List<WmTaskSupervision> getSupervisionByPkgIds(List<String> pkgIds);
+    List<WmTaskSupervision> getSupervisionByPkgIds(List<String> pkgIds, LocalDateTime taskBeginTime, LocalDateTime taskEndTime);
 }
 

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

@@ -2932,17 +2932,18 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
      * @return 监督任务列表
      */
     @Override
-    public List<WmTask> listAvailableTaskForSupervision1(Collection<Integer> pkgIds, Collection<Integer> ignoreIds) {
+    public List<WmTask> listAvailableTaskForSupervision1(Collection<Integer> pkgIds, Collection<Integer> ignoreIds, LocalDateTime taskBeginTime, LocalDateTime taskEndTime) {
         return this.baseMapper.listAvailableTaskForSupervision1(pkgIds.stream().map(
             Object::toString).collect(
-            Collectors.toList()), ignoreIds);
+            Collectors.toList()), ignoreIds, taskBeginTime, taskEndTime);
     }
 
     @Override
-    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) {
+    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,
+            LocalDateTime taskBeginTime, LocalDateTime taskEndTime) {
         return baseMapper.listAvailableTaskForSupervision2(page, pkgIds.stream().map(
             Object::toString).collect(
-            Collectors.toList()), userIds1, taskTypeId, taskId, taskNumber, ignoreIds, roles);
+            Collectors.toList()), userIds1, taskTypeId, taskId, taskNumber, ignoreIds, roles, taskBeginTime, taskEndTime);
     }
 
     @Override

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

@@ -117,8 +117,8 @@ public class WmTaskSupervisionServiceImpl extends ServiceImpl<WmTaskSupervisionM
     }
 
     @Override
-    public List<WmTaskSupervision> getSupervisionByPkgIds(List<String> pkgIds) {
-        return this.baseMapper.selectByPkgIds(pkgIds);
+    public List<WmTaskSupervision> getSupervisionByPkgIds(List<String> pkgIds, LocalDateTime taskBeginTime, LocalDateTime taskEndTime) {
+        return this.baseMapper.selectByPkgIds(pkgIds, taskBeginTime, taskEndTime);
     }
 
 }

+ 12 - 0
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmTaskMapper.xml

@@ -1412,6 +1412,9 @@
     FROM sys_chain_node_check_his h
     WHERE h.node_id = 6
         AND h.check_result = 1
+        <if test="taskBeginTime != null">
+          AND h.create_time1 &gt;= #{taskBeginTime}
+        </if>
     ) c 
     JOIN wm_task t
     ON c.target_id = t.id
@@ -1420,6 +1423,9 @@
     <where>
       t.task_status = '3'
       AND f2099.target_id is NULL
+      <if test="taskBeginTime != null and taskEndTime != null">
+        AND (t.create_time BETWEEN #{taskBeginTime} AND #{taskEndTime})
+      </if>
       <if test="pkgIds != null and pkgIds.size > 0">
         AND t.score_package_id IN
         <foreach collection="pkgIds" item="id" open="(" separator="," close=")">
@@ -1442,6 +1448,9 @@
     FROM sys_chain_node_check_his h
     WHERE h.node_id = 6
         AND h.check_result = 1
+        <if test="taskBeginTime != null">
+          AND h.create_time1 &gt;= #{taskBeginTime}
+        </if>
     ) c 
     JOIN wm_task t
     ON c.target_id = t.id
@@ -1452,6 +1461,9 @@
     <where>
       t.task_status = '3'
       AND f2099.target_id is NULL
+      <if test="taskBeginTime != null and taskEndTime != null">
+        AND (t.create_time BETWEEN #{taskBeginTime} AND #{taskEndTime})
+      </if>
       <if test="pkgIds != null and pkgIds.size > 0">
         AND t.score_package_id IN
         <foreach collection="pkgIds" item="id" open="(" separator="," close=")">

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

@@ -38,6 +38,9 @@
                 FROM sys_chain_node_check_his h
                 WHERE h.node_id = 6
                   AND h.check_result = 1
+                <if test="taskBeginTime != null">
+                  AND h.create_time1 &gt;= #{taskBeginTime}
+                </if>
                 ) 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
@@ -49,6 +52,9 @@
         AND t.score_package_id IN
         <foreach collection="pkgIds" item="pid" open="(" close=")" separator=",">#{pid}</foreach>
       </if>
+      <if test="taskBeginTime != null and taskEndTime != null">
+        AND (t.create_time BETWEEN #{taskBeginTime} AND #{taskEndTime})
+      </if>
     </where>
   </select>