From 052a3249c21c76435e2af5e76036e3c503d12218 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期三, 21 五月 2025 13:56:37 +0800 Subject: [PATCH] 修改bug --- DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/LocationQuery.java | 23 +++++++++++ DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoJson.java | 9 ++++ DriverOKTravel/guns-admin/pom.xml | 8 ++++ DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java | 20 +++++++--- DriverOKTravel/guns-admin/src/main/resources/application.yml | 5 ++ DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoFencingPolygon.java | 35 +++++++++++++++++ 6 files changed, 94 insertions(+), 6 deletions(-) diff --git a/DriverOKTravel/guns-admin/pom.xml b/DriverOKTravel/guns-admin/pom.xml index 41bd38f..b851f1d 100644 --- a/DriverOKTravel/guns-admin/pom.xml +++ b/DriverOKTravel/guns-admin/pom.xml @@ -226,6 +226,14 @@ <artifactId>commons-codec</artifactId> <version>1.13</version> </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-data-mongodb</artifactId> + </dependency> + <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + </dependency> </dependencies> <build> diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java index 577daa2..a0d647a 100644 --- a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java +++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java @@ -16,14 +16,20 @@ import com.stylefeng.guns.modular.system.util.GDMapElectricFenceUtil; import com.stylefeng.guns.modular.system.util.RedisUtil; import com.stylefeng.guns.modular.system.util.SystemException; +import com.stylefeng.guns.modular.system.util.model.GeoFencingPolygon; import com.stylefeng.guns.modular.taxi.model.OrderTaxi; import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.geo.GeoJsonPoint; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.*; +import java.util.stream.Collectors; @Service @@ -46,9 +52,9 @@ @Autowired private DateUtil dateUtil; - + @Autowired - private GDMapElectricFenceUtil gdMapElectricFenceUtil; + private MongoTemplate mongoTemplate; @Autowired private RedisUtil redisUtil; @@ -306,12 +312,14 @@ } } if(Integer.valueOf(map.get("type").toString()) == 2){//电子围栏 - String gid = map.get("gid").toString(); - List<String> list1 = gdMapElectricFenceUtil.monitorElectricFenc("", lonLat); - if(list1.contains(gid)){ + String[] split = lonLat.split(","); + GeoJsonPoint point = new GeoJsonPoint(Double.valueOf(split[0]), Double.valueOf(split[1])); + Query query = Query.query(Criteria.where("geoJsonPolygon").intersects(point)); + List<GeoFencingPolygon> geoFencingPolygons = mongoTemplate.find(query, GeoFencingPolygon.class); + List<Integer> s_sites = geoFencingPolygons.stream().map(GeoFencingPolygon::getSiteId).collect(Collectors.toList()); + if(s_sites.contains(siteId)){ return true; } - continue; } } return false; diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoFencingPolygon.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoFencingPolygon.java new file mode 100644 index 0000000..5a2f93b --- /dev/null +++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoFencingPolygon.java @@ -0,0 +1,35 @@ +package com.stylefeng.guns.modular.system.util.model; + +import lombok.Data; +import org.springframework.data.mongodb.core.geo.GeoJsonPolygon; +import org.springframework.data.mongodb.core.index.GeoSpatialIndexType; +import org.springframework.data.mongodb.core.index.GeoSpatialIndexed; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.io.Serializable; + +/** + * 地理围栏-多边形 + * @author zhibing.pu + * @date 2023/4/29 23:53 + */ +@Data +@Document(collection = "geo_fencing") +public class GeoFencingPolygon implements Serializable { + private static final long serialVersionUID = 4508868382007529971L; + + private String id; + /** + * 站点id + */ + private Integer siteId; + /** + * 站点名称 + */ + private String name; + /** + * 多边形经纬度 + */ + @GeoSpatialIndexed(type = GeoSpatialIndexType.GEO_2DSPHERE) + private GeoJsonPolygon geoJsonPolygon; +} diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoJson.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoJson.java new file mode 100644 index 0000000..bb04b82 --- /dev/null +++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoJson.java @@ -0,0 +1,9 @@ +package com.stylefeng.guns.modular.system.util.model; + +import lombok.Data; + +@Data +public class GeoJson { + private String type; + private Double[] coordinates; +} diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/LocationQuery.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/LocationQuery.java new file mode 100644 index 0000000..a7f14dc --- /dev/null +++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/LocationQuery.java @@ -0,0 +1,23 @@ +package com.stylefeng.guns.modular.system.util.model; + +import lombok.Data; + +@Data +public class LocationQuery { + /** + * 当前经纬度[xxx,xxx] + **/ + private Double[] coordinates; + /** + * 距离,如:200,500,1,3,5,10,20 + **/ + private Double distance; + /** + * 距离单位,如:m,km + **/ + private String unit; + /** + * 位置类型:1-景点,2-加油站,3-酒店 + **/ + private Integer type; +} \ No newline at end of file diff --git a/DriverOKTravel/guns-admin/src/main/resources/application.yml b/DriverOKTravel/guns-admin/src/main/resources/application.yml index fb973dd..9d204f1 100644 --- a/DriverOKTravel/guns-admin/src/main/resources/application.yml +++ b/DriverOKTravel/guns-admin/src/main/resources/application.yml @@ -102,7 +102,12 @@ juhe: #聚合数据 appKey: c4b903ff5624f661d0af962ef8b3f424 # +--- +spring: + data: + mongodb: + uri: mongodb://127.0.0.1:27017/admin --- jiguang: -- Gitblit v1.7.1