Explorar el Código

增加运行时修改模拟数据日期

xusl hace 4 meses
padre
commit
3968f27a45

+ 74 - 0
ipfcst/ipfcst-reportquery/src/main/java/com/jiayue/ipfcst/cronJob/UpdateMysqlDataJob.java

@@ -0,0 +1,74 @@
+package com.jiayue.ipfcst.cronJob;
+
+import cn.hutool.core.date.DateUtil;
+import com.jiayue.ipfcst.common.data.entity.PowerStationStatusData;
+import com.jiayue.ipfcst.common.data.entity.SysParameter;
+import com.jiayue.ipfcst.common.data.repository.EntityManagerRepository;
+import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
+import com.jiayue.ipfcst.common.data.repository.SysParameterRepository;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+/**
+ * 更新mysql展示数据
+ *
+ * @author jy
+ * @since 2024/12/13
+ */
+@Service
+@Slf4j
+public class UpdateMysqlDataJob {
+  @Autowired
+  PowerStationStatusDataRepository powerStationStatusDataRepository;
+  @Autowired
+  EntityManagerRepository entityManagerRepository;
+  @Autowired
+  SysParameterRepository sysParameterRepository;
+
+  /**
+   * 每1分钟检测一次
+   */
+  @Scheduled(cron = "0 0/1 * * * ?")
+  public void execute() {
+    try {
+      Optional<SysParameter> optional = sysParameterRepository.findBySysKey("demo");
+      String demo = optional.map(SysParameter::getSysValue).orElse("1");
+      if ("1".equals(demo)) {
+        List<PowerStationStatusData> powerStationStatusDataList = powerStationStatusDataRepository.findAll();
+        powerStationStatusDataList.sort(Comparator.comparing(PowerStationStatusData::getTime));
+        Date maxDate = powerStationStatusDataList.get(powerStationStatusDataList.size() - 1).getTime();
+        Date nowDate = new Date();
+        if (nowDate.after(maxDate)) {
+          Date minDate = powerStationStatusDataList.get(0).getTime();
+          long betweenDay = DateUtil.betweenDay(minDate, nowDate, true);
+          List<String> sqlList = new ArrayList<>();
+          sqlList.add("update t_power_station_status_data t set t.C_TIME = adddate(t.C_TIME, interval " + betweenDay + " day)");
+          sqlList.add("update t_power_station_status_data_one t set t.C_TIME = adddate(t.C_TIME, interval " + betweenDay + " day)");
+          sqlList.add("update t_weather_station_status_data t set t.C_TIME = adddate(t.C_TIME, interval " + betweenDay + " day)");
+          sqlList.add("update t_wind_tower_status_data t set t.C_TIME = adddate(t.C_TIME, interval " + betweenDay + " day)");
+          sqlList.add("update t_forecast_power_short_term t set t.C_FORECAST_TIME=UNIX_TIMESTAMP(adddate(FROM_UNIXTIME(t.C_FORECAST_TIME/1000), interval " + betweenDay + " day))*1000");
+          sqlList.add("update t_forecast_power_short_term_his t set t.C_FORECAST_TIME=UNIX_TIMESTAMP(adddate(FROM_UNIXTIME(t.C_FORECAST_TIME/1000), interval " + betweenDay + " day))*1000");
+          sqlList.add("update t_forecast_power_ultra_short_term_his t set t.C_FORECAST_TIME=UNIX_TIMESTAMP(adddate(FROM_UNIXTIME(t.C_FORECAST_TIME/1000), interval " + betweenDay + " day))*1000");
+          sqlList.add("update t_nwp t set t.C_PRE_TIME=UNIX_TIMESTAMP(adddate(FROM_UNIXTIME(t.C_PRE_TIME/1000), interval " + betweenDay + " day))*1000");
+          sqlList.add("update t_nwp_his t set t.C_PRE_TIME=UNIX_TIMESTAMP(adddate(FROM_UNIXTIME(t.C_PRE_TIME/1000), interval " + betweenDay + " day))*1000");
+          sqlList.add("update t_accuracy_pass_rate t set t.C_TIME=UNIX_TIMESTAMP(adddate(FROM_UNIXTIME(t.C_TIME/1000), interval " + betweenDay + " day))*1000");
+          sqlList.add("update t_forecast_power_short_term_one t set t.C_FORECAST_TIME=UNIX_TIMESTAMP(adddate(FROM_UNIXTIME(t.C_FORECAST_TIME/1000), interval " + betweenDay + " day))*1000");
+          sqlList.add("update t_forecast_power_short_term_one_his t set t.C_FORECAST_TIME=UNIX_TIMESTAMP(adddate(FROM_UNIXTIME(t.C_FORECAST_TIME/1000), interval " + betweenDay + " day))*1000");
+          sqlList.add("update t_forecast_power_ultra_short_term_one t set t.C_FORECAST_TIME=UNIX_TIMESTAMP(adddate(FROM_UNIXTIME(t.C_FORECAST_TIME/1000), interval " + betweenDay + " day))*1000");
+          sqlList.add("update t_forecast_power_ultra_short_term_one_his t set t.C_FORECAST_TIME=UNIX_TIMESTAMP(adddate(FROM_UNIXTIME(t.C_FORECAST_TIME/1000), interval " + betweenDay + " day))*1000");
+          sqlList.add("update t_nwp_one t set t.C_PRE_TIME=UNIX_TIMESTAMP(adddate(FROM_UNIXTIME(t.C_PRE_TIME/1000), interval " + betweenDay + " day))*1000");
+          sqlList.add("update t_nwp_one_his t set t.C_PRE_TIME=UNIX_TIMESTAMP(adddate(FROM_UNIXTIME(t.C_PRE_TIME/1000), interval " + betweenDay + " day))*1000");
+          sqlList.add("update t_accuracy_pass_rate_one t set t.C_TIME=UNIX_TIMESTAMP(adddate(FROM_UNIXTIME(t.C_TIME/1000), interval " + betweenDay + " day))*1000");
+          entityManagerRepository.executeSql(sqlList);
+          System.out.println("数据更新成功!!!!!!");
+        }
+      }
+    } catch (Exception e) {
+      e.printStackTrace();
+    }
+  }
+}