소스 검색

feat:执行包统计

shc 5 달 전
부모
커밋
02be037de9
1개의 변경된 파일213개의 추가작업 그리고 2개의 파일을 삭제
  1. 213 2
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/init/InitController.java

+ 213 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/init/InitController.java

@@ -13,6 +13,7 @@ import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
 import com.pig4cloud.plugin.excel.annotation.Sheet;
 import com.qunzhixinxi.hnqz.admin.api.constant.UpmsState;
 import com.qunzhixinxi.hnqz.admin.api.constant.enums.DelEnum;
+import com.qunzhixinxi.hnqz.admin.api.constant.enums.EnableEnum;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysAreaEntity;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysCheckChainNodeCheckHistory;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
@@ -23,6 +24,7 @@ import com.qunzhixinxi.hnqz.admin.api.entity.SysUserArea;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmDaAgent;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmDaDrugEnt;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmPackageTaskTypeQty;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTask;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskContent;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskType;
@@ -34,6 +36,7 @@ import com.qunzhixinxi.hnqz.admin.mapper.SysDeptMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.SysDeptRelationMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmDaAgentMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmDaDrugEntMapper;
+import com.qunzhixinxi.hnqz.admin.mapper.WmPackageTaskTypeQtyMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmTaskTypeMapper;
 import com.qunzhixinxi.hnqz.admin.service.SysAreaEntityService;
 import com.qunzhixinxi.hnqz.admin.service.SysCheckChainNodeCheckHistoryService;
@@ -41,10 +44,16 @@ import com.qunzhixinxi.hnqz.admin.service.SysLogService;
 import com.qunzhixinxi.hnqz.admin.service.SysUserAreaService;
 import com.qunzhixinxi.hnqz.admin.service.SysUserService;
 import com.qunzhixinxi.hnqz.admin.service.WmPackageTaskTypeQtyService;
+import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskContentService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
+import com.qunzhixinxi.hnqz.common.core.constant.CacheConstants;
+import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
+import com.qunzhixinxi.hnqz.common.core.exception.BizException;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.security.annotation.Inner;
+import java.util.IntSummaryStatistics;
+import java.util.TreeMap;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.ApplicationEventPublisher;
@@ -100,9 +109,11 @@ public class InitController {
   private final SysUserAreaService userAreaService;
   private final SysAreaEntityService areaEntityService;
   private final SysUserService userService;
-  private final RedisTemplate<String, Object> redisTemplate;
+  private final RedisTemplate redisTemplate;
   private final ApplicationEventPublisher applicationEventPublisher;
   private final WmPackageTaskTypeQtyService packageTaskTypeQtyService;
+  private final WmPackageTaskTypeQtyMapper wmPackageTaskTypeQtyMapper;
+  private final WmScorePackageService wmScorePackageService;
   private final SysCheckChainNodeCheckHistoryService checkChainNodeCheckHistoryService;
 
   @Inner(value = false)
@@ -1184,5 +1195,205 @@ public class InitController {
     return Math.max(seconds, 0L);
   }
 
-  public void export1() {}
+  @Inner(value = false)
+  @GetMapping(value = "/cnbg/pkg/dis/stat")
+  public R<Map<String, Object>> scorePackageDisStat() {
+
+    //    Set<Integer> ignoreIds = new HashSet<>();
+    //    ignoreIds.add(1716964676);
+    //    ignoreIds.add(-1020826);
+    //    ignoreIds.add(-1019986);
+    //
+    //    List<SysDept> range = redisTemplate.opsForList().range(CacheConstants.DEPT_KEY, 0, -1);
+    //
+    //    // 获取所有的企业
+    //    List<SysDept> depts =
+    //        range.stream().filter(d ->
+    // !ignoreIds.contains(d.getDeptId())).collect(Collectors.toList());
+    //
+    //    if (CollUtil.isEmpty(depts)) {
+    //      throw new BizException("不存在生效的企业信息,无法获取导出数据");
+    //    }
+    //
+    //    // 分别过滤区域和服务商
+    //    Map<Integer, SysDept> dis =
+    //        depts.stream()
+    //            .filter(d -> d.getLevel() == 3)
+    //            .collect(Collectors.toMap(SysDept::getDeptId, Function.identity()));
+    //    Map<Integer, SysDept> service =
+    //        depts.stream()
+    //            .filter(d -> d.getLevel() == 4)
+    //            .collect(Collectors.toMap(SysDept::getDeptId, Function.identity()));
+    //
+    //    if (CollUtil.isEmpty(dis) || CollUtil.isEmpty(service)) {
+    //      throw new BizException("不存在生效的区域或服务商,无法获取导出数据");
+    //    }
+
+    // 获取全部的包
+    List<WmScorePackage> pkgs =
+        wmScorePackageService.list(
+            Wrappers.<WmScorePackage>lambdaQuery()
+                .eq(WmScorePackage::getEnableFlag, EnableEnum.ENABLE.val())
+                .between(
+                    WmScorePackage::getCreateTime,
+                    LocalDateTime.now().minusYears(1L),
+                    LocalDateTime.now()));
+
+    if (CollUtil.isEmpty(pkgs)) {
+      return R.ok(Collections.emptyMap());
+    }
+
+    Map<Integer, List<WmPackageTaskTypeQty>> collect1 =
+        wmPackageTaskTypeQtyMapper
+            .selectList(
+                Wrappers.<WmPackageTaskTypeQty>lambdaQuery()
+                    .in(
+                        WmPackageTaskTypeQty::getPackageId,
+                        pkgs.stream()
+                            .map(p -> Integer.parseInt(p.getId()))
+                            .distinct()
+                            .sorted()
+                            .collect(Collectors.toList())))
+            .stream()
+            .collect(Collectors.groupingBy(WmPackageTaskTypeQty::getPackageId));
+
+    pkgs.forEach(
+        p -> {
+          if (StrUtil.isBlank(p.getRelationScoreId())) {
+            p.setRelationScoreId("0");
+          }
+        });
+
+    Map<String, List<WmScorePackage>> collect =
+        pkgs.stream().collect(Collectors.groupingBy(WmScorePackage::getRelationScoreId));
+
+    List<WmScorePackage> wmScorePackages = collect.get("0");
+
+    List<Map<String, Object>> list = new ArrayList<>(wmScorePackages.size());
+
+    long lv1 = 0;
+    long lv2 = 0;
+    long lv3 = 0;
+    long lv4 = 0;
+
+    for (WmScorePackage wmScorePackage : wmScorePackages) {
+      Map<String, Object> r = new HashMap<>(8);
+      r.put("pkgId", wmScorePackage.getId());
+      r.put("pkgName", wmScorePackage.getScorePackageName());
+      r.put("score", wmScorePackage.getScore());
+      r.put("provAbbr", wmScorePackage.getProvAbbr());
+      List<WmPackageTaskTypeQty> wmPackageTaskTypeQties =
+          collect1.get(Integer.parseInt(wmScorePackage.getId()));
+      r.put(
+          "qty",
+          CollUtil.isEmpty(wmPackageTaskTypeQties)
+              ? 0
+              : wmPackageTaskTypeQties.stream().mapToInt(WmPackageTaskTypeQty::getQty).sum());
+
+      long disQty = 0L;
+      List<Map<String, Object>> sonList;
+      List<WmScorePackage> son = collect.get(wmScorePackage.getId());
+      if (CollUtil.isNotEmpty(son)) {
+        sonList = new ArrayList<>(son.size());
+
+        for (WmScorePackage sonPackage : son) {
+          Map<String, Object> s = new HashMap<>(8);
+          s.put("pkgId", sonPackage.getId());
+          s.put("pkgName", sonPackage.getScorePackageName());
+          s.put("score", sonPackage.getScore());
+          s.put("provAbbr", sonPackage.getProvAbbr());
+          List<WmPackageTaskTypeQty> wmPackageTaskTypeQties1 =
+              collect1.get(Integer.parseInt(sonPackage.getId()));
+          long sum1 =
+              CollUtil.isEmpty(wmPackageTaskTypeQties1)
+                  ? 0
+                  : wmPackageTaskTypeQties1.stream().mapToInt(WmPackageTaskTypeQty::getQty).sum();
+          s.put("qty", sum1);
+
+          long sDisQty = 0L;
+          List<Map<String, Object>> grandsonList;
+          List<WmScorePackage> grandson = collect.get(wmScorePackage.getId());
+          if (CollUtil.isNotEmpty(grandson)) {
+            grandsonList = new ArrayList<>(son.size());
+
+            for (WmScorePackage grandsonPackage : grandson) {
+              Map<String, Object> gs = new HashMap<>(6);
+              gs.put("pkgId", grandsonPackage.getId());
+              gs.put("pkgName", grandsonPackage.getScorePackageName());
+              gs.put("score", grandsonPackage.getScore());
+              gs.put("provAbbr", grandsonPackage.getProvAbbr());
+              List<WmPackageTaskTypeQty> wmPackageTaskTypeQties2 =
+                  collect1.get(Integer.parseInt(grandsonPackage.getId()));
+              long sum =
+                  CollUtil.isEmpty(wmPackageTaskTypeQties2)
+                      ? 0
+                      : wmPackageTaskTypeQties2.stream()
+                          .mapToInt(WmPackageTaskTypeQty::getQty)
+                          .sum();
+
+              long gsDisQty = 0L;
+              List<Map<String, Object>> grandsonList2;
+              List<WmScorePackage> grandson2 = collect.get(wmScorePackage.getId());
+              if (CollUtil.isNotEmpty(grandson2)) {
+                grandsonList2 = new ArrayList<>(son.size());
+
+                for (WmScorePackage grandson2Package : grandson) {
+                  Map<String, Object> gs2 = new HashMap<>(5);
+                  gs2.put("pkgId", grandson2Package.getId());
+                  gs2.put("pkgName", grandson2Package.getScorePackageName());
+                  gs2.put("score", grandson2Package.getScore());
+                  gs2.put("provAbbr", grandson2Package.getProvAbbr());
+                  List<WmPackageTaskTypeQty> wmPackageTaskTypeQties3 =
+                      collect1.get(Integer.parseInt(grandsonPackage.getId()));
+                  long sum4 =
+                      CollUtil.isEmpty(wmPackageTaskTypeQties3)
+                          ? 0
+                          : wmPackageTaskTypeQties3.stream()
+                              .mapToInt(WmPackageTaskTypeQty::getQty)
+                              .sum();
+
+                  grandsonList2.add(gs2);
+                  gs2.put("qty", sum4);
+                  lv4 += sum4;
+                  gsDisQty += sum4;
+                }
+
+              } else {
+                grandsonList2 = Collections.emptyList();
+              }
+
+              lv3 += gsDisQty;
+              gs.put("qty", gsDisQty);
+              gs.put("children", grandsonList2);
+              sDisQty += sum;
+              grandsonList.add(gs);
+            }
+
+          } else {
+            grandsonList = Collections.emptyList();
+          }
+          lv2 += sDisQty;
+          s.put("disQty", sDisQty);
+          s.put("children", grandsonList);
+          disQty += sum1;
+          sonList.add(s);
+        }
+
+      } else {
+        sonList = Collections.emptyList();
+      }
+      r.put("disQty", disQty);
+      r.put("children", sonList);
+      lv1 += disQty;
+      list.add(r);
+    }
+
+    Map<String, Object> r = new TreeMap<>();
+    r.put("lv1", lv1);
+    r.put("lv2", lv1);
+    r.put("lv3", lv1);
+    r.put("lv4", lv1);
+    r.put("details", list);
+    return R.ok(r);
+  }
 }