|
@@ -40,6 +40,7 @@ import com.diagbot.util.StringUtil;
|
|
|
import com.diagbot.util.VerifyUtil;
|
|
|
import com.diagbot.vo.DeleteDiagnoseVO;
|
|
|
import com.diagbot.vo.DiagnosePageVO;
|
|
|
+import com.diagbot.vo.DiagnoseSearchVO;
|
|
|
import com.diagbot.vo.DiseaseIndexVO;
|
|
|
import com.diagbot.vo.GetDiagnoseDetailVO;
|
|
|
import com.diagbot.vo.NeoParamVO;
|
|
@@ -311,6 +312,47 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ * 诊断依据保存暂存数据,新增或更新主表信息,覆盖明细表,清空问题词
|
|
|
+ *
|
|
|
+ * @param diagnoseWrapper
|
|
|
+ */
|
|
|
+ public void tempSaveOrUpdateFac(DiagnoseWrapper diagnoseWrapper) {
|
|
|
+ VerifyDataDTO verifyDataDTO = new VerifyDataDTO();
|
|
|
+ CommonParam param = initCommonParam();
|
|
|
+ param.setPerson(diagnoseWrapper.getModifier());
|
|
|
+ param.setFlag(HasQuestionEnum.TEMP_DATA.getKey()); // 设置状态为暂存数据
|
|
|
+
|
|
|
+ // 更新主表业务(同时删除明细表和问题词表)
|
|
|
+ Long id = insertOrUpdateDiagnose(diagnoseWrapper, param);
|
|
|
+ diagnoseWrapper.setId(id);
|
|
|
+ verifyDataDTO.setId(id); //设置主键返回
|
|
|
+
|
|
|
+ // 明细数据
|
|
|
+ List<DiagnoseDetail> diagnoseDetailList = new ArrayList<>();
|
|
|
+ int i = param.getI();
|
|
|
+
|
|
|
+ // 合并疾病特征和诊断公式,统一遍历
|
|
|
+ List<DiagnoseDetailSave> diagnoseDetailSaveList = new ArrayList<>();
|
|
|
+ diagnoseDetailSaveList.addAll(diagnoseWrapper.getDisFeature());
|
|
|
+ diagnoseDetailSaveList.addAll(diagnoseWrapper.getDisformula());
|
|
|
+ for (DiagnoseDetailSave bean : diagnoseDetailSaveList) {
|
|
|
+ DiagnoseDetail diagnoseDetail = new DiagnoseDetail();
|
|
|
+ BeanUtil.copyProperties(bean, diagnoseDetail);
|
|
|
+ diagnoseDetail.setDiagnoseId(diagnoseWrapper.getId());
|
|
|
+ diagnoseDetail.setCreator(param.getPerson());
|
|
|
+ diagnoseDetail.setGmtCreate(param.getNow());
|
|
|
+ diagnoseDetail.setModifier(param.getPerson());
|
|
|
+ diagnoseDetail.setGmtModified(param.getNow());
|
|
|
+ diagnoseDetail.setDisName(diagnoseWrapper.getDisName());
|
|
|
+ diagnoseDetail.setOrderNo(++i);
|
|
|
+ diagnoseDetailList.add(diagnoseDetail);
|
|
|
+ }
|
|
|
+ // 保存明细
|
|
|
+ diagnoseDetailService.saveBatch(diagnoseDetailList);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 诊断依据校验全部数据(不用修改操作人和时间)
|
|
|
*/
|
|
@@ -329,11 +371,20 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
|
|
|
// 获取所有主表信息
|
|
|
List<Diagnose> diagnoseListWithDB = this.list(new QueryWrapper<Diagnose>()
|
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
- );
|
|
|
+ .and(wrapper -> wrapper.eq("has_question", HasQuestionEnum.NO_QUESTION.getKey())
|
|
|
+ .or()
|
|
|
+ .eq("has_question", HasQuestionEnum.HAS_QUESTION.getKey()))
|
|
|
+ );
|
|
|
+
|
|
|
+ if (ListUtil.isEmpty(diagnoseListWithDB)) {
|
|
|
+ return "无数据执行";
|
|
|
+ }
|
|
|
|
|
|
// 获取所有明细信息
|
|
|
List<DiagnoseDetail> diagnoseDetailWithDB = diagnoseDetailFacade.list(new QueryWrapper<DiagnoseDetail>()
|
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
+ .in("diagnose_id",
|
|
|
+ diagnoseListWithDB.stream().map(row -> row.getId()).collect(Collectors.toList()))
|
|
|
);
|
|
|
Map<String, List<DiagnoseDetail>> map =
|
|
|
EntityUtil.makeEntityListMap(diagnoseDetailWithDB, "disName");
|
|
@@ -349,7 +400,7 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
|
|
|
// Set<String> set = libraryForDiagnoseDTOS.stream().map(row -> row.getName()+ "_"+row.getTypeId())
|
|
|
// .collect(Collectors.toSet());
|
|
|
Set<String> libSet = libraryInfoFacade.getLibraryForDiagnose2(); // 加载词库
|
|
|
- Set<String> lisMappingSet = lisMappingFacade.loadLisMappingFac(); // 加载公表项
|
|
|
+ Set<String> lisMappingSet = lisMappingFacade.loadLisMappingFac(); // 加载公表项,需要关联同义词
|
|
|
Long time3 = System.currentTimeMillis();
|
|
|
res.append("加载词库:" + (time3 - time2) / 1000.0).append("秒,");
|
|
|
Boolean flag = true;
|
|
@@ -726,7 +777,6 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
|
|
|
typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(),
|
|
|
DiagnoseFieldEnum.relation.getKey());
|
|
|
for (String s : arr) {
|
|
|
- typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(), DiagnoseFieldEnum.relation.getKey());
|
|
|
flag = verifyExist(set, s.trim(), typeList);
|
|
|
if (!flag) {
|
|
|
sb.append(s).append("、");
|
|
@@ -753,7 +803,6 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
|
|
|
typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(),
|
|
|
DiagnoseFieldEnum.result.getKey());
|
|
|
for (String s : arr) {
|
|
|
- typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(), DiagnoseFieldEnum.result.getKey());
|
|
|
flag = verifyExist(set, s.trim(), typeList);
|
|
|
if (!flag) {
|
|
|
sb.append(s).append("、");
|
|
@@ -844,6 +893,7 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
|
|
|
|
|
|
Diagnose diagnose = new Diagnose();
|
|
|
BeanUtil.copyProperties(diagnoseWrapper, diagnose);
|
|
|
+ diagnose.setHasQuestion(String.valueOf(param.getFlag())); // 设置状态
|
|
|
if (diagnoseWrapper.getId() == null) { //新增
|
|
|
diagnose.setCreator(param.getPerson());
|
|
|
diagnose.setGmtCreate(param.getNow());
|
|
@@ -942,6 +992,27 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
|
|
|
return dq;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 诊断依据检索标准词和关联词
|
|
|
+ */
|
|
|
+ public List<String> searchFac(DiagnoseSearchVO diagnoseSearchVO) {
|
|
|
+ List<String> res = new ArrayList<>();
|
|
|
+ List<Integer> typeList =
|
|
|
+ DiagnoseTypeConvertUtil.diagnoseType2LibType(diagnoseSearchVO.getType(), diagnoseSearchVO.getField());
|
|
|
+ if (ListUtil.isNotEmpty(typeList)) {
|
|
|
+ List<LibraryInfo> libraryInfoList = libraryInfoFacade.list(new QueryWrapper<LibraryInfo>()
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
+ .in("type_id", typeList)
|
|
|
+ .and(wrapper -> wrapper.like("name", diagnoseSearchVO.getName())
|
|
|
+ .or().like("spell", diagnoseSearchVO.getName()))
|
|
|
+ );
|
|
|
+ res = libraryInfoList.stream().map(row -> row.getName()).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
public static void main(String[] args) {
|
|
|
String res = "1.2+1.3";
|
|
|
String str = "1.3";
|