feat(order): 添加经销商ID和月份查询条件并优化订单列表查询逻辑
- 在OrderListQry中新增dealerId和month字段用于查询条件 - 实现了订单关联车辆、供应商、包裹、成本等数据的批量查询 - 重构OrderGatewayImpl中的查询逻辑,使用新的selectByQueryList方法 - 在OrderMapper中添加selectByQueryList接口方法 - 更新OrderMapper.xml实现关联查询和条件筛选功能 - 添加deliveryTime字段映射到订单结果中
This commit is contained in:
parent
596ec6d7fd
commit
bdf900fcc5
@ -116,10 +116,41 @@ public class OrderGatewayImpl implements OrderGateway {
|
||||
queryWrapper.eq(Objects.nonNull(orderListQry.getAuditState()), OrderDO::getAuditState, orderListQry.getAuditState());
|
||||
queryWrapper.eq(Objects.nonNull(orderListQry.getCreatedBy()), OrderDO::getCreatedBy, orderListQry.getCreatedBy());
|
||||
queryWrapper.eq(Objects.nonNull(orderListQry.getType()), OrderDO::getType, orderListQry.getType());
|
||||
queryWrapper.select(OrderDO::getOrderId, OrderDO::getOrderSn, OrderDO::getState, OrderDO::getAuditState, OrderDO::getType);
|
||||
|
||||
queryWrapper.orderByDesc(OrderDO::getCreatedAt);
|
||||
List<OrderDO> orderDOList = orderMapper.selectList(queryWrapper);
|
||||
List<OrderDO> orderDOList = orderMapper.selectByQueryList(queryWrapper, orderListQry);
|
||||
|
||||
List<Long> orderIdList = orderDOList.stream().map(OrderDO::getOrderId).toList();
|
||||
if (CollUtil.isNotEmpty(orderIdList)) {
|
||||
List<OrderVehicleDO> orderVehicleDOList = orderVehicleMapper.selectList(Wrappers.lambdaQuery(OrderVehicleDO.class).in(OrderVehicleDO::getOrderId, orderIdList));
|
||||
Map<Long, OrderVehicleDO> orderVehicleDOMap = orderVehicleDOList.stream().collect(Collectors.toMap(OrderVehicleDO::getOrderId, Function.identity()));
|
||||
|
||||
List<OrderSupplierDO> orderSupplierDOList = orderSupplierMapper.selectList(Wrappers.lambdaQuery(OrderSupplierDO.class).in(OrderSupplierDO::getOrderId, orderIdList));
|
||||
|
||||
LambdaQueryWrapper<OrderPackageDO> queryWrapper1 = Wrappers.lambdaQuery(OrderPackageDO.class);
|
||||
queryWrapper1.in(OrderPackageDO::getOrderId, orderIdList);
|
||||
List<OrderPackageDO> orderPackageDOList = orderPackageMapper.selectList(queryWrapper1);
|
||||
|
||||
orderSupplierDOList.forEach(orderSupplierDO -> {
|
||||
orderSupplierDO.setOrderPackageDOList(orderPackageDOList.stream().filter(orderPackageDO -> orderPackageDO.getOrderSupplierId().equals(orderSupplierDO.getOrderSupplierId())).toList());
|
||||
});
|
||||
|
||||
LambdaQueryWrapper<OrderCostDO> queryWrapper4 = Wrappers.lambdaQuery(OrderCostDO.class);
|
||||
queryWrapper4.in(OrderCostDO::getOrderId, orderIdList);
|
||||
List<OrderCostDO> orderCostDOList = orderCostMapper.selectList(queryWrapper4);
|
||||
|
||||
LambdaQueryWrapper<OrderCostItemDO> queryWrapper5 = Wrappers.lambdaQuery(OrderCostItemDO.class);
|
||||
queryWrapper5.in(OrderCostItemDO::getOrderId, orderIdList);
|
||||
List<OrderCostItemDO> orderCostItemDOList = orderCostItemMapper.selectList(queryWrapper5);
|
||||
|
||||
orderDOList.forEach(orderDO -> {
|
||||
orderDO.setOrderPackageDOList(orderPackageDOList.stream().filter(orderPackageDO -> Objects.isNull(orderPackageDO.getOrderSupplierId()) && orderPackageDO.getOrderId().equals(orderDO.getOrderId())).toList());
|
||||
orderDO.setOrderCostDOList(orderCostDOList.stream().filter(orderCostDO -> orderCostDO.getOrderId().equals(orderDO.getOrderId())).toList());
|
||||
orderDO.setOrderCostItemDOList(orderCostItemDOList.stream().filter(orderCostItemDO -> orderCostItemDO.getOrderId().equals(orderDO.getOrderId())).toList());
|
||||
orderDO.setOrderVehicleDO(orderVehicleDOMap.get(orderDO.getOrderId()));
|
||||
orderDO.setOrderSupplierDOList(orderSupplierDOList.stream().filter(orderSupplierDO -> orderSupplierDO.getOrderId().equals(orderDO.getOrderId())).toList());
|
||||
});
|
||||
}
|
||||
return orderDOList.stream().map(orderConvert::toOrder).toList();
|
||||
}
|
||||
|
||||
|
||||
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderListQry;
|
||||
import com.xunhong.erp.turbo.api.biz.dto.qry.OrderPageQry;
|
||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
@ -22,5 +23,7 @@ public interface OrderMapper extends BaseMapper<OrderDO> {
|
||||
OrderDO selectByOrderId(@Param("orderId") Long orderId);
|
||||
|
||||
IPage<OrderDO> selectPage(IPage<OrderDO> page, @Param(Constants.WRAPPER) LambdaQueryWrapper<OrderDO> queryWrapper, @Param("query") OrderPageQry orderPageQry);
|
||||
|
||||
List<OrderDO> selectByQueryList(@Param(Constants.WRAPPER)LambdaQueryWrapper<OrderDO> queryWrapper, @Param("query") OrderListQry orderListQry);
|
||||
}
|
||||
|
||||
|
||||
@ -31,6 +31,7 @@
|
||||
<result property="dealerName" column="dealer_name"/>
|
||||
<result property="origin" column="origin"/>
|
||||
<result property="destination" column="destination"/>
|
||||
<result property="deliveryTime" column="deliveryTime"/>
|
||||
</association>
|
||||
</resultMap>
|
||||
|
||||
@ -129,5 +130,32 @@
|
||||
AND po.order_id = #{orderId}
|
||||
limit 1
|
||||
</select>
|
||||
<select id="selectByQueryList"
|
||||
resultType="com.xunhong.erp.turbo.biz.infrastructure.entity.OrderDO"
|
||||
resultMap="BaseResultMap">
|
||||
SELECT
|
||||
po.*,
|
||||
ov.vehicle_id, ov.vehicle_no, ov.dealer_id, ov.dealer_name, ov.origin,
|
||||
ov.destination, ov.delivery_time
|
||||
FROM `order` po
|
||||
LEFT JOIN order_vehicle ov ON po.order_id = ov.order_id AND ov.is_delete
|
||||
= 0
|
||||
<where>
|
||||
po.is_delete = 0
|
||||
<if test="query.dealerId != null">
|
||||
AND ov.dealer_id = #{query.dealerId}
|
||||
</if>
|
||||
<if test="query.month != null">
|
||||
AND ov.delivery_time between #{query.month} and #{query.month}
|
||||
+ INTERVAL 1 MONTH
|
||||
</if>
|
||||
<if test="ew!= null">
|
||||
<if test="ew.nonEmptyOfWhere">
|
||||
AND
|
||||
</if>
|
||||
${ew.sqlSegment}
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
|
||||
@ -19,6 +19,9 @@ public class OrderListQry extends Query {
|
||||
@Schema(title = "采购订单ID", type = "string")
|
||||
private Long orderId;
|
||||
|
||||
@Schema(title = "经销商ID", type = "string")
|
||||
private Long dealerId;
|
||||
|
||||
@Schema(title = "采购订单编号", type = "string")
|
||||
private String orderSn;
|
||||
|
||||
@ -39,5 +42,11 @@ public class OrderListQry extends Query {
|
||||
*/
|
||||
@Schema(title = "采购类型:1_产地采购;2_市场采购;")
|
||||
private OrderTypeEnum type;
|
||||
|
||||
/**
|
||||
* 月份
|
||||
*/
|
||||
@Schema(title = "月份")
|
||||
private String month;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user