Jelajahi Sumber

feat: refeat supervision page

shc 8 bulan lalu
induk
melakukan
4622d5f9ed

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

@@ -41,6 +41,27 @@ public final class WmSupervisionDto {
         private Integer size;
     }
 
+    @Data
+    public static class OnB2BPkgPage {
+
+        private String pkgName;
+
+        private List<Long> areaCode;
+
+        private String entName;
+
+        private Boolean supervision;
+
+        @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;
+    }
+
 
     @Data
     public static class OnPkgSupervision {

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

@@ -38,9 +38,10 @@ public class WmSupervisionController {
      * @return 分页结果
      */
     @PostMapping(value = "/supervision/pkg/page")
-    public R<Page<Map<String, Object>>> pagePackage(@Validated @RequestBody WmSupervisionDto.OnPkgPage query) {
+    public R<Page<Map<String, Object>>> pagePackage(@Validated @RequestBody WmSupervisionDto.OnB2BPkgPage query) {
 
-        return R.ok(supervisionManager.pagePkg(query, SecurityUtils.getUser()));
+        // return R.ok(supervisionManager.pagePkg(query, SecurityUtils.getUser()));
+        return R.ok(supervisionManager.pageB2BPkg(query, SecurityUtils.getUser()));
     }
 
     @SysLog(value = "执行包监督")

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

@@ -52,7 +52,6 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -842,6 +841,121 @@ public class WmSupervisionManager {
         return true;
     }
 
+    // 按照区域 to 服务商的打包进行展示
+    public Page<Map<String, Object>> pageB2BPkg(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;
+
+    }
+
 //     @Transactional(rollbackFor = Exception.class)
 //     public Boolean checkTaskSupervision(WmSupervisionDto.OnTaskSupervisionCheck resource, HnqzUser user) {
 //         Integer supervisionId = resource.getSupervisionId();

+ 8 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmTaskMapper.java

@@ -207,4 +207,12 @@ public interface WmTaskMapper extends DataScopeMapper<WmTask> {
      * @return 任务列表
      */
     List<WmTask> listAvailableTaskForSupervision(@Param(value = "pkgId") Integer pkgId, @Param(value = "ignoreIds") Collection<Integer> ignoreIds);
+
+    /**
+     * 获取可以监督任务(多个包)
+     *
+     * @param pkgIds 积分包ID
+     * @return 任务列表
+     */
+    List<WmTask> listAvailableTaskForSupervision1(@Param(value = "pkgIds") Collection<Integer> pkgIds, @Param(value = "ignoreIds") Collection<Integer> ignoreIds);
 }

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

@@ -19,6 +19,7 @@ import java.sql.Timestamp;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
@@ -232,6 +233,8 @@ public interface WmTaskService extends IService<WmTask> {
      */
     List<WmTask> listAvailableTaskForSupervision(Integer pkgId, Collection<Integer> ignoreIds);
 
+    List<WmTask> listAvailableTaskForSupervision1(Collection<Integer> pkgIds, Collection<Integer> ignoreIds );
+
     List<Map<String, Object>> listTaskInfo(List<WmTask> taskList, String pkgId);
 
 

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

@@ -2925,6 +2925,18 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
         return this.baseMapper.listAvailableTaskForSupervision(pkgId, ignoreIds);
     }
 
+    /**
+     * 获取可监督的任务
+     *
+     * @param pkgIds     积分包ID
+     * @param ignoreIds 忽略的ID
+     * @return 监督任务列表
+     */
+    @Override
+    public List<WmTask> listAvailableTaskForSupervision1(Collection<Integer> pkgIds, Collection<Integer> ignoreIds) {
+        return this.baseMapper.listAvailableTaskForSupervision1(pkgIds, ignoreIds);
+    }
+
     @Override
     public List<Map<String, Object>> listTaskInfo(List<WmTask> taskList, String pkgId) {
         List<Map<String, Object>> resultList = new ArrayList<>();

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

@@ -1390,4 +1390,24 @@
             </foreach>
         </if>
     </select>
+
+    <select id="listAvailableTaskForSupervision1" resultMap="wmTaskMap">
+        SELECT *
+        FROM wm_task t
+        LEFT JOIN sys_chain_node_check_his c ON c.target_id = t.id
+        WHERE c.node_id = 6
+        AND c.check_result = 1
+        <if test="pkgIds != null and pkgIds.size > 0">
+            AND t.score_package_id IN
+            <foreach collection="pkgIds" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </if>
+        <if test="ignoreIds != null and ignoreIds.size > 0">
+            AND t.id NOT IN
+            <foreach collection="ignoreIds" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </if>
+    </select>
 </mapper>