浏览代码

天气预测数据重复调整

chenminghua 3 年之前
父节点
当前提交
bde56efe22

+ 30 - 18
src/main/java/com/gyee/frame/schdule/weather/TaskWeatherGather.java

@@ -8,7 +8,6 @@ import com.gyee.frame.service.weather.WfnwpdataService;
 import com.gyee.frame.util.DateUtils;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
@@ -34,14 +33,14 @@ public class TaskWeatherGather {
     static {
         // 网源事业部的风场序号
         wp_map.put(1, "NSS_FDC#牛首山风电场");
-        wp_map.put(2, "QS_FDC#青山风电场");
+        wp_map.put(2, "QS_FDC#青山风电场");
         wp_map.put(3, "SBQ_FDC#石板泉风电场");
         wp_map.put(4, "XS_FDC#香山风电场");
         wp_map.put(5, "MHS_FDC#麻黄山风电场");
     }
 
     /**
-     * 延时1分钟  每天凌晨1点执行一次
+     * 每天凌晨1点执行一次
      */
     @Scheduled(cron = "0 0 1 * * ?")
 //    @Scheduled(initialDelay = 30 * 1000, fixedRate = 2 * 86400 * 1000)
@@ -50,7 +49,7 @@ public class TaskWeatherGather {
             String[] value = wp_map.get(key).split("#");
             for (int i = 0; i < days; i++) {
                 Calendar cal = Calendar.getInstance();
-                cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH) + i);
+                cal.set(Calendar.DAY_OF_MONTH , i+1);
                 cal.set(Calendar.HOUR_OF_DAY, 12);
                 cal.set(Calendar.MINUTE, 0);
                 cal.set(Calendar.SECOND, 0);
@@ -71,15 +70,15 @@ public class TaskWeatherGather {
                         weatherfd.setRealfeel1(new BigDecimal(list.get(0).getTemperature()).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                         weatherfd.setPrecipitation1(0.0);
                         weatherfd.setWinddirection1(String.valueOf(new BigDecimal(list.get(0).getWindDir()).setScale(2, RoundingMode.HALF_EVEN).doubleValue()));
-                        weatherfd.setSpeed1(new BigDecimal(list.get(0).getWindSpeed() * 3.6).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
-                        weatherfd.setGust1(new BigDecimal(list.get(0).getWindSpeed() * 3.6).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                        weatherfd.setSpeed1(new BigDecimal(list.get(0).getWindSpeed()).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                        weatherfd.setGust1(new BigDecimal(list.get(0).getWindSpeed()).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                         //夜间
                         weatherfd.setTemperature2(new BigDecimal(list.get(list.size() - 1).getTemperature()).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                         weatherfd.setRealfeel2(new BigDecimal(list.get(list.size() - 1).getTemperature()).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                         weatherfd.setPrecipitation2(0.0);
                         weatherfd.setWinddirection2(String.valueOf(new BigDecimal(list.get(list.size() - 1).getWindDir()).setScale(2, RoundingMode.HALF_EVEN).doubleValue()));
-                        weatherfd.setSpeed2(new BigDecimal(list.get(list.size() - 1).getWindSpeed() * 3.6).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
-                        weatherfd.setGust2(new BigDecimal(list.get(list.size() - 1).getWindSpeed() * 3.6).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                        weatherfd.setSpeed2(new BigDecimal(list.get(list.size() - 1).getWindSpeed()).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                        weatherfd.setGust2(new BigDecimal(list.get(list.size() - 1).getWindSpeed()).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
 
                         WeatherfdExample example = new WeatherfdExample();
                         example.createCriteria().andRecodedataEqualTo(DateUtils.parseStrtoDate(DateUtils.format(cal.getTime(), DateUtils.DATE_PATTERN)))
@@ -88,21 +87,27 @@ public class TaskWeatherGather {
                         if (weatherfds != null && weatherfds.size() > 0){
                             weatherfd.setId(weatherfds.get(0).getId());
                             weatherfdService.updateByPrimaryKeySelective(weatherfd);
-                        }else
+                        }else{
                             weatherfdService.insertSelective(weatherfd);
-
+                        }
                     } else {
-                        cal.add(Calendar.YEAR, -1);
-//                        System.out.println(DateUtils.format(cal.getTime(), DateUtils.DATE_PATTERN));
                         WeatherfdExample example = new WeatherfdExample();
                         example.createCriteria().andRecodedataEqualTo(DateUtils.parseStrtoDate(DateUtils.format(cal.getTime(), DateUtils.DATE_PATTERN)))
                                 .andWindpowerstationidEqualTo(value[0]);
                         List<Weatherfd> weatherfds = weatherfdService.selectByExample(example);
-                        cal.add(Calendar.YEAR, 1);
-                        if (weatherfds != null && weatherfds.size() > 0) {
-                            Weatherfd weatherfd = weatherfds.get(0);
-                            weatherfd.setRecodedata(DateUtils.parseStrtoDate(DateUtils.format(cal.getTime(), DateUtils.DATE_PATTERN)));
-                            weatherfdService.insertSelective(weatherfd);
+                        if (null != weatherfds && weatherfds.size() > 0)
+                            continue;
+
+                        cal.add(Calendar.MONTH, -1);
+                        WeatherfdExample ex = new WeatherfdExample();
+                        ex.createCriteria().andRecodedataEqualTo(DateUtils.parseStrtoDate(DateUtils.format(cal.getTime(), DateUtils.DATE_PATTERN)))
+                                .andWindpowerstationidEqualTo(value[0]);
+                        List<Weatherfd> weatherfd = weatherfdService.selectByExample(ex);
+                        cal.add(Calendar.MONTH, 1);
+                        if (null != weatherfd && weatherfd.size() > 0) {
+                            Weatherfd weather = weatherfd.get(0);
+                            weather.setRecodedata(DateUtils.parseStrtoDate(DateUtils.format(cal.getTime(), DateUtils.DATE_PATTERN)));
+                            weatherfdService.insertSelective(weather);
                         }
                     }
                 }catch (Exception e){
@@ -119,13 +124,20 @@ public class TaskWeatherGather {
     public static void main(String[] args) {
 
         Calendar cal = Calendar.getInstance();
-        cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH) + 40);
+//        cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH) + 0);
+        cal.set(Calendar.DAY_OF_MONTH , 60);
         cal.set(Calendar.HOUR_OF_DAY, 12);
         cal.set(Calendar.MINUTE, 0);
         cal.set(Calendar.SECOND, 0);
+        System.out.println(DateUtils.format(cal.getTime(), DateUtils.DATE_PATTERN));
         Date beginDate = cal.getTime();
         cal.set(Calendar.HOUR_OF_DAY, 23);
         Date endDate = cal.getTime();
+        cal.add(Calendar.MONTH, -1);
+
+        System.out.println(DateUtils.format(cal.getTime(), DateUtils.DATE_PATTERN));
+
+        cal.add(Calendar.MONTH, 1);
 
         System.out.println(DateUtils.format(cal.getTime(), DateUtils.DATE_PATTERN));
     }

+ 1 - 0
src/main/java/com/gyee/frame/service/weather/WfnwpdataService.java

@@ -35,6 +35,7 @@ public class WfnwpdataService {
         example.createCriteria().andNwpTypeEqualTo((short) 7)
                 .andWindplantNoEqualTo(wpId)
                 .andDataTimeBetween(beginDate, endDate);
+        example.setOrderByClause("FILE_TIME desc");
 
         List<Wfnwpdata> list = wfnwpdataMapper.selectByExample(example);
 

二进制
target.7z