|
@@ -1,14 +1,21 @@
|
|
|
package com.diagbot.facade;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.diagbot.dto.KlDiagnoseRecordDTO;
|
|
|
+import com.diagbot.dto.KlDiagnoseRecordDetailDTO;
|
|
|
import com.diagbot.entity.KlConcept;
|
|
|
import com.diagbot.entity.KlDiagnose;
|
|
|
+import com.diagbot.entity.KlDiagnoseRecord;
|
|
|
+import com.diagbot.entity.KlDiagnoseRecordDetail;
|
|
|
import com.diagbot.enums.CommonEnum;
|
|
|
import com.diagbot.enums.DiagnoseLexiconTypeEnum;
|
|
|
import com.diagbot.enums.IsDeleteEnum;
|
|
|
import com.diagbot.enums.LexiconEnum;
|
|
|
import com.diagbot.enums.LexiconExtEnum;
|
|
|
import com.diagbot.service.KlConceptService;
|
|
|
+import com.diagbot.service.KlDiagnoseRecordDetailService;
|
|
|
+import com.diagbot.service.KlDiagnoseRecordService;
|
|
|
+import com.diagbot.util.BeanUtil;
|
|
|
import com.diagbot.util.CoreUtil;
|
|
|
import com.diagbot.util.EntityUtil;
|
|
|
import com.diagbot.util.ExcelUtils;
|
|
@@ -32,7 +39,6 @@ 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.io.IOException;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.LinkedHashMap;
|
|
@@ -55,6 +61,12 @@ public class KlDiagnoseImportFacade {
|
|
|
private KlConceptService klConceptService;
|
|
|
@Autowired
|
|
|
KlDiagnoseFacade klDiagnoseFacade;
|
|
|
+ @Autowired
|
|
|
+ @Qualifier("klDiagnoseRecordServiceImpl")
|
|
|
+ KlDiagnoseRecordService klDiagnoseRecordService;
|
|
|
+ @Autowired
|
|
|
+ @Qualifier("klDiagnoseRecordDetailServiceImpl")
|
|
|
+ KlDiagnoseRecordDetailService klDiagnoseRecordDetailService;
|
|
|
|
|
|
public Map<String, Object> importDiagnose(MultipartFile file, DiagnoseImportVO diagnoseImportVO) {
|
|
|
long t1 = System.currentTimeMillis();
|
|
@@ -70,12 +82,20 @@ public class KlDiagnoseImportFacade {
|
|
|
// 保存数据
|
|
|
if (allFlag) {
|
|
|
saveData(allData);
|
|
|
- message.put("导入条数", allData.size() + "条");
|
|
|
- // 如果有指定诊断,提示导入的诊断;如果全部导入,提示“所有诊断”
|
|
|
+ long sucCount = allData.stream().filter(r -> ListUtil.isNotEmpty(r.getImportDiagnoseVOList())).count();
|
|
|
+ long emptyCount = allData.stream().filter(r -> ListUtil.isEmpty(r.getImportDiagnoseVOList())).count();
|
|
|
+ message.put("总条数", allData.size() + "条");
|
|
|
+ if (sucCount != 0L) {
|
|
|
+ message.put("成功导入条数", sucCount + "条");
|
|
|
+ }
|
|
|
+ if (emptyCount != 0L) {
|
|
|
+ message.put("空诊断依据条数", emptyCount + "条");
|
|
|
+ List<String> disNameList = allData.stream().filter(r -> ListUtil.isEmpty(r.getImportDiagnoseVOList())).map(r -> r.getDiseaseName()).collect(Collectors.toList());
|
|
|
+ message.put("空诊断依据", StringUtils.join(disNameList, CommonEnum.splitSymbol.getName()));
|
|
|
+ }
|
|
|
+ // 如果有指定诊断,提示导入的诊断;
|
|
|
if (ListUtil.isNotEmpty(diagnoseImportVO.getDiags())) {
|
|
|
message.put("导入诊断", allData.stream().map(r -> r.getDiseaseName()).collect(Collectors.joining(CommonEnum.splitSymbol.getName())));
|
|
|
- } else {
|
|
|
- message.put("导入诊断", "所有诊断");
|
|
|
}
|
|
|
}
|
|
|
long t2 = System.currentTimeMillis();
|
|
@@ -152,6 +172,43 @@ public class KlDiagnoseImportFacade {
|
|
|
// 添加到正确数据列表
|
|
|
importDiagnoseResVO.setImportDiagnoseVOList(curData);
|
|
|
allData.add(importDiagnoseResVO);
|
|
|
+
|
|
|
+ // 存放记录和记录明细
|
|
|
+ List<ImportDiagnoseVO> importDiagnoseVOS = groupData.get(disName);
|
|
|
+ List<KlDiagnoseRecordDTO> klDiagnoseRecordList = Lists.newArrayList();
|
|
|
+ int recordOrder = 1;
|
|
|
+ List<Integer> rowIds = Lists.newArrayList();
|
|
|
+ for (ImportDiagnoseVO importDiagnoseVO : importDiagnoseVOS) {
|
|
|
+ if (rowIds.contains(importDiagnoseVO.getRowNum())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ KlDiagnoseRecordDTO klDiagnoseRecordDTO = new KlDiagnoseRecordDTO();
|
|
|
+ BeanUtil.copyProperties(importDiagnoseVO, klDiagnoseRecordDTO);
|
|
|
+ klDiagnoseRecordDTO.setCode(importDiagnoseVO.getOrderNo());
|
|
|
+ if ("确诊".equals(importDiagnoseVO.getType())) {
|
|
|
+ if (StringUtil.isNotBlank(importDiagnoseVO.getParentRule())) {
|
|
|
+ klDiagnoseRecordDTO.setRule(importDiagnoseVO.getParentRule());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ klDiagnoseRecordDTO.setOrderNo(recordOrder);
|
|
|
+ klDiagnoseRecordList.add(klDiagnoseRecordDTO);
|
|
|
+ if (ListUtil.isNotEmpty(importDiagnoseVO.getConceptId())) {
|
|
|
+ int detailOrder = 1;
|
|
|
+ List<KlDiagnoseRecordDetailDTO> klDiagnoseRecordDetailList = Lists.newArrayList();
|
|
|
+ for (Long id : importDiagnoseVO.getConceptId()) {
|
|
|
+ KlDiagnoseRecordDetailDTO klDiagnoseRecordDetailDTO = new KlDiagnoseRecordDetailDTO();
|
|
|
+ klDiagnoseRecordDetailDTO.setConceptId(id);
|
|
|
+ klDiagnoseRecordDetailDTO.setOrderNo(detailOrder);
|
|
|
+ BeanUtil.copyProperties(importDiagnoseVO, klDiagnoseRecordDetailDTO);
|
|
|
+ klDiagnoseRecordDetailList.add(klDiagnoseRecordDetailDTO);
|
|
|
+ detailOrder++;
|
|
|
+ }
|
|
|
+ klDiagnoseRecordDTO.setRecordDetailList(klDiagnoseRecordDetailList);
|
|
|
+ }
|
|
|
+ recordOrder++;
|
|
|
+ rowIds.add(importDiagnoseVO.getRowNum());
|
|
|
+ }
|
|
|
+ importDiagnoseResVO.setRecordList(klDiagnoseRecordList);
|
|
|
} else {
|
|
|
allFlag = false;
|
|
|
diagMessage.put(disName, StringUtils.join(currentErrMsg.stream().distinct().collect(Collectors.toList()), "; "));
|
|
@@ -193,7 +250,7 @@ public class KlDiagnoseImportFacade {
|
|
|
importDiagnoseVO.setParentRule(next.getRule());
|
|
|
importDiagnoseVO.setType(type);
|
|
|
importDiagnoseVO.setRowNum(rowNum);
|
|
|
- importDiagnoseVO.setOrderNo(rule.replace("拟诊", nizhen));
|
|
|
+ importDiagnoseVO.setRule(rule.replace("拟诊", nizhen));
|
|
|
it.add(importDiagnoseVO);
|
|
|
}
|
|
|
}
|
|
@@ -277,9 +334,9 @@ public class KlDiagnoseImportFacade {
|
|
|
String type = imd.getType();
|
|
|
String rule = imd.getRule();
|
|
|
String orderNo = imd.getOrderNo();
|
|
|
- String eq = imd.getEq();
|
|
|
- String maxSymbol = imd.getMaxSymbol();
|
|
|
- String minSymbol = imd.getMinSymbol();
|
|
|
+ String eq = imd.getEqValue();
|
|
|
+ String maxSymbol = imd.getMaxOperator();
|
|
|
+ String minSymbol = imd.getMinOperator();
|
|
|
String parentRule = imd.getParentRule();
|
|
|
if (StringUtil.isBlank(type) && StringUtil.isBlank(orderNo)) {
|
|
|
continue;
|
|
@@ -324,7 +381,7 @@ public class KlDiagnoseImportFacade {
|
|
|
}
|
|
|
if ((LexiconExtEnum.Vital.getName().equals(type) || LexiconExtEnum.Age.getName().equals(type))
|
|
|
&& StringUtils.isNotBlank(rule)
|
|
|
- && StringUtils.isBlank(imd.getMin()) && StringUtils.isBlank(imd.getMax())) {
|
|
|
+ && StringUtils.isBlank(imd.getMinValue()) && StringUtils.isBlank(imd.getMaxValue())) {
|
|
|
currentErrMsg.add(String.format("第%d行%s【最大值】和【最小值】至少有一个不能为空", rowNum, rule));
|
|
|
}
|
|
|
if (StringUtils.isBlank(type)) {
|
|
@@ -429,6 +486,39 @@ public class KlDiagnoseImportFacade {
|
|
|
klDiagnoseSaveVO.setModifier("0");
|
|
|
}
|
|
|
klDiagnoseFacade.saveDiagnoseAll(klDiagnoseSaveVO);
|
|
|
+
|
|
|
+ // 保存记录表和记录明细表
|
|
|
+ List<KlDiagnoseRecordDTO> recordList = importDiagnoseResVO.getRecordList();
|
|
|
+ List<KlDiagnoseRecord> klDiagnoseRecordList = klDiagnoseRecordService.list(new QueryWrapper<KlDiagnoseRecord>()
|
|
|
+ .eq("diagnose_id", klDiagnoseSaveVO.getId()));
|
|
|
+ if (ListUtil.isNotEmpty(klDiagnoseRecordList)) {
|
|
|
+ List<Long> recordIdList = klDiagnoseRecordList.stream().map(r -> r.getId()).collect(Collectors.toList());
|
|
|
+ // 先删除记录明细表
|
|
|
+ klDiagnoseRecordDetailService.remove(new QueryWrapper<KlDiagnoseRecordDetail>()
|
|
|
+ .in("diagnose_record_id", recordIdList));
|
|
|
+ // 再删除记录表
|
|
|
+ klDiagnoseRecordService.remove(new QueryWrapper<KlDiagnoseRecord>().in("id", recordIdList));
|
|
|
+ }
|
|
|
+ for (KlDiagnoseRecordDTO klDiagnoseRecordDTO : recordList) {
|
|
|
+ // 保存记录表
|
|
|
+ KlDiagnoseRecord klDiagnoseRecord = new KlDiagnoseRecord();
|
|
|
+ BeanUtil.copyProperties(klDiagnoseRecordDTO, klDiagnoseRecord);
|
|
|
+ klDiagnoseRecord.setDiagnoseId(klDiagnoseSaveVO.getId());
|
|
|
+ klDiagnoseRecordService.save(klDiagnoseRecord);
|
|
|
+
|
|
|
+ // 保存记录明细表
|
|
|
+ List<KlDiagnoseRecordDetailDTO> recordDetailList = klDiagnoseRecordDTO.getRecordDetailList();
|
|
|
+ if (ListUtil.isNotEmpty(recordDetailList)) {
|
|
|
+ List<KlDiagnoseRecordDetail> recorlDetailList = Lists.newArrayList();
|
|
|
+ for (KlDiagnoseRecordDetailDTO detailDTO : recordDetailList) {
|
|
|
+ KlDiagnoseRecordDetail klDiagnoseRecordDetail = new KlDiagnoseRecordDetail();
|
|
|
+ BeanUtil.copyProperties(detailDTO, klDiagnoseRecordDetail);
|
|
|
+ klDiagnoseRecordDetail.setDiagnoseRecordId(klDiagnoseRecord.getId());
|
|
|
+ recorlDetailList.add(klDiagnoseRecordDetail);
|
|
|
+ }
|
|
|
+ klDiagnoseRecordDetailService.saveBatch(recorlDetailList);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -530,29 +620,29 @@ public class KlDiagnoseImportFacade {
|
|
|
case Vital: // 体格检查项目
|
|
|
case Age: // 年龄
|
|
|
klDiagnoseDetailVO.setBasConceptId(current.getConceptId());
|
|
|
- if (StringUtil.isNotBlank(current.getMin())) {
|
|
|
- klDiagnoseDetailVO.setMinVal(current.getMin());
|
|
|
+ if (StringUtil.isNotBlank(current.getMinValue())) {
|
|
|
+ klDiagnoseDetailVO.setMinVal(current.getMinValue());
|
|
|
}
|
|
|
- if (StringUtil.isNotBlank(current.getMinSymbol())) {
|
|
|
- klDiagnoseDetailVO.setMinOperator(current.getMinSymbol());
|
|
|
+ if (StringUtil.isNotBlank(current.getMinOperator())) {
|
|
|
+ klDiagnoseDetailVO.setMinOperator(current.getMinOperator());
|
|
|
}
|
|
|
if (StringUtil.isNotBlank(current.getUnit())) {
|
|
|
klDiagnoseDetailVO.setMinUnit(current.getUnit());
|
|
|
klDiagnoseDetailVO.setMaxUnit(current.getUnit());
|
|
|
}
|
|
|
- if (StringUtil.isNotBlank(current.getMax())) {
|
|
|
- klDiagnoseDetailVO.setMaxVal(current.getMax());
|
|
|
+ if (StringUtil.isNotBlank(current.getMaxValue())) {
|
|
|
+ klDiagnoseDetailVO.setMaxVal(current.getMaxValue());
|
|
|
}
|
|
|
- if (StringUtil.isNotBlank(current.getMaxSymbol())) {
|
|
|
- klDiagnoseDetailVO.setMaxOperator(String.valueOf(current.getMaxSymbol()));
|
|
|
+ if (StringUtil.isNotBlank(current.getMaxOperator())) {
|
|
|
+ klDiagnoseDetailVO.setMaxOperator(String.valueOf(current.getMaxOperator()));
|
|
|
}
|
|
|
klDiagnoseDetailVO.setBasDescription(current.getRule());
|
|
|
klDiagnoseDetailVO.setBasType(2);
|
|
|
break;
|
|
|
case LisSubName: // 实验室检查子项目
|
|
|
klDiagnoseDetailVO.setBasConceptId(current.getConceptId());
|
|
|
- klDiagnoseDetailVO.setEqValue(current.getEq());
|
|
|
- klDiagnoseDetailVO.setBasDescription(current.getRule() + current.getEq());
|
|
|
+ klDiagnoseDetailVO.setEqValue(current.getEqValue());
|
|
|
+ klDiagnoseDetailVO.setBasDescription(current.getRule() + current.getEqValue());
|
|
|
klDiagnoseDetailVO.setBasType(2);
|
|
|
break;
|
|
|
}
|