|
@@ -1,8 +1,11 @@
|
|
|
package com.jiayue.ipp.idp.service.impl.an;
|
|
|
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.jiayue.ipfcst.common.core.util.DateMomentUtil;
|
|
|
+import com.jiayue.ipfcst.common.core.util.DateTimeUtil;
|
|
|
import com.jiayue.ipp.common.data.entity.ForecastPowerShortTerm;
|
|
|
import com.jiayue.ipp.common.data.entity.ForecastPowerShortTermHis;
|
|
|
import com.jiayue.ipp.common.data.entity.an.ParsingDqInfo;
|
|
@@ -28,12 +31,10 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import java.io.File;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
-import java.time.Instant;
|
|
|
-import java.time.LocalDate;
|
|
|
-import java.time.LocalDateTime;
|
|
|
-import java.time.ZoneId;
|
|
|
+import java.time.*;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
@@ -73,83 +74,91 @@ public class ParsingDqInfoServiceImpl extends ServiceImpl<ParsingDqInfoMapper, P
|
|
|
if (!parsingDqInfos.isEmpty()) {
|
|
|
ParsingDqInfo parsingDqInfo = parsingDqInfos.get(0);
|
|
|
|
|
|
- //判断文件名是否符合配置
|
|
|
- if (file.getName().contains(parsingDqInfo.getFileName())) {
|
|
|
-
|
|
|
- List<String> fileContent = FileUtil.getFileContent(file);
|
|
|
- if (parsingDqInfo.getDataType().equals(FieldUtil.MULTI)) {
|
|
|
- List<BigDecimal> bigDecimals;
|
|
|
- if (parsingDqInfo.getFpValue() != null) ;
|
|
|
- bigDecimals = parsingFpValue(parsingDqInfo.getFpValue(), fileContent);
|
|
|
-
|
|
|
- if (bigDecimals.size() > 0) {
|
|
|
-
|
|
|
- LocalDate genDate = parsingGenDate(parsingDqInfo.getGenDate(), fileContent);
|
|
|
- Long forecastTime = parsingForecastTime(parsingDqInfo.getForecastTime(), fileContent);
|
|
|
-
|
|
|
- if (forecastTime != 0l) {
|
|
|
- int ago = -1;
|
|
|
- for (BigDecimal bigDecimal : bigDecimals) {
|
|
|
- LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(forecastTime), ZoneId.systemDefault());
|
|
|
- forecastTime += Constant.INTERVALTIME;
|
|
|
- int n = ago / 96;
|
|
|
- if (n > 0) {
|
|
|
- ForecastPowerShortTermHis forecastPowerShortTermHis = new ForecastPowerShortTermHis();
|
|
|
- forecastPowerShortTermHis.setGenDate(genDate);
|
|
|
- forecastPowerShortTermHis.setStationCode(parsingUrl.getStationCode());
|
|
|
- forecastPowerShortTermHis.setAbleValue(bigDecimal);
|
|
|
- forecastPowerShortTermHis.setForecastTime(localDateTime);
|
|
|
- forecastPowerShortTermHis.setForecastHowLongAgo(n);
|
|
|
- forecastPowerShortTermHis.setForecastManufactor(parsingUrl.getForecastManufactor());
|
|
|
- forecastPowerShortTermHisList.add(forecastPowerShortTermHis);
|
|
|
+ //判断文件名是否符合配置
|
|
|
+ if (file.getName().contains(parsingDqInfo.getFileName())) {
|
|
|
+
|
|
|
+ List<String> fileContent = FileUtil.getFileContent(file);
|
|
|
+ if (parsingDqInfo.getDataType().equals(FieldUtil.MULTI)) {
|
|
|
+ List<BigDecimal> bigDecimals;
|
|
|
+ if (parsingDqInfo.getFpValue() != null) ;
|
|
|
+ bigDecimals = parsingFpValue(parsingDqInfo.getFpValue(), fileContent);
|
|
|
+
|
|
|
+ if (bigDecimals.size() > 0) {
|
|
|
+
|
|
|
+ LocalDate genDate = parsingGenDate(parsingDqInfo.getGenDate(), fileContent);
|
|
|
+ Long forecastTime = parsingForecastTime(parsingDqInfo.getForecastTime(), fileContent);
|
|
|
+ long secondDayTime = com.jiayue.ipp.idp.util.DateMomentUtil.getDayStartTime(System.currentTimeMillis())+1000*60*60*24;
|
|
|
+ if (forecastTime==secondDayTime){
|
|
|
+ if (forecastTime != 0l) {
|
|
|
+ Long systemTime = System.currentTimeMillis();
|
|
|
+ for (BigDecimal bigDecimal : bigDecimals) {
|
|
|
+ Date forecastDate = new Date(forecastTime);
|
|
|
+ ForecastPowerShortTermHis forecastPowerShortTermHis = new ForecastPowerShortTermHis();
|
|
|
+ forecastPowerShortTermHis.setGenDate(genDate);
|
|
|
+ forecastPowerShortTermHis.setStationCode(parsingUrl.getStationCode());
|
|
|
+ forecastPowerShortTermHis.setAbleValue(bigDecimal);
|
|
|
+ forecastPowerShortTermHis.setForecastTime(forecastDate);
|
|
|
+ forecastPowerShortTermHis.setForecastHowLongAgo(DateMomentUtil.getDaysBetweenTwoDate(systemTime,forecastTime));
|
|
|
+ forecastPowerShortTermHis.setForecastManufactor(parsingUrl.getForecastManufactor());
|
|
|
+ forecastPowerShortTermHisList.add(forecastPowerShortTermHis);
|
|
|
+
|
|
|
+ ForecastPowerShortTerm forecastPowerShortTerm = new ForecastPowerShortTerm();
|
|
|
+ forecastPowerShortTerm.setForecastTime(forecastDate);
|
|
|
+ forecastPowerShortTerm.setStationCode(parsingUrl.getStationCode());
|
|
|
+ forecastPowerShortTerm.setFpValue(bigDecimal);
|
|
|
+ forecastPowerShortTerm.setGenDate(forecastDate);
|
|
|
+ forecastPowerShortTerm.setForecastManufactor(parsingUrl.getForecastManufactor());
|
|
|
+ forecastPowerShortTermList.add(forecastPowerShortTerm);
|
|
|
+
|
|
|
+ forecastTime += Constant.INTERVALTIME;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 保存短期实时
|
|
|
+ Date startTime = forecastPowerShortTermList.get(0).getForecastTime();
|
|
|
+ Date endTime = forecastPowerShortTermList.get(forecastPowerShortTermList.size() - 1).getForecastTime();
|
|
|
+ LambdaQueryWrapper<ForecastPowerShortTerm> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.eq(ForecastPowerShortTerm::getStationCode, parsingUrl.getStationCode());
|
|
|
+ lambdaQueryWrapper.eq(ForecastPowerShortTerm::getForecastManufactor, parsingUrl.getForecastManufactor());
|
|
|
+ lambdaQueryWrapper.between(ForecastPowerShortTerm::getForecastTime, startTime, endTime);
|
|
|
+ forecastPowerShortTermService.remove(lambdaQueryWrapper);
|
|
|
+ forecastPowerShortTermService.saveBatch(forecastPowerShortTermList);
|
|
|
+
|
|
|
+ // 保存短期历史
|
|
|
+// LocalDate today = LocalDate.now();
|
|
|
+ LambdaQueryWrapper<ForecastPowerShortTermHis> forecastPowerShortTermHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ forecastPowerShortTermHisLambdaQueryWrapper.eq(ForecastPowerShortTermHis::getStationCode, parsingUrl.getStationCode());
|
|
|
+ forecastPowerShortTermHisLambdaQueryWrapper.eq(ForecastPowerShortTermHis::getForecastManufactor, parsingUrl.getForecastManufactor());
|
|
|
+ forecastPowerShortTermHisLambdaQueryWrapper.eq(ForecastPowerShortTermHis::getGenDate, DateUtil.format(new Date(),"yyyy-MM-dd"));
|
|
|
+ forecastPowerShortTermHisService.remove(forecastPowerShortTermHisLambdaQueryWrapper);
|
|
|
+ forecastPowerShortTermHisService.saveBatch(forecastPowerShortTermHisList);
|
|
|
+
|
|
|
+
|
|
|
+ log.info("解析DQ文件:{} 成功! O(∩_∩)O", file.getName());
|
|
|
+ parsingStatus = FileTypeEnum.DQ.name();
|
|
|
+ } else {
|
|
|
+ parsingStatus += "解析DQ文件时间错误";
|
|
|
+ log.error("解析DQ文件时间错误");
|
|
|
}
|
|
|
-
|
|
|
- ForecastPowerShortTerm forecastPowerShortTerm = new ForecastPowerShortTerm();
|
|
|
- forecastPowerShortTerm.setForecastTime(localDateTime);
|
|
|
- forecastPowerShortTerm.setStationCode(parsingUrl.getStationCode());
|
|
|
- forecastPowerShortTerm.setFpValue(bigDecimal);
|
|
|
- forecastPowerShortTerm.setGenDate(genDate);
|
|
|
- forecastPowerShortTerm.setForecastManufactor(parsingUrl.getForecastManufactor());
|
|
|
- forecastPowerShortTermList.add(forecastPowerShortTerm);
|
|
|
-
|
|
|
- ago++;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ parsingStatus += "dq文件里日期不对";
|
|
|
+ log.info("dq文件里日期不对");
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- LocalDate today = LocalDate.now();
|
|
|
- LambdaQueryWrapper<ForecastPowerShortTermHis> forecastPowerShortTermHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- forecastPowerShortTermHisLambdaQueryWrapper.eq(ForecastPowerShortTermHis::getStationCode, parsingUrl.getStationCode());
|
|
|
- forecastPowerShortTermHisLambdaQueryWrapper.between(ForecastPowerShortTermHis::getGenDate, today.atStartOfDay(), today);
|
|
|
- forecastPowerShortTermHisService.remove(forecastPowerShortTermHisLambdaQueryWrapper);
|
|
|
- forecastPowerShortTermHisService.saveBatch(forecastPowerShortTermHisList);
|
|
|
-
|
|
|
-
|
|
|
- LocalDateTime startTime = forecastPowerShortTermList.get(0).getForecastTime();
|
|
|
- LocalDateTime endTime = forecastPowerShortTermList.get(forecastPowerShortTermList.size() - 1).getForecastTime();
|
|
|
- LambdaQueryWrapper<ForecastPowerShortTerm> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- lambdaQueryWrapper.eq(ForecastPowerShortTerm::getStationCode, parsingUrl.getStationCode());
|
|
|
- lambdaQueryWrapper.between(ForecastPowerShortTerm::getForecastTime, startTime, endTime);
|
|
|
- forecastPowerShortTermService.remove(lambdaQueryWrapper);
|
|
|
- forecastPowerShortTermService.saveBatch(forecastPowerShortTermList);
|
|
|
-
|
|
|
-
|
|
|
- log.info("解析DQ文件:{} 成功! O(∩_∩)O", file.getName());
|
|
|
- parsingStatus = FileTypeEnum.DQ.name();
|
|
|
} else {
|
|
|
- parsingStatus += "解析DQ文件时间错误";
|
|
|
- log.error("解析DQ文件时间错误");
|
|
|
+ parsingStatus += "解析短期文件无数据";
|
|
|
+ log.error("解析短期文件无数据");
|
|
|
}
|
|
|
-
|
|
|
} else {
|
|
|
- parsingStatus += "解析短期文件无数据";
|
|
|
- log.error("解析短期文件无数据");
|
|
|
+ parsingStatus += "dq暂无单行解析方式";
|
|
|
+ log.info("dq暂无单行解析方式");
|
|
|
}
|
|
|
- } else {
|
|
|
- parsingStatus += "dq暂无单行解析方式";
|
|
|
- log.info("dq暂无单行解析方式");
|
|
|
}
|
|
|
-
|
|
|
- }
|
|
|
+// }
|
|
|
+// else{
|
|
|
+// parsingStatus += "dq文件里日期不对";
|
|
|
+// log.info("dq文件里日期不对");
|
|
|
+// }
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
parsingStatus += "解析短期数据失败";
|