Browse Source

删除业务

zhoutg 5 years ago
parent
commit
c980889786

+ 148 - 0
knowledgeman-service/src/main/java/com/diagbot/facade/DiagnoseFacade.java

@@ -31,12 +31,14 @@ import com.diagbot.service.impl.DiagnoseServiceImpl;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.DiagnoseTypeConvertUtil;
+import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.RespDTOUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.util.VerifyUtil;
 import com.diagbot.vo.DeleteDiagnoseVO;
 import com.diagbot.vo.DiagnosePageVO;
+import com.diagbot.vo.DiagnoseVerifyVO;
 import com.diagbot.vo.DiseaseIndexVO;
 import com.diagbot.vo.GetDiagnoseDetailVO;
 import com.diagbot.vo.NeoParamVO;
@@ -48,6 +50,8 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @Component
 public class DiagnoseFacade extends DiagnoseServiceImpl {
@@ -102,6 +106,17 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
                 .set("neo_update", now)
                 .set("remark", deleteDiagnoseVO.getRemark()));
 
+        // 删除明细(逻辑删除)
+        diagnoseDetailFacade.update(new DiagnoseDetail(), new UpdateWrapper<DiagnoseDetail>()
+                .eq("diagnose_id", deleteDiagnoseVO.getId())
+                .set("gmt_modified", now)
+                .set("modifier", deleteDiagnoseVO.getModifier())
+                .set("is_deleted", deleteDiagnoseVO.getIsDeleted()));
+
+        // 删除问题词列表(物理删除)
+        diagnoseQuestionService.remove(new QueryWrapper<DiagnoseQuestion>()
+                .eq("diagnose_id", deleteDiagnoseVO.getId()));
+
         // 删除图谱数据
         NeoParamVO neoParamVO = new NeoParamVO();
         neoParamVO.setId(deleteDiagnoseVO.getId());
@@ -195,6 +210,139 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
     }
 
 
+    /**
+     * 诊断依据校验全部数据
+     *
+     * @param diagnoseVerifyVO
+     */
+    public void verifyAllData(DiagnoseVerifyVO diagnoseVerifyVO) {
+        CommonParam param = initCommonParam();
+        param.setPerson(diagnoseVerifyVO.getModifier());
+
+        // 获取所有主表信息
+        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> 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);
+                }
+
+                for (DiagnoseDetail bean : detail) {
+                    bean.setModifier(param.getPerson());
+                    bean.setGmtModified(param.getNow());
+                    if (DiagnoseTypeEnum.Confirmed.getKey() == bean.getType() || (DiagnoseTypeEnum.Examination.getKey() == bean.getType() || (DiagnoseTypeEnum.Vigilant.getKey() == bean.getType()))) {
+                        // 校验公式
+                        // TODO
+                    } else {
+                        // 校验编码
+                        if (StringUtil.isNotEmpty(bean.getCode())) {
+                            flag = VerifyUtil.verifyCode(String.valueOf(bean.getType()), bean.getCode());
+                            if (!flag) {
+                                bean.setVerifyCode(String.valueOf(HasQuestionEnum.HAS_QUESTION.getKey()));
+                                DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(bean.getDiagnoseId(), bean.getDisName(), bean.getType(),
+                                        bean.getCode(), DiagnoseFieldEnum.code.getKey(), initCommonParam(), ++j);
+                                diagnoseQuestionList.add(diagnoseQuestion);
+                            }
+                        }
+
+                        // 校验标准词
+                        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(HasQuestionEnum.HAS_QUESTION.getKey()));
+                                DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(bean.getDiagnoseId(), bean.getDisName(), bean.getType(),
+                                        bean.getStandard(), DiagnoseFieldEnum.standard.getKey(), initCommonParam(), ++j);
+                                diagnoseQuestionList.add(diagnoseQuestion);
+                            }
+                        }
+
+                        // 校验关联词
+                        if (StringUtil.isNotEmpty(bean.getRelation())) {
+                            String[] arr = bean.getRelation().split("、");
+                            for (String s : arr) {
+                                typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(), DiagnoseFieldEnum.relation.getKey());
+                                flag = verifyExist(libraryForDiagnoseDTOS, s.trim(), typeList);
+                                if (!flag) {
+                                    bean.setVerifyRelation(String.valueOf(HasQuestionEnum.HAS_QUESTION.getKey()));
+                                    DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(bean.getDiagnoseId(), bean.getDisName(), bean.getType(),
+                                            s.trim(), DiagnoseFieldEnum.relation.getKey(), initCommonParam(), ++j);
+                                    diagnoseQuestionList.add(diagnoseQuestion);
+                                }
+                            }
+                        }
+
+                        // 校验结果
+                        if (StringUtil.isNotEmpty(bean.getResult())) {
+                            typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(), DiagnoseFieldEnum.result.getKey());
+                            flag = verifyExist(libraryForDiagnoseDTOS, bean.getResult(), typeList);
+                            if (!flag) {
+                                bean.setVerifyResult(String.valueOf(HasQuestionEnum.HAS_QUESTION.getKey()));
+                                DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(bean.getDiagnoseId(), bean.getDisName(), bean.getType(),
+                                        bean.getStandard(), DiagnoseFieldEnum.standard.getKey(), initCommonParam(), ++j);
+                                diagnoseQuestionList.add(diagnoseQuestion);
+                            }
+                        }
+                    }
+                    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());
+
+        // 修改问题词表,修改人|修改时间|状态
+        for (Diagnose diagnose : diagnoseListWithDB) {
+            diagnose.setModifier(diagnoseVerifyVO.getModifier());
+            diagnose.setGmtModified(param.getNow());
+            if (disNameList.contains(diagnose.getDisName())) {
+                diagnose.setHasQuestion(String.valueOf(HasQuestionEnum.HAS_QUESTION.getKey()));
+            } else {
+                diagnose.setHasQuestion(String.valueOf(HasQuestionEnum.NO_QUESTION.getKey()));
+            }
+        }
+        // 更新主表信息
+        this.saveOrUpdateBatch(diagnoseListWithDB);
+    }
+
+
+
+
 
     /**
      *  处理诊断特征业务(校验诊断名称|编码|标准词|关联词|结果)

+ 29 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/DiagnoseVerifyVO.java

@@ -0,0 +1,29 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 诊断依据校验全部数据入参
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2019-08-08
+ */
+@Getter
+@Setter
+@ApiModel
+public class DiagnoseVerifyVO extends Page implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "修改人姓名")
+    private String modifier;
+
+}

+ 11 - 0
knowledgeman-service/src/main/java/com/diagbot/web/DiagnoseController.java

@@ -12,6 +12,7 @@ import com.diagbot.entity.wrapper.DiagnoseWrapper;
 import com.diagbot.facade.DiagnoseFacade;
 import com.diagbot.vo.DeleteDiagnoseVO;
 import com.diagbot.vo.DiagnosePageVO;
+import com.diagbot.vo.DiagnoseVerifyVO;
 import com.diagbot.vo.DiseaseIndexVO;
 import com.diagbot.vo.GetDiagnoseDetailVO;
 import io.swagger.annotations.Api;
@@ -77,6 +78,16 @@ public class DiagnoseController {
     }
 
 
+    @ApiOperation(value = "诊断依据-校验所有数据[by:zhoutg]")
+    @PostMapping("/verifyAllData")
+    @SysLogger("verifyAllData")
+    @Transactional
+    public RespDTO<Boolean> verifyAllData(@RequestBody DiagnoseVerifyVO diagnoseVerifyVO) {
+        diagnoseFacade.verifyAllData(diagnoseVerifyVO);
+        return RespDTO.onSuc(true);
+    }
+
+
     @ApiOperation(value = "诊断依据-更新图谱[by:zhoutg]")
     @PostMapping("/updateNeo")
     @SysLogger("updateNeo")