diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/entity/ShopProdStatistic.java b/cash-common/cash-common-service/src/main/java/com/czg/order/entity/ShopProdStatistic.java index 30a468f9a..7abfdde8c 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/order/entity/ShopProdStatistic.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/entity/ShopProdStatistic.java @@ -1,5 +1,8 @@ package com.czg.order.entity; +import cn.idev.excel.annotation.ExcelIgnore; +import cn.idev.excel.annotation.ExcelProperty; +import cn.idev.excel.annotation.write.style.ColumnWidth; import com.mybatisflex.annotation.Column; import com.mybatisflex.annotation.Id; import com.mybatisflex.annotation.KeyType; @@ -20,7 +23,6 @@ import java.util.Date; * @since 2025-03-07 */ @Data - @NoArgsConstructor @AllArgsConstructor @Table("tb_shop_prod_statistic") @@ -30,48 +32,83 @@ public class ShopProdStatistic implements Serializable { private static final long serialVersionUID = 1L; @Id(keyType = KeyType.Auto) + @ExcelIgnore private Long id; /** * 商品id */ + @ExcelIgnore private Long prodId; /** * 商品名称 */ @Column(ignore = true) + @ExcelProperty("商品名称") + @ColumnWidth(80) private String productName; /** * 销售数量 */ + @ExcelProperty("销售数量") + @ColumnWidth(30) private BigDecimal saleCount; /** * 销售金额 */ + @ExcelProperty("销售金额") + @ColumnWidth(50) private BigDecimal saleAmount; /** * 退单量 */ + @ExcelProperty("退单量") + @ColumnWidth(30) private BigDecimal refundCount; /** * 退单金额 */ + @ExcelProperty("退单金额") + @ColumnWidth(50) private BigDecimal refundAmount; + /** + * 实际销售数量(过滤掉退单后的数量) + */ + @ExcelProperty("实际销售数量") + @ColumnWidth(30) + private BigDecimal validSaleCount; + + /** + * 实际销售金额(过滤掉退单后的金额) + */ + @ExcelProperty("实际销售金额") + @ColumnWidth(50) + private BigDecimal validSaleAmount; + /** * 店铺id */ + @ExcelIgnore private Long shopId; /** * 创建时间 */ + @ExcelIgnore private Date createDay; + + public void initValidData() { + // 初始化实际销售数量和金额(过滤退单数据) + this.validSaleCount = this.saleCount.subtract(this.refundCount); + this.validSaleAmount = this.saleAmount.subtract(this.refundAmount); + } + // 在 ShopProdStatistic.java 中添加以下方法 /** * 判断当前统计数据是否有效(销售数量、金额,退单数量、金额均有值且大于0) diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/ShopProdStatisticServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/ShopProdStatisticServiceImpl.java index 04aa7a67d..356350df0 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/ShopProdStatisticServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/ShopProdStatisticServiceImpl.java @@ -108,23 +108,23 @@ public class ShopProdStatisticServiceImpl extends ServiceImpl realTimeData = getRealTimeDataByDay(shopId, day, null); if (CollUtil.isNotEmpty(realTimeData)) { - // 过滤掉没有有效数据的记录 - realTimeData = realTimeData.stream() - .filter(ShopProdStatistic::isValid) - .toList(); - if (CollUtil.isNotEmpty(realTimeData)) { - boolean exists = exists(QueryWrapper.create().eq(ShopProdStatistic::getShopId, shopId).eq(ShopProdStatistic::getCreateDay, day)); - if (exists) { - remove(QueryWrapper.create().eq(ShopProdStatistic::getShopId, shopId).eq(ShopProdStatistic::getCreateDay, day)); - } - saveBatch(realTimeData); + boolean exists = exists(QueryWrapper.create().eq(ShopProdStatistic::getShopId, shopId).eq(ShopProdStatistic::getCreateDay, day)); + if (exists) { + remove(QueryWrapper.create().eq(ShopProdStatistic::getShopId, shopId).eq(ShopProdStatistic::getCreateDay, day)); } + saveBatch(realTimeData); } } @Override public List getRealTimeDataByDay(Long shopId, LocalDate day, String productName) { - return mapper.selectProStatByDay(shopId, day, productName); + List shopProdStatistics = mapper.selectProStatByDay(shopId, day, productName); + // 过滤掉没有有效数据的记录 + shopProdStatistics = shopProdStatistics.stream() + .filter(ShopProdStatistic::isValid) + .peek(ShopProdStatistic::initValidData) + .toList(); + return shopProdStatistics; } @Override diff --git a/cash-service/order-service/src/main/resources/mapper/ShopProdStatisticMapper.xml b/cash-service/order-service/src/main/resources/mapper/ShopProdStatisticMapper.xml index 53605da2d..116e7fc5d 100644 --- a/cash-service/order-service/src/main/resources/mapper/ShopProdStatisticMapper.xml +++ b/cash-service/order-service/src/main/resources/mapper/ShopProdStatisticMapper.xml @@ -90,10 +90,10 @@ SELECT - sum(tb_shop_prod_statistic.sale_count) AS saleCount, - sum(tb_shop_prod_statistic.sale_amount) AS totalAmount, - sum(tb_shop_prod_statistic.refund_count) AS refundCount, - sum(tb_shop_prod_statistic.refund_amount) AS refundAmount + sum(statistic.sale_count) AS saleCount, + sum(statistic.sale_amount) AS totalAmount, + sum(statistic.refund_count) AS refundCount, + sum(statistic.refund_amount) AS refundAmount FROM tb_shop_prod_statistic statistic INNER JOIN tb_product prod ON statistic.prod_id = prod.id