yuanhao 3 年之前
父節點
當前提交
9e35c80fc1
共有 22 個文件被更改,包括 628 次插入20 次删除
  1. 13 0
      in-cloud/src/main/java/com/jiayue/insu/incloud/constants/CommonStant.java
  2. 4 0
      in-cloud/src/main/java/com/jiayue/insu/incloud/constants/enums/CommonEnum.java
  3. 39 0
      in-cloud/src/main/java/com/jiayue/insu/incloud/constants/enums/StatusEnum.java
  4. 59 0
      in-cloud/src/main/java/com/jiayue/insu/incloud/constants/vo/FileCreateLog.java
  5. 18 3
      in-cloud/src/main/java/com/jiayue/insu/incloud/controller/TestController.java
  6. 87 0
      in-cloud/src/main/java/com/jiayue/insu/incloud/entity/ForecastData.java
  7. 8 8
      in-cloud/src/main/java/com/jiayue/insu/incloud/entity/Record.java
  8. 21 0
      in-cloud/src/main/java/com/jiayue/insu/incloud/job/data/pull/ZGHpullDataJob.java
  9. 11 0
      in-cloud/src/main/java/com/jiayue/insu/incloud/mapper/ForecastDataMapper.java
  10. 9 0
      in-cloud/src/main/java/com/jiayue/insu/incloud/mapper/QuartzMapper.java
  11. 9 0
      in-cloud/src/main/java/com/jiayue/insu/incloud/mapper/RecordMapper.java
  12. 3 7
      in-cloud/src/main/java/com/jiayue/insu/incloud/pulldata/IPullInitForecastData.java
  13. 270 0
      in-cloud/src/main/java/com/jiayue/insu/incloud/pulldata/PullCorrectData.java
  14. 1 1
      in-cloud/src/main/java/com/jiayue/insu/incloud/pushdata/IPushInitForecastData.java
  15. 0 1
      in-cloud/src/main/java/com/jiayue/insu/incloud/pushdata/PushDataForQNHL.java
  16. 10 0
      in-cloud/src/main/java/com/jiayue/insu/incloud/service/ForecastDataService.java
  17. 9 0
      in-cloud/src/main/java/com/jiayue/insu/incloud/service/QuartzService.java
  18. 9 0
      in-cloud/src/main/java/com/jiayue/insu/incloud/service/RecordService.java
  19. 13 0
      in-cloud/src/main/java/com/jiayue/insu/incloud/service/impl/ForecastDataServiceImpl.java
  20. 13 0
      in-cloud/src/main/java/com/jiayue/insu/incloud/service/impl/QuartzServiceImpl.java
  21. 16 0
      in-cloud/src/main/java/com/jiayue/insu/incloud/service/impl/RecordServiceImpl.java
  22. 6 0
      in-cloud/src/main/resources/bootstrap.yml

+ 13 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/constants/CommonStant.java

@@ -0,0 +1,13 @@
+package com.jiayue.insu.incloud.constants;
+
+public interface CommonStant {
+
+    /**
+     * 日志类型:下拉
+     */
+    String RECORD_TYPE_PULL = "PULL";
+    /**
+     * 日志类型:推送
+     */
+    String RECORD_TYPE_PUSH = "PUSH";
+}

+ 4 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/constants/enums/CommonEnum.java

@@ -0,0 +1,4 @@
+package com.jiayue.insu.incloud.constants.enums;
+
+public class CommonEnum {
+}

+ 39 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/constants/enums/StatusEnum.java

@@ -0,0 +1,39 @@
+package com.jiayue.insu.incloud.constants.enums;
+
+import lombok.Data;
+
+
+public enum StatusEnum {
+    SUCCESS("success","成功"),
+    RESPONSE_FAIL("response_fail","请求失败,回响应错误"),
+    DOWNLOAD_FILE_FAIL("response_fail","下载文件失败"),
+    DOWNLOAD_FILE_ERROR("response_fail","下载文件异常"),
+    FILE_NULL("file_null","文件为空"),
+
+
+    ;
+
+    private String code;
+    private String msg;
+
+    StatusEnum(String code, String msg) {
+        this.code = code;
+        this.msg  =msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+}

+ 59 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/constants/vo/FileCreateLog.java

@@ -0,0 +1,59 @@
+package com.jiayue.insu.incloud.constants.vo;
+
+import lombok.Data;
+
+/**
+ * 文件生成列表
+ *
+ * @author bizy
+ * @version 3.0
+ */
+@Data
+public class FileCreateLog {
+    private String id;
+
+    /**
+     * 场站编码
+     */
+    private String stationCode;
+
+    /**
+     * 场站名称
+     */
+    private String stationName;
+
+    /**
+     * 文件名
+     */
+    private String fileName;
+
+    /**
+     * 文件存放路径
+     */
+    private String filePath;
+
+    /**
+     * 日期
+     */
+    private String fileDate;
+
+    /**
+     * 是否下载
+     */
+    private String fileDownLoadStatus;
+
+    /**
+     * 是否传入内网
+     */
+    private String fileInStatus;
+
+    /**
+     * 下载到外网的方式
+     */
+    private String fileDownLoadType;
+
+    /**
+     * 文件类型
+     */
+    private String fileType;
+}

+ 18 - 3
in-cloud/src/main/java/com/jiayue/insu/incloud/controller/TestController.java

@@ -3,6 +3,8 @@ package com.jiayue.insu.incloud.controller;
 import cn.hutool.core.date.DateUtil;
 import com.jiayue.insu.common.core.util.R;
 import com.jiayue.insu.incloud.entity.Quartz;
+import com.jiayue.insu.incloud.entity.Station;
+import com.jiayue.insu.incloud.pulldata.PullCorrectData;
 import com.jiayue.insu.incloud.quartz.ScheduledTask;
 import org.quartz.SchedulerException;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,16 +24,29 @@ public class TestController {
 
     @Autowired
     ScheduledTask scheduledTask;
-
+    @Autowired
+    PullCorrectData pullCorrectData;
     @GetMapping("/job")
     public R testJob() throws ClassNotFoundException, SchedulerException, ParseException {
+        scheduledTask.deleteJob("testJob2");
         Quartz quartz = new Quartz();
-        quartz.setExecuteClass("com.jiayue.insu.incloud.quartz.job.TestJob");
-        quartz.setCronExpression("30 0/1 * * * ?");
+        quartz.setExecuteClass("com.jiayue.insu.incloud.job.data.pull.ZGHpullDataJob");
+        quartz.setCronExpression("0 17 15 * * ?");
         quartz.setJobName("testJob2");
         quartz.setStartTime(DateUtil.current());
         Class c = Class.forName(quartz.getExecuteClass());
         scheduledTask.scheduleJob(c,quartz.getJobName(),quartz.getStartTime(),quartz.getCronExpression(),null);
         return R.ok();
     }
+
+
+
+    @GetMapping("/job1")
+    public R testJob1() throws ClassNotFoundException, SchedulerException, ParseException {
+        Station station = new Station();
+        station.setStationCode("J00219");
+        station.setInCode("QNHL");
+        pullCorrectData.pullDQAndNWPData(station);
+        return R.ok();
+    }
 }

+ 87 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/entity/ForecastData.java

@@ -0,0 +1,87 @@
+package com.jiayue.insu.incloud.entity;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+
+/**
+ * 短期
+ *
+ * @author yh
+ * @version 1.0
+ * @since 2020/7/8 10:56
+ */
+@TableName(value = "in_forecast_data")
+@Data
+public class ForecastData {
+    /**
+     * Id
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+
+    private String stationCode;
+
+
+    private String inCode;
+
+    //下载时间
+    private LocalDateTime initTime;
+
+    //上送时间
+    private LocalDateTime uploadTime;
+
+    //预测时间
+    private Long forecastTime;
+    /**
+     * 预测功率(MW)
+     */
+    private BigDecimal fpValue;
+
+
+    /**
+     * 总辐射
+     */
+    private BigDecimal swr;
+
+
+    /**
+     * 直辐射
+     */
+    private BigDecimal directRadiation;
+
+    /**
+     * 散辐射
+     */
+    private BigDecimal diffuseRadiation;
+
+
+    //风速
+    private BigDecimal windSpeed;
+
+
+    //风向
+    private BigDecimal windDir;
+
+
+    //气温
+    private BigDecimal temperature;
+
+
+    //相对湿度
+    private BigDecimal humidity;
+
+
+    //压力
+    private BigDecimal pressure;
+
+
+
+}

+ 8 - 8
in-cloud/src/main/java/com/jiayue/insu/incloud/entity/PushRecord.java → in-cloud/src/main/java/com/jiayue/insu/incloud/entity/Record.java

@@ -14,9 +14,9 @@ import java.time.LocalDateTime;
  * @version 1.0
  * @since 2018/12/7 16:22
  */
-@TableName(value = "in_push_record")
+@TableName(value = "in_record")
 @Data
-public class PushRecord {
+public class Record {
 
     @TableId(type = IdType.ASSIGN_UUID)
     private String id;
@@ -29,20 +29,20 @@ public class PushRecord {
      */
     private String inCode;
     /**
-     *上送数据类型
+     *日志类型
      */
     private String type;
     /**
-     *上送内容
+     *日志内容
      */
     private String content;
     /**
-     *上送时间
+     *时间
      */
-    private LocalDateTime pushTime;
+    private LocalDateTime time;
     /**
-     *上送状态
+     *状态
      */
-    private String pushState;
+    private String state;
 
 }

+ 21 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/job/data/pull/ZGHpullDataJob.java

@@ -0,0 +1,21 @@
+package com.jiayue.insu.incloud.job.data.pull;
+
+import com.jiayue.insu.incloud.entity.Station;
+import com.jiayue.insu.incloud.pulldata.PullCorrectData;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class ZGHpullDataJob implements Job {
+
+    @Autowired
+    PullCorrectData pullCorrectData;
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        Station station = new Station();
+        station.setStationCode("J00219");
+        station.setInCode("QNHL");
+        pullCorrectData.pullDQAndNWPData(station);
+    }
+}

+ 11 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/mapper/ForecastDataMapper.java

@@ -0,0 +1,11 @@
+package com.jiayue.insu.incloud.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jiayue.insu.incloud.entity.ForecastData;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ForecastDataMapper extends BaseMapper<ForecastData> {
+
+
+}

+ 9 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/mapper/QuartzMapper.java

@@ -0,0 +1,9 @@
+package com.jiayue.insu.incloud.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jiayue.insu.incloud.entity.Quartz;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface QuartzMapper extends BaseMapper<Quartz> {
+}

+ 9 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/mapper/RecordMapper.java

@@ -0,0 +1,9 @@
+package com.jiayue.insu.incloud.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jiayue.insu.incloud.entity.Record;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface RecordMapper extends BaseMapper<Record> {
+}

+ 3 - 7
in-cloud/src/main/java/com/jiayue/insu/incloud/service/IPullInitForecastData.java → in-cloud/src/main/java/com/jiayue/insu/incloud/pulldata/IPullInitForecastData.java

@@ -1,4 +1,4 @@
-package com.jiayue.insu.incloud.service;
+package com.jiayue.insu.incloud.pulldata;
 
 import com.jiayue.insu.incloud.entity.Station;
 
@@ -15,10 +15,6 @@ public interface IPullInitForecastData {
      * 推送短期预测原始数据
      * @return 是否成功
      */
-    Boolean pullDQData(Station station);
-    /**
-     * 推送NWP预测原始数据
-     * @return 是否成功
-     */
-    Boolean pullNWPData(Station station);
+    Boolean pullDQAndNWPData(Station station);
+
 }

+ 270 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/pulldata/PullCorrectData.java

@@ -0,0 +1,270 @@
+package com.jiayue.insu.incloud.pulldata;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.jiayue.insu.incloud.constants.CommonStant;
+import com.jiayue.insu.incloud.constants.enums.StatusEnum;
+import com.jiayue.insu.incloud.constants.vo.FileCreateLog;
+import com.jiayue.insu.incloud.entity.ForecastData;
+import com.jiayue.insu.incloud.entity.Record;
+import com.jiayue.insu.incloud.entity.Station;
+import com.jiayue.insu.incloud.service.ForecastDataService;
+import com.jiayue.insu.incloud.service.RecordService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.io.*;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Component
+@Slf4j
+public class PullCorrectData implements IPullInitForecastData{
+
+    @Autowired
+    private RecordService recordService;
+    @Autowired
+    private ForecastDataService forecastDataService;
+    @Value("${pull.url}")
+    String url;
+    @Value("${pull.fileurl}")
+    String fileurl;
+    @Value("${pull.fileDir}")
+    String fileDir;
+    @Override
+    public Boolean pullDQAndNWPData(Station station) {
+        boolean result = false;
+        Record record = new Record();
+        LocalDateTime localDateTime = DateUtil.date().toLocalDateTime();
+        record.setStationCode(station.getStationCode());
+        record.setInCode(station.getInCode());
+        record.setTime(localDateTime);
+        record.setType(CommonStant.RECORD_TYPE_PULL);
+        log.info("下载minio原始RB文件 --> {}"+station.getStationCode());
+        try {
+            HttpRequest httpRequest = HttpRequest.get(url + station.getStationCode());
+            httpRequest.setGlobalTimeout(20000);
+            String body = httpRequest.execute().body();
+            JSONObject json = JSONUtil.parseObj(body);
+            String code = json.get("code").toString();
+            String data = json.get("data").toString();
+            if (code.equals("0") && data.length() > 0) {
+                JSONArray array = JSONUtil.parseArray(data);
+                List<FileCreateLog> list = array.toList(FileCreateLog.class);
+                List<FileCreateLog> dqListNow = new ArrayList<>();
+                List<FileCreateLog> nwpListNow = new ArrayList<>();
+                String dateNow = DateUtil.format(new Date(), "yyyyMMdd");
+                if (CollectionUtil.isNotEmpty(list)) {
+                    dqListNow = list.stream().filter(f -> f.getFileName().contains("DQ_" + dateNow)).collect(Collectors.toList());
+                    nwpListNow = list.stream().filter(f -> f.getFileName().contains("NWP_" + dateNow)).collect(Collectors.toList());
+                    if (CollectionUtil.isNotEmpty(dqListNow) && CollectionUtil.isNotEmpty(nwpListNow)) {
+                        dqListNow.sort(Comparator.comparing(FileCreateLog::getFileName).reversed());
+                        nwpListNow.sort(Comparator.comparing(FileCreateLog::getFileName).reversed());
+
+                        File dqNowFile = null;
+                        File nwpNowFile = null;
+                        List<ForecastData> listNow = new ArrayList<>();
+                        String fileSaveUrl = fileDir + File.separatorChar + station.getStationCode();
+                        log.info(fileSaveUrl);
+                        File dir = new File(fileSaveUrl);
+                        if (!dir.exists()) {// 判断目录是否存在
+                            dir.mkdirs();
+                            log.info("创建目录:" + fileSaveUrl);
+                        }
+
+                        try {
+                           // String dqNowUrl = fileurl + dqListNow.get(0).getId();
+                            String dqNowUrl = "https://117.78.19.70:9010/client/getFileById?id=" + dqListNow.get(0).getId();
+                            dqNowFile = HttpUtil.downloadFileFromUrl(dqNowUrl, fileSaveUrl + File.separatorChar +dqListNow.get(0).getFileName());
+                            //String nwpNowUrl = fileurl + nwpListNow.get(0).getId();
+                            String nwpNowUrl = "https://117.78.19.70:9010/client/getFileById?id=" + nwpListNow.get(0).getId();
+                            nwpNowFile = HttpUtil.downloadFileFromUrl(nwpNowUrl, fileSaveUrl + File.separatorChar + nwpListNow.get(0).getFileName());
+
+                            if (dqNowFile != null && nwpNowFile != null) {
+                                //解析
+                                listNow = fileAnalysis(dqNowFile, nwpNowFile, station,localDateTime);
+
+                                if (CollectionUtil.isNotEmpty(listNow)) {
+
+                                    //删除该时间段内数据
+                                    LambdaQueryWrapper<ForecastData> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+                                    lambdaQueryWrapper.between(ForecastData::getForecastTime,listNow.get(0).getForecastTime(), listNow.get(listNow.size() - 1).getForecastTime());
+                                    forecastDataService.remove(lambdaQueryWrapper);
+                                    forecastDataService.saveBatch(listNow);
+                                    String fileName = dqNowFile.getName() + "," + nwpNowFile.getName();
+                                    record.setContent(fileName);
+                                    record.setState(StatusEnum.SUCCESS.getCode());
+                                    result = true;
+                                    log.info(station.getStationCode() + " 存入初始化数据:" + listNow.size() + "条");
+                                } else {
+                                    record.setState(StatusEnum.DOWNLOAD_FILE_ERROR.getCode());
+                                    log.error("下载minio原始RB文件 --> {} 失败,失败原因:{}",station.getStationCode(),StatusEnum.DOWNLOAD_FILE_ERROR.getMsg());
+                                }
+
+                            } else {
+                                record.setState(StatusEnum.DOWNLOAD_FILE_ERROR.getCode());
+                                log.error("下载minio原始RB文件 --> {} 失败,失败原因:{}",station.getStationCode(),StatusEnum.DOWNLOAD_FILE_ERROR.getMsg());
+                            }
+
+
+                        } catch (Exception e) {
+                            record.setState(StatusEnum.DOWNLOAD_FILE_FAIL.getCode());
+                            log.error("下载minio原始RB文件 --> {} 失败,失败原因:{}",station.getStationCode(),StatusEnum.DOWNLOAD_FILE_FAIL.getMsg());
+                            e.printStackTrace();
+                        }
+
+                    } else {
+
+                        record.setState(StatusEnum.FILE_NULL.getCode());
+                        log.error("下载minio原始RB文件 --> {} 失败,失败原因:{}",station.getStationCode(),StatusEnum.FILE_NULL.getMsg());
+
+                    }
+                } else {
+                    record.setState(StatusEnum.FILE_NULL.getCode());
+                    log.error("下载minio原始RB文件 --> {} 失败,失败原因:{}",station.getStationCode(),StatusEnum.FILE_NULL.getMsg());
+                }
+
+
+            } else {
+                record.setState(StatusEnum.RESPONSE_FAIL.getCode());
+                log.error("下载minio原始RB文件 --> {} 失败,失败原因:{}",station.getStationCode(),StatusEnum.RESPONSE_FAIL.getMsg());
+            }
+        } catch (Exception e) {
+            record.setState(StatusEnum.RESPONSE_FAIL.getCode());
+            log.error("下载minio原始RB文件 --> {} 失败,失败原因:{}",station.getStationCode(),StatusEnum.RESPONSE_FAIL.getMsg());
+            e.printStackTrace();
+
+        }
+
+        recordService.save(record);
+        return result;
+    }
+
+
+
+    public List<ForecastData> fileAnalysis(File dqFile, File nwpFile, Station station, LocalDateTime localDateTime) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        List<ForecastData> aioList = new ArrayList<>();
+        List<ForecastData> resultList = new ArrayList<>();
+        boolean jx = true;
+        if (dqFile.renameTo(dqFile)) {
+            InputStreamReader dqRead = null;
+            BufferedReader dqBufferedReader = null;
+            String stringLine;
+            ForecastData stf;
+            try {
+                dqRead = new InputStreamReader(new FileInputStream(dqFile), "utf-8");
+                dqBufferedReader = new BufferedReader(dqRead);
+                while ((stringLine = dqBufferedReader.readLine()) != null) {
+                    String[] string_arr = stringLine.split("\t");
+                    if (string_arr.length == 4 && string_arr[0].startsWith("#")) {
+                        if (StrUtil.isNotEmpty(string_arr[2])) {
+                            stf = new ForecastData();
+                            stf.setFpValue(new BigDecimal(string_arr[3] + ""));
+                            stf.setForecastTime(sdf.parse(string_arr[2]).getTime());
+                            stf.setInitTime(localDateTime);
+                            stf.setStationCode(station.getStationCode());
+                            stf.setInCode(station.getSignCode());
+                            aioList.add(stf);
+                        }
+                    }
+                }
+            } catch (Exception e) {
+                jx = false;
+                log.error(station.getStationCode()+" 解析当天DQ文件错误:", e);
+            } finally {
+                close(dqBufferedReader, dqRead);
+            }
+        }
+
+        if (CollectionUtil.isNotEmpty(aioList)) {
+            if (nwpFile.renameTo(nwpFile)) {
+                InputStreamReader readNwp = null;
+                BufferedReader bufferedReaderNwp = null;
+                try {
+                    readNwp = new InputStreamReader(new FileInputStream(nwpFile), "utf-8");//考虑到编码格式
+                    bufferedReaderNwp = new BufferedReader(readNwp);
+                    String fileName = nwpFile.getName();
+                    fileName = fileName.substring(fileName.indexOf("_") + 1, fileName.lastIndexOf("."));
+                    String lineTxt;
+                    BigDecimal nwpDirectRadiation = new BigDecimal(0.7); //直接辐射
+                    BigDecimal nwpDiffuseRadiation = new BigDecimal(0.3); //散接辐射
+
+                    while ((lineTxt = bufferedReaderNwp.readLine()) != null) {
+                        //NWP文件按照Tab方式截取
+                        String[] datas = lineTxt.split("\t");
+                        if (datas.length == 35 && datas[0].startsWith("#")) {
+                            if (datas != null && datas.length > 0) {
+                                Long finalTime = sdf.parse(datas[5]).getTime();
+                                List<ForecastData> filterAios = aioList.stream().filter(a -> a.getForecastTime().longValue() == finalTime.longValue()).collect(Collectors.toList());
+                                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);
+                                }
+                            }
+                        }
+                    }
+                } catch (Exception e) {
+                    jx = false;
+                    log.error(station.getStationCode()+" 解析当天NWP文件错误:", e);
+                } finally {
+                    close(bufferedReaderNwp, readNwp);
+                }
+            }
+        }
+
+        if (jx) {
+            resultList.sort(Comparator.comparing(ForecastData::getForecastTime));
+            return resultList;
+        } else {
+            return null;
+        }
+
+    }
+
+
+    /**
+     * 关闭文件流
+     *
+     * @param bufferedReader 字符数据
+     * @param read           字节流
+     */
+    private void close(BufferedReader bufferedReader, InputStreamReader read) {
+        try {
+            if (bufferedReader != null) {
+                bufferedReader.close();
+            }
+            if (read != null) {
+                read.close();
+            }
+        } catch (IOException e) {
+            log.error("关闭文件流失败:", e);
+        }
+    }
+
+
+}

+ 1 - 1
in-cloud/src/main/java/com/jiayue/insu/incloud/service/IPushInitForecastData.java → in-cloud/src/main/java/com/jiayue/insu/incloud/pushdata/IPushInitForecastData.java

@@ -1,4 +1,4 @@
-package com.jiayue.insu.incloud.service;
+package com.jiayue.insu.incloud.pushdata;
 
 import com.jiayue.insu.incloud.entity.Station;
 

+ 0 - 1
in-cloud/src/main/java/com/jiayue/insu/incloud/pushdata/PushDataForQNHL.java

@@ -1,7 +1,6 @@
 package com.jiayue.insu.incloud.pushdata;
 
 import com.jiayue.insu.incloud.entity.Station;
-import com.jiayue.insu.incloud.service.IPushInitForecastData;
 import org.springframework.stereotype.Component;
 
 /**

+ 10 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/service/ForecastDataService.java

@@ -0,0 +1,10 @@
+package com.jiayue.insu.incloud.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jiayue.insu.incloud.entity.ForecastData;
+import com.jiayue.insu.incloud.entity.IntegrationCompany;
+
+public interface ForecastDataService extends IService<ForecastData> {
+
+
+}

+ 9 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/service/QuartzService.java

@@ -0,0 +1,9 @@
+package com.jiayue.insu.incloud.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jiayue.insu.incloud.entity.Quartz;
+
+public interface QuartzService extends IService<Quartz> {
+
+
+}

+ 9 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/service/RecordService.java

@@ -0,0 +1,9 @@
+package com.jiayue.insu.incloud.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jiayue.insu.incloud.entity.Record;
+
+public interface RecordService extends IService<Record> {
+
+
+}

+ 13 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/service/impl/ForecastDataServiceImpl.java

@@ -0,0 +1,13 @@
+package com.jiayue.insu.incloud.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jiayue.insu.incloud.entity.ForecastData;
+import com.jiayue.insu.incloud.mapper.ForecastDataMapper;
+import com.jiayue.insu.incloud.service.ForecastDataService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class ForecastDataServiceImpl extends ServiceImpl<ForecastDataMapper, ForecastData> implements ForecastDataService {
+
+
+}

+ 13 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/service/impl/QuartzServiceImpl.java

@@ -0,0 +1,13 @@
+package com.jiayue.insu.incloud.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jiayue.insu.incloud.entity.Quartz;
+import com.jiayue.insu.incloud.mapper.QuartzMapper;
+import com.jiayue.insu.incloud.service.QuartzService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class QuartzServiceImpl extends ServiceImpl<QuartzMapper, Quartz> implements QuartzService {
+
+
+}

+ 16 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/service/impl/RecordServiceImpl.java

@@ -0,0 +1,16 @@
+package com.jiayue.insu.incloud.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jiayue.insu.incloud.entity.Quartz;
+import com.jiayue.insu.incloud.entity.Record;
+import com.jiayue.insu.incloud.mapper.QuartzMapper;
+import com.jiayue.insu.incloud.mapper.RecordMapper;
+import com.jiayue.insu.incloud.service.QuartzService;
+import com.jiayue.insu.incloud.service.RecordService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class RecordServiceImpl extends ServiceImpl<RecordMapper, Record> implements RecordService {
+
+
+}

+ 6 - 0
in-cloud/src/main/resources/bootstrap.yml

@@ -44,6 +44,12 @@ spring:
               user: root
               password: root
 
+pull:
+  url: https://117.78.19.70:9010/client/getFileLogsForAio/
+  fileurl: https://117.78.19.70:9010/client/getFileById?id=
+  fileDir: D:\\fileInit\\temp
+
+
 server:
   port: 8801
 ---