gushoubang 1 год назад
Родитель
Сommit
dd7a84db78

+ 1 - 1
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/controller/analyse/AnalyseUtilsDBController.java

@@ -80,6 +80,6 @@ public class AnalyseUtilsDBController extends BaseController {
     @PostMapping("/distance/tables")
     @Slave
     public RequestResult distanceTables(@RequestBody DistanceTablesVo distanceTablesVo) {
-        return RequestResult.success(analyseUtilsDBService.distanceTables(distanceTablesVo.getTableNameA(), distanceTablesVo.getTableNameB(), distanceTablesVo.getTableIdsB(), distanceTablesVo.getDistance()));
+        return RequestResult.success(analyseUtilsDBService.distanceTables(distanceTablesVo.getTableNameA(), distanceTablesVo.getTableNameB(), distanceTablesVo.getTableIdsB(), distanceTablesVo.getDistance(), distanceTablesVo.getDistanceType()));
     }
 }

+ 3 - 1
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/domain/vo/DistanceTablesVo.java

@@ -5,7 +5,9 @@ import lombok.Data;
 import java.util.List;
 
 @Data
-public class DistanceTablesVo extends TableABBean{
+public class DistanceTablesVo extends TableABBean {
     List<Integer> tableIdsB;
     Integer distance;
+    // 1:>,2>=,3<,4<=
+    Integer distanceType;
 }

+ 3 - 1
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/mapper/vector/AnalyseUtilsDBMapper.java

@@ -20,6 +20,7 @@ public interface AnalyseUtilsDBMapper {
             @Param("tableName") String tableName,
             @Param("tableIds") List<Integer> tableIds,
             @Param("ewkt") String ewkt);
+
     /**
      * 计算wkt包含table中的数据,返回table id
      *
@@ -71,5 +72,6 @@ public interface AnalyseUtilsDBMapper {
             @Param("tableNameA") String tableNameA,
             @Param("tableNameB") String tableNameB,
             @Param("tableIdsB") List<Integer> tableIdsB,
-            @Param("distance") Integer distance);
+            @Param("distance") Integer distance,
+            @Param("distanceType") Integer distanceType);
 }

+ 2 - 1
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/AnalyseUtilsDBService.java

@@ -74,5 +74,6 @@ public interface AnalyseUtilsDBService {
             String tableNameA,
             String tableNameB,
             List<Integer> tableIdsB,
-            Integer distance);
+            Integer distance,
+            Integer distanceType);
 }

+ 2 - 2
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/impl/AnalyseUtilsDBServiceImpl.java

@@ -34,7 +34,7 @@ public class AnalyseUtilsDBServiceImpl implements AnalyseUtilsDBService {
     }
 
     @Override
-    public List<Integer> distanceTables(String tableNameA, String tableNameB, List<Integer> tableIdsB, Integer distance) {
-        return analyseUtilsDBMapper.distanceTables(tableNameA, tableNameB, tableIdsB, distance);
+    public List<Integer> distanceTables(String tableNameA, String tableNameB, List<Integer> tableIdsB, Integer distance, Integer distanceType) {
+        return analyseUtilsDBMapper.distanceTables(tableNameA, tableNameB, tableIdsB, distance, distanceType);
     }
 }

+ 18 - 3
onemap-modules/onemap-analyse/src/main/resources/mapper/oracle/vector/AnalyseUtilsDBMapper.xml

@@ -69,9 +69,24 @@
         AND EXISTS (
         SELECT 1
         FROM "${tableNameA}" as tableA
-        WHERE public.ST_DWithin(
-        tableA.geom::public.geography,
-        tableB.geom::public.geography,#{distance})
+        WHERE
+        <choose>
+            <when test="distanceType == 1">
+                public.st_distance(tableA.geom::public.geography, tableB.geom::public.geography) &gt; #{distance}
+            </when>
+            <when test="distanceType == 2">
+                public.st_distance(tableA.geom::public.geography, tableB.geom::public.geography) &gt;= #{distance}
+            </when>
+            <when test="distanceType == 3">
+                public.st_distance(tableA.geom::public.geography, tableB.geom::public.geography) &lt; #{distance}
+            </when>
+            <when test="distanceType == 4">
+                public.st_distance(tableA.geom::public.geography, tableB.geom::public.geography) &lt;= #{distance}
+            </when>
+            <otherwise>
+                1=1
+            </otherwise>
+        </choose>
         )
     </select>
 </mapper>

+ 5 - 1
sql/pgsql/0_init.sql

@@ -16,4 +16,8 @@ t_table_filed
 t_table_filed_relation
 t_table_inside_outside
 t_table_res_rule
-t_table_res_tabel
+t_table_res_tabel
+
+-- vector新增表
+-- 生成火葬场图斑
+CREATE TABLE "TB_HZC" as SELECT * FROM "TB_GHDK" WHERE lbdm like '%1506%';