feat: 地区工具类方法补充

This commit is contained in:
caiyuchao
2025-05-24 16:14:56 +08:00
parent 047490c0b9
commit 2483bdc74a

View File

@@ -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<Integer> formatToIdList(Integer id) {
// 获得区域
Area area = areas.get(id);
if (area == null) {
return null;
}
// 格式化
List<Integer> 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;
}
/**
* 获取指定类型的区域列表
*