Переглянути джерело

v2025.8.11
资质授权管理查询速度优化

jinhu 1 тиждень тому
батько
коміт
ca95c8623d

+ 66 - 34
src/main/java/com/kcim/service/impl/QualificationManageServiceImpl.java

@@ -54,57 +54,89 @@ 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));
 
-        //有效的资质授权
-        List<QualificationApply> list = qualificationApplyRepository.listByQualification();
-
-        for(QualificationApply qualificationApply : list){
-
-            //资质字典信息
-            Qualification qualification = qualificationMap.get(qualificationApply.getQualificationCode());
-
-            //资质名称
-            String qualificationName = qualification.getName();
-            //资质分类
-            QualificationType qualificationType = qualificationTypeMap.get(qualification.getQualificationTypeCode());
-            //资质分类编码
-            String typeCode = qualificationType.getCode();
-            //资质分类名称
-            String typeName = qualificationType.getName();
-            qualification.setQualificationTypeName(typeName);
+        //遍历qualificationMap中的每个项目
+        qualificationMap.forEach((qualificationCode, qualification) -> {
 
             //名称过滤
-            if(!StringUtils.isEmpty(name) && !qualificationName.contains(name)){
-                continue;
+            if(!StringUtils.isEmpty(name) && !qualification.getName().contains(name)){
+                return;
             }
             //分类过滤
             if(!qualificationTypeCode.equals("0")){
                 List<String> typeCodeList = qualificationService.getQualificationTypeCodeRecursion(qualificationTypeList,qualificationTypeCode);
-                if(!typeCodeList.contains(typeCode)){
-                    continue;
+                if(!typeCodeList.contains(qualification.getQualificationTypeCode())){
+                    return;
                 }
             }
             //手术标志过滤
             if(operationFlag != null && operationFlag.equals(NumberConstant.ONE) && qualification.getOperationFlag().equals(NumberConstant.ZERO)){
-                continue;
+                return;
             }
             //医疗技术标志过滤
             if(techFlag != null && techFlag.equals(NumberConstant.ONE) && qualification.getTechFlag().equals(NumberConstant.ZERO)){
-                continue;
+                return;
             }
             //手术级别过滤
             if(!StringUtils.isEmpty(operationLevelCode) && !qualification.getOperationLevelCode().equals(operationLevelCode)){
-                continue;
+                return;
             }
-
-            Optional<QualificationManage> returnItem = listReturn.stream().filter(q -> q.getQualification().getCode().equals(qualificationApply.getQualificationCode())).findFirst();
-            //添加1项
-            if(!returnItem.isPresent()) {
-                QualificationManage newItem = new QualificationManage();
-                //资质字典
-                newItem.setQualification(qualification);
-                listReturn.add(newItem);
-            }
-        }
+            QualificationManage qualificationManage = new QualificationManage();
+            qualificationManage.setQualification(qualification);
+            listReturn.add(qualificationManage);
+        });
+
+
+//有效的资质授权
+//        List<QualificationApply> list = qualificationApplyRepository.listByQualification();
+//
+//        for(QualificationApply qualificationApply : list){
+//
+//            //资质字典信息
+//            Qualification qualification = qualificationMap.get(qualificationApply.getQualificationCode());
+//
+//            //资质名称
+//            String qualificationName = qualification.getName();
+//            //资质分类
+//            QualificationType qualificationType = qualificationTypeMap.get(qualification.getQualificationTypeCode());
+//            //资质分类编码
+//            String typeCode = qualificationType.getCode();
+//            //资质分类名称
+//            String typeName = qualificationType.getName();
+//            qualification.setQualificationTypeName(typeName);
+//
+//            //名称过滤
+//            if(!StringUtils.isEmpty(name) && !qualificationName.contains(name)){
+//                continue;
+//            }
+//            //分类过滤
+//            if(!qualificationTypeCode.equals("0")){
+//                List<String> typeCodeList = qualificationService.getQualificationTypeCodeRecursion(qualificationTypeList,qualificationTypeCode);
+//                if(!typeCodeList.contains(typeCode)){
+//                    continue;
+//                }
+//            }
+//            //手术标志过滤
+//            if(operationFlag != null && operationFlag.equals(NumberConstant.ONE) && qualification.getOperationFlag().equals(NumberConstant.ZERO)){
+//                continue;
+//            }
+//            //医疗技术标志过滤
+//            if(techFlag != null && techFlag.equals(NumberConstant.ONE) && qualification.getTechFlag().equals(NumberConstant.ZERO)){
+//                continue;
+//            }
+//            //手术级别过滤
+//            if(!StringUtils.isEmpty(operationLevelCode) && !qualification.getOperationLevelCode().equals(operationLevelCode)){
+//                continue;
+//            }
+//
+//            Optional<QualificationManage> returnItem = listReturn.stream().filter(q -> q.getQualification().getCode().equals(qualificationApply.getQualificationCode())).findFirst();
+//            //添加1项
+//            if(!returnItem.isPresent()) {
+//                QualificationManage newItem = new QualificationManage();
+//                //资质字典
+//                newItem.setQualification(qualification);
+//                listReturn.add(newItem);
+//            }
+//        }
 
         // 对listReturn进行分页处理
         int total = listReturn.size();