yuanhao 2 лет назад
Родитель
Сommit
7482cf53a0
20 измененных файлов с 677 добавлено и 12 удалено
  1. 5 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/constant/CommonStant.java
  2. 1 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/controller/RecordController.java
  3. 102 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/entity/BackStatData.java
  4. 40 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/entity/BaseBackTime.java
  5. 1 1
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/entity/CorrforeSt.java
  6. 3 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/entity/Station.java
  7. 9 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/inenum/QNHLEnum.java
  8. 25 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/job/BackDataAnalysisJob.java
  9. 17 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/mapper/BackStatDataMapper.java
  10. 14 1
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/model/RequestVo.java
  11. 55 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/service/BackDataAnalysisService.java
  12. 226 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/service/BackDataGenService.java
  13. 61 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/service/BackDataRequestService.java
  14. 22 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/service/BackStatDataService.java
  15. 35 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/service/impl/BackStatDataServiceImpl.java
  16. 18 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/util/DateTimeUtils.java
  17. 2 2
      in-client-qn/src/main/resources/vms/DQ.vm
  18. 0 8
      in-client-qn/src/main/resources/vms/DQAMEND.vm
  19. 30 0
      in-client-qn/src/test/java/com/jiayue/insu/inclientqn/service/BackDataGenServiceTest.java
  20. 11 0
      in-cloud/src/main/java/com/jiayue/insu/incloud/entity/Station.java

+ 5 - 0
in-client-qn/src/main/java/com/jiayue/insu/inclientqn/constant/CommonStant.java

@@ -36,6 +36,11 @@ public interface CommonStant {
      */
     String RECORD_TYPE_COM_PERMISSON = "COM_PERMISSON";
 
+    /**
+     * 日志类型:回传文件解析
+     */
+    String RECORD_TYPE_BACK_DATA_FILE = "BACK_DATA_FILE";
+
 
     /**
      * 换行

+ 1 - 0
in-client-qn/src/main/java/com/jiayue/insu/inclientqn/controller/RecordController.java

@@ -35,6 +35,7 @@ public class RecordController {
         LambdaQueryWrapper<Record> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         if(record.getStartTime()!=null && record.getEndTime()!=null){
             lambdaQueryWrapper.between(Record::getCreateTime,record.getStartTime(),record.getEndTime());
+            lambdaQueryWrapper.orderByDesc(Record::getCreateTime);
         }
 
         return R.ok(recordService.page(page, lambdaQueryWrapper));

+ 102 - 0
in-client-qn/src/main/java/com/jiayue/insu/inclientqn/entity/BackStatData.java

@@ -0,0 +1,102 @@
+package com.jiayue.insu.inclientqn.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;
+
+/**
+ * 回传数据 统计类型
+ *
+ * @author yh
+ * @version 1.0
+ * @since 2018/12/7 16:22
+ */
+@Data
+@TableName("in_back_stat_data")
+public class BackStatData extends  BaseBackTime {
+
+    /**
+     * Id
+     */
+    @TableId(type = IdType.AUTO)
+    Long id;
+
+    /**
+     * 实际功率
+     */
+    BigDecimal realPower;
+    /**
+     * 风速
+     */
+    BigDecimal ws;
+
+    /**
+     * 风向
+     */
+    BigDecimal wd;
+
+    /**
+     * 温度
+     */
+    BigDecimal temperature;
+    /**
+     * 湿度
+     */
+    BigDecimal humidity;
+    /**
+     * 气压
+     */
+    BigDecimal pressure;
+
+    /**
+     * 总辐射(W/㎡)
+     */
+    BigDecimal globalR;
+
+    /**
+     * 直接辐射(W/㎡)
+     */
+    BigDecimal directR;
+    /**
+     * 散射辐射(W/㎡)
+     */
+    BigDecimal diffuseR;
+
+    /**
+     * 电池板温度(W/㎡)
+     */
+    BigDecimal cellT;
+    /**
+     * 实时可用功率
+     */
+    BigDecimal availablePower;
+
+    /**
+     * 实时可用功率
+     */
+    BigDecimal theoryPower;
+
+    /**
+     * 两则准确率
+     */
+    BigDecimal accuracy;
+
+    /**
+     * 限电标识   0未限电;1限电
+     */
+    BigDecimal powerLimitSign;
+
+    /**
+     * 上报状态回传  短期上报状态   0未上报;1上报
+     */
+    BigDecimal reportStateForecast;
+
+
+    /**
+     * 上报状态回传 超短期上报状态   0未上报;1上报
+     */
+    BigDecimal reportStateForecastshort;
+}

+ 40 - 0
in-client-qn/src/main/java/com/jiayue/insu/inclientqn/entity/BaseBackTime.java

@@ -0,0 +1,40 @@
+package com.jiayue.insu.inclientqn.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+/**
+ * 回传数据时间标记基类
+ *
+ * @author yh
+ * @version 1.0
+ * @since 2018/12/7 16:22
+ */
+@Data
+public class BaseBackTime {
+
+    /**
+     * 标记时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    LocalDateTime signTime;
+
+    /**
+     * 解析时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    LocalDateTime analysisTime;
+
+
+    /**
+     * 回传时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    LocalDateTime backTime;
+}

+ 1 - 1
in-client-qn/src/main/java/com/jiayue/insu/inclientqn/entity/CorrforeSt.java

@@ -17,7 +17,7 @@ import java.time.LocalDateTime;
 /**
  * 修正数据
  *
- * @author xsl
+ * @author yh
  * @date 2022-04-12 19:33:02
  */
 @Data

+ 3 - 0
in-client-qn/src/main/java/com/jiayue/insu/inclientqn/entity/Station.java

@@ -80,6 +80,9 @@ public class Station {
      */
     String localFilePath;
 
+    /*回传数据文件扫描位置*/
+    String backFilePath;
+
 
 
 

+ 9 - 0
in-client-qn/src/main/java/com/jiayue/insu/inclientqn/inenum/QNHLEnum.java

@@ -32,6 +32,15 @@ public enum QNHLEnum {
     DATA_TODAYFORE_TYPE("TODAYFORE","TODAYFORE","优化后当日预测"),
     DATA_CORRULTRSHOR_TYPE("CORRULTRSHOR","CORRULTRSHOR","超短期修正"),
     DATA_REPAPLAN_TYPE("REPAPLAN","REPAPLAN","检修计划"),
+    /**
+     * 回传数据类型划分
+     */
+    DATA_FORE_TYPE_UltraShortTermForecast("UltraShortTermForecast","UltraShortTermForecast","超短期功率预测上报"),
+    DATA_FORE_TYPE_ForecastPower("ForecastPower","ForecastPower","短期功率预测上报"),
+    DATA_STAT_TYPE_RealPower("RealPower","RealPower","实发功率"),
+    DATA_STAT_TYPE_RealWeather("RealWeather","RealWeather","实际气象"),
+    DATA_STAT_TYPE_ForecastPowerReport("ForecastPowerReport","ForecastPowerReport","短期上报状态"),
+    DATA_STAT_TYPE_UltraShortTermForecastReport("UltraShortTermForecastReport","UltraShortTermForecastReport","超短期上报状态"),
             ;
 
     private String code;

+ 25 - 0
in-client-qn/src/main/java/com/jiayue/insu/inclientqn/job/BackDataAnalysisJob.java

@@ -0,0 +1,25 @@
+package com.jiayue.insu.inclientqn.job;
+
+import com.jiayue.insu.inclientqn.service.BackDataAnalysisService;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @description:  回传数据文件解析定时任务
+ * @author: yuanhao
+ * @createDate: 2022/6/17
+ * @version: 1.0
+ */
+public class BackDataAnalysisJob implements Job {
+
+
+    @Autowired
+    private BackDataAnalysisService backDataAnalysisService;
+
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        backDataAnalysisService.fileAnalysis();
+    }
+}

+ 17 - 0
in-client-qn/src/main/java/com/jiayue/insu/inclientqn/mapper/BackStatDataMapper.java

@@ -0,0 +1,17 @@
+package com.jiayue.insu.inclientqn.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jiayue.insu.inclientqn.entity.BackStatData;
+import com.jiayue.insu.inclientqn.entity.CorrforeSt;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 回传统计数据mapper
+ *
+ * @author yh
+ * @date 2022-04-12 19:33:02
+ */
+@Mapper
+public interface BackStatDataMapper extends BaseMapper<BackStatData> {
+
+}

+ 14 - 1
in-client-qn/src/main/java/com/jiayue/insu/inclientqn/model/RequestVo.java

@@ -1,5 +1,8 @@
 package com.jiayue.insu.inclientqn.model;
 
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.jiayue.insu.inclientqn.inenum.QNHLEnum;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -17,6 +20,17 @@ import lombok.experimental.SuperBuilder;
 @AllArgsConstructor
 public class RequestVo {
 
+    public static RequestVo UPLOAD_FORE(String el,String data) {
+        DateTime dateTime = DateUtil.parse(DateUtil.now());
+        String fileName = el + "_" + dateTime.toString("yyyyMMdd_HHmm") + "_" + QNHLEnum.DATA_FORE_TYPE.getSign() + ".CIME";
+        return RequestVo.builder()
+                .transferType(QNHLEnum.TRANSFER_TYPE_UPLOAD.getCode())
+                .date(dateTime.toString("yyyyMMdd"))
+                .dataType(QNHLEnum.DATA_FORE_TYPE.getSign())
+                .fileName(fileName)
+                .data(data.toString()).build();
+    }
+
     /**
      * 数据传输类型
      */
@@ -42,5 +56,4 @@ public class RequestVo {
     private String data;
 
 
-
 }

+ 55 - 0
in-client-qn/src/main/java/com/jiayue/insu/inclientqn/service/BackDataAnalysisService.java

@@ -0,0 +1,55 @@
+package com.jiayue.insu.inclientqn.service;
+
+import cn.hutool.core.util.StrUtil;
+import com.jiayue.insu.inclientqn.constant.CommonStant;
+import com.jiayue.insu.inclientqn.entity.Record;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+
+/**
+ * @description:  回传数据文件解析
+ * @author: yuanhao
+ * @createDate: 2022/6/17
+ * @version: 1.0
+ */
+@Service
+@Slf4j
+@RequiredArgsConstructor
+@RefreshScope
+public class BackDataAnalysisService {
+
+
+    @Value("${backdata.filepath}")
+    private String backFilePath;
+
+    private final RecordService recordService;
+
+    private final StationService stationService;
+    /**
+     * 解析回传数据文件
+     */
+    public void fileAnalysis(){
+        Record record = new Record();
+        record.setType(CommonStant.RECORD_TYPE_BACK_DATA_FILE);
+        //获取扫描文件路径
+        if(StrUtil.isEmpty(backFilePath)){
+            backFilePath =  stationService.findThis().getBackFilePath();
+        }
+
+        //TODO 文件解析
+
+
+
+
+
+        record.setCreateTime(LocalDateTime.now());
+        recordService.save(record);
+
+        System.out.println(backFilePath);
+    }
+}

+ 226 - 0
in-client-qn/src/main/java/com/jiayue/insu/inclientqn/service/BackDataGenService.java

@@ -0,0 +1,226 @@
+package com.jiayue.insu.inclientqn.service;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import cn.hutool.core.util.StrUtil;
+import com.jiayue.insu.inclientqn.constant.CommonStant;
+import com.jiayue.insu.inclientqn.entity.BackStatData;
+import com.jiayue.insu.inclientqn.inenum.ElectricFieldTypeEnum;
+import com.jiayue.insu.inclientqn.inenum.QNHLEnum;
+import com.jiayue.insu.inclientqn.model.RequestVo;
+import com.jiayue.insu.inclientqn.util.DateTimeUtils;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+
+/**
+ * @description:  回传数据请求生成
+ * @author: yuanhao
+ * @createDate: 2022/6/17
+ * @version: 1.0
+ */
+@Service
+@Slf4j
+@RequiredArgsConstructor
+@RefreshScope
+public class BackDataGenService {
+
+    private String headerTemplate = "<! Entity={}  time='{}' !>" + CommonStant.LINE_CONSTANT;
+
+    private final BackStatDataService backStatDataService;
+
+
+    /**
+     * 生成回传实际功率
+     * @param el 场站标识
+     * @return RequestVo
+     */
+    public RequestVo genStateRealPowerData(String el) throws Exception{
+
+        RequestVo requestVo = null;
+
+        long time = DateTimeUtils.get15min(DateUtil.date().getTime());
+        LocalDateTime queryTime = LocalDateTimeUtil.of(time);
+        List<BackStatData> backStatDatas = backStatDataService.findBySignTime(queryTime);
+
+        if(CollectionUtil.isNotEmpty(backStatDatas) && backStatDatas.get(0).getRealPower() !=null){
+            StringBuilder content = new StringBuilder();
+
+            String header = StrUtil.format(headerTemplate,el,DateUtil.parse(DateUtil.now()).toString("yyyy-MM-dd HH:mm:ss"));
+            String labelStart = StrUtil.format("<{}>" + CommonStant.LINE_CONSTANT, QNHLEnum.DATA_STAT_TYPE_RealPower.getCode());
+            String labelEnd = StrUtil.format("</{}>" + CommonStant.LINE_CONSTANT, QNHLEnum.DATA_STAT_TYPE_RealPower.getCode());
+            String title = "@" + CommonStant.SPACE1_CONSTANT + "序号" + CommonStant.SPACE2_CONSTANT + "实发功率值"+CommonStant.LINE_CONSTANT;
+            content.append(header);
+            content.append(labelStart);
+            content.append(title);
+
+            String template = "# 1" + CommonStant.SPACE2_CONSTANT + "{}"+CommonStant.LINE_CONSTANT;
+
+            String dataContent  = StrUtil.format(template,backStatDatas.get(0).getRealPower().toString());
+
+            content.append(dataContent);
+            content.append(labelEnd);
+
+            requestVo = RequestVo.UPLOAD_FORE(el,content.toString());
+        }
+
+
+        return requestVo;
+    }
+
+
+    /**
+     * 生成回传实际气象
+     * @param el 场站标识
+     * @param stationType 场站类型
+     * @return RequestVo
+     */
+    public RequestVo genStateRealWeatherData(String el,String stationType)throws Exception {
+
+        RequestVo requestVo = null;
+
+        long time = DateTimeUtils.get15min(DateUtil.date().getTime());
+        LocalDateTime queryTime = LocalDateTimeUtil.of(time);
+        List<BackStatData> backStatDatas = backStatDataService.findBySignTime(queryTime);
+
+        if(CollectionUtil.isNotEmpty(backStatDatas)){
+            StringBuilder content = new StringBuilder();
+
+            String header = StrUtil.format(headerTemplate,el,DateUtil.parse(DateUtil.now()).toString("yyyy-MM-dd HH:mm:ss"));
+            String labelStart = StrUtil.format("<{}>" + CommonStant.LINE_CONSTANT, QNHLEnum.DATA_STAT_TYPE_RealWeather.getCode());
+            String labelEnd = StrUtil.format("</{}>" + CommonStant.LINE_CONSTANT, QNHLEnum.DATA_STAT_TYPE_RealWeather.getCode());
+            content.append(header);
+            content.append(labelStart);
+            String title = "";
+            String template ="";
+            String dataContent="";
+            BackStatData backStatData = backStatDatas.get(0);
+
+            if(stationType.equals(ElectricFieldTypeEnum.E2.name())){
+                title = "@" + CommonStant.SPACE1_CONSTANT + "序号" + CommonStant.SPACE4_CONSTANT + "风速"+ CommonStant.SPACE4_CONSTANT + "风向"
+                        + CommonStant.SPACE4_CONSTANT + "温度"+ CommonStant.SPACE4_CONSTANT + "湿度"+ CommonStant.SPACE4_CONSTANT + "气压"
+                        +CommonStant.LINE_CONSTANT;
+
+                template = "# 1" + CommonStant.SPACE1_CONSTANT + "{}"+ CommonStant.SPACE4_CONSTANT+ "{}"+ CommonStant.SPACE4_CONSTANT
+                        + "{}"+ CommonStant.SPACE4_CONSTANT+ "{}"+ CommonStant.SPACE4_CONSTANT+ "{}"+ CommonStant.SPACE4_CONSTANT
+                        +CommonStant.LINE_CONSTANT;
+
+                dataContent  = StrUtil.format(template,backStatData.getWs().toString(),backStatData.getWd().toString()
+                        ,backStatData.getTemperature().toString(),backStatData.getHumidity().toString(),backStatData.getPressure().toString());
+
+            }else{
+                title = "@" + CommonStant.SPACE1_CONSTANT + "序号" + CommonStant.SPACE4_CONSTANT + "总辐照度"+ CommonStant.SPACE4_CONSTANT + "直射辐照度"
+                        + CommonStant.SPACE4_CONSTANT + "散射辐照度"+ CommonStant.SPACE4_CONSTANT + "温度"+ CommonStant.SPACE4_CONSTANT + "光伏板温度"
+                        + CommonStant.SPACE4_CONSTANT + "湿度"+ CommonStant.SPACE4_CONSTANT + "气压"+ CommonStant.SPACE4_CONSTANT + "风速"+ CommonStant.SPACE4_CONSTANT + "风向"
+                        +CommonStant.LINE_CONSTANT;
+
+                template = "# 1" + CommonStant.SPACE1_CONSTANT + "{}"+ CommonStant.SPACE4_CONSTANT+ "{}"+ CommonStant.SPACE4_CONSTANT
+                        + "{}"+ CommonStant.SPACE4_CONSTANT+ "{}"+ CommonStant.SPACE4_CONSTANT+ "{}"+ CommonStant.SPACE4_CONSTANT
+                        + "{}"+ CommonStant.SPACE4_CONSTANT+ "{}"+ CommonStant.SPACE4_CONSTANT+ "{}"+ CommonStant.SPACE4_CONSTANT
+                        + "{}"+ CommonStant.SPACE4_CONSTANT+CommonStant.LINE_CONSTANT;
+
+                dataContent  = StrUtil.format(template,backStatData.getGlobalR().toString(),backStatData.getDirectR().toString()
+                        ,backStatData.getDiffuseR().toString(),backStatData.getTemperature().toString(),backStatData.getCellT().toString(),
+                        backStatData.getHumidity().toString(),backStatData.getPressure().toString(),backStatData.getWs().toString(),backStatData.getWd().toString()
+                );
+
+            }
+
+
+            content.append(title);
+            content.append(dataContent);
+            content.append(labelEnd);
+
+            requestVo = RequestVo.UPLOAD_FORE(el,content.toString());
+        }
+
+
+        return requestVo;
+    }
+
+
+    /**
+     * 生成短期上报
+     * @param el 场站标识
+     * @return RequestVo
+     */
+    public RequestVo genStateForecastPowerReport(String el) throws Exception {
+
+        RequestVo requestVo = null;
+
+        long time = DateTimeUtils.get15min(DateUtil.date().getTime());
+        LocalDateTime queryTime = LocalDateTimeUtil.of(time);
+        List<BackStatData> backStatDatas = backStatDataService.findBySignTime(queryTime);
+
+        if(CollectionUtil.isNotEmpty(backStatDatas) && backStatDatas.get(0).getReportStateForecast() !=null){
+            StringBuilder content = new StringBuilder();
+
+            String header = StrUtil.format(headerTemplate,el,DateUtil.parse(DateUtil.now()).toString("yyyy-MM-dd HH:mm:ss"));
+            String labelStart = StrUtil.format("<{}>" + CommonStant.LINE_CONSTANT, QNHLEnum.DATA_STAT_TYPE_ForecastPowerReport.getCode());
+            String labelEnd = StrUtil.format("</{}>" + CommonStant.LINE_CONSTANT, QNHLEnum.DATA_STAT_TYPE_ForecastPowerReport.getCode());
+            String title = "@" + CommonStant.SPACE1_CONSTANT + "序号" + CommonStant.SPACE2_CONSTANT + "上报"+CommonStant.LINE_CONSTANT;
+            content.append(header);
+            content.append(labelStart);
+            content.append(title);
+
+            String template = "# 1" + CommonStant.SPACE2_CONSTANT + "{}"+CommonStant.LINE_CONSTANT;
+
+            String dataContent  = StrUtil.format(template,backStatDatas.get(0).getReportStateForecast().toString());
+
+            content.append(dataContent);
+            content.append(labelEnd);
+
+            requestVo = RequestVo.UPLOAD_FORE(el,content.toString());
+        }
+
+
+        return requestVo;
+    }
+
+
+    /**
+     * 生成超短期上报
+     * @param el 场站标识
+     * @return RequestVo
+     */
+    public RequestVo genStateUltraShortTermForecastReport(String el) throws Exception{
+
+        RequestVo requestVo = null;
+
+        long time = DateTimeUtils.get15min(DateUtil.date().getTime());
+        LocalDateTime queryTime = LocalDateTimeUtil.of(time);
+        List<BackStatData> backStatDatas = backStatDataService.findBySignTime(queryTime);
+
+        if(CollectionUtil.isNotEmpty(backStatDatas) && backStatDatas.get(0).getReportStateForecastshort() !=null){
+            StringBuilder content = new StringBuilder();
+
+            String header = StrUtil.format(headerTemplate,el,DateUtil.parse(DateUtil.now()).toString("yyyy-MM-dd HH:mm:ss"));
+            String labelStart = StrUtil.format("<{}>" + CommonStant.LINE_CONSTANT, QNHLEnum.DATA_STAT_TYPE_UltraShortTermForecastReport.getCode());
+            String labelEnd = StrUtil.format("</{}>" + CommonStant.LINE_CONSTANT, QNHLEnum.DATA_STAT_TYPE_UltraShortTermForecastReport.getCode());
+            String title = "@" + CommonStant.SPACE1_CONSTANT + "序号" + CommonStant.SPACE2_CONSTANT + "上报"+CommonStant.LINE_CONSTANT;
+            content.append(header);
+            content.append(labelStart);
+            content.append(title);
+
+            String template = "# 1" + CommonStant.SPACE2_CONSTANT + "{}"+CommonStant.LINE_CONSTANT;
+
+            String dataContent  = StrUtil.format(template,backStatDatas.get(0).getReportStateForecastshort().toString());
+
+            content.append(dataContent);
+            content.append(labelEnd);
+
+            requestVo = RequestVo.UPLOAD_FORE(el,content.toString());
+        }
+
+
+        return requestVo;
+    }
+
+
+}

+ 61 - 0
in-client-qn/src/main/java/com/jiayue/insu/inclientqn/service/BackDataRequestService.java

@@ -0,0 +1,61 @@
+package com.jiayue.insu.inclientqn.service;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import cn.hutool.core.util.StrUtil;
+import com.jiayue.insu.inclientqn.constant.CommonStant;
+import com.jiayue.insu.inclientqn.entity.BackStatData;
+import com.jiayue.insu.inclientqn.entity.Station;
+import com.jiayue.insu.inclientqn.inenum.ElectricFieldTypeEnum;
+import com.jiayue.insu.inclientqn.inenum.QNHLEnum;
+import com.jiayue.insu.inclientqn.model.RequestVo;
+import com.jiayue.insu.inclientqn.util.DateTimeUtils;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+
+/**
+ * @description:  回传数据请求
+ * @author: yuanhao
+ * @createDate: 2022/6/17
+ * @version: 1.0
+ */
+@Service
+@Slf4j
+@RequiredArgsConstructor
+@RefreshScope
+public class BackDataRequestService {
+
+
+
+    private final BackDataGenService backDataGenService;
+
+    private final StationService stationService;
+
+    public void requestRealPowerData(){
+
+        Station station = stationService.findThis();
+
+        RequestVo requestVo = null;
+        try {
+            requestVo = backDataGenService.genStateRealPowerData(station.getStationCode());
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+
+        if(requestVo!=null){
+
+        }
+
+    }
+
+
+
+
+}

+ 22 - 0
in-client-qn/src/main/java/com/jiayue/insu/inclientqn/service/BackStatDataService.java

@@ -0,0 +1,22 @@
+package com.jiayue.insu.inclientqn.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jiayue.insu.inclientqn.entity.BackStatData;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 回传统计数据接口
+ *
+ * @author yh
+ * @version 1.0
+ * @since 2022/5/22 11:29
+ */
+public interface BackStatDataService extends IService<BackStatData> {
+
+    List<BackStatData> findBySignTime(LocalDateTime time);
+
+
+
+}

+ 35 - 0
in-client-qn/src/main/java/com/jiayue/insu/inclientqn/service/impl/BackStatDataServiceImpl.java

@@ -0,0 +1,35 @@
+package com.jiayue.insu.inclientqn.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jiayue.insu.inclientqn.entity.BackStatData;
+import com.jiayue.insu.inclientqn.entity.CorrforeSt;
+import com.jiayue.insu.inclientqn.mapper.BackStatDataMapper;
+import com.jiayue.insu.inclientqn.mapper.CorrforeStMapper;
+import com.jiayue.insu.inclientqn.service.BackStatDataService;
+import com.jiayue.insu.inclientqn.service.CorrforeStService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 修正数据业务实现
+ *
+ * @author yh
+ * @version 1.0
+ * @since 2022/5/22 11:29
+ */
+@Service
+@Slf4j
+public class BackStatDataServiceImpl extends ServiceImpl<BackStatDataMapper, BackStatData> implements BackStatDataService {
+
+
+    @Override
+    public List<BackStatData> findBySignTime(LocalDateTime time) {
+        LambdaQueryWrapper<BackStatData> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(BackStatData::getSignTime,time);
+        return this.list(lambdaQueryWrapper);
+    }
+}

+ 18 - 0
in-client-qn/src/main/java/com/jiayue/insu/inclientqn/util/DateTimeUtils.java

@@ -0,0 +1,18 @@
+package com.jiayue.insu.inclientqn.util;
+
+public class DateTimeUtils {
+
+    /**
+     * 得到整15分钟时间
+     * @return
+     */
+   public static long get15min(long time){
+
+       if(time%900000L !=0){
+           time = time -  time%900000L;
+       }
+
+       return time;
+
+    }
+}

+ 2 - 2
in-client-qn/src/main/resources/vms/DQ.vm

@@ -1,5 +1,5 @@
 <功率预测::${stationName} date='${date}'>
-@@顺序 	 场站名称	 时刻 	 预测功率
+@@顺序	场站名称	时刻	预测功率
 #foreach( $dq in $vList )
-#${velocityCount}   ${dq.stationName}  ${dq.forecastTime} ${dq.fpValue}
+#${velocityCount}	${dq.stationName}	${dq.forecastTime}	${dq.fpValue}
 #end

+ 0 - 8
in-client-qn/src/main/resources/vms/DQAMEND.vm

@@ -1,8 +0,0 @@
-<! Entity=${sign}  type=AMEND  time='${uploadTime}' !>
-
-<ShortTermForcastAmend>
-@id 时间 预测功率  总辐射  直辐射  散辐射  风速  风向  气温  湿度  压力
-#foreach( $dq in $vList )
-#${velocityCount} ${dq.forecastTime} ${dq.fpValue} ${dq.swr} ${dq.directRadiation} ${dq.diffuseRadiation} ${dq.windspeed} ${dq.windDir} ${dq.temperature} ${dq.humidity} ${dq.pressure}
-#end
-</ShortTermForcastAmend>

+ 30 - 0
in-client-qn/src/test/java/com/jiayue/insu/inclientqn/service/BackDataGenServiceTest.java

@@ -0,0 +1,30 @@
+package com.jiayue.insu.inclientqn.service;
+
+import com.jiayue.insu.inclientqn.BaseTest;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class BackDataGenServiceTest extends BaseTest {
+    @Autowired
+    BackDataGenService backDataGenService;
+
+    @Test
+    void test(){
+        try{
+            backDataGenService.genStateRealPowerData("test");
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+
+    }
+
+    @Test
+    void test1(){
+        try{
+            backDataGenService.genStateRealWeatherData("test","E1");
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+
+    }
+}

+ 11 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/entity/Station.java

@@ -3,7 +3,9 @@ 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 com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.time.LocalDateTime;
 
@@ -65,10 +67,19 @@ public class Station extends BaseEntity {
      */
     LocalDateTime keyTime;
 
+    /**
+     * 上送未来天数
+     */
     Integer days;
 
+    //下载原始数据时间
+    String initDownTime;
 
+    //上送原始数据时间
+    String initPushTime;
 
+    //下载修正数据时间
+    String correctDownTime;
 
 
 }