Просмотр исходного кода

图谱部分优化,图数据管理区别抽取和手动添加部分开发

zhangenzhi 1 год назад
Родитель
Сommit
78f5702be9

+ 12 - 1
src/main/java/com/pavis/backend/slim/common/constant/Hodgepodge.java

@@ -1,7 +1,8 @@
 package com.pavis.backend.slim.common.constant;
 
 /**
- * 一些杂乱的常量类
+ * 一些杂乱的常量
+ *
  * @author enen
  */
 public class Hodgepodge {
@@ -19,4 +20,14 @@ public class Hodgepodge {
 
     //字符串的一
     public static final String ONE_STR = "1";
+
+    /**
+     * 抽取和人工录入区别(0算法抽取,1手动添加)
+     */
+    public static final String DIFFERENCE_EXTRACT = "0";
+
+    /**
+     * 抽取和人工录入区别(0算法抽取,1手动添加)
+     */
+    public static final String DIFFERENCE = "1";
 }

+ 14 - 0
src/main/java/com/pavis/backend/slim/project/system/domain/SysEntityInstance.java

@@ -55,6 +55,20 @@ public class SysEntityInstance extends BaseEntity {
      */
     private String attributeAll;
 
+    /**
+     * 区别(0算法抽取,1手动添加)
+     *
+     */
+    private String difference;
+
+    public String getDifference() {
+        return difference;
+    }
+
+    public void setDifference(String difference) {
+        this.difference = difference;
+    }
+
     public String getAttributeAll() {
         return attributeAll;
     }

+ 14 - 0
src/main/java/com/pavis/backend/slim/project/system/domain/SysEntityRelation.java

@@ -64,4 +64,18 @@ public class SysEntityRelation extends BaseEntity {
      * 实体关系
      */
     private String entityRelation;
+
+    /**
+     * 区别(0算法抽取,1手动添加)
+     *
+     */
+    private String difference;
+
+    public String getDifference() {
+        return difference;
+    }
+
+    public void setDifference(String difference) {
+        this.difference = difference;
+    }
 }

+ 3 - 2
src/main/java/com/pavis/backend/slim/project/system/service/SysKgService.java

@@ -13,6 +13,7 @@ import com.pavis.backend.slim.project.system.domain.front.ClutterReturn;
 import com.pavis.backend.slim.project.system.domain.front.FileKey;
 import com.pavis.backend.slim.project.system.domain.front.InKgParameter;
 import com.pavis.backend.slim.project.system.domain.front.KgReturn;
+import com.pavis.backend.slim.project.system.domain.vo.TreeFile;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
@@ -47,7 +48,7 @@ public interface SysKgService extends IService<SysKg> {
      *
      * @return
      */
-    List listKg();
+    List<TreeFile> listKg();
 
     void algorithm(AlgSpO algSpO);
 
@@ -186,7 +187,7 @@ public interface SysKgService extends IService<SysKg> {
     SysEntityInstance insOrUpdEnIce(SysEntityInstance sysEntityInstance);
 
     /**
-     * 实例新增或更新
+     * 删除新增或更新
      *
      * @param fileKey
      * @return

+ 39 - 15
src/main/java/com/pavis/backend/slim/project/system/service/impl/SysKgServiceImpl.java

@@ -169,17 +169,17 @@ public class SysKgServiceImpl extends ServiceImpl<SysKgMapper, SysKg> implements
     }
 
     @Override
-    public List listKg() {
+    public List<TreeFile> listKg() {
         // 获取知识库
         List<SysKb> listKb = sysKbMapper.selectList(new QueryWrapper<>());
-        List l = new ArrayList();
+        List<TreeFile> l = new ArrayList();
         // 将知识库所有数据,构造成前端所需的树结构
         for (SysKb sysKb : listKb) {
             TreeFile tre = new TreeFile();
             tre.setId(sysKb.getKbId());
             tre.setName(sysKb.getName());
             tre.setPath(sysKb.getUrl());
-            List list = sysFileService.listTreeFiles(sysKb.getKbId());
+            List<TreeFile> list = sysFileService.listTreeFiles(sysKb.getKbId());
             tre.setChildList(list);
             l.add(tre);
         }
@@ -189,7 +189,7 @@ public class SysKgServiceImpl extends ServiceImpl<SysKgMapper, SysKg> implements
 
     @Override
     public PageInfo list(FileKey kgKey) {
-        log.info("******接口(list)--->入参(kg):{}",JSON.toJSONString(kgKey));
+        log.info("******接口(list)--->入参(kg):{}", JSON.toJSONString(kgKey));
         PageHelper.startPage(kgKey.getPageNum(), kgKey.getPageSize());
         List<SysKg> sysKgs = baseMapper.selectList(new QueryWrapper<SysKg>()
                 .eq("user_id", SecurityUtils.getUserId())
@@ -203,9 +203,15 @@ public class SysKgServiceImpl extends ServiceImpl<SysKgMapper, SysKg> implements
     @Override
     public void algorithm(AlgSpO algSpO) {
         log.info("算法传参map:{}", JSON.toJSONString(algSpO));
-        // todo 先这么做,以后还需改动
-        sysEntityInstanceMapper.delete(new QueryWrapper<SysEntityInstance>().eq("kg_id", algSpO.getKgId()));
-        sysEntityRelationMapper.delete(new QueryWrapper<SysEntityRelation>().eq("kg_id", algSpO.getKgId()));
+        // 二次更新时,先删除抽出来的数据,然后在进行保存
+        sysEntityInstanceMapper.delete(new QueryWrapper<SysEntityInstance>()
+                .eq("kg_id", algSpO.getKgId())
+                .eq("difference", Hodgepodge.DIFFERENCE_EXTRACT)
+        );
+        sysEntityRelationMapper.delete(new QueryWrapper<SysEntityRelation>()
+                .eq("kg_id", algSpO.getKgId())
+                .eq("difference", Hodgepodge.DIFFERENCE_EXTRACT)
+        );
         Integer integer = 0;
         String oCopy = "";
         String sCopy = "";
@@ -226,6 +232,8 @@ public class SysKgServiceImpl extends ServiceImpl<SysKgMapper, SysKg> implements
                         sysEntityInstanceS.setInstanceId(MD5.create().digestHex16((String) map.get("s")));
                         sysEntityInstanceS.setName((String) map.get("s"));
                         sysEntityInstanceS.setEntityName((String) map.get("sType"));
+                        // 区别(0算法抽取,1手动添加)
+                        sysEntityInstanceS.setDifference(Hodgepodge.DIFFERENCE_EXTRACT);
                         sysEntityInstanceMapper.insert(sysEntityInstanceS);
                         sCopy = MD5.create().digestHex16((String) map.get("s"));
                     } else {
@@ -245,6 +253,8 @@ public class SysKgServiceImpl extends ServiceImpl<SysKgMapper, SysKg> implements
                         sysEntityInstanceO.setInstanceId(MD5.create().digestHex16((String) map.get("o")));
                         sysEntityInstanceO.setName((String) map.get("o"));
                         sysEntityInstanceO.setEntityName((String) map.get("oType"));
+                        // 区别(0算法抽取,1手动添加)
+                        sysEntityInstanceO.setDifference(Hodgepodge.DIFFERENCE_EXTRACT);
                         sysEntityInstanceMapper.insert(sysEntityInstanceO);
                         oCopy = MD5.create().digestHex16((String) map.get("o"));
                     } else {
@@ -258,7 +268,7 @@ public class SysKgServiceImpl extends ServiceImpl<SysKgMapper, SysKg> implements
                             .eq("start_id", sCopy)
                             .eq("end_id", oCopy)
                     );
-                    if (list.size() == Hodgepodge.NUMBER) { 
+                    if (list.size() == Hodgepodge.NUMBER) {
                         // 插入实例关系
                         SysEntityRelation sysEntityRelation = new SysEntityRelation();
                         sysEntityRelation.setKgId(algSpO.getKgId());
@@ -271,6 +281,8 @@ public class SysKgServiceImpl extends ServiceImpl<SysKgMapper, SysKg> implements
                         sysEntityRelation.setEntityRelation(map.get("sType") + "-" + map.get("pType") + "-" + map.get("oType"));
                         // 设置基本信息,创建人、创建时间等。
                         sysEntityRelation.setCreateTime(DateUtil.date());
+                        // 区别(0算法抽取,1手动添加)
+                        sysEntityRelation.setDifference(Hodgepodge.DIFFERENCE_EXTRACT);
                         sysEntityRelationMapper.insert(sysEntityRelation);
                     }
                 }
@@ -583,6 +595,8 @@ public class SysKgServiceImpl extends ServiceImpl<SysKgMapper, SysKg> implements
                 sysEntityInstance.setCreateBy(String.valueOf(userId));
                 sysEntityInstance.setUserId(userId);
                 sysEntityInstance.setCreateTime(new Date());
+                // 区别(0算法抽取,1手动添加)
+                sysEntityInstance.setDifference(Hodgepodge.DIFFERENCE);
                 sysEntityInstanceMapper.insert(sysEntityInstance);
             } else {
                 sysEntityInstance.setInstanceId(nameSize.get(0).getInstanceId());
@@ -619,6 +633,8 @@ public class SysKgServiceImpl extends ServiceImpl<SysKgMapper, SysKg> implements
         if (keyEntityNce.getEntityName() != null && !"".equals(keyEntityNce.getEntityName())) {
             queryWrapper.eq("entity_name", keyEntityNce.getEntityName());
         }
+        // 对列表按照时间进行排序
+        queryWrapper.orderByDesc("create_time");
         PageHelper.startPage(keyEntityNce.getPageNum(), keyEntityNce.getPageSize());
         List<SysEntityInstance> entityNceList = sysEntityInstanceMapper.selectList(queryWrapper);
         PageInfo page = new PageInfo(entityNceList);
@@ -631,6 +647,7 @@ public class SysKgServiceImpl extends ServiceImpl<SysKgMapper, SysKg> implements
     public PageInfo selEntityRelation(FileKey keyEntityRelation) {
         log.info("********接口(selEntityRelation)--->入参(keyEntityRelation):{}", JSON.toJSONString(keyEntityRelation));
         QueryWrapper<SysEntityRelation> queryWrap = new QueryWrapper();
+        queryWrap.eq("kg_id", keyEntityRelation.getKgId());
 
         if (keyEntityRelation.getKeyWord() != null && !"".equals(keyEntityRelation.getKeyWord())) {
             PageHelper.startPage(keyEntityRelation.getPageNum(), keyEntityRelation.getPageSize());
@@ -666,7 +683,11 @@ public class SysKgServiceImpl extends ServiceImpl<SysKgMapper, SysKg> implements
                 return page;
             }
         }
-        return null;
+        PageHelper.startPage(keyEntityRelation.getPageNum(), keyEntityRelation.getPageSize());
+        List<SysEntityRelation> sysEntityRelations = sysEntityRelationMapper.selectList(queryWrap);
+        PageInfo page = new PageInfo(sysEntityRelations);
+        log.info("********接口(selEntityRelation)--->出参(page):{}", JSON.toJSONString(page));
+        return page;
     }
 
     @Override
@@ -737,9 +758,9 @@ public class SysKgServiceImpl extends ServiceImpl<SysKgMapper, SysKg> implements
         SysEntityAll sysEntityAll = selEntityAll(exportSchemaData.getKgId());
         sysEntityAll.setKgId(exportSchemaData.getKgId());
         log.info("待导出的图谱schema数据 sysEntityAll:{}", JSON.toJSONString(sysEntityAll));
-        if (null != sysEntityAll){
+        if (null != sysEntityAll) {
             ExportSysEntity exportSysEntity = new ExportSysEntity();
-            BeanUtils.copyProperties(sysEntityAll,exportSysEntity);
+            BeanUtils.copyProperties(sysEntityAll, exportSysEntity);
             exportSysEntity.setEntityAll(CommonUtils.dealEntityId(JSONArray.parseArray(sysEntityAll.getEntityAll())));
             exportSysEntity.setEntityKgAll(JSONArray.parseArray(sysEntityAll.getEntityKgAll()));
             exportSysEntity.setRelationAll(CommonUtils.dealRelationId(JSONArray.parseArray(sysEntityAll.getRelationAll())));
@@ -776,7 +797,7 @@ public class SysKgServiceImpl extends ServiceImpl<SysKgMapper, SysKg> implements
             BeanUtils.copyProperties(sysEntityAll, sysEntity);
             // // 处理前端存储的实体和关系数据。
             ExportSysEntity exportSysEntity = new ExportSysEntity();
-            BeanUtils.copyProperties(sysEntityAll,exportSysEntity);
+            BeanUtils.copyProperties(sysEntityAll, exportSysEntity);
             exportSysEntity.setEntityAll(JSONArray.parseArray(sysEntityAll.getEntityAll()));
             exportSysEntity.setEntityKgAll(JSONArray.parseArray(sysEntityAll.getEntityKgAll()));
             exportSysEntity.setRelationAll(JSONArray.parseArray(sysEntityAll.getRelationAll()));
@@ -788,7 +809,7 @@ public class SysKgServiceImpl extends ServiceImpl<SysKgMapper, SysKg> implements
             sysEntity.setUserId(SecurityUtils.getUserId());
             sysEntity.setCreateTime(DateUtil.date());
             sysEntity.setEntityId("-1");
-            log.info("待导入schema的kgId:{}",kgId);
+            log.info("待导入schema的kgId:{}", kgId);
             log.info("待导入的图谱shcema数据 sysEntity:{}", JSON.toJSONString(sysEntity));
             SysEntityAll entityKg = createEntityKg(sysEntity);
             // int insert = sysEntityMapper.insert(sysEntity);
@@ -801,6 +822,7 @@ public class SysKgServiceImpl extends ServiceImpl<SysKgMapper, SysKg> implements
         }
         return null;
     }
+
     @Override
     public SysEntityInstance insOrUpdEnIce(SysEntityInstance sysEntityInstance) {
         log.info("******接口(insOrUpdEnIce)--->入参(sysEntityInstance):{}", JSON.toJSONString(sysEntityInstance));
@@ -892,8 +914,8 @@ public class SysKgServiceImpl extends ServiceImpl<SysKgMapper, SysKg> implements
         List<SysEntityRelation> sysEntityRelations = sysEntityRelationMapper.selectList(new QueryWrapper<SysEntityRelation>()
                 .eq("start", sysEntityRelation.getStart())
                 .eq("end", sysEntityRelation.getEnd())
-                .eq("relation",sysEntityRelation.getRelation())
-                .eq("kg_id",sysEntityRelation.getKgId())
+                .eq("relation", sysEntityRelation.getRelation())
+                .eq("kg_id", sysEntityRelation.getKgId())
         );
         if (sysEntityRelations.size() == 0) {
             if (sysEntityRelation.getId() != null && !"".equals(sysEntityRelation.getId())) {
@@ -904,6 +926,8 @@ public class SysKgServiceImpl extends ServiceImpl<SysKgMapper, SysKg> implements
                 sysEntityRelation.setCreateBy(String.valueOf(userId));
                 sysEntityRelation.setCreateTime(new Date());
                 sysEntityRelation.setUserId(userId);
+                // 区别(0算法抽取,1手动添加)
+                sysEntityRelation.setDifference(Hodgepodge.DIFFERENCE);
                 sysEntityRelationMapper.insert(sysEntityRelation);
             }
         } else {