Просмотр исходного кода

v2025.8.4
1、我的资质和医生授权管理,详情优化:授权记录改从单独接口查询,不再放在列表信息中
2、

jinhu 2 недель назад
Родитель
Сommit
70d6f93a67

+ 27 - 0
src/main/java/com/kcim/controller/QualificationManageController.java

@@ -36,6 +36,15 @@ public class QualificationManageController {
         return Result.ok(qualificationManageService.listByQualification(name,qualificationTypeCode,operationLevelCode,techFlag,operationFlag,current,pageSize));
     }
 
+    /**
+     * 资质授权-按资质查询
+     */
+    @ApiOperation("资质授权-按资质查询")
+    @GetMapping("listQualificationApply")
+    public Result listQualificationApply(@RequestParam(value = "qualificationCode", required = true) String qualificationCode){
+        return Result.ok(qualificationManageService.listQualificationApply(qualificationCode));
+    }
+
     /**
      * 医师授权查询
      */
@@ -48,6 +57,15 @@ public class QualificationManageController {
         return Result.ok(qualificationManageService.listByDoctor(deptCode,userName,current,pageSize));
     }
 
+    /**
+     * 资质授权-按资质查询
+     */
+    @ApiOperation("资质授权-按医生查询")
+    @GetMapping("listQualificationApplyByDoctor")
+    public Result listQualificationApplyByDoctor(@RequestParam(value = "userId", required = true) String userId){
+        return Result.ok(qualificationManageService.listQualificationApply(userId));
+    }
+
     /**
      * 查询所有有效授权
      */
@@ -74,6 +92,15 @@ public class QualificationManageController {
         return Result.ok(qualificationManageService.listMyAvailableQualification(qualificationName,operationLevelCode,techFlag,operationFlag,current,pageSize));
     }
 
+    /**
+     * 授权管理-查询我的授权记录明细
+     */
+    @ApiOperation("授权管理-查询我的授权记录明细")
+    @PostMapping("getMyQualificationHistory")
+    public Result getMyQualificationHistory(@RequestParam(value = "qualificationCode", required = true) String qualificationCode){
+        return Result.ok(qualificationManageService.getMyQualificationHistory(qualificationCode));
+    }
+
     /**
      * 授权管理-调整
      */

+ 44 - 14
src/main/java/com/kcim/dao/repository/QualificationApplyRepository.java

@@ -145,10 +145,14 @@ public class QualificationApplyRepository extends ServiceImpl<QualificationApply
         this.applyAttachmentRepository.deleteByApplyId(id);
     }
 
+    public List<QualificationApply> listByQualification(){
+        return listByQualification(null,null);
+    }
+
     /**
      * 资质管理,按资质查询
      */
-    public List<QualificationApply> listByQualification()
+    public List<QualificationApply> listByQualification(String qualificationCode,String userId)
     {
         //用户信息
         List<UserInfo> userInfos = userInfoRepository.list();
@@ -159,6 +163,14 @@ public class QualificationApplyRepository extends ServiceImpl<QualificationApply
         queryWrapper.eq(QualificationApply::getHospId, BaseUtil.getCurrentLoginHospId());
         queryWrapper.eq(QualificationApply::getDelFlag, NumberConstant.ZERO);
         queryWrapper.eq(QualificationApply::getApplyStatus, NumberConstant.FIVE);
+        //按资质编码过滤
+        if(qualificationCode != null){
+            queryWrapper.eq(QualificationApply::getQualificationCode, qualificationCode);
+        }
+        //按医生ID 过滤
+        if(userId != null){
+            queryWrapper.eq(QualificationApply::getUserId, userId);
+        }
 
         List<QualificationApply> list = this.list(queryWrapper);
         for(QualificationApply apply: list){
@@ -359,23 +371,41 @@ public class QualificationApplyRepository extends ServiceImpl<QualificationApply
                 }
             }
 
-            //授权记录
-            List<QualificationApply> applyList = listAvailableByUserIdAndQualificationCode(BaseUtil.getCurrentUser().getId(),qualification.getCode());
+            //授权记录 为了提高列表加载效率,改从 getMyQualificationHistory 取授权明细
+//            List<QualificationApply> applyList = listAvailableByUserIdAndQualificationCode(BaseUtil.getCurrentUser().getId(),qualification.getCode());
+//
+//            MyQualification myQualification = new MyQualification();
+//            myQualification.setQualification(qualification);
+//            myQualification.setApplyList(applyList);
+//
+//            for(QualificationApply a : applyList){
+//                //调整历史-调整人姓名
+//                for(QualificationApplyAdjust adjust : a.getApplyAdjust()){
+//                    adjust.setAdjustUserName(empMap.get(adjust.getUserId()).getName());
+//                }
+//            }
+//
+//            listReturn.add(myQualification);
+        }
 
-            MyQualification myQualification = new MyQualification();
-            myQualification.setQualification(qualification);
-            myQualification.setApplyList(applyList);
+        return new PageUtils(listReturn,listReturn.size(),pageSize,current);
+    }
 
-            for(QualificationApply a : applyList){
-                //调整历史-调整人姓名
-                for(QualificationApplyAdjust adjust : a.getApplyAdjust()){
-                    adjust.setAdjustUserName(empMap.get(adjust.getUserId()).getName());
-                }
-            }
+    public List<QualificationApply> getMyQualificationHistory(String qualificationCode){
+        //授权记录
+        List<QualificationApply> applyList = listAvailableByUserIdAndQualificationCode(BaseUtil.getCurrentUser().getId(),qualificationCode);
 
-            listReturn.add(myQualification);
+        //人员列表
+        List<UserInfo> empList = userInfoRepository.list();
+        Map<Long,UserInfo> empMap = empList.stream().collect(Collectors.toMap(UserInfo::getId, vo -> vo, (a, b) -> b));
+
+        for(QualificationApply a : applyList){
+            //调整历史-调整人姓名
+            for(QualificationApplyAdjust adjust : a.getApplyAdjust()){
+                adjust.setAdjustUserName(empMap.get(adjust.getUserId()).getName());
+            }
         }
 
-        return new PageUtils(listReturn,listReturn.size(),pageSize,current);
+        return applyList;
     }
 }

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

@@ -13,6 +13,10 @@ public interface QualificationManageService extends IService<QualificationApply>
 
     Object listByQualification(String name, String qualificationTypeCode, String operationLevelCode, Integer techFlag, Integer operationFlag, Integer current, Integer pageSize);
 
+    Object listQualificationApply(String qualificationCode);
+
+    Object listQualificationApplyByDoctor(String userId);
+
     Object listByDoctor(String deptCode,String userName, Integer current, Integer pageSize);
 
     void adjust(QualificationManageAdjustRequest request);
@@ -31,6 +35,8 @@ public interface QualificationManageService extends IService<QualificationApply>
 
     Object listMyAvailableQualification(String qualificationName, String operationLevelCode, Integer techFlag, Integer operationFlag, Integer current, Integer pageSize);
 
+    Object getMyQualificationHistory(String qualificationCode);
+
     Object saveDoctorAttachment(DoctorAttachment doctorAttachments);
 
 

+ 83 - 31
src/main/java/com/kcim/service/impl/QualificationManageServiceImpl.java

@@ -9,8 +9,6 @@ import com.kcim.controller.response.QualificationManageForDoctor;
 import com.kcim.dao.mapper.QualificationApplyMapper;
 import com.kcim.dao.model.*;
 import com.kcim.dao.repository.*;
-import com.kcim.service.CenterService;
-import com.kcim.service.QualificationApplyService;
 import com.kcim.service.QualificationManageService;
 import com.kcim.service.QualificationService;
 import com.kcim.util.BaseUtil;
@@ -36,6 +34,7 @@ public class QualificationManageServiceImpl extends ServiceImpl<QualificationApp
     UserInfoRepository userInfoRepository;
     DepartmentRepository departmentRepository;
     DoctorAttachmentRepository doctorAttachmentRepository;
+    QualificationApplyAdjustRepository applyAdjustRepository;
 
     QualificationService qualificationService;
 
@@ -61,12 +60,12 @@ public class QualificationManageServiceImpl extends ServiceImpl<QualificationApp
         for(QualificationApply qualificationApply : list){
 
             //医生信息
-            qualificationApply.setUserInfo(empMap.get(qualificationApply.getUserId()));
+            //qualificationApply.setUserInfo(empMap.get(qualificationApply.getUserId()));
 
             //调整历史-调整人姓名
-            for(QualificationApplyAdjust adjust : qualificationApply.getApplyAdjust()){
-                adjust.setAdjustUserName(empMap.get(adjust.getUserId()).getName());
-            }
+//            for(QualificationApplyAdjust adjust : qualificationApply.getApplyAdjust()){
+//                adjust.setAdjustUserName(empMap.get(adjust.getUserId()).getName());
+//            }
 
             //资质字典
             Qualification qualification = qualificationList.stream().filter(q -> q.getCode().equals(qualificationApply.getQualificationCode())).findFirst().get();
@@ -112,45 +111,93 @@ public class QualificationManageServiceImpl extends ServiceImpl<QualificationApp
                 //资质字典
                 newItem.setQualification(qualification);
                 //医生列表
-                if(qualificationApply.getCurrentStatus().equals("授权中")){
-                    newItem.setDoctorList(qualificationApply.getUserInfo().getName());
-                }
-                else{
-                    newItem.setDoctorList(""); //新建时如果不是授权中状态,则给一个空字符串,避免出现null文本
-                }
+//                if(qualificationApply.getCurrentStatus().equals("授权中")){
+//                    newItem.setDoctorList(qualificationApply.getUserInfo().getName());
+//                }
+//                else{
+//                    newItem.setDoctorList(""); //新建时如果不是授权中状态,则给一个空字符串,避免出现null文本
+//                }
                 //申请列表
-                List<QualificationApply> applyList = new ArrayList<>();
-                applyList.add(qualificationApply);
-                newItem.setApplyList(applyList);
+//                List<QualificationApply> applyList = new ArrayList<>();
+//                applyList.add(qualificationApply);
+//                newItem.setApplyList(applyList);
 
                 listReturn.add(newItem);
             }
             //更新项
-            else{
-                //医生列表
-                if(qualificationApply.getCurrentStatus().equals("授权中")){
-                    String newDoctorList = returnItem.get().getDoctorList() + "," + qualificationApply.getUserInfo().getName();
-                    newDoctorList = StringUtils.trimLeadingCharacter(newDoctorList,','); //去掉最左边的逗号
-                    returnItem.get().setDoctorList(newDoctorList);
-                }
-                //申请列表
-                returnItem.get().getApplyList().add(qualificationApply);
-            }
+//            else{
+//                //医生列表
+//                if(qualificationApply.getCurrentStatus().equals("授权中")){
+//                    String newDoctorList = returnItem.get().getDoctorList() + "," + qualificationApply.getUserInfo().getName();
+//                    newDoctorList = StringUtils.trimLeadingCharacter(newDoctorList,','); //去掉最左边的逗号
+//                    returnItem.get().setDoctorList(newDoctorList);
+//                }
+//                //申请列表
+//                returnItem.get().getApplyList().add(qualificationApply);
+//            }
         }
 
         //设置「允许重新授权状态」,已过期的授权,如果没有对应的授权中的人时,才可以重新授权
-        for(QualificationManage item : listReturn ){
-            for(QualificationApply apply : item.getApplyList()){
+//        for(QualificationManage item : listReturn ){
+//            for(QualificationApply apply : item.getApplyList()){
+//                if(apply.getCurrentStatus().equals("已过期")) {
+//                    if(item.getApplyList().stream().filter(a -> a.getCurrentStatus().equals("授权中"))
+//                           .noneMatch(a -> a.getUserId().equals(apply.getUserId()))) {
+//                        apply.setAllowReAuthorize(NumberConstant.ONE);
+//                    }
+//                }
+//            }
+//        }
+
+        return new PageUtils(listReturn, Math.toIntExact(listReturn.size()),pageSize,current);
+    }
+
+    @Override
+    public Object listQualificationApplyByDoctor(String userId)
+    {
+        //人员列表
+        List<UserInfo> empList = userInfoRepository.list();
+        Map<Long,UserInfo> empMap = empList.stream().collect(Collectors.toMap(UserInfo::getId, vo -> vo, (a, b) -> b));
+
+        List<QualificationApply> list = qualificationApplyRepository.listByQualification(null,userId);
+        return geneQualificationList(empMap, list);
+    }
+
+    @Override
+    public Object listQualificationApply(String qualificationCode){
+
+        //人员列表
+        List<UserInfo> empList = userInfoRepository.list();
+        Map<Long,UserInfo> empMap = empList.stream().collect(Collectors.toMap(UserInfo::getId, vo -> vo, (a, b) -> b));
+
+        List<QualificationApply> list = qualificationApplyRepository.listByQualification(qualificationCode,null);
+        return geneQualificationList(empMap, list);
+    }
+
+    private Object geneQualificationList(Map<Long, UserInfo> empMap, List<QualificationApply> list) {
+        for(QualificationApply qualificationApply : list){
+            //医生信息
+            qualificationApply.setUserInfo(empMap.get(qualificationApply.getUserId()));
+
+            //调整历史
+            qualificationApply.setApplyAdjust(applyAdjustRepository.listByApplyId(qualificationApply.getId()));
+
+            //调整历史-调整人姓名
+            for(QualificationApplyAdjust adjust : qualificationApply.getApplyAdjust()){
+                adjust.setAdjustUserName(empMap.get(adjust.getUserId()).getName());
+            }
+
+            //设置「允许重新授权状态」,已过期的授权,如果没有对应的授权中的人时,才可以重新授权
+            for(QualificationApply apply : list){
                 if(apply.getCurrentStatus().equals("已过期")) {
-                    if(item.getApplyList().stream().filter(a -> a.getCurrentStatus().equals("授权中"))
-                           .noneMatch(a -> a.getUserId().equals(apply.getUserId()))) {
+                    if(list.stream().filter(a -> a.getCurrentStatus().equals("授权中"))
+                            .noneMatch(a -> a.getUserId().equals(apply.getUserId()))) {
                         apply.setAllowReAuthorize(NumberConstant.ONE);
                     }
                 }
             }
         }
-
-        return new PageUtils(listReturn, Math.toIntExact(listReturn.size()),pageSize,current);
+        return list;
     }
 
     @Override
@@ -404,6 +451,11 @@ public class QualificationManageServiceImpl extends ServiceImpl<QualificationApp
         return qualificationApplyRepository.listMyAvailableQualification(qualificationName, operationLevelCode, techFlag, operationFlag, current, pageSize);
     }
 
+    @Override
+    public Object getMyQualificationHistory(String qualificationCode) {
+        return qualificationApplyRepository.getMyQualificationHistory(qualificationCode);
+    }
+
     @Override
     public Object saveDoctorAttachment(DoctorAttachment doctorAttachments) {
         doctorAttachments.setHospId(BaseUtil.getCurrentLoginHospId());

+ 5 - 5
src/main/resources/application-dev.yml

@@ -40,10 +40,10 @@ spring:
       discovery:
         service: ${spring.application.name}
         server-addr: 120.27.235.181:8848
-        #        namespace: 38b4fbe9-4a20-48c3-a8bf-ebf069fb26e8
-        #        group: KCIM
-        namespace: 060cc0fe-193f-4a94-bbca-6d48a4f95ac2
-        group: dev
+        namespace: 38b4fbe9-4a20-48c3-a8bf-ebf069fb26e8
+        group: KCIM
+#        namespace: 060cc0fe-193f-4a94-bbca-6d48a4f95ac2
+#        group: dev
 
   #redis
   redis:
@@ -98,7 +98,7 @@ sa-token:
   ##token 有效期 默认30天,到期强制登录
   timeout: 2592000
   ## 30分钟无操作就失效 不适用
-  activity-timeout: 1800
+  activity-timeout: -1
   # 配置 Sa-Token 单独使用的 Redis 连接
   alone-redis:
     # Redis数据库索引(默认为0) 先固定2,后续有钱开另外的单独的db