Forráskód Böngészése

校验数据待完善

zhoutg 5 éve
szülő
commit
703639631e

+ 37 - 0
knowledgeman-service/src/main/java/com/diagbot/dto/LibraryForDiagnoseDTO.java

@@ -0,0 +1,37 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Objects;
+
+/**
+ * @description:
+ * @author: zhoutg
+ * @time: 2019/8/9 14:09
+ */
+@Getter
+@Setter
+public class LibraryForDiagnoseDTO {
+    private String name;
+    private Integer typeId;
+
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        LibraryForDiagnoseDTO that = (LibraryForDiagnoseDTO) o;
+        return Objects.equals(name, that.name) &&
+                Objects.equals(typeId, that.typeId);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(name, typeId);
+    }
+}

+ 3 - 2
knowledgeman-service/src/main/java/com/diagbot/enums/DiagnoseFieldEnum.java

@@ -10,10 +10,11 @@ import lombok.Setter;
  * @date 2018年11月21日 下午2:31:42
  */
 public enum DiagnoseFieldEnum implements KeyedNamed {
-
+    code(1, "编码"),
     standard(2, "标准词"),
     relation(3, "关联词"),
-    result(4, "结果");
+    result(4, "结果"),
+    disName(5, "诊断名称");
 
     @Setter
     private Integer key;

+ 124 - 8
knowledgeman-service/src/main/java/com/diagbot/facade/DiagnoseFacade.java

@@ -6,12 +6,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.DiagnoseDetailSaveDTO;
 import com.diagbot.dto.DiagnosePageDTO;
+import com.diagbot.dto.LibraryForDiagnoseDTO;
 import com.diagbot.entity.CommonParam;
 import com.diagbot.entity.Diagnose;
 import com.diagbot.entity.DiagnoseDetail;
 import com.diagbot.entity.DiagnoseDetailSave;
 import com.diagbot.entity.DiagnoseQuestion;
 import com.diagbot.entity.wrapper.DiagnoseWrapper;
+import com.diagbot.enums.DiagnoseFieldEnum;
 import com.diagbot.enums.DiagnoseTypeEnum;
 import com.diagbot.enums.InsertOrUpdateEnum;
 import com.diagbot.enums.IsDeleteEnum;
@@ -23,6 +25,9 @@ import com.diagbot.service.DiagnoseQuestionService;
 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.ListUtil;
+import com.diagbot.util.StringUtil;
 import com.diagbot.vo.DeleteDiagnoseVO;
 import com.diagbot.vo.DiagnosePageVO;
 import com.diagbot.vo.DiseaseIndexVO;
@@ -48,6 +53,8 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
     DiagnoseQuestionService diagnoseQuestionService;
     @Autowired
     DiagnoseDetailFacade diagnoseDetailFacade;
+    @Autowired
+    LibraryInfoFacade libraryInfoFacade;
 
     /**
      * 诊断依据分页
@@ -129,11 +136,11 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
 
 
     /**
-     * 诊断依据新增或修改
+     * 诊断依据校验数据,新增或更新主表信息,覆盖明细表和问题词表
      *
      * @param diagnoseWrapper
      */
-    public void insertOrUpdate(DiagnoseWrapper diagnoseWrapper) {
+    public List<DiagnoseDetail> verifyData(DiagnoseWrapper diagnoseWrapper) {
         CommonParam param = initCommonParam();
         param.setPerson(diagnoseWrapper.getModifier());
 
@@ -156,9 +163,16 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
         diagnose.setGmtModified(param.getNow());
         this.saveOrUpdate(diagnose);
 
+
+        // 导入词库数据
+        List<LibraryForDiagnoseDTO> libraryForDiagnoseDTOS = libraryInfoFacade.getLibraryForDiagnose();
+
         // 新增明细
         List<DiagnoseDetail> diagnoseDetailList = new ArrayList<>();
-        int i = 0;
+        // 新增问题词
+        List<DiagnoseQuestion> diagnoseQuestionList = new ArrayList<>();
+
+        int i = 0, j = 0;
         // 遍历诊断特征
         for (DiagnoseDetailSave bean : diagnoseWrapper.getDisFeature()) {
             DiagnoseDetail diagnoseDetail = new DiagnoseDetail();
@@ -170,7 +184,50 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
             diagnoseDetail.setGmtModified(param.getNow());
             diagnoseDetail.setDisName(diagnose.getDisName());
             diagnoseDetail.setOrderNo(++i);
-            // TODO 校验数据
+            boolean flag = true;
+            List<Integer> typeList = new ArrayList<>();
+
+            // 校验编码
+            // TODO
+
+            // 校验标准词
+            if (StringUtil.isNotEmpty(bean.getStandard())) {
+                typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(), DiagnoseFieldEnum.standard.getKey());
+                flag = verifyExist(libraryForDiagnoseDTOS, bean.getStandard(), typeList);
+                if (!flag) {
+                    diagnoseDetail.setVerifyStandard("1");
+                    DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(diagnose.getId(), diagnose.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) {
+                        diagnoseDetail.setVerifyRelation("1");
+                        DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(diagnose.getId(), diagnose.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) {
+                    diagnoseDetail.setVerifyResult("1");
+                    DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(diagnose.getId(), diagnose.getDisName(), bean.getType(),
+                            bean.getStandard(), DiagnoseFieldEnum.standard.getKey(), initCommonParam(), ++j);
+                    diagnoseQuestionList.add(diagnoseQuestion);
+                }
+            }
             diagnoseDetailList.add(diagnoseDetail);
         }
 
@@ -185,16 +242,26 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
             diagnoseDetail.setGmtModified(param.getNow());
             diagnoseDetail.setDisName(diagnose.getDisName());
             diagnoseDetail.setOrderNo(++i);
-            // TODO 校验数据
+            // 校验公式
+            // TODO
             diagnoseDetailList.add(diagnoseDetail);
         }
         diagnoseDetailService.saveBatch(diagnoseDetailList);
 
-
-        // 新增问题词
-        // TODO
+        // 有问题词逻辑
+        if (ListUtil.isNotEmpty(diagnoseQuestionList)) {
+            // 新增问题词数据
+            diagnoseQuestionService.saveBatch(diagnoseQuestionList);
+        }
+        // 更新主表状态
+        this.update(new UpdateWrapper<Diagnose>()
+                .set("has_question", ListUtil.isNotEmpty(diagnoseQuestionList)? 1 : 0)
+                .eq("id", diagnose.getId())
+        );
+        return diagnoseDetailList;
     }
 
+
     /**
      * 初始化参数
      *
@@ -206,4 +273,53 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
         param.setInsertOrUpdate(InsertOrUpdateEnum.Insert.getKey());
         return param;
     }
+
+
+    /**
+     *  校验词库中是否存在
+     *
+     * @param library 词库数据
+     * @param name 界面输入
+     * @param type 转换类型
+     * @return 校验结果
+     */
+    public boolean verifyExist(List<LibraryForDiagnoseDTO> library, String name, List<Integer> type) {
+        for(Integer integer : type) {
+            LibraryForDiagnoseDTO libraryForDiagnoseDTO = new LibraryForDiagnoseDTO();
+            libraryForDiagnoseDTO.setName(name);
+            libraryForDiagnoseDTO.setTypeId(integer);
+            if (library.contains(libraryForDiagnoseDTO)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+
+    /**
+     * 生成问题词
+     *
+     * @param disName
+     * @param type
+     * @param questionName
+     * @param commonParam
+     * @return
+     */
+    public DiagnoseQuestion createDiagnoseQuestion(Long diagnoseId, String disName, Integer type, String questionName, Integer questionType, CommonParam commonParam, Integer orderNo) {
+        DiagnoseQuestion dq = new DiagnoseQuestion();
+        dq.setCreator(commonParam.getPerson());
+        dq.setGmtCreate(commonParam.getNow());
+        dq.setModifier(commonParam.getPerson());
+        dq.setGmtModified(commonParam.getNow());
+        dq.setDisName(disName);
+        dq.setDiagnoseId(diagnoseId);
+        dq.setType(type);
+        dq.setQuestionName(questionName);
+        dq.setQuestionType(questionType);
+        dq.setOrderNo(orderNo);
+        return dq;
+    }
+
+
+
 }

+ 1 - 1
knowledgeman-service/src/main/java/com/diagbot/facade/LibraryInfoFacade.java

@@ -11,6 +11,6 @@ import com.diagbot.service.impl.LibraryInfoServiceImpl;
  */
 @Component
 public class LibraryInfoFacade extends LibraryInfoServiceImpl {
-  
+
 
 }

+ 5 - 2
knowledgeman-service/src/main/java/com/diagbot/mapper/LibraryInfoMapper.java

@@ -1,8 +1,11 @@
 package com.diagbot.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.dto.LibraryForDiagnoseDTO;
 import com.diagbot.entity.LibraryInfo;
 
+import java.util.List;
+
 /**
  * <p>
  * 提示信息 Mapper 接口
@@ -13,6 +16,6 @@ import com.diagbot.entity.LibraryInfo;
  */
 public interface LibraryInfoMapper extends BaseMapper<LibraryInfo> {
 
-    
-   
+
+    public List<LibraryForDiagnoseDTO> getLibraryForDiagnose();
 }

+ 6 - 2
knowledgeman-service/src/main/java/com/diagbot/service/LibraryInfoService.java

@@ -1,8 +1,11 @@
 package com.diagbot.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.dto.LibraryForDiagnoseDTO;
 import com.diagbot.entity.LibraryInfo;
 
+import java.util.List;
+
 /**
  * <p>
  * 提示信息 服务类
@@ -12,5 +15,6 @@ import com.diagbot.entity.LibraryInfo;
  * @since 2019-01-30
  */
 public interface LibraryInfoService extends IService<LibraryInfo> {
-    
-}
+
+    public List<LibraryForDiagnoseDTO> getLibraryForDiagnose();
+}

+ 8 - 1
knowledgeman-service/src/main/java/com/diagbot/service/impl/LibraryInfoServiceImpl.java

@@ -1,5 +1,6 @@
 package com.diagbot.service.impl;
 
+import com.diagbot.dto.LibraryForDiagnoseDTO;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -7,6 +8,8 @@ import com.diagbot.entity.LibraryInfo;
 import com.diagbot.mapper.LibraryInfoMapper;
 import com.diagbot.service.LibraryInfoService;
 
+import java.util.List;
+
 /**
  * <p>
  * 提示信息 服务实现类
@@ -18,5 +21,9 @@ import com.diagbot.service.LibraryInfoService;
 @Service
 public class LibraryInfoServiceImpl extends ServiceImpl<LibraryInfoMapper, LibraryInfo> implements LibraryInfoService {
 
-  
+
+    @Override
+    public List<LibraryForDiagnoseDTO> getLibraryForDiagnose() {
+        return baseMapper.getLibraryForDiagnose();
+    }
 }

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

@@ -7,6 +7,7 @@ import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.DiagnoseDetailSaveDTO;
 import com.diagbot.dto.DiagnosePageDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.DiagnoseDetail;
 import com.diagbot.entity.wrapper.DiagnoseWrapper;
 import com.diagbot.facade.DiagnoseFacade;
 import com.diagbot.vo.DeleteDiagnoseVO;
@@ -66,20 +67,19 @@ public class DiagnoseController {
     }
 
 
-    @ApiOperation(value = "诊断依据-新增或更新[by:zhoutg]")
-    @PostMapping("/insertOrUpdate")
-    @SysLogger("insertOrUpdate")
+    @ApiOperation(value = "诊断依据-校验数据[by:zhoutg]")
+    @PostMapping("/verifyData")
+    @SysLogger("verifyData")
     @Transactional
-    public RespDTO<Boolean> insertOrUpdate(@RequestBody DiagnoseWrapper diagnoseWrapper) {
-        diagnoseFacade.insertOrUpdate(diagnoseWrapper);
-        return RespDTO.onSuc(true);
+    public RespDTO<List<DiagnoseDetail>> verifyData(@RequestBody DiagnoseWrapper diagnoseWrapper) {
+        List<DiagnoseDetail> diagnoseDetailList = diagnoseFacade.verifyData(diagnoseWrapper);
+        return RespDTO.onSuc(diagnoseDetailList);
     }
 
 
     @ApiOperation(value = "诊断依据-获取详情[by:zhoutg]")
     @PostMapping("/getDetail")
     @SysLogger("getDetail")
-    @Transactional
     public RespDTO<DiagnoseDetailSaveDTO> getDetail(@Valid @RequestBody GetDiagnoseDetailVO getDiagnoseDetailVO) {
         DiagnoseDetailSaveDTO diagnoseDetailSaveDTO = diagnoseFacade.getDetail(getDiagnoseDetailVO);
         return RespDTO.onSuc(diagnoseDetailSaveDTO);

+ 5 - 0
knowledgeman-service/src/main/resources/mapper/LibraryInfoMapper.xml

@@ -18,4 +18,9 @@
         <result column="remark" property="remark" />
     </resultMap>
 
+    <select id="getLibraryForDiagnose" resultType="com.diagbot.dto.LibraryForDiagnoseDTO">
+        SELECT name, type_id from kl_library_info where is_deleted = 'N'
+        and type_id in (1,5,12,13,14,16,17,18,35,70)
+    </select>
+
 </mapper>