public Map<String, Object> splitAddress(Map<String, Object> params) {
LOG.info(" -> Call splitAddress... ");
String xing="王李张刘陈杨黄赵周吴徐孙马胡朱郭何罗高林郑梁谢唐许冯宋韩邓彭曹曾田于肖潘袁董叶杜丁蒋程余吕魏蔡苏任卢沈姜姚钟崔陆谭汪石付贾范金方韦夏廖侯白孟邹秦尹江熊薛邱闫段雷季史陶毛贺龙万顾关郝孔向龚邵钱武扬黎汤戴严文常牛莫洪米康温代赖施覃安";
String reg = "[\u4e00-\u9fa5]";
String src = String.valueOf(params.get("autoaddress"));
src = src.replaceAll(
"[`~!@#$^&*()=|{}':;'\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]",
"").replace(" ", "");
Map<String, Object> result = new HashMap<String, Object>();
Pattern pattern = Pattern
.compile("(?<!\\d)(?:(?:1[34578]\\d{9})|(?:861[34578]\\d{9}))(?!\\d)");
Matcher matcher = pattern.matcher(src);
StringBuffer bf = new StringBuffer(64);
if (matcher.find()) {
bf.append(matcher.group());
src = src.replace(bf.toString(), "");
}
String pro = "", city = "", county = "", xx = "",name="";
List<Map<String, Object>> list = getDivision1();
for (int i = 0; i < list.size(); i++) {// 省
String xtproname = String.valueOf(list.get(i).get("name"));// 系统省名
if (src.indexOf(xtproname) >=0
|| src.indexOf(xtproname.substring(0, xtproname.length()-1)) >= 0) {
pro = String.valueOf(list.get(i).get("code"));
int aa=src.indexOf(xtproname) >= 0?src.indexOf(xtproname):src.indexOf(xtproname.substring(0,
xtproname.length()-1));//判断地址串位置在名字之前还是之后
if(aa>0){
name=src.substring(0,aa);
}
src = src.replace(name, "");
src = src.replace(xtproname, "");
src = src.replace(xtproname.substring(0, xtproname.length()-1),
"");
List<Map<String, Object>> xtcitylist = (List<Map<String, Object>>) list
.get(i).get("childs");
for (int j = 0; j < xtcitylist.size(); j++) {// 市
String xtcityname = String.valueOf(xtcitylist.get(j).get(
"name"));// 系统市名
if (src.indexOf(xtcityname) >= 0
|| src.indexOf(xtcityname.substring(0,
xtcityname.length()-1)) >= 0||xtcitylist.size()==1) {//size=1为直辖市
city = String.valueOf(xtcitylist.get(j).get("code"));
src = src.replace(xtcityname, "");
src = src.replace(xtcityname.substring(0,xtproname.length()-1), "");
List<Map<String, Object>> xtcountylist = (List<Map<String, Object>>)((List<Map<String, Object>>) list
.get(i).get("childs")).get(j).get("childs");
for (int t = 0; t < xtcountylist.size(); t++) {// 市
String xtcountyname = String.valueOf(xtcountylist
.get(t).get("name"));// 系统区/县名
if (src.indexOf(xtcountyname) >= 0
|| src.indexOf(xtcountyname.substring(0,
xtcountyname.length()-1)) >= 0) {
county = String.valueOf(xtcountylist.get(t)
.get("code"));
src = src.replace(xtcountyname, "");
src = src.replace(xtcountyname.substring(0,
xtcountyname.length()-1), "");
break;
}
}
break;
}
}
break;
}
}
if(name.length()<1){//名字还没有获取 则取后2-3位,根据百家姓?
if(xing.indexOf(src.substring(src.length()-3,src.length()-2))>=0)
name=src.substring(src.length()-3);
else
name=src.substring(src.length()-2);
src = src.replace(name, "");
}
xx = src;
result.put("consignerProvince", pro);
result.put("consignerCity", city);
result.put("consignerCounty", county);
result.put("consignerAddress", xx);
result.put("consignerMobile", bf.toString());
result.put("consignerName", name);
result.put("status","1");
return result;
}
public List<Map<String, Object>> getDivision1() {
LOG.info(" -> Call queryYdyj... ");
Map<String, Object> params = new HashMap<String, Object>();
params.put("code", "0");
List<Map<String, Object>> list = yyfxjSubMapper.getDivision1();
List<Map<String, Object>> list1 = new ArrayList<Map<String, Object>>();
List<Map<String, Object>> list2 = new ArrayList<Map<String, Object>>();
List<Map<String, Object>> list3 = new ArrayList<Map<String, Object>>();
for (int i = 0; i < list.size(); i++) {
Map<String, Object> pro = list.get(i);
if (String.valueOf(pro.get("parentcode")).equals("0")) {
list2 = new ArrayList<Map<String, Object>>();
for (int j = i + 1; j < list.size(); j++) {
Map<String, Object> city = list.get(j);
if (String.valueOf(city.get("parentcode")).equals(
String.valueOf(pro.get("code")))) {
list3 = new ArrayList<Map<String, Object>>();
for (int t = j + 1; t < list.size(); t++) {
Map<String, Object> county = list.get(t);
if (String.valueOf(county.get("parentcode"))
.equals(String.valueOf(city.get("code")))) {
list3.add(county);
}
}
city.put("childs", list3);
list2.add(city);
}
}
pro.put("childs", list2);
list1.add(pro);
} else {
break;
}
}
return list1;
}