|
@@ -25,9 +25,10 @@ import com.jiayue.insu.incloud.service.ForecastDataService;
|
|
|
import com.jiayue.insu.incloud.service.IntegrationCompanyService;
|
|
|
import com.jiayue.insu.incloud.service.RecordService;
|
|
|
import com.jiayue.insu.incloud.service.StationService;
|
|
|
+import com.jiayue.insu.incloud.utils.MinioUtils;
|
|
|
import com.jiayue.insu.incloud.utils.SystermUtils;
|
|
|
+import com.jiayue.insu.minio.util.MinioUtilService;
|
|
|
import io.minio.MinioClient;
|
|
|
-import io.minio.PutObjectOptions;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.apache.velocity.Template;
|
|
@@ -35,18 +36,17 @@ import org.apache.velocity.VelocityContext;
|
|
|
import org.apache.velocity.app.VelocityEngine;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.cloud.context.config.annotation.RefreshScope;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
-import java.io.File;
|
|
|
-import java.io.FileOutputStream;
|
|
|
-import java.io.IOException;
|
|
|
-import java.io.StringWriter;
|
|
|
+import java.io.*;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.*;
|
|
|
import java.util.regex.Matcher;
|
|
|
import java.util.regex.Pattern;
|
|
|
import java.util.stream.Collectors;
|
|
|
+
|
|
|
/**
|
|
|
* 清能互联 拉取修正数据业务
|
|
|
*
|
|
@@ -56,7 +56,8 @@ import java.util.stream.Collectors;
|
|
|
*/
|
|
|
@Component
|
|
|
@Slf4j
|
|
|
-public class PullCorrectDataForQNHL implements IPullInitCorrectData{
|
|
|
+@RefreshScope
|
|
|
+public class PullCorrectDataForQNHL implements IPullInitCorrectData {
|
|
|
|
|
|
@Autowired
|
|
|
private ForecastDataService forecastDataService;
|
|
@@ -70,25 +71,19 @@ public class PullCorrectDataForQNHL implements IPullInitCorrectData{
|
|
|
@Autowired
|
|
|
private RecordService recordService;
|
|
|
@Autowired
|
|
|
- private VelocityEngine velocityEngine;
|
|
|
+ private VelocityEngine velocityEngine;
|
|
|
+ @Autowired
|
|
|
+ private MinioUtilService minioUtilService;
|
|
|
|
|
|
@Value("${minio.fileurl}")
|
|
|
String fileurl;
|
|
|
|
|
|
- @Value("${minio.logurl}")
|
|
|
- private String logurl;
|
|
|
-
|
|
|
- @Value("${minio.host}")
|
|
|
- private String minloHost;
|
|
|
-
|
|
|
- @Value("${minio.user}")
|
|
|
- private String minloUser;
|
|
|
-
|
|
|
- @Value("${minio.pwd}")
|
|
|
- private String minloPwd;
|
|
|
+ @Value("${minio.bucketname}")
|
|
|
+ private String bucketName;
|
|
|
|
|
|
/**
|
|
|
* 拉取修正预测数据并生成文件上送minio服务器
|
|
|
+ *
|
|
|
* @param station 场站信息
|
|
|
* @return 是否成功
|
|
|
*/
|
|
@@ -104,29 +99,28 @@ public class PullCorrectDataForQNHL implements IPullInitCorrectData{
|
|
|
record.setCreateTime(LocalDateTime.now());
|
|
|
|
|
|
Station st = stationService.findByStationCode(station.getStationCode());
|
|
|
- String token = st.getComKey();
|
|
|
- LocalDateTime tokenTime = st.getKeyTime();
|
|
|
+ String token = st.getComKey();
|
|
|
+ LocalDateTime tokenTime = st.getKeyTime();
|
|
|
|
|
|
IntegrationCompany integrationCompany = integrationCompanyService.findByCode(CompanyConstant.COMPANY_QNHL);
|
|
|
String dataPullUrl = integrationCompany.getPullUrl();
|
|
|
|
|
|
|
|
|
-
|
|
|
- boolean result =false;
|
|
|
+ boolean result = false;
|
|
|
boolean isUpload = false;
|
|
|
String response;
|
|
|
RequestVo requestVo;
|
|
|
List<ForecastData> list = new ArrayList<>();
|
|
|
|
|
|
- if (StrUtil.isEmpty(token) || LocalDateTime.now().isAfter(tokenTime)) {
|
|
|
- if(qNHLComPermisson.generateKey(station)){
|
|
|
+ if (StrUtil.isEmpty(token) || LocalDateTime.now().isAfter(tokenTime)) {
|
|
|
+ if (qNHLComPermisson.generateKey(station)) {
|
|
|
st = stationService.findByStationCode(station.getStationCode());
|
|
|
- token = st.getComKey();
|
|
|
- tokenTime = st.getKeyTime();
|
|
|
+ token = st.getComKey();
|
|
|
+ tokenTime = st.getKeyTime();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (StrUtil.isNotEmpty(token) && LocalDateTime.now().isBefore(tokenTime)) {
|
|
|
+ if (StrUtil.isNotEmpty(token) && LocalDateTime.now().isBefore(tokenTime)) {
|
|
|
try {
|
|
|
|
|
|
DateTime dateTime = DateUtil.parse(DateUtil.today());
|
|
@@ -161,96 +155,100 @@ public class PullCorrectDataForQNHL implements IPullInitCorrectData{
|
|
|
log.info(station.getStationCode() + " 请求短期修正数据返回内容:{}", response);
|
|
|
|
|
|
String dataContent = responseVo.getData();
|
|
|
- if (!dataContent.contains("NULL") && !dataContent.contains("null")) {
|
|
|
|
|
|
- try {
|
|
|
+ try {
|
|
|
|
|
|
- if (CommonStant.ET_PHOTOVOLTAIC.equals(st.getType())) {
|
|
|
- list = correctPhotovoltaicData(responseVo.getData());
|
|
|
+ if (CommonStant.ET_PHOTOVOLTAIC.equals(st.getType())) {
|
|
|
+ list = correctPhotovoltaicData(responseVo.getData());
|
|
|
|
|
|
- } else {
|
|
|
- list = correctWindData(responseVo.getData());
|
|
|
- }
|
|
|
+ } else {
|
|
|
+ list = correctWindData(responseVo.getData());
|
|
|
+ }
|
|
|
|
|
|
- /**************检测解析数据完整性*******************/
|
|
|
- BigDecimal one = new BigDecimal("1");
|
|
|
- BigDecimal checkCount = new BigDecimal( st.getDays().toString()).add(one).multiply(new BigDecimal("96")).add(one);
|
|
|
- if (list.size() < checkCount.intValue()) {
|
|
|
- record.setState(StatusEnum.DATA_DEFICIENCY.getCode());
|
|
|
- record.setStateContent(StatusEnum.DATA_DEFICIENCY.getMsg());
|
|
|
- log.warn( "========== {}:{} ==> 请求短期修正数据缺数: {}" ,integrationCompany.getName(),st.getStationCode(),list.size());
|
|
|
- } else {
|
|
|
- result = true;
|
|
|
- for (ForecastData a : aList) {
|
|
|
- List<ForecastData> collect = list.stream().filter(n -> n.getForecastTime().longValue() == a.getForecastTime().longValue()).collect(Collectors.toList());
|
|
|
- if (CollectionUtil.isNotEmpty(collect)) {
|
|
|
- ForecastData correct = collect.get(0);
|
|
|
- a.setCorrectTime(LocalDateTime.now());
|
|
|
- a.setFpValueCorrect(correct.getFpValueCorrect());
|
|
|
- a.setSwrCorrect(correct.getSwrCorrect());
|
|
|
- a.setDirectRadiationCorrect(correct.getDirectRadiationCorrect());
|
|
|
- a.setDiffuseRadiationCorrect(correct.getDiffuseRadiationCorrect());
|
|
|
- a.setWindSpeedCorrect(correct.getWindSpeedCorrect());
|
|
|
- a.setWindDirCorrect(correct.getWindDirCorrect());
|
|
|
- a.setTemperatureCorrect(correct.getTemperatureCorrect());
|
|
|
- a.setHumidityCorrect(correct.getHumidityCorrect());
|
|
|
- a.setPressureCorrect(correct.getPressureCorrect());
|
|
|
-
|
|
|
- } else {
|
|
|
- record.setState(StatusEnum.DATA_DEFICIENCY.getCode());
|
|
|
- record.setStateContent(StatusEnum.DATA_DEFICIENCY.getMsg());
|
|
|
- log.warn( "========== {}:{} ==> 请求短期修正数据缺数: {}" ,integrationCompany.getName(),st.getStationCode(),list.size());
|
|
|
- break;
|
|
|
- }
|
|
|
+ /**************检测解析数据完整性*******************/
|
|
|
+ BigDecimal one = new BigDecimal("1");
|
|
|
+ BigDecimal checkCount = new BigDecimal(st.getDays().toString()).add(one).multiply(new BigDecimal("96")).add(one);
|
|
|
+ if (list.size() < checkCount.intValue()) {
|
|
|
+ record.setState(StatusEnum.DATA_DEFICIENCY.getCode());
|
|
|
+ record.setStateContent(StatusEnum.DATA_DEFICIENCY.getMsg());
|
|
|
+ log.warn("========== {}:{} ==> 请求短期修正数据缺数: {}", integrationCompany.getName(), st.getStationCode(), list.size());
|
|
|
+ } else {
|
|
|
+ result = true;
|
|
|
+ for (ForecastData a : aList) {
|
|
|
+ List<ForecastData> collect = list.stream().filter(n -> n.getForecastTime().longValue() == a.getForecastTime().longValue()).collect(Collectors.toList());
|
|
|
+ if (CollectionUtil.isNotEmpty(collect)) {
|
|
|
+ ForecastData correct = collect.get(0);
|
|
|
+ a.setCorrectTime(LocalDateTime.now());
|
|
|
+ a.setFpValueCorrect(correct.getFpValueCorrect());
|
|
|
+ a.setSwrCorrect(correct.getSwrCorrect());
|
|
|
+ a.setDirectRadiationCorrect(correct.getDirectRadiationCorrect());
|
|
|
+ a.setDiffuseRadiationCorrect(correct.getDiffuseRadiationCorrect());
|
|
|
+ a.setWindSpeedCorrect(correct.getWindSpeedCorrect());
|
|
|
+ a.setWindDirCorrect(correct.getWindDirCorrect());
|
|
|
+ a.setTemperatureCorrect(correct.getTemperatureCorrect());
|
|
|
+ a.setHumidityCorrect(correct.getHumidityCorrect());
|
|
|
+ a.setPressureCorrect(correct.getPressureCorrect());
|
|
|
+
|
|
|
+ } else {
|
|
|
+ record.setState(StatusEnum.DATA_DEFICIENCY.getCode());
|
|
|
+ record.setStateContent(StatusEnum.DATA_DEFICIENCY.getMsg());
|
|
|
+ log.warn("========== {}:{} ==> 请求短期修正数据缺数: {}", integrationCompany.getName(), st.getStationCode(), list.size());
|
|
|
+ break;
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
- /**************检测解析数据完整性*******************/
|
|
|
|
|
|
- } catch (Exception e) {
|
|
|
- record.setState(StatusEnum.CONNECT_RESPONSE_FORMAT_ERROR.getSign());
|
|
|
- record.setStateContent("解析失败");
|
|
|
- log.error("=========={}:{} ==> 解析短期修正数据失败 " ,integrationCompany.getName(),st.getStationCode());
|
|
|
}
|
|
|
- } else {
|
|
|
+ /**************检测解析数据完整性*******************/
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
record.setState(StatusEnum.CONNECT_RESPONSE_FORMAT_ERROR.getSign());
|
|
|
- record.setStateContent(StatusEnum.CONNECT_RESPONSE_FORMAT_ERROR.getMsg());
|
|
|
- log.error("=========={}:{} ==>拉取短期修正数据失败 返回响应存在NULL ==========" ,integrationCompany.getName(),st.getStationCode());
|
|
|
+ record.setStateContent("解析短期修正数据失败");
|
|
|
+ log.error("=========={}:{} ==> 解析短期修正数据失败 ", integrationCompany.getName(), st.getStationCode());
|
|
|
}
|
|
|
|
|
|
|
|
|
if (result) {
|
|
|
- log.info("=========={}:{} ==> 拉取短期修正数据成功! ==========" ,integrationCompany.getName(),st.getStationCode());
|
|
|
- record.setState(QNHLEnum.REQUEST_SUCCESS.getSign());
|
|
|
- record.setStateContent(QNHLEnum.REQUEST_SUCCESS.getMsg());
|
|
|
+ log.info("=========={}:{} ==> 拉取短期修正数据成功! ==========", integrationCompany.getName(), st.getStationCode());
|
|
|
+ record.setState(StatusEnum.SUCCESS.getSign());
|
|
|
+ record.setStateContent(String.valueOf(list.size()));
|
|
|
boolean b = forecastDataService.saveOrUpdateBatch(aList);
|
|
|
- if(b){
|
|
|
+ if (b) {
|
|
|
File file = genFile(station);
|
|
|
- if(file!=null){
|
|
|
- isUpload = uploadFile(station.getStationCode() + "/" + file.getName(), file, station.getStationCode());
|
|
|
+ if (file != null) {
|
|
|
+
|
|
|
+ boolean flag = minioUtilService.bucketExists(bucketName);
|
|
|
+ if (flag) {
|
|
|
+ InputStream in = new FileInputStream(file);
|
|
|
+ //String fileName = "/" + station.getStationCode() + "/" + "DQ_" + DateUtil.format(DateUtil.beginOfDay(new Date()), "yyyyMMddHHmmss") + "0.RB";
|
|
|
+ String fileName = "/" + station.getStationCode() + "/" + file.getName();
|
|
|
+ minioUtilService.putObject(bucketName, fileName, in);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
-
|
|
|
+ record.setState(StatusEnum.RESPONSE_FAIL.getSign());
|
|
|
+ record.setStateContent(StatusEnum.RESPONSE_FAIL.getMsg());
|
|
|
+ log.error("=========={}:{} ==>拉取短期修正数据失败 响应码异常 ", integrationCompany.getName(), st.getStationCode());
|
|
|
}
|
|
|
} else {
|
|
|
record.setState(StatusEnum.CONNECT_RESPONSE_FORMAT_ERROR.getSign());
|
|
|
record.setStateContent(StatusEnum.CONNECT_RESPONSE_FORMAT_ERROR.getMsg());
|
|
|
- log.error("=========={}:{} ==>拉取短期修正数据失败 接收响应字符串非json格式 " ,integrationCompany.getName(),st.getStationCode());
|
|
|
+ log.error("=========={}:{} ==>拉取短期修正数据失败 接收响应字符串非json格式 ", integrationCompany.getName(), st.getStationCode());
|
|
|
}
|
|
|
} else {
|
|
|
record.setState(StatusEnum.CONNECT_RESPONSE_CONTENT_NULL.getSign());
|
|
|
record.setStateContent(StatusEnum.CONNECT_RESPONSE_CONTENT_NULL.getMsg());
|
|
|
- log.error("=========={}:{} ==> 拉取短期修正数据失败 返回响应内容为空 ==========" ,integrationCompany.getName(),st.getStationCode());
|
|
|
+ log.error("=========={}:{} ==> 拉取短期修正数据失败 返回响应内容为空 ==========", integrationCompany.getName(), st.getStationCode());
|
|
|
}
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
record.setState(StatusEnum.CONNECT_ERROR.getSign());
|
|
|
record.setStateContent(StatusEnum.CONNECT_ERROR.getMsg());
|
|
|
- log.error("=========={}:{} ==>请求短期修正数据失败 连接断开或请求超时 ==========",integrationCompany.getName(),st.getStationCode());
|
|
|
+ log.error("=========={}:{} ==>请求短期修正数据失败 连接断开或请求超时 ==========", integrationCompany.getName(), st.getStationCode());
|
|
|
e.printStackTrace();
|
|
|
|
|
|
}
|
|
@@ -260,16 +258,6 @@ public class PullCorrectDataForQNHL implements IPullInitCorrectData{
|
|
|
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public Boolean pullDQData(Station station) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public Boolean pullNWPData(Station station) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
/**
|
|
|
* 生成文件
|
|
@@ -278,7 +266,7 @@ public class PullCorrectDataForQNHL implements IPullInitCorrectData{
|
|
|
*/
|
|
|
public File genFile(Station station) {
|
|
|
|
|
|
- String vmsPath = SystermUtils.getResourceBasePath() + "/vms/DQAMEND.vm";
|
|
|
+ String vmsPath = SystermUtils.getResourceBasePath() + "/vms/DQ.vm";
|
|
|
File file = null;
|
|
|
Template template = this.velocityEngine.getTemplate(vmsPath);
|
|
|
if (template != null) {
|
|
@@ -288,40 +276,24 @@ public class PullCorrectDataForQNHL implements IPullInitCorrectData{
|
|
|
long startTime = DateUtil.beginOfDay(new Date()).getTime();
|
|
|
long endTime = DateUtil.offsetDay(DateUtil.beginOfDay(DateUtil.tomorrow()), station.getDays()).getTime();
|
|
|
List<ForecastData> aList = new ArrayList<>();
|
|
|
- aList = forecastDataService.findTimeByStation( station.getStationCode(), startTime, endTime);
|
|
|
+ aList = forecastDataService.findTimeByStation(station.getStationCode(), startTime, endTime);
|
|
|
aList.sort(Comparator.comparing(ForecastData::getForecastTime));
|
|
|
List<Map<String, Object>> vList = new ArrayList<>();
|
|
|
|
|
|
for (ForecastData a : aList) {
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
map.put("id", a.getId());
|
|
|
- map.put("forecastTime", DateUtil.format(new Date(a.getForecastTime()), "yyyyMMddHHmmss"));
|
|
|
+ map.put("stationName", station.getName());
|
|
|
+ map.put("forecastTime", DateUtil.format(new Date(a.getForecastTime()), "yyyy-MM-dd HH:mm:ss"));
|
|
|
map.put("fpValue", a.getFpValue() == null ? "-99" : a.getFpValue());
|
|
|
- map.put("fpValueAmend", a.getFpValueCorrect() == null ? "-99" : a.getFpValueCorrect());
|
|
|
- map.put("swr", a.getSwr() == null ? "-99" : a.getSwr());
|
|
|
- map.put("swrAmend", a.getSwrCorrect() == null ? "-99" : a.getSwrCorrect());
|
|
|
- map.put("directRadiation", a.getDirectRadiation() == null ? "-99" : a.getDirectRadiation());
|
|
|
- map.put("directRadiationAmend", a.getDirectRadiationCorrect() == null ? "-99" : a.getDirectRadiationCorrect());
|
|
|
- map.put("diffuseRadiation", a.getDiffuseRadiation() == null ? "-99" : a.getDiffuseRadiation());
|
|
|
- map.put("diffuseRadiationAmend", a.getDiffuseRadiationCorrect() == null ? "-99" : a.getDiffuseRadiationCorrect());
|
|
|
- map.put("windspeed", a.getWindSpeed() == null ? "-99" : a.getWindSpeed());
|
|
|
- map.put("windspeedAmend", a.getWindSpeedCorrect() == null ? "-99" : a.getWindSpeedCorrect());
|
|
|
- map.put("windDir", a.getWindDir() == null ? "-99" : a.getWindDir());
|
|
|
- map.put("windDirAmend", a.getWindDirCorrect() == null ? "-99" : a.getWindDirCorrect());
|
|
|
- map.put("temperature", a.getTemperature() == null ? "-99" : a.getTemperature());
|
|
|
- map.put("temperatureAmend", a.getTemperatureCorrect() == null ? "-99" : a.getTemperatureCorrect());
|
|
|
- map.put("humidity", a.getHumidity() == null ? "-99" : a.getHumidity());
|
|
|
- map.put("humidityAmend", a.getHumidityCorrect() == null ? "-99" : a.getHumidityCorrect());
|
|
|
- map.put("pressure", a.getPressure() == null ? "-99" : a.getPressure());
|
|
|
- map.put("pressureAmend", a.getPressureCorrect() == null ? "-99" : a.getPressureCorrect());
|
|
|
vList.add(map);
|
|
|
|
|
|
}
|
|
|
|
|
|
velocityContext = new VelocityContext();
|
|
|
- velocityContext.put("sign", "signCode");
|
|
|
+ velocityContext.put("stationName", station.getName());
|
|
|
|
|
|
- velocityContext.put("uploadTime", DateUtil.format(new Date(), "yyyy-MM-dd"));
|
|
|
+ velocityContext.put("date", DateUtil.format(new Date(), "yyyy-MM-dd"));
|
|
|
velocityContext.put("vList", vList);
|
|
|
|
|
|
writer = new StringWriter();
|
|
@@ -334,7 +306,7 @@ public class PullCorrectDataForQNHL implements IPullInitCorrectData{
|
|
|
fileUrl.mkdirs();
|
|
|
}
|
|
|
|
|
|
- String fileName = "AMENDFORECAST_" + DateUtil.format(new Date(), "yyyyMMddHHmm") + ".RB";
|
|
|
+ String fileName = "DQ_" + DateUtil.format(DateUtil.beginOfDay(new Date()), "yyyyMMddHHmmss") + "0.RB";
|
|
|
|
|
|
file = new File(fUrl + File.separatorChar + fileName);
|
|
|
|
|
@@ -349,11 +321,11 @@ public class PullCorrectDataForQNHL implements IPullInitCorrectData{
|
|
|
os.write(writer.toString().getBytes("UTF-8"));
|
|
|
os.flush();
|
|
|
} else {
|
|
|
- log.warn(station.getStationCode() + " 生成minlo文件失败");
|
|
|
+ log.warn(station.getStationCode() + " 生成DQ文件失败");
|
|
|
}
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
- log.warn(station.getStationCode() + " 创建minlo文件失败");
|
|
|
+ log.warn(station.getStationCode() + " 创建DQ文件失败");
|
|
|
} finally {
|
|
|
if (os != null) {
|
|
|
try {
|
|
@@ -369,57 +341,6 @@ public class PullCorrectDataForQNHL implements IPullInitCorrectData{
|
|
|
return file;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 上传文件
|
|
|
- *
|
|
|
- * @return
|
|
|
- */
|
|
|
- public boolean uploadFile(String filePath, File file, String stationCode) {
|
|
|
- boolean status = false;
|
|
|
- try {
|
|
|
- MinioClient minioClient = new MinioClient(minloHost, minloUser, minloPwd, false);
|
|
|
-
|
|
|
- // 检查存储桶是否已经存在
|
|
|
- boolean isExist = minioClient.bucketExists("forcast");
|
|
|
- if (!isExist) {
|
|
|
- // 创建一个名为asiatrip的存储桶,用于存储照片的zip文件。
|
|
|
- minioClient.makeBucket("forcast");
|
|
|
- }
|
|
|
-
|
|
|
- // 使用putObject上传一个文件到存储桶中。
|
|
|
- minioClient.putObject("forcast", filePath, FileUtil.getInputStream(file), new PutObjectOptions(file.length(), -1));
|
|
|
-
|
|
|
- Map<String, Object> parmer = new HashMap<>();
|
|
|
- parmer.put("stationCode", stationCode);
|
|
|
- parmer.put("fileName", file.getName());
|
|
|
- String s = JSONUtil.toJsonStr(parmer);
|
|
|
- String response = "";
|
|
|
-
|
|
|
- response = HttpUtil.post(logurl, parmer);
|
|
|
- if (StringUtils.isNotEmpty(response)) {
|
|
|
- boolean isJson = JSONUtil.isJsonObj(response);
|
|
|
- if (isJson) {
|
|
|
- JSONObject jsonObject = JSONUtil.parseObj(response);
|
|
|
- String code = jsonObject.getStr("code");
|
|
|
- if (code.equals("0")) {
|
|
|
- status = true;
|
|
|
- } else {
|
|
|
- log.warn(stationCode + " minlo上送日志响应不为0");
|
|
|
- }
|
|
|
- } else {
|
|
|
- log.warn(stationCode + " minlo上送日志响应格式不对");
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- log.error("文件上传存储服务器失败" + filePath, e);
|
|
|
- }
|
|
|
-
|
|
|
- return status;
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
/**
|
|
|
* 光伏数据解析
|
|
@@ -432,41 +353,37 @@ public class PullCorrectDataForQNHL implements IPullInitCorrectData{
|
|
|
|
|
|
String[] content = data.split("\n");
|
|
|
|
|
|
-
|
|
|
- String dateStr = content[0].split("'")[1];
|
|
|
-
|
|
|
List<ForecastData> list = new ArrayList<>();
|
|
|
|
|
|
-
|
|
|
for (int i = 3; i < content.length - 1; i++) {
|
|
|
|
|
|
ForecastData inForecastPowerShortTerm = new ForecastData();
|
|
|
String column = content[i];
|
|
|
-
|
|
|
String[] datas = column.split(CommonStant.SPACE1_CONSTANT);
|
|
|
-
|
|
|
inForecastPowerShortTerm.setForecastTime(DateUtil.parse(datas[2], "yyyyMMddHHmmss").getTime());
|
|
|
|
|
|
- inForecastPowerShortTerm.setFpValueCorrect(isNumber(datas[3]));
|
|
|
|
|
|
- inForecastPowerShortTerm.setSwrCorrect(isNumber(datas[4]));
|
|
|
+ inForecastPowerShortTerm.setFpValueCorrect(isNumberOrNull(datas[3]));
|
|
|
+
|
|
|
+ inForecastPowerShortTerm.setSwrCorrect(isNumberOrNull(datas[4]));
|
|
|
|
|
|
- inForecastPowerShortTerm.setDirectRadiationCorrect(isNumber(datas[5]));
|
|
|
+ inForecastPowerShortTerm.setDirectRadiationCorrect(isNumberOrNull(datas[5]));
|
|
|
|
|
|
- inForecastPowerShortTerm.setDiffuseRadiationCorrect(isNumber(datas[6]));
|
|
|
+ inForecastPowerShortTerm.setDiffuseRadiationCorrect(isNumberOrNull(datas[6]));
|
|
|
|
|
|
- inForecastPowerShortTerm.setTemperatureCorrect(isNumber(datas[7]));
|
|
|
+ inForecastPowerShortTerm.setTemperatureCorrect(isNumberOrNull(datas[7]));
|
|
|
|
|
|
- inForecastPowerShortTerm.setHumidityCorrect(isNumber(datas[8]));
|
|
|
+ inForecastPowerShortTerm.setHumidityCorrect(isNumberOrNull(datas[8]));
|
|
|
|
|
|
- inForecastPowerShortTerm.setPressureCorrect(isNumber(datas[9]));
|
|
|
+ inForecastPowerShortTerm.setPressureCorrect(isNumberOrNull(datas[9]));
|
|
|
|
|
|
- inForecastPowerShortTerm.setWindSpeedCorrect(isNumber(datas[10]));
|
|
|
+ inForecastPowerShortTerm.setWindSpeedCorrect(isNumberOrNull(datas[10]));
|
|
|
|
|
|
- inForecastPowerShortTerm.setWindDirCorrect(isNumber(datas[11]));
|
|
|
+ inForecastPowerShortTerm.setWindDirCorrect(isNumberOrNull(datas[11]));
|
|
|
|
|
|
inForecastPowerShortTerm.setCorrectTime(LocalDateTime.now());
|
|
|
|
|
|
+
|
|
|
list.add(inForecastPowerShortTerm);
|
|
|
}
|
|
|
|
|
@@ -485,71 +402,125 @@ public class PullCorrectDataForQNHL implements IPullInitCorrectData{
|
|
|
|
|
|
String[] content = data.split("\n");
|
|
|
|
|
|
+ List<ForecastData> list = new ArrayList<>();
|
|
|
|
|
|
- String dateStr = content[0].split("'")[1];
|
|
|
+ for (int i = 3; i < content.length - 1; i++) {
|
|
|
|
|
|
- List<ForecastData> list = new ArrayList<>();
|
|
|
+ ForecastData inForecastPowerShortTerm = new ForecastData();
|
|
|
+ String column = content[i];
|
|
|
|
|
|
+ String[] datas = column.split(CommonStant.SPACE1_CONSTANT);
|
|
|
|
|
|
- if (content[1].contains("CorrectForecast")) {
|
|
|
+ inForecastPowerShortTerm.setForecastTime(DateUtil.parse(datas[2], "yyyyMMddHHmmss").getTime());
|
|
|
|
|
|
+ inForecastPowerShortTerm.setFpValueCorrect(isNumberOrNull(datas[3]));
|
|
|
|
|
|
- for (int i = 3; i < content.length - 1; i++) {
|
|
|
+ inForecastPowerShortTerm.setWindSpeedCorrect(isNumberOrNull(datas[4]));
|
|
|
|
|
|
- ForecastData inForecastPowerShortTerm = new ForecastData();
|
|
|
- String column = content[i];
|
|
|
+ inForecastPowerShortTerm.setWindDirCorrect(isNumberOrNull(datas[5]));
|
|
|
|
|
|
- String[] datas = column.split(CommonStant.SPACE1_CONSTANT);
|
|
|
+ inForecastPowerShortTerm.setTemperatureCorrect(isNumberOrNull(datas[6]));
|
|
|
|
|
|
- inForecastPowerShortTerm.setForecastTime(DateUtil.parse(datas[2], "yyyyMMddHHmmss").getTime());
|
|
|
+ inForecastPowerShortTerm.setHumidityCorrect(isNumberOrNull(datas[7]));
|
|
|
|
|
|
- inForecastPowerShortTerm.setFpValueCorrect(isNumber(datas[3]));
|
|
|
+ inForecastPowerShortTerm.setPressureCorrect(isNumberOrNull(datas[8]));
|
|
|
|
|
|
- inForecastPowerShortTerm.setWindSpeedCorrect(isNumber(datas[4]));
|
|
|
+ inForecastPowerShortTerm.setCorrectTime(LocalDateTime.now());
|
|
|
|
|
|
- inForecastPowerShortTerm.setWindDirCorrect(isNumber(datas[5]));
|
|
|
+ list.add(inForecastPowerShortTerm);
|
|
|
+ }
|
|
|
|
|
|
- inForecastPowerShortTerm.setTemperatureCorrect(isNumber(datas[6]));
|
|
|
|
|
|
- inForecastPowerShortTerm.setHumidityCorrect(isNumber(datas[7]));
|
|
|
+ return list;
|
|
|
|
|
|
- inForecastPowerShortTerm.setPressureCorrect(isNumber(datas[8]));
|
|
|
+ }
|
|
|
|
|
|
- inForecastPowerShortTerm.setCorrectTime(LocalDateTime.now());
|
|
|
+ /**
|
|
|
+ * 判断是否是NULL 和是否是数值
|
|
|
+ *
|
|
|
+ * @param data
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public BigDecimal isNumberOrNull(String data) {
|
|
|
+ BigDecimal bigDecimal = new BigDecimal("-99");
|
|
|
+ if (!data.contains("null") && !data.contains("NULL")) {
|
|
|
|
|
|
- list.add(inForecastPowerShortTerm);
|
|
|
+ Pattern pattern = Pattern.compile("-[0-9]+(.[0-9]+)?|[0-9]+(.[0-9]+)?");
|
|
|
+ Matcher isNum = pattern.matcher(data);
|
|
|
+ try {
|
|
|
+ if (isNum.matches()) {
|
|
|
+ bigDecimal = new BigDecimal(data).setScale(2, BigDecimal.ROUND_DOWN);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
}
|
|
|
- } else {
|
|
|
- log.error("解析一体化修正短期异常:{}", "标识错误不为<CorrectForecast>");
|
|
|
|
|
|
}
|
|
|
|
|
|
+ return bigDecimal;
|
|
|
+ }
|
|
|
|
|
|
- return list;
|
|
|
|
|
|
+ @Override
|
|
|
+ public Boolean pullDQData(Station station) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Boolean pullNWPData(Station station) {
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 判断是否是数值
|
|
|
+ * 上传文件
|
|
|
*
|
|
|
- * @param data
|
|
|
* @return
|
|
|
*/
|
|
|
- public BigDecimal isNumber(String data) {
|
|
|
- BigDecimal bigDecimal = null;
|
|
|
- Pattern pattern = Pattern.compile("-[0-9]+(.[0-9]+)?|[0-9]+(.[0-9]+)?");
|
|
|
- Matcher isNum = pattern.matcher(data);
|
|
|
+ /* public boolean uploadFile(String filePath, File file, String stationCode) {
|
|
|
+ boolean status = false;
|
|
|
try {
|
|
|
- if (isNum.matches()) {
|
|
|
- bigDecimal = new BigDecimal(data).setScale(2, BigDecimal.ROUND_DOWN);
|
|
|
+ MinioClient minioClient = new MinioClient(minloHost, minloUser, minloPwd, false);
|
|
|
+
|
|
|
+ // 检查存储桶是否已经存在
|
|
|
+ boolean isExist = minioClient.bucketExists("forcast");
|
|
|
+ if (!isExist) {
|
|
|
+ // 创建一个名为asiatrip的存储桶,用于存储照片的zip文件。
|
|
|
+ minioClient.makeBucket("forcast");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 使用putObject上传一个文件到存储桶中。
|
|
|
+ minioClient.putObject("forcast", filePath, FileUtil.getInputStream(file), new PutObjectOptions(file.length(), -1));
|
|
|
+
|
|
|
+ Map<String, Object> parmer = new HashMap<>();
|
|
|
+ parmer.put("stationCode", stationCode);
|
|
|
+ parmer.put("fileName", file.getName());
|
|
|
+ String s = JSONUtil.toJsonStr(parmer);
|
|
|
+ String response = "";
|
|
|
+
|
|
|
+ response = HttpUtil.post(logurl, parmer);
|
|
|
+ if (StringUtils.isNotEmpty(response)) {
|
|
|
+ boolean isJson = JSONUtil.isJsonObj(response);
|
|
|
+ if (isJson) {
|
|
|
+ JSONObject jsonObject = JSONUtil.parseObj(response);
|
|
|
+ String code = jsonObject.getStr("code");
|
|
|
+ if (code.equals("0")) {
|
|
|
+ status = true;
|
|
|
+ } else {
|
|
|
+ log.warn(stationCode + " minlo上送日志响应不为0");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ log.warn(stationCode + " minlo上送日志响应格式不对");
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
+ log.error("文件上传存储服务器失败" + filePath, e);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- return bigDecimal;
|
|
|
- }
|
|
|
+ return status;
|
|
|
+ }*/
|
|
|
|
|
|
|
|
|
}
|