浏览代码

Merge branch 'dev_allen'

allen 2 年之前
父节点
当前提交
4a2f4b4d78
共有 28 个文件被更改,包括 1362 次插入32 次删除
  1. 104 0
      kgraph-admin/src/main/java/com/kgraph/web/controller/EncyclopediaController.java
  2. 24 0
      kgraph-admin/src/main/java/com/kgraph/web/controller/common/CommonController.java
  3. 18 4
      kgraph-admin/src/main/java/com/kgraph/web/domain/Breakdown.java
  4. 83 0
      kgraph-admin/src/main/java/com/kgraph/web/domain/Encyclopedia.java
  5. 61 0
      kgraph-admin/src/main/java/com/kgraph/web/mapper/EncyclopediaMapper.java
  6. 61 0
      kgraph-admin/src/main/java/com/kgraph/web/service/IEncyclopediaService.java
  7. 96 0
      kgraph-admin/src/main/java/com/kgraph/web/service/impl/EncyclopediaServiceImpl.java
  8. 81 0
      kgraph-admin/src/main/resources/mapper/repair/EncyclopediaMapper.xml
  9. 6 1
      kgraph-admin/src/main/resources/mapper/showInfo/BreakdownMapper.xml
  10. 18 0
      kgraph-common/src/main/java/com/kgraph/common/core/domain/BaseResponse.java
  11. 1 1
      kgraph-framework/src/main/java/com/kgraph/framework/config/SecurityConfig.java
  12. 6 0
      kgraph-graph/pom.xml
  13. 5 0
      kgraph-graph/src/main/java/com/kgraph/graph/neo4j/DTO/TextDto.java
  14. 25 0
      kgraph-graph/src/main/java/com/kgraph/graph/neo4j/controller/KgController.java
  15. 5 1
      kgraph-graph/src/main/java/com/kgraph/graph/neo4j/seavice/IKgService.java
  16. 77 1
      kgraph-graph/src/main/java/com/kgraph/graph/neo4j/seavice/impl/KgServiceImpl.java
  17. 27 18
      kgraph-graph/src/main/java/com/kgraph/graph/suport/controller/ExtractKnowledgeSubTaskController.java
  18. 114 0
      kgraph-graph/src/main/java/com/kgraph/graph/suport/controller/ExtractResultController.java
  19. 69 0
      kgraph-graph/src/main/java/com/kgraph/graph/suport/domain/ExtractResult.java
  20. 63 0
      kgraph-graph/src/main/java/com/kgraph/graph/suport/mapper/ExtractResultMapper.java
  21. 5 1
      kgraph-graph/src/main/java/com/kgraph/graph/suport/service/IExtractKnowledgeSubTaskService.java
  22. 65 0
      kgraph-graph/src/main/java/com/kgraph/graph/suport/service/IExtractResultService.java
  23. 61 5
      kgraph-graph/src/main/java/com/kgraph/graph/suport/service/impl/ExtractKnowledgeSubTaskServiceImpl.java
  24. 109 0
      kgraph-graph/src/main/java/com/kgraph/graph/suport/service/impl/ExtractResultServiceImpl.java
  25. 82 0
      kgraph-graph/src/main/resources/mapper/extract/ExtractResultMapper.xml
  26. 15 0
      sql/system.sql
  27. 16 0
      sql/update20030417.sql
  28. 65 0
      sql/update20230420.sql

+ 104 - 0
kgraph-admin/src/main/java/com/kgraph/web/controller/EncyclopediaController.java

@@ -0,0 +1,104 @@
+package com.kgraph.web.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.kgraph.common.annotation.Log;;
+import com.kgraph.common.core.controller.BaseController;;
+import com.kgraph.common.core.domain.AjaxResult;;
+import com.kgraph.common.enums.BusinessType;;
+import com.kgraph.web.domain.Encyclopedia;
+import com.kgraph.web.service.IEncyclopediaService;
+import com.kgraph.common.utils.poi.ExcelUtil;;
+import com.kgraph.common.core.page.TableDataInfo;;
+
+/**
+ * 维修百科Controller
+ * 
+ * @author Allen
+ * @date 2023-04-20
+ */
+@RestController
+@RequestMapping("/repair/encyclopedia")
+public class EncyclopediaController extends BaseController
+{
+    @Autowired
+    private IEncyclopediaService encyclopediaService;
+
+    /**
+     * 查询维修百科列表
+     */
+    @PreAuthorize("@ss.hasPermi('repair:encyclopedia:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(Encyclopedia encyclopedia)
+    {
+        startPage();
+        List<Encyclopedia> list = encyclopediaService.selectEncyclopediaList(encyclopedia);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出维修百科列表
+     */
+    @PreAuthorize("@ss.hasPermi('repair:encyclopedia:export')")
+    @Log(title = "维修百科", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, Encyclopedia encyclopedia)
+    {
+        List<Encyclopedia> list = encyclopediaService.selectEncyclopediaList(encyclopedia);
+        ExcelUtil<Encyclopedia> util = new ExcelUtil<Encyclopedia>(Encyclopedia.class);
+        util.exportExcel(response, list, "维修百科数据");
+    }
+
+    /**
+     * 获取维修百科详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('repair:encyclopedia:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(encyclopediaService.selectEncyclopediaById(id));
+    }
+
+    /**
+     * 新增维修百科
+     */
+    @PreAuthorize("@ss.hasPermi('repair:encyclopedia:add')")
+    @Log(title = "维修百科", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody Encyclopedia encyclopedia)
+    {
+        return toAjax(encyclopediaService.insertEncyclopedia(encyclopedia));
+    }
+
+    /**
+     * 修改维修百科
+     */
+    @PreAuthorize("@ss.hasPermi('repair:encyclopedia:edit')")
+    @Log(title = "维修百科", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody Encyclopedia encyclopedia)
+    {
+        return toAjax(encyclopediaService.updateEncyclopedia(encyclopedia));
+    }
+
+    /**
+     * 删除维修百科
+     */
+    @PreAuthorize("@ss.hasPermi('repair:encyclopedia:remove')")
+    @Log(title = "维修百科", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(encyclopediaService.deleteEncyclopediaByIds(ids));
+    }
+}

+ 24 - 0
kgraph-admin/src/main/java/com/kgraph/web/controller/common/CommonController.java

@@ -1,7 +1,9 @@
 package com.kgraph.web.controller.common;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
@@ -99,6 +101,28 @@ public class CommonController
         }
     }
 
+    @PostMapping("/wangEditorUpload")
+    public AjaxResult wangEditorUpload(MultipartFile file) throws Exception {
+        try {
+            // 上传文件路径
+            String filePath = KgraphConfig.getUploadPath();
+            // 上传并返回新文件名称
+            String fileName = FileUploadUtils.upload(filePath, file);
+            String url = serverConfig.getUrl() + fileName;
+            AjaxResult ajax = AjaxResult.success();
+            Map<String, String> data = new HashMap<>();
+            data.put("url", url);
+            ajax.put("data", data);
+            ajax.put("errno", 0);
+            return ajax;
+        } catch (Exception e) {
+            AjaxResult error = AjaxResult.error(e.getMessage());
+            error.put("message", e.getMessage());
+            error.put("errno", 1);
+            return error;
+        }
+    }
+
     /**
      * 通用上传请求(多个)
      */

+ 18 - 4
kgraph-admin/src/main/java/com/kgraph/web/domain/Breakdown.java

@@ -24,8 +24,8 @@ public class Breakdown extends BaseEntity
     @Excel(name = "战区")
     private String warZone;
 
-    /** 大练基地 */
-    @Excel(name = "大练基地")
+    /** 基地 */
+    @Excel(name = "基地")
     private String base;
 
     /** 师 */
@@ -69,8 +69,8 @@ public class Breakdown extends BaseEntity
     @Excel(name = "故障件名称")
     private String breakdownUnitName;
 
-    /** 故障件型 */
-    @Excel(name = "故障件型")
+    /** 故障件型 */
+    @Excel(name = "故障件型")
     private String breakdownUnitType;
 
     /** 故障件号码 */
@@ -85,6 +85,10 @@ public class Breakdown extends BaseEntity
     @Excel(name = "故障后果")
     private String consequence;
 
+    /** 故障责任 */
+    @Excel(name = "故障责任")
+    private String duty;
+
     /** 故换件名称 */
     @Excel(name = "故换件名称")
     private String replaceUnitName;
@@ -259,6 +263,15 @@ public class Breakdown extends BaseEntity
     {
         return consequence;
     }
+    public void setDuty(String duty) 
+    {
+        this.duty = duty;
+    }
+
+    public String getDuty() 
+    {
+        return duty;
+    }
     public void setReplaceUnitName(String replaceUnitName) 
     {
         this.replaceUnitName = replaceUnitName;
@@ -325,6 +338,7 @@ public class Breakdown extends BaseEntity
             .append("breakdownUnitNumber", getBreakdownUnitNumber())
             .append("unitSystem", getUnitSystem())
             .append("consequence", getConsequence())
+            .append("duty", getDuty())
             .append("replaceUnitName", getReplaceUnitName())
             .append("replaceUnitType", getReplaceUnitType())
             .append("replaceUnitNumber", getReplaceUnitNumber())

+ 83 - 0
kgraph-admin/src/main/java/com/kgraph/web/domain/Encyclopedia.java

@@ -0,0 +1,83 @@
+package com.kgraph.web.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.kgraph.common.annotation.Excel;
+import com.kgraph.common.core.domain.BaseEntity;;
+
+/**
+ * 维修百科对象 t_encyclopedia
+ * 
+ * @author Allen
+ * @date 2023-04-20
+ */
+public class Encyclopedia extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 序号 */
+    private Long id;
+
+    /** 标题 */
+    @Excel(name = "标题")
+    private String title;
+
+    /** 描述 */
+    @Excel(name = "描述")
+    private String desc;
+
+    /** 文本内容 */
+    @Excel(name = "文本内容")
+    private String text;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setTitle(String title) 
+    {
+        this.title = title;
+    }
+
+    public String getTitle() 
+    {
+        return title;
+    }
+    public void setDesc(String desc) 
+    {
+        this.desc = desc;
+    }
+
+    public String getDesc() 
+    {
+        return desc;
+    }
+    public void setText(String text) 
+    {
+        this.text = text;
+    }
+
+    public String getText() 
+    {
+        return text;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("title", getTitle())
+            .append("desc", getDesc())
+            .append("text", getText())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .toString();
+    }
+}

+ 61 - 0
kgraph-admin/src/main/java/com/kgraph/web/mapper/EncyclopediaMapper.java

@@ -0,0 +1,61 @@
+package com.kgraph.web.mapper;
+
+import java.util.List;
+import com.kgraph.web.domain.Encyclopedia;
+
+/**
+ * 维修百科Mapper接口
+ * 
+ * @author Allen
+ * @date 2023-04-20
+ */
+public interface EncyclopediaMapper 
+{
+    /**
+     * 查询维修百科
+     * 
+     * @param id 维修百科主键
+     * @return 维修百科
+     */
+    public Encyclopedia selectEncyclopediaById(Long id);
+
+    /**
+     * 查询维修百科列表
+     * 
+     * @param encyclopedia 维修百科
+     * @return 维修百科集合
+     */
+    public List<Encyclopedia> selectEncyclopediaList(Encyclopedia encyclopedia);
+
+    /**
+     * 新增维修百科
+     * 
+     * @param encyclopedia 维修百科
+     * @return 结果
+     */
+    public int insertEncyclopedia(Encyclopedia encyclopedia);
+
+    /**
+     * 修改维修百科
+     * 
+     * @param encyclopedia 维修百科
+     * @return 结果
+     */
+    public int updateEncyclopedia(Encyclopedia encyclopedia);
+
+    /**
+     * 删除维修百科
+     * 
+     * @param id 维修百科主键
+     * @return 结果
+     */
+    public int deleteEncyclopediaById(Long id);
+
+    /**
+     * 批量删除维修百科
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteEncyclopediaByIds(Long[] ids);
+}

+ 61 - 0
kgraph-admin/src/main/java/com/kgraph/web/service/IEncyclopediaService.java

@@ -0,0 +1,61 @@
+package com.kgraph.web.service;
+
+import java.util.List;
+import com.kgraph.web.domain.Encyclopedia;
+
+/**
+ * 维修百科Service接口
+ * 
+ * @author Allen
+ * @date 2023-04-20
+ */
+public interface IEncyclopediaService 
+{
+    /**
+     * 查询维修百科
+     * 
+     * @param id 维修百科主键
+     * @return 维修百科
+     */
+    public Encyclopedia selectEncyclopediaById(Long id);
+
+    /**
+     * 查询维修百科列表
+     * 
+     * @param encyclopedia 维修百科
+     * @return 维修百科集合
+     */
+    public List<Encyclopedia> selectEncyclopediaList(Encyclopedia encyclopedia);
+
+    /**
+     * 新增维修百科
+     * 
+     * @param encyclopedia 维修百科
+     * @return 结果
+     */
+    public int insertEncyclopedia(Encyclopedia encyclopedia);
+
+    /**
+     * 修改维修百科
+     * 
+     * @param encyclopedia 维修百科
+     * @return 结果
+     */
+    public int updateEncyclopedia(Encyclopedia encyclopedia);
+
+    /**
+     * 批量删除维修百科
+     * 
+     * @param ids 需要删除的维修百科主键集合
+     * @return 结果
+     */
+    public int deleteEncyclopediaByIds(Long[] ids);
+
+    /**
+     * 删除维修百科信息
+     * 
+     * @param id 维修百科主键
+     * @return 结果
+     */
+    public int deleteEncyclopediaById(Long id);
+}

+ 96 - 0
kgraph-admin/src/main/java/com/kgraph/web/service/impl/EncyclopediaServiceImpl.java

@@ -0,0 +1,96 @@
+package com.kgraph.web.service.impl;
+
+import java.util.List;
+import com.kgraph.common.utils.DateUtils;;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.kgraph.web.mapper.EncyclopediaMapper;
+import com.kgraph.web.domain.Encyclopedia;
+import com.kgraph.web.service.IEncyclopediaService;
+
+/**
+ * 维修百科Service业务层处理
+ * 
+ * @author Allen
+ * @date 2023-04-20
+ */
+@Service
+public class EncyclopediaServiceImpl implements IEncyclopediaService 
+{
+    @Autowired
+    private EncyclopediaMapper encyclopediaMapper;
+
+    /**
+     * 查询维修百科
+     * 
+     * @param id 维修百科主键
+     * @return 维修百科
+     */
+    @Override
+    public Encyclopedia selectEncyclopediaById(Long id)
+    {
+        return encyclopediaMapper.selectEncyclopediaById(id);
+    }
+
+    /**
+     * 查询维修百科列表
+     * 
+     * @param encyclopedia 维修百科
+     * @return 维修百科
+     */
+    @Override
+    public List<Encyclopedia> selectEncyclopediaList(Encyclopedia encyclopedia)
+    {
+        return encyclopediaMapper.selectEncyclopediaList(encyclopedia);
+    }
+
+    /**
+     * 新增维修百科
+     * 
+     * @param encyclopedia 维修百科
+     * @return 结果
+     */
+    @Override
+    public int insertEncyclopedia(Encyclopedia encyclopedia)
+    {
+        encyclopedia.setCreateTime(DateUtils.getNowDate());
+        return encyclopediaMapper.insertEncyclopedia(encyclopedia);
+    }
+
+    /**
+     * 修改维修百科
+     * 
+     * @param encyclopedia 维修百科
+     * @return 结果
+     */
+    @Override
+    public int updateEncyclopedia(Encyclopedia encyclopedia)
+    {
+        encyclopedia.setUpdateTime(DateUtils.getNowDate());
+        return encyclopediaMapper.updateEncyclopedia(encyclopedia);
+    }
+
+    /**
+     * 批量删除维修百科
+     * 
+     * @param ids 需要删除的维修百科主键
+     * @return 结果
+     */
+    @Override
+    public int deleteEncyclopediaByIds(Long[] ids)
+    {
+        return encyclopediaMapper.deleteEncyclopediaByIds(ids);
+    }
+
+    /**
+     * 删除维修百科信息
+     * 
+     * @param id 维修百科主键
+     * @return 结果
+     */
+    @Override
+    public int deleteEncyclopediaById(Long id)
+    {
+        return encyclopediaMapper.deleteEncyclopediaById(id);
+    }
+}

+ 81 - 0
kgraph-admin/src/main/resources/mapper/repair/EncyclopediaMapper.xml

@@ -0,0 +1,81 @@
+<?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.kgraph.web.mapper.EncyclopediaMapper">
+    
+    <resultMap type="Encyclopedia" id="EncyclopediaResult">
+        <result property="id"    column="id"    />
+        <result property="title"    column="title"    />
+        <result property="desc"    column="desc"    />
+        <result property="text"    column="text"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectEncyclopediaVo">
+        select id, title, `desc`, text, create_by, create_time, update_by, update_time from t_encyclopedia
+    </sql>
+
+    <select id="selectEncyclopediaList" parameterType="Encyclopedia" resultMap="EncyclopediaResult">
+        select id, title, `desc`, create_by, create_time, update_by, update_time from t_encyclopedia
+        <where>  
+            <if test="title != null  and title != ''"> and title = #{title}</if>
+            <if test="desc != null  and desc != ''"> and `desc` = #{desc}</if>
+        </where>
+    </select>
+    
+    <select id="selectEncyclopediaById" parameterType="Long" resultMap="EncyclopediaResult">
+        <include refid="selectEncyclopediaVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertEncyclopedia" parameterType="Encyclopedia" useGeneratedKeys="true" keyProperty="id">
+        insert into t_encyclopedia
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="title != null">title,</if>
+            <if test="desc != null">`desc`,</if>
+            <if test="text != null">text,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="title != null">#{title},</if>
+            <if test="desc != null">#{desc},</if>
+            <if test="text != null">#{text},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateEncyclopedia" parameterType="Encyclopedia">
+        update t_encyclopedia
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="title != null">title = #{title},</if>
+            <if test="desc != null">`desc` = #{desc},</if>
+            <if test="text != null">text = #{text},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteEncyclopediaById" parameterType="Long">
+        delete from t_encyclopedia where id = #{id}
+    </delete>
+
+    <delete id="deleteEncyclopediaByIds" parameterType="String">
+        delete from t_encyclopedia where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 6 - 1
kgraph-admin/src/main/resources/mapper/showInfo/BreakdownMapper.xml

@@ -22,6 +22,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="breakdownUnitNumber"    column="breakdown_unit_number"    />
         <result property="unitSystem"    column="unit_system"    />
         <result property="consequence"    column="consequence"    />
+        <result property="duty"    column="duty"    />
         <result property="replaceUnitName"    column="replace_unit_name"    />
         <result property="replaceUnitType"    column="replace_unit_type"    />
         <result property="replaceUnitNumber"    column="replace_unit_number"    />
@@ -34,7 +35,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectBreakdownVo">
-        select id, war_zone, base, division, brigade, airplane_model, air_number, discovery_timing, discovery_date, major, `describe`, reason, breakdown_unit_name, breakdown_unit_type, breakdown_unit_number, unit_system, consequence, replace_unit_name, replace_unit_type, replace_unit_number, method, repaired_date, create_by, create_time, update_by, update_time from t_breakdown
+        select id, war_zone, base, division, brigade, airplane_model, air_number, discovery_timing, discovery_date, major, `describe`, reason, breakdown_unit_name, breakdown_unit_type, breakdown_unit_number, unit_system, consequence, duty, replace_unit_name, replace_unit_type, replace_unit_number, method, repaired_date, create_by, create_time, update_by, update_time from t_breakdown
     </sql>
 
     <select id="selectBreakdownList" parameterType="Breakdown" resultMap="BreakdownResult">
@@ -56,6 +57,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="breakdownUnitNumber != null  and breakdownUnitNumber != ''"> and breakdown_unit_number = #{breakdownUnitNumber}</if>
             <if test="unitSystem != null  and unitSystem != ''"> and unit_system = #{unitSystem}</if>
             <if test="consequence != null  and consequence != ''"> and consequence = #{consequence}</if>
+            <if test="duty != null  and duty != ''"> and duty = #{duty}</if>
             <if test="replaceUnitName != null  and replaceUnitName != ''"> and replace_unit_name like concat('%', #{replaceUnitName}, '%')</if>
             <if test="replaceUnitType != null  and replaceUnitType != ''"> and replace_unit_type = #{replaceUnitType}</if>
             <if test="replaceUnitNumber != null  and replaceUnitNumber != ''"> and replace_unit_number = #{replaceUnitNumber}</if>
@@ -88,6 +90,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="breakdownUnitNumber != null">breakdown_unit_number,</if>
             <if test="unitSystem != null">unit_system,</if>
             <if test="consequence != null">consequence,</if>
+            <if test="duty != null">duty,</if>
             <if test="replaceUnitName != null">replace_unit_name,</if>
             <if test="replaceUnitType != null">replace_unit_type,</if>
             <if test="replaceUnitNumber != null">replace_unit_number,</if>
@@ -115,6 +118,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="breakdownUnitNumber != null">#{breakdownUnitNumber},</if>
             <if test="unitSystem != null">#{unitSystem},</if>
             <if test="consequence != null">#{consequence},</if>
+            <if test="duty != null">#{duty},</if>
             <if test="replaceUnitName != null">#{replaceUnitName},</if>
             <if test="replaceUnitType != null">#{replaceUnitType},</if>
             <if test="replaceUnitNumber != null">#{replaceUnitNumber},</if>
@@ -146,6 +150,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="breakdownUnitNumber != null">breakdown_unit_number = #{breakdownUnitNumber},</if>
             <if test="unitSystem != null">unit_system = #{unitSystem},</if>
             <if test="consequence != null">consequence = #{consequence},</if>
+            <if test="duty != null">duty = #{duty},</if>
             <if test="replaceUnitName != null">replace_unit_name = #{replaceUnitName},</if>
             <if test="replaceUnitType != null">replace_unit_type = #{replaceUnitType},</if>
             <if test="replaceUnitNumber != null">replace_unit_number = #{replaceUnitNumber},</if>

+ 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

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

+ 5 - 0
kgraph-graph/src/main/java/com/kgraph/graph/neo4j/DTO/TextDto.java

@@ -0,0 +1,5 @@
+package com.kgraph.graph.neo4j.DTO;
+
+public class TextDto {
+    private String id;
+}

+ 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("系统异常,请稍后再试");
+        }
+
+    }
+
 }

+ 27 - 18
kgraph-graph/src/main/java/com/kgraph/graph/suport/controller/ExtractKnowledgeSubTaskController.java

@@ -3,7 +3,9 @@ package com.kgraph.graph.suport.controller;
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.kgraph.graph.neo4j.DTO.KgDocDTO;
+import com.kgraph.graph.suport.domain.ExtractResult;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -105,28 +107,35 @@ public class ExtractKnowledgeSubTaskController extends BaseController
         return toAjax(extractKnowledgeSubTaskService.deleteExtractKnowledgeSubTaskByIds(ids));
     }
 
-    @PostMapping("/saveKnowledge")
-    public AjaxResult saveKnowledge(@RequestBody KgDocDTO kgDocDTO){
-        logger.info("saveKnowledge 方法调用成功,kgDocDTO: {}", kgDocDTO);
-        if(kgDocDTO == null){
-            return AjaxResult.error("无效payload");
-        }
-
-        if(kgDocDTO.getDocInfo() == null || kgDocDTO.getDocInfo().getDocId() == null){
-            return AjaxResult.error("文件信息不能为null");
-        }
+//    @PostMapping("/saveKnowledge")
+//    public AjaxResult saveKnowledge(@RequestBody KgDocDTO kgDocDTO){
+//        logger.info("saveKnowledge 方法调用成功,kgDocDTO: {}", kgDocDTO);
+//        if(kgDocDTO == null){
+//            return AjaxResult.error("无效payload");
+//        }
+//
+//        if(kgDocDTO.getDocInfo() == null || kgDocDTO.getDocInfo().getDocId() == null){
+//            return AjaxResult.error("文件信息不能为null");
+//        }
+//
+//        if(CollectionUtils.isEmpty(kgDocDTO.getKnowledgeList())){
+////            return AjaxResult.error("没有数据");
+//            logger.info("kgDocDTO 没有数据.");
+//        }
+//        extractKnowledgeSubTaskService.saveKnowledge(kgDocDTO);
+//        return AjaxResult.success();
+//    }
 
-        if(CollectionUtils.isEmpty(kgDocDTO.getKnowledgeList())){
-//            return AjaxResult.error("没有数据");
-            logger.info("kgDocDTO 没有数据.");
-        }
-        extractKnowledgeSubTaskService.saveKnowledge(kgDocDTO);
+    @PostMapping("/saveKnowledge")
+    public AjaxResult saveKnowledge(@RequestBody JSONObject extractResult){
+        logger.info("saveKnowledge 方法调用成功,extractResult: {}", extractResult);
+        extractKnowledgeSubTaskService.saveKnowledge(extractResult);
         return AjaxResult.success();
     }
 
-    @GetMapping("/approve/{id}/{status}")
-    public AjaxResult approveSubTask(@PathVariable("id") Long id, @PathVariable("status") String status){
-        extractKnowledgeSubTaskService.approveSubTask(id, status);
+    @PostMapping("/approve/{id}/{status}")
+    public AjaxResult approveSubTask(@PathVariable("id") Long id, @PathVariable("status") String status, @RequestBody ExtractResult extractResult){
+        extractKnowledgeSubTaskService.approveSubTask(id, status, extractResult);
         return success();
     }
 

+ 114 - 0
kgraph-graph/src/main/java/com/kgraph/graph/suport/controller/ExtractResultController.java

@@ -0,0 +1,114 @@
+package com.kgraph.graph.suport.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.kgraph.common.annotation.Log;;
+import com.kgraph.common.core.controller.BaseController;;
+import com.kgraph.common.core.domain.AjaxResult;;
+import com.kgraph.common.enums.BusinessType;;
+import com.kgraph.graph.suport.domain.ExtractResult;
+import com.kgraph.graph.suport.service.IExtractResultService;
+import com.kgraph.common.utils.poi.ExcelUtil;;
+import com.kgraph.common.core.page.TableDataInfo;;
+
+/**
+ * 抽取结果信息Controller
+ * 
+ * @author Allen
+ * @date 2023-04-20
+ */
+@RestController
+@RequestMapping("/extract/result")
+public class ExtractResultController extends BaseController
+{
+    @Autowired
+    private IExtractResultService extractResultService;
+
+    /**
+     * 查询抽取结果信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('extract:result:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ExtractResult extractResult)
+    {
+        startPage();
+        List<ExtractResult> list = extractResultService.selectExtractResultList(extractResult);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出抽取结果信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('extract:result:export')")
+    @Log(title = "抽取结果信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ExtractResult extractResult)
+    {
+        List<ExtractResult> list = extractResultService.selectExtractResultList(extractResult);
+        ExcelUtil<ExtractResult> util = new ExcelUtil<ExtractResult>(ExtractResult.class);
+        util.exportExcel(response, list, "抽取结果信息数据");
+    }
+
+    /**
+     * 获取抽取结果信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('extract:result:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(extractResultService.selectExtractResultById(id));
+    }
+
+    /**
+     * 获取抽取结果信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('extract:result:query')")
+    @GetMapping(value = "/getResultBySubTaskId/{id}")
+    public AjaxResult getResultBySubTaskId(@PathVariable("id") Long subtaskId)
+    {
+        return success(extractResultService.getResultBySubTaskId(subtaskId));
+    }
+
+    /**
+     * 新增抽取结果信息
+     */
+    @PreAuthorize("@ss.hasPermi('extract:result:add')")
+    @Log(title = "抽取结果信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ExtractResult extractResult)
+    {
+        return toAjax(extractResultService.insertExtractResult(extractResult));
+    }
+
+    /**
+     * 修改抽取结果信息
+     */
+    @PreAuthorize("@ss.hasPermi('extract:result:edit')")
+    @Log(title = "抽取结果信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ExtractResult extractResult)
+    {
+        return toAjax(extractResultService.updateExtractResult(extractResult));
+    }
+
+    /**
+     * 删除抽取结果信息
+     */
+    @PreAuthorize("@ss.hasPermi('extract:result:remove')")
+    @Log(title = "抽取结果信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(extractResultService.deleteExtractResultByIds(ids));
+    }
+}

+ 69 - 0
kgraph-graph/src/main/java/com/kgraph/graph/suport/domain/ExtractResult.java

@@ -0,0 +1,69 @@
+package com.kgraph.graph.suport.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.kgraph.common.annotation.Excel;
+import com.kgraph.common.core.domain.BaseEntity;;
+
+/**
+ * 抽取结果信息对象 t_extract_result
+ * 
+ * @author Allen
+ * @date 2023-04-20
+ */
+public class ExtractResult extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 编号 */
+    private Long id;
+
+    /** 子任务id */
+    @Excel(name = "子任务id")
+    private Long subTaskId;
+
+    /** 抽取结果集 */
+    @Excel(name = "抽取结果集")
+    private String result;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setSubTaskId(Long subTaskId) 
+    {
+        this.subTaskId = subTaskId;
+    }
+
+    public Long getSubTaskId() 
+    {
+        return subTaskId;
+    }
+    public void setResult(String result) 
+    {
+        this.result = result;
+    }
+
+    public String getResult() 
+    {
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("subTaskId", getSubTaskId())
+            .append("result", getResult())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .toString();
+    }
+}

+ 63 - 0
kgraph-graph/src/main/java/com/kgraph/graph/suport/mapper/ExtractResultMapper.java

@@ -0,0 +1,63 @@
+package com.kgraph.graph.suport.mapper;
+
+import java.util.List;
+import com.kgraph.graph.suport.domain.ExtractResult;
+
+/**
+ * 抽取结果信息Mapper接口
+ * 
+ * @author Allen
+ * @date 2023-04-20
+ */
+public interface ExtractResultMapper 
+{
+    /**
+     * 查询抽取结果信息
+     * 
+     * @param id 抽取结果信息主键
+     * @return 抽取结果信息
+     */
+    public ExtractResult selectExtractResultById(Long id);
+
+    /**
+     * 查询抽取结果信息列表
+     * 
+     * @param extractResult 抽取结果信息
+     * @return 抽取结果信息集合
+     */
+    public List<ExtractResult> selectExtractResultList(ExtractResult extractResult);
+
+    /**
+     * 新增抽取结果信息
+     * 
+     * @param extractResult 抽取结果信息
+     * @return 结果
+     */
+    public int insertExtractResult(ExtractResult extractResult);
+
+    /**
+     * 修改抽取结果信息
+     * 
+     * @param extractResult 抽取结果信息
+     * @return 结果
+     */
+    public int updateExtractResult(ExtractResult extractResult);
+
+    /**
+     * 删除抽取结果信息
+     * 
+     * @param id 抽取结果信息主键
+     * @return 结果
+     */
+    public int deleteExtractResultById(Long id);
+
+    /**
+     * 批量删除抽取结果信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteExtractResultByIds(Long[] ids);
+
+    ExtractResult getResultBySubTaskId(Long subtaskId);
+}

+ 5 - 1
kgraph-graph/src/main/java/com/kgraph/graph/suport/service/IExtractKnowledgeSubTaskService.java

@@ -2,9 +2,11 @@ package com.kgraph.graph.suport.service;
 
 import java.util.List;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.kgraph.graph.neo4j.DTO.KgDocDTO;
 import com.kgraph.graph.suport.domain.ExtractKnowledgeSubTask;
 import com.kgraph.graph.suport.domain.ExtractKnowledgeTask;
+import com.kgraph.graph.suport.domain.ExtractResult;
 
 /**
  * 知识抽取子任务Service接口
@@ -70,7 +72,9 @@ public interface IExtractKnowledgeSubTaskService
 
     void saveKnowledge(KgDocDTO kgDocDTO);
 
-    void approveSubTask(Long id, String status);
+    void approveSubTask(Long id, String status, ExtractResult extractResult);
 
     void updateTaskStatusBySubTaskId(Long subTaskId);
+
+    void saveKnowledge(JSONObject extractResult);
 }

+ 65 - 0
kgraph-graph/src/main/java/com/kgraph/graph/suport/service/IExtractResultService.java

@@ -0,0 +1,65 @@
+package com.kgraph.graph.suport.service;
+
+import java.util.List;
+import com.kgraph.graph.suport.domain.ExtractResult;
+
+/**
+ * 抽取结果信息Service接口
+ * 
+ * @author Allen
+ * @date 2023-04-20
+ */
+public interface IExtractResultService 
+{
+    /**
+     * 查询抽取结果信息
+     * 
+     * @param id 抽取结果信息主键
+     * @return 抽取结果信息
+     */
+    public ExtractResult selectExtractResultById(Long id);
+
+    /**
+     * 查询抽取结果信息列表
+     * 
+     * @param extractResult 抽取结果信息
+     * @return 抽取结果信息集合
+     */
+    public List<ExtractResult> selectExtractResultList(ExtractResult extractResult);
+
+    /**
+     * 新增抽取结果信息
+     * 
+     * @param extractResult 抽取结果信息
+     * @return 结果
+     */
+    public int insertExtractResult(ExtractResult extractResult);
+
+    /**
+     * 修改抽取结果信息
+     * 
+     * @param extractResult 抽取结果信息
+     * @return 结果
+     */
+    public int updateExtractResult(ExtractResult extractResult);
+
+    /**
+     * 批量删除抽取结果信息
+     * 
+     * @param ids 需要删除的抽取结果信息主键集合
+     * @return 结果
+     */
+    public int deleteExtractResultByIds(Long[] ids);
+
+    /**
+     * 删除抽取结果信息信息
+     * 
+     * @param id 抽取结果信息主键
+     * @return 结果
+     */
+    public int deleteExtractResultById(Long id);
+
+    void insertExtractResult(Long subTaskId, String result);
+
+    ExtractResult getResultBySubTaskId(Long subtaskId);
+}

+ 61 - 5
kgraph-graph/src/main/java/com/kgraph/graph/suport/service/impl/ExtractKnowledgeSubTaskServiceImpl.java

@@ -1,5 +1,7 @@
 package com.kgraph.graph.suport.service.impl;
 
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
 import com.kgraph.common.core.domain.BaseResponse;
 import com.kgraph.common.core.domain.entity.SysDictData;
 import com.kgraph.common.utils.DateUtils;
@@ -9,9 +11,11 @@ import com.kgraph.graph.neo4j.DTO.KgDocDTO;
 import com.kgraph.graph.neo4j.seavice.IKgService;
 import com.kgraph.graph.suport.domain.ExtractKnowledgeSubTask;
 import com.kgraph.graph.suport.domain.ExtractKnowledgeTask;
+import com.kgraph.graph.suport.domain.ExtractResult;
 import com.kgraph.graph.suport.domain.TripletInfo;
 import com.kgraph.graph.suport.mapper.ExtractKnowledgeSubTaskMapper;
 import com.kgraph.graph.suport.service.IExtractKnowledgeSubTaskService;
+import com.kgraph.graph.suport.service.IExtractResultService;
 import com.kgraph.graph.suport.service.ITripletInfoService;
 import com.kgraph.system.service.ISysDictDataService;
 import org.apache.commons.lang3.StringUtils;
@@ -51,6 +55,9 @@ public class ExtractKnowledgeSubTaskServiceImpl implements IExtractKnowledgeSubT
     @Autowired
     private ISysDictDataService sysDictDataService;
 
+    @Autowired
+    IExtractResultService extractResultService;
+
     /**
      * 查询知识抽取子任务
      *
@@ -162,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);
@@ -186,15 +194,33 @@ public class ExtractKnowledgeSubTaskServiceImpl implements IExtractKnowledgeSubT
     @Override
     @Transactional
     @Async
-    public void approveSubTask(Long id, String status) {
+    public void approveSubTask(Long id, String status, ExtractResult extractResult) {
+
+        // 更新子任务状态
         extractKnowledgeSubTaskMapper.updateSubTaskStatusById(id, status, null, null);
-        // TODO 以下逻辑可优化成异步执行
+
+        // save resultJson
+        extractResultService.updateExtractResult(extractResult);
+        String result = extractResult.getResult();
+        JSONObject extractResultJson = JSONObject.parseObject(result);
+
+        // 审批 则同步到图数据库
         if (ExtractKnowledgeSubTask.REVIEWED.equals(status)) {
-            List<KgDTO> kgDTOList = tripletInfoService.getKgDTO(id);
-            kgService.create(kgDTOList);
+            JSONArray knowledgeList = extractResultJson.getJSONArray("knowledgeList");
+            List<KgDTO> list = new ArrayList<>(knowledgeList.size());
+            for (int i = 0; i < knowledgeList.size(); i++) {
+                JSONObject jsonObject = knowledgeList.getJSONObject(i);
+                KgDTO kgDTO = JSONObject.parseObject(jsonObject.toString(), KgDTO.class);
+                list.add(kgDTO);
+            }
+            kgService.create(list);
+            // 更新子任务状态为完成
             extractKnowledgeSubTaskMapper.updateSubTaskStatusById(id, ExtractKnowledgeSubTask.DOWN, null, null);
         }
+
+        // 更新任务状态
         extractKnowledgeSubTaskMapper.updateTaskStatusBySubTaskId(id);
+
     }
 
     @Override
@@ -202,6 +228,36 @@ public class ExtractKnowledgeSubTaskServiceImpl implements IExtractKnowledgeSubT
         extractKnowledgeSubTaskMapper.updateTaskStatusBySubTaskId(subTaskId);
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveKnowledge(JSONObject extractResult) {
+        Integer code = extractResult.getInteger("code");
+        switch (code) {
+            case 200:
+                processSuccess(extractResult);
+                break;
+            default:
+                processFail(extractResult);
+        }
+    }
+
+    private void processFail(JSONObject extractResult) {
+        updateSubTaskStatusById(extractResult.getJSONObject("docInfo").getLong("subTaskId"), ExtractKnowledgeSubTask.FAILED, extractResult.getString("msg"));
+    }
+
+    private void processSuccess(JSONObject extractResult) {
+//        JSONArray relationList = extractResult.getJSONObject("knowledgeList").getJSONArray("relationList");
+//        int size = relationList.size();
+//        for(int i = 0; i < size; i++){
+//            JSONObject jsonObject = relationList.getJSONObject(i);
+//            jsonObject.put("id",i);
+//        }
+        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) {
         updateSubTaskStatusById(kgDocDTO.getDocInfo().getSubTaskId(), ExtractKnowledgeSubTask.FAILED, kgDocDTO.getMsg());
     }

+ 109 - 0
kgraph-graph/src/main/java/com/kgraph/graph/suport/service/impl/ExtractResultServiceImpl.java

@@ -0,0 +1,109 @@
+package com.kgraph.graph.suport.service.impl;
+
+import java.util.List;
+import com.kgraph.common.utils.DateUtils;;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.kgraph.graph.suport.mapper.ExtractResultMapper;
+import com.kgraph.graph.suport.domain.ExtractResult;
+import com.kgraph.graph.suport.service.IExtractResultService;
+
+/**
+ * 抽取结果信息Service业务层处理
+ * 
+ * @author Allen
+ * @date 2023-04-20
+ */
+@Service
+public class ExtractResultServiceImpl implements IExtractResultService 
+{
+    @Autowired
+    private ExtractResultMapper extractResultMapper;
+
+    /**
+     * 查询抽取结果信息
+     * 
+     * @param id 抽取结果信息主键
+     * @return 抽取结果信息
+     */
+    @Override
+    public ExtractResult selectExtractResultById(Long id)
+    {
+        return extractResultMapper.selectExtractResultById(id);
+    }
+
+    /**
+     * 查询抽取结果信息列表
+     * 
+     * @param extractResult 抽取结果信息
+     * @return 抽取结果信息
+     */
+    @Override
+    public List<ExtractResult> selectExtractResultList(ExtractResult extractResult)
+    {
+        return extractResultMapper.selectExtractResultList(extractResult);
+    }
+
+    /**
+     * 新增抽取结果信息
+     * 
+     * @param extractResult 抽取结果信息
+     * @return 结果
+     */
+    @Override
+    public int insertExtractResult(ExtractResult extractResult)
+    {
+        extractResult.setCreateTime(DateUtils.getNowDate());
+        return extractResultMapper.insertExtractResult(extractResult);
+    }
+
+    /**
+     * 修改抽取结果信息
+     * 
+     * @param extractResult 抽取结果信息
+     * @return 结果
+     */
+    @Override
+    public int updateExtractResult(ExtractResult extractResult)
+    {
+        extractResult.setUpdateTime(DateUtils.getNowDate());
+        return extractResultMapper.updateExtractResult(extractResult);
+    }
+
+    /**
+     * 批量删除抽取结果信息
+     * 
+     * @param ids 需要删除的抽取结果信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteExtractResultByIds(Long[] ids)
+    {
+        return extractResultMapper.deleteExtractResultByIds(ids);
+    }
+
+    /**
+     * 删除抽取结果信息信息
+     * 
+     * @param id 抽取结果信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteExtractResultById(Long id)
+    {
+        return extractResultMapper.deleteExtractResultById(id);
+    }
+
+    @Override
+    public void insertExtractResult(Long subTaskId, String result) {
+        ExtractResult extractResult = new ExtractResult();
+        extractResult.setSubTaskId(subTaskId);
+        extractResult.setResult(result);
+        extractResultMapper.insertExtractResult(extractResult);
+    }
+
+    @Override
+    public ExtractResult getResultBySubTaskId(Long subtaskId) {
+        return extractResultMapper.getResultBySubTaskId(subtaskId);
+    }
+}

+ 82 - 0
kgraph-graph/src/main/resources/mapper/extract/ExtractResultMapper.xml

@@ -0,0 +1,82 @@
+<?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.kgraph.graph.suport.mapper.ExtractResultMapper">
+    
+    <resultMap type="ExtractResult" id="ExtractResultResult">
+        <result property="id"    column="id"    />
+        <result property="subTaskId"    column="sub_task_id"    />
+        <result property="result"    column="result"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectExtractResultVo">
+        select id, sub_task_id, result, create_by, create_time, update_by, update_time from t_extract_result
+    </sql>
+
+    <select id="selectExtractResultList" parameterType="ExtractResult" resultMap="ExtractResultResult">
+        <include refid="selectExtractResultVo"/>
+        <where>  
+            <if test="subTaskId != null "> and sub_task_id = #{subTaskId}</if>
+            <if test="result != null  and result != ''"> and result = #{result}</if>
+        </where>
+    </select>
+    
+    <select id="selectExtractResultById" parameterType="Long" resultMap="ExtractResultResult">
+        <include refid="selectExtractResultVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertExtractResult" parameterType="ExtractResult" useGeneratedKeys="true" keyProperty="id">
+        insert into t_extract_result
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="subTaskId != null">sub_task_id,</if>
+            <if test="result != null">result,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="subTaskId != null">#{subTaskId},</if>
+            <if test="result != null">#{result},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateExtractResult" parameterType="ExtractResult">
+        update t_extract_result
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="subTaskId != null">sub_task_id = #{subTaskId},</if>
+            <if test="result != null">result = #{result},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteExtractResultById" parameterType="Long">
+        delete from t_extract_result where id = #{id}
+    </delete>
+
+    <delete id="deleteExtractResultByIds" parameterType="String">
+        delete from t_extract_result where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+    <select id="getResultBySubTaskId" parameterType="Long" resultMap="ExtractResultResult">
+        <include refid="selectExtractResultVo"/>
+        where sub_task_id = #{subTaskId}
+    </select>
+</mapper>

+ 15 - 0
sql/system.sql

@@ -1892,3 +1892,18 @@ values('故障信息删除', @parentId, '4',  '#', '', 1, 0, 'F', '0', '0', 'sho
 
 insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
 values('故障信息导出', @parentId, '5',  '#', '', 1, 0, 'F', '0', '0', 'showInfo:breakdown:export',       '#', 'admin', sysdate(), '', null, '');
+
+-- 抽取结果信息
+DROP TABLE
+IF
+	EXISTS t_extract_result;
+CREATE TABLE t_extract_result (
+	id BIGINT ( 20 ) NOT NULL auto_increment COMMENT '编号',
+	sub_task_id BIGINT ( 20 ) NOT NULL COMMENT '子任务id',
+	result TEXT COMMENT '抽取结果集',
+	create_by VARCHAR ( 64 ) DEFAULT '' COMMENT '创建者',
+	create_time datetime COMMENT '创建时间',
+	update_by VARCHAR ( 64 ) DEFAULT '' COMMENT '更新者',
+	update_time datetime COMMENT '更新时间',
+PRIMARY KEY ( id )
+) ENGINE = INNODB auto_increment = 1 COMMENT = '抽取结果信息';

+ 16 - 0
sql/update20030417.sql

@@ -1,5 +1,21 @@
 use kgraph;
 
+DROP TABLE
+IF
+	EXISTS t_model_component;
+CREATE TABLE t_model_component (
+	id BIGINT ( 20 ) NOT NULL auto_increment COMMENT '序号',
+	type VARCHAR ( 64 ) COMMENT '类型',
+	parent_id BIGINT ( 20 ) COMMENT '父id',
+	model_number VARCHAR ( 64 ) COMMENT '型号',
+	`name` VARCHAR ( 64 ) COMMENT '名称',
+	create_by VARCHAR ( 64 ) DEFAULT '' COMMENT '创建者',
+	create_time datetime COMMENT '创建时间',
+	update_by VARCHAR ( 64 ) DEFAULT '' COMMENT '更新者',
+	update_time datetime COMMENT '更新时间',
+PRIMARY KEY ( id )
+) ENGINE = INNODB COMMENT = '型号构型信息表';
+
 DROP TABLE
 IF
 	EXISTS t_breakdown;

+ 65 - 0
sql/update20230420.sql

@@ -0,0 +1,65 @@
+use kgraph;
+
+DROP TABLE
+IF
+	EXISTS t_breakdown;
+CREATE TABLE t_breakdown (
+	id BIGINT ( 20 ) NOT NULL auto_increment COMMENT '序号',
+	war_zone VARCHAR ( 64 ) COMMENT '战区',
+	base VARCHAR ( 64 ) COMMENT '基地',
+	division VARCHAR ( 64 ) COMMENT '师',
+	brigade VARCHAR ( 64 ) COMMENT '旅团',
+	airplane_model VARCHAR ( 64 ) COMMENT '机型',
+	air_number VARCHAR ( 64 ) COMMENT '机号',
+	discovery_timing VARCHAR ( 64 ) COMMENT '发现时机',
+	discovery_date datetime COMMENT '发现日期',
+	major VARCHAR ( 64 ) COMMENT '专业',
+	`describe` VARCHAR ( 255 ) COMMENT '故障描述',
+	reason VARCHAR ( 255 ) COMMENT '故障原因',
+	breakdown_unit_name VARCHAR ( 64 ) COMMENT '故障件名称',
+	breakdown_unit_type VARCHAR ( 64 ) COMMENT '故障件型号',
+	breakdown_unit_number VARCHAR ( 64 ) COMMENT '故障件号码',
+	unit_system VARCHAR ( 64 ) COMMENT '故障件所属系统',
+	consequence VARCHAR ( 255 ) COMMENT '故障后果',
+	duty VARCHAR ( 255 ) COMMENT '故障责任',
+	replace_unit_name VARCHAR ( 64 ) COMMENT '故换件名称',
+	replace_unit_type VARCHAR ( 64 ) COMMENT '故换件型别',
+	replace_unit_number VARCHAR ( 64 ) COMMENT '故换件号码',
+	method VARCHAR ( 64 ) COMMENT '排除方法',
+	repaired_date datetime COMMENT '修复日期',
+	create_by VARCHAR ( 64 ) DEFAULT '' COMMENT '创建者',
+	create_time datetime COMMENT '创建时间',
+	update_by VARCHAR ( 64 ) DEFAULT '' COMMENT '更新者',
+	update_time datetime COMMENT '更新时间',
+PRIMARY KEY ( id )
+) ENGINE = INNODB COMMENT = '故障信息表';
+
+DROP TABLE
+IF
+	EXISTS t_encyclopedia;
+CREATE TABLE t_encyclopedia (
+	id BIGINT ( 20 ) NOT NULL auto_increment COMMENT '序号',
+	title VARCHAR ( 64 ) COMMENT '标题',
+	`desc` VARCHAR ( 255 ) COMMENT '描述',
+	`text` text  COMMENT '文本内容',
+	create_by VARCHAR ( 64 ) DEFAULT '' COMMENT '创建者',
+	create_time datetime COMMENT '创建时间',
+	update_by VARCHAR ( 64 ) DEFAULT '' COMMENT '更新者',
+	update_time datetime COMMENT '更新时间',
+PRIMARY KEY ( id )
+) ENGINE = INNODB COMMENT = '维修百科表';
+
+-- 抽取结果信息
+DROP TABLE
+IF
+	EXISTS t_extract_result;
+CREATE TABLE t_extract_result (
+	id BIGINT ( 20 ) NOT NULL auto_increment COMMENT '编号',
+	sub_task_id BIGINT ( 20 ) NOT NULL COMMENT '子任务id',
+	result TEXT COMMENT '抽取结果集',
+	create_by VARCHAR ( 64 ) DEFAULT '' COMMENT '创建者',
+	create_time datetime COMMENT '创建时间',
+	update_by VARCHAR ( 64 ) DEFAULT '' COMMENT '更新者',
+	update_time datetime COMMENT '更新时间',
+PRIMARY KEY ( id )
+) ENGINE = INNODB auto_increment = 1 COMMENT = '抽取结果信息';