Compare commits

..

No commits in common. "675ab2f1e677c01f9ee60e9a39253632e6b528cb" and "eb8d98af011f54266a2fc2793583cd8560098ef4" have entirely different histories.

7 changed files with 25 additions and 64 deletions

View File

@ -2,7 +2,6 @@ package com.aircraft.modules.order.controller;
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.service.IOrderDetailService;
import com.aircraft.modules.order.service.OrderDetailAnalysisService;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@ -38,9 +37,6 @@ public class OrderDetailAnalysisController {
@Autowired
private IOrderDetailService orderDetailService;
@Autowired
private OrderDetailMapper orderDetailMapper;
// 日期格式化器
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
private static final Pattern QUARTER_PATTERN = Pattern.compile("^\\d{4}-Q[1-4]$");
@ -51,7 +47,7 @@ public class OrderDetailAnalysisController {
public ResponseEntity<OrderDetailAnalysisResult<T>> analyzeAllOrderDetails() {
try {
// 1. 获取所有子单数据
List<OrderDetailDTO> allDetails = orderDetailMapper.getAllOrderDetail();
List<OrderDetail> allDetails = orderDetailService.list();
// 2. 校验数据
if (CollectionUtils.isEmpty(allDetails)) {

View File

@ -1,9 +0,0 @@
package com.aircraft.modules.order.domain.dto;
import com.aircraft.modules.order.domain.OrderDetail;
import lombok.Data;
@Data
public class OrderDetailDTO extends OrderDetail {
private String orderNo; //主单订单编号
}

View File

@ -1,11 +1,9 @@
package com.aircraft.modules.order.mapper;
import com.aircraft.modules.order.domain.OrderDetail;
import com.aircraft.modules.order.domain.dto.OrderDetailDTO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
import java.util.List;
/**
@ -20,7 +18,6 @@ import java.util.List;
public interface OrderDetailMapper extends BaseMapper<OrderDetail> {
List<OrderDetail> getOrderDetailsByOrderIds(List<Long> orderIds);
List<OrderDetailDTO> queryByDateRange(LocalDateTime startTime, LocalDateTime endTime);
List<OrderDetailDTO> getAllOrderDetail();
List<OrderDetail> getOrderDetailsByOrderId(Long id);
}

View File

@ -1,7 +1,6 @@
package com.aircraft.modules.order.service;
import com.aircraft.modules.order.domain.OrderDetail;
import com.aircraft.modules.order.domain.dto.OrderDetailDTO;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;

View File

@ -10,7 +10,7 @@ import java.util.List;
@Service
public interface OrderDetailAnalysisService {
OrderDetailAnalysisResult<T> analyzeAllOrderDetails(List<OrderDetailDTO> allDetails);
OrderDetailAnalysisResult<T> analyzeAllOrderDetails(List<OrderDetail> allDetails);
OrderDetailAnalysisResult<List<DailyStat>> analyzeByDayRange(LocalDate start, LocalDate end);

View File

@ -6,7 +6,6 @@ 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;
@ -46,8 +45,7 @@ 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
@ -60,14 +58,14 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
private IOrderDetailService orderDetailService;
@Override
public OrderDetailAnalysisResult<T> analyzeAllOrderDetails(List<OrderDetailDTO> allDetails) {
public OrderDetailAnalysisResult<T> analyzeAllOrderDetails(List<OrderDetail> allDetails) {
return buildOrderDetailAnalysisResult(allDetails);
}
@Override
public OrderDetailAnalysisResult<List<DailyStat>> analyzeByDayRange(LocalDate start, LocalDate end) {
// 1. 查询时间范围内的所有订单
List<OrderDetailDTO> orders = queryOrderDetailByDateRange(start, end);
List<OrderDetail> orders = queryOrderDetailByDateRange(start, end);
if (CollectionUtils.isEmpty(orders)) {
return buildEmptyResult();
}
@ -109,7 +107,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
@Override
public OrderDetailAnalysisResult<List<MonthlyStat>> analyzeByMonthRange(LocalDate start, LocalDate end) {
// 1. 查询时间范围内的所有订单
List<OrderDetailDTO> orders = queryOrderDetailByDateRange(start, end);
List<OrderDetail> orders = queryOrderDetailByDateRange(start, end);
if (CollectionUtils.isEmpty(orders)) {
return buildEmptyResult();
}
@ -148,7 +146,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
@Override
public OrderDetailAnalysisResult<List<QuarterlyStat>> analyzeByQuarterRange(LocalDate start, LocalDate end) {
// 1. 查询时间范围内的所有订单
List<OrderDetailDTO> orders = queryOrderDetailByDateRange(start, end);
List<OrderDetail> orders = queryOrderDetailByDateRange(start, end);
if (CollectionUtils.isEmpty(orders)) {
return buildEmptyResult();
}
@ -196,7 +194,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
@Override
public OrderDetailAnalysisResult<List<YearlyStat>> analyzeByYearRange(LocalDate start, LocalDate end) {
// 1. 查询时间范围内的所有订单
List<OrderDetailDTO> orders = queryOrderDetailByDateRange(start, end);
List<OrderDetail> orders = queryOrderDetailByDateRange(start, end);
if (CollectionUtils.isEmpty(orders)) {
return buildEmptyResult();
}
@ -235,33 +233,28 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
/**
* 根据日期范围查询订单
*/
private List<OrderDetailDTO> queryOrderDetailByDateRange(LocalDate start, LocalDate end) {
private List<OrderDetail> queryOrderDetailByDateRange(LocalDate start, LocalDate end) {
// MyBatis Plus 条件构造器查询 create_time [start, end] 范围内的订单
// 转换日期为包含时间的LocalDateTime
LocalDateTime startTime = start.atStartOfDay(); // 开始时间当天00:00:00
LocalDateTime endTime = end.atTime(23, 59, 59); // 结束时间当天23:59:59
return orderDetailMapper.queryByDateRange(startTime, endTime);
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);
}
/**
* 构建完整的订单分析结果
*/
private <T> OrderDetailAnalysisResult<T> buildAnalysisResult(List<OrderDetailDTO> orderDetails, T timeSeriesData) {
private <T> OrderDetailAnalysisResult<T> buildAnalysisResult(List<OrderDetail> 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<OrderDetailDTO> orderDetails) {
private <T> OrderDetailAnalysisResult<T> buildOrderDetailAnalysisResult(List<OrderDetail> orderDetails) {
OrderDetailAnalysisResult<T> result = new OrderDetailAnalysisResult<>();
// 1. 基础统计指标
@ -348,7 +341,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
}
//计算平均任务周期
private double calculateAverageTaskCycle(List<OrderDetailDTO> orderDetails) {
private double calculateAverageTaskCycle(List<OrderDetail> orderDetails) {
//获取任务数
List<OrderDetail> completedTasks = orderDetails.stream()
.filter(task -> task.getOrderItemStatus() == STATUS_COMPLETED)
@ -392,7 +385,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
/**
* 按状态统计时间范围内的任务数量
*/
private long countTasksByStatus(List<OrderDetailDTO> tasks, Integer status) {
private long countTasksByStatus(List<OrderDetail> tasks, Integer status) {
return tasks.stream()
.filter(task -> status.equals(task.getOrderItemStatus()))
.count();
@ -401,7 +394,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
/**
* 按日期和状态统计每日订单数量
*/
private Map<String, Long> calculateDailyStatusCount(List<OrderDetailDTO> orderDetails, Integer status) {
private Map<String, Long> calculateDailyStatusCount(List<OrderDetail> orderDetails, Integer status) {
return orderDetails.stream()
.filter(order -> order.getOrderItemStatus().equals(status))
.collect(Collectors.groupingBy(
@ -413,7 +406,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
/**
* 按月份和状态统计每月订单数量
*/
private Map<String, Long> calculateMonthlyStatusCount(List<OrderDetailDTO> orderDetails, Integer status) {
private Map<String, Long> calculateMonthlyStatusCount(List<OrderDetail> orderDetails, Integer status) {
return orderDetails.stream()
.filter(order -> order.getOrderItemStatus().equals(status))
.collect(Collectors.groupingBy(
@ -425,7 +418,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
/**
* 按季节和状态统计每计季节订单数量
*/
private Map<String, Long> calculateQuarterlyStatusCount(List<OrderDetailDTO> orderDetails, Integer status) {
private Map<String, Long> calculateQuarterlyStatusCount(List<OrderDetail> orderDetails, Integer status) {
return orderDetails.stream()
.filter(order -> order.getOrderItemStatus().equals(status))
.collect(Collectors.groupingBy(
@ -437,7 +430,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
/**
* 按年份和状态统计每计年订单数量
*/
private Map<String, Long> calculateYearlyStatusCount(List<OrderDetailDTO> orderDetails, Integer status) {
private Map<String, Long> calculateYearlyStatusCount(List<OrderDetail> orderDetails, Integer status) {
return orderDetails.stream()
.filter(order -> order.getOrderItemStatus().equals(status))
.collect(Collectors.groupingBy(
@ -462,7 +455,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
/**
* 构建任务分页信息
*/
private PageInfo buildTaskPageInfo(List<OrderDetailDTO> tasks, int pageNum, int pageSize) {
private PageInfo buildTaskPageInfo(List<OrderDetail> tasks, int pageNum, int pageSize) {
PageInfo pageInfo = new PageInfo();
pageInfo.setPageNum(pageNum);
pageInfo.setPageSize(pageSize);
@ -473,7 +466,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
/**
* 获取分页后的任务列表
*/
private List<OrderDetailDTO> getPagedTasks(List<OrderDetailDTO> tasks, PageInfo pageInfo) {
private List<OrderDetail> getPagedTasks(List<OrderDetail> tasks, PageInfo pageInfo) {
int start = (pageInfo.getPageNum() - 1) * pageInfo.getPageSize();
int end = Math.min(start + pageInfo.getPageSize(), tasks.size());
return tasks.subList(start, end);
@ -499,7 +492,7 @@ public class OrderDetailAnalysisServiceImpl implements OrderDetailAnalysisServic
/**
* 计算景区内各路线的任务分布
*/
public List<RouteStat> calculateRouteDistribution(List<OrderDetailDTO> orderDetails) {
public List<RouteStat> calculateRouteDistribution(List<OrderDetail> orderDetails) {
// 1. 校验输入
if (CollectionUtils.isEmpty(orderDetails)) {
return Collections.emptyList();

View File

@ -57,19 +57,4 @@
AND del_flag = 0
ORDER BY create_time ASC
</select>
<select id="queryByDateRange" resultType="com.aircraft.modules.order.domain.dto.OrderDetailDTO">
SELECT od.*, om.order_no as orderNo
FROM fms_od_order_detail od
LEFT JOIN fms_od_order_main om ON od.order_id = om.id
WHERE od.create_time &gt;= #{startTime}
AND od.create_time &lt;= #{endTime}
</select>
<select id="getAllOrderDetail" resultType="com.aircraft.modules.order.domain.dto.OrderDetailDTO">
SELECT od.*, om.order_no as orderNo
FROM fms_od_order_detail od
LEFT JOIN fms_od_order_main om ON od.order_id = om.id
ORDER BY od.create_time DESC
</select>
</mapper>