From 8a8d15aaa219142fe32b4ae8a074ea278eea2f47 Mon Sep 17 00:00:00 2001
From: liyj <1003249715@qq.com>
Date: Tue, 10 Sep 2024 23:44:48 +0800
Subject: [PATCH] 1、根据经纬度查询问题属地接口

---
 dyh-service/dyh-sys/src/main/java/cn/huge/module/kind/service/SyRegionService.java |   75 +++++++++++++++++++++++++++++++++++++
 1 files changed, 74 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..b74fb2d 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,17 @@
 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.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 +24,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.PostConstruct;
+import javax.swing.plaf.synth.Region;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -26,7 +34,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 +138,69 @@
         }
     }
 
+    /**
+     * 递归保存树形结构
+     * @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){
+        QueAddrBaseDTO queAddrBaseDTO = new QueAddrBaseDTO();
+        BaiduMapAddrDTO baiduMapAddrDTO = BaiduMapUtils.getAddrByLngLat(lng, lat, BaiduMapUtils.coordtype_bd09ll);
+        if (ObjectUtils.isNotEmpty(baiduMapAddrDTO)) {
+            QueryWrapper<SyRegion> syRegionQueryWrapper = new QueryWrapper<>();
+            // 查询省
+            syRegionQueryWrapper.eq("name", baiduMapAddrDTO.getProvince());
+            SyRegion province = mapper.selectOne(syRegionQueryWrapper);
+            queAddrBaseDTO.setQueProv(province.getId());
+            queAddrBaseDTO.setQueProvName(province.getName());
+            // 查询市
+            syRegionQueryWrapper.eq("name", baiduMapAddrDTO.getCity());
+            SyRegion city = mapper.selectOne(syRegionQueryWrapper);
+            queAddrBaseDTO.setQueProv(city.getId());
+            queAddrBaseDTO.setQueProvName(city.getName());
+            // 查询区
+            syRegionQueryWrapper.eq("name", baiduMapAddrDTO.getDistrict());
+            SyRegion district = mapper.selectOne(syRegionQueryWrapper);
+            queAddrBaseDTO.setQueProv(district.getId());
+            queAddrBaseDTO.setQueProvName(district.getName());
+            // 查询街道
+            syRegionQueryWrapper.eq("name", baiduMapAddrDTO.getTown());
+            SyRegion town = mapper.selectOne(syRegionQueryWrapper);
+            queAddrBaseDTO.setQueProv(town.getId());
+            queAddrBaseDTO.setQueProvName(town.getName());
+        }
+        return queAddrBaseDTO;
+    }
+
+
+
 }

--
Gitblit v1.8.0