Browse Source

诊断名称校验

zhoutg 5 years ago
parent
commit
f9a5243b94

+ 2 - 0
knowledgeman-service/src/main/java/com/diagbot/entity/CommonParam.java

@@ -16,4 +16,6 @@ public class CommonParam {
     private String person;     //操作人
     private Date now;          //当前时间
     private int insertOrUpdate;//更新或新增标识
+    private int i = 0;
+    private int j = 0;
 }

+ 1 - 1
knowledgeman-service/src/main/java/com/diagbot/enums/DiagnoseFeatureTypeEnum.java

@@ -10,7 +10,7 @@ import lombok.Setter;
  * @date 2018年11月21日 下午2:31:42
  */
 public enum DiagnoseFeatureTypeEnum implements KeyedNamed {
-
+    Dis(0, "诊断"),
     Symptom(1, "症状"),
     Vital(2, "体征"),
     Lis(3, "化验"),

+ 106 - 45
knowledgeman-service/src/main/java/com/diagbot/facade/DiagnoseFacade.java

@@ -16,6 +16,7 @@ import com.diagbot.entity.DiagnoseDetail;
 import com.diagbot.entity.DiagnoseDetailSave;
 import com.diagbot.entity.DiagnoseQuestion;
 import com.diagbot.entity.wrapper.DiagnoseWrapper;
+import com.diagbot.enums.DiagnoseFeatureTypeEnum;
 import com.diagbot.enums.DiagnoseFieldEnum;
 import com.diagbot.enums.DiagnoseTypeEnum;
 import com.diagbot.enums.HasQuestionEnum;
@@ -43,6 +44,7 @@ import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
@@ -158,47 +160,70 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
         CommonParam param = initCommonParam();
         param.setPerson(diagnoseWrapper.getModifier());
 
-        Diagnose diagnose = new Diagnose();
-        BeanUtil.copyProperties(diagnoseWrapper, diagnose);
-        if (diagnoseWrapper.getId() == null) { //新增
-            diagnose.setCreator(param.getPerson());
-            diagnose.setGmtCreate(param.getNow());
-        } else { // 修改
-            // 明细删除
-            diagnoseDetailService.remove(new QueryWrapper<DiagnoseDetail>()
-                    .eq("diagnose_id", diagnoseWrapper.getId())
-            );
-            // 删除问题词
-            diagnoseQuestionService.remove(new QueryWrapper<DiagnoseQuestion>()
-                    .eq("diagnose_id", diagnoseWrapper.getId())
-            );
-           param.setInsertOrUpdate(InsertOrUpdateEnum.Update.getKey());
+        // 更新主表业务(同时删除明细表和问题词表)
+        Long id = insertOrUpdateDiagnose(diagnoseWrapper, param);
+        diagnoseWrapper.setId(id);
+        // 加载词库数据
+        List<LibraryForDiagnoseDTO> libraryForDiagnoseDTOS = libraryInfoFacade.getLibraryForDiagnose();
+        // 明细数据
+        List<DiagnoseDetail> diagnoseDetailList = new ArrayList<>();
+        // 问题词数据
+        List<DiagnoseQuestion> diagnoseQuestionList = new ArrayList<>();
+
+        // 处理诊断特征业务(校验编码|标准词|关联词|结果)
+        doDisFuture(diagnoseWrapper, param, libraryForDiagnoseDTOS, diagnoseDetailList, diagnoseQuestionList);
+        // 处理诊断公式业务(校验公式)
+        doDisFormula(diagnoseWrapper, param, diagnoseDetailList, diagnoseQuestionList);
+
+        // 保存明细
+        diagnoseDetailService.saveBatch(diagnoseDetailList);
+        // 保存问题词
+        if (ListUtil.isNotEmpty(diagnoseQuestionList)) {
+            // 新增问题词数据
+            diagnoseQuestionService.saveBatch(diagnoseQuestionList);
         }
-        diagnose.setGmtModified(param.getNow());
-        this.saveOrUpdate(diagnose);
 
+        // 更新主表状态
+        this.update(new UpdateWrapper<Diagnose>()
+                .set("has_question", ListUtil.isNotEmpty(diagnoseQuestionList) ? HasQuestionEnum.HAS_QUESTION.getKey() : HasQuestionEnum.NO_QUESTION.getKey())
+                .eq("id", diagnoseWrapper.getId())
+        );
+        verifyDataDTO.setHasQuestion(ListUtil.isNotEmpty(diagnoseQuestionList) ? HasQuestionEnum.HAS_QUESTION.getKey() : HasQuestionEnum.NO_QUESTION.getKey());
+        verifyDataDTO.setDiagnoseDetailList(diagnoseDetailList);
+        return verifyDataDTO;
+    }
 
-        // 导入词库数据
-        List<LibraryForDiagnoseDTO> libraryForDiagnoseDTOS = libraryInfoFacade.getLibraryForDiagnose();
 
-        // 新增明细
-        List<DiagnoseDetail> diagnoseDetailList = new ArrayList<>();
-        // 新增问题词
-        List<DiagnoseQuestion> diagnoseQuestionList = new ArrayList<>();
 
-        int i = 0, j = 0;
+    /**
+     *  处理诊断特征业务(校验诊断名称|编码|标准词|关联词|结果)
+     *
+     * @param diagnoseWrapper
+     * @param param
+     * @return
+     */
+    public void doDisFuture(DiagnoseWrapper diagnoseWrapper, CommonParam param, List<LibraryForDiagnoseDTO> libraryForDiagnoseDTOS,  List<DiagnoseDetail> diagnoseDetailList,  List<DiagnoseQuestion> diagnoseQuestionList) {
+        int i = param.getI();
+        int j = param.getJ();
+
+        // 判断诊断名称是否在词库中
+        boolean flag = true;
+        flag = verifyExist(libraryForDiagnoseDTOS, diagnoseWrapper.getDisName(), Arrays.asList(LexiconTypeEnum.DIAGNOSIS.getKey()));
+        DiagnoseQuestion diagnoseQuestion1 = createDiagnoseQuestion(diagnoseWrapper.getId(), diagnoseWrapper.getDisName(), DiagnoseFeatureTypeEnum.Dis.getKey(),
+                diagnoseWrapper.getDisName(), DiagnoseFieldEnum.disName.getKey(), initCommonParam(), ++j);
+        diagnoseQuestionList.add(diagnoseQuestion1);
+
         // 遍历诊断特征
         for (DiagnoseDetailSave bean : diagnoseWrapper.getDisFeature()) {
             DiagnoseDetail diagnoseDetail = new DiagnoseDetail();
             BeanUtil.copyProperties(bean, diagnoseDetail);
-            diagnoseDetail.setDiagnoseId(diagnose.getId());
+            diagnoseDetail.setDiagnoseId(diagnoseWrapper.getId());
             diagnoseDetail.setCreator(param.getPerson());
             diagnoseDetail.setGmtCreate(param.getNow());
             diagnoseDetail.setModifier(param.getPerson());
             diagnoseDetail.setGmtModified(param.getNow());
-            diagnoseDetail.setDisName(diagnose.getDisName());
+            diagnoseDetail.setDisName(diagnoseWrapper.getDisName());
             diagnoseDetail.setOrderNo(++i);
-            boolean flag = true;
             List<Integer> typeList = new ArrayList<>();
 
             // 校验编码
@@ -210,7 +235,7 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
                 flag = verifyExist(libraryForDiagnoseDTOS, bean.getStandard(), typeList);
                 if (!flag) {
                     diagnoseDetail.setVerifyStandard("1");
-                    DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(diagnose.getId(), diagnose.getDisName(), bean.getType(),
+                    DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(diagnoseWrapper.getId(), diagnoseWrapper.getDisName(), bean.getType(),
                             bean.getStandard(), DiagnoseFieldEnum.standard.getKey(), initCommonParam(), ++j);
                     diagnoseQuestionList.add(diagnoseQuestion);
                 }
@@ -224,7 +249,7 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
                     flag = verifyExist(libraryForDiagnoseDTOS, s.trim(), typeList);
                     if (!flag) {
                         diagnoseDetail.setVerifyRelation("1");
-                        DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(diagnose.getId(), diagnose.getDisName(), bean.getType(),
+                        DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(diagnoseWrapper.getId(), diagnoseWrapper.getDisName(), bean.getType(),
                                 s.trim(), DiagnoseFieldEnum.relation.getKey(), initCommonParam(), ++j);
                         diagnoseQuestionList.add(diagnoseQuestion);
                     }
@@ -237,44 +262,75 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
                 flag = verifyExist(libraryForDiagnoseDTOS, bean.getResult(), typeList);
                 if (!flag) {
                     diagnoseDetail.setVerifyResult("1");
-                    DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(diagnose.getId(), diagnose.getDisName(), bean.getType(),
+                    DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(diagnoseWrapper.getId(), diagnoseWrapper.getDisName(), bean.getType(),
                             bean.getStandard(), DiagnoseFieldEnum.standard.getKey(), initCommonParam(), ++j);
                     diagnoseQuestionList.add(diagnoseQuestion);
                 }
             }
             diagnoseDetailList.add(diagnoseDetail);
         }
+        param.setI(i);
+        param.setJ(j);
+    }
+
 
+    /**
+     *  处理诊断公式业务(校验公式)
+     *
+     * @param diagnoseWrapper
+     * @param param
+     * @return
+     */
+    public void doDisFormula(DiagnoseWrapper diagnoseWrapper, CommonParam param, List<DiagnoseDetail> diagnoseDetailList, List<DiagnoseQuestion> diagnoseQuestionList) {
+        int i = param.getI();
+        int j = param.getJ();
         // 遍历诊断公式
         for (DiagnoseDetailSave bean : diagnoseWrapper.getDisformula()) {
             DiagnoseDetail diagnoseDetail = new DiagnoseDetail();
             BeanUtil.copyProperties(bean, diagnoseDetail);
-            diagnoseDetail.setDiagnoseId(diagnose.getId());
+            diagnoseDetail.setDiagnoseId(diagnoseWrapper.getId());
             diagnoseDetail.setCreator(param.getPerson());
             diagnoseDetail.setGmtCreate(param.getNow());
             diagnoseDetail.setModifier(param.getPerson());
             diagnoseDetail.setGmtModified(param.getNow());
-            diagnoseDetail.setDisName(diagnose.getDisName());
+            diagnoseDetail.setDisName(diagnoseWrapper.getDisName());
             diagnoseDetail.setOrderNo(++i);
             // 校验公式
             // TODO
             diagnoseDetailList.add(diagnoseDetail);
         }
-        diagnoseDetailService.saveBatch(diagnoseDetailList);
+        param.setI(i);
+        param.setJ(j);
+    }
 
-        // 有问题词逻辑
-        if (ListUtil.isNotEmpty(diagnoseQuestionList)) {
-            // 新增问题词数据
-            diagnoseQuestionService.saveBatch(diagnoseQuestionList);
+
+    /**
+     *  更新主表业务(同时删除明细表和问题词表)
+     *
+     * @param diagnoseWrapper
+     * @param param
+     * @return
+     */
+    public Long insertOrUpdateDiagnose(DiagnoseWrapper diagnoseWrapper, CommonParam param) {
+        Diagnose diagnose = new Diagnose();
+        BeanUtil.copyProperties(diagnoseWrapper, diagnose);
+        if (diagnoseWrapper.getId() == null) { //新增
+            diagnose.setCreator(param.getPerson());
+            diagnose.setGmtCreate(param.getNow());
+        } else { // 修改
+            // 明细删除
+            diagnoseDetailService.remove(new QueryWrapper<DiagnoseDetail>()
+                    .eq("diagnose_id", diagnoseWrapper.getId())
+            );
+            // 删除问题词
+            diagnoseQuestionService.remove(new QueryWrapper<DiagnoseQuestion>()
+                    .eq("diagnose_id", diagnoseWrapper.getId())
+            );
+            param.setInsertOrUpdate(InsertOrUpdateEnum.Update.getKey());
         }
-        // 更新主表状态
-        this.update(new UpdateWrapper<Diagnose>()
-                .set("has_question", ListUtil.isNotEmpty(diagnoseQuestionList) ? HasQuestionEnum.HAS_QUESTION.getKey() : HasQuestionEnum.NO_QUESTION.getKey())
-                .eq("id", diagnose.getId())
-        );
-        verifyDataDTO.setHasQuestion(ListUtil.isNotEmpty(diagnoseQuestionList) ? HasQuestionEnum.HAS_QUESTION.getKey() : HasQuestionEnum.NO_QUESTION.getKey());
-        verifyDataDTO.setDiagnoseDetailList(diagnoseDetailList);
-        return verifyDataDTO;
+        diagnose.setGmtModified(param.getNow());
+        this.saveOrUpdate(diagnose);
+        return diagnose.getId();
     }
 
 
@@ -289,6 +345,11 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
         if (HasQuestionEnum.HAS_QUESTION.getKey() == verifyDataDTO.getHasQuestion()) {
             throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "有问题词存在,不能更新图谱");
         }
+        // 更新时间
+        this.update(new UpdateWrapper<Diagnose>()
+                .eq("id", diagnoseWrapper.getId())
+                .set("neo_update", new Date())
+        );
         // 更新图谱对接接口
         NeoParamVO neoParamVO = new NeoParamVO();
         neoParamVO.setId(diagnoseWrapper.getId());