吉安感知网项目-后端
linwei
2026-01-29 ba12d5d8e844146c334223ef5939a51c8e5d76ca
反无-权限控制
16 files modified
615 ■■■■ changed files
drone-service/drone-fw/src/main/java/org/sxkj/fw/cockpit/service/impl/CockpitServiceImpl.java 30 ●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/controller/FwDeviceController.java 11 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/dto/FwDeviceDTO.java 3 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceMapper.java 13 ●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceMapper.xml 327 ●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/service/IFwDeviceService.java 10 ●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/service/impl/FwDeviceServiceImpl.java 30 ●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/vo/FwDeviceVO.java 6 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/record/dto/FwDroneAlarmRecordDTO.java 3 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/record/dto/FwDroneFlightRecordDTO.java 3 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/record/mapper/FwDroneAlarmRecordMapper.java 2 ●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/record/mapper/FwDroneAlarmRecordMapper.xml 89 ●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/record/mapper/FwDroneFlightRecordMapper.xml 56 ●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/record/service/IFwDroneAlarmRecordService.java 2 ●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/record/service/impl/FwDroneAlarmRecordServiceImpl.java 16 ●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/record/service/impl/FwDroneFlightRecordServiceImpl.java 14 ●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/cockpit/service/impl/CockpitServiceImpl.java
@@ -18,7 +18,10 @@
import org.sxkj.fw.record.entity.FwDroneAlarmRecordEntity;
import org.sxkj.fw.record.service.IFwDroneAlarmRecordService;
import org.sxkj.fw.record.vo.FwDroneAlarmRecordVO;
import org.sxkj.system.cache.RegionCache;
import org.sxkj.system.cache.SysCache;
import org.sxkj.system.entity.Dept;
import org.sxkj.system.entity.Region;
import javax.annotation.Resource;
import java.util.List;
@@ -44,16 +47,24 @@
    @Override
    public IPage<CockpitFwDeviceVO> selectCockpitDevicePage(IPage<CockpitFwDeviceVO> page, FwDeviceDTO fwDevice) {
        List<Long> deptList = SysCache.getDeptChildIds(Long.valueOf(AuthUtil.getDeptId()));
        fwDevice.setDeptList(deptList);
        // List<Long> deptList = SysCache.getDeptChildIds(Long.valueOf(AuthUtil.getDeptId()));
        // fwDevice.setDeptList(deptList);
        // fwDevice.setCurrentDeptId(AuthUtil.getDeptId());
        Dept dept = SysCache.getDept(Long.valueOf(AuthUtil.getDeptId()));
        Region byCode = RegionCache.getByCode(dept.getAreaCode());
        String regionName = byCode.getName();
        fwDevice.setRegionName(regionName);
        fwDevice.setCurrentDeptId(AuthUtil.getDeptId());
        return fwDeviceService.selectCockpitDevicePage(page, fwDevice);
    }
    @Override
    public List<DeviceStatisticsVO> statisticalDeviceType() {
        List<Long> deptList = SysCache.getDeptChildIds(Long.valueOf(AuthUtil.getDeptId()));
        return fwDeviceService.statisticalDeviceType(deptList,AuthUtil.getDeptId());
        // List<Long> deptList = SysCache.getDeptChildIds(Long.valueOf(AuthUtil.getDeptId()));
        Dept dept = SysCache.getDept(Long.valueOf(AuthUtil.getDeptId()));
        Region byCode = RegionCache.getByCode(dept.getAreaCode());
        String regionName = byCode.getName();
        return fwDeviceService.statisticalDeviceType(regionName, AuthUtil.getDeptId());
    }
    @Override
@@ -97,11 +108,14 @@
    @Override
    public AlarmStatisticsVO statisticsAlarmsAndDeviceRecords() {
        List<Long> deptList = SysCache.getDeptChildIds(Long.valueOf(AuthUtil.getDeptId()));
         // 设备统计
        AlarmStatisticsVO alarmStatisticsVO = fwDeviceService.statisticalDeviceAtt(deptList,AuthUtil.getDeptId());
        // List<Long> deptList = SysCache.getDeptChildIds(Long.valueOf(AuthUtil.getDeptId()));
        Dept dept = SysCache.getDept(Long.valueOf(AuthUtil.getDeptId()));
        Region byCode = RegionCache.getByCode(dept.getAreaCode());
        String regionName = byCode.getName();
        // 设备统计
        AlarmStatisticsVO alarmStatisticsVO = fwDeviceService.statisticalDeviceAtt(regionName, AuthUtil.getDeptId());
        // 告警统计
        AlarmStatisticsVO alarmStatistics = fwDroneAlarmRecordService.alarmTypeStatistics(deptList,AuthUtil.getDeptId());
        AlarmStatisticsVO alarmStatistics = fwDroneAlarmRecordService.alarmTypeStatistics(regionName, AuthUtil.getDeptId());
        alarmStatisticsVO.setHistoryAlarmCount(alarmStatistics.getHistoryAlarmCount());
        alarmStatisticsVO.setRealTimeAlarmCount(alarmStatistics.getRealTimeAlarmCount());
        return alarmStatisticsVO;
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/controller/FwDeviceController.java
@@ -184,6 +184,17 @@
    }
    /**
     * 查询非本部门区域的设备
     * @return 设备列表
     */
    @GetMapping("/nonDeptAreaDevices")
    @ApiOperationSupport(order = 9)
    @ApiOperation(value = "查询非本部门区域的设备", notes = "查询不在当前部门及其子部门区域内的设备")
    public R<List<FwDeviceVO>> getNonDeptAreaDevices() {
        return R.data(fwDeviceService.getNonDeptAreaDevices());
    }
    /**
     * 设备区域绑定校验
     */
    @GetMapping("/checkAreaBind")
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/dto/FwDeviceDTO.java
@@ -180,5 +180,8 @@
     */
    @ApiModelProperty(value = "删除标志(0存在 1删除)")
    private Integer isDeleted;
    // setRegionName
    @ApiModelProperty(value = "区域名称")
    private String regionName;
}
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceMapper.java
@@ -28,6 +28,7 @@
import org.sxkj.fw.device.entity.FwDeviceEntity;
import org.sxkj.fw.device.excel.FwDeviceExcel;
import org.sxkj.fw.device.vo.CockpitFwDeviceVO;
import org.sxkj.fw.device.vo.FwDeviceVO;
import java.util.List;
@@ -78,7 +79,7 @@
     * 设备统计 - 驾驶舱使用
     * @return 统计数据
     */
    List<DeviceStatisticsVO> statisticalDeviceType(List<Long> deptList, String currentDeptId);
    List<DeviceStatisticsVO> statisticalDeviceType(String regionName, String currentDeptId);
    /**
     * 设备统计 - 按类型统计
@@ -102,7 +103,7 @@
     * 告警统计
     * @return
     */
    AlarmStatisticsVO statisticalDeviceAtt(List<Long> deptList, String currentDeptId);
    AlarmStatisticsVO statisticalDeviceAtt(String regionName, String currentDeptId);
    /**
     * 获取设备列表
@@ -120,4 +121,12 @@
     * @return 影响行数
     */
    int updateTrackStatusByDeviceId(@Param("deviceId") Long deviceId, @Param("trackStatus") Integer trackStatus);
    /**
     * 查询非本部门区域的设备
     * @param regionName 部门名称
     * @param currentDeptId 当前用户部门ID
     * @return 设备列表
     */
    List<FwDeviceVO> selectNonDeptAreaDevices(@Param("regionName") String regionName, @Param("currentDeptId") String currentDeptId);
}
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/mapper/FwDeviceMapper.xml
@@ -244,20 +244,33 @@
            END AS
                split_device_type
            FROM
                ja_fw_device
                ja_fw_device d
            LEFT JOIN (
                SELECT
                    device_id,
                    out_target,
                    ROW_NUMBER() OVER (
                    PARTITION BY
                    device_id
                    ORDER BY
                    create_time DESC
                    ) AS rn
                FROM
                    ja_fw_device_track
                WHERE
                    out_target IS NOT NULL
                ) t ON d.id = t.device_id AND t.rn = 1
            WHERE
                is_deleted = 0
                d.is_deleted = 0
            AND status != 3
            AND track_status = 1
            AND effective_range_km is not null
            AND effective_range_km > 0
            <if test="deptList != null and deptList.size > 0">
                and (create_dept in
                <foreach collection="deptList" item="deptId" open="(" separator="," close=")">
                    #{deptId}
                </foreach>
            <if test="regionName != null and regionName != ''">
                and (t.out_target = #{regionName}
                <!-- 或者设备是共享给当前部门的 -->
                <if test="currentDeptId != null and currentDeptId != '' ">
                    or id in (
                    or d.id in (
                    SELECT device_id FROM ja_fw_device_per_share
                    WHERE loan_to_dept_id = #{currentDeptId}
                    AND is_deleted = 0
@@ -278,21 +291,34 @@
            END AS
                split_device_type
            FROM
                ja_fw_device
                ja_fw_device d
            LEFT JOIN (
                SELECT
                    device_id,
                    out_target,
                    ROW_NUMBER() OVER (
                    PARTITION BY
                    device_id
                    ORDER BY
                    create_time DESC
                ) AS rn
            FROM
                ja_fw_device_track
            WHERE
                is_deleted = 0
                out_target IS NOT NULL
            ) t ON d.id = t.device_id AND t.rn = 1
            WHERE
                d.is_deleted = 0
            AND status != 3
            AND device_type = '3'
            AND track_status = 1
            AND effective_range_km is not null
            AND effective_range_km > 0
            <if test="deptList != null and deptList.size > 0">
                and (create_dept in
                <foreach collection="deptList" item="deptId" open="(" separator="," close=")">
                    #{deptId}
                </foreach>
            <if test="regionName != null and regionName != ''">
                and (t.out_target = #{regionName}
                <!-- 或者设备是共享给当前部门的 -->
                <if test="currentDeptId != null and currentDeptId != '' ">
                    or id in (
                    or d.id in (
                    SELECT device_id FROM ja_fw_device_per_share
                    WHERE loan_to_dept_id = #{currentDeptId}
                    AND is_deleted = 0
@@ -395,21 +421,33 @@
            (SELECT
                 COUNT(*)
             FROM
                 ja_fw_device
                 ja_fw_device d
            LEFT JOIN (
            SELECT
                device_id,
                out_target,
                ROW_NUMBER() OVER (
                PARTITION BY
                device_id
                ORDER BY
                create_time DESC
                ) AS rn
            FROM
                ja_fw_device_track
            WHERE
            out_target IS NOT NULL
            ) t
                ON d.id = t.device_id AND t.rn = 1
             WHERE
                 is_deleted = 0
               and
                 effective_range_km is not null
               and
                 effective_range_km > 0
                <if test="deptList != null and deptList.size > 0">
                    and (create_dept in
                    <foreach collection="deptList" item="deptId" open="(" separator="," close=")">
                        #{deptId}
                    </foreach>
                 d.is_deleted = 0
               and effective_range_km is not null
               and effective_range_km > 0
                AND track_status = 1
                <if test="regionName != null and regionName != ''">
                    and (t.out_target = #{regionName}
                    <!-- 或者设备是共享给当前部门的 -->
                    <if test="currentDeptId != null and currentDeptId != '' ">
                        or id in (
                        or d.id in (
                        SELECT device_id FROM ja_fw_device_per_share
                        WHERE loan_to_dept_id = #{currentDeptId}
                        AND is_deleted = 0
@@ -422,23 +460,34 @@
            (SELECT
                 COUNT(*)
             FROM
                 ja_fw_device
                 ja_fw_device d
            LEFT JOIN (
                SELECT
                    device_id,
                    out_target,
                    ROW_NUMBER() OVER (
                    PARTITION BY
                    device_id
                    ORDER BY
                    create_time DESC
                    ) AS rn
                FROM
                    ja_fw_device_track
                WHERE
                    out_target IS NOT NULL
                ) t
                ON d.id = t.device_id AND t.rn = 1
             WHERE
                 is_deleted = 0
               AND
                 device_att = '1'
               and
                 effective_range_km is not null
               and
                 effective_range_km > 0
                <if test="deptList != null and deptList.size > 0">
                    and (create_dept in
                    <foreach collection="deptList" item="deptId" open="(" separator="," close=")">
                        #{deptId}
                    </foreach>
                    <!-- 或者设备是共享给当前部门的 -->
                 d.is_deleted = 0
               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 (t.out_target = #{regionName}
                <!-- 或者设备是共享给当前部门的 -->
                    <if test="currentDeptId != null and currentDeptId != '' ">
                        or id in (
                        or d.id in (
                        SELECT device_id FROM ja_fw_device_per_share
                        WHERE loan_to_dept_id = #{currentDeptId}
                        AND is_deleted = 0
@@ -451,43 +500,71 @@
            (SELECT
                 COUNT(*)
             FROM
                 ja_fw_device
             WHERE is_deleted = 0
                 ja_fw_device d
            LEFT JOIN (
                SELECT
                    device_id,
                    out_target,
                    ROW_NUMBER() OVER (
                    PARTITION BY
                    device_id
                    ORDER BY
                    create_time DESC
                    ) AS rn
                FROM
                    ja_fw_device_track
                WHERE
                    out_target IS NOT NULL
                ) t
                ON d.id = t.device_id AND t.rn = 1
             WHERE d.is_deleted = 0
               AND device_att = '2'
               and effective_range_km is not null
               and effective_range_km > 0
                <if test="deptList != null and deptList.size > 0">
                    and (create_dept in
                    <foreach collection="deptList" item="deptId" open="(" separator="," close=")">
                        #{deptId}
                    </foreach>
                    <!-- 或者设备是共享给当前部门的 -->
                    <if test="currentDeptId != null and currentDeptId != '' ">
                        or id in (
                        SELECT device_id FROM ja_fw_device_per_share
                        WHERE loan_to_dept_id = #{currentDeptId}
                        AND is_deleted = 0
                        )
                    </if>
               AND track_status = 1
            <if test="regionName != null and regionName != ''">
                and (t.out_target = #{regionName}
                <!-- 或者设备是共享给当前部门的 -->
                <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>
             ) AS opticalCount,
            -- 雷达设备数量
            (SELECT
                 COUNT(*)
             FROM ja_fw_device
             WHERE is_deleted = 0
             FROM ja_fw_device d
            LEFT JOIN (
            SELECT
                device_id,
                out_target,
                ROW_NUMBER() OVER (
                PARTITION BY
                device_id
                ORDER BY
                create_time DESC
                ) AS rn
            FROM
                ja_fw_device_track
            WHERE
            out_target IS NOT NULL
            ) t
            ON d.id = t.device_id AND t.rn = 1
             WHERE d.is_deleted = 0
               AND device_att = '3'
               and effective_range_km is not null
               and effective_range_km > 0
                <if test="deptList != null and deptList.size > 0">
                    and (create_dept in
                    <foreach collection="deptList" item="deptId" open="(" separator="," close=")">
                        #{deptId}
                    </foreach>
               AND track_status = 1
                <if test="regionName != null and regionName != ''">
                    and (t.out_target = #{regionName}
                    <!-- 或者设备是共享给当前部门的 -->
                    <if test="currentDeptId != null and currentDeptId != '' ">
                        or id in (
                        or d.id in (
                        SELECT device_id FROM ja_fw_device_per_share
                        WHERE loan_to_dept_id = #{currentDeptId}
                        AND is_deleted = 0
@@ -499,19 +576,33 @@
            -- 设备告警
            (SELECT
                 COUNT(*)
             FROM ja_fw_device
             WHERE is_deleted = 0
             FROM ja_fw_device  d
            LEFT JOIN (
                SELECT
                    device_id,
                    out_target,
                    ROW_NUMBER() OVER (
                    PARTITION BY
                    device_id
                    ORDER BY
                    create_time DESC
                    ) AS rn
                FROM
                    ja_fw_device_track
                WHERE
                    out_target IS NOT NULL
                ) t
                ON d.id = t.device_id AND t.rn = 1
             WHERE d.is_deleted = 0
               AND status in ('1', '2', '3' )
               and effective_range_km is not null
               and effective_range_km > 0
                <if test="deptList != null and deptList.size > 0">
                    and (create_dept in
                    <foreach collection="deptList" item="deptId" open="(" separator="," close=")">
                        #{deptId}
                    </foreach>
               AND track_status = 1
                <if test="regionName != null and regionName != ''">
                    and (t.out_target = #{regionName}
                    <!-- 或者设备是共享给当前部门的 -->
                    <if test="currentDeptId != null and currentDeptId != '' ">
                        or id in (
                        or d.id in (
                        SELECT device_id FROM ja_fw_device_per_share
                        WHERE loan_to_dept_id = #{currentDeptId}
                        AND is_deleted = 0
@@ -524,29 +615,42 @@
    <select id="selectCockpitDevicePage" resultType="org.sxkj.fw.device.vo.CockpitFwDeviceVO">
        select
            d.*,
            fts.longitude,
            fts.latitude
            d.*
        from
            ja_fw_device d
        left join
            (
                SELECT
                    device_id,
                    longitude,
                    latitude,
                    MAX(create_time) AS create_time
                FROM
                    ja_fw_task_schedule
                WHERE
                    is_deleted = 0
                GROUP BY
                    device_id
            ) fts ON fts.device_id = d.id
        LEFT JOIN (
            SELECT
                device_id,
                out_target,
                ROW_NUMBER() OVER (
                PARTITION BY
                device_id
                ORDER BY
                create_time DESC
                ) AS rn
            FROM
                ja_fw_device_track
            WHERE
                out_target IS NOT NULL
            ) t
            ON d.id = t.device_id AND t.rn = 1
        <where>
            d.is_deleted = 0
            and d.effective_range_km is not null
            and d.effective_range_km > 0
            and d.track_status = 1
            <if test="param2.regionName != null and param2.regionName != ''">
                and (t.out_target = #{param2.regionName}
                <!-- 或者设备是共享给当前部门的 -->
                <if test="param2.currentDeptId != null and param2.currentDeptId != '' ">
                    or d.id in (
                    SELECT device_id FROM ja_fw_device_per_share
                    WHERE loan_to_dept_id = #{param2.currentDeptId}
                    AND is_deleted = 0
                    )
                </if>
                )
            </if>
            <if test="param2.id != null and param2.id != ''">
                and d.id = #{param2.id}
            </if>
@@ -602,4 +706,45 @@
          and is_deleted = 0
    </update>
    <!-- 查询非本部门区域的设备 -->
    <select id="selectNonDeptAreaDevices" resultType="org.sxkj.fw.device.vo.FwDeviceVO">
        SELECT
            d.*,
            t.out_target,
            CASE
                WHEN EXISTS (
                    SELECT 1
                    FROM ja_fw_device_per_share ps
                    WHERE ps.device_id = d.id
                    AND ps.loan_to_dept_id = #{currentDeptId}
                    AND ps.is_deleted = 0
                ) THEN TRUE
                ELSE FALSE
            END AS isShared
        FROM
            ja_fw_device d
            LEFT JOIN (
            SELECT
            device_id,
            out_target,
            ROW_NUMBER() OVER (
            PARTITION BY
            device_id
            ORDER BY
            create_time DESC
            ) AS rn
            FROM
            ja_fw_device_track
            WHERE
            out_target IS NOT NULL
            ) t ON d.id = t.device_id
            AND t.rn = 1
        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 t.out_target != #{regionName}
    </select>
</mapper>
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/service/IFwDeviceService.java
@@ -89,7 +89,7 @@
     * 设备类型统计
     * @return
     */
    List<DeviceStatisticsVO> statisticalDeviceType(List<Long> deptList, String currentDeptId);
    List<DeviceStatisticsVO> statisticalDeviceType(String regionName, String currentDeptId);
    /**
     * 设备统计 - 按类型统计
@@ -113,7 +113,7 @@
     * 设备报警统计
     * @return
     */
    AlarmStatisticsVO statisticalDeviceAtt(List<Long> deptList, String currentDeptId);
    AlarmStatisticsVO statisticalDeviceAtt(String regionName, String currentDeptId);
    /**
     * 驾驶舱获取设备列表
@@ -154,4 +154,10 @@
     * @return 是否更新成功
     */
    boolean updateTrackStatusByDeviceId(Long deviceId, Integer trackStatus);
    /**
     * 查询非本部门区域的设备
     * @return 设备列表
     */
    List<FwDeviceVO> getNonDeptAreaDevices();
}
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/service/impl/FwDeviceServiceImpl.java
@@ -39,7 +39,10 @@
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.utils.StringUtil;
import org.sxkj.system.cache.RegionCache;
import org.sxkj.system.cache.SysCache;
import org.sxkj.system.entity.Dept;
import org.sxkj.system.entity.Region;
import java.math.BigDecimal;
import java.util.List;
@@ -117,7 +120,8 @@
     */
    @Override
    public IPage<CockpitFwDeviceVO> selectCockpitDevicePage(IPage<CockpitFwDeviceVO> page, FwDeviceDTO fwDevice) {
        return page.setRecords(baseMapper.selectCockpitDevicePage(page, fwDevice));
        List<CockpitFwDeviceVO> cockpitFwDeviceVOS = baseMapper.selectCockpitDevicePage(page, fwDevice);
        return page.setRecords(cockpitFwDeviceVOS);
    }
    /**
@@ -126,8 +130,8 @@
     * @return
     */
    @Override
    public List<DeviceStatisticsVO> statisticalDeviceType(List<Long> deptList,String currentDeptId) {
        return baseMapper.statisticalDeviceType(deptList,currentDeptId);
    public List<DeviceStatisticsVO> statisticalDeviceType(String regionName, String currentDeptId) {
        return baseMapper.statisticalDeviceType(regionName, currentDeptId);
    }
    /**
@@ -162,8 +166,8 @@
     * @return
     */
    @Override
    public AlarmStatisticsVO statisticalDeviceAtt(List<Long> deptList, String currentDeptId) {
        return baseMapper.statisticalDeviceAtt(deptList, currentDeptId);
    public AlarmStatisticsVO statisticalDeviceAtt(String regionName, String currentDeptId) {
        return baseMapper.statisticalDeviceAtt(regionName, currentDeptId);
    }
    @Override
@@ -196,4 +200,20 @@
    public boolean updateTrackStatusByDeviceId(Long deviceId, Integer trackStatus) {
        return baseMapper.updateTrackStatusByDeviceId(deviceId, trackStatus) > 0;
    }
    /**
     * 查询非本部门区域的设备
     *
     * @return 设备列表
     */
    @Override
    public List<FwDeviceVO> getNonDeptAreaDevices() {
        // 1. 获取当前用户的部门ID
        String currentDeptId = AuthUtil.getDeptId();
        Dept dept = SysCache.getDept(Long.valueOf(currentDeptId));
        // 3. 查询不在这些部门区域内的设备
        Region byCode = RegionCache.getByCode(dept.getAreaCode());
        List<FwDeviceVO> deviceList = baseMapper.selectNonDeptAreaDevices(byCode.getName(), currentDeptId);
        return deviceList;
    }
}
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/vo/FwDeviceVO.java
@@ -196,4 +196,10 @@
     */
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;
    @ApiModelProperty(value = "出库去向")
    private String outTarget;
    @ApiModelProperty(value = "是否被共享给当前机构")
    private Boolean isShared;
}
drone-service/drone-fw/src/main/java/org/sxkj/fw/record/dto/FwDroneAlarmRecordDTO.java
@@ -159,4 +159,7 @@
    // 当前用户部门ID
    @ApiModelProperty(value = "当前用户部门ID",hidden = true)
    private String currentDeptId;
    // regionName
    @ApiModelProperty(value = "regionName",hidden = true)
    private String regionName;
}
drone-service/drone-fw/src/main/java/org/sxkj/fw/record/dto/FwDroneFlightRecordDTO.java
@@ -96,5 +96,8 @@
    @ApiModelProperty(value = "部门id",hidden = true)
    private String currentDeptId;
    // setRegionName
    @ApiModelProperty(value = "区域名称",hidden = true)
    private String regionName;
}
drone-service/drone-fw/src/main/java/org/sxkj/fw/record/mapper/FwDroneAlarmRecordMapper.java
@@ -58,5 +58,5 @@
     * 告警类型统计
     * @return
     */
    AlarmStatisticsVO alarmTypeStatistics(List<Long> deptList, String currentDeptId);
    AlarmStatisticsVO alarmTypeStatistics(String regionName, String currentDeptId);
}
drone-service/drone-fw/src/main/java/org/sxkj/fw/record/mapper/FwDroneAlarmRecordMapper.xml
@@ -38,6 +38,7 @@
            dar.*,
            d.device_name,
            d.status deviceStatus,
            t.out_target,
            /* 1=已关注,0=未关注 */
            EXISTS (
                SELECT
@@ -53,8 +54,38 @@
            ja_fw_drone_alarm_record dar
        left join
            ja_fw_device d on dar.device_id = d.id
        /* 关联出库去向表,看设备去了哪里  */
        LEFT JOIN (
            SELECT
                device_id,
                out_target,
                ROW_NUMBER() OVER (
                PARTITION BY
                device_id
                ORDER BY
                create_time DESC
            ) AS rn
            FROM
                ja_fw_device_track
            WHERE
                out_target IS NOT NULL
            ) t
            ON d.id = t.device_id AND t.rn = 1
        <where>
            dar.is_deleted = 0
                dar.is_deleted = 0
                and d.track_status = 1
            <if test="param2.regionName != null and param2.regionName != ''">
                and (t.out_target = #{param2.regionName}
                <!-- 或者设备是共享给当前部门的 -->
                <if test="param2.currentDeptId != null and param2.currentDeptId != '' ">
                    or dar.device_id in (
                    SELECT device_id FROM ja_fw_device_per_share
                    WHERE loan_to_dept_id = #{param2.currentDeptId}
                    AND is_deleted = 0
                    )
                </if>
                )
            </if>
            <if test="param2.deviceId != null and param2.deviceId != ''">
                and dar.device_id = #{param2.deviceId}
            </if>
@@ -117,21 +148,13 @@
            <if test="param2.areaName != null and param2.areaName != ''">
                and dar.area_name like CONCAT('%', #{param2.areaName}, '%')
            </if>
            <if test="param2.deptList != null and param2.deptList.size > 0">
                and (dar.create_dept in
                <foreach collection="param2.deptList" item="deptId" open="(" separator="," close=")">
                    #{deptId}
                </foreach>
                <!-- 或者设备是共享给当前部门的 -->
                <if test="param2.currentDeptId != null and param2.currentDeptId != '' ">
                    or dar.device_id in (
                    SELECT device_id FROM ja_fw_device_per_share
                    WHERE loan_to_dept_id = #{param2.currentDeptId}
                    AND is_deleted = 0
                    )
                </if>
                )
            </if>
            <!-- <if test="param2.deptList != null and param2.deptList.size > 0"> -->
            <!--     and (dar.create_dept in -->
            <!--     <foreach collection="param2.deptList" item="deptId" open="(" separator="," close=")"> -->
            <!--         #{deptId} -->
            <!--     </foreach> -->
            <!--     ) -->
            <!-- </if>  -->
        </where>
                order by favorited desc
    </select>
@@ -161,16 +184,34 @@
        COUNT(CASE WHEN alarm_type = 1 THEN 1 END) AS realTimeAlarmCount,
        COUNT(CASE WHEN alarm_type = 2 THEN 2 END) AS historyAlarmCount
        FROM
            ja_fw_drone_alarm_record
        WHERE is_deleted = 0
        <if test="deptList != null and deptList.size > 0">
            and (create_dept in
            <foreach collection="deptList" item="deptId" open="(" separator="," close=")">
                #{deptId}
            </foreach>
            ja_fw_drone_alarm_record  dar
        left join
            ja_fw_device d on dar.device_id = d.id
        /* 关联出库去向表,看设备去了哪里  */
        LEFT JOIN (
            SELECT
                device_id,
                out_target,
                ROW_NUMBER() OVER (
                PARTITION BY
                device_id
                ORDER BY
                create_time DESC
                ) AS rn
            FROM
                ja_fw_device_track
            WHERE
            out_target IS NOT NULL
            ) t
            ON d.id = t.device_id AND t.rn = 1
        WHERE dar.is_deleted = 0
            AND d.track_status = 1
            AND d.is_deleted = 0
        <if test="regionName != null and regionName != ''">
            and (t.out_target = #{regionName}
            <!-- 或者设备是共享给当前部门的 -->
            <if test="currentDeptId != null and currentDeptId != '' ">
                or device_id in (
                or dar.device_id in (
                SELECT device_id FROM ja_fw_device_per_share
                WHERE loan_to_dept_id = #{currentDeptId}
                AND is_deleted = 0
drone-service/drone-fw/src/main/java/org/sxkj/fw/record/mapper/FwDroneFlightRecordMapper.xml
@@ -27,8 +27,40 @@
            dfr.*
        from
            ja_fw_drone_flight_record dfr
        left join
            ja_fw_device d on dfr.device_id = d.id
        /* 关联出库去向表,看设备去了哪里  */
        LEFT JOIN (
            SELECT
                device_id,
                out_target,
                ROW_NUMBER() OVER (
                PARTITION BY
                device_id
                ORDER BY
                create_time DESC
                ) AS rn
            FROM
                ja_fw_device_track
            WHERE
                out_target IS NOT NULL
            ) t
            ON d.id = t.device_id AND t.rn = 1
        <where>
            dfr.is_deleted = 0
                dfr.is_deleted = 0
                and d.track_status = 1
            <if test="param2.regionName != null and param2.regionName != ''">
                and (t.out_target = #{param2.regionName}
                <!-- 或者设备是共享给当前部门的 -->
                <if test="param2.currentDeptId != null and param2.currentDeptId != '' ">
                    or dfr.device_id in (
                    SELECT device_id FROM ja_fw_device_per_share
                    WHERE loan_to_dept_id = #{param2.currentDeptId}
                    AND is_deleted = 0
                    )
                </if>
                )
            </if>
            <if test="param2.deviceId != null and param2.deviceId != ''">
                and dfr.device_id = #{param2.deviceId}
            </if>
@@ -59,21 +91,13 @@
            <if test="param2.areaName != null and param2.areaName != ''">
                and dfr.area_name like CONCAT('%', #{param2.areaName}, '%')
            </if>
            <if test="param2.deptList != null and param2.deptList.size > 0">
                and (dfr.create_dept in
                <foreach collection="param2.deptList" item="deptId" open="(" separator="," close=")">
                    #{deptId}
                </foreach>
                <!-- 或者设备是共享给当前部门的 -->
                <if test="param2.currentDeptId != null and param2.currentDeptId != '' ">
                    or dfr.device_id in (
                    SELECT device_id FROM ja_fw_device_per_share
                    WHERE loan_to_dept_id = #{param2.currentDeptId}
                    AND is_deleted = 0
                    )
                </if>
                )
            </if>
            <!-- <if test="param2.deptList != null and param2.deptList.size > 0"> -->
            <!--     and (dfr.create_dept in -->
            <!--     <foreach collection="param2.deptList" item="deptId" open="(" separator="," close=")"> -->
            <!--         #{deptId} -->
            <!--     </foreach> -->
            <!--     ) -->
            <!-- </if> -->
        </where>
    </select>
drone-service/drone-fw/src/main/java/org/sxkj/fw/record/service/IFwDroneAlarmRecordService.java
@@ -56,5 +56,5 @@
     *
     * @return
     */
    AlarmStatisticsVO alarmTypeStatistics(List<Long> deptList, String currentDeptId);
    AlarmStatisticsVO alarmTypeStatistics(String regionName, String currentDeptId);
}
drone-service/drone-fw/src/main/java/org/sxkj/fw/record/service/impl/FwDroneAlarmRecordServiceImpl.java
@@ -28,9 +28,12 @@
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.sxkj.system.cache.RegionCache;
import org.sxkj.system.cache.SysCache;
import org.sxkj.fw.device.mapper.FwDevicePerShareMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.sxkj.system.entity.Dept;
import org.sxkj.system.entity.Region;
import java.util.List;
@@ -50,9 +53,14 @@
    public IPage<FwDroneAlarmRecordVO> selectFwDroneAlarmRecordPage(IPage<FwDroneAlarmRecordVO> page, FwDroneAlarmRecordDTO fwDroneAlarmRecord) {
        // 设置当前用户ID
        fwDroneAlarmRecord.setCurrentUserId(AuthUtil.getUserId());
        Dept dept = SysCache.getDept(Long.valueOf(AuthUtil.getDeptId()));
        // 3. 查询不在这些部门区域内的设备
        Region byCode = RegionCache.getByCode(dept.getAreaCode());
        String regionName = byCode.getName();
        fwDroneAlarmRecord.setRegionName(regionName);
        // 获取当前部门及其子部门列表
        List<Long> deptList = SysCache.getDeptChildIds(Long.valueOf(AuthUtil.getDeptId()));
        fwDroneAlarmRecord.setDeptList(deptList);
        // List<Long> deptList = SysCache.getDeptChildIds(Long.valueOf(AuthUtil.getDeptId()));
        // fwDroneAlarmRecord.setDeptList(deptList);
        // 获取共享给当前部门的设备编号列表
        fwDroneAlarmRecord.setCurrentDeptId(AuthUtil.getDeptId());
        // 执行查询
@@ -72,7 +80,7 @@
     * @return
     */
    @Override
    public AlarmStatisticsVO alarmTypeStatistics(List<Long> deptList, String currentDeptId) {
        return baseMapper.alarmTypeStatistics(deptList, currentDeptId);
    public AlarmStatisticsVO alarmTypeStatistics(String regionName, String currentDeptId) {
        return baseMapper.alarmTypeStatistics(regionName, currentDeptId);
    }
}
drone-service/drone-fw/src/main/java/org/sxkj/fw/record/service/impl/FwDroneFlightRecordServiceImpl.java
@@ -28,7 +28,10 @@
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.sxkj.system.cache.RegionCache;
import org.sxkj.system.cache.SysCache;
import org.sxkj.system.entity.Dept;
import org.sxkj.system.entity.Region;
import java.util.List;
import java.util.Map;
@@ -45,9 +48,14 @@
    @Override
    public IPage<FwDroneFlightRecordVO> selectFwDroneFlightRecordPage(IPage<FwDroneFlightRecordVO> page, FwDroneFlightRecordDTO fwDroneFlightRecord) {
        List<Long> deptList = SysCache.getDeptChildIds(Long.valueOf(AuthUtil.getDeptId()));
        fwDroneFlightRecord.setDeptList(deptList);
        fwDroneFlightRecord.setCurrentDeptId(AuthUtil.getDeptId());
        // List<Long> deptList = SysCache.getDeptChildIds(Long.valueOf(AuthUtil.getDeptId()));
        // fwDroneFlightRecord.setDeptList(deptList);
        // fwDroneFlightRecord.setCurrentDeptId(AuthUtil.getDeptId());
        Dept dept = SysCache.getDept(Long.valueOf(AuthUtil.getDeptId()));
        // 3. 查询不在这些部门区域内的设备
        Region byCode = RegionCache.getByCode(dept.getAreaCode());
        String regionName = byCode.getName();
        fwDroneFlightRecord.setRegionName(regionName);
        return page.setRecords(baseMapper.selectFwDroneFlightRecordPage(page, fwDroneFlightRecord));
    }