吉安感知网项目-后端
linwei
yesterday 51a551a7f8eae7654f973d45cd2fa2952774673d
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwDefenseZoneMapper.xml
@@ -3,7 +3,7 @@
<mapper namespace="org.sxkj.fw.area.mapper.FwDefenseZoneMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="fwDefenseZoneResultMap" type="org.sxkj.fw.area.entity.FwDefenseZoneEntity">
    <resultMap id="fwDefenseZoneResultMap" type="org.sxkj.fw.area.vo.FwDefenseZoneVO">
        <result column="id" property="id"/>
        <result column="zone_name" property="zoneName"/>
        <result column="zone_area" property="zoneArea"/>
@@ -18,8 +18,86 @@
        <result column="update_user" property="updateUser"/>
        <result column="update_time" property="updateTime"/>
        <result column="status" property="status"/>
        <result column="is_deleted" property="isDeleted"/>
    </resultMap>
    <resultMap id="fwAreaDivideResultMap" type="org.sxkj.fw.area.vo.FwAreaDivideVO">
        <result column="id" property="id"/>
        <result column="area_name" property="areaName"/>
        <result column="longitude" property="longitude"/>
        <result column="latitude" property="latitude"/>
        <result column="area_size" property="areaSize"/>
        <result column="geom" property="geom"/>
        <result column="area_type" property="areaType"/>
        <result column="trigger_condition" property="triggerCondition"/>
        <result column="response_mechanism" property="responseMechanism"/>
        <result column="control_level" property="controlLevel"/>
        <result column="police_station_id" property="policeStationId"/>
        <result column="device_ids" property="deviceIds"/>
        <result column="fly_date_start" property="flyDateStart"/>
        <result column="fly_date_end" property="flyDateEnd"/>
        <result column="area_code" property="areaCode"/>
        <result column="police_station_name" property="policeStationName"/>
        <result column="police_station_contact_person" property="policeStationContactPerson"/>
        <result column="police_station_contact_phone" property="policeStationContactPhone"/>
        <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"/>
    </resultMap>
    <select id="selectDefenseZoneExists" resultType="java.lang.Integer">
        select count(1)
        from ja_fw_defense_zone
        where is_deleted = 0
          and id = #{zoneId}
    </select>
    <select id="selectFwAreaDivideListByZoneId" resultMap="fwAreaDivideResultMap">
        select distinct
        ad.id,
        ad.area_name,
        ad.longitude,
        ad.latitude,
        ad.area_size,
        case
            when ad.geom is null then null
            when ST_SRID(ad.geom) is null or ST_SRID(ad.geom) = 0 then public.st_astext(ad.geom)
            else concat(public.st_astext(ST_SwapXY(ad.geom)), ' | ', ST_SRID(ad.geom))
        end as geom,
        ad.area_type,
        ad.trigger_condition,
        ad.response_mechanism,
        ad.control_level,
        ad.police_station_id,
        ad.device_ids,
        ad.fly_date_start,
        ad.fly_date_end,
        ad.area_code,
        ps.station_name as police_station_name,
        ps.contact_person as police_station_contact_person,
        ps.contact_phone as police_station_contact_phone,
        ad.create_user,
        ad.create_dept,
        ad.create_time,
        ad.update_user,
        ad.update_time,
        ad.status,
        ad.is_deleted
        from ja_fw_defense_zone dz
        join ja_fw_defense_scene ds on ds.is_deleted = 0
            and dz.is_deleted = 0
            and dz.id = #{zoneId}
            and dz.defense_scene_ids is not null
            and dz.defense_scene_ids != ''
            and ds.id = ANY(string_to_array(replace(dz.defense_scene_ids, ' ', ''), ',')::bigint[])
        join ja_fw_area_divide ad on ad.is_deleted = 0
            and ds.area_divide_ids is not null
            and ds.area_divide_ids != ''
            and ad.id = ANY(string_to_array(replace(ds.area_divide_ids, ' ', ''), ',')::bigint[])
        left join ja_fw_police_station ps on ps.id::VARCHAR = ad.police_station_id::VARCHAR and ps.is_deleted = 0
    </select>
    <select id="selectFwDefenseZonePage" resultMap="fwDefenseZoneResultMap">
@@ -30,7 +108,11 @@
        defense_scene_ids,
        area_divide_ids,
        device_ids,
        concat(ST_AsText(geom), ' | ', ST_SRID(geom)) as geom,
        case
            when geom is null then null
            when ST_SRID(geom) is null or ST_SRID(geom) = 0 then public.st_astext(geom)
            else concat(public.st_astext(ST_SwapXY(geom)), ' | ', ST_SRID(geom))
        end as geom,
        area_code,
        create_user,
        create_dept,
@@ -95,6 +177,32 @@
        </where>
    </select>
    <select id="selectFwDefenseZoneDetail" resultMap="fwDefenseZoneResultMap">
        select
        id,
        zone_name,
        zone_area,
        defense_scene_ids,
        area_divide_ids,
        device_ids,
        case
            when geom is null then null
            when ST_SRID(geom) is null or ST_SRID(geom) = 0 then public.st_astext(geom)
            else concat(public.st_astext(ST_SwapXY(geom)), ' | ', ST_SRID(geom))
        end as geom,
        area_code,
        create_user,
        create_dept,
        create_time,
        update_user,
        update_time,
        status,
        is_deleted
        from ja_fw_defense_zone
        where is_deleted = 0
          and id = #{id}
    </select>
    <select id="exportFwDefenseZone" resultType="org.sxkj.fw.area.excel.FwDefenseZoneExcel">
        SELECT
@@ -104,7 +212,7 @@
        defense_scene_ids,
        area_divide_ids,
        device_ids,
        concat(ST_AsText(geom), ' | ', ST_SRID(geom)) as geom,
        concat(public.st_astext(geom), ' | ', ST_SRID(geom)) as geom,
        area_code,
        create_user,
        create_dept,
@@ -142,12 +250,13 @@
            #{deviceIds},
            <choose>
                <when test="geom != null and geom != ''">
                    ST_SRID(
                        ST_GeomFromText(
                            trim(case when instr(#{geom}, '|') &gt; 0 then substring_index(#{geom}, '|', 1) else #{geom} end)
                        ),
                        case when instr(#{geom}, '|') &gt; 0 then cast(trim(substring_index(#{geom}, '|', -1)) as unsigned) else 4326 end
                    )
                    case
                        when instr(#{geom}, '|') &gt; 0 then ST_GeomFromText(
                            trim(substring_index(#{geom}, '|', 1)),
                            cast(trim(substring_index(#{geom}, '|', -1)) as unsigned)
                        )
                        else ST_GeomFromText(trim(#{geom}))
                    end
                </when>
                <otherwise>null</otherwise>
            </choose>,
@@ -157,8 +266,8 @@
            #{createTime},
            #{updateUser},
            #{updateTime},
            #{status},
            #{isDeleted}
        COALESCE(#{status}, '0'),
        COALESCE(#{isDeleted}, 0)
        )
    </insert>
@@ -171,12 +280,13 @@
            <if test="areaDivideIds != null">area_divide_ids = #{areaDivideIds},</if>
            <if test="deviceIds != null">device_ids = #{deviceIds},</if>
            <if test="geom != null and geom != ''">
                geom = ST_SRID(
                    ST_GeomFromText(
                        trim(case when instr(#{geom}, '|') &gt; 0 then substring_index(#{geom}, '|', 1) else #{geom} end)
                    ),
                    case when instr(#{geom}, '|') &gt; 0 then cast(trim(substring_index(#{geom}, '|', -1)) as unsigned) else 4326 end
                ),
                geom = case
                    when instr(#{geom}, '|') &gt; 0 then ST_GeomFromText(
                        trim(substring_index(#{geom}, '|', 1)),
                        cast(trim(substring_index(#{geom}, '|', -1)) as unsigned)
                    )
                    else ST_GeomFromText(trim(#{geom}))
                end,
            </if>
            <if test="areaCode != null">area_code = #{areaCode},</if>
            <if test="createUser != null">create_user = #{createUser},</if>