Ver código fonte

新建上报设备状态和平台推送消息功能。

zhuoning 2 anos atrás
pai
commit
66885f30ed

+ 10 - 0
huimv-env-platform/huimv-env-common/src/main/java/com/huimv/env/common/utils/Const.java

@@ -28,4 +28,14 @@ public class Const {
     public final static String ROUTING_KEY_SENSOR = "topic.sensor.key";
     public final static String ROUTING_KEY_SENSOR = "topic.sensor.key";
     public final static String QUEUE_SENSOR = "topic.sensor.queue";
     public final static String QUEUE_SENSOR = "topic.sensor.queue";
     public final static String EXCHANGE_SENSOR = "topic.sensor.exchange";
     public final static String EXCHANGE_SENSOR = "topic.sensor.exchange";
+
+    //设备状态
+    public final static String ROUTING_KEY_DEVICE_STATUS = "topic.deviceStatus.key";
+    public final static String QUEUE_DEVICE_STATUS = "topic.deviceStatus.queue";
+    public final static String EXCHANGE_DEVICE_STATUS = "topic.deviceStatus.exchange";
+
+    //平台推送短信
+    public final static String ROUTING_KEY_PUSH_MESSAGE = "topic.pushMessage.key";
+    public final static String QUEUE_PUSH_MESSAGE = "topic.pushMessage.queue";
+    public final static String EXCHANGE_PUSH_MESSAGE = "topic.pushMessage.exchange";
 }
 }

+ 27 - 0
huimv-env-platform/huimv-env-device/src/main/java/com/huimv/env/device/config/TopicRabbitMQConfig.java

@@ -74,4 +74,31 @@ public class TopicRabbitMQConfig {
         return BindingBuilder.bind(sensorQueue()).to(sensorExchange()).with(Const.ROUTING_KEY_SENSOR);
         return BindingBuilder.bind(sensorQueue()).to(sensorExchange()).with(Const.ROUTING_KEY_SENSOR);
     }
     }
 
 
+    //设备状态
+    @Bean
+    public Queue deviceStatusQueue() {
+        return new Queue(Const.QUEUE_DEVICE_STATUS);
+    }
+    @Bean
+    TopicExchange deviceStatusExchange() {
+        return new TopicExchange(Const.EXCHANGE_DEVICE_STATUS);
+    }
+    @Bean
+    Binding bindingDeviceStatusExchangeMessage() {
+        return BindingBuilder.bind(deviceStatusQueue()).to(deviceStatusExchange()).with(Const.ROUTING_KEY_DEVICE_STATUS);
+    }
+
+    //推送短信
+    @Bean
+    public Queue pushMessageQueue() {
+        return new Queue(Const.QUEUE_PUSH_MESSAGE);
+    }
+    @Bean
+    TopicExchange pushMessageExchange() {
+        return new TopicExchange(Const.EXCHANGE_PUSH_MESSAGE);
+    }
+    @Bean
+    Binding bindingPushMessageMessage() {
+        return BindingBuilder.bind(pushMessageQueue()).to(pushMessageExchange()).with(Const.ROUTING_KEY_PUSH_MESSAGE);
+    }
 }
 }

+ 35 - 108
huimv-env-platform/huimv-env-device/src/main/java/com/huimv/env/device/listener/DeviceListener.java

@@ -14,6 +14,7 @@ import com.huimv.env.common.utils.Const;
 import com.huimv.env.common.utils.DateUtil;
 import com.huimv.env.common.utils.DateUtil;
 import com.huimv.env.common.utils.MathUtil;
 import com.huimv.env.common.utils.MathUtil;
 import com.huimv.env.device.producer.Producer;
 import com.huimv.env.device.producer.Producer;
+import com.huimv.env.device.service.IDeviceService;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.rabbit.annotation.RabbitHandler;
 import org.springframework.amqp.rabbit.annotation.RabbitHandler;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
@@ -41,28 +42,18 @@ import java.util.Map;
 @Slf4j
 @Slf4j
 public class DeviceListener {
 public class DeviceListener {
     @Autowired
     @Autowired
-    private EnvTempEntityRepo envTempEntityRepo;
-    @Autowired
-    private EnvHumiEntityRepo envHumiEntityRepo;
-    @Autowired
-    private EnvAmmoniaEntityRepo envAmmoniaEntityRepo;
-    @Autowired
     private IDeviceRegisterService deviceRegisterService;
     private IDeviceRegisterService deviceRegisterService;
     @Autowired
     @Autowired
-    private ISensorRegisterService sensorRegisterService;
+    private IDeviceService deviceService;
     @Autowired
     @Autowired
     private MathUtil mathUtil;
     private MathUtil mathUtil;
-    @Autowired
-    private DateUtil dateUtil;
-    @Autowired
-    private Producer producer;
 
 
     @RabbitListener(queues = Const.QUEUE_TEMP)
     @RabbitListener(queues = Const.QUEUE_TEMP)
     @RabbitHandler
     @RabbitHandler
     public void processTemp(Map RawMap) throws ParseException {
     public void processTemp(Map RawMap) throws ParseException {
         System.out.println(">>>>>>>>>>>>>>接收温度数据 RawMap>>" + RawMap.toString());
         System.out.println(">>>>>>>>>>>>>>接收温度数据 RawMap>>" + RawMap.toString());
         String askText = RawMap.get("askText").toString();
         String askText = RawMap.get("askText").toString();
-        JSONObject dataJo = handleAskText(askText);
+        JSONObject dataJo = deviceService.handleAskText(askText);
         dataJo.put("dataUnit", "°");
         dataJo.put("dataUnit", "°");
         System.out.println("温度数据=" + dataJo);
         System.out.println("温度数据=" + dataJo);
         java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
         java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
@@ -78,52 +69,11 @@ public class DeviceListener {
         String temp = new BigDecimal(mathUtil.countTemp(dataJo.getIntValue("value"))).setScale(1, RoundingMode.UP) + dataJo.getString("dataUnit");
         String temp = new BigDecimal(mathUtil.countTemp(dataJo.getIntValue("value"))).setScale(1, RoundingMode.UP) + dataJo.getString("dataUnit");
         int sensorSort = 1;
         int sensorSort = 1;
         //更新传感器数据
         //更新传感器数据
-//        updateSensorRegister(deviceCode, dataJo.getInteger("sensorSn"), nowTimestamp, todayDate, temp, farmCode,sensorSort);
-        sendSensorToMQ(deviceCode, dataJo.getInteger("sensorSn"), nowTimestamp, todayDate, temp, farmCode,sensorSort);
+//        deviceService.updateSensorRegister(deviceCode, dataJo.getInteger("sensorSn"), nowTimestamp, todayDate, temp, farmCode,sensorSort);
+        deviceService.sendSensorToMQ(deviceCode, dataJo.getInteger("sensorSn"), nowTimestamp, todayDate, temp, farmCode,sensorSort);
 
 
         //保存温度流水数据
         //保存温度流水数据
-        saveTempFlow(dataJo, envDeviceRegisterEntity, nowTimestamp, todayDate, farmCode);
-    }
-
-    private void sendSensorToMQ(String deviceCode, Integer sensorSn, Timestamp nowTimestamp, Date todayDate, String value, String farmCode, int sensorSort) {
-        JSONObject sensorJo = new JSONObject();
-        sensorJo.put("deviceCode",deviceCode);
-        sensorJo.put("sensorSn",sensorSn);
-        sensorJo.put("timestamp",nowTimestamp);
-        sensorJo.put("todayDate",todayDate);
-        sensorJo.put("value",value);
-        sensorJo.put("farmCode",farmCode);
-        sensorJo.put("sensorSort",sensorSort);
-        producer.sendSensorAskToMQ(sensorJo);
-    }
-
-    //更新传感器数据
-    private void updateSensorRegister(String deviceCode, int sensorSn, Timestamp nowTimestamp, Date todayDate, String value, String farmCode, int sensorSort) {
-        if (sensorRegisterService.isExistSensorRegister(deviceCode, sensorSn, farmCode,sensorSort)) {
-            System.out.println("更新...");
-            //{更新传感器注册信息}
-            sensorRegisterService.updateSensorRegister(deviceCode, sensorSn, nowTimestamp, todayDate, value, farmCode,sensorSort);
-        } else {
-            System.out.println("新建...");
-            //{保存传感器注册信息}
-            sensorRegisterService.saveSensorRegister(deviceCode, sensorSn, nowTimestamp, todayDate, value, farmCode,sensorSort);
-        }
-    }
-
-    //保存温度流水数据
-    private void saveTempFlow(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode) {
-        EnvTempEntity envTempEntity = new EnvTempEntity();
-        envTempEntity.setDeviceCode(dataJo.getString("deviceCode"));
-        envTempEntity.setSensorSn(dataJo.getInteger("sensorSn"));
-        envTempEntity.setTemp(new BigDecimal(mathUtil.countTemp(dataJo.getIntValue("value"))));
-        envTempEntity.setAskTime(dateUtil.handleAskTime(dataJo.getString("askTime")));
-        envTempEntity.setAddTime(nowTimestamp);
-        envTempEntity.setAddDate(todayDate);
-        envTempEntity.setFarmCode(farmCode);
-        envTempEntity.setPigpenId(envDeviceRegisterEntity.getPigpenId());
-        envTempEntity.setUnitId(envDeviceRegisterEntity.getUnitId());
-        envTempEntity.setDataUnit(dataJo.getString("dataUnit"));
-        envTempEntityRepo.saveAndFlush(envTempEntity);
+        deviceService.saveTempFlow(dataJo, envDeviceRegisterEntity, nowTimestamp, todayDate, farmCode);
     }
     }
 
 
     @RabbitListener(queues = Const.QUEUE_HUMI)
     @RabbitListener(queues = Const.QUEUE_HUMI)
@@ -131,7 +81,7 @@ public class DeviceListener {
     public void processHumi(Map RawMap) throws ParseException {
     public void processHumi(Map RawMap) throws ParseException {
         System.out.println(">>>>>>>>>>>>>>接收湿度数据 RawMap>>" + RawMap.toString());
         System.out.println(">>>>>>>>>>>>>>接收湿度数据 RawMap>>" + RawMap.toString());
         String askText = RawMap.get("askText").toString();
         String askText = RawMap.get("askText").toString();
-        JSONObject dataJo = handleAskText(askText);
+        JSONObject dataJo = deviceService.handleAskText(askText);
         dataJo.put("dataUnit", "%");
         dataJo.put("dataUnit", "%");
         System.out.println("湿度数据=" + dataJo);
         System.out.println("湿度数据=" + dataJo);
         String todayDateText = new DateUtil().getTodayDateText();
         String todayDateText = new DateUtil().getTodayDateText();
@@ -148,26 +98,10 @@ public class DeviceListener {
         String humi = new BigDecimal(mathUtil.countTemp(dataJo.getIntValue("value"))).setScale(1, RoundingMode.UP) + dataJo.getString("dataUnit");
         String humi = new BigDecimal(mathUtil.countTemp(dataJo.getIntValue("value"))).setScale(1, RoundingMode.UP) + dataJo.getString("dataUnit");
         int sensorSort = 2;
         int sensorSort = 2;
         //更新传感器数据
         //更新传感器数据
-//        updateSensorRegister(deviceCode, dataJo.getInteger("sensorSn"), nowTimestamp, todayDate, humi, farmCode, sensorSort);
-        sendSensorToMQ(deviceCode, dataJo.getInteger("sensorSn"), nowTimestamp, todayDate, humi, farmCode, sensorSort);
+//        deviceService.updateSensorRegister(deviceCode, dataJo.getInteger("sensorSn"), nowTimestamp, todayDate, humi, farmCode, sensorSort);
+        deviceService.sendSensorToMQ(deviceCode, dataJo.getInteger("sensorSn"), nowTimestamp, todayDate, humi, farmCode, sensorSort);
         //保存湿度流水数据
         //保存湿度流水数据
-        saveHumiFlow(dataJo, envDeviceRegisterEntity, nowTimestamp, todayDate, farmCode);
-    }
-
-    //保存湿度流水数据
-    private void saveHumiFlow(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode) {
-        EnvHumiEntity envHumiEntity = new EnvHumiEntity();
-        envHumiEntity.setDeviceCode(dataJo.getString("deviceCode"));
-        envHumiEntity.setSensorSn(dataJo.getInteger("sensorSn"));
-        envHumiEntity.setHumi(new BigDecimal(mathUtil.countHumi(dataJo.getIntValue("value"))));
-        envHumiEntity.setAskTime(dateUtil.handleAskTime(dataJo.getString("askTime")));
-        envHumiEntity.setAddTime(nowTimestamp);
-        envHumiEntity.setAddDate(todayDate);
-        envHumiEntity.setFarmCode(farmCode);
-        envHumiEntity.setPigpenId(envDeviceRegisterEntity.getPigpenId());
-        envHumiEntity.setUnitId(envDeviceRegisterEntity.getUnitId());
-        envHumiEntity.setDataUnit(dataJo.getString("dataUnit"));
-        envHumiEntityRepo.saveAndFlush(envHumiEntity);
+        deviceService.saveHumiFlow(dataJo, envDeviceRegisterEntity, nowTimestamp, todayDate, farmCode);
     }
     }
 
 
     @RabbitListener(queues = Const.QUEUE_AMMONIA)
     @RabbitListener(queues = Const.QUEUE_AMMONIA)
@@ -175,7 +109,7 @@ public class DeviceListener {
     public void processAmmonia(Map RawMap) throws ParseException {
     public void processAmmonia(Map RawMap) throws ParseException {
         System.out.println(">>>>>>>>>>>>>>接收氨气数据 RawMap>>" + RawMap.toString());
         System.out.println(">>>>>>>>>>>>>>接收氨气数据 RawMap>>" + RawMap.toString());
         String askText = RawMap.get("askText").toString();
         String askText = RawMap.get("askText").toString();
-        JSONObject dataJo = handleAskText(askText);
+        JSONObject dataJo = deviceService.handleAskText(askText);
         dataJo.put("dataUnit", "ppm");
         dataJo.put("dataUnit", "ppm");
         System.out.println("氨气数据=" + dataJo);
         System.out.println("氨气数据=" + dataJo);
         String todayDateText = new DateUtil().getTodayDateText();
         String todayDateText = new DateUtil().getTodayDateText();
@@ -192,42 +126,35 @@ public class DeviceListener {
         String anmonia = dataJo.getString("value") + dataJo.getString("dataUnit");
         String anmonia = dataJo.getString("value") + dataJo.getString("dataUnit");
         int sensorSort = 3;
         int sensorSort = 3;
         //更新传感器数据
         //更新传感器数据
-//        updateSensorRegister(deviceCode, dataJo.getInteger("sensorSn"), nowTimestamp, todayDate, anmonia, farmCode, sensorSort);
-        sendSensorToMQ(deviceCode, dataJo.getInteger("sensorSn"), nowTimestamp, todayDate, anmonia, farmCode, sensorSort);
+//        deviceService.updateSensorRegister(deviceCode, dataJo.getInteger("sensorSn"), nowTimestamp, todayDate, anmonia, farmCode, sensorSort);
+        deviceService.sendSensorToMQ(deviceCode, dataJo.getInteger("sensorSn"), nowTimestamp, todayDate, anmonia, farmCode, sensorSort);
         //保存氨气流水数据
         //保存氨气流水数据
-        saveAmmoniaFlow(dataJo, envDeviceRegisterEntity, nowTimestamp, todayDate, farmCode);
+        deviceService.saveAmmoniaFlow(dataJo, envDeviceRegisterEntity, nowTimestamp, todayDate, farmCode);
     }
     }
 
 
-    //保存氨气流水数据
-    private void saveAmmoniaFlow(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode) {
-        EnvAmmoniaEntity envAmmoniaEntity = new EnvAmmoniaEntity();
-        envAmmoniaEntity.setDeviceCode(dataJo.getString("deviceCode"));
-        envAmmoniaEntity.setSensorSn(dataJo.getInteger("sensorSn"));
-        envAmmoniaEntity.setAmmonia(new BigDecimal(dataJo.getIntValue("value")));
-        envAmmoniaEntity.setAskTime(dateUtil.handleAskTime(dataJo.getString("askTime")));
-        envAmmoniaEntity.setAddTime(nowTimestamp);
-        envAmmoniaEntity.setAddDate(todayDate);
-        envAmmoniaEntity.setFarmCode(farmCode);
-        envAmmoniaEntity.setPigpenId(envDeviceRegisterEntity.getPigpenId());
-        envAmmoniaEntity.setUnitId(envDeviceRegisterEntity.getUnitId());
-        envAmmoniaEntity.setDataUnit(dataJo.getString("dataUnit"));
-        envAmmoniaEntityRepo.saveAndFlush(envAmmoniaEntity);
-    }
+    @RabbitListener(queues = Const.QUEUE_DEVICE_STATUS)
+    @RabbitHandler
+    public void processDeviceStatus(Map RawMap) throws ParseException {
+        System.out.println(">>>>>>>>>>>>>>接收设备状态数据 RawMap>>" + RawMap.toString());
+        String askText = RawMap.get("askText").toString();
+        JSONObject dataJo = deviceService.handleAskText(askText);
+        System.out.println("设备状态=" + dataJo);
+
+
 
 
-    //
-    private JSONObject handleAskText(String askText) {
-        String[] dataArray = askText.split("\\+");
-        return buildDataObj(dataArray);
     }
     }
 
 
-    //
-    public JSONObject buildDataObj(String[] dataArray) {
-        JSONObject dataJo = new JSONObject();
-        dataJo.put("deviceCode", dataArray[1]);
-        dataJo.put("cmd", dataArray[2]);
-        dataJo.put("sensorSn", dataArray[3]);
-        dataJo.put("value", dataArray[4]);
-        dataJo.put("askTime", dataArray[5]);
-        return dataJo;
+
+    @RabbitListener(queues = Const.QUEUE_PUSH_MESSAGE)
+    @RabbitHandler
+    public void processPushMessage(Map RawMap) throws ParseException {
+        System.out.println(">>>>>>>>>>>>>>接收平台推送消息 RawMap>>" + RawMap.toString());
+        String askText = RawMap.get("askText").toString();
+        JSONObject dataJo = deviceService.handleAskText(askText);
+        System.out.println("平台推送消息=" + dataJo);
+
+
+
     }
     }
+
 }
 }

+ 23 - 0
huimv-env-platform/huimv-env-device/src/main/java/com/huimv/env/device/service/IDeviceService.java

@@ -0,0 +1,23 @@
+package com.huimv.env.device.service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.huimv.env.common.dao.entity.EnvDeviceRegisterEntity;
+
+import java.sql.Date;
+import java.sql.Timestamp;
+
+public interface IDeviceService {
+    void sendSensorToMQ(String deviceCode, Integer sensorSn, Timestamp nowTimestamp, Date todayDate, String value, String farmCode, int sensorSort);
+
+    //保存温度流水数据
+    void saveTempFlow(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode);
+
+    //保存湿度流水数据
+    void saveHumiFlow(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode);
+
+    //保存氨气流水数据
+    void saveAmmoniaFlow(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode);
+
+    //
+    JSONObject handleAskText(String askText);
+}

+ 145 - 0
huimv-env-platform/huimv-env-device/src/main/java/com/huimv/env/device/service/impl/DeviceServiceImpl.java

@@ -0,0 +1,145 @@
+package com.huimv.env.device.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.huimv.env.common.dao.entity.EnvAmmoniaEntity;
+import com.huimv.env.common.dao.entity.EnvDeviceRegisterEntity;
+import com.huimv.env.common.dao.entity.EnvHumiEntity;
+import com.huimv.env.common.dao.entity.EnvTempEntity;
+import com.huimv.env.common.dao.repo.EnvAmmoniaEntityRepo;
+import com.huimv.env.common.dao.repo.EnvHumiEntityRepo;
+import com.huimv.env.common.dao.repo.EnvTempEntityRepo;
+import com.huimv.env.common.service.IDeviceRegisterService;
+import com.huimv.env.common.service.ISensorRegisterService;
+import com.huimv.env.common.utils.DateUtil;
+import com.huimv.env.common.utils.MathUtil;
+import com.huimv.env.device.producer.Producer;
+import com.huimv.env.device.service.IDeviceService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.sql.Date;
+import java.sql.Timestamp;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Service
+public class DeviceServiceImpl implements IDeviceService {
+    @Autowired
+    private EnvTempEntityRepo envTempEntityRepo;
+    @Autowired
+    private EnvHumiEntityRepo envHumiEntityRepo;
+    @Autowired
+    private EnvAmmoniaEntityRepo envAmmoniaEntityRepo;
+    @Autowired
+    private MathUtil mathUtil;
+    @Autowired
+    private DateUtil dateUtil;
+    @Autowired
+    private Producer producer;
+    @Autowired
+    private ISensorRegisterService sensorRegisterService;
+
+    @Override
+    public void sendSensorToMQ(String deviceCode, Integer sensorSn, Timestamp nowTimestamp, Date todayDate, String value, String farmCode, int sensorSort) {
+        JSONObject sensorJo = new JSONObject();
+        sensorJo.put("deviceCode",deviceCode);
+        sensorJo.put("sensorSn",sensorSn);
+        sensorJo.put("timestamp",nowTimestamp);
+        sensorJo.put("todayDate",todayDate);
+        sensorJo.put("value",value);
+        sensorJo.put("farmCode",farmCode);
+        sensorJo.put("sensorSort",sensorSort);
+        producer.sendSensorAskToMQ(sensorJo);
+    }
+
+
+    //更新传感器数据
+    private void updateSensorRegister(String deviceCode, int sensorSn, Timestamp nowTimestamp, Date todayDate, String value, String farmCode, int sensorSort) {
+        if (sensorRegisterService.isExistSensorRegister(deviceCode, sensorSn, farmCode,sensorSort)) {
+            System.out.println("更新...");
+            //{更新传感器注册信息}
+            sensorRegisterService.updateSensorRegister(deviceCode, sensorSn, nowTimestamp, todayDate, value, farmCode,sensorSort);
+        } else {
+            System.out.println("新建...");
+            //{保存传感器注册信息}
+            sensorRegisterService.saveSensorRegister(deviceCode, sensorSn, nowTimestamp, todayDate, value, farmCode,sensorSort);
+        }
+    }
+
+    //保存温度流水数据
+    @Override
+    public void saveTempFlow(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode) {
+        EnvTempEntity envTempEntity = new EnvTempEntity();
+        envTempEntity.setDeviceCode(dataJo.getString("deviceCode"));
+        envTempEntity.setSensorSn(dataJo.getInteger("sensorSn"));
+        envTempEntity.setTemp(new BigDecimal(mathUtil.countTemp(dataJo.getIntValue("value"))));
+        envTempEntity.setAskTime(dateUtil.handleAskTime(dataJo.getString("askTime")));
+        envTempEntity.setAddTime(nowTimestamp);
+        envTempEntity.setAddDate(todayDate);
+        envTempEntity.setFarmCode(farmCode);
+        envTempEntity.setPigpenId(envDeviceRegisterEntity.getPigpenId());
+        envTempEntity.setUnitId(envDeviceRegisterEntity.getUnitId());
+        envTempEntity.setDataUnit(dataJo.getString("dataUnit"));
+        envTempEntityRepo.saveAndFlush(envTempEntity);
+    }
+
+    //保存湿度流水数据
+    @Override
+    public void saveHumiFlow(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode) {
+        EnvHumiEntity envHumiEntity = new EnvHumiEntity();
+        envHumiEntity.setDeviceCode(dataJo.getString("deviceCode"));
+        envHumiEntity.setSensorSn(dataJo.getInteger("sensorSn"));
+        envHumiEntity.setHumi(new BigDecimal(mathUtil.countHumi(dataJo.getIntValue("value"))));
+        envHumiEntity.setAskTime(dateUtil.handleAskTime(dataJo.getString("askTime")));
+        envHumiEntity.setAddTime(nowTimestamp);
+        envHumiEntity.setAddDate(todayDate);
+        envHumiEntity.setFarmCode(farmCode);
+        envHumiEntity.setPigpenId(envDeviceRegisterEntity.getPigpenId());
+        envHumiEntity.setUnitId(envDeviceRegisterEntity.getUnitId());
+        envHumiEntity.setDataUnit(dataJo.getString("dataUnit"));
+        envHumiEntityRepo.saveAndFlush(envHumiEntity);
+    }
+
+    //保存氨气流水数据
+    @Override
+    public void saveAmmoniaFlow(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode) {
+        EnvAmmoniaEntity envAmmoniaEntity = new EnvAmmoniaEntity();
+        envAmmoniaEntity.setDeviceCode(dataJo.getString("deviceCode"));
+        envAmmoniaEntity.setSensorSn(dataJo.getInteger("sensorSn"));
+        envAmmoniaEntity.setAmmonia(new BigDecimal(dataJo.getIntValue("value")));
+        envAmmoniaEntity.setAskTime(dateUtil.handleAskTime(dataJo.getString("askTime")));
+        envAmmoniaEntity.setAddTime(nowTimestamp);
+        envAmmoniaEntity.setAddDate(todayDate);
+        envAmmoniaEntity.setFarmCode(farmCode);
+        envAmmoniaEntity.setPigpenId(envDeviceRegisterEntity.getPigpenId());
+        envAmmoniaEntity.setUnitId(envDeviceRegisterEntity.getUnitId());
+        envAmmoniaEntity.setDataUnit(dataJo.getString("dataUnit"));
+        envAmmoniaEntityRepo.saveAndFlush(envAmmoniaEntity);
+    }
+
+    //
+    @Override
+    public JSONObject handleAskText(String askText) {
+        String[] dataArray = askText.split("\\+");
+        return buildDataObj(dataArray);
+    }
+
+    //
+    public JSONObject buildDataObj(String[] dataArray) {
+        JSONObject dataJo = new JSONObject();
+        dataJo.put("deviceCode", dataArray[1]);
+        dataJo.put("cmd", dataArray[2]);
+        dataJo.put("sensorSn", dataArray[3]);
+        dataJo.put("value", dataArray[4]);
+        dataJo.put("askTime", dataArray[5]);
+        return dataJo;
+    }
+
+}

+ 28 - 0
huimv-env-platform/huimv-env-input/src/main/java/com/huimv/env/input/config/TopicRabbitMQConfig.java

@@ -73,4 +73,32 @@ public class TopicRabbitMQConfig {
     Binding bindingSensorExchangeMessage() {
     Binding bindingSensorExchangeMessage() {
         return BindingBuilder.bind(sensorQueue()).to(sensorExchange()).with(Const.ROUTING_KEY_SENSOR);
         return BindingBuilder.bind(sensorQueue()).to(sensorExchange()).with(Const.ROUTING_KEY_SENSOR);
     }
     }
+
+    //设备状态
+    @Bean
+    public Queue deviceStatusQueue() {
+        return new Queue(Const.QUEUE_DEVICE_STATUS);
+    }
+    @Bean
+    TopicExchange deviceStatusExchange() {
+        return new TopicExchange(Const.EXCHANGE_DEVICE_STATUS);
+    }
+    @Bean
+    Binding bindingDeviceStatusExchangeMessage() {
+        return BindingBuilder.bind(deviceStatusQueue()).to(deviceStatusExchange()).with(Const.ROUTING_KEY_DEVICE_STATUS);
+    }
+
+    //推送短信
+    @Bean
+    public Queue pushMessageQueue() {
+        return new Queue(Const.QUEUE_PUSH_MESSAGE);
+    }
+    @Bean
+    TopicExchange pushMessageExchange() {
+        return new TopicExchange(Const.EXCHANGE_PUSH_MESSAGE);
+    }
+    @Bean
+    Binding bindingPushMessageMessage() {
+        return BindingBuilder.bind(pushMessageQueue()).to(pushMessageExchange()).with(Const.ROUTING_KEY_PUSH_MESSAGE);
+    }
 }
 }

+ 34 - 0
huimv-env-platform/huimv-env-input/src/main/java/com/huimv/env/input/producer/Producer.java

@@ -73,4 +73,38 @@ public class Producer {
         rabbitTemplate.convertAndSend(Const.EXCHANGE_AMMONIA, Const.ROUTING_KEY_AMMONIA, map);
         rabbitTemplate.convertAndSend(Const.EXCHANGE_AMMONIA, Const.ROUTING_KEY_AMMONIA, map);
         return "ok";
         return "ok";
     }
     }
+
+    /**
+     * @Method      : sendSprayEquipStatusToMQ
+     * @Description : 
+     * @Params      : [askText]
+     * @Return      : java.lang.String
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2022/8/18       
+     * @Time        : 20:51
+     */
+    public String sendSprayEquipStatusToMQ(String askText) {
+        Map map = new HashMap();
+        map.put("askText",askText);
+        rabbitTemplate.convertAndSend(Const.EXCHANGE_DEVICE_STATUS, Const.ROUTING_KEY_DEVICE_STATUS, map);
+        return "ok";
+    }
+
+    /**
+     * @Method      : sendPushMessageToMQ
+     * @Description : 
+     * @Params      : [askText]
+     * @Return      : java.lang.String
+     * 
+     * @Author      : ZhuoNing
+     * @Date        : 2022/8/18       
+     * @Time        : 20:52
+     */
+    public String sendPushMessageToMQ(String askText) {
+        Map map = new HashMap();
+        map.put("askText",askText);
+        rabbitTemplate.convertAndSend(Const.EXCHANGE_PUSH_MESSAGE, Const.ROUTING_KEY_PUSH_MESSAGE, map);
+        return "ok";
+    }
 }
 }

+ 7 - 3
huimv-env-platform/huimv-env-input/src/main/java/com/huimv/env/input/server/EnvInputServerHandler.java

@@ -203,6 +203,9 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
         String answerText = "hm+19+0+2+end";
         String answerText = "hm+19+0+2+end";
         log.info(">>平台消息推送请求-应答数据>>" + answerText);
         log.info(">>平台消息推送请求-应答数据>>" + answerText);
         answerCmd(answerText, ctx);
         answerCmd(answerText, ctx);
+
+        //发送喷雾设备状态到消息队列
+        producer.sendPushMessageToMQ(askText);
     }
     }
 
 
     //高温,低温报警参数请求
     //高温,低温报警参数请求
@@ -272,10 +275,11 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
             System.out.println("##上报喷雾除臭状态请求-未注册设备 idCode=" + idCode);
             System.out.println("##上报喷雾除臭状态请求-未注册设备 idCode=" + idCode);
             return;
             return;
         }
         }
-//        String answerText = "hm+115+7+6+end";
-        String answerText = "hm+115+7+1+201702081523+6+end";
+        String answerText = "hm+"+idCode+"+7+1+201702081523+6+end";
         log.info(">>上报喷雾除臭状态请求-应答数据>>" + answerText);
         log.info(">>上报喷雾除臭状态请求-应答数据>>" + answerText);
         answerCmd(answerText, ctx);
         answerCmd(answerText, ctx);
+        //发送喷雾设备状态到消息队列
+        producer.sendSprayEquipStatusToMQ(askText);
     }
     }
 
 
     //获取喷雾除臭配置请求
     //获取喷雾除臭配置请求
@@ -286,7 +290,7 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
             return;
             return;
         }
         }
 //        String answerText = "hm+115+6+1+1+(201708080101,60,10,10)(201708080202,60,10,10)(201708080303,60,10,10)(201708080404,60,10,10)...+60+201702081523+6+end";
 //        String answerText = "hm+115+6+1+1+(201708080101,60,10,10)(201708080202,60,10,10)(201708080303,60,10,10)(201708080404,60,10,10)...+60+201702081523+6+end";
-        String answerText = "hm+115+6+1+1+0101,60,10,10,0202,60,10,10,0303,60,10,10,0404,60,10,10+60+6+end";
+        String answerText = "hm+"+idCode+"+6+1+1+0101,60,10,10,0202,60,10,10,0303,60,10,10,0404,60,10,10+60+6+end";
         log.info(">>获取喷雾除臭配置请求-应答数据>>" + answerText);
         log.info(">>获取喷雾除臭配置请求-应答数据>>" + answerText);
         answerCmd(answerText, ctx);
         answerCmd(answerText, ctx);
     }
     }