Commit 26fb654f by gdj

增加任务统计接口和今日任务接口。

parent 744cfdef
package com.dji.sample.wayline.controller; package com.dji.sample.wayline.controller;
import com.dji.sample.common.model.CustomClaim; import com.dji.sample.common.model.CustomClaim;
import com.dji.sample.wayline.model.dto.TaskStatisticDTO;
import com.dji.sample.wayline.model.dto.WaylineJobDTO; import com.dji.sample.wayline.model.dto.WaylineJobDTO;
import com.dji.sample.wayline.model.param.CreateJobParam; import com.dji.sample.wayline.model.param.CreateJobParam;
import com.dji.sample.wayline.model.param.UpdateJobParam; import com.dji.sample.wayline.model.param.UpdateJobParam;
...@@ -14,6 +15,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -14,6 +15,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid; import javax.validation.Valid;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.List;
import java.util.Set; import java.util.Set;
import static com.dji.sample.component.AuthInterceptor.TOKEN_CLAIM; import static com.dji.sample.component.AuthInterceptor.TOKEN_CLAIM;
...@@ -100,4 +102,33 @@ public class WaylineJobController { ...@@ -100,4 +102,33 @@ public class WaylineJobController {
flighttaskService.updateJobStatus(workspaceId, jobId, param); flighttaskService.updateJobStatus(workspaceId, jobId, param);
return HttpResultResponse.success(); return HttpResultResponse.success();
} }
/**
* 统计数据
* @param workspaceId
* @return
*/
@GetMapping("/{workspace_id}/jobs/statistics")
public HttpResultResponse<List<TaskStatisticDTO>> getTaskStatistics(@PathVariable(name = "workspace_id") String workspaceId,
@RequestParam(name = "time_type", defaultValue = "0") Integer timeType) {
List<TaskStatisticDTO> dto = waylineJobService.getTaskStatistics(workspaceId, timeType);
return HttpResultResponse.success(dto);
}
/**
* 今日任务
* @param page
* @param pageSize
* @param workspaceId
* @return
*/
@GetMapping("/{workspace_id}/todayJobs")
public HttpResultResponse<PaginationData<WaylineJobDTO>> getTodayJobs(@RequestParam(defaultValue = "1") Long page,
@RequestParam(name = "page_size", defaultValue = "10") Long pageSize,
@RequestParam(name = "dock_sns", required = false) String dockSns,
@PathVariable(name = "workspace_id") String workspaceId) {
PaginationData<WaylineJobDTO> data = waylineJobService.getTodayJobsByWorkspaceId(workspaceId, dockSns, page, pageSize);
return HttpResultResponse.success(data);
}
} }
package com.dji.sample.wayline.model.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @author guan
*/
@Data
public class TaskSceneStatisticDTO implements Serializable {
private Integer taskScene;
private String taskSceneName;
private Integer count;
}
package com.dji.sample.wayline.model.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author guan
*/
@Data
public class TaskStatisticDTO implements Serializable {
String date;
Integer count;
Integer finishCount;
Integer unfinishCount;
//
/**
* 任务状态统计
*/
List<TaskStatusStatisticDTO> statusList;
/**
* 任务起飞类型统计
*/
List<TaskSceneStatisticDTO> sceneList;
}
package com.dji.sample.wayline.model.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @author guan
*/
@Data
public class TaskStatusStatisticDTO implements Serializable {
Integer taskStatus;
String taskStatusName;
Integer count;
}
package com.dji.sample.wayline.model.dto; package com.dji.sample.wayline.model.dto;
import com.dji.sample.wayline.model.enums.TaskSceneEnum;
import com.dji.sdk.cloudapi.wayline.OutOfControlActionEnum; import com.dji.sdk.cloudapi.wayline.OutOfControlActionEnum;
import com.dji.sdk.cloudapi.wayline.TaskTypeEnum; import com.dji.sdk.cloudapi.wayline.TaskTypeEnum;
import com.dji.sdk.cloudapi.wayline.WaylineTypeEnum; import com.dji.sdk.cloudapi.wayline.WaylineTypeEnum;
...@@ -68,4 +69,10 @@ public class WaylineJobDTO { ...@@ -68,4 +69,10 @@ public class WaylineJobDTO {
private WaylineTaskConditionDTO conditions; private WaylineTaskConditionDTO conditions;
private String parentId; private String parentId;
/**
* 起飞类型
*/
private TaskSceneEnum taskScene;
} }
...@@ -82,4 +82,11 @@ public class WaylineJobEntity implements Serializable { ...@@ -82,4 +82,11 @@ public class WaylineJobEntity implements Serializable {
@TableField("parent_id") @TableField("parent_id")
private String parentId; private String parentId;
/**
* 任务起飞类型
*/
@TableField("task_scene")
private Integer taskScene;
} }
package com.dji.sample.wayline.model.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;
import java.util.Arrays;
import java.util.Optional;
/**
* 任务创建原因
* @author guan
*/
@Getter
public enum TaskSceneEnum {
MODEL_TASK(0, "建模任务"),
ROUTINE_PATROL_TASK(1, "常规巡查任务"),
TEMPORARY_TAKEOFF_TASK(2, "临时起飞任务");
int scene;
String sceneName;
TaskSceneEnum(int scene, String sceneName) {
this.scene = scene;
this.sceneName = sceneName;
}
@JsonCreator(mode = JsonCreator.Mode.DELEGATING)
public static TaskSceneEnum find(Integer scene) {
return Arrays.stream(values()).filter(taskSceneEnum -> taskSceneEnum.scene == scene).findAny().get();
}
public static Optional<TaskSceneEnum> find(String sceneName) {
return Arrays.stream(values()).filter(taskSceneEnum -> taskSceneEnum.sceneName.equals(sceneName)).findAny();
}
}
package com.dji.sample.wayline.service; package com.dji.sample.wayline.service;
import com.dji.sample.wayline.model.dto.TaskStatisticDTO;
import com.dji.sample.wayline.model.dto.WaylineJobDTO; import com.dji.sample.wayline.model.dto.WaylineJobDTO;
import com.dji.sample.wayline.model.enums.WaylineJobStatusEnum; import com.dji.sample.wayline.model.enums.WaylineJobStatusEnum;
import com.dji.sample.wayline.model.param.CreateJobParam; import com.dji.sample.wayline.model.param.CreateJobParam;
...@@ -79,9 +80,26 @@ public interface IWaylineJobService { ...@@ -79,9 +80,26 @@ public interface IWaylineJobService {
PaginationData<WaylineJobDTO> getJobsByWorkspaceId(String workspaceId, String dockSns, long page, long pageSize); PaginationData<WaylineJobDTO> getJobsByWorkspaceId(String workspaceId, String dockSns, long page, long pageSize);
/** /**
* 今日任务
* @param workspaceId
* @param dockSns
* @param page
* @param pageSize
* @return
*/
PaginationData<WaylineJobDTO> getTodayJobsByWorkspaceId(String workspaceId, String dockSns, long page, long pageSize);
/**
* Query the wayline execution status of the dock. * Query the wayline execution status of the dock.
* @param dockSn * @param dockSn
* @return * @return
*/ */
WaylineJobStatusEnum getWaylineState(String dockSn); WaylineJobStatusEnum getWaylineState(String dockSn);
/**
* 统计任务数据
* @param workspaceId
*/
List<TaskStatisticDTO> getTaskStatistics(String workspaceId, Integer timeType);
} }
...@@ -12,8 +12,12 @@ import com.dji.sample.manage.service.IDeviceService; ...@@ -12,8 +12,12 @@ import com.dji.sample.manage.service.IDeviceService;
import com.dji.sample.media.model.MediaFileCountDTO; import com.dji.sample.media.model.MediaFileCountDTO;
import com.dji.sample.media.service.IFileService; import com.dji.sample.media.service.IFileService;
import com.dji.sample.wayline.dao.IWaylineJobMapper; import com.dji.sample.wayline.dao.IWaylineJobMapper;
import com.dji.sample.wayline.model.dto.TaskSceneStatisticDTO;
import com.dji.sample.wayline.model.dto.TaskStatisticDTO;
import com.dji.sample.wayline.model.dto.TaskStatusStatisticDTO;
import com.dji.sample.wayline.model.dto.WaylineJobDTO; import com.dji.sample.wayline.model.dto.WaylineJobDTO;
import com.dji.sample.wayline.model.entity.WaylineJobEntity; import com.dji.sample.wayline.model.entity.WaylineJobEntity;
import com.dji.sample.wayline.model.enums.TaskSceneEnum;
import com.dji.sample.wayline.model.enums.WaylineJobStatusEnum; import com.dji.sample.wayline.model.enums.WaylineJobStatusEnum;
import com.dji.sample.wayline.model.param.CreateJobParam; import com.dji.sample.wayline.model.param.CreateJobParam;
import com.dji.sample.wayline.service.IWaylineFileService; import com.dji.sample.wayline.service.IWaylineFileService;
...@@ -32,12 +36,14 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -32,12 +36,14 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.time.Instant; import java.time.*;
import java.time.LocalDateTime; import java.time.format.DateTimeFormatter;
import java.time.ZoneId; import java.time.temporal.WeekFields;
import java.util.*; import java.util.*;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -175,6 +181,37 @@ public class WaylineJobServiceImpl implements IWaylineJobService { ...@@ -175,6 +181,37 @@ public class WaylineJobServiceImpl implements IWaylineJobService {
return new PaginationData<WaylineJobDTO>(records, new Pagination(pageData.getCurrent(), pageData.getSize(), pageData.getTotal())); return new PaginationData<WaylineJobDTO>(records, new Pagination(pageData.getCurrent(), pageData.getSize(), pageData.getTotal()));
} }
@Override
public PaginationData<WaylineJobDTO> getTodayJobsByWorkspaceId(String workspaceId, String dockSns, long page, long pageSize) {
LambdaQueryWrapper<WaylineJobEntity> waylineJobQueryWrapper = new LambdaQueryWrapper<WaylineJobEntity>()
.eq(WaylineJobEntity::getWorkspaceId, workspaceId)
.orderByDesc(WaylineJobEntity::getId);
if (StringUtils.hasText(dockSns)) {
List<String> dockSnList = Arrays.asList(dockSns.split(","));
if (!CollectionUtils.isEmpty(dockSnList)) {
waylineJobQueryWrapper.in(WaylineJobEntity::getDockSn, dockSnList);
}
}
LocalDate today = LocalDate.now();
LocalDateTime startOfDay = today.atStartOfDay();
long startTimestamp = startOfDay.toEpochSecond(ZoneOffset.UTC);
waylineJobQueryWrapper.ge(WaylineJobEntity::getBeginTime, startTimestamp);
// 今天结束时间:23:59:59
LocalDateTime endOfDay = today.atTime(23, 59, 59);
long endTimestamp = endOfDay.toEpochSecond(ZoneOffset.UTC);
waylineJobQueryWrapper.le(WaylineJobEntity::getBeginTime, endTimestamp);
Page<WaylineJobEntity> pageData = mapper.selectPage(new Page<>(page, pageSize), waylineJobQueryWrapper);
List<WaylineJobDTO> records = pageData.getRecords()
.stream()
.map(this::entity2Dto)
.collect(Collectors.toList());
return new PaginationData<>(records, new Pagination(pageData.getCurrent(), pageData.getSize(), pageData.getTotal()));
}
private WaylineJobEntity dto2Entity(WaylineJobDTO dto) { private WaylineJobEntity dto2Entity(WaylineJobDTO dto) {
WaylineJobEntity.WaylineJobEntityBuilder builder = WaylineJobEntity.builder(); WaylineJobEntity.WaylineJobEntityBuilder builder = WaylineJobEntity.builder();
if (dto == null) { if (dto == null) {
...@@ -201,6 +238,7 @@ public class WaylineJobServiceImpl implements IWaylineJobService { ...@@ -201,6 +238,7 @@ public class WaylineJobServiceImpl implements IWaylineJobService {
.dockSn(dto.getDockSn()) .dockSn(dto.getDockSn())
.workspaceId(dto.getWorkspaceId()) .workspaceId(dto.getWorkspaceId())
.taskType(Optional.ofNullable(dto.getTaskType()).map(TaskTypeEnum::getType).orElse(null)) .taskType(Optional.ofNullable(dto.getTaskType()).map(TaskTypeEnum::getType).orElse(null))
.taskScene(Optional.ofNullable(dto.getTaskScene()).map(TaskSceneEnum::getScene).orElse(null))
.waylineType(Optional.ofNullable(dto.getWaylineType()).map(WaylineTypeEnum::getValue).orElse(null)) .waylineType(Optional.ofNullable(dto.getWaylineType()).map(WaylineTypeEnum::getValue).orElse(null))
.username(dto.getUsername()) .username(dto.getUsername())
.rthAltitude(dto.getRthAltitude()) .rthAltitude(dto.getRthAltitude())
...@@ -263,6 +301,7 @@ public class WaylineJobServiceImpl implements IWaylineJobService { ...@@ -263,6 +301,7 @@ public class WaylineJobServiceImpl implements IWaylineJobService {
.completedTime(WaylineJobStatusEnum.find(entity.getStatus()).getEnd() ? .completedTime(WaylineJobStatusEnum.find(entity.getStatus()).getEnd() ?
LocalDateTime.ofInstant(Instant.ofEpochMilli(entity.getUpdateTime()), ZoneId.systemDefault()) : null) LocalDateTime.ofInstant(Instant.ofEpochMilli(entity.getUpdateTime()), ZoneId.systemDefault()) : null)
.taskType(TaskTypeEnum.find(entity.getTaskType())) .taskType(TaskTypeEnum.find(entity.getTaskType()))
.taskScene(Objects.nonNull(entity.getTaskScene()) ? TaskSceneEnum.find(entity.getTaskScene()) : null)
.waylineType(WaylineTypeEnum.find(entity.getWaylineType())) .waylineType(WaylineTypeEnum.find(entity.getWaylineType()))
.rthAltitude(entity.getRthAltitude()) .rthAltitude(entity.getRthAltitude())
.outOfControlAction(OutOfControlActionEnum.find(entity.getOutOfControlAction())) .outOfControlAction(OutOfControlActionEnum.find(entity.getOutOfControlAction()))
...@@ -305,4 +344,229 @@ public class WaylineJobServiceImpl implements IWaylineJobService { ...@@ -305,4 +344,229 @@ public class WaylineJobServiceImpl implements IWaylineJobService {
.uploadedCount(uploadedSize).build()); .uploadedCount(uploadedSize).build());
return builder.build(); return builder.build();
} }
/**
* 统计任务数据
* @param workspaceId
* @param timeType 0 周 1 月 2 年
*/
@Override
public List<TaskStatisticDTO> getTaskStatistics(String workspaceId, Integer timeType) {
if (timeType == null) {
timeType = 0;
}
// 当前时间
ZoneId zoneId = ZoneId.systemDefault();
LocalDate today = LocalDate.now();
DateTimeFormatter dayFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
long startSecond = 0L;
long endSecond = 0L;
// ===== 12日 =====
if (timeType == 0) {
// 6天前 0点
startSecond = today.minusDays(6).atStartOfDay(zoneId).toEpochSecond();
// 5天后 23:59:59
endSecond = today.plusDays(5).atTime(LocalTime.MAX.withNano(0)).atZone(zoneId).toEpochSecond(); // 秒级时间戳;
}
// ===== 12周 =====
if (timeType == 1) {
// 使用系统默认地区的周定义(通常是周一为第一天)
WeekFields weekFields = WeekFields.of(Locale.getDefault());
// 获取本周的周一
LocalDate currentWeekStart = today.with(weekFields.dayOfWeek(), 1);
// 最小日期:6周前的周一
LocalDate minDate = currentWeekStart.minusWeeks(6);
// 最大日期:5周后的周日
LocalDate maxDate = currentWeekStart.plusWeeks(5).with(weekFields.dayOfWeek(), 7);
// 转为时间戳(秒)
startSecond = minDate.atStartOfDay().toEpochSecond(ZoneOffset.UTC);
endSecond = maxDate.atTime(23, 59, 59).toEpochSecond(ZoneOffset.UTC);
}
// ===== 12月 =====
if (timeType == 2) {
// 获取当前年份
int year = Year.now().getValue();
// 当年最小日期时间:2025-01-01 00:00:00
LocalDateTime startOfYear = LocalDateTime.of(year, 1, 1, 0, 0, 0);
startSecond = startOfYear.toEpochSecond(ZoneOffset.UTC);
// 当年最大日期时间:2025-12-31 23:59:59
LocalDateTime endOfYear = LocalDateTime.of(year, 12, 31, 23, 59, 59);
endSecond = endOfYear.toEpochSecond(ZoneOffset.UTC);
}
// 查询任务
LambdaQueryWrapper<WaylineJobEntity> waylineJobQueryWrapper = new LambdaQueryWrapper<>();
waylineJobQueryWrapper.between(WaylineJobEntity::getBeginTime, startSecond, endSecond);
List<WaylineJobEntity> waylineJobList = this.mapper.selectList(waylineJobQueryWrapper);
// 对数据进行分析
if (timeType == 0) {
Map<String, List<WaylineJobEntity>> dailyGrouped = waylineJobList.stream()
.collect(Collectors.groupingBy(
item -> {
Instant instant = Instant.ofEpochMilli(item.getBeginTime());
return instant.atZone(zoneId).toLocalDate().format(dayFormatter);
},
TreeMap::new, // 指定使用 TreeMap 自动按 LocalDate 排序
Collectors.toList()
));
List<String> dateList = new ArrayList<>();
// 前6天(不含今天)→ 今天往前推6天 到 今天
for (int i = -6; i <= 0; i++) {
dateList.add(today.plusDays(i).format(dayFormatter));
}
// 后5天(不含今天)
for (int i = 1; i <= 5; i++) {
dateList.add(today.plusDays(i).format(dayFormatter));
}
// 遍历 dateList
List<TaskStatisticDTO> newStatisticData = new ArrayList<>();
for (String dayStr : dateList) {
List<WaylineJobEntity> curDayTaskList = dailyGrouped.getOrDefault(dayStr, new ArrayList<>());
TaskStatisticDTO taskStatisticDTO = partitionTaskData(curDayTaskList);
taskStatisticDTO.setDate(dayStr);
newStatisticData.add(taskStatisticDTO);
}
return newStatisticData;
}
if (timeType == 1) {
// 按“周”分组
// 输出每周的分组
String[] weekLabels = {"前六周", "前五周", "前四周", "前三周", "前两周", "前一周", "本周", "后一周", "后两周", "后三周", "后四周", "后五周"};
// 获取当前日期和周的起始日期(周一)
WeekFields weekFields = WeekFields.of(Locale.getDefault()); // 获取当前地区的周规则
LocalDate startOfWeek = today.with(weekFields.dayOfWeek(), 1); // 获取当前周的周一
List<List<WaylineJobEntity>> allWeeks = new ArrayList<>(12);
for (int i = 0; i < 12; i++) {
allWeeks.add(new ArrayList<>());
}
// 按周填充数据
for (WaylineJobEntity waylineJobEntity : waylineJobList) {
LocalDate curDate = Instant.ofEpochMilli(waylineJobEntity.getBeginTime()).atZone(zoneId).toLocalDate();
// 获取每个日期所在的周的起始日期(周一)
LocalDate startOfCurrentWeek = curDate.with(weekFields.dayOfWeek(), 1);
// 计算这个周属于第几组,负数为前面几周,正数为后面几周
int weekIndex = (int) startOfCurrentWeek.until(startOfWeek, java.time.temporal.ChronoUnit.WEEKS);
// 确保index在-6到+5之间(即12个周)
if (weekIndex >= -6 && weekIndex <= 5) {
// 将日期添加到相应的周组
allWeeks.get(weekIndex + 6).add(waylineJobEntity);
}
}
List<TaskStatisticDTO> newStatisticData = new ArrayList<>();
for (int i = 0; i <= weekLabels.length - 1; i++) {
TaskStatisticDTO taskStatisticDTO = partitionTaskData(allWeeks.get(i));
taskStatisticDTO.setDate(weekLabels[i]);
newStatisticData.add(taskStatisticDTO);
}
return newStatisticData;
}
if (timeType == 2) {
// 获取当前年份(可以指定为某一年)
int targetYear = Year.now().getValue(); // 如果要固定写死,比如 2025 就直接 int targetYear = 2025;
// 日期格式化器:yyyy-MM
DateTimeFormatter ymFormatter = DateTimeFormatter.ofPattern("yyyy-MM");
// 初始化 Map(按当前年 1~12 月)
Map<String, List<WaylineJobEntity>> monthMap = new LinkedHashMap<>();
for (int month = 1; month <= 12; month++) {
LocalDate firstDayOfMonth = LocalDate.of(targetYear, month, 1);
String key = firstDayOfMonth.format(ymFormatter);
monthMap.put(key, new ArrayList<>());
}
// 数据填充(只放入当年的日期)
for (WaylineJobEntity waylineJobEntity : waylineJobList) {
LocalDate curDate = Instant.ofEpochMilli(waylineJobEntity.getBeginTime()).atZone(zoneId).toLocalDate();
if (monthMap.containsKey(curDate.format(ymFormatter))) {
monthMap.get(curDate.format(ymFormatter)).add(waylineJobEntity);
}
}
// 遍历数据
List<TaskStatisticDTO> newStatisticData = new ArrayList<>();
for (Map.Entry<String, List<WaylineJobEntity>> entry : monthMap.entrySet()) {
TaskStatisticDTO taskStatisticDTO = partitionTaskData(entry.getValue());
taskStatisticDTO.setDate(entry.getKey());
newStatisticData.add(taskStatisticDTO);
}
return newStatisticData;
}
return new ArrayList<>();
}
// 区分数据
private TaskStatisticDTO partitionTaskData(List<WaylineJobEntity> taskList) {
TaskStatisticDTO taskStatisticDTO = new TaskStatisticDTO();
// 初始化
taskStatisticDTO.setCount(taskList.size());
// 任务状态 已完成 未完成
int finishCount = 0;
int unfinishCount = 0;
Map<Integer, List<WaylineJobEntity>> taskMapByTaskStatus = taskList.stream().filter(x -> !ObjectUtils.isEmpty(x.getStatus())).collect(Collectors.groupingBy(WaylineJobEntity::getStatus));
List<TaskStatusStatisticDTO> statusList = new ArrayList<>();
// 遍历任务状态
for (WaylineJobStatusEnum waylineJobStatusEnum : WaylineJobStatusEnum.values()) {
TaskStatusStatisticDTO tempStatusDTO = new TaskStatusStatisticDTO();
tempStatusDTO.setTaskStatus(waylineJobStatusEnum.getVal());
tempStatusDTO.setTaskStatusName(waylineJobStatusEnum.name());
List<WaylineJobEntity> curStatusTaskList = taskMapByTaskStatus.getOrDefault(waylineJobStatusEnum.getVal(), new ArrayList<>());
tempStatusDTO.setCount(curStatusTaskList.size());
boolean statusEnd = waylineJobStatusEnum.getEnd();
if (statusEnd) {
finishCount += curStatusTaskList.size();
} else {
unfinishCount += curStatusTaskList.size();
}
statusList.add(tempStatusDTO);
}
taskStatisticDTO.setFinishCount(finishCount);
taskStatisticDTO.setUnfinishCount(unfinishCount);
taskStatisticDTO.setStatusList(statusList);
Map<Integer, List<WaylineJobEntity>> taskMapByTaskScene = taskList.stream().filter(x -> !ObjectUtils.isEmpty(x.getTaskScene())).collect(Collectors.groupingBy(WaylineJobEntity::getTaskScene));
List<TaskSceneStatisticDTO> sceneList = new ArrayList<>();
// 任务起飞类型
for (TaskSceneEnum taskSceneEnum : TaskSceneEnum.values()) {
TaskSceneStatisticDTO sceneDTO = new TaskSceneStatisticDTO();
sceneDTO.setTaskScene(taskSceneEnum.getScene());
sceneDTO.setTaskSceneName(taskSceneEnum.getSceneName());
List<WaylineJobEntity> curSceneTaskList = taskMapByTaskScene.getOrDefault(taskSceneEnum.getScene(), new ArrayList<>());
sceneDTO.setCount(curSceneTaskList.size());
sceneList.add(sceneDTO);
}
taskStatisticDTO.setSceneList(sceneList);
return taskStatisticDTO;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment