下发字段更新为北斗号
This commit is contained in:
parent
cce43b7c4c
commit
7a5dc118f3
|
@ -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<AlarmDeviceTaskDO> getAlarmTaskByStatus(@Param("status") Integer status);
|
||||
List<AlarmDeviceTaskDTO> getAlarmTaskByStatus(@Param("status") Integer status);
|
||||
|
||||
void batchUpdate(@Param("list") List<AlarmDeviceTaskDO> deviceTaskList);
|
||||
|
||||
|
|
|
@ -28,5 +28,8 @@ public class DeviceInfoDTO {
|
|||
* 执行任务设备
|
||||
*/
|
||||
private List<Integer> deviceIds;
|
||||
|
||||
/**
|
||||
* 北斗 id 列表
|
||||
*/
|
||||
private List<Integer> beidouIds;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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<Integer> cityCodes = new ArrayList<>();
|
||||
List<Integer> countyCodes = null;
|
||||
List<Integer> deviceIds = null;
|
||||
List<Integer> 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<DeviceDO> 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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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<AlarmDeviceTaskDO> deviceTaskList = alarmDeviceTaskMapper.getAlarmTaskByStatus(TaskStatusName.TASK_EXECUTING.getValue());
|
||||
List<AlarmDeviceTaskDTO> deviceTaskList = alarmDeviceTaskMapper.getAlarmTaskByStatus(TaskStatusName.TASK_EXECUTING.getValue());
|
||||
|
||||
if (deviceTaskList.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 输出聚合结果
|
||||
Map<Long, List<AlarmDeviceTaskDO>> aggregationMap = deviceTaskList.stream().collect(Collectors.groupingBy(AlarmDeviceTaskDO::getTaskId));
|
||||
Map<Long, List<AlarmDeviceTaskDTO>> aggregationMap = deviceTaskList.stream().collect(Collectors.groupingBy(AlarmDeviceTaskDTO::getTaskId));
|
||||
Map<Long, Date> taskDOMap = deviceTaskList.stream().collect(Collectors.toMap(AlarmDeviceTaskDO::getTaskId, AlarmDeviceTaskDO::getSendTime, (d1, d2) -> d1));
|
||||
|
||||
for (Map.Entry<Long, List<AlarmDeviceTaskDO>> entry : aggregationMap.entrySet()) {
|
||||
for (Map.Entry<Long, List<AlarmDeviceTaskDTO>> entry : aggregationMap.entrySet()) {
|
||||
Long taskId = entry.getKey();
|
||||
List<AlarmDeviceTaskDO> deviceList = entry.getValue();
|
||||
List<Integer> sensorIds = deviceList.stream().map(AlarmDeviceTaskDO::getDeviceId).collect(Collectors.toList());
|
||||
List<AlarmDeviceTaskDTO> deviceList = entry.getValue();
|
||||
List<Integer> sensorIds = deviceList.stream().map(AlarmDeviceTaskDTO::getBeidouId).collect(Collectors.toList());
|
||||
//根据taskId获取sendTime
|
||||
Date sendTime = taskDOMap.get(taskId);
|
||||
List<AlarmTaskResult> 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<AlarmDeviceTaskDO> taskDOList = deviceTaskList.stream().map(s -> (AlarmDeviceTaskDO)s).toList();
|
||||
|
||||
// 结果入库
|
||||
alarmDeviceTaskMapper.batchUpdate(deviceTaskList);
|
||||
alarmDeviceTaskMapper.batchUpdate(taskDOList);
|
||||
// 刷新设备状态
|
||||
deviceService.refreshDeviceAlarmStatus(deviceTaskList);
|
||||
deviceService.refreshDeviceAlarmStatus(taskDOList);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,6 +10,9 @@
|
|||
<result property="status" column="status" jdbcType="INTEGER"/>
|
||||
<result property="reportTime" column="report_time" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
<resultMap id="alarm_device_task_dto" type="com.zjyr.beidouservice.pojo.dto.task.AlarmDeviceTaskDTO" extends="alarm_device_task">
|
||||
<result property="beidouId" column="beidou_id" jdbcType="INTEGER"/>
|
||||
</resultMap>
|
||||
|
||||
|
||||
<insert id="addAlarmDevTaskInfoList" useGeneratedKeys="true" keyProperty="id"
|
||||
|
@ -21,11 +24,11 @@
|
|||
</foreach>
|
||||
</insert>
|
||||
|
||||
<select id="getAlarmTaskByStatus" resultType="com.zjyr.beidouservice.pojo.dataobject.AlarmDeviceTaskDO"
|
||||
parameterType="java.lang.Integer" resultMap="alarm_device_task">
|
||||
select *
|
||||
from alarm_device_task
|
||||
where status = #{status}
|
||||
<select id="getAlarmTaskByStatus"
|
||||
parameterType="java.lang.Integer" resultMap="alarm_device_task_dto">
|
||||
select adt.*, d.beidou_id
|
||||
from alarm_device_task adt join device d on adt.device_id = d.device_id
|
||||
where adt.status = #{status}
|
||||
</select>
|
||||
|
||||
<update id="batchUpdate">
|
||||
|
|
Loading…
Reference in New Issue