Jelajahi Sumber

v2025.8.11
资质授权管理查询速度优化和分页 bug 修复

jinhu 1 Minggu lalu
induk
melakukan
0712a4d89f

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

@@ -363,8 +363,8 @@ public class QualificationApplyRepository extends ServiceImpl<QualificationApply
         List<QualificationApply> list = this.list(queryWrapper);
 
         //人员列表
-        List<UserInfo> empList = userInfoRepository.list();
-        Map<Long,UserInfo> empMap = empList.stream().collect(Collectors.toMap(UserInfo::getId, 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));
 
         //手术级别名称
         List<SysDictionary> dicOperationLevel = sysDictionaryRepository.listByType("SURGICAL_AND_OPERATIONAL_LEVELS");
@@ -414,8 +414,8 @@ public class QualificationApplyRepository extends ServiceImpl<QualificationApply
             //授权记录 为了提高列表加载效率,改从 getMyQualificationHistory 取授权明细
 //            List<QualificationApply> applyList = listAvailableByUserIdAndQualificationCode(BaseUtil.getCurrentUser().getId(),qualification.getCode());
 //
-//            MyQualification myQualification = new MyQualification();
-//            myQualification.setQualification(qualification);
+            MyQualification myQualification = new MyQualification();
+            myQualification.setQualification(qualification);
 //            myQualification.setApplyList(applyList);
 //
 //            for(QualificationApply a : applyList){
@@ -425,7 +425,7 @@ public class QualificationApplyRepository extends ServiceImpl<QualificationApply
 //                }
 //            }
 //
-//            listReturn.add(myQualification);
+            listReturn.add(myQualification);
         }
 
         return new PageUtils(listReturn,listReturn.size(),pageSize,current);

+ 13 - 1
src/main/java/com/kcim/dao/repository/QualificationRepository.java

@@ -26,12 +26,17 @@ public class QualificationRepository extends ServiceImpl<QualificationMapper, Qu
 
     public Page<Qualification> getPage(Integer current, Integer pageSize, LambdaQueryWrapper<Qualification> queryWrapper) {
         Page<Qualification> page = new Page<>(current,pageSize);
+        queryWrapper.eq(Qualification::getHospId, BaseUtil.getCurrentLoginHospId());
+        queryWrapper.eq(Qualification::getDelFlag, NumberConstant.ZERO);
         return  this.page(page,queryWrapper);
     }
 
     public Page<Qualification> getPage(Integer current, Integer pageSize) {
         Page<Qualification> page = new Page<>(current,pageSize);
-        return  this.page(page);
+        LambdaQueryWrapper<Qualification> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Qualification::getHospId, BaseUtil.getCurrentLoginHospId());
+        queryWrapper.eq(Qualification::getDelFlag, NumberConstant.ZERO);
+        return  this.page(page, queryWrapper);
     }
 
     public List<Qualification> list(){
@@ -54,6 +59,13 @@ public class QualificationRepository extends ServiceImpl<QualificationMapper, Qu
         return list;
     }
 
+    public Long countAll(){
+        LambdaQueryWrapper<Qualification> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Qualification::getHospId, BaseUtil.getCurrentLoginHospId());
+        queryWrapper.eq(Qualification::getDelFlag, NumberConstant.ZERO);
+        return this.count(queryWrapper);
+    }
+
     public Qualification getByCode(String code) {
         LambdaQueryWrapper<Qualification> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(Qualification::getHospId, BaseUtil.getCurrentLoginHospId());

+ 18 - 51
src/main/java/com/kcim/service/impl/QualificationManageServiceImpl.java

@@ -1,5 +1,6 @@
 package com.kcim.service.impl;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kcim.constants.NumberConstant;
 import com.kcim.controller.request.QualificationManageAdjustRequest;
@@ -45,35 +46,26 @@ public class QualificationManageServiceImpl extends ServiceImpl<QualificationApp
         //返回的集合
         List<QualificationManage> listReturn = new ArrayList<>();
 
-        //资质集合
+        //所有有效的资质
         List<Qualification> qualificationList = qualificationRepository.list();
+        Map<String, Qualification> qualificationMap = qualificationList.stream().collect(Collectors.toMap(Qualification::getCode, vo -> vo, (a, b) -> b));
 
         //资质分类集合
         List<QualificationType> qualificationTypeList = qualificationTypeRepository.list();
-
-        //人员列表
-        List<UserInfo> empList = userInfoRepository.list();
-        Map<Long,UserInfo> empMap = empList.stream().collect(Collectors.toMap(UserInfo::getId, vo -> vo, (a, b) -> b));
+        Map<String, QualificationType> qualificationTypeMap = qualificationTypeList.stream().collect(Collectors.toMap(QualificationType::getCode, vo -> vo, (a, b) -> b));
 
         //有效的资质授权
         List<QualificationApply> list = qualificationApplyRepository.listByQualification();
 
         for(QualificationApply qualificationApply : list){
 
-            //医生信息
-            //qualificationApply.setUserInfo(empMap.get(qualificationApply.getUserId()));
-
-            //调整历史-调整人姓名
-//            for(QualificationApplyAdjust adjust : qualificationApply.getApplyAdjust()){
-//                adjust.setAdjustUserName(empMap.get(adjust.getUserId()).getName());
-//            }
+            //资质字典信息
+            Qualification qualification = qualificationMap.get(qualificationApply.getQualificationCode());
 
-            //资质字典
-            Qualification qualification = qualificationList.stream().filter(q -> q.getCode().equals(qualificationApply.getQualificationCode())).findFirst().get();
             //资质名称
             String qualificationName = qualification.getName();
             //资质分类
-            QualificationType qualificationType = qualificationTypeList.stream().filter(t -> t.getCode().equals(qualification.getQualificationTypeCode())).findFirst().get();
+            QualificationType qualificationType = qualificationTypeMap.get(qualification.getQualificationTypeCode());
             //资质分类编码
             String typeCode = qualificationType.getCode();
             //资质分类名称
@@ -86,7 +78,6 @@ public class QualificationManageServiceImpl extends ServiceImpl<QualificationApp
             }
             //分类过滤
             if(!qualificationTypeCode.equals("0")){
-                //List<String> typeCodeList = qualificationServiceImpl.getQualificationTypeCodeRecursion(qualificationTypeList,qualificationTypeCode);
                 List<String> typeCodeList = qualificationService.getQualificationTypeCodeRecursion(qualificationTypeList,qualificationTypeCode);
                 if(!typeCodeList.contains(typeCode)){
                     continue;
@@ -111,46 +102,22 @@ public class QualificationManageServiceImpl extends ServiceImpl<QualificationApp
                 QualificationManage newItem = new QualificationManage();
                 //资质字典
                 newItem.setQualification(qualification);
-                //医生列表
-//                if(qualificationApply.getCurrentStatus().equals("授权中")){
-//                    newItem.setDoctorList(qualificationApply.getUserInfo().getName());
-//                }
-//                else{
-//                    newItem.setDoctorList(""); //新建时如果不是授权中状态,则给一个空字符串,避免出现null文本
-//                }
-                //申请列表
-//                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);
-//            }
         }
 
-        //设置「允许重新授权状态」,已过期的授权,如果没有对应的授权中的人时,才可以重新授权
-//        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);
-//                    }
-//                }
-//            }
-//        }
+        // 对listReturn进行分页处理
+        int total = listReturn.size();
+        int startIndex = (current - 1) * pageSize;
+        int endIndex = Math.min(startIndex + pageSize, total);
+        
+        // 如果起始索引超出范围,则返回空列表
+        List<QualificationManage> pagedList = new ArrayList<>();
+        if (startIndex < total) {
+            pagedList = listReturn.subList(startIndex, endIndex);
+        }
 
-        return new PageUtils(listReturn, Math.toIntExact(listReturn.size()),pageSize,current);
+        return new PageUtils(pagedList, total, pageSize, current);
     }
 
     @Override