Browse Source

eeerrerere

xusl 9 months ago
parent
commit
6c1803fd85

+ 5 - 1
ipp-ap/src/const/crud/nwp.js

@@ -22,7 +22,11 @@ export const tableOption = {
     "type": "input",
     "type": "input",
     "label": "预测时间",
     "label": "预测时间",
     "prop": "preTime",
     "prop": "preTime",
-    "width":150
+    "width":150,
+    formatter: (row, column, cellValue, index) => {
+      const date = new Date(cellValue);
+      return date.toLocaleString(); // 转换为本地时间并显示
+    }
   }
   }
     // ,
     // ,
     // {
     // {

+ 10 - 1
ipp-ap/src/router/page/index.js

@@ -32,7 +32,16 @@ export default [
         import ( /* webpackChunkName: "views" */ '@/views/idp/data/forecastpowerdata')
         import ( /* webpackChunkName: "views" */ '@/views/idp/data/forecastpowerdata')
     }],
     }],
   },
   },
-
+  {
+    path: '/idp/data/nwp',
+    component: Layout,
+    children: [{
+      path: 'index',
+      name: 'NWP查询',
+      component: () =>
+        import ( /* webpackChunkName: "views" */ '@/views/idp/data/nwp')
+    }],
+  },
   {
   {
     path: '/idp/data/windtowerstatusdata',
     path: '/idp/data/windtowerstatusdata',
     component: Layout,
     component: Layout,

+ 15 - 0
ipp-ap/src/router/views/index.js

@@ -90,6 +90,21 @@ export default [
         spread: false
         spread: false
       },
       },
       {
       {
+        children: [],
+        hasChildren: false,
+        icon: "",
+        id: "4086",
+        keepAlive: "0",
+        label: "NWP查询",
+        menuType: "0",
+        name: "NWP查询",
+        parentId: "4058",
+        path: "/idp/data/nwp/index",
+        permission: "",
+        sort: 1,
+        spread: false
+      },
+      {
       children: [],
       children: [],
       hasChildren: false,
       hasChildren: false,
       icon: "",
       icon: "",

+ 1 - 0
ipp-ap/src/views/idp/data/nwp/index.vue

@@ -143,6 +143,7 @@ export default {
       param.append('endTime', this.endTime)
       param.append('endTime', this.endTime)
       param.append('forecastManufactor', this.forecastManufactor)
       param.append('forecastManufactor', this.forecastManufactor)
       queryTableData(param).then((res) => {
       queryTableData(param).then((res) => {
+        console.log(res.data.data.records)
         this.tableData = res.data.data.records
         this.tableData = res.data.data.records
         this.page.pageSize = res.data.data.size
         this.page.pageSize = res.data.data.size
         this.page.total = res.data.data.total
         this.page.total = res.data.data.total

+ 5 - 4
ipp-common/ipp-common-data/src/main/java/com/jiayue/ipp/common/data/entity/Nwp.java

@@ -12,6 +12,7 @@ import lombok.EqualsAndHashCode;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.util.Date;
 
 
 import javax.validation.constraints.Digits;
 import javax.validation.constraints.Digits;
 
 
@@ -46,28 +47,28 @@ public class Nwp extends BaseDataEntity<Nwp> {
      * 预测时间
      * 预测时间
      */
      */
     @ApiModelProperty(value = "预测时间")
     @ApiModelProperty(value = "预测时间")
-    private LocalDateTime preTime;
+    private Date preTime;
 
 
 
 
     /**
     /**
      * 生成日期
      * 生成日期
      */
      */
     @ApiModelProperty(value = "生成日期")
     @ApiModelProperty(value = "生成日期")
-    private LocalDate scDate;
+    private Date scDate;
 
 
 
 
     /**
     /**
      * 生成时间
      * 生成时间
      */
      */
     @ApiModelProperty(value = "生成时间")
     @ApiModelProperty(value = "生成时间")
-    private LocalDateTime scTime;
+    private Date scTime;
 
 
 
 
     /**
     /**
      * 预测日期
      * 预测日期
      */
      */
     @ApiModelProperty(value = "预测日期")
     @ApiModelProperty(value = "预测日期")
-    private LocalDate preDate;
+    private Date preDate;
 
 
 
 
     /**
     /**

+ 5 - 4
ipp-common/ipp-common-data/src/main/java/com/jiayue/ipp/common/data/entity/NwpHis.java

@@ -12,6 +12,7 @@ import lombok.EqualsAndHashCode;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.util.Date;
 
 
 import javax.validation.constraints.Digits;
 import javax.validation.constraints.Digits;
 
 
@@ -53,28 +54,28 @@ public class NwpHis extends BaseDataEntity<NwpHis> {
      * 预测时间
      * 预测时间
      */
      */
     @ApiModelProperty(value = "预测时间")
     @ApiModelProperty(value = "预测时间")
-    private LocalDateTime preTime;
+    private Date preTime;
 
 
 
 
     /**
     /**
      * 生成日期
      * 生成日期
      */
      */
     @ApiModelProperty(value = "生成日期")
     @ApiModelProperty(value = "生成日期")
-    private LocalDate scDate;
+    private Date scDate;
 
 
 
 
     /**
     /**
      * 生成时间
      * 生成时间
      */
      */
     @ApiModelProperty(value = "生成时间")
     @ApiModelProperty(value = "生成时间")
-    private LocalDateTime scTime;
+    private Date scTime;
 
 
 
 
     /**
     /**
      * 预测日期
      * 预测日期
      */
      */
     @ApiModelProperty(value = "预测日期")
     @ApiModelProperty(value = "预测日期")
-    private LocalDate preDate;
+    private Date preDate;
 
 
 
 
     /**
     /**

+ 104 - 0
ipp-idp/src/main/java/com/jiayue/ipp/idp/service/an/DownloadService.java

@@ -1,18 +1,23 @@
 package com.jiayue.ipp.idp.service.an;
 package com.jiayue.ipp.idp.service.an;
 
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.jiayue.ipfcst.common.core.util.DateMomentUtil;
 import com.jiayue.ipfcst.common.core.util.DateMomentUtil;
 import com.jiayue.ipfcst.common.core.util.DateTimeUtil;
 import com.jiayue.ipfcst.common.core.util.DateTimeUtil;
+import com.jiayue.ipfcst.common.core.util.NumberUtils;
 import com.jiayue.ipp.common.data.entity.ForecastPowerShortTerm;
 import com.jiayue.ipp.common.data.entity.ForecastPowerShortTerm;
 import com.jiayue.ipp.common.data.entity.ForecastPowerShortTermHis;
 import com.jiayue.ipp.common.data.entity.ForecastPowerShortTermHis;
+import com.jiayue.ipp.common.data.entity.Nwp;
 import com.jiayue.ipp.common.data.entity.an.ParsingChannel;
 import com.jiayue.ipp.common.data.entity.an.ParsingChannel;
 import com.jiayue.ipp.common.data.entity.an.ParsingLog;
 import com.jiayue.ipp.common.data.entity.an.ParsingLog;
 import com.jiayue.ipp.common.data.entity.an.ParsingUrl;
 import com.jiayue.ipp.common.data.entity.an.ParsingUrl;
 import com.jiayue.ipp.idp.dto.ParsingConstant;
 import com.jiayue.ipp.idp.dto.ParsingConstant;
 import com.jiayue.ipp.idp.service.ForecastPowerShortTermHisService;
 import com.jiayue.ipp.idp.service.ForecastPowerShortTermHisService;
 import com.jiayue.ipp.idp.service.ForecastPowerShortTermService;
 import com.jiayue.ipp.idp.service.ForecastPowerShortTermService;
+import com.jiayue.ipp.idp.service.NwpService;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FileUtils;
@@ -26,6 +31,7 @@ import java.io.File;
 import java.io.IOException;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.InputStreamReader;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.nio.charset.StandardCharsets;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Files;
 import java.text.ParseException;
 import java.text.ParseException;
@@ -55,6 +61,8 @@ public class DownloadService {
 
 
     private final ForecastPowerShortTermService forecastPowerShortTermService;
     private final ForecastPowerShortTermService forecastPowerShortTermService;
 
 
+    private final NwpService nwpService;
+
     /**
     /**
      * 解析
      * 解析
      *
      *
@@ -201,6 +209,102 @@ public class DownloadService {
                         }
                         }
                     }
                     }
                 }
                 }
+
+                if (file.getName().startsWith("NWP")) {
+                    List<Nwp> listNwp = new ArrayList<>();
+                    if (file.renameTo(file)) {
+                        InputStreamReader readNwp = null;
+                        BufferedReader bufferedReaderNwp = null;
+                        try {
+                            readNwp = new InputStreamReader(Files.newInputStream(file.toPath()), StandardCharsets.UTF_8);//考虑到编码格式
+                            bufferedReaderNwp = new BufferedReader(readNwp);
+                            String lineTxt;
+                            Nwp nwpData;
+                            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("#")) {
+                                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                                    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
+                                    SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm:ss");
+                                    nwpData = new Nwp();
+                                    nwpData.setForecastManufactor(parsingUrl.getForecastManufactor());
+                                    //将截取的文件放入nwpData中
+                                    nwpData.setStationCode(parsingUrl.getStationCode());
+                                    nwpData.setScDate(sdf1.parse(datas[2]));
+//                                    nwpData.setScTime(sdf.parse(datas[3]));
+                                    nwpData.setPreDate(sdf1.parse(datas[4]));
+                                    nwpData.setPreTime(sdf.parse(datas[5]));//采集时间 与 短期预测时间关联
+                                    nwpData.setT(NumberUtils.subtract(new BigDecimal(datas[6]), new BigDecimal("273.15")));//温度
+
+                                    nwpData.setSenf(new BigDecimal(datas[11]).setScale(2, RoundingMode.HALF_UP));//感热
+                                    nwpData.setSwr(new BigDecimal(datas[9]).setScale(2, RoundingMode.HALF_UP));//短波辐射(相当于总辐射)
+                                    nwpData.setLwr(new BigDecimal(datas[10]).setScale(2, RoundingMode.HALF_UP));//短波辐射(相当于总辐射)
+                                    nwpData.setPressure(new BigDecimal(datas[8]).setScale(2, RoundingMode.HALF_UP));//地表气压
+                                    nwpData.setRh(new BigDecimal(datas[7]).setScale(2, RoundingMode.HALF_UP));//2m相对湿度
+                                    nwpData.setDiffuseRadiation(new BigDecimal(datas[9]).multiply(nwpDiffuseRadiation).setScale(2, RoundingMode.HALF_UP));//散接辐射
+                                    nwpData.setDirectRadiation(new BigDecimal(datas[9]).multiply(nwpDirectRadiation).setScale(2, RoundingMode.HALF_UP));//直接辐射
+
+                                    nwpData.setWs10(new BigDecimal(datas[19]).setScale(2, RoundingMode.HALF_UP));
+                                    nwpData.setWs30(new BigDecimal(datas[20]).setScale(2, RoundingMode.HALF_UP));
+                                    nwpData.setWs50(new BigDecimal(datas[21]).setScale(2, RoundingMode.HALF_UP));
+                                    nwpData.setWs70(new BigDecimal(datas[22]).setScale(2, RoundingMode.HALF_UP));
+                                    nwpData.setWs80(new BigDecimal(datas[23]).setScale(2, RoundingMode.HALF_UP));
+                                    nwpData.setWs90(new BigDecimal(datas[24]).setScale(2, RoundingMode.HALF_UP));
+                                    nwpData.setWs100(new BigDecimal(datas[25]).setScale(2, RoundingMode.HALF_UP));
+                                    nwpData.setWs170(new BigDecimal(datas[26]).setScale(2, RoundingMode.HALF_UP));
+                                    nwpData.setWd10(new BigDecimal(datas[27]).setScale(2, RoundingMode.HALF_UP));
+                                    nwpData.setWd30(new BigDecimal(datas[28]).setScale(2, RoundingMode.HALF_UP));
+                                    nwpData.setWd50(new BigDecimal(datas[29]).setScale(2, RoundingMode.HALF_UP));
+                                    nwpData.setWd70(new BigDecimal(datas[30]).setScale(2, RoundingMode.HALF_UP));
+                                    nwpData.setWd80(new BigDecimal(datas[31]).setScale(2, RoundingMode.HALF_UP));
+                                    nwpData.setWd90(new BigDecimal(datas[32]).setScale(2, RoundingMode.HALF_UP));
+                                    nwpData.setWd100(new BigDecimal(datas[33]).setScale(2, RoundingMode.HALF_UP));
+                                    nwpData.setWd170(new BigDecimal(datas[34]).setScale(2, RoundingMode.HALF_UP));
+                                    listNwp.add(nwpData);
+                                }
+                            }
+                            if (listNwp.size() > 0 ) {
+                                // 保存nwp实时
+                                Date startTime = listNwp.get(0).getPreTime();
+                                Date endTime = listNwp.get(listNwp.size() - 1).getPreTime();
+                                LambdaQueryWrapper<Nwp> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+                                lambdaQueryWrapper.eq(Nwp::getStationCode, parsingUrl.getStationCode());
+                                lambdaQueryWrapper.eq(Nwp::getForecastManufactor, parsingUrl.getForecastManufactor());
+                                lambdaQueryWrapper.between(Nwp::getPreTime, startTime, endTime);
+                                nwpService.remove(lambdaQueryWrapper);
+                                nwpService.saveBatch(listNwp);
+                                log.info(parsingUrl.getStationCode() + "下" + fileName + "嘉越云端文件解析成功!");
+                                try {
+                                    File file1 = new File(success + File.separator + fileName);
+                                    if (file1.exists()) {
+                                        file1.delete();
+                                    }
+                                    FileUtils.moveFile(file, new File(success + File.separator + fileName));
+                                } catch (IOException e) {
+                                    e.printStackTrace();
+                                }
+                            }
+                        } catch (IOException | ParseException | RuntimeException e) {
+                            log.error("系统错误:", e);
+                            File destFile = new File(file.getPath().replaceFirst("new", "error"));
+                            if (destFile.exists()) {
+                                destFile.delete();
+                            }
+                            try {
+                                FileUtils.moveFile(file, destFile);
+                            } catch (IOException e1) {
+                                log.error(file.getName() + "文件解析失败", e);
+                            }
+                        } finally {
+                            close(bufferedReaderNwp, readNwp);
+                        }
+                    }
+
+                }
             }
             }
         }
         }
         log.info("解析嘉越云端文件定时执行完成");
         log.info("解析嘉越云端文件定时执行完成");

+ 1 - 0
ipp-idp/src/main/java/com/jiayue/ipp/idp/service/impl/WindTowerStatusDataServiceImpl.java

@@ -331,6 +331,7 @@ public class WindTowerStatusDataServiceImpl extends ServiceImpl<WindTowerStatusD
         typemap.put("wsInst30", "30风速瞬时值");
         typemap.put("wsInst30", "30风速瞬时值");
         typemap.put("wsInst50", "50风速瞬时值");
         typemap.put("wsInst50", "50风速瞬时值");
         typemap.put("wsInst70", "70风速瞬时值");
         typemap.put("wsInst70", "70风速瞬时值");
+        typemap.put("wsInstHubHeight", "轮毂风速瞬时值");
 
 
 
 
         map.put("equipmentType", typemap);
         map.put("equipmentType", typemap);

+ 11 - 9
ipp-idp/src/main/java/com/jiayue/ipp/idp/service/impl/an/ParsingNwpInfoServiceImpl.java

@@ -27,10 +27,12 @@ import org.springframework.transaction.annotation.Transactional;
 
 
 import java.io.File;
 import java.io.File;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.time.Instant;
 import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -120,11 +122,11 @@ public class ParsingNwpInfoServiceImpl extends ServiceImpl<ParsingNwpInfoMapper,
                                 //以十米风速为基准
                                 //以十米风速为基准
                                 for (int i = 0; i < ws10s.size(); i++) {
                                 for (int i = 0; i < ws10s.size(); i++) {
                                     NwpHis nwpHis = new NwpHis();
                                     NwpHis nwpHis = new NwpHis();
-                                    LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault());
+                                    Date localDateTime = new Date(time);
                                     nwpHis.setPreTime(localDateTime);
                                     nwpHis.setPreTime(localDateTime);
-                                    nwpHis.setPreDate(localDateTime.toLocalDate());
-                                    nwpHis.setScDate(LocalDateTime.now().toLocalDate());
-                                    nwpHis.setScTime(LocalDateTime.now());
+                                    nwpHis.setPreDate(localDateTime);
+                                    nwpHis.setScDate(localDateTime);
+                                    nwpHis.setScTime(localDateTime);
                                     nwpHis.setDirectRadiation(valueSet(directRadiations, i));
                                     nwpHis.setDirectRadiation(valueSet(directRadiations, i));
                                     nwpHis.setDiffuseRadiation(valueSet(diffuseRadiations, i));
                                     nwpHis.setDiffuseRadiation(valueSet(diffuseRadiations, i));
                                     nwpHis.setForecastHowLongAgo(i / 96 + 1);
                                     nwpHis.setForecastHowLongAgo(i / 96 + 1);
@@ -159,9 +161,9 @@ public class ParsingNwpInfoServiceImpl extends ServiceImpl<ParsingNwpInfoMapper,
 
 
                                     Nwp nwp = new Nwp();
                                     Nwp nwp = new Nwp();
                                     nwp.setPreTime(localDateTime);
                                     nwp.setPreTime(localDateTime);
-                                    nwp.setPreDate(localDateTime.toLocalDate());
-                                    nwp.setScDate(LocalDateTime.now().toLocalDate());
-                                    nwp.setScTime(LocalDateTime.now());
+                                    nwp.setPreDate(localDateTime);
+                                    nwp.setScDate(localDateTime);
+                                    nwp.setScTime(localDateTime);
                                     nwp.setDirectRadiation(valueSet(directRadiations, i));
                                     nwp.setDirectRadiation(valueSet(directRadiations, i));
                                     nwp.setDiffuseRadiation(valueSet(diffuseRadiations, i));
                                     nwp.setDiffuseRadiation(valueSet(diffuseRadiations, i));
                                     nwp.setLwr(valueSet(lwrs, i));
                                     nwp.setLwr(valueSet(lwrs, i));
@@ -195,8 +197,8 @@ public class ParsingNwpInfoServiceImpl extends ServiceImpl<ParsingNwpInfoMapper,
 
 
 
 
 
 
-                                LocalDateTime startTime = nwpHisList.get(0).getPreTime();
-                                LocalDateTime endTime = nwpHisList.get(nwpHisList.size() - 1).getPreTime();
+                                Date startTime = nwpHisList.get(0).getPreTime();
+                                Date endTime = nwpHisList.get(nwpHisList.size() - 1).getPreTime();
                                 nwpHisService.saveBatch(nwpHisList);
                                 nwpHisService.saveBatch(nwpHisList);
                                 LambdaQueryWrapper<Nwp> lambdaQueryWrapper = new LambdaQueryWrapper<>();
                                 LambdaQueryWrapper<Nwp> lambdaQueryWrapper = new LambdaQueryWrapper<>();
                                 lambdaQueryWrapper.eq(Nwp::getStationCode, parsingUrl.getStationCode());
                                 lambdaQueryWrapper.eq(Nwp::getStationCode, parsingUrl.getStationCode());