From d9142e583e71cea79dc4074f85712e83d941d88f Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期六, 07 三月 2026 21:01:05 +0800
Subject: [PATCH] 修改小程序
---
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceAreaServiceImpl.java | 35 ++++++++++++++++++++++++++++-------
1 files changed, 28 insertions(+), 7 deletions(-)
diff --git a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceAreaServiceImpl.java b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceAreaServiceImpl.java
index 2a5c40b..3035b0e 100644
--- a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceAreaServiceImpl.java
+++ b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceAreaServiceImpl.java
@@ -25,6 +25,7 @@
import com.xiaopeng.map.service.XpElectronicFenceAreaService;
import com.xiaopeng.map.utils.AmapWalkingRouteUtil;
import com.xiaopeng.map.utils.ElectricFenceUtil;
+import com.xiaopeng.map.utils.GDMapGeocodingUtil;
import com.xiaopeng.map.utils.GaodeMapService;
import com.xiaopeng.map.utils.holiday.HolidayUtil;
import com.xiaopeng.map.vo.IsInOperationAreaVo;
@@ -37,8 +38,10 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -73,6 +76,9 @@
@Autowired
private MongoTemplate mongoTemplate;
+ @Resource
+ private GDMapGeocodingUtil gdMapGeocodingUtil;
+
@Override
@@ -100,11 +106,17 @@
continue;
}
// 是否运营时间内
- Boolean inOperationTime = isInOperationTime(operationStrategy);
- if(!inOperationTime){
- continue;
+ if(xpElectronicFence.getFailureType() == 2){
+ Boolean inOperationTime = isInOperationTime(operationStrategy);
+ if(!inOperationTime){
+ continue;
+ }
+ }else{
+ //永不失效,需要判断开始时间是否到达
+ if(LocalDateTime.now().isBefore(xpElectronicFence.getEffectTime())){
+ continue;
+ }
}
-
XpElectronicFenceVo vo = new XpElectronicFenceVo();
// 设置id(使用siteId作为id)
@@ -195,7 +207,12 @@
public IsInOperationAreaVo isInOperationArea(LonLatDto dto) {
IsInOperationAreaVo vo = new IsInOperationAreaVo();
- List<XpGeoFencingPolygon> xpGeoFencingPolygons = xpGeoFencingPolygonService.findAll();
+ Map<String, String> geocode = gdMapGeocodingUtil.geocode(dto.getLongitude().toString(), dto.getLatitude().toString());
+ if(null == geocode){
+ throw new RuntimeException("经纬度转换城市code失败");
+ }
+ String cityCode = geocode.get("cityCode");
+ List<XpGeoFencingPolygon> xpGeoFencingPolygons = mongoTemplate.find(new Query(Criteria.where("cityCode").is(cityCode)), XpGeoFencingPolygon.class);
for (XpGeoFencingPolygon polygon : xpGeoFencingPolygons) {
if (polygon.getPoints() != null && polygon.getPoints().getCoordinates() != null) {
// GeoJsonPolygon的coordinates是一个二维数组,第一个元素是外部环
@@ -209,8 +226,12 @@
String fenceId = polygon.getFenceId();
R<XpElectronicFence> xpElectronicFence = xpElectronicFenceClient.selectById(fenceId);
if(xpElectronicFence!=null && null != xpElectronicFence.getData()){
- String operationStrategy = xpElectronicFence.getData().getOperationStrategy();
- Boolean inOperationTime = isInOperationTime(operationStrategy);
+ XpElectronicFence electronicFence = xpElectronicFence.getData();
+ String operationStrategy = electronicFence.getOperationStrategy();
+ Boolean inOperationTime = true;
+ if(electronicFence.getFailureType() == 2){
+ inOperationTime = isInOperationTime(operationStrategy);
+ }
if(inOperationTime){
vo.setStatus("inside");
vo.setElectronicAreaId(Long.valueOf(polygon.getAreaId()));
--
Gitblit v1.7.1