王先生 2 years ago
parent
commit
fb897cd5d4

+ 100 - 2
eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/ModbusTask.java

@@ -200,9 +200,107 @@ public class ModbusTask {
                                                                      F.set(StringUtils.substringBefore(callTheRoll, "F"));
                                                                      // 获取检测的数据名称
                                                                      String dataName = StringUtils.substringAfterLast(callTheRoll, "_");
-
+                                                                     switch (dataName){
+                                                                         case "CHO":
+                                                                             DmEnvHistoryWarnConfig dmEnvHistoryWarnConfigCho = dmEnvHistoryWarnConfigService.selectWarnDataByName("CHO");
+                                                                             dmEnvHistoryModbusData.setCho(number.toString());
+                                                                             if (!ObjectUtil.isEmpty(dmEnvHistoryWarnConfigCho) && Integer.valueOf(dmEnvHistoryModbusData.getCho())>=Integer.valueOf(dmEnvHistoryWarnConfigCho.getWarnValue())){
+                                                                                 DmEnvHistoryWarn dmEnvHistoryWarn = new DmEnvHistoryWarn();
+                                                                                 dmEnvHistoryWarn.setCreateTime(new Timestamp(System.currentTimeMillis()));
+                                                                                 dmEnvHistoryWarn.setDeviceIdentifier(device.getDeviceId().toString());
+                                                                                 dmEnvHistoryWarn.setDeviceName(device.getDeviceName());
+                                                                                 dmEnvHistoryWarn.setWarnIndex(dmEnvHistoryWarnConfigCho.getWarnValue());
+                                                                                 dmEnvHistoryWarn.setWarnValue(dmEnvHistoryModbusData.getCho());
+                                                                                 dmEnvHistoryWarn.setWarnContent("甲醛过高");
+                                                                                 dmEnvHistoryWarnService.create(dmEnvHistoryWarn);
+                                                                             }
+                                                                             break;
+                                                                         case "CO2":
+                                                                             DmEnvHistoryWarnConfig dmEnvHistoryWarnConfigCo2 = dmEnvHistoryWarnConfigService.selectWarnDataByName("CO2");
+                                                                             dmEnvHistoryModbusData.setCo2(number.toString());
+                                                                             if (!ObjectUtil.isEmpty(dmEnvHistoryWarnConfigCo2) && Integer.valueOf(dmEnvHistoryModbusData.getCo2())>=Integer.valueOf(dmEnvHistoryWarnConfigCo2.getWarnValue())){
+                                                                                 DmEnvHistoryWarn dmEnvHistoryWarn = new DmEnvHistoryWarn();
+                                                                                 dmEnvHistoryWarn.setCreateTime(new Timestamp(System.currentTimeMillis()));
+                                                                                 dmEnvHistoryWarn.setDeviceIdentifier(device.getDeviceId().toString());
+                                                                                 dmEnvHistoryWarn.setDeviceName(device.getDeviceName());
+                                                                                 dmEnvHistoryWarn.setWarnIndex(dmEnvHistoryWarnConfigCo2.getWarnValue());
+                                                                                 dmEnvHistoryWarn.setWarnValue(dmEnvHistoryModbusData.getCo2());
+                                                                                 dmEnvHistoryWarn.setWarnContent("二氧化碳过高");
+                                                                                 dmEnvHistoryWarnService.create(dmEnvHistoryWarn);
+                                                                             }
+                                                                             break;
+                                                                         case "H":
+                                                                             DmEnvHistoryWarnConfig dmEnvHistoryWarnConfigH = dmEnvHistoryWarnConfigService.selectWarnDataByName("H");
+                                                                             dmEnvHistoryModbusData.setH(number.toString());
+                                                                             if (!ObjectUtil.isEmpty(dmEnvHistoryWarnConfigH) && Integer.valueOf(dmEnvHistoryModbusData.getH())>=Integer.valueOf(dmEnvHistoryWarnConfigH.getWarnValue())){
+                                                                                 DmEnvHistoryWarn dmEnvHistoryWarn = new DmEnvHistoryWarn();
+                                                                                 dmEnvHistoryWarn.setCreateTime(new Timestamp(System.currentTimeMillis()));
+                                                                                 dmEnvHistoryWarn.setDeviceIdentifier(device.getDeviceId().toString());
+                                                                                 dmEnvHistoryWarn.setDeviceName(device.getDeviceName());
+                                                                                 dmEnvHistoryWarn.setWarnIndex(dmEnvHistoryWarnConfigH.getWarnValue());
+                                                                                 dmEnvHistoryWarn.setWarnValue(dmEnvHistoryModbusData.getH());
+                                                                                 dmEnvHistoryWarn.setWarnContent("湿度过高");
+                                                                                 dmEnvHistoryWarnService.create(dmEnvHistoryWarn);
+                                                                             }
+                                                                             break;
+                                                                         case "PM10":
+                                                                             DmEnvHistoryWarnConfig dmEnvHistoryWarnConfigPm10 = dmEnvHistoryWarnConfigService.selectWarnDataByName("PM10");
+                                                                             dmEnvHistoryModbusData.setPm10(number.toString());
+                                                                             if (!ObjectUtil.isEmpty(dmEnvHistoryWarnConfigPm10) && Integer.valueOf(dmEnvHistoryModbusData.getPm10())>=Integer.valueOf(dmEnvHistoryWarnConfigPm10.getWarnValue())){
+                                                                                 DmEnvHistoryWarn dmEnvHistoryWarn = new DmEnvHistoryWarn();
+                                                                                 dmEnvHistoryWarn.setCreateTime(new Timestamp(System.currentTimeMillis()));
+                                                                                 dmEnvHistoryWarn.setDeviceIdentifier(device.getDeviceId().toString());
+                                                                                 dmEnvHistoryWarn.setDeviceName(device.getDeviceName());
+                                                                                 dmEnvHistoryWarn.setWarnIndex(dmEnvHistoryWarnConfigPm10.getWarnValue());
+                                                                                 dmEnvHistoryWarn.setWarnValue(dmEnvHistoryModbusData.getPm10());
+                                                                                 dmEnvHistoryWarn.setWarnContent("pm10过高");
+                                                                                 dmEnvHistoryWarnService.create(dmEnvHistoryWarn);
+                                                                             }
+                                                                             break;
+                                                                         case "PM25":
+                                                                             DmEnvHistoryWarnConfig dmEnvHistoryWarnConfigPm25 = dmEnvHistoryWarnConfigService.selectWarnDataByName("PM25");
+                                                                             dmEnvHistoryModbusData.setPm25(number.toString());
+                                                                             if (!ObjectUtil.isEmpty(dmEnvHistoryWarnConfigPm25) && Integer.valueOf(dmEnvHistoryModbusData.getPm25())>=Integer.valueOf(dmEnvHistoryWarnConfigPm25.getWarnValue())){
+                                                                                 DmEnvHistoryWarn dmEnvHistoryWarn = new DmEnvHistoryWarn();
+                                                                                 dmEnvHistoryWarn.setCreateTime(new Timestamp(System.currentTimeMillis()));
+                                                                                 dmEnvHistoryWarn.setDeviceIdentifier(device.getDeviceId().toString());
+                                                                                 dmEnvHistoryWarn.setDeviceName(device.getDeviceName());
+                                                                                 dmEnvHistoryWarn.setWarnIndex(dmEnvHistoryWarnConfigPm25.getWarnValue());
+                                                                                 dmEnvHistoryWarn.setWarnValue(dmEnvHistoryModbusData.getPm25());
+                                                                                 dmEnvHistoryWarn.setWarnContent("pm2.5过高");
+                                                                                 dmEnvHistoryWarnService.create(dmEnvHistoryWarn);
+                                                                             }
+                                                                             break;
+                                                                         case "T":
+                                                                             DmEnvHistoryWarnConfig dmEnvHistoryWarnConfigT = dmEnvHistoryWarnConfigService.selectWarnDataByName("T");
+                                                                             dmEnvHistoryModbusData.setT(number.toString());
+                                                                             if (!ObjectUtil.isEmpty(dmEnvHistoryWarnConfigT) && Integer.valueOf(dmEnvHistoryModbusData.getT())>=Integer.valueOf(dmEnvHistoryWarnConfigT.getWarnValue())){
+                                                                                 DmEnvHistoryWarn dmEnvHistoryWarn = new DmEnvHistoryWarn();
+                                                                                 dmEnvHistoryWarn.setCreateTime(new Timestamp(System.currentTimeMillis()));
+                                                                                 dmEnvHistoryWarn.setDeviceIdentifier(device.getDeviceId().toString());
+                                                                                 dmEnvHistoryWarn.setDeviceName(device.getDeviceName());
+                                                                                 dmEnvHistoryWarn.setWarnIndex(dmEnvHistoryWarnConfigT.getWarnValue());
+                                                                                 dmEnvHistoryWarn.setWarnValue(dmEnvHistoryModbusData.getT());
+                                                                                 dmEnvHistoryWarn.setWarnContent("温度过高");
+                                                                                 dmEnvHistoryWarnService.create(dmEnvHistoryWarn);
+                                                                             }
+                                                                             break;
+                                                                         case "VOC":
+                                                                             DmEnvHistoryWarnConfig dmEnvHistoryWarnConfigVoc = dmEnvHistoryWarnConfigService.selectWarnDataByName("VOC");
+                                                                             dmEnvHistoryModbusData.setVoc(number.toString());
+                                                                             if (!ObjectUtil.isEmpty(dmEnvHistoryWarnConfigVoc) && Integer.valueOf(dmEnvHistoryModbusData.getVoc())>=Integer.valueOf(dmEnvHistoryWarnConfigVoc.getWarnValue())){
+                                                                                 DmEnvHistoryWarn dmEnvHistoryWarn = new DmEnvHistoryWarn();
+                                                                                 dmEnvHistoryWarn.setCreateTime(new Timestamp(System.currentTimeMillis()));
+                                                                                 dmEnvHistoryWarn.setDeviceIdentifier(device.getDeviceId().toString());
+                                                                                 dmEnvHistoryWarn.setDeviceName(device.getDeviceName());
+                                                                                 dmEnvHistoryWarn.setWarnIndex(dmEnvHistoryWarnConfigVoc.getWarnValue());
+                                                                                 dmEnvHistoryWarn.setWarnValue(dmEnvHistoryModbusData.getVoc());
+                                                                                 dmEnvHistoryWarn.setWarnContent("VOC过高");
+                                                                                 dmEnvHistoryWarnService.create(dmEnvHistoryWarn);
+                                                                             }
+                                                                             break;
+                                                                     }
                                                                  }
-                                                                  break;
                                                       }
                                                   }catch (Exception e) {
                                                       log.error("调用读取InputRegisters模拟量数据,modbus读取数据失败,失败原因:{}, 失败地址寄存器地址: {}",e.getMessage(),Integer.valueOf(data.getSoftwareRegisterAddress()));