yuanhao 2 yıl önce
ebeveyn
işleme
2347bc3387
27 değiştirilmiş dosya ile 986 ekleme ve 210 silme
  1. 6 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/constant/AnalysisStant.java
  2. 1 1
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/constant/CommonStant.java
  3. 0 46
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/constant/ConnectConstant.java
  4. 0 119
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/constant/StatusConstant.java
  5. 0 1
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/entity/BackForeForecastData.java
  6. 39 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/entity/BaseCorrectTime.java
  7. 40 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/entity/CorrectUltraShortTerm.java
  8. 47 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/entity/RepairPlan.java
  9. 1 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/inenum/StatusEnum.java
  10. 0 25
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/job/BackDataAnalysisJob.java
  11. 45 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/job/CorrectUsJob.java
  12. 44 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/job/RepairPlanJob.java
  13. 16 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/mapper/CorrectUltraShortTermMapper.java
  14. 16 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/mapper/RepairPlanMapper.java
  15. 24 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/model/RequestVo.java
  16. 22 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/service/CorrectUltraShortTermService.java
  17. 18 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/service/RepairPlanService.java
  18. 310 10
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/service/client/BackDataAnalysisService.java
  19. 0 2
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/service/client/BackDataGenBodyService.java
  20. 296 6
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/service/client/CorrforeService.java
  21. 3 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/service/client/InitRunner.java
  22. 29 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/service/impl/CorrectUltraShortTermServiceImpl.java
  23. 22 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/service/impl/RepairPlanServiceImpl.java
  24. 2 0
      in-client-qn/src/main/java/com/jiayue/insu/inclientqn/util/RequestUtils.java
  25. 1 0
      in-client-qn/src/main/resources/vms/RP.vm
  26. 1 0
      in-client-qn/src/main/resources/vms/US.vm
  27. 3 0
      in-client-qn/src/test/java/com/jiayue/insu/inclientqn/service/BackDataGenServiceTest.java

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

@@ -0,0 +1,6 @@
+package com.jiayue.insu.inclientqn.constant;
+
+public interface AnalysisStant {
+
+    String RECORD_TYPE_PULL_CORRECT = "PULL_CORRECT";
+}

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

@@ -46,7 +46,7 @@ public interface CommonStant {
      */
     String RECORD_TYPE_BACK_DATA = "BACK_DATA";
 
-
+    String RECORD_TYPE_CORRECT_DATA = "CORRECT_DATA";
     /**
      * 换行
      */

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

@@ -1,46 +0,0 @@
-package com.jiayue.insu.inclientqn.constant;
-
-/**
- * @description: 交互常量
- * @author: yuanhao
- * @createDate: 2021/8/20
- * @version: 1.0
- */
-public class ConnectConstant {
-
-    /**
-     * 数据传输类型:功率预测主站下发
-     */
-    public static String  TRANSFER_TYPE_DOWNLOAD = "download";
-    /**
-     * 数据传输类型:功率预测子站回传
-     */
-    public static String  TRANSFER_TYPE_UPLOAD = "upload";
-    /**
-     * 数据传输类型:一体化平台修正下发
-     */
-    public static String  TRANSFER_TYPE_CORRECT = "correct";
-
-    /**
-     * 换行
-     */
-    public static String LINE_CONSTANT ="\n";
-    /**
-     * 空格1
-     */
-    public static String SPACE1_CONSTANT = " ";
-    /**
-     * 空格2
-     */
-    public static String SPACE2_CONSTANT = "  ";
-    /**
-     * 空格3
-     */
-    public static String SPACE3_CONSTANT = "   ";
-    /**
-     * 空格4
-     */
-    public static String SPACE4_CONSTANT = "    ";
-
-
-}

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

@@ -1,119 +0,0 @@
-package com.jiayue.insu.inclientqn.constant;
-
-/**
- * @description: 状态常量
- * @author: yuanhao
- * @createDate: 2021/8/20
- * @version: 1.0
- */
-public class StatusConstant {
-
-    /**
-     *  请求成功
-     */
-    public static String REQUEST_SUCCESS = "T200";
-    /**
-     * token已过期
-     */
-    public static String TOKEN_EXPIRE = "I101";
-    /**
-     * 无效token
-     */
-    public static String TOKEN_INVALID = "I102";
-
-    /**
-     * 签名失败
-     */
-    public static String AUTOGRAPH_FAIL ="I103";
-
-    /**
-     * 用户未登录,请先登录
-     */
-    public static String LOGIN_NOT ="I104";
-
-    /**
-     * 返回非json格式
-     */
-    public static String RESPONSE_ERROR1="E500";
-    /**
-     * 返回空
-     */
-    public static String RESPONSE_ERROR2="E600";
-    /**
-     * 链接超时断开
-     */
-    public static String RESPONSE_ERROR3="E700";
-    /**
-     * 未请求到token
-     */
-    public static String RESPONSE_ERROR4="E800";
-
-
-
-    /**
-     * 上午
-     */
-    public static String AM_DAY ="AM";
-    /**
-     * 下午
-     */
-    public static String PM_DAY = "PM";
-
-    /**
-     * 初始化数据下载成功
-     */
-    public static String INIT_STATUS_SUCCESS ="SUCCESS";
-    /**
-     * 请求初始化文件失败
-     */
-    public static String INIT_STATUS_REQUEST_FAIL="REQUEST_FAIL";
-    /**
-     * 请求初始化文件返回响应失败
-     */
-    public static String INIT_STATUS_RESPONSE_FAIL="RESPONSE_FAIL";
-    /**
-     * 查无初始化文件
-     */
-    public static String INIT_STATUS_FILE_NULL ="FILE_NULL";
-    /**
-     * 请求初始化文件列表失败
-     */
-    public static String INIT_STATUS_FAIL = "FAIL";
-
-
-
-    /**
-     * 下载初始化文件错误
-     */
-    public static String INIT_STATUS_FILE_FAIL ="FILE_NULL_ERROE";
-
-
-    /**
-     * 上送数据缺少
-     */
-    public static String UPLOAD_STATUS_DATA_LACK="DATA_LACK";
-    /**
-     * 修正数据缺少
-     */
-    public static String Correct_STATUS_DATA_LACK="DATA_LACK";
-
-    /**
-     * 解析失败或没有修正完成
-     */
-    public static String Correct_STATUS_DATA_FAIL="DATA_FAIL";
-
-
-    public static String AMEND_GEN_FILE_SUCCESS="SUCCESS";
-
-    public static String AMEND_GEN_FILE_ERROE="GEN_ERROR";
-
-    public static String AMEND_FILE_MONIL_ERROR="UPLOAD_ERROR";
-
-    public static String ET_PHOTOVOLTAIC = "E1";
-
-    public static String ET_WIND = "E2";
-
-
-
-
-}

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

@@ -27,7 +27,6 @@ public class BackForeForecastData extends  BaseBackTime {
     @TableId(type = IdType.AUTO)
     Long id;
 
-
     /**
      * 预测时间
      */

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

@@ -0,0 +1,39 @@
+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 BaseCorrectTime {
+
+    /**
+     * 标记时间
+     */
+    @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 requestTime;
+
+    /**
+     * 传送时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    LocalDateTime passTime;
+}

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

@@ -0,0 +1,40 @@
+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 com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 修正数据 超短期修正比例
+ *
+ * @author yh
+ * @version 1.0
+ * @since 2018/12/7 16:22
+ */
+@Data
+@TableName("in_correct_us_data")
+public class CorrectUltraShortTerm extends  BaseCorrectTime {
+
+    /**
+     * Id
+     */
+    @TableId(type = IdType.AUTO)
+    Long id;
+    /**
+     * 预测时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    LocalDateTime forecastTime;
+    /**
+     * 修正比例
+     */
+    BigDecimal ratio;
+
+}

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

@@ -0,0 +1,47 @@
+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 com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 修正数据 检修计划
+ *
+ * @author yh
+ * @version 1.0
+ * @since 2018/12/7 16:22
+ */
+@Data
+@TableName("in_repair_plan")
+public class RepairPlan extends  BaseCorrectTime {
+
+    /**
+     * Id
+     */
+    @TableId(type = IdType.AUTO)
+    Long id;
+    /**
+     * 开始时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    LocalDateTime startTime;
+
+    /**
+     * 结束时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    LocalDateTime endTime;
+    /**
+     * 容量
+     */
+    BigDecimal cap;
+
+}

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

@@ -19,6 +19,7 @@ public enum StatusEnum {
     CONNECT_RESPONSE_CONTENT_NULL("response_content_null","response_content_null","响应内容为空"),
     CONNECT_ERROR("connect_error","connect_error","链接异常"),
 
+    GEN_FILE_FAIL("gen_file_fail","gen_file_fail","生成文件失败"),
 
     DATA_DEFICIENCY("data_deficiency","data_deficiency","数据缺失"),
     ;

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

@@ -1,25 +0,0 @@
-package com.jiayue.insu.inclientqn.job;
-
-import com.jiayue.insu.inclientqn.service.client.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();
-    }
-}

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

@@ -0,0 +1,45 @@
+package com.jiayue.insu.inclientqn.job;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import com.jiayue.insu.inclientqn.constant.CommonStant;
+import com.jiayue.insu.inclientqn.entity.Record;
+import com.jiayue.insu.inclientqn.inenum.QNHLEnum;
+import com.jiayue.insu.inclientqn.inenum.StatusEnum;
+import com.jiayue.insu.inclientqn.service.RecordService;
+import com.jiayue.insu.inclientqn.service.client.CorrforeService;
+import com.jiayue.insu.inclientqn.service.client.RequestDataService;
+import com.jiayue.insu.inclientqn.util.DateTimeUtils;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.time.LocalDateTime;
+
+/**
+ * @description: 回传超短期数据定时任务
+ * @author: yuanhao
+ * @createDate: 2022/6/17
+ * @version: 1.0
+ */
+public class CorrectUsJob implements Job {
+
+
+    @Autowired
+    private CorrforeService corrforeService;
+    @Autowired
+    private RecordService recordService;
+
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        long time = DateTimeUtils.get15min(DateUtil.date().getTime());
+        LocalDateTime localDateTime = LocalDateTimeUtil.of(time);
+        Record record = recordService.findTimeAndTypeAndContentAndState(localDateTime, CommonStant.RECORD_TYPE_CORRECT_DATA, QNHLEnum.DATA_CORRULTRSHOR_TYPE.getCode(), StatusEnum.SUCCESS.getSign());
+
+        if (record == null) {
+            corrforeService.downLoadUltraShortTerm(time);
+        }
+
+    }
+}

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

@@ -0,0 +1,44 @@
+package com.jiayue.insu.inclientqn.job;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import com.jiayue.insu.inclientqn.constant.CommonStant;
+import com.jiayue.insu.inclientqn.entity.Record;
+import com.jiayue.insu.inclientqn.inenum.QNHLEnum;
+import com.jiayue.insu.inclientqn.inenum.StatusEnum;
+import com.jiayue.insu.inclientqn.service.RecordService;
+import com.jiayue.insu.inclientqn.service.client.CorrforeService;
+import com.jiayue.insu.inclientqn.util.DateTimeUtils;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.time.LocalDateTime;
+
+/**
+ * @description: 回传超短期数据定时任务
+ * @author: yuanhao
+ * @createDate: 2022/6/17
+ * @version: 1.0
+ */
+public class RepairPlanJob implements Job {
+
+
+    @Autowired
+    private CorrforeService corrforeService;
+    @Autowired
+    private RecordService recordService;
+
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        long time = DateTimeUtils.get15min(DateUtil.date().getTime());
+        LocalDateTime localDateTime = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
+        Record record = recordService.findTimeAndTypeAndContentAndState(localDateTime, CommonStant.RECORD_TYPE_CORRECT_DATA, QNHLEnum.DATA_REPAPLAN_TYPE.getCode(), StatusEnum.SUCCESS.getSign());
+
+        if (record == null) {
+            corrforeService.downLoadRepairPlan(time);
+        }
+
+    }
+}

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

@@ -0,0 +1,16 @@
+package com.jiayue.insu.inclientqn.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jiayue.insu.inclientqn.entity.CorrectUltraShortTerm;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 修正超短期系数mapper
+ *
+ * @author yh
+ * @date 2022-04-12 19:33:02
+ */
+@Mapper
+public interface CorrectUltraShortTermMapper extends BaseMapper<CorrectUltraShortTerm> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.jiayue.insu.inclientqn.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jiayue.insu.inclientqn.entity.RepairPlan;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 检修计划mapper
+ *
+ * @author yh
+ * @date 2022-04-12 19:33:02
+ */
+@Mapper
+public interface RepairPlanMapper extends BaseMapper<RepairPlan> {
+
+}

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

@@ -44,6 +44,30 @@ public class RequestVo {
                 .data(data.toString()).build();
     }
 
+    public static RequestVo CORRECT_US(String el,String data,long time) {
+
+        DateTime dateTime =  DateTime.of(time);
+        String fileName = el + "_" + dateTime.toString("yyyyMMdd_HHmm") + "_" + QNHLEnum.DATA_CORRULTRSHOR_TYPE.getSign() + ".CIME";
+        return RequestVo.builder()
+                .transferType(QNHLEnum.TRANSFER_TYPE_CORRECT.getCode())
+                .date(dateTime.toString("yyyyMMdd"))
+                .dataType(QNHLEnum.DATA_CORRULTRSHOR_TYPE.getSign())
+                .fileName(fileName)
+                .data(data).build();
+    }
+
+
+
+    public static RequestVo CORRECT_RP(String data,long time) {
+
+        DateTime dateTime =  DateTime.of(time);
+        return RequestVo.builder()
+                .transferType(QNHLEnum.TRANSFER_TYPE_CORRECT.getCode())
+                .date(dateTime.toString("yyyyMMdd"))
+                .dataType(QNHLEnum.DATA_REPAPLAN_TYPE.getSign())
+                .data(data).build();
+    }
+
     /**
      * 数据传输类型
      */

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

@@ -0,0 +1,22 @@
+package com.jiayue.insu.inclientqn.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jiayue.insu.inclientqn.entity.BackForeForecastData;
+import com.jiayue.insu.inclientqn.entity.CorrectUltraShortTerm;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 修正超短期数据接口
+ *
+ * @author yh
+ * @version 1.0
+ * @since 2022/5/22 11:29
+ */
+public interface CorrectUltraShortTermService extends IService<CorrectUltraShortTerm> {
+
+
+
+
+}

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

@@ -0,0 +1,18 @@
+package com.jiayue.insu.inclientqn.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jiayue.insu.inclientqn.entity.RepairPlan;
+
+/**
+ * 检修计划接口
+ *
+ * @author yh
+ * @version 1.0
+ * @since 2022/5/22 11:29
+ */
+public interface RepairPlanService extends IService<RepairPlan> {
+
+
+
+
+}

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

@@ -1,20 +1,36 @@
 package com.jiayue.insu.inclientqn.service.client;
 
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.collection.ListUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.io.file.FileReader;
+import cn.hutool.core.io.watch.WatchMonitor;
+import cn.hutool.core.io.watch.Watcher;
+import cn.hutool.core.io.watch.watchers.DelayWatcher;
+import cn.hutool.core.lang.Console;
 import cn.hutool.core.util.StrUtil;
 import com.jiayue.insu.inclientqn.constant.CommonStant;
-import com.jiayue.insu.inclientqn.entity.Record;
-import com.jiayue.insu.inclientqn.service.RecordService;
-import com.jiayue.insu.inclientqn.service.StationService;
+import com.jiayue.insu.inclientqn.entity.*;
+import com.jiayue.insu.inclientqn.inenum.ElectricFieldTypeEnum;
+import com.jiayue.insu.inclientqn.inenum.QNHLEnum;
+import com.jiayue.insu.inclientqn.service.*;
 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.io.File;
+import java.math.BigDecimal;
+import java.nio.file.Path;
+import java.nio.file.WatchEvent;
 import java.time.LocalDateTime;
+import java.util.*;
 
 /**
- * @description:  回传数据文件解析
+ * @description: 回传数据文件解析
  * @author: yuanhao
  * @createDate: 2022/6/17
  * @version: 1.0
@@ -32,27 +48,311 @@ public class BackDataAnalysisService {
     private final RecordService recordService;
 
     private final StationService stationService;
+
+    private final BackStatDataService backStatDataService;
+
+    private final BackForeUsForecastDataService backForeUsForecastDataService;
+
+    private final BackForeForecastDataService backForeForecastDataService;
+
+
+
+    private static Map<String ,Map<String,Object>> labelMap = new HashMap<>();
+
+    static{
+        Map<String,Object> rp = new HashMap<>();
+        rp.put("label_start","<" + QNHLEnum.DATA_STAT_TYPE_RealPower.getCode() + ">");
+        rp.put("label_end","</" + QNHLEnum.DATA_STAT_TYPE_RealPower.getCode() + ">");
+
+        labelMap.put(QNHLEnum.DATA_STAT_TYPE_RealPower.getCode(), rp );
+
+
+        Map<String,Object> rw = new HashMap<>();
+        rw.put("label_start","<" + QNHLEnum.DATA_STAT_TYPE_RealWeather.getCode() + ">");
+        rw.put("label_end","</" + QNHLEnum.DATA_STAT_TYPE_RealWeather.getCode() + ">");
+        labelMap.put(QNHLEnum.DATA_STAT_TYPE_RealWeather.getCode(), rw );
+
+
+        Map<String,Object> fpr = new HashMap<>();
+        fpr.put("label_start","<" + QNHLEnum.DATA_STAT_TYPE_ForecastPowerReport.getCode() + ">");
+        fpr.put("label_end","</" + QNHLEnum.DATA_STAT_TYPE_ForecastPowerReport.getCode() + ">");
+        labelMap.put(QNHLEnum.DATA_STAT_TYPE_ForecastPowerReport.getCode(), fpr );
+
+
+        Map<String,Object> ufpr = new HashMap<>();
+        ufpr.put("label_start","<" + QNHLEnum.DATA_STAT_TYPE_UltraShortTermForecastReport.getCode() + ">");
+        ufpr.put("label_end","</" + QNHLEnum.DATA_STAT_TYPE_UltraShortTermForecastReport.getCode() + ">");
+        labelMap.put(QNHLEnum.DATA_STAT_TYPE_UltraShortTermForecastReport.getCode(), ufpr );
+
+
+        Map<String,Object> fp = new HashMap<>();
+        fp.put("label_start","<" + QNHLEnum.DATA_FORE_TYPE_ForecastPower.getCode() + ">");
+        fp.put("label_end","</" + QNHLEnum.DATA_FORE_TYPE_ForecastPower.getCode() + ">");
+        labelMap.put(QNHLEnum.DATA_FORE_TYPE_ForecastPower.getCode(), fp );
+
+        Map<String,Object> ufp = new HashMap<>();
+        ufp.put("label_start","<" + QNHLEnum.DATA_FORE_TYPE_UltraShortTermForecast.getCode() + ">");
+        ufp.put("label_end","</" + QNHLEnum.DATA_FORE_TYPE_UltraShortTermForecast.getCode() + ">");
+        labelMap.put(QNHLEnum.DATA_FORE_TYPE_UltraShortTermForecast.getCode(), ufp );
+
+
+    }
+
     /**
      * 解析回传数据文件
      */
-    public void fileAnalysis(){
-        System.out.println("==================dsadasfvsdfgsdfgsdfsdffsdf");
+    public void watchFile() {
+
         Record record = new Record();
         record.setType(CommonStant.RECORD_TYPE_BACK_DATA_FILE);
         //获取扫描文件路径
-        if(StrUtil.isEmpty(backFilePath)){
-            backFilePath =  stationService.findThis().getBackFilePath();
+        if (StrUtil.isEmpty(backFilePath)) {
+            backFilePath = stationService.findThis().getBackFilePath();
         }
 
         //TODO 文件解析
+        File file = FileUtil.file(backFilePath);
+
+        if (!file.exists()) {// 判断目录是否存在
+            file.mkdirs();
+        }
+        WatchMonitor watchMonitor = WatchMonitor.create(file, WatchMonitor.ENTRY_CREATE);
+
+        watchMonitor.setWatcher(new DelayWatcher(new Watcher() {
+            @Override
+            public void onCreate(WatchEvent<?> event, Path currentPath) {
+                Object obj = event.context();
+                System.out.println();
+                Console.log("创建:{}-> {}", currentPath, obj);
+
+                File file = FileUtil.file(currentPath.toString() + File.separatorChar + obj.toString());
+
+                if (file.exists()) {// 判断目录是否存在
+                    FileReader fileReader = new FileReader(currentPath.toString() + File.separatorChar + obj.toString());
+                    List<String> contents = fileReader.readLines();
+                    if(CollectionUtil.isNotEmpty(contents)){
+                        fileAnalysis(contents);
+                    }
+
+                }
 
 
+            }
 
+            @Override
+            public void onModify(WatchEvent<?> event, Path currentPath) {
+                Object obj = event.context();
+                Console.log("修改:{}-> {}", currentPath, obj);
+            }
 
+            @Override
+            public void onDelete(WatchEvent<?> event, Path currentPath) {
+                Object obj = event.context();
+                Console.log("删除:{}-> {}", currentPath, obj);
+            }
+
+            @Override
+            public void onOverflow(WatchEvent<?> event, Path currentPath) {
+                Object obj = event.context();
+                Console.log("Overflow:{}-> {}", currentPath, obj);
+            }
+
+        }, 5000));
+
+        //设置监听目录的最大深入,目录层级大于制定层级的变更将不被监听,默认只监听当前层级目录
+        watchMonitor.setMaxDepth(3);
+        //启动监听
+        watchMonitor.start();
 
         record.setCreateTime(LocalDateTime.now());
-        recordService.save(record);
+    }
+
+
+    public boolean fileAnalysis(List<String> contents) {
+        boolean status =true;
+        String[] fileTime = contents.get(0).split("\\s+")[2].split("=");
+        LocalDateTime signTime = LocalDateTimeUtil.parse(fileTime[1].substring(1,fileTime[1].length()-1), DatePattern.PURE_DATETIME_PATTERN);
+        LocalDateTime now = LocalDateTime.now();
+
+        Map<String,List<String>> contentMap = new HashMap<>();
+
+        BackStatData backStatData = new BackStatData();
+        backStatData.setSignTime(signTime);
+        backStatData.setAnalysisTime(LocalDateTime.now());
+
+        List<BackForeUsForecastData> usList = new ArrayList<>();
 
-        System.out.println(backFilePath);
+        List<BackForeForecastData> list = new ArrayList<>();
+
+        Station station = stationService.findThis();
+
+        for (Map.Entry<String, Map<String, Object>> entry : labelMap.entrySet()) {
+            Map<String, Object> map = entry.getValue();
+            String label_start = (String)map.get("label_start");
+            String label_end = (String)map.get("label_end");
+            int start_index =0;
+            int end_index =0;
+            for (int i = 0; i < contents.size(); i++) {
+                if(contents.get(i).equals(label_start)){
+                    start_index = i;
+                }
+                if(contents.get(i).equals(label_end)){
+                    end_index = i;
+                }
+
+            }
+            //标签头和标签尾相减大于2  说明除了表头 至少还有1行数据
+            if(end_index-start_index >2){
+                contentMap.put(entry.getKey(), ListUtil.sub(contents, start_index+2, end_index));
+            }
+
+        }
+
+
+        for (Map.Entry<String, List<String>> entry:contentMap.entrySet()){
+
+            List<String> value = entry.getValue();
+
+            switch (entry.getKey()){
+                case "RealPower":
+                    try {
+                        String[] rpData = value.get(0).split("\\s+");
+                        if(rpData.length==3){
+                            backStatData.setRealPower( new BigDecimal(rpData[2]));
+
+                        }else{
+                            status = false;
+                        }
+                    }catch (Exception e){
+                        e.printStackTrace();
+                        status = false;
+                    }
+
+                    break;
+
+                case "RealWeather":
+
+                    try {
+                        String[] rwData = value.get(0).split("\\s+");
+                        if(station.getType().equals(ElectricFieldTypeEnum.E2.name())){
+                            if(rwData.length==7){
+                                backStatData.setWs(new BigDecimal(rwData[2]));
+                                backStatData.setWd(new BigDecimal(rwData[3]));
+                                backStatData.setTemperature(new BigDecimal(rwData[4]));
+                                backStatData.setHumidity(new BigDecimal(rwData[5]));
+                                backStatData.setPressure(new BigDecimal(rwData[6]));
+                            }else{
+                                status = false;
+                            }
+                        }else{
+                            if(rwData.length==11){
+                                backStatData.setGlobalR(new BigDecimal(rwData[2]));
+                                backStatData.setDirectR(new BigDecimal(rwData[3]));
+                                backStatData.setDiffuseR(new BigDecimal(rwData[4]));
+                                backStatData.setTemperature(new BigDecimal(rwData[5]));
+                                backStatData.setCellT(new BigDecimal(rwData[6]));
+                                backStatData.setHumidity(new BigDecimal(rwData[7]));
+                                backStatData.setPressure(new BigDecimal(rwData[8]));
+                                backStatData.setWs(new BigDecimal(rwData[9]));
+                                backStatData.setWd(new BigDecimal(rwData[10]));
+                            }else{
+                                status = false;
+                            }
+                        }
+                    }catch (Exception e){
+                        e.printStackTrace();
+                        status = false;
+                    }
+
+                    break;
+
+                case "ForecastPowerReport":
+
+                    try {
+                        String[] fpr = value.get(0).split("\\s+");
+                        if(fpr.length==3){
+                            backStatData.setReportStateForecast(new BigDecimal(fpr[2]));
+
+                        }else{
+                            status = false;
+                        }
+                    }catch (Exception e){
+                        e.printStackTrace();
+                        status = false;
+                    }
+
+                    break;
+
+                case "UltraShortTermForecastReport":
+
+                    try {
+                        String[] ufpr = value.get(0).split("\\s+");
+                        if(ufpr.length==3){
+                            backStatData.setReportStateForecastshort(new BigDecimal(ufpr[2]));
+                        }else{
+                            status = false;
+                        }
+                    }catch (Exception e){
+                        e.printStackTrace();
+                        status = false;
+                    }
+
+                    break;
+
+                case "UltraShortTermForecast":
+
+                    try{
+                        for (String content: value) {
+                            String[] datas = content.split("\\s+");
+                            BackForeUsForecastData backForeUsForecastData = new BackForeUsForecastData();
+                            backForeUsForecastData.setSignTime(signTime);
+                            backForeUsForecastData.setAnalysisTime(now);
+                            backForeUsForecastData.setForecastTime(LocalDateTimeUtil.parse(datas[2], DatePattern.PURE_DATETIME_PATTERN));
+                            backForeUsForecastData.setForecastValue(new BigDecimal(datas[3]));
+                            backForeUsForecastData.setForecastOpenCap(new BigDecimal(datas[4]));
+                            usList.add(backForeUsForecastData);
+                        }
+                    }catch (Exception e){
+                        e.printStackTrace();
+                        status = false;
+                    }
+
+
+                    break;
+
+
+                case "ForecastPower":
+
+                    try{
+                        for (String content: value) {
+                            String[] datas = content.split("\\s+");
+                            BackForeForecastData backForeForecastData = new BackForeForecastData();
+                            backForeForecastData.setSignTime(signTime);
+                            backForeForecastData.setAnalysisTime(now);
+                            backForeForecastData.setForecastTime(LocalDateTimeUtil.parse(datas[2], DatePattern.PURE_DATETIME_PATTERN));
+                            backForeForecastData.setForecastValue(new BigDecimal(datas[3]));
+                            backForeForecastData.setForecastOpenCap(new BigDecimal(datas[4]));
+                            list.add(backForeForecastData);
+                        }
+                    }catch (Exception e){
+                      e.printStackTrace();
+                        status = false;
+                    }
+
+
+                    break;
+            }
+        }
+
+
+
+        backStatDataService.save(backStatData);
+        backForeUsForecastDataService.saveBatch(usList);
+        backForeForecastDataService.saveBatch(list);
+
+
+        return status;
     }
+    
+
 }

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

@@ -214,7 +214,6 @@ public class BackDataGenBodyService {
 
     public StringBuilder genForeForecast(List<BackForeForecastData> backForeForecastDatas) {
 
-
         StringBuilder content = new StringBuilder();
 
         Collections.sort(backForeForecastDatas, Comparator.comparing(BackForeForecastData::getForecastTime));
@@ -237,7 +236,6 @@ public class BackDataGenBodyService {
 
         content.append(labelEnd);
 
-
         return content;
     }
 

+ 296 - 6
in-client-qn/src/main/java/com/jiayue/insu/inclientqn/service/client/CorrforeService.java

@@ -9,18 +9,15 @@ import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jiayue.insu.inclientqn.constant.CommonStant;
-import com.jiayue.insu.inclientqn.entity.CorrforeSt;
-import com.jiayue.insu.inclientqn.entity.Record;
-import com.jiayue.insu.inclientqn.entity.Station;
+import com.jiayue.insu.inclientqn.entity.*;
 import com.jiayue.insu.inclientqn.inenum.QNHLEnum;
 import com.jiayue.insu.inclientqn.inenum.StatusEnum;
 import com.jiayue.insu.inclientqn.mapper.CorrforeStMapper;
 import com.jiayue.insu.inclientqn.model.RequestVo;
 import com.jiayue.insu.inclientqn.model.ResponseVo;
 import com.jiayue.insu.inclientqn.permisson.com.ComPermisson;
-import com.jiayue.insu.inclientqn.service.CorrforeStService;
-import com.jiayue.insu.inclientqn.service.RecordService;
-import com.jiayue.insu.inclientqn.service.StationService;
+import com.jiayue.insu.inclientqn.service.*;
+import com.jiayue.insu.inclientqn.util.RequestUtils;
 import com.jiayue.insu.inclientqn.util.SystermUtils;
 import com.jiayue.insu.minio.util.MinioUtilService;
 import lombok.RequiredArgsConstructor;
@@ -28,6 +25,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.velocity.Template;
 import org.apache.velocity.VelocityContext;
 import org.apache.velocity.app.VelocityEngine;
+import org.checkerframework.checker.units.qual.C;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
@@ -65,9 +63,112 @@ public class CorrforeService extends ServiceImpl<CorrforeStMapper, CorrforeSt> {
 
     private final MinioUtilService minioUtilService;
 
+    private final CorrectUltraShortTermService correctUltraShortTermService;
+
+    private final RepairPlanService repairPlanService;
+
+
     @Value("${minio.bucketname}")
     private String bucketName;
 
+
+    public void downLoadUltraShortTerm(long signTime){
+
+        Station station = stationService.findThis();
+
+        LocalDateTime signLDT = LocalDateTimeUtil.of(signTime);
+
+        Record record = new Record();
+        record.setType(CommonStant.RECORD_TYPE_CORRECT_DATA);
+        record.setContent(QNHLEnum.DATA_CORRULTRSHOR_TYPE.getCode());
+        record.setCreateTime(LocalDateTime.now());
+        record.setTime(signLDT);
+
+        RequestVo requestVo = RequestVo.CORRECT_US(station.getSignCode(), null, signTime);
+        JSONObject json = JSONUtil.parseObj(requestVo, true);
+        String body = json.toString();
+        String response = RequestUtils.post(station.getDownloadurl(), body, station.getComKey());
+        if (RequestUtils.checkResponse(response, record)) {
+
+            ResponseVo responseVo = JSONUtil.toBean(response, ResponseVo.class);
+            String code = responseVo.getRetCode();
+
+            if (code.equals(QNHLEnum.REQUEST_SUCCESS.getCode())) {
+
+
+                JSONObject jsonObject = JSONUtil.parseObj(responseVo.getData());
+
+                if(genUs(station,jsonObject)){
+
+                    correctUltraShortTerm(jsonObject.get("data").toString(),signLDT);
+
+                    record.setState(StatusEnum.SUCCESS.getSign());
+                    record.setStateContent(responseVo.getRetMsg());
+                }else{
+                    record.setState(StatusEnum.GEN_FILE_FAIL.getSign());
+                    record.setStateContent(StatusEnum.GEN_FILE_FAIL.getMsg());
+                }
+
+
+
+            } else {
+                record.setState(code);
+                record.setStateContent(responseVo.getRetMsg());
+            }
+        }
+
+        recordService.save(record);
+
+    }
+
+    public void downLoadRepairPlan(long signTime){
+
+        Station station = stationService.findThis();
+
+        LocalDateTime signLDT = LocalDateTimeUtil.of(signTime);
+        LocalDateTime localDateTime = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
+        Record record = new Record();
+        record.setType(CommonStant.RECORD_TYPE_CORRECT_DATA);
+        record.setContent(QNHLEnum.DATA_REPAPLAN_TYPE.getCode());
+        record.setCreateTime(LocalDateTime.now());
+        record.setTime(localDateTime);
+
+        RequestVo requestVo = RequestVo.CORRECT_RP(null, signTime);
+        JSONObject json = JSONUtil.parseObj(requestVo, true);
+        String body = json.toString();
+        String response = RequestUtils.post(station.getDownloadurl(), body, station.getComKey());
+
+        if (RequestUtils.checkResponse(response, record)) {
+
+            ResponseVo responseVo = JSONUtil.toBean(response, ResponseVo.class);
+            String code = responseVo.getRetCode();
+
+            if (code.equals(QNHLEnum.REQUEST_SUCCESS.getCode())) {
+
+                if(genRp(station,responseVo.getData())){
+
+                    repairPlan(responseVo.getData(),signLDT);
+
+                    record.setState(StatusEnum.SUCCESS.getSign());
+                    record.setStateContent(responseVo.getRetMsg());
+                }else{
+                    record.setState(StatusEnum.GEN_FILE_FAIL.getSign());
+                    record.setStateContent(StatusEnum.GEN_FILE_FAIL.getMsg());
+                }
+
+
+
+            } else {
+                record.setState(code);
+                record.setStateContent(responseVo.getRetMsg());
+            }
+        }
+
+
+        recordService.save(record);
+
+    }
+
     /**
      * 下载修正文件,从嘉越云上
      *
@@ -350,6 +451,73 @@ public class CorrforeService extends ServiceImpl<CorrforeStMapper, CorrforeSt> {
     }
 
 
+    public boolean correctUltraShortTerm(String content,LocalDateTime signTime){
+        boolean result = true;
+
+        try {
+            List<CorrectUltraShortTerm> list = new ArrayList<>();
+
+            String[] contents = content.split("\n");
+
+
+            for (int i = 3; i < contents.length-1; i++) {
+                CorrectUltraShortTerm cus = new CorrectUltraShortTerm();
+                String column = contents[i];
+                String[] datas = column.split("\\s+");
+                cus.setSignTime(signTime);
+                cus.setRequestTime(LocalDateTime.now());
+                cus.setForecastTime( DateUtil.parse(datas[2], "yyyyMMddHHmmss").toTimestamp().toLocalDateTime());
+                cus.setRatio(new BigDecimal(datas[3]));
+                list.add(cus);
+            }
+
+
+            correctUltraShortTermService.saveBatch(list);
+        }catch (Exception e){
+            e.printStackTrace();
+            result = false;
+        }
+
+        return result;
+
+
+    }
+
+    public boolean repairPlan(String content,LocalDateTime signTime){
+        boolean result = true;
+
+        try {
+            List<RepairPlan> list = new ArrayList<>();
+
+            String[] contents = content.split("\n");
+
+
+            for (int i = 3; i < contents.length-1; i++) {
+                RepairPlan rp = new RepairPlan();
+                String column = contents[i];
+                String[] datas = column.split("\\s+");
+                rp.setSignTime(LocalDateTimeUtil.beginOfDay(signTime));
+                rp.setRequestTime(LocalDateTime.now());
+                rp.setStartTime( DateUtil.parse(datas[2], "yyyyMMddHHmmss").toTimestamp().toLocalDateTime());
+                rp.setEndTime( DateUtil.parse(datas[3], "yyyyMMddHHmmss").toTimestamp().toLocalDateTime());
+                rp.setCap(new BigDecimal(datas[4]));
+                list.add(rp);
+            }
+
+            repairPlanService.saveBatch(list);
+
+        }catch (Exception e){
+            e.printStackTrace();
+            result = false;
+        }
+
+        return result;
+
+
+    }
+
+
+
     /**
      * 判断是否是NULL 和是否是数值
      *
@@ -452,4 +620,126 @@ public class CorrforeService extends ServiceImpl<CorrforeStMapper, CorrforeSt> {
 
         return file;
     }
+
+
+    public boolean genUs(Station station, JSONObject jsonObject){
+        boolean result = true;
+
+        String vmsPath = SystermUtils.getResourceBasePath() + "/vms/US.vm";
+        File file = null;
+        Template template = this.velocityEngine.getTemplate(vmsPath);
+        if (template != null) {
+            VelocityContext velocityContext= new VelocityContext();
+            StringWriter writer;
+
+
+            velocityContext.put("content",  jsonObject.get("data").toString());
+
+            writer = new StringWriter();
+            template.merge(velocityContext, writer);
+
+
+            File fileUrl = new File(station.getLocalFilePath());
+            if (!fileUrl.exists()) {// 判断目录是否存在
+                fileUrl.mkdirs();
+            }
+
+            String fileName = jsonObject.get("fileName").toString() ;
+
+            file = new File(station.getLocalFilePath() + File.separatorChar + fileName);
+
+
+            FileOutputStream os = null;
+
+            try {
+                boolean res = file.createNewFile();
+                if (res) {
+                    os = new FileOutputStream(file);
+                    // 采用UTF-8字符集
+                    os.write(writer.toString().getBytes("UTF-8"));
+                    os.flush();
+                } else {
+                    result = false;
+                    log.warn(station.getStationCode() + " 生成修正超短期系数文件失败");
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+                result = false;
+                log.warn(station.getStationCode() + " 创建修正超短期系数文件失败");
+            } finally {
+                if (os != null) {
+                    try {
+                        os.close();
+                    } catch (IOException e) {
+                        log.error("文件生成关闭流失败", e);
+                    }
+                }
+                log.info("执行生成文件完毕:"+station.getLocalFilePath() + File.separatorChar + fileName);
+            }
+
+        }
+
+        return result;
+    }
+
+
+    public boolean genRp(Station station, String content){
+        boolean result = true;
+
+        String vmsPath = SystermUtils.getResourceBasePath() + "/vms/RP.vm";
+        File file = null;
+        Template template = this.velocityEngine.getTemplate(vmsPath);
+        if (template != null) {
+            VelocityContext velocityContext= new VelocityContext();
+            StringWriter writer;
+
+
+            velocityContext.put("content", content);
+
+            writer = new StringWriter();
+            template.merge(velocityContext, writer);
+
+
+            File fileUrl = new File(station.getLocalFilePath());
+            if (!fileUrl.exists()) {// 判断目录是否存在
+                fileUrl.mkdirs();
+            }
+
+            String fileName = "JX_"+LocalDateTimeUtil.format(LocalDateTimeUtil.beginOfDay(LocalDateTime.now()),"yyyyMMddHHmmss")+".CIME" ;
+
+            file = new File(station.getLocalFilePath() + File.separatorChar + fileName);
+
+
+            FileOutputStream os = null;
+
+            try {
+                boolean res = file.createNewFile();
+                if (res) {
+                    os = new FileOutputStream(file);
+                    // 采用UTF-8字符集
+                    os.write(writer.toString().getBytes("UTF-8"));
+                    os.flush();
+                } else {
+                    result = false;
+                    log.warn(station.getStationCode() + " 生成修正超短期系数文件失败");
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+                result = false;
+                log.warn(station.getStationCode() + " 创建修正超短期系数文件失败");
+            } finally {
+                if (os != null) {
+                    try {
+                        os.close();
+                    } catch (IOException e) {
+                        log.error("文件生成关闭流失败", e);
+                    }
+                }
+                log.info("执行生成文件完毕:"+station.getLocalFilePath() + File.separatorChar + fileName);
+            }
+
+        }
+
+        return result;
+    }
 }

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

@@ -13,9 +13,12 @@ public class InitRunner implements CommandLineRunner {
     private ComPermisson comPermisson;
     @Autowired
     private StationService stationService;
+    @Autowired
+    private BackDataAnalysisService backDataAnalysisService;
     @Override
     public void run(String... args) throws Exception {
         Station station = stationService.findThis();
         comPermisson.generateKey(station);
+        backDataAnalysisService.watchFile();
     }
 }

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

@@ -0,0 +1,29 @@
+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.BackForeForecastData;
+import com.jiayue.insu.inclientqn.entity.CorrectUltraShortTerm;
+import com.jiayue.insu.inclientqn.mapper.BackForeForecastDataMapper;
+import com.jiayue.insu.inclientqn.mapper.CorrectUltraShortTermMapper;
+import com.jiayue.insu.inclientqn.service.BackForeForecastDataService;
+import com.jiayue.insu.inclientqn.service.CorrectUltraShortTermService;
+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 CorrectUltraShortTermServiceImpl extends ServiceImpl<CorrectUltraShortTermMapper, CorrectUltraShortTerm> implements CorrectUltraShortTermService {
+
+
+}

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

@@ -0,0 +1,22 @@
+package com.jiayue.insu.inclientqn.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jiayue.insu.inclientqn.entity.RepairPlan;
+import com.jiayue.insu.inclientqn.mapper.RepairPlanMapper;
+import com.jiayue.insu.inclientqn.service.RepairPlanService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * 检修计划业务实现
+ *
+ * @author yh
+ * @version 1.0
+ * @since 2022/5/22 11:29
+ */
+@Service
+@Slf4j
+public class RepairPlanServiceImpl extends ServiceImpl<RepairPlanMapper, RepairPlan> implements RepairPlanService {
+
+
+}

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

@@ -59,4 +59,6 @@ public class RequestUtils {
 
         return result;
     }
+
+
 }

+ 1 - 0
in-client-qn/src/main/resources/vms/RP.vm

@@ -0,0 +1 @@
+${content}

+ 1 - 0
in-client-qn/src/main/resources/vms/US.vm

@@ -0,0 +1 @@
+${content}

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

@@ -8,6 +8,7 @@ import com.jiayue.insu.inclientqn.BaseTest;
 import com.jiayue.insu.inclientqn.entity.BackForeForecastData;
 import com.jiayue.insu.inclientqn.entity.BackForeUsForecastData;
 import com.jiayue.insu.inclientqn.inenum.QNHLEnum;
+import com.jiayue.insu.inclientqn.service.client.BackDataAnalysisService;
 import com.jiayue.insu.inclientqn.service.client.BackDataGenService;
 import com.jiayue.insu.inclientqn.service.client.RequestDataService;
 import com.jiayue.insu.inclientqn.util.DateTimeUtils;
@@ -28,6 +29,8 @@ public class BackDataGenServiceTest extends BaseTest {
     private BackForeUsForecastDataService backForeUsForecastDataService;
     @Autowired
     private BackForeForecastDataService backForeForecastDataService;
+    @Autowired
+    private BackDataAnalysisService backDataAnalysisService;
     @Test
     void test() {
         try {