优化sql

This commit is contained in:
think 2025-02-07 18:28:23 +08:00
parent 533ac6300e
commit 3d47151a30

View File

@ -25,10 +25,7 @@ import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.*;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.*;
/**
* 派工明细 Mapper
@ -38,6 +35,45 @@ import java.util.Set;
@Mapper
public interface TaskDispatchDetailMapper extends BaseMapperX<TaskDispatchDetailDO> {
public static List<LocalDate> calculateDateRange(long inputDate) {
// long 类型的时间戳转换为 LocalDate 对象
Date date = new Date(inputDate);
LocalDate selectedDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
// 获取当前系统日期
LocalDate currentDate = LocalDate.now();
// 计算所选日期的前三天
LocalDate startDate = selectedDate.minusDays(3);
// 确保开始日期不早于当前日期
if (startDate.isBefore(currentDate)) {
startDate = currentDate;
}
List<LocalDate> dateRange = new ArrayList<>();
// 循环添加接下来的七天日期到列表中
for (int i = 0; i < 7; i++) {
LocalDate current = startDate.plusDays(i);
dateRange.add(current);
}
return dateRange;
}
/*public static void main(String[] args) {
// 示例假设传入的时间戳代表 2024 2 11
LocalDate exampleDate = LocalDate.of(2025, 2, 13);
long timestamp = exampleDate.atStartOfDay(ZoneId.systemDefault()).toInstant().toEpochMilli();
List<LocalDate> result = calculateDateRange(timestamp);
LocalDateTime sTime = null;
LocalDateTime eTime = null;
// 取出第一个日期并转换为 LocalDateTime
if (!result.isEmpty()) {
sTime = result.get(0).atStartOfDay();
}
// 取出最后一个日期并转换为 LocalDateTime同时设置时间为 23:59:59
if (!result.isEmpty()) {
eTime = result.get(result.size() - 1).atTime(23, 59, 59);
}
System.out.println("开始时间: " + sTime);
System.out.println("结束时间: " + eTime);
}*/
default PageResult<TaskDispatchDetailDO> selectPageGroup(YgjxPageReqVO pageReqVO) {
MPJLambdaWrapper<TaskDispatchDetailDO> query = new MPJLambdaWrapper<>();
query.select( "DATE_FORMAT(t.create_time, '%Y-%m') as yearMonth,\n" +
@ -244,7 +280,9 @@ public interface TaskDispatchDetailMapper extends BaseMapperX<TaskDispatchDetail
}
default PageResult<TaskDispatchDetailTotalVO> getTaskDispatchPageDetailTotal(TaskDispatchDetailTotalVO pageTotalVO,String maxLongtime) {
LocalDateTime sTime = null;
LocalDateTime sTimes = null;
LocalDateTime eTime = null;
LocalDateTime eTimes = null;
if (pageTotalVO.getStartTime() != null) {
sTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(pageTotalVO.getStartTime()), ZoneId.systemDefault());
}
@ -253,8 +291,25 @@ public interface TaskDispatchDetailMapper extends BaseMapperX<TaskDispatchDetail
}
BigDecimal maxTime = new BigDecimal(maxLongtime);//设备每日运行最大时长
// 计算时间范围
LocalDateTime startDate = sTime.minusDays(3).withHour(0).withMinute(0).withSecond(0);
LocalDateTime endDate = sTime.plusDays(3).withHour(23).withMinute(59).withSecond(59);
long timestamp = pageTotalVO.getStartTime();
List<LocalDate> result = calculateDateRange(timestamp);
// 取出第一个日期并转换为 LocalDateTime
if (!result.isEmpty()) {
sTimes = result.get(0).atStartOfDay();
}
// 取出最后一个日期并转换为 LocalDateTime同时设置时间为 23:59:59
if (!result.isEmpty()) {
eTimes = result.get(result.size() - 1).atTime(23, 59, 59);
}
System.out.println("开始时间: " + sTimes);
System.out.println("结束时间: " + eTimes);
LocalDateTime startDate = sTimes;
LocalDateTime endDate = eTimes;