添加分页参数

This commit is contained in:
温文静WWW 2025-08-21 10:13:34 +08:00
parent 675ab2f1e6
commit dc1da9fa71
6 changed files with 119 additions and 64 deletions

View File

@ -5,9 +5,7 @@ import com.aircraft.modules.order.domain.dto.*;
import com.aircraft.modules.order.service.IOrderMainService; import com.aircraft.modules.order.service.IOrderMainService;
import com.aircraft.modules.order.service.OrderAnalysisService; import com.aircraft.modules.order.service.OrderAnalysisService;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import io.swagger.annotations.Api; import io.swagger.annotations.*;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.poi.ss.formula.functions.T; import org.apache.poi.ss.formula.functions.T;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -45,7 +43,12 @@ public class OrderAnalysisController {
@ApiOperation("全部订单分析统计") @ApiOperation("全部订单分析统计")
@GetMapping @GetMapping
public ResponseEntity<OrderAnalysisResult<T>> analyzeAllOrders() { @ApiImplicitParams({
@ApiImplicitParam(name = "size", value = "分页大小", paramType = "query"),
@ApiImplicitParam(name = "page", value = "当前页面从1开始", paramType = "query")
})
public ResponseEntity<OrderAnalysisResult<T>> analyzeAllOrders(@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer size) {
try { try {
// 1. 获取数据库中所有订单数据 // 1. 获取数据库中所有订单数据
List<OrderMain> allOrders = iOrderMainService.queryAllOrders(); List<OrderMain> allOrders = iOrderMainService.queryAllOrders();
@ -55,7 +58,7 @@ public class OrderAnalysisController {
LOG.info("全部订单分析:未找到订单数据"); LOG.info("全部订单分析:未找到订单数据");
return ResponseEntity.badRequest().body(null); return ResponseEntity.badRequest().body(null);
} }
OrderAnalysisResult<T> result = orderAnalysisService.analyzeAllOrders(allOrders); OrderAnalysisResult<T> result = orderAnalysisService.analyzeAllOrders(allOrders, page, size);
return ResponseEntity.ok(result); return ResponseEntity.ok(result);
} catch (Exception e) { } catch (Exception e) {
LOG.error("全部订单分析失败", e); LOG.error("全部订单分析失败", e);
@ -65,12 +68,18 @@ public class OrderAnalysisController {
@ApiOperation("按日范围分析订单") @ApiOperation("按日范围分析订单")
@GetMapping("/day") @GetMapping("/day")
@ApiImplicitParams({
@ApiImplicitParam(name = "size", value = "分页大小", paramType = "query"),
@ApiImplicitParam(name = "page", value = "当前页面从1开始", paramType = "query")
})
//额外返回传入时间范围内的每日订单总量 //额外返回传入时间范围内的每日订单总量
public ResponseEntity<OrderAnalysisResult<List<DailyStat>>> analyzeByDayRange( public ResponseEntity<OrderAnalysisResult<List<DailyStat>>> analyzeByDayRange(
@ApiParam(value = "开始日期yyyy-MM-dd", required = true, example = "2025-01-01") @ApiParam(value = "开始日期yyyy-MM-dd", required = true, example = "2025-01-01")
@RequestParam("startDate") String startDate, @RequestParam("startDate") String startDate,
@ApiParam(value = "结束日期yyyy-MM-dd", required = true, example = "2025-11-01") @ApiParam(value = "结束日期yyyy-MM-dd", required = true, example = "2025-11-01")
@RequestParam("endDate") String endDate) { @RequestParam("endDate") String endDate,
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer size) {
try { try {
// 解析日期 // 解析日期
LocalDate start = LocalDate.parse(startDate, DATE_FORMATTER); LocalDate start = LocalDate.parse(startDate, DATE_FORMATTER);
@ -83,7 +92,7 @@ public class OrderAnalysisController {
} }
// 调用服务层 // 调用服务层
OrderAnalysisResult<List<DailyStat>> result = orderAnalysisService.analyzeByDayRange(start, end); OrderAnalysisResult<List<DailyStat>> result = orderAnalysisService.analyzeByDayRange(start, end,page,size);
LOG.info("按日分析完成,时间范围:{}至{}", startDate, endDate); LOG.info("按日分析完成,时间范围:{}至{}", startDate, endDate);
return ResponseEntity.ok(result); return ResponseEntity.ok(result);
} catch (Exception e) { } catch (Exception e) {
@ -94,12 +103,18 @@ public class OrderAnalysisController {
@ApiOperation("按月范围分析订单") @ApiOperation("按月范围分析订单")
@GetMapping("/month") @GetMapping("/month")
@ApiImplicitParams({
@ApiImplicitParam(name = "size", value = "分页大小", paramType = "query"),
@ApiImplicitParam(name = "page", value = "当前页面从1开始", paramType = "query")
})
//传入的时间范围某年的某月到某年的某月额外返回时间范围内的每月总订单量 //传入的时间范围某年的某月到某年的某月额外返回时间范围内的每月总订单量
public ResponseEntity<OrderAnalysisResult<List<MonthlyStat>>> analyzeByMonthRange( public ResponseEntity<OrderAnalysisResult<List<MonthlyStat>>> analyzeByMonthRange(
@ApiParam(value = "开始月份yyyy-MM", required = true, example = "2025-03") @ApiParam(value = "开始月份yyyy-MM", required = true, example = "2025-03")
@RequestParam("startDate") String startDate, @RequestParam("startDate") String startDate,
@ApiParam(value = "结束月份yyyy-MM", required = true, example = "2025-11") @ApiParam(value = "结束月份yyyy-MM", required = true, example = "2025-11")
@RequestParam("endDate") String endDate) { @RequestParam("endDate") String endDate,
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer size) {
try { try {
// 解析月份为当月第一天 // 解析月份为当月第一天
LocalDate start = LocalDate.parse(startDate + "-01", DATE_FORMATTER); LocalDate start = LocalDate.parse(startDate + "-01", DATE_FORMATTER);
@ -114,7 +129,7 @@ public class OrderAnalysisController {
} }
// 调用服务层 // 调用服务层
OrderAnalysisResult<List<MonthlyStat>> result = orderAnalysisService.analyzeByMonthRange(start, end); OrderAnalysisResult<List<MonthlyStat>> result = orderAnalysisService.analyzeByMonthRange(start, end,page,size);
LOG.info("按月分析完成,时间范围:{}至{}", startDate, endDate); LOG.info("按月分析完成,时间范围:{}至{}", startDate, endDate);
return ResponseEntity.ok(result); return ResponseEntity.ok(result);
} catch (Exception e) { } catch (Exception e) {
@ -125,12 +140,18 @@ public class OrderAnalysisController {
@ApiOperation("按季度范围分析订单") @ApiOperation("按季度范围分析订单")
@GetMapping("/quarter") @GetMapping("/quarter")
@ApiImplicitParams({
@ApiImplicitParam(name = "size", value = "分页大小", paramType = "query"),
@ApiImplicitParam(name = "page", value = "当前页面从1开始", paramType = "query")
})
//传入的时间范围某年的某季到某年的某季yyyy-Qn (: 2025-Q1)额外返回时间范围内的每季总订单量 //传入的时间范围某年的某季到某年的某季yyyy-Qn (: 2025-Q1)额外返回时间范围内的每季总订单量
public ResponseEntity<OrderAnalysisResult<List<QuarterlyStat>>> analyzeByQuarterRange( public ResponseEntity<OrderAnalysisResult<List<QuarterlyStat>>> analyzeByQuarterRange(
@ApiParam(value = "开始季度yyyy-Qn2025-Q1", required = true) @ApiParam(value = "开始季度yyyy-Qn2025-Q1", required = true)
@RequestParam("startDate") String startDate, @RequestParam("startDate") String startDate,
@ApiParam(value = "结束季度yyyy-Qn2025-Q4", required = true) @ApiParam(value = "结束季度yyyy-Qn2025-Q4", required = true)
@RequestParam("endDate") String endDate) { @RequestParam("endDate") String endDate,
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer size) {
try { try {
// 校验季度格式 // 校验季度格式
if (!QUARTER_PATTERN.matcher(startDate).matches() || !QUARTER_PATTERN.matcher(endDate).matches()) { if (!QUARTER_PATTERN.matcher(startDate).matches() || !QUARTER_PATTERN.matcher(endDate).matches()) {
@ -158,7 +179,7 @@ public class OrderAnalysisController {
} }
// 调用服务层 // 调用服务层
OrderAnalysisResult<List<QuarterlyStat>> result = orderAnalysisService.analyzeByQuarterRange(start, end); OrderAnalysisResult<List<QuarterlyStat>> result = orderAnalysisService.analyzeByQuarterRange(start, end,page,size);
LOG.info("按季度分析完成,时间范围:{}至{}", startDate, endDate); LOG.info("按季度分析完成,时间范围:{}至{}", startDate, endDate);
return ResponseEntity.ok(result); return ResponseEntity.ok(result);
} catch (Exception e) { } catch (Exception e) {
@ -170,12 +191,18 @@ public class OrderAnalysisController {
@ApiOperation("按年范围分析订单") @ApiOperation("按年范围分析订单")
@GetMapping("/year") @GetMapping("/year")
@ApiImplicitParams({
@ApiImplicitParam(name = "size", value = "分页大小", paramType = "query"),
@ApiImplicitParam(name = "page", value = "当前页面从1开始", paramType = "query")
})
//传入的时间范围某年到某年额外返回时间范围内的每年总订单量 //传入的时间范围某年到某年额外返回时间范围内的每年总订单量
public ResponseEntity<OrderAnalysisResult<List<YearlyStat>>> analyzeByYearRange( public ResponseEntity<OrderAnalysisResult<List<YearlyStat>>> analyzeByYearRange(
@ApiParam(value = "开始年份yyyy", required = true, example = "2023") @ApiParam(value = "开始年份yyyy", required = true, example = "2023")
@RequestParam("startDate") String startDate, @RequestParam("startDate") String startDate,
@ApiParam(value = "结束年份yyyy", required = true, example = "2025") @ApiParam(value = "结束年份yyyy", required = true, example = "2025")
@RequestParam("endDate") String endDate) { @RequestParam("endDate") String endDate,
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer size) {
try { try {
// 解析年份为当年第一天和最后一天 // 解析年份为当年第一天和最后一天
LocalDate start = LocalDate.parse(startDate + "-01-01", DATE_FORMATTER); LocalDate start = LocalDate.parse(startDate + "-01-01", DATE_FORMATTER);
@ -188,7 +215,7 @@ public class OrderAnalysisController {
} }
// 调用服务层 // 调用服务层
OrderAnalysisResult<List<YearlyStat>> result = orderAnalysisService.analyzeByYearRange(start, end); OrderAnalysisResult<List<YearlyStat>> result = orderAnalysisService.analyzeByYearRange(start, end,page,size);
LOG.info("按年分析完成,时间范围:{}至{}", startDate, endDate); LOG.info("按年分析完成,时间范围:{}至{}", startDate, endDate);
return ResponseEntity.ok(result); return ResponseEntity.ok(result);
} catch (Exception e) { } catch (Exception e) {

View File

@ -6,9 +6,7 @@ import com.aircraft.modules.order.mapper.OrderDetailMapper;
import com.aircraft.modules.order.service.IOrderDetailService; import com.aircraft.modules.order.service.IOrderDetailService;
import com.aircraft.modules.order.service.OrderDetailAnalysisService; import com.aircraft.modules.order.service.OrderDetailAnalysisService;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import io.swagger.annotations.Api; import io.swagger.annotations.*;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.poi.ss.formula.functions.T; import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
@ -48,7 +46,12 @@ public class OrderDetailAnalysisController {
@ApiOperation("全部子单任务分析统计") @ApiOperation("全部子单任务分析统计")
@GetMapping @GetMapping
public ResponseEntity<OrderDetailAnalysisResult<T>> analyzeAllOrderDetails() { @ApiImplicitParams({
@ApiImplicitParam(name = "size", value = "分页大小", paramType = "query"),
@ApiImplicitParam(name = "page", value = "当前页面从1开始", paramType = "query")
})
public ResponseEntity<OrderDetailAnalysisResult<T>> analyzeAllOrderDetails(@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer size) {
try { try {
// 1. 获取所有子单数据 // 1. 获取所有子单数据
List<OrderDetailDTO> allDetails = orderDetailMapper.getAllOrderDetail(); List<OrderDetailDTO> allDetails = orderDetailMapper.getAllOrderDetail();
@ -58,21 +61,28 @@ public class OrderDetailAnalysisController {
LOG.info("全部子单分析:未找到子单数据"); LOG.info("全部子单分析:未找到子单数据");
return ResponseEntity.badRequest().body(null); return ResponseEntity.badRequest().body(null);
} }
OrderDetailAnalysisResult<T> result = orderDetailAnalysisService.analyzeAllOrderDetails(allDetails); OrderDetailAnalysisResult<T> result = orderDetailAnalysisService.analyzeAllOrderDetails(allDetails, page, size);
return ResponseEntity.ok(result); return ResponseEntity.ok(result);
} catch (Exception e) { } catch (Exception e) {
LOG.error("全部子单分析失败", e); LOG.error("全部子单分析失败", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
} }
} }
@ApiOperation("按日范围分析子单任务") @ApiOperation("按日范围分析子单任务")
@GetMapping("/day") @GetMapping("/day")
@ApiImplicitParams({
@ApiImplicitParam(name = "size", value = "分页大小", paramType = "query"),
@ApiImplicitParam(name = "page", value = "当前页面从1开始", paramType = "query")
})
// 额外返回时间范围内任务列表 // 额外返回时间范围内任务列表
public ResponseEntity<OrderDetailAnalysisResult<List<DailyStat>>> analyzeByDayRange( public ResponseEntity<OrderDetailAnalysisResult<List<DailyStat>>> analyzeByDayRange(
@ApiParam(value = "开始日期yyyy-MM-dd", required = true, example = "2025-01-01") @ApiParam(value = "开始日期yyyy-MM-dd", required = true, example = "2025-01-01")
@RequestParam("startDate") String startDate, @RequestParam("startDate") String startDate,
@ApiParam(value = "结束日期yyyy-MM-dd", required = true, example = "2025-01-31") @ApiParam(value = "结束日期yyyy-MM-dd", required = true, example = "2025-01-31")
@RequestParam("endDate") String endDate) { @RequestParam("endDate") String endDate,
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer size) {
try { try {
// 解析并校验日期 // 解析并校验日期
LocalDate start = LocalDate.parse(startDate, DATE_FORMATTER); LocalDate start = LocalDate.parse(startDate, DATE_FORMATTER);
@ -82,7 +92,7 @@ public class OrderDetailAnalysisController {
return ResponseEntity.badRequest().body(null); return ResponseEntity.badRequest().body(null);
} }
OrderDetailAnalysisResult<List<DailyStat>> result = OrderDetailAnalysisResult<List<DailyStat>> result =
orderDetailAnalysisService.analyzeByDayRange(start, end); orderDetailAnalysisService.analyzeByDayRange(start, end,page,size);
LOG.info("子单按日分析完成,时间范围:{}至{}", startDate, endDate); LOG.info("子单按日分析完成,时间范围:{}至{}", startDate, endDate);
return ResponseEntity.ok(result); return ResponseEntity.ok(result);
} catch (Exception e) { } catch (Exception e) {
@ -94,12 +104,18 @@ public class OrderDetailAnalysisController {
@ApiOperation("按月范围分析子单任务") @ApiOperation("按月范围分析子单任务")
@GetMapping("/month") @GetMapping("/month")
@ApiImplicitParams({
@ApiImplicitParam(name = "size", value = "分页大小", paramType = "query"),
@ApiImplicitParam(name = "page", value = "当前页面从1开始", paramType = "query")
})
// 额外返回时间范围内任务列表 // 额外返回时间范围内任务列表
public ResponseEntity<OrderDetailAnalysisResult<List<MonthlyStat>>> analyzeByMonthRange( public ResponseEntity<OrderDetailAnalysisResult<List<MonthlyStat>>> analyzeByMonthRange(
@ApiParam(value = "开始月份yyyy-MM", required = true, example = "2025-01") @ApiParam(value = "开始月份yyyy-MM", required = true, example = "2025-01")
@RequestParam("startDate") String startDate, @RequestParam("startDate") String startDate,
@ApiParam(value = "结束月份yyyy-MM", required = true, example = "2025-03") @ApiParam(value = "结束月份yyyy-MM", required = true, example = "2025-03")
@RequestParam("endDate") String endDate) { @RequestParam("endDate") String endDate,
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer size) {
try { try {
// 解析月份为当月第一天和最后一天 // 解析月份为当月第一天和最后一天
LocalDate start = LocalDate.parse(startDate + "-01", DATE_FORMATTER); LocalDate start = LocalDate.parse(startDate + "-01", DATE_FORMATTER);
@ -112,7 +128,7 @@ public class OrderDetailAnalysisController {
} }
OrderDetailAnalysisResult<List<MonthlyStat>> result = OrderDetailAnalysisResult<List<MonthlyStat>> result =
orderDetailAnalysisService.analyzeByMonthRange(start, end); orderDetailAnalysisService.analyzeByMonthRange(start, end,page,size);
LOG.info("子单按月分析完成,时间范围:{}至{}", startDate, endDate); LOG.info("子单按月分析完成,时间范围:{}至{}", startDate, endDate);
return ResponseEntity.ok(result); return ResponseEntity.ok(result);
} catch (Exception e) { } catch (Exception e) {
@ -124,12 +140,18 @@ public class OrderDetailAnalysisController {
@ApiOperation("按季度范围分析子单任务") @ApiOperation("按季度范围分析子单任务")
@GetMapping("/quarter") @GetMapping("/quarter")
@ApiImplicitParams({
@ApiImplicitParam(name = "size", value = "分页大小", paramType = "query"),
@ApiImplicitParam(name = "page", value = "当前页面从1开始", paramType = "query")
})
// 额外返回时间范围内任务列表 // 额外返回时间范围内任务列表
public ResponseEntity<OrderDetailAnalysisResult<List<QuarterlyStat>>> analyzeByQuarterRange( public ResponseEntity<OrderDetailAnalysisResult<List<QuarterlyStat>>> analyzeByQuarterRange(
@ApiParam(value = "开始季度yyyy-Qn2025-Q1", required = true) @ApiParam(value = "开始季度yyyy-Qn2025-Q1", required = true)
@RequestParam("startDate") String startDate, @RequestParam("startDate") String startDate,
@ApiParam(value = "结束季度yyyy-Qn2025-Q4", required = true) @ApiParam(value = "结束季度yyyy-Qn2025-Q4", required = true)
@RequestParam("endDate") String endDate) { @RequestParam("endDate") String endDate,
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer size) {
try { try {
// 校验季度格式 // 校验季度格式
if (!QUARTER_PATTERN.matcher(startDate).matches() || !QUARTER_PATTERN.matcher(endDate).matches()) { if (!QUARTER_PATTERN.matcher(startDate).matches() || !QUARTER_PATTERN.matcher(endDate).matches()) {
@ -156,7 +178,7 @@ public class OrderDetailAnalysisController {
// 调用服务层按季度统计子单量路线热度操作员效率 // 调用服务层按季度统计子单量路线热度操作员效率
OrderDetailAnalysisResult<List<QuarterlyStat>> result = OrderDetailAnalysisResult<List<QuarterlyStat>> result =
orderDetailAnalysisService.analyzeByQuarterRange(start, end); orderDetailAnalysisService.analyzeByQuarterRange(start, end,page,size);
LOG.info("子单按季度分析完成,时间范围:{}至{}", startDate, endDate); LOG.info("子单按季度分析完成,时间范围:{}至{}", startDate, endDate);
return ResponseEntity.ok(result); return ResponseEntity.ok(result);
} catch (Exception e) { } catch (Exception e) {
@ -168,12 +190,18 @@ public class OrderDetailAnalysisController {
@ApiOperation("按年范围分析子单任务") @ApiOperation("按年范围分析子单任务")
@GetMapping("/year") @GetMapping("/year")
@ApiImplicitParams({
@ApiImplicitParam(name = "size", value = "分页大小", paramType = "query"),
@ApiImplicitParam(name = "page", value = "当前页面从1开始", paramType = "query")
})
// 额外返回时间范围内任务列表 // 额外返回时间范围内任务列表
public ResponseEntity<OrderDetailAnalysisResult<List<YearlyStat>>> analyzeByYearRange( public ResponseEntity<OrderDetailAnalysisResult<List<YearlyStat>>> analyzeByYearRange(
@ApiParam(value = "开始年份yyyy", required = true, example = "2023") @ApiParam(value = "开始年份yyyy", required = true, example = "2023")
@RequestParam("startDate") String startDate, @RequestParam("startDate") String startDate,
@ApiParam(value = "结束年份yyyy", required = true, example = "2025") @ApiParam(value = "结束年份yyyy", required = true, example = "2025")
@RequestParam("endDate") String endDate) { @RequestParam("endDate") String endDate,
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer size) {
try { try {
// 解析年份为当年第一天和最后一天 // 解析年份为当年第一天和最后一天
LocalDate start = LocalDate.parse(startDate + "-01-01", DATE_FORMATTER); LocalDate start = LocalDate.parse(startDate + "-01-01", DATE_FORMATTER);
@ -186,7 +214,7 @@ public class OrderDetailAnalysisController {
// 调用服务层按年统计子单总量设备/路线年度表现载人特征变化 // 调用服务层按年统计子单总量设备/路线年度表现载人特征变化
OrderDetailAnalysisResult<List<YearlyStat>> result = OrderDetailAnalysisResult<List<YearlyStat>> result =
orderDetailAnalysisService.analyzeByYearRange(start, end); orderDetailAnalysisService.analyzeByYearRange(start, end,page,size);
LOG.info("子单按年分析完成,时间范围:{}至{}", startDate, endDate); LOG.info("子单按年分析完成,时间范围:{}至{}", startDate, endDate);
return ResponseEntity.ok(result); return ResponseEntity.ok(result);
} catch (Exception e) { } catch (Exception e) {

View File

@ -10,13 +10,13 @@ import java.util.List;
@Service @Service
public interface OrderAnalysisService { public interface OrderAnalysisService {
OrderAnalysisResult<List<DailyStat>> analyzeByDayRange(LocalDate start, LocalDate end); OrderAnalysisResult<List<DailyStat>> analyzeByDayRange(LocalDate start, LocalDate end, Integer page, Integer size);
OrderAnalysisResult<List<MonthlyStat>> analyzeByMonthRange(LocalDate start, LocalDate end); OrderAnalysisResult<List<MonthlyStat>> analyzeByMonthRange(LocalDate start, LocalDate end, Integer page, Integer size);
OrderAnalysisResult<List<QuarterlyStat>> analyzeByQuarterRange(LocalDate start, LocalDate end); OrderAnalysisResult<List<QuarterlyStat>> analyzeByQuarterRange(LocalDate start, LocalDate end, Integer page, Integer size);
OrderAnalysisResult<List<YearlyStat>> analyzeByYearRange(LocalDate start, LocalDate end); OrderAnalysisResult<List<YearlyStat>> analyzeByYearRange(LocalDate start, LocalDate end, Integer page, Integer size);
<T> OrderAnalysisResult<T> analyzeAllOrders(List<OrderMain> allOrders); <T> OrderAnalysisResult<T> analyzeAllOrders(List<OrderMain> allOrders, Integer page, Integer size);
} }

View File

@ -10,13 +10,13 @@ import java.util.List;
@Service @Service
public interface OrderDetailAnalysisService { public interface OrderDetailAnalysisService {
OrderDetailAnalysisResult<T> analyzeAllOrderDetails(List<OrderDetailDTO> allDetails); OrderDetailAnalysisResult<T> analyzeAllOrderDetails(List<OrderDetailDTO> allDetails,Integer page,Integer size);
OrderDetailAnalysisResult<List<DailyStat>> analyzeByDayRange(LocalDate start, LocalDate end); OrderDetailAnalysisResult<List<DailyStat>> analyzeByDayRange(LocalDate start, LocalDate end,Integer page,Integer size);
OrderDetailAnalysisResult<List<MonthlyStat>> analyzeByMonthRange(LocalDate start, LocalDate end); OrderDetailAnalysisResult<List<MonthlyStat>> analyzeByMonthRange(LocalDate start, LocalDate end,Integer page,Integer size);
OrderDetailAnalysisResult<List<QuarterlyStat>> analyzeByQuarterRange(LocalDate start, LocalDate end); OrderDetailAnalysisResult<List<QuarterlyStat>> analyzeByQuarterRange(LocalDate start, LocalDate end,Integer page,Integer size);
OrderDetailAnalysisResult<List<YearlyStat>> analyzeByYearRange(LocalDate start, LocalDate end); OrderDetailAnalysisResult<List<YearlyStat>> analyzeByYearRange(LocalDate start, LocalDate end,Integer page,Integer size);
} }

View File

@ -62,7 +62,7 @@ public class OrderAnalysisServiceImpl implements OrderAnalysisService {
* 按日范围分析订单 * 按日范围分析订单
*/ */
@Override @Override
public OrderAnalysisResult<List<DailyStat>> analyzeByDayRange(LocalDate start, LocalDate end) { public OrderAnalysisResult<List<DailyStat>> analyzeByDayRange(LocalDate start, LocalDate end, Integer page, Integer size) {
// 1. 查询时间范围内的所有订单 // 1. 查询时间范围内的所有订单
List<OrderMain> orders = queryOrdersByDateRange(start, end); List<OrderMain> orders = queryOrdersByDateRange(start, end);
if (CollectionUtils.isEmpty(orders)) { if (CollectionUtils.isEmpty(orders)) {
@ -94,7 +94,7 @@ public class OrderAnalysisServiceImpl implements OrderAnalysisService {
} }
// 4. 构建并返回完整结果 // 4. 构建并返回完整结果
return buildAnalysisResult(orders, dailyStats); return buildAnalysisResult(orders, dailyStats, page, size);
} }
@ -102,7 +102,7 @@ public class OrderAnalysisServiceImpl implements OrderAnalysisService {
* 按月范围分析订单 * 按月范围分析订单
*/ */
@Override @Override
public OrderAnalysisResult<List<MonthlyStat>> analyzeByMonthRange(LocalDate start, LocalDate end) { public OrderAnalysisResult<List<MonthlyStat>> analyzeByMonthRange(LocalDate start, LocalDate end, Integer page, Integer size) {
// 1. 查询时间范围内的所有订单 // 1. 查询时间范围内的所有订单
List<OrderMain> orders = queryOrdersByDateRange(start, end); List<OrderMain> orders = queryOrdersByDateRange(start, end);
if (CollectionUtils.isEmpty(orders)) { if (CollectionUtils.isEmpty(orders)) {
@ -134,7 +134,7 @@ public class OrderAnalysisServiceImpl implements OrderAnalysisService {
} }
// 4. 构建并返回完整结果 // 4. 构建并返回完整结果
return buildAnalysisResult(orders, monthlyStats); return buildAnalysisResult(orders, monthlyStats, page, size);
} }
@ -142,7 +142,7 @@ public class OrderAnalysisServiceImpl implements OrderAnalysisService {
* 按季度范围分析订单 * 按季度范围分析订单
*/ */
@Override @Override
public OrderAnalysisResult<List<QuarterlyStat>> analyzeByQuarterRange(LocalDate start, LocalDate end) { public OrderAnalysisResult<List<QuarterlyStat>> analyzeByQuarterRange(LocalDate start, LocalDate end,Integer page,Integer size) {
// 1. 查询时间范围内的所有订单 // 1. 查询时间范围内的所有订单
List<OrderMain> orders = queryOrdersByDateRange(start, end); List<OrderMain> orders = queryOrdersByDateRange(start, end);
if (CollectionUtils.isEmpty(orders)) { if (CollectionUtils.isEmpty(orders)) {
@ -183,7 +183,7 @@ public class OrderAnalysisServiceImpl implements OrderAnalysisService {
} }
// 4. 构建并返回完整结果 // 4. 构建并返回完整结果
return buildAnalysisResult(orders, quarterlyStats); return buildAnalysisResult(orders, quarterlyStats,page,size);
} }
@ -191,7 +191,7 @@ public class OrderAnalysisServiceImpl implements OrderAnalysisService {
* 按年范围分析订单 * 按年范围分析订单
*/ */
@Override @Override
public OrderAnalysisResult<List<YearlyStat>> analyzeByYearRange(LocalDate start, LocalDate end) { public OrderAnalysisResult<List<YearlyStat>> analyzeByYearRange(LocalDate start, LocalDate end,Integer page,Integer size) {
// 1. 查询时间范围内的所有订单 // 1. 查询时间范围内的所有订单
List<OrderMain> orders = queryOrdersByDateRange(start, end); List<OrderMain> orders = queryOrdersByDateRange(start, end);
if (CollectionUtils.isEmpty(orders)) { if (CollectionUtils.isEmpty(orders)) {
@ -221,12 +221,12 @@ public class OrderAnalysisServiceImpl implements OrderAnalysisService {
} }
// 4. 构建并返回完整结果 // 4. 构建并返回完整结果
return buildAnalysisResult(orders, yearlyStats); return buildAnalysisResult(orders, yearlyStats,page,size);
} }
@Override @Override
public <T> OrderAnalysisResult<T> analyzeAllOrders(List<OrderMain> allOrders) { public <T> OrderAnalysisResult<T> analyzeAllOrders(List<OrderMain> allOrders, Integer page, Integer size) {
return buildAnalysisOrdersResult(allOrders); return buildAnalysisOrdersResult(allOrders, page, size);
} }
@ -246,15 +246,15 @@ public class OrderAnalysisServiceImpl implements OrderAnalysisService {
/** /**
* 构建完整的订单分析结果 * 构建完整的订单分析结果
*/ */
private <T> OrderAnalysisResult<T> buildAnalysisResult(List<OrderMain> orders, T timeSeriesData) { private <T> OrderAnalysisResult<T> buildAnalysisResult(List<OrderMain> orders, T timeSeriesData, Integer page, Integer size) {
OrderAnalysisResult<T> result = buildAnalysisOrdersResult(orders); OrderAnalysisResult<T> result = buildAnalysisOrdersResult(orders, page, size);
// 6. 时间序列数据///年统计 // 6. 时间序列数据///年统计
result.setTimeSeriesData(timeSeriesData); result.setTimeSeriesData(timeSeriesData);
return result; return result;
} }
//处理订单返回结果 //处理订单返回结果
private <T> OrderAnalysisResult<T> buildAnalysisOrdersResult(List<OrderMain> orders) { private <T> OrderAnalysisResult<T> buildAnalysisOrdersResult(List<OrderMain> orders, Integer current, Integer size) {
OrderAnalysisResult<T> result = new OrderAnalysisResult<>(); OrderAnalysisResult<T> result = new OrderAnalysisResult<>();
// 1. 基础统计指标 // 1. 基础统计指标
@ -274,7 +274,7 @@ public class OrderAnalysisServiceImpl implements OrderAnalysisService {
result.setCompletionRate(orders.isEmpty() ? 0D : (completedCount * 100.0) / orders.size()); result.setCompletionRate(orders.isEmpty() ? 0D : (completedCount * 100.0) / orders.size());
// 3. 分页信息和订单列表默认取第一页每页10条实际可根据前端参数调整 // 3. 分页信息和订单列表默认取第一页每页10条实际可根据前端参数调整
Page<OrderMain> page = new Page<>(1, 10); Page<OrderMain> page = new Page<>(current, size);
result.setPageInfo(buildPageInfo(page, orders.size())); result.setPageInfo(buildPageInfo(page, orders.size()));
// 截取分页数据实际应在SQL层分页此处简化 // 截取分页数据实际应在SQL层分页此处简化
List<OrderMain> pageOrders = orders.stream() List<OrderMain> pageOrders = orders.stream()

View File

@ -60,12 +60,12 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
private IOrderDetailService orderDetailService; private IOrderDetailService orderDetailService;
@Override @Override
public OrderDetailAnalysisResult<T> analyzeAllOrderDetails(List<OrderDetailDTO> allDetails) { public OrderDetailAnalysisResult<T> analyzeAllOrderDetails(List<OrderDetailDTO> allDetails,Integer page,Integer size) {
return buildOrderDetailAnalysisResult(allDetails); return buildOrderDetailAnalysisResult(allDetails,page,size);
} }
@Override @Override
public OrderDetailAnalysisResult<List<DailyStat>> analyzeByDayRange(LocalDate start, LocalDate end) { public OrderDetailAnalysisResult<List<DailyStat>> analyzeByDayRange(LocalDate start, LocalDate end,Integer page,Integer size) {
// 1. 查询时间范围内的所有订单 // 1. 查询时间范围内的所有订单
List<OrderDetailDTO> orders = queryOrderDetailByDateRange(start, end); List<OrderDetailDTO> orders = queryOrderDetailByDateRange(start, end);
if (CollectionUtils.isEmpty(orders)) { if (CollectionUtils.isEmpty(orders)) {
@ -103,11 +103,11 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
current = current.plusDays(1); // 移至下一天 current = current.plusDays(1); // 移至下一天
} }
// 4. 构建并返回完整结果 // 4. 构建并返回完整结果
return buildAnalysisResult(orders, dailyStats); return buildAnalysisResult(orders, dailyStats,page,size);
} }
@Override @Override
public OrderDetailAnalysisResult<List<MonthlyStat>> analyzeByMonthRange(LocalDate start, LocalDate end) { public OrderDetailAnalysisResult<List<MonthlyStat>> analyzeByMonthRange(LocalDate start, LocalDate end,Integer page,Integer size) {
// 1. 查询时间范围内的所有订单 // 1. 查询时间范围内的所有订单
List<OrderDetailDTO> orders = queryOrderDetailByDateRange(start, end); List<OrderDetailDTO> orders = queryOrderDetailByDateRange(start, end);
if (CollectionUtils.isEmpty(orders)) { if (CollectionUtils.isEmpty(orders)) {
@ -142,11 +142,11 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
} }
// 4. 构建并返回完整结果 // 4. 构建并返回完整结果
return buildAnalysisResult(orders, monthlyStats); return buildAnalysisResult(orders, monthlyStats,page,size);
} }
@Override @Override
public OrderDetailAnalysisResult<List<QuarterlyStat>> analyzeByQuarterRange(LocalDate start, LocalDate end) { public OrderDetailAnalysisResult<List<QuarterlyStat>> analyzeByQuarterRange(LocalDate start, LocalDate end,Integer page,Integer size) {
// 1. 查询时间范围内的所有订单 // 1. 查询时间范围内的所有订单
List<OrderDetailDTO> orders = queryOrderDetailByDateRange(start, end); List<OrderDetailDTO> orders = queryOrderDetailByDateRange(start, end);
if (CollectionUtils.isEmpty(orders)) { if (CollectionUtils.isEmpty(orders)) {
@ -190,11 +190,11 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
} }
// 4. 构建并返回完整结果 // 4. 构建并返回完整结果
return buildAnalysisResult(orders, quarterlyStats); return buildAnalysisResult(orders, quarterlyStats,page,size);
} }
@Override @Override
public OrderDetailAnalysisResult<List<YearlyStat>> analyzeByYearRange(LocalDate start, LocalDate end) { public OrderDetailAnalysisResult<List<YearlyStat>> analyzeByYearRange(LocalDate start, LocalDate end,Integer page,Integer size) {
// 1. 查询时间范围内的所有订单 // 1. 查询时间范围内的所有订单
List<OrderDetailDTO> orders = queryOrderDetailByDateRange(start, end); List<OrderDetailDTO> orders = queryOrderDetailByDateRange(start, end);
if (CollectionUtils.isEmpty(orders)) { if (CollectionUtils.isEmpty(orders)) {
@ -227,7 +227,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
} }
// 4. 构建并返回完整结果 // 4. 构建并返回完整结果
return buildAnalysisResult(orders, yearlyStats); return buildAnalysisResult(orders, yearlyStats,page,size);
} }
// ====================== 通用工具方法 ====================== // ====================== 通用工具方法 ======================
@ -246,8 +246,8 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
/** /**
* 构建完整的订单分析结果 * 构建完整的订单分析结果
*/ */
private <T> OrderDetailAnalysisResult<T> buildAnalysisResult(List<OrderDetailDTO> orderDetails, T timeSeriesData) { private <T> OrderDetailAnalysisResult<T> buildAnalysisResult(List<OrderDetailDTO> orderDetails, T timeSeriesData,Integer page,Integer size) {
OrderDetailAnalysisResult<T> result = buildOrderDetailAnalysisResult(orderDetails); OrderDetailAnalysisResult<T> result = buildOrderDetailAnalysisResult(orderDetails,page,size);
// 时间序列数据///年统计 // 时间序列数据///年统计
result.setTimeSeriesData(timeSeriesData); result.setTimeSeriesData(timeSeriesData);
//通过子单id获取orderId(主单id) //通过子单id获取orderId(主单id)
@ -261,7 +261,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
/** /**
* 处理任务分析结果 * 处理任务分析结果
*/ */
private <T> OrderDetailAnalysisResult<T> buildOrderDetailAnalysisResult(List<OrderDetailDTO> orderDetails) { private <T> OrderDetailAnalysisResult<T> buildOrderDetailAnalysisResult(List<OrderDetailDTO> orderDetails,Integer page,Integer size) {
OrderDetailAnalysisResult<T> result = new OrderDetailAnalysisResult<>(); OrderDetailAnalysisResult<T> result = new OrderDetailAnalysisResult<>();
// 1. 基础统计指标 // 1. 基础统计指标
@ -301,7 +301,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
result.setRouteDistribution(calculateRouteDistribution(orderDetails)); result.setRouteDistribution(calculateRouteDistribution(orderDetails));
// 6. 分页信息和订单列表默认取第一页每页10条 // 6. 分页信息和订单列表默认取第一页每页10条
PageInfo pageInfo = buildTaskPageInfo(orderDetails, 1, 10); PageInfo pageInfo = buildTaskPageInfo(orderDetails, page, size);
result.setPageInfo(pageInfo); result.setPageInfo(pageInfo);
result.setOrderDetailList(getPagedTasks(orderDetails, pageInfo)); result.setOrderDetailList(getPagedTasks(orderDetails, pageInfo));