Selaa lähdekoodia

术语库检索接口

zhoutg 6 vuotta sitten
vanhempi
commit
a0ef9e5800
20 muutettua tiedostoa jossa 565 lisäystä ja 82 poistoa
  1. 28 0
      icssman-service/src/main/java/com/diagbot/client/KnowledgemanServiceClient.java
  2. 34 0
      icssman-service/src/main/java/com/diagbot/client/hystrix/KnowledgemanServiceHystrix.java
  3. 9 9
      icssman-service/src/main/java/com/diagbot/config/ResourceServerConfigurer.java
  4. 34 42
      icssman-service/src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  5. 16 0
      icssman-service/src/main/java/com/diagbot/dto/ConceptBaseDTO.java
  6. 2 0
      icssman-service/src/main/java/com/diagbot/dto/QuestionPageDTO.java
  7. 40 0
      icssman-service/src/main/java/com/diagbot/facade/ConceptFacade.java
  8. 30 8
      icssman-service/src/main/java/com/diagbot/facade/QuestionFacade.java
  9. 21 0
      icssman-service/src/main/java/com/diagbot/vo/ConceptExistVO.java
  10. 24 0
      icssman-service/src/main/java/com/diagbot/vo/IndexVO.java
  11. 67 0
      icssman-service/src/main/java/com/diagbot/web/ConceptController.java
  12. 16 0
      knowledgeman-service/src/main/java/com/diagbot/dto/ConceptBaseDTO.java
  13. 90 23
      knowledgeman-service/src/main/java/com/diagbot/facade/ConceptFacade.java
  14. 11 0
      knowledgeman-service/src/main/java/com/diagbot/mapper/ConceptMapper.java
  15. 11 0
      knowledgeman-service/src/main/java/com/diagbot/service/ConceptService.java
  16. 7 0
      knowledgeman-service/src/main/java/com/diagbot/service/impl/ConceptServiceImpl.java
  17. 23 0
      knowledgeman-service/src/main/java/com/diagbot/vo/ConceptExistVO.java
  18. 24 0
      knowledgeman-service/src/main/java/com/diagbot/vo/IndexVO.java
  19. 67 0
      knowledgeman-service/src/main/java/com/diagbot/web/CommonConceptController.java
  20. 11 0
      knowledgeman-service/src/main/resources/mapper/ConceptMapper.xml

+ 28 - 0
icssman-service/src/main/java/com/diagbot/client/KnowledgemanServiceClient.java

@@ -0,0 +1,28 @@
+package com.diagbot.client;
+
+import com.diagbot.client.hystrix.KnowledgemanServiceHystrix;
+import com.diagbot.dto.ConceptBaseDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.vo.ConceptExistVO;
+import com.diagbot.vo.IndexVO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:调用中间层服务
+ * @Author: Mark Huang
+ * @time: 2019/03/25 19:15
+ */
+@FeignClient(value = "knowledgeman-service", fallback = KnowledgemanServiceHystrix.class)
+public interface KnowledgemanServiceClient {
+
+    @PostMapping("/commonconcept/index")
+    RespDTO<List<ConceptBaseDTO>> index(@RequestBody IndexVO indexVO);
+
+    @PostMapping("/commonconcept/getConceptMapByNameAndType")
+    RespDTO<Map<String, Long>> getConceptMap(@RequestBody ConceptExistVO conceptExistVO);
+}

+ 34 - 0
icssman-service/src/main/java/com/diagbot/client/hystrix/KnowledgemanServiceHystrix.java

@@ -0,0 +1,34 @@
+package com.diagbot.client.hystrix;
+
+import com.diagbot.client.KnowledgemanServiceClient;
+import com.diagbot.dto.ConceptBaseDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.vo.ConceptExistVO;
+import com.diagbot.vo.IndexVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:调用中间层服务
+ * @Author: Mark Huang
+ * @time: 2019/03/25 19:15
+ */
+@Component
+@Slf4j
+public class KnowledgemanServiceHystrix implements KnowledgemanServiceClient {
+
+    @Override
+    public RespDTO<List<ConceptBaseDTO>> index(IndexVO indexVO) {
+        log.error("【hystrix】调用{}异常", "index");
+        return null;
+    }
+
+    @Override
+    public RespDTO<Map<String, Long>> getConceptMap(ConceptExistVO conceptExistVO) {
+        log.error("【hystrix】调用{}异常", "getConceptMap");
+        return null;
+    }
+}

+ 9 - 9
icssman-service/src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -26,15 +26,15 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
         http
                 .csrf().disable()
                 .authorizeRequests()
-                .regexMatchers(".*swagger.*", ".*v2.*", ".*webjars.*", "/druid.*", "/actuator.*", "/hystrix.*").permitAll()
-                .antMatchers("/file/deleteRemoteFile").permitAll()
-                .antMatchers("/file/uploadImage").permitAll()
-                .antMatchers("/introduceInfo/saveIntroduce").permitAll()
-                .antMatchers("/dictionaryInfo/getList").permitAll()
-                .antMatchers("/deptInfo/getAllDepts").permitAll()
-                .antMatchers("/getIcssEnumsData").permitAll()
-                .antMatchers("/**").authenticated();
-        //                .antMatchers("/**").permitAll();
+//                .regexMatchers(".*swagger.*", ".*v2.*", ".*webjars.*", "/druid.*", "/actuator.*", "/hystrix.*").permitAll()
+//                .antMatchers("/file/deleteRemoteFile").permitAll()
+//                .antMatchers("/file/uploadImage").permitAll()
+//                .antMatchers("/introduceInfo/saveIntroduce").permitAll()
+//                .antMatchers("/dictionaryInfo/getList").permitAll()
+//                .antMatchers("/deptInfo/getAllDepts").permitAll()
+//                .antMatchers("/getIcssEnumsData").permitAll()
+//                .antMatchers("/**").authenticated();
+                        .antMatchers("/**").permitAll();
 
 
     }

+ 34 - 42
icssman-service/src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -1,20 +1,12 @@
 package com.diagbot.config.security;
 
 import com.diagbot.client.UserServiceClient;
-import com.diagbot.dto.RespDTO;
-import com.diagbot.entity.Token;
-import com.diagbot.exception.CommonErrorCode;
-import com.diagbot.util.HttpUtils;
-import com.diagbot.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.AccessDecisionManager;
 import org.springframework.security.access.AccessDeniedException;
 import org.springframework.security.access.ConfigAttribute;
-import org.springframework.security.authentication.AccountExpiredException;
 import org.springframework.security.authentication.InsufficientAuthenticationException;
 import org.springframework.security.core.Authentication;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.web.FilterInvocation;
 import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
 import org.springframework.stereotype.Service;
 
@@ -33,40 +25,40 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
 
     @Override
     public void decide(Authentication authentication, Object object, Collection<ConfigAttribute> configAttributes) throws AccessDeniedException, InsufficientAuthenticationException {
-        HttpServletRequest request = ((FilterInvocation) object).getHttpRequest();
-        String url, method;
-        if (matchPermitAllUrl(request)) {
-            return;
-        }
-        if ("anonymousUser".equals(authentication.getPrincipal())) {
-            throw new AccessDeniedException("no right");
-        } else {
-            //验证token有效性
-            String tokenStr = HttpUtils.getHeaders(request).get("Authorization");
-            if (StringUtil.isNotEmpty(tokenStr)) {
-                Token token = new Token();
-                tokenStr = tokenStr.replaceFirst("Bearer ", "");
-                token.setToken(tokenStr);
-                RespDTO<Boolean> res = userServiceClient.verifyToken(token);
-                if (res == null || !CommonErrorCode.OK.getCode().equals(res.code)) {
-                    throw new AccountExpiredException("token expire");
-                }
-                if (!res.data) {
-                    throw new AccountExpiredException("token expire");
-                }
-            }
-            for (GrantedAuthority ga : authentication.getAuthorities()) {
-                String[] authority = ga.getAuthority().split(";");
-                url = authority[0];
-                method = authority[1];
-                if (matchers(url, request)) {
-                    if (method.equals(request.getMethod()) || "ALL".equals(method)) {
-                        return;
-                    }
-                }
-            }
-        }
-        throw new AccessDeniedException("no right");
+//        HttpServletRequest request = ((FilterInvocation) object).getHttpRequest();
+//        String url, method;
+//        if (matchPermitAllUrl(request)) {
+//            return;
+//        }
+//        if ("anonymousUser".equals(authentication.getPrincipal())) {
+//            throw new AccessDeniedException("no right");
+//        } else {
+//            //验证token有效性
+//            String tokenStr = HttpUtils.getHeaders(request).get("Authorization");
+//            if (StringUtil.isNotEmpty(tokenStr)) {
+//                Token token = new Token();
+//                tokenStr = tokenStr.replaceFirst("Bearer ", "");
+//                token.setToken(tokenStr);
+//                RespDTO<Boolean> res = userServiceClient.verifyToken(token);
+//                if (res == null || !CommonErrorCode.OK.getCode().equals(res.code)) {
+//                    throw new AccountExpiredException("token expire");
+//                }
+//                if (!res.data) {
+//                    throw new AccountExpiredException("token expire");
+//                }
+//            }
+//            for (GrantedAuthority ga : authentication.getAuthorities()) {
+//                String[] authority = ga.getAuthority().split(";");
+//                url = authority[0];
+//                method = authority[1];
+//                if (matchers(url, request)) {
+//                    if (method.equals(request.getMethod()) || "ALL".equals(method)) {
+//                        return;
+//                    }
+//                }
+//            }
+//        }
+//        throw new AccessDeniedException("no right");
     }
 
 

+ 16 - 0
icssman-service/src/main/java/com/diagbot/dto/ConceptBaseDTO.java

@@ -0,0 +1,16 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 概念出参基础实体类
+ * @author: gaodm
+ * @time: 2019/5/7 9:44
+ */
+@Getter
+@Setter
+public class ConceptBaseDTO {
+    private Long conceptId; // 概念id
+    private String name;    //概念名称
+}

+ 2 - 0
icssman-service/src/main/java/com/diagbot/dto/QuestionPageDTO.java

@@ -179,4 +179,6 @@ public class QuestionPageDTO implements Serializable {
      * 诊断类型
      */
     private Integer disType;
+
+    private Boolean exist;
 }

+ 40 - 0
icssman-service/src/main/java/com/diagbot/facade/ConceptFacade.java

@@ -0,0 +1,40 @@
+package com.diagbot.facade;
+
+import com.diagbot.client.KnowledgemanServiceClient;
+import com.diagbot.dto.ConceptBaseDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.service.impl.DisTypeServiceImpl;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.vo.ConceptExistVO;
+import com.diagbot.vo.IndexVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:zhoutg
+ * @time: 2018/11/23 11:37
+ */
+@Component
+public class ConceptFacade extends DisTypeServiceImpl {
+
+    @Autowired
+    KnowledgemanServiceClient knowledgemanServiceClient;
+
+    public List<ConceptBaseDTO> indexFac(IndexVO indexVO) {
+        RespDTO<List<ConceptBaseDTO>> res = knowledgemanServiceClient.index(indexVO);
+        RespDTOUtil.respNGDeal(res, "远程调用获取概念列表失败");
+        return res.data;
+    }
+
+
+    public Map<String, Long> getConceptMap(ConceptExistVO conceptExistVO){
+        RespDTO<Map<String, Long>> res = knowledgemanServiceClient.getConceptMap(conceptExistVO);
+        RespDTOUtil.respNGDeal(res, "远程调用获取概念列表失败");
+        return res.data;
+    }
+
+}

+ 30 - 8
icssman-service/src/main/java/com/diagbot/facade/QuestionFacade.java

@@ -3,6 +3,7 @@ package com.diagbot.facade;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.client.KnowledgemanServiceClient;
 import com.diagbot.client.UserServiceClient;
 import com.diagbot.dto.GetQuestionInfoDTO;
 import com.diagbot.dto.IndexRevDTO;
@@ -38,8 +39,10 @@ import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
+import com.diagbot.util.RespDTOUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.util.UserUtils;
+import com.diagbot.vo.ConceptExistVO;
 import com.diagbot.vo.DeleteQuestionVO;
 import com.diagbot.vo.GetQuestionIdsByTypeVO;
 import com.diagbot.vo.GetQuestionInfoVO;
@@ -102,6 +105,8 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
     DisTypeFacade disTypeFacade;
     @Autowired
     DisScaleFacade disScaleFacade;
+    @Autowired
+    KnowledgemanServiceClient knowledgemanServiceClient;
 
     /**
      * 标签保存
@@ -424,13 +429,29 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
         if (res.getTotal() <= 0) {
             return res;
         }
-        List<String> personIds = res.getRecords().stream().map(row -> row.getModifier()).collect(Collectors.toList());
-        RespDTO<Map<String, String>> mapRespDTO = userServiceClient.getUserInfoByIds(personIds);
-        if (mapRespDTO == null || !CommonErrorCode.OK.getCode().equals(mapRespDTO.code)) {
-            throw new CommonException(CommonErrorCode.RPC_ERROR, "获取操作人失败");
-        }
-        for (QuestionPageDTO bean : res.getRecords()) {
-            bean.setModifier(mapRespDTO.data.get(bean.getModifier()));
+//        List<String> personIds = res.getRecords().stream().map(row -> row.getModifier()).collect(Collectors.toList());
+//        RespDTO<Map<String, String>> mapRespDTO = userServiceClient.getUserInfoByIds(personIds);
+//        if (mapRespDTO == null || !CommonErrorCode.OK.getCode().equals(mapRespDTO.code)) {
+//            throw new CommonException(CommonErrorCode.RPC_ERROR, "获取操作人失败");
+//        }
+//        for (QuestionPageDTO bean : res.getRecords()) {
+//            bean.setModifier(mapRespDTO.data.get(bean.getModifier()));
+//        }
+        List<String> nameList = res.getRecords().stream().map(row -> row.getTagName()).collect(Collectors.toList());
+        ConceptExistVO conceptExistVO = new ConceptExistVO();
+        conceptExistVO.setNameList(nameList);
+        conceptExistVO.setType(res.getRecords().get(0).getType());
+        try {
+            RespDTO<Map<String, Long>> resMap = knowledgemanServiceClient.getConceptMap(conceptExistVO);
+            RespDTOUtil.respNGDeal(resMap, "远程调用根据名称和类型获取概念列表失败");
+            Map<String, Long> map = resMap.data;
+            for (QuestionPageDTO bean :  res.getRecords()) {
+                if(map.get(bean.getTagName()) != null) {
+                    bean.setExist(true);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
         }
         return res;
     }
@@ -523,7 +544,7 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
                         .set("is_deleted", IsDeleteEnum.Y.getKey()));
                 //删除慢病模板
                 QueryWrapper<ModuleInfo> moduleInfoQueryWrapper = new QueryWrapper<>();
-                moduleInfoQueryWrapper.eq("relation_id",id)
+                moduleInfoQueryWrapper.eq("relation_id", id)
                         .eq("is_deleted", IsDeleteEnum.N.getKey());
                 List<ModuleInfo> moduleInfoList = moduleInfoFacade.list(moduleInfoQueryWrapper);
                 List<Long> moduleIds = moduleInfoList.stream().map(ModuleInfo::getId).collect(Collectors.toList());
@@ -611,6 +632,7 @@ public class QuestionFacade extends QuestionInfoServiceImpl {
 
     /**
      * 根据主标签id 检索子标签
+     *
      * @param questionIndexSubVO
      * @return
      */

+ 21 - 0
icssman-service/src/main/java/com/diagbot/vo/ConceptExistVO.java

@@ -0,0 +1,21 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2019/5/6 18:50
+ */
+@Getter
+@Setter
+public class ConceptExistVO {
+    @ApiModelProperty(value = "名称列表")
+    private List<String> nameList;
+    @ApiModelProperty(value = "类型")
+    private Integer type;
+}

+ 24 - 0
icssman-service/src/main/java/com/diagbot/vo/IndexVO.java

@@ -0,0 +1,24 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @description:
+ * @author: zhoutg
+ * @date: 2019/5/10 10:47
+ */
+@Getter
+@Setter
+public class IndexVO {
+    @NotBlank(message = "名称不能为空")
+    private String name;
+    @NotNull(message = "类型不能为空")
+    private Integer type;
+    @ApiModelProperty(hidden = true)
+    private Integer libType;
+}

+ 67 - 0
icssman-service/src/main/java/com/diagbot/web/ConceptController.java

@@ -0,0 +1,67 @@
+package com.diagbot.web;
+
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.ConceptBaseDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.ConceptFacade;
+import com.diagbot.vo.ConceptExistVO;
+import com.diagbot.vo.IndexVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 概念表 前端控制器
+ * </p>
+ *
+ * @author zhaops
+ * @since 2019-05-06
+ */
+@RestController
+@RequestMapping("/concept")
+@Api(value = "常用标签API", tags = { "知识库标准化-常用标签API" })
+@SuppressWarnings("unchecked")
+public class ConceptController {
+    @Autowired
+    ConceptFacade conceptFacade;
+
+    /**
+     * 检索
+     *
+     * @param indexVO 搜索参数
+     * @return 名称和概念id
+     */
+    @ApiOperation(value = "知识库标准化-根据名称和类型获取概念列表[by:zhoutg]",
+            notes = "name: 搜索内容<br>" +
+                    "type:类型(1:症状 2:既往史,3:其他史,4:查体,5:化验),必填<br>")
+    @PostMapping("/index")
+    @SysLogger("index")
+    public RespDTO<List<ConceptBaseDTO>> index(@RequestBody IndexVO indexVO){
+        return RespDTO.onSuc(conceptFacade.indexFac(indexVO));
+    }
+
+
+    /**
+     * 根据名称和类型获取概念列表Map
+     *
+     * @param conceptExistVO 搜索参数
+     * @return 术语id和术语 Map
+     */
+    @ApiOperation(value = "知识库标准化-根据名称和类型获取概念列表Map[by:zhoutg]",
+            notes = "nameList: 名称列表<br>" +
+                    "type: 类型")
+    @PostMapping("/getConceptMapByNameAndType")
+    @SysLogger("getConceptMapByNameAndType")
+    public RespDTO<Map<String, Long>> getConceptMapByNameAndType(@RequestBody ConceptExistVO conceptExistVO){
+        return RespDTO.onSuc(conceptFacade.getConceptMap(conceptExistVO));
+    }
+}

+ 16 - 0
knowledgeman-service/src/main/java/com/diagbot/dto/ConceptBaseDTO.java

@@ -0,0 +1,16 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 概念出参基础实体类
+ * @author: gaodm
+ * @time: 2019/5/7 9:44
+ */
+@Getter
+@Setter
+public class ConceptBaseDTO {
+    private Long conceptId; // 概念id
+    private String name;    //概念名称
+}

+ 90 - 23
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.diagbot.client.UserServiceClient;
+import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.GetAllConceptDTO;
 import com.diagbot.dto.GetAllInformationDTO;
 import com.diagbot.dto.GetAllLisConceptDTO;
@@ -34,21 +13,47 @@ import com.diagbot.entity.Concept;
 import com.diagbot.entity.Lexicon;
 import com.diagbot.entity.LibraryInfo;
 import com.diagbot.entity.Medical;
+import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.LibraryInfoService;
 import com.diagbot.service.impl.ConceptServiceImpl;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.ParamConvertUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.util.UserUtils;
 import com.diagbot.vo.AddConceptInfoDetailVO;
 import com.diagbot.vo.AddConceptInfoVO;
+import com.diagbot.vo.ConceptExistVO;
 import com.diagbot.vo.GetAllConceptVO;
 import com.diagbot.vo.GetAllInformationVO;
 import com.diagbot.vo.GetAllLisConceptVO;
 import com.diagbot.vo.GetConceptInfoDetailVO;
+import com.diagbot.vo.IndexVO;
 import com.diagbot.vo.RemoveConceptInfoVO;
+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: 术语查询业务层
@@ -587,5 +592,67 @@ public class ConceptFacade extends ConceptServiceImpl {
             return "";
         }
     }
-    
+
+
+
+	/**
+	 * 根据名称和类型获取概念列表Map
+	 *
+	 * @param conceptExistVO 搜索参数
+	 * @return 术语id和术语 Map
+	 */
+	public Map<String, Long> getConceptMap(ConceptExistVO conceptExistVO) {
+		//入参验证
+		if (ListUtil.isEmpty(conceptExistVO.getNameList())) {
+			throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "名称列表不能为空");
+		}
+
+		if (conceptExistVO.getType() == null) {
+			throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "类型不能为空");
+		}
+		Integer libType = ParamConvertUtil.conceptConvert2Lib(conceptExistVO.getType());
+		if(libType == null) {
+			throw  new CommonException(CommonErrorCode.SERVER_IS_ERROR, "类型不匹配");
+		}
+		conceptExistVO.setLibType(libType);
+		//获取结构
+		List<Concept> concepts
+				= this.getListByNamesAndType(conceptExistVO.getNameList(), conceptExistVO.getLibType());
+
+		//出参封装
+		Map<String, Long> map = new HashMap<>();
+		if (ListUtil.isNotEmpty(concepts)) {
+			map = concepts.stream().collect(Collectors.toMap(r -> r.getLibName(), r -> r.getId()));
+		}
+		return map;
+	}
+
+
+
+	/**
+	 * 根据名称和词性获取概念列表
+	 *
+	 * @param nameList
+	 * @param libType
+	 * @return
+	 */
+	public List<Concept> getListByNamesAndType(List<String> nameList, Integer libType) {
+		QueryWrapper<Concept> conceptQueryWrapper = new QueryWrapper<>();
+		conceptQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+				.in("lib_name", nameList)
+				.eq("lib_type", libType);
+		List<Concept> list = this.list(conceptQueryWrapper);
+		return list;
+	}
+
+
+	public List<ConceptBaseDTO> indexFac(IndexVO indexVO) {
+		// 类型转换
+		Integer libType = ParamConvertUtil.conceptConvert2Lib(indexVO.getType());
+		if(libType == null) {
+			throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "类型不匹配");
+		}
+		indexVO.setLibType(libType);
+		return this.index(indexVO);
+	}
 }

+ 11 - 0
knowledgeman-service/src/main/java/com/diagbot/mapper/ConceptMapper.java

@@ -1,12 +1,14 @@
 package com.diagbot.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptRes;
 import com.diagbot.dto.ConceptWithOrderRes;
 import com.diagbot.dto.GetAllLisConceptDTO;
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.wrapper.ConceptWrapper;
 import com.diagbot.vo.GetAllLisConceptVO;
+import com.diagbot.vo.IndexVO;
 
 import java.util.List;
 
@@ -44,4 +46,13 @@ public interface ConceptMapper extends BaseMapper<Concept> {
      */
     List<ConceptWithOrderRes> getConceptWithOrder(ConceptWrapper conceptWrapper);
 
+
+
+    /**
+     * 检索
+     *
+     * @param indexVO 查询参数
+     * @return 检索结果
+     */
+    List<ConceptBaseDTO> index(IndexVO indexVO);
 }

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

@@ -1,10 +1,12 @@
 package com.diagbot.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptRes;
 import com.diagbot.dto.ConceptWithOrderRes;
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.wrapper.ConceptWrapper;
+import com.diagbot.vo.IndexVO;
 
 import java.util.List;
 
@@ -34,4 +36,13 @@ public interface ConceptService extends IService<Concept> {
      * @return 起点术语和终点术语以及排序号
      */
     List<ConceptWithOrderRes> getConceptWithOrder(ConceptWrapper conceptWrapper);
+
+
+    /**
+     * 检索
+     *
+     * @param indexVO 查询参数
+     * @return 检索结果
+     */
+    List<ConceptBaseDTO> index(IndexVO indexVO);
 }

+ 7 - 0
knowledgeman-service/src/main/java/com/diagbot/service/impl/ConceptServiceImpl.java

@@ -1,12 +1,14 @@
 package com.diagbot.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptRes;
 import com.diagbot.dto.ConceptWithOrderRes;
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.wrapper.ConceptWrapper;
 import com.diagbot.mapper.ConceptMapper;
 import com.diagbot.service.ConceptService;
+import com.diagbot.vo.IndexVO;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -43,4 +45,9 @@ public class ConceptServiceImpl extends ServiceImpl<ConceptMapper, Concept> impl
     public List<ConceptWithOrderRes> getConceptWithOrder(ConceptWrapper conceptWrapper) {
         return baseMapper.getConceptWithOrder(conceptWrapper);
     }
+
+    @Override
+    public List<ConceptBaseDTO> index(IndexVO indexVO) {
+        return baseMapper.index(indexVO);
+    }
 }

+ 23 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/ConceptExistVO.java

@@ -0,0 +1,23 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2019/5/6 18:50
+ */
+@Getter
+@Setter
+public class ConceptExistVO {
+    @ApiModelProperty(value = "名称列表")
+    private List<String> nameList;
+    @ApiModelProperty(value = "类型")
+    private Integer type;
+    @ApiModelProperty(hidden = true)
+    private Integer libType;
+}

+ 24 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/IndexVO.java

@@ -0,0 +1,24 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @description:
+ * @author: zhoutg
+ * @date: 2019/5/10 10:47
+ */
+@Getter
+@Setter
+public class IndexVO {
+    @NotBlank(message = "名称不能为空")
+    private String name;
+    @NotNull(message = "类型不能为空")
+    private Integer type;
+    @ApiModelProperty(hidden = true)
+    private Integer libType;
+}

+ 67 - 0
knowledgeman-service/src/main/java/com/diagbot/web/CommonConceptController.java

@@ -0,0 +1,67 @@
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.ConceptBaseDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.ConceptFacade;
+import com.diagbot.vo.ConceptExistVO;
+import com.diagbot.vo.IndexVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Weixuan Huang
+ * @since 2019-01-30
+ */
+@RestController
+@RequestMapping("/commonconcept")
+@SuppressWarnings("unchecked")
+@Api(value = "概念公共API", tags = { "知识库标准化-概念公共API" })
+public class CommonConceptController {
+	
+    @Autowired
+    private ConceptFacade conceptFacade;
+
+    /**
+     * 根据名称和类型获取概念列表Map
+     *
+     * @param conceptExistVO 搜索参数
+     * @return 术语id和术语 Map
+     */
+    @ApiOperation(value = "知识库标准化-根据名称和类型获取概念列表Map[by:zhoutg]",
+            notes = "nameList: 名称列表<br>" +
+                    "type: 类型")
+    @PostMapping("/getConceptMapByNameAndType")
+    @SysLogger("getConceptMapByNameAndType")
+    public RespDTO<Map<String, Long>> getConceptMapByNameAndType(@RequestBody ConceptExistVO conceptExistVO){
+        return RespDTO.onSuc(conceptFacade.getConceptMap(conceptExistVO));
+    }
+
+
+    /**
+     * 检索
+     *
+     * @param indexVO 搜索参数
+     * @return 名称和概念id
+     */
+    @ApiOperation(value = "知识库标准化-根据名称和类型获取概念列表[by:zhoutg]",
+            notes = "name: 搜索内容<br>" +
+                    "type:类型(1:症状 2:既往史,3:其他史,4:查体,5:化验),必填<br>")
+    @PostMapping("/index")
+    @SysLogger("index")
+    public RespDTO<List<ConceptBaseDTO>> index(@RequestBody IndexVO indexVO){
+        return RespDTO.onSuc(conceptFacade.indexFac(indexVO));
+    }
+}

+ 11 - 0
knowledgeman-service/src/main/resources/mapper/ConceptMapper.xml

@@ -145,4 +145,15 @@
 		ORDER BY t4.order_no
 	</select>
 
+
+	<select id="index" resultType="com.diagbot.dto.ConceptBaseDTO">
+        SELECT b.id conceptId, b.lib_name name
+        FROM `kl_library_info` a, kl_concept b
+        where b.is_deleted = 'N' and a.is_deleted = 'N' and a.concept_id = b.id and a.is_concept = 1
+		<if test="libType != null">
+			and b.lib_type =  #{libType}
+		</if>
+        and (a.name like concat('%',#{name},'%')
+              or a.spell like concat('%',#{name},'%'))
+    </select>
 </mapper>