wwh 1 anno fa
parent
commit
8f6d496c09

+ 98 - 0
huimv-env-admin/src/main/java/com/huimv/env/admin/timer/WaterAndElectricity.java

@@ -859,4 +859,102 @@ public class WaterAndElectricity {
                 .headerMap(paramsMap, false).body(jsonObject.toJSONString()).timeout(30 * 1000).execute().body();
         System.out.println(post);
     }
+
+    //三亩田39
+    @Scheduled(cron = "0 59 * * * ? ")
+    private void sendDate17() throws Exception {
+        QueryWrapper<EnergyEnvDevice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", 39);
+        List<EnergyEnvDevice> devices = envDeviceMapper.selectList(queryWrapper);
+        Date date = new Date();//获取当前时间
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.HOUR, -1);// 20分钟前
+        //获取到完整的时间
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        JSONArray jsonArray = new JSONArray();
+
+        for (EnergyEnvDevice device : devices) {
+            JSONObject jsonObject = new JSONObject();
+            if (device.getDeviceType() == 3) {
+                //电
+                QueryWrapper<EnergyElectricity> queryWrapper1 = new QueryWrapper<>();
+                queryWrapper1.eq("farm_id", 39).eq("chip_code", device.getDeviceCode());
+                queryWrapper1.between("upload_date", sdf.format(calendar.getTime()), sdf.format(date));
+                queryWrapper1.select(" IFNULL(SUM(electricity_value),0) electricityValue");
+                EnergyElectricity electricity = electricityMapper.selectOne(queryWrapper1);
+                jsonObject.put("electricity", electricity.getElectricityValue());
+                jsonObject.put("water", 0);
+            } else {
+                //水
+                QueryWrapper<EnergyWater> queryWrapper1 = new QueryWrapper<>();
+                queryWrapper1.eq("farm_id", 39).eq("chip_code", device.getDeviceCode());
+                queryWrapper1.between("upload_date", sdf.format(calendar.getTime()), sdf.format(date));
+                queryWrapper1.select(" IFNULL(SUM(water_value),0) waterValue");
+                EnergyWater water = waterMapper.selectOne(queryWrapper1);
+                jsonObject.put("water", water.getWaterValue());
+                jsonObject.put("electricity", 0);
+            }
+            jsonObject.put("deviceCode", device.getDeviceCode());
+            jsonObject.put("time", sdf.format(date));
+            jsonArray.add(jsonObject);
+        }
+        HashMap<String, String> paramsMap = new HashMap<>();
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("result", jsonArray);
+        System.out.println(jsonObject);
+        paramsMap.put("Content-Type", "application/json;charset=utf-8");
+        String post = HttpRequest.post("https://huatong.ifarmcloud.com/huatongApi/energy-data/getData17")
+                .headerMap(paramsMap, false).body(jsonObject.toJSONString()).timeout(30 * 1000).execute().body();
+        System.out.println(post);
+    }
+
+    //东阳24
+    @Scheduled(cron = "0 59 * * * ? ")
+    private void sendDate18() throws Exception {
+        QueryWrapper<EnergyEnvDevice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", 24);
+        List<EnergyEnvDevice> devices = envDeviceMapper.selectList(queryWrapper);
+        Date date = new Date();//获取当前时间
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.HOUR, -1);// 20分钟前
+        //获取到完整的时间
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        JSONArray jsonArray = new JSONArray();
+
+        for (EnergyEnvDevice device : devices) {
+            JSONObject jsonObject = new JSONObject();
+            if (device.getDeviceType() == 3) {
+                //电
+                QueryWrapper<EnergyElectricity> queryWrapper1 = new QueryWrapper<>();
+                queryWrapper1.eq("farm_id", 24).eq("chip_code", device.getDeviceCode());
+                queryWrapper1.between("upload_date", sdf.format(calendar.getTime()), sdf.format(date));
+                queryWrapper1.select(" IFNULL(SUM(electricity_value),0) electricityValue");
+                EnergyElectricity electricity = electricityMapper.selectOne(queryWrapper1);
+                jsonObject.put("electricity", electricity.getElectricityValue());
+                jsonObject.put("water", 0);
+            } else {
+                //水
+                QueryWrapper<EnergyWater> queryWrapper1 = new QueryWrapper<>();
+                queryWrapper1.eq("farm_id", 24).eq("chip_code", device.getDeviceCode());
+                queryWrapper1.between("upload_date", sdf.format(calendar.getTime()), sdf.format(date));
+                queryWrapper1.select(" IFNULL(SUM(water_value),0) waterValue");
+                EnergyWater water = waterMapper.selectOne(queryWrapper1);
+                jsonObject.put("water", water.getWaterValue());
+                jsonObject.put("electricity", 0);
+            }
+            jsonObject.put("deviceCode", device.getDeviceCode());
+            jsonObject.put("time", sdf.format(date));
+            jsonArray.add(jsonObject);
+        }
+        HashMap<String, String> paramsMap = new HashMap<>();
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("result", jsonArray);
+        System.out.println(jsonObject);
+        paramsMap.put("Content-Type", "application/json;charset=utf-8");
+        String post = HttpRequest.post("https://huatong.ifarmcloud.com/huatongApi/energy-data/getData18")
+                .headerMap(paramsMap, false).body(jsonObject.toJSONString()).timeout(30 * 1000).execute().body();
+        System.out.println(post);
+    }
 }

+ 37 - 0
huimv-env-common/src/main/java/com/huimv/env/common/entity/Gateway.java

@@ -0,0 +1,37 @@
+package com.huimv.env.common.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2024-04-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("gateway")
+public class Gateway implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String gateway;
+
+    private Integer farmId;
+
+    private String farmName;
+
+
+}

+ 16 - 0
huimv-env-common/src/main/java/com/huimv/env/common/mapper/GatewayMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.env.common.mapper;
+
+import com.huimv.env.common.entity.Gateway;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-04-28
+ */
+public interface GatewayMapper extends BaseMapper<Gateway> {
+
+}

+ 16 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/IGatewayService.java

@@ -0,0 +1,16 @@
+package com.huimv.env.common.service;
+
+import com.huimv.env.common.entity.Gateway;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-04-28
+ */
+public interface IGatewayService extends IService<Gateway> {
+
+}

+ 20 - 0
huimv-env-common/src/main/java/com/huimv/env/common/service/impl/GatewayServiceImpl.java

@@ -0,0 +1,20 @@
+package com.huimv.env.common.service.impl;
+
+import com.huimv.env.common.entity.Gateway;
+import com.huimv.env.common.mapper.GatewayMapper;
+import com.huimv.env.common.service.IGatewayService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-04-28
+ */
+@Service
+public class GatewayServiceImpl extends ServiceImpl<GatewayMapper, Gateway> implements IGatewayService {
+
+}

+ 117 - 0
huimv-env-common/src/main/java/com/huimv/env/common/utils/SendSMS.java

@@ -0,0 +1,117 @@
+package com.huimv.env.common.utils;
+
+
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.crypto.digest.MD5;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+@Component
+public class SendSMS {
+
+
+    static String httpUrl = "http://121.41.41.182:8001/sms";
+    static String userNmae = "6085";
+    static String passWord = "huimu@6085";
+
+    //短信内容不能出现空格,换行,百分号等特殊字符.相同两条短信之间内容不能相同
+    public static void main(String[] args) {
+        /**
+         *发送给报警器
+         *//*
+		String content = "003C0043004C0045004100520030003000310039003E";
+		String mobile = "18767100452";//多个用英文逗号隔开 如18767100452,1388888888
+		content = UnicodeTool.decodeUnicode(UnicodeTool.addUnicodeU(content.toString()));*/
+
+        /**
+         * 发送给用户
+         */
+        ArrayList<String> phoneList = new ArrayList<>();
+        phoneList.add("13777463003");
+        String content ="测试牧场电表0102D111已离线 时间"+new Date();
+        sendSMS(phoneList,content);
+//        MD5 md5 = SecureUtil.md5();
+//        String md5PassWord = md5.digestHex(passWord);
+//        System.out.println(md5PassWord);
+//        System.out.println(userNmae+"【慧牧科技】测试结果"+"1694157718734"+md5PassWord);
+//        String sign = md5.digestHex(userNmae+"【慧牧科技】测试结果"+"1694157718734"+md5PassWord);
+//        System.out.println(sign);
+
+    }
+
+    public static void sendSMS( ArrayList<String> mobiles, String content) {
+        RestTemplate restTemplate = new RestTemplate();
+
+        // 设置请求头
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
+
+        // 设置请求参数
+        Map params = new HashMap();
+        content =   "【慧牧科技】"+content;
+        long timestamp = System.currentTimeMillis();
+        params.put("userName", userNmae);
+        params.put("content", content);
+        params.put("phoneList", mobiles);
+        params.put("timestamp", timestamp);
+        MD5 md5 = SecureUtil.md5();
+        String md5PassWord = md5.digestHex(passWord);
+        System.out.println(md5PassWord);
+        String sign = md5.digestHex(userNmae+content+timestamp+md5PassWord);
+
+        params.put("sign", sign);
+
+        System.out.println(params.toString());
+        // 创建HttpEntity对象,封装请求头和请求参数
+        HttpEntity requestEntity = new HttpEntity<>(params, headers);
+        // 发送POST请求
+        ResponseEntity<String> responseEntity = restTemplate.postForEntity(httpUrl+"/api/sendMessage", requestEntity, String.class);
+
+        // 获取响应结果
+        String responseBody = responseEntity.getBody();
+        System.out.println(responseBody);
+
+    }
+
+
+    public static String request(String httpUrl, String httpArg) {
+        BufferedReader reader = null;
+        String result = null;
+        StringBuffer sbf = new StringBuffer();
+        httpUrl = httpUrl + "?" + httpArg;
+        try {
+            URL url = new URL(httpUrl);
+            HttpURLConnection connection = (HttpURLConnection) url
+                    .openConnection();
+            connection.setRequestMethod("GET");
+            connection.connect();
+            InputStream is = connection.getInputStream();
+            reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+            String strRead = null;
+            while ((strRead = reader.readLine()) != null) {
+                sbf.append(strRead);
+                sbf.append("\r\n");
+            }
+            reader.close();
+            result = sbf.toString();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return result;
+    }
+}
+

+ 5 - 0
huimv-env-common/src/main/java/resources/com/huimv/env/common/mapper/GatewayMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.env.common.mapper.GatewayMapper">
+
+</mapper>

+ 69 - 19
huimv-env-device/src/main/java/com/huimv/env/device/listener/DeviceListener.java

@@ -1,10 +1,17 @@
 package com.huimv.env.device.listener;
 
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSON;
 import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.env.common.entity.BaseFarm;
+import com.huimv.env.common.entity.Gateway;
 import com.huimv.env.common.entity.vo.AllData;
+import com.huimv.env.common.service.IBaseFarmService;
+import com.huimv.env.common.service.IGatewayService;
 import com.huimv.env.common.utils.Const;
 import com.huimv.env.common.utils.MathUtil2;
+import com.huimv.env.common.utils.SendSMS;
 import com.huimv.env.device.service.DataService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.rabbit.annotation.RabbitHandler;
@@ -13,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.text.ParseException;
+import java.util.ArrayList;
 import java.util.Map;
 
 @Component
@@ -21,39 +29,81 @@ public class DeviceListener {
 
     @Autowired
     private DataService dataService;
+    @Autowired
+    private IGatewayService gatewayService;
+    @Autowired
+    private IBaseFarmService farmService;
 
 
     @RabbitListener(queues = Const.QUEUE_ENV_SHUI_HUIMV_DATA)
     @RabbitHandler
-    public void processReceive(Map<String,String> rawMap) throws ParseException {
+    public void processReceive(Map<String, String> rawMap) throws ParseException {
 //        System.out.println(">>>>>>>>>>>>>> 11 接收数据 RawMap>>" + rawMap.toString());
 //        try {
-            String askText = rawMap.get("askText");
-            AllData allData = JSONUtil.toBean(askText, AllData.class);
-            String event = allData.getEvent();
-            //时间戳
-            String timestamp = allData.getTimestamp();
-            //机器id 4823290F01000000 01016B13
-            String nodeEui = allData.getContent().getCommonMessage().getNodeEui();
-
-            if ("NODE_DATA_UP".equals(event)){
-                //数据
-                String payload = allData.getContent().getNodeUplinkPacket().getNode().getPayload();
-                dataService.saveData(payload,timestamp,nodeEui);
-            }
+        String askText = rawMap.get("askText");
+        AllData allData = JSONUtil.toBean(askText, AllData.class);
+        String event = allData.getEvent();
+        //时间戳
+        String timestamp = allData.getTimestamp();
+        //机器id 4823290F01000000 01016B13
+        String nodeEui = allData.getContent().getCommonMessage().getNodeEui();
+        String gatewayEui = allData.getContent().getCommonMessage().getGatewayEui();
+        if ("NODE_DATA_UP".equals(event)) {
+            //数据
+            String payload = allData.getContent().getNodeUplinkPacket().getNode().getPayload();
+            dataService.saveData(payload, timestamp, nodeEui);
+        }
 
-        if ("NODE_ONLINE".equals(event)){
+        if ("NODE_ONLINE".equals(event)) {
             //上线通知
             String payload = allData.getContent().getNodeUplinkPacket().getNode().getPayload();
-            dataService.saveOnInfo(payload,timestamp,nodeEui);
+            dataService.saveOnInfo(payload, timestamp, nodeEui);
         }
-        if ("NODE_OFFLINE".equals(event)){
+        if ("NODE_OFFLINE".equals(event)) {
             //离线通知
             String payload = allData.getContent().getNodeUplinkPacket().getNode().getPayload();
-            dataService.saveOffInfo(payload,timestamp,nodeEui);
+            dataService.saveOffInfo(payload, timestamp, nodeEui);
         }
 
-            System.out.println("数据开始--->"+allData.toString());
+        if ("GATEWAY_ONLINE".equals(event)) {
+            //网关在线线通知
+            QueryWrapper wrapper = new QueryWrapper();
+            wrapper.eq("gateway", gatewayEui);
+            Gateway gateway = gatewayService.getOne(wrapper);
+            ArrayList<String> phoneList = new ArrayList<>();
+            phoneList.add("13777463003");
+            if (gateway.getFarmId() == 24) {
+                phoneList.add("15174571875");
+            }
+            if (ObjectUtil.isNotEmpty(gateway)) {
+                String content = gateway.getFarmName() + " 网关:" + gatewayEui + "已在线!";
+                SendSMS.sendSMS(phoneList, content);
+            } else {
+                String content = "未知网关:" + gatewayEui + "已在线!";
+                SendSMS.sendSMS(phoneList, content);
+            }
+        }
+        if ("GATEWAY_OFFLINE".equals(event)) {
+            //网关在线线通知
+            QueryWrapper wrapper = new QueryWrapper();
+            wrapper.eq("gateway", gatewayEui);
+            Gateway gateway = gatewayService.getOne(wrapper);
+            ArrayList<String> phoneList = new ArrayList<>();
+            phoneList.add("13777463003");
+            if (gateway.getFarmId() == 24) {
+                phoneList.add("15174571875");
+            }
+            if (ObjectUtil.isNotEmpty(gateway)) {
+                String content = gateway.getFarmName() + " 网关:" + gatewayEui + "已离线!";
+                SendSMS.sendSMS(phoneList, content);
+            } else {
+                String content = "未知网关:" + gatewayEui + "已离线!";
+                SendSMS.sendSMS(phoneList, content);
+            }
+        }
+
+
+        System.out.println("数据开始--->" + allData.toString());
 //        }catch (Exception e){
 //            System.out.println("数据异常"+e);
 //        }

+ 69 - 44
huimv-env-device/src/main/java/com/huimv/env/device/service/impl/DataServiceImpl.java

@@ -12,6 +12,7 @@ import com.huimv.env.common.mapper.EnvWarningInfoMapper;
 import com.huimv.env.common.service.IEnergyElectricityService;
 import com.huimv.env.common.service.IEnergyEnvDeviceService;
 import com.huimv.env.common.service.IEnergyWaterService;
+import com.huimv.env.common.utils.SendSMS;
 import com.huimv.env.device.service.DataService;
 import org.apache.commons.lang3.StringUtils;
 import org.checkerframework.checker.units.qual.A;
@@ -21,6 +22,7 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -28,38 +30,39 @@ import java.util.List;
 public class DataServiceImpl implements DataService {
 
     @Autowired
-    private IEnergyElectricityService energyElectricityService ;
+    private IEnergyElectricityService energyElectricityService;
 
     @Autowired
-    private IEnergyWaterService energyWaterService ;
+    private IEnergyWaterService energyWaterService;
 
     @Autowired
-    private IEnergyEnvDeviceService energyEnvDeviceService ;
+    private IEnergyEnvDeviceService energyEnvDeviceService;
 
     @Autowired
     private EnvWarningInfoMapper warningInfoMapper;
+
     @Override
     public void saveData(String payload, String timestamp, String nodeEui) throws ParseException {
-       // 4823290F01000000 01016B13
-        nodeEui = nodeEui.substring(nodeEui.length()-8);
+        // 4823290F01000000 01016B13
+        nodeEui = nodeEui.substring(nodeEui.length() - 8);
         //6C0008 01 47 00000025
         //01 水表 ,02电表
         String devType = payload.substring(6, 8);
         //电压 除十
-        String voltage = String.format("%.1f", (double)Integer.parseInt(payload.substring(8, 10),16)/10.0);
+        String voltage = String.format("%.1f", (double) Integer.parseInt(payload.substring(8, 10), 16) / 10.0);
         // 数值
-        Integer originalData = Integer.parseInt(payload.substring(10),16);
-        System.out.println(originalData +" = originalData");
+        Integer originalData = Integer.parseInt(payload.substring(10), 16);
+        System.out.println(originalData + " = originalData");
         EnergyEnvDevice deviceCode = energyEnvDeviceService.getOne(new QueryWrapper<EnergyEnvDevice>().eq("device_code", nodeEui));
-        if (ObjectUtil.isNotEmpty(deviceCode)){
+        if (ObjectUtil.isNotEmpty(deviceCode)) {
             Integer farmId = deviceCode.getFarmId();
             Integer unitId = deviceCode.getUnitId();
             //小口径水表
-            if ("01".equals(devType) || "02".equals(devType)){
-                saveShui(devType,voltage,originalData,timestamp,nodeEui,payload,farmId,unitId,deviceCode.getDeviceName(),deviceCode.getRemark(),deviceCode.getTransformer(),deviceCode.getDifference());
+            if ("01".equals(devType) || "02".equals(devType)) {
+                saveShui(devType, voltage, originalData, timestamp, nodeEui, payload, farmId, unitId, deviceCode.getDeviceName(), deviceCode.getRemark(), deviceCode.getTransformer(), deviceCode.getDifference());
             }
-            if ("03".equals(devType)){
-                saveDian(devType,voltage,originalData,timestamp,nodeEui,payload,farmId,unitId,deviceCode.getDeviceName(),deviceCode.getRemark(),deviceCode.getTransformer(),deviceCode.getDifference());
+            if ("03".equals(devType)) {
+                saveDian(devType, voltage, originalData, timestamp, nodeEui, payload, farmId, unitId, deviceCode.getDeviceName(), deviceCode.getRemark(), deviceCode.getTransformer(), deviceCode.getDifference());
             }
         }
 
@@ -76,18 +79,26 @@ public class DataServiceImpl implements DataService {
         EnergyEnvDevice envDevice = energyEnvDeviceService.getOne(queryWrapper);
         EnvWarningInfo warningInfo = new EnvWarningInfo();
         if (ObjectUtil.isNotEmpty(envDevice)) {
+            ArrayList<String> phoneList = new ArrayList<>();
+            String content = "";
             if ("01".equals(devType) || "02".equals(devType)) {
                 warningInfo.setWarningType(1);//shui
                 warningInfo.setWarningContent("水表" + nodeEui + "离线");
+                content = "水表" + nodeEui + "离线";
             } else {
                 warningInfo.setWarningType(2);
                 warningInfo.setWarningContent("电表" + nodeEui + "离线");
+                content = "电表" + nodeEui + "离线";
             }
             warningInfo.setBuildLocation(envDevice.getDeviceName());
             warningInfo.setFarmId(envDevice.getFarmId());
             warningInfo.setUserNames(envDevice.getRemark());
             warningInfo.setDate(new Date(Long.parseLong(timestamp)));
             warningInfoMapper.insert(warningInfo);
+
+            phoneList.add("15174571875");
+            SendSMS.sendSMS(phoneList, content);
+
         }
 
     }
@@ -103,34 +114,47 @@ public class DataServiceImpl implements DataService {
         EnergyEnvDevice envDevice = energyEnvDeviceService.getOne(queryWrapper);
         EnvWarningInfo warningInfo = new EnvWarningInfo();
         if (ObjectUtil.isNotEmpty(envDevice)) {
+            ArrayList<String> phoneList = new ArrayList<>();
+            String content = "";
             if ("01".equals(devType) || "02".equals(devType)) {
                 warningInfo.setWarningType(1);//shui
                 warningInfo.setWarningContent("水表" + nodeEui + "在线");
+                content = "水表" + nodeEui + "在线";
             } else {
                 warningInfo.setWarningType(2);
                 warningInfo.setWarningContent("电表" + nodeEui + "在线");
+                content = "电表" + nodeEui + "在线";
             }
             warningInfo.setBuildLocation(envDevice.getDeviceName());
             warningInfo.setFarmId(envDevice.getFarmId());
             warningInfo.setUserNames(envDevice.getRemark());
             warningInfo.setDate(new Date(Long.parseLong(timestamp)));
             warningInfoMapper.insert(warningInfo);
+
+            phoneList.add("15174571875");
+            SendSMS.sendSMS(phoneList, content);
         }
 
     }
 
-    private void saveDian(String devType ,String voltage, Integer originalData, String timestamp, String nodeEui,String payload
-            ,Integer farmId,Integer unitId,String unitName,String farmName,int transformer,int difference) throws ParseException {
+    private void saveDian(String devType, String voltage, Integer originalData, String timestamp, String nodeEui, String payload
+            , Integer farmId, Integer unitId, String unitName, String farmName, int transformer, int difference) throws ParseException {
         List<EnergyElectricity> one = energyElectricityService.list(new QueryWrapper<EnergyElectricity>().eq("chip_code", nodeEui).orderByDesc("id").last("limit 1"));
-        String lastData ="0";
-        if (one.size()>0){
-            lastData =  one.get(0).getOriginalValue();
+        String lastData = "0";
+        Integer str = 0;
+        if (one.size() > 0) {
+            lastData = one.get(0).getOriginalValue();
         }
-        if (originalData == null){
+        if (originalData == null) {
             originalData = 0;
         }
+        if (one.size() == 0) {
+            str = 0;
+        } else {
+            str = (originalData - Integer.parseInt(lastData));
+        }
         //差值
-        Integer str =   (originalData - Integer.parseInt(lastData));
+
 
         // 将时间戳字符串解析为Date对象
         EnergyElectricity envWater = new EnergyElectricity();
@@ -139,7 +163,7 @@ public class DataServiceImpl implements DataService {
         envWater.setUploadDate(new Date(Long.parseLong(timestamp)));
         envWater.setFarmId(farmId);
         envWater.setUnitId(unitId);
-        envWater.setOriginalValue((originalData-difference)+"");
+        envWater.setOriginalValue((originalData - difference) + "");
         envWater.setChipCode(nodeEui);
         envWater.setOriginalDate(payload);
         envWater.setOther1(unitName);
@@ -152,33 +176,35 @@ public class DataServiceImpl implements DataService {
             bigDecimal = new BigDecimal(one.get(0).getOther3());
         }
 
-        if(str <0 ){
-            envWater.setElectricityValue( String.format("%.1f", (double)originalData*transformer/10.0));
+        if (str < 0) {
+            envWater.setElectricityValue(String.format("%.1f", (double) originalData * transformer / 10.0));
             BigDecimal bigDecimal1 = new BigDecimal(String.format("%.1f", (double) originalData * transformer / 10.0));
             envWater.setOther3(bigDecimal.add(bigDecimal1).toString());
-        }else if (str == 0){
+        } else if (str == 0) {
             envWater.setElectricityValue("0");
             envWater.setOther3(bigDecimal.toString());
-        }else {
-            envWater.setElectricityValue( String.format("%.1f", (double)str*transformer/10.0));
-            BigDecimal bigDecimal1 = new BigDecimal(String.format("%.1f", (double)str*transformer/10.0));
+        } else {
+            envWater.setElectricityValue(String.format("%.1f", (double) str * transformer / 10.0));
+            BigDecimal bigDecimal1 = new BigDecimal(String.format("%.1f", (double) str * transformer / 10.0));
             envWater.setOther3(bigDecimal.add(bigDecimal1).toString());
         }
         envWater.setVoltage(voltage);
         energyElectricityService.save(envWater);
     }
 
-    private void saveShui(String devType ,String voltage, Integer originalData, String timestamp, String nodeEui
-            ,String payload,Integer farmId,Integer unitId,String unitName,String farmName,int transformer,int difference) throws ParseException {
+    private void saveShui(String devType, String voltage, Integer originalData, String timestamp, String nodeEui
+            , String payload, Integer farmId, Integer unitId, String unitName, String farmName, int transformer, int difference) throws ParseException {
         List<EnergyWater> one = energyWaterService.list(new QueryWrapper<EnergyWater>().eq("chip_code", nodeEui).orderByDesc("id").last("limit 1"));
-        String lastData ="0";
+        String lastData = "0";
         Integer str = 0;
-        if (ObjectUtil.isNotEmpty(one)){
-            lastData =  one.get(0).getOriginalValue();
-             str =   (originalData - Integer.parseInt(lastData) -difference);
-            if (str <0){
-                str =   (originalData - Integer.parseInt(lastData));
+        if (ObjectUtil.isNotEmpty(one)) {
+            lastData = one.get(0).getOriginalValue();
+            str = (originalData - Integer.parseInt(lastData) - difference);
+            if (str < 0) {
+                str = (originalData - Integer.parseInt(lastData));
             }
+        } else {
+            str = 0;
         }
         //差值
 
@@ -190,7 +216,7 @@ public class DataServiceImpl implements DataService {
         envWater.setDeviceType(Integer.parseInt(devType));
         envWater.setUploadDate(new Date(Long.parseLong(timestamp)));
         envWater.setFarmId(farmId);
-        envWater.setOriginalValue((originalData-difference)+"");
+        envWater.setOriginalValue((originalData - difference) + "");
         envWater.setChipCode(nodeEui);
         envWater.setUnitId(unitId);
         envWater.setOther1(unitName);
@@ -200,16 +226,16 @@ public class DataServiceImpl implements DataService {
         if (one.size() > 0) {
             bigDecimal = new BigDecimal(one.get(0).getOther3());
         }
-        if(str <0 ){
-            envWater.setWaterValue( String.format("%.1f", (double)originalData*transformer/10.0));
-            BigDecimal bigDecimal1 = new BigDecimal(String.format("%.1f", (double)originalData*transformer/10.0));
+        if (str < 0) {
+            envWater.setWaterValue(String.format("%.1f", (double) originalData * transformer / 10.0));
+            BigDecimal bigDecimal1 = new BigDecimal(String.format("%.1f", (double) originalData * transformer / 10.0));
             envWater.setOther3(bigDecimal.add(bigDecimal1).toString());
-        }else if (str == 0){
+        } else if (str == 0) {
             envWater.setWaterValue("0");
             envWater.setOther3(bigDecimal.toString());
-        }else {
-            envWater.setWaterValue( String.format("%.1f", (double)str*transformer/10.0));
-            BigDecimal bigDecimal1 = new BigDecimal(String.format("%.1f", (double)str*transformer/10.0));
+        } else {
+            envWater.setWaterValue(String.format("%.1f", (double) str * transformer / 10.0));
+            BigDecimal bigDecimal1 = new BigDecimal(String.format("%.1f", (double) str * transformer / 10.0));
             envWater.setOther3(bigDecimal.add(bigDecimal1).toString());
         }
 
@@ -228,5 +254,4 @@ public class DataServiceImpl implements DataService {
     }
 
 
-
 }