diff --git a/device_iec61850clent/src/main/java/com/xr/iec61850clent/common/util/ValueFormatUtil.java b/device_iec61850clent/src/main/java/com/xr/iec61850clent/common/util/ValueFormatUtil.java new file mode 100644 index 0000000..b2b8416 --- /dev/null +++ b/device_iec61850clent/src/main/java/com/xr/iec61850clent/common/util/ValueFormatUtil.java @@ -0,0 +1,31 @@ +package com.xr.iec61850clent.common.util; + +import com.xr.iec61850clent.models.entity.MeterConfig; +import com.xr.iec61850clent.models.service.MeterConfigService; + +public class ValueFormatUtil { + + /* + * 处理AI分析的计数器数值,针对可以识别到,但偶尔有错误结果出现的情况 + * 1.抄写基准值 + * 2.与基准值比较,如果比基准值大于1,可能计数器跳1,更新基准值,并返回结果 + * 反之返回基准值结果为识别结果 + * 3.如果未设基准值,去0后保存结果 + * */ + public static String getNumBerJx(float getVal,MeterConfig config, MeterConfigService meterConfigService){ + int s = (int) getVal; + Integer jz = Integer.valueOf(config.getJzVal())+1; + if(StringUtils.isNotEmpty(config.getJzVal())){ + if(s==jz){ + config.setJzVal(jz+""); + meterConfigService.updateById(config); + return jz+""; + }else{ + return config.getJzVal(); + } + }else{ + return s+""; + } + } + +} diff --git a/device_iec61850clent/src/main/java/com/xr/iec61850clent/models/iec61850run/Iec61850Scheduled.java b/device_iec61850clent/src/main/java/com/xr/iec61850clent/models/iec61850run/Iec61850Scheduled.java index f9b09b8..55bfae1 100644 --- a/device_iec61850clent/src/main/java/com/xr/iec61850clent/models/iec61850run/Iec61850Scheduled.java +++ b/device_iec61850clent/src/main/java/com/xr/iec61850clent/models/iec61850run/Iec61850Scheduled.java @@ -3,9 +3,7 @@ package com.xr.iec61850clent.models.iec61850run; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.beanit.iec61850bean.*; import com.beanit.iec61850bean.internal.cli.*; -import com.xr.iec61850clent.common.util.ModeUtil; -import com.xr.iec61850clent.common.util.SpringUtils; -import com.xr.iec61850clent.common.util.UploadUtil; +import com.xr.iec61850clent.common.util.*; import com.xr.iec61850clent.models.entity.*; import com.xr.iec61850clent.models.service.*; import org.springframework.scheduling.annotation.Scheduled; @@ -28,7 +26,7 @@ public class Iec61850Scheduled { private int conner =0; String[] args = new String[] {"param1", "param2", "param3"}; - @Scheduled(cron = "0 0/1 * * * ?")//每10分钟执行一次 + @Scheduled(cron = "0 0 9,15 * * ?")//每天9点和下午三点执行 public void run(){ StringCliParameter hostParam = new CliParameterBuilder("-h") .setDescription("要访问的服务器的IP域地址。").buildStringParameter("host","192.168.1.93"); IntCliParameter portParam = new CliParameterBuilder("-p").setDescription("要连接的端口。").buildIntParameter("port", 102); @@ -133,9 +131,6 @@ public class Iec61850Scheduled { if(lds5000==null){ continue; } - if(lds5000.getClentIp().equals("192.168.1.57")){ - System.out.println("-----------------------"); - } QueryWrapper queryWrapper=new QueryWrapper<>(); queryWrapper.eq("node",lds5000.getNode()); queryWrapper.eq("clent_ip","192.168.1.93"); @@ -159,13 +154,22 @@ public class Iec61850Scheduled { if(node.getFc().name().equals("MX")){ String value = "0"; float f = Float.valueOf(lds5000.getF()); - if(config.getTypeId() == 3 || config.getTypeId() == 5 || config.getTypeId() == 7){//油位计,保留2位小数 - value = String.format("%.2f", f); + if(config.getTypeId() == 5 || config.getTypeId() == 7){ + if(f ==0 && StringUtils.isNotEmpty(config.getJzVal())){ + value = config.getJzVal(); + }else{ + value = String.format("%.2f", f); + } + } + if(config.getTypeId() == 3 ){ + if((f == 0 || f>1)&& StringUtils.isNotEmpty(config.getJzVal())){ + value = config.getJzVal(); + }else{ + value = String.format("%.2f", f*100)+"%"; + } } if(config.getTypeId() == 4 || config.getTypeId() == 11){//开关计数器 - //处理为整数 - int s = (int) f; - value = s+""; + value= ValueFormatUtil.getNumBerJx(f,config,meterConfigService); } if(config.getTypeId() == 8){//档位数据处理 //处理为整数 @@ -195,6 +199,8 @@ public class Iec61850Scheduled { int s = Math.round(f); if(s>=10){ value = 0+""; + }else { + value = s+""; } } if(config.getIsJz() == 1){ @@ -216,10 +222,7 @@ public class Iec61850Scheduled { meterReadingRecord.setReadingUrl(url1); meterReadingRecord.setMeterTypeId(config.getTypeId()); meterReadingRecord.setOwningInterval(config.getOwningInterval()); - if(config.getIsJz()!=1){ - meterReadingRecordService.save(meterReadingRecord); - } - //abnormalReadingJudgment(meterReadingRecord); + meterReadingRecordService.save(meterReadingRecord); } }else{ lds5000.setCreateTime(new Date());