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();
}
}