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)); }