Jelajahi Sumber

fix: 分管领导查询条件加省份简称的区隔,改为使用上级区域的省份简称作为过滤条件

lixuesong 10 jam lalu
induk
melakukan
dc7355c4bb

+ 23 - 7
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/TaskManager.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qunzhixinxi.hnqz.admin.api.constant.UpmsState.AddTaskState;
 import com.qunzhixinxi.hnqz.admin.api.constant.UpmsState.TaskState;
 import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType.AreaType;
+import com.qunzhixinxi.hnqz.admin.api.constant.enums.DeptLevelEnum;
 import com.qunzhixinxi.hnqz.admin.api.constant.enums.PackageStatusEnum;
 import com.qunzhixinxi.hnqz.admin.api.dto.SysCheckChainNodeCheckHistoryDTO;
 import com.qunzhixinxi.hnqz.admin.api.dto.SysCheckChainNodeCheckHistoryDTO.OnCreate;
@@ -17,6 +18,7 @@ import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDictItem;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysEnterpriseArea;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmDaAgent;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmDaDrugEntDrugtable;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmDaHospital;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmScorePackage;
@@ -31,6 +33,7 @@ import com.qunzhixinxi.hnqz.admin.controller.task.vo.TaskRespVO.ToDirectCheck;
 import com.qunzhixinxi.hnqz.admin.mapper.SysCheckChainNodeCheckHistoryMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.SysDeptMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.SysEnterpriseAreaMapper;
+import com.qunzhixinxi.hnqz.admin.mapper.WmDaAgentMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmTaskV2Mapper;
 import com.qunzhixinxi.hnqz.admin.service.SysUserAreaService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaHospitalService;
@@ -44,14 +47,12 @@ import com.qunzhixinxi.hnqz.common.core.exception.BizException;
 import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
 import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
 
-import java.text.DecimalFormat;
 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;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
@@ -92,6 +93,7 @@ public class TaskManager {
   @Resource private WmDaHospitalService wmDaHospitalService;
   @Resource private SysEnterpriseAreaMapper enterpriseAreaMapper;
   @Resource private SysDeptMapper deptMapper;
+  @Resource private WmDaAgentMapper agentMapper;
 
   // 丁凯总作为分管领导可见的服务商
   private static final List<Integer> DING_KAI_DEPT_ID =
@@ -320,11 +322,25 @@ public class TaskManager {
                       && provAreaIds.contains(String.valueOf(entArea.getAreaId()).substring(0, 2)))
               .map(entArea -> Math.toIntExact(entArea.getEntId())).collect(Collectors.toSet());
 
-      List<SysDept> depts = deptMapper.selectBatchIds(entIds);
-      provAbbrs = depts.stream().map(SysDept::getProvAbbr)
-              .filter(abbr -> !StrUtil.isBlank(abbr))
-              .flatMap(abbr -> Stream.of(abbr.split(",")))
-              .collect(Collectors.toSet());
+      // 查询企业id对应的上级区域
+      List<WmDaAgent> daAgents = agentMapper.selectList(Wrappers.<WmDaAgent>lambdaQuery()
+              .in(WmDaAgent::getDeptId, entIds));
+      if (CollUtil.isNotEmpty(daAgents)) {
+        Set<Integer> parentDrugEntIds = daAgents.stream()
+                .map(WmDaAgent::getExtDrugEnt).filter(StrUtil::isNotBlank)
+                .flatMap(extDrugEnt -> Stream.of(extDrugEnt.split(",")))
+                .map(Integer::parseInt).collect(Collectors.toSet());
+
+        if (CollUtil.isNotEmpty(parentDrugEntIds)) {
+          // 获取上级区域的省份简称
+          List<SysDept> parentEnts = agentMapper.listDeptByAgentIds(parentDrugEntIds, DeptLevelEnum.CSO_L1.getVal());
+          provAbbrs = parentEnts.stream()
+                  .map(SysDept::getProvAbbr)
+                  .filter(StrUtil::isNotBlank)
+                  .flatMap(abbr -> Stream.of(abbr.split(",")))
+                  .collect(Collectors.toSet());
+        }
+      }
     }
     return provAbbrs;
   }

+ 10 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmDaAgentMapper.java

@@ -1,6 +1,7 @@
 package com.qunzhixinxi.hnqz.admin.mapper;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmDaAgent;
 import com.qunzhixinxi.hnqz.common.data.datascope.DataScopeMapper;
 import org.apache.ibatis.annotations.Mapper;
@@ -9,6 +10,7 @@ import org.apache.ibatis.annotations.Param;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * 档案-代理商
@@ -82,4 +84,12 @@ public interface WmDaAgentMapper extends DataScopeMapper<WmDaAgent> {
      * @return cso列表
      */
     List<WmDaAgent> listAgentByDeptRelation(@Param("deptId") Integer deptId);
+
+    /**
+     * 按服务商、区域ID列出部门
+     *
+     * @param agentIds 服务商、区域ID
+     * @return {@link List }<{@link SysDept }> 企业列表
+     */
+    List<SysDept> listDeptByAgentIds(@Param("agentIds") Set<Integer> agentIds, @Param("deptLevel") Integer deptLevel);
 }

+ 16 - 0
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmDaAgentMapper.xml

@@ -380,4 +380,20 @@
     WHERE r.ancestor = #{deptId, jdbcType=INTEGER}
   </select>
 
+  <!-- 根据服务商、区域ID查询dept -->
+  <select id="listDeptByAgentIds" resultType="com.qunzhixinxi.hnqz.admin.api.entity.SysDept">
+    SELECT d.*
+    FROM sys_dept d
+           LEFT JOIN "wm_da_agent" da ON da."dept_id" = d."dept_id"
+    WHERE da."del_flag" = '0'
+      AND d."del_flag" = '0'
+      AND da."id" in
+      <foreach collection="agentIds" item="id" open="(" separator="," close=")">
+        #{id, jdbcType=INTEGER}
+      </foreach>
+      <if test="deptLevel != null">
+        AND d.level = #{deptLevel, jdbcType=INTEGER}
+      </if>
+  </select>
+
 </mapper>