소스 검색

gz和enen分支合并,解决冲突syskgservice、sysfile

guanz 1 년 전
부모
커밋
34a28d00b2

+ 6 - 0
src/main/java/com/pavis/backend/slim/common/constant/Hodgepodge.java

@@ -13,4 +13,10 @@ public class Hodgepodge {
 
     //数据条数的默认值,用于集合判断
     public static final int NUMBER = 0;
+
+    //字符串的零
+    public static final String ZERO_STR = "0";
+
+    //字符串的一
+    public static final String ONE_STR = "1";
 }

+ 15 - 2
src/main/java/com/pavis/backend/slim/project/system/controller/SysKgController.java

@@ -6,6 +6,7 @@ import com.pavis.backend.slim.project.system.domain.SysEntityAll;
 import com.pavis.backend.slim.project.system.domain.SysFile;
 import com.pavis.backend.slim.project.system.domain.SysKg;
 import com.pavis.backend.slim.project.system.domain.algorithm.AlgSpO;
+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.service.SysEntityService;
@@ -88,7 +89,7 @@ public class SysKgController {
         return AjaxResult.success();
     }
 
-    @ApiOperation("删除知识库")
+    @ApiOperation("删除图谱")
     @ApiImplicitParam(name = "list", value = "id集合")
     @PostMapping("/delectKg")
     public AjaxResult delectKg(@RequestBody List<String> list) {
@@ -131,7 +132,7 @@ public class SysKgController {
 
     @ApiOperation("实体,实体关系创建(前段所传纹丝不动保存)")
     @PostMapping("/createEntityKg")
-    public AjaxResult createEntityKg(@RequestBody SysEntityAll sysEntityAll) {
+    public AjaxResult createEntityKg(@RequestBody SysEntity sysEntityAll) {
         return AjaxResult.success(kgService.createEntityKg(sysEntityAll));
     }
 
@@ -140,4 +141,16 @@ public class SysKgController {
     public AjaxResult selEntityAll(@RequestParam String kgId) {
         return AjaxResult.success(kgService.selEntityAll(kgId));
     }
+
+    @ApiOperation("查询实例列表")
+    @PostMapping("/selEntityInstance")
+    public AjaxResult selEntityAll(@RequestBody FileKey keyEntityNce){
+        return AjaxResult.success(kgService.selEntityInstance(keyEntityNce));
+    }
+
+    @ApiOperation("查询实例关系列表")
+    @PostMapping("/selEntityRelation")
+    public AjaxResult selEntityRelation(@RequestBody FileKey keyEntityNce){
+        return AjaxResult.success(kgService.selEntityRelation(keyEntityNce));
+    }
 }

+ 33 - 105
src/main/java/com/pavis/backend/slim/project/system/domain/SysEntity.java

@@ -2,17 +2,22 @@ package com.pavis.backend.slim.project.system.domain;
 
 import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.pavis.backend.slim.framework.web.domain.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 import springfox.documentation.spring.web.json.Json;
 
+import java.util.List;
+
 /**
  * 图谱实体表
  *
  * @author semi
  * @create 2023-06-01 10:45
  */
+@Data
 public class SysEntity extends BaseEntity {
 
     private static final long serialVersionUID = 1L;
@@ -75,114 +80,37 @@ public class SysEntity extends BaseEntity {
     @ApiModelProperty("前端需要——无需更改")
     private Integer frontTime;
 
-
     /**
-     *   以下为getter和setter方法
+     * 图谱实体集合
      */
+    @ApiModelProperty("图谱实体集合(不动)")
+    private String entityAll;
+    /**
+     * 图谱实体展示集合
+     */
+    @ApiModelProperty("图谱实体展示集合(修改)")
+    private String entityKgAll;
 
-    public Integer getFrontTime() {
-        return frontTime;
-    }
-
-    public void setFrontTime(Integer frontTime) {
-        this.frontTime = frontTime;
-    }
-    public String getColor() {
-        return color;
-    }
-
-    public void setColor(String color) {
-        this.color = color;
-    }
-
-    public String getStyleEntity() {
-        return styleEntity;
-    }
-
-    public void setStyleEntity(String styleEntity) {
-        this.styleEntity = styleEntity;
-    }
-
-    public JSON getAttribute() {
-        return attribute;
-    }
-
-    public void setAttribute(JSON attribute) {
-        this.attribute = attribute;
-    }
-
-    public String getEntityId() {
-        return entityId;
-    }
-
-    public void setEntityId(String entityId) {
-        this.entityId = entityId;
-    }
-
-    public String getKgId() {
-        return kgId;
-    }
-
-    public void setKgId(String kgId) {
-        this.kgId = kgId;
-    }
-
-    public Long getUserId() {
-        return userId;
-    }
-
-    public void setUserId(Long userId) {
-        this.userId = userId;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getNickName() {
-        return nickName;
-    }
-
-    public void setNickName(String nickName) {
-        this.nickName = nickName;
-    }
-
-    public String getProfile() {
-        return profile;
-    }
-
-    public void setProfile(String profile) {
-        this.profile = profile;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
+    /**
+     * 实体关系集合
+     */
+    @ApiModelProperty("实体关系集合")
+    private String relationAll;
+    /**
+     * 实体关系展示集合
+     */
+    @ApiModelProperty("实体关系展示集合")
+    private String relationKgAll;
 
+    /**
+     * 存储删除时的实体id集合
+     */
+    @TableField(exist = false)
+    private List<String> entityList;
+    /**
+     * 存储删除时的关系id集合
+     */
+    @TableField(exist = false)
+    private List<String> relationList;
 
-    @Override
-    public String toString() {
-        return "SysEntity{" +
-                "entityId='" + getEntityId() + '\'' +
-                ", kgId='" + getKgId() + '\'' +
-                ", userId=" + getUserId() +
-                ", name='" + getName() + '\'' +
-                ", nickName='" + getNickName() + '\'' +
-                ", profile='" + getProfile() + '\'' +
-                ", type='" + getType() + '\'' +
-                ", createBy='" + getCreateBy() + '\'' +
-                ", createTime=" + getCreateTime() +
-                ", updateBy='" + getUpdateBy() + '\'' +
-                ", updateTime=" + getUpdateTime() +
-                ", remark='" + getRemark() + '\'' +
-                '}';
-    }
 }

+ 2 - 2
src/main/java/com/pavis/backend/slim/project/system/domain/SysEntityAll.java

@@ -22,7 +22,7 @@ public class SysEntityAll extends BaseEntity {
      * 主键id
      */
     @ApiModelProperty("主键id")
-    @TableId(value = "entity_all_id",type = IdType.ASSIGN_UUID)
+    // @TableId(value = "entity_all_id",type = IdType.ASSIGN_UUID)
     private String entityAllId;
     /**
      * 图谱ID
@@ -54,6 +54,6 @@ public class SysEntityAll extends BaseEntity {
      * 实体id
      */
     @TableField(exist = false)
-    private String sysEntity;
+    private String entityId;
 
 }

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

@@ -1,6 +1,7 @@
 package com.pavis.backend.slim.project.system.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.pavis.backend.slim.framework.web.domain.BaseEntity;
 
@@ -39,6 +40,32 @@ public class SysEntityInstance extends BaseEntity {
      * 实例别称,多个别称使用逗号隔开
      */
     private String nickName;
+    /**
+     * 实体名字
+     */
+    private String entityName;
+
+    /**
+     * 图谱id
+     */
+    private String kgId;
+
+
+    public String getKgId() {
+        return kgId;
+    }
+
+    public void setKgId(String kgId) {
+        this.kgId = kgId;
+    }
+
+    public String getEntityName() {
+        return entityName;
+    }
+
+    public void setEntityName(String entityName) {
+        this.entityName = entityName;
+    }
 
     public SysEntityInstance() {
     }

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

@@ -59,4 +59,9 @@ public class SysEntityRelation extends BaseEntity {
      * 终止点id
      */
     private String endId;
+
+    /**
+     * 实体关系
+     */
+    private String entityRelation;
 }

+ 11 - 0
src/main/java/com/pavis/backend/slim/project/system/domain/SysFile.java

@@ -91,11 +91,22 @@ public class SysFile extends BaseEntity {
     @TableField(exist = false)
     private String kbName;
 
+    @TableField(exist = false)
+    private String kbId;
+
     /**
      * 文档内容txt.
      */
     private String textContent;
 
+    public String getKbId() {
+        return kbId;
+    }
+
+    public void setKbId(String kbId) {
+        this.kbId = kbId;
+    }
+
     public String getKbName() {
         return kbName;
     }

+ 10 - 0
src/main/java/com/pavis/backend/slim/project/system/domain/SysRelation.java

@@ -96,4 +96,14 @@ public class SysRelation extends BaseEntity {
      */
     @ApiModelProperty("方向")
     private String direction;
+    /**
+     * 实体关系集合
+     */
+    @ApiModelProperty("实体关系集合")
+    private String relationAll;
+    /**
+     * 实体关系展示集合
+     */
+    @ApiModelProperty("实体关系展示集合")
+    private String relationKgAll;
 }

+ 15 - 0
src/main/java/com/pavis/backend/slim/project/system/domain/front/FileKey.java

@@ -34,4 +34,19 @@ public class FileKey extends SysFile {
     @ApiModelProperty("文件名字")
     private String fileName;
 
+    @ApiModelProperty("图谱id")
+    private String kgId;
+
+    @ApiModelProperty("实体名字")
+    private String entityName;
+
+    @ApiModelProperty("实体关系")
+    private String entityRelation;
+
+    @ApiModelProperty("实体和实体关系的区分--0是实体,1是实体关系")
+    private String entOrRel;
+
+    @ApiModelProperty("关键字")
+    private String keyWord;
+
 }

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

@@ -1,9 +1,13 @@
 package com.pavis.backend.slim.project.system.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.pagehelper.PageInfo;
+import com.pavis.backend.slim.project.system.domain.SysEntity;
 import com.pavis.backend.slim.project.system.domain.SysEntityAll;
+import com.pavis.backend.slim.project.system.domain.SysEntityInstance;
 import com.pavis.backend.slim.project.system.domain.SysKg;
 import com.pavis.backend.slim.project.system.domain.algorithm.AlgSpO;
+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;
 
@@ -63,7 +67,7 @@ public interface SysKgService extends IService<SysKg> {
      * @param sysEntityAll 前端传参数据
      * @return 前端所需要的返参数据
      */
-    public SysEntityAll createEntityKg(SysEntityAll sysEntityAll);
+    SysEntityAll createEntityKg(SysEntity sysEntityAll);
 
 
     /**
@@ -71,7 +75,35 @@ public interface SysKgService extends IService<SysKg> {
      * @param kgId 图谱id
      * @return 实体实例关系的数据集合
      */
-    public List<SysEntityAll> selEntityAll(String kgId);
+    // public List<SysEntityAll> selEntityAll(String kgId);
+    SysEntityAll selEntityAll(String kgId);
+
+    /**
+     * 实例新增或更新接口
+     * @param sysEntityInstance 实例详情
+     * @return 实例详情
+     */
+    SysEntityInstance insEntNce(SysEntityInstance sysEntityInstance);
+
+    /**
+     * 删除实例 -->可单个删除,也可多个删除
+     * @param entityNceList 实例主键的id集合
+     */
+    void delEntNce(List<String> entityNceList);
+
+    /**
+     * 查询实例集合
+     * @param keyEntityNce 公共查询类
+     * @return 实例列表
+     */
+    PageInfo selEntityInstance(FileKey keyEntityNce);
+
+    /**
+     * 查询实例集合
+     * @param keyEntityRelation 公共查询类
+     * @return 实例列表
+     */
+    PageInfo selEntityRelation(FileKey keyEntityRelation);
 
     /**
      * 根据kgId获取文档列表。
@@ -88,4 +120,5 @@ public interface SysKgService extends IService<SysKg> {
      * @return
      */
     Boolean updateGrapgStatus(String kgId,Integer graphStatus,Integer annotationStatus,Integer finalStatus,String finalReason);
+
 }

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

@@ -4,7 +4,10 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.crypto.digest.MD5;
 import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import com.pavis.backend.slim.common.constant.Hodgepodge;
 import com.pavis.backend.slim.common.utils.SecurityUtils;
 import com.pavis.backend.slim.project.system.client.HttpClientUtil;
@@ -19,6 +22,7 @@ import com.pavis.backend.slim.project.system.domain.SysKgEntity;
 import com.pavis.backend.slim.project.system.domain.SysKgRelation;
 import com.pavis.backend.slim.project.system.domain.SysRelation;
 import com.pavis.backend.slim.project.system.domain.algorithm.AlgSpO;
+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.front.instance.KgInstance;
@@ -175,58 +179,69 @@ public class SysKgServiceImpl extends ServiceImpl<SysKgMapper, SysKg> implements
         log.info("算法传参map:{}", JSON.toJSONString(algSpO));
         // todo 先这么做,以后还需改动
         Integer integer = 0;
+        String oCopy = "";
+        String sCopy = "";
         if (integer == 0) {
             for (Map map : algSpO.getSpo()) {
-                // check库里是否存在此值
-                String s = md5Check(MD5.create().digestHex16((String) map.get("s")));
-                // 临时变量,将起点id赋值给sCopy,最后用于实例关系插入时使用
-                String sCopy = "";
-                if (s.equals("false")) {
-                    // 插入起始点实例
-                    SysEntityInstance sysEntityInstanceS = new SysEntityInstance();
-                    // 创建实例
-                    sysEntityInstanceS.setUserId(Hodgepodge.ALGORITHM);
-                    sysEntityInstanceS.setCreateBy(String.valueOf(Hodgepodge.ALGORITHM));
-                    sysEntityInstanceS.setCreateTime(DateUtil.date());
-                    sysEntityInstanceS.setInstanceId(MD5.create().digestHex16((String) map.get("s")));
-                    sysEntityInstanceS.setName((String) map.get("s"));
-                    sysEntityInstanceMapper.insert(sysEntityInstanceS);
-                    sCopy = MD5.create().digestHex16((String) map.get("s"));
-                } else {
-                    sCopy = s;
+                if (map.get("s") != null) {
+                    // check库里是否存在此值
+                    String s = md5Check(MD5.create().digestHex16((String) map.get("s")));
+                    // 临时变量,将起点id赋值给sCopy,最后用于实例关系插入时使用
+                    if (s.equals("false")) {
+                        // 插入起始点实例
+                        SysEntityInstance sysEntityInstanceS = new SysEntityInstance();
+                        // 创建实例
+                        sysEntityInstanceS.setUserId(Hodgepodge.ALGORITHM);
+                        sysEntityInstanceS.setCreateBy(String.valueOf(Hodgepodge.ALGORITHM));
+                        sysEntityInstanceS.setKgId(algSpO.getKgId());
+                        sysEntityInstanceS.setCreateTime(DateUtil.date());
+                        sysEntityInstanceS.setInstanceId(MD5.create().digestHex16((String) map.get("s")));
+                        sysEntityInstanceS.setName((String) map.get("s"));
+                        sysEntityInstanceS.setEntityName((String) map.get("sType"));
+                        sysEntityInstanceMapper.insert(sysEntityInstanceS);
+                        sCopy = MD5.create().digestHex16((String) map.get("s"));
+                    } else {
+                        sCopy = s;
+                    }
                 }
-                String o = md5Check(MD5.create().digestHex16((String) map.get("o")));
-                String oCopy = "";
-                if (o.equals("false")) {
-                    // 插入终点实例
-                    SysEntityInstance sysEntityInstanceO = new SysEntityInstance();
-                    // 创建实例
-                    sysEntityInstanceO.setUserId(Hodgepodge.ALGORITHM);
-                    sysEntityInstanceO.setCreateBy(String.valueOf(Hodgepodge.ALGORITHM));
-                    sysEntityInstanceO.setCreateTime(DateUtil.date());
-                    sysEntityInstanceO.setInstanceId(MD5.create().digestHex16((String) map.get("o")));
-                    sysEntityInstanceO.setName((String) map.get("o"));
-                    sysEntityInstanceMapper.insert(sysEntityInstanceO);
-                    oCopy = MD5.create().digestHex16((String) map.get("o"));
-                } else {
-                    oCopy = o;
+                if (map.get("o") != null) {
+                    String o = md5Check(MD5.create().digestHex16((String) map.get("o")));
+                    if (o.equals("false")) {
+                        // 插入终点实例
+                        SysEntityInstance sysEntityInstanceO = new SysEntityInstance();
+                        // 创建实例
+                        sysEntityInstanceO.setUserId(Hodgepodge.ALGORITHM);
+                        sysEntityInstanceO.setCreateBy(String.valueOf(Hodgepodge.ALGORITHM));
+                        sysEntityInstanceO.setKgId(algSpO.getKgId());
+                        sysEntityInstanceO.setCreateTime(DateUtil.date());
+                        sysEntityInstanceO.setInstanceId(MD5.create().digestHex16((String) map.get("o")));
+                        sysEntityInstanceO.setName((String) map.get("o"));
+                        sysEntityInstanceO.setEntityName((String) map.get("oType"));
+                        sysEntityInstanceMapper.insert(sysEntityInstanceO);
+                        oCopy = MD5.create().digestHex16((String) map.get("o"));
+                    } else {
+                        oCopy = o;
+                    }
                 }
-                // 对算法那边出现的重复数据进行去去重判断,如果数据库里有数据,则不在插入;如果数据库里没有,则进行插入
-                List<SysEntityRelation> list = sysEntityRelationMapper.selectList(new QueryWrapper<SysEntityRelation>()
-                        .eq("kg_id", algSpO.getKgId())
-                        .eq("start_id", sCopy)
-                        .eq("end_id", oCopy));
-                if (list.size() == Hodgepodge.NUMBER) {
-                    // 插入实例关系
-                    SysEntityRelation sysEntityRelation = new SysEntityRelation();
-                    sysEntityRelation.setKgId(algSpO.getKgId());
-                    sysEntityRelation.setUserId(Hodgepodge.ALGORITHM);
-                    sysEntityRelation.setStart((String) map.get("s"));
-                    sysEntityRelation.setStartId(sCopy);
-                    sysEntityRelation.setRelation((String) map.get("p"));
-                    sysEntityRelation.setEnd((String) map.get("o"));
-                    sysEntityRelation.setEndId(oCopy);
-                    sysEntityRelationMapper.insert(sysEntityRelation);
+                if (map.get("p") != null) {
+                    // 对算法那边出现的重复数据进行去去重判断,如果数据库里有数据,则不在插入;如果数据库里没有,则进行插入
+                    List<SysEntityRelation> list = sysEntityRelationMapper.selectList(new QueryWrapper<SysEntityRelation>()
+                            .eq("kg_id", algSpO.getKgId())
+                            .eq("start_id", sCopy)
+                            .eq("end_id", oCopy));
+                    if (list.size() == Hodgepodge.NUMBER) {
+                        // 插入实例关系
+                        SysEntityRelation sysEntityRelation = new SysEntityRelation();
+                        sysEntityRelation.setKgId(algSpO.getKgId());
+                        sysEntityRelation.setUserId(Hodgepodge.ALGORITHM);
+                        sysEntityRelation.setStart((String) map.get("s"));
+                        sysEntityRelation.setStartId(sCopy);
+                        sysEntityRelation.setRelation((String) map.get("p"));
+                        sysEntityRelation.setEnd((String) map.get("o"));
+                        sysEntityRelation.setEndId(oCopy);
+                        sysEntityRelation.setEntityRelation(map.get("sType") + "-" + map.get("pType") + "-" + (String) map.get("oType"));
+                        sysEntityRelationMapper.insert(sysEntityRelation);
+                    }
                 }
             }
         }
@@ -362,42 +377,263 @@ public class SysKgServiceImpl extends ServiceImpl<SysKgMapper, SysKg> implements
     }
 
     @Override
-    public SysEntityAll createEntityKg(SysEntityAll sysEntityAll) {
-        // zez 获取登录用户id
-        long userId = SecurityUtils.getUserId();
-        // zez 如果主键id -->EntityAllId 是null或是空 则新增,否则 根据主键进行更新
-        if (sysEntityAll.getEntityAllId() != null && !"".equals(sysEntityAll.getEntityAllId())) {
-            sysEntityAll.setUpdateBy(String.valueOf(userId));
-            sysEntityAll.setUpdateTime(new Date());
-            sysEntityAllMapper.updateById(sysEntityAll);
-        } else {
-            // zez 将数据插入数据库,这个表--> sys_entity
-            sysEntityAll.setCreateBy(String.valueOf(userId));
-            sysEntityAll.setCreateTime(new Date());
-            sysEntityAllMapper.insert(sysEntityAll);
-            List<Map> entityAlList = JSON.parseObject(sysEntityAll.getEntityAll(), List.class);
-            for (Map mapEntity : entityAlList) {
+    public SysEntityAll createEntityKg(SysEntity sysEntityAll) {
+        log.info("*********接口(createEntityKg)------>入参(sysEntityAll):{}", JSON.toJSONString(sysEntityAll));
+
+        // zez 根据前端传参先进行删除需要删除的关系和实体
+        this.delEntityAndRelation(sysEntityAll);
+        // zez 根据传参获取实例实体所需的值
+        List<Map> entityAlList = JSON.parseObject(sysEntityAll.getEntityAll(), List.class);
+        // zez 对实体实例进行更新和保存
+        this.entityInsOrUpd(entityAlList, sysEntityAll);
+        // zez 根据传参获取关系所需的值
+        List<Map> relationAlList = JSON.parseObject(sysEntityAll.getRelationAll(), List.class);
+        // zez 对实体实例进行更新和保存
+        this.relationInsOrUpd(relationAlList, sysEntityAll);
+        return null;
+    }
+
+    /**
+     * zez 实体实例关系删除
+     */
+    public void delEntityAndRelation(SysEntity sysEntityAll) {
+        // zez 根据前端传参先进行删除
+        if (sysEntityAll.getEntityList() != null && sysEntityAll.getEntityList().size() > 0) {
+            log.info("******-->删除实体");
+            for (String entityId : sysEntityAll.getEntityList()) {
+                sysEntityMapper.deleteById(entityId);
+            }
+        }
+
+        if (sysEntityAll.getRelationList() != null && sysEntityAll.getRelationList().size() > 0) {
+            log.info("******-->删除关系");
+            for (String relationId : sysEntityAll.getRelationList()) {
+                sysRelationMapper.deleteById(relationId);
+            }
+        }
+    }
+
+    /**
+     * zez 实体实例保存或更新
+     */
+    public void entityInsOrUpd(List<Map> entityAlList, SysEntity sysEntityAll) {
+        for (Map mapEntity : entityAlList) {
+            log.info("********entity----->:{}", mapEntity.get("entityId"));
+            // zez 根据entityId进行判断,如果是null和空,则新增;否则修改
+            if (mapEntity.get("entityId") != null && !"".equals(mapEntity.get("entityId").toString())) {
+                List<SysEntity> list = sysEntityMapper.selectList(new QueryWrapper<SysEntity>()
+                        .eq("entity_id", mapEntity.get("entityId").toString()));
+                if (list.size() > 0) {
+                    // zez 更新实体实例
+                    this.upaEntity(mapEntity, sysEntityAll);
+                }
+            } else {
+                // zez 新增实体实例
                 SysEntity sysEntity = new SysEntity();
                 sysEntity.setKgId(sysEntityAll.getKgId());
                 sysEntity.setColor(mapEntity.get("color").toString());
                 sysEntity.setName(mapEntity.get("name").toString());
-                sysEntity.setUserId(userId);
-                sysEntity.setUpdateBy(String.valueOf(userId));
-                sysEntity.setUpdateTime(new Date());
+                sysEntity.setEntityAll(sysEntityAll.getEntityAll());
+                sysEntity.setEntityKgAll(sysEntityAll.getEntityKgAll());
+                sysEntity.setRelationAll(sysEntityAll.getRelationAll());
+                sysEntity.setRelationKgAll(sysEntityAll.getRelationKgAll());
+                sysEntity.setUserId(SecurityUtils.getUserId());
+                sysEntity.setCreateBy(String.valueOf(SecurityUtils.getUserId()));
+                sysEntity.setCreateTime(new Date());
                 sysEntityMapper.insert(sysEntity);
+                // zez 新增后对主键id进行存储,存储到这里-->mapEntity
+                mapEntity.put("entityId", sysEntity.getEntityId());
+            }
+        }
+        // zez 对数据结构的变更,进行更新  sysEntity-->entityAlList-->entityAll-->sysEntityAll 根据kg_id
+        sysEntityAll.setEntityAll(entityAlList.toString());
+        sysEntityMapper.update(sysEntityAll, new QueryWrapper<SysEntity>().eq("kg_id", sysEntityAll.getKgId()));
+    }
+
+    /**
+     * zez 实体实例关系保存或更新
+     */
+    public void relationInsOrUpd(List<Map> relationAlList, SysEntity sysEntityAll) {
+        // zez relationAlList 是 [] ,说明没有创建关系,否则便有关系
+        if (!"[]".equals(relationAlList)) {
+            for (Map mapRelation : relationAlList) {
+                if (mapRelation.get("relationId") == null) {
+                    SysRelation sysRelation = new SysRelation();
+                    sysRelation.setKgId(sysEntityAll.getKgId());
+                    sysRelation.setUserId(SecurityUtils.getUserId());
+                    sysRelation.setStart(mapRelation.get("startName").toString());
+                    sysRelation.setStartId(mapRelation.get("start").toString());
+                    sysRelation.setEnd(mapRelation.get("endName").toString());
+                    sysRelation.setEndId(mapRelation.get("end").toString());
+                    sysRelation.setRelation(mapRelation.get("relation").toString());
+                    sysRelation.setCreateBy(String.valueOf(SecurityUtils.getUserId()));
+                    sysRelation.setCreateTime(new Date());
+                    sysRelationMapper.insert(sysRelation);
+                    // zez 对关系主键进行存储,放入这里 -->mapRelation
+                    mapRelation.put("relationId", sysRelation.getRelationId());
+                } else {
+                    SysRelation sysRelation = new SysRelation();
+                    sysRelation.setRelationId(mapRelation.get("relationId").toString());
+                    sysRelation.setStart(mapRelation.get("startName").toString());
+                    sysRelation.setStartId(mapRelation.get("start").toString());
+                    sysRelation.setEnd(mapRelation.get("endName").toString());
+                    sysRelation.setEndId(mapRelation.get("end").toString());
+                    sysRelation.setRelation(mapRelation.get("relation").toString());
+                    sysRelation.setUpdateBy(String.valueOf(SecurityUtils.getUserId()));
+                    sysRelation.setUpdateTime(new Date());
+                    sysRelationMapper.updateById(sysRelation);
+                }
             }
+            // zez 对关系主键存储后,进行单个字段的更新 -->relation_all
+            sysEntityAll.setRelationAll(relationAlList.toString());
+            UpdateWrapper<SysEntity> updateWrapper = new UpdateWrapper();
+            updateWrapper.eq("kg_id", sysEntityAll.getKgId());
+            updateWrapper.set("relation_all", sysEntityAll.getRelationAll());
+            sysEntityMapper.update(null, updateWrapper);
         }
-        return sysEntityAll;
+    }
+
+    /**
+     * zez 用于更新实体实例
+     */
+    public void upaEntity(Map mapEntity, SysEntity sysEntityAll) {
+        SysEntity sysEntity = new SysEntity();
+        sysEntity.setEntityId(mapEntity.get("entityId").toString());
+        sysEntity.setKgId(sysEntityAll.getKgId());
+        sysEntity.setColor(mapEntity.get("color").toString());
+        sysEntity.setName(mapEntity.get("name").toString());
+        sysEntity.setEntityAll(sysEntityAll.getEntityAll());
+        sysEntity.setEntityKgAll(sysEntityAll.getEntityKgAll());
+        sysEntity.setRelationAll(sysEntityAll.getRelationAll());
+        sysEntity.setRelationKgAll(sysEntityAll.getRelationKgAll());
+        sysEntity.setUserId(SecurityUtils.getUserId());
+        sysEntity.setCreateBy(String.valueOf(SecurityUtils.getUserId()));
+        sysEntity.setCreateTime(new Date());
+        sysEntityMapper.updateById(sysEntity);
     }
 
     @Override
-    public List<SysEntityAll> selEntityAll(String kgId) {
+    public SysEntityAll selEntityAll(String kgId) {
         log.info("------------------------>kgId:{}", kgId);
+        SysEntityAll entityAll = new SysEntityAll();
         // zez 根据kgId去查询数据
         if (kgId != null && !"".equals(kgId)) {
-            List<SysEntityAll> listEntity = sysEntityAllMapper.selectList(new QueryWrapper<SysEntityAll>()
+            List<SysEntity> listEntity = sysEntityMapper.selectList(new QueryWrapper<SysEntity>()
                     .eq("kg_id", kgId));
-            return listEntity;
+            if (listEntity.size() > 0) {
+                SysEntity sysEntity = listEntity.get(0);
+                entityAll.setEntityAll(sysEntity.getEntityAll());
+                entityAll.setEntityKgAll(sysEntity.getEntityKgAll());
+                entityAll.setRelationAll(sysEntity.getRelationAll());
+                entityAll.setRelationKgAll(sysEntity.getRelationKgAll());
+            }
+            log.info("*********出参--->:{}", JSON.toJSONString(entityAll));
+            return entityAll;
+        }
+        return null;
+    }
+
+    @Override
+    public SysEntityInstance insEntNce(SysEntityInstance sysEntityInstance) {
+        log.info("****新增实例或更新接口(insEntNce)--->入参(sysEntityInstance):{}", sysEntityInstance);
+        // zez 获取登录人id
+        Long userId = SecurityUtils.getUserId();
+        // zez 根据名字进行实体实例去重  -->sys_entity_instance  如果存在则不再进行新增而是更新,如果不存在,则新增
+        List<SysEntityInstance> nameSize = sysEntityInstanceMapper.selectList(new QueryWrapper<SysEntityInstance>()
+                .eq("name", sysEntityInstance.getName()));
+        // zez 根据前端传参的instanceId判断,此条数据是更新还是新增,如果为null或者是空,则是新增,否则是更新
+        if (sysEntityInstance.getInstanceId() == null || "".equals(sysEntityInstance.getInstanceId())) {
+            // zez 数据库内没数据,则新增 反之更新
+            if (nameSize.size() == 0) {
+                String instanceId = MD5.create().digestHex16(sysEntityInstance.getName());
+                sysEntityInstance.setInstanceId(instanceId);
+                sysEntityInstance.setCreateBy(String.valueOf(userId));
+                sysEntityInstance.setUserId(userId);
+                sysEntityInstance.setCreateTime(new Date());
+                sysEntityInstanceMapper.insert(sysEntityInstance);
+            } else {
+                sysEntityInstance.setInstanceId(nameSize.get(0).getInstanceId());
+                sysEntityInstance.setCreateBy(String.valueOf(userId));
+                sysEntityInstance.setUserId(userId);
+                sysEntityInstance.setCreateTime(new Date());
+                sysEntityInstance.setUpdateBy(String.valueOf(userId));
+                sysEntityInstance.setUpdateTime(new Date());
+                sysEntityInstanceMapper.updateById(sysEntityInstance);
+            }
+        } else {
+            sysEntityInstanceMapper.updateById(sysEntityInstance);
+        }
+        return null;
+    }
+
+    @Override
+    public void delEntNce(List<String> entityNceList) {
+        for (String instanceId : entityNceList) {
+            sysEntityInstanceMapper.deleteById(instanceId);
+        }
+    }
+
+    @Override
+    public PageInfo selEntityInstance(FileKey keyEntityNce) {
+        log.info("********接口(selEntityInstance)--->入参(keyEntityNce):{}", JSON.toJSONString(keyEntityNce));
+        QueryWrapper<SysEntityInstance> queryWrapper = new QueryWrapper();
+        queryWrapper.eq("kg_id", keyEntityNce.getKgId());
+        if (keyEntityNce.getKeyWord() != null && !"".equals(keyEntityNce.getKeyWord())) {
+            queryWrapper.like("name",keyEntityNce.getKeyWord());
+        }
+
+        // zez 如果EntityName(实体名字)有值,则跟它一起连查,如果没有,则不管
+        if (keyEntityNce.getEntityName() != null && !"".equals(keyEntityNce.getEntityName())) {
+            queryWrapper.eq("entity_name", keyEntityNce.getEntityName());
+        }
+        PageHelper.startPage(keyEntityNce.getPageNum(), keyEntityNce.getPageSize());
+        List<SysEntityInstance> entityNceList = sysEntityInstanceMapper.selectList(queryWrapper);
+        PageInfo page = new PageInfo(entityNceList);
+        log.info("********接口(selEntityInstance)--->出参(page):{}", JSON.toJSONString(page));
+        return page;
+    }
+
+
+    @Override
+    public PageInfo selEntityRelation(FileKey keyEntityRelation) {
+        log.info("********接口(selEntityRelation)--->入参(keyEntityRelation):{}", JSON.toJSONString(keyEntityRelation));
+        QueryWrapper<SysEntityRelation> queryWrap = new QueryWrapper();
+
+        if (keyEntityRelation.getKeyWord() != null && !"".equals(keyEntityRelation.getKeyWord())) {
+            queryWrap
+                    .like("start",keyEntityRelation.getKeyWord())
+                    .or()
+                    .like("relation",keyEntityRelation.getKeyWord())
+                    .or()
+                    .like("end",keyEntityRelation.getKeyWord())
+            ;
+        }
+        // zez 根据实体名字查询实例关系
+        if (Hodgepodge.ZERO_STR.equals(keyEntityRelation.getEntOrRel())) {
+            if (keyEntityRelation.getEntityName() != null && !"".equals(keyEntityRelation.getEntityName())) {
+                queryWrap
+                        .like("entity_relation", keyEntityRelation.getEntityName())
+                        .eq("kg_id", keyEntityRelation.getKgId());
+                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;
+            }
+        }
+
+        // zez 根据实体关系查询关系
+        if (Hodgepodge.ONE_STR.equals(keyEntityRelation.getEntOrRel())) {
+            if (keyEntityRelation.getEntityRelation() != null && !"".equals(keyEntityRelation.getEntityRelation())) {
+                queryWrap
+                        .eq("entity_relation", "-" + keyEntityRelation.getEntityRelation() + "-")
+                        .eq("kg_id", keyEntityRelation.getKgId());
+                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;
+            }
         }
         return null;
     }

+ 2 - 1
src/main/resources/mapper/system/SysFileMapper.xml

@@ -36,7 +36,8 @@
         SELECT
         sf.file_id,sf.user_id,sf.name,sf.original_name,sf.object_key,sf.url,
         sf.path,sf.size,sf.type,sf.suffix,sf.icon,sf.identifier,
-        sf.is_dir,sf.create_by,sf.create_time,sf.update_by,sf.update_time,sk.name as kbName
+        sf.is_dir,sf.create_by,sf.create_time,sf.update_by,sf.update_time,sk.name as kbName,
+        sk.kb_id as kbId
         FROM
         sys_file sf
         LEFT JOIN sys_kb_file skf ON sf.file_id = skf.file_id