2 次代码提交 f5363ade9a ... 19648c7370

作者 SHA1 备注 提交日期
  jinhu 19648c7370 v2025.8.11 6 天之前
  jinhu 7a8a5fab49 v2025.8.11 6 天之前

+ 10 - 1
src/main/java/com/kcim/controller/QualificationManageController.java

@@ -63,7 +63,7 @@ public class QualificationManageController {
     @ApiOperation("资质授权-按医生查询")
     @GetMapping("listQualificationApplyByDoctor")
     public Result listQualificationApplyByDoctor(@RequestParam(value = "userId", required = true) String userId){
-        return Result.ok(qualificationManageService.listQualificationApply(userId));
+        return Result.ok(qualificationManageService.listQualificationApplyByDoctor(userId));
     }
 
     /**
@@ -158,6 +158,15 @@ public class QualificationManageController {
         return Result.ok(qualificationManageService.getMyInfo());
     }
 
+    /**
+     * 获取医生的信息
+     */
+    @ApiOperation("获取医生的信息")
+    @GetMapping("getDoctorInfo")
+    public Result getDoctorInfo(@RequestParam(value = "userId") Long userId) {
+        return Result.ok(qualificationManageService.getDoctorInfo(userId));
+    }
+
     /**
      * 保存当前登录人的附件
      */

+ 61 - 2
src/main/java/com/kcim/dao/repository/QualificationApplyRepository.java

@@ -244,6 +244,64 @@ public class QualificationApplyRepository extends ServiceImpl<QualificationApply
         return list;
     }
 
+    public List<QualificationApply> listQualificationApplyByUserId(String userId){
+        //ApplyStatus 当前状态 1草稿 2待科主任审核 3待医务部审核 4待院长审核 5审核通过 6驳回
+        LambdaQueryWrapper<QualificationApply> queryWrapper = new LambdaQueryWrapper<>();
+
+        queryWrapper.eq(QualificationApply::getHospId, BaseUtil.getCurrentLoginHospId());
+        queryWrapper.eq(QualificationApply::getDelFlag, NumberConstant.ZERO);
+        queryWrapper.eq(QualificationApply::getApplyStatus, NumberConstant.FIVE);
+        queryWrapper.eq(QualificationApply::getUserId, userId);
+
+        List<QualificationApply> list = this.list(queryWrapper);
+        //如果 list 为空,直接返回
+        if(CollectionUtils.isEmpty(list)){
+            return list;
+        }
+
+        //医生信息
+        UserInfo empInfo = userInfoRepository.getById(userId);
+        //资质信息
+        List<Qualification> qualificationList = qualificationRepository.list();
+        Map<String,Qualification> qualificationMap = qualificationList.stream().collect(Collectors.toMap(Qualification::getCode, vo -> vo, (a, b) -> b));
+
+        //手术级别字典
+        List<SysDictionary> dicOperationLevel = sysDictionaryRepository.listByType("SURGICAL_AND_OPERATIONAL_LEVELS");
+        Map<String,SysDictionary> operationLevelMap = dicOperationLevel.stream().collect(Collectors.toMap(SysDictionary::getCode, vo -> vo, (a, b) -> b));
+
+        //调整记录
+        List<QualificationApplyAdjust> listApplyAdjust = applyAdjustRepository.list();
+        Map<Integer, List<QualificationApplyAdjust>> qualificationApplyAdjustMap = listApplyAdjust.stream().collect(Collectors.groupingBy(QualificationApplyAdjust::getQualificationApplyId));
+
+        for(QualificationApply apply: list){
+            //医生信息
+            apply.setUserInfo(empInfo);
+            //资质信息
+            Qualification qualification = qualificationMap.get(apply.getQualificationCode());
+
+            //手术等级
+            if(!StringUtils.isEmpty(qualification.getOperationLevelCode())){
+                SysDictionary operationLevel = operationLevelMap.get(qualification.getOperationLevelCode());
+                if(operationLevel != null){
+                    qualification.setOperationLevelName(operationLevel.getName());
+                }
+            }
+            apply.setQualificationInfo(qualification);
+
+            //调整历史
+            List<QualificationApplyAdjust> applyAdjustList = qualificationApplyAdjustMap.get(apply.getId());
+            if(!CollectionUtils.isEmpty(applyAdjustList)) {
+                //调整历史-调整人姓名
+                for(QualificationApplyAdjust adjust : applyAdjustList){
+                    adjust.setAdjustUserName(empInfo.getName());
+                }
+                apply.setApplyAdjust(applyAdjustList);
+            }
+        }
+        list.sort((Comparator.comparing(QualificationApply::getCurrentStatus, Comparator.reverseOrder()).thenComparing(QualificationApply::getApplyDate, Comparator.reverseOrder())));
+        return list;
+    }
+
     public List<QualificationApply> listQualificationApplyByQualificationCode(String qualificationCode){
         //ApplyStatus 当前状态 1草稿 2待科主任审核 3待医务部审核 4待院长审核 5审核通过 6驳回
         LambdaQueryWrapper<QualificationApply> queryWrapper = new LambdaQueryWrapper<>();
@@ -281,8 +339,7 @@ public class QualificationApplyRepository extends ServiceImpl<QualificationApply
         for(QualificationApply apply: list){
             //医生信息
             apply.setUserInfo(empMap.get(apply.getUserId()));
-            //资质信息
-            apply.setQualificationInfo(qualification);
+
             //手术等级
             if(!StringUtils.isEmpty(qualification.getOperationLevelCode())){
                 SysDictionary operationLevel = operationLevelMap.get(qualification.getOperationLevelCode());
@@ -290,6 +347,8 @@ public class QualificationApplyRepository extends ServiceImpl<QualificationApply
                     qualification.setOperationLevelName(operationLevel.getName());
                 }
             }
+
+            //资质信息
             apply.setQualificationInfo(qualification);
 
             //调整历史

+ 2 - 0
src/main/java/com/kcim/service/QualificationManageService.java

@@ -31,6 +31,8 @@ public interface QualificationManageService extends IService<QualificationApply>
 
     Object getMyInfo();
 
+    Object getDoctorInfo(Long userId);
+
     Object listAllDepartment(String queryCondition);
 
     Object listMyAvailableQualification(String qualificationName, String operationLevelCode, Integer techFlag, Integer operationFlag, Integer current, Integer pageSize);

+ 105 - 69
src/main/java/com/kcim/service/impl/QualificationManageServiceImpl.java

@@ -52,7 +52,6 @@ public class QualificationManageServiceImpl extends ServiceImpl<QualificationApp
 
         //资质分类集合
         List<QualificationType> qualificationTypeList = qualificationTypeRepository.list();
-        Map<String, QualificationType> qualificationTypeMap = qualificationTypeList.stream().collect(Collectors.toMap(QualificationType::getCode, vo -> vo, (a, b) -> b));
 
         //遍历qualificationMap中的每个项目
         qualificationMap.forEach((qualificationCode, qualification) -> {
@@ -154,7 +153,7 @@ public class QualificationManageServiceImpl extends ServiceImpl<QualificationApp
 
     @Override
     public Object listQualificationApplyByDoctor(String userId){
-        List<QualificationApply> list = qualificationApplyRepository.listByQualification(null,userId);
+        List<QualificationApply> list = qualificationApplyRepository.listQualificationApplyByUserId(userId);
         return geneQualificationStatus(list);
     }
 
@@ -183,87 +182,117 @@ public class QualificationManageServiceImpl extends ServiceImpl<QualificationApp
         //返回的集合
         List<QualificationManageForDoctor> listReturn = new ArrayList<>();
 
-        //资质集合
+        //所有有效的资质
         List<Qualification> qualificationList = qualificationRepository.list();
-
-        //有效的资质授权
-        List<QualificationApply> list = qualificationApplyRepository.listByQualification();
-
-        //过滤的科室代码和其下级代码组成的列表
-        List<String> listDept = getDepartmentCodeRecursion(departmentRepository.list(),deptCode);
+        Map<String,Qualification> qualificationMap = qualificationList.stream().collect(Collectors.toMap(Qualification::getCode, vo -> vo, (a, b) -> b));
 
         //人员列表
         List<UserInfo> empList = userInfoRepository.list();
         Map<Long,UserInfo> empMap = empList.stream().collect(Collectors.toMap(UserInfo::getId, vo -> vo, (a, b) -> b));
 
-        for(QualificationApply qualificationApply : list){
-
-            //资质字典
-            Qualification qualification = qualificationList.stream().filter(q -> q.getCode().equals(qualificationApply.getQualificationCode())).findFirst().get();
-            //资质名称
-            String qualificationName = qualification.getName();
-
-            //科室过滤
-            if(!StringUtils.isEmpty(deptCode) && !listDept.contains(qualificationApply.getUserInfo().getDeptCode())){
-                continue;
-            }
+        //遍历每个医生
+        empMap.forEach((empId,emp) -> {
             //姓名过滤
-            if(!StringUtils.isEmpty(userName) && !qualificationApply.getUserInfo().getName().contains(userName)){
-                continue;
+            if(!StringUtils.isEmpty(userName) && !emp.getName().contains(userName)){
+                return;
             }
-            if(!CollectionUtils.isEmpty(qualificationApply.getApplyAdjust())){
-                //调整历史-调整人姓名
-                for(QualificationApplyAdjust adjust : qualificationApply.getApplyAdjust()){
-                    adjust.setAdjustUserName(empMap.get(adjust.getUserId()).getName());
-                }
+            //科室过滤
+            if(!StringUtils.isEmpty(deptCode) && !emp.getDeptCode().equals(deptCode)){
+                return;
             }
+            QualificationManageForDoctor qualificationManageForDoctor = new QualificationManageForDoctor();
+            qualificationManageForDoctor.setUserInfo(emp);
+            qualificationManageForDoctor.setQualificationList("-");
+            listReturn.add(qualificationManageForDoctor);
+        });
 
-            Optional<QualificationManageForDoctor> returnItem = listReturn.stream().filter(q -> q.getUserInfo().getId().equals(qualificationApply.getUserId())).findFirst();
-            //添加1项
-            if(!returnItem.isPresent()) {
-                QualificationManageForDoctor newItem = new QualificationManageForDoctor();
-                //医生信息
-                newItem.setUserInfo(userInfoRepository.getUserInfoById(qualificationApply.getUserId()));
-                //资质名称列表
-                if(qualificationApply.getCurrentStatus().equals("授权中")){
-                    newItem.setQualificationList(qualificationName);
-                }
-                else{
-                    newItem.setQualificationList(""); //新建时如果不是授权中状态,则给一个空字符串,避免出现null文本
-                }
-                //申请列表
-                List<QualificationApply> applyList = new ArrayList<>();
-                applyList.add(qualificationApply);
-                newItem.setApplyList(applyList);
+        // 对listReturn进行分页处理
+        int total = listReturn.size();
+        int startIndex = (current - 1) * pageSize;
+        int endIndex = Math.min(startIndex + pageSize, total);
 
-                listReturn.add(newItem);
-            }
-            //更新项
-            else{
-                //资质名称列表
-                if(qualificationApply.getCurrentStatus().equals("授权中")){
-                    String newQualificationList = returnItem.get().getQualificationList() + "," + qualificationName;
-                    newQualificationList = StringUtils.trimLeadingCharacter(newQualificationList,','); //去掉最左边的逗号
-                    returnItem.get().setQualificationList(newQualificationList);
-                }
-                //申请列表
-                returnItem.get().getApplyList().add(qualificationApply);
-            }
+        // 如果起始索引超出范围,则返回空列表
+        List<QualificationManageForDoctor> pagedList = new ArrayList<>();
+        if (startIndex < total) {
+            pagedList = listReturn.subList(startIndex, endIndex);
         }
 
-        //设置「允许重新授权状态」,已过期的授权,如果没有对应的授权中的授权时,才可以重新授权
-        for(QualificationManageForDoctor item : listReturn ){
-            for(QualificationApply apply : item.getApplyList()){
-                if(apply.getCurrentStatus().equals("已过期")) {
-                    if(item.getApplyList().stream().filter(a -> a.getCurrentStatus().equals("授权中"))
-                                                   .noneMatch(a -> a.getQualificationInfo().getCode().equals(apply.getQualificationInfo().getCode()))) {
-                        apply.setAllowReAuthorize(NumberConstant.ONE);
-                    }
-                }
-            }
-        }
+        return new PageUtils(pagedList, total, pageSize, current);
 
-        return new PageUtils(listReturn, Math.toIntExact(listReturn.size()),pageSize,current);
+        //有效的资质授权
+//        List<QualificationApply> list = qualificationApplyRepository.listByQualification();
+//
+//        //过滤的科室代码和其下级代码组成的列表
+//        List<String> listDept = getDepartmentCodeRecursion(departmentRepository.list(),deptCode);
+//
+//        for(QualificationApply qualificationApply : list){
+//
+//            //资质字典
+//            Qualification qualification = qualificationList.stream().filter(q -> q.getCode().equals(qualificationApply.getQualificationCode())).findFirst().get();
+//            //资质名称
+//            String qualificationName = qualification.getName();
+//
+//            //科室过滤
+//            if(!StringUtils.isEmpty(deptCode) && !listDept.contains(qualificationApply.getUserInfo().getDeptCode())){
+//                continue;
+//            }
+//            //姓名过滤
+//            if(!StringUtils.isEmpty(userName) && !qualificationApply.getUserInfo().getName().contains(userName)){
+//                continue;
+//            }
+//            if(!CollectionUtils.isEmpty(qualificationApply.getApplyAdjust())){
+//                //调整历史-调整人姓名
+//                for(QualificationApplyAdjust adjust : qualificationApply.getApplyAdjust()){
+//                    adjust.setAdjustUserName(empMap.get(adjust.getUserId()).getName());
+//                }
+//            }
+//
+//            Optional<QualificationManageForDoctor> returnItem = listReturn.stream().filter(q -> q.getUserInfo().getId().equals(qualificationApply.getUserId())).findFirst();
+//            //添加1项
+//            if(!returnItem.isPresent()) {
+//                QualificationManageForDoctor newItem = new QualificationManageForDoctor();
+//                //医生信息
+//                newItem.setUserInfo(userInfoRepository.getUserInfoById(qualificationApply.getUserId()));
+//                //资质名称列表
+//                if(qualificationApply.getCurrentStatus().equals("授权中")){
+//                    newItem.setQualificationList(qualificationName);
+//                }
+//                else{
+//                    newItem.setQualificationList(""); //新建时如果不是授权中状态,则给一个空字符串,避免出现null文本
+//                }
+//                //申请列表
+//                List<QualificationApply> applyList = new ArrayList<>();
+//                applyList.add(qualificationApply);
+//                newItem.setApplyList(applyList);
+//
+//                listReturn.add(newItem);
+//            }
+//            //更新项
+//            else{
+//                //资质名称列表
+//                if(qualificationApply.getCurrentStatus().equals("授权中")){
+//                    String newQualificationList = returnItem.get().getQualificationList() + "," + qualificationName;
+//                    newQualificationList = StringUtils.trimLeadingCharacter(newQualificationList,','); //去掉最左边的逗号
+//                    returnItem.get().setQualificationList(newQualificationList);
+//                }
+//                //申请列表
+//                returnItem.get().getApplyList().add(qualificationApply);
+//            }
+//        }
+//
+//        //设置「允许重新授权状态」,已过期的授权,如果没有对应的授权中的授权时,才可以重新授权
+//        for(QualificationManageForDoctor item : listReturn ){
+//            for(QualificationApply apply : item.getApplyList()){
+//                if(apply.getCurrentStatus().equals("已过期")) {
+//                    if(item.getApplyList().stream().filter(a -> a.getCurrentStatus().equals("授权中"))
+//                                                   .noneMatch(a -> a.getQualificationInfo().getCode().equals(apply.getQualificationInfo().getCode()))) {
+//                        apply.setAllowReAuthorize(NumberConstant.ONE);
+//                    }
+//                }
+//            }
+//        }
+//
+//        return new PageUtils(listReturn, Math.toIntExact(listReturn.size()),pageSize,current);
     }
 
     /**
@@ -381,6 +410,13 @@ public class QualificationManageServiceImpl extends ServiceImpl<QualificationApp
         return myInfo;
     }
 
+    @Override
+    public Object getDoctorInfo(Long userId) {
+        UserInfo myInfo = userInfoRepository.getUserInfoById(userId);
+        myInfo.setAttachments(doctorAttachmentRepository.listByUserId(userId));
+        return myInfo;
+    }
+
     @Override
     public Object listAllDepartment(String queryCondition) {
         //返回的集合