查询订单销售统计详情,导出

This commit is contained in:
zhangji committed 2025-08-29 09:27:43 +08:00
1 parent 45aa7b72c3
commit 74cff7122e
14 files changed
+244 -11

No files matched your search

@@ -0,0 +1,4 @@
### 获得商品 SPU 明细
GET {{baseUrl}}/product/device/refresh-wechat-code?id=25232
Authorization: Bearer {{token}}
tenant-id: {{adminTenantId}}
@@ -16,4 +16,9 @@ tenant-id: {{adminTenantId}}
### 获取订单销售统计数据 => 成功
GET {{baseUrl}}/trade/order/sales-statistics?pageNo=1&pageSize=100&createTime[0]=2025-01-01 00:00:00&createTime[1]=2025-08-15 23:59:59
Authorization: Bearer {{token}}
tenant-id: {{adminTenantId}}
### 获取订单销售统计详情 => 成功
GET {{baseUrl}}/trade/order/statistics-detail?pageNo=1&pageSize=100&createTime[0]=2025-01-01 00:00:00&createTime[1]=2025-08-30 23:59:59&barCode=T20250711
Authorization: Bearer {{token}}
tenant-id: {{adminTenantId}}
@@ -1,8 +1,12 @@
package cn.iocoder.yudao.module.trade.controller.admin.order;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
import cn.iocoder.yudao.module.product.api.sku.ProductSkuApi;
@@ -29,6 +33,9 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -36,6 +43,7 @@ import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
@@ -84,6 +92,32 @@ public class TradeOrderController {
return success(TradeOrderConvert.INSTANCE.convertPage(pageResult, orderItems, userMap));
}
/* @GetMapping("/export-excel")
@Operation(summary = "导出交易订单 Excel")
@PreAuthorize("@ss.hasPermission('trade:order:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportOrderExcel(@Valid TradeOrderPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
// 查询订单
PageResult<TradeOrderDO> pageResult = tradeOrderQueryService.getOrderPage(pageReqVO);
if (CollUtil.isEmpty(pageResult.getList())) {
return;
}
// 查询用户信息
Set<Long> userIds = CollUtil.unionDistinct(convertList(pageResult.getList(), TradeOrderDO::getUserId),
convertList(pageResult.getList(), TradeOrderDO::getBrokerageUserId, Objects::nonNull));
Map<Long, MemberUserRespDTO> userMap = memberUserApi.getUserMap(userIds);
// 查询订单项
List<TradeOrderItemDO> orderItems = tradeOrderQueryService.getOrderItemListByOrderId(
convertSet(pageResult.getList(), TradeOrderDO::getId));
// 最终组合
List<TradeOrderPageItemRespVO> list = TradeOrderConvert.INSTANCE.convertPage(pageResult, orderItems, userMap).getList();
// 导出 Excel
ExcelUtils.write(response, "交易订单.xls", "数据", TradeOrderPageItemRespVO.class, list);
}*/
@GetMapping("/summary")
@Operation(summary = "获得交易订单统计")
@PreAuthorize("@ss.hasPermission('trade:order:query')")
@@ -185,8 +219,10 @@ public class TradeOrderController {
@PreAuthorize("@ss.hasPermission('trade:order:query')")
public CommonResult<PageResult<TradeOrderSalesStatisticsRespVO>> getSalesStatistics(TradeOrderSalesStatisticsReqVO salesStatisticsReqVO) {
PageResult<TradeOrderItemStatisticsRespVO> orderItemStatisticsRespVOList = tradeOrderQueryService.getSalesStatistics(salesStatisticsReqVO);
return success(TradeOrderConvert.INSTANCE.convertStatistics(orderItemStatisticsRespVOList));
//获取机器号
List<Long> spuIds = orderItemStatisticsRespVOList.getList().stream().map(TradeOrderItemStatisticsRespVO::getSpuId).distinct()
/* List<Long> spuIds = orderItemStatisticsRespVOList.getList().stream().map(TradeOrderItemStatisticsRespVO::getSpuId).distinct()
.collect(Collectors.toList());//去重Creator
List<ProductSpuRespDTO> spuList = productSpuApi.getSpuList(spuIds);
List<Long> creators = spuList.stream()
@@ -226,6 +262,29 @@ public class TradeOrderController {
List<ProductSkuRespDTO> skuList = productSkuApi.getSkuList(skuIds);
Map<Long, String> skuMap = convertMap(skuList, ProductSkuRespDTO::getId, ProductSkuRespDTO::getBarCode);
return success(TradeOrderConvert.INSTANCE.convertStatistics(orderItemStatisticsRespVOList, spuDeviceMap,skuMap));
return success(TradeOrderConvert.INSTANCE.convertStatistics(orderItemStatisticsRespVOList, spuDeviceMap,skuMap));*/
}
@GetMapping("/statistics-detail")
@Operation(summary = "获取订单销售统计详情")
@PreAuthorize("@ss.hasPermission('trade:order:query')")
public CommonResult<PageResult<TradeOrderItemStatisticsDetailRespVO>> getStatisticsDetail(TradeOrderStatisticsDetailReqVO salesStatisticsReqVO) {
return success(tradeOrderQueryService.getOrderItemListByBarCode(salesStatisticsReqVO));
}
@GetMapping("/export-excel")
@Operation(summary = "导出订单销售统计详情 Excel")
@PreAuthorize("@ss.hasPermission('trade:order:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportStatisticsDetailExcel(@Valid TradeOrderStatisticsDetailReqVO salesStatisticsReqVO,
HttpServletResponse response) throws IOException {
salesStatisticsReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
// 查询订单
PageResult<TradeOrderItemStatisticsDetailRespVO> pageResult = tradeOrderQueryService.getOrderItemListByBarCode(salesStatisticsReqVO);
if (CollUtil.isEmpty(pageResult.getList())) {
return;
}
// 导出 Excel
ExcelUtils.write(response, "交易订单.xls", "数据", TradeOrderItemStatisticsDetailRespVO.class, pageResult.getList());
}
}
@@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.trade.controller.admin.order.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -15,134 +16,174 @@ public class TradeOrderBaseVO {
// ========== 订单基本信息 ==========
@Schema(description = "订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
@ExcelProperty("订单编号")
private Long id;
@Schema(description = "订单流水号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1146347329394184195")
@ExcelProperty("订单流水号")
private String no;
@Schema(description = "下单时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("下单时间")
private LocalDateTime createTime;
@Schema(description = "订单类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("订单类型")
private Integer type;
@Schema(description = "订单来源", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("订单来源")
private Integer terminal;
@Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
@ExcelProperty("用户编号")
private Long userId;
@Schema(description = "用户 IP", requiredMode = Schema.RequiredMode.REQUIRED, example = "127.0.0.1")
private String userIp;
@Schema(description = "用户备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜")
@ExcelProperty("用户备注")
private String userRemark;
@Schema(description = "订单状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("订单状态")
private Integer status;
@Schema(description = "购买的商品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
@ExcelProperty("购买的商品数量")
private Integer productCount;
@Schema(description = "订单完成时间")
@ExcelProperty("订单完成时间")
private LocalDateTime finishTime;
@Schema(description = "订单取消时间")
@ExcelProperty("订单取消时间")
private LocalDateTime cancelTime;
@Schema(description = "取消类型", example = "10")
@ExcelProperty("取消类型")
private Integer cancelType;
@Schema(description = "商家备注", example = "你猜一下")
@ExcelProperty("商家备注")
private String remark;
// ========== 价格 + 支付基本信息 ==========
@Schema(description = "支付订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
@ExcelProperty("支付订单编号")
private Long payOrderId;
@Schema(description = "是否已支付", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
@ExcelProperty("是否已支付")
private Boolean payStatus;
@Schema(description = "付款时间")
@ExcelProperty("付款时间")
private LocalDateTime payTime;
@Schema(description = "支付渠道", requiredMode = Schema.RequiredMode.REQUIRED, example = "wx_lite")
@ExcelProperty("支付渠道")
private String payChannelCode;
@Schema(description = "商品原价(总)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000")
@ExcelProperty("商品原价(总)")
private Integer totalPrice;
@Schema(description = "订单优惠(总)", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
@ExcelProperty("订单优惠(总)")
private Integer discountPrice;
@Schema(description = "运费金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
@ExcelProperty("运费金额")
private Integer deliveryPrice;
@Schema(description = "订单调价(总)", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
@ExcelProperty("订单调价(总)")
private Integer adjustPrice;
@Schema(description = "应付金额(总)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000")
@ExcelProperty("应付金额(总)")
private Integer payPrice;
// ========== 收件 + 物流基本信息 ==========
@Schema(description = "配送方式", example = "10")
@ExcelProperty("配送方式")
private Integer deliveryType;
@Schema(description = "自提门店", example = "10")
@ExcelProperty("自提门店")
private Long pickUpStoreId;
@Schema(description = "自提核销码", example = "10")
@ExcelProperty("自提核销码")
private Long pickUpVerifyCode;
@Schema(description = "配送模板编号", example = "1024")
@ExcelProperty("配送模板编号")
private Long deliveryTemplateId;
@Schema(description = "发货物流公司编号", example = "1024")
@ExcelProperty("发货物流公司编号")
private Long logisticsId;
@Schema(description = "发货物流单号", example = "1024")
@ExcelProperty("发货物流单号")
private String logisticsNo;
@Schema(description = "发货时间")
@ExcelProperty("发货时间")
private LocalDateTime deliveryTime;
@Schema(description = "收货时间")
@ExcelProperty("收货时间")
private LocalDateTime receiveTime;
@Schema(description = "收件人名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@ExcelProperty("收件人名称")
private String receiverName;
@Schema(description = "收件人手机", requiredMode = Schema.RequiredMode.REQUIRED, example = "13800138000")
@ExcelProperty("收件人手机")
private String receiverMobile;
@Schema(description = "收件人地区编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "110000")
@ExcelProperty("收件人地区编号")
private Integer receiverAreaId;
@Schema(description = "收件人详细地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "中关村大街 1 号")
@ExcelProperty("收件人详细地址")
private String receiverDetailAddress;
// ========== 售后基本信息 ==========
@Schema(description = "售后状态", example = "1")
@ExcelProperty("售后状态")
private Integer afterSaleStatus;
@Schema(description = "退款金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
@ExcelProperty("退款金额")
private Integer refundPrice;
// ========== 营销基本信息 ==========
@Schema(description = "优惠劵编号", example = "1024")
@ExcelProperty("优惠劵编号")
private Long couponId;
@Schema(description = "优惠劵减免金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
@ExcelProperty("优惠劵减免金额")
private Integer couponPrice;
@Schema(description = "积分抵扣的金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
@ExcelProperty("积分抵扣的金额")
private Integer pointPrice;
@Schema(description = "VIP 减免金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "888")
@ExcelProperty("VIP 减免金额")
private Integer vipPrice;
@Schema(description = "推广人编号", example = "1")
@@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.trade.controller.admin.order.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -13,6 +14,7 @@ public class TradeOrderItemBaseVO {
// ========== 订单项基本信息 ==========
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("编号")
private Long id;
@Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@@ -24,44 +26,56 @@ public class TradeOrderItemBaseVO {
// ========== 商品基本信息 ==========
@Schema(description = "商品 SPU 编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("商品 SPU 编号")
private Long spuId;
@Schema(description = "商品 SPU 名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道源码")
@ExcelProperty("商品 SPU 名称")
private String spuName;
@Schema(description = "商品 SKU 编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("商品 SKU 编号")
private Long skuId;
@Schema(description = "设备IMEI", requiredMode = Schema.RequiredMode.REQUIRED, example = "12345678")
@ExcelProperty("设备IMEI")
private String deviceId;
@Schema(description = "SKU 的条形码", requiredMode = Schema.RequiredMode.REQUIRED, example = "T123456")
@ExcelProperty("SKU 的条形码")
private String barCode;
@Schema(description = "货道或柜门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("货道或柜门编号")
private String cabinetChannel;
@Schema(description = "商品图片", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.png")
private String picUrl;
@Schema(description = "购买数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("购买数量")
private Integer count;
// ========== 价格 + 支付基本信息 ==========
@Schema(description = "商品原价(单)", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
@ExcelProperty("商品原价(单)")
private Integer price;
@Schema(description = "商品优惠(总)", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
@ExcelProperty("商品优惠(总)")
private Integer discountPrice;
@Schema(description = "商品实付金额(总)", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
@ExcelProperty("商品实付金额(总)")
private Integer payPrice;
@Schema(description = "子订单分摊金额(总)", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
@ExcelProperty("子订单分摊金额(总)")
private Integer orderPartPrice;
@Schema(description = "分摊后子订单实付金额(总)", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
@ExcelProperty("分摊后子订单实付金额(总)")
private Integer orderDividePrice;
// ========== 营销基本信息 ==========
@@ -71,6 +85,7 @@ public class TradeOrderItemBaseVO {
// ========== 售后基本信息 ==========
@Schema(description = "售后状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("售后状态")
private Integer afterSaleStatus;
}
@@ -0,0 +1,15 @@
package cn.iocoder.yudao.module.trade.controller.admin.order.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 交易订单的详情 Response VO")
@Data
public class TradeOrderItemStatisticsDetailRespVO extends TradeOrderItemBaseVO {
@Schema(description = "订单流水号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1146347329394184195")
private String no;
}
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.trade.controller.admin.order.vo;
import cn.iocoder.yudao.module.trade.controller.admin.base.member.user.MemberUserRespVO;
import cn.iocoder.yudao.module.trade.controller.admin.base.product.property.ProductPropertyValueDetailRespVO;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -12,6 +13,7 @@ import java.util.List;
public class TradeOrderPageItemRespVO extends TradeOrderBaseVO {
@Schema(description = "收件人地区名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "上海 上海市 普陀区")
@ExcelProperty("")
private String receiverAreaName;
@Schema(description = "订单项列表", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.validation.InEnum;
import cn.iocoder.yudao.framework.common.validation.Mobile;
import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
@@ -25,6 +26,15 @@ public class TradeOrderSalesStatisticsReqVO extends PageParam {
// @InEnum(value = TradeOrderStatusEnum.class, message = "订单状态必须是 {value}")
// private Integer status;
@Schema(description = "商品 SPU 名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道源码")
private String spuName;
@Schema(description = "设备IMEI", requiredMode = Schema.RequiredMode.REQUIRED, example = "12345678")
private String deviceId;
@Schema(description = "SKU 的条形码", requiredMode = Schema.RequiredMode.REQUIRED, example = "T123456")
private String barCode;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@@ -0,0 +1,28 @@
package cn.iocoder.yudao.module.trade.controller.admin.order.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 获取订单销售统计数据 Request VO")
@Data
public class TradeOrderStatisticsDetailReqVO extends PageParam {
@Schema(description = "商品 SPU 名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道源码")
private String spuName;
@Schema(description = "设备IMEI", requiredMode = Schema.RequiredMode.REQUIRED, example = "12345678")
private String deviceId;
@Schema(description = "SKU 的条形码", requiredMode = Schema.RequiredMode.REQUIRED, example = "T123456")
private String barCode;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}
@@ -362,4 +362,18 @@ public interface TradeOrderConvert {
});
return new PageResult<>(orderVOs, orderItemStatisticsRespVOList.getTotal());
}
default PageResult<TradeOrderSalesStatisticsRespVO> convertStatistics(PageResult<TradeOrderItemStatisticsRespVO> orderItemStatisticsRespVOList){
// 转化 List
List<TradeOrderSalesStatisticsRespVO> orderVOs = CollectionUtils.convertList(orderItemStatisticsRespVOList.getList(), order -> {
TradeOrderSalesStatisticsRespVO orderVO = new TradeOrderSalesStatisticsRespVO();
orderVO.setDeviceId(order.getDeviceId());
orderVO.setBarCode(order.getBarCode());
orderVO.setSpuName(order.getSpuName());
orderVO.setOrderCount(order.getOrderCount());
return orderVO;
});
return new PageResult<>(orderVOs, orderItemStatisticsRespVOList.getTotal());
}
}
@@ -0,0 +1,18 @@
package cn.iocoder.yudao.module.trade.dal.dataobject.order;
import lombok.Data;
/**
* 交易订单项 DO
*
* @author 芋道源码
*/
@Data
public class TradeOrderItemOrderNoDO extends TradeOrderItemDO {
/**
* 订单流水号
*
* 例如说,1146347329394184195
*/
private String no;
}
@@ -8,9 +8,11 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderItemStatisticsRespVO;
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderSalesStatisticsReqVO;
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderStatisticsDetailReqVO;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemCountDO;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemOrderNoDO;
import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -67,10 +69,27 @@ public interface TradeOrderItemMapper extends BaseMapperX<TradeOrderItemDO> {
MPJLambdaWrapper<TradeOrderItemDO> query = new MPJLambdaWrapperX<TradeOrderItemDO>()
.selectAll(TradeOrderItemDO.class)
.selectSum(TradeOrderItemDO::getCount, TradeOrderItemCountDO::getOrderCount)
.eqIfPresent(TradeOrderItemDO::getDeviceId, reqVO.getDeviceId())
.eqIfPresent(TradeOrderItemDO::getBarCode, reqVO.getBarCode())
.likeIfPresent(TradeOrderItemDO::getSpuName, reqVO.getSpuName())
.betweenIfPresent(TradeOrderItemDO::getCreateTime, reqVO.getCreateTime())
.groupBy(TradeOrderItemDO::getSpuId);
.groupBy(TradeOrderItemDO::getBarCode);
query.leftJoin(TradeOrderDO.class,TradeOrderDO::getId, TradeOrderItemDO::getOrderId)
.eq(TradeOrderDO::getStatus, TradeOrderStatusEnum.COMPLETED.getStatus());
return selectJoinPage(reqVO,TradeOrderItemCountDO.class,query);
}
default PageResult<TradeOrderItemOrderNoDO> getOrderItemListByBarCode(TradeOrderStatisticsDetailReqVO salesStatisticsReqVO){
MPJLambdaWrapperX<TradeOrderItemDO> query = new MPJLambdaWrapperX<TradeOrderItemDO>()
.selectAll(TradeOrderItemDO.class)
.selectAs(TradeOrderDO::getNo, TradeOrderItemOrderNoDO::getNo)
.eqIfPresent(TradeOrderItemDO::getDeviceId, salesStatisticsReqVO.getDeviceId())
.eqIfPresent(TradeOrderItemDO::getBarCode, salesStatisticsReqVO.getBarCode())
.likeIfPresent(TradeOrderItemDO::getSpuName, salesStatisticsReqVO.getSpuName())
.betweenIfPresent(TradeOrderItemDO::getCreateTime, salesStatisticsReqVO.getCreateTime());
query.leftJoin(TradeOrderDO.class,TradeOrderDO::getId, TradeOrderItemDO::getOrderId);
// return selectPage(salesStatisticsReqVO,new MPJLambdaWrapperX<TradeOrderItemDO>()
// .eq(TradeOrderItemDO::getBarCode, salesStatisticsReqVO.getBarCode()));
return selectJoinPage(salesStatisticsReqVO,TradeOrderItemOrderNoDO.class, query);
}
}
@@ -1,10 +1,7 @@
package cn.iocoder.yudao.module.trade.service.order;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderItemStatisticsRespVO;
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO;
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderSalesStatisticsReqVO;
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderSummaryRespVO;
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.*;
import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderPageReqVO;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
@@ -160,4 +157,6 @@ public interface TradeOrderQueryService {
List<TradeOrderItemDO> getOrderItemListByOrderId(Collection<Long> orderIds);
PageResult<TradeOrderItemStatisticsRespVO> getSalesStatistics(TradeOrderSalesStatisticsReqVO salesStatisticsReqVO);
PageResult<TradeOrderItemStatisticsDetailRespVO> getOrderItemListByBarCode(TradeOrderStatisticsDetailReqVO salesStatisticsReqVO);
}
@@ -10,15 +10,13 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderItemStatisticsRespVO;
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO;
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderSalesStatisticsReqVO;
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderSummaryRespVO;
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.*;
import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderPageReqVO;
import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemCountDO;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemOrderNoDO;
import cn.iocoder.yudao.module.trade.dal.mysql.order.TradeOrderItemMapper;
import cn.iocoder.yudao.module.trade.dal.mysql.order.TradeOrderMapper;
import cn.iocoder.yudao.module.trade.dal.redis.RedisKeyConstants;
@@ -259,6 +257,12 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
return BeanUtils.toBean(tradeOrderItemDOS, TradeOrderItemStatisticsRespVO.class);
}
@Override
public PageResult<TradeOrderItemStatisticsDetailRespVO> getOrderItemListByBarCode(TradeOrderStatisticsDetailReqVO salesStatisticsReqVO) {
PageResult<TradeOrderItemOrderNoDO> tradeOrderItemDOS = tradeOrderItemMapper.getOrderItemListByBarCode(salesStatisticsReqVO);
return BeanUtils.toBean(tradeOrderItemDOS, TradeOrderItemStatisticsDetailRespVO.class);
}
/**
* 获得自身的代理对象,解决 AOP 生效问题
*