@ -6,6 +6,7 @@ import com.aircraft.modules.order.controller.OrderAnalysisController;
import com.aircraft.modules.order.domain.OrderDetail ;
import com.aircraft.modules.order.domain.dto.* ;
import com.aircraft.modules.order.mapper.OrderDetailMapper ;
import com.aircraft.modules.order.mapper.OrderMainMapper ;
import com.aircraft.modules.order.service.IOrderDetailService ;
import com.aircraft.modules.order.service.OrderDetailAnalysisService ;
import com.aircraft.modules.route.domain.CpRoute ;
@ -45,7 +46,8 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
private static final Integer STATUS_PROCESSING = 1 ; / / 进行中
private static final Integer STATUS_COMPLETED = 2 ; / / 已完成
private static final Integer STATUS_FAILED = 3 ; / / 执行失败
@Autowired
private OrderMainMapper orderMainMapper ;
@Autowired
private OrderDetailMapper orderDetailMapper ;
@Autowired
@ -58,14 +60,14 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
private IOrderDetailService orderDetailService ;
@Override
public OrderDetailAnalysisResult < T > analyzeAllOrderDetails ( List < OrderDetail > allDetails ) {
public OrderDetailAnalysisResult < T > analyzeAllOrderDetails ( List < OrderDetail DTO > allDetails ) {
return buildOrderDetailAnalysisResult ( allDetails ) ;
}
@Override
public OrderDetailAnalysisResult < List < DailyStat > > analyzeByDayRange ( LocalDate start , LocalDate end ) {
/ / 1 . 查询时间范围内的所有订单
List < OrderDetail > orders = queryOrderDetailByDateRange ( start , end ) ;
List < OrderDetail DTO > orders = queryOrderDetailByDateRange ( start , end ) ;
if ( CollectionUtils . isEmpty ( orders ) ) {
return buildEmptyResult ( ) ;
}
@ -107,7 +109,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
@Override
public OrderDetailAnalysisResult < List < MonthlyStat > > analyzeByMonthRange ( LocalDate start , LocalDate end ) {
/ / 1 . 查询时间范围内的所有订单
List < OrderDetail > orders = queryOrderDetailByDateRange ( start , end ) ;
List < OrderDetail DTO > orders = queryOrderDetailByDateRange ( start , end ) ;
if ( CollectionUtils . isEmpty ( orders ) ) {
return buildEmptyResult ( ) ;
}
@ -146,7 +148,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
@Override
public OrderDetailAnalysisResult < List < QuarterlyStat > > analyzeByQuarterRange ( LocalDate start , LocalDate end ) {
/ / 1 . 查询时间范围内的所有订单
List < OrderDetail > orders = queryOrderDetailByDateRange ( start , end ) ;
List < OrderDetail DTO > orders = queryOrderDetailByDateRange ( start , end ) ;
if ( CollectionUtils . isEmpty ( orders ) ) {
return buildEmptyResult ( ) ;
}
@ -194,7 +196,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
@Override
public OrderDetailAnalysisResult < List < YearlyStat > > analyzeByYearRange ( LocalDate start , LocalDate end ) {
/ / 1 . 查询时间范围内的所有订单
List < OrderDetail > orders = queryOrderDetailByDateRange ( start , end ) ;
List < OrderDetail DTO > orders = queryOrderDetailByDateRange ( start , end ) ;
if ( CollectionUtils . isEmpty ( orders ) ) {
return buildEmptyResult ( ) ;
}
@ -233,28 +235,33 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
/ * *
* 根据日期范围查询订单
* /
private List < OrderDetail > queryOrderDetailByDateRange ( LocalDate start , LocalDate end ) {
private List < OrderDetail DTO > queryOrderDetailByDateRange ( LocalDate start , LocalDate end ) {
/ / MyBatis Plus 条件构造器 : 查询 create_time 在 [ start , end ] 范围内的订单
LambdaQueryWrapper < OrderDetail > queryWrapper = new LambdaQueryWrapper < > ( ) ;
queryWrapper. ge ( OrderDetail : : getCreateTime , start . atStartOfDay ( ) ) / / 开始时间 : 当天00 : 00 : 00
. le ( OrderDetail : : getCreateTime , end . atTime ( 23 , 59 , 59 ) ) ; / / 结束时间 : 当天23 : 59 : 59
return orderDetailMapper . selectList( queryWrapper ) ;
/ / 转换日期为包含时间的LocalDateTime
LocalDateTime startTime = start . atStartOfDay ( ) ; / / 开始时间 : 当天00 : 00 : 00
LocalDateTime endTime = end . atTime ( 23 , 59 , 59 ) ; / / 结束时间 : 当天23 : 59 : 59
return orderDetailMapper . queryByDateRange( startTime , endTime ) ;
}
/ * *
* 构建完整的订单分析结果
* /
private < T > OrderDetailAnalysisResult < T > buildAnalysisResult ( List < OrderDetail > orderDetails , T timeSeriesData ) {
private < T > OrderDetailAnalysisResult < T > buildAnalysisResult ( List < OrderDetail DTO > orderDetails , T timeSeriesData ) {
OrderDetailAnalysisResult < T > result = buildOrderDetailAnalysisResult ( orderDetails ) ;
/ / 时间序列数据 ( 日 / 月 / 季 / 年统计 )
result . setTimeSeriesData ( timeSeriesData ) ;
/ / 通过子单id获取orderId ( 主单id )
/ / Long orderId = orderDetailMapper . getOrderIdById ( ) ;
/ / / / 通过orderId获取主单订单编号
/ / Long orderNo = orderMainMapper . getOrderNo ( orderId ) ;
/ / result . setOrderNo ( orderNo ) ;
return result ;
}
/ * *
* 处理任务分析结果
* /
private < T > OrderDetailAnalysisResult < T > buildOrderDetailAnalysisResult ( List < OrderDetail > orderDetails ) {
private < T > OrderDetailAnalysisResult < T > buildOrderDetailAnalysisResult ( List < OrderDetail DTO > orderDetails ) {
OrderDetailAnalysisResult < T > result = new OrderDetailAnalysisResult < > ( ) ;
/ / 1 . 基础统计指标
@ -341,7 +348,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
}
/ / 计算平均任务周期
private double calculateAverageTaskCycle ( List < OrderDetail > orderDetails ) {
private double calculateAverageTaskCycle ( List < OrderDetail DTO > orderDetails ) {
/ / 获取任务数
List < OrderDetail > completedTasks = orderDetails . stream ( )
. filter ( task - > task . getOrderItemStatus ( ) = = STATUS_COMPLETED )
@ -385,7 +392,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
/ * *
* 按状态统计时间范围内的任务数量
* /
private long countTasksByStatus ( List < OrderDetail > tasks , Integer status ) {
private long countTasksByStatus ( List < OrderDetail DTO > tasks , Integer status ) {
return tasks . stream ( )
. filter ( task - > status . equals ( task . getOrderItemStatus ( ) ) )
. count ( ) ;
@ -394,7 +401,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
/ * *
* 按日期和状态统计每日订单数量
* /
private Map < String , Long > calculateDailyStatusCount ( List < OrderDetail > orderDetails , Integer status ) {
private Map < String , Long > calculateDailyStatusCount ( List < OrderDetail DTO > orderDetails , Integer status ) {
return orderDetails . stream ( )
. filter ( order - > order . getOrderItemStatus ( ) . equals ( status ) )
. collect ( Collectors . groupingBy (
@ -406,7 +413,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
/ * *
* 按月份和状态统计每月订单数量
* /
private Map < String , Long > calculateMonthlyStatusCount ( List < OrderDetail > orderDetails , Integer status ) {
private Map < String , Long > calculateMonthlyStatusCount ( List < OrderDetail DTO > orderDetails , Integer status ) {
return orderDetails . stream ( )
. filter ( order - > order . getOrderItemStatus ( ) . equals ( status ) )
. collect ( Collectors . groupingBy (
@ -418,7 +425,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
/ * *
* 按季节和状态统计每计季节订单数量
* /
private Map < String , Long > calculateQuarterlyStatusCount ( List < OrderDetail > orderDetails , Integer status ) {
private Map < String , Long > calculateQuarterlyStatusCount ( List < OrderDetail DTO > orderDetails , Integer status ) {
return orderDetails . stream ( )
. filter ( order - > order . getOrderItemStatus ( ) . equals ( status ) )
. collect ( Collectors . groupingBy (
@ -430,7 +437,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
/ * *
* 按年份和状态统计每计年订单数量
* /
private Map < String , Long > calculateYearlyStatusCount ( List < OrderDetail > orderDetails , Integer status ) {
private Map < String , Long > calculateYearlyStatusCount ( List < OrderDetail DTO > orderDetails , Integer status ) {
return orderDetails . stream ( )
. filter ( order - > order . getOrderItemStatus ( ) . equals ( status ) )
. collect ( Collectors . groupingBy (
@ -455,7 +462,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
/ * *
* 构建任务分页信息
* /
private PageInfo buildTaskPageInfo ( List < OrderDetail > tasks , int pageNum , int pageSize ) {
private PageInfo buildTaskPageInfo ( List < OrderDetail DTO > tasks , int pageNum , int pageSize ) {
PageInfo pageInfo = new PageInfo ( ) ;
pageInfo . setPageNum ( pageNum ) ;
pageInfo . setPageSize ( pageSize ) ;
@ -466,7 +473,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
/ * *
* 获取分页后的任务列表
* /
private List < OrderDetail > getPagedTasks ( List < OrderDetail > tasks , PageInfo pageInfo ) {
private List < OrderDetail DTO > getPagedTasks ( List < OrderDetail DTO > tasks , PageInfo pageInfo ) {
int start = ( pageInfo . getPageNum ( ) - 1 ) * pageInfo . getPageSize ( ) ;
int end = Math . min ( start + pageInfo . getPageSize ( ) , tasks . size ( ) ) ;
return tasks . subList ( start , end ) ;
@ -492,7 +499,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
/ * *
* 计算景区内各路线的任务分布
* /
public List < RouteStat > calculateRouteDistribution ( List < OrderDetail > orderDetails ) {
public List < RouteStat > calculateRouteDistribution ( List < OrderDetail DTO > orderDetails ) {
/ / 1 . 校验输入
if ( CollectionUtils . isEmpty ( orderDetails ) ) {
return Collections . emptyList ( ) ;