diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/Edge.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/Edge.java index bdf7c88..7af97a2 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/Edge.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/Edge.java @@ -3,38 +3,18 @@ package com.electromagnetic.industry.software.manage.pojo.models; import lombok.Data; import lombok.Getter; -import java.util.Objects; - @Data @Getter public class Edge { String source; // 起点 String target; // 终点 + String relationId; //关系id + String relationship; //关系描述 - public Edge(String source, String target) { + public Edge(String source, String target, String relationId, String relationship) { this.source = source; this.target = target; - } - - @Override - public String toString() { - return source + " -- " + target; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) return true; - if (obj == null || getClass() != obj.getClass()) return false; - Edge edge = (Edge) obj; - // 无向边,两个方向都相等即认为是同一条边 - return (Objects.equals(source, edge.source) && Objects.equals(target, edge.target)) || - (Objects.equals(source, edge.target) && Objects.equals(target, edge.source)); - } - - @Override - public int hashCode() { - // 无向边需要对 source 和 target 排序后计算哈希值 - return Objects.hash(Math.min(source.hashCode(), target.hashCode()), - Math.max(source.hashCode(), target.hashCode())); + this.relationId = relationId; + this.relationship = relationship; } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java index 3f58a72..6fd07ed 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java @@ -16,6 +16,7 @@ import com.electromagnetic.industry.software.manage.service.EdFileRelationServic import org.springframework.beans.BeanUtils; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.*; @@ -64,13 +65,15 @@ public class EdFileRelationServiceImpl extends ServiceImpl visitedEdges = new ArrayList<>(); Set visitedIds = new HashSet<>(); - Set uniqueEdges = new HashSet<>(); + Set uniqueRelationIds = new HashSet<>(); + Queue queue = new LinkedList<>(); // 初始化 BFS @@ -84,9 +87,9 @@ public class EdFileRelationServiceImpl extends ServiceImpl edges = new ArrayList<>(); for (EdFileRelation edFileRelation : list) { if (edFileRelation.getId1().equals(id)) { - edges.add(new Edge(edFileRelation.getId1(), edFileRelation.getId2())); + edges.add(new Edge(edFileRelation.getId1(), edFileRelation.getId2(),edFileRelation.getId(),edFileRelation.getRelationship())); } else { - edges.add(new Edge(edFileRelation.getId2(), edFileRelation.getId1())); + edges.add(new Edge(edFileRelation.getId2(), edFileRelation.getId1(),edFileRelation.getId(),edFileRelation.getRelationship())); } } return edges;