Browse Source

诊断依据暂存数据接口

zhoutg 5 years ago
parent
commit
c2bbf1df75

+ 1 - 1
knowledgeman-service/src/main/java/com/diagbot/entity/CommonParam.java

@@ -18,6 +18,6 @@ public class CommonParam {
     private int insertOrUpdate;//更新或新增标识
     private int i = 0;
     private int j = 0;
-    private int flag = 0; // 1:表示有问题词或公式错误,0:正确
+    private int flag = 0; // 2:临时保存,1:表示有问题词或公式错误,0:正确
     private Boolean disNameExist = true;
 }

+ 75 - 4
knowledgeman-service/src/main/java/com/diagbot/facade/DiagnoseFacade.java

@@ -40,6 +40,7 @@ import com.diagbot.util.StringUtil;
 import com.diagbot.util.VerifyUtil;
 import com.diagbot.vo.DeleteDiagnoseVO;
 import com.diagbot.vo.DiagnosePageVO;
+import com.diagbot.vo.DiagnoseSearchVO;
 import com.diagbot.vo.DiseaseIndexVO;
 import com.diagbot.vo.GetDiagnoseDetailVO;
 import com.diagbot.vo.NeoParamVO;
@@ -311,6 +312,47 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
     }
 
 
+    /**
+     * 诊断依据保存暂存数据,新增或更新主表信息,覆盖明细表,清空问题词
+     *
+     * @param diagnoseWrapper
+     */
+    public void tempSaveOrUpdateFac(DiagnoseWrapper diagnoseWrapper) {
+        VerifyDataDTO verifyDataDTO = new VerifyDataDTO();
+        CommonParam param = initCommonParam();
+        param.setPerson(diagnoseWrapper.getModifier());
+        param.setFlag(HasQuestionEnum.TEMP_DATA.getKey()); // 设置状态为暂存数据
+
+        // 更新主表业务(同时删除明细表和问题词表)
+        Long id = insertOrUpdateDiagnose(diagnoseWrapper, param);
+        diagnoseWrapper.setId(id);
+        verifyDataDTO.setId(id); //设置主键返回
+
+        // 明细数据
+        List<DiagnoseDetail> diagnoseDetailList = new ArrayList<>();
+        int i = param.getI();
+
+        // 合并疾病特征和诊断公式,统一遍历
+        List<DiagnoseDetailSave> diagnoseDetailSaveList = new ArrayList<>();
+        diagnoseDetailSaveList.addAll(diagnoseWrapper.getDisFeature());
+        diagnoseDetailSaveList.addAll(diagnoseWrapper.getDisformula());
+        for (DiagnoseDetailSave bean : diagnoseDetailSaveList) {
+            DiagnoseDetail diagnoseDetail = new DiagnoseDetail();
+            BeanUtil.copyProperties(bean, diagnoseDetail);
+            diagnoseDetail.setDiagnoseId(diagnoseWrapper.getId());
+            diagnoseDetail.setCreator(param.getPerson());
+            diagnoseDetail.setGmtCreate(param.getNow());
+            diagnoseDetail.setModifier(param.getPerson());
+            diagnoseDetail.setGmtModified(param.getNow());
+            diagnoseDetail.setDisName(diagnoseWrapper.getDisName());
+            diagnoseDetail.setOrderNo(++i);
+            diagnoseDetailList.add(diagnoseDetail);
+        }
+        // 保存明细
+        diagnoseDetailService.saveBatch(diagnoseDetailList);
+    }
+
+
     /**
      * 诊断依据校验全部数据(不用修改操作人和时间)
      */
@@ -329,11 +371,20 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
             // 获取所有主表信息
             List<Diagnose> diagnoseListWithDB = this.list(new QueryWrapper<Diagnose>()
                     .eq("is_deleted", IsDeleteEnum.N.getKey())
-            );
+                    .and(wrapper -> wrapper.eq("has_question", HasQuestionEnum.NO_QUESTION.getKey())
+                            .or()
+                            .eq("has_question", HasQuestionEnum.HAS_QUESTION.getKey()))
+                    );
+
+            if (ListUtil.isEmpty(diagnoseListWithDB)) {
+                return "无数据执行";
+            }
 
             // 获取所有明细信息
             List<DiagnoseDetail> diagnoseDetailWithDB = diagnoseDetailFacade.list(new QueryWrapper<DiagnoseDetail>()
                     .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("diagnose_id",
+                            diagnoseListWithDB.stream().map(row -> row.getId()).collect(Collectors.toList()))
             );
             Map<String, List<DiagnoseDetail>> map =
                     EntityUtil.makeEntityListMap(diagnoseDetailWithDB, "disName");
@@ -349,7 +400,7 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
 //            Set<String> set = libraryForDiagnoseDTOS.stream().map(row -> row.getName()+ "_"+row.getTypeId())
 //                              .collect(Collectors.toSet());
             Set<String> libSet = libraryInfoFacade.getLibraryForDiagnose2(); // 加载词库
-            Set<String> lisMappingSet = lisMappingFacade.loadLisMappingFac(); // 加载公表项
+            Set<String> lisMappingSet = lisMappingFacade.loadLisMappingFac(); // 加载公表项,需要关联同义词
             Long time3 = System.currentTimeMillis();
             res.append("加载词库:" + (time3 - time2) / 1000.0).append("秒,");
             Boolean flag = true;
@@ -726,7 +777,6 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
                 typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(),
                         DiagnoseFieldEnum.relation.getKey());
                 for (String s : arr) {
-                    typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(), DiagnoseFieldEnum.relation.getKey());
                     flag = verifyExist(set, s.trim(), typeList);
                     if (!flag) {
                         sb.append(s).append("、");
@@ -753,7 +803,6 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
                 typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(),
                         DiagnoseFieldEnum.result.getKey());
                 for (String s : arr) {
-                    typeList = DiagnoseTypeConvertUtil.diagnoseType2LibType(bean.getType(), DiagnoseFieldEnum.result.getKey());
                     flag = verifyExist(set, s.trim(), typeList);
                     if (!flag) {
                         sb.append(s).append("、");
@@ -844,6 +893,7 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
 
         Diagnose diagnose = new Diagnose();
         BeanUtil.copyProperties(diagnoseWrapper, diagnose);
+        diagnose.setHasQuestion(String.valueOf(param.getFlag())); // 设置状态
         if (diagnoseWrapper.getId() == null) { //新增
             diagnose.setCreator(param.getPerson());
             diagnose.setGmtCreate(param.getNow());
@@ -942,6 +992,27 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
         return dq;
     }
 
+
+    /**
+     * 诊断依据检索标准词和关联词
+     */
+    public List<String> searchFac(DiagnoseSearchVO diagnoseSearchVO) {
+        List<String> res = new ArrayList<>();
+        List<Integer> typeList =
+                DiagnoseTypeConvertUtil.diagnoseType2LibType(diagnoseSearchVO.getType(), diagnoseSearchVO.getField());
+        if (ListUtil.isNotEmpty(typeList)) {
+            List<LibraryInfo> libraryInfoList = libraryInfoFacade.list(new QueryWrapper<LibraryInfo>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("type_id", typeList)
+                    .and(wrapper -> wrapper.like("name", diagnoseSearchVO.getName())
+                            .or().like("spell", diagnoseSearchVO.getName()))
+            );
+            res = libraryInfoList.stream().map(row -> row.getName()).collect(Collectors.toList());
+        }
+        return res;
+    }
+
+
     public static void main(String[] args) {
         String res = "1.2+1.3";
         String str = "1.3";

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

@@ -289,9 +289,10 @@ public class LisMappingFacade extends LisMappingServiceImpl {
      * @return
      */
     public List<LisMappingSearch> getLisUniqueNameWithList(List<LisMappingSearch> lisMappingSearchList) {
+        // 界面套餐和明细名称需要转换成标准词再从化验公表项获取公表名
         List<LisMappingSearch> res = getUniqueName(lisMappingSearchList);
         if (ListUtil.isNotEmpty(res)) {
-            Map<String, String> map = res.stream().collect(Collectors.toMap((r -> r.getMealName() + "__" + r.getItemName()), (r -> r.getUniqueName())));
+            Map<String, String> map = res.stream().collect(Collectors.toMap((r -> r.getTc() + "__" + r.getMx()), (r -> r.getUniqueName())));
             for(LisMappingSearch mappingListVO : lisMappingSearchList) {
                 mappingListVO.setUniqueName(map.get(mappingListVO.getMealName() + "__" + mappingListVO.getItemName()));
             }

+ 40 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/DiagnoseSearchVO.java

@@ -0,0 +1,40 @@
+package com.diagbot.vo;
+
+import com.diagbot.entity.DiagnoseDetailSave;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 诊断依据表入参
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2019-08-08
+ */
+@Getter
+@Setter
+@ApiModel(value = "诊断依据标准词和关联搜索入参")
+public class DiagnoseSearchVO implements Serializable {
+
+    @ApiModelProperty(value = "搜索类型")
+    @NotNull(message="搜索类型不能为空")
+    private Integer type;
+
+    @ApiModelProperty(value = "搜索区域,2:标准词,3:关联词")
+    @NotNull(message="搜索区域不能为空,2:标准词,3:关联词")
+    private Integer field;
+
+    @ApiModelProperty(value = "搜索内容")
+    @NotBlank(message="搜索内容不能为空")
+    private String name;
+}

+ 7 - 2
knowledgeman-service/src/main/java/com/diagbot/vo/LisMappingSearch.java

@@ -1,5 +1,6 @@
 package com.diagbot.vo;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -14,7 +15,11 @@ import javax.validation.constraints.NotNull;
 @Setter
 public class LisMappingSearch {
     private String index;
-    private String mealName;
-    private String itemName;
+    private String mealName;        // 化验标准词套餐名称
+    @ApiModelProperty(hidden = true)
+    private String tc;              // 化验同义词套餐名称
+    private String itemName;        // 化验标准词明细名称
+    @ApiModelProperty(hidden = true)
+    private String mx;              // 化验同义词明细名称
     private String uniqueName;
 }

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

@@ -13,6 +13,7 @@ import com.diagbot.facade.DiagnoseFacade;
 import com.diagbot.facade.LibraryInfoFacade;
 import com.diagbot.vo.DeleteDiagnoseVO;
 import com.diagbot.vo.DiagnosePageVO;
+import com.diagbot.vo.DiagnoseSearchVO;
 import com.diagbot.vo.DiseaseIndexVO;
 import com.diagbot.vo.GetDiagnoseDetailVO;
 import com.diagbot.vo.UpdateDiagnoseVO;
@@ -75,7 +76,7 @@ public class DiagnoseController {
     }
 
 
-    @ApiOperation(value = "诊断依据-校验数据[by:zhoutg]")
+    @ApiOperation(value = "诊断依据-校验并保存数据[by:zhoutg]")
     @PostMapping("/verifyData")
     @SysLogger("verifyData")
     @Transactional
@@ -85,6 +86,25 @@ public class DiagnoseController {
     }
 
 
+    @ApiOperation(value = "诊断依据-暂存数据[by:zhoutg]")
+    @PostMapping("/tempSaveOrUpate")
+    @SysLogger("tempSaveOrUpate")
+    @Transactional
+    public RespDTO<Boolean> tempSaveOrUpate(@RequestBody DiagnoseWrapper diagnoseWrapper) {
+        diagnoseFacade.tempSaveOrUpdateFac(diagnoseWrapper);
+        return RespDTO.onSuc(true);
+    }
+
+
+    @ApiOperation(value = "诊断依据-标准词和关联词搜索[by:zhoutg]")
+    @PostMapping("/search")
+    @SysLogger("search")
+    public RespDTO<List<String>> search(@Valid @RequestBody DiagnoseSearchVO diagnoseSearchVO) {
+        List<String> data = diagnoseFacade.searchFac(diagnoseSearchVO);
+        return RespDTO.onSuc(data);
+    }
+
+
     @ApiOperation(value = "诊断依据-校验所有数据[by:zhoutg]")
     @PostMapping("/verifyAllData")
     @SysLogger("verifyAllData")

+ 8 - 4
knowledgeman-service/src/main/resources/mapper/LisMappingMapper.xml

@@ -128,25 +128,29 @@
 
      <select id="getUniqueName" resultType="com.diagbot.vo.LisMappingSearch">
         select * from (
-            SELECT b1.lib_name meal_name, IFNULL(b2.lib_name,'') item_name, b3.lib_name unique_name
+            SELECT b1.lib_name meal_name, lib1.name tc, IFNULL(b2.lib_name,'') item_name, lib2.name mx, b3.lib_name unique_name
             FROM `kl_lis_mapping` a
             LEFT JOIN kl_concept b1 on a.meal_id = b1.id and b1.is_deleted = 'N'
+            LEFT JOIN kl_library_info lib1 on b1.id = lib1.concept_id and lib1.is_deleted = 'N'
             LEFT JOIN kl_concept b2 on a.item_id = b2.id and b2.is_deleted = 'N'
+            LEFT JOIN kl_library_info lib2 on b2.id = lib2.concept_id and lib2.is_deleted = 'N'
             LEFT JOIN kl_concept b3 on a.unique_id = b3.id and b3.is_deleted = 'N'
             where a.is_deleted = 'N') t
         where
         <foreach item="item" collection="list" open="(" separator="or" close=")" >
-            t.meal_name = #{item.mealName} and t.item_name = #{item.itemName}
+            t.tc = #{item.mealName} and t.mx = #{item.itemName}
         </foreach>
     </select>
 
 
     <select id="loadLisMapping" resultType="java.lang.String">
-        select concat(meal_name, '__',item_name, '__', unique_name) from (
-        SELECT b1.lib_name meal_name, IFNULL(b2.lib_name,'') item_name, b3.lib_name unique_name
+        select concat(tc, '__',mx, '__', unique_name) from (
+        SELECT b1.lib_name meal_name, lib1.name tc, IFNULL(b2.lib_name,'') item_name, lib2.name mx, b3.lib_name unique_name
         FROM `kl_lis_mapping` a
         LEFT JOIN kl_concept b1 on a.meal_id = b1.id and b1.is_deleted = 'N'
+        LEFT JOIN kl_library_info lib1 on lib1.concept_id = b1.id and lib1.is_deleted = 'N'
         LEFT JOIN kl_concept b2 on a.item_id = b2.id and b2.is_deleted = 'N'
+        LEFT JOIN kl_library_info lib2 on lib2.concept_id = b2.id and lib2.is_deleted = 'N'
         LEFT JOIN kl_concept b3 on a.unique_id = b3.id and b3.is_deleted = 'N'
         where a.is_deleted = 'N') t
     </select>