Преглед изворни кода

核查院级任务时,核查用户科室合并

songxinlu пре 4 година
родитељ
комит
7b4325e76d

+ 127 - 66
src/main/java/com/diagbot/facade/MedCheckInfoFacade.java

@@ -402,37 +402,99 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
         checkUserVOS.setDeptStations(Lists.newArrayList("住院"));
         checkUserVOS.setHospitalId(hospitalId);
         List<CheckUserDTO> checkUserDTOS = baseMapper.getCheckUser(checkUserVOS);
-        //2.1获取科室详情
-        //2.1.1获取院区核查的人员id
-        List<Long> userIds = sysUserRoleFacade.list(new QueryWrapper<SysUserRole>()
-                .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .eq("role_id",CheckerRoleEnum.HOSP_GENERAL.getKey())).stream()
-                .map(SysUserRole::getUserId).collect(Collectors.toList());
-        List<String> deptIds = sysUserDeptFacade.list(new QueryWrapper<SysUserDept>()
-                .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .eq("hospital_id",hospitalId)
-                .in("user_id",userIds)).stream()
-                .map(SysUserDept::getDeptId).collect(Collectors.toList());
-        Map<String,String> deptMap = basDeptInfoFacade.list(new QueryWrapper<BasDeptInfo>()
-                .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .eq("hospital_id",hospitalId)
-                .eq("station","住院")
-                .in("dept_id",deptIds)).stream()
-                .collect(Collectors.toMap(BasDeptInfo::getDeptId,BasDeptInfo::getDeptName, (v1, v2) -> v2));
-        if(deptMap!=null&&!deptMap.isEmpty())
-        {
+        //2.用户科室整合
+        margeDept(checkRoleMap,checkUserDTOS,CheckerRoleEnum.HOSP_SUPERVISOR.getKey()+"");
+//        //2.1获取科室详情
+//        //2.1.1获取院区核查的人员id
+//        List<Long> userIds = sysUserRoleFacade.list(new QueryWrapper<SysUserRole>()
+//                .eq("is_deleted", IsDeleteEnum.N.getKey())
+//                .eq("role_id",CheckerRoleEnum.HOSP_GENERAL.getKey())).stream()
+//                .map(SysUserRole::getUserId).collect(Collectors.toList());
+//        List<String> deptIds = sysUserDeptFacade.list(new QueryWrapper<SysUserDept>()
+//                .eq("is_deleted", IsDeleteEnum.N.getKey())
+//                .eq("hospital_id",hospitalId)
+//                .in("user_id",userIds)).stream()
+//                .map(SysUserDept::getDeptId).collect(Collectors.toList());
+//        Map<String,String> deptMap = basDeptInfoFacade.list(new QueryWrapper<BasDeptInfo>()
+//                .eq("is_deleted", IsDeleteEnum.N.getKey())
+//                .eq("hospital_id",hospitalId)
+//                .eq("station","住院")
+//                .in("dept_id",deptIds)).stream()
+//                .collect(Collectors.toMap(BasDeptInfo::getDeptId,BasDeptInfo::getDeptName, (v1, v2) -> v2));
+        if(!ListUtil.isEmpty(checkRoleMap.get(CheckerRoleEnum.HOSP_SUPERVISOR.getKey()+""))){
             //2.3获取所有医生信息的核查数
             CheckUserVO checkUserVO = new CheckUserVO();
             checkUserVO.setJobType(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey());
             //通过核查人员id获取核查人员的核查任务数
             List<DeptCheckUserDTO> userJobs = baseMapper.getDeptJobNumByUserId(checkUserVO);
-            addCheckInfoMaps(checkRoleMap,deptMap,userJobs,checkUserDTOS,CheckerRoleEnum.HOSP_SUPERVISOR.getKey(),CheckJobTypeEnum.HOSP_SUPERVISOR.getKey());
+            addCheckInfoMaps(checkRoleMap,null,userJobs,checkUserDTOS,CheckerRoleEnum.HOSP_SUPERVISOR.getKey(),CheckJobTypeEnum.HOSP_SUPERVISOR.getKey());
         }
         else {
             checkRoleMap.put(CheckerRoleEnum.HOSP_SUPERVISOR.getKey()+"",new ArrayList<>());
         }
 
     }
+    /**
+     * @Author songxl
+     * @Description 院区人员用户科室合并
+     * @Date  2021/6/1
+     * @Param [checkRoleMap, checkUserDTOS, s]
+     * @Return void
+     * @MethodName margeDept
+     */
+    private void margeDept(Map<String, List<CheckDeptDTO>> checkRoleMap, List<CheckUserDTO> checkUserDTOS, String roleId) {
+        if(ListUtil.isEmpty(checkUserDTOS)){return;}
+        Set<String> userIds = checkUserDTOS.stream().map(CheckUserDTO::getDoctorId).collect(Collectors.toSet());
+        try {
+            List<CheckDeptDTO> tempDepts = new ArrayList<>();
+            userIds.stream().forEach(userId -> {
+                //获取该用户的科室拼接
+                StringBuilder deptIdBuilder = new StringBuilder();
+                StringBuilder deptNameBuilder = new StringBuilder();
+                StringBuilder userName = new StringBuilder();
+                checkUserDTOS.stream().forEach(checkUserDTO -> {
+                    if(userId.equals(checkUserDTO.getDoctorId())){
+                        deptIdBuilder.append(checkUserDTO.getDeptId()).append(",");
+                        deptNameBuilder.append(checkUserDTO.getDeptName()).append(",");
+                        if(userName.length()==0){userName.append(checkUserDTO.getDoctorName());}
+                    }
+                });
+                String deptId = deptIdBuilder.substring(0,deptIdBuilder.length()-1);
+                String deptName = deptNameBuilder.substring(0,deptNameBuilder.length()-1);
+                DeptCheckUserDTO deptCheckUserDTO = new DeptCheckUserDTO();
+                deptCheckUserDTO.setDoctorId(userId);
+                deptCheckUserDTO.setDoctorName(userName.toString());
+                deptCheckUserDTO.setDeptId(deptId);
+                deptCheckUserDTO.setDeptName(deptName);
+                if(tempDepts.stream().map(CheckDeptDTO::getDeptId).collect(Collectors.toList())
+                        .contains(deptId)){
+                    tempDepts.stream().filter(checkDeptDTO -> checkDeptDTO.getDeptId().equals(deptId)).forEach(checkDeptDTO -> {
+                        if(!ListUtil.isEmpty(checkDeptDTO.getDeptcheckUsers())){
+                            checkDeptDTO.getDeptcheckUsers().add(deptCheckUserDTO);
+                        }else {
+                            List<DeptCheckUserDTO> deptcheckUsers = new ArrayList();
+                            deptcheckUsers.add(deptCheckUserDTO);
+                            checkDeptDTO.setDeptcheckUsers(deptcheckUsers);
+                        }
+                    });
+                }
+                else {
+                    CheckDeptDTO checkDeptDTO = new CheckDeptDTO();
+                    checkDeptDTO.setDeptId(deptId);
+                    checkDeptDTO.setDeptName(deptName);
+                    List<DeptCheckUserDTO> deptcheckUsers = new ArrayList();
+                    deptcheckUsers.add(deptCheckUserDTO);
+                    checkDeptDTO.setDeptcheckUsers(deptcheckUsers);
+                    tempDepts.add(checkDeptDTO);
+                }
+            });
+            checkRoleMap.put(roleId+"",tempDepts);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+
+    }
+
     /**
      * @Author songxl
      * @Description 质控科管理员获取管理的科室以及科室包涵质控人员
@@ -562,37 +624,36 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
      */
     private void addCheckInfoMaps(Map<String, List<CheckDeptDTO>> checkRoleMap, Map<String, String> deptMap,
                                   List<DeptCheckUserDTO> userJobs, List<CheckUserDTO> checkUserDTOS, int roleId,int jobType) {
-        if(deptMap.isEmpty()||checkUserDTOS.isEmpty()){}
-        checkRoleMap.put(roleId+"",new ArrayList<CheckDeptDTO>());
-        //遍历科室
-        for(String deptId:deptMap.keySet())
-        {
-            //科室对象
-            CheckDeptDTO checkDeptDTO = new CheckDeptDTO();
-            checkDeptDTO.setDeptId(deptId);
-            checkDeptDTO.setDeptName(deptMap.get(deptId));
-            checkDeptDTO.setDeptcheckUsers(new ArrayList<DeptCheckUserDTO>());
-            //遍历医生
-            for(CheckUserDTO checkUserDTO:checkUserDTOS)
+        //非院区任务
+        if(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey()!=jobType){
+            if(deptMap.isEmpty()||checkUserDTOS.isEmpty()){return;}
+            checkRoleMap.put(roleId+"",new ArrayList<>());
+            //遍历科室
+            for(String deptId:deptMap.keySet())
             {
-                //同一科室
-                if(checkDeptDTO.getDeptId().equals(checkUserDTO.getDeptId()))
+                //科室对象
+                CheckDeptDTO checkDeptDTO = new CheckDeptDTO();
+                checkDeptDTO.setDeptId(deptId);
+                checkDeptDTO.setDeptName(deptMap.get(deptId));
+                checkDeptDTO.setDeptcheckUsers(new ArrayList<DeptCheckUserDTO>());
+                //遍历医生
+                for(CheckUserDTO checkUserDTO:checkUserDTOS)
                 {
-                    DeptCheckUserDTO deptCheckUserDTO = new DeptCheckUserDTO();
-                    deptCheckUserDTO.setDeptId(checkUserDTO.getDeptId());
-                    deptCheckUserDTO.setDeptName(checkUserDTO.getDeptName());
-                    deptCheckUserDTO.setDoctorId(checkUserDTO.getDoctorId());
-                    deptCheckUserDTO.setDoctorName(checkUserDTO.getDoctorName());
-                    checkDeptDTO.getDeptcheckUsers().add(deptCheckUserDTO);
+                    //同一科室
+                    if(checkDeptDTO.getDeptId().equals(checkUserDTO.getDeptId()))
+                    {
+                        DeptCheckUserDTO deptCheckUserDTO = new DeptCheckUserDTO();
+                        deptCheckUserDTO.setDeptId(checkUserDTO.getDeptId());
+                        deptCheckUserDTO.setDeptName(checkUserDTO.getDeptName());
+                        deptCheckUserDTO.setDoctorId(checkUserDTO.getDoctorId());
+                        deptCheckUserDTO.setDoctorName(checkUserDTO.getDoctorName());
+                        checkDeptDTO.getDeptcheckUsers().add(deptCheckUserDTO);
+                    }
                 }
-            }
-            for(DeptCheckUserDTO deptCheckUserDTO:checkDeptDTO.getDeptcheckUsers())
-            {
-                //遍历数量
-                for(DeptCheckUserDTO jobNumDto:userJobs)
+                for(DeptCheckUserDTO deptCheckUserDTO:checkDeptDTO.getDeptcheckUsers())
                 {
-                    //非院区任务
-                    if(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey()!=jobType)
+                    //遍历数量
+                    for(DeptCheckUserDTO jobNumDto:userJobs)
                     {
                         //这个科室有这个人
                         if(deptCheckUserDTO.getDeptId().equals(jobNumDto.getDeptId()))
@@ -610,29 +671,29 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
 
                         }
                     }
-                    //院区任务不是同一科室的人员数量增加
-                    else if(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey()==jobType)
-                    {
-                        if(!deptCheckUserDTO.getDeptId().equals(jobNumDto.getDeptId()))
-                        {
-                            if(deptCheckUserDTO.getDoctorId().equals(jobNumDto.getDoctorId()))
-                            {
-                                if(jobNumDto.getStatus()==0){
-                                    deptCheckUserDTO.setJobNum(deptCheckUserDTO.getJobNum()+jobNumDto.getJobNum());
+                }
+                checkRoleMap.get(roleId+"").add(checkDeptDTO);
+            }
+        }
+        //院区任务不是同一科室的人员数量增加
+        else if(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey()==jobType)
+        {
+            checkRoleMap.get(roleId+"").stream().forEach(checkDeptDTO -> {
+                if(!ListUtil.isEmpty(checkDeptDTO.getDeptcheckUsers())){
+                    checkDeptDTO.getDeptcheckUsers().stream().forEach(deptCheckUser -> {
+                        userJobs.stream().forEach(userJob -> {
+                            if(deptCheckUser.getDoctorId().equals(userJob.getDoctorId())){
+                                if(userJob.getStatus()==0){
+                                    deptCheckUser.setJobNum(deptCheckUser.getJobNum()+userJob.getJobNum());
                                 }
-                                if(jobNumDto.getStatus()==1){
-
-                                    deptCheckUserDTO.setCheckNum(deptCheckUserDTO.getCheckNum()+jobNumDto.getJobNum());
+                                if(userJob.getStatus()==1){
+                                    deptCheckUser.setCheckNum(deptCheckUser.getCheckNum()+userJob.getJobNum());
                                 }
                             }
-
-                        }
-                    }
-
-
+                        });
+                    });
                 }
-            }
-            checkRoleMap.get(roleId+"").add(checkDeptDTO);
+            });
         }
     }
 

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

@@ -56,6 +56,7 @@
                 #{item}
             </foreach>
         </if>
+        order by c.dept_id
     </select>
     <!--核查人员通过id获取核查人员的核查任务数-->
     <select id="getDeptJobNumByUserId" resultType="com.diagbot.dto.DeptCheckUserDTO">