|
|
@@ -10,6 +10,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.dromara.order.domain.OrderMain;
|
|
|
+import org.dromara.order.domain.vo.OrderMainVo;
|
|
|
+import org.dromara.order.mapper.OrderMainMapper;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.dromara.order.domain.bo.OrderStatusLogBo;
|
|
|
import org.dromara.order.domain.vo.OrderStatusLogVo;
|
|
|
@@ -17,9 +20,11 @@ import org.dromara.order.domain.OrderStatusLog;
|
|
|
import org.dromara.order.mapper.OrderStatusLogMapper;
|
|
|
import org.dromara.order.service.IOrderStatusLogService;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Collection;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 订单状态流转记录Service业务层处理
|
|
|
@@ -34,6 +39,8 @@ public class OrderStatusLogServiceImpl extends ServiceImpl<OrderStatusLogMapper,
|
|
|
|
|
|
private final OrderStatusLogMapper baseMapper;
|
|
|
|
|
|
+ private final OrderMainMapper orderMainMapper;
|
|
|
+
|
|
|
/**
|
|
|
* 查询订单状态流转记录
|
|
|
*
|
|
|
@@ -54,11 +61,16 @@ public class OrderStatusLogServiceImpl extends ServiceImpl<OrderStatusLogMapper,
|
|
|
*/
|
|
|
@Override
|
|
|
public TableDataInfo<OrderStatusLogVo> queryPageList(OrderStatusLogBo bo, PageQuery pageQuery) {
|
|
|
+
|
|
|
LambdaQueryWrapper<OrderStatusLog> lqw = buildQueryWrapper(bo);
|
|
|
+
|
|
|
Page<OrderStatusLogVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
|
|
+
|
|
|
return TableDataInfo.build(result);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 查询符合条件的订单状态流转记录列表
|
|
|
*
|
|
|
@@ -74,9 +86,40 @@ public class OrderStatusLogServiceImpl extends ServiceImpl<OrderStatusLogMapper,
|
|
|
private LambdaQueryWrapper<OrderStatusLog> buildQueryWrapper(OrderStatusLogBo bo) {
|
|
|
Map<String, Object> params = bo.getParams();
|
|
|
LambdaQueryWrapper<OrderStatusLog> lqw = Wrappers.lambdaQuery();
|
|
|
+ // 核心逻辑:处理主订单ID,查询其关联的所有子订单日志
|
|
|
+ // ==========================================
|
|
|
+ if (null != bo.getOrderId()) {
|
|
|
+ // 1. 查询订单主表信息 (注意:这里会产生一次数据库查询)
|
|
|
+ OrderMainVo orderMainVo = orderMainMapper.selectVoById(bo.getOrderId());
|
|
|
+
|
|
|
+ if (null != orderMainVo) {
|
|
|
+ List<Long> targetOrderIds = new ArrayList<>();
|
|
|
+
|
|
|
+ // 2. 加入自身ID (兼容传入的是子单ID的情况,确保能查到当前单的数据)
|
|
|
+ targetOrderIds.add(orderMainVo.getId());
|
|
|
+
|
|
|
+ // 3. 查询该订单下的所有子订单
|
|
|
+ List<OrderMain> subOrderList = orderMainMapper.selectList(
|
|
|
+ new LambdaQueryWrapper<OrderMain>()
|
|
|
+ .eq(OrderMain::getParentOrderId, orderMainVo.getId())
|
|
|
+ );
|
|
|
+
|
|
|
+ // 4. 如果有子订单,将子订单ID加入列表
|
|
|
+ if (subOrderList != null && !subOrderList.isEmpty()) {
|
|
|
+ List<Long> subOrderIds = subOrderList.stream()
|
|
|
+ .map(OrderMain::getId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ targetOrderIds.addAll(subOrderIds);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 5. 构建 IN 查询条件
|
|
|
+ // 这一步会替代原本的 eq("order_id", ...) 逻辑
|
|
|
+ lqw.in(OrderStatusLog::getOrderId, targetOrderIds);
|
|
|
+ }
|
|
|
+ }
|
|
|
lqw.orderByAsc(OrderStatusLog::getId);
|
|
|
lqw.eq(StringUtils.isNotBlank(bo.getOrderNo()), OrderStatusLog::getOrderNo, bo.getOrderNo());
|
|
|
- lqw.eq(bo.getOrderId() != null, OrderStatusLog::getOrderId, bo.getOrderId());
|
|
|
+// lqw.eq(bo.getOrderId() != null, OrderStatusLog::getOrderId, bo.getOrderId());
|
|
|
lqw.eq(StringUtils.isNotBlank(bo.getCustomerNo()), OrderStatusLog::getCustomerNo, bo.getCustomerNo());
|
|
|
lqw.eq(bo.getCustomerId() != null, OrderStatusLog::getCustomerId, bo.getCustomerId());
|
|
|
lqw.eq(StringUtils.isNotBlank(bo.getDeliverMethod()), OrderStatusLog::getDeliverMethod, bo.getDeliverMethod());
|