浏览代码

feat:supervision v3

shc 8 月之前
父节点
当前提交
3db6f68410

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

@@ -41,7 +41,8 @@ public class WmSupervisionController {
     public R<Page<Map<String, Object>>> pagePackage(@Validated @RequestBody WmSupervisionDto.OnB2BPkgPage query) {
 
         // return R.ok(supervisionManager.pagePkg(query, SecurityUtils.getUser()));
-        return R.ok(supervisionManager.pageB2BPkg(query, SecurityUtils.getUser()));
+        // return R.ok(supervisionManager.pagePkgV2(query, SecurityUtils.getUser()));
+        return R.ok(supervisionManager.pagePkgV3(query, SecurityUtils.getUser()));
     }
 
     @SysLog(value = "执行包监督")

+ 156 - 68
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/WmSupervisionManager.java

@@ -841,8 +841,123 @@ public class WmSupervisionManager {
         return true;
     }
 
-    // 按照区域 to 服务商的打包进行展示
-    public Page<Map<String, Object>> pageB2BPkg(WmSupervisionDto.OnB2BPkgPage query, HnqzUser operator) {
+    // // 按照区域 to 服务商的打包进行展示
+    // public Page<Map<String, Object>> pagePkgV2(WmSupervisionDto.OnB2BPkgPage query, HnqzUser operator) {
+    //
+    //     // 分页结果
+    //     Page<Map<String, Object>> page = new Page<>(query.getCurrent(), query.getSize());
+    //
+    //     // 根据角色判断药品
+    //     List<Integer> drugIds;
+    //     if (!SecurityUtils.getRoles().contains(39) && !SecurityUtils.getRoles().contains(37)) {
+    //
+    //         drugIds = userDrugService.listDrugIdByUserId(operator.getId());
+    //
+    //         if (CollUtil.isEmpty(drugIds)) {
+    //             log.info("当前操作人没有分配产品");
+    //             return page;
+    //         }
+    //
+    //     } else {
+    //         drugIds = Collections.emptyList();
+    //     }
+    //
+    //
+    //     // 筛查区域内所有企业
+    //     List<Long> areaCode = query.getAreaCode();
+    //     List<Long> entIds;
+    //     if (CollUtil.isNotEmpty(areaCode)) {
+    //         entIds = enterpriseAreaService.listAreaEnts(areaCode);
+    //         if (CollUtil.isEmpty(entIds)) {
+    //             return page;
+    //         }
+    //     } else {
+    //         entIds = Collections.emptyList();
+    //     }
+    //
+    //     String entName = query.getEntName();
+    //     Set<Integer> finalEntIds = new HashSet<>();
+    //     if (CharSequenceUtil.isNotBlank(entName)) {
+    //         List<SysDept> enterprises = deptService.list(Wrappers.<SysDept>lambdaQuery().like(SysDept::getName, entName).in(CollUtil.isNotEmpty(entIds), SysDept::getDeptId, entIds));
+    //         List<Integer> deptIds = enterprises.stream().mapToInt(SysDept::getDeptId).boxed().distinct().collect(Collectors.toList());
+    //         if (CollUtil.isEmpty(deptIds)) {
+    //             return page;
+    //         }
+    //         finalEntIds.addAll(deptIds);
+    //     } else {
+    //
+    //         Set<Integer> collect = entIds.stream().map(Long::intValue).collect(Collectors.toSet());
+    //
+    //         List<SysDept> depts = deptService.list(Wrappers.<SysDept>lambdaQuery().in(CollUtil.isNotEmpty(collect), SysDept::getDeptId, collect).eq(SysDept::getLevel, 4));
+    //
+    //         finalEntIds.addAll(depts.stream().map(SysDept::getDeptId).collect(Collectors.toSet()));
+    //     }
+    //
+    //
+    //     // 获取全部的区域 & 获取区域ID
+    //     List<SysDept> districts = deptService.list(Wrappers.<SysDept>lambdaQuery().eq(SysDept::getLevel, 3));
+    //     Map<Integer, String> distId2NameMap = districts.stream().collect(Collectors.toMap(SysDept::getDeptId, SysDept::getName));
+    //     List<Integer> disIds = districts.stream().mapToInt(SysDept::getDeptId).boxed().distinct().sorted().collect(Collectors.toList());
+    //
+    //     // 获取区域发送所有b端包
+    //     Page<WmScorePackage> b2bPkgPage = packageService.page(new Page<>(query.getCurrent(), query.getSize()),
+    //             Wrappers.<WmScorePackage>lambdaQuery()
+    //                     .in(CollUtil.isNotEmpty(drugIds), WmScorePackage::getDrugtable, drugIds)
+    //                     .eq(StrUtil.isNotBlank(query.getPkgName()), WmScorePackage::getScorePackageName, query.getPkgName())
+    //                     .in(CollUtil.isNotEmpty(finalEntIds), WmScorePackage::getDeptId, finalEntIds)
+    //                     // .between(WmScorePackage::getCreateTime, , )
+    //                     .in(WmScorePackage::getSendPackageDeptId, disIds));
+    //
+    //     List<WmScorePackage> records = b2bPkgPage.getRecords();
+    //
+    //     List<Map<String, Object>> build = new ArrayList<>(records.size());
+    //     if (CollUtil.isNotEmpty(records)) {
+    //
+    //         // 获取服务商信息
+    //         Set<Integer> deptId = records.stream().mapToInt(pkg -> Integer.parseInt(pkg.getDeptId())).boxed().collect(Collectors.toSet());
+    //         Map<Integer, String> deptIdToDeptNameMap = deptService.listByIds(deptId).stream().collect(Collectors.toMap(SysDept::getDeptId, SysDept::getName));
+    //
+    //         // 循环拼装数据
+    //         DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DatePattern.CHINESE_DATE_PATTERN);
+    //         for (WmScorePackage pkg : records) {
+    //
+    //             Map<String, Object> ele = new HashMap<>(7);
+    //             ele.put("pkgName", pkg.getScorePackageName());
+    //             ele.put("score", pkg.getScore());
+    //             ele.put("pkgState", pkg.getPackageStatus());
+    //             ele.put("period", String.format("%s~%s", dateTimeFormatter.format(pkg.getStartTime()), dateTimeFormatter.format(pkg.getEndTime())));
+    //             ele.put("districtName", distId2NameMap.get(Integer.valueOf(pkg.getSendPackageDeptId())));
+    //             ele.put("deptName", deptIdToDeptNameMap.get(Integer.valueOf(pkg.getDeptId())));
+    //
+    //
+    //             // 获取子集包
+    //             List<WmScorePackage> b2cPkg = packageService.list(Wrappers.<WmScorePackage>lambdaQuery().eq(WmScorePackage::getRelationScoreId, pkg.getId()));
+    //             if (CollUtil.isNotEmpty(b2cPkg)) {
+    //                 List<String> b2cPkgIds = b2cPkg.stream().map(WmScorePackage::getId).distinct().sorted().collect(Collectors.toList());
+    //                 // 获取子集包中的所有任务
+    //                 taskService.listAvailableTaskForSupervision1(b2cPkgIds.stream().mapToInt(Integer::valueOf).boxed().distinct().sorted().collect(Collectors.toList()), Collections.emptyList());
+    //                 List<WmTask> tasks = taskService.list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getScorePackageId, b2cPkgIds));
+    //                 // 获取监察记录
+    //                 List<WmTaskSupervision> supervisions = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery().in(WmTaskSupervision::getPackageId, b2cPkgIds));
+    //
+    //                 // 获取监察结果
+    //                 Map<String, String> stat = new HashMap<>(2);
+    //                 stat.put("supTotal", CollUtil.isNotEmpty(supervisions) ? String.valueOf(supervisions.stream().map(WmTaskSupervision::getTaskId).collect(Collectors.toSet()).size()) : "0");
+    //                 stat.put("total", CollUtil.isNotEmpty(tasks) ? String.valueOf(tasks.size()) : "0");
+    //                 ele.put("taskSupStat", stat);
+    //             }
+    //
+    //             build.add(ele);
+    //         }
+    //     }
+    //     page.setRecords(build);
+    //     page.setTotal(b2bPkgPage.getTotal());
+    //     return page;
+    //
+    // }
+
+    // 按照服务商的维度显示季度任务信息
+    public Page<Map<String, Object>> pagePkgV3(WmSupervisionDto.OnB2BPkgPage query, HnqzUser operator) {
 
         // 分页结果
         Page<Map<String, Object>> page = new Page<>(query.getCurrent(), query.getSize());
@@ -875,85 +990,58 @@ public class WmSupervisionManager {
             entIds = Collections.emptyList();
         }
 
-        String entName = query.getEntName();
-        Set<Integer> finalEntIds = new HashSet<>();
-        if (CharSequenceUtil.isNotBlank(entName)) {
-            List<SysDept> enterprises = deptService.list(Wrappers.<SysDept>lambdaQuery().like(SysDept::getName, entName).in(CollUtil.isNotEmpty(entIds), SysDept::getDeptId, entIds));
-            List<Integer> deptIds = enterprises.stream().mapToInt(SysDept::getDeptId).boxed().distinct().collect(Collectors.toList());
-            if (CollUtil.isEmpty(deptIds)) {
-                return page;
-            }
-            finalEntIds.addAll(deptIds);
-        } else {
+        // 查询所有的服务商
+        Page<SysDept> deptPage = deptService.page(new Page<>(query.getCurrent(), query.getSize()),
+                Wrappers.<SysDept>lambdaQuery().eq(SysDept::getLevel, 4).in(CollUtil.isNotEmpty(entIds), SysDept::getDeptId, entIds));
 
-            Set<Integer> collect = entIds.stream().map(Long::intValue).collect(Collectors.toSet());
+        List<SysDept> depts = deptPage.getRecords();
 
-            List<SysDept> depts = deptService.list(Wrappers.<SysDept>lambdaQuery().in(CollUtil.isNotEmpty(collect), SysDept::getDeptId, collect).eq(SysDept::getLevel, 4));
-
-            finalEntIds.addAll(depts.stream().map(SysDept::getDeptId).collect(Collectors.toSet()));
+        if (CollUtil.isEmpty(depts)) {
+            return page;
         }
 
+        // 封装参数
 
-        // 获取全部的区域 & 获取区域ID
-        List<SysDept> districts = deptService.list(Wrappers.<SysDept>lambdaQuery().eq(SysDept::getLevel, 3));
-        Map<Integer, String> distId2NameMap = districts.stream().collect(Collectors.toMap(SysDept::getDeptId, SysDept::getName));
-        List<Integer> disIds = districts.stream().mapToInt(SysDept::getDeptId).boxed().distinct().sorted().collect(Collectors.toList());
+        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());
 
-        // 获取区域发送所有b端包
-        Page<WmScorePackage> b2bPkgPage = packageService.page(new Page<>(query.getCurrent(), query.getSize()),
-                Wrappers.<WmScorePackage>lambdaQuery()
-                        .in(CollUtil.isNotEmpty(drugIds), WmScorePackage::getDrugtable, drugIds)
-                        .eq(StrUtil.isNotBlank(query.getPkgName()), WmScorePackage::getScorePackageName, query.getPkgName())
-                        .in(CollUtil.isNotEmpty(finalEntIds), WmScorePackage::getDeptId, finalEntIds)
-                        // .between(WmScorePackage::getCreateTime, , )
-                        .in(WmScorePackage::getSendPackageDeptId, disIds));
+            // 获取当前企业当季度的包
+            List<WmScorePackage> pkgs = packageService.list(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())
+            );
 
-        List<WmScorePackage> records = b2bPkgPage.getRecords();
+            int total = 0;
+            int supTotal = 0;
 
-        List<Map<String, Object>> build = new ArrayList<>(records.size());
-        if (CollUtil.isNotEmpty(records)) {
+            // 获取c端包统计信息
+            if (CollUtil.isNotEmpty(pkgs)) {
 
-            // 获取服务商信息
-            Set<Integer> deptId = records.stream().mapToInt(pkg -> Integer.parseInt(pkg.getDeptId())).boxed().collect(Collectors.toSet());
-            Map<Integer, String> deptIdToDeptNameMap = deptService.listByIds(deptId).stream().collect(Collectors.toMap(SysDept::getDeptId, SysDept::getName));
+                List<String> pkgIds = pkgs.stream().map(WmScorePackage::getId).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().in(WmTaskSupervision::getPackageId, pkgs));
 
-            // 循环拼装数据
-            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DatePattern.CHINESE_DATE_PATTERN);
-            for (WmScorePackage pkg : records) {
-
-                Map<String, Object> ele = new HashMap<>(7);
-                ele.put("pkgName", pkg.getScorePackageName());
-                ele.put("score", pkg.getScore());
-                ele.put("pkgState", pkg.getPackageStatus());
-                ele.put("period", String.format("%s~%s", dateTimeFormatter.format(pkg.getStartTime()), dateTimeFormatter.format(pkg.getEndTime())));
-                ele.put("districtName", distId2NameMap.get(Integer.valueOf(pkg.getSendPackageDeptId())));
-                ele.put("deptName", deptIdToDeptNameMap.get(Integer.valueOf(pkg.getDeptId())));
-
-
-                // 获取子集包
-                List<WmScorePackage> b2cPkg = packageService.list(Wrappers.<WmScorePackage>lambdaQuery().eq(WmScorePackage::getRelationScoreId, pkg.getId()));
-                if (CollUtil.isNotEmpty(b2cPkg)) {
-                    List<String> b2cPkgIds = b2cPkg.stream().map(WmScorePackage::getId).distinct().sorted().collect(Collectors.toList());
-                    // 获取子集包中的所有任务
-                    taskService.listAvailableTaskForSupervision1(b2cPkgIds.stream().mapToInt(Integer::valueOf).boxed().distinct().sorted().collect(Collectors.toList()), Collections.emptyList());
-                    List<WmTask> tasks = taskService.list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getScorePackageId, b2cPkgIds));
-                    // 获取监察记录
-                    List<WmTaskSupervision> supervisions = taskSupervisionService.list(Wrappers.<WmTaskSupervision>lambdaQuery().in(WmTaskSupervision::getPackageId, b2cPkgIds));
-
-                    // 获取监察结果
-                    Map<String, String> stat = new HashMap<>(2);
-                    stat.put("supTotal", CollUtil.isNotEmpty(supervisions) ? String.valueOf(supervisions.stream().map(WmTaskSupervision::getTaskId).collect(Collectors.toSet()).size()) : "0");
-                    stat.put("total", CollUtil.isNotEmpty(tasks) ? String.valueOf(tasks.size()) : "0");
-                    ele.put("taskSupStat", stat);
-                }
+                // 获取监察结果
+                total = CollUtil.isNotEmpty(tasks) ? tasks.size() : 0;
+                supTotal = CollUtil.isNotEmpty(supervisions) ? supervisions.stream().map(WmTaskSupervision::getTaskId).collect(Collectors.toSet()).size() : 0;
 
-                build.add(ele);
             }
-        }
-        page.setRecords(build);
-        page.setTotal(b2bPkgPage.getTotal());
-        return page;
+            Map<String, Integer> stat = new HashMap<>(2);
+            stat.put("supTotal", supTotal);
+            stat.put("total", total);
+            map.put("taskSupStat", stat);
 
+            return map;
+        }).collect(Collectors.toList());
+
+        page.setRecords(collect);
+        page.setTotal(deptPage.getTotal());
+        return page;
     }
 
 //     @Transactional(rollbackFor = Exception.class)