瀏覽代碼

一体化云端:
因为nwp数据不再试从当天0点开始,所以修改nwp和dq的解析方式

zhangchenglong 1 年之前
父節點
當前提交
f0ca2b6591
共有 1 個文件被更改,包括 22 次插入14 次删除
  1. 22 14
      in-cloud/src/main/java/com/jiayue/insu/incloud/pulldata/PullInitData.java

+ 22 - 14
in-cloud/src/main/java/com/jiayue/insu/incloud/pulldata/PullInitData.java

@@ -190,10 +190,17 @@ public class PullInitData implements IPullInitForecastData{
     }
     }
 
 
 
 
+    /**
+     * 解析原始dq、nwp文件并返回ForecastDataList
+     * @param dqFile
+     * @param nwpFile
+     * @param station
+     * @param localDateTime
+     * @return
+     */
     public List<ForecastData> fileAnalysis(File dqFile, File nwpFile, Station station, LocalDateTime localDateTime) {
     public List<ForecastData> fileAnalysis(File dqFile, File nwpFile, Station station, LocalDateTime localDateTime) {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         List<ForecastData> aioList = new ArrayList<>();
         List<ForecastData> aioList = new ArrayList<>();
-        List<ForecastData> resultList = new ArrayList<>();
         boolean jx = true;
         boolean jx = true;
         if (dqFile.renameTo(dqFile)) {
         if (dqFile.renameTo(dqFile)) {
             InputStreamReader dqRead = null;
             InputStreamReader dqRead = null;
@@ -203,6 +210,7 @@ public class PullInitData implements IPullInitForecastData{
             try {
             try {
                 dqRead = new InputStreamReader(new FileInputStream(dqFile), "utf-8");
                 dqRead = new InputStreamReader(new FileInputStream(dqFile), "utf-8");
                 dqBufferedReader = new BufferedReader(dqRead);
                 dqBufferedReader = new BufferedReader(dqRead);
+                // 循环解析dq文件并放入aioList
                 while ((stringLine = dqBufferedReader.readLine()) != null) {
                 while ((stringLine = dqBufferedReader.readLine()) != null) {
                     String[] string_arr = stringLine.split("\t");
                     String[] string_arr = stringLine.split("\t");
                     if (string_arr.length == 4 && string_arr[0].startsWith("#")) {
                     if (string_arr.length == 4 && string_arr[0].startsWith("#")) {
@@ -237,7 +245,7 @@ public class PullInitData implements IPullInitForecastData{
                     String lineTxt;
                     String lineTxt;
                     BigDecimal nwpDirectRadiation = new BigDecimal(0.7); //直接辐射
                     BigDecimal nwpDirectRadiation = new BigDecimal(0.7); //直接辐射
                     BigDecimal nwpDiffuseRadiation = new BigDecimal(0.3); //散接辐射
                     BigDecimal nwpDiffuseRadiation = new BigDecimal(0.3); //散接辐射
-
+                    // 循环解析nwp文件,并将nwp数据存入对应时间的aioList中(就是将短期和nwp数据合并放入一个bean中)
                     while ((lineTxt = bufferedReaderNwp.readLine()) != null) {
                     while ((lineTxt = bufferedReaderNwp.readLine()) != null) {
                         //NWP文件按照Tab方式截取
                         //NWP文件按照Tab方式截取
                         String[] datas = lineTxt.split("\t");
                         String[] datas = lineTxt.split("\t");
@@ -246,16 +254,16 @@ public class PullInitData implements IPullInitForecastData{
                                 Long finalTime = sdf.parse(datas[5]).getTime();
                                 Long finalTime = sdf.parse(datas[5]).getTime();
                                 List<ForecastData> filterAios = aioList.stream().filter(a -> a.getForecastTime().longValue() == finalTime.longValue()).collect(Collectors.toList());
                                 List<ForecastData> filterAios = aioList.stream().filter(a -> a.getForecastTime().longValue() == finalTime.longValue()).collect(Collectors.toList());
                                 if (CollectionUtil.isNotEmpty(filterAios)) {
                                 if (CollectionUtil.isNotEmpty(filterAios)) {
-                                    ForecastData aio = filterAios.get(0);
-                                    aio.setTemperature(new BigDecimal(datas[6]).subtract(new BigDecimal(273.15)).setScale(2, RoundingMode.HALF_UP));//温度
-                                    aio.setSwr(new BigDecimal(datas[9]).setScale(2, RoundingMode.HALF_UP));//短波辐射(相当于总辐射)
-                                    aio.setPressure(new BigDecimal(datas[8]).setScale(2, RoundingMode.HALF_UP));//地表气压
-                                    aio.setHumidity(new BigDecimal(datas[7]).setScale(2, RoundingMode.HALF_UP));//2m相对湿度
-                                    aio.setDiffuseRadiation(new BigDecimal(datas[9]).multiply(nwpDiffuseRadiation).setScale(2, RoundingMode.HALF_UP));//散接辐射
-                                    aio.setDirectRadiation(new BigDecimal(datas[9]).multiply(nwpDirectRadiation).setScale(2, RoundingMode.HALF_UP));//直接辐射
-                                    aio.setWindSpeed(new BigDecimal(datas[19]).setScale(2, RoundingMode.HALF_UP));
-                                    aio.setWindDir(new BigDecimal(datas[27]).setScale(2, RoundingMode.HALF_UP));
-                                    resultList.add(aio);
+                                    filterAios.get(0).setTemperature(new BigDecimal(datas[6]).subtract(new BigDecimal(273.15)).setScale(2, RoundingMode.HALF_UP));//温度
+                                    filterAios.get(0).setSwr(new BigDecimal(datas[9]).setScale(2, RoundingMode.HALF_UP));//短波辐射(相当于总辐射)
+                                    filterAios.get(0).setPressure(new BigDecimal(datas[8]).setScale(2, RoundingMode.HALF_UP));//地表气压
+                                    filterAios.get(0).setHumidity(new BigDecimal(datas[7]).setScale(2, RoundingMode.HALF_UP));//2m相对湿度
+                                    filterAios.get(0).setDiffuseRadiation(new BigDecimal(datas[9]).multiply(nwpDiffuseRadiation).setScale(2, RoundingMode.HALF_UP));//散接辐射
+                                    filterAios.get(0).setDirectRadiation(new BigDecimal(datas[9]).multiply(nwpDirectRadiation).setScale(2, RoundingMode.HALF_UP));//直接辐射
+                                    filterAios.get(0).setWindSpeed(new BigDecimal(datas[19]).setScale(2, RoundingMode.HALF_UP));
+                                    filterAios.get(0).setWindDir(new BigDecimal(datas[27]).setScale(2, RoundingMode.HALF_UP));
+                                }else{
+                                    log.error(finalTime+"此时刻没有预测数据");
                                 }
                                 }
                             }
                             }
                         }
                         }
@@ -270,8 +278,8 @@ public class PullInitData implements IPullInitForecastData{
         }
         }
 
 
         if (jx) {
         if (jx) {
-            resultList.sort(Comparator.comparing(ForecastData::getForecastTime));
-            return resultList;
+            aioList.sort(Comparator.comparing(ForecastData::getForecastTime));
+            return aioList;
         } else {
         } else {
             return null;
             return null;
         }
         }