From 4e208408b800954fcf564d0ed46f65a64a7c1bb9 Mon Sep 17 00:00:00 2001 From: chenpeng Date: Thu, 27 Feb 2025 14:27:52 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9F=A5=E8=AF=86=E5=9B=BE=E8=B0=B1-=E4=B8=BB?= =?UTF-8?q?=E4=BD=93=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3=E8=81=94=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-modules/management-platform/pom.xml | 4 + .../controller/kg/KgEntityController.java | 14 +-- .../kg/KgEntityPropertiesController.java | 14 +-- .../kg/KgOntologyInfoController.java | 14 +-- .../platform/domain/kg/KgEntityRelation.java | 2 +- .../platform/domain/kg/KgOntologyInfo.java | 5 ++ .../platform/domain/kg/dto/GraphData.java | 15 ++++ .../domain/kg/dto/KgEntityInfoDTO.java | 48 +++++++++-- .../domain/kg/dto/KgEntityRelationDTO.java | 53 ++++++++++++ .../mapper/kg/KgEntityRelationsMapper.java | 3 +- .../service/KgEntityRelationsService.java | 3 +- .../platform/service/KgEntityRepository.java | 7 ++ .../service/KgOntologyInfoService.java | 5 +- .../service/impl/KgEntityInfoServiceImpl.java | 7 +- .../impl/KgEntityRelationsServiceImpl.java | 3 +- .../impl/KgOntologyInfoServiceImpl.java | 86 +++++++++++-------- .../KgEntityRelationsMapper.xml | 2 +- .../KgOntologyInfoMapper.xml | 19 +++- 18 files changed, 222 insertions(+), 82 deletions(-) create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/dto/GraphData.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/dto/KgEntityRelationDTO.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/KgEntityRepository.java diff --git a/ruoyi-modules/management-platform/pom.xml b/ruoyi-modules/management-platform/pom.xml index 5d8bbd33..97c684ff 100644 --- a/ruoyi-modules/management-platform/pom.xml +++ b/ruoyi-modules/management-platform/pom.xml @@ -253,6 +253,10 @@ org.springframework.boot spring-boot-starter-data-neo4j + + org.neo4j.driver + neo4j-java-driver + com.alibaba easyexcel diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/kg/KgEntityController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/kg/KgEntityController.java index 6509cda9..fa79e955 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/kg/KgEntityController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/kg/KgEntityController.java @@ -25,7 +25,7 @@ public class KgEntityController extends BaseController { private KgEntityInfoService kgEntityInfoService; /** - * 新增主体 + * 新增实体 * * @param entityInfo * @return @@ -37,7 +37,7 @@ public class KgEntityController extends BaseController { } /** - * 修改主体 + * 修改实体 * * @param entityInfo * @return @@ -49,7 +49,7 @@ public class KgEntityController extends BaseController { } /** - * 主体列表 + * 实体列表 * @return */ @GetMapping("/list") @@ -60,7 +60,7 @@ public class KgEntityController extends BaseController { } /** - * 主体详情 + * 实体详情 * @param id * @return */ @@ -70,7 +70,7 @@ public class KgEntityController extends BaseController { } /** - * 删除主体 + * 删除实体 * @param id * @return */ @@ -81,7 +81,7 @@ public class KgEntityController extends BaseController { } /** - * 主体导出 + * 实体导出 * @param response * @param id */ @@ -89,6 +89,6 @@ public class KgEntityController extends BaseController { public void export(HttpServletResponse response,@PathVariable Long id) { KgEntityInfo Entity = kgEntityInfoService.getEntity(id); ExcelUtil util = new ExcelUtil(SysDictData.class); - util.exportExcel(response, null, "主体数据"); + util.exportExcel(response, null, "实体数据"); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/kg/KgEntityPropertiesController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/kg/KgEntityPropertiesController.java index 3bfce97c..2b9335b7 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/kg/KgEntityPropertiesController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/kg/KgEntityPropertiesController.java @@ -24,7 +24,7 @@ public class KgEntityPropertiesController extends BaseController { private KgEntityPropertiesService kgEntityPropertiesService; /** - * 新增主体 + * 新增实体属性 * * @param entityProperties * @return @@ -36,7 +36,7 @@ public class KgEntityPropertiesController extends BaseController { } /** - * 修改主体 + * 修改实体属性 * * @param KgEntityProperty * @return @@ -48,7 +48,7 @@ public class KgEntityPropertiesController extends BaseController { } /** - * 主体列表 + * 实体属性列表 * @return */ @GetMapping("/list") @@ -59,7 +59,7 @@ public class KgEntityPropertiesController extends BaseController { } /** - * 主体详情 + * 实体属性详情 * @param id * @return */ @@ -69,7 +69,7 @@ public class KgEntityPropertiesController extends BaseController { } /** - * 删除主体 + * 删除实体属性 * @param id * @return */ @@ -80,7 +80,7 @@ public class KgEntityPropertiesController extends BaseController { } /** - * 主体导出 + * 实体属性导出 * @param response * @param id */ @@ -88,6 +88,6 @@ public class KgEntityPropertiesController extends BaseController { public void export(HttpServletResponse response,@PathVariable Long id) { KgEntityProperty EntityProperty = kgEntityPropertiesService.getEntityProperty(id); ExcelUtil util = new ExcelUtil(SysDictData.class); - util.exportExcel(response, null, "主体数据"); + util.exportExcel(response, null, "实体属性数据"); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/kg/KgOntologyInfoController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/kg/KgOntologyInfoController.java index a61f740c..2610cd5a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/kg/KgOntologyInfoController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/kg/KgOntologyInfoController.java @@ -42,7 +42,7 @@ public class KgOntologyInfoController extends BaseController { } /** - * 修改主体基本信息 + * 修改主体信息 * * @param ontology * @return @@ -53,18 +53,6 @@ public class KgOntologyInfoController extends BaseController { return R.ok("修改成功"); } - /** - * 修改主体详细信息 - * - * @param ontology - * @return - */ - @PutMapping("/info/detail") - public R updateDetail(@Validated @RequestBody KgOntologyUpdateDTO ontology) { - kgOntologyInfoService.updateDetail(ontology); - return R.ok("修改成功"); - } - /** * 主体列表 * @return diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/KgEntityRelation.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/KgEntityRelation.java index ead79c17..d1c24083 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/KgEntityRelation.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/KgEntityRelation.java @@ -14,7 +14,7 @@ public class KgEntityRelation implements Serializable { /** * 关系主键 */ - private Long id; + private String id; /** * 关系名称 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/KgOntologyInfo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/KgOntologyInfo.java index fc676fec..b772353d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/KgOntologyInfo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/KgOntologyInfo.java @@ -28,6 +28,11 @@ public class KgOntologyInfo implements Serializable { @NotNull(message = "主体描述不能为空") private String description; + /** + * 图信息 + */ + private String dag; + /** * 概念个数 */ diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/dto/GraphData.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/dto/GraphData.java new file mode 100644 index 00000000..ccebb015 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/dto/GraphData.java @@ -0,0 +1,15 @@ +package com.ruoyi.platform.domain.kg.dto; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class GraphData { + private List nodes; + private List edges; + private List> combos; + + +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/dto/KgEntityInfoDTO.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/dto/KgEntityInfoDTO.java index 91b2ab26..36ab7c44 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/dto/KgEntityInfoDTO.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/dto/KgEntityInfoDTO.java @@ -4,25 +4,61 @@ import com.ruoyi.platform.domain.kg.KgEntityInfo; import com.ruoyi.platform.domain.kg.KgEntityProperty; import com.ruoyi.platform.domain.kg.KgEntityRelation; import lombok.Data; +import org.springframework.data.neo4j.core.schema.GeneratedValue; +import org.springframework.data.neo4j.core.schema.Id; +import org.springframework.data.neo4j.core.schema.Node; +import org.springframework.data.neo4j.core.schema.Relationship; -import java.util.Date; -import java.util.List; +import javax.validation.constraints.NotNull; +import java.util.*; /** * kg_entity_info */ @Data -public class KgEntityInfoDTO extends KgEntityInfo { +@Node("KgEntity") +public class KgEntityInfoDTO{ + /** * 实体主键 */ - private List properties; + @Id + private Long id; + + private String label; + private String type; + private Map labelCfg; + private Map style; + private Integer x; + private Integer y; + private Integer depth; + + private String name; /** - * 实体名称 + * 实体描述 */ - private List relations; + private String description; + /** + * 背景色 + */ + private String bkColor; + /** + * 图标路径 + */ + private String icon; + + /** + * 属性集合 + */ + private List properties; + + /** + * 关系集合 + */ + @Relationship(type = "CONNECTS_TO", direction = Relationship.Direction.OUTGOING) + private List relations = new ArrayList<>(); } \ No newline at end of file diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/dto/KgEntityRelationDTO.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/dto/KgEntityRelationDTO.java new file mode 100644 index 00000000..a2240e6d --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/dto/KgEntityRelationDTO.java @@ -0,0 +1,53 @@ +package com.ruoyi.platform.domain.kg.dto; + +import com.ruoyi.platform.domain.kg.KgEntityRelation; +import lombok.Data; +import org.springframework.data.neo4j.core.schema.Id; +import org.springframework.data.neo4j.core.schema.RelationshipId; +import org.springframework.data.neo4j.core.schema.RelationshipProperties; +import org.springframework.data.neo4j.core.schema.TargetNode; + +import java.util.List; +import java.util.Map; + +/** + * kg_entity_relations + */ +@Data +//@RelationshipProperties +public class KgEntityRelationDTO { + +// @Id + private String id; + + private String target; + private String source; + private Map labelCfg; + private Map style; + private Map startPoint; + private Map endPoint; + private Integer sourceAnchor; + private Integer targetAnchor; + private String type; + private List curvePosition; + private List minCurveOffset; + private Integer depth; + private String name; + /** + * 关联实体ID + */ + private Long entityId; + + /** + * 终点实体ID + */ + @TargetNode + private KgEntityInfoDTO targetEntity; + + public KgEntityRelationDTO() { + } + + public KgEntityRelationDTO(String id) { + this.id = id; + } +} \ No newline at end of file diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/kg/KgEntityRelationsMapper.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/kg/KgEntityRelationsMapper.java index 253d98ac..c867673c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/kg/KgEntityRelationsMapper.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/kg/KgEntityRelationsMapper.java @@ -2,6 +2,7 @@ package com.ruoyi.platform.mapper.kg; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.platform.domain.kg.KgEntityRelation; +import com.ruoyi.platform.domain.kg.dto.KgEntityRelationDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -23,5 +24,5 @@ public interface KgEntityRelationsMapper extends BaseMapper { List selectList(KgEntityRelation record); - List selectListByEntityIds(@Param("list") List ids); + List selectListByEntityIds(@Param("list") List ids); } \ No newline at end of file diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/KgEntityRelationsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/KgEntityRelationsService.java index 5624e82c..f046f2c1 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/KgEntityRelationsService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/KgEntityRelationsService.java @@ -1,6 +1,7 @@ package com.ruoyi.platform.service; import com.ruoyi.platform.domain.kg.KgEntityRelation; +import com.ruoyi.platform.domain.kg.dto.KgEntityRelationDTO; import java.util.List; @@ -19,7 +20,7 @@ public interface KgEntityRelationsService { List getEntityRelations(KgEntityRelation entityRelations); - List getEntityRelationsByEntityIds(List ids); + List getEntityRelationsByEntityIds(List ids); KgEntityRelation getEntityRelations(Long id); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/KgEntityRepository.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/KgEntityRepository.java new file mode 100644 index 00000000..55725c31 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/KgEntityRepository.java @@ -0,0 +1,7 @@ +package com.ruoyi.platform.service; + +import com.ruoyi.platform.domain.kg.dto.KgEntityInfoDTO; +import org.springframework.data.neo4j.repository.Neo4jRepository; + +public interface KgEntityRepository extends Neo4jRepository { +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/KgOntologyInfoService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/KgOntologyInfoService.java index 17edefa4..31791673 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/KgOntologyInfoService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/KgOntologyInfoService.java @@ -2,6 +2,7 @@ package com.ruoyi.platform.service; import com.ruoyi.platform.domain.kg.KgOntologyInfo; +import com.ruoyi.platform.domain.kg.dto.GraphData; import com.ruoyi.platform.domain.kg.dto.KgOntologyInfoPageDTO; import com.ruoyi.platform.domain.kg.dto.KgOntologyNameAndIdDTO; import com.ruoyi.platform.domain.kg.dto.KgOntologyUpdateDTO; @@ -27,9 +28,9 @@ public interface KgOntologyInfoService { void batchDelete(List ids); - String importOntology(List ontologyList, boolean updateSupport, String operName); + void saveGraph(GraphData graphData); - void updateDetail(KgOntologyUpdateDTO ontology); + String importOntology(List ontologyList, boolean updateSupport, String operName); List getNameAndIds(); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/KgEntityInfoServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/KgEntityInfoServiceImpl.java index 8bd9e0ce..eff17d76 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/KgEntityInfoServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/KgEntityInfoServiceImpl.java @@ -4,6 +4,7 @@ import com.ruoyi.platform.domain.kg.KgEntityInfo; import com.ruoyi.platform.domain.kg.KgEntityProperty; import com.ruoyi.platform.domain.kg.KgEntityRelation; import com.ruoyi.platform.domain.kg.dto.KgEntityInfoDTO; +import com.ruoyi.platform.domain.kg.dto.KgEntityRelationDTO; import com.ruoyi.platform.mapper.kg.KgEntityInfoMapper; import com.ruoyi.platform.service.KgEntityInfoService; import com.ruoyi.platform.service.KgEntityPropertiesService; @@ -58,14 +59,14 @@ public class KgEntityInfoServiceImpl implements KgEntityInfoService{ .map(KgEntityInfoDTO::getId) .collect(Collectors.toList()); List entityPropertyList = kgEntityPropertiesService.getEntityPropertiesByEntityIds(entityIds); - List entityRelationList = kgEntityRelationsService.getEntityRelationsByEntityIds(entityIds); + List entityRelationList = kgEntityRelationsService.getEntityRelationsByEntityIds(entityIds); // 按实体ID分组 Map> propertiesMap = entityPropertyList.stream() .collect(Collectors.groupingBy(KgEntityProperty::getEntityId)); // 按实体ID分组 - Map> relationsMap = entityRelationList.stream() - .collect(Collectors.groupingBy(KgEntityRelation::getEntityId)); + Map> relationsMap = entityRelationList.stream() + .collect(Collectors.groupingBy(KgEntityRelationDTO::getEntityId)); kgEntityInfos.forEach(item -> { item.setProperties(propertiesMap.getOrDefault(item.getId(), Collections.emptyList())); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/KgEntityRelationsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/KgEntityRelationsServiceImpl.java index e5b74e99..07366024 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/KgEntityRelationsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/KgEntityRelationsServiceImpl.java @@ -3,6 +3,7 @@ package com.ruoyi.platform.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import com.ruoyi.platform.domain.kg.KgEntityRelation; +import com.ruoyi.platform.domain.kg.dto.KgEntityRelationDTO; import com.ruoyi.platform.mapper.kg.KgEntityRelationsMapper; import com.ruoyi.platform.service.KgEntityRelationsService; import org.springframework.beans.factory.annotation.Autowired; @@ -51,7 +52,7 @@ public class KgEntityRelationsServiceImpl implements KgEntityRelationsService{ } @Override - public List getEntityRelationsByEntityIds(List ids) { + public List getEntityRelationsByEntityIds(List ids) { if (CollectionUtil.isEmpty(ids)){ return Collections.emptyList(); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/KgOntologyInfoServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/KgOntologyInfoServiceImpl.java index f4940fa4..61987b2f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/KgOntologyInfoServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/KgOntologyInfoServiceImpl.java @@ -1,22 +1,25 @@ package com.ruoyi.platform.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.json.JSON; +import cn.hutool.json.JSONUtil; +import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.platform.domain.kg.KgEntityProperty; import com.ruoyi.platform.domain.kg.KgEntityRelation; import com.ruoyi.platform.domain.kg.KgOntologyInfo; -import com.ruoyi.platform.domain.kg.dto.KgEntityInfoDTO; -import com.ruoyi.platform.domain.kg.dto.KgOntologyInfoPageDTO; -import com.ruoyi.platform.domain.kg.dto.KgOntologyNameAndIdDTO; -import com.ruoyi.platform.domain.kg.dto.KgOntologyUpdateDTO; +import com.ruoyi.platform.domain.kg.dto.*; import com.ruoyi.platform.mapper.kg.KgOntologyInfoMapper; -import com.ruoyi.platform.service.KgEntityInfoService; -import com.ruoyi.platform.service.KgEntityPropertiesService; -import com.ruoyi.platform.service.KgEntityRelationsService; -import com.ruoyi.platform.service.KgOntologyInfoService; +import com.ruoyi.platform.service.*; +import com.ruoyi.platform.utils.JsonUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.io.IOException; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -38,6 +41,9 @@ public class KgOntologyInfoServiceImpl implements KgOntologyInfoService { @Autowired private KgEntityRelationsService kgEntityRelationsService; + @Autowired + private KgEntityRepository graphNodeRepository; + @Override public void insertOntology(KgOntologyInfo ontology) { kgOntologyInfoMapper.insertSelective(ontology); @@ -45,31 +51,23 @@ public class KgOntologyInfoServiceImpl implements KgOntologyInfoService { @Override public void updateOntology(KgOntologyUpdateDTO ontology) { - kgOntologyInfoMapper.updateById(ontology); + String dag = ontology.getDag(); + if (StringUtils.isNotEmpty(dag)) { + GraphData graphData = jsonToBean(dag); + ontology.setConceptsCount(CollectionUtil.isEmpty(graphData.getNodes())?0:graphData.getNodes().size()); + ontology.setRelationsCount(CollectionUtil.isEmpty(graphData.getEdges())?0:graphData.getNodes().size()); + } + kgOntologyInfoMapper.updateByPrimaryKeySelective(ontology); } @Override public List getOntologies(KgOntologyInfoPageDTO ontology) { - List kgOntologyInfos = kgOntologyInfoMapper.selectList(ontology); - kgOntologyInfos.forEach(item -> { - List kgEntityInfos = kgEntityInfoService.getEntitiesByOntologyId(item.getId()); - List entityIds = kgEntityInfos.stream() - .map(KgEntityInfoDTO::getId) - .collect(Collectors.toList()); - List entityPropertyList = kgEntityPropertiesService.getEntityPropertiesByEntityIds(entityIds); - List entityRelationList = kgEntityRelationsService.getEntityRelationsByEntityIds(entityIds); - item.setConceptsCount(entityPropertyList.size()); - item.setRelationsCount(entityRelationList.size()); - }); - return kgOntologyInfos; + return kgOntologyInfoMapper.selectList(ontology); } @Override public KgOntologyUpdateDTO getOntology(Long id) { - KgOntologyUpdateDTO kgOntologyUpdateDTO = kgOntologyInfoMapper.selectByPrimaryKey(id); - List kgEntityInfoDTOS = kgEntityInfoService.getEntitiesByOntologyId(id); - kgOntologyUpdateDTO.setConcepts(kgEntityInfoDTOS); - return kgOntologyUpdateDTO; + return kgOntologyInfoMapper.selectByPrimaryKey(id); } @Override @@ -88,23 +86,41 @@ public class KgOntologyInfoServiceImpl implements KgOntologyInfoService { return null; } + @Override - @Transactional - public void updateDetail(KgOntologyUpdateDTO ontology) { - List concepts = ontology.getConcepts(); - concepts.forEach(item->{ - Long entityId = item.getId(); - List properties = item.getProperties(); - List relations = item.getRelations(); - kgEntityPropertiesService.batchUpdateByEntityId(entityId, properties); - kgEntityRelationsService.batchUpdateByEntityId(entityId,relations); - }); + public void saveGraph(GraphData graphData) { + // 存储节点 + Map nodeMap = new HashMap<>(); + for (KgEntityInfoDTO kgEntityInfoDTO : graphData.getNodes()) { + nodeMap.put(kgEntityInfoDTO.getId(), kgEntityInfoDTO); + graphNodeRepository.save(kgEntityInfoDTO); + } + + // 存储关系 + for (KgEntityRelationDTO kgEntityRelationDTO : graphData.getEdges()) { + KgEntityInfoDTO sourceNode = nodeMap.get(kgEntityRelationDTO.getSource()); + KgEntityInfoDTO targetNode = nodeMap.get(kgEntityRelationDTO.getTarget()); + + if (sourceNode != null && targetNode != null) { + kgEntityRelationDTO.setTargetEntity(targetNode); + sourceNode.getRelations().add(kgEntityRelationDTO); + graphNodeRepository.save(sourceNode); + } + } } @Override public List getNameAndIds() { return kgOntologyInfoMapper.getNameAndIds(); } + + private GraphData jsonToBean(String dag) { + try { + return JSONUtil.toBean(dag, GraphData.class); + } catch (Exception e) { + return new GraphData(); + } + } } diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/KgEntityRelationsMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/KgEntityRelationsMapper.xml index dd8a25bf..e8213b8d 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/KgEntityRelationsMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/KgEntityRelationsMapper.xml @@ -170,7 +170,7 @@ order by update_time desc - select from kg_entity_relations diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/KgOntologyInfoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/KgOntologyInfoMapper.xml index 43a87dc2..b273620f 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/KgOntologyInfoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/KgOntologyInfoMapper.xml @@ -7,6 +7,7 @@ + @@ -14,10 +15,10 @@ - id, `name`, description, concepts_count, relations_count, create_time, update_time, + id, `name`, description, concepts_count, relations_count,dag, create_time, update_time, create_by, update_by, del_flag - select from kg_ontology_info @@ -33,11 +34,11 @@ insert into kg_ontology_info (`name`, description, concepts_count, - relations_count, create_time, update_time, + relations_count,dag, create_time, update_time, create_by, update_by, del_flag ) values (#{name,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, #{conceptsCount,jdbcType=INTEGER}, - #{relationsCount,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, + #{relationsCount,jdbcType=INTEGER},#{dag,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{createBy,jdbcType=VARCHAR}, #{updateBy,jdbcType=VARCHAR}, #{delFlag,jdbcType=BOOLEAN} ) @@ -56,6 +57,9 @@ relations_count, + + dag, + create_time, @@ -85,6 +89,9 @@ #{relationsCount,jdbcType=INTEGER}, + + #{dag,jdbcType=VARCHAR}, + #{createTime,jdbcType=TIMESTAMP}, @@ -117,6 +124,9 @@ relations_count = #{relationsCount,jdbcType=INTEGER}, + + dag = #{dag,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, @@ -141,6 +151,7 @@ description = #{description,jdbcType=VARCHAR}, concepts_count = #{conceptsCount,jdbcType=INTEGER}, relations_count = #{relationsCount,jdbcType=INTEGER}, + dag = #{dag,jdbcType=VARCHAR}, create_time = #{createTime,jdbcType=TIMESTAMP}, update_time = #{updateTime,jdbcType=TIMESTAMP}, create_by = #{createBy,jdbcType=VARCHAR},