下发字段更新为北斗号
This commit is contained in:
parent
cce43b7c4c
commit
7a5dc118f3
|
@ -1,6 +1,7 @@
|
||||||
package com.zjyr.beidouservice.mapper;
|
package com.zjyr.beidouservice.mapper;
|
||||||
|
|
||||||
import com.zjyr.beidouservice.pojo.dataobject.AlarmDeviceTaskDO;
|
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.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
@ -23,7 +24,7 @@ public interface AlarmDeviceTaskMapper {
|
||||||
* @param status status
|
* @param status status
|
||||||
* @return the alarm task list
|
* @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);
|
void batchUpdate(@Param("list") List<AlarmDeviceTaskDO> deviceTaskList);
|
||||||
|
|
||||||
|
|
|
@ -28,5 +28,8 @@ public class DeviceInfoDTO {
|
||||||
* 执行任务设备
|
* 执行任务设备
|
||||||
*/
|
*/
|
||||||
private List<Integer> deviceIds;
|
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(),
|
alarmTaskReqDTO.getSendTime(),
|
||||||
deviceInfo.getCityCodes(),
|
deviceInfo.getCityCodes(),
|
||||||
deviceInfo.getCountyCodes(),
|
deviceInfo.getCountyCodes(),
|
||||||
deviceInfo.getDeviceIds()
|
deviceInfo.getBeidouIds()
|
||||||
);
|
);
|
||||||
|
|
||||||
return MyResp.success("执行任务成功");
|
return MyResp.success("执行任务成功");
|
||||||
|
@ -304,6 +304,7 @@ public class AlarmTaskServiceImpl implements AlarmTaskService {
|
||||||
List<Integer> cityCodes = new ArrayList<>();
|
List<Integer> cityCodes = new ArrayList<>();
|
||||||
List<Integer> countyCodes = null;
|
List<Integer> countyCodes = null;
|
||||||
List<Integer> deviceIds = null;
|
List<Integer> deviceIds = null;
|
||||||
|
List<Integer> beidouIds = null;
|
||||||
|
|
||||||
//cityCode不为null,默认为杭州市-所属区域为杭州市所有区域
|
//cityCode不为null,默认为杭州市-所属区域为杭州市所有区域
|
||||||
if (Objects.nonNull(alarmTaskReqDTO.getCityCode())) {
|
if (Objects.nonNull(alarmTaskReqDTO.getCityCode())) {
|
||||||
|
@ -340,12 +341,17 @@ public class AlarmTaskServiceImpl implements AlarmTaskService {
|
||||||
//todo 根据deviceId获取区信息
|
//todo 根据deviceId获取区信息
|
||||||
deviceIds = Arrays.stream(alarmTaskReqDTO.getDeviceIds().split(",")).map(Integer::parseInt).toList();
|
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.setProvinceCode(province);
|
||||||
deviceInfo.setCityCodes(cityCodes);
|
deviceInfo.setCityCodes(cityCodes);
|
||||||
deviceInfo.setCountyCodes(countyCodes);
|
deviceInfo.setCountyCodes(countyCodes);
|
||||||
deviceInfo.setDeviceIds(deviceIds);
|
deviceInfo.setDeviceIds(deviceIds);
|
||||||
|
deviceInfo.setBeidouIds(beidouIds);
|
||||||
return deviceInfo;
|
return deviceInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.zjyr.beidouservice.task;
|
||||||
import com.zjyr.beidouservice.common.impl.TaskStatusName;
|
import com.zjyr.beidouservice.common.impl.TaskStatusName;
|
||||||
import com.zjyr.beidouservice.mapper.AlarmDeviceTaskMapper;
|
import com.zjyr.beidouservice.mapper.AlarmDeviceTaskMapper;
|
||||||
import com.zjyr.beidouservice.pojo.dataobject.AlarmDeviceTaskDO;
|
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.pojo.po.AlarmTaskResult;
|
||||||
import com.zjyr.beidouservice.service.DeviceService;
|
import com.zjyr.beidouservice.service.DeviceService;
|
||||||
import com.zjyr.beidouservice.service.SensorTaskService;
|
import com.zjyr.beidouservice.service.SensorTaskService;
|
||||||
|
@ -43,20 +44,20 @@ public class AlarmStatusTask {
|
||||||
@Scheduled(cron = "0 */1 * * * ?")
|
@Scheduled(cron = "0 */1 * * * ?")
|
||||||
public void updateAlarmStatusTask() {
|
public void updateAlarmStatusTask() {
|
||||||
//获取所有执行中的任务
|
//获取所有执行中的任务
|
||||||
List<AlarmDeviceTaskDO> deviceTaskList = alarmDeviceTaskMapper.getAlarmTaskByStatus(TaskStatusName.TASK_EXECUTING.getValue());
|
List<AlarmDeviceTaskDTO> deviceTaskList = alarmDeviceTaskMapper.getAlarmTaskByStatus(TaskStatusName.TASK_EXECUTING.getValue());
|
||||||
|
|
||||||
if (deviceTaskList.isEmpty()) {
|
if (deviceTaskList.isEmpty()) {
|
||||||
return;
|
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));
|
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();
|
Long taskId = entry.getKey();
|
||||||
List<AlarmDeviceTaskDO> deviceList = entry.getValue();
|
List<AlarmDeviceTaskDTO> deviceList = entry.getValue();
|
||||||
List<Integer> sensorIds = deviceList.stream().map(AlarmDeviceTaskDO::getDeviceId).collect(Collectors.toList());
|
List<Integer> sensorIds = deviceList.stream().map(AlarmDeviceTaskDTO::getBeidouId).collect(Collectors.toList());
|
||||||
//根据taskId获取sendTime
|
//根据taskId获取sendTime
|
||||||
Date sendTime = taskDOMap.get(taskId);
|
Date sendTime = taskDOMap.get(taskId);
|
||||||
List<AlarmTaskResult> sensorTaskResultList = sensorTaskService.getSensorTaskResult(taskId.intValue(), sendTime.getTime() + 5 * 60 * 1000, sensorIds);
|
List<AlarmTaskResult> sensorTaskResultList = sensorTaskService.getSensorTaskResult(taskId.intValue(), sendTime.getTime() + 5 * 60 * 1000, sensorIds);
|
||||||
|
@ -68,7 +69,8 @@ public class AlarmStatusTask {
|
||||||
));
|
));
|
||||||
|
|
||||||
deviceList.forEach(alarmDeviceTaskDO -> {
|
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)) {
|
if (!sensorResultMap.containsKey(uk)) {
|
||||||
return;
|
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="status" column="status" jdbcType="INTEGER"/>
|
||||||
<result property="reportTime" column="report_time" jdbcType="TIMESTAMP"/>
|
<result property="reportTime" column="report_time" jdbcType="TIMESTAMP"/>
|
||||||
</resultMap>
|
</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"
|
<insert id="addAlarmDevTaskInfoList" useGeneratedKeys="true" keyProperty="id"
|
||||||
|
@ -21,11 +24,11 @@
|
||||||
</foreach>
|
</foreach>
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
<select id="getAlarmTaskByStatus" resultType="com.zjyr.beidouservice.pojo.dataobject.AlarmDeviceTaskDO"
|
<select id="getAlarmTaskByStatus"
|
||||||
parameterType="java.lang.Integer" resultMap="alarm_device_task">
|
parameterType="java.lang.Integer" resultMap="alarm_device_task_dto">
|
||||||
select *
|
select adt.*, d.beidou_id
|
||||||
from alarm_device_task
|
from alarm_device_task adt join device d on adt.device_id = d.device_id
|
||||||
where status = #{status}
|
where adt.status = #{status}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<update id="batchUpdate">
|
<update id="batchUpdate">
|
||||||
|
|
Loading…
Reference in New Issue