查询任务及详情
This commit is contained in:
parent
a643cd1158
commit
e4fdfd279d
|
@ -2,6 +2,10 @@ package com.zjyr.beidouservice.controller;
|
||||||
|
|
||||||
import com.zjyr.beidouservice.pojo.MyResp;
|
import com.zjyr.beidouservice.pojo.MyResp;
|
||||||
|
|
||||||
|
import com.zjyr.beidouservice.pojo.dto.AlarmDeviceTaskListRespDTO;
|
||||||
|
import com.zjyr.beidouservice.pojo.dto.AlarmTaskListRespDTO;
|
||||||
|
import com.zjyr.beidouservice.pojo.dto.task.AlarmDeviceTaskListReqDTO;
|
||||||
|
import com.zjyr.beidouservice.pojo.dto.task.AlarmTaskListReqDTO;
|
||||||
import com.zjyr.beidouservice.pojo.dto.task.AlarmTaskReqDTO;
|
import com.zjyr.beidouservice.pojo.dto.task.AlarmTaskReqDTO;
|
||||||
import com.zjyr.beidouservice.service.AlarmTaskService;
|
import com.zjyr.beidouservice.service.AlarmTaskService;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
@ -33,5 +37,15 @@ public class DeviceTaskController {
|
||||||
return alarmTaskService.alarmTaskExec(alarmTaskReqDTO);
|
return alarmTaskService.alarmTaskExec(alarmTaskReqDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/alarm/task/list")
|
||||||
|
public MyResp<AlarmTaskListRespDTO> alarmTaskList(@RequestBody AlarmTaskListReqDTO alarmTaskReqDTO) {
|
||||||
|
return MyResp.success(alarmTaskService.alarmTaskList(alarmTaskReqDTO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/alarm/device/task/list")
|
||||||
|
public MyResp<AlarmDeviceTaskListRespDTO> alarmDeviceTaskList(@RequestBody AlarmDeviceTaskListReqDTO alarmDeviceTaskListReqDTO) {
|
||||||
|
return MyResp.success(alarmTaskService.alarmDeviceTaskList(alarmDeviceTaskListReqDTO));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,4 +26,6 @@ public interface AlarmDeviceTaskMapper {
|
||||||
List<AlarmDeviceTaskDO> getAlarmTaskByStatus(@Param("status") Integer status);
|
List<AlarmDeviceTaskDO> getAlarmTaskByStatus(@Param("status") Integer status);
|
||||||
|
|
||||||
void batchUpdate(@Param("list") List<AlarmDeviceTaskDO> deviceTaskList);
|
void batchUpdate(@Param("list") List<AlarmDeviceTaskDO> deviceTaskList);
|
||||||
|
|
||||||
|
List<AlarmDeviceTaskDO> selectAllByTaskIdStr(@Param("list") List<String> taskIdStrList);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
package com.zjyr.beidouservice.mapper;
|
package com.zjyr.beidouservice.mapper;
|
||||||
|
|
||||||
import com.zjyr.beidouservice.pojo.dataobject.AlarmTaskDO;
|
import com.zjyr.beidouservice.pojo.dataobject.AlarmTaskDO;
|
||||||
|
import com.zjyr.beidouservice.pojo.entry.SensorTask;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface AlarmTaskMapper {
|
public interface AlarmTaskMapper {
|
||||||
|
@ -12,4 +16,6 @@ public interface AlarmTaskMapper {
|
||||||
* @return int
|
* @return int
|
||||||
*/
|
*/
|
||||||
long addAlarmTask(AlarmTaskDO alarmTaskDO);
|
long addAlarmTask(AlarmTaskDO alarmTaskDO);
|
||||||
|
|
||||||
|
List<AlarmTaskDO> selectAllByTaskIdStr(@Param("list") List<String> taskIdStrList);
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ public interface DeviceMapper {
|
||||||
List<DeviceDO> selectDeviceByLoc(DeviceByLocationDTO deviceByLocationDTO);
|
List<DeviceDO> selectDeviceByLoc(DeviceByLocationDTO deviceByLocationDTO);
|
||||||
|
|
||||||
|
|
||||||
DeviceDO selectDeviceByDeviceId(@Param("deviceId") Long deviceId);
|
List<DeviceDO> selectDeviceByDeviceIds(@Param("ids") List<Integer> deviceIdList);
|
||||||
|
|
||||||
void batchUpdateDeviceAlarmStatus(@Param("ids") Set<Integer> alarmingDeviceIds, @Param("status") Integer code);
|
void batchUpdateDeviceAlarmStatus(@Param("ids") Set<Integer> alarmingDeviceIds, @Param("status") Integer code);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
package com.zjyr.beidouservice.pojo.dto;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.zjyr.beidouservice.pojo.dataobject.AlarmDeviceTaskDO;
|
||||||
|
import com.zjyr.beidouservice.pojo.vo.PageInfoVO;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class AlarmDeviceTaskListRespDTO {
|
||||||
|
|
||||||
|
private List<AlarmDeviceTaskDTO> deviceList;
|
||||||
|
|
||||||
|
private PageInfoVO pageInfo;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class AlarmDeviceTaskDTO {
|
||||||
|
|
||||||
|
private Long taskId;
|
||||||
|
|
||||||
|
private Integer deviceId;
|
||||||
|
|
||||||
|
private String deviceName;
|
||||||
|
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
private Date reportTime;
|
||||||
|
|
||||||
|
private Integer taskState;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 经度
|
||||||
|
*/
|
||||||
|
private Float latitude;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 纬度
|
||||||
|
*/
|
||||||
|
private Float longitude;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
package com.zjyr.beidouservice.pojo.dto;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.zjyr.beidouservice.pojo.vo.PageInfoVO;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class AlarmTaskListRespDTO {
|
||||||
|
|
||||||
|
private List<AlarmTaskRespDTO> taskList;
|
||||||
|
|
||||||
|
private PageInfoVO pageInfo;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
public static class AlarmTaskRespDTO {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
private String taskIdStr;
|
||||||
|
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
private Date recodeTime;
|
||||||
|
|
||||||
|
private Integer deviceNum;
|
||||||
|
|
||||||
|
private Integer execNormalNum;
|
||||||
|
|
||||||
|
private Integer execAbnormalNum;
|
||||||
|
|
||||||
|
private Double respRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -13,5 +13,5 @@ public class DeviceSearchDTO {
|
||||||
/**
|
/**
|
||||||
* 设备id
|
* 设备id
|
||||||
*/
|
*/
|
||||||
private Long deviceId;
|
private Integer deviceId;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
package com.zjyr.beidouservice.pojo.dto;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Builder;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
@Data
|
|
||||||
@Builder
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
public class DeviceTaskContentDTO {
|
|
||||||
private Long deviceId;
|
|
||||||
|
|
||||||
private String deviceName;
|
|
||||||
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
|
||||||
private Date respTime;
|
|
||||||
|
|
||||||
private Integer execState;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
package com.zjyr.beidouservice.pojo.dto;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Builder;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Data
|
|
||||||
@Builder
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
public class DeviceTaskRespDTO {
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
private String taskId;
|
|
||||||
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
|
||||||
private Date recodeTime;
|
|
||||||
|
|
||||||
private Integer deviceNum;
|
|
||||||
|
|
||||||
private Integer execNormalNum;
|
|
||||||
|
|
||||||
private Integer execAbnormalNum;
|
|
||||||
|
|
||||||
private Double respRate;
|
|
||||||
|
|
||||||
private List<DeviceTaskContentDTO> data;
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
package com.zjyr.beidouservice.pojo.dto.task;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class AlarmDeviceTaskListReqDTO {
|
||||||
|
|
||||||
|
private Integer pageSize;
|
||||||
|
|
||||||
|
private Integer pageNum;
|
||||||
|
|
||||||
|
private List<String> taskIdStrList;
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package com.zjyr.beidouservice.pojo.dto.task;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class AlarmTaskListReqDTO {
|
||||||
|
|
||||||
|
private Integer pageSize;
|
||||||
|
|
||||||
|
private Integer pageNum;
|
||||||
|
|
||||||
|
private List<String> taskIdStrList;
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
package com.zjyr.beidouservice.pojo.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class PageInfoVO {
|
||||||
|
|
||||||
|
private Long total;
|
||||||
|
|
||||||
|
private Integer pageSize;
|
||||||
|
|
||||||
|
private Integer pageNum;
|
||||||
|
|
||||||
|
public PageInfoVO(Long total, Integer pageSize, Integer pageNum) {
|
||||||
|
this.total = total;
|
||||||
|
this.pageSize = pageSize;
|
||||||
|
this.pageNum = pageNum;
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,6 +3,10 @@ package com.zjyr.beidouservice.service;
|
||||||
|
|
||||||
import com.zjyr.beidouservice.pojo.MyResp;
|
import com.zjyr.beidouservice.pojo.MyResp;
|
||||||
|
|
||||||
|
import com.zjyr.beidouservice.pojo.dto.AlarmDeviceTaskListRespDTO;
|
||||||
|
import com.zjyr.beidouservice.pojo.dto.AlarmTaskListRespDTO;
|
||||||
|
import com.zjyr.beidouservice.pojo.dto.task.AlarmDeviceTaskListReqDTO;
|
||||||
|
import com.zjyr.beidouservice.pojo.dto.task.AlarmTaskListReqDTO;
|
||||||
import com.zjyr.beidouservice.pojo.dto.task.AlarmTaskReqDTO;
|
import com.zjyr.beidouservice.pojo.dto.task.AlarmTaskReqDTO;
|
||||||
|
|
||||||
public interface AlarmTaskService {
|
public interface AlarmTaskService {
|
||||||
|
@ -14,6 +18,7 @@ public interface AlarmTaskService {
|
||||||
MyResp alarmTaskExec(AlarmTaskReqDTO alarmTaskReqDTO);
|
MyResp alarmTaskExec(AlarmTaskReqDTO alarmTaskReqDTO);
|
||||||
|
|
||||||
|
|
||||||
|
AlarmTaskListRespDTO alarmTaskList(AlarmTaskListReqDTO alarmTaskReqDTO);
|
||||||
|
|
||||||
|
AlarmDeviceTaskListRespDTO alarmDeviceTaskList(AlarmDeviceTaskListReqDTO alarmDeviceTaskListReqDTO);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package com.zjyr.beidouservice.service.impl;
|
package com.zjyr.beidouservice.service.impl;
|
||||||
|
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
import com.zjyr.beidouservice.common.impl.AlarmControlTypeName;
|
import com.zjyr.beidouservice.common.impl.AlarmControlTypeName;
|
||||||
import com.zjyr.beidouservice.common.impl.AlarmModeName;
|
import com.zjyr.beidouservice.common.impl.AlarmModeName;
|
||||||
import com.zjyr.beidouservice.common.impl.AlarmTypeName;
|
import com.zjyr.beidouservice.common.impl.AlarmTypeName;
|
||||||
|
@ -19,9 +21,14 @@ import com.zjyr.beidouservice.pojo.dataobject.AlarmTaskDO;
|
||||||
import com.zjyr.beidouservice.pojo.dataobject.DeviceDO;
|
import com.zjyr.beidouservice.pojo.dataobject.DeviceDO;
|
||||||
import com.zjyr.beidouservice.pojo.dataobject.LocCountyDO;
|
import com.zjyr.beidouservice.pojo.dataobject.LocCountyDO;
|
||||||
import com.zjyr.beidouservice.pojo.dataobject.SystemConfigDO;
|
import com.zjyr.beidouservice.pojo.dataobject.SystemConfigDO;
|
||||||
|
import com.zjyr.beidouservice.pojo.dto.AlarmDeviceTaskListRespDTO;
|
||||||
|
import com.zjyr.beidouservice.pojo.dto.AlarmTaskListRespDTO;
|
||||||
import com.zjyr.beidouservice.pojo.dto.DeviceByLocationDTO;
|
import com.zjyr.beidouservice.pojo.dto.DeviceByLocationDTO;
|
||||||
import com.zjyr.beidouservice.pojo.dto.DeviceInfoDTO;
|
import com.zjyr.beidouservice.pojo.dto.DeviceInfoDTO;
|
||||||
|
import com.zjyr.beidouservice.pojo.dto.task.AlarmDeviceTaskListReqDTO;
|
||||||
|
import com.zjyr.beidouservice.pojo.dto.task.AlarmTaskListReqDTO;
|
||||||
import com.zjyr.beidouservice.pojo.dto.task.AlarmTaskReqDTO;
|
import com.zjyr.beidouservice.pojo.dto.task.AlarmTaskReqDTO;
|
||||||
|
import com.zjyr.beidouservice.pojo.vo.PageInfoVO;
|
||||||
import com.zjyr.beidouservice.service.AdapterProtocolService;
|
import com.zjyr.beidouservice.service.AdapterProtocolService;
|
||||||
import com.zjyr.beidouservice.service.AlarmTaskService;
|
import com.zjyr.beidouservice.service.AlarmTaskService;
|
||||||
import com.zjyr.beidouservice.service.DeviceService;
|
import com.zjyr.beidouservice.service.DeviceService;
|
||||||
|
@ -34,8 +41,11 @@ import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
@ -112,6 +122,130 @@ public class AlarmTaskServiceImpl implements AlarmTaskService {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AlarmTaskListRespDTO alarmTaskList(AlarmTaskListReqDTO alarmTaskReqDTO) {
|
||||||
|
Integer pageNum = alarmTaskReqDTO.getPageNum();
|
||||||
|
Integer pageSize = alarmTaskReqDTO.getPageSize();
|
||||||
|
List<String> taskIdStrList = alarmTaskReqDTO.getTaskIdStrList();
|
||||||
|
// 分页查询
|
||||||
|
PageInfo<AlarmTaskDO> pageResult = queryAlarmTaskDOList(taskIdStrList, pageNum, pageSize);
|
||||||
|
// 初始的 task dto
|
||||||
|
List<AlarmTaskListRespDTO.AlarmTaskRespDTO> alarmTaskDOList = pageResult.getList().stream()
|
||||||
|
.map(s -> AlarmTaskListRespDTO.AlarmTaskRespDTO.builder()
|
||||||
|
.taskIdStr(s.getTaskIdStr())
|
||||||
|
.id(s.getId())
|
||||||
|
.recodeTime(s.getSendTime())
|
||||||
|
.build())
|
||||||
|
.toList();
|
||||||
|
List<AlarmDeviceTaskDO> deviceTaskList = getAggregatedAlarmDeviceTaskDOS(
|
||||||
|
alarmTaskDOList.stream()
|
||||||
|
.map(AlarmTaskListRespDTO.AlarmTaskRespDTO::getTaskIdStr)
|
||||||
|
.distinct()
|
||||||
|
.toList()
|
||||||
|
);
|
||||||
|
Map<Long, List<AlarmDeviceTaskDO>> deviceTaskMap = deviceTaskList.stream().collect(Collectors.groupingBy(AlarmDeviceTaskDO::getTaskId));
|
||||||
|
for (AlarmTaskListRespDTO.AlarmTaskRespDTO task : alarmTaskDOList) {
|
||||||
|
Long taskId = task.getId();
|
||||||
|
List<AlarmDeviceTaskDO> deviceTaskDOS = deviceTaskMap.getOrDefault(taskId, new ArrayList<>());
|
||||||
|
int successCount = (int) deviceTaskDOS.stream().filter(s -> TaskStatusName.TASK_OK.getValue().equals(s.getStatus())).count();
|
||||||
|
int failCount = (int) deviceTaskDOS.stream().filter(s -> TaskStatusName.TASK_ERROR.getValue().equals(s.getStatus())).count();
|
||||||
|
int timeoutCount = (int) deviceTaskDOS.stream().filter(s -> TaskStatusName.TASK_TIMEOUT.getValue().equals(s.getStatus())).count();
|
||||||
|
task.setDeviceNum(deviceTaskDOS.size());
|
||||||
|
task.setExecNormalNum(successCount + failCount);
|
||||||
|
task.setExecAbnormalNum(timeoutCount);
|
||||||
|
task.setRespRate((double) task.getExecNormalNum() / task.getDeviceNum());
|
||||||
|
}
|
||||||
|
|
||||||
|
PageInfoVO pageInfoVO = new PageInfoVO(pageResult.getTotal(), pageResult.getPageSize(), pageResult.getPageNum());
|
||||||
|
|
||||||
|
return AlarmTaskListRespDTO.builder()
|
||||||
|
.taskList(alarmTaskDOList)
|
||||||
|
.pageInfo(pageInfoVO)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AlarmDeviceTaskListRespDTO alarmDeviceTaskList(AlarmDeviceTaskListReqDTO alarmDeviceTaskListReqDTO) {
|
||||||
|
Integer pageNum = alarmDeviceTaskListReqDTO.getPageNum();
|
||||||
|
Integer pageSize = alarmDeviceTaskListReqDTO.getPageSize();
|
||||||
|
List<String> taskIdStrList = alarmDeviceTaskListReqDTO.getTaskIdStrList();
|
||||||
|
|
||||||
|
List<AlarmDeviceTaskDO> result = getAggregatedAlarmDeviceTaskDOS(taskIdStrList);
|
||||||
|
// 执行中的不展示在详情页
|
||||||
|
result = result.stream().filter(s -> !TaskStatusName.TASK_EXECUTING.getValue().equals(s.getStatus())).collect(Collectors.toList());
|
||||||
|
|
||||||
|
PageInfoVO pageInfoVO = new PageInfoVO((long) result.size(), pageSize, pageNum);
|
||||||
|
// 分页
|
||||||
|
result = result.stream().skip((long) pageSize * (pageNum -1)).limit(pageSize).collect(Collectors.toList());
|
||||||
|
|
||||||
|
List<Integer> deviceIdList = result.stream().map(AlarmDeviceTaskDO::getDeviceId).distinct().toList();
|
||||||
|
// 查询设备信息
|
||||||
|
List<DeviceDO> deviceList = deviceMapper.selectDeviceByDeviceIds(deviceIdList);
|
||||||
|
Map<Integer, DeviceDO> deviceDOMap = deviceList.stream().collect(Collectors.toMap(DeviceDO::getDeviceId, s -> s));
|
||||||
|
List<AlarmDeviceTaskListRespDTO.AlarmDeviceTaskDTO> dtoList = result.stream()
|
||||||
|
.map(s -> {
|
||||||
|
AlarmDeviceTaskListRespDTO.AlarmDeviceTaskDTO dto = new AlarmDeviceTaskListRespDTO.AlarmDeviceTaskDTO();
|
||||||
|
DeviceDO device = deviceDOMap.getOrDefault(s.getDeviceId(), new DeviceDO());
|
||||||
|
dto.setDeviceName(device.getDeviceName());
|
||||||
|
dto.setLatitude(device.getLatitude());
|
||||||
|
dto.setLongitude(device.getLongitude());
|
||||||
|
dto.setTaskState(s.getStatus());
|
||||||
|
dto.setReportTime(s.getReportTime());
|
||||||
|
dto.setDeviceId(s.getDeviceId());
|
||||||
|
dto.setTaskId(s.getTaskId());
|
||||||
|
|
||||||
|
return dto;
|
||||||
|
}).toList();
|
||||||
|
|
||||||
|
return AlarmDeviceTaskListRespDTO.builder()
|
||||||
|
.pageInfo(pageInfoVO)
|
||||||
|
.deviceList(dtoList)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<AlarmDeviceTaskDO> getAggregatedAlarmDeviceTaskDOS(List<String> taskIdStrList) {
|
||||||
|
if (taskIdStrList.isEmpty()) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
List<AlarmDeviceTaskDO> alarmDeviceTaskList = alarmDeviceTaskMapper.selectAllByTaskIdStr(taskIdStrList);
|
||||||
|
// 刷新每个device的任务状态
|
||||||
|
Map<String, List<AlarmDeviceTaskDO>> deviceTaskMap = alarmDeviceTaskList.stream()
|
||||||
|
.collect(Collectors.groupingBy(s -> String.format("%s-%s", s.getTaskId(), s.getDeviceId())));
|
||||||
|
List<AlarmDeviceTaskDO> result = new LinkedList<>();
|
||||||
|
for (Map.Entry<String, List<AlarmDeviceTaskDO>> entry : deviceTaskMap.entrySet()) {
|
||||||
|
List<AlarmDeviceTaskDO> relatedDOS = entry.getValue();
|
||||||
|
if (relatedDOS.size() == 1) {
|
||||||
|
result.addAll(relatedDOS);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// 有一个成功的,视为全部成功
|
||||||
|
boolean hasSucceedDeviceTask = relatedDOS.stream().anyMatch(s -> TaskStatusName.TASK_OK.getValue().equals(s.getStatus()));
|
||||||
|
// 所有都超时的,视为超时
|
||||||
|
boolean allTimeout = relatedDOS.stream().allMatch(s -> TaskStatusName.TASK_TIMEOUT.getValue().equals(s.getStatus()));
|
||||||
|
boolean allExecuting = relatedDOS.stream().allMatch(s -> TaskStatusName.TASK_EXECUTING.getValue().equals(s.getStatus()));
|
||||||
|
AlarmDeviceTaskDO resultDO = relatedDOS.get(0);
|
||||||
|
if (hasSucceedDeviceTask) {
|
||||||
|
resultDO.setStatus(TaskStatusName.TASK_OK.getValue());
|
||||||
|
} else if (allTimeout) {
|
||||||
|
resultDO.setStatus(TaskStatusName.TASK_TIMEOUT.getValue());
|
||||||
|
} else if (allExecuting) {
|
||||||
|
resultDO.setStatus(TaskStatusName.TASK_EXECUTING.getValue());
|
||||||
|
} else {
|
||||||
|
resultDO.setStatus(TaskStatusName.TASK_ERROR.getValue());
|
||||||
|
}
|
||||||
|
result.add(resultDO);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private PageInfo<AlarmTaskDO> queryAlarmTaskDOList(List<String> taskIdStrList, int page, int nItems) {
|
||||||
|
PageHelper.startPage(page, nItems);
|
||||||
|
List<AlarmTaskDO> alarmTaskList = alarmTaskMapper.selectAllByTaskIdStr(taskIdStrList);
|
||||||
|
PageInfo<AlarmTaskDO> pgInfo = new PageInfo<>(alarmTaskList);
|
||||||
|
PageHelper.clearPage();
|
||||||
|
return pgInfo;
|
||||||
|
}
|
||||||
private static List<AlarmDeviceTaskDO> getAlarmDeviceTaskDOS(AlarmTaskReqDTO alarmTaskReqDTO, DeviceInfoDTO deviceInfo, Long taskId) {
|
private static List<AlarmDeviceTaskDO> getAlarmDeviceTaskDOS(AlarmTaskReqDTO alarmTaskReqDTO, DeviceInfoDTO deviceInfo, Long taskId) {
|
||||||
List<AlarmDeviceTaskDO> alarmDeviceTaskDOS = new ArrayList<>();
|
List<AlarmDeviceTaskDO> alarmDeviceTaskDOS = new ArrayList<>();
|
||||||
List<Integer> deviceIds = deviceInfo.getDeviceIds();
|
List<Integer> deviceIds = deviceInfo.getDeviceIds();
|
||||||
|
|
|
@ -16,6 +16,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
@ -57,13 +58,13 @@ public class DeviceServiceImpl implements DeviceService {
|
||||||
public DeviceRespDTO getDeviceByDeviceId(DeviceSearchDTO deviceSearchDTO) {
|
public DeviceRespDTO getDeviceByDeviceId(DeviceSearchDTO deviceSearchDTO) {
|
||||||
log.info("get device info by deviceId: [{}]", deviceSearchDTO.getDeviceId());
|
log.info("get device info by deviceId: [{}]", deviceSearchDTO.getDeviceId());
|
||||||
|
|
||||||
DeviceDO deviceDO = deviceMapper.selectDeviceByDeviceId(deviceSearchDTO.getDeviceId());
|
List<DeviceDO> deviceDOList = deviceMapper.selectDeviceByDeviceIds(Collections.singletonList(deviceSearchDTO.getDeviceId()));
|
||||||
if (deviceDO == null) {
|
if (deviceDOList.isEmpty()) {
|
||||||
log.warn("根据deviceId未查找到设备信息");
|
log.warn("根据deviceId未查找到设备信息");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return DeviceRespDTO.fromDO(deviceDO);
|
return DeviceRespDTO.fromDO(deviceDOList.get(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -50,5 +50,17 @@
|
||||||
</foreach>
|
</foreach>
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<select id="selectAllByTaskIdStr" resultMap="alarm_device_task">
|
||||||
|
select adt.* from alarm_device_task adt
|
||||||
|
join alarm_task atk on adt.task_id = atk.id
|
||||||
|
where 1 = 1
|
||||||
|
<if test="list != null and !list.isEmpty()">
|
||||||
|
and atk.task_id_str in
|
||||||
|
<foreach collection="list" item="item" separator="," open="(" close=")">
|
||||||
|
#{item}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
|
@ -44,5 +44,17 @@
|
||||||
</trim>
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
|
<select id="selectAllByTaskIdStr" resultMap="alarm_task">
|
||||||
|
select * from alarm_task
|
||||||
|
where 1 = 1
|
||||||
|
<if test="list != null and !list.isEmpty()">
|
||||||
|
and task_id_str in
|
||||||
|
<foreach collection="list" item="item" separator="," open="(" close=")">
|
||||||
|
#{item}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
order by send_time desc
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
|
@ -48,11 +48,13 @@
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
<select id="selectDeviceByDeviceId" resultType="com.zjyr.beidouservice.pojo.dataobject.DeviceDO"
|
<select id="selectDeviceByDeviceIds" resultMap="device">
|
||||||
parameterType="java.lang.Long" resultMap="device">
|
|
||||||
select *
|
select *
|
||||||
from device
|
from device
|
||||||
where device_id = #{deviceId}
|
where device_id in
|
||||||
|
<foreach collection="ids" item="item" separator="," open="(" close=")">
|
||||||
|
#{item}
|
||||||
|
</foreach>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<update id="batchUpdateDeviceAlarmStatus">
|
<update id="batchUpdateDeviceAlarmStatus">
|
||||||
|
|
Loading…
Reference in New Issue