allen 2 vuotta sitten
vanhempi
sitoutus
e555ee52e3

+ 18 - 0
kgraph-common/src/main/java/com/kgraph/common/core/domain/BaseResponse.java

@@ -12,6 +12,7 @@ public class BaseResponse implements Serializable
     private static final long serialVersionUID = 1L;
     private Integer code;
     private String msg;
+    private Object data;
 
     public Integer getCode() {
         return code;
@@ -28,4 +29,21 @@ public class BaseResponse implements Serializable
     public void setMsg(String msg) {
         this.msg = msg;
     }
+
+    public Object getData() {
+        return data;
+    }
+
+    public void setData(Object data) {
+        this.data = data;
+    }
+
+    @Override
+    public String toString() {
+        return "BaseResponse{" +
+                "code=" + code +
+                ", msg='" + msg + '\'' +
+                ", data=" + data +
+                '}';
+    }
 }

+ 1 - 1
kgraph-framework/src/main/java/com/kgraph/framework/config/SecurityConfig.java

@@ -119,7 +119,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 .antMatchers("/**/*.ttf","/**/*.woff").permitAll()
                 .antMatchers("/entcls/tree","/knowledge/class/entcls/tree").permitAll()
                 // TODO 给算法提供的文件下载
-                .antMatchers("/upload/uploadManage/download", "/extractKnowledge","/extract/subTask/saveKnowledge","/kg/create", "/neo4j/relation/*", "/neo4j/entity/*").permitAll()
+                .antMatchers("/upload/uploadManage/download", "/extractKnowledge","/extract/subTask/saveKnowledge","/kg/create", "/kg/getAll", "/neo4j/relation/*", "/neo4j/entity/*").permitAll()
                 // 除上面外的所有请求全部需要鉴权认证
                 .anyRequest().authenticated()
                 .and()

+ 6 - 0
kgraph-graph/pom.xml

@@ -65,6 +65,12 @@
 			<version>2.0.27</version>
 		</dependency>
 
+		<dependency>
+			<groupId>org.apache.httpcomponents</groupId>
+			<artifactId>httpclient</artifactId>
+			<version>4.5.14</version>
+		</dependency>
+
     </dependencies>
 
 </project>

+ 25 - 0
kgraph-graph/src/main/java/com/kgraph/graph/neo4j/controller/KgController.java

@@ -4,12 +4,15 @@ import com.kgraph.common.core.controller.BaseController;
 import com.kgraph.common.core.domain.AjaxResult;
 import com.kgraph.graph.neo4j.DTO.KgDTO;
 import com.kgraph.graph.neo4j.VO.GraphVO;
+import com.kgraph.graph.neo4j.domain.Neo4jRelation;
 import com.kgraph.graph.neo4j.seavice.IKgService;
 import com.kgraph.graph.neo4j.uitils.Neo4j2VOUtils;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
 @RestController
@@ -28,6 +31,23 @@ public class KgController extends BaseController {
         return AjaxResult.success();
     }
 
+    @GetMapping("/getAll")
+    public AjaxResult getAll() {
+        Iterable<Neo4jRelation> relationList = kgService.getAllRelationList();
+        List<KgDTO> list = new ArrayList<>(10000);
+        Iterator<Neo4jRelation> iterator = relationList.iterator();
+        KgDTO kgDTO;
+        while (iterator.hasNext()){
+            Neo4jRelation next = iterator.next();
+            kgDTO = new KgDTO();
+            kgDTO.setStart(next.getStartNode().getName());
+            kgDTO.setEnd(next.getEndNode().getName());
+            kgDTO.setRelation(next.getName());
+            list.add(kgDTO);
+        }
+        return AjaxResult.success(list);
+    }
+
     @GetMapping("/getAllEntityList")
     public AjaxResult getAllEntityList() {
         return AjaxResult.success(kgService.getAllEntityList());
@@ -58,4 +78,9 @@ public class KgController extends BaseController {
         GraphVO graphVO = Neo4j2VOUtils.relation2GraphVO(kgService.getShortestRelationByName(firstName, secondName));
         return AjaxResult.success(graphVO);
     }
+
+    @GetMapping("/question")
+    public AjaxResult question(@RequestParam("text") String question) {
+        return AjaxResult.success(kgService.question(question));
+    }
 }

+ 5 - 1
kgraph-graph/src/main/java/com/kgraph/graph/neo4j/seavice/IKgService.java

@@ -11,9 +11,13 @@ public interface IKgService {
 
     Iterable getAllEntityList();
 
-    Iterable getAllRelationList();
+    Iterable<Neo4jRelation> getAllRelationList();
 
     List<Neo4jRelation> getRelationByName(String firstName, String secondName, int length);
 
     List<Neo4jRelation> getShortestRelationByName(String firstName, String secondName);
+
+    String question(String question);
+
+    String analysis(String question);
 }

+ 77 - 1
kgraph-graph/src/main/java/com/kgraph/graph/neo4j/seavice/impl/KgServiceImpl.java

@@ -1,13 +1,22 @@
 package com.kgraph.graph.neo4j.seavice.impl;
 
+import com.kgraph.common.core.domain.BaseResponse;
+import com.kgraph.common.core.domain.entity.SysDictData;
+import com.kgraph.graph.neo4j.DTO.DocInfo;
 import com.kgraph.graph.neo4j.DTO.KgDTO;
 import com.kgraph.graph.neo4j.domain.Neo4jEntity;
 import com.kgraph.graph.neo4j.domain.Neo4jRelation;
 import com.kgraph.graph.neo4j.mapper.EntityRepository;
 import com.kgraph.graph.neo4j.mapper.RelationRepository;
 import com.kgraph.graph.neo4j.seavice.IKgService;
+import com.kgraph.system.service.ISysDictDataService;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
 import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -15,6 +24,11 @@ import java.util.stream.Collectors;
 @Service
 public class KgServiceImpl implements IKgService {
 
+    protected final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+    @Autowired
+    private ISysDictDataService sysDictDataService;
+
     @Autowired
     private EntityRepository entityRepository;
 
@@ -58,7 +72,7 @@ public class KgServiceImpl implements IKgService {
     }
 
     @Override
-    public Iterable getAllRelationList() {
+    public Iterable<Neo4jRelation> getAllRelationList() {
         return relationRepository.findAll();
     }
 
@@ -118,4 +132,66 @@ public class KgServiceImpl implements IKgService {
     public List<Neo4jRelation> getShortestRelationByName(String firstName, String secondName) {
         return relationRepository.getShortestRelationByName(firstName, secondName);
     }
+
+    @Override
+    public String question(String question) {
+        HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
+        httpRequestFactory.setConnectionRequestTimeout(3000);
+        httpRequestFactory.setConnectTimeout(3000);
+        httpRequestFactory.setReadTimeout(3000);
+        RestTemplate restTemplate = new RestTemplate(httpRequestFactory);
+        String url = "http://localhost:9998/question";
+        SysDictData remoteData = sysDictDataService.getDictDataByTypeAndValue("kg_algorithm", "questionUrl");
+        if (remoteData != null && StringUtils.isNotBlank(remoteData.getRemark())) {
+            url = remoteData.getRemark();
+        }
+        try {
+            BaseResponse response = restTemplate.getForObject(url, BaseResponse.class);
+            if (response == null) {
+                logger.error("question response is null, url:{}", url);
+                throw new RuntimeException("系统异常,请稍后再试");
+            } else if (response.getCode() != 200) {
+                logger.error("question request is error! errorMsg: {}", response.getMsg());
+                throw new RuntimeException("系统异常,请稍后再试");
+            } else {
+                logger.info("question success,url:{}, data:{}" , url, response.getData());
+                return response.getData().toString();
+            }
+        } catch (Exception e) {
+            logger.error("智能问答请求报错", e);
+            throw new RuntimeException("系统异常,请稍后再试");
+        }
+    }
+
+    @Override
+    public String analysis(String path) {
+        HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
+        httpRequestFactory.setConnectionRequestTimeout(3000);
+        httpRequestFactory.setConnectTimeout(3000);
+        httpRequestFactory.setReadTimeout(3000);
+        RestTemplate restTemplate = new RestTemplate(httpRequestFactory);
+        String url = "http://localhost:9998/question";
+        SysDictData remoteData = sysDictDataService.getDictDataByTypeAndValue("kg_algorithm", "questionUrl");
+        if (remoteData != null && StringUtils.isNotBlank(remoteData.getRemark())) {
+            url = remoteData.getRemark();
+        }
+        try {
+            BaseResponse response = restTemplate.getForObject(url, BaseResponse.class);
+            if (response == null) {
+                logger.error("question response is null, url:{}", url);
+                throw new RuntimeException("系统异常,请稍后再试");
+            } else if (response.getCode() != 200) {
+                logger.error("question request is error! errorMsg: {}", response.getMsg());
+                throw new RuntimeException("系统异常,请稍后再试");
+            } else {
+                logger.info("question success,url:{}, data:{}" , url, response.getData());
+                return response.getData().toString();
+            }
+        } catch (Exception e) {
+            logger.error("智能问答请求报错", e);
+            throw new RuntimeException("系统异常,请稍后再试");
+        }
+
+    }
+
 }

+ 6 - 2
kgraph-graph/src/main/java/com/kgraph/graph/suport/service/impl/ExtractKnowledgeSubTaskServiceImpl.java

@@ -169,8 +169,9 @@ public class ExtractKnowledgeSubTaskServiceImpl implements IExtractKnowledgeSubT
                     logger.error("response is null, url:{}, docInfo:{}", finalUrl, docInfo);
                 } else if (response.getCode() != 200) {
                     logger.error("request is error! errorMsg: {}, url:{}, docInfo:{}", response.getMsg(), finalUrl, docInfo);
+                } else {
+                    logger.info("算法推送成功,url:{}, docInfo:{}", finalUrl, docInfo);
                 }
-                logger.info("算法推送成功,url:{}, docInfo:{}", finalUrl, docInfo);
             });
         } catch (Exception e) {
             logger.error("算法请求报错", e);
@@ -250,7 +251,10 @@ public class ExtractKnowledgeSubTaskServiceImpl implements IExtractKnowledgeSubT
 //            JSONObject jsonObject = relationList.getJSONObject(i);
 //            jsonObject.put("id",i);
 //        }
-        extractResultService.insertExtractResult(extractResult.getJSONObject("docInfo").getLong("subTaskId"), extractResult.toString());
+        Long subTaskId = extractResult.getJSONObject("docInfo").getLong("subTaskId");
+        extractResultService.insertExtractResult(subTaskId, extractResult.toString());
+        // 更新task状态
+        updateSubTaskStatusById(subTaskId, ExtractKnowledgeSubTask.TO_BE_REVIEWED, extractResult.getString("msg"));
     }
 
     private void processFail(KgDocDTO kgDocDTO) {