Browse Source

Merge branch 'dev/KLBstand' of http://192.168.2.236:10080/gaodm/diagbotcloud.git into dev/KLBstand

wangfeng 6 years ago
parent
commit
1fca79354e
27 changed files with 416 additions and 458 deletions
  1. 15 0
      aipt-service/src/main/java/com/diagbot/dto/FeatureConceptDTO.java
  2. 65 0
      aipt-service/src/main/java/com/diagbot/facade/FeatureFacade.java
  3. 36 0
      aipt-service/src/main/java/com/diagbot/web/FeatureController.java
  4. 15 18
      icss-service/src/main/java/com/diagbot/client/AiptServiceClient.java
  5. 21 20
      icss-service/src/main/java/com/diagbot/client/hystrix/AiptServiceHystrix.java
  6. 16 0
      icss-service/src/main/java/com/diagbot/dto/FeatureConceptDTO.java
  7. 27 45
      icss-service/src/main/java/com/diagbot/facade/FeatureFacade.java
  8. 3 3
      icss-service/src/main/java/com/diagbot/web/FeatureController.java
  9. 3 0
      icss-service/src/main/java/com/diagbot/web/PushController.java
  10. 8 6
      knowledgeman-service/src/main/java/com/diagbot/client/UserServiceClient.java
  11. 13 7
      knowledgeman-service/src/main/java/com/diagbot/client/hystrix/UserServiceHystrix.java
  12. 28 2
      knowledgeman-service/src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  13. 30 0
      knowledgeman-service/src/main/java/com/diagbot/dto/GetAllForRelationDTO.java
  14. 21 0
      knowledgeman-service/src/main/java/com/diagbot/entity/Token.java
  15. 0 142
      knowledgeman-service/src/main/java/com/diagbot/entity/User.java
  16. 12 0
      knowledgeman-service/src/main/java/com/diagbot/facade/ConceptFacade.java
  17. 0 13
      knowledgeman-service/src/main/java/com/diagbot/facade/SysLogFacade.java
  18. 11 2
      knowledgeman-service/src/main/java/com/diagbot/mapper/ConceptMapper.java
  19. 0 16
      knowledgeman-service/src/main/java/com/diagbot/mapper/SysLogMapper.java
  20. 0 15
      knowledgeman-service/src/main/java/com/diagbot/service/SysLogService.java
  21. 0 19
      knowledgeman-service/src/main/java/com/diagbot/service/impl/SysLogServiceImpl.java
  22. 53 0
      knowledgeman-service/src/main/java/com/diagbot/vo/GetAllForRelationVO.java
  23. 0 21
      knowledgeman-service/src/main/java/com/diagbot/vo/SysLogVo.java
  24. 9 0
      knowledgeman-service/src/main/java/com/diagbot/web/ConceptController.java
  25. 0 106
      knowledgeman-service/src/main/java/com/diagbot/web/SysLogController.java
  26. 30 1
      knowledgeman-service/src/main/resources/mapper/ConceptMapper.xml
  27. 0 22
      knowledgeman-service/src/main/resources/mapper/SysLogMapper.xml

+ 15 - 0
aipt-service/src/main/java/com/diagbot/dto/FeatureConceptDTO.java

@@ -0,0 +1,15 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/5/13 15:41
+ */
+@Getter
+@Setter
+public class FeatureConceptDTO extends ConceptBaseDTO {
+    private Integer libType;
+}

+ 65 - 0
aipt-service/src/main/java/com/diagbot/facade/FeatureFacade.java

@@ -0,0 +1,65 @@
+package com.diagbot.facade;
+
+import com.diagbot.dto.FeatureConceptDTO;
+import com.diagbot.entity.Concept;
+import com.diagbot.enums.ConceptTypeEnum;
+import com.diagbot.enums.LexiconTypeEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ListUtil;
+import com.google.common.collect.Lists;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/5/13 15:38
+ */
+@Component
+public class FeatureFacade {
+    @Autowired
+    private NLPFacade nlpFacade;
+    @Autowired
+    private ConceptFacade conceptFacade;
+
+    /**
+     * 症状关键词提取
+     *
+     * @param text
+     * @return
+     */
+    public List<FeatureConceptDTO> getSymptomFeature(String text) {
+        List<FeatureConceptDTO> symptomFeatureDTOList = Lists.newLinkedList();
+        List<Map<String, Object>> symptomFeatureList = nlpFacade.symptomFeaturePageData(text);
+        List<String> symptomNameList = Lists.newLinkedList();
+        for (Map<String, Object> symptomFeature : symptomFeatureList) {
+            if (symptomFeature != null) {
+                String symptomName = symptomFeature.get("feature_name").toString();
+                if (!symptomNameList.contains(symptomName) && symptomFeature.get("feature_type").toString().equals("1")) {
+                    symptomNameList.add(symptomName);
+                }
+            }
+        }
+        if (!ListUtil.isNotEmpty(symptomFeatureList)) {
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "未提取到特征词");
+        }
+        List<Concept> concepts = conceptFacade.getListByNamesAndType(symptomNameList, LexiconTypeEnum.SYMPTOM.getKey());
+        Map<String, Concept> conceptMap = EntityUtil.makeEntityMap(concepts, "libName");
+        for (String name : symptomNameList) {
+            FeatureConceptDTO featureConceptDTO = new FeatureConceptDTO();
+            featureConceptDTO.setName(name);
+            featureConceptDTO.setLibType(ConceptTypeEnum.Symptom.getKey());
+            if (conceptMap.containsKey(name) && conceptMap.get(name) != null) {
+                Concept concept = conceptMap.get(name);
+                featureConceptDTO.setConceptId(concept.getId());
+            }
+            symptomFeatureDTOList.add(featureConceptDTO);
+        }
+        return symptomFeatureDTOList;
+    }
+}

+ 36 - 0
aipt-service/src/main/java/com/diagbot/web/FeatureController.java

@@ -0,0 +1,36 @@
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.FeatureConceptDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.FeatureFacade;
+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.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/5/13 15:53
+ */
+@RestController
+@RequestMapping("/feature")
+@Api(value = "文本特征词提取相关API", tags = { "文本特征词提取相关API" })
+public class FeatureController {
+    @Autowired
+    private FeatureFacade featureFacade;
+
+    @ApiOperation(value = "症状特征词提取", notes = "")
+    @PostMapping("/symptomFeature")
+    @SysLogger("symptomFeature")
+    public RespDTO<List<FeatureConceptDTO>> getSymptomFeature(@RequestParam("text") String text) {
+        List<FeatureConceptDTO> data = featureFacade.getSymptomFeature(text);
+        return RespDTO.onSuc(data);
+    }
+}

+ 15 - 18
icss-service/src/main/java/com/diagbot/client/AiptServiceClient.java

@@ -1,15 +1,5 @@
 package com.diagbot.client;
 
-import java.util.List;
-import java.util.Map;
-
-import javax.validation.Valid;
-
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestParam;
-
 import com.diagbot.client.bean.CalculateData;
 import com.diagbot.client.bean.ConceptBaseVO;
 import com.diagbot.client.bean.ConceptExistVO;
@@ -26,10 +16,10 @@ import com.diagbot.dto.DisScaleDTO;
 import com.diagbot.dto.DisTypeDTO;
 import com.diagbot.dto.DiseaseIcdDTO;
 import com.diagbot.dto.EvaluationDTO;
+import com.diagbot.dto.FeatureConceptDTO;
 import com.diagbot.dto.GetTopPatientInfoDTO;
 import com.diagbot.dto.IndexConfigAndDataDTO;
 import com.diagbot.dto.IndexConfigDTO;
-import com.diagbot.dto.IndexDataDTO;
 import com.diagbot.dto.PushDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.ScaleContent;
@@ -44,6 +34,14 @@ import com.diagbot.vo.IndexConfigdiseaseNameVO;
 import com.diagbot.vo.IndexDataFindVO;
 import com.diagbot.vo.IndexDataSaveVO;
 import com.diagbot.vo.RetrievalVO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @Description:调用中间层服务
@@ -58,8 +56,8 @@ public interface AiptServiceClient {
     @PostMapping(value = "/clinicaldata/scale")
     RespDTO<Map<String, Object>> scale(@RequestBody SearchData searchData);
 
-    @PostMapping(value = "/nlpService/symptomFeature")
-    RespDTO<List<Map<String, Object>>> symptomFeaturePageData(@RequestParam("text") String text);
+    @PostMapping(value = "/feature/symptomFeature")
+    RespDTO<List<FeatureConceptDTO>> symptomFeature(@RequestParam("text") String text);
 
     @PostMapping("/clinicaldata/highRisk")
     RespDTO<GdbResponse> highRisk(@RequestBody SearchData searchData);
@@ -186,19 +184,18 @@ public interface AiptServiceClient {
      */
     @PostMapping("/concept/retrivelConceptInfo")
     RespDTO<List<ConceptRetrievalDTO>> retrivelConceptInfo(@RequestBody @Valid RetrievalVO retrievalVO);
+
     /**
-     * 
      * @param indexDataFindVO
      * @return
      */
     @PostMapping(value = "/indexData/getIndexDatas")
-	RespDTO<IndexConfigAndDataDTO> getIndexDatas(@RequestBody IndexDataFindVO indexDataFindVO);
-	 
+    RespDTO<IndexConfigAndDataDTO> getIndexDatas(@RequestBody IndexDataFindVO indexDataFindVO);
+
     /**
-     * 
      * @param indexDataSaveVO
      * @return
      */
-	@PostMapping(value = "/indexData/saveIndexDatas")
+    @PostMapping(value = "/indexData/saveIndexDatas")
     RespDTO<Boolean> saveIndexDatas(@RequestBody IndexDataSaveVO indexDataSaveVO);
 }

+ 21 - 20
icss-service/src/main/java/com/diagbot/client/hystrix/AiptServiceHystrix.java

@@ -1,14 +1,5 @@
 package com.diagbot.client.hystrix;
 
-import java.util.List;
-import java.util.Map;
-
-import javax.validation.Valid;
-
-import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestParam;
-
 import com.diagbot.client.AiptServiceClient;
 import com.diagbot.client.bean.CalculateData;
 import com.diagbot.client.bean.ConceptBaseVO;
@@ -25,6 +16,7 @@ import com.diagbot.dto.DisScaleDTO;
 import com.diagbot.dto.DisTypeDTO;
 import com.diagbot.dto.DiseaseIcdDTO;
 import com.diagbot.dto.EvaluationDTO;
+import com.diagbot.dto.FeatureConceptDTO;
 import com.diagbot.dto.GetTopPatientInfoDTO;
 import com.diagbot.dto.IndexConfigAndDataDTO;
 import com.diagbot.dto.IndexConfigDTO;
@@ -42,8 +34,14 @@ import com.diagbot.vo.IndexConfigdiseaseNameVO;
 import com.diagbot.vo.IndexDataFindVO;
 import com.diagbot.vo.IndexDataSaveVO;
 import com.diagbot.vo.RetrievalVO;
-
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @Description:调用中间层服务
@@ -66,7 +64,7 @@ public class AiptServiceHystrix implements AiptServiceClient {
     }
 
     @Override
-    public RespDTO<List<Map<String, Object>>> symptomFeaturePageData(@RequestParam("text") String text) {
+    public RespDTO<List<FeatureConceptDTO>> symptomFeature(@RequestParam("text") String text) {
         log.error("【hystrix】调用{}异常", "symptomFeaturePageData");
         return null;
     }
@@ -238,25 +236,28 @@ public class AiptServiceHystrix implements AiptServiceClient {
         log.error("【hystrix】调用{}异常", "retrivelConceptInfo");
         return null;
     }
+
     /**
      * 指标获取
+     *
      * @param indexDataFindVO
      * @return
      */
     @Override
-	public RespDTO<IndexConfigAndDataDTO> getIndexDatas(@Valid IndexDataFindVO indexDataFindVO) {
-		log.error("【hystrix】调用{}异常", "getIndexDatas");
-		return null;
-	}
+    public RespDTO<IndexConfigAndDataDTO> getIndexDatas(@Valid IndexDataFindVO indexDataFindVO) {
+        log.error("【hystrix】调用{}异常", "getIndexDatas");
+        return null;
+    }
 
     /**
      * 指标保存
+     *
      * @param indexDataSaveVO
      * @return
      */
-	@Override
-	public RespDTO<Boolean> saveIndexDatas(@Valid IndexDataSaveVO indexDataSaveVO) {
-		log.error("【hystrix】调用{}异常", "saveIndexDatas");
-		return null;
-	}
+    @Override
+    public RespDTO<Boolean> saveIndexDatas(@Valid IndexDataSaveVO indexDataSaveVO) {
+        log.error("【hystrix】调用{}异常", "saveIndexDatas");
+        return null;
+    }
 }

+ 16 - 0
icss-service/src/main/java/com/diagbot/dto/FeatureConceptDTO.java

@@ -0,0 +1,16 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/5/13 15:41
+ */
+@Getter
+@Setter
+public class FeatureConceptDTO extends ConceptBaseDTO {
+    private Integer libType;
+    private Long id;
+}

+ 27 - 45
icss-service/src/main/java/com/diagbot/facade/FeatureFacade.java

@@ -2,22 +2,20 @@ package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.client.AiptServiceClient;
+import com.diagbot.dto.FeatureConceptDTO;
 import com.diagbot.dto.RespDTO;
-import com.diagbot.dto.SymptomFeatureDTO;
 import com.diagbot.entity.QuestionInfo;
-import com.diagbot.enums.DisTypeEnum;
+import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
-import com.diagbot.enums.QuestionTypeEnum;
-import com.diagbot.exception.CommonErrorCode;
-import com.diagbot.exception.CommonException;
+import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.RespDTOUtil;
-import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @Description:
@@ -30,8 +28,6 @@ public class FeatureFacade {
     private AiptServiceClient aiptServiceClient;
     @Autowired
     private QuestionFacade questionFacade;
-    @Autowired
-    private DisTypeFacade disTypeFacade;
 
     /**
      * 症状关键词提取
@@ -39,48 +35,34 @@ public class FeatureFacade {
      * @param text
      * @return
      */
-    public List<SymptomFeatureDTO> getSymptomFeature(String text) {
-        List<SymptomFeatureDTO> symptomFeatureDTOList = Lists.newLinkedList();
-        RespDTO<List<Map<String, Object>>> res = aiptServiceClient.symptomFeaturePageData(text);
+    public List<FeatureConceptDTO> getSymptomFeature(String text) {
+        RespDTO<List<FeatureConceptDTO>> res = aiptServiceClient.symptomFeature(text);
         RespDTOUtil.respNGDealCover(res, "AI没有返回结果");
-        List<Map<String, Object>> symptomFeatureList = res.data;
-        List<String> symptomNameList = Lists.newLinkedList();
-        for (Map<String, Object> symptomFeature : symptomFeatureList) {
-            if (symptomFeature != null) {
-                symptomNameList.add(symptomFeature.get("feature_name").toString());
-            }
-        }
-        if (!ListUtil.isNotEmpty(symptomFeatureList)) {
-            throw new CommonException(CommonErrorCode.NOT_EXISTS, "未提取到特征词");
-        }
+        List<FeatureConceptDTO> symptomFeatureList = res.data;
+        symptomFeatureList = addQuestionId(symptomFeatureList, ConceptTypeEnum.Symptom.getKey());
+        return symptomFeatureList;
+    }
+
+    /**
+     * 概念关联标签,添加标签id
+     *
+     * @param concepts
+     * @param type
+     * @return
+     */
+    public List<FeatureConceptDTO> addQuestionId(List<FeatureConceptDTO> concepts, Integer type) {
         QueryWrapper<QuestionInfo> questionInfoQueryWrapper = new QueryWrapper<>();
-        questionInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).
-                in("tag_name", symptomNameList).
-                and(i -> i.eq("type", QuestionTypeEnum.Symptom.getKey()).or().eq("type", QuestionTypeEnum.Disease.getKey())).
-                eq("item_type", 0);
+        List<String> nameList = concepts.stream().map(concept -> concept.getName()).collect(Collectors.toList());
+        questionInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).in("tag_name", nameList).eq("type", type);
         List<QuestionInfo> questionInfoList = questionFacade.list(questionInfoQueryWrapper);
-        for (QuestionInfo questionInfo : questionInfoList) {
-            SymptomFeatureDTO symptomFeatureDTO = new SymptomFeatureDTO();
-            //特征提取出诊断
-            if (questionInfo.getType().equals(QuestionTypeEnum.Disease.getKey())) {
-                //判断是否有“复诊”关键字
-                if (symptomNameList.contains("复诊")) {
-                    //判断是否为慢病
-                    Boolean isChronic = disTypeFacade.judgeByDisName(questionInfo.getTagName(), DisTypeEnum.CHRONIC.getKey());
-                    if (isChronic) {
-                        symptomFeatureDTO.setDisType(DisTypeEnum.CHRONIC.getKey());
-                    }
-                } else {
-                    //没有提取到“复诊”这个特征,诊断不处理
-                    continue;
+        if (ListUtil.isNotEmpty(questionInfoList)) {
+            Map<String, QuestionInfo> questionInfoMap = EntityUtil.makeEntityMap(questionInfoList, "tagName");
+            for (FeatureConceptDTO concept : concepts) {
+                if (questionInfoMap.containsKey(concept.getName())) {
+                    concept.setId(questionInfoMap.get(concept.getName()).getId());
                 }
             }
-            symptomFeatureDTO.setId(questionInfo.getId());
-            symptomFeatureDTO.setTagName(questionInfo.getTagName());
-            symptomFeatureDTO.setName(questionInfo.getName());
-            symptomFeatureDTO.setType(questionInfo.getType());
-            symptomFeatureDTOList.add(symptomFeatureDTO);
         }
-        return symptomFeatureDTOList;
+        return concepts;
     }
 }

+ 3 - 3
icss-service/src/main/java/com/diagbot/web/FeatureController.java

@@ -1,8 +1,8 @@
 package com.diagbot.web;
 
 import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.FeatureConceptDTO;
 import com.diagbot.dto.RespDTO;
-import com.diagbot.dto.SymptomFeatureDTO;
 import com.diagbot.facade.FeatureFacade;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -22,7 +22,7 @@ import java.util.List;
 @RestController
 @RequestMapping("/feature")
 @SuppressWarnings("unchecked")
-@Api(value = "特征词提取相关API", tags = { "特征词提取相关API" })
+@Api(value = "特征词提取相关API", tags = { "知识库标准化-特征词提取相关API" })
 public class FeatureController {
 
     @Autowired
@@ -32,7 +32,7 @@ public class FeatureController {
             notes = "text: 症状文本描述(必填)<br>")
     @PostMapping("/getSymptomFeature")
     @SysLogger("getSymptomFeature")
-    public RespDTO<List<SymptomFeatureDTO>> getSymptomFeature(@RequestParam("text") String text) {
+    public RespDTO<List<FeatureConceptDTO>> getSymptomFeature(@RequestParam("text") String text) {
         return RespDTO.onSuc(featureFacade.getSymptomFeature(text));
     }
 }

+ 3 - 0
icss-service/src/main/java/com/diagbot/web/PushController.java

@@ -18,6 +18,7 @@ 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 springfox.documentation.annotations.ApiIgnore;
 
 import javax.validation.Valid;
 import java.util.Map;
@@ -132,6 +133,7 @@ public class PushController {
         return RespDTO.onSuc(pushFacade.pushInner(pushVO));
     }
 
+    @ApiIgnore
     @ApiOperation(value = "推理接口(大数据结果)[by:zhaops]",
             notes = "age: 年龄(必填)<br>" +
                     "sex:性别(必填),1:男,2:女<br>" +
@@ -159,6 +161,7 @@ public class PushController {
         return RespDTO.onSuc(pushFacade.pushAipt(searchData));
     }
 
+    @ApiIgnore
     @ApiOperation(value = "推理接口(快易检)[by:zhaops]",
             notes = "age: 年龄(必填)<br>" +
                     "sex:性别(必填),1:男,2:女<br>" +

+ 8 - 6
knowledgeman-service/src/main/java/com/diagbot/client/UserServiceClient.java

@@ -1,14 +1,14 @@
 package com.diagbot.client;
 
-import java.util.List;
-import java.util.Map;
-
+import com.diagbot.client.hystrix.UserServiceHystrix;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.Token;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
-import com.diagbot.client.hystrix.UserServiceHystrix;
-import com.diagbot.dto.RespDTO;
+import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -21,7 +21,9 @@ public interface UserServiceClient {
 
     @PostMapping(value = "/user/getUserInfoByIds")
     RespDTO<Map<String, String>> getUserInfoByIds(@RequestBody List<String> ids);
-    
+
+    @PostMapping("/user/verifyToken")
+    RespDTO<Boolean> verifyToken(@RequestBody Token token);
 }
 
 

+ 13 - 7
knowledgeman-service/src/main/java/com/diagbot/client/hystrix/UserServiceHystrix.java

@@ -1,15 +1,14 @@
 package com.diagbot.client.hystrix;
 
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.RequestBody;
-
 import com.diagbot.client.UserServiceClient;
 import com.diagbot.dto.RespDTO;
-
+import com.diagbot.entity.Token;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -26,4 +25,11 @@ public class UserServiceHystrix implements UserServiceClient {
         log.error("【hystrix】调用{}异常", "getUserInfoByIds");
         return null;
     }
+
+    @Override
+    public RespDTO<Boolean> verifyToken(Token token) {
+        log.error("【hystrix】调用{}异常", "verifyToken");
+        return null;
+    }
+
 }

+ 28 - 2
knowledgeman-service/src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -1,17 +1,26 @@
 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;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.Collection;
 
-
 /**
  * @Description: 自定义权限拦截
  * @author: gaodm
@@ -19,6 +28,9 @@ import java.util.Collection;
  */
 @Service
 public class UrlAccessDecisionManager implements AccessDecisionManager {
+    @Autowired
+    private UserServiceClient userServiceClient;
+
     @Override
     public void decide(Authentication authentication, Object object, Collection<ConfigAttribute> configAttributes) throws AccessDeniedException, InsufficientAuthenticationException {
 //        HttpServletRequest request = ((FilterInvocation) object).getHttpRequest();
@@ -29,6 +41,20 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
 //        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];
@@ -54,7 +80,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
         return true;
     }
 
-    private Boolean matchPermitAllUrl(HttpServletRequest request){
+    private Boolean matchPermitAllUrl(HttpServletRequest request) {
         if (matchers("/swagger/**", request)
                 || matchers("/v2/**", request)
                 || matchers("/swagger-ui.html/**", request)

+ 30 - 0
knowledgeman-service/src/main/java/com/diagbot/dto/GetAllForRelationDTO.java

@@ -0,0 +1,30 @@
+package com.diagbot.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description
+ * @author rgb
+ * @time 2018年12月5日下午5:00:34
+ */
+@Getter
+@Setter
+public class GetAllForRelationDTO {
+	
+	/**
+	 * 概念id
+	 */
+	@ApiModelProperty(value="概念id")
+	private Long conceptId;
+	
+	/**
+	 * 概念名称
+	 */
+	@ApiModelProperty(value="概念名称")
+	private String conceptName;
+	
+	
+
+}

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

@@ -0,0 +1,21 @@
+package com.diagbot.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @Description: token
+ * @Author: ztg
+ * @Date: 2018/9/19 13:14
+ */
+@Getter
+@Setter
+public class Token implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private String token;
+
+}

+ 0 - 142
knowledgeman-service/src/main/java/com/diagbot/entity/User.java

@@ -1,142 +0,0 @@
-package com.diagbot.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * <p>
- * 系统用户表
- * </p>
- *
- * @author gaodm
- * @since 2018-08-30
- */
-@TableName("sys_user")
-public class User implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 用户ID
-     */
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    /**
-     * 是否删除,N:未删除,Y:删除
-     */
-    private String isDeleted;
-
-    /**
-     * 记录创建时间
-     */
-    private Date gmtCreate;
-
-    /**
-     * 记录修改时间,如果时间是1970年则表示纪录未修改
-     */
-    private Date gmtModified;
-
-    /**
-     * 创建人,0表示无创建人值
-     */
-    private String creator;
-
-    /**
-     * 修改人,如果为0则表示纪录未修改
-     */
-    private String modifier;
-
-    /**
-     * 用户密码
-     */
-    private String password;
-
-    /**
-     * 用户名
-     */
-    private String username;
-
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getIsDeleted() {
-        return isDeleted;
-    }
-
-    public void setIsDeleted(String isDeleted) {
-        this.isDeleted = isDeleted;
-    }
-
-    public Date getGmtCreate() {
-        return gmtCreate;
-    }
-
-    public void setGmtCreate(Date gmtCreate) {
-        this.gmtCreate = gmtCreate;
-    }
-
-    public Date getGmtModified() {
-        return gmtModified;
-    }
-
-    public void setGmtModified(Date gmtModified) {
-        this.gmtModified = gmtModified;
-    }
-
-    public String getCreator() {
-        return creator;
-    }
-
-    public void setCreator(String creator) {
-        this.creator = creator;
-    }
-
-    public String getModifier() {
-        return modifier;
-    }
-
-    public void setModifier(String modifier) {
-        this.modifier = modifier;
-    }
-
-    public String getPassword() {
-        return password;
-    }
-
-    public void setPassword(String password) {
-        this.password = password;
-    }
-
-    public String getUsername() {
-        return username;
-    }
-
-    public void setUsername(String username) {
-        this.username = username;
-    }
-
-    @Override
-    public String toString() {
-        return "User{" +
-                "id=" + id +
-                ", isDeleted=" + isDeleted +
-                ", gmtCreate=" + gmtCreate +
-                ", gmtModified=" + gmtModified +
-                ", creator=" + creator +
-                ", modifier=" + modifier +
-                ", password=" + password +
-                ", username=" + username +
-                "}";
-    }
-}

+ 12 - 0
knowledgeman-service/src/main/java/com/diagbot/facade/ConceptFacade.java

@@ -28,6 +28,7 @@ import com.diagbot.client.UserServiceClient;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptRes;
 import com.diagbot.dto.GetAllConceptDTO;
+import com.diagbot.dto.GetAllForRelationDTO;
 import com.diagbot.dto.GetAllInformationDTO;
 import com.diagbot.dto.GetAllLisConceptDTO;
 import com.diagbot.dto.GetConceptInfoDTO;
@@ -62,6 +63,7 @@ import com.diagbot.vo.ConceptExistVO;
 import com.diagbot.vo.ConceptSearchVO;
 import com.diagbot.vo.ConceptTypeVO;
 import com.diagbot.vo.GetAllConceptVO;
+import com.diagbot.vo.GetAllForRelationVO;
 import com.diagbot.vo.GetAllInformationVO;
 import com.diagbot.vo.GetAllLisConceptVO;
 import com.diagbot.vo.GetConceptInfoDetailVO;
@@ -157,6 +159,16 @@ public class ConceptFacade extends ConceptServiceImpl {
 
         return getAllConceptDTOList;
     }
+    
+    /**
+     * 获取所有概念(术语关系维护时筛选使用)
+     *
+     * @param getAllForRelationVO
+     * @return
+     */
+    public List<GetAllForRelationDTO> getAllForRelation(GetAllForRelationVO getAllForRelationVO) {
+    	return this.baseMapper.getAllForRelation(getAllForRelationVO);
+    }
 
     /**
      * 获取医学术语命名列表

+ 0 - 13
knowledgeman-service/src/main/java/com/diagbot/facade/SysLogFacade.java

@@ -1,13 +0,0 @@
-package com.diagbot.facade;
-
-import com.diagbot.service.impl.SysLogServiceImpl;
-import org.springframework.stereotype.Component;
-
-/**
- * @Description: 用户日志业务层
- * @author: gaodm
- * @time: 2018/8/6 9:11
- */
-@Component
-public class SysLogFacade extends SysLogServiceImpl {
-}

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

@@ -1,17 +1,19 @@
 package com.diagbot.mapper;
 
+import java.util.List;
+
 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.GetAllForRelationDTO;
 import com.diagbot.dto.GetAllLisConceptDTO;
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.wrapper.ConceptWrapper;
+import com.diagbot.vo.GetAllForRelationVO;
 import com.diagbot.vo.GetAllLisConceptVO;
 import com.diagbot.vo.IndexVO;
 
-import java.util.List;
-
 /**
  * <p>
  * Mapper 接口
@@ -55,4 +57,11 @@ public interface ConceptMapper extends BaseMapper<Concept> {
      * @return 检索结果
      */
     List<ConceptBaseDTO> index(IndexVO indexVO);
+    
+    /**
+     * 获取所有概念(术语关系维护时筛选使用)
+     * @param getAllForRelationVO
+     * @return
+     */
+    List<GetAllForRelationDTO> getAllForRelation(GetAllForRelationVO getAllForRelationVO);
 }

+ 0 - 16
knowledgeman-service/src/main/java/com/diagbot/mapper/SysLogMapper.java

@@ -1,16 +0,0 @@
-package com.diagbot.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.diagbot.entity.SysLog;
-
-/**
- * <p>
- * Mapper 接口
- * </p>
- *
- * @author gaodm
- * @since 2018-08-02
- */
-public interface SysLogMapper extends BaseMapper<SysLog> {
-
-}

+ 0 - 15
knowledgeman-service/src/main/java/com/diagbot/service/SysLogService.java

@@ -1,15 +0,0 @@
-package com.diagbot.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.diagbot.entity.SysLog;
-
-/**
- * <p>
- * 服务类
- * </p>
- *
- * @author gaodm
- * @since 2018-08-02
- */
-public interface SysLogService extends IService<SysLog> {
-}

+ 0 - 19
knowledgeman-service/src/main/java/com/diagbot/service/impl/SysLogServiceImpl.java

@@ -1,19 +0,0 @@
-package com.diagbot.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.diagbot.entity.SysLog;
-import com.diagbot.mapper.SysLogMapper;
-import com.diagbot.service.SysLogService;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author gaodm
- * @since 2018-08-02
- */
-@Service
-public class SysLogServiceImpl extends ServiceImpl<SysLogMapper, SysLog> implements SysLogService {
-}

+ 53 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/GetAllForRelationVO.java

@@ -0,0 +1,53 @@
+package com.diagbot.vo;
+
+import javax.validation.constraints.NotNull;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: Weixuan Huang
+ * @time: 2019/3/14 16:03
+ */
+@Getter
+@Setter
+public class GetAllForRelationVO {
+    
+    /**
+     * 名称
+     */
+    @ApiModelProperty(value="名称")
+    private String name;
+    
+    /**
+     * 词性id
+     */
+    @ApiModelProperty(value="词性id")
+    private Long typeId;
+    
+    /**
+     * 相关联的概念id
+     */
+    @ApiModelProperty(value="相关联的概念id")
+    @NotNull(message="相关联的概念id必传")
+    private Long conceptId;
+    
+    /**
+     * 关系类型id
+     */
+    @ApiModelProperty(value="关系类型id")
+    @NotNull(message="关系类型id必传")
+    private Long relationId;
+    
+    
+    /**
+     * 是否起始术语,1-是,0-否
+     */
+    @ApiModelProperty(value="是否起始术语,1-是,0-否")
+    @NotNull(message="是否起始术语必传")
+    private Integer isStart;
+
+    
+}

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

@@ -1,21 +0,0 @@
-package com.diagbot.vo;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.Date;
-
-/**
- * @Description:
- * @author: gaodm
- * @time: 2018/8/6 10:16
- */
-@Getter
-@Setter
-public class SysLogVo {
-    private Date createDate;
-    private String ip;
-    private String method;
-    private String operation;
-    private String params;
-}

+ 9 - 0
knowledgeman-service/src/main/java/com/diagbot/web/ConceptController.java

@@ -19,6 +19,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.GetAllConceptDTO;
+import com.diagbot.dto.GetAllForRelationDTO;
 import com.diagbot.dto.GetAllInformationDTO;
 import com.diagbot.dto.GetAllLisConceptDTO;
 import com.diagbot.dto.GetConceptInfoDTO;
@@ -28,6 +29,7 @@ import com.diagbot.vo.AddConceptInfoVO;
 import com.diagbot.vo.ConceptSearchVO;
 import com.diagbot.vo.ConceptTypeVO;
 import com.diagbot.vo.GetAllConceptVO;
+import com.diagbot.vo.GetAllForRelationVO;
 import com.diagbot.vo.GetAllInformationVO;
 import com.diagbot.vo.GetAllLisConceptVO;
 import com.diagbot.vo.GetConceptInfoDetailVO;
@@ -66,6 +68,13 @@ public class ConceptController {
     public RespDTO<List<GetAllConceptDTO>> getAllConcept(@RequestBody GetAllConceptVO getAllConceptVO) {
         return RespDTO.onSuc(conceptFacade.getAllConcept(getAllConceptVO));
     }
+    
+    @ApiOperation(value = "获取所有概念(术语关系维护时筛选使用)[by:rengb]")
+    @PostMapping("/getAllForRelation")
+    @SysLogger("getAllForRelation")
+    public RespDTO<List<GetAllForRelationDTO>> getAllForRelation(@RequestBody GetAllForRelationVO getAllForRelationVO) {
+        return RespDTO.onSuc(conceptFacade.getAllForRelation(getAllForRelationVO));
+    }
 
     @ApiOperation(value = "获取医学术语命名列表[by:rengb]")
     @PostMapping("/getAllInformation")

+ 0 - 106
knowledgeman-service/src/main/java/com/diagbot/web/SysLogController.java

@@ -1,106 +0,0 @@
-package com.diagbot.web;
-
-
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-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.annotation.SysLogger;
-import com.diagbot.dto.RespDTO;
-import com.diagbot.entity.SysLog;
-import com.diagbot.facade.SysLogFacade;
-import com.diagbot.vo.SysLogVo;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-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.Date;
-
-/**
- * @Description: 日志操作控制层
- * @author: gaodm
- * @time: 2018/8/30 10:12
- */
-@RestController
-@RequestMapping("/log")
-public class SysLogController {
-
-    @Autowired
-    private SysLogFacade sysLogFacade;
-
-    /**
-     * 新增日志信息
-     *
-     * @param sysLogVo 新增日志输入参数
-     * @return 新增日志是否成功
-     */
-    @ApiOperation(value = "添加日志", notes = "添加日志")
-    @PostMapping("/add")
-    @SysLogger("postLog")
-    public RespDTO add(@RequestBody SysLogVo sysLogVo){
-        //初始化新增日志信息
-        SysLog sysLog = new SysLog();
-        sysLog.setGmtCreate(new Date());
-        sysLog.setIp(sysLogVo.getIp());
-        sysLog.setMethod(sysLogVo.getMethod());
-        sysLog.setOperation(sysLogVo.getOperation());
-        sysLog.setParams(sysLogVo.getParams());
-        return RespDTO.onSuc(sysLogFacade.save(sysLog)?"添加成功":"添加失败");
-    }
-
-    /**
-     * 删除日志
-     * @param id 日志信息ID
-     * @return 删除是否成功
-     */
-    @ApiOperation(value = "删除日志", notes = "删除日志")
-    @DeleteMapping("/delete/{id}")
-    @SysLogger("deleteLog")
-    public RespDTO delete(@PathVariable(value = "id") Integer id){
-        return RespDTO.onSuc(sysLogFacade.removeById(id)?"删除成功":"删除失败");
-    }
-
-    /**
-     * 修改日志
-     * @param sysLog 修改日志输入参数
-     * @return 修改是否成功
-     */
-    @ApiOperation(value = "修改日志", notes = "修改日志")
-    @PostMapping("/update")
-    @SysLogger("updateLog")
-    public RespDTO update(@RequestBody SysLog sysLog){
-        return RespDTO.onSuc(sysLogFacade.updateById(sysLog)?"修改成功":"修改失败");
-    }
-
-    /**
-     * 获取日志列表
-     * @return 日志列信息
-     */
-    @ApiOperation(value = "获取日志列表", notes = "获取日志列表")
-    @GetMapping("/list")
-    @SysLogger("listLog")
-    public RespDTO list(){
-        Wrapper<SysLog> wrapper = new QueryWrapper<>();
-        return RespDTO.onSuc(sysLogFacade.list(wrapper));
-    }
-
-    /**
-     * 获取日志翻页信息
-     * @return 日志翻页信息
-     */
-    @ApiOperation(value = "获取日志翻页信息", notes = "获取日志翻页信息")
-    @GetMapping("/page")
-    @SysLogger("pageLog")
-    public RespDTO page() {
-        //初始化日志翻页参数
-        IPage<SysLog> wrapper = new Page<>();
-        return RespDTO.onSuc(sysLogFacade.page(wrapper, null));
-    }
-}
-

+ 30 - 1
knowledgeman-service/src/main/resources/mapper/ConceptMapper.xml

@@ -59,7 +59,34 @@
 			)
 		</if>
     </select>
-
+    
+    <select id="getAllForRelation" parameterType="com.diagbot.vo.GetAllForRelationVO" resultType="com.diagbot.dto.GetAllForRelationDTO">
+    	SELECT
+		t1.*
+		FROM
+		(SELECT
+		id AS conceptId,
+		lib_name AS conceptName
+		FROM kl_concept
+		WHERE is_deleted='N' 
+		<if test="name!=null and name!=''">
+			AND lib_name LIKE CONCAT('%',#{name},'%')
+		</if>
+		<if test="typeId!=null">
+			AND lib_type=typeId
+		</if>
+		) t1 
+		LEFT JOIN kl_relation t2
+		<if test="isStart==1">
+			ON t1.conceptId=t2.start_id
+		</if>
+		<if test="isStart==0">
+			ON t1.conceptId=t2.end_id
+		</if>
+		WHERE 1=1 
+		AND t2.relation_id=#{relationId}
+		AND t2.id IS NULL
+    </select>
 
 	<select id="getConcept" resultType="com.diagbot.dto.ConceptRes" parameterType="com.diagbot.entity.wrapper.ConceptWrapper">
 		SELECT
@@ -243,4 +270,6 @@
         and (a.name like concat('%',#{name},'%')
               or a.spell like concat('%',#{name},'%'))
     </select>
+    
+    
 </mapper>

+ 0 - 22
knowledgeman-service/src/main/resources/mapper/SysLogMapper.xml

@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.diagbot.mapper.SysLogMapper">
-
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.diagbot.entity.SysLog">
-        <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="ip" property="ip"/>
-        <result column="sys_type" property="sysType"/>
-        <result column="method" property="method"/>
-        <result column="operation" property="operation"/>
-        <result column="params" property="params"/>
-        <result column="username" property="username"/>
-    </resultMap>
-
-</mapper>