|
@@ -3,15 +3,22 @@ package com.diagbot.facade;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.diagbot.client.CdssCoreClient;
|
|
|
+import com.diagbot.dto.RespDTO;
|
|
|
import com.diagbot.entity.DeptConfig;
|
|
|
+import com.diagbot.enums.ConceptTypeEnum;
|
|
|
import com.diagbot.enums.IsDeleteEnum;
|
|
|
+import com.diagbot.exception.CommonErrorCode;
|
|
|
+import com.diagbot.exception.CommonException;
|
|
|
import com.diagbot.service.DeptConfigService;
|
|
|
import com.diagbot.util.DateUtil;
|
|
|
import com.diagbot.util.EntityUtil;
|
|
|
import com.diagbot.util.ExcelUtils;
|
|
|
import com.diagbot.util.ListUtil;
|
|
|
+import com.diagbot.util.RespDTOUtil;
|
|
|
import com.diagbot.util.StringUtil;
|
|
|
import com.diagbot.util.SysUserUtils;
|
|
|
+import com.diagbot.vo.ConceptVO;
|
|
|
import com.diagbot.vo.DeptConfigListVO;
|
|
|
import com.diagbot.vo.DeptConfigPageVO;
|
|
|
import com.diagbot.vo.IdListVO;
|
|
@@ -37,6 +44,8 @@ import java.util.stream.Collectors;
|
|
|
public class DeptConfigFacade {
|
|
|
@Autowired
|
|
|
private DeptConfigService deptConfigService;
|
|
|
+ @Autowired
|
|
|
+ private CdssCoreClient cdssCoreClient;
|
|
|
|
|
|
/**
|
|
|
* 判断是否已存在
|
|
@@ -206,8 +215,90 @@ public class DeptConfigFacade {
|
|
|
public void importExcel(MultipartFile file) {
|
|
|
List<DeptConfig> deptConfigList = ExcelUtils.importExcel(file, 0, 1, DeptConfig.class);
|
|
|
if (ListUtil.isNotEmpty(deptConfigList)) {
|
|
|
- saveOrUpdateRecords(deptConfigList);
|
|
|
+ importExcelRecords(deptConfigList);
|
|
|
+ } else {
|
|
|
+ throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "校验失败,导入数据不能为空");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 数据导入
|
|
|
+ *
|
|
|
+ * @param deptConfigList
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Boolean importExcelRecords(List<DeptConfig> deptConfigList) {
|
|
|
+ String hospitalId = SysUserUtils.getCurrentHospitalID();
|
|
|
+ String userId = SysUserUtils.getCurrentPrincipleID();
|
|
|
+ Date now = DateUtil.now();
|
|
|
+
|
|
|
+ //1、数据完整性校验
|
|
|
+ //2、去除前后空格
|
|
|
+ for (int i = 0; i < deptConfigList.size(); i++) {
|
|
|
+ if (StringUtil.isBlank(deptConfigList.get(i).getHisName())
|
|
|
+ || StringUtil.isBlank(deptConfigList.get(i).getUniqueName())) {
|
|
|
+ throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "第" + (i + 2) + "行存在不完整数据,导入失败,请修改后再试");
|
|
|
+ }
|
|
|
+ deptConfigList.get(i).setHisName(deptConfigList.get(i).getHisName().trim());
|
|
|
+ deptConfigList.get(i).setUniqueName(deptConfigList.get(i).getUniqueName().trim());
|
|
|
+ if (StringUtil.isNotBlank(deptConfigList.get(i).getUniqueCode())) {
|
|
|
+ deptConfigList.get(i).setUniqueCode(deptConfigList.get(i).getUniqueCode().trim());
|
|
|
+ } else {
|
|
|
+ deptConfigList.get(i).setUniqueCode(null);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 验证数据是否已存在,已存在的先删除
|
|
|
+ // 没id的删除重新插入,有id的更新
|
|
|
+ List<Long> deleteIds = Lists.newLinkedList();
|
|
|
+ Map<String, Map<String, Long>> configMap
|
|
|
+ = getConfigMap(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()));
|
|
|
+ }
|
|
|
+ deptConfig.setCreator(userId);
|
|
|
+ deptConfig.setGmtCreate(now);
|
|
|
+ }
|
|
|
+ if (deptConfig.getIsDeleted() == null) {
|
|
|
+ deptConfig.setIsDeleted(IsDeleteEnum.N.getKey());
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ //标准术语校验
|
|
|
+ List<String> uniqueNames = deptConfigList.stream()
|
|
|
+ .map(i -> i.getUniqueName())
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ ConceptVO conceptVO = new ConceptVO();
|
|
|
+ conceptVO.setNames(uniqueNames);
|
|
|
+ conceptVO.setType(ConceptTypeEnum.Dept.getKey());
|
|
|
+ RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
|
|
|
+ RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
|
|
|
+ List<String> names = respDTO.data;
|
|
|
+ for (int i = 0; i < deptConfigList.size(); i++) {
|
|
|
+ if (!names.contains(deptConfigList.get(i).getUniqueName())) {
|
|
|
+ throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
|
|
|
+ "【" + deptConfigList.get(i).getUniqueName() + "】不是标准术语,导入失败,请修改后再试");
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
+ //重复数据过滤
|
|
|
+ deptConfigList = deptConfigList
|
|
|
+ .stream()
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ //删除已存在映射关系
|
|
|
+ IdListVO idListVO = new IdListVO();
|
|
|
+ idListVO.setIds(deleteIds);
|
|
|
+ deleteRecords(idListVO);
|
|
|
+ deptConfigService.saveOrUpdateBatch(deptConfigList);
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
/**
|