Răsfoiți Sursa

兼容年份1000的情况2

chenendian 2 luni în urmă
părinte
comite
84a1aa6df6

+ 24 - 16
siwei-modules/siwei-apply/src/main/resources/mapper/YdbpDataMapper.xml

@@ -239,25 +239,33 @@
             INNER JOIN t_node_land nl ON gd.upload_id = nl.geom_db_id
             INNER JOIN  "public"."t_ydbp_data" bp  ON nl.node_id = bp.id
             WHERE bp.has_onchain = 't'  GROUP BY nf
+        ),
+        diff_result AS (
+            SELECT
+            bp.nf,
+            bp.patch_count,
+            ST_Difference(bp.union_geom, COALESCE(gy.union_geom, ST_GeomFromText('POLYGON EMPTY',4326))) AS diff_geom
+            FROM geom_ydbp_data bp
+            LEFT JOIN  geom_gy_data gy ON bp.nf = gy.nf
+            <if test="year != null and year != ''">
+                WHERE bp.nf = #{year}
+            </if>
         )
-        SELECT bp.nf, bp.patch_count,
-        ''  AS details_id,
-        '' AS project_id,
-        '' AS node_id,
-        ''  AS  id,
-        '2' AS batch_type,
-        ST_AsEWKT( ST_Difference(bp.union_geom, gy.union_geom)) AS geom,
-        COALESCE (ST_Area( ST_Difference(bp.union_geom, COALESCE(gy.union_geom, ST_GeomFromText('POLYGON EMPTY',4326)))::geography ),0) / 666.6666667 AS rest_area
-        FROM geom_ydbp_data bp
-        LEFT JOIN  geom_gy_data gy ON bp.nf = gy.nf
-        WHERE NOT ST_IsEmpty( ST_Difference(bp.union_geom,COALESCE(gy.union_geom, ST_GeomFromText('POLYGON EMPTY',4326)) ) )
-        <if test="year != null and year != ''">
-            AND  bp.nf = #{year}
-        </if>
-        order by bp.nf
+        SELECT
+            nf,
+            patch_count,
+            ''  AS details_id,
+            '' AS project_id,
+            '' AS node_id,
+            ''  AS  id,
+            '2' AS batch_type,
+            ST_AsEWKT(diff_geom::geography ) AS geom,
+            COALESCE (ST_Area(diff_geom::geography ),0) / 666.6666667 AS rest_area
+            FROM diff_result
+            WHERE NOT ST_IsEmpty(diff_geom)
+            order by nf
     </select>
 
-
     <select id="queryRemainGeomListByYear" resultType="java.util.Map">
         <include refid="commonYdbpDataCte"></include>
         SELECT