|
@@ -58,7 +58,8 @@ public class LisConfigFacade extends LisConfigServiceImpl {
|
|
|
} else if (StringUtil.isNotBlank(lisConfig.getHisName())) {
|
|
|
queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
.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())) {
|
|
|
queryWrapper
|
|
|
.isNull("his_detail_name")
|
|
@@ -108,45 +109,71 @@ public class LisConfigFacade extends LisConfigServiceImpl {
|
|
|
* @return
|
|
|
*/
|
|
|
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 userId = SysUserUtils.getCurrentPrincipleID();
|
|
|
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()
|
|
|
.filter(i -> StringUtil.isNotBlank(i.getHisName()))
|
|
|
.filter(i -> StringUtil.isNotBlank(i.getUniqueName()))
|
|
|
.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;
|
|
|
}
|
|
|
|
|
@@ -199,103 +226,25 @@ public class LisConfigFacade extends LisConfigServiceImpl {
|
|
|
* @param 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);
|
|
|
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 hisNames
|
|
|
* @param uniqueNames
|
|
|
* @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.eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
.eq("hospital_id", hospitalId);
|
|
@@ -319,8 +268,17 @@ public class LisConfigFacade extends LisConfigServiceImpl {
|
|
|
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", "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;
|