diff --git a/src/main/java/com/zjyr/beidouservice/mapper/AlarmDeviceTaskMapper.java b/src/main/java/com/zjyr/beidouservice/mapper/AlarmDeviceTaskMapper.java index d660d96..39f4daa 100644 --- a/src/main/java/com/zjyr/beidouservice/mapper/AlarmDeviceTaskMapper.java +++ b/src/main/java/com/zjyr/beidouservice/mapper/AlarmDeviceTaskMapper.java @@ -1,6 +1,7 @@ package com.zjyr.beidouservice.mapper; import com.zjyr.beidouservice.pojo.dataobject.AlarmDeviceTaskDO; +import com.zjyr.beidouservice.pojo.dto.task.AlarmDeviceTaskDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -23,7 +24,7 @@ public interface AlarmDeviceTaskMapper { * @param status status * @return the alarm task list */ - List getAlarmTaskByStatus(@Param("status") Integer status); + List getAlarmTaskByStatus(@Param("status") Integer status); void batchUpdate(@Param("list") List deviceTaskList); diff --git a/src/main/java/com/zjyr/beidouservice/pojo/dto/DeviceInfoDTO.java b/src/main/java/com/zjyr/beidouservice/pojo/dto/DeviceInfoDTO.java index 4428bf4..96115e3 100644 --- a/src/main/java/com/zjyr/beidouservice/pojo/dto/DeviceInfoDTO.java +++ b/src/main/java/com/zjyr/beidouservice/pojo/dto/DeviceInfoDTO.java @@ -28,5 +28,8 @@ public class DeviceInfoDTO { * 执行任务设备 */ private List deviceIds; - + /** + * 北斗 id 列表 + */ + private List beidouIds; } diff --git a/src/main/java/com/zjyr/beidouservice/pojo/dto/task/AlarmDeviceTaskDTO.java b/src/main/java/com/zjyr/beidouservice/pojo/dto/task/AlarmDeviceTaskDTO.java new file mode 100644 index 0000000..1a5937d --- /dev/null +++ b/src/main/java/com/zjyr/beidouservice/pojo/dto/task/AlarmDeviceTaskDTO.java @@ -0,0 +1,14 @@ +package com.zjyr.beidouservice.pojo.dto.task; + +import com.zjyr.beidouservice.pojo.dataobject.AlarmDeviceTaskDO; +import lombok.Data; + + +@Data +public class AlarmDeviceTaskDTO extends AlarmDeviceTaskDO { + + /** + * 设备的北斗 id + */ + private Integer beidouId; +} diff --git a/src/main/java/com/zjyr/beidouservice/service/impl/AlarmTaskServiceImpl.java b/src/main/java/com/zjyr/beidouservice/service/impl/AlarmTaskServiceImpl.java index c716c74..34919a2 100644 --- a/src/main/java/com/zjyr/beidouservice/service/impl/AlarmTaskServiceImpl.java +++ b/src/main/java/com/zjyr/beidouservice/service/impl/AlarmTaskServiceImpl.java @@ -119,7 +119,7 @@ public class AlarmTaskServiceImpl implements AlarmTaskService { alarmTaskReqDTO.getSendTime(), deviceInfo.getCityCodes(), deviceInfo.getCountyCodes(), - deviceInfo.getDeviceIds() + deviceInfo.getBeidouIds() ); return MyResp.success("执行任务成功"); @@ -304,6 +304,7 @@ public class AlarmTaskServiceImpl implements AlarmTaskService { List cityCodes = new ArrayList<>(); List countyCodes = null; List deviceIds = null; + List beidouIds = null; //cityCode不为null,默认为杭州市-所属区域为杭州市所有区域 if (Objects.nonNull(alarmTaskReqDTO.getCityCode())) { @@ -340,12 +341,17 @@ public class AlarmTaskServiceImpl implements AlarmTaskService { //todo 根据deviceId获取区信息 deviceIds = Arrays.stream(alarmTaskReqDTO.getDeviceIds().split(",")).map(Integer::parseInt).toList(); } + if (deviceIds != null && !deviceIds.isEmpty()) { + List deviceDOList = deviceMapper.selectDeviceByDeviceIds(deviceIds); + beidouIds = deviceDOList.stream().map(DeviceDO::getBeidouId).collect(Collectors.toList()); + } //默认浙江省杭州市 deviceInfo.setProvinceCode(province); deviceInfo.setCityCodes(cityCodes); deviceInfo.setCountyCodes(countyCodes); deviceInfo.setDeviceIds(deviceIds); + deviceInfo.setBeidouIds(beidouIds); return deviceInfo; } diff --git a/src/main/java/com/zjyr/beidouservice/task/AlarmStatusTask.java b/src/main/java/com/zjyr/beidouservice/task/AlarmStatusTask.java index 0e41bd2..c115762 100644 --- a/src/main/java/com/zjyr/beidouservice/task/AlarmStatusTask.java +++ b/src/main/java/com/zjyr/beidouservice/task/AlarmStatusTask.java @@ -3,6 +3,7 @@ package com.zjyr.beidouservice.task; import com.zjyr.beidouservice.common.impl.TaskStatusName; import com.zjyr.beidouservice.mapper.AlarmDeviceTaskMapper; import com.zjyr.beidouservice.pojo.dataobject.AlarmDeviceTaskDO; +import com.zjyr.beidouservice.pojo.dto.task.AlarmDeviceTaskDTO; import com.zjyr.beidouservice.pojo.po.AlarmTaskResult; import com.zjyr.beidouservice.service.DeviceService; import com.zjyr.beidouservice.service.SensorTaskService; @@ -43,20 +44,20 @@ public class AlarmStatusTask { @Scheduled(cron = "0 */1 * * * ?") public void updateAlarmStatusTask() { //获取所有执行中的任务 - List deviceTaskList = alarmDeviceTaskMapper.getAlarmTaskByStatus(TaskStatusName.TASK_EXECUTING.getValue()); + List deviceTaskList = alarmDeviceTaskMapper.getAlarmTaskByStatus(TaskStatusName.TASK_EXECUTING.getValue()); if (deviceTaskList.isEmpty()) { return; } // 输出聚合结果 - Map> aggregationMap = deviceTaskList.stream().collect(Collectors.groupingBy(AlarmDeviceTaskDO::getTaskId)); + Map> aggregationMap = deviceTaskList.stream().collect(Collectors.groupingBy(AlarmDeviceTaskDTO::getTaskId)); Map taskDOMap = deviceTaskList.stream().collect(Collectors.toMap(AlarmDeviceTaskDO::getTaskId, AlarmDeviceTaskDO::getSendTime, (d1, d2) -> d1)); - for (Map.Entry> entry : aggregationMap.entrySet()) { + for (Map.Entry> entry : aggregationMap.entrySet()) { Long taskId = entry.getKey(); - List deviceList = entry.getValue(); - List sensorIds = deviceList.stream().map(AlarmDeviceTaskDO::getDeviceId).collect(Collectors.toList()); + List deviceList = entry.getValue(); + List sensorIds = deviceList.stream().map(AlarmDeviceTaskDTO::getBeidouId).collect(Collectors.toList()); //根据taskId获取sendTime Date sendTime = taskDOMap.get(taskId); List sensorTaskResultList = sensorTaskService.getSensorTaskResult(taskId.intValue(), sendTime.getTime() + 5 * 60 * 1000, sensorIds); @@ -68,7 +69,8 @@ public class AlarmStatusTask { )); deviceList.forEach(alarmDeviceTaskDO -> { - String uk = String.format("%s-%s-%s", alarmDeviceTaskDO.getTaskId(), alarmDeviceTaskDO.getDeviceId(), alarmDeviceTaskDO.getControlChannel()); + String uk = String.format("%s-%s-%s", alarmDeviceTaskDO.getTaskId(), alarmDeviceTaskDO.getBeidouId(), alarmDeviceTaskDO.getControlChannel()); + log.info("uk:[{}]", uk); if (!sensorResultMap.containsKey(uk)) { return; } @@ -78,9 +80,11 @@ public class AlarmStatusTask { }); } + List taskDOList = deviceTaskList.stream().map(s -> (AlarmDeviceTaskDO)s).toList(); + // 结果入库 - alarmDeviceTaskMapper.batchUpdate(deviceTaskList); + alarmDeviceTaskMapper.batchUpdate(taskDOList); // 刷新设备状态 - deviceService.refreshDeviceAlarmStatus(deviceTaskList); + deviceService.refreshDeviceAlarmStatus(taskDOList); } } diff --git a/src/main/resources/mappers/AlarmDevideTaskMapper.xml b/src/main/resources/mappers/AlarmDevideTaskMapper.xml index 9897e40..322ab21 100644 --- a/src/main/resources/mappers/AlarmDevideTaskMapper.xml +++ b/src/main/resources/mappers/AlarmDevideTaskMapper.xml @@ -10,6 +10,9 @@ + + + - + select adt.*, d.beidou_id + from alarm_device_task adt join device d on adt.device_id = d.device_id + where adt.status = #{status}