吉安感知网项目-后端
linwei
2026-08-13 8585b431e9257333413358eb37c30ae58f74db76
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwPoliceStationMapper.xml
@@ -30,10 +30,10 @@
                and id = #{param2.id}
            </if>
            <if test="param2.stationName != null and param2.stationName != ''">
                and station_name = #{param2.stationName}
                and station_name like concat('%', #{param2.stationName}, '%')
            </if>
            <if test="param2.address != null and param2.address != ''">
                and address = #{param2.address}
                and address like concat('%', #{param2.address}, '%')
            </if>
            <if test="param2.longitude != null and param2.longitude != ''">
                and longitude = #{param2.longitude}
@@ -42,7 +42,7 @@
                and latitude = #{param2.latitude}
            </if>
            <if test="param2.contactPerson != null and param2.contactPerson != ''">
                and contact_person = #{param2.contactPerson}
                and contact_person like concat('%', #{param2.contactPerson}, '%')
            </if>
            <if test="param2.contactPhone != null and param2.contactPhone != ''">
                and contact_phone = #{param2.contactPhone}
@@ -68,8 +68,15 @@
            <if test="param2.status != null and param2.status != ''">
                and status = #{param2.status}
            </if>
            <if test="param2.isDeleted != null and param2.isDeleted != ''">
                and is_deleted = #{param2.isDeleted}
        </where>
    </select>
    <select id="selectFwPoliceStationList" resultMap="fwPoliceStationResultMap">
        select * from ja_fw_police_station
        <where>
            is_deleted = 0
            <if test="stationName != null and stationName != ''">
                and station_name like concat('%', #{stationName}, '%')
            </if>
        </where>
    </select>
@@ -79,4 +86,26 @@
        SELECT * FROM ja_fw_police_station ${ew.customSqlSegment}
    </select>
    <!-- 根据多边形区域查询派出所 -->
    <!--
        历史遗留问题:数据库表中 longitude 字段实际存储的是纬度值,latitude 字段实际存储的是经度值
        解决方案:
        1. POLYGON:用户输入是标准格式(经度 纬度),不做坐标交换
        2. POINT:数据库字段存反,构建时交换为 POINT(latitude, longitude)
    -->
    <select id="selectByPolygons" resultMap="fwPoliceStationResultMap">
        SELECT * FROM ja_fw_police_station
        WHERE is_deleted = 0
          AND longitude IS NOT NULL
          AND latitude IS NOT NULL
          AND (
            <foreach collection="polygons" item="polygon" separator=" OR ">
                ST_Contains(
                    ST_SRID(ST_GeomFromText(#{polygon}), 4326),
                    ST_GeomFromText(CONCAT('POINT(', latitude, ' ', longitude, ')'), 4326)
                )
            </foreach>
          )
    </select>
</mapper>