浏览代码

化验公表映射优化

Zhaops 6 年之前
父节点
当前提交
2df0bd5c1c

+ 9 - 9
icss-service/src/main/java/com/diagbot/facade/AssembleFacade.java

@@ -13,6 +13,7 @@ import org.springframework.stereotype.Component;
 
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @Description:
@@ -64,21 +65,20 @@ public class AssembleFacade {
 
         //化验项映射,转公表
         if (ListUtil.isNotEmpty(pushVO.getLis())) {
-            Map<String, Map<String, String>> lisConfigMap = lisMappingFacade.getLisMapping_NotEmptyItemName();
-            Map<String, String> lisConfigWithEmptyItemNameMap = lisMappingFacade.getLisConfig_EmptyItemName();
+            List<String> mealNameList = pushVO.getLis().stream().map(lisResult -> lisResult.getName()).collect(Collectors.toList());
+            Map<String, Map<String, String>> lisConfigMap = lisMappingFacade.getLisMapping(mealNameList);
             for (LisResult lisResult : pushVO.getLis()) {
                 //source=0 icss页面数据,source=1 外部导入数据,外部导入数据不处理
                 if (!lisResult.getSource().equals(LisSourceEnum.Inner.getKey())) {
                     continue;
                 }
                 if (StringUtil.isNotBlank(lisResult.getName())) {
-                    if (StringUtil.isNotBlank(lisResult.getDetailName())) {
-                        Map<String, String> detailMap = lisConfigMap.get(lisResult.getName());
-                        if (null != detailMap && detailMap.size() > 0 && StringUtil.isNotBlank(detailMap.get(lisResult.getDetailName()))) {
-                            lisResult.setUniqueName(detailMap.get(lisResult.getDetailName()));
-                        }
-                    } else {
-                        lisResult.setUniqueName(lisConfigWithEmptyItemNameMap.get(lisResult.getName()));
+                    if (lisResult.getDetailName() == null) {
+                        lisResult.setDetailName("");
+                    }
+                    Map<String, String> detailMap = lisConfigMap.get(lisResult.getName());
+                    if (null != detailMap && detailMap.size() > 0 && StringUtil.isNotBlank(detailMap.get(lisResult.getDetailName()))) {
+                        lisResult.setUniqueName(detailMap.get(lisResult.getDetailName()));
                     }
                 }
             }

+ 16 - 57
icss-service/src/main/java/com/diagbot/facade/LisMappingFacade.java

@@ -7,6 +7,7 @@ import com.diagbot.service.impl.LisMappingServiceImpl;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
+import com.google.common.collect.Lists;
 import org.springframework.stereotype.Component;
 
 import java.util.LinkedHashMap;
@@ -23,13 +24,16 @@ public class LisMappingFacade extends LisMappingServiceImpl {
 
     /**
      * 获取化验公表映射关系 Map<mealName,Map<itemName,uniqueName>> itemName 不为空
-     *
+     * @param mealNameList
      * @return
      */
-    public Map<String, Map<String, String>> getLisMapping_NotEmptyItemName() {
+    public Map<String, Map<String, String>> getLisMapping(List<String> mealNameList) {
         Map<String, Map<String, String>> retMap = new LinkedHashMap<>();
         QueryWrapper<LisMapping> lisMappingQueryWrapper = new QueryWrapper<>();
-        lisMappingQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).isNotNull("item_name").ne("item_name", "");
+        lisMappingQueryWrapper.select("meal_name,ifnull(item_name,'') as item_name,unique_name").eq("is_deleted", IsDeleteEnum.N.getKey());//.isNotNull("item_name").ne("item_name", "");
+        if (ListUtil.isNotEmpty(mealNameList)) {
+            lisMappingQueryWrapper.in("meal_name", mealNameList);
+        }
         List<LisMapping> lisMappingList = this.list(lisMappingQueryWrapper);
         Map<String, List<LisMapping>> lisMappingMap = EntityUtil.makeEntityListMap(lisMappingList, "mealName");
         for (Map.Entry<String, List<LisMapping>> entry : lisMappingMap.entrySet()) {
@@ -47,23 +51,12 @@ public class LisMappingFacade extends LisMappingServiceImpl {
      *
      * @return
      */
-    public Map<String, String> getLisConfig_EmptyItemName() {
-        QueryWrapper<LisMapping> lisMappingQueryWrapper = new QueryWrapper<>();
-        lisMappingQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).
-                isNull("item_name").or(i -> i.eq("item_name", ""));
-        List<LisMapping> lisMappingList = this.list(lisMappingQueryWrapper);
-        Map<String, String> retMap = EntityUtil.makeMapWithKeyValue(lisMappingList, "mealName", "uniqueName");
-        return retMap;
-    }
-
-    /**
-     * 获取化验公表映射关系 Map<mealName,uniqueName> itemName 为空
-     *
-     * @return
-     */
-    public Map<String, String> getLisMappingWithoutItemName() {
+    public Map<String, String> getLisConfig_EmptyItemName(List<String> mealNameList) {
         QueryWrapper<LisMapping> lisMappingQueryWrapper = new QueryWrapper<>();
         lisMappingQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).isNull("item_name").or(i -> i.eq("item_name", ""));
+        if (ListUtil.isNotEmpty(mealNameList)) {
+            lisMappingQueryWrapper.in("meal_name", mealNameList);
+        }
         List<LisMapping> lisMappingList = this.list(lisMappingQueryWrapper);
         Map<String, String> retMap = EntityUtil.makeMapWithKeyValue(lisMappingList, "mealName", "uniqueName");
         return retMap;
@@ -93,51 +86,17 @@ public class LisMappingFacade extends LisMappingServiceImpl {
      * @return
      */
     public Map<String, Map<String, String>> getLisMappingByQuestion(String project, List<String> details) {
-        Map<String, Map<String, String>> lisWithItemNamMap = getLisMapping_NotEmptyItemName();
-        Map<String, String> lisWithoutItemNameMap = getLisMappingWithoutItemName();
-
         if (StringUtil.isBlank(project)) {
             return null;
         }
 
-        Map<String, Map<String, String>> retMap = new LinkedHashMap<>();
-        Map<String, String> projectMap = new LinkedHashMap<>();
-        projectMap.put(project, lisWithoutItemNameMap.get(project));
-        retMap.put("project", projectMap);
-
-        if (ListUtil.isEmpty(details)) {
-            return retMap;
-        }
-
-        Map<String, String> detailMap = new LinkedHashMap<>();
-        Map<String, String> projectDetailMap = lisWithItemNamMap.get(project);
-        if (projectDetailMap != null) {
-            for (String detail : details) {
-                detailMap.put(detail, projectDetailMap.get(detail));
-            }
-        }
-        retMap.put("details", detailMap);
-        return retMap;
-    }
-
-
-    /**
-     * 获取对应关系
-     *
-     * @param project 套餐
-     * @param details 明细
-     * @param lisWithItemNamMap
-     * @param lisWithoutItemNameMap
-     * @return
-     */
-    public Map<String, Map<String, String>> getLisMappingByQuestion(String project, List<String> details, Map<String, String> lisWithoutItemNameMap, Map<String, Map<String, String>> lisWithItemNamMap) {
-        if (StringUtil.isBlank(project)) {
-            return null;
-        }
+        List<String> mealNameList= Lists.newLinkedList();
+        mealNameList.add(project);
+        Map<String, Map<String, String>> lisMappingMap = getLisMapping(mealNameList);
 
         Map<String, Map<String, String>> retMap = new LinkedHashMap<>();
         Map<String, String> projectMap = new LinkedHashMap<>();
-        projectMap.put(project, lisWithoutItemNameMap.get(project));
+        projectMap.put(project, lisMappingMap.get(project).get(""));
         retMap.put("project", projectMap);
 
         if (ListUtil.isEmpty(details)) {
@@ -145,7 +104,7 @@ public class LisMappingFacade extends LisMappingServiceImpl {
         }
 
         Map<String, String> detailMap = new LinkedHashMap<>();
-        Map<String, String> projectDetailMap = lisWithItemNamMap.get(project);
+        Map<String, String> projectDetailMap = lisMappingMap.get(project);
         if (projectDetailMap != null) {
             for (String detail : details) {
                 detailMap.put(detail, projectDetailMap.get(detail));

+ 7 - 16
icss-service/src/main/java/com/diagbot/facade/QuestionFacade.java

@@ -128,15 +128,6 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
         List<QuestionInfo> questionInfoList = this.getByParam2(paramMap);
         List<Long> questionId = questionInfoList.stream().map(r -> r.getId()).collect(Collectors.toList());
 
-        //获取uniqueName
-        List<QuestionInfo> lisQuestion = questionInfoList.stream().filter(r -> r.getType() == QuestionTypeEnum.Lis.getKey()).collect(Collectors.toList());
-        Map<String, String> proMap = new LinkedHashMap<>();
-        Map<String, Map<String, String>> proDetailMap = new LinkedHashMap<>();
-        if (ListUtil.isNotEmpty(lisQuestion)) {
-             proMap = lisMappingFacade.getLisConfig_EmptyItemName();
-             proDetailMap = lisMappingFacade.getLisMapping_NotEmptyItemName();
-        }
-
         // 获取第一层明细项
         Map<Long, List<QuestionDetail>> detailMap = getQuestionDetailWithMap(questionInfoList.stream().filter(r -> r.getTagType() == 1).map(r -> r.getId()).collect(Collectors.toList()));
 
@@ -165,9 +156,9 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
             // 设置第二层mapping
             List<QuestionInfoWrapper> w2 = mapping2.get(res.getId());
             if (ListUtil.isNotEmpty(w2)) {
-                List<QuestionDTO> m2 =  BeanUtil.listCopyTo(w2, QuestionDTO.class);
+                List<QuestionDTO> m2 = BeanUtil.listCopyTo(w2, QuestionDTO.class);
                 res.setQuestionMapping(m2);
-                for (QuestionDTO q2: m2) {
+                for (QuestionDTO q2 : m2) {
                     // 设置第二层明细
                     if (detailMap2.get(q2.getId()) != null) {
                         q2.setQuestionDetailList(detailMap2.get(q2.getId()));
@@ -175,9 +166,9 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
                     List<QuestionInfoWrapper> w3 = mapping3.get(q2.getId());
                     if (ListUtil.isNotEmpty(w3)) {
                         // 设置第三层mapping
-                        List<QuestionDTO> m3 =  BeanUtil.listCopyTo(w3, QuestionDTO.class);
+                        List<QuestionDTO> m3 = BeanUtil.listCopyTo(w3, QuestionDTO.class);
                         q2.setQuestionMapping(m3);
-                        for (QuestionDTO q3: m3) {
+                        for (QuestionDTO q3 : m3) {
                             // 设置第三层明细
                             if (detailMap3.get(q3.getId()) != null) {
                                 q3.setQuestionDetailList(detailMap3.get(q3.getId()));
@@ -195,7 +186,7 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
                 if (ListUtil.isNotEmpty(res.getQuestionMapping())) {
                     details = res.getQuestionMapping().stream().map(row -> row.getName()).collect(Collectors.toList());
                 }
-                Map<String, Map<String, String>> map = lisMappingFacade.getLisMappingByQuestion(project, details, proMap, proDetailMap);
+                Map<String, Map<String, String>> map = lisMappingFacade.getLisMappingByQuestion(project, details);
                 if (map != null) {
                     if (map.get("project") != null) {
                         res.setUniqueName(map.get("project").get(res.getName()));
@@ -234,8 +225,8 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
      * 获取下级question
      *
      * @param sexType 性别
-     * @param age 年龄
-     * @param ids 列表
+     * @param age     年龄
+     * @param ids     列表
      * @return
      */
     public Map getQuestionMappingWithMap(Integer sexType, Integer age, List<Long> ids, List<Long> mappIds) {