Newspaper před 2 roky
rodič
revize
60db287607

+ 1 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/controller/EnvDeviceController.java

@@ -117,6 +117,7 @@ public class EnvDeviceController {
             int spray = 1;
             for (int i = 0; i <list.size() ; i++) {
                 EnvDeviceEquipment envDeviceEquipment = new EnvDeviceEquipment();
+                envDeviceEquipment.setFarmId(Integer.parseInt(farmId));
                 envDeviceEquipment.setEquipmentPort(i+1);
                 envDeviceEquipment.setUnitId(Integer.parseInt(unitId));
                 envDeviceEquipment.setDeviceCode(deviceCode);

+ 30 - 10
huimv-admin/src/main/resources/com/huimv/guowei/admin/mapper/EnergyWaterMapper.xml

@@ -104,23 +104,43 @@
     </select>
     
     <select id="listSixMonthWaterLine" resultType="com.huimv.guowei.admin.entity.vo.WaterLineVo">
-        SELECT create_date,
+        SELECT calendar.month_date AS create_date,
         <foreach collection="chipCodeList" item="code" index="index" separator=",">
-            IFNULL(ROUND(SUM(CASE WHEN chip_code = ${code} THEN water_value END),2), 0) AS 'value${index+1}'
+            IFNULL(ROUND(SUM(CASE WHEN energy_water.chip_code = ${code} THEN energy_water.water_value ELSE 0 END), 2), 0) AS value${index+1}
         </foreach>
-    FROM `energy_water`
-    WHERE chip_code IN ${chipCodes} AND farm_id = #{farmId} AND create_date &gt;= DATE_SUB(NOW(), INTERVAL 6 MONTH)
-    GROUP BY DATE_FORMAT(create_date,"%Y-%m")
+        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_water` ON calendar.month_date = DATE_FORMAT(`energy_water`.create_date, "%Y-%m-01")
+        AND `energy_water`.chip_code IN ${chipCodes} AND `energy_water`.farm_id = #{farmId}
+        GROUP BY calendar.month_date
+        ORDER BY calendar.month_date;
     </select>
 
     <select id="listSevenDayWaterLine" resultType="com.huimv.guowei.admin.entity.vo.WaterLineVo">
-        SELECT create_date,
+        SELECT calendar.date AS create_date,
         <foreach collection="chipCodeList" item="code" index="index" separator=",">
-            IFNULL(ROUND(SUM(CASE WHEN chip_code = ${code} THEN water_value END), 2), 0) AS 'value${index+1}'
+            IFNULL(ROUND(SUM(CASE WHEN energy_water.chip_code = ${code} THEN energy_water.water_value ELSE 0 END), 2), 0) AS value${index+1}
         </foreach>
-        FROM `energy_water`
-        WHERE chip_code IN ${chipCodes} AND farm_id = #{farmId} AND create_date >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
-        GROUP BY DATE_FORMAT(create_date, "%Y-%m-%d")
+        FROM (
+        SELECT DATE_FORMAT(NOW(), '%Y-%m-%d') AS date
+        UNION ALL SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), '%Y-%m-%d')
+        UNION ALL SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 2 DAY), '%Y-%m-%d')
+        UNION ALL SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 3 DAY), '%Y-%m-%d')
+        UNION ALL SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 4 DAY), '%Y-%m-%d')
+        UNION ALL SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 5 DAY), '%Y-%m-%d')
+        UNION ALL SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 6 DAY), '%Y-%m-%d')
+        ) AS calendar
+        LEFT JOIN `energy_water` ON calendar.date = DATE(`energy_water`.create_date)
+        AND `energy_water`.chip_code IN ${chipCodes} AND `energy_water`.farm_id = #{farmId}
+        WHERE calendar.date >= DATE_SUB(DATE(NOW()), INTERVAL 6 DAY)
+        GROUP BY calendar.date
+        ORDER BY calendar.date;
     </select>