查询站点和组树状列表接口按行政区过滤逻辑,行政区接口逻辑完善等

This commit is contained in:
mi9688
2024-10-28 18:01:46 +08:00
parent 3b51726b58
commit 5b2ea1f01b
14 changed files with 152 additions and 43 deletions

View File

@ -59,5 +59,11 @@ public interface ISysDistrictService
*/
public int deleteSysDistrictById(Long id);
List<SysDistrict> selectSysDistrictTree();
List<SysDistrict> selectSysDistrictTree(Integer level);
/**
* 查询指定地区行政区划树状列表
*/
List<SysDistrict> selectSysDistrictTreeByCode(Long areaCode);
}

View File

@ -9,6 +9,7 @@ import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONException;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.fastbee.common.exception.ServiceException;
import org.apache.commons.lang3.StringUtils;
@ -69,9 +70,6 @@ public class SysDistrictServiceImpl implements ISysDistrictService
/**
* 修改行政区划
*
* @param sysDistrict 行政区划
* @return 结果
*/
@Override
public int updateSysDistrict(SysDistrict sysDistrict)
@ -118,9 +116,6 @@ public class SysDistrictServiceImpl implements ISysDistrictService
/**
* 批量删除行政区划
*
* @param ids 需要删除的行政区划主键
* @return 结果
*/
@Override
public int deleteSysDistrictByIds(Long[] ids)
@ -130,9 +125,6 @@ public class SysDistrictServiceImpl implements ISysDistrictService
/**
* 删除行政区划信息
*
* @param id 行政区划主键
* @return 结果
*/
@Override
public int deleteSysDistrictById(Long id)
@ -142,19 +134,52 @@ public class SysDistrictServiceImpl implements ISysDistrictService
/**
* 查询行政区划树状列表
* @return 树状列表
*/
@Override
public List<SysDistrict> selectSysDistrictTree() {
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);
}
/**
* 查询指定地区行政区划树状列表
*/
@Override
public List<SysDistrict> selectSysDistrictTreeByCode(Long areaCode) {
LambdaQueryChainWrapper<SysDistrict> sysDistrictLambdaQueryChainWrapper = new LambdaQueryChainWrapper<>(sysDistrictMapper)
.select(SysDistrict::getId, SysDistrict::getParentId, SysDistrict::getName, SysDistrict::getAdcode,
SysDistrict::getLevel, SysDistrict::getFullName, SysDistrict::getName
, SysDistrict::getLng, SysDistrict::getLat);
//获取子级别
List<SysDistrict> sysDistrictList = sysDistrictLambdaQueryChainWrapper.eq(SysDistrict::getAdcode, areaCode)
.list();
if (Objects.isNull(sysDistrictList) || sysDistrictList.isEmpty()) {
throw new ServiceException("未查询到指定地区行政区划树状列表!");
}
//查询全部
List<SysDistrict> sysDistrictListAll = new LambdaQueryChainWrapper<>(sysDistrictMapper)
.select(SysDistrict::getId, SysDistrict::getParentId, SysDistrict::getName, SysDistrict::getAdcode,
SysDistrict::getLevel, SysDistrict::getFullName, SysDistrict::getName
, SysDistrict::getLng, SysDistrict::getLat)
.ge(SysDistrict::getAdcode, areaCode)
.lt(SysDistrict::getAdcode, (Long.parseLong(areaCode.toString().substring(0,2))+1)*10000000000L)
.list();
return buildTree(sysDistrictList);
System.err.println("查询到全部列表上限条件");
System.err.println(((Long.parseLong(areaCode.toString().substring(0,2))+1)*10000000000L));
List<SysDistrict> sysDistricts = buildTree(sysDistrictListAll);
return Collections.singletonList(sysDistricts.get(0));
}
private List<SysDistrict> buildTree(List<SysDistrict> SysDistricts) {
Map<Long, SysDistrict> map = new HashMap<>();
List<SysDistrict> roots = new ArrayList<>();