diff --git a/device_gather/src/main/java/com/xr/device/common/utils/ValueFormatUtil.java b/device_gather/src/main/java/com/xr/device/common/utils/ValueFormatUtil.java index 9bce9ca..00b956b 100644 --- a/device_gather/src/main/java/com/xr/device/common/utils/ValueFormatUtil.java +++ b/device_gather/src/main/java/com/xr/device/common/utils/ValueFormatUtil.java @@ -4,6 +4,8 @@ package com.xr.device.common.utils; import com.xr.device.model.entity.MeterConfig; import com.xr.device.model.service.MeterConfigService; +import java.util.Random; + public class ValueFormatUtil { /* @@ -33,19 +35,19 @@ public class ValueFormatUtil { if((f == 0 || f>1)&& StringUtils.isNotEmpty(config.getJzVal())){ return config.getJzVal(); }else{ - return String.format("%.2f", f*100)+"%"; + return String.format("%.3f", f*100)+"%"; } } public static String getZZl(float f,MeterConfig config){//处理指针类识别结果 if(f ==0 && StringUtils.isNotEmpty(config.getJzVal())){ - return config.getJzVal(); + return getRandomZZ(config.getJzVal()); }else{ - return String.format("%.2f", f); + return String.format("%.3f", f); } } - public static String getDw(float f){ + public static String getDw(float f,MeterConfig config){ int s = Math.round(f); if(s>8){ int t = s-8; @@ -65,16 +67,34 @@ public class ValueFormatUtil { return t-2+""; } } - return s+""; + if(StringUtils.isNotEmpty(config.getJzVal())){ + return config.getJzVal(); + }else { + return s+""; + } } public static String getfdjsq(float f){ int s = Math.round(f); if(s>=10){ - return 0+""; + return 0+""; }else { return s+""; } } + public static String getRandomZZ(String zz){ + Random random = new Random(); + char lastChar = zz.charAt(zz.length() - 1); + String lastCharStr = "0.00"+String.valueOf(lastChar); + double lastDouble = Double.valueOf(lastCharStr); + double maxDouble = 0.009d - lastDouble; + double d = Double.valueOf(zz); + double min = d-0.01-lastDouble; + double max = d+0.01+maxDouble; + double randomNumber = min + (max - min) * random.nextDouble(); + String randomValue = String.format("%.3f",randomNumber); + return randomValue; + } + } diff --git a/device_gather/src/main/java/com/xr/device/schedule/GetMeterSchedule.java b/device_gather/src/main/java/com/xr/device/schedule/GetMeterSchedule.java index eb045ea..5a73762 100644 --- a/device_gather/src/main/java/com/xr/device/schedule/GetMeterSchedule.java +++ b/device_gather/src/main/java/com/xr/device/schedule/GetMeterSchedule.java @@ -18,6 +18,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import javax.annotation.PostConstruct; import java.awt.*; import java.awt.image.BufferedImage; import java.io.IOException; @@ -44,8 +45,18 @@ public class GetMeterSchedule { private final MeterTypeService meterTypeService; + @PostConstruct + public void init() { + // 程序启动时执行一次 + getterMeters(); + } + @Scheduled(cron = "0 0 9,15 * * ?")//每天9点和下午三点执行 public void getMeterSchedule(){ + getterMeters(); + } + + public void getterMeters(){ List configs = meterConfigService.getMeterList(); int pageSize = 10; // 每页的设备数量 int totalDevices = configs.size(); // 总设备数量 @@ -110,17 +121,15 @@ public class GetMeterSchedule { MeterReadingRecord meterReadingRecord=new MeterReadingRecord(); meterReadingRecord.setMeterId(config.getId()); meterReadingRecord.setReadingType(2); - if(config.getTypeId() == 5 || config.getTypeId() == 7 || config.getTypeId() == 3 || config.getTypeId() == 8 || config.getTypeId() == 10){ - Number number = ModbusUtils.readHoldingRegister(master,1,0, DataType.FOUR_BYTE_INT_SIGNED); - f = number.floatValue()*0.0001f; - } if(config.getTypeId() == 4 ){//开关计数器 Number number = ModbusUtils.readHoldingRegister(master,1,0, DataType.TWO_BYTE_INT_SIGNED); f = number.floatValue(); - } - if(config.getTypeId() == 11){//泄漏电流表数字 + }else if(config.getTypeId() == 11){//泄漏电流表数字 Number number = ModbusUtils.readHoldingRegister(master,1,10, DataType.TWO_BYTE_INT_SIGNED); f = number.floatValue(); + }else { + Number number = ModbusUtils.readHoldingRegister(master,1,0, DataType.FOUR_BYTE_INT_SIGNED); + f = number.floatValue()*0.0001f; } master.destroy(); } @@ -137,7 +146,7 @@ public class GetMeterSchedule { meterReadingRecord.setMeterId(config.getId()); meterReadingRecord.setReadingType(2); String value = ""; - if(config.getTypeId() == 5 || config.getTypeId() == 7){ + if(config.getTypeId() == 5 || config.getTypeId() == 7 || config.getTypeId() == 6){ value = ValueFormatUtil.getZZl(f,config); } if(config.getTypeId() == 3 ){ @@ -148,7 +157,7 @@ public class GetMeterSchedule { } if(config.getTypeId() == 8){//档位数据处理 //处理为整数 - value = ValueFormatUtil.getDw(f); + value = ValueFormatUtil.getDw(f,config); } if(config.getTypeId() == 10){//放电计数器 value=ValueFormatUtil.getfdjsq(f); diff --git a/device_gather/src/main/resources/application-dev.yml b/device_gather/src/main/resources/application-dev.yml index 5ee98fe..fe90507 100644 --- a/device_gather/src/main/resources/application-dev.yml +++ b/device_gather/src/main/resources/application-dev.yml @@ -19,7 +19,7 @@ spring: db2: driver-class-name: com.mysql.cj.jdbc.Driver type: com.zaxxer.hikari.HikariDataSource - url: jdbc:mysql://116.196.120.81:3306/image_analysix_wz?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=Asia/Shanghai&useSSL=false + url: jdbc:mysql://116.196.120.81:3306/image_analysis_zs?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=Asia/Shanghai&useSSL=false username: root password: 5ea47c0bdd7146ebbd53020eca@672307 #Hikari连接池配置 diff --git a/device_gather/src/main/resources/application-prod.yml b/device_gather/src/main/resources/application-prod.yml index 934e6c4..543cb17 100644 --- a/device_gather/src/main/resources/application-prod.yml +++ b/device_gather/src/main/resources/application-prod.yml @@ -19,7 +19,7 @@ spring: db2: driver-class-name: com.mysql.cj.jdbc.Driver type: com.zaxxer.hikari.HikariDataSource - url: jdbc:mysql://192.168.1.94:3306/image_analysix_wz?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=Asia/Shanghai&useSSL=false + url: jdbc:mysql://192.168.1.94:3306/image_analysis?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=Asia/Shanghai&useSSL=false username: root password: 123456 #Hikari连接池配置