添加新增行政区域接口参数校验,,优化获取行政区域树状列表逻辑。完善添加站点行区域信息校验逻辑等
This commit is contained in:
parent
5b2ea1f01b
commit
476e766342
@ -87,10 +87,11 @@ public class GSitesServiceImpl extends ServiceImpl<GSiteGroupsMapper,GSiteGroups
|
||||
if (StringUtils.isBlank(gGroupSiteDto.getAreaCode())) {
|
||||
throw new ServiceException("请选择行政区域!");
|
||||
}
|
||||
//行政区完整编码校验
|
||||
if(StringUtils.isBlank(gGroupSiteDto.getFullAreaCode())){
|
||||
throw new ServiceException("请提交行政区域完整编码!");
|
||||
}
|
||||
//未上传站点地图json数据
|
||||
//站点图标校验
|
||||
if(StringUtils.isBlank(gGroupSiteDto.getIcon())){
|
||||
throw new ServiceException("请选择站点图标!");
|
||||
}
|
||||
|
@ -58,16 +58,72 @@ public class SysDistrictServiceImpl implements ISysDistrictService
|
||||
|
||||
/**
|
||||
* 新增行政区划
|
||||
*
|
||||
*
|
||||
* @param sysDistrict 行政区划
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertSysDistrict(SysDistrict sysDistrict)
|
||||
{
|
||||
//校验必填项adCode
|
||||
if(Objects.isNull(sysDistrict.getAdcode())){
|
||||
throw new ServiceException("行政区划编码不能为空!");
|
||||
}
|
||||
//检验adCode不能重复
|
||||
List<SysDistrict> sysDistrictList = new LambdaQueryChainWrapper<>(sysDistrictMapper).select(SysDistrict::getId)
|
||||
.eq(SysDistrict::getAdcode, sysDistrict.getAdcode()).list();
|
||||
if(!sysDistrictList.isEmpty()){
|
||||
throw new ServiceException("行政区划编码重复!");
|
||||
}
|
||||
//校验adCode长度、
|
||||
if(sysDistrict.getAdcode().toString().trim().length() != 12){
|
||||
throw new ServiceException("行政区划编码长度必须为12位数字!");
|
||||
}
|
||||
//校验必填项name
|
||||
if(StringUtils.isBlank(sysDistrict.getName())){
|
||||
throw new ServiceException("行政区划名称不能为空!");
|
||||
}
|
||||
//校验必填项level
|
||||
if(Objects.isNull(sysDistrict.getLevel())){
|
||||
throw new ServiceException("行政区划级别不能为空!");
|
||||
}
|
||||
//是否上传行政区划
|
||||
String mapOutlineUrl = sysDistrict.getMapOutlineUrl();
|
||||
//未上传行政区划轮廓不做处理
|
||||
if(StringUtils.isBlank(mapOutlineUrl)){
|
||||
return sysDistrictMapper.insertSysDistrict(sysDistrict);
|
||||
}
|
||||
verifySaveJsonData(sysDistrict, mapOutlineUrl);
|
||||
return sysDistrictMapper.insertSysDistrict(sysDistrict);
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证并保存轮廓json数据
|
||||
* @param mapOutlineUrl 地图轮廓json文件访问uel
|
||||
*/
|
||||
private void verifySaveJsonData(SysDistrict sysDistrict, String mapOutlineUrl) {
|
||||
//行政区划轮廓json文件url必须是绝对完整
|
||||
if(!(mapOutlineUrl.contains("http://") || mapOutlineUrl.contains("https://"))){
|
||||
throw new ServiceException("行政区划轮廓json文件url不正确!");
|
||||
}
|
||||
//上传行政区划轮廓进行数据处理
|
||||
String jsonData = HttpUtil.get(mapOutlineUrl);
|
||||
System.err.println("获取到行政区划轮廓json:"+jsonData);
|
||||
//读取文件内容
|
||||
if (Objects.isNull(jsonData)) {
|
||||
throw new ServiceException("上传行政区划地图轮廓json数据为空!");
|
||||
}
|
||||
//校验文件内容是否是json格式
|
||||
if (!isValidJson(jsonData)) {
|
||||
throw new ServiceException("json格式不正确!");
|
||||
}
|
||||
//保存相对路径
|
||||
int startIndex = mapOutlineUrl.indexOf("/profile/upload/");
|
||||
String relativeUrl = mapOutlineUrl.substring(startIndex);
|
||||
sysDistrict.setMapOutlineUrl(relativeUrl);
|
||||
sysDistrict.setMapOutline(jsonData);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改行政区划
|
||||
*/
|
||||
@ -79,25 +135,8 @@ public class SysDistrictServiceImpl implements ISysDistrictService
|
||||
if(StringUtils.isBlank(mapOutlineUrl)){
|
||||
return sysDistrictMapper.updateSysDistrict(sysDistrict);
|
||||
}
|
||||
|
||||
//判断行政区划轮廓json文件路url是否是完整url还是相对url
|
||||
if((mapOutlineUrl.contains("http://") || mapOutlineUrl.contains("https://"))){
|
||||
//如果不是是相对url则代表修改过行政区划轮廓数据
|
||||
String jsonData = HttpUtil.get(mapOutlineUrl);
|
||||
System.err.println("获取到行政区划轮廓json:"+jsonData);
|
||||
//读取文件内容
|
||||
if (Objects.isNull(jsonData)) {
|
||||
throw new ServiceException("上传行政区划地图轮廓json数据为空!");
|
||||
}
|
||||
//校验文件内容是否是json格式
|
||||
if (!isValidJson(jsonData)) {
|
||||
throw new ServiceException("json格式不正确!");
|
||||
}
|
||||
int startIndex = mapOutlineUrl.indexOf("/profile/upload/");
|
||||
String relativeUrl = mapOutlineUrl.substring(startIndex);
|
||||
sysDistrict.setMapOutlineUrl(relativeUrl);
|
||||
sysDistrict.setMapOutline(jsonData);
|
||||
}
|
||||
verifySaveJsonData(sysDistrict, mapOutlineUrl);
|
||||
|
||||
return sysDistrictMapper.updateSysDistrict(sysDistrict);
|
||||
}
|
||||
@ -132,22 +171,7 @@ public class SysDistrictServiceImpl implements ISysDistrictService
|
||||
return sysDistrictMapper.deleteSysDistrictById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询行政区划树状列表
|
||||
*/
|
||||
@Override
|
||||
public List<SysDistrict> selectSysDistrictTree(Integer level) {
|
||||
System.err.println("等级:level:"+level);
|
||||
//计算查询用时
|
||||
long startTime = System.currentTimeMillis();
|
||||
List<SysDistrict> sysDistrictList = new LambdaQueryChainWrapper<>(sysDistrictMapper)
|
||||
.select(SysDistrict::getId,SysDistrict::getAdcode, SysDistrict::getParentId, SysDistrict::getName,
|
||||
SysDistrict::getFullName )
|
||||
.ge(Objects.nonNull(level),SysDistrict::getLevel, level)
|
||||
.list();
|
||||
System.err.println("查询用时:"+(System.currentTimeMillis()-startTime));
|
||||
return buildTree(sysDistrictList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询指定地区行政区划树状列表
|
||||
*/
|
||||
@ -178,23 +202,62 @@ public class SysDistrictServiceImpl implements ISysDistrictService
|
||||
return Collections.singletonList(sysDistricts.get(0));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询行政区划树状列表
|
||||
*/
|
||||
@Override
|
||||
public List<SysDistrict> selectSysDistrictTree(Integer level) {
|
||||
System.err.println("等级:level:"+level);
|
||||
//计算查询用时
|
||||
long startTime = System.currentTimeMillis();
|
||||
List<SysDistrict> sysDistrictList = new LambdaQueryChainWrapper<>(sysDistrictMapper)
|
||||
.select(SysDistrict::getId,SysDistrict::getAdcode, SysDistrict::getParentId,SysDistrict::getLevel,
|
||||
SysDistrict::getName, SysDistrict::getFullName )
|
||||
.ge(Objects.nonNull(level),SysDistrict::getLevel, level)
|
||||
.list();
|
||||
System.err.println("查询用时:"+(System.currentTimeMillis()-startTime));
|
||||
return buildTree(sysDistrictList);
|
||||
}
|
||||
|
||||
private List<SysDistrict> buildTree(List<SysDistrict> SysDistricts) {
|
||||
Map<Long, SysDistrict> map = new HashMap<>();
|
||||
List<SysDistrict> roots = new ArrayList<>();
|
||||
for (SysDistrict sysDistrict : SysDistricts) {
|
||||
map.put(sysDistrict.getAdcode(), sysDistrict);
|
||||
//处理直辖市情况
|
||||
if (!map.containsKey(sysDistrict.getAdcode())) {
|
||||
map.put(sysDistrict.getAdcode(), sysDistrict);
|
||||
}
|
||||
}
|
||||
return getDistricts(SysDistricts, map, roots);
|
||||
List<SysDistrict> sysDistrictList = getDistricts(SysDistricts, map, roots);
|
||||
//处理直辖市情况
|
||||
for (SysDistrict sysDistrict : sysDistrictList) {
|
||||
if(isMunicipality(sysDistrict.getName())&&sysDistrict.getLevel()==1){
|
||||
List<SysDistrict> children = sysDistrict.getChildren();
|
||||
SysDistrict district = children.get(0);
|
||||
children.remove(0);
|
||||
sysDistrict.setChildren(Collections.singletonList(district));
|
||||
sysDistrict.getChildren().get(0).setChildren(children);
|
||||
}
|
||||
}
|
||||
return sysDistrictList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否是直辖市
|
||||
* @param name 行政区域名称
|
||||
* @return true:是 false:不是
|
||||
*/
|
||||
private Boolean isMunicipality(String name) {
|
||||
return name.equals("北京")||name.equals("天津") ||name.equals("上海")||name.equals("重庆");
|
||||
}
|
||||
private List<SysDistrict> getDistricts(List<SysDistrict> SysDistricts, Map<Long, SysDistrict> map, List<SysDistrict> roots) {
|
||||
for (SysDistrict sysDistrict : SysDistricts) {
|
||||
Long parentId = sysDistrict.getParentId();
|
||||
//如果父节点为空或者父节点不在map中,则该节点为根节点
|
||||
if (parentId == null || !map.containsKey(parentId)) {
|
||||
roots.add(sysDistrict);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
SysDistrict parent = map.get(parentId);
|
||||
if (parent.getChildren() == null) {
|
||||
parent.setChildren(new ArrayList<>());
|
||||
|
Loading…
x
Reference in New Issue
Block a user