zhoutg %!s(int64=5) %!d(string=hai) anos
pai
achega
6ab6860896

+ 53 - 29
knowledgeman-service/src/main/java/com/diagbot/facade/DiagnoseFacade.java

@@ -237,7 +237,7 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
         // 加载词库数据
 //        List<LibraryForDiagnoseDTO> libraryForDiagnoseDTOS = libraryInfoFacade.getLibraryForDiagnose();
 //        Set<String> set = libraryForDiagnoseDTOS.stream().map(row -> row.getName()+ "_"+row.getTypeId()).collect(Collectors.toSet());
-        Set<String> set = libraryInfoFacade.getLibraryForDiagnose2();
+        Set<String> libSet = libraryInfoFacade.getLibraryForDiagnose2();
         // 明细数据
         List<DiagnoseDetail> diagnoseDetailList = new ArrayList<>();
         List<DiagnoseDetail> disFeature = new ArrayList<>(); // 诊断特征
@@ -247,7 +247,7 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
         List<DiagnoseQuestion> diagnoseQuestionList = new ArrayList<>();
 
         // 处理诊断特征业务(校验编码|标准词|关联词|结果)
-        doDisFuture(diagnoseWrapper, param, set, disFeature, diagnoseQuestionList);
+        doDisFuture(diagnoseWrapper, param, libSet, disFeature, diagnoseQuestionList);
         // 处理诊断公式业务(校验公式)
         doDisFormula(diagnoseWrapper, param, disformula, diagnoseQuestionList);
 
@@ -280,7 +280,8 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
     public String verifyAllData() {
         StringBuffer res = new StringBuffer();
         Long time1 = System.currentTimeMillis();
-        Set<String> questionSet = new HashSet<>(); // 问题词去重变量
+        Set<String> diagnosetQuestionSet = new HashSet<>(); // 问题词去重变量
+        Set<String> diagnoseName = new HashSet<>(); // 诊断依据主表修改变量
         if (!verifyFlag) {
             throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "其他人正在执行此操作,请稍后再试!");
         }
@@ -308,7 +309,7 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
             // 加载词库数据
 //            List<LibraryForDiagnoseDTO> libraryForDiagnoseDTOS = libraryInfoFacade.getLibraryForDiagnose();
 //            Set<String> set = libraryForDiagnoseDTOS.stream().map(row -> row.getName()+ "_"+row.getTypeId()).collect(Collectors.toSet());
-            Set<String> set = libraryInfoFacade.getLibraryForDiagnose2();
+            Set<String> libSet = libraryInfoFacade.getLibraryForDiagnose2();
             Long time3 = System.currentTimeMillis();
             res.append("加载词库:" + (time3-time2)/1000.0).append("秒,");
             Boolean flag = true;
@@ -316,46 +317,67 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
             // 校验明细数据
             for (String key : map.keySet()) {
                 List<DiagnoseDetail> detail = map.get(key);
+                List<String> codeList = detail.stream().map(row -> row.getCode()).distinct().collect(Collectors.toList());
                 int j = 0;
                 if (ListUtil.isNotEmpty(detail)) {
                     // 判断诊断名称是否在词库中
-                    flag = verifyExist(set, detail.get(0).getDisName(), Arrays.asList(LexiconTypeEnum.DIAGNOSIS.getKey()));
+                    flag = verifyExist(libSet, detail.get(0).getDisName(), Arrays.asList(LexiconTypeEnum.DIAGNOSIS.getKey()));
                     if (!flag) {
                         DiagnoseQuestion diagnoseQuestion1 = createDiagnoseQuestion(detail.get(0).getId(), detail.get(0).getDisName(), DiagnoseFeatureTypeEnum.Dis.getKey(),
                                 detail.get(0).getDisName(), DiagnoseFieldEnum.disName.getKey(), initCommonParam(), ++j);
                         diagnoseQuestionList.add(diagnoseQuestion1);
+                        diagnoseName.add(diagnoseQuestion1.getDisName());
                     }
 
                     for (DiagnoseDetail bean : detail) {
                         boolean updateFlag = false;
                         if (DiagnoseTypeEnum.Confirmed.getKey() == bean.getType() || (DiagnoseTypeEnum.Examination.getKey() == bean.getType() || (DiagnoseTypeEnum.Vigilant.getKey() == bean.getType()))) {
-                            // 不需要校验公式
+                            // 校验公式
+                            String oldVerifyFormula = bean.getVerifyFormula();
+                            String errMsg = VerifyUtil.verifyFormula(codeList, bean.getFormula());
+                            if (StringUtil.isNotEmpty(errMsg)) {
+                                bean.setVerifyFormula(errMsg);
+                                diagnoseName.add(bean.getDisName());
+                                // 不需要添加问题词
+                            } else {
+                                bean.setVerifyFormula("");
+                            }
+                            if (!oldVerifyFormula.equals(bean.getVerifyFormula())) {
+                                updateFlag = true;
+                            }
                         } else {
                             // 校验编码
-//                            if (StringUtil.isNotEmpty(bean.getCode())) {
-//                                flag = VerifyUtil.verifyCode(String.valueOf(bean.getType()), bean.getCode());
-//                                if (!flag) {
-//                                    bean.setVerifyCode(bean.getCode());
+                            String oldVerifyCode = bean.getVerifyCode();
+                            if (StringUtil.isNotEmpty(bean.getCode())) {
+                                flag = VerifyUtil.verifyCode(String.valueOf(bean.getType()), bean.getCode());
+                                if (!flag) {
+                                    bean.setVerifyCode(bean.getCode());
+                                    diagnoseName.add(bean.getDisName());
+                                    // 不需要添加问题词
 //                                    DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(bean.getDiagnoseId(), bean.getDisName(), bean.getType(),
 //                                            bean.getCode(), DiagnoseFieldEnum.code.getKey(), param, ++j);
 //                                    diagnoseQuestionList.add(diagnoseQuestion);
-//                                } else {
-//                                    bean.setVerifyCode(""); // 将原值清空
-//                                }
-//                            }
+                                } else {
+                                    bean.setVerifyCode(""); // 将原值清空
+                                }
+                                if (!oldVerifyCode.equals(bean.getVerifyCode())) {
+                                    updateFlag = true;
+                                }
+                            }
 
                             // 校验标准词
                             if (StringUtil.isNotEmpty(bean.getStandard())) {
                                 String oldVerifyStandard = bean.getVerifyStandard();
                                 typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(), DiagnoseFieldEnum.standard.getKey());
-                                flag = verifyExist(set, bean.getStandard(), typeList);
+                                flag = verifyExist(libSet, bean.getStandard(), typeList);
                                 if (!flag) {
                                     bean.setVerifyStandard(bean.getStandard());
                                     DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(bean.getDiagnoseId(), bean.getDisName(), bean.getType(),
                                             bean.getStandard(), DiagnoseFieldEnum.standard.getKey(), param, ++j);
-                                    if (addDiagnoseQuestion(set, diagnoseQuestion)) {
+                                    if (addDiagnoseQuestion(diagnosetQuestionSet, diagnoseQuestion)) {
                                         diagnoseQuestionList.add(diagnoseQuestion);
                                     }
+                                    diagnoseName.add(bean.getDisName());
                                 } else {
                                     bean.setVerifyStandard(""); // 将原值清空
                                 }
@@ -371,15 +393,16 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
                                 StringBuffer sb = new StringBuffer();
                                 for (String s : arr) {
                                     typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(), DiagnoseFieldEnum.relation.getKey());
-                                    flag = verifyExist(set, s.trim(), typeList);
+                                    flag = verifyExist(libSet, s.trim(), typeList);
                                     if (!flag) {
                                         sb.append(s).append("、");
                                         bean.setVerifyRelation(bean.getRelation());
                                         DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(bean.getDiagnoseId(), bean.getDisName(), bean.getType(),
                                                 s.trim(), DiagnoseFieldEnum.relation.getKey(), param, ++j);
-                                        if (addDiagnoseQuestion(set, diagnoseQuestion)) {
+                                        if (addDiagnoseQuestion(diagnosetQuestionSet, diagnoseQuestion)) {
                                             diagnoseQuestionList.add(diagnoseQuestion);
                                         }
+                                        diagnoseName.add(bean.getDisName());
                                     }
                                 }
                                 String errWord = sb.toString();
@@ -397,14 +420,15 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
                             if (StringUtil.isNotEmpty(bean.getResult())) {
                                 String oldVerifyResult = bean.getVerifyResult();
                                 typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(), DiagnoseFieldEnum.result.getKey());
-                                flag = verifyExist(set, bean.getResult(), typeList);
+                                flag = verifyExist(libSet, bean.getResult(), typeList);
                                 if (!flag) {
                                     bean.setVerifyResult(bean.getResult());
                                     DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(bean.getDiagnoseId(), bean.getDisName(), bean.getType(),
                                             bean.getStandard(), DiagnoseFieldEnum.standard.getKey(), param, ++j);
-                                    if (addDiagnoseQuestion(set, diagnoseQuestion)) {
+                                    if (addDiagnoseQuestion(diagnosetQuestionSet, diagnoseQuestion)) {
                                         diagnoseQuestionList.add(diagnoseQuestion);
                                     }
+                                    diagnoseName.add(bean.getDisName());
                                 } else {
                                     bean.setVerifyResult(""); // 将原值清空
                                 }
@@ -440,13 +464,11 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
             Long time6 = System.currentTimeMillis();
             res.append("新增问题词" + diagnoseQuestionList.size() + "条:" + (time6-time5)/1000.0).append("秒,");
 
-            List<String> disNameList = diagnoseQuestionList.stream().map(row -> row.getDisName()).distinct().collect(Collectors.toList());
-
             // 修改问题词表的状态
             List<Diagnose> updateDiagnose = new ArrayList<>();
             for (Diagnose diagnose : diagnoseListWithDB) {
                 String oldHasQueston = diagnose.getHasQuestion();
-                if (disNameList.contains(diagnose.getDisName())) {
+                if (diagnoseName.contains(diagnose.getDisName())) {
                     diagnose.setHasQuestion(String.valueOf(HasQuestionEnum.HAS_QUESTION.getKey()));
                 } else {
                     diagnose.setHasQuestion(String.valueOf(HasQuestionEnum.NO_QUESTION.getKey()));
@@ -525,17 +547,19 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
             List<Integer> typeList = new ArrayList<>();
 
             // 校验编码
-//            if (StringUtil.isNotEmpty(bean.getCode())) {
-//                flag = VerifyUtil.verifyCode(String.valueOf(bean.getType()), bean.getCode());
-//                if (!flag) {
-//                    diagnoseDetail.setVerifyCode(bean.getCode());
+            if (StringUtil.isNotEmpty(bean.getCode())) {
+                flag = VerifyUtil.verifyCode(String.valueOf(bean.getType()), bean.getCode());
+                if (!flag) {
+                    diagnoseDetail.setVerifyCode(bean.getCode());
+                    param.setFlag(HasQuestionEnum.HAS_QUESTION.getKey());
+                    // 不需要添加问题词
 //                    DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(diagnoseWrapper.getId(), diagnoseWrapper.getDisName(), bean.getType(),
 //                            bean.getCode(), DiagnoseFieldEnum.code.getKey(), param, ++j);
 //                    if (addDiagnoseQuestion(questionSet, diagnoseQuestion)) {
 //                        diagnoseQuestionList.add(diagnoseQuestion);
 //                    }
-//                }
-//            }
+                }
+            }
 
             // 校验标准词
             if (StringUtil.isNotEmpty(bean.getStandard())) {

+ 7 - 1
knowledgeman-service/src/main/resources/mapper/DiagnoseDetailMapper.xml

@@ -30,6 +30,9 @@
         <foreach collection="list" item="item"  separator=";">
             update kl_diagnose_detail
             <set>
+                <if test="item.verifyCode != null">
+                    verify_code = #{item.verifyCode},
+                </if>
                 <if test="item.verifyStandard != null">
                     verify_standard = #{item.verifyStandard},
                 </if>
@@ -37,7 +40,10 @@
                     verify_relation = #{item.verifyRelation},
                 </if>
                 <if test="item.verifyResult != null">
-                    verify_result = #{item.verifyResult}
+                    verify_result = #{item.verifyResult},
+                </if>
+                <if test="item.verifyFormula != null">
+                    verify_formula = #{item.verifyFormula}
                 </if>
             </set>
             where id = #{item.id}