From 8e4eee5ad4d74e1a4e6ab4de3a9c28000700dce0 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 03 十一月 2026 13:49:04 +0800
Subject: [PATCH] 修复采购退货页面 ERP 模块已禁用报错

---
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/statistics/ErpSaleStatisticsMapper.java |   59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 59 insertions(+), 0 deletions(-)

diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/statistics/ErpSaleStatisticsMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/statistics/ErpSaleStatisticsMapper.java
index 6bbe158..cacf2d9 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/statistics/ErpSaleStatisticsMapper.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/statistics/ErpSaleStatisticsMapper.java
@@ -1,10 +1,15 @@
 package cn.iocoder.yudao.module.erp.dal.mysql.statistics;
 
+import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleCustomerReceiptStatisticsDO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleCustomerStatisticsDO;
+import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpSaleProductStatisticsDO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * ERP 閿�鍞粺璁� Mapper
@@ -17,4 +22,58 @@
     BigDecimal getSalePrice(@Param("beginTime") LocalDateTime beginTime,
                             @Param("endTime") LocalDateTime endTime);
 
+    /**
+     * 鎸夊鎴风粺璁¢攢鍞鍗曪紙浠呯粺璁″凡瀹℃牳璁㈠崟锛�
+     *
+     * 闇�姹� 6.7鈶� 閿�鍞缁熻銆佲憿 瀹㈡埛閿�鍞粺璁�
+     */
+    @Select("<script>"
+            + "SELECT customer_id AS customerId, COUNT(1) AS orderCount, "
+            + "IFNULL(SUM(total_price), 0) AS saleAmount, MAX(order_time) AS lastOrderTime "
+            + "FROM erp_sale_order WHERE deleted = 0 AND status = 20 AND customer_id IS NOT NULL "
+            + "<if test='customerId != null'>AND customer_id = #{customerId} </if>"
+            + "<if test='beginTime != null'>AND order_time &gt;= #{beginTime} </if>"
+            + "<if test='endTime != null'>AND order_time &lt;= #{endTime} </if>"
+            + "GROUP BY customer_id ORDER BY saleAmount DESC"
+            + "</script>")
+    List<ErpSaleCustomerStatisticsDO> selectCustomerStatistics(@Param("customerId") Long customerId,
+                                                               @Param("beginTime") LocalDateTime beginTime,
+                                                               @Param("endTime") LocalDateTime endTime);
+
+    /**
+     * 鎸夊鎴风粺璁″凡瀹℃牳鏀舵鍗曠殑鏀舵閲戦
+     *
+     * 闇�姹� 6.7鈶� 閿�鍞缁熻锛氬凡鏀舵 / 鏈敹娆�
+     */
+    @Select("<script>"
+            + "SELECT customer_id AS customerId, IFNULL(SUM(receipt_price), 0) AS receiptAmount "
+            + "FROM erp_finance_receipt WHERE deleted = 0 AND status = 20 AND customer_id IS NOT NULL "
+            + "<if test='customerId != null'>AND customer_id = #{customerId} </if>"
+            + "<if test='beginTime != null'>AND receipt_time &gt;= #{beginTime} </if>"
+            + "<if test='endTime != null'>AND receipt_time &lt;= #{endTime} </if>"
+            + "GROUP BY customer_id"
+            + "</script>")
+    List<ErpSaleCustomerReceiptStatisticsDO> selectCustomerReceiptStatistics(@Param("customerId") Long customerId,
+                                                                           @Param("beginTime") LocalDateTime beginTime,
+                                                                           @Param("endTime") LocalDateTime endTime);
+
+    /**
+     * 鎸変骇鍝佺粺璁¢攢鍞槑缁嗭紙浠呯粺璁″凡瀹℃牳璁㈠崟锛�
+     *
+     * 闇�姹� 6.7鈶� 浜у搧閿�鍞粺璁�
+     */
+    @Select("<script>"
+            + "SELECT i.product_id AS productId, COUNT(DISTINCT i.order_id) AS orderCount, "
+            + "IFNULL(SUM(i.count), 0) AS totalCount, IFNULL(SUM(i.total_price), 0) AS saleAmount "
+            + "FROM erp_sale_order_item i INNER JOIN erp_sale_order o ON o.id = i.order_id AND o.deleted = 0 "
+            + "WHERE i.deleted = 0 AND o.status = 20 AND i.product_id IS NOT NULL "
+            + "<if test='productId != null'>AND i.product_id = #{productId} </if>"
+            + "<if test='beginTime != null'>AND o.order_time &gt;= #{beginTime} </if>"
+            + "<if test='endTime != null'>AND o.order_time &lt;= #{endTime} </if>"
+            + "GROUP BY i.product_id ORDER BY saleAmount DESC"
+            + "</script>")
+    List<ErpSaleProductStatisticsDO> selectProductStatistics(@Param("productId") Long productId,
+                                                             @Param("beginTime") LocalDateTime beginTime,
+                                                             @Param("endTime") LocalDateTime endTime);
+
 }

--
Gitblit v1.9.3