From 423ac2a5e7e451248d8cdfc2cda3f32dba0ec8f8 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期三, 11 三月 2026 17:59:52 +0800
Subject: [PATCH] feat: 生产计划关联物料信息表

---
 src/main/resources/mapper/energy/EnergyConsumptionDetailMapper.xml |   84 ++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 80 insertions(+), 4 deletions(-)

diff --git a/src/main/resources/mapper/energy/EnergyConsumptionDetailMapper.xml b/src/main/resources/mapper/energy/EnergyConsumptionDetailMapper.xml
index 2fe5f17..b2cf830 100644
--- a/src/main/resources/mapper/energy/EnergyConsumptionDetailMapper.xml
+++ b/src/main/resources/mapper/energy/EnergyConsumptionDetailMapper.xml
@@ -26,16 +26,92 @@
                        left join energy e on ecd.energy_id = e.id
                        left join sys_user su on ecd.create_user = su.user_id) A
          <where>
-            <if test="c.energyTyep != null and c.energyTyep != ''">
+             <if test="c.type != null and c.type != ''">
+                and type =#{c.type}
+             </if>
+             <if test="c.energyTyep != null and c.energyTyep != ''">
                 and energy_tyep like concat('%',#{c.energyTyep},'%')
-            </if>
+             </if>
              <if test="c.energyName != null and c.energyName != ''">
                 and energy_name like concat('%',#{c.energyName},'%')
-            </if>
+             </if>
              <if test="c.meterReadingDate != null and c.meterReadingDate != ''">
                  and meter_reading_date =#{c.meterReadingDate}
+             </if>
+         </where>
+    </select>
+    <select id="calculateEnergy" resultType="java.util.Map">
+        select SUM(ecd.dosage) totalEnergyConsumption,
+               SUM(ecd.dosage * e.unit_price) totalEnergyCost
+            from energy_consumption_detail ecd
+            left join  energy e on ecd.energy_id = e.id
+            where ecd.meter_reading_date between #{c.startDate} and #{c.endDate}
+            <if test="c.type != null and c.type != ''">
+                and ecd.type =#{c.type}
             </if>
-        </where>
+    </select>
+    <select id="energyConsumptionTypeProportion"
+            resultType="com.ruoyi.energy.dto.EnergyConsumptionTypeDto">
+         select e.energy_tyep,
+                SUM(ecd.dosage) energyConsumption,
+               SUM(ecd.dosage * e.unit_price) energyCost
+            from energy_consumption_detail ecd
+            left join  energy e on ecd.energy_id = e.id
+            where ecd.meter_reading_date between #{c.startDate} and #{c.endDate}
+            <if test="c.type != null and c.type != ''">
+                and ecd.type =#{c.type}
+            </if>
+            group by e.energy_tyep
+    </select>
+    <select id="energyCostDtos" resultType="com.ruoyi.energy.dto.EnergyCostDto">
+    select A.meter_reading_date,
+           A.waterConsumption,
+           A.waterCost,
+           B.electricityConsumption,
+           B.electricityCost,
+           C.gasConsumption,
+           C.gasCost,
+           sum(A.waterConsumption+B.electricityConsumption+C.gasConsumption) totalConsumption,
+           sum(A.waterCost+B.electricityCost+C.gasCost) totalCost
+    from
+    (select ecd.meter_reading_date,
+               sum(ecd.dosage) waterConsumption,
+               sum(ecd.dosage * e1.unit_price) waterCost
+            from energy_consumption_detail ecd
+            left join  energy e1 on ecd.energy_id = e1.id
+            where ecd.meter_reading_date between #{c.startDate} and #{c.endDate}
+            and e1.energy_tyep='姘�'
+            <if test="c.type != null and c.type != ''">
+                and ecd.type =#{c.type}
+            </if>
+            group by ecd.meter_reading_date)A
+    join
+    (select ecd.meter_reading_date,
+               sum(ecd.dosage) electricityConsumption,
+               sum(ecd.dosage * e2.unit_price) electricityCost
+            from energy_consumption_detail ecd
+            left join  energy e2 on ecd.energy_id = e2.id
+            where ecd.meter_reading_date between #{c.startDate} and #{c.endDate}
+            and e2.energy_tyep='鐢�'
+            <if test="c.type != null and c.type != ''">
+                and ecd.type =#{c.type}
+            </if>
+            group by ecd.meter_reading_date)B
+        on A.meter_reading_date=B.meter_reading_date
+    join
+    (select ecd.meter_reading_date,
+               sum(ecd.dosage) gasConsumption,
+               sum(ecd.dosage * e3.unit_price) gasCost
+            from energy_consumption_detail ecd
+            left join  energy e3 on ecd.energy_id = e3.id
+            where ecd.meter_reading_date between #{c.startDate} and #{c.endDate}
+            and e3.energy_tyep='姘�'
+            <if test="c.type != null and c.type != ''">
+                and ecd.type =#{c.type}
+            </if>
+            group by ecd.meter_reading_date)C
+        on A.meter_reading_date=C.meter_reading_date
+        
     </select>
 
 </mapper>

--
Gitblit v1.9.3