|
|
@@ -6,6 +6,7 @@ import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.alibaba.excel.EasyExcel;
|
|
|
import com.alibaba.nacos.common.utils.CollectionUtils;
|
|
|
+import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.C;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
@@ -27,8 +28,10 @@ import com.xunmei.common.core.utils.DateUtils;
|
|
|
import com.xunmei.common.core.vo.IdNameVo;
|
|
|
import com.xunmei.common.core.web.page.TableDataInfo;
|
|
|
import com.xunmei.common.security.utils.SecurityUtils;
|
|
|
+import com.xunmei.core.access.domain.CoreMonitoringTaskRegistration;
|
|
|
import com.xunmei.core.access.domain.TMonitoringRetrievalPlan;
|
|
|
import com.xunmei.core.access.dto.CoreMonitoringTaskRegistrationDTO;
|
|
|
+import com.xunmei.core.access.mapper.CoreMonitoringTaskRegistrationMapper;
|
|
|
import com.xunmei.core.access.mapper.TMonitoringRetrievalPlanMapper;
|
|
|
import com.xunmei.core.access.service.ITMonitoringRetrievalPlanService;
|
|
|
import com.xunmei.core.retrieval.mapper.CoreMonitoringRetrievalTaskMapper;
|
|
|
@@ -61,6 +64,7 @@ import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDate;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
|
|
|
/**
|
|
|
@@ -91,6 +95,9 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
|
|
|
ICoreMonitoringRetrievalTaskBuilderService coreMonitoringRetrievalTskBuilderService;
|
|
|
@Autowired
|
|
|
TMonitoringRetrievalPlanMapper tMonitoringRetrievalPlanMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ CoreMonitoringTaskRegistrationMapper coreMonitoringTaskRegistrationMapper;
|
|
|
private static final Integer ZERO = 0;
|
|
|
private static final String PARENT_ID = "parent_id";
|
|
|
|
|
|
@@ -125,6 +132,41 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
|
|
|
request.setOrgId(null);
|
|
|
}
|
|
|
List<CoreMonitoringRetrievalTaskExcelVo> list = coreMonitoringRetrievalTaskMapper.selectAllList(request);
|
|
|
+ List<Long> taskIdList = list.stream().map(CoreMonitoringRetrievalTaskExcelVo::getId).collect(Collectors.toList());
|
|
|
+ LambdaQueryWrapper<CoreMonitoringTaskRegistration> lqw = new LambdaQueryWrapper<>();
|
|
|
+ lqw.in(CoreMonitoringTaskRegistration::getTaskId, taskIdList);
|
|
|
+ List<CoreMonitoringTaskRegistration> registers = coreMonitoringTaskRegistrationMapper.selectList(lqw);
|
|
|
+
|
|
|
+
|
|
|
+ //根据ID进行分组然后进行处理。
|
|
|
+ // 根据任务ID进行分组
|
|
|
+ Map<Long, String> taskTimeMap = registers.stream().collect(Collectors.groupingBy(CoreMonitoringTaskRegistration::getTaskId))
|
|
|
+ //每个相同taskId进行以下操作
|
|
|
+ .entrySet().stream().collect(Collectors.toMap(
|
|
|
+ Map.Entry::getKey,
|
|
|
+ entry -> {
|
|
|
+ List<String> timeList = entry.getValue().stream()
|
|
|
+ .map(item -> dealTime(item.getTaskStartTime(),item.getTaskEndTime())).collect(Collectors.toList());
|
|
|
+ return String.join("\n",timeList);
|
|
|
+ }
|
|
|
+ ));
|
|
|
+ list.forEach(item -> {
|
|
|
+ item.setMonitorTimes(taskTimeMap.getOrDefault(item.getId(),null));
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ //计算平均时长
|
|
|
+ Map<Long, String> durationResultMap = registers.stream().filter(item -> ObjectUtil.isNotNull(item.getAverageDuration()))
|
|
|
+ .collect(Collectors.groupingBy(CoreMonitoringTaskRegistration::getTaskId,
|
|
|
+ Collectors.collectingAndThen(
|
|
|
+ Collectors.summingLong(item -> item.getAverageDuration().longValue()),
|
|
|
+ totalMS -> totalTime(totalMS)
|
|
|
+ )));
|
|
|
+
|
|
|
+ list.forEach(item -> {
|
|
|
+ item.setDuration(durationResultMap.getOrDefault(item.getId(),null));
|
|
|
+ });
|
|
|
+
|
|
|
|
|
|
if (ObjectUtil.isEmpty(list)) {
|
|
|
throw new RuntimeException("导出数据为空!");
|
|
|
@@ -146,6 +188,40 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
|
|
|
EasyExcel.write(response.getOutputStream(), CoreMonitoringRetrievalTaskExcelVo.class).sheet("Sheet1").doWrite(list);
|
|
|
|
|
|
}
|
|
|
+ private String totalTime(long milliseconds) {
|
|
|
+ long totalSeconds = milliseconds / 1000;
|
|
|
+ long totalMinutes = totalSeconds / 60;
|
|
|
+ long totalHours = totalMinutes / 60;
|
|
|
+
|
|
|
+ // 计算剩余的分钟数和秒数
|
|
|
+ long remainingMinutes = totalMinutes % 60;
|
|
|
+ long remainingSeconds = totalSeconds % 60;
|
|
|
+ if (totalHours == 0) {
|
|
|
+ if (totalMinutes == 0) {
|
|
|
+ return String.format("%02d秒", remainingSeconds);
|
|
|
+ }
|
|
|
+ return String.format("%02d分钟%02d秒", remainingMinutes, remainingSeconds);
|
|
|
+ } else {
|
|
|
+
|
|
|
+ return String.format("%02d小时%02d分钟%02d秒", totalHours, remainingMinutes, remainingSeconds);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ private String dealTime(Date start, Date end) {
|
|
|
+ final SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分");
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.setTime(end);
|
|
|
+ String m = String.valueOf(calendar.get(Calendar.MINUTE));
|
|
|
+ if (m.length() == 1) {
|
|
|
+ m = "0" + calendar.get(Calendar.MINUTE);
|
|
|
+ }
|
|
|
+ String h = String.valueOf(calendar.get(Calendar.HOUR_OF_DAY));
|
|
|
+ if (h.length() == 1) {
|
|
|
+ h = "0" + calendar.get(Calendar.HOUR_OF_DAY);
|
|
|
+ }
|
|
|
+ String dateStr = format.format(start) + "-" + h + "时" + m + "分";
|
|
|
+ return dateStr;
|
|
|
+ }
|
|
|
|
|
|
public static String getLastDay(int year, int month, String format) {
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
@@ -257,6 +333,20 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
|
|
|
CoreMonitoringRetrievalTaskOneVo retrievalTaskOneVo = coreMonitoringRetrievalTaskMapper.selectOneById(id);
|
|
|
List<TaskDataVo> taskDataVoList = coreMonitoringRetrievalTaskMapper.selectTaskDataVoListByRetrievalTaskId(id);
|
|
|
retrievalTaskOneVo.setTaskDataVoList(taskDataVoList);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ LambdaQueryWrapper<CoreMonitoringTaskRegistration> lqw = new LambdaQueryWrapper<>();
|
|
|
+ lqw.eq(CoreMonitoringTaskRegistration::getTaskId, id);
|
|
|
+ List<CoreMonitoringTaskRegistration> registrations = coreMonitoringTaskRegistrationMapper.selectList(lqw);
|
|
|
+
|
|
|
+ // 调阅开始时间-结束时间
|
|
|
+ List<String> times = registrations.stream().map(item -> {
|
|
|
+ final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
|
|
+ return format.format(item.getTaskStartTime()) + "-" + format.format(item.getTaskEndTime());
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+ retrievalTaskOneVo.setTimeList(times);
|
|
|
return retrievalTaskOneVo;
|
|
|
}
|
|
|
|
|
|
@@ -459,4 +549,6 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
|
|
|
List<CoreMonitoringRetrievalTask> taskList = baseMapper.selectList(wrapper);
|
|
|
return taskList.stream().map(CoreMonitoringRetrievalTask::getId).map(String::valueOf).collect(Collectors.toList());
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
}
|