吉安感知网项目-后端
linwei
2026-08-13 8585b431e9257333413358eb37c30ae58f74db76
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwPoliceStationMapper.xml
@@ -4,11 +4,81 @@
    <!-- 通用查询映射结果 -->
    <resultMap id="fwPoliceStationResultMap" type="org.sxkj.fw.area.entity.FwPoliceStationEntity">
        <result column="id" property="id"/>
        <result column="station_name" property="stationName"/>
        <result column="address" property="address"/>
        <result column="longitude" property="longitude"/>
        <result column="latitude" property="latitude"/>
        <result column="contact_person" property="contactPerson"/>
        <result column="contact_phone" property="contactPhone"/>
        <result column="area_code" property="areaCode"/>
        <result column="create_user" property="createUser"/>
        <result column="create_dept" property="createDept"/>
        <result column="create_time" property="createTime"/>
        <result column="update_user" property="updateUser"/>
        <result column="update_time" property="updateTime"/>
        <result column="status" property="status"/>
        <result column="is_deleted" property="isDeleted"/>
    </resultMap>
    <select id="selectFwPoliceStationPage" resultMap="fwPoliceStationResultMap">
        select * from ja_fw_police_station where is_deleted = 0
        select * from ja_fw_police_station
        <where>
            is_deleted = 0
            <if test="param2.id != null and param2.id != ''">
                and id = #{param2.id}
            </if>
            <if test="param2.stationName != null and param2.stationName != ''">
                and station_name like concat('%', #{param2.stationName}, '%')
            </if>
            <if test="param2.address != null and param2.address != ''">
                and address like concat('%', #{param2.address}, '%')
            </if>
            <if test="param2.longitude != null and param2.longitude != ''">
                and longitude = #{param2.longitude}
            </if>
            <if test="param2.latitude != null and param2.latitude != ''">
                and latitude = #{param2.latitude}
            </if>
            <if test="param2.contactPerson != null and param2.contactPerson != ''">
                and contact_person like concat('%', #{param2.contactPerson}, '%')
            </if>
            <if test="param2.contactPhone != null and param2.contactPhone != ''">
                and contact_phone = #{param2.contactPhone}
            </if>
            <if test="param2.areaCode != null and param2.areaCode != ''">
                and area_code = #{param2.areaCode}
            </if>
            <if test="param2.createUser != null and param2.createUser != ''">
                and create_user = #{param2.createUser}
            </if>
            <if test="param2.createDept != null and param2.createDept != ''">
                and create_dept = #{param2.createDept}
            </if>
            <if test="param2.createTime != null and param2.createTime != ''">
                and create_time = #{param2.createTime}
            </if>
            <if test="param2.updateUser != null and param2.updateUser != ''">
                and update_user = #{param2.updateUser}
            </if>
            <if test="param2.updateTime != null and param2.updateTime != ''">
                and update_time = #{param2.updateTime}
            </if>
            <if test="param2.status != null and param2.status != ''">
                and status = #{param2.status}
            </if>
        </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>
@@ -16,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>