Browse Source

公表项检索

zhoutg 5 năm trước cách đây
mục cha
commit
83e911f273

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

@@ -85,6 +85,16 @@ public class DiagnoseDetail implements Serializable {
      */
     private String relation;
 
+    /**
+     * 公表名称
+     */
+    private String uniqueName;
+
+    /**
+     * 中间结果(例如:升高|阳性,不需要校验)
+     */
+    private String midResult;
+
     /**
      * 结果
      */
@@ -115,12 +125,16 @@ public class DiagnoseDetail implements Serializable {
      */
     private String verifyRelation;
 
+    /**
+     * 校验公表错误提示
+     */
+    private String verifyUnique;
+
     /**
      * 校验结果(0:正确,1:错误)
      */
     private String verifyResult;
 
-
     /**
      * 校验公式(0:正确,1:错误)
      */

+ 10 - 0
knowledgeman-service/src/main/java/com/diagbot/entity/DiagnoseDetailSave.java

@@ -39,6 +39,16 @@ public class DiagnoseDetailSave implements Serializable {
      */
     private String relation;
 
+    /**
+     * 公表名称
+     */
+    private String uniqueName;
+
+    /**
+     * 中间结果(例如:升高|阳性,不需要校验)
+     */
+    private String midResult;
+
     /**
      * 结果
      */

+ 28 - 6
knowledgeman-service/src/main/java/com/diagbot/facade/DiagnoseFacade.java

@@ -79,6 +79,8 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
     LibraryInfoFacade libraryInfoFacade;
     @Autowired
     NeoServiceClient neoServiceClient;
+    @Autowired
+    LisMappingFacade lisMappingFacade;
 
     /**
      * 诊断依据分页
@@ -269,7 +271,7 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
         // 加载词库数据
 //        List<LibraryForDiagnoseDTO> libraryForDiagnoseDTOS = libraryInfoFacade.getLibraryForDiagnose();
 //        Set<String> set = libraryForDiagnoseDTOS.stream().map(row -> row.getName()+ "_"+row.getTypeId()).collect(Collectors.toSet());
-        Set<String> libSet = libraryInfoFacade.getLibraryForDiagnose2();
+        Set<String> libSet = libraryInfoFacade.getLibraryForDiagnose2(); // 加载词库数据
         // 明细数据
         List<DiagnoseDetail> diagnoseDetailList = new ArrayList<>();
         List<DiagnoseDetail> disFeature = new ArrayList<>(); // 诊断特征
@@ -278,7 +280,7 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
         // 问题词数据
         List<DiagnoseQuestion> diagnoseQuestionList = new ArrayList<>();
 
-        // 处理诊断特征业务(校验编码|标准词|关联词|结果)
+        // 处理诊断特征业务(校验编码|标准词|关联词|结果),单点校验不需要校验公表,因为同一按钮已校验
         doDisFuture(diagnoseWrapper, param, libSet, disFeature, diagnoseQuestionList);
         // 处理诊断公式业务(校验公式)
         doDisFormula(diagnoseWrapper, param, disformula, diagnoseQuestionList);
@@ -342,7 +344,8 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
             // 加载词库数据
 //            List<LibraryForDiagnoseDTO> libraryForDiagnoseDTOS = libraryInfoFacade.getLibraryForDiagnose();
 //            Set<String> set = libraryForDiagnoseDTOS.stream().map(row -> row.getName()+ "_"+row.getTypeId()).collect(Collectors.toSet());
-            Set<String> libSet = libraryInfoFacade.getLibraryForDiagnose2();
+            Set<String> libSet = libraryInfoFacade.getLibraryForDiagnose2(); // 加载词库
+            Set<String> lisMappingSet = lisMappingFacade.loadLisMappingFac(); // 加载公表项
             Long time3 = System.currentTimeMillis();
             res.append("加载词库:" + (time3-time2)/1000.0).append("秒,");
             Boolean flag = true;
@@ -387,7 +390,7 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
                                 if (!flag) {
                                     bean.setVerifyCode(bean.getCode());
                                     diagnoseName.add(bean.getDisName());
-                                    // 不需要添加问题词
+                                    // TODO 不需要添加问题词
 //                                    DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(bean.getDiagnoseId(), bean.getDisName(), bean.getType(),
 //                                            bean.getCode(), DiagnoseFieldEnum.code.getKey(), param, ++j);
 //                                    diagnoseQuestionList.add(diagnoseQuestion);
@@ -449,6 +452,25 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
                                 }
                             }
 
+                            // 校验公表
+                            if (StringUtil.isNotEmpty(bean.getUniqueName())) {
+                                String oldVerifyUnique = bean.getVerifyUnique();
+                                if (!lisMappingSet.contains(bean.getStandard() + "__" + bean.getRelation() + "__" + bean.getUniqueName())) {
+                                    bean.setVerifyUnique("无公表项");
+//                                    DiagnoseQuestion diagnoseQuestion = createDiagnoseQuestion(bean.getDiagnoseId(), bean.getDisName(), bean.getType(),
+//                                            bean.getStandard(), DiagnoseFieldEnum.standard.getKey(), param, ++j);
+//                                    if (addDiagnoseQuestion(diagnosetQuestionSet, diagnoseQuestion)) {
+//                                        diagnoseQuestionList.add(diagnoseQuestion);
+//                                    }
+                                    diagnoseName.add(bean.getDisName());
+                                } else {
+                                    bean.setVerifyUnique(""); // 将原值清空
+                                }
+                                if (!oldVerifyUnique.equals(bean.getVerifyUnique())) {
+                                    updateFlag = true;
+                                }
+                            }
+
                             // 校验结果
                             if (StringUtil.isNotEmpty(bean.getResult())) {
                                 String oldVerifyResult = bean.getVerifyResult();
@@ -622,8 +644,8 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
             if (StringUtil.isNotEmpty(bean.getRelation())) {
                 String[] arr = bean.getRelation().split("、");
                 StringBuffer sb = new StringBuffer();
+                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("、");
@@ -646,8 +668,8 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
             if (StringUtil.isNotEmpty(bean.getResult())) {
                 String[] arr = bean.getResult().split("、");
                 StringBuffer sb = new StringBuffer();
+                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("、");

+ 30 - 0
knowledgeman-service/src/main/java/com/diagbot/facade/LisMappingFacade.java

@@ -25,6 +25,7 @@ import com.diagbot.vo.IdListVO;
 import com.diagbot.vo.IdVO;
 import com.diagbot.vo.KLQuestionVO;
 import com.diagbot.vo.LisMappingPageVO;
+import com.diagbot.vo.LisMappingSearch;
 import com.diagbot.vo.LisMappingVO;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -34,6 +35,7 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -260,6 +262,34 @@ public class LisMappingFacade extends LisMappingServiceImpl {
         return uniqueName;
     }
 
+
+    /**
+     * 根据套餐和明细项获取化验公表
+     *
+     * @param lisMappingSearchList
+     * @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())));
+            for(LisMappingSearch mappingListVO : lisMappingSearchList) {
+                mappingListVO.setUniqueName(map.get(mappingListVO.getMealName() + "__" + mappingListVO.getItemName()));
+            }
+        }
+        return lisMappingSearchList;
+    }
+
+
+    /**
+     * 加载全部公表项数据
+     *
+     * @return 返回公表项内容,格式:套餐__明细__公表项
+     */
+    public Set<String> loadLisMappingFac() {
+        return this.loadLisMapping();
+    }
+
     /**
      * 获取化验套餐
      *

+ 21 - 0
knowledgeman-service/src/main/java/com/diagbot/mapper/LisMappingMapper.java

@@ -6,11 +6,15 @@ import com.diagbot.dto.LisMappingPageDTO;
 import com.diagbot.entity.LisMapping;
 import com.diagbot.entity.wrapper.LisMappingWrapper;
 import com.diagbot.vo.LisMappingPageVO;
+import com.diagbot.vo.LisMappingSearch;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
 
+import java.util.List;
+import java.util.Set;
+
 /**
  * <p>
  * 化验项目公表映射 Mapper 接口
@@ -28,6 +32,23 @@ public interface LisMappingMapper extends BaseMapper<LisMapping> {
      */
     IPage<LisMappingPageDTO> lisMappingPage(@Param("lisMappingPageVO") LisMappingPageVO lisMappingPageVO);
 
+
+    /**
+     * 根据套餐和明细项获取化验公表
+     *
+     * @param lisMappingSearchList
+     * @return
+     */
+    public List<LisMappingSearch> getUniqueName(List<LisMappingSearch> lisMappingSearchList);
+
+
+    /**
+     * 加载全部公表项数据
+     *
+     * @return 返回公表项内容,格式:套餐__明细__公表项
+     */
+    public Set<String> loadLisMapping();
+
     /**
      * 获取化验公表映射
      *

+ 21 - 0
knowledgeman-service/src/main/java/com/diagbot/service/LisMappingService.java

@@ -6,11 +6,15 @@ import com.diagbot.dto.LisMappingPageDTO;
 import com.diagbot.entity.LisMapping;
 import com.diagbot.entity.wrapper.LisMappingWrapper;
 import com.diagbot.vo.LisMappingPageVO;
+import com.diagbot.vo.LisMappingSearch;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
 
+import java.util.List;
+import java.util.Set;
+
 /**
  * <p>
  * 化验项目公表映射 服务类
@@ -28,6 +32,23 @@ public interface LisMappingService extends IService<LisMapping> {
      */
     IPage<LisMappingPageDTO> lisMappingPage(@Param("lisMappingPageVO") LisMappingPageVO lisMappingPageVO);
 
+    /**
+     * 根据套餐和明细项获取化验公表
+     *
+     * @param lisMappingSearchList
+     * @return
+     */
+    public List<LisMappingSearch> getUniqueName(List<LisMappingSearch> lisMappingSearchList);
+
+
+    /**
+     * 加载全部公表项数据
+     *
+     * @return 返回公表项内容,格式:套餐__明细__公表项
+     */
+    public Set<String> loadLisMapping();
+}
+
     /**
      * 获取化验公表映射
      *

+ 23 - 0
knowledgeman-service/src/main/java/com/diagbot/service/impl/LisMappingServiceImpl.java

@@ -8,9 +8,13 @@ import com.diagbot.entity.wrapper.LisMappingWrapper;
 import com.diagbot.mapper.LisMappingMapper;
 import com.diagbot.service.LisMappingService;
 import com.diagbot.vo.LisMappingPageVO;
+import com.diagbot.vo.LisMappingSearch;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.Set;
+
 import java.util.List;
 import java.util.Map;
 
@@ -43,4 +47,23 @@ public class LisMappingServiceImpl extends ServiceImpl<LisMappingMapper, LisMapp
     public List<LisMappingWrapper> getLisMappingByName(Map map) {
         return this.baseMapper.getLisMappingByName(map);
     }
+
+    /**
+     * 根据套餐和明细项获取化验公表
+     *
+     * @param lisMappingSearchList
+     * @return
+     */
+    public List<LisMappingSearch> getUniqueName(List<LisMappingSearch> lisMappingSearchList) {
+        return this.baseMapper.getUniqueName(lisMappingSearchList);
+    }
+
+    /**
+     * 加载全部公表项数据
+     *
+     * @return 返回公表项内容,格式:套餐__明细__公表项
+     */
+    public Set<String> loadLisMapping() {
+        return this.baseMapper.loadLisMapping();
+    }
 }

+ 20 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/LisMappingSearch.java

@@ -0,0 +1,20 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @description: 化验公表项检索
+ * @author: zhoutg
+ * @date: 2019/9/24 14:27
+ */
+@Getter
+@Setter
+public class LisMappingSearch {
+    private String index;
+    private String mealName;
+    private String itemName;
+    private String uniqueName;
+}

+ 18 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/LisMappingSearchVO.java

@@ -0,0 +1,18 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @description: 化验公表项检索
+ * @author: zhoutg
+ * @date: 2019/9/24 14:27
+ */
+@Getter
+@Setter
+public class LisMappingSearchVO {
+    private List<LisMappingSearch> lisMappingSearchList = new ArrayList<>();
+}

+ 14 - 0
knowledgeman-service/src/main/java/com/diagbot/web/LisMappingController.java

@@ -7,6 +7,7 @@ import com.diagbot.facade.LisMappingFacade;
 import com.diagbot.vo.GetUniqueNameVO;
 import com.diagbot.vo.IdVO;
 import com.diagbot.vo.LisMappingPageVO;
+import com.diagbot.vo.LisMappingSearchVO;
 import com.diagbot.vo.LisMappingVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -18,6 +19,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * <p>
@@ -93,4 +95,16 @@ public class LisMappingController {
         return RespDTO.onSuc(lisMappingFacade.getLisUniqueName(getUniqueNameVO));
     }
 
+
+    @ApiOperation(value = "查找化验公表名[by:zhoutg]",
+            notes = "index:前端索引<br>" +
+                    "mealName:大项名称<br>" +
+                    "itemName:小项名称<br>" +
+                    "uniqueName:返回结果<br>")
+    @PostMapping("/getUniqueNameWithList")
+    @SysLogger("getUniqueNameWithList")
+    public RespDTO<String> getUniqueNameWithList(@RequestBody LisMappingSearchVO lisMappingSearchVO) {
+        return RespDTO.onSuc(lisMappingFacade.getLisUniqueNameWithList(lisMappingSearchVO.getLisMappingSearchList()));
+    }
+
 }

+ 26 - 0
knowledgeman-service/src/main/resources/mapper/LisMappingMapper.xml

@@ -125,4 +125,30 @@
         </if>
     </select>
 
+
+     <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
+            FROM `kl_lis_mapping` a
+            LEFT JOIN kl_concept b1 on a.meal_id = b1.id and b1.is_deleted = 'N'
+            LEFT JOIN kl_concept b2 on a.item_id = b2.id and b2.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}
+        </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
+        FROM `kl_lis_mapping` a
+        LEFT JOIN kl_concept b1 on a.meal_id = b1.id and b1.is_deleted = 'N'
+        LEFT JOIN kl_concept b2 on a.item_id = b2.id and b2.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>
+
 </mapper>