Browse Source

feat: 获取指定年月日的未来计划

master
yinhuaiwei 1 week ago
parent
commit
2c28b76bf8
2 changed files with 120 additions and 21 deletions
  1. +16
    -0
      inspect-main/inspect-main-task/src/main/java/com/inspect/calender/service/TaskCalendarGenerator.java
  2. +104
    -21
      inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/controller/PatrolTaskStatusController.java

+ 16
- 0
inspect-main/inspect-main-task/src/main/java/com/inspect/calender/service/TaskCalendarGenerator.java View File

@ -335,6 +335,22 @@ public class TaskCalendarGenerator {
return calendarMap;
}
/**
* 获取指定年月日的未来计划
* @param year
* @param month
* @param day
* @return
*/
public List<DailyTaskStatsDTO> getFutureCalendar(int year, int month, int day) {
Map<LocalDate, List<DailyTaskStatsDTO>> futureCalendarMap = futureCalendarCache.get(FUTURE_CALENDAR);
LocalDate date = LocalDate.of(year, month, day);
List<DailyTaskStatsDTO> existingTasks = futureCalendarMap.computeIfAbsent(date, k -> new ArrayList<>());
return existingTasks.stream()
.filter(task -> task.getStartTime().isAfter(LocalDateTime.now()))
.collect(Collectors.toList());
}
/**
* 将中文星期转换为DayOfWeek枚举
*/


+ 104
- 21
inspect-main/inspect-main-task/src/main/java/com/inspect/taskstatus/controller/PatrolTaskStatusController.java View File

@ -1,6 +1,7 @@
package com.inspect.taskstatus.controller;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import com.inspect.analysis.domain.ResultAnalysis;
import com.inspect.analysis.service.IResultAnalysisService;
import com.inspect.base.core.constant.RedisConst;
@ -11,17 +12,20 @@ import com.inspect.base.core.utils.StringUtils;
import com.inspect.base.core.utils.poi.ExcelUtil;
import com.inspect.base.core.web.controller.BaseController;
import com.inspect.base.core.web.domain.AjaxResult;
import com.inspect.base.core.web.page.PageDomain;
import com.inspect.base.core.web.page.TableDataInfo;
import com.inspect.base.core.web.page.TableSupport;
import com.inspect.base.redis.service.RedisService;
import com.inspect.calender.domain.DailyTaskStatsDTO;
import com.inspect.calender.enums.TaskStateEnum;
import com.inspect.calender.service.TaskCalendarGenerator;
import com.inspect.common.log.annotation.Log;
import com.inspect.common.log.enums.BizType;
import com.inspect.base.redis.service.RedisService;
import com.inspect.partrolresult.service.IPatrolResultService;
import com.inspect.resultmain.domain.PatrolTaskResultMain;
import com.inspect.resultmain.service.IPatrolTaskResultMainService;
import com.inspect.system.base.openDomain.BasedataEqpBookMoMain;
import com.inspect.task.controller.PatrolTaskController;
import com.inspect.task.domain.PatrolSendTask;
import com.inspect.task.domain.PatrolTask;
import com.inspect.task.domain.SendTask;
import com.inspect.task.service.IPatrolTaskService;
@ -31,29 +35,17 @@ import com.inspect.taskstatus.client.FeignTaskClient;
import com.inspect.taskstatus.domain.PatrolTaskStatus;
import com.inspect.taskstatus.domain.TaskCount;
import com.inspect.taskstatus.service.IPatrolTaskStatusService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.time.DayOfWeek;
import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.YearMonth;
import java.time.ZoneId;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping({"/taskstatus"})
@ -75,6 +67,9 @@ public class PatrolTaskStatusController extends BaseController {
@Resource
private IPatrolTaskInfoService patrolTaskInfoService;
@Resource
private TaskCalendarGenerator taskCalendarGenerator;
public PatrolTaskStatusController(
PatrolTaskController patrolTaskController,
IPatrolTaskStatusService patrolTaskStatusService,
@ -136,6 +131,94 @@ public class PatrolTaskStatusController extends BaseController {
// log.info("[GAB] count: {}", patrolTaskStatusList.size());
// return getDataTable(patrolTaskStatusList);
// }
// 仅支持查询一天的任务
@GetMapping({"/v2/list"})
public TableDataInfo listV2(PatrolTaskStatus patrolTaskStatus) {
List<PatrolTaskStatus> list = patrolTaskStatusService.selectPatrolTaskStatusList(patrolTaskStatus);
String beginTime = patrolTaskStatus.getBeginTime();
if (StringUtils.isNotEmpty(beginTime)) {
String[] beginTimeArr = beginTime.split("-");
int year = Integer.parseInt(beginTimeArr[0]);
int month = Integer.parseInt(beginTimeArr[1]);
int day = Integer.parseInt(beginTimeArr[2]);
List<DailyTaskStatsDTO> futureCalendar = taskCalendarGenerator.getFutureCalendar(year, month, day);
List<PatrolTaskStatus> futureList = futureCalendar.stream().map(item ->
PatrolTaskStatus.builder()
.startTime(Date.from(item.getStartTime().atZone(ZoneId.systemDefault()).toInstant()))
.taskName(item.getName())
.taskCode(item.getId())
.taskPatrolledId(item.getId())
.patrolStatus(item.getTaskState().toString())
.taskState(item.getTaskState().toString())
.taskProgress("0")
.taskEstimatedTime("0")
.build()
).collect(Collectors.toList());
list.addAll(futureList);
}
list.sort(Comparator.comparing(PatrolTaskStatus::getStartTime).reversed());
// 分页
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize();
int start = (pageNum - 1) * pageSize;
int end = Math.min(start + pageSize, list.size());
log.info("[GAB] listV2: {} {}", pageNum, pageSize);
List<PatrolTaskStatus> pageList = list.subList(start, end);
// 更新结果
List<String> taskPatrolIds = list.stream().filter(item -> !item.getTaskState().equals(TaskStateEnum.PENDING.getCode())).map(PatrolTaskStatus::getTaskPatrolledId).collect(Collectors.toList());
if(taskPatrolIds.size() > 0) {
List<PatrolTaskResultMain> resultMains = patrolTaskResultMainService.selectMainFileStatus(taskPatrolIds);
List<String> taskCodeIds = list.stream().map(PatrolTaskStatus::getTaskCode).collect(Collectors.toList());
List<Map<String, Object>> pointList = patrolTaskInfoService.selectPatrolTaskInfoCount(taskCodeIds);
Map<String, String> pointMap = pointList.stream().collect(Collectors.toMap((item) -> (String) item.get("taskMajorId"), (item) -> {
return String.valueOf(item.get("num"));
}));
Map<String, ResultAnalysis> abnormalDataBatchMap = resultAnalysisService.selectTaskAbnormalDataBatch(taskPatrolIds);
List<ResultAnalysis> allQxAnalysisList = resultAnalysisService.selectResultAnalysisListBatch(taskPatrolIds, "0");
Map<String, Map<GroupKey, List<ResultAnalysis>>> groupedAnalysisMap = allQxAnalysisList.stream()
.collect(Collectors.groupingBy(
ResultAnalysis::getTaskPatrolId,
Collectors.groupingBy(data -> new GroupKey(data.getObjectId(), data.getAlgType()))
));
list.forEach((item) -> {
item.setPatrolStatus("1");
item.setPointCount(pointMap.get(item.getTaskCode()));
if (!item.getTaskProgress().contains("100")) {
item.setFileStatus("0");
} else {
List<PatrolTaskResultMain> collect = resultMains.stream().filter((res) -> {
return res.getTaskPatrolledId().equals(item.getTaskPatrolledId());
}).collect(Collectors.toList());
if (!collect.isEmpty()) {
item.setFileStatus((collect.get(0)).getFileStatus());
} else {
item.setFileStatus("0");
}
}
// 异常数据统计
ResultAnalysis resultAnalysis = abnormalDataBatchMap.getOrDefault(item.getTaskPatrolledId(), new ResultAnalysis());
item.setCsQxNum(resultAnalysis.getCsQxNum());
item.setAiQxNum(resultAnalysis.getAiQxNum());
item.setCsYcNum(resultAnalysis.getCsYcNum());
item.setAiYcNum(resultAnalysis.getAiYcNum());
Map<GroupKey, List<ResultAnalysis>> groupKeyListMap = groupedAnalysisMap.get(item.getTaskPatrolledId());
item.setQxNum(groupKeyListMap == null ? 0 : groupKeyListMap.size());
if (StringUtils.isEmpty(item.getTaskEstimatedTime())) {
item.setTaskEstimatedTime("0");
}
});
}
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(200);
rspData.setRows(pageList);
rspData.setMsg("Query Ok");
rspData.setTotal((new PageInfo<>(list)).getTotal());
return rspData;
}
@GetMapping({"/list"})
public TableDataInfo list(PatrolTaskStatus patrolTaskStatus) {


Loading…
Cancel
Save