From 30a4a720cfdd57248514f50d141dfd51519aa75d Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期五, 16 一月 2026 08:58:57 +0800
Subject: [PATCH] yys 销售指标,采购报表

---
 src/main/java/com/ruoyi/sales/mapper/SalesLedgerMapper.java |   32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/sales/mapper/SalesLedgerMapper.java b/src/main/java/com/ruoyi/sales/mapper/SalesLedgerMapper.java
index a0a0b1f..6e4aee6 100644
--- a/src/main/java/com/ruoyi/sales/mapper/SalesLedgerMapper.java
+++ b/src/main/java/com/ruoyi/sales/mapper/SalesLedgerMapper.java
@@ -6,8 +6,11 @@
 import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.sales.dto.SalesLedgerDto;
+import com.ruoyi.sales.dto.SalesTrendDto;
+import com.ruoyi.sales.dto.StatisticsTableDto;
 import com.ruoyi.sales.pojo.SalesLedger;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -45,4 +48,33 @@
      * @return
      */
     IPage<SalesLedger> selectSalesLedgerListPage(Page page, @Param("salesLedgerDto") SalesLedgerDto salesLedgerDto);
+
+    /**
+     * 鎸夋湀浠界粺璁¤鍗曟暟銆侀攢鍞锛堟敮鎸佷骇鍝佸ぇ绫汇�佸鎴峰悕绉扮瓫閫夛級
+     * @param statisticsTableDto 缁熻鏌ヨ鍙傛暟DTO
+     * @return 閿�鍞秼鍔跨粺璁$粨鏋�
+     */
+    @Select("<script>" +
+            "SELECT " +
+            "DATE_FORMAT(sl.entry_date, '%Y-%m') AS month, " +
+            "COUNT(DISTINCT sl.id) AS order_count, " +  // 鎬昏鍗曟暟
+            "SUM(slp.tax_inclusive_total_price) AS sales_amount, " +  // 閿�鍞
+            // 鍙戣揣鐜� = 鍙戣揣璁㈠崟鏁� * 100 / 鎬昏鍗曟暟锛堜繚鐣�2浣嶅皬鏁帮紝閬垮厤闄�0鎶ラ敊锛�
+            "ROUND(IF(COUNT(DISTINCT sl.id) = 0, 0, " +
+            "SUM(CASE WHEN slp.approve_status = 2 THEN 1 ELSE 0 END) / COUNT(DISTINCT sl.id) * 100), 2) AS ship_rate " +
+            "FROM sales_ledger sl " +
+            "LEFT JOIN sales_ledger_product slp ON sl.id = slp.sales_ledger_id " +
+            "WHERE sl.entry_date BETWEEN #{statisticsTableDto.entryDateStart} AND #{statisticsTableDto.entryDateEnd} " +
+            // 浜у搧澶х被绛涢��
+            "<if test='statisticsTableDto.productCategory != null and statisticsTableDto.productCategory != \"\"'>" +
+            "AND slp.product_category = #{statisticsTableDto.productCategory} " +
+            "</if>" +
+            // 瀹㈡埛鍚嶇О绛涢��
+            "<if test='statisticsTableDto.customerName != null and statisticsTableDto.customerName != \"\"'>" +
+            "AND sl.customer_name = #{statisticsTableDto.customerName} " +
+            "</if>" +
+            "GROUP BY DATE_FORMAT(sl.entry_date, '%Y-%m') " +
+            "ORDER BY month" +
+            "</script>")
+    List<SalesTrendDto> statisticsTable(@Param("statisticsTableDto")StatisticsTableDto statisticsTableDto);
 }

--
Gitblit v1.9.3