ソースを参照

Merge branch 'master' into his/common

liuqq 4 年 前
コミット
77e6c1bf88

+ 37 - 16
src/main/java/com/diagbot/facade/ConceptInfoFacade.java

@@ -207,7 +207,7 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
             Map<Integer, String> staticTypeDicMap =
                     EntityUtil.makeMapWithKeyValue(dicStaticTypeList, "val", "name");
             for (DictionaryInfoDTO dic : dicStaticIndexList) {
-                if (dic.getName().equals("检验")) {
+                if (dic.getVal().equals("3")) {//检验
                     //3-检验套餐、4-检验细项
                     if (map.containsKey(staticTypeDicMap.get("3"))) {
                         retList.addAll(map.get(staticTypeDicMap.get("3")));
@@ -215,7 +215,7 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
                     if (map.containsKey(staticTypeDicMap.get("4"))) {
                         retList.addAll(map.get(staticTypeDicMap.get("4")));
                     }
-                } else if (dic.getName().equals("检查")) {
+                } else if (dic.getVal().equals("5")) {//检查
                     //5-检查、6-检查子项
                     if (map.containsKey(staticTypeDicMap.get("5"))) {
                         retList.addAll(map.get(staticTypeDicMap.get("5")));
@@ -342,11 +342,25 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
 
         List<StaticKnowledgeHISDTO> retList = Lists.newArrayList();
         List<DictionaryInfoDTO> dicStaticTypeList = dictionaryFacade.getListByGroupType(10);
+        List<DictionaryInfoDTO> dicList = dictionaryFacade.getListByGroupType(8);
         Map<String, String> dicStaticTypeValNameMap =
                 EntityUtil.makeMapWithKeyValue(dicStaticTypeList, "val", "name");
-        String typeName = dicStaticTypeValNameMap.get(staticKnowledgeHISVO.getType().toString());
-        List<DictionaryInfoDTO> dicList = dictionaryFacade.getListByGroupType(8);
-        typeName = convertTypeName(typeName, 1, dicList);
+
+        List<String> typeNames = ListUtil.newArrayList();
+        List<Integer> types = ListUtil.newArrayList();
+        types.add(staticKnowledgeHISVO.getType());
+        if (staticKnowledgeHISVO.getType().equals(5)) {
+            types.add(6);
+        } else if (staticKnowledgeHISVO.getType().equals(6)) {
+            types.add(5);
+        }
+
+        for (Integer type : types) {
+            String typeName = dicStaticTypeValNameMap.get(type.toString());
+            typeName = convertTypeName(typeName, 1, dicList);
+            typeNames.add(typeName);
+        }
+
         //术语映射
         List<String> uniqueNameList = getUniqueNames(staticKnowledgeHISVO);
         if (ListUtil.isEmpty(uniqueNameList)) {
@@ -356,7 +370,7 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
         conceptInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
                 .in("name", uniqueNameList)
                 .eq("status", StatusEnum.Enable.getKey())
-                .eq("type", typeName);
+                .in("type", typeNames);
         List<ConceptInfo> conceptInfoList = this.list(conceptInfoQueryWrapper);
 
         if (ListUtil.isEmpty(conceptInfoList)) {
@@ -393,7 +407,7 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
                 = EntityUtil.makeEntityListMap(detailList, "conceptId");
         for (StaticKnowledgeHISDTO staticKnowledgeDTO : retList) {
             staticKnowledgeDTO.setHisName(staticKnowledgeHISVO.getHisName());
-            staticKnowledgeDTO.setHisName(staticKnowledgeHISVO.getHisDetailName());
+            staticKnowledgeDTO.setHisDetailName(staticKnowledgeHISVO.getHisDetailName());
             List<StaticKnowledgeDetailDTO> subDetailList = conceptMap.get(staticKnowledgeDTO.getId());
             if (ListUtil.isNotEmpty(subDetailList)) {
                 List<StaticKnowledgeDetailDTO> introduceList = subDetailList
@@ -481,7 +495,8 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
                 Map<String, Map<String, Long>> disConfigMap
                         = diseaseConfigFacade.getConfigMap(hospitalId,
                         ListUtil.arrayToList(new String[] { staticKnowledgeHISVO.getHisName() }), null);
-                if (disConfigMap != null) {
+                if (disConfigMap != null
+                        && disConfigMap.get(staticKnowledgeHISVO.getHisName()) != null) {
                     nameList = new ArrayList<>(disConfigMap.get(staticKnowledgeHISVO.getHisName()).keySet());
                 }
                 break;
@@ -489,7 +504,8 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
                 Map<String, Map<String, Long>> drugConfigMap
                         = drugConfigFacade.getConfigMapWithoutForm(hospitalId,
                         ListUtil.arrayToList(new String[] { staticKnowledgeHISVO.getHisName() }), null);
-                if (drugConfigMap != null) {
+                if (drugConfigMap != null
+                        && drugConfigMap.get(staticKnowledgeHISVO.getHisName()) != null) {
                     nameList = new ArrayList<>(drugConfigMap.get(staticKnowledgeHISVO.getHisName()).keySet());
                 }
                 break;
@@ -511,18 +527,21 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
                 }
                 break;
             case 5:
+            case 6:
                 Map<String, Map<String, Long>> pacsConfigMap
                         = pacsConfigFacade.getConfigMap(hospitalId,
                         ListUtil.arrayToList(new String[] { staticKnowledgeHISVO.getHisName() }), null);
-                if (pacsConfigMap != null) {
+                if (pacsConfigMap != null
+                        && pacsConfigMap.get(staticKnowledgeHISVO.getHisName()) != null) {
                     nameList = new ArrayList<>(pacsConfigMap.get(staticKnowledgeHISVO.getHisName()).keySet());
                 }
                 break;
-            case 6:
+            case 7:
                 Map<String, Map<String, Long>> operationConfigMap
                         = operationConfigFacade.getConfigMap(hospitalId,
                         ListUtil.arrayToList(new String[] { staticKnowledgeHISVO.getHisName() }), null);
-                if (operationConfigMap != null) {
+                if (operationConfigMap != null &&
+                        operationConfigMap.get(staticKnowledgeHISVO.getHisName()) != null) {
                     nameList = new ArrayList<>(operationConfigMap.get(staticKnowledgeHISVO.getHisName()).keySet());
                 }
                 break;
@@ -530,10 +549,12 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
                 break;
 
         }
-        nameList = nameList
-                .stream()
-                .distinct()
-                .collect(Collectors.toList());
+        if (ListUtil.isNotEmpty(nameList)) {
+            nameList = nameList
+                    .stream()
+                    .distinct()
+                    .collect(Collectors.toList());
+        }
         return nameList;
     }
 

+ 48 - 9
src/main/java/com/diagbot/facade/DeptConfigFacade.java

@@ -153,15 +153,16 @@ public class DeptConfigFacade {
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
         List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, Long>> configMap
-                = getConfigMap(Long.valueOf(hospitalId), null, null);
+        Map<String, Map<String, List<Long>>> configMap
+                = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
         deptConfigList.forEach(deptConfig -> {
             deptConfig.setHospitalId(Long.valueOf(hospitalId));
             deptConfig.setModifier(userId);
             deptConfig.setGmtModified(now);
             if (deptConfig.getId() == null) {
-                if (configMap.containsKey(deptConfig.getHisName())) {
-                    deleteIds.add(configMap.get(deptConfig.getHisName()).get(deptConfig.getUniqueName()));
+                if (configMap.containsKey(deptConfig.getHisName())
+                        && ListUtil.isNotEmpty(configMap.get(deptConfig.getHisName()).get(deptConfig.getUniqueName()))) {
+                    deleteIds.addAll(configMap.get(deptConfig.getHisName()).get(deptConfig.getUniqueName()));
                 }
                 deptConfig.setCreator(userId);
                 deptConfig.setGmtCreate(now);
@@ -290,15 +291,16 @@ public class DeptConfigFacade {
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
         List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, Long>> configMap
-                = getConfigMap(Long.valueOf(hospitalId), null, null);
+        Map<String, Map<String, List<Long>>> configMap
+                = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
         deptConfigList.forEach(deptConfig -> {
             deptConfig.setHospitalId(Long.valueOf(hospitalId));
             deptConfig.setModifier(userId);
             deptConfig.setGmtModified(now);
             if (deptConfig.getId() == null) {
-                if (configMap.containsKey(deptConfig.getHisName())) {
-                    deleteIds.add(configMap.get(deptConfig.getHisName()).get(deptConfig.getUniqueName()));
+                if (configMap.containsKey(deptConfig.getHisName())
+                        && ListUtil.isNotEmpty(configMap.get(deptConfig.getHisName()).get(deptConfig.getUniqueName()))) {
+                    deleteIds.addAll(configMap.get(deptConfig.getHisName()).get(deptConfig.getUniqueName()));
                 }
                 deptConfig.setCreator(userId);
                 deptConfig.setGmtCreate(now);
@@ -327,7 +329,7 @@ public class DeptConfigFacade {
         }
         if (ListUtil.isNotEmpty(errorNumList)) {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                    "以下行数(不计入空行)标准术语与数据库术语不匹配:"
+                    "以下行数(不计空行)标准术语在数据库中不存在:"
                             + errorNumList.stream().collect(Collectors.joining("、"))
                             + "。导入取消,请修改后再试。");
         }
@@ -378,6 +380,43 @@ public class DeptConfigFacade {
         return retMap;
     }
 
+    /**
+     * 获取映射关系-公表名
+     *
+     * @param hospitalId
+     * @param hisNames
+     * @param uniqueNames
+     * @return
+     */
+    public Map<String, Map<String, List<Long>>> getConfigMapWithIds(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
+        Map<String, Map<String, List<Long>>> retMap = new HashMap<>();
+        QueryWrapper<DeptConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId);
+        if (ListUtil.isNotEmpty(hisNames)) {
+            queryWrapper.in("his_name", hisNames);
+        }
+        if (ListUtil.isNotEmpty(uniqueNames)) {
+            queryWrapper.in("unique_name", uniqueNames);
+        }
+        List<DeptConfig> records = deptConfigService.list(queryWrapper);
+        if (ListUtil.isEmpty(records)) {
+            return retMap;
+        }
+        Map<String, List<DeptConfig>> configMap = EntityUtil.makeEntityListMap(records, "hisName");
+        for (Map.Entry<String, List<DeptConfig>> entry : configMap.entrySet()) {
+            if (ListUtil.isNotEmpty(entry.getValue())) {
+                Map<String, List<DeptConfig>> subMap = EntityUtil.makeEntityListMap(entry.getValue(), "uniqueName");
+                Map<String, List<Long>> subIdMap = new HashMap<>();
+                for (Map.Entry<String, List<DeptConfig>> subEntry : subMap.entrySet()) {
+                    subIdMap.put(subEntry.getKey(), subEntry.getValue().stream().map(i -> i.getId()).distinct().collect(Collectors.toList()));
+                }
+                retMap.put(entry.getKey(), subIdMap);
+            }
+        }
+        return retMap;
+    }
+
     /**
      * 获取映射关系
      * Map<uniqueName,Map<hisName,id>>

+ 48 - 9
src/main/java/com/diagbot/facade/DiseaseConfigFacade.java

@@ -154,15 +154,16 @@ public class DiseaseConfigFacade {
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
         List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, Long>> configMap
-                = getConfigMap(Long.valueOf(hospitalId), null, null);
+        Map<String, Map<String, List<Long>>> configMap
+                = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
         diseaseConfigList.forEach(diseaseConfig -> {
             diseaseConfig.setHospitalId(Long.valueOf(hospitalId));
             diseaseConfig.setModifier(userId);
             diseaseConfig.setGmtModified(now);
             if (diseaseConfig.getId() == null) {
-                if (configMap.containsKey(diseaseConfig.getHisName())) {
-                    deleteIds.add(configMap.get(diseaseConfig.getHisName()).get(diseaseConfig.getUniqueName()));
+                if (configMap.containsKey(diseaseConfig.getHisName())
+                        && ListUtil.isNotEmpty(configMap.get(diseaseConfig.getHisName()).get(diseaseConfig.getUniqueName()))) {
+                    deleteIds.addAll(configMap.get(diseaseConfig.getHisName()).get(diseaseConfig.getUniqueName()));
                 }
                 diseaseConfig.setCreator(userId);
                 diseaseConfig.setGmtCreate(now);
@@ -288,15 +289,16 @@ public class DiseaseConfigFacade {
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
         List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, Long>> configMap
-                = getConfigMap(Long.valueOf(hospitalId), null, null);
+        Map<String, Map<String, List<Long>>> configMap
+                = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
         diseaseConfigList.forEach(diseaseConfig -> {
             diseaseConfig.setHospitalId(Long.valueOf(hospitalId));
             diseaseConfig.setModifier(userId);
             diseaseConfig.setGmtModified(now);
             if (diseaseConfig.getId() == null) {
-                if (configMap.containsKey(diseaseConfig.getHisName())) {
-                    deleteIds.add(configMap.get(diseaseConfig.getHisName()).get(diseaseConfig.getUniqueName()));
+                if (configMap.containsKey(diseaseConfig.getHisName())
+                        && ListUtil.isNotEmpty(configMap.get(diseaseConfig.getHisName()).get(diseaseConfig.getUniqueName()))) {
+                    deleteIds.addAll(configMap.get(diseaseConfig.getHisName()).get(diseaseConfig.getUniqueName()));
                 }
                 diseaseConfig.setCreator(userId);
                 diseaseConfig.setGmtCreate(now);
@@ -325,7 +327,7 @@ public class DiseaseConfigFacade {
         }
         if (ListUtil.isNotEmpty(errorNumList)) {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                    "以下行数(不计入空行)标准术语与数据库术语不匹配:"
+                    "以下行数(不计空行)标准术语在数据库中不存在:"
                             + errorNumList.stream().collect(Collectors.joining("、"))
                             + "。导入取消,请修改后再试。");
         }
@@ -376,6 +378,43 @@ public class DiseaseConfigFacade {
         return retMap;
     }
 
+    /**
+     * 获取映射关系-公表名
+     *
+     * @param hospitalId
+     * @param hisNames
+     * @param uniqueNames
+     * @return
+     */
+    public Map<String, Map<String, List<Long>>> getConfigMapWithIds(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
+        Map<String, Map<String, List<Long>>> retMap = new HashMap<>();
+        QueryWrapper<DiseaseConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId);
+        if (ListUtil.isNotEmpty(hisNames)) {
+            queryWrapper.in("his_name", hisNames);
+        }
+        if (ListUtil.isNotEmpty(uniqueNames)) {
+            queryWrapper.in("unique_name", uniqueNames);
+        }
+        List<DiseaseConfig> records = diseaseConfigService.list(queryWrapper);
+        if (ListUtil.isEmpty(records)) {
+            return retMap;
+        }
+        Map<String, List<DiseaseConfig>> configMap = EntityUtil.makeEntityListMap(records, "hisName");
+        for (Map.Entry<String, List<DiseaseConfig>> entry : configMap.entrySet()) {
+            if (ListUtil.isNotEmpty(entry.getValue())) {
+                Map<String, List<DiseaseConfig>> subMap = EntityUtil.makeEntityListMap(entry.getValue(), "uniqueName");
+                Map<String, List<Long>> subIdMap = new HashMap<>();
+                for (Map.Entry<String, List<DiseaseConfig>> subEntry : subMap.entrySet()) {
+                    subIdMap.put(subEntry.getKey(), subEntry.getValue().stream().map(i -> i.getId()).distinct().collect(Collectors.toList()));
+                }
+                retMap.put(entry.getKey(), subIdMap);
+            }
+        }
+        return retMap;
+    }
+
     /**
      * 获取映射关系
      * Map<uniqueName,Map<hisName,id>>

+ 58 - 8
src/main/java/com/diagbot/facade/DrugConfigFacade.java

@@ -179,8 +179,8 @@ public class DrugConfigFacade {
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
         List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, Map<String, Long>>> configMap
-                = getConfigMap(Long.valueOf(hospitalId), hisNames, uniqueNames);
+        Map<String, Map<String, Map<String, List<Long>>>> configMap
+                = getConfigMapWithIds(Long.valueOf(hospitalId), hisNames, uniqueNames);
         drugConfigList.forEach(drugConfig -> {
             drugConfig.setHospitalId(Long.valueOf(hospitalId));
             drugConfig.setModifier(userId);
@@ -190,7 +190,7 @@ public class DrugConfigFacade {
                 if (configMap.get(drugConfig.getHisName()) != null
                         && configMap.get(drugConfig.getHisName()).get(form) != null
                         && configMap.get(drugConfig.getHisName()).get(form).get(drugConfig.getUniqueName()) != null) {
-                    deleteIds.add(configMap.get(drugConfig.getHisName()).get(form).get(drugConfig.getUniqueName()));
+                    deleteIds.addAll(configMap.get(drugConfig.getHisName()).get(form).get(drugConfig.getUniqueName()));
                 }
                 drugConfig.setCreator(userId);
                 drugConfig.setGmtCreate(now);
@@ -345,8 +345,8 @@ public class DrugConfigFacade {
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
         List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, Map<String, Long>>> configMap
-                = getConfigMap(Long.valueOf(hospitalId), hisNames, uniqueNames);
+        Map<String, Map<String, Map<String, List<Long>>>> configMap
+                = getConfigMapWithIds(Long.valueOf(hospitalId), hisNames, uniqueNames);
         drugConfigList.forEach(drugConfig -> {
             drugConfig.setHospitalId(Long.valueOf(hospitalId));
             drugConfig.setModifier(userId);
@@ -356,7 +356,7 @@ public class DrugConfigFacade {
                 if (configMap.get(drugConfig.getHisName()) != null
                         && configMap.get(drugConfig.getHisName()).get(form) != null
                         && configMap.get(drugConfig.getHisName()).get(form).get(drugConfig.getUniqueName()) != null) {
-                    deleteIds.add(configMap.get(drugConfig.getHisName()).get(form).get(drugConfig.getUniqueName()));
+                    deleteIds.addAll(configMap.get(drugConfig.getHisName()).get(form).get(drugConfig.getUniqueName()));
                 }
                 drugConfig.setCreator(userId);
                 drugConfig.setGmtCreate(now);
@@ -376,12 +376,12 @@ public class DrugConfigFacade {
         List<String> names = respDTO.data;
         for (int i = 0; i < drugConfigList.size(); i++) {
             if (!names.contains(drugConfigList.get(i).getUniqueName())) {
-                errorNumList.add(String.valueOf(i + 2));
+                errorNumList.add(String.valueOf(i + 3));
             }
         }
         if (ListUtil.isNotEmpty(errorNumList)) {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                    "以下行数(不计入空行)标准术语与数据库术语不匹配:"
+                    "以下行数(不计空行)标准术语在数据库中不存在:"
                             + errorNumList.stream().collect(Collectors.joining("、"))
                             + "。导入取消,请修改后再试。");
         }
@@ -446,6 +446,56 @@ public class DrugConfigFacade {
         return retMap;
     }
 
+    /**
+     * 获取映射关系-公表名
+     *
+     * @param hospitalId
+     * @param hisNames
+     * @param uniqueNames
+     * @return Map<hisName,Map<form,Map<uniqueName,id>>>
+     */
+    public Map<String, Map<String,Map<String, List<Long>>>> getConfigMapWithIds(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
+        Map<String, Map<String, Map<String, List<Long>>>> retMap = new HashMap<>();
+        QueryWrapper<DrugConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId);
+        if (ListUtil.isNotEmpty(hisNames)) {
+            queryWrapper.in("his_name", hisNames);
+        }
+        if (ListUtil.isNotEmpty(uniqueNames)) {
+            queryWrapper.in("unique_name", uniqueNames);
+        }
+        List<DrugConfig> records = drugConfigService.list(queryWrapper);
+        if (ListUtil.isEmpty(records)) {
+            return retMap;
+        }
+        Map<String, List<DrugConfig>> hisNameMap = EntityUtil.makeEntityListMap(records, "hisName");
+        for (Map.Entry<String, List<DrugConfig>> entry : hisNameMap.entrySet()) {
+            if (ListUtil.isNotEmpty(entry.getValue())) {
+                Map<String, Map<String, List<Long>>> formMap = new HashMap<>();
+                entry.getValue().forEach(i -> {
+                    if (StringUtil.isBlank(i.getForm())) {
+                        i.setForm("");
+                    }
+                });
+                Map<String, List<DrugConfig>> subMap
+                        = EntityUtil.makeEntityListMap(entry.getValue(), "form");
+                for (Map.Entry<String, List<DrugConfig>> subEntry : subMap.entrySet()) {
+                    if (ListUtil.isNotEmpty(subEntry.getValue())) {
+                        Map<String, List<DrugConfig>> thirdMap = EntityUtil.makeEntityListMap(subEntry.getValue(), "uniqueName");
+                        Map<String, List<Long>> idMap = new HashMap<>();
+                        for (Map.Entry<String, List<DrugConfig>> thirdEntry : thirdMap.entrySet()) {
+                            idMap.put(thirdEntry.getKey(), thirdEntry.getValue().stream().map(i -> i.getId()).distinct().collect(Collectors.toList()));
+                        }
+                        formMap.put(subEntry.getKey(), idMap);
+                    }
+                }
+                retMap.put(entry.getKey(), formMap);
+            }
+        }
+        return retMap;
+    }
+
     /**
      * 获取映射关系
      * Map<uniqueName,Map<form,Map<hisName,id>>>

+ 67 - 13
src/main/java/com/diagbot/facade/LisConfigFacade.java

@@ -170,8 +170,8 @@ public class LisConfigFacade {
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
         List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, Map<String, Long>>> configMap
-                = getConfigMap(Long.valueOf(hospitalId), null, null);
+        Map<String, Map<String, Map<String, List<Long>>>> configMap
+                = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
         lisConfigList.forEach(lisConfig -> {
             lisConfig.setHospitalId(Long.valueOf(hospitalId));
             lisConfig.setModifier(userId);
@@ -180,12 +180,12 @@ public class LisConfigFacade {
                 if (configMap.containsKey(lisConfig.getHisName())) {
                     if (lisConfig.getHisDetailName() == null
                             && configMap.get(lisConfig.getHisName()).containsKey("")) {
-                        if (configMap.get(lisConfig.getHisName()).get("").containsKey(lisConfig.getUniqueName())) {
-                            deleteIds.add(configMap.get(lisConfig.getHisName()).get("").get(lisConfig.getUniqueName()));
+                        if (ListUtil.isNotEmpty(configMap.get(lisConfig.getHisName()).get("").get(lisConfig.getUniqueName()))) {
+                            deleteIds.addAll(configMap.get(lisConfig.getHisName()).get("").get(lisConfig.getUniqueName()));
                         }
                     } else if (configMap.get(lisConfig.getHisName()).containsKey(lisConfig.getHisDetailName())) {
-                        if (configMap.get(lisConfig.getHisName()).get(lisConfig.getHisDetailName()).containsKey(lisConfig.getUniqueName())) {
-                            deleteIds.add(configMap
+                        if (ListUtil.isNotEmpty(configMap.get(lisConfig.getHisName()).get(lisConfig.getHisDetailName()).get(lisConfig.getUniqueName()))) {
+                            deleteIds.addAll(configMap
                                     .get(lisConfig.getHisName())
                                     .get(lisConfig.getHisDetailName())
                                     .get(lisConfig.getUniqueName()));
@@ -329,8 +329,8 @@ public class LisConfigFacade {
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
         List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, Map<String, Long>>> configMap
-                = getConfigMap(Long.valueOf(hospitalId), hisNames, uniqueNames);
+        Map<String, Map<String, Map<String, List<Long>>>> configMap
+                = getConfigMapWithIds(Long.valueOf(hospitalId), hisNames, uniqueNames);
         lisConfigList.forEach(lisConfig -> {
             lisConfig.setHospitalId(Long.valueOf(hospitalId));
             lisConfig.setModifier(userId);
@@ -339,12 +339,12 @@ public class LisConfigFacade {
                 if (configMap.containsKey(lisConfig.getHisName())) {
                     if (lisConfig.getHisDetailName() == null
                             && configMap.get(lisConfig.getHisName()).containsKey("")) {
-                        if (configMap.get(lisConfig.getHisName()).get("").containsKey(lisConfig.getUniqueName())) {
-                            deleteIds.add(configMap.get(lisConfig.getHisName()).get("").get(lisConfig.getUniqueName()));
+                        if (ListUtil.isNotEmpty(configMap.get(lisConfig.getHisName()).get("").get(lisConfig.getUniqueName()))) {
+                            deleteIds.addAll(configMap.get(lisConfig.getHisName()).get("").get(lisConfig.getUniqueName()));
                         }
                     } else if (configMap.get(lisConfig.getHisName()).containsKey(lisConfig.getHisDetailName())) {
-                        if (configMap.get(lisConfig.getHisName()).get(lisConfig.getHisDetailName()).containsKey(lisConfig.getUniqueName())) {
-                            deleteIds.add(configMap
+                        if (ListUtil.isNotEmpty(configMap.get(lisConfig.getHisName()).get(lisConfig.getHisDetailName()).get(lisConfig.getUniqueName()))) {
+                            deleteIds.addAll(configMap
                                     .get(lisConfig.getHisName())
                                     .get(lisConfig.getHisDetailName())
                                     .get(lisConfig.getUniqueName()));
@@ -379,7 +379,7 @@ public class LisConfigFacade {
         }
         if (ListUtil.isNotEmpty(errorNumList)) {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                    "以下行数(不计入空行)标准术语与数据库术语不匹配:"
+                    "以下行数(不计空行)标准术语在数据库中不存在:"
                             + errorNumList.stream().collect(Collectors.joining("、"))
                             + "。导入取消,请修改后再试。");
         }
@@ -449,6 +449,60 @@ public class LisConfigFacade {
         return retMap;
     }
 
+    /**
+     * 获取映射关系-id
+     * Map<hisName,Map<hisDetailName,Map<uniqueName,id>>>
+     *
+     * @param hospitalId
+     * @param hisNames
+     * @param uniqueNames
+     * @return
+     */
+    public Map<String, Map<String, Map<String, List<Long>>>> getConfigMapWithIds(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
+        Map<String, Map<String, Map<String, List<Long>>>> retMap = new HashMap<>();
+        QueryWrapper<LisConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId);
+        if (ListUtil.isNotEmpty(hisNames)) {
+            queryWrapper.in("his_name", hisNames);
+        }
+        if (ListUtil.isNotEmpty(uniqueNames)) {
+            queryWrapper.in("unique_name", uniqueNames);
+        }
+        List<LisConfig> records = lisConfigService.list(queryWrapper);
+        if (ListUtil.isEmpty(records)) {
+            return retMap;
+        }
+
+        records.forEach(lisConfig -> {
+            if (lisConfig.getHisDetailName() == null) {
+                lisConfig.setHisDetailName("");
+            }
+        });
+
+        Map<String, List<LisConfig>> hisNameMap = EntityUtil.makeEntityListMap(records, "hisName");
+        for (Map.Entry<String, List<LisConfig>> entry : hisNameMap.entrySet()) {
+            if (ListUtil.isNotEmpty(entry.getValue())) {
+                Map<String, Map<String, List<Long>>> detailNameMap = new HashMap<>();
+                //his名称映射到标准词,1:n
+                Map<String, List<LisConfig>> hisDetailNameMap
+                        = EntityUtil.makeEntityListMap(entry.getValue(), "hisDetailName");
+                for (Map.Entry<String, List<LisConfig>> detailEntry : hisDetailNameMap.entrySet()) {
+                    if (ListUtil.isNotEmpty(detailEntry.getValue())) {
+                        Map<String, List<LisConfig>> thirdMap = EntityUtil.makeEntityListMap(detailEntry.getValue(), "uniqueName");
+                        Map<String, List<Long>> idMap = new HashMap<>();
+                        for (Map.Entry<String, List<LisConfig>> thirdEntry : thirdMap.entrySet()) {
+                            idMap.put(thirdEntry.getKey(), thirdEntry.getValue().stream().map(i -> i.getId()).distinct().collect(Collectors.toList()));
+                        }
+                        detailNameMap.put(detailEntry.getKey(), idMap);
+                    }
+                }
+                retMap.put(entry.getKey(), detailNameMap);
+            }
+        }
+        return retMap;
+    }
+
 
     /**
      * 获取映射关系

+ 48 - 9
src/main/java/com/diagbot/facade/OperationConfigFacade.java

@@ -154,15 +154,16 @@ public class OperationConfigFacade {
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
         List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, Long>> configMap
-                = getConfigMap(Long.valueOf(hospitalId), null, null);
+        Map<String, Map<String, List<Long>>> configMap
+                = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
         operationConfigList.forEach(operationConfig -> {
             operationConfig.setHospitalId(Long.valueOf(hospitalId));
             operationConfig.setModifier(userId);
             operationConfig.setGmtModified(now);
             if (operationConfig.getId() == null) {
-                if (configMap.containsKey(operationConfig.getHisName())) {
-                    deleteIds.add(configMap.get(operationConfig.getHisName()).get(operationConfig.getUniqueName()));
+                if (configMap.containsKey(operationConfig.getHisName())
+                &&ListUtil.isNotEmpty(configMap.get(operationConfig.getHisName()).get(operationConfig.getUniqueName()))) {
+                    deleteIds.addAll(configMap.get(operationConfig.getHisName()).get(operationConfig.getUniqueName()));
                 }
                 operationConfig.setCreator(userId);
                 operationConfig.setGmtCreate(now);
@@ -286,15 +287,16 @@ public class OperationConfigFacade {
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
         List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, Long>> configMap
-                = getConfigMap(Long.valueOf(hospitalId), null, null);
+        Map<String, Map<String, List<Long>>> configMap
+                = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
         operationConfigList.forEach(operationConfig -> {
             operationConfig.setHospitalId(Long.valueOf(hospitalId));
             operationConfig.setModifier(userId);
             operationConfig.setGmtModified(now);
             if (operationConfig.getId() == null) {
-                if (configMap.containsKey(operationConfig.getHisName())) {
-                    deleteIds.add(configMap.get(operationConfig.getHisName()).get(operationConfig.getUniqueName()));
+                if (configMap.containsKey(operationConfig.getHisName())
+                        && ListUtil.isNotEmpty(configMap.get(operationConfig.getHisName()).get(operationConfig.getUniqueName()))) {
+                    deleteIds.addAll(configMap.get(operationConfig.getHisName()).get(operationConfig.getUniqueName()));
                 }
                 operationConfig.setCreator(userId);
                 operationConfig.setGmtCreate(now);
@@ -323,7 +325,7 @@ public class OperationConfigFacade {
         }
         if (ListUtil.isNotEmpty(errorNumList)) {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                    "以下行数(不计入空行)标准术语与数据库术语不匹配:"
+                    "以下行数(不计空行)标准术语在数据库中不存在:"
                             + errorNumList.stream().collect(Collectors.joining("、"))
                             + "。导入取消,请修改后再试。");
         }
@@ -374,6 +376,43 @@ public class OperationConfigFacade {
         return retMap;
     }
 
+    /**
+     * 获取映射关系-公表名
+     *
+     * @param hospitalId
+     * @param hisNames
+     * @param uniqueNames
+     * @return
+     */
+    public Map<String, Map<String, List<Long>>> getConfigMapWithIds(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
+        Map<String, Map<String, List<Long>>> retMap = new HashMap<>();
+        QueryWrapper<OperationConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId);
+        if (ListUtil.isNotEmpty(hisNames)) {
+            queryWrapper.in("his_name", hisNames);
+        }
+        if (ListUtil.isNotEmpty(uniqueNames)) {
+            queryWrapper.in("unique_name", uniqueNames);
+        }
+        List<OperationConfig> records = operationConfigService.list(queryWrapper);
+        if (ListUtil.isEmpty(records)) {
+            return retMap;
+        }
+        Map<String, List<OperationConfig>> configMap = EntityUtil.makeEntityListMap(records, "hisName");
+        for (Map.Entry<String, List<OperationConfig>> entry : configMap.entrySet()) {
+            if (ListUtil.isNotEmpty(entry.getValue())) {
+                Map<String, List<OperationConfig>> subMap = EntityUtil.makeEntityListMap(entry.getValue(), "uniqueName");
+                Map<String, List<Long>> subIdMap = new HashMap<>();
+                for (Map.Entry<String, List<OperationConfig>> subEntry : subMap.entrySet()) {
+                    subIdMap.put(subEntry.getKey(), subEntry.getValue().stream().map(i -> i.getId()).distinct().collect(Collectors.toList()));
+                }
+                retMap.put(entry.getKey(), subIdMap);
+            }
+        }
+        return retMap;
+    }
+
     /**
      * 获取映射关系
      * Map<uniqueName,Map<hisName,id>>

+ 48 - 9
src/main/java/com/diagbot/facade/PacsConfigFacade.java

@@ -153,15 +153,16 @@ public class PacsConfigFacade {
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
         List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, Long>> configMap
-                = getConfigMap(Long.valueOf(hospitalId), null, null);
+        Map<String, Map<String, List<Long>>> configMap
+                = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
         pacsConfigList.forEach(pacsConfig -> {
             pacsConfig.setHospitalId(Long.valueOf(hospitalId));
             pacsConfig.setModifier(userId);
             pacsConfig.setGmtModified(now);
             if (pacsConfig.getId() == null) {
-                if (configMap.containsKey(pacsConfig.getHisName())) {
-                    deleteIds.add(configMap.get(pacsConfig.getHisName()).get(pacsConfig.getUniqueName()));
+                if (configMap.containsKey(pacsConfig.getHisName())
+                        && ListUtil.isNotEmpty(configMap.get(pacsConfig.getHisName()).get(pacsConfig.getUniqueName()))) {
+                    deleteIds.addAll(configMap.get(pacsConfig.getHisName()).get(pacsConfig.getUniqueName()));
                 }
                 pacsConfig.setCreator(userId);
                 pacsConfig.setGmtCreate(now);
@@ -285,15 +286,16 @@ public class PacsConfigFacade {
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
         List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, Long>> configMap
-                = getConfigMap(Long.valueOf(hospitalId), null, null);
+        Map<String, Map<String, List<Long>>> configMap
+                = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
         pacsConfigList.forEach(pacsConfig -> {
             pacsConfig.setHospitalId(Long.valueOf(hospitalId));
             pacsConfig.setModifier(userId);
             pacsConfig.setGmtModified(now);
             if (pacsConfig.getId() == null) {
-                if (configMap.containsKey(pacsConfig.getHisName())) {
-                    deleteIds.add(configMap.get(pacsConfig.getHisName()).get(pacsConfig.getUniqueName()));
+                if (configMap.containsKey(pacsConfig.getHisName())
+                        && ListUtil.isNotEmpty(configMap.get(pacsConfig.getHisName()).get(pacsConfig.getUniqueName()))) {
+                    deleteIds.addAll(configMap.get(pacsConfig.getHisName()).get(pacsConfig.getUniqueName()));
                 }
                 pacsConfig.setCreator(userId);
                 pacsConfig.setGmtCreate(now);
@@ -322,7 +324,7 @@ public class PacsConfigFacade {
         }
         if (ListUtil.isNotEmpty(errorNumList)) {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                    "以下行数(不计入空行)标准术语与数据库术语不匹配:"
+                    "以下行数(不计空行)标准术语在数据库中不存在:"
                             + errorNumList.stream().collect(Collectors.joining("、"))
                             + "。导入取消,请修改后再试。");
         }
@@ -373,6 +375,43 @@ public class PacsConfigFacade {
         return retMap;
     }
 
+    /**
+     * 获取映射关系-公表名
+     *
+     * @param hospitalId
+     * @param hisNames
+     * @param uniqueNames
+     * @return
+     */
+    public Map<String, Map<String, List<Long>>> getConfigMapWithIds(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
+        Map<String, Map<String, List<Long>>> retMap = new HashMap<>();
+        QueryWrapper<PacsConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId);
+        if (ListUtil.isNotEmpty(hisNames)) {
+            queryWrapper.in("his_name", hisNames);
+        }
+        if (ListUtil.isNotEmpty(uniqueNames)) {
+            queryWrapper.in("unique_name", uniqueNames);
+        }
+        List<PacsConfig> records = pacsConfigService.list(queryWrapper);
+        if (ListUtil.isEmpty(records)) {
+            return retMap;
+        }
+        Map<String, List<PacsConfig>> configMap = EntityUtil.makeEntityListMap(records, "hisName");
+        for (Map.Entry<String, List<PacsConfig>> entry : configMap.entrySet()) {
+            if (ListUtil.isNotEmpty(entry.getValue())) {
+                Map<String, List<PacsConfig>> subMap = EntityUtil.makeEntityListMap(entry.getValue(), "uniqueName");
+                Map<String, List<Long>> subIdMap = new HashMap<>();
+                for (Map.Entry<String, List<PacsConfig>> subEntry : subMap.entrySet()) {
+                    subIdMap.put(subEntry.getKey(), subEntry.getValue().stream().map(i -> i.getId()).distinct().collect(Collectors.toList()));
+                }
+                retMap.put(entry.getKey(), subIdMap);
+            }
+        }
+        return retMap;
+    }
+
     /**
      * 获取映射关系
      * Map<uniqueName,Map<hisName,id>>

+ 48 - 9
src/main/java/com/diagbot/facade/TransfusionConfigFacade.java

@@ -153,15 +153,16 @@ public class TransfusionConfigFacade {
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
         List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, Long>> configMap
-                = getConfigMap(Long.valueOf(hospitalId), null, null);
+        Map<String, Map<String, List<Long>>> configMap
+                = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
         transfusionConfigList.forEach(transfusionConfig -> {
             transfusionConfig.setHospitalId(Long.valueOf(hospitalId));
             transfusionConfig.setModifier(userId);
             transfusionConfig.setGmtModified(now);
             if (transfusionConfig.getId() == null) {
-                if (configMap.containsKey(transfusionConfig.getHisName())) {
-                    deleteIds.add(configMap.get(transfusionConfig.getHisName()).get(transfusionConfig.getUniqueName()));
+                if (configMap.containsKey(transfusionConfig.getHisName())
+                        && ListUtil.isNotEmpty(configMap.get(transfusionConfig.getHisName()).get(transfusionConfig.getUniqueName()))) {
+                    deleteIds.addAll(configMap.get(transfusionConfig.getHisName()).get(transfusionConfig.getUniqueName()));
                 }
                 transfusionConfig.setCreator(userId);
                 transfusionConfig.setGmtCreate(now);
@@ -285,15 +286,16 @@ public class TransfusionConfigFacade {
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
         List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, Long>> configMap
-                = getConfigMap(Long.valueOf(hospitalId), null, null);
+        Map<String, Map<String, List<Long>>> configMap
+                = getConfigMapWithIds(Long.valueOf(hospitalId), null, null);
         transfusionConfigList.forEach(transfusionConfig -> {
             transfusionConfig.setHospitalId(Long.valueOf(hospitalId));
             transfusionConfig.setModifier(userId);
             transfusionConfig.setGmtModified(now);
             if (transfusionConfig.getId() == null) {
-                if (configMap.containsKey(transfusionConfig.getHisName())) {
-                    deleteIds.add(configMap.get(transfusionConfig.getHisName()).get(transfusionConfig.getUniqueName()));
+                if (configMap.containsKey(transfusionConfig.getHisName())
+                        && ListUtil.isNotEmpty(configMap.get(transfusionConfig.getHisName()).get(transfusionConfig.getUniqueName()))) {
+                    deleteIds.addAll(configMap.get(transfusionConfig.getHisName()).get(transfusionConfig.getUniqueName()));
                 }
                 transfusionConfig.setCreator(userId);
                 transfusionConfig.setGmtCreate(now);
@@ -322,7 +324,7 @@ public class TransfusionConfigFacade {
         }
         if (ListUtil.isNotEmpty(errorNumList)) {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                    "以下行数(不计入空行)标准术语与数据库术语不匹配:"
+                    "以下行数(不计空行)标准术语在数据库中不存在:"
                             + errorNumList.stream().collect(Collectors.joining("、"))
                             + "。导入取消,请修改后再试。");
         }
@@ -373,6 +375,43 @@ public class TransfusionConfigFacade {
         return retMap;
     }
 
+    /**
+     * 获取映射关系-公表名
+     *
+     * @param hospitalId
+     * @param hisNames
+     * @param uniqueNames
+     * @return
+     */
+    public Map<String, Map<String, List<Long>>> getConfigMapWithIds(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
+        Map<String, Map<String, List<Long>>> retMap = new HashMap<>();
+        QueryWrapper<TransfusionConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId);
+        if (ListUtil.isNotEmpty(hisNames)) {
+            queryWrapper.in("his_name", hisNames);
+        }
+        if (ListUtil.isNotEmpty(uniqueNames)) {
+            queryWrapper.in("unique_name", uniqueNames);
+        }
+        List<TransfusionConfig> records = transfusionConfigService.list(queryWrapper);
+        if (ListUtil.isEmpty(records)) {
+            return retMap;
+        }
+        Map<String, List<TransfusionConfig>> configMap = EntityUtil.makeEntityListMap(records, "hisName");
+        for (Map.Entry<String, List<TransfusionConfig>> entry : configMap.entrySet()) {
+            if (ListUtil.isNotEmpty(entry.getValue())) {
+                Map<String, List<TransfusionConfig>> subMap = EntityUtil.makeEntityListMap(entry.getValue(), "uniqueName");
+                Map<String, List<Long>> subIdMap = new HashMap<>();
+                for (Map.Entry<String, List<TransfusionConfig>> subEntry : subMap.entrySet()) {
+                    subIdMap.put(subEntry.getKey(), subEntry.getValue().stream().map(i -> i.getId()).distinct().collect(Collectors.toList()));
+                }
+                retMap.put(entry.getKey(), subIdMap);
+            }
+        }
+        return retMap;
+    }
+
     /**
      * 获取映射关系
      * Map<uniqueName,Map<hisName,id>>

+ 1 - 1
src/main/java/com/diagbot/web/ConceptInfoController.java

@@ -78,7 +78,7 @@ public class ConceptInfoController {
     }
 
     @ApiOperation(value = "对接获取静态知识[zhaops]",
-            notes = "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、6-检查子项、7-手术和操作 <br>" +
+            notes = "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、7-手术和操作 <br>" +
                     "contentTypes: 内容类型(多选):1-静态信息、2-注意事项、3-临床路径、4-治疗方案 <br>" +
                     "hisName: HIS大项名称<br>" +
                     "hisDetailName: HIS小项名称<br>")

+ 3 - 3
src/main/resources/mapper/LisConfigMapper.xml

@@ -51,7 +51,7 @@
             `tran_lis_config`
         WHERE
             is_deleted = "N"
-        AND his_detail_name IS NULL
+        AND (his_detail_name IS NULL OR his_detail_name = '')
         <if test="hospitalId!=null">
             and hospital_id=#{hospitalId}
         </if>
@@ -65,7 +65,7 @@
             `tran_lis_config`
         WHERE
             is_deleted = "N"
-        AND his_detail_name IS NULL
+        AND (his_detail_name IS NULL OR his_detail_name = '')
         <if test="hospitalId!=null">
             and hospital_id=#{hospitalId}
         </if>
@@ -79,7 +79,7 @@
             `tran_lis_config`
         WHERE
             is_deleted = "N"
-        AND his_detail_name IS NULL
+        AND (his_detail_name IS NULL OR his_detail_name = '')
         <if test="hospitalId!=null">
             and hospital_id=#{hospitalId}
         </if>