From d7d4ae6cfb28adf7ef92f44332ff492f0cc7069c Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期五, 07 八月 2026 15:44:41 +0800
Subject: [PATCH] feat: 完善大屏与光储监控接口

---
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml |   53 +++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 43 insertions(+), 10 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
index b7148c7..934b64d 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -3444,16 +3444,25 @@
         SELECT COUNT(*) FROM t_large_screen_user_site
     </select>
 
-    <!-- 任务用: 按日切片聚合, 口径与 getLargeScreenChargingPower 一致(无 status 过滤) -->
+    <!-- 任务用: 按日切片聚合,功率保持原口径;收入与月度切片一致。 -->
     <select id="daySliceAgg" resultType="java.util.Map">
-        SELECT site_id AS site_id,
+        SELECT charging_order.site_id AS site_id,
                COUNT(1) AS order_count,
-               COALESCE(SUM(IFNULL(power, 0)), 0) AS total_power
-        FROM t_charging_order
-        WHERE del_flag = 0
-          AND create_time &gt;= #{startTime}
-          AND create_time &lt; #{endTime}
-        GROUP BY site_id
+               COALESCE(SUM(IFNULL(charging_order.power, 0)), 0) AS total_power,
+               COALESCE(ROUND(SUM(CASE WHEN charging_order.status = 5
+                   AND charging_order.recharge_payment_status = 2 THEN accounting.period_electric_price ELSE 0 END), 2), 0) AS electric_fee,
+               COALESCE(ROUND(SUM(CASE WHEN charging_order.status = 5
+                   AND charging_order.recharge_payment_status = 2 AND charging_order.order_source IN (0, 1) THEN accounting.period_service_price
+                   WHEN charging_order.status = 5
+                   AND charging_order.recharge_payment_status = 2 THEN accounting.period_service_price * 0.8
+                   ELSE 0 END), 2), 0) AS service_fee
+        FROM t_charging_order charging_order
+        LEFT JOIN t_charging_order_accounting_strategy accounting
+               ON accounting.charging_order_id = charging_order.id
+        WHERE charging_order.del_flag = 0
+          AND charging_order.create_time &gt;= #{startTime}
+          AND charging_order.create_time &lt; #{endTime}
+        GROUP BY charging_order.site_id
     </select>
 
     <!-- 任务用: 注册用户总数 -->
@@ -3499,13 +3508,13 @@
         </if>
     </select>
 
-    <!-- 接口用: 近 N 月收入趋势(M 行按 period 分组, period 为 yyyy-MM 字典序可比) -->
+    <!-- 接口用: 近 N 日收入趋势(D 行按 period 分组, period 为 yyyy-MM-dd 字典序可比) -->
     <select id="incomeTrendFromStat" resultType="com.ruoyi.order.dto.SixChargingDto">
         SELECT period AS month,
                COALESCE(SUM(electric_fee), 0) AS electrovalence,
                COALESCE(SUM(service_fee), 0) AS service_charge
         FROM t_large_screen_site_stat
-        WHERE stat_type = 'M'
+        WHERE stat_type = 'D'
           AND period &gt;= #{sixBefore}
         <if test="siteIds != null and siteIds.size() > 0">
             AND site_id IN
@@ -3516,6 +3525,30 @@
         GROUP BY period
     </select>
 
+    <!-- 接口用: 最近七日收入,直接查询确保历史日切片升级后也能立即显示正确金额。 -->
+    <select id="incomeTrendFromOrders" resultType="com.ruoyi.order.dto.SixChargingDto">
+        SELECT DATE_FORMAT(charging_order.create_time, '%Y-%m-%d') AS month,
+               COALESCE(ROUND(SUM(accounting.period_electric_price), 2), 0) AS electrovalence,
+               COALESCE(ROUND(SUM(CASE WHEN charging_order.order_source IN (0, 1) THEN accounting.period_service_price
+                   ELSE accounting.period_service_price * 0.8 END), 2), 0) AS service_charge
+        FROM t_charging_order charging_order
+        LEFT JOIN t_charging_order_accounting_strategy accounting
+               ON accounting.charging_order_id = charging_order.id
+        WHERE charging_order.del_flag = 0
+          AND charging_order.status = 5
+          AND charging_order.recharge_payment_status = 2
+          AND charging_order.create_time &gt;= #{startTime}
+          AND charging_order.create_time &lt; #{endTime}
+        <if test="siteIds != null and siteIds.size() > 0">
+            AND charging_order.site_id IN
+            <foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
+                #{siteId}
+            </foreach>
+        </if>
+        GROUP BY DATE_FORMAT(charging_order.create_time, '%Y-%m-%d')
+        ORDER BY month
+    </select>
+
     <!-- 接口用: 日功率曲线(D 行按 period 分组, period 为 yyyy-MM-dd 字典序可比) -->
     <select id="powerFromStat" resultType="java.util.Map">
         SELECT period AS day,

--
Gitblit v1.7.1