Newspaper 1 年之前
父節點
當前提交
e14704440d

+ 29 - 9
huimv-admin/src/main/resources/com/huimv/guowei/admin/mapper/EnergyElectricityMapper.xml

@@ -61,18 +61,38 @@
     </select>
 
     <select id="listSixMonthElectricity" resultType="com.huimv.guowei.admin.entity.EnergyElectricity">
-        SELECT IFNUll(ROUND(SUM(electricity_value),2),0) 'electricityValue', create_date FROM `energy_electricity`
-        WHERE farm_id = #{farmId} and unit_id = #{unitId}
-        AND create_date &gt;= DATE_SUB(NOW(), INTERVAL 6 MONTH)
-        GROUP BY DATE_FORMAT(create_date,"%Y-%m")
+        SELECT IFNUll(ROUND(SUM(energy_electricity.electricity_value),2),0) 'electricityValue', calendar.month_date AS create_date FROM (
+        SELECT DATE_FORMAT(NOW(), '%Y-%m-01') AS month_date
+        UNION ALL SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m-01')
+        UNION ALL SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 2 MONTH), '%Y-%m-01')
+        UNION ALL SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 3 MONTH), '%Y-%m-01')
+        UNION ALL SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 4 MONTH), '%Y-%m-01')
+        UNION ALL SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 5 MONTH), '%Y-%m-01')
+        ) AS calendar
+        LEFT JOIN `energy_electricity`
+        ON energy_electricity.farm_id = #{farmId} and energy_electricity.unit_id = #{unitId} AND calendar.month_date = DATE_FORMAT(`energy_electricity`.create_date, "%Y-%m-01")
+        GROUP BY calendar.month_date
+        ORDER BY calendar.month_date
     </select>
 
     <select id="listSevenDayElectricity" resultType="com.huimv.guowei.admin.entity.EnergyElectricity">
-        SELECT IFNULL(ROUND(SUM(electricity_value), 2), 0) AS electricityValue, create_date
-        FROM energy_electricity
-        WHERE farm_id = #{farmId} and unit_id = #{unitId}
-        AND create_date &gt;= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
-        GROUP BY DATE_FORMAT(create_date,"%Y-%m-%d")
+        SELECT IFNULL(ROUND(SUM(energy_electricity.electricity_value), 2), 0) AS 'electricityValue', calendar.date AS create_date
+FROM (
+    SELECT CURDATE() AS date
+    UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY)
+    UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 2 DAY)
+    UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 3 DAY)
+    UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 4 DAY)
+    UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 5 DAY)
+    UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 6 DAY)
+) AS calendar
+LEFT JOIN `energy_electricity`
+    ON energy_electricity.farm_id = #{farmId}
+    AND energy_electricity.unit_id = #{unitId}
+    AND DATE(energy_electricity.create_date) = calendar.date
+GROUP BY calendar.date
+ORDER BY calendar.date;
+
     </select>
 
     <select id="getLastFlowByUnitId" resultType="java.math.BigDecimal">