package com.jiuqi.njt.util; import java.util.HashMap; import java.util.Map; import com.jiuqi.mobile.nigo.comeclose.bean.base.AdminAreaBean; import com.jiuqi.mobile.nigo.comeclose.manager.base.IAdminAreaManager; import com.jiuqi.mobile.nigo.comeclose.ws.client.ClientContext; public class XzqhUtil { private ClientContext context; public XzqhUtil(ClientContext context) { super(); this.context = context; } private final static Map<String, Long> map = new HashMap<String, Long>(); private String rightKey(String key,int flag){ Map<String, String> cityErrorMap = new HashMap<String, String>(); Map<String, String> countryErrorMap = new HashMap<String, String>(); cityErrorMap.put("海南省", "省属虚拟市"); cityErrorMap.put("新疆维吾尔自治区", "省直辖行政单位"); cityErrorMap.put("湖北省", "省直辖行政单位"); cityErrorMap.put("襄樊市", "襄阳市"); cityErrorMap.put("省市辖行政单位", "省直辖行政单位"); countryErrorMap.put("?桥区", "墉桥区"); countryErrorMap.put("泽州县", "晋城市"); countryErrorMap.put("?口区", "硚口区"); if(flag==2){ return (cityErrorMap.containsKey(key))?cityErrorMap.get(key):key; }else if(flag == 3){ return (countryErrorMap.containsKey(key))?countryErrorMap.get(key):key; } return key; } /** * 初始化一些特殊行政区划 */ static{ map.put("上海市,上海市,崇明县", 310230000000l); map.put("北京市,北京市,密云县", 110228000000l); map.put("北京市,北京市,延庆县", 110229000000l); map.put("天津市,天津市,宁河县", 120221000000l); map.put("天津市,天津市,蓟县", 120225000000l); map.put("天津市,天津市,静海县", 120223000000l); map.put("重庆市,重庆市,垫江县", 500231000000l); map.put("重庆市,重庆市,潼南县", 500223000000l); map.put("重庆市,重庆市,石柱土家族自治县", 500244000000l); map.put("重庆市,重庆市,忠县", 500233000000l); } /** * 无省市县返回-1 * @param en * @return */ public long searchAread(String province,String city,String country) { // en.setCity(rightKey(en.getCity(), 2)); // en.setCountry(rightKey(en.getCountry(), 3)); // String key = getKey(en); city = rightKey(city, 2); country = rightKey(country, 3); String key = getKey(province, city, country); if(null == key){ return -1; } synchronized (map) { if(map.containsKey(key)){ return map.get(key); } } // long area = -1; // IAdminAreaManager aDao = context.getManager(IAdminAreaManager.class); AdminAreaBean[] provinceArray = aDao.getClildNodes(aDao.getRootNode().getCode()); String p = province; p = subStr(p); for(AdminAreaBean a : provinceArray){ if(a.getName().contains(p)){ area = a.getCode(); break; } } // if(-1 == area){ return area; } boolean isHavCity = false; //有市 if(null != city ){ AdminAreaBean[] citys = aDao.getClildNodes(area); String c = city; c = subStr(c); for(AdminAreaBean a : citys){ if(a.getName().contains(c)){ area = a.getCode(); isHavCity = true; break; } } } //有县 if(isHavCity && null != country ){ AdminAreaBean[] countries = aDao.getClildNodes(area); String c = country; c = subStr(c); for(AdminAreaBean a : countries){ if(a.getName().contains(c)){ area = a.getCode(); break; } } } synchronized (map) { map.put(key, area); } return area; } private String subStr(String p) { // if(p.endsWith("省") || p.endsWith("市") || p.endsWith("县")){ // return p.substring(0, p.length()-1); // }else if(p.endsWith("地区")){ // return p.substring(0, p.length()-2); // } if(p.length()>2){ return p.substring(0, 2); } return p; } private String getKey(String province,String city,String country) { String str; if(null == province){ str = null; }else if(null == city){ str = province; }else if(null == country){ str = province+","+ city; }else{ str = province+","+ city +","+country; } if(null == str) return null; return str.intern(); } }