diff --git a/RuoYi-Vue-Plus/pom.xml b/RuoYi-Vue-Plus/pom.xml
index bef08020..3885d66f 100644
--- a/RuoYi-Vue-Plus/pom.xml
+++ b/RuoYi-Vue-Plus/pom.xml
@@ -58,6 +58,8 @@
3.11.0
3.1.2
1.3.0
+
+ 1.20.0
@@ -357,6 +359,13 @@
${revision}
+
+
+ org.locationtech.jts
+ jts-core
+ ${jts.version}
+
+
diff --git a/RuoYi-Vue-Plus/ruoyi-common/pom.xml b/RuoYi-Vue-Plus/ruoyi-common/pom.xml
index 385d7114..b0bde13e 100644
--- a/RuoYi-Vue-Plus/ruoyi-common/pom.xml
+++ b/RuoYi-Vue-Plus/ruoyi-common/pom.xml
@@ -34,7 +34,7 @@
ruoyi-common-tenant
ruoyi-common-websocket
ruoyi-common-sse
- ruoyi-common-mapbox
+ ruoyi-common-jts
ruoyi-common
diff --git a/RuoYi-Vue-Plus/ruoyi-common/ruoyi-common-bom/pom.xml b/RuoYi-Vue-Plus/ruoyi-common/ruoyi-common-bom/pom.xml
index 24acb086..547640fd 100644
--- a/RuoYi-Vue-Plus/ruoyi-common/ruoyi-common-bom/pom.xml
+++ b/RuoYi-Vue-Plus/ruoyi-common/ruoyi-common-bom/pom.xml
@@ -179,6 +179,13 @@
${revision}
+
+
+ org.dromara
+ ruoyi-common-jts
+ ${revision}
+
+
diff --git a/RuoYi-Vue-Plus/ruoyi-common/ruoyi-common-json/src/main/java/org/dromara/common/json/config/JacksonConfig.java b/RuoYi-Vue-Plus/ruoyi-common/ruoyi-common-json/src/main/java/org/dromara/common/json/config/JacksonConfig.java
index 8f5a45d1..36400bc9 100644
--- a/RuoYi-Vue-Plus/ruoyi-common/ruoyi-common-json/src/main/java/org/dromara/common/json/config/JacksonConfig.java
+++ b/RuoYi-Vue-Plus/ruoyi-common/ruoyi-common-json/src/main/java/org/dromara/common/json/config/JacksonConfig.java
@@ -4,8 +4,8 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
-import org.dromara.common.json.handler.BigNumberSerializer;
import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.json.handler.BigNumberSerializer;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
diff --git a/RuoYi-Vue-Plus/ruoyi-common/ruoyi-common-jts/pom.xml b/RuoYi-Vue-Plus/ruoyi-common/ruoyi-common-jts/pom.xml
new file mode 100644
index 00000000..b4565041
--- /dev/null
+++ b/RuoYi-Vue-Plus/ruoyi-common/ruoyi-common-jts/pom.xml
@@ -0,0 +1,26 @@
+
+
+
+ org.dromara
+ ruoyi-common
+ ${revision}
+
+ 4.0.0
+
+ ruoyi-common-jts
+
+
+ ruoyi-common-jts 地图工具模块
+
+
+
+
+
+ org.locationtech.jts
+ jts-core
+
+
+
+
diff --git a/RuoYi-Vue-Plus/ruoyi-common/ruoyi-common-mapbox/pom.xml b/RuoYi-Vue-Plus/ruoyi-common/ruoyi-common-mapbox/pom.xml
deleted file mode 100644
index be0f26fd..00000000
--- a/RuoYi-Vue-Plus/ruoyi-common/ruoyi-common-mapbox/pom.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-
- org.dromara
- ruoyi-common
- ${revision}
-
- 4.0.0
-
- ruoyi-common-mapbox
-
-
- ruoyi-common-mapbox 地图工具模块
-
-
-
-
- com.mapbox.mapboxsdk
- mapbox-sdk-geojson
- 7.4.0
-
-
-
- com.mapbox.mapboxsdk
- mapbox-sdk-services
- 7.4.0
-
-
-
- com.mapbox.mapboxsdk
- mapbox-sdk-turf
- 7.4.0
-
-
-
- com.mapbox.mapboxsdk
- mapbox-sdk-core
- 7.4.0
-
-
-
-
-
- mapbox-repo
- https://api.mapbox.com/downloads/v2/releases/maven
-
- false
-
-
-
-
-
diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/pom.xml b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/pom.xml
index 0fc6d551..784a305b 100644
--- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/pom.xml
+++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/pom.xml
@@ -100,6 +100,11 @@
ruoyi-common-sse
+
+ org.dromara
+ ruoyi-common-jts
+
+
diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/constant/GeoJsonConstant.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/constant/GeoJsonConstant.java
new file mode 100644
index 00000000..a4638756
--- /dev/null
+++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/constant/GeoJsonConstant.java
@@ -0,0 +1,15 @@
+package org.dromara.constant;
+
+/**
+ * @author lcj
+ * @date 2025/4/24 17:44
+ */
+public interface GeoJsonConstant {
+
+ String POINT = "Point";
+
+ String LINE = "LineString";
+
+ String POLYGON = "Polygon";
+
+}
diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/controller/FacMatrixController.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/controller/FacMatrixController.java
index 3e946e64..b6857a01 100644
--- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/controller/FacMatrixController.java
+++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/controller/FacMatrixController.java
@@ -15,6 +15,7 @@ import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
+import org.dromara.facility.domain.req.matrix.MatrixCreateByGeoJsonReq;
import org.dromara.facility.domain.req.matrix.MatrixCreateReq;
import org.dromara.facility.domain.req.matrix.MatrixQueryReq;
import org.dromara.facility.domain.req.matrix.MatrixUpdateReq;
@@ -71,6 +72,17 @@ public class FacMatrixController extends BaseController {
return R.ok(facMatrixService.queryById(id));
}
+ /**
+ * 通过GeoJson新增设施-方阵
+ */
+ @SaCheckPermission("facility:matrix:add")
+ @Log(title = "设施-方阵", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping("/geoJson")
+ public R insertByGeoJson(@RequestBody MatrixCreateByGeoJsonReq req) {
+ return toAjax(facMatrixService.insertByGeoJson(req));
+ }
+
/**
* 新增设施-方阵
*/
diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/controller/FacPhotovoltaicPanelController.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/controller/FacPhotovoltaicPanelController.java
index 4b43564f..0b86850c 100644
--- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/controller/FacPhotovoltaicPanelController.java
+++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/controller/FacPhotovoltaicPanelController.java
@@ -15,6 +15,7 @@ import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
+import org.dromara.facility.domain.req.photovoltaicpanel.PhotovoltaicPanelCreateByGeoJsonReq;
import org.dromara.facility.domain.req.photovoltaicpanel.PhotovoltaicPanelCreateReq;
import org.dromara.facility.domain.req.photovoltaicpanel.PhotovoltaicPanelQueryReq;
import org.dromara.facility.domain.req.photovoltaicpanel.PhotovoltaicPanelUpdateReq;
@@ -82,6 +83,17 @@ public class FacPhotovoltaicPanelController extends BaseController {
return R.ok(facPhotovoltaicPanelService.insertByBo(req));
}
+ /**
+ * 通过GeoJson新增设施-光伏板
+ */
+ @SaCheckPermission("facility:photovoltaicPanel:add")
+ @Log(title = "设施-光伏板", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping("/geoJson")
+ public R insertByGeoJson(@RequestBody PhotovoltaicPanelCreateByGeoJsonReq geoJson) {
+ return toAjax(facPhotovoltaicPanelService.insertByGeoJson(geoJson));
+ }
+
/**
* 修改设施-光伏板
*/
diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/controller/FacPhotovoltaicPanelPartsController.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/controller/FacPhotovoltaicPanelPartsController.java
index ba72aba6..9e4eb5e4 100644
--- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/controller/FacPhotovoltaicPanelPartsController.java
+++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/controller/FacPhotovoltaicPanelPartsController.java
@@ -5,10 +5,13 @@ import org.dromara.common.core.domain.R;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.facility.domain.req.photovoltaicpanelparts.PhotovoltaicPanelPartsCreateByGeoJsonReq;
import org.dromara.facility.domain.req.photovoltaicpanelparts.PhotovoltaicPanelPartsCreateReq;
import org.dromara.facility.service.IFacPhotovoltaicPanelPartsService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -21,11 +24,21 @@ import org.springframework.web.bind.annotation.RestController;
@Validated
@RestController
@RequestMapping("/facility/photovoltaicPanelPoint/parts")
-public class FacPhotovoltaicPanelPartsController {
+public class FacPhotovoltaicPanelPartsController extends BaseController {
@Resource
private IFacPhotovoltaicPanelPartsService photovoltaicPanelPartsService;
+ /**
+ * 通过GeoJson新增设施-光伏板桩点、立柱、支架
+ */
+ @Log(title = "设施-光伏板(桩点、立柱、支架)", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping("/geoJson")
+ public R insertPartsByGeoJson(@RequestBody PhotovoltaicPanelPartsCreateByGeoJsonReq req) {
+ return toAjax(photovoltaicPanelPartsService.insertPartsByGeoJson(req));
+ }
+
/**
* 新增设施-光伏板桩点、立柱、支架
*/
diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/Feature.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/Feature.java
new file mode 100644
index 00000000..05602534
--- /dev/null
+++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/Feature.java
@@ -0,0 +1,22 @@
+package org.dromara.facility.domain.req.geojson;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author lcj
+ * @date 2025/4/24 17:38
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class Feature {
+
+ private String type;
+
+ private Geometry geometry;
+
+ private Properties properties;
+
+}
diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/FeatureByLine.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/FeatureByLine.java
new file mode 100644
index 00000000..beaa7604
--- /dev/null
+++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/FeatureByLine.java
@@ -0,0 +1,22 @@
+package org.dromara.facility.domain.req.geojson;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author lcj
+ * @date 2025/4/24 10:40
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class FeatureByLine {
+
+ private String type;
+
+ private GeometryByLine geometry;
+
+ private Properties properties;
+
+}
diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/FeatureByPlane.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/FeatureByPlane.java
new file mode 100644
index 00000000..9dee3724
--- /dev/null
+++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/FeatureByPlane.java
@@ -0,0 +1,22 @@
+package org.dromara.facility.domain.req.geojson;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author lcj
+ * @date 2025/4/24 10:32
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class FeatureByPlane {
+
+ private String type;
+
+ private GeometryByPlane geometry;
+
+ private Properties properties;
+
+}
diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/FeatureByPoint.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/FeatureByPoint.java
new file mode 100644
index 00000000..59e9e64c
--- /dev/null
+++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/FeatureByPoint.java
@@ -0,0 +1,22 @@
+package org.dromara.facility.domain.req.geojson;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author lcj
+ * @date 2025/4/24 10:40
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class FeatureByPoint {
+
+ private String type;
+
+ private GeometryByPoint geometry;
+
+ private Properties properties;
+
+}
diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/GeoJson.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/GeoJson.java
new file mode 100644
index 00000000..e6117815
--- /dev/null
+++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/GeoJson.java
@@ -0,0 +1,24 @@
+package org.dromara.facility.domain.req.geojson;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author lcj
+ * @date 2025/4/24 17:37
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class GeoJson {
+
+ private String name;
+
+ private String type;
+
+ private List features;
+
+}
diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/GeoJsonByLine.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/GeoJsonByLine.java
new file mode 100644
index 00000000..470385eb
--- /dev/null
+++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/GeoJsonByLine.java
@@ -0,0 +1,25 @@
+package org.dromara.facility.domain.req.geojson;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author lcj
+ * @date 2025/4/24 10:38
+ */
+@Data
+public class GeoJsonByLine implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = -1019429627483913266L;
+
+ private String name;
+
+ private String type;
+
+ private List features;
+
+}
diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/GeoJsonByPlane.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/GeoJsonByPlane.java
new file mode 100644
index 00000000..508635d8
--- /dev/null
+++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/GeoJsonByPlane.java
@@ -0,0 +1,25 @@
+package org.dromara.facility.domain.req.geojson;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author lcj
+ * @date 2025/4/24 10:32
+ */
+@Data
+public class GeoJsonByPlane implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 7407176569611285023L;
+
+ private String name;
+
+ private String type;
+
+ private List features;
+
+}
diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/GeoJsonByPoint.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/GeoJsonByPoint.java
new file mode 100644
index 00000000..d63a391c
--- /dev/null
+++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/GeoJsonByPoint.java
@@ -0,0 +1,25 @@
+package org.dromara.facility.domain.req.geojson;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author lcj
+ * @date 2025/4/24 10:38
+ */
+@Data
+public class GeoJsonByPoint implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 3829419654737988678L;
+
+ private String name;
+
+ private String type;
+
+ private List features;
+
+}
diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/Geometry.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/Geometry.java
new file mode 100644
index 00000000..fbd5558c
--- /dev/null
+++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/domain/req/geojson/Geometry.java
@@ -0,0 +1,24 @@
+package org.dromara.facility.domain.req.geojson;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author lcj
+ * @date 2025/4/24 17:38
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class Geometry {
+
+ private String type;
+
+ private List