浏览代码

条件查询

gushoubang 10 月之前
父节点
当前提交
f2491ffb31

+ 1 - 0
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/domain/query/GhdkaFilter.java

@@ -11,5 +11,6 @@ import java.util.List;
 @Data
 public class GhdkaFilter {
     List<Integer> idList;
+    String sjy;
     FzxzXzyzDTO fzxzXzyzDTO;
 }

+ 0 - 1
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/mapper/vector/GhdkaMapper.java

@@ -10,7 +10,6 @@ import java.util.List;
 import java.util.Map;
 
 public interface GhdkaMapper extends BaseMapper<GhdkaDTO> {
-    // List<Integer> getIdByGeom(@Param("sjy") String sjy, @Param("geom") String geom);
     List<Integer> getIdByGeom(Map<String, Object> params);
 
     List<Integer> getIdByFilter(GhdkaFilter ghdkaFilter);

+ 1 - 0
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/impl/FzssServiceImpl.java

@@ -158,6 +158,7 @@ public class FzssServiceImpl implements IFzssService {
         List<Integer> ids = ghdkaMapper.getIdByGeom(paramMap);
         // 2.条件筛选
         GhdkaFilter ghdkaFilter = new GhdkaFilter();
+        ghdkaFilter.setSjy(fzxzDTO.getSjy());
         ghdkaFilter.setIdList(ids);
         for (FzxzXzyzDTO fzxzXzyzDTO : fzxzCalc.getXzyxList()) {
             ghdkaFilter.setFzxzXzyzDTO(fzxzXzyzDTO);

+ 24 - 9
onemap-modules/onemap-analyse/src/main/resources/mapper/oracle/vector/GhdkaMapper.xml

@@ -11,25 +11,40 @@
 
     <select id="getIdByFilter" parameterType="com.onemap.analyse.domain.query.GhdkaFilter"
             resultType="java.lang.Integer">
-        SELECT id
-        FROM "GHDKA" as dk,"#{fzxzXzyzDTO.yzbsm}" as tbName
-        where
-        id in
+        SELECT dk.id
+        FROM "${sjy}" as dk
+        WHERE
+        dk.id in
         <foreach collection="idList" item="id" open="(" separator="," close=")">
             #{id}
         </foreach>
-        and
         <if test="fzxzXzyzDTO.spatial_type == 'contain'">
-            st_contains ( tbName.geom, dk.geom )
+            AND EXISTS (
+            SELECT 1
+            FROM "${fzxzXzyzDTO.yzbsm}" as tbName
+            WHERE PUBLIC.st_contains(dk.geom, tbName.geom)
+            )
         </if>
         <if test="fzxzXzyzDTO.spatial_type == 'n_contain'">
-            not st_contains ( tbName.geom, dk.geom )
+            AND NOT EXISTS (
+            SELECT 1
+            FROM "${fzxzXzyzDTO.yzbsm}" as tbName
+            WHERE PUBLIC.st_contains(dk.geom, tbName.geom)
+            )
         </if>
         <if test="fzxzXzyzDTO.spatial_type == 'identity'">
-            st_intersects ( tbName.geom, dk.geom )
+            AND EXISTS (
+            SELECT 1
+            FROM "${fzxzXzyzDTO.yzbsm}" as tbName
+            WHERE public.st_intersects (dk.geom, tbName.geom)
+            )
         </if>
         <if test="fzxzXzyzDTO.spatial_type == 'n_identity'">
-            not st_intersects ( tbName.geom, dk.geom )
+            AND NOT EXISTS (
+            SELECT 1
+            FROM "${fzxzXzyzDTO.yzbsm}" as tbName
+            WHERE public.st_intersects (dk.geom, tbName.geom)
+            )
         </if>
     </select>
 </mapper>