王先生 2 years ago
parent
commit
3eb338ce4e
1 changed files with 111 additions and 110 deletions
  1. 111 110
      eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/ModbusTask.java

+ 111 - 110
eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/ModbusTask.java

@@ -189,116 +189,117 @@ public class ModbusTask {
                                                               //默认使用 3X(Input  Register)
                                                               log.info("调用读取InputRegisters模拟量数据");
                                                                   // 读取数据 数据类型为 float Integer.valueOf(data.getSoftwareRegisterAddress())
-                                                                  Number number = readInputRegisters(Integer.valueOf(data.getSoftwareRegisterAddress())-1, 1, modbusSalveId);
+                                                                 if (Integer.valueOf(data.getSoftwareRegisterAddress())<60){
+                                                                     Number number = readInputRegisters(Integer.valueOf(data.getSoftwareRegisterAddress())-1, 4, modbusSalveId);
 //                                                                    Number number = 321;
-                                                                  //获取点名 例如 1F_CO2
-                                                                  String callTheRoll = data.getCallTheRoll();
-                                                                  log.info("{}寄存器地址:{}",callTheRoll,data.getSoftwareRegisterAddress());
-                                                                  // 获取楼层id
-                                                                   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;
-                                                                  }
-
+                                                                     //获取点名 例如 1F_CO2
+                                                                     String callTheRoll = data.getCallTheRoll();
+                                                                     log.info("{}寄存器地址:{}",callTheRoll,data.getSoftwareRegisterAddress());
+                                                                     // 获取楼层id
+                                                                     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) {
@@ -407,7 +408,7 @@ public class ModbusTask {
                                                             //默认使用 3X(Input  Register)
 //                                                            log.info("调用读取InputRegisters模拟量数据");
                                                             // 读取数据 数据类型为 float Integer.valueOf(data.getSoftwareRegisterAddress())
-                                                            if (Integer.valueOf(data.getSoftwareRegisterAddress())>59){
+                                                            if (Integer.valueOf(data.getSoftwareRegisterAddress())<60){
                                                                 Number number = readInputRegisters(Integer.valueOf(data.getSoftwareRegisterAddress())-1, 1, modbusSalveId);
                                                                 //获取点名 例如 1F_CO2
                                                                 String callTheRoll = data.getCallTheRoll();