浏览代码

多人不能同时点击全部校验

zhoutg 5 年之前
父节点
当前提交
ab575ac117
共有 1 个文件被更改,包括 119 次插入107 次删除
  1. 119 107
      knowledgeman-service/src/main/java/com/diagbot/facade/DiagnoseFacade.java

+ 119 - 107
knowledgeman-service/src/main/java/com/diagbot/facade/DiagnoseFacade.java

@@ -57,6 +57,8 @@ import java.util.stream.Collectors;
 @Component
 public class DiagnoseFacade extends DiagnoseServiceImpl {
 
+    public static boolean verifyFlag = true;  // true:执行完毕,false:正在执行
+
     @Autowired
     ConceptFacade conceptFacade;
     @Autowired
@@ -226,136 +228,146 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
      *
      */
     public void verifyAllData() {
-        CommonParam param = initCommonParam();
+        if (!verifyFlag) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "其他人正在执行此操作,请稍后再试!");
+        }
+        try {
+            verifyFlag = false;
+            CommonParam param = initCommonParam();
 
-        // 获取所有主表信息
-        List<Diagnose> diagnoseListWithDB = this.list(new QueryWrapper<Diagnose>()
-            .eq("is_deleted", IsDeleteEnum.N.getKey())
-        );
+            // 获取所有主表信息
+            List<Diagnose> diagnoseListWithDB = this.list(new QueryWrapper<Diagnose>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+            );
 
-        // 获取所有明细信息
-        List<DiagnoseDetail> diagnoseDetailWithDB = diagnoseDetailFacade.list(new QueryWrapper<DiagnoseDetail>()
-                .eq("is_deleted", IsDeleteEnum.N.getKey())
-        );
-        Map<String, List<DiagnoseDetail>> map = EntityUtil.makeEntityListMap(diagnoseDetailWithDB, "disName");
+            // 获取所有明细信息
+            List<DiagnoseDetail> diagnoseDetailWithDB = diagnoseDetailFacade.list(new QueryWrapper<DiagnoseDetail>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+            );
+            Map<String, List<DiagnoseDetail>> map = EntityUtil.makeEntityListMap(diagnoseDetailWithDB, "disName");
 
-        // 明细数据
-        List<DiagnoseDetail> diagnoseDetailList = new ArrayList<>();
-        // 问题词数据
-        List<DiagnoseQuestion> diagnoseQuestionList = new ArrayList<>();
-        // 加载词库数据
-        List<LibraryForDiagnoseDTO> libraryForDiagnoseDTOS = libraryInfoFacade.getLibraryForDiagnose();
-        Boolean flag = true;
-
-        List<Integer> typeList = new ArrayList<>();
-        // 校验明细数据
-        for (String key : map.keySet()) {
-            List<DiagnoseDetail> detail = map.get(key);
-            int j = 0;
-            if (ListUtil.isNotEmpty(detail)) {
-                // 判断诊断名称是否在词库中
-                flag = verifyExist(libraryForDiagnoseDTOS, 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);
-                }
+            // 明细数据
+            List<DiagnoseDetail> diagnoseDetailList = new ArrayList<>();
+            // 问题词数据
+            List<DiagnoseQuestion> diagnoseQuestionList = new ArrayList<>();
+            // 加载词库数据
+            List<LibraryForDiagnoseDTO> libraryForDiagnoseDTOS = libraryInfoFacade.getLibraryForDiagnose();
+            Boolean flag = true;
 
-                for (DiagnoseDetail bean : detail) {
-                    if (DiagnoseTypeEnum.Confirmed.getKey() == bean.getType() || (DiagnoseTypeEnum.Examination.getKey() == bean.getType() || (DiagnoseTypeEnum.Vigilant.getKey() == bean.getType()))) {
-                        // 不需要校验公式
-                    } else {
-                        // 校验编码
-                        if (StringUtil.isNotEmpty(bean.getCode())) {
-                            flag = VerifyUtil.verifyCode(String.valueOf(bean.getType()), bean.getCode());
-                            if (!flag) {
-                                bean.setVerifyCode(bean.getCode());
-                                DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(bean.getDiagnoseId(), bean.getDisName(), bean.getType(),
-                                        bean.getCode(), DiagnoseFieldEnum.code.getKey(), param, ++j);
-                                diagnoseQuestionList.add(diagnoseQuestion);
-                            } else {
-                                bean.setVerifyCode(""); // 将原值清空
-                            }
-                        }
+            List<Integer> typeList = new ArrayList<>();
+            // 校验明细数据
+            for (String key : map.keySet()) {
+                List<DiagnoseDetail> detail = map.get(key);
+                int j = 0;
+                if (ListUtil.isNotEmpty(detail)) {
+                    // 判断诊断名称是否在词库中
+                    flag = verifyExist(libraryForDiagnoseDTOS, 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);
+                    }
 
-                        // 校验标准词
-                        if (StringUtil.isNotEmpty(bean.getStandard())) {
-                            typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(), DiagnoseFieldEnum.standard.getKey());
-                            flag = verifyExist(libraryForDiagnoseDTOS, bean.getStandard(), typeList);
-                            if (!flag) {
-                                bean.setVerifyStandard(String.valueOf(bean.getStandard()));
-                                DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(bean.getDiagnoseId(), bean.getDisName(), bean.getType(),
-                                        bean.getStandard(), DiagnoseFieldEnum.standard.getKey(), param, ++j);
-                                diagnoseQuestionList.add(diagnoseQuestion);
-                            } else {
-                                bean.setVerifyStandard(""); // 将原值清空
+                    for (DiagnoseDetail bean : detail) {
+                        if (DiagnoseTypeEnum.Confirmed.getKey() == bean.getType() || (DiagnoseTypeEnum.Examination.getKey() == bean.getType() || (DiagnoseTypeEnum.Vigilant.getKey() == bean.getType()))) {
+                            // 不需要校验公式
+                        } else {
+                            // 校验编码
+                            if (StringUtil.isNotEmpty(bean.getCode())) {
+                                flag = VerifyUtil.verifyCode(String.valueOf(bean.getType()), bean.getCode());
+                                if (!flag) {
+                                    bean.setVerifyCode(bean.getCode());
+                                    DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(bean.getDiagnoseId(), bean.getDisName(), bean.getType(),
+                                            bean.getCode(), DiagnoseFieldEnum.code.getKey(), param, ++j);
+                                    diagnoseQuestionList.add(diagnoseQuestion);
+                                } else {
+                                    bean.setVerifyCode(""); // 将原值清空
+                                }
                             }
-                        }
 
-                        // 校验关联词
-                        if (StringUtil.isNotEmpty(bean.getRelation())) {
-                            String[] arr = bean.getRelation().split("、");
-                            StringBuffer sb = new StringBuffer();
-                            for (String s : arr) {
-                                typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(), DiagnoseFieldEnum.relation.getKey());
-                                flag = verifyExist(libraryForDiagnoseDTOS, s.trim(), typeList);
+                            // 校验标准词
+                            if (StringUtil.isNotEmpty(bean.getStandard())) {
+                                typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(), DiagnoseFieldEnum.standard.getKey());
+                                flag = verifyExist(libraryForDiagnoseDTOS, bean.getStandard(), typeList);
                                 if (!flag) {
-                                    sb.append(s).append("、");
-                                    bean.setVerifyRelation(bean.getRelation());
+                                    bean.setVerifyStandard(String.valueOf(bean.getStandard()));
                                     DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(bean.getDiagnoseId(), bean.getDisName(), bean.getType(),
-                                            s.trim(), DiagnoseFieldEnum.relation.getKey(), param, ++j);
+                                            bean.getStandard(), DiagnoseFieldEnum.standard.getKey(), param, ++j);
                                     diagnoseQuestionList.add(diagnoseQuestion);
+                                } else {
+                                    bean.setVerifyStandard(""); // 将原值清空
                                 }
                             }
-                            String errWord = sb.toString();
-                            if (StringUtil.isNotEmpty(errWord)) {
-                                bean.setVerifyRelation(errWord.substring(0, errWord.length()-1));
-                            } else {
-                                bean.setVerifyRelation(""); // 将原值清空
+
+                            // 校验关联词
+                            if (StringUtil.isNotEmpty(bean.getRelation())) {
+                                String[] arr = bean.getRelation().split("、");
+                                StringBuffer sb = new StringBuffer();
+                                for (String s : arr) {
+                                    typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(), DiagnoseFieldEnum.relation.getKey());
+                                    flag = verifyExist(libraryForDiagnoseDTOS, 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);
+                                        diagnoseQuestionList.add(diagnoseQuestion);
+                                    }
+                                }
+                                String errWord = sb.toString();
+                                if (StringUtil.isNotEmpty(errWord)) {
+                                    bean.setVerifyRelation(errWord.substring(0, errWord.length() - 1));
+                                } else {
+                                    bean.setVerifyRelation(""); // 将原值清空
+                                }
                             }
-                        }
 
-                        // 校验结果
-                        if (StringUtil.isNotEmpty(bean.getResult())) {
-                            typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(), DiagnoseFieldEnum.result.getKey());
-                            flag = verifyExist(libraryForDiagnoseDTOS, 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);
-                                diagnoseQuestionList.add(diagnoseQuestion);
-                            } else {
-                                bean.setVerifyResult(""); // 将原值清空
+                            // 校验结果
+                            if (StringUtil.isNotEmpty(bean.getResult())) {
+                                typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(), DiagnoseFieldEnum.result.getKey());
+                                flag = verifyExist(libraryForDiagnoseDTOS, 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);
+                                    diagnoseQuestionList.add(diagnoseQuestion);
+                                } else {
+                                    bean.setVerifyResult(""); // 将原值清空
+                                }
                             }
                         }
+                        diagnoseDetailList.add(bean);
                     }
-                    diagnoseDetailList.add(bean);
                 }
             }
-        }
-
-        // 更新明细
-        diagnoseDetailService.saveOrUpdateBatch(diagnoseDetailList);
 
-        // 删除全部的问题词数据
-        diagnoseQuestionService.remove(new QueryWrapper<DiagnoseQuestion>());
-        // 新增问题词
-        if (ListUtil.isNotEmpty(diagnoseQuestionList)) {
-            // 新增问题词数据
-            diagnoseQuestionService.saveBatch(diagnoseQuestionList);
-        }
-        List<String> disNameList = diagnoseQuestionList.stream().map(row -> row.getDisName()).distinct().collect(Collectors.toList());
+            // 更新明细
+            diagnoseDetailService.saveOrUpdateBatch(diagnoseDetailList);
 
-        // 修改问题词表的状态
-        for (Diagnose diagnose : diagnoseListWithDB) {
-            if (disNameList.contains(diagnose.getDisName())) {
-                diagnose.setHasQuestion(String.valueOf(HasQuestionEnum.HAS_QUESTION.getKey()));
-            } else {
-                diagnose.setHasQuestion(String.valueOf(HasQuestionEnum.NO_QUESTION.getKey()));
+            // 删除全部的问题词数据
+            diagnoseQuestionService.remove(new QueryWrapper<DiagnoseQuestion>());
+            // 新增问题词
+            if (ListUtil.isNotEmpty(diagnoseQuestionList)) {
+                // 新增问题词数据
+                diagnoseQuestionService.saveBatch(diagnoseQuestionList);
+            }
+            List<String> disNameList = diagnoseQuestionList.stream().map(row -> row.getDisName()).distinct().collect(Collectors.toList());
+
+            // 修改问题词表的状态
+            for (Diagnose diagnose : diagnoseListWithDB) {
+                if (disNameList.contains(diagnose.getDisName())) {
+                    diagnose.setHasQuestion(String.valueOf(HasQuestionEnum.HAS_QUESTION.getKey()));
+                } else {
+                    diagnose.setHasQuestion(String.valueOf(HasQuestionEnum.NO_QUESTION.getKey()));
+                }
             }
+            // 更新主表信息
+            diagnoseService.saveOrUpdateBatch(diagnoseListWithDB);
+        } catch (Exception e) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, e.getMessage());
+        } finally {
+            verifyFlag = true;
         }
-        // 更新主表信息
-        diagnoseService.saveOrUpdateBatch(diagnoseListWithDB);
     }