Selaa lähdekoodia

术语维护时清理标签缓存

zhaops 5 vuotta sitten
vanhempi
commit
1a4f724cf4
21 muutettua tiedostoa jossa 702 lisäystä ja 269 poistoa
  1. 17 1
      icssman-service/src/main/java/com/diagbot/facade/CacheFacade.java
  2. 21 3
      icssman-service/src/main/java/com/diagbot/facade/QuestionFacade.java
  3. 2 0
      icssman-service/src/main/java/com/diagbot/mapper/QuestionInfoMapper.java
  4. 7 0
      icssman-service/src/main/java/com/diagbot/service/QuestionInfoService.java
  5. 5 0
      icssman-service/src/main/java/com/diagbot/service/impl/QuestionInfoServiceImpl.java
  6. 22 0
      icssman-service/src/main/java/com/diagbot/vo/KLQuestionVO.java
  7. 3 2
      icssman-service/src/main/java/com/diagbot/web/CacheController.java
  8. 3 2
      icssman-service/src/main/java/com/diagbot/web/QuestionInfoController.java
  9. 40 0
      icssman-service/src/main/resources/mapper/QuestionInfoMapper.xml
  10. 4 4
      knowledgeman-service/src/main/java/com/diagbot/client/ICSSManServiceClient.java
  11. 5 5
      knowledgeman-service/src/main/java/com/diagbot/client/hystrix/ICSSManServiceHystrix.java
  12. 2 5
      knowledgeman-service/src/main/java/com/diagbot/dto/LisMappingPageDTO.java
  13. 18 0
      knowledgeman-service/src/main/java/com/diagbot/entity/wrapper/LisMappingWrapper.java
  14. 347 235
      knowledgeman-service/src/main/java/com/diagbot/facade/ConceptFacade.java
  15. 66 8
      knowledgeman-service/src/main/java/com/diagbot/facade/LisMappingFacade.java
  16. 13 1
      knowledgeman-service/src/main/java/com/diagbot/mapper/LisMappingMapper.java
  17. 14 2
      knowledgeman-service/src/main/java/com/diagbot/service/LisMappingService.java
  18. 15 1
      knowledgeman-service/src/main/java/com/diagbot/service/impl/LisMappingServiceImpl.java
  19. 17 0
      knowledgeman-service/src/main/java/com/diagbot/vo/IdListVO.java
  20. 22 0
      knowledgeman-service/src/main/java/com/diagbot/vo/KLQuestionVO.java
  21. 59 0
      knowledgeman-service/src/main/resources/mapper/LisMappingMapper.xml

+ 17 - 1
icssman-service/src/main/java/com/diagbot/facade/CacheFacade.java

@@ -1,9 +1,12 @@
 package com.diagbot.facade;
 
+import com.diagbot.util.ListUtil;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.Caching;
 import org.springframework.stereotype.Component;
 
+import java.util.List;
+
 /**
  * @Description: 缓存实例
  * @author: gaodm
@@ -16,4 +19,17 @@ public class CacheFacade {
             @CacheEvict(value = "tagCache", key = "'tag:'+#p0+'_2'") })
     public void clearCache(Long id) {
     }
-}
+
+    /**
+     * 批量删除缓存
+     *
+     * @param ids
+     */
+    public void clearAllCacheByIds(List<Long> ids) {
+        if (ListUtil.isNotEmpty(ids)) {
+            for (Long id : ids) {
+                this.clearCache(id);
+            }
+        }
+    }
+}

+ 21 - 3
icssman-service/src/main/java/com/diagbot/facade/QuestionFacade.java

@@ -43,6 +43,7 @@ import com.diagbot.vo.GetQuestionInfoVO;
 import com.diagbot.vo.GetQuestiongAndModuleRelationsVO;
 import com.diagbot.vo.IndexIcssVO;
 import com.diagbot.vo.IndexLexiconVO;
+import com.diagbot.vo.KLQuestionVO;
 import com.diagbot.vo.QuestionIdsVO;
 import com.diagbot.vo.QuestionIndexSubVO;
 import com.diagbot.vo.QuestionIndexVO;
@@ -97,7 +98,6 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
     CacheFacade cacheFacade;
 
 
-
     /**
      * 标签保存
      *
@@ -457,7 +457,7 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
                 }
                 // 化验明细需要特殊处理,类型转换为明细
                 if (ListUtil.isNotEmpty(list)) {
-                    if (list.contains(bean.getType()) || (isLisDetail && list.contains(QuestionTypeEnum.LisDetail.getKey())) ) {
+                    if (list.contains(bean.getType()) || (isLisDetail && list.contains(QuestionTypeEnum.LisDetail.getKey()))) {
                         bean.setExist(true);
                     }
                 }
@@ -521,7 +521,7 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
             GetQuestiongAndModuleRelationsVO getQuestiongAndModuleRelationsVO = new GetQuestiongAndModuleRelationsVO();
             getQuestiongAndModuleRelationsVO.setQuestionId(Long.parseLong(id));
             GetQuestiongAndModuleRelationsDTO getQuestiongAndModuleRelationsDTO = moduleInfoFacade.getQuestiongAndModuleRelations(getQuestiongAndModuleRelationsVO);
-            if(null != getQuestiongAndModuleRelationsDTO && StringUtil.isNotBlank(getQuestiongAndModuleRelationsDTO.getRelationInfos().toString())){
+            if (null != getQuestiongAndModuleRelationsDTO && StringUtil.isNotBlank(getQuestiongAndModuleRelationsDTO.getRelationInfos().toString())) {
                 throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
                         getQuestiongAndModuleRelationsDTO.getRelationInfos().toString());
             }
@@ -569,6 +569,24 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
         return res;
     }
 
+    /**
+     * 知识库检索标签
+     *
+     * @param klQuestionVO
+     * @return
+     */
+    public List<QuestionInfo> indexForKL(KLQuestionVO klQuestionVO) {
+        Map<String, Object> paramMap = new HashMap<>();
+        paramMap.put("age", klQuestionVO.getAge());
+        paramMap.put("sexType", klQuestionVO.getSexType());
+        paramMap.put("tagNames", klQuestionVO.getTagNames());
+        paramMap.put("type", klQuestionVO.getType());
+        paramMap.put("tagType", klQuestionVO.getTagType());
+        paramMap.put("names", klQuestionVO.getNames());
+        List<QuestionInfo> res = this.indexForKL(paramMap);
+        return res;
+    }
+
     /**
      * 根据主标签id 检索子标签
      *

+ 2 - 0
icssman-service/src/main/java/com/diagbot/mapper/QuestionInfoMapper.java

@@ -35,6 +35,8 @@ public interface QuestionInfoMapper extends BaseMapper<QuestionInfo> {
 
     public List<QuestionInfo> index(Map map);
 
+    public List<QuestionInfo> indexForKL(Map map);
+
     /**
      * 根据名称获取标签信息
      *

+ 7 - 0
icssman-service/src/main/java/com/diagbot/service/QuestionInfoService.java

@@ -66,6 +66,13 @@ public interface QuestionInfoService extends IService<QuestionInfo> {
      */
     public List<QuestionInfo> index(Map map);
 
+    /**
+     * 知识库检索
+     *
+     * @param map
+     * @return
+     */
+    List<QuestionInfo> indexForKL(Map map);
 
     /**
      * 获取标签列表

+ 5 - 0
icssman-service/src/main/java/com/diagbot/service/impl/QuestionInfoServiceImpl.java

@@ -58,6 +58,11 @@ public class QuestionInfoServiceImpl extends ServiceImpl<QuestionInfoMapper, Que
         return baseMapper.index(map);
     }
 
+    @Override
+    public List<QuestionInfo> indexForKL(Map map) {
+        return baseMapper.indexForKL(map);
+    }
+
     @Override
     public List<GetQuestionInfoDTO> getQuestionUsualsByDept(GetQuestionUsualByDeptVO getQuestionUsualByDeptVO) {
         return baseMapper.getQuestionUsualsByDept(getQuestionUsualByDeptVO);

+ 22 - 0
icssman-service/src/main/java/com/diagbot/vo/KLQuestionVO.java

@@ -0,0 +1,22 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/9/24 11:09
+ */
+@Getter
+@Setter
+public class KLQuestionVO {
+    private List<String> tagNames;
+    private List<String> names;
+    private Integer sexType;
+    private Integer age;
+    private Integer type;
+    private List<Integer> tagType;
+}

+ 3 - 2
icssman-service/src/main/java/com/diagbot/web/CacheController.java

@@ -3,6 +3,7 @@ package com.diagbot.web;
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.CacheFacade;
+import com.diagbot.vo.IdListVO;
 import com.diagbot.vo.IdVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -33,8 +34,8 @@ public class CacheController {
     @PostMapping("/clearCache")
     @SysLogger("clearCache")
     @Transactional
-    public RespDTO<Boolean> clearCache(@RequestBody IdVO idVO) {
-        cacheFacade.clearCache(idVO.getId());
+    public RespDTO<Boolean> clearCache(@RequestBody IdListVO idListVO) {
+        cacheFacade.clearAllCacheByIds(idListVO.getIdList());
         return RespDTO.onSuc(true);
     }
 }

+ 3 - 2
icssman-service/src/main/java/com/diagbot/web/QuestionInfoController.java

@@ -11,6 +11,7 @@ import com.diagbot.entity.QuestionInfo;
 import com.diagbot.facade.QuestionFacade;
 import com.diagbot.vo.DeleteQuestionVO;
 import com.diagbot.vo.IndexIcssVO;
+import com.diagbot.vo.KLQuestionVO;
 import com.diagbot.vo.QuestionIdsVO;
 import com.diagbot.vo.QuestionIndexSubVO;
 import com.diagbot.vo.QuestionIndexVO;
@@ -84,8 +85,8 @@ public class QuestionInfoController {
     @PostMapping("/indexForkl")
     @SysLogger("indexForkl")
     @ApiIgnore
-    public RespDTO<List<QuestionInfo>> indexForkl(@RequestBody QuestionIndexVO questionIndexVO) {
-        List<QuestionInfo> data = questionFacade.indexFac(questionIndexVO);
+    public RespDTO<List<QuestionInfo>> indexForkl(@RequestBody KLQuestionVO klQuestionVO) {
+        List<QuestionInfo> data = questionFacade.indexForKL(klQuestionVO);
         return RespDTO.onSuc(data);
     }
 

+ 40 - 0
icssman-service/src/main/resources/mapper/QuestionInfoMapper.xml

@@ -106,6 +106,46 @@
         order by gmt_modified desc
     </select>
 
+    <select id="indexForKL" parameterType="java.util.Map" resultType="com.diagbot.entity.QuestionInfo">
+        select * from `icss_question_info`
+        where is_deleted = 'N'
+        <if test="names != null and names.size() > 0">
+            and name in
+            <foreach  collection="names" item="name" open="("  separator=","  close=")">
+                #{name}
+            </foreach>
+        </if>
+        <if test="tagNames != null and tagNames.size() > 0">
+            and tag_name in
+            <foreach  collection="tagNames" item="tagName" open="("  separator=","  close=")">
+                #{tagName}
+            </foreach>
+        </if>
+        <if test="sexType != null and sexType != 3 and sexType != ''">
+            and sex_type in (3, #{sexType})
+        </if>
+        <if test="age != null and age != ''">
+            <![CDATA[ and age_begin <= #{age} ]]>
+            <![CDATA[ and age_end >= #{age} ]]>
+        </if>
+        <if test="type != null and type != ''">
+            and type = #{type}
+        </if>
+        <if test="tagType != null and tagType.size() > 0">
+            and tag_type in
+            <foreach  collection="tagType" item="tagType" open="("  separator=","  close=")">
+                #{tagType}
+            </foreach>
+        </if>
+        <if test=" ids != null and ids.size() > 0 ">
+            and id  in
+            <foreach  collection="ids" item="id" open="("  separator=","  close=")">
+                #{id}
+            </foreach>
+        </if>
+        order by gmt_modified desc
+    </select>
+
     <select id="getQuestiongInfoByName" resultType="com.diagbot.dto.GetQuestionInfoDTO">
         SELECT
         a.*

+ 4 - 4
knowledgeman-service/src/main/java/com/diagbot/client/ICSSManServiceClient.java

@@ -3,8 +3,8 @@ package com.diagbot.client;
 import com.diagbot.client.hystrix.ICSSManServiceHystrix;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.QuestionInfo;
-import com.diagbot.vo.IdVO;
-import com.diagbot.vo.QuestionIndexVO;
+import com.diagbot.vo.IdListVO;
+import com.diagbot.vo.KLQuestionVO;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -19,8 +19,8 @@ import java.util.List;
 @FeignClient(value = "icssman-service", fallback = ICSSManServiceHystrix.class)
 public interface ICSSManServiceClient {
     @PostMapping("/questionInfo/indexForkl")
-    RespDTO<List<QuestionInfo>> index(@RequestBody QuestionIndexVO questionIndexVO);
+    RespDTO<List<QuestionInfo>> indexForkl(@RequestBody KLQuestionVO klQuestionVO);
 
     @PostMapping("/cache/clearCache")
-    RespDTO<Boolean> clearCache(@RequestBody IdVO idVO);
+    RespDTO<Boolean> clearCache(@RequestBody IdListVO idListVO);
 }

+ 5 - 5
knowledgeman-service/src/main/java/com/diagbot/client/hystrix/ICSSManServiceHystrix.java

@@ -3,8 +3,8 @@ package com.diagbot.client.hystrix;
 import com.diagbot.client.ICSSManServiceClient;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.QuestionInfo;
-import com.diagbot.vo.IdVO;
-import com.diagbot.vo.QuestionIndexVO;
+import com.diagbot.vo.IdListVO;
+import com.diagbot.vo.KLQuestionVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -20,13 +20,13 @@ import java.util.List;
 @Slf4j
 public class ICSSManServiceHystrix implements ICSSManServiceClient {
     @Override
-    public RespDTO<List<QuestionInfo>> index(@RequestBody QuestionIndexVO questionIndexVO) {
-        log.error("【hystrix】调用{}异常", "index");
+    public RespDTO<List<QuestionInfo>> indexForkl(@RequestBody KLQuestionVO klQuestionVO) {
+        log.error("【hystrix】调用{}异常", "indexForkl");
         return null;
     }
 
     @Override
-    public RespDTO<Boolean> clearCache(@RequestBody IdVO idVO) {
+    public RespDTO<Boolean> clearCache(@RequestBody IdListVO idListVO) {
         log.error("【hystrix】调用{}异常", "clearCache");
         return null;
     }

+ 2 - 5
knowledgeman-service/src/main/java/com/diagbot/dto/LisMappingPageDTO.java

@@ -1,6 +1,6 @@
 package com.diagbot.dto;
 
-import com.diagbot.entity.LisMapping;
+import com.diagbot.entity.wrapper.LisMappingWrapper;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -13,10 +13,7 @@ import java.util.Date;
  */
 @Getter
 @Setter
-public class LisMappingPageDTO extends LisMapping {
-    private String mealName;
-    private String itemName;
-    private String uniqueName;
+public class LisMappingPageDTO extends LisMappingWrapper {
     private String operator;
     private String operatorName;
     private Date gmtOperate;

+ 18 - 0
knowledgeman-service/src/main/java/com/diagbot/entity/wrapper/LisMappingWrapper.java

@@ -0,0 +1,18 @@
+package com.diagbot.entity.wrapper;
+
+import com.diagbot.entity.LisMapping;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/9/24 13:24
+ */
+@Getter
+@Setter
+public class LisMappingWrapper extends LisMapping {
+    private String mealName;
+    private String itemName;
+    private String uniqueName;
+}

+ 347 - 235
knowledgeman-service/src/main/java/com/diagbot/facade/ConceptFacade.java

@@ -1,30 +1,9 @@
 package com.diagbot.facade;
 
-import java.io.InputStream;
-import java.text.DecimalFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-import org.apache.commons.lang.time.DateFormatUtils;
-import org.apache.poi.hssf.usermodel.HSSFDateUtil;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.usermodel.Row;
-import org.apache.poi.ss.usermodel.Sheet;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.stereotype.Component;
-import org.springframework.web.multipart.MultipartFile;
-
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.diagbot.client.ICSSManServiceClient;
 import com.diagbot.client.UserServiceClient;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptRes;
@@ -39,6 +18,7 @@ import com.diagbot.entity.Concept;
 import com.diagbot.entity.ConceptCommon;
 import com.diagbot.entity.Lexicon;
 import com.diagbot.entity.LibraryInfo;
+import com.diagbot.entity.QuestionInfo;
 import com.diagbot.entity.Relation;
 import com.diagbot.entity.wrapper.ConceptWrapper;
 import com.diagbot.enums.IsDeleteEnum;
@@ -72,10 +52,33 @@ import com.diagbot.vo.GetAllInformationVO;
 import com.diagbot.vo.GetAllLisConceptVO;
 import com.diagbot.vo.GetConceptInfoDetailVO;
 import com.diagbot.vo.GetConceptPacInfosVO;
+import com.diagbot.vo.IdListVO;
 import com.diagbot.vo.IndexLexiconVO;
 import com.diagbot.vo.IndexVO;
+import com.diagbot.vo.KLQuestionVO;
 import com.diagbot.vo.RemoveConceptInfoVO;
 import com.google.common.collect.Lists;
+import org.apache.commons.lang.time.DateFormatUtils;
+import org.apache.poi.hssf.usermodel.HSSFDateUtil;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.InputStream;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 术语查询业务层
@@ -104,6 +107,10 @@ public class ConceptFacade extends ConceptServiceImpl {
     private LexiconFacade lexiconFacade;
     @Autowired
     private ConceptCommonFacade conceptCommonFacade;
+    @Autowired
+    private LisMappingFacade lisMappingFacade;
+    @Autowired
+    private ICSSManServiceClient icssManServiceClient;
 
     /**
      * 获取所有化验公表项
@@ -142,11 +149,11 @@ public class ConceptFacade extends ConceptServiceImpl {
      * @return
      */
     public List<GetAllConceptDTO> getAllConcept(GetAllConceptVO getAllConceptVO) {
-    	List<GetAllConceptDTO> getAllConceptDTOList = Lists.newArrayList();
-    	if(StringUtil.isBlank(getAllConceptVO.getName())){
-    		return getAllConceptDTOList;
-    	}
-    	
+        List<GetAllConceptDTO> getAllConceptDTOList = Lists.newArrayList();
+        if (StringUtil.isBlank(getAllConceptVO.getName())) {
+            return getAllConceptDTOList;
+        }
+
         QueryWrapper<LibraryInfo> libraryInfoQe = new QueryWrapper<LibraryInfo>();
         libraryInfoQe.eq("is_deleted", IsDeleteEnum.N.getKey());
         libraryInfoQe.eq(getAllConceptVO.getIsConcept() != null, "is_concept", getAllConceptVO.getIsConcept());
@@ -161,7 +168,7 @@ public class ConceptFacade extends ConceptServiceImpl {
             Map<Long, Concept> conceptMap = list(conceptQe).stream().collect(Collectors.toMap(Concept::getId, i -> i));
             libraryInfoList.forEach(i -> {
                 if (conceptMap.get(i.getConceptId()) == null || conceptMap.get(i.getConceptId()).getLibId().intValue() != i.getId().intValue()
-                		||(getAllConceptVO.getExcludedConceptIds() != null && getAllConceptVO.getExcludedConceptIds().contains(i.getConceptId()))) {
+                        || (getAllConceptVO.getExcludedConceptIds() != null && getAllConceptVO.getExcludedConceptIds().contains(i.getConceptId()))) {
                     i.setIsDeleted(IsDeleteEnum.Y.getKey());
                 }
             });
@@ -200,14 +207,14 @@ public class ConceptFacade extends ConceptServiceImpl {
      */
     public List<GetAllForRelationDTO> getAllForRelation(GetAllForRelationVO getAllForRelationVO) {
         List<GetAllForRelationDTO> retList = new ArrayList<>();
-        if(StringUtil.isBlank(getAllForRelationVO.getName())&&getAllForRelationVO.getTypeId()==null){
-        	return retList;
+        if (StringUtil.isBlank(getAllForRelationVO.getName()) && getAllForRelationVO.getTypeId() == null) {
+            return retList;
         }
 
         QueryWrapper<Concept> conceptQe = new QueryWrapper<>();
         conceptQe.eq("is_deleted", IsDeleteEnum.N.getKey());
-        conceptQe.like(StringUtil.isNotBlank(getAllForRelationVO.getName()),"lib_name", getAllForRelationVO.getName());
-        conceptQe.eq(getAllForRelationVO.getTypeId()!=null,"lib_type", getAllForRelationVO.getTypeId());
+        conceptQe.like(StringUtil.isNotBlank(getAllForRelationVO.getName()), "lib_name", getAllForRelationVO.getName());
+        conceptQe.eq(getAllForRelationVO.getTypeId() != null, "lib_type", getAllForRelationVO.getTypeId());
         List<Concept> conceptList = list(conceptQe);
 
         Map<Long, Long> reCouMap = new HashMap<>();
@@ -220,10 +227,10 @@ public class ConceptFacade extends ConceptServiceImpl {
             QueryWrapper<Relation> relationQe = new QueryWrapper<>();
             relationQe.eq("relation_id", getAllForRelationVO.getRelationId());
             if (getAllForRelationVO.getRelationPosition() == 1) {
-            	relationQe.eq(getAllForRelationVO.getRelationConceptId() != null, "end_id", getAllForRelationVO.getRelationConceptId());
-            	relationQe.and(wrapper->wrapper.in("start_id", conceptIdList).or(getAllForRelationVO.getRelationConceptId() == null).in("end_id", conceptIdList));
+                relationQe.eq(getAllForRelationVO.getRelationConceptId() != null, "end_id", getAllForRelationVO.getRelationConceptId());
+                relationQe.and(wrapper -> wrapper.in("start_id", conceptIdList).or(getAllForRelationVO.getRelationConceptId() == null).in("end_id", conceptIdList));
                 reCouMap = relationFacade.list(relationQe).stream().collect(Collectors.groupingBy(Relation::getStartId, Collectors.counting()));
-            } else if(getAllForRelationVO.getRelationConceptId() != null) {
+            } else if (getAllForRelationVO.getRelationConceptId() != null) {
                 relationQe.in("end_id", conceptIdList);
                 relationQe.eq("start_id", getAllForRelationVO.getRelationConceptId());
                 reCouMap = relationFacade.list(relationQe).stream().collect(Collectors.groupingBy(Relation::getEndId, Collectors.counting()));
@@ -239,7 +246,7 @@ public class ConceptFacade extends ConceptServiceImpl {
             GetAllForRelationDTO getAllForRelationDTO = new GetAllForRelationDTO();
             getAllForRelationDTO.setConceptId(i.getId());
             getAllForRelationDTO.setConceptName(i.getLibName());
-            getAllForRelationDTO.setConceptNameType(i.getLibName()+"("+LexiconTypeEnum.getName(i.getLibType().intValue())+")");
+            getAllForRelationDTO.setConceptNameType(i.getLibName() + "(" + LexiconTypeEnum.getName(i.getLibType().intValue()) + ")");
             retList.add(getAllForRelationDTO);
         }
 
@@ -253,63 +260,63 @@ public class ConceptFacade extends ConceptServiceImpl {
      * @return
      */
     public IPage<GetAllInformationDTO> getAllInformation(GetAllInformationVO getAllInformationVO) {
-    	Page<GetAllInformationDTO> getAllInformationDTOPage = new Page<>();
-    	
-    	Page<Concept> conceptPage = new Page<>(getAllInformationVO.getCurrent(),getAllInformationVO.getSize());
-    	QueryWrapper<Concept> conceptQe = new QueryWrapper<>();
-    	if(StringUtil.isNotBlank(getAllInformationVO.getLibName())){
-    		QueryWrapper<LibraryInfo> libraryInfoQe = new QueryWrapper<>();
-    		libraryInfoQe.eq("is_deleted", IsDeleteEnum.N.getKey());
-    		libraryInfoQe.like("name", getAllInformationVO.getLibName());
-    		libraryInfoQe.eq(StringUtil.isNotBlank(getAllInformationVO.getType()),"type_id", LexiconTypeEnum.getKey(getAllInformationVO.getType()));
-    		List<Long> conceptIdList = libraryinfoFacade.list(libraryInfoQe).stream().map(i->i.getConceptId()).distinct().collect(Collectors.toList());
-    		if(ListUtil.isNotEmpty(conceptIdList)){
-    			conceptQe.in("id", conceptIdList);
-    		}else{
-    			conceptQe.eq("id", -999999999);
-    		}
-    	}
-    	conceptQe.like(StringUtil.isNotBlank(getAllInformationVO.getName()),"lib_name", getAllInformationVO.getName());
-    	conceptQe.eq(StringUtil.isNotBlank(getAllInformationVO.getType()),"lib_type", LexiconTypeEnum.getKey(getAllInformationVO.getType()));
-    	conceptQe.eq(StringUtil.isNotBlank(getAllInformationVO.getIsDeleted()),"is_deleted", getAllInformationVO.getIsDeleted());
-    	conceptQe.orderByDesc("sort_deleted");
-    	conceptQe.orderByDesc("gmt_modified");
-    	conceptQe.orderByDesc("id");
-    	IPage<Concept> iPage = this.page(conceptPage, conceptQe);
-    	BeanUtil.copyProperties(iPage, getAllInformationDTOPage);
-    	
-    	if(ListUtil.isNotEmpty(iPage.getRecords())){
-    		List<GetAllInformationDTO> getAllInformationDTOList = Lists.newArrayList();
-    		
-    		List<Long> conceptIds = iPage.getRecords().stream().map(i->i.getId()).collect(Collectors.toList());
-    		QueryWrapper<LibraryInfo> libraryInfoQe = new QueryWrapper<>();
-    		libraryInfoQe.eq("is_deleted", IsDeleteEnum.N.getKey());
-    		libraryInfoQe.in("concept_id", conceptIds);
-    		Map<Long,List<LibraryInfo>> libraryInfoListMap = libraryinfoFacade.list(libraryInfoQe).stream().collect(Collectors.groupingBy(LibraryInfo::getConceptId));
-    		
-    		List<String> userIds = iPage.getRecords().stream().map(i ->i.getModifier()).distinct().collect(Collectors.toList());
-    		RespDTO<Map<String, String>> respDTO = userServiceClient.getUserInfoByIds(userIds);
-    		RespDTOUtil.respNGDealCover(respDTO, "获取用户信息失败");
-    		iPage.getRecords().forEach(i -> {
-    			GetAllInformationDTO getAllInformationDTO = new GetAllInformationDTO();
-    			getAllInformationDTO.setConceptId(i.getId());
-    			getAllInformationDTO.setLibName(i.getLibName());
-    			getAllInformationDTO.setLibType(LexiconTypeEnum.getName(i.getLibType().intValue()));
-    			getAllInformationDTO.setIsDeleted(i.getIsDeleted());
-    			getAllInformationDTO.setOperName(respDTO.data.get(i.getModifier()));
-    			getAllInformationDTO.setOperTime(i.getGmtModified());
-    			if(libraryInfoListMap.get(i.getId())!=null){
-    				getAllInformationDTO.setOtherNames(libraryInfoListMap.get(i.getId()).stream().sorted((a,b)->b.getIsConcept()-a.getIsConcept()).map(k->k.getName()).collect(Collectors.joining("、")));
-    			}
-    			getAllInformationDTOList.add(getAllInformationDTO);
-    		 });
-    		
-    		getAllInformationDTOPage.setRecords(getAllInformationDTOList);
-    	}
-    	
+        Page<GetAllInformationDTO> getAllInformationDTOPage = new Page<>();
+
+        Page<Concept> conceptPage = new Page<>(getAllInformationVO.getCurrent(), getAllInformationVO.getSize());
+        QueryWrapper<Concept> conceptQe = new QueryWrapper<>();
+        if (StringUtil.isNotBlank(getAllInformationVO.getLibName())) {
+            QueryWrapper<LibraryInfo> libraryInfoQe = new QueryWrapper<>();
+            libraryInfoQe.eq("is_deleted", IsDeleteEnum.N.getKey());
+            libraryInfoQe.like("name", getAllInformationVO.getLibName());
+            libraryInfoQe.eq(StringUtil.isNotBlank(getAllInformationVO.getType()), "type_id", LexiconTypeEnum.getKey(getAllInformationVO.getType()));
+            List<Long> conceptIdList = libraryinfoFacade.list(libraryInfoQe).stream().map(i -> i.getConceptId()).distinct().collect(Collectors.toList());
+            if (ListUtil.isNotEmpty(conceptIdList)) {
+                conceptQe.in("id", conceptIdList);
+            } else {
+                conceptQe.eq("id", -999999999);
+            }
+        }
+        conceptQe.like(StringUtil.isNotBlank(getAllInformationVO.getName()), "lib_name", getAllInformationVO.getName());
+        conceptQe.eq(StringUtil.isNotBlank(getAllInformationVO.getType()), "lib_type", LexiconTypeEnum.getKey(getAllInformationVO.getType()));
+        conceptQe.eq(StringUtil.isNotBlank(getAllInformationVO.getIsDeleted()), "is_deleted", getAllInformationVO.getIsDeleted());
+        conceptQe.orderByDesc("sort_deleted");
+        conceptQe.orderByDesc("gmt_modified");
+        conceptQe.orderByDesc("id");
+        IPage<Concept> iPage = this.page(conceptPage, conceptQe);
+        BeanUtil.copyProperties(iPage, getAllInformationDTOPage);
+
+        if (ListUtil.isNotEmpty(iPage.getRecords())) {
+            List<GetAllInformationDTO> getAllInformationDTOList = Lists.newArrayList();
+
+            List<Long> conceptIds = iPage.getRecords().stream().map(i -> i.getId()).collect(Collectors.toList());
+            QueryWrapper<LibraryInfo> libraryInfoQe = new QueryWrapper<>();
+            libraryInfoQe.eq("is_deleted", IsDeleteEnum.N.getKey());
+            libraryInfoQe.in("concept_id", conceptIds);
+            Map<Long, List<LibraryInfo>> libraryInfoListMap = libraryinfoFacade.list(libraryInfoQe).stream().collect(Collectors.groupingBy(LibraryInfo::getConceptId));
+
+            List<String> userIds = iPage.getRecords().stream().map(i -> i.getModifier()).distinct().collect(Collectors.toList());
+            RespDTO<Map<String, String>> respDTO = userServiceClient.getUserInfoByIds(userIds);
+            RespDTOUtil.respNGDealCover(respDTO, "获取用户信息失败");
+            iPage.getRecords().forEach(i -> {
+                GetAllInformationDTO getAllInformationDTO = new GetAllInformationDTO();
+                getAllInformationDTO.setConceptId(i.getId());
+                getAllInformationDTO.setLibName(i.getLibName());
+                getAllInformationDTO.setLibType(LexiconTypeEnum.getName(i.getLibType().intValue()));
+                getAllInformationDTO.setIsDeleted(i.getIsDeleted());
+                getAllInformationDTO.setOperName(respDTO.data.get(i.getModifier()));
+                getAllInformationDTO.setOperTime(i.getGmtModified());
+                if (libraryInfoListMap.get(i.getId()) != null) {
+                    getAllInformationDTO.setOtherNames(libraryInfoListMap.get(i.getId()).stream().sorted((a, b) -> b.getIsConcept() - a.getIsConcept()).map(k -> k.getName()).collect(Collectors.joining("、")));
+                }
+                getAllInformationDTOList.add(getAllInformationDTO);
+            });
+
+            getAllInformationDTOPage.setRecords(getAllInformationDTOList);
+        }
+
         return getAllInformationDTOPage;
     }
-    
+
     /**
      * 医学术语命名删除或者恢复
      *
@@ -380,11 +387,25 @@ public class ConceptFacade extends ConceptServiceImpl {
             }
         }
 
+        //清理缓存
+        this.cacheClearByConceptId(concept.getId());
+
         concept.setIsDeleted(removeConceptInfoVO.getIsDeleted());
         concept.setModifier(currentUser);
         concept.setGmtModified(now);
         this.updateById(concept);
 
+        //清除缓存
+        List<QuestionInfo> questionInfoList = Lists.newArrayList();
+        if (concept.getLibType().equals(LexiconTypeEnum.LIS_PACKAGE.getKey())) {
+
+        }
+        if (concept.getLibType().equals(LexiconTypeEnum.LIS_TABLES.getKey())) {
+
+        }
+        if (concept.getLibType().equals(LexiconTypeEnum.LIS_DETAILS.getKey())) {
+
+        }
         return true;
     }
 
@@ -445,7 +466,7 @@ public class ConceptFacade extends ConceptServiceImpl {
         for (AddConceptInfoDetailVO i : addConceptInfoVO.getDetailList()) {
             if (i.getName().matches(regEx)) {
                 //throw new CommonException(CommonErrorCode.RPC_ERROR, lineNumStr + "无法输入纯数字或者纯字符,请输入正确数据!");
-            	throw new CommonException(CommonErrorCode.RPC_ERROR, lineNumStr + "无法输入纯数字,请输入正确数据!");
+                throw new CommonException(CommonErrorCode.RPC_ERROR, lineNumStr + "无法输入纯数字,请输入正确数据!");
             }
         }
 
@@ -518,8 +539,8 @@ public class ConceptFacade extends ConceptServiceImpl {
                     } else {
                         throw new CommonException(CommonErrorCode.RPC_ERROR, "该数据已经建立且处于已删除状态,可前往列表中恢复该条数据!");
                     }
-                }else if(addConceptInfoVO.getConceptId().intValue()!=ckConceptId){
-                	throw new CommonException(CommonErrorCode.RPC_ERROR, lineNumStr + "标准术语已被占用!");
+                } else if (addConceptInfoVO.getConceptId().intValue() != ckConceptId) {
+                    throw new CommonException(CommonErrorCode.RPC_ERROR, lineNumStr + "标准术语已被占用!");
                 }
             } else if (addConceptInfoVO.getLineNum() == null && addConceptInfoVO.getConceptId() == null && concept != null
                     || libraryInfoList.stream().filter(i -> i.getConceptId().intValue() == ckConceptId).count() == 1) {
@@ -577,6 +598,9 @@ public class ConceptFacade extends ConceptServiceImpl {
 
         libraryInfoService.saveOrUpdateBatch(saveOrUpdateLibraryInfoList);
 
+        //清理原名称对应标签缓存
+        this.cacheClearByConceptId(conceptId);
+
         concept.setId(conceptId);
         concept.setLibId(libraryInfoMain.getId());
         concept.setLibName(libraryInfoMain.getName());
@@ -594,7 +618,7 @@ public class ConceptFacade extends ConceptServiceImpl {
                 conceptCommon.setGmtCreate(now);
                 conceptCommon.setCreator(currentUser);
             }
-            
+
             BeanUtil.copyProperties(addConceptInfoVO, conceptCommon);
             conceptCommon.setConceptId(conceptId);
             conceptCommon.setGmtModified(now);
@@ -644,13 +668,13 @@ public class ConceptFacade extends ConceptServiceImpl {
                                 if (row == null) {
                                     continue;
                                 }
-//                                if (count == 1) {
-//                                    title_1 = getValue(row.getCell(0)).trim().replace(" ", "");
-//                                    title_2 = getValue(row.getCell(1)).trim().replace(" ", "");
-//                                    title_3 = getValue(row.getCell(2)).trim().replace(" ", "");
-//                                    title_4 = getValue(row.getCell(3)).trim().replace(" ", "");
-//                                    continue;
-//                                }
+                                //                                if (count == 1) {
+                                //                                    title_1 = getValue(row.getCell(0)).trim().replace(" ", "");
+                                //                                    title_2 = getValue(row.getCell(1)).trim().replace(" ", "");
+                                //                                    title_3 = getValue(row.getCell(2)).trim().replace(" ", "");
+                                //                                    title_4 = getValue(row.getCell(3)).trim().replace(" ", "");
+                                //                                    continue;
+                                //                                }
                                 libName = getValue(row.getCell(0)).trim().replace(" ", "");
                                 libType = getValue(row.getCell(1)).trim().replace(" ", "");
                                 otherNames = getValue(row.getCell(2)).trim().replace(" ", "");
@@ -658,23 +682,23 @@ public class ConceptFacade extends ConceptServiceImpl {
                                 sexType = getValue(row.getCell(4)).trim().replace(" ", "");
                                 minAge = getValue(row.getCell(5)).trim().replace(" ", "");
                                 maxAge = getValue(row.getCell(6)).trim().replace(" ", "");
-                                
-                                if(count == 1){
-                                	//当前行是第一行时,libName、libType、otherNames、remark、sexType、minAge、maxAge是标题
-                                	if (libName.indexOf("标准术语") == -1
-                                			|| libType.indexOf("类型") == -1
-                                			|| otherNames.indexOf("术语同义词") == -1
-                                			|| remark.indexOf("标准术语说明") == -1
-                                			|| sexType.indexOf("性别") == -1
-                                			|| minAge.indexOf("最小年龄") == -1
-                                			|| maxAge.indexOf("最大年龄") == -1) {
-                                		sbf.append("导入数据不正确,请选择正确数据导入!").append("<br/>");
-                                		break;
-                                	}else{
-                                		continue;
-                                	}
+
+                                if (count == 1) {
+                                    //当前行是第一行时,libName、libType、otherNames、remark、sexType、minAge、maxAge是标题
+                                    if (libName.indexOf("标准术语") == -1
+                                            || libType.indexOf("类型") == -1
+                                            || otherNames.indexOf("术语同义词") == -1
+                                            || remark.indexOf("标准术语说明") == -1
+                                            || sexType.indexOf("性别") == -1
+                                            || minAge.indexOf("最小年龄") == -1
+                                            || maxAge.indexOf("最大年龄") == -1) {
+                                        sbf.append("导入数据不正确,请选择正确数据导入!").append("<br/>");
+                                        break;
+                                    } else {
+                                        continue;
+                                    }
                                 }
-                                
+
                                 if (StringUtil.isEmpty(libName) && StringUtil.isEmpty(libType)
                                         && StringUtil.isEmpty(otherNames) && StringUtil.isEmpty(remark)) {
                                     continue;
@@ -706,8 +730,8 @@ public class ConceptFacade extends ConceptServiceImpl {
                                 addConceptInfoVO.setLineNum(count);
                                 addConceptInfoVO.setName(libName);
                                 addConceptInfoVO.setType(libType);
-                                addConceptInfoVO.setMinAge(StringUtil.isEmpty(minAge)?0:Integer.parseInt(minAge));
-                                addConceptInfoVO.setMaxAge(StringUtil.isEmpty(minAge)?200:Integer.parseInt(maxAge));
+                                addConceptInfoVO.setMinAge(StringUtil.isEmpty(minAge) ? 0 : Integer.parseInt(minAge));
+                                addConceptInfoVO.setMaxAge(StringUtil.isEmpty(minAge) ? 200 : Integer.parseInt(maxAge));
                                 if (sexType.equals("男")) {
                                     addConceptInfoVO.setSexType(1);
                                 } else if (sexType.equals("女")) {
@@ -772,21 +796,21 @@ public class ConceptFacade extends ConceptServiceImpl {
             throw new CommonException(CommonErrorCode.RPC_ERROR, sbf.toString());
         }
 
-//        /**********************非规范的excel导入提醒*****************************************/
-//        if (title_1.indexOf("标准术语") == -1
-//                || title_2.indexOf("类型") == -1
-//                || title_3.indexOf("术语同义词") == -1
-//                || title_4.indexOf("标准术语说明") == -1) {
-//            throw new CommonException(CommonErrorCode.RPC_ERROR, "导入数据不正确,请选择正确数据导入!");
-//        }
+        //        /**********************非规范的excel导入提醒*****************************************/
+        //        if (title_1.indexOf("标准术语") == -1
+        //                || title_2.indexOf("类型") == -1
+        //                || title_3.indexOf("术语同义词") == -1
+        //                || title_4.indexOf("标准术语说明") == -1) {
+        //            throw new CommonException(CommonErrorCode.RPC_ERROR, "导入数据不正确,请选择正确数据导入!");
+        //        }
 
         /****************************导入空文件************************/
         if (addConceptInfoVOList.size() == 0) {
             throw new CommonException(CommonErrorCode.RPC_ERROR, "导入数据不能为空!");
         }
-        
-        if(addConceptInfoVOList.size() > 5000){
-        	throw new CommonException(CommonErrorCode.RPC_ERROR, "当前数据导入失败,单次导入最多可支持5千条数据导入");
+
+        if (addConceptInfoVOList.size() > 5000) {
+            throw new CommonException(CommonErrorCode.RPC_ERROR, "当前数据导入失败,单次导入最多可支持5千条数据导入");
         }
 
         /****************excel文件中所有术语存在重复提示---名字和类型一样即重复***********************/
@@ -810,100 +834,101 @@ public class ConceptFacade extends ConceptServiceImpl {
          * addConceptInfoVOList.forEach(i -> {
             addConceptInfo(i);
         });*/
-        
+
         ////优化后
         QueryWrapper<LibraryInfo> libraryInfoQe = new QueryWrapper<>();
-        libraryInfoQe.in("name", addConceptInfoDetailVOList.stream().map(i->i.getName()).distinct().collect(Collectors.toList()));
-        Map<String,List<LibraryInfo>> libraryInfoListMap = libraryinfoFacade.list(libraryInfoQe).stream().collect(Collectors.groupingBy(LibraryInfo::getName));
-        
-        Map<String,Lexicon> lexiconMap = lexiconFacade.list().stream().collect(Collectors.toMap(Lexicon::getName, i->i));
-        
+        libraryInfoQe.in("name", addConceptInfoDetailVOList.stream().map(i -> i.getName()).distinct().collect(Collectors.toList()));
+        Map<String, List<LibraryInfo>> libraryInfoListMap = libraryinfoFacade.list(libraryInfoQe).stream().collect(Collectors.groupingBy(LibraryInfo::getName));
+
+        Map<String, Lexicon> lexiconMap = lexiconFacade.list().stream().collect(Collectors.toMap(Lexicon::getName, i -> i));
+
         String ckmsg = null;
-        for(AddConceptInfoVO addConceptInfoVO : addConceptInfoVOList){
-        	ckmsg = checkImConceptInfo(addConceptInfoVO,libraryInfoListMap,lexiconMap);
-        	if(StringUtil.isNotBlank(ckmsg)){
-        		sbf.append("第").append(addConceptInfoVO.getLineNum()).append("行").append(ckmsg).append("<br/>");
-        	}
+        for (AddConceptInfoVO addConceptInfoVO : addConceptInfoVOList) {
+            ckmsg = checkImConceptInfo(addConceptInfoVO, libraryInfoListMap, lexiconMap);
+            if (StringUtil.isNotBlank(ckmsg)) {
+                sbf.append("第").append(addConceptInfoVO.getLineNum()).append("行").append(ckmsg).append("<br/>");
+            }
         }
-        
+
         if (sbf.length() > 0) {
             throw new CommonException(CommonErrorCode.RPC_ERROR, sbf.toString());
         }
-        
+
         saveAddConceptInfoVOList(addConceptInfoVOList);
 
         return true;
     }
-    
+
     /**
      * 导入数据插入更新前校验
+     *
      * @param addConceptInfoVO
      * @param libraryInfoListAllMap
      * @param lexiconMap
      * @return
      */
-    public String checkImConceptInfo(AddConceptInfoVO addConceptInfoVO,Map<String,List<LibraryInfo>> libraryInfoListAllMap,Map<String,Lexicon> lexiconMap) {
-    	String currentUser = UserUtils.getCurrentPrincipleID();
+    public String checkImConceptInfo(AddConceptInfoVO addConceptInfoVO, Map<String, List<LibraryInfo>> libraryInfoListAllMap, Map<String, Lexicon> lexiconMap) {
+        String currentUser = UserUtils.getCurrentPrincipleID();
         Date now = DateUtil.now();
-    	
-    	Concept concept = new Concept();
-    	ConceptCommon conceptCommon = null;
-    	List<LibraryInfo> libraryInfoList = Lists.newArrayList();
+
+        Concept concept = new Concept();
+        ConceptCommon conceptCommon = null;
+        List<LibraryInfo> libraryInfoList = Lists.newArrayList();
 
         List<AddConceptInfoDetailVO> addConceptInfoDetailVOMainList = addConceptInfoVO.getDetailList().stream().filter(i -> i.getIsConcept() == 1).collect(Collectors.toList());
         if (addConceptInfoDetailVOMainList.size() == 0) {
-        	return "同义词中缺少标准词本体!";
+            return "同义词中缺少标准词本体!";
         }
         if (addConceptInfoDetailVOMainList.size() > 1) {
-        	return "标准术语只能有一个!";
+            return "标准术语只能有一个!";
         }
-        
+
         Lexicon lexicon = lexiconMap.get(addConceptInfoVO.getType());
         if (lexicon == null) {
-        	return "数据有误,该类型信息在数据库中不存在!";
+            return "数据有误,该类型信息在数据库中不存在!";
         }
         Long typeId = lexicon.getId();
         concept.setLibType(typeId);
         concept.setGmtModified(now);
-    	concept.setModifier(currentUser);
-    	if(lexicon.getIsHasCommon()==1){
-    		conceptCommon = new ConceptCommon();
-    		conceptCommon.setSexType(addConceptInfoVO.getSexType());
-        	conceptCommon.setMinAge(addConceptInfoVO.getMinAge());
-        	conceptCommon.setMaxAge(addConceptInfoVO.getMaxAge());
-        	conceptCommon.setGmtModified(now);
-        	conceptCommon.setModifier(currentUser);
-    	}
-    	
+        concept.setModifier(currentUser);
+        if (lexicon.getIsHasCommon() == 1) {
+            conceptCommon = new ConceptCommon();
+            conceptCommon.setSexType(addConceptInfoVO.getSexType());
+            conceptCommon.setMinAge(addConceptInfoVO.getMinAge());
+            conceptCommon.setMaxAge(addConceptInfoVO.getMaxAge());
+            conceptCommon.setGmtModified(now);
+            conceptCommon.setModifier(currentUser);
+        }
+
         List<LibraryInfo> extLibraryInfoList = Lists.newArrayList();
-        addConceptInfoVO.getDetailList().forEach(a->{
-        	List<LibraryInfo> libraryInfoListAll = libraryInfoListAllMap.get(a.getName());
-        	if(ListUtil.isNotEmpty(libraryInfoListAll)){
-        		libraryInfoListAll = libraryInfoListAll.stream().filter(b->b.getTypeId().intValue()==typeId.intValue()).collect(Collectors.toList());
-        		if(ListUtil.isNotEmpty(libraryInfoListAll)){
-        			extLibraryInfoList.add(libraryInfoListAll.get(0));
-        		}
-        	}
+        addConceptInfoVO.getDetailList().forEach(a -> {
+            List<LibraryInfo> libraryInfoListAll = libraryInfoListAllMap.get(a.getName());
+            if (ListUtil.isNotEmpty(libraryInfoListAll)) {
+                libraryInfoListAll = libraryInfoListAll.stream().filter(b -> b.getTypeId().intValue() == typeId.intValue()).collect(Collectors.toList());
+                if (ListUtil.isNotEmpty(libraryInfoListAll)) {
+                    extLibraryInfoList.add(libraryInfoListAll.get(0));
+                }
+            }
         });
         Map<String, LibraryInfo> extLibraryInfoMap = extLibraryInfoList.stream().collect(Collectors.toMap(LibraryInfo::getName, i -> i));
-        
+
         LibraryInfo libraryInfoMain = extLibraryInfoMap.get(addConceptInfoDetailVOMainList.get(0).getName());
         Long conceptId = null;
         if (libraryInfoMain == null) {
-        	conceptId = -9999l;
-        	concept.setGmtCreate(now);
-        	concept.setCreator(currentUser);
-        	if(conceptCommon!=null){
-        		conceptCommon.setGmtCreate(now);
-            	conceptCommon.setCreator(currentUser);
-        	}
+            conceptId = -9999l;
+            concept.setGmtCreate(now);
+            concept.setCreator(currentUser);
+            if (conceptCommon != null) {
+                conceptCommon.setGmtCreate(now);
+                conceptCommon.setCreator(currentUser);
+            }
         } else {
             conceptId = libraryInfoMain.getConceptId();
             concept.setId(conceptId);
             addConceptInfoVO.setConceptId(conceptId);
 
-            if (libraryInfoMain.getIsConcept()!=1&&extLibraryInfoList.stream().filter(i -> i.getConceptId().intValue() == libraryInfoMain.getConceptId().intValue()).count() == 1) {
-            	return "标准术语已作为同义词被占用!";
+            if (libraryInfoMain.getIsConcept() != 1 && extLibraryInfoList.stream().filter(i -> i.getConceptId().intValue() == libraryInfoMain.getConceptId().intValue()).count() == 1) {
+                return "标准术语已作为同义词被占用!";
             }
         }
 
@@ -911,10 +936,10 @@ public class ConceptFacade extends ConceptServiceImpl {
         for (AddConceptInfoDetailVO i : addConceptInfoVO.getDetailList()) {
             LibraryInfo libraryInfo = extLibraryInfoMap.get(i.getName());
             if (libraryInfo == null) {
-            	libraryInfo = new LibraryInfo();
-            	libraryInfo.setTypeId(typeId);
-            	libraryInfo.setGmtCreate(now);
-            	libraryInfo.setCreator(currentUser);
+                libraryInfo = new LibraryInfo();
+                libraryInfo.setTypeId(typeId);
+                libraryInfo.setGmtCreate(now);
+                libraryInfo.setCreator(currentUser);
             } else if (libraryInfo.getConceptId().intValue() != conceptId.intValue()) {
                 sbf.append(i.getName()).append(" ");
                 continue;
@@ -925,10 +950,10 @@ public class ConceptFacade extends ConceptServiceImpl {
             libraryInfo.setConceptId(conceptId);
             libraryInfo.setGmtModified(now);
             libraryInfo.setModifier(currentUser);
-            if(i.getIsConcept()==1){
-            	libraryInfoList.add(0,libraryInfo);
-            }else{
-            	libraryInfoList.add(libraryInfo);
+            if (i.getIsConcept() == 1) {
+                libraryInfoList.add(0, libraryInfo);
+            } else {
+                libraryInfoList.add(libraryInfo);
             }
         }
 
@@ -936,74 +961,78 @@ public class ConceptFacade extends ConceptServiceImpl {
             sbf.append("已被占用");
             return sbf.toString();
         }
-        
+
         addConceptInfoVO.setConcept(concept);
         addConceptInfoVO.setConceptCommon(conceptCommon);
         addConceptInfoVO.setLibraryInfoList(libraryInfoList);
 
         return null;
     }
-    
+
     /**
      * 导入数据插入更新
+     *
      * @param addConceptInfoVOList
      */
-    private void saveAddConceptInfoVOList(List<AddConceptInfoVO> addConceptInfoVOList){
-    	List<Long> conceptIds = addConceptInfoVOList.stream().filter(i->i.getConceptId()!=null).map(i->i.getConceptId()).collect(Collectors.toList());
-    	if(ListUtil.isNotEmpty(conceptIds)){
-    		QueryWrapper<LibraryInfo> libraryInfoQe = new QueryWrapper<>();
+    private void saveAddConceptInfoVOList(List<AddConceptInfoVO> addConceptInfoVOList) {
+        List<Long> conceptIds = addConceptInfoVOList.stream().filter(i -> i.getConceptId() != null).map(i -> i.getConceptId()).collect(Collectors.toList());
+        if (ListUtil.isNotEmpty(conceptIds)) {
+            QueryWrapper<LibraryInfo> libraryInfoQe = new QueryWrapper<>();
             libraryInfoQe.in("concept_id", conceptIds);
             libraryinfoFacade.remove(libraryInfoQe);
-    	}
-        
+        }
+
         List<LibraryInfo> saveLibraryInfoList = Lists.newArrayList();
-        addConceptInfoVOList.forEach(i->{
-        	saveLibraryInfoList.addAll(i.getLibraryInfoList());
+        addConceptInfoVOList.forEach(i -> {
+            saveLibraryInfoList.addAll(i.getLibraryInfoList());
         });
         libraryInfoService.saveBatch(saveLibraryInfoList);
-        
+
         List<Concept> saveOrUpdateConceptList = Lists.newArrayList();
-        addConceptInfoVOList.forEach(i->{
-        	i.getConcept().setLibId(i.getLibraryInfoList().get(0).getId());
-        	i.getConcept().setLibName(i.getLibraryInfoList().get(0).getName());
-        	saveOrUpdateConceptList.add(i.getConcept());
+        addConceptInfoVOList.forEach(i -> {
+            i.getConcept().setLibId(i.getLibraryInfoList().get(0).getId());
+            i.getConcept().setLibName(i.getLibraryInfoList().get(0).getName());
+            saveOrUpdateConceptList.add(i.getConcept());
         });
+        //删除标签缓存
+        List<Long> saveConceptIds = saveOrUpdateConceptList.stream().map(i -> i.getId()).filter(j -> j != null).distinct().collect(Collectors.toList());
+        this.cacheClearByConceptIds(saveConceptIds);
         conceptService.saveOrUpdateBatch(saveOrUpdateConceptList);
-        
+
         List<LibraryInfo> updateLibraryInfoList = Lists.newArrayList();
-        addConceptInfoVOList.forEach(i->{
-        	if(i.getConceptId()==null){
-        		i.getLibraryInfoList().forEach(j->{
-        			j.setConceptId(i.getConcept().getId());
-        		});
-        		updateLibraryInfoList.addAll(i.getLibraryInfoList());
-        	}
+        addConceptInfoVOList.forEach(i -> {
+            if (i.getConceptId() == null) {
+                i.getLibraryInfoList().forEach(j -> {
+                    j.setConceptId(i.getConcept().getId());
+                });
+                updateLibraryInfoList.addAll(i.getLibraryInfoList());
+            }
         });
-        if(ListUtil.isNotEmpty(updateLibraryInfoList)){
-        	libraryInfoService.updateBatchById(updateLibraryInfoList);
+        if (ListUtil.isNotEmpty(updateLibraryInfoList)) {
+            libraryInfoService.updateBatchById(updateLibraryInfoList);
         }
-        
+
         List<ConceptCommon> saveOrUpdateConceptCommonList = Lists.newArrayList();
-        Map<Long,ConceptCommon> conceptCommonMap = null;
-        if(ListUtil.isNotEmpty(conceptIds)){
-        	QueryWrapper<ConceptCommon> conceptCommonQe = new QueryWrapper<>();
+        Map<Long, ConceptCommon> conceptCommonMap = null;
+        if (ListUtil.isNotEmpty(conceptIds)) {
+            QueryWrapper<ConceptCommon> conceptCommonQe = new QueryWrapper<>();
             conceptCommonQe.in("concept_id", conceptIds);
-            conceptCommonMap = conceptCommonFacade.list(conceptCommonQe).stream().collect(Collectors.toMap(ConceptCommon::getConceptId, i->i));
+            conceptCommonMap = conceptCommonFacade.list(conceptCommonQe).stream().collect(Collectors.toMap(ConceptCommon::getConceptId, i -> i));
         }
-        for(AddConceptInfoVO i : addConceptInfoVOList){
-        	if(i.getConceptCommon()!=null){
-        		if(i.getConceptId()!=null&&conceptCommonMap!=null&&conceptCommonMap.containsKey(i.getConceptId())){
-            		i.getConceptCommon().setId(conceptCommonMap.get(i.getConceptId()).getId());
-            	}
-            	i.getConceptCommon().setConceptId(i.getConcept().getId());
-            	saveOrUpdateConceptCommonList.add(i.getConceptCommon());
-        	}
+        for (AddConceptInfoVO i : addConceptInfoVOList) {
+            if (i.getConceptCommon() != null) {
+                if (i.getConceptId() != null && conceptCommonMap != null && conceptCommonMap.containsKey(i.getConceptId())) {
+                    i.getConceptCommon().setId(conceptCommonMap.get(i.getConceptId()).getId());
+                }
+                i.getConceptCommon().setConceptId(i.getConcept().getId());
+                saveOrUpdateConceptCommonList.add(i.getConceptCommon());
+            }
         }
-        if(ListUtil.isNotEmpty(saveOrUpdateConceptCommonList)){
-        	conceptCommonService.saveOrUpdateBatch(saveOrUpdateConceptCommonList);
+        if (ListUtil.isNotEmpty(saveOrUpdateConceptCommonList)) {
+            conceptCommonService.saveOrUpdateBatch(saveOrUpdateConceptCommonList);
         }
     }
-    
+
     @SuppressWarnings("deprecation")
     private String getValue(Cell cell) {
         try {
@@ -1277,11 +1306,11 @@ public class ConceptFacade extends ConceptServiceImpl {
             }
             List<List<LibraryInfo>> listList = SqlExecuteUtil.divideList(list, 200);
             int i = 0;
-            for (List<LibraryInfo> libraryInfoList : listList){
+            for (List<LibraryInfo> libraryInfoList : listList) {
                 res = libraryInfoService.updateBatchById(libraryInfoList);
                 i++;
             }
-            System.out.println("批量更新拼音"+ i +"次!");
+            System.out.println("批量更新拼音" + i + "次!");
         }
         return res;
     }
@@ -1292,7 +1321,7 @@ public class ConceptFacade extends ConceptServiceImpl {
      * @param getConceptPacInfosVO
      * @return
      */
-    public List<ConceptBaseDTO> getConceptPacInfos(GetConceptPacInfosVO getConceptPacInfosVO){
+    public List<ConceptBaseDTO> getConceptPacInfos(GetConceptPacInfosVO getConceptPacInfosVO) {
         QueryWrapper<Concept> conceptQueryWrapper = new QueryWrapper<>();
         conceptQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("lib_type", LexiconTypeEnum.PACS_ITEMS.getKey())
@@ -1309,4 +1338,87 @@ public class ConceptFacade extends ConceptServiceImpl {
         }
         return res;
     }
-}
+
+    /**
+     * 删除缓存(化验相关)
+     *
+     * @param conceptId
+     * @return
+     */
+    public Boolean cacheClearByConceptId(Long conceptId) {
+        Concept concept = this.getById(conceptId);
+        List<String> names = Lists.newArrayList();
+        names.add(concept.getLibName());
+        List<String> mealNames = Lists.newArrayList();
+        if (concept.getLibType().equals(Long.valueOf(LexiconTypeEnum.LIS_TABLES.getKey()))) {
+            mealNames = lisMappingFacade.getMealNameByUniqueNames(names);
+        } else if (concept.getLibType().equals(Long.valueOf(LexiconTypeEnum.LIS_PACKAGE.getKey()))) {
+            mealNames.add(concept.getLibName());
+        } else if (concept.getLibType().equals(Long.valueOf(LexiconTypeEnum.LIS_DETAILS.getKey()))) {
+            mealNames = lisMappingFacade.getMealNameByItemNames(names);
+        } else {
+            return true;
+        }
+        if (ListUtil.isNotEmpty(mealNames)) {
+            KLQuestionVO klQuestionVO = new KLQuestionVO();
+            klQuestionVO.setTagNames(mealNames);
+            klQuestionVO.setNames(mealNames);
+            klQuestionVO.setType(5);
+            List<Integer> tagTypes = Lists.newArrayList();
+            tagTypes.add(7);
+            klQuestionVO.setTagType(tagTypes);
+            RespDTO<List<QuestionInfo>> respDTO = icssManServiceClient.indexForkl(klQuestionVO);
+            if (RespDTOUtil.respIsOK(respDTO)) {
+                List<QuestionInfo> questionInfoList = respDTO.data;
+                if (ListUtil.isNotEmpty(questionInfoList)) {
+                    IdListVO idListVO = new IdListVO();
+                    List<Long> idList = questionInfoList.stream().map(i -> i.getId()).collect(Collectors.toList());
+                    idListVO.setIdList(idList);
+                    RespDTO<Boolean> cacheRespDTO = icssManServiceClient.clearCache(idListVO);
+                }
+            }
+        }
+        return true;
+    }
+
+    /**
+     * 批量删除化验相关标签缓存
+     *
+     * @param conceptIds
+     * @return
+     */
+    public Boolean cacheClearByConceptIds(List<Long> conceptIds) {
+        List<Concept> concepts = this.getListByIds(conceptIds);
+        List<String> mealNames = Lists.newArrayList();
+        List<Concept> mealConcepts = concepts.stream().filter(i -> i.getLibType().equals(Long.valueOf(LexiconTypeEnum.LIS_PACKAGE.getKey()))).collect(Collectors.toList());
+        mealNames.addAll(mealConcepts.stream().map(i -> i.getLibName()).filter(j -> j != null).distinct().collect(Collectors.toList()));
+        List<Concept> itemConcepts = concepts.stream().filter(i -> i.getLibType().equals(Long.valueOf(LexiconTypeEnum.LIS_DETAILS.getKey()))).collect(Collectors.toList());
+        List<String> itemNames = itemConcepts.stream().map(i -> i.getLibName()).filter(j -> j != null).distinct().collect(Collectors.toList());
+        mealNames.addAll(lisMappingFacade.getMealNameByItemNames(itemNames));
+        List<Concept> uniqueConcepts = concepts.stream().filter(i -> i.getLibType().equals(Long.valueOf(LexiconTypeEnum.LIS_TABLES.getKey()))).collect(Collectors.toList());
+        List<String> uniqueNames = uniqueConcepts.stream().map(i -> i.getLibName()).filter(j -> j != null).distinct().collect(Collectors.toList());
+        mealNames.addAll(lisMappingFacade.getMealNameByUniqueNames(uniqueNames));
+        mealNames = mealNames.stream().filter(i -> StringUtil.isNotBlank(i)).distinct().collect(Collectors.toList());
+
+        if (ListUtil.isNotEmpty(mealNames)) {
+            KLQuestionVO klQuestionVO = new KLQuestionVO();
+            klQuestionVO.setTagNames(mealNames);
+            klQuestionVO.setNames(mealNames);
+            klQuestionVO.setType(5);
+            List<Integer> tagTypes = Lists.newArrayList();
+            tagTypes.add(7);
+            klQuestionVO.setTagType(tagTypes);
+            RespDTO<List<QuestionInfo>> respDTO = icssManServiceClient.indexForkl(klQuestionVO);
+            if (RespDTOUtil.respIsOK(respDTO)) {
+                List<QuestionInfo> questionInfoList = respDTO.data;
+                if (ListUtil.isNotEmpty(questionInfoList)) {
+                    IdListVO idListVO = new IdListVO();
+                    List<Long> idList = questionInfoList.stream().map(i -> i.getId()).collect(Collectors.toList());
+                    idListVO.setIdList(idList);
+                    RespDTO<Boolean> cacheRespDTO = icssManServiceClient.clearCache(idListVO);
+                }
+            }
+        }
+        return true;
+    }
+}

+ 66 - 8
knowledgeman-service/src/main/java/com/diagbot/facade/LisMappingFacade.java

@@ -9,6 +9,7 @@ import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.LisMapping;
 import com.diagbot.entity.QuestionInfo;
+import com.diagbot.entity.wrapper.LisMappingWrapper;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.LexiconTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
@@ -20,15 +21,17 @@ import com.diagbot.util.RespDTOUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.util.UserUtils;
 import com.diagbot.vo.GetUniqueNameVO;
+import com.diagbot.vo.IdListVO;
 import com.diagbot.vo.IdVO;
+import com.diagbot.vo.KLQuestionVO;
 import com.diagbot.vo.LisMappingPageVO;
 import com.diagbot.vo.LisMappingVO;
-import com.diagbot.vo.QuestionIndexVO;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -124,18 +127,23 @@ public class LisMappingFacade extends LisMappingServiceImpl {
         Boolean state = this.saveOrUpdate(lisMapping);
 
         //清除缓存
-        QuestionIndexVO questionIndexVO = new QuestionIndexVO();
-        questionIndexVO.setName(mealConcept.getLibName());
-        questionIndexVO.setType(5);
+        KLQuestionVO klQuestionVO = new KLQuestionVO();
+        List<String> mealNames = Lists.newArrayList();
+        mealNames.add(mealConcept.getLibName());
+        klQuestionVO.setNames(mealNames);
+        klQuestionVO.setTagNames(mealNames);
+        klQuestionVO.setType(5);
         List<Integer> tagTypes = Lists.newArrayList();
         tagTypes.add(7);
-        questionIndexVO.setTagType(tagTypes);
-        RespDTO<List<QuestionInfo>> respDTO = icssManServiceClient.index(questionIndexVO);
+        klQuestionVO.setTagType(tagTypes);
+        RespDTO<List<QuestionInfo>> respDTO = icssManServiceClient.indexForkl(klQuestionVO);
         if (RespDTOUtil.respIsOK(respDTO)) {
             List<QuestionInfo> questionInfoList = respDTO.data;
             if (ListUtil.isNotEmpty(questionInfoList)) {
-                IdVO idVO = new IdVO();
-                idVO.setId(questionInfoList.get(0).getId());
+                IdListVO idListVO = new IdListVO();
+                List<Long> idList = questionInfoList.stream().map(i -> i.getId()).collect(Collectors.toList());
+                idListVO.setIdList(idList);
+                RespDTO<Boolean> cacheRespDTO = icssManServiceClient.clearCache(idListVO);
             }
         }
         return state;
@@ -181,6 +189,28 @@ public class LisMappingFacade extends LisMappingServiceImpl {
         lisMapping.setModifier(userId);
         lisMapping.setGmtModified(now);
         Boolean state = this.updateById(lisMapping);
+
+        //清除缓存
+        Concept mealConcept = conceptFacade.getById(lisMapping.getMealId());
+        KLQuestionVO klQuestionVO = new KLQuestionVO();
+        List<String> mealNames = Lists.newArrayList();
+        mealNames.add(mealConcept.getLibName());
+        klQuestionVO.setNames(mealNames);
+        klQuestionVO.setTagNames(mealNames);
+        klQuestionVO.setType(5);
+        List<Integer> tagTypes = Lists.newArrayList();
+        tagTypes.add(7);
+        klQuestionVO.setTagType(tagTypes);
+        RespDTO<List<QuestionInfo>> respDTO = icssManServiceClient.indexForkl(klQuestionVO);
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            List<QuestionInfo> questionInfoList = respDTO.data;
+            if (ListUtil.isNotEmpty(questionInfoList)) {
+                IdListVO idListVO = new IdListVO();
+                List<Long> idList = questionInfoList.stream().map(i -> i.getId()).collect(Collectors.toList());
+                idListVO.setIdList(idList);
+                RespDTO<Boolean> cacheRespDTO = icssManServiceClient.clearCache(idListVO);
+            }
+        }
         return state;
     }
 
@@ -229,4 +259,32 @@ public class LisMappingFacade extends LisMappingServiceImpl {
         }
         return uniqueName;
     }
+
+    /**
+     * 获取化验套餐
+     *
+     * @param uniqueNames
+     * @return
+     */
+    public List<String> getMealNameByUniqueNames(List<String> uniqueNames) {
+        Map<String, Object> paramMap = new HashMap<>();
+        paramMap.put("uniqueNames", uniqueNames);
+        List<LisMappingWrapper> lisMappingWrapperList = this.getLisMappingByName(paramMap);
+        List<String> mealNames = lisMappingWrapperList.stream().map(i -> i.getMealName()).filter(j -> j != null).distinct().collect(Collectors.toList());
+        return mealNames;
+    }
+
+    /**
+     * 获取化验套餐
+     *
+     * @param itemNames
+     * @return
+     */
+    public List<String> getMealNameByItemNames(List<String> itemNames) {
+        Map<String, Object> paramMap = new HashMap<>();
+        paramMap.put("itemNames", itemNames);
+        List<LisMappingWrapper> lisMappingWrapperList = this.getLisMappingByName(paramMap);
+        List<String> mealNames = lisMappingWrapperList.stream().map(i -> i.getMealName()).filter(j -> j != null).distinct().collect(Collectors.toList());
+        return mealNames;
+    }
 }

+ 13 - 1
knowledgeman-service/src/main/java/com/diagbot/mapper/LisMappingMapper.java

@@ -1,12 +1,16 @@
 package com.diagbot.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.LisMappingPageDTO;
 import com.diagbot.entity.LisMapping;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.entity.wrapper.LisMappingWrapper;
 import com.diagbot.vo.LisMappingPageVO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  * 化验项目公表映射 Mapper 接口
@@ -23,4 +27,12 @@ public interface LisMappingMapper extends BaseMapper<LisMapping> {
      * @return
      */
     IPage<LisMappingPageDTO> lisMappingPage(@Param("lisMappingPageVO") LisMappingPageVO lisMappingPageVO);
+
+    /**
+     * 获取化验公表映射
+     *
+     * @param map
+     * @return
+     */
+    List<LisMappingWrapper> getLisMappingByName(Map map);
 }

+ 14 - 2
knowledgeman-service/src/main/java/com/diagbot/service/LisMappingService.java

@@ -1,12 +1,16 @@
 package com.diagbot.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.dto.LisMappingPageDTO;
 import com.diagbot.entity.LisMapping;
-import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.entity.wrapper.LisMappingWrapper;
 import com.diagbot.vo.LisMappingPageVO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  * 化验项目公表映射 服务类
@@ -23,4 +27,12 @@ public interface LisMappingService extends IService<LisMapping> {
      * @return
      */
     IPage<LisMappingPageDTO> lisMappingPage(@Param("lisMappingPageVO") LisMappingPageVO lisMappingPageVO);
-}
+
+    /**
+     * 获取化验公表映射
+     *
+     * @param map
+     * @return
+     */
+    List<LisMappingWrapper> getLisMappingByName(Map map);
+}

+ 15 - 1
knowledgeman-service/src/main/java/com/diagbot/service/impl/LisMappingServiceImpl.java

@@ -1,15 +1,19 @@
 package com.diagbot.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.dto.LisMappingPageDTO;
 import com.diagbot.entity.LisMapping;
+import com.diagbot.entity.wrapper.LisMappingWrapper;
 import com.diagbot.mapper.LisMappingMapper;
 import com.diagbot.service.LisMappingService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.vo.LisMappingPageVO;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  * 化验项目公表映射 服务实现类
@@ -29,4 +33,14 @@ public class LisMappingServiceImpl extends ServiceImpl<LisMappingMapper, LisMapp
     public IPage<LisMappingPageDTO> lisMappingPage(@Param("lisMappingPageVO") LisMappingPageVO lisMappingPageVO) {
         return this.baseMapper.lisMappingPage(lisMappingPageVO);
     }
+
+    /**
+     * 获取化验公表映射
+     *
+     * @param map
+     * @return
+     */
+    public List<LisMappingWrapper> getLisMappingByName(Map map) {
+        return this.baseMapper.getLisMappingByName(map);
+    }
 }

+ 17 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/IdListVO.java

@@ -0,0 +1,17 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/9/24 10:25
+ */
+@Getter
+@Setter
+public class IdListVO {
+    List<Long> idList;
+}

+ 22 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/KLQuestionVO.java

@@ -0,0 +1,22 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/9/24 11:42
+ */
+@Getter
+@Setter
+public class KLQuestionVO {
+    private List<String> tagNames;
+    private List<String> names;
+    private Integer sexType;
+    private Integer age;
+    private Integer type;
+    private List<Integer> tagType;
+}

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

@@ -31,6 +31,22 @@
         <result column="unique_name" property="uniqueName" />
     </resultMap>
 
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultWrapperMap" type="com.diagbot.entity.wrapper.LisMappingWrapper">
+        <id column="id" property="id" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_create" property="gmtCreate" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+        <result column="meal_id" property="mealId" />
+        <result column="item_id" property="itemId" />
+        <result column="unique_id" property="uniqueId" />
+        <result column="meal_name" property="mealName" />
+        <result column="item_name" property="itemName" />
+        <result column="unique_name" property="uniqueName" />
+    </resultMap>
+
     <!-- 分页查询 -->
     <select id="lisMappingPage" resultMap="BaseResultDTOMap">
         SELECT
@@ -66,4 +82,47 @@
         order by lis_mapping.gmt_modified desc
     </select>
 
+    <!-- 公表查询 -->
+    <select id="getLisMappingByName" parameterType="java.util.Map" resultMap="BaseResultWrapperMap">
+        SELECT
+        lis_mapping.*, IFNULL(item_con.lib_name,"") AS item_name
+        FROM
+        (
+        SELECT
+        lis.*, meal_con.lib_name AS meal_name,
+        unique_con.lib_name AS unique_name
+        FROM
+        kl_lis_mapping lis,
+        kl_concept meal_con,
+        kl_concept unique_con
+        WHERE
+        lis.is_deleted = 'N'
+        AND meal_con.is_deleted = 'N'
+        AND unique_con.is_deleted = 'N'
+        AND lis.meal_id = meal_con.id
+        AND lis.unique_id = unique_con.id
+        ) lis_mapping
+        LEFT JOIN kl_concept item_con ON lis_mapping.item_id = item_con.id
+        AND item_con.is_deleted = 'N'
+        WHERE 1=1
+        <if test="mealNames != null and mealNames.size() > 0 ">
+            and lis_mapping.meal_name in
+            <foreach  collection="mealNames" item="mealName" open="("  separator=","  close=")">
+                #{mealName}
+            </foreach>
+        </if>
+        <if test="itemNames != null and itemNames.size() > 0 ">
+            and item_con.lib_name in
+            <foreach  collection="itemNames" item="itemName" open="("  separator=","  close=")">
+                #{itemName}
+            </foreach>
+        </if>
+        <if test="uniqueNames != null and uniqueNames.size() > 0 ">
+            and lis_mapping.unique_name in
+            <foreach  collection="uniqueNames" item="uniqueName" open="("  separator=","  close=")">
+                #{uniqueName}
+            </foreach>
+        </if>
+    </select>
+
 </mapper>