Forráskód Böngészése

分配、核查列表页改为通过医疗组医生获取核查病历

songxinlu 3 éve
szülő
commit
1e5aceec99

+ 30 - 55
src/main/java/com/diagbot/facade/MedCheckInfoFacade.java

@@ -34,6 +34,7 @@ import com.diagbot.vo.CheckJobPageVO;
 import com.diagbot.vo.CheckUserVO;
 import com.diagbot.vo.DistributionJobVO;
 import com.diagbot.vo.MedCheckInfoAddVO;
+import com.diagbot.vo.SysUserBaseVO;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -219,69 +220,43 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
         //临床科室监管人员 或 院级监管人员
         else if (searchRoleIds.contains(CheckerRoleEnum.DEPT_SUPERVISOR.getKey() * 1l)
                 || searchRoleIds.contains(CheckerRoleEnum.HOSP_SUPERVISOR.getKey() * 1l)) {
-            //查询没有指定科室
-            if (checkJobVO.getDepts() == null || checkJobVO.getDepts().isEmpty()) {
-                //科室获取待分配任务所在科室集合
-                if (CheckJobTypeEnum.DEPT_SUPERVISOR.getKey() == Integer.parseInt(checkJobVO.getJobType())) {
-                    //获取当前用户科室
+            //临床科室
+            if (CheckJobTypeEnum.DEPT_SUPERVISOR.getKey() == Integer.parseInt(checkJobVO.getJobType())) {
+                //获取当前用户科室
+                if(ListUtil.isEmpty(checkJobVO.getDepts())){
                     List<String> deptIds = sysUserDeptFacade.list(new QueryWrapper<SysUserDept>()
                             .eq("is_deleted", IsDeleteEnum.N.getKey())
                             .eq("hospital_id", hospitalId)
                             .eq("user_id", principleId)
                     ).stream().map(SysUserDept::getDeptId).collect(Collectors.toList());
-                    if (ListUtil.isNotEmpty(deptIds)) {
-                        checkJobVO.setDepts(deptIds);
+                    checkJobVO.setDepts(deptIds);
+                }
+                //如果没有添加医疗组筛选条件默认筛选全部医疗组
+                List<String> codes = null;
+                if (ListUtil.isEmpty(checkJobVO.getMedoups())) {
+                    //通过科室获取医疗组
+                    List<DeptMedoup> deptMedoups = deptMedoupService.list(new QueryWrapper<DeptMedoup>()
+                            .eq("is_deleted", IsDeleteEnum.N.getKey())
+                            .in("dept_id", checkJobVO.getDepts()));
+                    if (ListUtil.isNotEmpty(deptMedoups)) {
+                        codes = deptMedoups.stream().map(DeptMedoup::getMedoupCode).collect(Collectors.toList());
                     }
-                    //获取病区集合
-//                    List<String> wards = regionDeptService.list(new QueryWrapper<RegionDept>()
-//                            .eq("is_deleted", IsDeleteEnum.N.getKey())
-//                            .eq("hospital_id", hospitalId)
-//                            .in(ListUtil.isNotEmpty(deptIds), "dept_id", deptIds)
-//                    ).stream().map(RegionDept::getRegionCode).collect(Collectors.toList());
-//                    if (ListUtil.isNotEmpty(wards)) {
-//                        checkJobVO.setRecords(wards);
-//                    }
-
-                    //医疗组(没给医疗组条件默认全部)
-
-//                    List<String> doctorIds = sysUserFacade.list(new QueryWrapper<SysUser>()
-//                            .eq("is_deleted", IsDeleteEnum.N.getKey())
-//                            .eq("id", principleId)
-//                    ).stream().map(SysUser::getUsername).collect(Collectors.toList());
-//                    if (ListUtil.isNotEmpty(doctorIds)) {
-//                        List<String> medoups = medoupUserService.list(new QueryWrapper<BasDoctorInfo>()
-//                                .eq("is_deleted", IsDeleteEnum.N.getKey())
-//                                .in("doctor_id", doctorIds)
-//                        ).stream().map(BasDoctorInfo::getGroupId).collect(Collectors.toList());
-//                        if (ListUtil.isNotEmpty(medoups)) {
-//                            checkJobVO.setMedoups(medoups);
-//                        }
-//                    }
-                    return getCheckList(checkJobVO);
+                } else {
+                    codes = checkJobVO.getMedoups();
                 }
-                //院区获取
-                if (CheckJobTypeEnum.HOSP_SUPERVISOR.getKey() == Integer.parseInt(checkJobVO.getJobType())) {
-                    //获取管理员所在科室
-//                    List<String> deptIds = sysUserDeptFacade.list(new QueryWrapper<SysUserDept>()
-//                            .eq("is_deleted", IsDeleteEnum.N.getKey())
-//                            .eq("hospital_id",hospitalId)
-//                            .eq("user_id",principleId)
-//                    ).stream().map(SysUserDept::getDeptId).collect(Collectors.toList());
-//                    //获取所有院区核查人员所在科室
-//                    CheckUserVO checkUserVOS = new CheckUserVO();
-//                    checkUserVOS.setRoleIds(Lists.newArrayList(CheckerRoleEnum.HOSP_GENERAL.getKey()*1l));
-//                    checkUserVOS.setDeptStations(Lists.newArrayList("住院"));
-//                    checkUserVOS.setHospitalId(hospitalId);
-//                    List<CheckUserDTO> checkUserDTOS = baseMapper.getCheckUser(checkUserVOS);
-//                    Set<String> hospGeneralDeptIds= checkUserDTOS.stream()
-//                            .map(CheckUserDTO::getDeptId).collect(Collectors.toSet());
-//                    //去除管理员所在科室
-//                    if(hospGeneralDeptIds!=null&&!hospGeneralDeptIds.isEmpty()&&deptIds!=null){
-//                        hospGeneralDeptIds.removeAll(deptIds);
-//                        checkJobVO.setDeptList(new ArrayList<>(hospGeneralDeptIds));
-//                    }
-                    return getCheckList(checkJobVO);
+                if (ListUtil.isNotEmpty(codes)) {
+                    List<BasDoctorInfo> basDoctorInfos = basDoctorInfoFacade.list(new QueryWrapper<BasDoctorInfo>()
+                            .eq("is_deleted", IsDeleteEnum.N.getKey())
+                            .in("group_id", codes)
+                            .or().isNull("group_id")
+                            .in(ListUtil.isNotEmpty(checkJobVO.getDepts()),"dept_id",checkJobVO.getDepts()));
+                    checkJobVO.setDoctorIds(basDoctorInfos.stream().map(BasDoctorInfo::getDoctorId).collect(Collectors.toList()));
                 }
+                //通过主治医生去查,病区、科室、医疗组不作为筛选条件
+                checkJobVO.setDepts(null);
+                checkJobVO.setWards(null);
+                checkJobVO.setMedoups(null);
+                return getCheckList(checkJobVO);
             }
             return getCheckList(checkJobVO);
         } else {

+ 53 - 1
src/main/java/com/diagbot/facade/RecordCheckFacade.java

@@ -6,6 +6,8 @@ import com.diagbot.dto.BehospitalInfoAgeDTO;
 import com.diagbot.dto.CheckedRecordListDTO;
 import com.diagbot.dto.SysUserDeptDTO;
 import com.diagbot.entity.BasDeptInfo;
+import com.diagbot.entity.BasDoctorInfo;
+import com.diagbot.entity.DeptMedoup;
 import com.diagbot.entity.MedBehospitalType;
 import com.diagbot.entity.MedCheckInfo;
 import com.diagbot.entity.SysRole;
@@ -20,6 +22,7 @@ import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.MedQcresultDetailService;
+import com.diagbot.service.impl.DeptMedoupServiceImpl;
 import com.diagbot.service.impl.MedBehospitalTypeServiceImpl;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.ListUtil;
@@ -34,6 +37,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.userdetails.User;
 import org.springframework.stereotype.Component;
 
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -65,6 +69,10 @@ public class RecordCheckFacade {
     BasDeptInfoFacade basDeptInfoFacade;
     @Autowired
     MedBehospitalTypeServiceImpl medBehospitalTypeServiceImpl;
+    @Autowired
+    DeptMedoupServiceImpl deptMedoupService;
+    @Autowired
+    BasDoctorInfoFacade basDoctorInfoFacade;
 
 
     public IPage<CheckedRecordListDTO> checkedRecordList(CheckedRecordListVO checkedRecordListVO) {
@@ -106,7 +114,8 @@ public class RecordCheckFacade {
                     deptIds.remove(deptInfo.getDeptId());
                 }
                 JobTypes.add(CheckJobTypeEnum.DEPT_SUPERVISOR.getKey() + "");
-                userIds.addAll(getUserIdsOfRoleId(hospitalId, deptIds, CheckerRoleEnum.DEPT_GENERAL.getKey()));
+//                userIds.addAll(getUserIdsOfRoleId(hospitalId, deptIds, CheckerRoleEnum.DEPT_GENERAL.getKey()));
+                userIds.addAll(getUserIdsOfRoleId(checkedRecordListVO,deptIds, CheckerRoleEnum.DEPT_GENERAL.getKey()));
             } else if ((roleId.intValue() == CheckerRoleEnum.DEPT_GENERAL.getKey() && ListUtil.isNotEmpty(deptIds))
                     || roleId.intValue() == CheckerRoleEnum.QUAT_GENERAL.getKey() || roleId.intValue() == CheckerRoleEnum.HOSP_GENERAL.getKey()) {
                 userIds.add(userId);
@@ -133,6 +142,11 @@ public class RecordCheckFacade {
         checkedRecordListVO.setCurrentDeptIds(String.join(",", deptIds));
         checkedRecordListVO.setCurrentGeneralUserIds(userIds);
         checkedRecordListVO.setHospitalId(hospitalId);
+
+        //通过主治医生去查,病区、科室、医疗组不作为筛选条件
+        checkedRecordListVO.setDepts(null);
+        checkedRecordListVO.setWards(null);
+        checkedRecordListVO.setMedoups(null);
         IPage<CheckedRecordListDTO> iPage = medCheckInfoFacade.getBaseMapper().checkedRecordList(checkedRecordListVO);
 
         if (ListUtil.isNotEmpty(iPage.getRecords())) {
@@ -148,6 +162,44 @@ public class RecordCheckFacade {
         return iPage;
     }
 
+    private List<Long> getUserIdsOfRoleId(CheckedRecordListVO checkedRecordListVO,List<String> depts, long roleId) {
+        //如果没有添加医疗组筛选条件默认筛选全部医疗组
+        List<String> codes = null;
+        if (ListUtil.isEmpty(checkedRecordListVO.getMedoups())) {
+            //通过科室获取医疗组
+            List<DeptMedoup> deptMedoups = deptMedoupService.list(new QueryWrapper<DeptMedoup>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("dept_id", depts));
+            if (ListUtil.isNotEmpty(deptMedoups)) {
+                codes = deptMedoups.stream().map(DeptMedoup::getMedoupCode).collect(Collectors.toList());
+            }
+        } else {
+            codes = checkedRecordListVO.getMedoups();
+        }
+        if (ListUtil.isNotEmpty(codes)) {
+            List<BasDoctorInfo> basDoctorInfos = basDoctorInfoFacade.list(new QueryWrapper<BasDoctorInfo>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("group_id", codes));
+            List<String> usernames = basDoctorInfos.stream().map(BasDoctorInfo::getDoctorId).collect(Collectors.toList());
+            if (ListUtil.isEmpty(usernames)) {
+                return null;
+            }
+            //获取用户id
+            List<Long> userIds = sysUserFacade.list(new QueryWrapper<SysUser>()
+                     .in("username",usernames)
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    ).stream().map(SysUser::getId).collect(Collectors.toList());
+            if (ListUtil.isEmpty(userIds)) {
+                return null;
+            }
+            QueryWrapper<SysUserRole> sysUserRoleQueryWrapper = new QueryWrapper<>();
+            sysUserRoleQueryWrapper.in("user_id", userIds);
+            sysUserRoleQueryWrapper.eq("role_id", roleId);
+            return sysUserRoleFacade.list(sysUserRoleQueryWrapper).stream().map(i -> i.getUserId()).collect(Collectors.toList());
+        }
+        return null;
+    }
+
     private List<Long> getUserIdsOfRoleId(Long hospitalId, List<String> deptIds, long roleId) {
         QueryWrapper<SysUserDept> sysUserDeptQueryWrapper = new QueryWrapper<>();
         sysUserDeptQueryWrapper.eq("hospital_id", hospitalId);

+ 2 - 1
src/main/java/com/diagbot/vo/CheckJobPageVO.java

@@ -53,6 +53,7 @@ public class CheckJobPageVO extends Page implements Serializable {
     @ApiModelProperty("筛选分值集合")
     private List<String> values;
 
-
+    @ApiModelProperty("医生id")
+    private List<String> doctorIds;
 
 }

+ 6 - 0
src/main/resources/mapper/MedCheckInfoMapper.xml

@@ -227,6 +227,12 @@
                 #{item}
             </foreach>
         </if>
+        <if test="doctorIds !=null and doctorIds.size()!=0 ">
+            AND a.doctor_id in
+            <foreach collection="doctorIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
         ) a
         JOIN med_check_info b ON a.behospital_code = b.behospital_code
         AND a.hospital_id = b.hospital_id