From 2483bdc74afa2a32771af027e4bbbfc9453f58cf Mon Sep 17 00:00:00 2001 From: caiyuchao Date: Sat, 24 May 2025 16:14:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9C=B0=E5=8C=BA=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E7=B1=BB=E6=96=B9=E6=B3=95=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/ip/core/utils/AreaUtils.java | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/agt-framework/agt-spring-boot-starter-biz-ip/src/main/java/org/agt/framework/ip/core/utils/AreaUtils.java b/agt-framework/agt-spring-boot-starter-biz-ip/src/main/java/org/agt/framework/ip/core/utils/AreaUtils.java index ed9212b..b638a30 100644 --- a/agt-framework/agt-spring-boot-starter-biz-ip/src/main/java/org/agt/framework/ip/core/utils/AreaUtils.java +++ b/agt-framework/agt-spring-boot-starter-biz-ip/src/main/java/org/agt/framework/ip/core/utils/AreaUtils.java @@ -4,13 +4,14 @@ import cn.hutool.core.io.resource.ResourceUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.text.csv.CsvRow; import cn.hutool.core.text.csv.CsvUtil; +import lombok.NonNull; +import lombok.extern.slf4j.Slf4j; import org.agt.framework.common.util.object.ObjectUtils; import org.agt.framework.ip.core.Area; import org.agt.framework.ip.core.enums.AreaTypeEnum; -import lombok.NonNull; -import lombok.extern.slf4j.Slf4j; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -172,6 +173,34 @@ public class AreaUtils { return sb.toString(); } + /** + * 根据子区域编号返回其父区域编号列表 + * + * @param id 区域编号 + * @return 格式化后的区域编号 + */ + public static List formatToIdList(Integer id) { + // 获得区域 + Area area = areas.get(id); + if (area == null) { + return null; + } + + // 格式化 + List ids = new ArrayList<>(); + for (int i = 0; i < AreaTypeEnum.values().length; i++) { // 避免死循环 + ids.add(area.getId()); + // “递归”父节点 + area = area.getParent(); + if (area == null + || ObjectUtils.equalsAny(area.getId(), Area.ID_GLOBAL, Area.ID_CHINA)) { // 跳过父节点为中国的情况 + break; + } + } + Collections.reverse(ids); + return ids; + } + /** * 获取指定类型的区域列表 *