自动处理SOH,MET文件存储内容中如果是占位数据-999999存储时数据内容超出精度范围问题修改

This commit is contained in:
qiaoqinzheng 2024-01-15 10:47:00 +08:00
parent 12217f261e
commit 9a01e503d4
4 changed files with 41 additions and 15 deletions

View File

@ -6,6 +6,8 @@ import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.math.MathContext;
import java.util.Arrays;
import java.util.List;
@Component
public class NumberFormatUtil {
@ -115,4 +117,30 @@ public class NumberFormatUtil {
return value;
}
public Double DoubleLimit(double data) {
BigDecimal number = new BigDecimal(data);
String limit = number.toPlainString();
double rData=DoubleLimit(limit);
return rData;
}
public double DoubleLimit(String data) {
double rData = Double.parseDouble(data);
String first = data;
List<String> lstTemp = Arrays.asList(data.split("\\."));
if(lstTemp.size()>1) {
first = lstTemp.get(0);
}
if(first.length()>3) {
StringBuffer temp= new StringBuffer("-");
for(int pos=1;pos<first.length();pos++) {
temp.append('9');
}
if(temp.toString().equals(first)) {
return -999;
}
}
return rData;
}
}

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.apache.commons.compress.utils.Lists;
import org.jeecg.common.util.DateUtils;
import org.jeecg.common.util.NumberFormatUtil;
import org.jeecg.modules.base.entity.configuration.GardsStations;
import org.jeecg.modules.base.entity.original.GardsMetData;
import org.jeecg.modules.file.FileOperation;
@ -31,6 +32,7 @@ import java.util.List;
public class MetSpectrumServiceImpl extends ServiceImpl<GardsMetDataMapper, GardsMetData> implements IMetSpectrumService {
private final GardsStationsService stationsService;
private final NumberFormatUtil numberFormatUtil;
/**
* 保存气象谱数据
@ -54,12 +56,12 @@ public class MetSpectrumServiceImpl extends ServiceImpl<GardsMetDataMapper, Gard
metData.setStationCode(struct.station_code);
metData.setStartTime(DateUtils.parseDate(struct.met_start_date.get(i)+" "+struct.met_start_time.get(i)));
metData.setEndTime(DateUtils.parseDate(struct.met_end_date.get(i)+" "+struct.met_end_time.get(i)));
metData.setAveHumidity(struct.humidity.get(i));
metData.setAvgtemperature(struct.average_outside_temperature.get(i));
metData.setAvePressure(struct.average_barometric_reading.get(i));
metData.setAveWindDir(struct.average_wind_direction.get(i));
metData.setAveWindSpeed(struct.average_wind_speed.get(i));
metData.setRainfall(struct.rainfall.get(i));
metData.setAveHumidity(numberFormatUtil.DoubleLimit(struct.humidity.get(i)));
metData.setAvgtemperature(numberFormatUtil.DoubleLimit(struct.average_outside_temperature.get(i)));
metData.setAvePressure(numberFormatUtil.DoubleLimit(struct.average_barometric_reading.get(i)));
metData.setAveWindDir(numberFormatUtil.DoubleLimit(struct.average_wind_direction.get(i)));
metData.setAveWindSpeed(numberFormatUtil.DoubleLimit(struct.average_wind_speed.get(i)));
metData.setRainfall(numberFormatUtil.DoubleLimit(struct.rainfall.get(i)));
metData.setInputFileName(FileOperation.separatorConvert(fileName));
metData.setModdate(new Date());
list.add(metData);

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.apache.commons.compress.utils.Lists;
import org.jeecg.common.util.DateUtils;
import org.jeecg.common.util.NumberFormatUtil;
import org.jeecg.modules.base.entity.configuration.GardsDetectors;
import org.jeecg.modules.base.entity.configuration.GardsStations;
import org.jeecg.modules.base.entity.original.GardsSohData;
@ -32,6 +33,7 @@ public class SOHSpectrumServiceImpl extends ServiceImpl<GardsSohDataMapper, Gard
private final GardsStationsService stationsService;
private final GardsDetectorsService detectorsService;
private final NumberFormatUtil numberFormatUtil;
/**
* 保存健康谱数据
@ -58,9 +60,9 @@ public class SOHSpectrumServiceImpl extends ServiceImpl<GardsSohDataMapper, Gard
sohData.setStationId(station.getStationId());
sohData.setStationCode(struct.station_code);
sohData.setStartTime(DateUtils.parseDate(struct.af_start_date.get(i)+" "+struct.af_start_time.get(i)));
sohData.setTime(struct.af_interval_duration.get(i).doubleValue());
sohData.setAvgflowrate(struct.average_flow_rate.get(i));
sohData.setFlowratedev(struct.flow_rate_standard_deviation.get(i));
sohData.setTime(numberFormatUtil.DoubleLimit(struct.af_interval_duration.get(i).doubleValue()));
sohData.setAvgflowrate(numberFormatUtil.DoubleLimit(struct.average_flow_rate.get(i)));
sohData.setFlowratedev(numberFormatUtil.DoubleLimit(struct.flow_rate_standard_deviation.get(i)));
sohData.setInputFileName(FileOperation.separatorConvert(fileName));
sohData.setDetectorId(detector.getDetectorId());
sohData.setModdate(new Date());

View File

@ -167,12 +167,6 @@ public class GardsStationsServiceImpl extends ServiceImpl<GardsStationsMapper, G
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW)
public List<GardsStations> getGardsStations() {
if (redisUtil.hasKey("stationMap")){
redisUtil.del("stationMap");
}
if (redisUtil.hasKey("stationInfoMap")) {
redisUtil.del("stationInfoMap");
}
List<GardsStations> gardsStations = this.baseMapper.selectList(new LambdaQueryWrapper<>());
Map<String, String> stationMap = gardsStations.stream().collect(Collectors.toMap(GardsStations::getStationId, GardsStations::getStationCode)).entrySet().stream()
.collect(Collectors.toMap(entry -> entry.getKey().toString(), Map.Entry::getValue));;