From 24e0bdd24a10449c98013cdb5bcc5e37735f5a91 Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期一, 16 六月 2025 09:04:01 +0800 Subject: [PATCH] 对接刀具系统,涉密网封装结构树与文件 --- lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductMixServiceImpl.java | 63 +++++++++++++++++++++++++++++++ 1 files changed, 63 insertions(+), 0 deletions(-) diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductMixServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductMixServiceImpl.java index 2d4824d..699b3a6 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductMixServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductMixServiceImpl.java @@ -48,4 +48,67 @@ result.sort(Comparator.comparing(ProductMix::getCreateTime, Comparator.nullsLast(Date::compareTo))); return result; } + + @Override + public List<ProductMix> getParentList(String id) { + List<ProductMix> parentList = new ArrayList<>(); + // 1. 鏍规嵁ID鏌ヨ褰撳墠鑺傜偣 + ProductMix current = this.getById(id); + if (current == null) { + return parentList; // 鑺傜偣涓嶅瓨鍦ㄦ椂杩斿洖绌哄垪琛� + } + // 2. 浠庡綋鍓嶈妭鐐瑰紑濮嬪悜涓婃煡鎵剧埗鑺傜偣 + Long parentId = current.getParentId(); + while ( parentId != 0L) { + ProductMix parent = this.getById(parentId.toString()); + if (parent == null) { + break; + } + parentList.add(parent); + parentId = parent.getParentId(); + } + + return parentList; + } + + @Override + public List<ProductMix> getChildrenList(String id) { + List<ProductMix> childrenList = new ArrayList<>(); + ProductMix current = this.getById(id); + if (current == null) { + return childrenList; + } + + // 浣跨敤闃熷垪杩涜BFS + Queue<ProductMix> queue = new LinkedList<>(); + queue.add(current); // 鍔犲叆褰撳墠鑺傜偣浣滀负璧风偣 + + // 璁板綍宸茶闂妭鐐圭殑ID锛岄伩鍏嶅惊鐜紩鐢� + Set<String> visited = new HashSet<>(); + visited.add(id); // 璧峰鑺傜偣宸茶闂� + + while (!queue.isEmpty()) { + ProductMix node = queue.poll(); + // 璺宠繃璧峰鑺傜偣锛堝嵆浼犲叆鐨勮妭鐐癸級锛屼笉鍔犲叆缁撴灉鍒楄〃 + if (!node.getId().toString().equals(id)) { + childrenList.add(node); + } + + // 鏌ヨ褰撳墠鑺傜偣鐨勭洿鎺ュ瓙鑺傜偣 + List<ProductMix> directChildren = this.lambdaQuery().eq(ProductMix::getParentId, node.getId()).list(); + if (directChildren != null && !directChildren.isEmpty()) { + for (ProductMix child : directChildren) { + String childId = child.getId().toString(); + // 濡傛灉璇ュ瓙鑺傜偣杩樻湭璁块棶杩� + if (!visited.contains(childId)) { + visited.add(childId); + queue.add(child); + } + // 鍚﹀垯蹇界暐锛岄伩鍏嶅惊鐜紩鐢ㄥ鑷寸殑姝诲惊鐜� + } + } + } + return childrenList; + } + } -- Gitblit v1.9.3