Browse Source

过滤重复的问题词

zhoutg 5 years ago
parent
commit
dc7794cb6c

+ 49 - 15
knowledgeman-service/src/main/java/com/diagbot/facade/DiagnoseFacade.java

@@ -51,6 +51,7 @@ import org.springframework.stereotype.Component;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -279,6 +280,7 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
     public String verifyAllData() {
         StringBuffer res = new StringBuffer();
         Long time1 = System.currentTimeMillis();
+        Set<String> questionSet = new HashSet<>(); // 问题词去重变量
         if (!verifyFlag) {
             throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "其他人正在执行此操作,请稍后再试!");
         }
@@ -351,7 +353,9 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
                                     bean.setVerifyStandard(bean.getStandard());
                                     DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(bean.getDiagnoseId(), bean.getDisName(), bean.getType(),
                                             bean.getStandard(), DiagnoseFieldEnum.standard.getKey(), param, ++j);
-                                    diagnoseQuestionList.add(diagnoseQuestion);
+                                    if (addDiagnoseQuestion(set, diagnoseQuestion)) {
+                                        diagnoseQuestionList.add(diagnoseQuestion);
+                                    }
                                 } else {
                                     bean.setVerifyStandard(""); // 将原值清空
                                 }
@@ -373,7 +377,9 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
                                         bean.setVerifyRelation(bean.getRelation());
                                         DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(bean.getDiagnoseId(), bean.getDisName(), bean.getType(),
                                                 s.trim(), DiagnoseFieldEnum.relation.getKey(), param, ++j);
-                                        diagnoseQuestionList.add(diagnoseQuestion);
+                                        if (addDiagnoseQuestion(set, diagnoseQuestion)) {
+                                            diagnoseQuestionList.add(diagnoseQuestion);
+                                        }
                                     }
                                 }
                                 String errWord = sb.toString();
@@ -396,7 +402,9 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
                                     bean.setVerifyResult(bean.getResult());
                                     DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(bean.getDiagnoseId(), bean.getDisName(), bean.getType(),
                                             bean.getStandard(), DiagnoseFieldEnum.standard.getKey(), param, ++j);
-                                    diagnoseQuestionList.add(diagnoseQuestion);
+                                    if (addDiagnoseQuestion(set, diagnoseQuestion)) {
+                                        diagnoseQuestionList.add(diagnoseQuestion);
+                                    }
                                 } else {
                                     bean.setVerifyResult(""); // 将原值清空
                                 }
@@ -465,6 +473,23 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
     }
 
 
+    /**
+     * 校验是否已存在问题词数据
+     *
+     * @param set
+     * @param diagnoseQuestion
+     * @return
+     */
+    public Boolean addDiagnoseQuestion(Set<String> set, DiagnoseQuestion diagnoseQuestion) {
+        String key = diagnoseQuestion.getDiagnoseId() + "_" + diagnoseQuestion.getType() + "_" + diagnoseQuestion.getQuestionType() + "_" + diagnoseQuestion.getQuestionName();
+        if (!set.contains(key)) {
+            set.add(key);
+            return true;
+        }
+        return false;
+    }
+
+
     /**
      *  处理诊断特征业务(校验诊断名称|编码|标准词|关联词|结果)
      *
@@ -475,6 +500,7 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
     public void doDisFuture(DiagnoseWrapper diagnoseWrapper, CommonParam param, Set<String> set,  List<DiagnoseDetail> diagnoseDetailList,  List<DiagnoseQuestion> diagnoseQuestionList) {
         int i = param.getI();
         int j = param.getJ();
+        Set<String> questionSet = new HashSet<>(); // 问题词去重变量
 
         // 判断诊断名称是否在词库中
         boolean flag = true;
@@ -499,15 +525,17 @@ 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());
-                    DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(diagnoseWrapper.getId(), diagnoseWrapper.getDisName(), bean.getType(),
-                            bean.getCode(), DiagnoseFieldEnum.code.getKey(), param, ++j);
-                    diagnoseQuestionList.add(diagnoseQuestion);
-                }
-            }
+//            if (StringUtil.isNotEmpty(bean.getCode())) {
+//                flag = VerifyUtil.verifyCode(String.valueOf(bean.getType()), bean.getCode());
+//                if (!flag) {
+//                    diagnoseDetail.setVerifyCode(bean.getCode());
+//                    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())) {
@@ -517,7 +545,9 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
                     diagnoseDetail.setVerifyStandard(bean.getStandard());
                     DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(diagnoseWrapper.getId(), diagnoseWrapper.getDisName(), bean.getType(),
                             bean.getStandard(), DiagnoseFieldEnum.standard.getKey(), param, ++j);
-                    diagnoseQuestionList.add(diagnoseQuestion);
+                    if (addDiagnoseQuestion(questionSet, diagnoseQuestion)) {
+                        diagnoseQuestionList.add(diagnoseQuestion);
+                    }
                 }
             }
 
@@ -532,7 +562,9 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
                         sb.append(s).append("、");
                         DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(diagnoseWrapper.getId(), diagnoseWrapper.getDisName(), bean.getType(),
                                 s.trim(), DiagnoseFieldEnum.relation.getKey(), param, ++j);
-                        diagnoseQuestionList.add(diagnoseQuestion);
+                        if (addDiagnoseQuestion(questionSet, diagnoseQuestion)) {
+                            diagnoseQuestionList.add(diagnoseQuestion);
+                        }
                     }
                 }
                 String errWord = sb.toString();
@@ -549,7 +581,9 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
                     diagnoseDetail.setVerifyResult(bean.getResult());
                     DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(diagnoseWrapper.getId(), diagnoseWrapper.getDisName(), bean.getType(),
                             bean.getStandard(), DiagnoseFieldEnum.standard.getKey(), param, ++j);
-                    diagnoseQuestionList.add(diagnoseQuestion);
+                    if (addDiagnoseQuestion(questionSet, diagnoseQuestion)) {
+                        diagnoseQuestionList.add(diagnoseQuestion);
+                    }
                 }
             }
             diagnoseDetailList.add(diagnoseDetail);