From d9ce694835cfbd2d1f01c294abb37eb5495c2afc Mon Sep 17 00:00:00 2001 From: 18980591175 <470162950@qq.com> Date: Tue, 2 Jun 2026 15:27:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=89=E6=A3=80=E5=8E=86=E5=8F=B2=E7=BB=8F?= =?UTF-8?q?=E7=BA=AC=E5=BA=A6=E5=AE=9A=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/bo/HotVehicleThreeInspectBo.java | 10 ++++ .../HotVehicleThreeInspectServiceImpl.java | 56 ++++++++++++++++++- 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hotwj/platform/config/vehicleThreeInspect/domain/bo/HotVehicleThreeInspectBo.java b/src/main/java/com/hotwj/platform/config/vehicleThreeInspect/domain/bo/HotVehicleThreeInspectBo.java index 063c40b..ad68cb8 100644 --- a/src/main/java/com/hotwj/platform/config/vehicleThreeInspect/domain/bo/HotVehicleThreeInspectBo.java +++ b/src/main/java/com/hotwj/platform/config/vehicleThreeInspect/domain/bo/HotVehicleThreeInspectBo.java @@ -79,6 +79,16 @@ public class HotVehicleThreeInspectBo extends BaseEntity { */ private String inspectLocation; + /** + * 纬度 + */ + private Double latitude; + + /** + * 经度 + */ + private Double longitude; + /** * 审核人ID */ diff --git a/src/main/java/com/hotwj/platform/config/vehicleThreeInspect/service/impl/HotVehicleThreeInspectServiceImpl.java b/src/main/java/com/hotwj/platform/config/vehicleThreeInspect/service/impl/HotVehicleThreeInspectServiceImpl.java index 02e3f1e..2d9a850 100644 --- a/src/main/java/com/hotwj/platform/config/vehicleThreeInspect/service/impl/HotVehicleThreeInspectServiceImpl.java +++ b/src/main/java/com/hotwj/platform/config/vehicleThreeInspect/service/impl/HotVehicleThreeInspectServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.core.type.TypeReference; import com.hotwj.platform.common.helper.DriverLoginContextHelper; import com.hotwj.platform.config.vehicleThreeInspect.domain.HotVehicleThreeInspect; @@ -38,9 +39,14 @@ import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.nio.charset.StandardCharsets; import java.util.Date; import java.util.Collections; import java.util.Collection; @@ -70,6 +76,9 @@ public class HotVehicleThreeInspectServiceImpl implements IHotVehicleThreeInspec private final SignatureVerifyService signatureVerifyService; private final HotVehicleThreeInspectConfigMapper hotVehicleThreeInspectConfigMapper; + @Value("${map.gd.key:}") + private String gdKey; + /** * 查询可进行三检的车辆列表(无历史记录或上一轮已完结) * @@ -883,7 +892,9 @@ public class HotVehicleThreeInspectServiceImpl implements IHotVehicleThreeInspec if (bo == null) { return; } - bo.setInspectLocation(StringUtils.trimToNull(bo.getInspectLocation())); + String inspectLocation = StringUtils.trimToNull(bo.getInspectLocation()); + String reverseAddress = reverseGeocode(bo.getLatitude(), bo.getLongitude()); + bo.setInspectLocation(StringUtils.defaultIfBlank(reverseAddress, inspectLocation)); } private void prepareInspectIdentity(HotVehicleThreeInspectBo bo) { @@ -965,4 +976,47 @@ public class HotVehicleThreeInspectServiceImpl implements IHotVehicleThreeInspec private String randomFourDigits() { return String.format("%04d", ThreadLocalRandom.current().nextInt(1000, 10000)); } + + private String reverseGeocode(Double latitude, Double longitude) { + if (latitude == null || longitude == null) { + return null; + } + if (StringUtils.isBlank(gdKey)) { + return null; + } + String location = longitude + "," + latitude; + String url = "https://restapi.amap.com/v3/geocode/regeo?output=JSON&location=" + + location + "&key=" + gdKey + "&radius=1000&extensions=base"; + HttpURLConnection connection = null; + try { + URL u = new URL(url); + connection = (HttpURLConnection) u.openConnection(); + connection.setConnectTimeout(3000); + connection.setReadTimeout(3000); + connection.setRequestMethod("GET"); + int code = connection.getResponseCode(); + if (code != HttpURLConnection.HTTP_OK) { + return null; + } + try (InputStream is = connection.getInputStream()) { + String body = new String(is.readAllBytes(), StandardCharsets.UTF_8); + JsonNode root = JsonUtils.getObjectMapper().readTree(body); + if (root == null) { + return null; + } + if (!"1".equals(root.path("status").asText())) { + return null; + } + String formatted = root.path("regeocode").path("formatted_address").asText(); + return StringUtils.trimToNull(formatted); + } + } catch (Exception e) { + log.warn("车辆三检逆地理解析失败: {},{}", latitude, longitude); + return null; + } finally { + if (connection != null) { + connection.disconnect(); + } + } + } }