Browse Source

术语映射

zhaops 4 years ago
parent
commit
7ecf154903
1 changed files with 76 additions and 118 deletions
  1. 76 118
      src/main/java/com/diagbot/facade/LisConfigFacade.java

+ 76 - 118
src/main/java/com/diagbot/facade/LisConfigFacade.java

@@ -58,7 +58,8 @@ public class LisConfigFacade extends LisConfigServiceImpl {
         } else if (StringUtil.isNotBlank(lisConfig.getHisName())) {
         } else if (StringUtil.isNotBlank(lisConfig.getHisName())) {
             queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
             queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
                     .eq("hospital_id", Long.valueOf(hospitalId))
                     .eq("hospital_id", Long.valueOf(hospitalId))
-                    .eq("his_name", lisConfig.getHisName());
+                    .eq("his_name", lisConfig.getHisName())
+                    .eq("unique_name", lisConfig.getUniqueName());
             if (StringUtil.isBlank(lisConfig.getHisDetailName())) {
             if (StringUtil.isBlank(lisConfig.getHisDetailName())) {
                 queryWrapper
                 queryWrapper
                         .isNull("his_detail_name")
                         .isNull("his_detail_name")
@@ -108,45 +109,71 @@ public class LisConfigFacade extends LisConfigServiceImpl {
      * @return
      * @return
      */
      */
     public Boolean saveOrUpdateRecords(LisConfigListVO lisConfigListVO) {
     public Boolean saveOrUpdateRecords(LisConfigListVO lisConfigListVO) {
+        if (ListUtil.isEmpty(lisConfigListVO.getLisConfigList())) {
+            return false;
+        }
+        return saveOrUpdateRecords(lisConfigListVO.getLisConfigList());
+    }
+
+    /**
+     * 批量保存
+     * @param lisConfigList
+     * @return
+     */
+    public Boolean saveOrUpdateRecords(List<LisConfig> lisConfigList) {
+        if (ListUtil.isEmpty(lisConfigList)) {
+            return false;
+        }
         String hospitalId = SysUserUtils.getCurrentHospitalID();
         String hospitalId = SysUserUtils.getCurrentHospitalID();
         String userId = SysUserUtils.getCurrentPrincipleID();
         String userId = SysUserUtils.getCurrentPrincipleID();
         Date now = DateUtil.now();
         Date now = DateUtil.now();
-        //id为空且已存在的映射关系先删除
-        List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, Long>> configMap
-                = getConfigMapWithId(Long.valueOf(hospitalId), null, null);
-        if (ListUtil.isNotEmpty(lisConfigListVO.getLisConfigList())) {
-            lisConfigListVO.getLisConfigList().forEach(lisConfig -> {
-                lisConfig.setHospitalId(Long.valueOf(hospitalId));
-                lisConfig.setModifier(userId);
-                lisConfig.setGmtModified(now);
-                if (lisConfig.getId() == null) {
-                    if (configMap.containsKey(lisConfig.getHisName())) {
-                        if (lisConfig.getHisDetailName() == null
-                                && configMap.get(lisConfig.getHisName()).containsKey("")) {
-                            deleteIds.add(configMap.get(lisConfig.getHisName()).get(""));
-                        } else if (configMap.get(lisConfig.getHisName()).containsKey(lisConfig.getHisDetailName())) {
-                            deleteIds.add(configMap.get(lisConfig.getHisName()).get(lisConfig.getHisDetailName()));
-                        }
-                    }
-                    lisConfig.setCreator(userId);
-                    lisConfig.setGmtCreate(now);
-                }
-                if (lisConfig.getIsDeleted() == null) {
-                    lisConfig.setIsDeleted(IsDeleteEnum.N.getKey());
-                }
-            });
-            IdListVO idListVO = new IdListVO();
-            idListVO.setIds(deleteIds);
-            deleteRecords(idListVO);
-        }
+
         //数据不完整的不保存
         //数据不完整的不保存
-        List<LisConfig> records = lisConfigListVO.getLisConfigList()
+        //过滤套餐或公表名为空的数据
+        lisConfigList = lisConfigList
                 .stream()
                 .stream()
                 .filter(i -> StringUtil.isNotBlank(i.getHisName()))
                 .filter(i -> StringUtil.isNotBlank(i.getHisName()))
                 .filter(i -> StringUtil.isNotBlank(i.getUniqueName()))
                 .filter(i -> StringUtil.isNotBlank(i.getUniqueName()))
                 .collect(Collectors.toList());
                 .collect(Collectors.toList());
-        lisConfigService.saveOrUpdateBatch(records);
+
+        // 验证数据是否已存在,已存在的先删除
+        // 没id的删除重新插入,有id的更新
+        List<Long> deleteIds = Lists.newLinkedList();
+        Map<String, Map<String, Map<String, Long>>> configMap
+                = getConfigMap(Long.valueOf(hospitalId), null, null);
+        lisConfigList.forEach(lisConfig -> {
+            lisConfig.setHospitalId(Long.valueOf(hospitalId));
+            lisConfig.setModifier(userId);
+            lisConfig.setGmtModified(now);
+            if (lisConfig.getId() == null) {
+                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()));
+                        }
+                    } else if (configMap.get(lisConfig.getHisName()).containsKey(lisConfig.getHisDetailName())) {
+                        if (configMap.get(lisConfig.getHisName()).get(lisConfig.getHisDetailName()).containsKey(lisConfig.getUniqueName())) {
+                            deleteIds.add(configMap
+                                    .get(lisConfig.getHisName())
+                                    .get(lisConfig.getHisDetailName())
+                                    .get(lisConfig.getUniqueName()));
+                        }
+                    }
+                }
+                lisConfig.setCreator(userId);
+                lisConfig.setGmtCreate(now);
+            }
+            if (lisConfig.getIsDeleted() == null) {
+                lisConfig.setIsDeleted(IsDeleteEnum.N.getKey());
+            }
+        });
+        //删除已存在映射关系
+        IdListVO idListVO = new IdListVO();
+        idListVO.setIds(deleteIds);
+        deleteRecords(idListVO);
+
+        lisConfigService.saveOrUpdateBatch(lisConfigList);
         return true;
         return true;
     }
     }
 
 
@@ -199,103 +226,25 @@ public class LisConfigFacade extends LisConfigServiceImpl {
      * @param file
      * @param file
      */
      */
     public void importExcel(MultipartFile file) {
     public void importExcel(MultipartFile file) {
-        String hospitalId = SysUserUtils.getCurrentHospitalID();
-        String userId = SysUserUtils.getCurrentPrincipleID();
-        Date now = DateUtil.now();
+        //从Excel读取数据
         List<LisConfig> lisConfigList = ExcelUtils.importExcel(file, 0, 1, LisConfig.class);
         List<LisConfig> lisConfigList = ExcelUtils.importExcel(file, 0, 1, LisConfig.class);
         if (ListUtil.isNotEmpty(lisConfigList)) {
         if (ListUtil.isNotEmpty(lisConfigList)) {
-            //过滤套餐或公表名为空的数据
-            lisConfigList = lisConfigList
-                    .stream()
-                    .filter(i -> StringUtil.isNotBlank(i.getHisName()))
-                    .filter(i -> StringUtil.isNotBlank(i.getUniqueName()))
-                    .collect(Collectors.toList());
-            //验证数据是否已存在
-            List<Long> deleteIds = Lists.newArrayList();
-            Map<String, Map<String, Long>> configMap = getConfigMapWithId(Long.valueOf(hospitalId), null, null);
-            lisConfigList.forEach(lisConfig -> {
-                if (configMap.containsKey(lisConfig.getHisName())) {
-                    if (StringUtil.isBlank(lisConfig.getHisDetailName())
-                            && configMap.get(lisConfig.getHisName()).containsKey("")) {
-                        deleteIds.add(configMap.get(lisConfig.getHisName()).get(""));
-                    } else if (configMap.get(lisConfig.getHisName()).containsKey(lisConfig.getHisDetailName())) {
-                        deleteIds.add(configMap.get(lisConfig.getHisName()).get(lisConfig.getHisDetailName()));
-                    }
-                }
-                //删除已存在的映射关系
-                if (ListUtil.isNotEmpty(deleteIds)) {
-                    IdListVO idListVO = new IdListVO();
-                    idListVO.setIds(deleteIds);
-                    deleteRecords(idListVO);
-                }
-            });
-
-            //新增数据
-            lisConfigList.forEach(lisConfig -> {
-                lisConfig.setIsDeleted(IsDeleteEnum.N.getKey());
-                lisConfig.setHospitalId(Long.valueOf(hospitalId));
-                if (lisConfig.getId() == null) {
-                    lisConfig.setCreator(userId);
-                    lisConfig.setGmtCreate(now);
-                }
-                lisConfig.setModifier(userId);
-                lisConfig.setGmtModified(now);
-            });
-
-            lisConfigService.saveBatch(lisConfigList);
+            saveOrUpdateRecords(lisConfigList);
         }
         }
     }
     }
 
 
-    /**
-     * 获取映射关系-id
-     *
-     * @param hospitalId
-     * @param hisNames
-     * @param uniqueNames
-     * @return
-     */
-    public Map<String, Map<String, Long>> getConfigMapWithId(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
-        Map<String, Map<String, 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 = this.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())) {
-                retMap.put(entry.getKey(),
-                        EntityUtil.makeMapWithKeyValue(entry.getValue(), "hisDetailName", "id"));
-            }
-        }
-        return retMap;
-    }
 
 
     /**
     /**
-     * 获取映射关系-公表名
-     *
+     * 获取映射关系-id
+     * Map<hisName,Map<hisDetailName,Map<uniqueName,id>>>
      * @param hospitalId
      * @param hospitalId
      * @param hisNames
      * @param hisNames
      * @param uniqueNames
      * @param uniqueNames
      * @return
      * @return
      */
      */
-    public Map<String, Map<String, String>> getConfigMapWithUniqueName(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
-        Map<String, Map<String, String>> retMap = new HashMap<>();
+    public Map<String, Map<String,Map<String, Long>>> getConfigMap(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
+        Map<String, Map<String, Map<String, Long>>> retMap = new HashMap<>();
         QueryWrapper<LisConfig> queryWrapper = new QueryWrapper<>();
         QueryWrapper<LisConfig> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
         queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("hospital_id", hospitalId);
                 .eq("hospital_id", hospitalId);
@@ -319,8 +268,17 @@ public class LisConfigFacade extends LisConfigServiceImpl {
         Map<String, List<LisConfig>> hisNameMap = EntityUtil.makeEntityListMap(records, "hisName");
         Map<String, List<LisConfig>> hisNameMap = EntityUtil.makeEntityListMap(records, "hisName");
         for (Map.Entry<String, List<LisConfig>> entry : hisNameMap.entrySet()) {
         for (Map.Entry<String, List<LisConfig>> entry : hisNameMap.entrySet()) {
             if (ListUtil.isNotEmpty(entry.getValue())) {
             if (ListUtil.isNotEmpty(entry.getValue())) {
-                retMap.put(entry.getKey(),
-                        EntityUtil.makeMapWithKeyValue(entry.getValue(), "hisDetailName", "uniqueName"));
+                Map<String, Map<String, 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())) {
+                        detailNameMap.put(detailEntry.getKey(),
+                                EntityUtil.makeMapWithKeyValue(detailEntry.getValue(), "uniqueName", "id"));
+                    }
+                }
+                retMap.put(entry.getKey(), detailNameMap);
             }
             }
         }
         }
         return retMap;
         return retMap;