ソースを参照

华统大屏修改

wwh 1 年間 前
コミット
358b6cced8
18 ファイル変更726 行追加186 行削除
  1. 10 0
      huimv-admin/src/main/java/com/huimv/admin/controller/EnergyDataController.java
  2. 5 0
      huimv-admin/src/main/java/com/huimv/admin/controller/EnvDeviceController.java
  3. 5 0
      huimv-admin/src/main/java/com/huimv/admin/controller/EnvWarningInfoController.java
  4. 16 0
      huimv-admin/src/main/java/com/huimv/admin/controller/LoginController.java
  5. 3 0
      huimv-admin/src/main/java/com/huimv/admin/mapper/EnergyDataMapper.java
  6. 6 0
      huimv-admin/src/main/java/com/huimv/admin/service/IEnergyDataService.java
  7. 1 1
      huimv-admin/src/main/java/com/huimv/admin/service/IEnergyElectricityService.java
  8. 3 0
      huimv-admin/src/main/java/com/huimv/admin/service/IEnvDeviceService.java
  9. 2 0
      huimv-admin/src/main/java/com/huimv/admin/service/IEnvWarningInfoService.java
  10. 368 108
      huimv-admin/src/main/java/com/huimv/admin/service/impl/EnergyDataServiceImpl.java
  11. 52 6
      huimv-admin/src/main/java/com/huimv/admin/service/impl/EnergyElectricityServiceImpl.java
  12. 49 2
      huimv-admin/src/main/java/com/huimv/admin/service/impl/EnergyFeedServiceImpl.java
  13. 54 8
      huimv-admin/src/main/java/com/huimv/admin/service/impl/EnergyWaterServiceImpl.java
  14. 83 40
      huimv-admin/src/main/java/com/huimv/admin/service/impl/EnvDeviceServiceImpl.java
  15. 20 0
      huimv-admin/src/main/java/com/huimv/admin/service/impl/EnvWarningInfoServiceImpl.java
  16. 32 18
      huimv-admin/src/main/java/com/huimv/admin/timer/NewEnvTimer.java
  17. 6 0
      huimv-admin/src/main/resources/com/huimv/admin/mapper/EnergyDataMapper.xml
  18. 11 3
      huimv-admin/src/main/resources/com/huimv/admin/mapper/EnvWarningInfoMapper.xml

+ 10 - 0
huimv-admin/src/main/java/com/huimv/admin/controller/EnergyDataController.java

@@ -68,6 +68,16 @@ public class EnergyDataController {
         return iEnergyDataService.listRankScreen(httpServletRequest, paramsMap);
     }
 
+    @RequestMapping("/listDataAll")
+    public Result listDataAll(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return iEnergyDataService.listDataAll(httpServletRequest, paramsMap);
+    }
+
+    //为了展示给别人好看一点
+    @RequestMapping("/listDataWaterAndElc")
+    public Result listDataAll2(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return iEnergyDataService.listDataAll2(httpServletRequest, paramsMap);
+    }
 
     @RequestMapping("/getData")
     public void getData(@RequestBody Map<String, List<WaterAndElectricity>> paramsMap) {

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

@@ -87,4 +87,9 @@ public class EnvDeviceController {
     public Result listByScreen(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
         return envDeviceService.listEnvCount(httpServletRequest,paramsMap);
     }
+
+    @RequestMapping("/listData")
+    public Result listData(HttpServletRequest httpServletRequest, @RequestBody Map<String, String> paramsMap) {
+        return envDeviceService.listData(httpServletRequest,paramsMap);
+    }
 }

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

@@ -48,4 +48,9 @@ public class EnvWarningInfoController {
     public Result listScreen(HttpServletRequest httpServletRequest, @RequestBody Map<String,String> paramsMap) {
         return envWarningInfoService.listScreen(httpServletRequest,paramsMap);
     }
+
+    @RequestMapping("/listScreenAll")
+    public Result listScreenAll(HttpServletRequest httpServletRequest, @RequestBody Map<String,String> paramsMap) {
+        return envWarningInfoService.listScreenAll(httpServletRequest,paramsMap);
+    }
 }

+ 16 - 0
huimv-admin/src/main/java/com/huimv/admin/controller/LoginController.java

@@ -158,6 +158,22 @@ public class LoginController {
         }
     }
 
+    @RequestMapping("/logoutOne")
+    public Result logoutOne(HttpServletRequest req, @RequestBody Map<String, String> map) {
+        String accountName = map.get("accountName");
+        String password = map.get("password");
+        String remoteHost = req.getRemoteHost();
+        Result result = iLoginService.loginMultilevel(accountName, password);
+        if (result.getCode() == 10000) {
+            SysAccountMultilevel data = (SysAccountMultilevel) result.getData();
+            AccessToken accessToken = new AccessToken();
+            String token = TokenSign.sign(data.getUserName(), data.getId(), data.getFarmIds(), data.getWorkLocationType(), data.getType());
+            accessToken.setToken(token);
+            return new Result(ResultCode.SUCCESS, token);
+        } else {
+            return result;
+        }
+    }
 
 /*    @RequestMapping("/logoutWeChat")
     public Result logoutWeChat(HttpServletRequest req, @RequestBody Map<String, String> map) {

+ 3 - 0
huimv-admin/src/main/java/com/huimv/admin/mapper/EnergyDataMapper.java

@@ -58,4 +58,7 @@ public interface EnergyDataMapper extends BaseMapper<EnergyData> {
 
     //能耗使用
     EnergyData listDataCount(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
+
+    //大屏能耗弹窗
+    EnergyDataScreenVo listDataAll(@Param(Constants.WRAPPER) QueryWrapper<EnergyData> queryWrapper);
 }

+ 6 - 0
huimv-admin/src/main/java/com/huimv/admin/service/IEnergyDataService.java

@@ -27,4 +27,10 @@ public interface IEnergyDataService extends IService<EnergyData> {
 
     Result listRankScreen(HttpServletRequest httpServletRequest,Map<String,String> paramsMap);
 
+    //大屏能耗的弹窗
+    Result listDataAll(HttpServletRequest httpServletRequest,Map<String,String> paramsMap);
+
+    //仅仅是为了暴露出去展示的字段好看一点而写
+    Result listDataAll2(HttpServletRequest httpServletRequest,Map<String,String> paramsMap);
+
 }

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

@@ -21,5 +21,5 @@ public interface IEnergyElectricityService extends IService<EnergyElectricity> {
     Result listData(HttpServletRequest httpServletRequest,Map<String,String> paramsMap );
 
     //app
-    Result listPigpenApp(HttpServletRequest httpServletRequest,Map<String,String> paramsMap );
+    Result listPigpenApp(HttpServletRequest httpServletRequest,Map<String,String> paramsMap);
 }

+ 3 - 0
huimv-admin/src/main/java/com/huimv/admin/service/IEnvDeviceService.java

@@ -39,4 +39,7 @@ public interface IEnvDeviceService extends IService<EnvDevice> {
     Result listPigpenAll(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
 
     Result listEnvCount(HttpServletRequest httpServletRequest,Map<String,String> paramsMap);
+
+    //大屏弹窗
+    Result listData(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
 }

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

@@ -21,4 +21,6 @@ public interface IEnvWarningInfoService extends IService<EnvWarningInfo> {
     Result listTop(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
 
     Result listScreen(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
+
+    Result listScreenAll(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
 }

+ 368 - 108
huimv-admin/src/main/java/com/huimv/admin/service/impl/EnergyDataServiceImpl.java

@@ -2,21 +2,25 @@ package com.huimv.admin.service.impl;
 
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.lang.Pair;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONException;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.huimv.admin.common.token.TokenSign;
 import com.huimv.admin.common.utils.DataUill;
 import com.huimv.admin.common.utils.Result;
 import com.huimv.admin.common.utils.ResultCode;
 import com.huimv.admin.entity.BasePigpen;
 import com.huimv.admin.entity.EnergyData;
+import com.huimv.admin.entity.EnergyEnvDevice;
 import com.huimv.admin.entity.EnergyWarningInfo;
 import com.huimv.admin.entity.vo.*;
 import com.huimv.admin.mapper.BasePigpenMapper;
 import com.huimv.admin.mapper.EnergyDataMapper;
+import com.huimv.admin.mapper.EnergyEnvDeviceMapper;
 import com.huimv.admin.mapper.EnergyWarningInfoMapper;
 import com.huimv.admin.service.IEnergyDataService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -25,6 +29,7 @@ import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletRequest;
 import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 /**
@@ -44,6 +49,8 @@ public class EnergyDataServiceImpl extends ServiceImpl<EnergyDataMapper, EnergyD
     private BasePigpenMapper basePigpenMapper;
     @Autowired
     private EnergyWarningInfoMapper warningInfoMapper;
+    @Autowired
+    private EnergyEnvDeviceMapper envDeviceMapper;
 
     @Override
     public Result listCount(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
@@ -221,32 +228,24 @@ public class EnergyDataServiceImpl extends ServiceImpl<EnergyDataMapper, EnergyD
         if (timeType == null || timeType == "") {
             timeType = "3";
         }
-        QueryWrapper<BasePigpen> basePigpenQueryWrapper = new QueryWrapper<>();
-        basePigpenQueryWrapper.eq("farm_id", farmId);
         JSONArray jsonArray = new JSONArray();
-        basePigpenQueryWrapper.eq("parent_id", 0);
-        List<BasePigpen> basePigpens = basePigpenMapper.selectList(basePigpenQueryWrapper);//得到所有的栋舍
-        for (BasePigpen basePigpen : basePigpens) {
-            QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("farm_id", farmId).eq("parent_id", basePigpen.getId()).eq("f_type", 2);
-            List<BasePigpen> pigpens = basePigpenMapper.selectList(queryWrapper);//得到所有的楼层
-            Float value = 0.00f;
-            for (BasePigpen pigpen : pigpens) {
-                QueryWrapper<BasePigpen> queryWrapper1 = new QueryWrapper<>();
-                queryWrapper1.like("other2", pigpen.getId()).eq("farm_id", farmId);
-                List<BasePigpen> basePigpens1 = basePigpenMapper.selectList(queryWrapper1);
-                List<Integer> idList = new ArrayList<>();
-                basePigpens1.forEach(item -> {
-                    idList.add(item.getId());
-                });//某一层所有单元的id
-                QueryWrapper<EnergyData> dataQueryWrapper = new QueryWrapper<>();
-                if (ObjectUtil.isNotEmpty(idList)) {
-                    dataQueryWrapper.eq("farm_id", farmId).in("unit_id", idList);
-                } else {
-                    dataQueryWrapper.eq("farm_id", farmId);
-                }
-
 
+        QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId).eq("f_type", 2);
+        List<BasePigpen> pigpens = basePigpenMapper.selectList(queryWrapper);//得到所有的楼层
+        for (BasePigpen pigpen : pigpens) {
+            Float value = 0.00f;
+            JSONObject jsonObject = new JSONObject();
+            QueryWrapper<BasePigpen> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.like("other2", pigpen.getId()).eq("farm_id", farmId).ne("id", pigpen.getId());
+            List<BasePigpen> basePigpens1 = basePigpenMapper.selectList(queryWrapper1);
+            List<Integer> idList = new ArrayList<>();
+            basePigpens1.forEach(item -> {
+                idList.add(item.getId());
+            });//某一层所有单元的id
+            QueryWrapper<EnergyData> dataQueryWrapper = new QueryWrapper<>();
+            if (idList.size() != 0) {
+                dataQueryWrapper.eq("farm_id", farmId).in("unit_id", idList);
                 if ("4".equals(timeType)) {
                     //自定义
                     startTime = startTime + " 00:00:00";
@@ -266,53 +265,36 @@ public class EnergyDataServiceImpl extends ServiceImpl<EnergyDataMapper, EnergyD
                     calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
                     dataQueryWrapper.ge("create_date", calendar.getTime());
                 }
-
-
                 dataQueryWrapper.select(
-                        "IFNULL(SUM(water_value),0) waterValue,IFNULL(SUM(gas_value),0) gasValue" +
+                        " IFNULL(SUM(water_value),0) waterValue,IFNULL(SUM(gas_value),0) gasValue" +
                                 ",IFNULL(SUM(electricity_value),0) electricityValue" +
                                 ",IFNULL(SUM(feed_value),0) feedValue  "
                 );
                 EnergyData energyData = dataMapper.selectOne(dataQueryWrapper);
-                JSONObject jsonObject = new JSONObject();
-
-
                 if ("1".equals(dataType)) {
-                    if (Float.parseFloat(energyData.getWaterValue()) != 0.0f) {
-                        value = value + Float.parseFloat(energyData.getWaterValue());
-                        jsonObject.put("value", value);
-                    } else {
-                        jsonObject.put("value", 0);
-                    }
+                    value = Float.parseFloat(energyData.getWaterValue());
+                    jsonObject.put("value", value);
                 }
                 if ("2".equals(dataType)) {
-                    if (Float.parseFloat(energyData.getElectricityValue()) != 0.0f) {
-                        value = value + Float.parseFloat(energyData.getElectricityValue());
-                        jsonObject.put("value", value);
-                    } else {
-                        jsonObject.put("value", 0);
-                    }
+                    value = Float.parseFloat(energyData.getElectricityValue());
+                    jsonObject.put("value", value);
                 }
                 if ("3".equals(dataType)) {
-                    if (Float.parseFloat(energyData.getFeedValue()) != 0.0f) {
-                        value = value + Float.parseFloat(energyData.getFeedValue());
-                        jsonObject.put("value", value);
-                    } else {
-                        jsonObject.put("value", 0);
-                    }
+                    value = Float.parseFloat(energyData.getFeedValue());
+                    jsonObject.put("value", value);
+
                 }
                 if ("4".equals(dataType)) {
-                    if (Float.parseFloat(energyData.getGasValue()) != 0.0f) {
-                        value = value + Float.parseFloat(energyData.getGasValue());
-                        jsonObject.put("value", value);
-                    } else {
-                        jsonObject.put("value", 0);
-                    }
+                    value = Float.parseFloat(energyData.getGasValue());
+                    jsonObject.put("value", value);
                 }
                 jsonObject.put("buildName", pigpen.getBuildName());
-                jsonArray.add(jsonObject);
-                value = 0.00f;
+
+            } else {
+                jsonObject.put("value", 0);
+                jsonObject.put("buildName", pigpen.getBuildName());
             }
+            jsonArray.add(jsonObject);
         }
 
         JSONArray arraySort = jsonArraySort(jsonArray, "value", true);
@@ -343,75 +325,53 @@ public class EnergyDataServiceImpl extends ServiceImpl<EnergyDataMapper, EnergyD
         if (dataType == null || dataType == "") {
             dataType = "1";
         }
-        QueryWrapper<BasePigpen> basePigpenQueryWrapper = new QueryWrapper<>();
-        basePigpenQueryWrapper.eq("farm_id", farmId);
         JSONArray jsonArray = new JSONArray();
-        basePigpenQueryWrapper.eq("parent_id", 0);
-        List<BasePigpen> basePigpens = basePigpenMapper.selectList(basePigpenQueryWrapper);//得到所有的栋舍
-        for (BasePigpen basePigpen : basePigpens) {
-            QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("farm_id", farmId).eq("parent_id", basePigpen.getId()).eq("f_type", 2);
-            List<BasePigpen> pigpens = basePigpenMapper.selectList(queryWrapper);//得到所有的楼层
-            Float value = 0.00f;
-            for (BasePigpen pigpen : pigpens) {
-                QueryWrapper<BasePigpen> queryWrapper1 = new QueryWrapper<>();
-                queryWrapper1.like("other2", pigpen.getId()).eq("farm_id", farmId);
-                List<BasePigpen> basePigpens1 = basePigpenMapper.selectList(queryWrapper1);
-                List<Integer> idList = new ArrayList<>();
-                basePigpens1.forEach(item -> {
-                    idList.add(item.getId());
-                });//某一层所有单元的id
-                QueryWrapper<EnergyData> dataQueryWrapper = new QueryWrapper<>();
-                if (ObjectUtil.isNotEmpty(idList)) {
-                    dataQueryWrapper.eq("farm_id", farmId).in(("unit_id"), idList);
-                } else {
-                    dataQueryWrapper.eq("farm_id", farmId);
-                }
-
 
+        QueryWrapper<BasePigpen> basePigpenQueryWrapper = new QueryWrapper<>();
+        basePigpenQueryWrapper.eq("farm_id", farmId).eq("f_type", 2);
+        List<BasePigpen> basePigpenList = basePigpenMapper.selectList(basePigpenQueryWrapper);//得到所有的楼层
+        Float value = 0.00f;
+        for (BasePigpen basePigpen : basePigpenList) {
+            QueryWrapper<BasePigpen> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.like("other2", basePigpen.getId()).eq("farm_id", farmId).ne("id", basePigpen.getId());
+            List<BasePigpen> basePigpens1 = basePigpenMapper.selectList(queryWrapper1);
+            List<Integer> idList = new ArrayList<>();
+            basePigpens1.forEach(item -> {
+                idList.add(item.getId());
+            });//某一层所有单元的id
+
+            QueryWrapper<EnergyData> dataQueryWrapper = new QueryWrapper<>();
+            Date timesMonthmorning = DataUill.getTimesMonthmorning();
+            JSONObject jsonObject = new JSONObject();
+            if (idList.size() != 0) {
+                dataQueryWrapper.eq("farm_id", farmId).in("unit_id", idList);
+                dataQueryWrapper.ge("create_date", timesMonthmorning);
                 dataQueryWrapper.select(
                         "IFNULL(SUM(water_value),0) waterValue,IFNULL(SUM(gas_value),0) gasValue" +
                                 ",IFNULL(SUM(electricity_value),0) electricityValue" +
                                 ",IFNULL(SUM(feed_value),0) feedValue  "
                 );
                 EnergyData energyData = dataMapper.selectOne(dataQueryWrapper);
-                JSONObject jsonObject = new JSONObject();
                 if ("1".equals(dataType)) {
-                    if (Float.parseFloat(energyData.getWaterValue()) != 0.0f) {
-                        value = value + Float.parseFloat(energyData.getWaterValue());
-                        jsonObject.put("value", value);
-                    } else {
-                        jsonObject.put("value", 0);
-                    }
+                    value = Float.parseFloat(energyData.getWaterValue());
                 }
                 if ("2".equals(dataType)) {
-                    if (Float.parseFloat(energyData.getElectricityValue()) != 0.0f) {
-                        value = value + Float.parseFloat(energyData.getElectricityValue());
-                        jsonObject.put("value", value);
-                    } else {
-                        jsonObject.put("value", 0);
-                    }
+                    value = Float.parseFloat(energyData.getElectricityValue());
                 }
                 if ("3".equals(dataType)) {
-                    if (Float.parseFloat(energyData.getFeedValue()) != 0.0f) {
-                        value = value + Float.parseFloat(energyData.getFeedValue());
-                        jsonObject.put("value", value);
-                    } else {
-                        jsonObject.put("value", 0);
-                    }
+                    value = Float.parseFloat(energyData.getFeedValue());
                 }
                 if ("4".equals(dataType)) {
-                    if (Float.parseFloat(energyData.getGasValue()) != 0.0f) {
-                        value = value + Float.parseFloat(energyData.getGasValue());
-                        jsonObject.put("value", value);
-                    } else {
-                        jsonObject.put("value", 0);
-                    }
+                    value = Float.parseFloat(energyData.getGasValue());
                 }
-                jsonObject.put("buildName", pigpen.getBuildName());
-                jsonArray.add(jsonObject);
+                jsonObject.put("value", value);
+                jsonObject.put("buildName", basePigpen.getBuildName());
                 value = 0.00f;
+            } else {
+                jsonObject.put("value", 0);
+                jsonObject.put("buildName", basePigpen.getBuildName());
             }
+            jsonArray.add(jsonObject);
         }
         JSONArray arraySort = jsonArraySort1(jsonArray, "value", true);
         JSONArray array = new JSONArray();
@@ -423,9 +383,309 @@ public class EnergyDataServiceImpl extends ServiceImpl<EnergyDataMapper, EnergyD
             }
             return new Result(ResultCode.SUCCESS, array);
         }
+
+    }
+
+    @Override
+    public Result listDataAll(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+
+        String farmId = TokenSign.getFarmIds(httpServletRequest);
+        if (farmId.length() > 2) {
+            farmId = paramsMap.get("farmId");
+        }
+        String type = paramsMap.get("type");// 1水 2电
+        QueryWrapper<EnergyEnvDevice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId);
+        List<EnergyEnvDevice> envDevices = envDeviceMapper.selectList(queryWrapper);
+
+        Date timesmorning = DataUill.getTimesmorning();
+        DateTime dateTime = DateUtil.beginOfWeek(new Date());//本周
+        Date timesMonthmorning = DataUill.getTimesMonthmorning();//本月
+
+        JSONArray jsonArray = new JSONArray();
+        for (EnergyEnvDevice envDevice : envDevices) {
+            QueryWrapper<EnergyData> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.eq("unit_id", envDevice.getUnitId());
+            queryWrapper1.eq("farm_id", farmId);
+            queryWrapper1.select("Convert((IFNUll(sum(water_value),'0')),DECIMAL(10,2)) waterValue,Convert((IFNUll(sum(electricity_value),'0')),DECIMAL(10,2)) electricityValue");
+            EnergyData data = dataMapper.selectOne(queryWrapper1);//当日读数
+
+            queryWrapper1.ge("create_date", timesmorning);
+            EnergyData energyData = dataMapper.selectOne(queryWrapper1);//当日用量
+
+            QueryWrapper<EnergyData> queryWrapper2 = new QueryWrapper<>();
+            queryWrapper2.eq("unit_id", envDevice.getUnitId());
+            queryWrapper2.eq("farm_id", farmId);
+            queryWrapper2.select("Convert((IFNUll(sum(water_value),'0')),DECIMAL(10,2)) waterValue,Convert((IFNUll(sum(electricity_value),'0')),DECIMAL(10,2)) electricityValue");
+            queryWrapper2.between("create_date", getYesterdayRange().get("startTime"), getYesterdayRange().get("stopTime"));
+            EnergyData data1 = dataMapper.selectOne(queryWrapper1);//昨日用量
+
+            QueryWrapper<EnergyData> queryWrapper4 = new QueryWrapper<>();
+            queryWrapper4.eq("unit_id", envDevice.getUnitId());
+            queryWrapper4.eq("farm_id", farmId);
+            queryWrapper4.select("Convert((IFNUll(sum(water_value),'0')),DECIMAL(10,2)) waterValue,Convert((IFNUll(sum(electricity_value),'0')),DECIMAL(10,2)) electricityValue");
+            queryWrapper4.ge("create_date", dateTime);
+            EnergyData data4 = dataMapper.selectOne(queryWrapper4);//本周用量
+
+            QueryWrapper<EnergyData> queryWrapper3 = new QueryWrapper<>();
+            queryWrapper3.eq("unit_id", envDevice.getUnitId());
+            queryWrapper3.eq("farm_id", farmId);
+            queryWrapper3.select("Convert((IFNUll(sum(water_value),'0')),DECIMAL(10,2)) waterValue,Convert((IFNUll(sum(electricity_value),'0')),DECIMAL(10,2)) electricityValue");
+            queryWrapper3.between("create_date", getLastWeekRange().get("startTime"), getLastWeekRange().get("stopTime"));
+            EnergyData data3 = dataMapper.selectOne(queryWrapper3);//上周用量
+
+            QueryWrapper<EnergyData> queryWrapper5 = new QueryWrapper<>();
+            queryWrapper5.eq("unit_id", envDevice.getUnitId());
+            queryWrapper5.eq("farm_id", farmId);
+            queryWrapper5.select("Convert((IFNUll(sum(water_value),'0')),DECIMAL(10,2)) waterValue,Convert((IFNUll(sum(electricity_value),'0')),DECIMAL(10,2)) electricityValue");
+            queryWrapper5.ge("create_date", timesMonthmorning);
+            EnergyData data5 = dataMapper.selectOne(queryWrapper5);//本月用量
+
+            QueryWrapper<EnergyData> queryWrapper6 = new QueryWrapper<>();
+            queryWrapper6.eq("unit_id", envDevice.getUnitId());
+            queryWrapper6.eq("farm_id", farmId);
+            queryWrapper6.select("Convert((IFNUll(sum(water_value),'0')),DECIMAL(10,2)) waterValue,Convert((IFNUll(sum(electricity_value),'0')),DECIMAL(10,2)) electricityValue");
+            queryWrapper6.between("create_date", getLastMonthRange().get("startTime"), getLastMonthRange().get("stopTime"));
+            EnergyData data6 = dataMapper.selectOne(queryWrapper6);//上月用量
+
+
+            if ("1".equals(type) && "1".equals(envDevice.getRemark())) {
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("deviceCode", envDevice.getDeviceCode());
+                jsonObject.put("buildName", envDevice.getUnitName());
+                jsonObject.put("day1", data.getWaterValue());
+                jsonObject.put("day2", energyData.getWaterValue());
+                jsonObject.put("day3", data1.getWaterValue());
+                jsonObject.put("week1", data4.getWaterValue());
+                jsonObject.put("week2", data3.getWaterValue());
+                jsonObject.put("month1", data5.getWaterValue());
+                jsonObject.put("month2", data6.getWaterValue());
+                double day2 = Double.parseDouble(energyData.getWaterValue());
+                double day3 = Double.parseDouble(data1.getWaterValue());
+                double week1 = Double.parseDouble(data4.getWaterValue());
+                double week2 = Double.parseDouble(data3.getWaterValue());
+                double month1 = Double.parseDouble(data5.getWaterValue());
+                double month2 = Double.parseDouble(data6.getWaterValue());
+                DecimalFormat def = new DecimalFormat("0.00");
+                String day4 = def.format(day2 - day3);
+                String week3 = def.format(week1 - week2);
+                String month3 = def.format(month1 - month2);
+                jsonObject.put("day4", day4);
+                jsonObject.put("week3", week3);
+                jsonObject.put("month3", month3);
+                jsonArray.add(jsonObject);
+            }
+            if ("2".equals(type) && "0".equals(envDevice.getRemark())) {
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("deviceCode", envDevice.getDeviceCode());
+                jsonObject.put("buildName", envDevice.getUnitName());
+                jsonObject.put("day1", data.getElectricityValue());
+                jsonObject.put("day2", energyData.getElectricityValue());
+                jsonObject.put("day3", data1.getElectricityValue());
+                jsonObject.put("week1", data4.getElectricityValue());
+                jsonObject.put("week2", data3.getElectricityValue());
+                jsonObject.put("month1", data5.getElectricityValue());
+                jsonObject.put("month2", data6.getElectricityValue());
+                double day2 = Double.parseDouble(energyData.getElectricityValue());
+                double day3 = Double.parseDouble(data1.getElectricityValue());
+                double week1 = Double.parseDouble(data4.getElectricityValue());
+                double week2 = Double.parseDouble(data3.getElectricityValue());
+                double month1 = Double.parseDouble(data5.getElectricityValue());
+                double month2 = Double.parseDouble(data6.getElectricityValue());
+                DecimalFormat def = new DecimalFormat("0.00");
+                String day4 = def.format(day2 - day3);
+                String week3 = def.format(week1 - week2);
+                String month3 = def.format(month1 - month2);
+                jsonObject.put("day4", day4);
+                jsonObject.put("week3", week3);
+                jsonObject.put("month3", month3);
+                jsonArray.add(jsonObject);
+            }
+
+        }
+        return new Result(ResultCode.SUCCESS, jsonArray);
     }
 
 
+    @Override
+    public Result listDataAll2(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+
+        String farmId = TokenSign.getFarmIds(httpServletRequest);
+        if (farmId.length() > 2) {
+            farmId = paramsMap.get("farmId");
+        }
+        String type = paramsMap.get("type");// 1水 2电
+        QueryWrapper<EnergyEnvDevice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId);
+        List<EnergyEnvDevice> envDevices = envDeviceMapper.selectList(queryWrapper);
+
+        Date timesmorning = DataUill.getTimesmorning();
+        DateTime dateTime = DateUtil.beginOfWeek(new Date());//本周
+        Date timesMonthmorning = DataUill.getTimesMonthmorning();//本月
+
+        JSONArray jsonArray = new JSONArray();
+        for (EnergyEnvDevice envDevice : envDevices) {
+            QueryWrapper<EnergyData> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.eq("unit_id", envDevice.getUnitId());
+            queryWrapper1.eq("farm_id", farmId);
+            queryWrapper1.select("Convert((IFNUll(sum(water_value),'0')),DECIMAL(10,2)) waterValue,Convert((IFNUll(sum(electricity_value),'0')),DECIMAL(10,2)) electricityValue");
+            EnergyData data = dataMapper.selectOne(queryWrapper1);//当日读数
+
+            queryWrapper1.ge("create_date", timesmorning);
+            EnergyData energyData = dataMapper.selectOne(queryWrapper1);//当日用量
+
+            QueryWrapper<EnergyData> queryWrapper2 = new QueryWrapper<>();
+            queryWrapper2.eq("unit_id", envDevice.getUnitId());
+            queryWrapper2.eq("farm_id", farmId);
+            queryWrapper2.select("Convert((IFNUll(sum(water_value),'0')),DECIMAL(10,2)) waterValue,Convert((IFNUll(sum(electricity_value),'0')),DECIMAL(10,2)) electricityValue");
+            queryWrapper2.between("create_date", getYesterdayRange().get("startTime"), getYesterdayRange().get("stopTime"));
+            EnergyData data1 = dataMapper.selectOne(queryWrapper1);//昨日用量
+
+            QueryWrapper<EnergyData> queryWrapper4 = new QueryWrapper<>();
+            queryWrapper4.eq("unit_id", envDevice.getUnitId());
+            queryWrapper4.eq("farm_id", farmId);
+            queryWrapper4.select("Convert((IFNUll(sum(water_value),'0')),DECIMAL(10,2)) waterValue,Convert((IFNUll(sum(electricity_value),'0')),DECIMAL(10,2)) electricityValue");
+            queryWrapper4.ge("create_date", dateTime);
+            EnergyData data4 = dataMapper.selectOne(queryWrapper4);//本周用量
+
+            QueryWrapper<EnergyData> queryWrapper3 = new QueryWrapper<>();
+            queryWrapper3.eq("unit_id", envDevice.getUnitId());
+            queryWrapper3.eq("farm_id", farmId);
+            queryWrapper3.select("Convert((IFNUll(sum(water_value),'0')),DECIMAL(10,2)) waterValue,Convert((IFNUll(sum(electricity_value),'0')),DECIMAL(10,2)) electricityValue");
+            queryWrapper3.between("create_date", getLastWeekRange().get("startTime"), getLastWeekRange().get("stopTime"));
+            EnergyData data3 = dataMapper.selectOne(queryWrapper3);//上周用量
+
+            QueryWrapper<EnergyData> queryWrapper5 = new QueryWrapper<>();
+            queryWrapper5.eq("unit_id", envDevice.getUnitId());
+            queryWrapper5.eq("farm_id", farmId);
+            queryWrapper5.select("Convert((IFNUll(sum(water_value),'0')),DECIMAL(10,2)) waterValue,Convert((IFNUll(sum(electricity_value),'0')),DECIMAL(10,2)) electricityValue");
+            queryWrapper5.ge("create_date", timesMonthmorning);
+            EnergyData data5 = dataMapper.selectOne(queryWrapper5);//本月用量
+
+            QueryWrapper<EnergyData> queryWrapper6 = new QueryWrapper<>();
+            queryWrapper6.eq("unit_id", envDevice.getUnitId());
+            queryWrapper6.eq("farm_id", farmId);
+            queryWrapper6.select("Convert((IFNUll(sum(water_value),'0')),DECIMAL(10,2)) waterValue,Convert((IFNUll(sum(electricity_value),'0')),DECIMAL(10,2)) electricityValue");
+            queryWrapper6.between("create_date", getLastMonthRange().get("startTime"), getLastMonthRange().get("stopTime"));
+            EnergyData data6 = dataMapper.selectOne(queryWrapper6);//上月用量
+
+
+            if ("1".equals(type) && "1".equals(envDevice.getRemark())) {
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("deviceCode", envDevice.getDeviceCode());
+                jsonObject.put("buildName", envDevice.getUnitName());
+                jsonObject.put("todayRead", data.getWaterValue());
+                jsonObject.put("todayConsume", energyData.getWaterValue());
+                jsonObject.put("yesterdayConsume", data1.getWaterValue());
+                jsonObject.put("weekConsume", data4.getWaterValue());
+                jsonObject.put("lastWeekConsume", data3.getWaterValue());
+                jsonObject.put("monthConsume", data5.getWaterValue());
+                jsonObject.put("lastMonthConsume", data6.getWaterValue());
+                double day2 = Double.parseDouble(energyData.getWaterValue());
+                double day3 = Double.parseDouble(data1.getWaterValue());
+                double week1 = Double.parseDouble(data4.getWaterValue());
+                double week2 = Double.parseDouble(data3.getWaterValue());
+                double month1 = Double.parseDouble(data5.getWaterValue());
+                double month2 = Double.parseDouble(data6.getWaterValue());
+                DecimalFormat def = new DecimalFormat("0.00");
+                String day4 = def.format(day2 - day3);
+                String week3 = def.format(week1 - week2);
+                String month3 = def.format(month1 - month2);
+                jsonObject.put("dayDifference", day4);
+                jsonObject.put("weekDifference", week3);
+                jsonObject.put("monthDifference", month3);
+                jsonArray.add(jsonObject);
+            }
+            if ("2".equals(type) && "0".equals(envDevice.getRemark())) {
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("deviceCode", envDevice.getDeviceCode());
+                jsonObject.put("buildName", envDevice.getUnitName());
+                jsonObject.put("todayRead", data.getElectricityValue());
+                jsonObject.put("todayConsume", energyData.getElectricityValue());
+                jsonObject.put("yesterdayConsume", data1.getElectricityValue());
+                jsonObject.put("weekConsume", data4.getElectricityValue());
+                jsonObject.put("lastWeekConsume", data3.getElectricityValue());
+                jsonObject.put("monthConsume", data5.getElectricityValue());
+                jsonObject.put("lastMonthConsume", data6.getElectricityValue());
+                double day2 = Double.parseDouble(energyData.getElectricityValue());
+                double day3 = Double.parseDouble(data1.getElectricityValue());
+                double week1 = Double.parseDouble(data4.getElectricityValue());
+                double week2 = Double.parseDouble(data3.getElectricityValue());
+                double month1 = Double.parseDouble(data5.getElectricityValue());
+                double month2 = Double.parseDouble(data6.getElectricityValue());
+                DecimalFormat def = new DecimalFormat("0.00");
+                String day4 = def.format(day2 - day3);
+                String week3 = def.format(week1 - week2);
+                String month3 = def.format(month1 - month2);
+                jsonObject.put("dayDifference", day4);
+                jsonObject.put("weekDifference", week3);
+                jsonObject.put("monthDifference", month3);
+                jsonArray.add(jsonObject);
+            }
+
+        }
+        return new Result(ResultCode.SUCCESS, jsonArray);
+    }
+
+    /**
+     * 获取上周开始时间和结束时间
+     */
+    public static JSONObject getLastWeekRange() {
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
+        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
+        calendar.add(Calendar.DAY_OF_WEEK, -7);
+        Date startTime = calendar.getTime();
+        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
+        calendar.add(Calendar.DAY_OF_WEEK, 6);
+        Date stopTime = calendar.getTime();
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("startTime", startTime);
+        jsonObject.put("stopTime", stopTime);
+        return jsonObject;
+    }
+
+    /**
+     * 获取上月开始时间和结束时间
+     */
+    public static JSONObject getLastMonthRange() {
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
+        calendar.add(Calendar.MONTH, -1);
+        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
+        Date startTime = calendar.getTime();
+        calendar.add(Calendar.DAY_OF_WEEK, 7);
+        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
+        //calendar.set(Calendar.HOUR_OF_DAY, 24);
+        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
+        Date stopTime = calendar.getTime();
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("startTime", startTime);
+        jsonObject.put("stopTime", stopTime);
+        return jsonObject;
+    }
+
+    /**
+     * 获取昨天开始时间和结束时间
+     */
+    public static JSONObject getYesterdayRange() {
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.MILLISECOND, 0);
+        calendar.set(Calendar.SECOND, 0);
+        calendar.set(Calendar.MINUTE, 0);
+        calendar.set(Calendar.HOUR_OF_DAY, -24);
+        Date startTime = calendar.getTime();
+        calendar.set(Calendar.MILLISECOND, 0);
+        calendar.set(Calendar.SECOND, 59);
+        calendar.set(Calendar.MINUTE, 59);
+        calendar.set(Calendar.HOUR_OF_DAY, 23);
+        Date stopTime = calendar.getTime();
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("startTime", startTime);
+        jsonObject.put("stopTime", stopTime);
+        return jsonObject;
+    }
+
     /*数组排序*/
     public static JSONArray jsonArraySort(JSONArray jsonArr, String sortKey, boolean is_desc) {
         //存放排序结果json数组
@@ -470,7 +730,7 @@ public class EnergyDataServiceImpl extends ServiceImpl<EnergyDataMapper, EnergyD
                 sortedJsonArray.add(jsonValues.get(i));
             }
         } else {
-            for (int i = 0; i < 8; i++) {
+            for (int i = 0; i < jsonArr.size(); i++) {
                 jsonValues.add(jsonArr.getJSONObject(i));
             }
             //快速排序,重写compare方法,完成按指定字段比较,完成排序

+ 52 - 6
huimv-admin/src/main/java/com/huimv/admin/service/impl/EnergyElectricityServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONException;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.huimv.admin.common.utils.DataUill;
@@ -23,10 +24,7 @@ import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletRequest;
 import java.text.DecimalFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * <p>
@@ -140,7 +138,7 @@ public class EnergyElectricityServiceImpl extends ServiceImpl<EnergyElectricityM
             QueryWrapper<EnergyData> queryWrapper = new QueryWrapper<>();
             queryWrapper.eq("farm_id", farmId).eq("unit_id", basePigpen.getId());
             queryWrapper.select(" IFNULL(SUM(electricity_value),'0') electricityValue");
-            DateTime dateTime = DateUtil.beginOfDay(new Date());
+            DateTime dateTime = DateUtil.beginOfWeek(new Date());
             queryWrapper.ge("create_date", dateTime);
 
             EnergyData energyElectricity = dataMapper.selectOne(queryWrapper);
@@ -156,6 +154,54 @@ public class EnergyElectricityServiceImpl extends ServiceImpl<EnergyElectricityM
             }
             jsonArray.add(jsonObject);
         }
-        return new Result(ResultCode.SUCCESS, jsonArray);
+        JSONArray array = jsonArraySort(jsonArray, "value", true);
+        return new Result(ResultCode.SUCCESS, array);
+    }
+
+    /*数组排序*/
+    public static JSONArray jsonArraySort(JSONArray jsonArr, String sortKey, boolean is_desc) {
+        //存放排序结果json数组
+        JSONArray sortedJsonArray = new JSONArray();
+        //用于排序的list
+        List<JSONObject> jsonValues = new ArrayList<JSONObject>();
+        //将参数json数组每一项取出,放入list
+
+        for (int i = 0; i < jsonArr.size(); i++) {
+            jsonValues.add(jsonArr.getJSONObject(i));
+        }
+        //快速排序,重写compare方法,完成按指定字段比较,完成排序
+        Collections.sort(jsonValues, new Comparator<JSONObject>() {
+            //排序字段
+            private final String KEY_NAME = sortKey;
+
+            //重写compare方法
+            @Override
+            public int compare(JSONObject a, JSONObject b) {
+                //如果用String接会导致一位数和两位数混合比对的时候不能准确比出来,要用int类型接
+                //String valA = new String();
+                //String valB = new String();
+                Float valA = 0.00f;
+                Float valB = 0.00f;
+                try {
+                    valA = Float.parseFloat(a.getString(KEY_NAME));
+                    valB = Float.parseFloat(b.getString(KEY_NAME));
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }
+                //是升序还是降序
+                if (is_desc) {
+                    return -valA.compareTo(valB);
+                } else {
+                    return -valB.compareTo(valA);
+                }
+
+            }
+        });
+        //将排序后结果放入结果jsonArray
+        for (int i = 0; i < jsonArr.size(); i++) {
+            sortedJsonArray.add(jsonValues.get(i));
+        }
+
+        return sortedJsonArray;
     }
 }

+ 49 - 2
huimv-admin/src/main/java/com/huimv/admin/service/impl/EnergyFeedServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONException;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.huimv.admin.common.utils.DataUill;
@@ -164,7 +165,7 @@ public class EnergyFeedServiceImpl extends ServiceImpl<EnergyFeedMapper, EnergyF
             JSONObject jsonObject = new JSONObject();
             QueryWrapper<EnergyData> queryWrapper1 = new QueryWrapper<>();
             queryWrapper1.in("unit_id", idList).eq("farm_id", farmId);
-            DateTime dateTime = DateUtil.beginOfDay(new Date());
+            DateTime dateTime = DateUtil.beginOfWeek(new Date());
             queryWrapper1.ge("create_date", dateTime);
             queryWrapper1.select(" IFNULL(SUM(feed_value),'0') feedValue");
             EnergyData energyGas = dataMapper.selectOne(queryWrapper1);
@@ -179,9 +180,55 @@ public class EnergyFeedServiceImpl extends ServiceImpl<EnergyFeedMapper, EnergyF
             jsonObject.put("buildName", basePigpen.getBuildName());
             jsonObject.put("id", basePigpen.getId());
             jsonArray.add(jsonObject);
+        }
+        JSONArray array = jsonArraySort(jsonArray, "value", true);
+        return new Result(ResultCode.SUCCESS, array);
+    }
 
+    /*数组排序*/
+    public static JSONArray jsonArraySort(JSONArray jsonArr, String sortKey, boolean is_desc) {
+        //存放排序结果json数组
+        JSONArray sortedJsonArray = new JSONArray();
+        //用于排序的list
+        List<JSONObject> jsonValues = new ArrayList<JSONObject>();
+        //将参数json数组每一项取出,放入list
+
+        for (int i = 0; i < jsonArr.size(); i++) {
+            jsonValues.add(jsonArr.getJSONObject(i));
         }
+        //快速排序,重写compare方法,完成按指定字段比较,完成排序
+        Collections.sort(jsonValues, new Comparator<JSONObject>() {
+            //排序字段
+            private final String KEY_NAME = sortKey;
+
+            //重写compare方法
+            @Override
+            public int compare(JSONObject a, JSONObject b) {
+                //如果用String接会导致一位数和两位数混合比对的时候不能准确比出来,要用int类型接
+                //String valA = new String();
+                //String valB = new String();
+                Float valA = 0.00f;
+                Float valB = 0.00f;
+                try {
+                    valA = Float.parseFloat(a.getString(KEY_NAME));
+                    valB = Float.parseFloat(b.getString(KEY_NAME));
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }
+                //是升序还是降序
+                if (is_desc) {
+                    return -valA.compareTo(valB);
+                } else {
+                    return -valB.compareTo(valA);
+                }
 
-        return new Result(ResultCode.SUCCESS, jsonArray);
+            }
+        });
+        //将排序后结果放入结果jsonArray
+        for (int i = 0; i < jsonArr.size(); i++) {
+            sortedJsonArray.add(jsonValues.get(i));
+        }
+
+        return sortedJsonArray;
     }
 }

+ 54 - 8
huimv-admin/src/main/java/com/huimv/admin/service/impl/EnergyWaterServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONException;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.huimv.admin.common.utils.DataUill;
@@ -24,10 +25,7 @@ import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletRequest;
 import java.text.DecimalFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * <p>
@@ -72,7 +70,7 @@ public class EnergyWaterServiceImpl extends ServiceImpl<EnergyWaterMapper, Energ
             } else {
                 DecimalFormat df = new DecimalFormat("0.00");
                 jsonObject.put("buildName", basePigpen.getBuildName());
-                jsonObject.put("value",df.format(Float.parseFloat(energyWater.getWaterValue())));
+                jsonObject.put("value", df.format(Float.parseFloat(energyWater.getWaterValue())));
                 jsonObject.put("id", basePigpen.getId());
             }
             jsonArray.add(jsonObject);
@@ -139,7 +137,7 @@ public class EnergyWaterServiceImpl extends ServiceImpl<EnergyWaterMapper, Energ
             QueryWrapper<EnergyData> queryWrapper = new QueryWrapper<>();
             queryWrapper.eq("farm_id", farmId).eq("unit_id", basePigpen.getId());
             queryWrapper.select(" IFNULL(SUM(water_value),'0') waterValue");
-            DateTime dateTime = DateUtil.beginOfDay(new Date());
+            DateTime dateTime = DateUtil.beginOfWeek(new Date());
             queryWrapper.ge("create_date", dateTime);
 
             EnergyData energyWater = dataMapper.selectOne(queryWrapper);
@@ -150,11 +148,59 @@ public class EnergyWaterServiceImpl extends ServiceImpl<EnergyWaterMapper, Energ
             } else {
                 DecimalFormat df = new DecimalFormat("0.00");
                 jsonObject.put("buildName", basePigpen.getBuildName());
-                jsonObject.put("value",df.format(Float.parseFloat(energyWater.getWaterValue())));
+                jsonObject.put("value", df.format(Float.parseFloat(energyWater.getWaterValue())));
                 jsonObject.put("id", basePigpen.getId());
             }
             jsonArray.add(jsonObject);
         }
-        return new Result(ResultCode.SUCCESS, jsonArray);
+        JSONArray array = jsonArraySort(jsonArray, "value", true);
+        return new Result(ResultCode.SUCCESS, array);
+    }
+
+    /*数组排序*/
+    public static JSONArray jsonArraySort(JSONArray jsonArr, String sortKey, boolean is_desc) {
+        //存放排序结果json数组
+        JSONArray sortedJsonArray = new JSONArray();
+        //用于排序的list
+        List<JSONObject> jsonValues = new ArrayList<JSONObject>();
+        //将参数json数组每一项取出,放入list
+
+        for (int i = 0; i < jsonArr.size(); i++) {
+            jsonValues.add(jsonArr.getJSONObject(i));
+        }
+        //快速排序,重写compare方法,完成按指定字段比较,完成排序
+        Collections.sort(jsonValues, new Comparator<JSONObject>() {
+            //排序字段
+            private final String KEY_NAME = sortKey;
+
+            //重写compare方法
+            @Override
+            public int compare(JSONObject a, JSONObject b) {
+                //如果用String接会导致一位数和两位数混合比对的时候不能准确比出来,要用int类型接
+                //String valA = new String();
+                //String valB = new String();
+                Float valA = 0.00f;
+                Float valB = 0.00f;
+                try {
+                    valA = Float.parseFloat(a.getString(KEY_NAME));
+                    valB = Float.parseFloat(b.getString(KEY_NAME));
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }
+                //是升序还是降序
+                if (is_desc) {
+                    return -valA.compareTo(valB);
+                } else {
+                    return -valB.compareTo(valA);
+                }
+
+            }
+        });
+        //将排序后结果放入结果jsonArray
+        for (int i = 0; i < jsonArr.size(); i++) {
+            sortedJsonArray.add(jsonValues.get(i));
+        }
+
+        return sortedJsonArray;
     }
 }

+ 83 - 40
huimv-admin/src/main/java/com/huimv/admin/service/impl/EnvDeviceServiceImpl.java

@@ -11,6 +11,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.hikvision.cms.api.common.util.HttpClientSSLUtils;
 import com.huimv.admin.common.utils.DataUill;
@@ -79,12 +80,12 @@ public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice
             QueryWrapper<EnvDevice> queryWrapper1 = new QueryWrapper<>();
             queryWrapper1.eq("device_status", 1).eq("farm_id", farmId);
             Integer count1 = envDeviceMapper.selectCount(queryWrapper1);
-            Integer OffDeviceCount = count- count1;
+            Integer OffDeviceCount = count - count1;
             //创建一个数值格式化对象
             NumberFormat numberFormat = NumberFormat.getInstance();
             //设置精确到小数点后两位
             numberFormat.setMaximumFractionDigits(2);
-            String onDeviceRate = numberFormat.format((float)count1 / (float) count* 100) + "%";
+            String onDeviceRate = numberFormat.format((float) count1 / (float) count * 100) + "%";
             jsonObject.put("DeviceCount", count);
             jsonObject.put("OnDeviceCount", count1);
             jsonObject.put("OffDeviceCount", OffDeviceCount);
@@ -98,16 +99,16 @@ public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice
         String farmId = paramsMap.get("farmId");
         String pageSize = paramsMap.get("pageSize");
         String pageNo = paramsMap.get("pageNo");
-        if (pageSize==null||pageSize=="") {
+        if (pageSize == null || pageSize == "") {
             pageSize = "10";
         }
-        if (pageNo==null||pageNo=="") {
+        if (pageNo == null || pageNo == "") {
             pageNo = "1";
         }
         QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("farm_id", farmId);
-        Page<EnvDevice> page = new Page(Integer.parseInt(pageNo),Integer.parseInt(pageSize));
-        return new Result(ResultCode.SUCCESS,envDeviceMapper.selectPage(page, queryWrapper));
+        Page<EnvDevice> page = new Page(Integer.parseInt(pageNo), Integer.parseInt(pageSize));
+        return new Result(ResultCode.SUCCESS, envDeviceMapper.selectPage(page, queryWrapper));
     }
 
     @Override
@@ -128,14 +129,14 @@ public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice
         envDevice.setDeviceBrand(DeviceBrand);
         envDevice.setRemark(remark);
         QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("device_name", DeviceName).eq("farm_id",farmId);
+        queryWrapper.eq("device_name", DeviceName).eq("farm_id", farmId);
         EnvDevice device = envDeviceMapper.selectOne(queryWrapper);
         if (ObjectUtil.isEmpty(device)) {
             envDeviceMapper.insert(envDevice);
         } else {
             return new Result(ResultCode.FAIL, "设备名称已存在");
         }
-        return new Result(ResultCode.SUCCESS,"添加成功");
+        return new Result(ResultCode.SUCCESS, "添加成功");
     }
 
     @Override
@@ -176,7 +177,7 @@ public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice
         QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("id", id).eq("farm_id", farmId);
         envDeviceMapper.delete(queryWrapper);
-        return new Result(ResultCode.SUCCESS,"删除成功");
+        return new Result(ResultCode.SUCCESS, "删除成功");
     }
 
     @Override
@@ -199,7 +200,7 @@ public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice
             EnvDevice envDevice = envDeviceMapper.selectOne(queryWrapper1);//找到栋舍绑定的设备,利用单元id*/
 
             QueryWrapper<EnvData> queryWrapper2 = new QueryWrapper<>();
-            queryWrapper2.eq("unit_id",basePigpens.get(i).getId()).orderByDesc("create_time").last(" limit 1");//通过设备id来拿取数据
+            queryWrapper2.eq("unit_id", basePigpens.get(i).getId()).orderByDesc("create_time").last(" limit 1");//通过设备id来拿取数据
             EnvData envData = dataMapper.selectOne(queryWrapper2);
             JSONObject jsonObject = new JSONObject();
             if (ObjectUtil.isEmpty(envData)) {
@@ -215,7 +216,7 @@ public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice
             }
             jsonArray.add(jsonObject);
         }
-        return new Result(ResultCode.SUCCESS,jsonArray);
+        return new Result(ResultCode.SUCCESS, jsonArray);
     }
 
     @Override
@@ -263,7 +264,7 @@ public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice
         else if ("2".equals(type)) {
             Calendar calendar = Calendar.getInstance();
             calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
-            queryWrapper.ge("create_time",calendar.getTime());
+            queryWrapper.ge("create_time", calendar.getTime());
             List<EnvData> envData = dataMapper.listDay(queryWrapper);
             map.put("location", basePigpen.getBuildName());
             map.put("data", envData);
@@ -278,7 +279,7 @@ public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice
             map.put("location", basePigpen.getBuildName());
             map.put("data", envData);
         }
-        return new Result(ResultCode.SUCCESS,map);
+        return new Result(ResultCode.SUCCESS, map);
     }
 
     @Override
@@ -296,7 +297,7 @@ public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice
             List<BasePigpen> basePigpens1 = basePigpenMapper.selectList(queryWrapper1);//得到所有的楼层
             for (int j = 0; j < basePigpens1.size(); j++) {
                 QueryWrapper<EnvDevice> deviceQueryWrapper = new QueryWrapper<>();
-                deviceQueryWrapper.eq("unit_id",basePigpens1.get(j).getId());
+                deviceQueryWrapper.eq("unit_id", basePigpens1.get(j).getId());
                 EnvDevice envDevice = envDeviceMapper.selectOne(deviceQueryWrapper);
                 if (ObjectUtil.isNotEmpty(envDevice)) {
                     if (envDevice.getDeviceStatus() == 0) {
@@ -308,14 +309,14 @@ public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice
 
             }
             JSONObject jsonObject = new JSONObject();
-            jsonObject.put("location",basePigpens.get(i).getBuildName());
+            jsonObject.put("location", basePigpens.get(i).getBuildName());
             jsonObject.put("onDevice", onCount);
             jsonObject.put("offDevice", offCount);
             jsonArray.add(jsonObject);
             offCount = 0;
             onCount = 0;
         }
-        return new Result(ResultCode.SUCCESS,jsonArray);
+        return new Result(ResultCode.SUCCESS, jsonArray);
     }
 
     @Override
@@ -325,12 +326,12 @@ public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice
         //获取所有栏舍
         Map<String, Object> map = new HashMap<String, Object>();
         String s = HttpClientSSLUtils.doPost("https://yzwlw.loongk.com/mobile/login?username=华统&password=21218cca77804d2ba1922c33e0151105", JSON.toJSONString(map));
-        System.out.println("登录带栏舍:"+s);
+        System.out.println("登录带栏舍:" + s);
         LoginDto loginDto = JSONUtil.toBean(s, LoginDto.class);
         DataToken token = loginDto.getData().getToken();
         String encode = Base64.encode(token.getUserId() + "_" + token.getToken());
         HttpHeaders headers = new HttpHeaders();
-        headers.add("Authorization",encode);
+        headers.add("Authorization", encode);
         HttpEntity<String> requestEntity = new HttpEntity<>(null, headers);
         List<DataShacks> shacks = loginDto.getData().getShacks();
         // 不能删除,需做比较
@@ -342,19 +343,19 @@ public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice
         //新增的设备
         zengXinDeviceIdCopy.removeAll(huatongDeviceId);
         //新增
-        if (zengXinDeviceIdCopy.size() >0){
+        if (zengXinDeviceIdCopy.size() > 0) {
             for (String deviceId : zengXinDeviceIdCopy) {
-                syncConfig(deviceId,requestEntity,farmId);
+                syncConfig(deviceId, requestEntity, farmId);
             }
         }
         //需要删除的设备
         huatongDeviceIdCopy.removeAll(zengXinDeviceId);
-        if (huatongDeviceIdCopy.size() >0){
-            this.remove(new QueryWrapper<EnvDevice>().in("device_code",huatongDeviceIdCopy));
+        if (huatongDeviceIdCopy.size() > 0) {
+            this.remove(new QueryWrapper<EnvDevice>().in("device_code", huatongDeviceIdCopy));
         }
-        System.out.println("zengxin:"+zengXinDeviceIdCopy);
+        System.out.println("zengxin:" + zengXinDeviceIdCopy);
         System.out.println(huatongDeviceIdCopy);
-        return new Result(10000,"同步成功",false);
+        return new Result(10000, "同步成功", false);
     }
 
     public static void main(String[] args) {
@@ -366,7 +367,7 @@ public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice
             DataToken token = loginDto.getData().getToken();
             String encode = Base64.encode(token.getUserId() + "_" + token.getToken());
             HttpHeaders headers = new HttpHeaders();
-            headers.add("Authorization",encode);
+            headers.add("Authorization", encode);
             HttpEntity<String> requestEntity = new HttpEntity<>(null, headers);
             //
             RestTemplate restTemplate = new RestTemplate();
@@ -376,18 +377,18 @@ public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice
         } catch (Exception e) {
             e.printStackTrace();
         }
-        System.out.println("登录带栏舍:"+s);
+        System.out.println("登录带栏舍:" + s);
     }
 
     @Override
     public Result bandingUnitId(HttpServletRequest httpServletRequest, EnvDevice envDevice) {
         Integer unitId = envDevice.getUnitId();
         int count = this.count(new QueryWrapper<EnvDevice>().eq("unit_id", unitId));
-        if (count>0){
-            return new Result(10001,"绑定失败,该栋舍已有设备",false);
+        if (count > 0) {
+            return new Result(10001, "绑定失败,该栋舍已有设备", false);
         }
         this.updateById(envDevice);
-        return new Result(10000,"绑定成功",true);
+        return new Result(10000, "绑定成功", true);
     }
 
     @Override
@@ -422,13 +423,13 @@ public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice
                 jsonObject.put("temp", 0);//温度
                 jsonObject.put("hum", 0);//湿度
                 jsonObject.put("location", basePigpen.getBuildName());
-                jsonObject.put("unit_id",basePigpen.getId());//单元id
+                jsonObject.put("unit_id", basePigpen.getId());//单元id
                 jsonObject.put("aq", 0);
             }
             objects.add(jsonObject);
         }
 
-        return new Result(ResultCode.SUCCESS,objects);
+        return new Result(ResultCode.SUCCESS, objects);
     }
 
     @Override
@@ -443,7 +444,7 @@ public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice
         NumberFormat numberFormat = NumberFormat.getInstance();
         //设置精确到小数点后两位
         numberFormat.setMaximumFractionDigits(2);
-        String onDeviceRate = numberFormat.format((float)count1 / (float) count* 100); //设备在线率
+        String onDeviceRate = numberFormat.format((float) count1 / (float) count * 100); //设备在线率
         QueryWrapper<EnvWarningInfo> warningInfoQueryWrapper = new QueryWrapper<>();
         warningInfoQueryWrapper.eq("farm_id", farmId);
         Integer warnCount = warningInfoMapper.selectCount(warningInfoQueryWrapper);//全年报警数量
@@ -474,32 +475,74 @@ public class EnvDeviceServiceImpl extends ServiceImpl<EnvDeviceMapper, EnvDevice
         return new Result(ResultCode.SUCCESS, jsonObject);
     }
 
+    @Override
+    public Result listData(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        JSONArray jsonArray = new JSONArray();
+
+        QueryWrapper<EnvDevice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId);
+        List<EnvDevice> envDevices = envDeviceMapper.selectList(queryWrapper);
+        for (EnvDevice envDevice : envDevices) {
+            if (StringUtils.isNotBlank(envDevice.getRemark())) {
+                QueryWrapper<EnvNh3n> queryWrapper1 = new QueryWrapper<>();
+                queryWrapper1.eq("device_code", envDevice.getRemark()).orderByDesc("create_date").last(" limit 1");
+                EnvNh3n envNh3n = nh3nMapper.selectOne(queryWrapper1);
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("deviceCode", envNh3n.getDeviceCode());
+                jsonObject.put("buildName", envDevice.getUnitName());
+                jsonObject.put("aq", envNh3n.getNh3N());
+                jsonObject.put("status", envDevice.getDeviceStatus());
+                jsonObject.put("hum", "");
+                jsonObject.put("temp", "");
+                jsonArray.add(jsonObject);
+            }
+
+            if (envDevice.getDeviceCode().length() > 3) {
+                QueryWrapper<EnvData> queryWrapper1 = new QueryWrapper<>();
+                queryWrapper1.eq("device_id", envDevice.getDeviceName()).orderByDesc("create_time").last(" limit 1");
+                EnvData envData = dataMapper.selectOne(queryWrapper1);
+                if (ObjectUtil.isNotEmpty(envData)) {
+                    JSONObject jsonObject = new JSONObject();
+                    jsonObject.put("deviceCode", envData.getDeviceId());
+                    jsonObject.put("buildName", envDevice.getUnitName());
+                    jsonObject.put("aq", "");
+                    jsonObject.put("hum", envData.getEnvHum());
+                    jsonObject.put("temp", envData.getEnvTemp());
+                    jsonObject.put("status", envDevice.getDeviceStatus());
+                    jsonArray.add(jsonObject);
+                }
+            }
+        }
+        return new Result(ResultCode.SUCCESS, jsonArray);
+    }
+
     //添加新的设备
-    private void syncConfig(String shackId,HttpEntity httpEntity,String farmId) {
+    private void syncConfig(String shackId, HttpEntity httpEntity, String farmId) {
         try {
-            ResponseEntity<String> exchangePeizhi = restTemplate.exchange("https://yzwlw.loongk.com/mobile/loadShackConfig/"+shackId, HttpMethod.GET, httpEntity, String.class);
+            ResponseEntity<String> exchangePeizhi = restTemplate.exchange("https://yzwlw.loongk.com/mobile/loadShackConfig/" + shackId, HttpMethod.GET, httpEntity, String.class);
             String peizhibody = exchangePeizhi.getBody();
             ShackConfigDto shackConfigDto = JSONUtil.toBean(peizhibody, ShackConfigDto.class);
             ShackConfigData data = shackConfigDto.getData();
             List<ShackConfigDataSensors> sensors = data.getSensors();
-            if (ObjectUtil.isNotEmpty(sensors)){
-                EnvDevice envDevice =new EnvDevice();
+            if (ObjectUtil.isNotEmpty(sensors)) {
+                EnvDevice envDevice = new EnvDevice();
                 envDevice.setFarmId(Integer.parseInt(farmId));
                 envDevice.setDeviceBrand("增鑫");
                 envDevice.setDeviceCode(data.getId());
                 envDevice.setDeviceName(data.getName());
                 for (ShackConfigDataSensors sensor : sensors) {
-                    if ("TEMPERATURE".equals(sensor.getType())){
+                    if ("TEMPERATURE".equals(sensor.getType())) {
                         envDevice.setOhter1(sensor.getId());
                     }
-                    if ("HUMIDITY".equals(sensor.getType())){
+                    if ("HUMIDITY".equals(sensor.getType())) {
                         envDevice.setOhter2(sensor.getId());
                     }
                 }
                 envDeviceMapper.insert(envDevice);
             }
-        }catch (Exception e){
-            System.out.println("设备同步异常:" + e +"  deviceId"+shackId);
+        } catch (Exception e) {
+            System.out.println("设备同步异常:" + e + "  deviceId" + shackId);
         }
 
     }

+ 20 - 0
huimv-admin/src/main/java/com/huimv/admin/service/impl/EnvWarningInfoServiceImpl.java

@@ -69,4 +69,24 @@ public class EnvWarningInfoServiceImpl extends ServiceImpl<EnvWarningInfoMapper,
         wrapper.last("limit 5");
         return new Result(ResultCode.SUCCESS, this.list(wrapper));
     }
+
+    @Override
+    public Result listScreenAll(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String pageNum = paramsMap.get("pageNum");
+        String pageSize = paramsMap.get("pageSize");
+        if ("".equals(pageNum )|| null == pageNum) {
+            pageNum = "1";
+        }
+        if ("".equals(pageSize )|| null == pageSize) {
+            pageSize = "10";
+        }
+        QueryWrapper<EnvWarningInfo> wrapper = new QueryWrapper<>();
+        wrapper.eq("farm_id",farmId);
+        wrapper.orderByDesc("id");
+        wrapper.isNotNull("unit_id");
+        Page<EnvWarningInfo> page = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+        return new Result(ResultCode.SUCCESS, envWarningInfoMapper.selectPage(page, wrapper));
+    }
+
 }

+ 32 - 18
huimv-admin/src/main/java/com/huimv/admin/timer/NewEnvTimer.java

@@ -4,14 +4,8 @@ import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.huimv.admin.entity.EnvData;
-import com.huimv.admin.entity.EnvDevice;
-import com.huimv.admin.entity.EnvWarningInfo;
-import com.huimv.admin.entity.EnvWarningThreshold;
-import com.huimv.admin.service.IEnvDataService;
-import com.huimv.admin.service.IEnvDeviceService;
-import com.huimv.admin.service.IEnvWarningInfoService;
-import com.huimv.admin.service.IEnvWarningThresholdService;
+import com.huimv.admin.entity.*;
+import com.huimv.admin.service.*;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
@@ -27,6 +21,7 @@ import org.springframework.web.client.RestTemplate;
 
 import java.math.BigDecimal;
 import java.text.ParseException;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 
@@ -48,8 +43,11 @@ public class NewEnvTimer {
     @Autowired
     private IEnvWarningInfoService envWarningInfoService;
 
+    @Autowired
+    private IEnvNh3nService nh3nService;
+
 
-    @Scheduled(cron = "0 0/5 * * * ?")  //每10分钟执行一次
+    @Scheduled(cron = "0 0/20 * * * ?")  //每10分钟执行一次
 //    @Scheduled(cron = "0 * * * * ?")  //每10分钟执行一次
 //    @Scheduled(cron = "*/5 * * * * ?")  //每10秒钟执行一次
     public void getDeviceFlowData() throws ParseException {
@@ -62,11 +60,11 @@ public class NewEnvTimer {
         Date date = new Date();
         for (EnvDevice envDevice : farm_id) {
             String deviceCode = envDevice.getDeviceCode();
-            if (StringUtils.isNotBlank(deviceCode)){
+            if (StringUtils.isNotBlank(deviceCode)) {
                 JSONObject resultJo = JSONObject.parseObject(getDeviceFlowFromRemoteURL(userId, deviceCode));
                 System.out.println("resultJo >>>>>>>>>>>> =" + resultJo);
                 if (resultJo.getInteger("code") != 1000) {
-                    System.out.println("牧场[" + farmCode + "]设备组编号(" + deviceCode+ ")调用远程接口返回结果出错.");
+                    System.out.println("牧场[" + farmCode + "]设备组编号(" + deviceCode + ")调用远程接口返回结果出错.");
                 } else {
                     JSONArray dataJa = resultJo.getJSONArray("data");
                     JSONObject dataJo = dataJa.getJSONObject(0);
@@ -75,10 +73,10 @@ public class NewEnvTimer {
                     String temp = tempJo.getString("dataValue");
                     JSONObject humiJo = realTimeDataJa.getJSONObject(1);
                     String humi = humiJo.getString("dataValue");
-                    if (StringUtils.isBlank(humi)){
+                    if (StringUtils.isBlank(humi)) {
                         humi = "0";
                     }
-                    if (StringUtils.isBlank(temp)){
+                    if (StringUtils.isBlank(temp)) {
                         temp = "0";
                     }
                     EnvData envData = new EnvData();
@@ -88,13 +86,28 @@ public class NewEnvTimer {
                     envData.setFarmId(envDevice.getFarmId());
                     envData.setCreateTime(date);
                     envData.setDeviceId(envDevice.getDeviceCode());
-                    saveTemWarning(temp,envWarningThreshold,envDevice);
-                    saveHumWarning(humi,envWarningThreshold,envDevice);
+                    saveTemWarning(temp, envWarningThreshold, envDevice);
+                    saveHumWarning(humi, envWarningThreshold, envDevice);
                     envDataService.save(envData);
+                    String remark = envDevice.getRemark();
+                    if (StringUtils.isNotBlank(remark)) {
+                        QueryWrapper<EnvNh3n> queryWrapper = new QueryWrapper<>();
+                        queryWrapper.eq("farm_id", farmCode).eq("device_code", remark);
+                        Calendar calendar = Calendar.getInstance();
+                        calendar.setTime(new Date());
+                        calendar.add(Calendar.MINUTE, -40);//
+                        queryWrapper.between("create_date", calendar.getTime(), new Date());
+                        List<EnvNh3n> list = nh3nService.list(queryWrapper);
+                        if (list.size() == 0 && humi.equals("0") && temp.equals("0")) {
+                            envDevice.setDeviceStatus(0);
+                        } else {
+                            envDevice.setDeviceStatus(1);
+                        }
+                        envDeviceService.updateById(envDevice);
+                    }
                 }
             }
-            }
-
+        }
 
     }
 
@@ -156,7 +169,8 @@ public class NewEnvTimer {
             }
         }
     }
-    public void saveHumWarning(String val, EnvWarningThreshold envWarningThreshold, EnvDevice envDevice ) {
+
+    public void saveHumWarning(String val, EnvWarningThreshold envWarningThreshold, EnvDevice envDevice) {
         if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(val)) {
             String maxHum;
             String minHum;

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

@@ -138,4 +138,10 @@
 Convert(IFNULL(SUM(feed_value),0),DECIMAL(10,2)) 'feedValue',Convert(IFNULL(SUM(gas_value),0),DECIMAL(10,2)) 'gasValue' FROM energy_data
  ${ew.customSqlSegment}
     </select>
+
+    <select id="listDataAll" resultType="com.huimv.admin.entity.vo.EnergyDataScreenVo">
+        select a.water_value waterValue,a.gas_value gasValue,a.electricity_value electricityValue,a.feed_value feedValue,a.create_date createDate,b.build_name buildName
+	from energy_data a INNER JOIN base_pigpen b ON  a.unit_id=b.id
+	 ${ew.customSqlSegment}
+    </select>
 </mapper>

+ 11 - 3
huimv-admin/src/main/resources/com/huimv/admin/mapper/EnvWarningInfoMapper.xml

@@ -20,9 +20,17 @@
     </resultMap>
     <select id="listTop" resultType="com.huimv.admin.entity.dto.EnvWarningDto">
 
-    SELECT bp.id,bp.build_name ,
-    (SELECT  COUNT(ewi.id) FROM  `env_warning_info` ewi WHERE bp.`id`=ewi.unit_id ) coutn_top
-    FROM  `base_pigpen` bp WHERE bp.f_type =3 AND bp.farm_id = #{farmId} ORDER BY coutn_top DESC LIMIT 5
+   SELECT bp.id, bp.build_name, COUNT(ewi.id) AS count_top
+FROM base_pigpen bp
+LEFT JOIN (
+    SELECT unit_id
+    ,id
+    FROM env_warning_info
+) ewi ON bp.id = ewi.unit_id
+WHERE bp.f_type = 3  AND bp.farm_id = #{farmId}
+GROUP BY bp.id, bp.build_name
+ORDER BY count_top DESC
+LIMIT  5
 
     </select>