|
@@ -1,7 +1,30 @@
|
|
|
package com.diagbot.facade;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.diagbot.entity.KlConcept;
|
|
|
+import com.diagbot.entity.KlDisease;
|
|
|
+import com.diagbot.enums.IsDeleteEnum;
|
|
|
+import com.diagbot.enums.LexiconEnum;
|
|
|
+import com.diagbot.exception.CommonErrorCode;
|
|
|
+import com.diagbot.exception.CommonException;
|
|
|
+import com.diagbot.service.KlDiseaseService;
|
|
|
import com.diagbot.service.impl.KlDiseaseServiceImpl;
|
|
|
+import com.diagbot.util.Cn2SpellUtil;
|
|
|
+import com.diagbot.util.DateUtil;
|
|
|
+import com.diagbot.util.ExcelUtils;
|
|
|
+import com.diagbot.util.ExtUtil;
|
|
|
+import com.diagbot.util.ListUtil;
|
|
|
+import com.diagbot.vo.ImportDiseaseCodeVO;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* @Description:
|
|
@@ -10,4 +33,74 @@ import org.springframework.stereotype.Component;
|
|
|
*/
|
|
|
@Component
|
|
|
public class KlDiseaseFacade extends KlDiseaseServiceImpl {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ KlConceptFacade klConceptFacade;
|
|
|
+ @Autowired
|
|
|
+ @Qualifier("klDiseaseServiceImpl")
|
|
|
+ KlDiseaseService klDiseaseService;
|
|
|
+
|
|
|
+ public void importDiseaseIcd(MultipartFile file) {
|
|
|
+ // 获取表格数据
|
|
|
+ Long t0 = System.currentTimeMillis();
|
|
|
+ List<ImportDiseaseCodeVO> data = ExcelUtils.importExcelMultiSheets(file, 0, 1, 0, ImportDiseaseCodeVO.class);
|
|
|
+ Long t1 = System.currentTimeMillis();
|
|
|
+ System.out.println("读取表格数据:" + (t1 - t0) / 1000.0 + "秒");
|
|
|
+
|
|
|
+ List<KlConcept> conceptList = klConceptFacade.list(new QueryWrapper<KlConcept>().lambda()
|
|
|
+ .eq(KlConcept::getIsDeleted, IsDeleteEnum.N.getKey())
|
|
|
+ .eq(KlConcept::getLibType, LexiconEnum.Disease.getKey())
|
|
|
+ );
|
|
|
+ Map<String, Long> conceptMap = ExtUtil.getKeyValue(conceptList, "libName", "id");
|
|
|
+ conceptList = null;
|
|
|
+ Long t2 = System.currentTimeMillis();
|
|
|
+ System.out.println("读取疾病词库完成:" + (t2 - t1) / 1000.0 + "秒");
|
|
|
+
|
|
|
+ Long t3 = System.currentTimeMillis();
|
|
|
+ List<KlDisease> klDiseaseList = this.list(new QueryWrapper<>());
|
|
|
+ Map<Long, KlDisease> klDiseaseMap = ExtUtil.getKeyObject(klDiseaseList, "conceptId");
|
|
|
+ klDiseaseList = null;
|
|
|
+ Long t4 = System.currentTimeMillis();
|
|
|
+ System.out.println("读取疾病扩展表完成:" + (t4 - t3) / 1000.0 + "秒");
|
|
|
+
|
|
|
+ List<String> errLibName = new ArrayList<>();
|
|
|
+ List<KlDisease> saveOrUpdateKlDisease = new ArrayList<>();
|
|
|
+ Date now = DateUtil.now();
|
|
|
+ for (ImportDiseaseCodeVO bean : data) {
|
|
|
+ Long concepeId = conceptMap.get(bean.getLibName());
|
|
|
+ if (concepeId == null) {
|
|
|
+ errLibName.add(bean.getLibName());
|
|
|
+ } else {
|
|
|
+ KlDisease klDisease = klDiseaseMap.get(concepeId);
|
|
|
+ if (klDisease == null) {
|
|
|
+ klDisease = new KlDisease();
|
|
|
+ klDisease.setConceptId(concepeId);
|
|
|
+ }
|
|
|
+ klDisease.setGuoname(bean.getGuoname());
|
|
|
+ klDisease.setGuocode(bean.getGuocode());
|
|
|
+ klDisease.setGmtCreate(now);
|
|
|
+ klDisease.setGmtModified(now);
|
|
|
+ if (StringUtils.isNotBlank(bean.getGuoname())) {
|
|
|
+ klDisease.setGuospell(Cn2SpellUtil.converterToFirstSpell(bean.getGuoname()));
|
|
|
+ } else {
|
|
|
+ klDisease.setGuospell("");
|
|
|
+ }
|
|
|
+ saveOrUpdateKlDisease.add(klDisease);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ListUtil.isNotEmpty(errLibName)) {
|
|
|
+ String joinError = StringUtils.join(errLibName);
|
|
|
+ throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "标准词不存在!" + joinError);
|
|
|
+ }
|
|
|
+
|
|
|
+ System.out.println("开始更新数据...");
|
|
|
+ Long t5 = System.currentTimeMillis();
|
|
|
+ klDiseaseService.saveOrUpdateBatch(saveOrUpdateKlDisease, 1);
|
|
|
+ Long t6 = System.currentTimeMillis();
|
|
|
+ System.out.println("更新数据完成:" + (t6 - t5) / 1000.0 + "秒");
|
|
|
+
|
|
|
+ System.out.println("总计耗时:" + (t6 - t0) / 1000.0 + "秒");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|