吉安感知网项目-后端
rain
2026-02-03 74b5d54c1cf5dc585a2fe135f4ce4dd2b374b4dd
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceMapper.xml
@@ -106,11 +106,37 @@
            is_deleted = 0
            <if test="isAreaSelect != null and isAreaSelect == 1">
                and (
                    <choose>
                        <when test="areaId != null">
                            exists (
                                select 1
                                from ja_fw_area_divide ad
                <choose>
                    <when test="areaIds != null and areaIds.size > 0">
                        exists (
                        select 1
                        from ja_fw_area_divide ad
                        where ad.is_deleted = 0
                        and ad.id in
                        <foreach collection="areaIds" item="areaIdItem" separator="," open="(" close=")">
                            #{areaIdItem}
                        </foreach>
                        and ad.device_ids is not null
                        and ad.device_ids != ''
                        and find_in_set(ja_fw_device.id, ad.device_ids)
                        )
                        or not exists (
                        select 1
                        from ja_fw_area_divide ad
                        where ad.is_deleted = 0
                        and ad.device_ids is not null
                        and ad.device_ids != ''
                        and find_in_set(ja_fw_device.id, ad.device_ids)
                        and ad.id not in
                        <foreach collection="areaIds" item="areaIdItem" separator="," open="(" close=")">
                            #{areaIdItem}
                        </foreach>
                        )
                    </when>
                    <when test="areaId != null">
                        exists (
                        select 1
                        from ja_fw_area_divide ad
                                where ad.is_deleted = 0
                                and ad.id = #{areaId}
                                and ad.device_ids is not null
@@ -156,6 +182,7 @@
        select * from ja_fw_device
        <where>
            is_deleted = 0
            and track_status = 1
            <if test="query.isAreaSelect != null and query.isAreaSelect == 1">
                and (
                    <choose>
@@ -249,9 +276,8 @@
                d.is_deleted = 0
                AND d.is_enabled = 1
                AND status != 3
                AND track_status = 1
            <if test="regionName != null and regionName != ''">
                and (d.final_outbound_area = #{regionName}
            <if test="regionCode != null and regionCode != ''">
                and (d.final_outbound_area_code like concat(#{regionCode}, '%')
                <!-- 或者设备是共享给当前部门的 -->
                <if test="currentDeptId != null and currentDeptId != '' ">
                    or d.id in (
@@ -281,9 +307,8 @@
                AND is_enabled = 1
                AND status != 3
                AND device_type = '3'
                AND track_status = 1
            <if test="regionName != null and regionName != ''">
                and (d.final_outbound_area = #{regionName}
            <if test="regionCode != null and regionCode != ''">
                and (d.final_outbound_area_code like concat(#{regionCode}, '%')
                <!-- 或者设备是共享给当前部门的 -->
                <if test="currentDeptId != null and currentDeptId != '' ">
                    or d.id in (
@@ -312,10 +337,18 @@
                blade_dict_biz b ON (a.device_type = b.dict_key AND b.code = 'deviceType' AND b.parent_id != 0)
        where a.is_deleted = 0
        <if test="deptList != null and deptList.size > 0">
            and a.create_dept in
            and ( a.create_dept in
            <foreach collection="deptList" item="deptId" open="(" separator="," close=")">
                #{deptId}
            </foreach>
            <!-- <if test="currentDeptId != null and currentDeptId != '' "> -->
            <!--     or a.id in ( -->
            <!--     SELECT device_id FROM ja_fw_device_per_share -->
            <!--     WHERE loan_to_dept_id = #{currentDeptId} -->
            <!--     AND is_deleted = 0 -->
            <!--     ) -->
            <!-- </if> -->
            )
        </if>
        group by a.device_type,b.dict_value
    </select>
@@ -331,18 +364,22 @@
            d.is_deleted = 0
            AND d.is_enabled = 1
            AND d.final_outbound_area IS NOT NULL
        <if test="effectiveRangeKmIsNotNull != null and effectiveRangeKmIsNotNull == 1">
            and d.effective_range_km is not null
            and d.effective_range_km > 0
        </if>
        <if test="effectiveRangeKmIsNotNull != null and effectiveRangeKmIsNotNull == 2">
            and (d.effective_range_km is null or d.effective_range_km = 0)
        </if>
        <if test="deptList != null and deptList.size > 0">
            and d.create_dept in
            and ( d.create_dept in
            <foreach collection="deptList" item="deptId" open="(" separator="," close=")">
                #{deptId}
            </foreach>
            <if test="currentDeptId != null and currentDeptId != '' ">
                or d.id in (
                SELECT device_id FROM ja_fw_device_per_share
                WHERE loan_to_dept_id = #{currentDeptId}
                AND is_deleted = 0
                )
            </if>
            )
        </if>
        GROUP BY
            d.final_outbound_area
@@ -378,11 +415,8 @@
             WHERE
                 d.is_deleted = 0
               and d.is_enabled = 1
               and effective_range_km is not null
               and effective_range_km > 0
                AND track_status = 1
                <if test="regionName != null and regionName != ''">
                    and (d.final_outbound_area = #{regionName}
                <if test="regionCode != null and regionCode != ''">
                    and (d.final_outbound_area_code like concat(#{regionCode},'%')
                    <!-- 或者设备是共享给当前部门的 -->
                    <if test="currentDeptId != null and currentDeptId != '' ">
                        or d.id in (
@@ -403,11 +437,8 @@
                 d.is_deleted = 0
               and d.is_enabled = 1
               AND device_att = '1'
               and effective_range_km is not null
               and effective_range_km > 0
               AND track_status = 1
                <if test="regionName != null and regionName != ''">
                and (d.final_outbound_area = #{regionName}
            <if test="regionCode != null and regionCode != ''">
                and (d.final_outbound_area_code like concat(#{regionCode},'%')
                <!-- 或者设备是共享给当前部门的 -->
                    <if test="currentDeptId != null and currentDeptId != '' ">
                        or d.id in (
@@ -427,11 +458,8 @@
             WHERE d.is_deleted = 0
               and d.is_enabled = 1
               AND device_att = '2'
               and effective_range_km is not null
               and effective_range_km > 0
               AND track_status = 1
            <if test="regionName != null and regionName != ''">
                and (d.final_outbound_area = #{regionName}
            <if test="regionCode != null and regionCode != ''">
                and (d.final_outbound_area_code like concat(#{regionCode},'%')
                <!-- 或者设备是共享给当前部门的 -->
                <if test="currentDeptId != null and currentDeptId != '' ">
                    or d.id in (
@@ -450,11 +478,8 @@
             WHERE d.is_deleted = 0
               and d.is_enabled = 1
               AND device_att = '3'
               and effective_range_km is not null
               and effective_range_km > 0
               AND track_status = 1
                <if test="regionName != null and regionName != ''">
                    and (d.final_outbound_area = #{regionName}
            <if test="regionCode != null and regionCode != ''">
                and (d.final_outbound_area_code like concat(#{regionCode},'%')
                    <!-- 或者设备是共享给当前部门的 -->
                    <if test="currentDeptId != null and currentDeptId != '' ">
                        or d.id in (
@@ -473,11 +498,8 @@
             WHERE d.is_deleted = 0
               and d.is_enabled = 1
               AND status in ('1', '2', '3' )
               and effective_range_km is not null
               and effective_range_km > 0
               AND track_status = 1
                <if test="regionName != null and regionName != ''">
                    and (d.final_outbound_area = #{regionName}
            <if test="regionCode != null and regionCode != ''">
                and (d.final_outbound_area_code like concat(#{regionCode},'%')
                    <!-- 或者设备是共享给当前部门的 -->
                    <if test="currentDeptId != null and currentDeptId != '' ">
                        or d.id in (
@@ -498,12 +520,9 @@
            ja_fw_device d
        <where>
            d.is_deleted = 0
--             and d.effective_range_km is not null
--             and d.effective_range_km > 0
            and d.track_status = 1
            and d.is_enabled = 1
            <if test="param2.regionName != null and param2.regionName != ''">
                and (d.final_outbound_area = #{param2.regionName}
            <if test="param2.regionCode != null and param2.regionCode != ''">
                and (d.final_outbound_area_code like concat(#{param2.regionCode},'%')
                <!-- 或者设备是共享给当前部门的 -->
                <if test="param2.currentDeptId != null and param2.currentDeptId != '' ">
                    or d.id in (
@@ -566,7 +585,8 @@
        update
            ja_fw_device
        set track_status = #{trackStatus},
            final_outbound_area = #{outTarget}
            final_outbound_area = #{outTarget},
            final_outbound_area_code = #{outTargetCode}
        where id = #{deviceId}
          and is_deleted = 0
    </update>
@@ -575,7 +595,7 @@
    <select id="selectNonDeptAreaDevices" resultType="org.sxkj.fw.device.vo.FwDeviceVO">
        SELECT
            d.*,
            t.out_target,
            d.final_outbound_area as outTarget,
            ps.id AS shareId,
            CASE
                WHEN ps.id IS NOT NULL THEN TRUE
@@ -595,4 +615,29 @@
          AND d.final_outbound_area != #{regionName}
    </select>
    <select id="getDeviceStatistics" resultType="org.sxkj.fw.cockpit.vo.DeviceStatisticsVO">
        SELECT
            d.final_outbound_area AS type,
            COUNT(*) AS count
        FROM
            ja_fw_device d
        WHERE
            d.is_deleted = 0
        AND d.is_enabled = 1
        AND d.final_outbound_area IS NOT NULL
        <if test="regionCode != null and regionCode != ''">
            and ( d.final_outbound_area_code like concat(#{regionCode},'%')
            <if test="currentDeptId != null and currentDeptId != '' ">
                or d.id in (
                SELECT device_id FROM ja_fw_device_per_share
                WHERE loan_to_dept_id = #{currentDeptId}
                AND is_deleted = 0
                )
            </if>
            )
        </if>
        GROUP BY
        d.final_outbound_area
    </select>
</mapper>