|
@@ -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);
|
|
|
}
|
|
|
|
|
|
|