From a53c7cd33c489377ea19c7e1b4bda8b4f49b55ac Mon Sep 17 00:00:00 2001 From: xusd <hugeinfo123> Date: Thu, 17 Oct 2024 14:42:31 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/gzdyh_test' into gzdyh_test --- dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java | 100 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 99 insertions(+), 1 deletions(-) diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java index 9370d4d..fefe1c0 100644 --- a/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java +++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java @@ -3,10 +3,18 @@ import cn.huge.base.common.exception.ServiceException; import cn.huge.base.common.utils.DateUtils; import cn.huge.base.common.utils.IdUtils; +import cn.huge.base.common.utils.ObjectUtils; import cn.huge.module.client.api.impl.UtilsClientImpl; import cn.huge.module.kind.dao.mapper.SyRegionMapper; +import cn.huge.module.kind.domain.dto.RegionSelectJSDTO; import cn.huge.module.kind.domain.po.SyRegion; +import cn.huge.module.sys.dto.QueAddrBaseDTO; +import cn.huge.module.sys.dto.QueAreaDTO; +import cn.huge.module.utils.BaiduMapAddrDTO; +import cn.huge.module.utils.BaiduMapUtils; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; @@ -17,6 +25,8 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; +import javax.swing.plaf.synth.Region; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; @@ -26,7 +36,7 @@ * @Description 地域字典表业务逻辑处理 * @company hugeinfo * @author liyj - * @Time 2024-08-28 20:06:20 + * @Time 2024-09-09 14:31:22 * @version 1.0.0 */ @Slf4j @@ -130,4 +140,92 @@ } } + /** + * 递归保存树形结构 + * @param childrenList + * @param level + */ + public void webSaveByJSTree(List<RegionSelectJSDTO> childrenList, int level){ + try{ + Date nowDate = new Date(); + for (RegionSelectJSDTO regionSelectJSDTO: childrenList){ + SyRegion region = new SyRegion(); + region.setId(regionSelectJSDTO.getValue()); + region.setKind(level); + region.setName(regionSelectJSDTO.getLabel()); + region.setLevel(level); + region.setParentId(regionSelectJSDTO.getParentId()); + region.setCreateTime(nowDate); + region.setUpdateTime(nowDate); + this.saveOrUpdate(region); + if (CollectionUtils.isNotEmpty(regionSelectJSDTO.getChildren())) { + this.webSaveByJSTree(regionSelectJSDTO.getChildren(), level + 1); + } + } + }catch (Exception e){ + log.error("[SyRegionService.webSaveByJSTree]调用失败,异常信息:"+e, e); + throw new ServiceException("SyRegionService.webSaveByJSTree", e); + } + } + + /** + * 根据百度地图经纬度获取街道 + * @param lng + * @param lat + * @return + */ + public QueAddrBaseDTO getQueAddrByBaiduiLngLat(String lng, String lat){ + try{QueAddrBaseDTO queAddrBaseDTO = new QueAddrBaseDTO(); + BaiduMapAddrDTO baiduMapAddrDTO = BaiduMapUtils.getAddrByLngLat(lng, lat, BaiduMapUtils.coordtype_bd09ll); + if (ObjectUtils.isNotEmpty(baiduMapAddrDTO)) { + QueryWrapper<SyRegion> syRegionQueryWrapper = new QueryWrapper<>(); + // 查询省 + syRegionQueryWrapper.like("name", baiduMapAddrDTO.getProvince()); + SyRegion province = mapper.selectOne(syRegionQueryWrapper); + queAddrBaseDTO.setQueProv(province.getId()); + queAddrBaseDTO.setQueProvName(province.getName()); + // 查询市 + syRegionQueryWrapper.clear(); + syRegionQueryWrapper.like("name", baiduMapAddrDTO.getCity()); + SyRegion city = mapper.selectOne(syRegionQueryWrapper); + queAddrBaseDTO.setQueCity(city.getId()); + queAddrBaseDTO.setQueCityName(city.getName()); + // 查询区 + syRegionQueryWrapper.clear(); + syRegionQueryWrapper.like("name", baiduMapAddrDTO.getDistrict()); + SyRegion district = mapper.selectOne(syRegionQueryWrapper); + queAddrBaseDTO.setQueArea(district.getId()); + queAddrBaseDTO.setQueAreaName(district.getName()); + // 查询街道 + syRegionQueryWrapper.clear(); + syRegionQueryWrapper.like("name", baiduMapAddrDTO.getTown()); + SyRegion town = mapper.selectOne(syRegionQueryWrapper); + queAddrBaseDTO.setQueRoad(town.getId()); + queAddrBaseDTO.setQueRoadName(town.getName()); + } + return queAddrBaseDTO; + }catch (Exception e){ + log.error("[SyRegionService.getQueAddrByBaiduiLngLat]调用失败,异常信息:"+e, e); + throw new ServiceException("SyRegionService.getQueAddrByBaiduiLngLat", e); + } + + } + + public List<QueAreaDTO> listByParentId(String parentId){ + List<QueAreaDTO> list = new ArrayList<>(); + QueryWrapper<SyRegion> queryWrapper = new QueryWrapper(); + queryWrapper.eq("parent_id", parentId); + List<SyRegion> syRegions = mapper.selectList(queryWrapper); + if(ObjectUtils.isNotEmpty(syRegions)){ + for (SyRegion syRegion : syRegions) { + QueAreaDTO queAreaDTO = new QueAreaDTO(); + queAreaDTO.setAreaCode(syRegion.getId()); + queAreaDTO.setAreaName(syRegion.getName()); + queAreaDTO.setParentId(syRegion.getParentId()); + list.add(queAreaDTO); + } + } + return list; + } + } -- Gitblit v1.8.0