瀏覽代碼

feat: data statistics v1.3 监督信息统计

shc 7 月之前
父節點
當前提交
99965eb9ef

+ 9 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/dto/SysStatisticDto.java

@@ -57,5 +57,14 @@ public final class SysStatisticDto {
     @Data
     public static class OnSupData {
 
+        @NotNull(message = "页码必填")
+        @Min(value = 1, message = "页码最小为{value}")
+        private Integer current;
+
+        @NotNull(message = "分页数量必填")
+        @Min(value = 10, message = "分页数量最小为{value}")
+        @Max(value = 100, message = "分页数量最大为{value}")
+        private Integer size;
+
     }
 }

+ 7 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/SysStatisticController.java

@@ -79,9 +79,14 @@ public class SysStatisticController {
         return R.ok(statisticManager.statProviderDataTree(query, SecurityUtils.getUser()));
     }
 
-    // todo
+    /**
+     * 监督信息统计
+     *
+     * @param query 查询条件
+     * @return 分页结果
+     */
     @GetMapping(value = "/stat/supervision/data")
-    public R<Page<Map<String, Object>>> statSupData(SysStatisticDto.OnSupData query) {
+    public R<Page<?>> statSupData(@Validated SysStatisticDto.OnSupData query) {
         return R.ok(statisticManager.statSupData(query, SecurityUtils.getUser()));
     }
 

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

@@ -8,17 +8,20 @@ import cn.hutool.core.lang.tree.TreeUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qunzhixinxi.hnqz.admin.api.constant.UpmsState;
 import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
 import com.qunzhixinxi.hnqz.admin.api.dto.SysStatisticDto;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysImplementPlan;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTask;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSupervision;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskType;
 import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
 import com.qunzhixinxi.hnqz.admin.service.SysImplementPlanService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
+import com.qunzhixinxi.hnqz.admin.service.WmTaskSupervisionService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskTypeService;
 import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
 import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
@@ -53,6 +56,7 @@ public class SysStatisticManager {
     private final WmScorePackageService packageService;
     private final WmTaskService taskService;
     private final WmTaskTypeService taskTypeService;
+    private final WmTaskSupervisionService taskSupervisionService;
     private final SysImplementPlanService implementPlanService;
 
     /**
@@ -357,7 +361,7 @@ public class SysStatisticManager {
 
         List<WmScorePackage> pkgs = page.getRecords();
 
-        if (CollUtil.isEmpty(pkgs)){
+        if (CollUtil.isEmpty(pkgs)) {
             return page;
         }
 
@@ -516,23 +520,75 @@ public class SysStatisticManager {
      * @param user  查询人
      * @return 统计结果
      */
-    public Page<Map<String, Object>> statSupData(SysStatisticDto.OnSupData query, HnqzUser user) {
-        Map<String, Object> records = new HashMap<>();
-        records.put("id", 123);
-        records.put("providerName", "测试服务提供方1");
-        records.put("supervisionTimes", 5);
-        records.put("supervisionScore", 123456);
-        records.put("supervisionPassedRate", "30%");
-        records.put("supervisionWarnRate", "30%");
-        records.put("supervisionRate", "30%");
+    public Page<?> statSupData(SysStatisticDto.OnSupData query, HnqzUser user) {
 
+        // 获取服务商分页
+        Page<SysDept> page = new Page<>(query.getCurrent(), query.getSize());
+        deptService.page(page, Wrappers.<SysDept>lambdaQuery().eq(SysDept::getLevel, 4).eq(SysDept::getDelFlag, CommonConstants.STATUS_NORMAL));
 
-        Page<Map<String, Object>> page = new Page<>();
-        page.setRecords(Collections.singletonList(records));
-        page.setCurrent(1);
-        page.setSize(20);
-        page.setTotal(1);
 
-        return page;
+        List<SysDept> depts = page.getRecords();
+
+        if (CollUtil.isEmpty(depts)) {
+            return page;
+        }
+
+        // 封装参数
+        List<Map<String, Object>> collect = depts.stream().map(dept -> {
+            Map<String, Object> map = new HashMap<>(3);
+            map.put("deptName", dept.getName());
+            map.put("deptId", dept.getDeptId());
+
+            // 获取当前企业当季度的包
+            List<WmScorePackage> pkgs = packageService.list(Wrappers.<WmScorePackage>lambdaQuery().eq(WmScorePackage::getSendPackageDeptId, dept.getDeptId().toString()));
+
+            int total = 0;
+            int supTotal = 0;
+            int passedTotal = 0;
+            int rejectTotal = 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)
+                        .eq(WmTaskSupervision::getSupervisionState, UpmsState.TaskSupervisionState.PASSED)
+                        .in(WmTaskSupervision::getPackageId, pkgIds.stream().mapToInt(Integer::valueOf).boxed().sorted().distinct().collect(Collectors.toList())));
+
+                total = CollUtil.isNotEmpty(tasks) ? tasks.size() : 0;
+                supTotal = CollUtil.isNotEmpty(supervisions) ? supervisions.stream().map(WmTaskSupervision::getTaskId).collect(Collectors.toSet()).size() : 0;
+
+                if (CollUtil.isNotEmpty(supervisions)) {
+
+                    Map<Boolean, List<WmTaskSupervision>> collect1 = supervisions.stream().collect(Collectors.partitioningBy(WmTaskSupervision::getSupervisionResult));
+
+                    passedTotal = CollUtil.isEmpty(collect1.get(Boolean.TRUE)) ? 0 : collect1.get(Boolean.TRUE).size();
+                    rejectTotal = CollUtil.isEmpty(collect1.get(Boolean.FALSE)) ? 0 : collect1.get(Boolean.FALSE).size();
+                }
+            }
+
+
+            Map<String, Integer> stat = new HashMap<>(4);
+            stat.put("supTotal", supTotal);
+            stat.put("total", total);
+            stat.put("passedTotal", passedTotal);
+            stat.put("rejectTotal", rejectTotal);
+            map.put("taskSupStat", stat);
+
+            return map;
+        }).collect(Collectors.toList());
+
+
+        Page<Map<String, Object>> builds = new Page<>(page.getCurrent(), page.getSize());
+
+        builds.setRecords(collect);
+        builds.setTotal(page.getTotal());
+
+        return builds;
     }
 }