|
@@ -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();
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|