Browse Source

增加逆变器、风机、理论功率风和光的文件生成

xusl 3 năm trước cách đây
mục cha
commit
e7d3c352fe

+ 157 - 0
ipfcst-common/ipfcst-common-data/src/main/java/com/jiayue/ipfcst/common/data/entity/WindTurbineInfo.java

@@ -0,0 +1,157 @@
+package com.jiayue.ipfcst.common.data.entity;
+
+import com.jiayue.ipfcst.common.data.abst.equipmentinfo.AbstractEquipmentInfo;
+import com.jiayue.ipfcst.common.data.constant.enums.EquipmentTypeEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.validation.constraints.Digits;
+
+/**
+ * 风机实体
+ *
+ * @author zzy
+ * @version 1.0
+ * @since 2019/8/2 10:14
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@Entity
+public class WindTurbineInfo extends AbstractEquipmentInfo {
+    public WindTurbineInfo() {
+        super.setEquipmentType(EquipmentTypeEnum.WINDTURBINE);
+    }
+    /**
+     * 备用字段A 应用于样板机编号
+     */
+    /**
+     * 风机等级
+     */
+    @Column
+    private Integer grade;
+
+    /**
+     * 设计空气密度
+     */
+    @Column
+    private Double airDensity;
+
+    /**
+     * 切入速度
+     */
+    @Column(precision = 7, scale = 4)
+    private Double cutInSpeed;
+
+    /**
+     * 额定风速
+     */
+    @Column(precision = 7, scale = 4)
+    private Double ratedWindSpeed;
+
+    /**
+     * 切出速度
+     */
+    @Column(precision = 7, scale = 4)
+    private Double cutOutSpeed;
+
+    /**
+     * 生存风速
+     */
+    @Column
+    private Double liveWindSpeed;
+
+    /**
+     * 叶轮直径(m)
+     */
+    @Column(precision = 7, scale = 4)
+    private Double windWheelDiameter;
+
+    /**
+     * 最大转速(m)
+     */
+    @Column
+    private Long windWheelMaxSpeed;
+
+    /**
+     * 最小转速(m)
+     */
+    @Column
+    private Long windWheelMinSpeed;
+
+    /**
+     * 额定转速(m)
+     */
+    @Column
+    private Long windWheelRatedSpeed;
+
+    /**
+     * 轮毂高度(m)
+     */
+    @Column(precision = 7, scale = 4)
+    private Double hubHeight;
+
+    /**
+     * 并网日期(m)
+     */
+    @Column(precision = 7, scale = 4)
+    private Long parallelInDate;
+
+
+    /**
+     * 使用寿命
+     */
+    @Column
+    private Double lifeLength;
+
+
+    /**
+     * 最大功率
+     */
+    @Column
+    private Double maxPower;
+
+    /**
+     * 风机是否样板机
+     */
+    @Column
+    private Boolean sample;
+
+    /**
+     * 经度
+     */
+    @Column
+    @Digits(integer = 10, fraction = 4)
+    private Double longitude;
+
+    /**
+     * 纬度
+     */
+    @Column
+    @Digits(integer = 10, fraction = 4)
+    private Double latitude;
+
+    /**
+     * 集电线路
+     */
+    @Column
+    private String collectorCircuit;
+
+    /**
+     * 分期
+     */
+    @Column
+    private String divideIntoDifferentPeriod;
+
+
+    /**
+     * backupA 分期
+     */
+
+    /**
+     * backupB 额定功率
+     */
+
+
+}

+ 22 - 0
ipfcst-common/ipfcst-common-data/src/main/java/com/jiayue/ipfcst/common/data/repository/WindTurbineInfoRepository.java

@@ -0,0 +1,22 @@
+package com.jiayue.ipfcst.common.data.repository;
+
+import com.jiayue.ipfcst.common.data.entity.WindTurbineInfo;
+
+import java.util.List;
+
+/**
+ * 风机实体仓储
+ *
+ * @author zzy
+ * @version 1.0
+ * @since 2019/8/6 13:02
+ */
+public interface WindTurbineInfoRepository extends BaseRepository<WindTurbineInfo, Integer> {
+    /**
+     * 根据ID排序查出所有风机设备信息
+     * yh
+     */
+    List<WindTurbineInfo> findAllByOrderByIdAsc();
+
+    WindTurbineInfo findByName(String name);
+}

+ 1 - 0
ipfcst-console/src/main/java/com/jiayue/ipfcst/fileupload/job/UploadFileE26Job.java

@@ -20,6 +20,7 @@ public class UploadFileE26Job extends BaseJob {
 
   @Override
   public boolean execute(JobDataMap jobDataMap) {
+    e63UploadFileService.generateDqUseFile(null);
     return true;
   }
 }

+ 1 - 0
ipfcst-console/src/main/java/com/jiayue/ipfcst/fileupload/job/UploadFileE27Job.java

@@ -20,6 +20,7 @@ public class UploadFileE27Job extends BaseJob {
 
   @Override
   public boolean execute(JobDataMap jobDataMap) {
+    e63UploadFileService.generateCdqUseFile(null);
     return true;
   }
 }

+ 1 - 0
ipfcst-console/src/main/java/com/jiayue/ipfcst/fileupload/job/UploadFileE2Job.java

@@ -21,6 +21,7 @@ public class UploadFileE2Job extends BaseJob {
 
   @Override
   public boolean execute(JobDataMap jobDataMap) {
+    e63UploadFileService.generateCdqFile(null);
     return true;
   }
 }

+ 1 - 0
ipfcst-console/src/main/java/com/jiayue/ipfcst/fileupload/job/UploadFileE3Job.java

@@ -20,6 +20,7 @@ public class UploadFileE3Job extends BaseJob {
 
   @Override
   public boolean execute(JobDataMap jobDataMap) {
+    e63UploadFileService.generateTheroyFile(null);
     return true;
   }
 }

+ 3 - 2
ipfcst-console/src/main/java/com/jiayue/ipfcst/fileupload/job/UploadFileE9Job.java → ipfcst-console/src/main/java/com/jiayue/ipfcst/fileupload/job/UploadFileE6Job.java

@@ -7,19 +7,20 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 /**
- * 风机文件生成任务
+ * 气象站或者测风塔文件生成任务
  *
  * @author xsl
  * @version 3.0
  * @since 2020/4/15 9:16
  */
 @Service
-public class UploadFileE9Job extends BaseJob {
+public class UploadFileE6Job extends BaseJob {
   @Autowired
   E63UploadFileService e63UploadFileService;
 
   @Override
   public boolean execute(JobDataMap jobDataMap) {
+    e63UploadFileService.generateQxzOrCftFile(null);
     return true;
   }
 }

+ 3 - 2
ipfcst-console/src/main/java/com/jiayue/ipfcst/fileupload/job/UploadFileE7Job.java → ipfcst-console/src/main/java/com/jiayue/ipfcst/fileupload/job/UploadFileE8Job.java

@@ -7,19 +7,20 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 /**
- * 测风塔文件生成任务
+ * 逆变器文件生成任务
  *
  * @author xsl
  * @version 3.0
  * @since 2020/4/15 9:16
  */
 @Service
-public class UploadFileE7Job extends BaseJob {
+public class UploadFileE8Job extends BaseJob {
   @Autowired
   E63UploadFileService e63UploadFileService;
 
   @Override
   public boolean execute(JobDataMap jobDataMap) {
+    e63UploadFileService.generateNbqOrFjFile(null);
     return true;
   }
 }

+ 251 - 9
ipfcst-console/src/main/java/com/jiayue/ipfcst/fileupload/service/E63UploadFileService.java

@@ -5,6 +5,7 @@ import com.jiayue.ipfcst.common.core.util.DateMomentUtil;
 import com.jiayue.ipfcst.common.data.constant.enums.FileTypeEnum;
 import com.jiayue.ipfcst.common.data.entity.*;
 import com.jiayue.ipfcst.common.data.repository.WeatherStationInfoRepository;
+import com.jiayue.ipfcst.common.data.repository.WindTurbineInfoRepository;
 import com.jiayue.ipfcst.common.data.service.uploadfilerule.E63UploadFileRuleService;
 import com.jiayue.ipfcst.console.service.ForecastPowerShortTermService;
 import com.jiayue.ipfcst.console.service.ForecastPowerUltraShortTermService;
@@ -21,9 +22,7 @@ import java.io.File;
 import java.io.StringWriter;
 import java.math.BigDecimal;
 import java.text.DecimalFormat;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -48,12 +47,15 @@ public class E63UploadFileService extends BaseUploadFileService {
 
   private final WeatherStationInfoRepository weatherStationInfoRepository;
 
-  public E63UploadFileService(VelocityEngine velocityEngine, ForecastPowerShortTermService forecastPowerShortTermService, ForecastPowerUltraShortTermService forecastPowerUltraShortTermService, E63UploadFileRuleService e63UploadFileRuleService, WeatherStationInfoRepository weatherStationInfoRepository) {
+  private final WindTurbineInfoRepository windTurbineInfoRepository;
+
+  public E63UploadFileService(VelocityEngine velocityEngine, ForecastPowerShortTermService forecastPowerShortTermService, ForecastPowerUltraShortTermService forecastPowerUltraShortTermService, E63UploadFileRuleService e63UploadFileRuleService, WeatherStationInfoRepository weatherStationInfoRepository, WindTurbineInfoRepository windTurbineInfoRepository) {
     this.velocityEngine = velocityEngine;
     this.forecastPowerShortTermService = forecastPowerShortTermService;
     this.forecastPowerUltraShortTermService = forecastPowerUltraShortTermService;
     this.e63UploadFileRuleService = e63UploadFileRuleService;
     this.weatherStationInfoRepository = weatherStationInfoRepository;
+    this.windTurbineInfoRepository = windTurbineInfoRepository;
   }
 
   /**
@@ -374,7 +376,16 @@ public class E63UploadFileService extends BaseUploadFileService {
   /**
    * 生成气象站或者测风塔上报文件
    */
-  public void generateQxzOrCftFile(ElectricField electricFieldInfo,Date date) {
+  public void generateQxzOrCftFile(Date date) {
+    List<ElectricField> electricFieldList = null;
+    try {
+      electricFieldList = super.getMultipleStation();
+    } catch (BusinessException e) {
+      log.error("场站获取失败", e);
+    }
+
+    // 循环场站生成短期
+    for (ElectricField electricFieldInfo : electricFieldList) {
       String stationCode = electricFieldInfo.getStationCode();
       try {
         String fileName;
@@ -393,24 +404,25 @@ public class E63UploadFileService extends BaseUploadFileService {
           template = this.velocityEngine.getTemplate(this.vmsPath + "/QXZ.vm");
           fileName = e63UploadFileRuleService.getFileNameRule(electricFieldInfo, "E6", endTime + 1000);
           if (getFileName(fileName, "E6", stationCode)) {
-            generateQxzFile(fileName, velocityContext, template, electricFieldInfo, date, startTime, endTime);
+            generateQxzFile(fileName, template, electricFieldInfo, date, startTime, endTime);
           }
         } else {
           template = this.velocityEngine.getTemplate(this.vmsPath + "/CFT.vm");
           fileName = e63UploadFileRuleService.getFileNameRule(electricFieldInfo, "E7", endTime + 1000);
           if (getFileName(fileName, "E7", stationCode)) {
-            generateCftFile(fileName, velocityContext, template, electricFieldInfo, date, startTime, endTime);
+            generateCftFile(fileName, template, electricFieldInfo, date, startTime, endTime);
           }
         }
       } catch (Exception e) {
         log.error(stationCode + "生成文件异常", e);
       }
+    }
   }
 
   /**
    * 生成测风塔上报文件
    */
-  public void generateQxzFile(String fileName, VelocityContext velocityContext, Template template, ElectricField electricFieldInfo, Date date, Long startTime, Long endTime) throws Exception{
+  private void generateQxzFile(String fileName, Template template, ElectricField electricFieldInfo, Date date, Long startTime, Long endTime) throws Exception {
     ///////////////////此处从缓存取///////////////////////////////////////
     WeatherStationStatusData weatherStationStatusData = null;
     // 数据格式化
@@ -461,6 +473,7 @@ public class E63UploadFileService extends BaseUploadFileService {
     }
     directR = globalR.subtract(diffuseR);
     // 根据模板生成文件内容
+    VelocityContext velocityContext = new VelocityContext();
     velocityContext.put("GlobalR", globalR.compareTo(new BigDecimal(-99)) == 0 ? "0.00" : df.format(globalR));
     velocityContext.put("AirT", airT.compareTo(new BigDecimal(-99)) == 0 ? "0.00" : df.format(airT));
     velocityContext.put("P", p.compareTo(new BigDecimal(-99)) == 0 ? "0.00" : df.format(p));
@@ -486,7 +499,7 @@ public class E63UploadFileService extends BaseUploadFileService {
   /**
    * 生成测风塔上报文件
    */
-  public void generateCftFile(String fileName, VelocityContext velocityContext, Template template, ElectricField electricFieldInfo, Date date, Long startTime, Long endTime) throws Exception{
+  private void generateCftFile(String fileName, Template template, ElectricField electricFieldInfo, Date date, Long startTime, Long endTime) throws Exception {
     WindTowerStatusData windTowerStatusData = null;
     // 数据格式化
     DecimalFormat df = new DecimalFormat("0.00");
@@ -597,6 +610,7 @@ public class E63UploadFileService extends BaseUploadFileService {
     // 创建上报文件
     File file = super.createTempFile(fileName);
     // 根据模板生成文件内容
+    VelocityContext velocityContext = new VelocityContext();
     velocityContext.put("WS_10", df.format(ws10));
     velocityContext.put("WD_10", df.format(wd10));
 
@@ -639,6 +653,234 @@ public class E63UploadFileService extends BaseUploadFileService {
   }
 
   /**
+   * 生成逆变器上报文件。
+   */
+  public void generateNbqOrFjFile(Date date) {
+    List<ElectricField> electricFieldList = null;
+    try {
+      electricFieldList = super.getMultipleStation();
+    } catch (BusinessException e) {
+      log.error("场站获取失败", e);
+    }
+    // 循环场站生成短期
+    for (ElectricField electricFieldInfo : electricFieldList) {
+      String stationCode = electricFieldInfo.getStationCode();
+      try {
+        String fileName;
+        // 获取当前系统时间
+        Date systemDate = new Date();
+        if (date != null) {
+          systemDate = date;
+        }
+        Long startTime = DateMomentUtil.getMomentTime(systemDate.getTime() - 5 * 60 * 1000, 1, 5 * 60 * 1000L);
+        Long endTime = startTime + 5 * 60 * 1000 - 1000;
+        // 生成上报文件名格式
+        Template template = null;
+
+        if (electricFieldInfo.getElectricFieldTypeEnum().toString().equals("E1")) {
+          // 获取逆变器模板
+          template = this.velocityEngine.getTemplate(this.vmsPath + "/NBQ.vm");
+          fileName = e63UploadFileRuleService.getFileNameRule(electricFieldInfo, "E8", endTime + 1000);
+          if (getFileName(fileName, "E8", stationCode)) {
+            generateNbqFile(fileName, template, electricFieldInfo, date, startTime, endTime);
+          }
+        } else {
+          template = this.velocityEngine.getTemplate(this.vmsPath + "/FJ.vm");
+          fileName = e63UploadFileRuleService.getFileNameRule(electricFieldInfo, "E9", endTime + 1000);
+          if (getFileName(fileName, "E9", stationCode)) {
+            generateFjFile(fileName, template, electricFieldInfo, date, startTime, endTime);
+          }
+        }
+      } catch (Exception e) {
+        log.error(stationCode + "生成文件异常", e);
+      }
+    }
+  }
+
+  /**
+   * 生成风机上报文件
+   */
+  private void generateFjFile(String fileName, Template template, ElectricField electricFieldInfo, Date date, Long startTime, Long endTime) {
+    Map<String, Object> map = new HashMap<>();
+    // 创建上报文件
+    File file = super.createTempFile(fileName);
+    VelocityContext velocityContext = new VelocityContext();
+    // 根据模板生成文件内容
+    velocityContext.put("vList", null);
+    // 场站标识
+    velocityContext.put("sign", electricFieldInfo.getSign());
+    // 场站装机容量
+    velocityContext.put("capacity", electricFieldInfo.getCapacity());
+    // 系统当前日期
+    velocityContext.put("currentTime", DateFormatUtils.format(endTime + 1000, "yyyy-MM-dd_HH:mm") + ":00");
+    // 上报数据开始日期
+    velocityContext.put("uploadTime", DateFormatUtils.format(endTime + 1000, "yyyy-MM-dd_HH:mm"));
+
+    StringWriter writer = new StringWriter();
+    template.merge(velocityContext, writer);
+    super.copyUploadFile(writer, file, FileTypeEnum.E9.name(), null, date, electricFieldInfo.getStationCode());
+  }
+
+  /**
+   * 生成逆变器上报文件
+   */
+  private void generateNbqFile(String fileName, Template template, ElectricField electricFieldInfo, Date date, Long startTime, Long endTime) {
+    Map<String, Object> map = new HashMap<>();
+    // 创建上报文件
+    File file = super.createTempFile(fileName);
+    VelocityContext velocityContext = new VelocityContext();
+    // 根据模板生成文件内容
+    velocityContext.put("vList", null);
+    // 场站标识
+    velocityContext.put("sign", electricFieldInfo.getSign());
+    // 场站装机容量
+    velocityContext.put("capacity", electricFieldInfo.getCapacity());
+    // 系统当前日期
+    velocityContext.put("currentTime", DateFormatUtils.format(endTime + 1000, "yyyy-MM-dd_HH:mm") + ":00");
+    // 上报数据开始日期
+    velocityContext.put("uploadTime", DateFormatUtils.format(endTime + 1000, "yyyy-MM-dd_HH:mm"));
+    StringWriter writer = new StringWriter();
+    template.merge(velocityContext, writer);
+    super.copyUploadFile(writer, file, FileTypeEnum.E8.name(), null, date, electricFieldInfo.getStationCode());
+  }
+
+  /**
+   * 生成理论功率上报文件
+   */
+  public void generateTheroyFile(Date date) {
+    List<ElectricField> electricFieldList = null;
+    try {
+      electricFieldList = super.getMultipleStation();
+    } catch (BusinessException e) {
+      log.error("场站获取失败", e);
+    }
+
+    // 循环场站生成短期
+    for (ElectricField electricFieldInfo : electricFieldList) {
+      String stationCode = electricFieldInfo.getStationCode();
+      try {
+        String fileName;
+        // 获取当前系统时间
+        Date systemDate = new Date();
+        if (date != null) {
+          systemDate = date;
+        }
+        Long startTime = DateMomentUtil.getMomentTime(systemDate.getTime() - 5 * 60 * 1000, 1, 5 * 60 * 1000L);
+        Long endTime = startTime + 5 * 60 * 1000 - 1000;
+        // 生成上报文件名格式
+        Template template = null;
+        if (electricFieldInfo.getElectricFieldTypeEnum().toString().equals("E1")) {
+          // 获取气象站模板
+          template = this.velocityEngine.getTemplate(this.vmsPath + "/THEROY.vm");
+          fileName = e63UploadFileRuleService.getFileNameRule(electricFieldInfo, "E3", endTime + 1000);
+          if (getFileName(fileName, "E3", stationCode)) {
+            // 理论功率光
+            generatePvTheroyFile(fileName, template, electricFieldInfo, date, startTime, endTime);
+          }
+        } else {
+          template = this.velocityEngine.getTemplate(this.vmsPath + "/THEROY_F.vm");
+          fileName = e63UploadFileRuleService.getFileNameRule(electricFieldInfo, "E85", endTime + 1000);
+          if (getFileName(fileName, "E85", stationCode)) {
+            // 理论功率风
+            generateWpTheroyFile(fileName, template, electricFieldInfo, date, startTime, endTime);
+          }
+        }
+      } catch (Exception e) {
+        log.error(stationCode + "生成文件异常", e);
+      }
+    }
+  }
+
+  /**
+   * 生成理论功率光上报文件
+   */
+  private void generatePvTheroyFile(String fileName, Template template, ElectricField electricFieldInfo, Date date, Long startTime, Long endTime) {
+    // powerStationStatusDataList需要从缓存获取
+    List<PowerStationStatusData> powerStationStatusDataList = new ArrayList<>();
+    // 样板机变量
+    float ableValueAfter = 0f;
+    // 辐照仪变量
+    float theoryValueAfter = 0f;
+    if (powerStationStatusDataList.size() > 0) {
+      // 实际功率按时间降序
+      powerStationStatusDataList.sort(Comparator.comparing(PowerStationStatusData::getTime).reversed());
+      // 对预测值保留2位小数显示输出
+      DecimalFormat df = new DecimalFormat("0.00");
+      // 取最后一个时间的数据
+      PowerStationStatusData powerStationStatusData = powerStationStatusDataList.get(0);
+      ableValueAfter = Float.parseFloat(df.format(powerStationStatusData.getAbleValue().compareTo(new BigDecimal(-99)) == 0 ? new BigDecimal(0) : powerStationStatusData.getAbleValue()));
+      theoryValueAfter = Float.parseFloat(df.format(powerStationStatusData.getTheoryValue().compareTo(new BigDecimal(-99)) == 0 ? new BigDecimal(0) : powerStationStatusData.getTheoryValue()));
+    }
+    // 创建上报文件
+    File file = super.createTempFile(fileName);
+    // 根据模板生成文件内容
+    VelocityContext velocityContext = new VelocityContext();
+    // 样板机
+    velocityContext.put("ableValueAfter", ableValueAfter);
+    // 辐照仪
+    velocityContext.put("theoryValueAfter", theoryValueAfter);
+    // 场站标识
+    velocityContext.put("sign", electricFieldInfo.getSign());
+    // 系统当前日期
+    velocityContext.put("currentTime", DateFormatUtils.format(endTime + 1000, "yyyy-MM-dd_HH:mm") + ":00");
+    // 上报数据开始日期
+    velocityContext.put("uploadTime", DateFormatUtils.format(endTime + 1000 * 60 * 5 + 1000, "yyyy-MM-dd_HH:mm"));
+    StringWriter writer = new StringWriter();
+    template.merge(velocityContext, writer);
+    super.copyUploadFile(writer, file, FileTypeEnum.E3.name(), null, date, electricFieldInfo.getStationCode());
+  }
+
+  /**
+   * 生成理论功率风上报文件
+   */
+  private void generateWpTheroyFile(String fileName, Template template, ElectricField electricFieldInfo, Date date, Long startTime, Long endTime) {
+    // powerStationStatusDataList需要从缓存获取
+    List<PowerStationStatusData> powerStationStatusDataList = new ArrayList<>();
+    // 可用
+    float ableValueAfter = 0f;
+    // 理论
+    float theoryValueAfter = 0f;
+    //样板机
+    float referencePowerBySampleAfter = 0f;
+    //测风
+    float referencePowerByMeasuringAfter = 0f;
+
+    if (powerStationStatusDataList.size() > 0) {
+      // 实际功率按时间降序
+      powerStationStatusDataList.sort(Comparator.comparing(PowerStationStatusData::getTime).reversed());
+      // 对预测值保留2位小数显示输出
+      DecimalFormat df = new DecimalFormat("0.00");
+      // 取最后一个时间的数据
+      PowerStationStatusData powerStationStatusData = powerStationStatusDataList.get(0);
+      ableValueAfter = Float.parseFloat(df.format(powerStationStatusData.getAbleValue().compareTo(new BigDecimal(-99)) == 0 ? new BigDecimal(0) : powerStationStatusData.getAbleValue()));
+      theoryValueAfter = Float.parseFloat(df.format(powerStationStatusData.getTheoryValue().compareTo(new BigDecimal(-99)) == 0 ? new BigDecimal(0) : powerStationStatusData.getTheoryValue()));
+      referencePowerBySampleAfter = Float.parseFloat(df.format(powerStationStatusData.getReferencePowerBySample().compareTo(new BigDecimal(-99)) == 0 ? new BigDecimal(0) : powerStationStatusData.getReferencePowerBySample()));
+      referencePowerByMeasuringAfter = Float.parseFloat(df.format(powerStationStatusData.getReferencePowerByMeasuring().compareTo(new BigDecimal(-99)) == 0 ? new BigDecimal(0) : powerStationStatusData.getReferencePowerByMeasuring()));
+    }
+    // 创建上报文件
+    File file = super.createTempFile(fileName);
+    // 根据模板生成文件内容
+    VelocityContext velocityContext = new VelocityContext();
+    // 样板机
+    velocityContext.put("ableValueAfter", ableValueAfter);
+    // 辐照仪
+    velocityContext.put("theoryValueAfter", theoryValueAfter);
+    // 样板机
+    velocityContext.put("referencePowerBySampleAfter", referencePowerBySampleAfter);
+    // 测风
+    velocityContext.put("referencePowerByMeasuringAfter", referencePowerByMeasuringAfter);
+    // 场站标识
+    velocityContext.put("sign", electricFieldInfo.getSign());
+    // 系统当前日期
+    velocityContext.put("currentTime", DateFormatUtils.format(endTime + 1000, "yyyy-MM-dd_HH:mm") + ":00");
+    // 上报数据开始日期
+    velocityContext.put("uploadTime", DateFormatUtils.format(endTime + 1000 * 60 * 5 + 1000, "yyyy-MM-dd_HH:mm") + ":00");
+    StringWriter writer = new StringWriter();
+    template.merge(velocityContext, writer);
+    super.copyUploadFile(writer, file, FileTypeEnum.E85.name(), null, date, electricFieldInfo.getStationCode());
+  }
+
+  /**
    * 除法
    *
    * @param v1

+ 21 - 81
ipfcst-console/src/main/java/com/jiayue/ipfcst/fileupload/service/UploadFileLogService.java

@@ -407,24 +407,24 @@ public class UploadFileLogService {
             switch (uploadFileLog.getFileTypeEnum().name()) {
               case "E1":
                 // 短期
-                e63UploadFileService.generateE1File(date);
+                e63UploadFileService.generateDqFile(date);
+                break;
+              case "E2":
+                // 超短期
+                e63UploadFileService.generateCdqFile(date);
                 break;
-//              case "E2":
-//                // 超短期
-//                e63UploadFileService.generateE2File(date);
-//                break;
 //              case "E3":
 //                // 理论功率
 //                e63UploadFileService.generateE3File(date);
 //                break;
-//              case "E6":
-//                // 气象站
-//                e63UploadFileService.generateE6File(date);
-//                break;
-//              case "E7":
-//                // 测风塔
-//                e63UploadFileService.generateE7File(date);
-//                break;
+              case "E6":
+                // 气象站
+                e63UploadFileService.generateQxzOrCftFile(date);
+                break;
+              case "E7":
+                // 测风塔
+                e63UploadFileService.generateQxzOrCftFile(date);
+                break;
 //              case "E8":
 //                // 逆变器
 //                e63UploadFileService.generateE8File(date);
@@ -433,74 +433,14 @@ public class UploadFileLogService {
 //                // 风机
 //                e63UploadFileService.generateE9File(date);
 //                break;
-//              case "E26":
-//                // 短期可用
-//                e63UploadFileService.generateE26File(date);
-//                break;
-//              case "E27":
-//                // 超短期可用
-//                e63UploadFileService.generateE27File(date);
-//                break;
-//              case "E29":
-//                // 短期预测风速风向
-//                e63UploadFileService.generateE29File(date);
-//                break;
-//              case "E45":
-//                // 超短期预测风速风向
-//                e63UploadFileService.generateE45File(date);
-//                break;
-//              case "E30":
-//                // 实测功率
-//                e63UploadFileService.generateE30File(date);
-//                break;
-//              case "E31":
-//                // 短期辐照度
-//                e63UploadFileService.generateE31File(date);
-//                break;
-//              case "E47":
-//                // 超短期辐照度
-//                e63UploadFileService.generateE47File(date);
-//                break;
-//              case "E32":
-//                // 短期日志
-//                e63UploadFileService.generateE32File(date);
-//                break;
-//              case "E33":
-//                // 超短期日志
-//                e63UploadFileService.generateE33File(date);
-//                break;
-//              case "E34":
-//                // 可用短期日志
-//                e63UploadFileService.generateE34File(date);
-//                break;
-//              case "E35":
-//                // 可用超短期日之
-//                e63UploadFileService.generateE35File(date);
-//                break;
-//              case "E36":
-//                // 气象站日志
-//                e63UploadFileService.generateE36File(date);
-//                break;
-//              case "E37":
-//                // 理论功率日志
-//                e63UploadFileService.generateE37File(date);
-//                break;
-//              case "E38":
-//                // 逆变器日志
-//                e63UploadFileService.generateE38File(date);
-//                break;
-//              case "E39":
-//                // 风机日志
-//                e63UploadFileService.generateE39File(date);
-//                break;
-//              case "E40":
-//                // 测风塔日志
-//                e63UploadFileService.generateE40File(date);
-//                break;
-//              case "E41":
-//                // 指标数据
-//                e63UploadFileService.generateE41File(date);
-//                break;
+              case "E26":
+                // 短期可用
+                e63UploadFileService.generateDqUseFile(date);
+                break;
+              case "E27":
+                // 超短期可用
+                e63UploadFileService.generateCdqUseFile(date);
+                break;
 //              case "E85":
 //                // 理论功率风
 //                e63UploadFileService.generateE85File(date);

+ 8 - 8
ipfcst-console/src/main/resources/sql/jobload/E63_JOB.sql

@@ -10,8 +10,8 @@ INSERT INTO qrtz_locks (SCHED_NAME, LOCK_NAME) VALUES ('defaultScheduler', 'TRIG
 DELETE FROM qrtz_cron_triggers;
 INSERT INTO qrtz_cron_triggers (TRIGGER_GROUP, TRIGGER_NAME, SCHED_NAME, CRON_EXPRESSION, TIME_ZONE_ID) VALUES ('DEFAULT', 'UploadFileE1Job', 'defaultScheduler', '0 1-15 7 * * ?', 'Asia/Shanghai');
 INSERT INTO qrtz_cron_triggers (TRIGGER_GROUP, TRIGGER_NAME, SCHED_NAME, CRON_EXPRESSION, TIME_ZONE_ID) VALUES ('DEFAULT', 'UploadFileE2Job', 'defaultScheduler', '10 0/1 * * * ?', 'Asia/Shanghai');
-INSERT INTO qrtz_cron_triggers (TRIGGER_GROUP, TRIGGER_NAME, SCHED_NAME, CRON_EXPRESSION, TIME_ZONE_ID) VALUES ('DEFAULT', 'UploadFileE7Job', 'defaultScheduler', '30 0/1 * * * ?', 'Asia/Shanghai');
-INSERT INTO qrtz_cron_triggers (TRIGGER_GROUP, TRIGGER_NAME, SCHED_NAME, CRON_EXPRESSION, TIME_ZONE_ID) VALUES ('DEFAULT', 'UploadFileE9Job', 'defaultScheduler', '20 0/1 * * * ?', 'Asia/Shanghai');
+INSERT INTO qrtz_cron_triggers (TRIGGER_GROUP, TRIGGER_NAME, SCHED_NAME, CRON_EXPRESSION, TIME_ZONE_ID) VALUES ('DEFAULT', 'UploadFileE6Job', 'defaultScheduler', '30 0/1 * * * ?', 'Asia/Shanghai');
+INSERT INTO qrtz_cron_triggers (TRIGGER_GROUP, TRIGGER_NAME, SCHED_NAME, CRON_EXPRESSION, TIME_ZONE_ID) VALUES ('DEFAULT', 'UploadFileE8Job', 'defaultScheduler', '20 0/1 * * * ?', 'Asia/Shanghai');
 INSERT INTO qrtz_cron_triggers (TRIGGER_GROUP, TRIGGER_NAME, SCHED_NAME, CRON_EXPRESSION, TIME_ZONE_ID) VALUES ('DEFAULT', 'UploadFileE26Job', 'defaultScheduler', '0 16-50 6 * * ?', 'Asia/Shanghai');
 INSERT INTO qrtz_cron_triggers (TRIGGER_GROUP, TRIGGER_NAME, SCHED_NAME, CRON_EXPRESSION, TIME_ZONE_ID) VALUES ('DEFAULT', 'UploadFileE27Job', 'defaultScheduler', '15 0/1 * * * ?', 'Asia/Shanghai');
 INSERT INTO qrtz_cron_triggers (TRIGGER_GROUP, TRIGGER_NAME, SCHED_NAME, CRON_EXPRESSION, TIME_ZONE_ID) VALUES ('DEFAULT', 'UploadFileE3Job', 'defaultScheduler', '15 0/1 * * * ?', 'Asia/Shanghai');
@@ -22,8 +22,8 @@ INSERT INTO qrtz_cron_triggers (TRIGGER_GROUP, TRIGGER_NAME, SCHED_NAME, CRON_EX
 DELETE FROM qrtz_job_details;
 INSERT INTO qrtz_job_details (JOB_GROUP, SCHED_NAME, JOB_NAME, DESCRIPTION, JOB_CLASS_NAME, IS_NONCONCURRENT, REQUESTS_RECOVERY, IS_DURABLE, IS_UPDATE_DATA, JOB_DATA) VALUES ('DEFAULT', 'defaultScheduler', 'UploadFileE1Job', NULL, 'com.jiayue.ipfcst.fileupload.job.UploadFileE1Job', '0', '0', '0', '0', NULL);
 INSERT INTO qrtz_job_details (JOB_GROUP, SCHED_NAME, JOB_NAME, DESCRIPTION, JOB_CLASS_NAME, IS_NONCONCURRENT, REQUESTS_RECOVERY, IS_DURABLE, IS_UPDATE_DATA, JOB_DATA) VALUES ('DEFAULT', 'defaultScheduler', 'UploadFileE2Job', NULL, 'com.jiayue.ipfcst.fileupload.job.UploadFileE2Job', '0', '0', '0', '0', NULL);
-INSERT INTO qrtz_job_details (JOB_GROUP, SCHED_NAME, JOB_NAME, DESCRIPTION, JOB_CLASS_NAME, IS_NONCONCURRENT, REQUESTS_RECOVERY, IS_DURABLE, IS_UPDATE_DATA, JOB_DATA) VALUES ('DEFAULT', 'defaultScheduler', 'UploadFileE7Job', NULL, 'com.jiayue.ipfcst.fileupload.job.UploadFileE7Job', '0', '0', '0', '0', NULL);
-INSERT INTO qrtz_job_details (JOB_GROUP, SCHED_NAME, JOB_NAME, DESCRIPTION, JOB_CLASS_NAME, IS_NONCONCURRENT, REQUESTS_RECOVERY, IS_DURABLE, IS_UPDATE_DATA, JOB_DATA) VALUES ('DEFAULT', 'defaultScheduler', 'UploadFileE9Job', NULL, 'com.jiayue.ipfcst.fileupload.job.UploadFileE9Job', '0', '0', '0', '0', NULL);
+INSERT INTO qrtz_job_details (JOB_GROUP, SCHED_NAME, JOB_NAME, DESCRIPTION, JOB_CLASS_NAME, IS_NONCONCURRENT, REQUESTS_RECOVERY, IS_DURABLE, IS_UPDATE_DATA, JOB_DATA) VALUES ('DEFAULT', 'defaultScheduler', 'UploadFileE6Job', NULL, 'com.jiayue.ipfcst.fileupload.job.UploadFileE6Job', '0', '0', '0', '0', NULL);
+INSERT INTO qrtz_job_details (JOB_GROUP, SCHED_NAME, JOB_NAME, DESCRIPTION, JOB_CLASS_NAME, IS_NONCONCURRENT, REQUESTS_RECOVERY, IS_DURABLE, IS_UPDATE_DATA, JOB_DATA) VALUES ('DEFAULT', 'defaultScheduler', 'UploadFileE8Job', NULL, 'com.jiayue.ipfcst.fileupload.job.UploadFileE8Job', '0', '0', '0', '0', NULL);
 INSERT INTO qrtz_job_details (JOB_GROUP, SCHED_NAME, JOB_NAME, DESCRIPTION, JOB_CLASS_NAME, IS_NONCONCURRENT, REQUESTS_RECOVERY, IS_DURABLE, IS_UPDATE_DATA, JOB_DATA) VALUES ('DEFAULT', 'defaultScheduler', 'UploadFileE26Job', NULL, 'com.jiayue.ipfcst.fileupload.job.UploadFileE26Job', '0', '0', '0', '0', NULL);
 INSERT INTO qrtz_job_details (JOB_GROUP, SCHED_NAME, JOB_NAME, DESCRIPTION, JOB_CLASS_NAME, IS_NONCONCURRENT, REQUESTS_RECOVERY, IS_DURABLE, IS_UPDATE_DATA, JOB_DATA) VALUES ('DEFAULT', 'defaultScheduler', 'UploadFileE27Job', NULL, 'com.jiayue.ipfcst.fileupload.job.UploadFileE27Job', '0', '0', '0', '0', NULL);
 INSERT INTO qrtz_job_details (JOB_GROUP, SCHED_NAME, JOB_NAME, DESCRIPTION, JOB_CLASS_NAME, IS_NONCONCURRENT, REQUESTS_RECOVERY, IS_DURABLE, IS_UPDATE_DATA, JOB_DATA) VALUES ('DEFAULT', 'defaultScheduler', 'UploadFileE3Job', NULL, 'com.jiayue.ipfcst.fileupload.job.UploadFileE3Job', '0', '0', '0', '0', NULL);
@@ -35,8 +35,8 @@ INSERT INTO qrtz_job_details (JOB_GROUP, SCHED_NAME, JOB_NAME, DESCRIPTION, JOB_
 DELETE FROM qrtz_triggers;
 INSERT INTO qrtz_triggers (TRIGGER_GROUP, TRIGGER_NAME, SCHED_NAME, DESCRIPTION, START_TIME, JOB_NAME, END_TIME, NEXT_FIRE_TIME, TRIGGER_STATE, CALENDAR_NAME, PREV_FIRE_TIME, JOB_GROUP, JOB_DATA, TRIGGER_TYPE, MISFIRE_INSTR, PRIORITY) VALUES ('DEFAULT', 'UploadFileE1Job', 'defaultScheduler', NULL, '1604305788000', 'UploadFileE1Job', '0', '1604559900000', 'WAITING', NULL, '-1', 'DEFAULT', '', 'CRON', '2', '0');
 INSERT INTO qrtz_triggers (TRIGGER_GROUP, TRIGGER_NAME, SCHED_NAME, DESCRIPTION, START_TIME, JOB_NAME, END_TIME, NEXT_FIRE_TIME, TRIGGER_STATE, CALENDAR_NAME, PREV_FIRE_TIME, JOB_GROUP, JOB_DATA, TRIGGER_TYPE, MISFIRE_INSTR, PRIORITY) VALUES ('DEFAULT', 'UploadFileE2Job', 'defaultScheduler', NULL, '1604305788000', 'UploadFileE2Job', '0', '1604559900000', 'WAITING', NULL, '-1', 'DEFAULT', '', 'CRON', '2', '0');
-INSERT INTO qrtz_triggers (TRIGGER_GROUP, TRIGGER_NAME, SCHED_NAME, DESCRIPTION, START_TIME, JOB_NAME, END_TIME, NEXT_FIRE_TIME, TRIGGER_STATE, CALENDAR_NAME, PREV_FIRE_TIME, JOB_GROUP, JOB_DATA, TRIGGER_TYPE, MISFIRE_INSTR, PRIORITY) VALUES ('DEFAULT', 'UploadFileE7Job', 'defaultScheduler', NULL, '1604305788000', 'UploadFileE7Job', '0', '1604559900000', 'WAITING', NULL, '-1', 'DEFAULT', '', 'CRON', '2', '0');
-INSERT INTO qrtz_triggers (TRIGGER_GROUP, TRIGGER_NAME, SCHED_NAME, DESCRIPTION, START_TIME, JOB_NAME, END_TIME, NEXT_FIRE_TIME, TRIGGER_STATE, CALENDAR_NAME, PREV_FIRE_TIME, JOB_GROUP, JOB_DATA, TRIGGER_TYPE, MISFIRE_INSTR, PRIORITY) VALUES ('DEFAULT', 'UploadFileE9Job', 'defaultScheduler', NULL, '1604305788000', 'UploadFileE9Job', '0', '1604559900000', 'WAITING', NULL, '-1', 'DEFAULT', '', 'CRON', '2', '0');
+INSERT INTO qrtz_triggers (TRIGGER_GROUP, TRIGGER_NAME, SCHED_NAME, DESCRIPTION, START_TIME, JOB_NAME, END_TIME, NEXT_FIRE_TIME, TRIGGER_STATE, CALENDAR_NAME, PREV_FIRE_TIME, JOB_GROUP, JOB_DATA, TRIGGER_TYPE, MISFIRE_INSTR, PRIORITY) VALUES ('DEFAULT', 'UploadFileE6Job', 'defaultScheduler', NULL, '1604305788000', 'UploadFileE6Job', '0', '1604559900000', 'WAITING', NULL, '-1', 'DEFAULT', '', 'CRON', '2', '0');
+INSERT INTO qrtz_triggers (TRIGGER_GROUP, TRIGGER_NAME, SCHED_NAME, DESCRIPTION, START_TIME, JOB_NAME, END_TIME, NEXT_FIRE_TIME, TRIGGER_STATE, CALENDAR_NAME, PREV_FIRE_TIME, JOB_GROUP, JOB_DATA, TRIGGER_TYPE, MISFIRE_INSTR, PRIORITY) VALUES ('DEFAULT', 'UploadFileE8Job', 'defaultScheduler', NULL, '1604305788000', 'UploadFileE8Job', '0', '1604559900000', 'WAITING', NULL, '-1', 'DEFAULT', '', 'CRON', '2', '0');
 INSERT INTO qrtz_triggers (TRIGGER_GROUP, TRIGGER_NAME, SCHED_NAME, DESCRIPTION, START_TIME, JOB_NAME, END_TIME, NEXT_FIRE_TIME, TRIGGER_STATE, CALENDAR_NAME, PREV_FIRE_TIME, JOB_GROUP, JOB_DATA, TRIGGER_TYPE, MISFIRE_INSTR, PRIORITY) VALUES ('DEFAULT', 'UploadFileE26Job', 'defaultScheduler', NULL, '1604305788000', 'UploadFileE26Job', '0', '1604559900000', 'WAITING', NULL, '-1', 'DEFAULT', '', 'CRON', '2', '0');
 INSERT INTO qrtz_triggers (TRIGGER_GROUP, TRIGGER_NAME, SCHED_NAME, DESCRIPTION, START_TIME, JOB_NAME, END_TIME, NEXT_FIRE_TIME, TRIGGER_STATE, CALENDAR_NAME, PREV_FIRE_TIME, JOB_GROUP, JOB_DATA, TRIGGER_TYPE, MISFIRE_INSTR, PRIORITY) VALUES ('DEFAULT', 'UploadFileE27Job', 'defaultScheduler', NULL, '1604305788000', 'UploadFileE27Job', '0', '1604559900000', 'WAITING', NULL, '-1', 'DEFAULT', '', 'CRON', '2', '0');
 INSERT INTO qrtz_triggers (TRIGGER_GROUP, TRIGGER_NAME, SCHED_NAME, DESCRIPTION, START_TIME, JOB_NAME, END_TIME, NEXT_FIRE_TIME, TRIGGER_STATE, CALENDAR_NAME, PREV_FIRE_TIME, JOB_GROUP, JOB_DATA, TRIGGER_TYPE, MISFIRE_INSTR, PRIORITY) VALUES ('DEFAULT', 'UploadFileE3Job', 'defaultScheduler', NULL, '1604305788000', 'UploadFileE3Job', '0', '1604559900000', 'WAITING', NULL, '-1', 'DEFAULT', '', 'CRON', '2', '0');
@@ -47,8 +47,8 @@ INSERT INTO qrtz_triggers (TRIGGER_GROUP, TRIGGER_NAME, SCHED_NAME, DESCRIPTION,
 DELETE FROM t_quartz;
 INSERT INTO t_quartz (C_ID, C_JOB_NAME, C_JOB_STATE, C_EXECUTE_CLASS, C_DESCRIPTION, C_CRON_EXPRESSION, C_JOB_TYPE, C_START_TIME, C_STATION_CODE) VALUES ('2', 'UploadFileE1Job', '正常', 'com.jiayue.ipfcst.fileupload.job.UploadFileE1Job', '短期', '0 1-15 7 * * ?', 'fileCreate', '1604305788000', NULL);
 INSERT INTO t_quartz (C_ID, C_JOB_NAME, C_JOB_STATE, C_EXECUTE_CLASS, C_DESCRIPTION, C_CRON_EXPRESSION, C_JOB_TYPE, C_START_TIME, C_STATION_CODE) VALUES ('3', 'UploadFileE2Job', '正常', 'com.jiayue.ipfcst.fileupload.job.UploadFileE2Job', '超短期', '10 0/1 * * * ?', 'fileCreate', '1604305788000', NULL);
-INSERT INTO t_quartz (C_ID, C_JOB_NAME, C_JOB_STATE, C_EXECUTE_CLASS, C_DESCRIPTION, C_CRON_EXPRESSION, C_JOB_TYPE, C_START_TIME, C_STATION_CODE) VALUES ('5', 'UploadFileE7Job', '正常', 'com.jiayue.ipfcst.fileupload.job.UploadFileE7Job', '测风塔/气象站', '30 0/1 * * * ?', 'fileCreate', '1604305788000', NULL);
-INSERT INTO t_quartz (C_ID, C_JOB_NAME, C_JOB_STATE, C_EXECUTE_CLASS, C_DESCRIPTION, C_CRON_EXPRESSION, C_JOB_TYPE, C_START_TIME, C_STATION_CODE) VALUES ('6', 'UploadFileE9Job', '正常', 'com.jiayue.ipfcst.fileupload.job.UploadFileE9Job', '风机/逆变器', '20 0/1 * * * ?', 'fileCreate', '1604305788000', NULL);
+INSERT INTO t_quartz (C_ID, C_JOB_NAME, C_JOB_STATE, C_EXECUTE_CLASS, C_DESCRIPTION, C_CRON_EXPRESSION, C_JOB_TYPE, C_START_TIME, C_STATION_CODE) VALUES ('5', 'UploadFileE6Job', '正常', 'com.jiayue.ipfcst.fileupload.job.UploadFileE6Job', '测风塔/气象站', '30 0/1 * * * ?', 'fileCreate', '1604305788000', NULL);
+INSERT INTO t_quartz (C_ID, C_JOB_NAME, C_JOB_STATE, C_EXECUTE_CLASS, C_DESCRIPTION, C_CRON_EXPRESSION, C_JOB_TYPE, C_START_TIME, C_STATION_CODE) VALUES ('6', 'UploadFileE8Job', '正常', 'com.jiayue.ipfcst.fileupload.job.UploadFileE8Job', '风机/逆变器', '20 0/1 * * * ?', 'fileCreate', '1604305788000', NULL);
 INSERT INTO t_quartz (C_ID, C_JOB_NAME, C_JOB_STATE, C_EXECUTE_CLASS, C_DESCRIPTION, C_CRON_EXPRESSION, C_JOB_TYPE, C_START_TIME, C_STATION_CODE) VALUES ('7', 'UploadFileE26Job', '正常', 'com.jiayue.ipfcst.fileupload.job.UploadFileE26Job', '短期可用', '0 16-50 6 * * ?', 'fileCreate', '1604305788000', NULL);
 INSERT INTO t_quartz (C_ID, C_JOB_NAME, C_JOB_STATE, C_EXECUTE_CLASS, C_DESCRIPTION, C_CRON_EXPRESSION, C_JOB_TYPE, C_START_TIME, C_STATION_CODE) VALUES ('8', 'UploadFileE27Job', '正常', 'com.jiayue.ipfcst.fileupload.job.UploadFileE27Job', '超短期可用', '15 0/1 * * * ?', 'fileCreate', '1604305788000', NULL);
 INSERT INTO t_quartz (C_ID, C_JOB_NAME, C_JOB_STATE, C_EXECUTE_CLASS, C_DESCRIPTION, C_CRON_EXPRESSION, C_JOB_TYPE, C_START_TIME, C_STATION_CODE) VALUES ('20', 'UploadFileE3Job', '正常', 'com.jiayue.ipfcst.fileupload.job.UploadFileE3Job', '青海理论功率', '15 0/1 * * * ?', 'fileCreate', '1604305788000', NULL);

+ 1 - 12
ipfcst-console/src/test/java/com/jiayue/ipfcst/fileupload/service/E63UploadFileServiceTest.java

@@ -30,17 +30,6 @@ public class E63UploadFileServiceTest extends BaseTest {
 
   @Test
   public void testCreateFile() throws Exception{
-    List<ElectricField> electricFieldList = null;
-    try {
-      electricFieldList = electricFieldService.getAll();
-    } catch (Exception e) {
-      log.error("场站获取失败", e);
-    }
-
-    // 循环场站生成短期
-    for (ElectricField electricFieldInfo : electricFieldList) {
-      e63UploadFileService.generateQxzOrCftFile(electricFieldInfo,new Date());
-    }
-
+      e63UploadFileService.generateQxzOrCftFile(new Date());
   }
 }