Newspaper пре 1 година
родитељ
комит
c41d394606

+ 5 - 0
huimv-admin/src/main/java/com/huimv/admin/controller/EnergyElectricityController.java

@@ -42,4 +42,9 @@ public class EnergyElectricityController {
     public Result listPigpenApp(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
         return energyElectricityService.listPigpenApp(httpServletRequest, paramsMap);
     }
+
+    @RequestMapping("/listScreen")
+    public Result listScreen(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return energyElectricityService.listScreen(httpServletRequest, paramsMap);
+    }
 }

+ 5 - 0
huimv-admin/src/main/java/com/huimv/admin/controller/EnergyEnvDeviceController.java

@@ -67,4 +67,9 @@ public class EnergyEnvDeviceController {
         return new Result(10000,"解绑成功",true);
     }
 
+    @RequestMapping("/listDevice")
+    public Result listDevice(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return energyEnvDeviceService.listDevice(httpServletRequest,paramsMap);
+    }
+
 }

+ 4 - 0
huimv-admin/src/main/java/com/huimv/admin/controller/EnergyWaterController.java

@@ -44,4 +44,8 @@ public class EnergyWaterController {
     public Result listPigpenApp(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
         return energyWaterService.listPigpenApp(httpServletRequest, paramsMap);
     }
+    @RequestMapping("/listScreen")
+    public Result listScreen(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return energyWaterService.listScreen(httpServletRequest, paramsMap);
+    }
 }

+ 9 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/vo/EnergyVo.java

@@ -0,0 +1,9 @@
+package com.huimv.admin.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class EnergyVo {
+    private String date;
+    private Double value;
+}

+ 12 - 2
huimv-admin/src/main/java/com/huimv/admin/mapper/EnergyDataMapper.java

@@ -1,6 +1,5 @@
 package com.huimv.admin.mapper;
 
-import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.huimv.admin.entity.EnergyData;
@@ -9,7 +8,6 @@ import com.huimv.admin.entity.vo.*;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
-import java.util.Date;
 import java.util.List;
 
 /**
@@ -71,4 +69,16 @@ public interface EnergyDataMapper extends BaseMapper<EnergyData> {
     //大屏能耗弹窗
     EnergyDataScreenVo listDataAll(String today, String week,String month,String yesterdayStart,String yesterdayEnd
             ,String weekStart,String weekEnd,String monthStart,String monthEnd,Integer unitId,String farmId);
+
+    List<EnergyVo> listSevenDayElectricity(String farmId, String displayType, String unitId);
+
+    List<EnergyVo> listSixMonthElectricity(String farmId, String displayType, String unitId);
+
+    Double getElectricity(String farmId, String displayType, String unitId, String startDate, String endDate);
+
+    List<EnergyVo> listSevenDayWater(String farmId, String displayType, String unitId);
+
+    Double getWater(String farmId, String displayType, String unitId, String startDate, String endDate);
+
+    List<EnergyVo> listSixMonthWater(String farmId, String displayType, String unitId);
 }

+ 2 - 0
huimv-admin/src/main/java/com/huimv/admin/service/IEnergyElectricityService.java

@@ -22,4 +22,6 @@ public interface IEnergyElectricityService extends IService<EnergyElectricity> {
 
     //app
     Result listPigpenApp(HttpServletRequest httpServletRequest,Map<String,String> paramsMap);
+
+    Result listScreen(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
 }

+ 2 - 0
huimv-admin/src/main/java/com/huimv/admin/service/IEnergyEnvDeviceService.java

@@ -29,4 +29,6 @@ public interface IEnergyEnvDeviceService extends IService<EnergyEnvDevice> {
     Result bandingUnitId(HttpServletRequest httpServletRequest, EnergyEnvDevice envDevice);
 
     Result deviceCount(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+    Result listDevice(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
 }

+ 2 - 0
huimv-admin/src/main/java/com/huimv/admin/service/IEnergyWaterService.java

@@ -22,4 +22,6 @@ public interface IEnergyWaterService extends IService<EnergyWater> {
 
     //app
     Result listPigpenApp(HttpServletRequest httpServletRequest,Map<String,String> paramsMap );
+
+    Result listScreen(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
 }

+ 48 - 0
huimv-admin/src/main/java/com/huimv/admin/service/impl/EnergyElectricityServiceImpl.java

@@ -13,6 +13,7 @@ import com.huimv.admin.common.utils.ResultCode;
 import com.huimv.admin.entity.BasePigpen;
 import com.huimv.admin.entity.EnergyData;
 import com.huimv.admin.entity.EnergyElectricity;
+import com.huimv.admin.entity.vo.EnergyVo;
 import com.huimv.admin.entity.vo.EnergyElectricityDataVo;
 import com.huimv.admin.mapper.BasePigpenMapper;
 import com.huimv.admin.mapper.EnergyDataMapper;
@@ -24,6 +25,9 @@ import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletRequest;
 import java.text.DecimalFormat;
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 
 /**
@@ -172,6 +176,50 @@ public class EnergyElectricityServiceImpl extends ServiceImpl<EnergyElectricityM
         return new Result(ResultCode.SUCCESS, array);
     }
 
+    @Override
+    public Result listScreen(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String type = paramsMap.get("type");
+        String unitId = paramsMap.get("unitId");
+        String displayType = paramsMap.get("displayType");
+        List<EnergyVo> result;
+        List<EnergyVo> electricityVo = new ArrayList<>();
+        //近七天
+        if ("0".equals(type)){
+            electricityVo = dataMapper.listSevenDayElectricity(farmId,displayType,unitId);
+            result = calculate(electricityVo);
+        }else if ("1".equals(type)){
+            LocalDate currentDate = LocalDate.now();
+            // 获取过去六周的日期范围
+            for (int i = 5; i >= 0; i--) {
+                EnergyVo electricityVo1 = new EnergyVo();
+                LocalDate startDate = currentDate.minusWeeks(i).with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
+                LocalDate endDate = startDate.plusDays(6);
+                electricityVo1.setDate(startDate.toString()+" - "+endDate.toString());
+                electricityVo1.setValue(dataMapper.getElectricity(farmId,displayType,unitId,startDate.toString() + " 00:00:00",endDate + " 23:59:59"));
+                electricityVo.add(electricityVo1);
+            }
+            result = calculate(electricityVo);
+        }else {
+            electricityVo = dataMapper.listSixMonthElectricity(farmId,displayType,unitId);
+            result = calculate(electricityVo);
+        }
+        return new Result(ResultCode.SUCCESS,result);
+    }
+
+    public List<EnergyVo> calculate(List<EnergyVo> list){
+        List<EnergyVo> result = new ArrayList<>();
+        double total = 0;
+        for (EnergyVo vo : list) {
+            total += vo.getValue();
+            EnergyVo cumulativeVo = new EnergyVo();
+            cumulativeVo.setDate(vo.getDate());
+            cumulativeVo.setValue(total);
+            result.add(cumulativeVo);
+        }
+        return result;
+    }
+
     /*数组排序*/
     public static JSONArray jsonArraySort(JSONArray jsonArr, String sortKey, boolean is_desc) {
         //存放排序结果json数组

+ 9 - 0
huimv-admin/src/main/java/com/huimv/admin/service/impl/EnergyEnvDeviceServiceImpl.java

@@ -149,4 +149,13 @@ public class EnergyEnvDeviceServiceImpl extends ServiceImpl<EnergyEnvDeviceMappe
         }
         return new Result(ResultCode.SUCCESS, jsonObject);
     }
+
+    @Override
+    public Result listDevice(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String type = paramsMap.get("type");
+        QueryWrapper<EnergyEnvDevice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId).eq("remark",type);
+        return new Result(ResultCode.SUCCESS,energyEnvDeviceMapper.selectList(queryWrapper));
+    }
 }

+ 48 - 0
huimv-admin/src/main/java/com/huimv/admin/service/impl/EnergyWaterServiceImpl.java

@@ -13,6 +13,7 @@ import com.huimv.admin.common.utils.ResultCode;
 import com.huimv.admin.entity.BasePigpen;
 import com.huimv.admin.entity.EnergyData;
 import com.huimv.admin.entity.EnergyWater;
+import com.huimv.admin.entity.vo.EnergyVo;
 import com.huimv.admin.entity.vo.EnergyWaterDataVo;
 import com.huimv.admin.mapper.BasePigpenMapper;
 import com.huimv.admin.mapper.EnergyDataMapper;
@@ -25,6 +26,9 @@ import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletRequest;
 import java.text.DecimalFormat;
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 
 /**
@@ -171,6 +175,50 @@ public class EnergyWaterServiceImpl extends ServiceImpl<EnergyWaterMapper, Energ
         return new Result(ResultCode.SUCCESS, array);
     }
 
+    @Override
+    public Result listScreen(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String type = paramsMap.get("type");
+        String unitId = paramsMap.get("unitId");
+        String displayType = paramsMap.get("displayType");
+        List<EnergyVo> result;
+        List<EnergyVo> waterVo = new ArrayList<>();
+        //近七天
+        if ("0".equals(type)){
+            waterVo = dataMapper.listSevenDayWater(farmId,displayType,unitId);
+            result = calculate(waterVo);
+        }else if ("1".equals(type)){
+            LocalDate currentDate = LocalDate.now();
+            // 获取过去六周的日期范围
+            for (int i = 5; i >= 0; i--) {
+                EnergyVo waterVo1 = new EnergyVo();
+                LocalDate startDate = currentDate.minusWeeks(i).with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
+                LocalDate endDate = startDate.plusDays(6);
+                waterVo1.setDate(startDate.toString()+" - "+endDate.toString());
+                waterVo1.setValue(dataMapper.getWater(farmId,displayType,unitId,startDate.toString() + " 00:00:00",endDate + " 23:59:59"));
+                waterVo.add(waterVo1);
+            }
+            result = calculate(waterVo);
+        }else {
+            waterVo = dataMapper.listSixMonthWater(farmId,displayType,unitId);
+            result = calculate(waterVo);
+        }
+        return new Result(ResultCode.SUCCESS,result);
+    }
+
+    public List<EnergyVo> calculate(List<EnergyVo> list){
+        List<EnergyVo> result = new ArrayList<>();
+        double total = 0;
+        for (EnergyVo vo : list) {
+            total += vo.getValue();
+            EnergyVo cumulativeVo = new EnergyVo();
+            cumulativeVo.setDate(vo.getDate());
+            cumulativeVo.setValue(total);
+            result.add(cumulativeVo);
+        }
+        return result;
+    }
+
     /*数组排序*/
     public static JSONArray jsonArraySort(JSONArray jsonArr, String sortKey, boolean is_desc) {
         //存放排序结果json数组

+ 121 - 0
huimv-admin/src/main/resources/com/huimv/admin/mapper/EnergyDataMapper.xml

@@ -188,4 +188,125 @@ SELECT
     CONVERT(IFNULL(SUM(CASE WHEN create_date BETWEEN #{monthStart} AND #{monthEnd} THEN electricity_value ELSE 0 END), '0'), DECIMAL(10, 2)) AS electricityValueLastMonthUsage
 FROM `energy_data` WHERE unit_id = ${unitId} AND farm_id =${farmId}
  </select>
+
+
+    <select id="listSevenDayElectricity" resultType="com.huimv.admin.entity.vo.EnergyVo">
+        SELECT
+            calendar.date,
+            ROUND(COALESCE(SUM(energy_data.electricity_value), 0), 2) AS 'value'
+        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_data`
+        ON
+            calendar.date = DATE(energy_data.create_date)
+            AND energy_data.farm_id = #{farmId}
+            AND energy_data.display_type = #{displayType}
+            AND energy_data.unit_id = #{unitId}
+        GROUP BY
+            calendar.date;
+    </select>
+
+    <select id="listSixMonthElectricity" resultType="com.huimv.admin.entity.vo.EnergyVo">
+        SELECT
+            calendar.date,
+            ROUND(COALESCE(SUM(energy_data.electricity_value), 0), 2) AS 'value'
+        FROM (
+            SELECT DATE_FORMAT(NOW(), '%Y-%m') AS date
+            UNION ALL SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m')
+            UNION ALL SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 2 MONTH), '%Y-%m')
+            UNION ALL SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 3 MONTH), '%Y-%m')
+            UNION ALL SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 4 MONTH), '%Y-%m')
+            UNION ALL SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 5 MONTH), '%Y-%m')
+        ) AS calendar
+        LEFT JOIN
+            `energy_data`
+        ON
+            calendar.date = DATE_FORMAT(energy_data.create_date,"%Y-%m")
+            AND energy_data.farm_id = #{farmId}
+            AND energy_data.display_type = #{displayType}
+            AND energy_data.unit_id = #{unitId}
+        GROUP BY
+            calendar.date
+        order by
+            calendar.date
+    </select>
+    <select id="getElectricity" resultType="java.lang.Double">
+        SELECT
+            ROUND(COALESCE(SUM(energy_data.electricity_value), 0), 2) AS 'value'
+        FROM
+            `energy_data`
+        WHERE
+            create_date BETWEEN #{startDate} AND #{endDate}
+            AND energy_data.farm_id = #{farmId}
+            AND energy_data.display_type = #{displayType}
+            AND energy_data.unit_id = #{unitId}
+    </select>
+    <select id="listSevenDayWater" resultType="com.huimv.admin.entity.vo.EnergyVo">
+        SELECT
+            calendar.date,
+            ROUND(COALESCE(SUM(energy_data.water_value), 0), 2) AS 'value'
+        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_data`
+        ON
+            calendar.date = DATE(energy_data.create_date)
+            AND energy_data.farm_id = #{farmId}
+            AND energy_data.display_type = #{displayType}
+            AND energy_data.unit_id = #{unitId}
+        GROUP BY
+            calendar.date;
+    </select>
+
+    <select id="getWater" resultType="java.lang.Double">
+        SELECT
+            ROUND(COALESCE(SUM(energy_data.water_value), 0), 2) AS 'value'
+        FROM
+            `energy_data`
+        WHERE
+            create_date BETWEEN #{startDate} AND #{endDate}
+            AND energy_data.farm_id = #{farmId}
+            AND energy_data.display_type = #{displayType}
+            AND energy_data.unit_id = #{unitId}
+    </select>
+
+    <select id="listSixMonthWater" resultType="com.huimv.admin.entity.vo.EnergyVo">
+        SELECT
+            calendar.date,
+            ROUND(COALESCE(SUM(energy_data.water_value), 0), 2) AS 'value'
+        FROM (
+            SELECT DATE_FORMAT(NOW(), '%Y-%m') AS date
+            UNION ALL SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m')
+            UNION ALL SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 2 MONTH), '%Y-%m')
+            UNION ALL SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 3 MONTH), '%Y-%m')
+            UNION ALL SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 4 MONTH), '%Y-%m')
+            UNION ALL SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 5 MONTH), '%Y-%m')
+        ) AS calendar
+        LEFT JOIN
+            `energy_data`
+        ON
+            calendar.date = DATE_FORMAT(energy_data.create_date,"%Y-%m")
+            AND energy_data.farm_id = #{farmId}
+            AND energy_data.display_type = #{displayType}
+            AND energy_data.unit_id = #{unitId}
+        GROUP BY
+            calendar.date
+        order by
+            calendar.date
+    </select>
 </mapper>