package com.yanzuoguang.util.helper; import com.yanzuoguang.util.YzgError; import com.yanzuoguang.util.exception.CodeException; public class AreaHelper { public static final int COUNTRY_LENGTH = 3; public static final int PROVINCE_LENGTH = 5; public static final int CITY_LENGTH = 7; public static final int AREA_LENGTH = 9; /** * 获取地区Id * * @param fromAreaId * @return */ public static String getCountryId(String fromAreaId) { return getLengthId(fromAreaId, COUNTRY_LENGTH); } /** * 获取地区Id * * @param fromAreaId * @return */ public static String getProvinceId(String fromAreaId) { return getLengthId(fromAreaId, PROVINCE_LENGTH); } /** * 获取地区Id * * @param fromAreaId * @return */ public static String getCityId(String fromAreaId) { return getLengthId(fromAreaId, CITY_LENGTH); } /** * 获取地区Id * * @param fromAreaId * @return */ public static String getAreaId(String fromAreaId) { return getLengthId(fromAreaId, AREA_LENGTH); } private static String getLengthId(String fromAreaId, int length) { if (StringHelper.isEmpty(fromAreaId)) { return fromAreaId; } else if (fromAreaId.length() != AREA_LENGTH) { throw YzgError.getRuntimeException("050"); } // 获取国家 String country = fromAreaId.substring(0, 3); // 获取城市 String city = fromAreaId.substring(3); String ret = city.substring(0, length - 3); String retSimple = getSimple(ret, false); if (StringHelper.compare(ret, retSimple)) { return getFull(country + retSimple); } return StringHelper.EMPTY; } /** * 获取简写Id * * @param fromAreaId * @return */ public static String getSimple(String fromAreaId) { return getSimple(fromAreaId, true); } /** * 获取简写Id * * @param fromAreaId * @return */ public static String getSimple(String fromAreaId, boolean isFull) { if (StringHelper.isEmpty(fromAreaId) || fromAreaId.length() <= 3) { return fromAreaId; } String to = StringHelper.trimEnd(fromAreaId, "00"); if (to.length() < COUNTRY_LENGTH && isFull) { to = getFull(to).substring(0, COUNTRY_LENGTH); } return to; } /** * 获取全写Id * * @param fromAreaId * @return */ public static String getFull(String fromAreaId) { if (StringHelper.isEmpty(fromAreaId)) { return fromAreaId; } else if (fromAreaId.length() > AREA_LENGTH) { throw YzgError.getRuntimeException("051"); } else { StringBuilder sb = new StringBuilder(); sb.append(fromAreaId); for (int i = fromAreaId.length(); i < AREA_LENGTH; i++) { sb.append("0"); } return sb.toString(); } } /** * 获取上级目录Id * * @param fromAreaId * @return */ public static String getParentId(String fromAreaId) { if (StringHelper.isEmpty(fromAreaId)) { return fromAreaId; } String simpleId = getSimple(fromAreaId, true); String parentSimpleId = StringHelper.EMPTY; if (simpleId.length() > COUNTRY_LENGTH) { parentSimpleId = simpleId.substring(0, simpleId.length() - 2); } return getFull(parentSimpleId); } }