Commit 149f4920 authored by tianyiming's avatar tianyiming

一码通行政区划查询重构

parent ad673887
......@@ -131,10 +131,18 @@ public class EquipmentCategoryServiceImpl extends BaseService<EquipmentCategoryD
private static final String PROVINCE = "PROVINCE";
private static final String CITY = "CITY";
private static final String REGION = "REGION";
private static final String STREET = "STREET";
//行政区划level
private static final String PROVINCE_LEVEL = "1";
private static final String CITY_LEVEL = "2";
private static final String REGION_LEVEL = "3";
private static final String STREET_LEVEL = "4";
//西安行政区划code
private static final String XIAN = "610100";
//判断行政区划查询市还是区
private static final String END_CODE = "0000";
//判断行政区划查询街道
private static final String STREET_END_CODE = "00";
//一码通监督管理表单id
private static final String SUPERVISION_FROM_ID = "1627903532906602497";
......@@ -364,57 +372,49 @@ public class EquipmentCategoryServiceImpl extends BaseService<EquipmentCategoryD
@Override
public List<LinkedHashMap> getRegion(String level, String parentId) {
List<LinkedHashMap> list;
List<LinkedHashMap> list = new ArrayList<>();
if (!ObjectUtils.isEmpty(level)) {
list = (List<LinkedHashMap>) redisUtils.get(PROVINCE);
return ObjectUtils.isEmpty(list) ? getProvinceList(level) : list;
} else if (!ObjectUtils.isEmpty(parentId)) {
String regionCode = parentId.split("_")[0];
//regionCode以0000结果查询市、否则查询区
Map<String, Object> map = regionCode.endsWith(END_CODE) ? (Map<String, Object>) redisUtils.get(CITY) : (Map<String, Object>) redisUtils.get(REGION);
if (ObjectUtils.isEmpty(map)) {
map = getRegionList();
//regionCode不是以00结尾查询街道,以0000结果查询市、否则查询区
if (!regionCode.endsWith(STREET_END_CODE)) {
list = ObjectUtils.isEmpty(redisUtils.get(STREET)) ? getProvinceList(STREET_LEVEL) : (List<LinkedHashMap>) redisUtils.get(STREET);
} else if (regionCode.endsWith(END_CODE)) {
list = ObjectUtils.isEmpty(redisUtils.get(CITY)) ? getProvinceList(CITY_LEVEL) : (List<LinkedHashMap>) redisUtils.get(CITY);
} else {
list = ObjectUtils.isEmpty(redisUtils.get(REGION)) ? getProvinceList(REGION_LEVEL) : (List<LinkedHashMap>) redisUtils.get(REGION);
}
list = (List<LinkedHashMap>) map.get(regionCode);
return list;
return list.stream().filter(r -> regionCode.equals(r.get("parentRegionCode").toString())).collect(Collectors.toList());
} else {
return new ArrayList<>();
}
}
public Map<String, Object> getRegionList() {
//查询省下所有的行政区划市,封装并存入redis
Map<String, Object> map1 = new HashMap<>();
List<LinkedHashMap> cityList;
FeignClientResult tree = privilegeFeginService.getTree();
List<LinkedHashMap> result = (List<LinkedHashMap>) tree.getResult();
//获取陕西省regionCode
String regionCode = ((List<LinkedHashMap>) privilegeFeginService.getProvince("1").getResult()).get(0).get("regionCode").toString();
cityList = deleteTreeData(result, regionCode);
Map<String, Object> cityMap = new HashMap<>();
cityMap.put(regionCode, cityList);
map1.put(regionCode, cityList);
redisUtils.set(CITY, cityMap);
//查询市下所有的行政区划区,封装并存入redis
if (!ObjectUtils.isEmpty(cityList)) {
List<LinkedHashMap> region = (List<LinkedHashMap>) privilegeFeginService.getTree().getResult();
Map<String, Object> map = new HashMap<>();
for (LinkedHashMap linkedHashMap : cityList) {
List<LinkedHashMap> regionList = deleteTreeData(region, linkedHashMap.get("regionCode").toString());
map.put(linkedHashMap.get("regionCode").toString(), regionList);
map1.put(linkedHashMap.get("regionCode").toString(), regionList);
}
redisUtils.set(REGION, map);
}
return map1;
}
public List<LinkedHashMap> getProvinceList(String level) {
List<LinkedHashMap> list;
FeignClientResult result = privilegeFeginService.getProvince(level);
list = (List<LinkedHashMap>) result.getResult();
list.get(0).put("sequenceNbr", list.get(0).get("regionCode"));
redisUtils.set(PROVINCE, list);
List<LinkedHashMap> list = (List<LinkedHashMap>) result.getResult();
for (LinkedHashMap linkedHashMap : list) {
linkedHashMap.put("sequenceNbr", linkedHashMap.get("regionCode"));
}
switch (level) {
case PROVINCE_LEVEL:
redisUtils.set(PROVINCE, list);
break;
case CITY_LEVEL:
redisUtils.set(CITY, list);
break;
case REGION_LEVEL:
redisUtils.set(REGION, list);
break;
case STREET_LEVEL:
redisUtils.set(STREET, list);
break;
default:
log.error("不支持的行政区划:{}", level);
break;
}
return list;
}
......@@ -453,32 +453,6 @@ public class EquipmentCategoryServiceImpl extends BaseService<EquipmentCategoryD
}
/**
* 获取行政区划以市或区的list集合
*
* @param result 需要删除的源数据
* @param type 匹配行政区划的regionCode,获取市则需要传省的regionCode,获取区则需要传市的regionCode
* @return 对应市或区的list集合
*/
private List<LinkedHashMap> deleteTreeData(List<LinkedHashMap> result, String type) {
Iterator it = result.iterator();
List<LinkedHashMap> list = new ArrayList<>();
while (it.hasNext()) {
LinkedHashMap e = (LinkedHashMap) it.next();
//修改数据
if (type.equals(e.get("parentRegionCode").toString())) {
e.put("children", null);
e.put("sequenceNbr", e.get("regionCode"));
list.add(e);
}
if (!ObjectUtils.isEmpty(e.get("children"))) {
List<LinkedHashMap> children = deleteTreeData((List<LinkedHashMap>) e.get("children"), type);
list.addAll(children);
}
}
return list;
}
/**
* 具体生成监管码和电梯96333识别码逻辑
*/
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment