xieshengjie před 2 roky
rodič
revize
caa57fd454
36 změnil soubory, kde provedl 1311 přidání a 271 odebrání
  1. 10 4
      realtime/meteorologicalcollection/pom.xml
  2. 14 5
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/config/GeneratorCodeConfig.java
  3. 44 44
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/config/RedisAutoConfiguration.java
  4. 46 46
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/config/RedisConfig.java
  5. 20 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/controller/ProEconCoordinateController.java
  6. 20 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/controller/ProEconMeteorologicalController.java
  7. 20 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/controller/ProEconMeteorologicalfourdaysController.java
  8. 9 2
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/init/CacheContext.java
  9. 16 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/mapper/auto/ProEconCoordinateMapper.java
  10. 16 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/mapper/auto/ProEconMeteorologicalMapper.java
  11. 16 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/mapper/auto/ProEconMeteorologicalfourdaysMapper.java
  12. 26 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/City.java
  13. 22 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/Clouds.java
  14. 30 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/Coord.java
  15. 25 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/JsonRootBean.java
  16. 30 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/List.java
  17. 27 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/Main.java
  18. 22 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/Sys.java
  19. 23 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/Weather.java
  20. 25 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/WeatherReal.java
  21. 38 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/Wind.java
  22. 33 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/auto/ProEconCoordinate.java
  23. 63 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/auto/ProEconMeteorological.java
  24. 65 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/auto/ProEconMeteorologicalfourdays.java
  25. 16 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/service/auto/IProEconCoordinateService.java
  26. 16 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/service/auto/IProEconMeteorologicalService.java
  27. 16 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/service/auto/IProEconMeteorologicalfourdaysService.java
  28. 20 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/service/auto/impl/ProEconCoordinateServiceImpl.java
  29. 20 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/service/auto/impl/ProEconMeteorologicalServiceImpl.java
  30. 20 0
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/service/auto/impl/ProEconMeteorologicalfourdaysServiceImpl.java
  31. 360 15
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/service/collection/CollectionService.java
  32. 125 125
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/service/impl/RedisServiceImpl.java
  33. 29 4
      realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/task/SaticScheduleTask.java
  34. 22 23
      realtime/meteorologicalcollection/src/main/resources/application-test.yml
  35. 1 1
      realtime/meteorologicalcollection/src/main/resources/application.yml
  36. 6 2
      realtime/meteorologicalcollection/src/test/java/com/gyee/meteorological/MeteorologicalTest.java

+ 10 - 4
realtime/meteorologicalcollection/pom.xml

@@ -41,10 +41,10 @@
             <version>11.2.0.3</version>
             <scope>compile</scope>
         </dependency>
-        <dependency>
-            <groupId>org.springframework.data</groupId>
-            <artifactId>spring-data-redis</artifactId>
-        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>org.springframework.data</groupId>-->
+<!--            <artifactId>spring-data-redis</artifactId>-->
+<!--        </dependency>-->
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-boot-starter</artifactId>
@@ -68,6 +68,12 @@
             <groupId>org.postgresql</groupId>
             <artifactId>postgresql</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>2.0.2</version>
+            <scope>compile</scope>
+        </dependency>
 
     </dependencies>
     <build>

+ 14 - 5
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/config/GeneratorCodeConfig.java

@@ -53,15 +53,24 @@ public class GeneratorCodeConfig {
         dsc.setUsername("root");
         dsc.setPassword("root");
         mpg.setDataSource(dsc);*/
-        dsc.setDriverName("oracle.jdbc.driver.OracleDriver");
-        dsc.setUsername("nxfdprod");
-        dsc.setPassword("gdnxfd123");
-        dsc.setUrl("jdbc:oracle:thin:@123.60.213.70:1521:gdnxfd");
-
+//        dsc.setDriverName("oracle.jdbc.driver.OracleDriver");
+//        dsc.setUsername("nxfdprod");
+//        dsc.setPassword("gdnxfd123");
+//        dsc.setUrl("jdbc:oracle:thin:@123.60.213.70:1521:gdnxfd");
+
+
+        dsc.setDriverName("org.postgresql.Driver");
+//        dsc.setUsername("postgres");
+//        dsc.setPassword("postgres");
+//        dsc.setUrl("jdbc:postgresql://192.168.11.248:5432/eng_mctl");
+        dsc.setUrl("jdbc:postgresql://120.46.148.180:5432/wisdom");
+        dsc.setUsername("gdprod");
+        dsc.setPassword("gd123");
         mpg.setDataSource(dsc);
 
 
 
+
         // 包配置
         PackageConfig pc = new PackageConfig();
 //        pc.setModuleName(scanner("模块名"));

+ 44 - 44
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/config/RedisAutoConfiguration.java

@@ -1,44 +1,44 @@
-package com.gyee.meteorological.config;
-
-import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.redis.connection.RedisConnectionFactory;
-import org.springframework.data.redis.core.RedisOperations;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.core.StringRedisTemplate;
-
-import java.net.UnknownHostException;
-
-@Configuration
-@ConditionalOnClass(RedisOperations.class)
-@EnableConfigurationProperties(RedisProperties.class)
-public class RedisAutoConfiguration {
-
-
-    @Bean
-    @ConditionalOnMissingBean(name = "redisTemplate")
-    public RedisTemplate<Object, Object> redisTemplate(
-            RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
-        RedisTemplate<Object, Object> template = new RedisTemplate<>();
-        template.setConnectionFactory(redisConnectionFactory);
-        return template;
-
-    }
-
-
-    @Bean
-    @ConditionalOnMissingBean
-    public StringRedisTemplate stringRedisTemplate(
-            RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
-        StringRedisTemplate template = new StringRedisTemplate();
-        template.setConnectionFactory(redisConnectionFactory);
-        return template;
-
-    }
-
-
-}
+//package com.gyee.meteorological.config;
+//
+//import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+//import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+//import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
+//import org.springframework.boot.context.properties.EnableConfigurationProperties;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//import org.springframework.data.redis.connection.RedisConnectionFactory;
+//import org.springframework.data.redis.core.RedisOperations;
+//import org.springframework.data.redis.core.RedisTemplate;
+//import org.springframework.data.redis.core.StringRedisTemplate;
+//
+//import java.net.UnknownHostException;
+//
+//@Configuration
+//@ConditionalOnClass(RedisOperations.class)
+//@EnableConfigurationProperties(RedisProperties.class)
+//public class RedisAutoConfiguration {
+//
+//
+//    @Bean
+//    @ConditionalOnMissingBean(name = "redisTemplate")
+//    public RedisTemplate<Object, Object> redisTemplate(
+//            RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
+//        RedisTemplate<Object, Object> template = new RedisTemplate<>();
+//        template.setConnectionFactory(redisConnectionFactory);
+//        return template;
+//
+//    }
+//
+//
+//    @Bean
+//    @ConditionalOnMissingBean
+//    public StringRedisTemplate stringRedisTemplate(
+//            RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
+//        StringRedisTemplate template = new StringRedisTemplate();
+//        template.setConnectionFactory(redisConnectionFactory);
+//        return template;
+//
+//    }
+//
+//
+//}

+ 46 - 46
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/config/RedisConfig.java

@@ -1,46 +1,46 @@
-package com.gyee.meteorological.config;
-
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.PropertyAccessor;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.redis.connection.RedisConnectionFactory;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
-import org.springframework.data.redis.serializer.StringRedisSerializer;
-
-/**
-
-/**
- *@ClassName RedisConfig
- *@Description TODO
- *@Author 谢生杰
- *@Date 2020/9/14 10:42
- *@Version 1.0
- **/
-@Configuration
-public class RedisConfig {
-    @Bean
-    @SuppressWarnings("all")
-    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
-        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
-        template.setConnectionFactory(factory);
-        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
-        ObjectMapper om = new ObjectMapper();
-        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
-        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
-        jackson2JsonRedisSerializer.setObjectMapper(om);
-        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
-        // key采用String的序列化方式
-        template.setKeySerializer(stringRedisSerializer);
-        // hash的key也采用String的序列化方式
-        template.setHashKeySerializer(stringRedisSerializer);
-        // value序列化方式采用jackson
-        template.setValueSerializer(jackson2JsonRedisSerializer);
-        // hash的value序列化方式采用jackson
-        template.setHashValueSerializer(jackson2JsonRedisSerializer);
-        template.afterPropertiesSet();
-        return template;
-    }
-}
+//package com.gyee.meteorological.config;
+//
+//import com.fasterxml.jackson.annotation.JsonAutoDetect;
+//import com.fasterxml.jackson.annotation.PropertyAccessor;
+//import com.fasterxml.jackson.databind.ObjectMapper;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//import org.springframework.data.redis.connection.RedisConnectionFactory;
+//import org.springframework.data.redis.core.RedisTemplate;
+//import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+//import org.springframework.data.redis.serializer.StringRedisSerializer;
+//
+///**
+//
+///**
+// *@ClassName RedisConfig
+// *@Description TODO
+// *@Author 谢生杰
+// *@Date 2020/9/14 10:42
+// *@Version 1.0
+// **/
+////@Configuration
+//public class RedisConfig {
+//    @Bean
+//    @SuppressWarnings("all")
+//    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
+//        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
+//        template.setConnectionFactory(factory);
+//        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
+//        ObjectMapper om = new ObjectMapper();
+//        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+//        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+//        jackson2JsonRedisSerializer.setObjectMapper(om);
+//        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
+//        // key采用String的序列化方式
+//        template.setKeySerializer(stringRedisSerializer);
+//        // hash的key也采用String的序列化方式
+//        template.setHashKeySerializer(stringRedisSerializer);
+//        // value序列化方式采用jackson
+//        template.setValueSerializer(jackson2JsonRedisSerializer);
+//        // hash的value序列化方式采用jackson
+//        template.setHashValueSerializer(jackson2JsonRedisSerializer);
+//        template.afterPropertiesSet();
+//        return template;
+//    }
+//}

+ 20 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/controller/ProEconCoordinateController.java

@@ -0,0 +1,20 @@
+package com.gyee.meteorological.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-01
+ */
+@RestController
+@RequestMapping("//pro-econ-coordinate")
+public class ProEconCoordinateController {
+
+}

+ 20 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/controller/ProEconMeteorologicalController.java

@@ -0,0 +1,20 @@
+package com.gyee.meteorological.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-01
+ */
+@RestController
+@RequestMapping("//pro-econ-meteorological")
+public class ProEconMeteorologicalController {
+
+}

+ 20 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/controller/ProEconMeteorologicalfourdaysController.java

@@ -0,0 +1,20 @@
+package com.gyee.meteorological.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-01
+ */
+@RestController
+@RequestMapping("//pro-econ-meteorologicalfourdays")
+public class ProEconMeteorologicalfourdaysController {
+
+}

+ 9 - 2
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/init/CacheContext.java

@@ -2,11 +2,14 @@ package com.gyee.meteorological.init;
 
 
 import com.gyee.meteorological.model.auto.Coordinate;
+import com.gyee.meteorological.model.auto.ProEconCoordinate;
 import com.gyee.meteorological.service.auto.ICoordinateService;
+import com.gyee.meteorological.service.auto.IProEconCoordinateService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -21,12 +24,16 @@ import java.util.stream.Collectors;
 public class CacheContext implements CommandLineRunner {
     @Autowired
    private ICoordinateService coordinateService;
+    @Resource
+    private IProEconCoordinateService proEconCoordinateService;
 
     public static List<Coordinate> coordinateList = new ArrayList<>();
+
+    public static List<ProEconCoordinate> proEconCoordinates = new ArrayList<>();
     @Override
     public void run(String... args) throws Exception {
 
-        coordinateList = coordinateService.list().stream().filter(i->i.getIsopen().equals(1)).collect(Collectors.toList());
-
+//        coordinateList = coordinateService.list().stream().filter(i->i.getIsopen().equals(1)).collect(Collectors.toList());
+//        proEconCoordinates = proEconCoordinateService.list().stream().filter(i->i.getIsOpen().equals(1)).collect(Collectors.toList());
     }
 }

+ 16 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/mapper/auto/ProEconCoordinateMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.meteorological.mapper.auto;
+
+import com.gyee.meteorological.model.auto.ProEconCoordinate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-01
+ */
+public interface ProEconCoordinateMapper extends BaseMapper<ProEconCoordinate> {
+
+}

+ 16 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/mapper/auto/ProEconMeteorologicalMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.meteorological.mapper.auto;
+
+import com.gyee.meteorological.model.auto.ProEconMeteorological;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-01
+ */
+public interface ProEconMeteorologicalMapper extends BaseMapper<ProEconMeteorological> {
+
+}

+ 16 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/mapper/auto/ProEconMeteorologicalfourdaysMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.meteorological.mapper.auto;
+
+import com.gyee.meteorological.model.auto.ProEconMeteorologicalfourdays;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-01
+ */
+public interface ProEconMeteorologicalfourdaysMapper extends BaseMapper<ProEconMeteorologicalfourdays> {
+
+}

+ 26 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/City.java

@@ -0,0 +1,26 @@
+/**
+  * Copyright 2021 bejson.com 
+  */
+package com.gyee.meteorological.model;
+
+import lombok.Data;
+
+/**
+ * Auto-generated: 2021-07-12 15:16:38
+ *
+ * @author bejson.com (i@bejson.com)
+ * @website http://www.bejson.com/java2pojo/
+ */
+@Data
+public class City {
+
+    private long id;
+    private String name;
+    private Coord coord;
+    private String country;
+    private int population;
+    private int timezone;
+    private long sunrise;
+    private long sunset;
+
+}

+ 22 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/Clouds.java

@@ -0,0 +1,22 @@
+/**
+  * Copyright 2021 bejson.com 
+  */
+package com.gyee.meteorological.model;
+
+/**
+ * Auto-generated: 2021-07-02 15:21:42
+ *
+ * @author bejson.com (i@bejson.com)
+ * @website http://www.bejson.com/java2pojo/
+ */
+public class Clouds {
+
+    private int all;
+    public void setAll(int all) {
+         this.all = all;
+     }
+     public int getAll() {
+         return all;
+     }
+
+}

+ 30 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/Coord.java

@@ -0,0 +1,30 @@
+/**
+  * Copyright 2021 bejson.com 
+  */
+package com.gyee.meteorological.model;
+
+/**
+ * Auto-generated: 2021-07-02 15:21:42
+ *
+ * @author bejson.com (i@bejson.com)
+ * @website http://www.bejson.com/java2pojo/
+ */
+public class Coord {
+
+    private double lon;//经度
+    private double lat;//纬度
+    public void setLon(double lon) {
+         this.lon = lon;
+     }
+     public double getLon() {
+         return lon;
+     }
+
+    public void setLat(double lat) {
+         this.lat = lat;
+     }
+     public double getLat() {
+         return lat;
+     }
+
+}

+ 25 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/JsonRootBean.java

@@ -0,0 +1,25 @@
+/**
+  * Copyright 2021 bejson.com 
+  */
+package com.gyee.meteorological.model;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Auto-generated: 2021-07-12 15:16:38
+ *
+ * @author bejson.com (i@bejson.com)
+ * @website http://www.bejson.com/java2pojo/
+ */
+@Data
+public class JsonRootBean {
+
+    private String cod;
+    private int message;
+    private int cnt;
+    private List<com.gyee.meteorological.model.List> list;
+    private City city;
+
+
+}

+ 30 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/List.java

@@ -0,0 +1,30 @@
+/**
+  * Copyright 2021 bejson.com 
+  */
+package com.gyee.meteorological.model;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * Auto-generated: 2021-07-12 15:16:38
+ *
+ * @author bejson.com (i@bejson.com)
+ * @website http://www.bejson.com/java2pojo/
+ */
+@Data
+public class List {
+
+    private long dt;
+    private Main main;
+    private java.util.List<Weather> weather;
+    private Clouds clouds;
+    private Wind wind;
+    private Double visibility;
+    private int pop;
+    private Sys sys;
+    private Date dt_txt;
+
+
+}

+ 27 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/Main.java

@@ -0,0 +1,27 @@
+/**
+  * Copyright 2021 bejson.com 
+  */
+package com.gyee.meteorological.model;
+
+import lombok.Data;
+
+/**
+ * Auto-generated: 2021-07-02 15:21:42
+ *
+ * @author bejson.com (i@bejson.com)
+ * @website http://www.bejson.com/java2pojo/
+ */
+@Data
+public class Main {
+
+    private double temp;//温度
+    private double feels_like;
+    private double temp_min;
+    private double temp_max;
+    private int pressure;// 大气压力
+    private int humidity;//湿度
+    private int sea_level;
+    private int grnd_level;
+
+
+}

+ 22 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/Sys.java

@@ -0,0 +1,22 @@
+/**
+  * Copyright 2021 bejson.com 
+  */
+package com.gyee.meteorological.model;
+
+import lombok.Data;
+
+/**
+ * Auto-generated: 2021-07-02 15:21:42
+ *
+ * @author bejson.com (i@bejson.com)
+ * @website http://www.bejson.com/java2pojo/
+ */
+@Data
+public class Sys {
+
+    private String country;
+    private long sunrise;
+    private long sunset;
+
+
+}

+ 23 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/Weather.java

@@ -0,0 +1,23 @@
+/**
+  * Copyright 2021 bejson.com 
+  */
+package com.gyee.meteorological.model;
+
+import lombok.Data;
+
+/**
+ * Auto-generated: 2021-07-02 15:21:42
+ *
+ * @author bejson.com (i@bejson.com)
+ * @website http://www.bejson.com/java2pojo/
+ */
+@Data
+public class Weather {
+
+    private int id; //天气状况 ID
+    private String main;//一组天气参数(雨、雪、极端等)
+    private String description;//组内天气状况。您可以获得您的语言的输出
+    private String icon;//天气图标 ID
+
+
+}

+ 25 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/WeatherReal.java

@@ -0,0 +1,25 @@
+package com.gyee.meteorological.model;/*
+@author   谢生杰
+@date   2022/11/1-15:20
+*/
+
+import lombok.Data;
+import java.util.List;
+
+@Data
+public class WeatherReal {
+
+    private Coord coord;
+    private List<Weather> weather;
+    private String base;
+    private Main main;
+    private int visibility;//能见度
+    private Wind wind;
+    private Clouds clouds;
+    private long dt;
+    private Sys sys;
+    private int timezone;
+    private long id;
+    private String name;
+    private int cod;
+}

+ 38 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/Wind.java

@@ -0,0 +1,38 @@
+/**
+  * Copyright 2021 bejson.com 
+  */
+package com.gyee.meteorological.model;
+
+/**
+ * Auto-generated: 2021-07-02 15:21:42
+ *
+ * @author bejson.com (i@bejson.com)
+ * @website http://www.bejson.com/java2pojo/
+ */
+public class Wind {
+
+    private double speed;//风速
+    private double deg;//风向
+    private double gust;
+    public void setSpeed(double speed) {
+         this.speed = speed;
+     }
+     public double getSpeed() {
+         return speed;
+     }
+
+    public void setDeg(double deg) {
+         this.deg = deg;
+     }
+     public double getDeg() {
+         return deg;
+     }
+
+    public void setGust(double gust) {
+         this.gust = gust;
+     }
+     public double getGust() {
+         return gust;
+     }
+
+}

+ 33 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/auto/ProEconCoordinate.java

@@ -0,0 +1,33 @@
+package com.gyee.meteorological.model.auto;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProEconCoordinate extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    private String id;
+
+    private String windpowerstationId;
+
+    private BigDecimal lon;
+
+    private BigDecimal lat;
+
+    private Integer isOpen;
+
+
+}

+ 63 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/auto/ProEconMeteorological.java

@@ -0,0 +1,63 @@
+package com.gyee.meteorological.model.auto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProEconMeteorological extends Model {
+
+    private static final long serialVersionUID = 1L;
+    @TableId(value = "ID",type = IdType.INPUT)
+    private String id;
+
+    private String windpowerstationId;
+
+    private String weather;
+
+    private Double temp;
+
+    private Integer pressure;
+
+    private Integer humidity;
+
+    private Double tempMin;
+
+    private Double tempMax;
+
+    private Integer seaLevel;
+
+    private Integer grndLevel;
+
+    private Double visibility;
+
+    private Double speed;
+
+    private Double deg;
+
+    private Double gust;
+
+    private Integer clouds;
+
+    private Date datetime;
+
+    private String sunrise;
+
+    private String sunset;
+
+
+}

+ 65 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/model/auto/ProEconMeteorologicalfourdays.java

@@ -0,0 +1,65 @@
+package com.gyee.meteorological.model.auto;
+
+import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProEconMeteorologicalfourdays extends Model {
+
+    private static final long serialVersionUID = 1L;
+    @TableId(value = "ID",type = IdType.INPUT)
+    private String id;
+
+    private String windpowerstationId;
+
+    private String weather;
+
+    private Double temp;
+
+    private Integer pressure;
+
+    private Integer humidity;
+
+    private Double tempMin;
+
+    private Double tempMax;
+
+    private Integer seaLevel;
+
+    private Integer grndLevel;
+
+    private Double visibility;
+
+    private Double speed;
+
+    private Double deg;
+
+    private Double gust;
+
+    private Integer clouds;
+
+    private Date datetime;
+
+    private String sunrise;
+
+    private String sunset;
+
+
+}

+ 16 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/service/auto/IProEconCoordinateService.java

@@ -0,0 +1,16 @@
+package com.gyee.meteorological.service.auto;
+
+import com.gyee.meteorological.model.auto.ProEconCoordinate;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-01
+ */
+public interface IProEconCoordinateService extends IService<ProEconCoordinate> {
+
+}

+ 16 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/service/auto/IProEconMeteorologicalService.java

@@ -0,0 +1,16 @@
+package com.gyee.meteorological.service.auto;
+
+import com.gyee.meteorological.model.auto.ProEconMeteorological;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-01
+ */
+public interface IProEconMeteorologicalService extends IService<ProEconMeteorological> {
+
+}

+ 16 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/service/auto/IProEconMeteorologicalfourdaysService.java

@@ -0,0 +1,16 @@
+package com.gyee.meteorological.service.auto;
+
+import com.gyee.meteorological.model.auto.ProEconMeteorologicalfourdays;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-01
+ */
+public interface IProEconMeteorologicalfourdaysService extends IService<ProEconMeteorologicalfourdays> {
+
+}

+ 20 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/service/auto/impl/ProEconCoordinateServiceImpl.java

@@ -0,0 +1,20 @@
+package com.gyee.meteorological.service.auto.impl;
+
+import com.gyee.meteorological.model.auto.ProEconCoordinate;
+import com.gyee.meteorological.mapper.auto.ProEconCoordinateMapper;
+import com.gyee.meteorological.service.auto.IProEconCoordinateService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-01
+ */
+@Service
+public class ProEconCoordinateServiceImpl extends ServiceImpl<ProEconCoordinateMapper, ProEconCoordinate> implements IProEconCoordinateService {
+
+}

+ 20 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/service/auto/impl/ProEconMeteorologicalServiceImpl.java

@@ -0,0 +1,20 @@
+package com.gyee.meteorological.service.auto.impl;
+
+import com.gyee.meteorological.model.auto.ProEconMeteorological;
+import com.gyee.meteorological.mapper.auto.ProEconMeteorologicalMapper;
+import com.gyee.meteorological.service.auto.IProEconMeteorologicalService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-01
+ */
+@Service
+public class ProEconMeteorologicalServiceImpl extends ServiceImpl<ProEconMeteorologicalMapper, ProEconMeteorological> implements IProEconMeteorologicalService {
+
+}

+ 20 - 0
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/service/auto/impl/ProEconMeteorologicalfourdaysServiceImpl.java

@@ -0,0 +1,20 @@
+package com.gyee.meteorological.service.auto.impl;
+
+import com.gyee.meteorological.model.auto.ProEconMeteorologicalfourdays;
+import com.gyee.meteorological.mapper.auto.ProEconMeteorologicalfourdaysMapper;
+import com.gyee.meteorological.service.auto.IProEconMeteorologicalfourdaysService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-11-01
+ */
+@Service
+public class ProEconMeteorologicalfourdaysServiceImpl extends ServiceImpl<ProEconMeteorologicalfourdaysMapper, ProEconMeteorologicalfourdays> implements IProEconMeteorologicalfourdaysService {
+
+}

+ 360 - 15
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/service/collection/CollectionService.java

@@ -1,18 +1,39 @@
 package com.gyee.meteorological.service.collection;
 
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.gyee.common.model.StringUtils;
+import com.gyee.common.util.CommonUtils;
 import com.gyee.common.util.DateUtils;
+import com.gyee.common.util.JSONUtils;
 import com.gyee.common.util.RestTemplateUtil;
 import com.gyee.meteorological.init.CacheContext;
+import com.gyee.meteorological.model.*;
 import com.gyee.meteorological.model.auto.Coordinate;
+import com.gyee.meteorological.model.auto.ProEconCoordinate;
+import com.gyee.meteorological.model.auto.ProEconMeteorological;
+import com.gyee.meteorological.model.auto.ProEconMeteorologicalfourdays;
 import com.gyee.meteorological.service.RedisService;
+import com.gyee.meteorological.service.auto.IProEconCoordinateService;
+import com.gyee.meteorological.service.auto.IProEconMeteorologicalService;
+import com.gyee.meteorological.service.auto.IProEconMeteorologicalfourdaysService;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.system.ApplicationHome;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ResourceUtils;
 
 import javax.annotation.Resource;
-import java.util.Arrays;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.*;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @ClassName : CollectionService
@@ -24,8 +45,14 @@ import java.util.List;
 public class CollectionService {
 
     private Log log = LogFactory.getLog(CollectionService.class);
+//    @Resource
+//    private RedisService redisService;
     @Resource
-    private RedisService redisService;
+    private IProEconMeteorologicalService proEconMeteorologicalService;
+    @Resource
+    private IProEconMeteorologicalfourdaysService proEconMeteorologicalfourdaysService;
+    @Resource
+    private IProEconCoordinateService proEconCoordinateService;
 
     @Value("${meteorological.model}")
     private String model;
@@ -34,21 +61,339 @@ public class CollectionService {
     @Value("${meteorological.url}")
     private String url;
 
-    public void saveMeteorologicalData(){
-        List<Coordinate> coordinateList = CacheContext.coordinateList;
-
-        coordinateList.stream().forEach(c->{
-            String[] models = model.split(",");
-            Arrays.stream(models).forEach(m->{
-                long startTime = System.currentTimeMillis();
-               String restUrl = url+m+"?units=metric&lat="+c.getLat()+"&lon="+c.getLon()+"&units=metric&appid="+weatherkey;
-                String s = RestTemplateUtil.get(restUrl, null);
-                redisService.set((c.getForeignkeyid()+"_"+m).toUpperCase(),s);
-                long endTime = System.currentTimeMillis();
-                log.info((c.getForeignkeyid()+"_"+m).toUpperCase()+"保存成功,用时"+ (endTime-startTime) + "毫秒,当前时间为"+DateUtils.parseLongToDate(endTime));
+//    public void saveMeteorologicalData(){
+//        List<Coordinate> coordinateList = CacheContext.coordinateList;
+//
+//        coordinateList.stream().forEach(c->{
+//            String[] models = model.split(",");
+//            Arrays.stream(models).forEach(m->{
+//                long startTime = System.currentTimeMillis();
+//               String restUrl = url+m+"?units=metric&lat="+c.getLat()+"&lon="+c.getLon()+"&units=metric&appid="+weatherkey;
+//                String s = RestTemplateUtil.get(restUrl, null);
+//                redisService.set((c.getForeignkeyid()+"_"+m).toUpperCase(),s);
+//                long endTime = System.currentTimeMillis();
+//                log.info((c.getForeignkeyid()+"_"+m).toUpperCase()+"保存成功,用时"+ (endTime-startTime) + "毫秒,当前时间为"+DateUtils.parseLongToDate(endTime));
+//            });
+//        });
+//    }
+
+
+    public void saveMeteorological() throws IOException {
+        List<ProEconCoordinate> proEconCoordinates = proEconCoordinateService.list().stream().filter(i->i.getIsOpen()!=null && i.getIsOpen().equals(1)).collect(Collectors.toList());
+//        String property = System.getProperty("user.dir");
+
+        long startTime = System.currentTimeMillis();
+        proEconCoordinates.stream().forEach(c->{
+            String restUrl = url+"weather?units=metric&land=zh_cn&lat="+c.getLat()+"&lon="+c.getLon()+"&appid="+weatherkey;
+            String weatherStr = RestTemplateUtil.get(restUrl, null);
+            WeatherReal weatherReal = JSONObject.parseObject(weatherStr, new TypeReference<WeatherReal>() {
             });
+            ProEconMeteorological proEconMeteorological = new ProEconMeteorological();
+            proEconMeteorological.setId(CommonUtils.getUUID());
+            proEconMeteorological.setWindpowerstationId(c.getWindpowerstationId());
+
+            if(null!=weatherReal.getMain()) {
+                Main main=weatherReal.getMain();
+                //能见度
+                double visibility=weatherReal.getVisibility();
+                proEconMeteorological.setVisibility(visibility);
+                //温度
+                proEconMeteorological.setTemp(main.getTemp());
+                //当前最高温度
+                proEconMeteorological.setTempMax(main.getTemp_max());
+                //当前最低温度
+                proEconMeteorological.setTempMin(main.getTemp_min());
+                //大气压强
+                proEconMeteorological.setPressure(main.getPressure());
+                //湿度
+                proEconMeteorological.setHumidity(main.getHumidity());
+                //海平面大气压力
+                proEconMeteorological.setSeaLevel(main.getSea_level());
+                //地面大气压力
+                proEconMeteorological.setGrndLevel(main.getGrnd_level());
+            }
+            if(null!=weatherReal.getWeather() && !weatherReal.getWeather().isEmpty()){
+                Weather weather=weatherReal.getWeather().get(0);
+
+                String icon=weather.getIcon();
+
+                if (StringUtils.notEmp(icon))
+                {
+                    if(icon.equals("01d") || icon.equals("01n"))
+                    {
+                        //天气说明
+                        proEconMeteorological.setWeather("晴");
+
+                    }else if(icon.equals("02d") || icon.equals("02n"))
+                    {
+                        proEconMeteorological.setWeather("少云");
+                    }else if(icon.equals("03d") || icon.equals("03n"))
+                    {
+                        proEconMeteorological.setWeather("多云");
+                    }else if(icon.equals("04d") || icon.equals("04n"))
+                    {
+                        proEconMeteorological.setWeather("阴");
+                    }else if(icon.equals("09d") || icon.equals("09n"))
+                    {
+                        proEconMeteorological.setWeather("阵雨");
+                    }else if(icon.equals("10d") || icon.equals("10n"))
+                    {
+                        proEconMeteorological.setWeather("雨");
+                    }else if(icon.equals("11d") || icon.equals("11n"))
+                    {
+                        proEconMeteorological.setWeather("雷雨");
+                    }else if(icon.equals("13d") || icon.equals("13n"))
+                    {
+                        proEconMeteorological.setWeather("雪");
+                    }else if(icon.equals("50d") || icon.equals("50n"))
+                    {
+                        proEconMeteorological.setWeather("雾");
+                    }else
+                    {
+                        proEconMeteorological.setWeather("晴");
+                    }
+                }
+            }
+            if(null!=weatherReal.getWind()) {
+                Wind wind=weatherReal.getWind();
+                //风速
+                proEconMeteorological.setSpeed(wind.getSpeed());
+                proEconMeteorological.setGust(wind.getGust());
+                if(StringUtils.notEmp(wind.getDeg()))
+                {
+                    double fx=wind.getDeg();
+                    //风向
+                    proEconMeteorological.setDeg(fx);
+//                    if(fx< 11.25 || fx>= 348.75)
+//                    {
+//                        //风向
+//                        proEconMeteorological.setDeg("北");
+//                    }else if(fx>= 11.25 && fx< 33.75)
+//                    {
+//                        proEconMeteorological.setDeg("东北北");
+//                    }else if(fx>= 33.75 && fx< 56.25)
+//                    {
+//                        proEconMeteorological.setDeg("东北");
+//                    }else if(fx>= 56.25 && fx< 78.75)
+//                    {
+//                        proEconMeteorological.setDeg("东北东");
+//                    }else if(fx>= 78.75 && fx< 101.25)
+//                    {
+//                        proEconMeteorological.setDeg("东");
+//                    }else if(fx>= 101.25 && fx< 123.75)
+//                    {
+//                        proEconMeteorological.setDeg("东南东");
+//                    }else if(fx>= 123.75 && fx< 146.25)
+//                    {
+//                        proEconMeteorological.setDeg("东南");
+//                    }else if(fx>= 146.25 && fx< 168.75)
+//                    {
+//                        proEconMeteorological.setDeg("东南南");
+//                    }else if(fx>= 168.75 && fx< 191.25)
+//                    {
+//                        proEconMeteorological.setDeg("南");
+//                    }
+//                    else if(fx>= 191.25 && fx< 213.75)
+//                    {
+//                        proEconMeteorological.setDeg("西南南");
+//                    }else if(fx>= 213.75 && fx< 236.25)
+//                    {
+//                        proEconMeteorological.setDeg("西南");
+//                    }else if(fx>= 236.25 && fx< 258.75)
+//                    {
+//                        proEconMeteorological.setDeg("西南西");
+//                    }else if(fx>= 258.75 && fx< 281.25)
+//                    {
+//                        proEconMeteorological.setDeg("西");
+//                    }
+//                    else if(fx>= 281.25 && fx< 303.75)
+//                    {
+//                        proEconMeteorological.setDeg("西北西");
+//                    }else if(fx>= 303.75 && fx< 326.25)
+//                    {
+//                        proEconMeteorological.setDeg("西北");
+//                    }else if(fx>= 326.25 && fx< 348.75)
+//                    {
+//                        proEconMeteorological.setDeg("西北北");
+//                    }
+
+                }
+
+            }
+            if(null!=weatherReal.getClouds()) {
+                Clouds clouds=weatherReal.getClouds();
+                //云量
+                proEconMeteorological.setClouds(clouds.getAll());
+            }
+            if(null!=weatherReal.getSys())
+            {
+                Sys sys=weatherReal.getSys();
+                if(StringUtils.notEmp(sys.getSunrise()))
+                {
+                    Date date=new Date(sys.getSunrise()*1000);
+                    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
+                    //日出时间
+                    proEconMeteorological.setSunrise(sdf.format(date));
+
+                }
+                if(StringUtils.notEmp(sys.getSunset()))
+                {
+                    Date date=new Date(sys.getSunset()*1000);
+                    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
+                    //日落时间
+                    proEconMeteorological.setSunset(sdf.format(date));
+                }
+            }
+            Date date=DateUtils.parseLongToDate(weatherReal.getDt()*1000);
+            proEconMeteorological.setDatetime(date);
+
+            QueryWrapper<ProEconMeteorological> qw = new QueryWrapper<>();
+            qw.eq("windpowerstation_id",c.getWindpowerstationId());
+            qw.eq("datetime",date);
+            List<ProEconMeteorological> list = proEconMeteorologicalService.list(qw);
+            if (StringUtils.isEmpty(list)){
+                proEconMeteorologicalService.save(proEconMeteorological);
+            }
+
         });
+        long endTime = System.currentTimeMillis();
+        log.info("保存成功,用时"+ (endTime-startTime) + "毫秒,当前时间为"+DateUtils.parseLongToDate(endTime));
+
+    }
+
+    public void saveMeteorologicalFiveDay(){
 
-        ;
+        List<ProEconCoordinate> proEconCoordinates = proEconCoordinateService.list().stream().filter(i->i.getIsOpen()!=null && i.getIsOpen().equals(1)).collect(Collectors.toList());
+//        String property = System.getProperty("user.dir");
+        QueryWrapper<ProEconMeteorologicalfourdays> qw = new QueryWrapper<>();
+        qw.ge("datetime",DateUtils.getCurrentDate());
+        proEconMeteorologicalfourdaysService.remove(qw);
+
+        long startTime = System.currentTimeMillis();
+        List<ProEconMeteorologicalfourdays> resultList = new ArrayList<>();
+        proEconCoordinates.stream().forEach(c->{
+            String restUrl = url+"forecast?units=metric&land=zh_cn&lat="+c.getLat()+"&lon="+c.getLon()+"&appid="+weatherkey;
+            String weatherStr = RestTemplateUtil.get(restUrl, null);
+            JsonRootBean jsonRootBean = JSONObject.parseObject(weatherStr, new TypeReference<JsonRootBean>() {
+            });
+            String  sunriseString = null;
+            String sunsetString = null;
+            if(null!=jsonRootBean && null!=jsonRootBean.getCity()){
+                City city = jsonRootBean.getCity();
+                if(StringUtils.notEmp(city.getSunrise()))
+                {
+                    Date sunrise=new Date(city.getSunrise()*1000);
+                    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
+                    sunriseString = sdf.format(sunrise);
+                }
+                if(StringUtils.notEmp(city.getSunset()))
+                {
+                    Date sunset=new Date(city.getSunset()*1000);
+                    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
+                    sunsetString = sdf.format(sunset);
+
+                }
+            }
+            if(null!=jsonRootBean && null!=jsonRootBean.getList() && !jsonRootBean.getList().isEmpty()){
+                for(com.gyee.meteorological.model.List weatherReal:jsonRootBean.getList()){
+                    ProEconMeteorologicalfourdays proEconMeteorological = new ProEconMeteorologicalfourdays();
+                    Date date=DateUtils.parseLongToDate(weatherReal.getDt()*1000);
+                    proEconMeteorological.setId(CommonUtils.getUUID());
+                    proEconMeteorological.setDatetime(date);
+                    proEconMeteorological.setWindpowerstationId(c.getWindpowerstationId());
+                    proEconMeteorological.setVisibility(weatherReal.getVisibility());
+                    //日出时间
+                    proEconMeteorological.setSunrise(sunriseString);
+                    //日落时间
+                    proEconMeteorological.setSunset(sunsetString);
+                    if(null!=weatherReal.getMain())
+                    {
+                        Main main=weatherReal.getMain();
+                        proEconMeteorological.setTemp(main.getTemp());
+                        proEconMeteorological.setTempMax(main.getTemp_max());
+                        proEconMeteorological.setTempMin(main.getTemp_min());
+                        proEconMeteorological.setPressure(main.getPressure());
+                        proEconMeteorological.setHumidity(main.getHumidity());
+                        proEconMeteorological.setSeaLevel(main.getSea_level());
+                        proEconMeteorological.setGrndLevel(main.getGrnd_level());
+                    }
+
+
+                    if(null!=weatherReal.getClouds())
+                    {
+                        //云量
+                        proEconMeteorological.setClouds(weatherReal.getClouds().getAll());
+                    }
+
+
+
+                    if(null!=weatherReal.getWind())
+                    {
+                        Wind wind=weatherReal.getWind();
+                        proEconMeteorological.setSpeed(wind.getSpeed());
+
+                        if(StringUtils.notEmp(wind.getDeg()))
+                        {
+                            double fx=wind.getDeg();
+                            proEconMeteorological.setDeg(fx);
+                        }
+                        if(StringUtils.notEmp(wind.getGust()))
+                        {
+                            double zf=wind.getGust();
+                            proEconMeteorological.setGust(zf);
+                        }
+
+                    }
+
+                    if(null!=weatherReal.getWeather() && !weatherReal.getWeather().isEmpty())
+                    {
+                        Weather weather=weatherReal.getWeather().get(0);
+
+                        String icon=weather.getIcon();
+
+                        if (StringUtils.notEmp(icon))
+                        {
+                            if(icon.equals("01d") || icon.equals("01n"))
+                            {
+                                proEconMeteorological.setWeather("晴");
+                            }else if(icon.equals("02d") || icon.equals("02n"))
+                            {
+                                proEconMeteorological.setWeather("少云");
+                            }else if(icon.equals("03d") || icon.equals("03n"))
+                            {
+                                proEconMeteorological.setWeather("多云");
+                            }else if(icon.equals("04d") || icon.equals("04n"))
+                            {
+                                proEconMeteorological.setWeather("阴");
+                            }else if(icon.equals("09d") || icon.equals("09n"))
+                            {
+                                proEconMeteorological.setWeather("阵雨");
+                            }else if(icon.equals("10d") || icon.equals("10n"))
+                            {
+                                proEconMeteorological.setWeather("雨");
+                            }else if(icon.equals("11d") || icon.equals("11n"))
+                            {
+                                proEconMeteorological.setWeather("雷雨");
+                            }else if(icon.equals("13d") || icon.equals("13n"))
+                            {
+                                proEconMeteorological.setWeather("雪");
+                            }else if(icon.equals("50d") || icon.equals("50n"))
+                            {
+                                proEconMeteorological.setWeather("雾");
+                            }else
+                            {
+                                proEconMeteorological.setWeather("晴");
+                            }
+
+                        }
+                    }
+                    resultList.add(proEconMeteorological);
+                }
+            }
+
+        });
+        proEconMeteorologicalfourdaysService.saveBatch(resultList);
+        long endTime = System.currentTimeMillis();
+        log.info("保存成功,用时"+ (endTime-startTime) + "毫秒,当前时间为"+DateUtils.parseLongToDate(endTime));
     }
 }

+ 125 - 125
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/service/impl/RedisServiceImpl.java

@@ -1,125 +1,125 @@
-package com.gyee.meteorological.service.impl;
-
-import com.gyee.meteorological.service.RedisService;
-import org.springframework.dao.DataAccessException;
-import org.springframework.data.redis.connection.RedisConnection;
-import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
-import org.springframework.data.redis.core.RedisCallback;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.serializer.RedisSerializer;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.lang.reflect.Field;
-import java.util.concurrent.TimeUnit;
-
-@Service("redisService")
-public class RedisServiceImpl implements RedisService {
-
-    @Resource
-    private RedisTemplate<String, ?> redisTemplate;
-
-    @Override
-    public boolean set(final String key, final String value) {
-        boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
-            @Override
-            public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
-                RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
-                connection.set(serializer.serialize(key), serializer.serialize(value));
-                return true;
-            }
-        });
-        return result;
-    }
-
-    @Override
-    public String get(final String key) {
-        String result = redisTemplate.execute(new RedisCallback<String>() {
-            @Override
-            public String doInRedis(RedisConnection connection) throws DataAccessException {
-                RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
-                byte[] value = connection.get(serializer.serialize(key));
-                return serializer.deserialize(value);
-            }
-        });
-        return result;
-    }
-
-
-
-    @Override
-    public boolean expire(final String key, long expire) {
-        return redisTemplate.expire(key, expire, TimeUnit.SECONDS);
-    }
-
-    @Override
-    public boolean remove(final String key) {
-        boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
-            @Override
-            public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
-                RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
-                connection.del(key.getBytes());
-                return true;
-            }
-        });
-        return result;
-    }
-
-    @Override
-    public boolean hasKey(final String key) {
-        try {
-            return redisTemplate.hasKey(key);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return false;
-        }
-    }
-
-    @Override
-    public void setObject(Object obj) {
-        Field[] fields = obj.getClass().getDeclaredFields();
-        for(int i = 0 , len = fields.length; i < len; i++) {
-            // 对于每个属性,获取属性名
-            String varName = fields[i].getName();
-            try {
-                // 获取原来的访问控制权限
-                boolean accessFlag = fields[i].isAccessible();
-                // 修改访问控制权限
-                fields[i].setAccessible(true);
-                // 获取在对象f中属性fields[i]对应的对象中的变量
-                Object o;
-                try {
-                    o = fields[i].get(obj);
-                    if (o!=null){
-                        set(varName, String.valueOf(o));
-                    }else {
-                        set(varName,"");
-                    }
-
-                    //System.err.println("传入的对象中包含一个如下的变量:" + varName + " = " + o);
-                } catch (IllegalAccessException e) {
-                    // TODO Auto-generated catch block
-                    e.printStackTrace();
-                }
-                // 恢复访问控制权限
-                fields[i].setAccessible(accessFlag);
-            } catch (IllegalArgumentException ex) {
-                ex.printStackTrace();
-            }
-        }
-
-    }
-
-    public void select(Integer dbIndex) {
-        if (dbIndex == null || dbIndex > 15 || dbIndex < 0) {
-            dbIndex = 0;
-        }
-        LettuceConnectionFactory jedisConnectionFactory = (LettuceConnectionFactory) redisTemplate
-                .getConnectionFactory();
-        jedisConnectionFactory.setDatabase(dbIndex);
-        redisTemplate.setConnectionFactory(jedisConnectionFactory);
-        jedisConnectionFactory.afterPropertiesSet();
-//        jedisConnectionFactory.resetConnection();
-
-    }
-}
+//package com.gyee.meteorological.service.impl;
+//
+//import com.gyee.meteorological.service.RedisService;
+//import org.springframework.dao.DataAccessException;
+//import org.springframework.data.redis.connection.RedisConnection;
+//import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
+//import org.springframework.data.redis.core.RedisCallback;
+//import org.springframework.data.redis.core.RedisTemplate;
+//import org.springframework.data.redis.serializer.RedisSerializer;
+//import org.springframework.stereotype.Service;
+//
+//import javax.annotation.Resource;
+//import java.lang.reflect.Field;
+//import java.util.concurrent.TimeUnit;
+//
+//@Service("redisService")
+//public class RedisServiceImpl implements RedisService {
+//
+//    @Resource
+//    private RedisTemplate<String, ?> redisTemplate;
+//
+//    @Override
+//    public boolean set(final String key, final String value) {
+//        boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
+//            @Override
+//            public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
+//                RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
+//                connection.set(serializer.serialize(key), serializer.serialize(value));
+//                return true;
+//            }
+//        });
+//        return result;
+//    }
+//
+//    @Override
+//    public String get(final String key) {
+//        String result = redisTemplate.execute(new RedisCallback<String>() {
+//            @Override
+//            public String doInRedis(RedisConnection connection) throws DataAccessException {
+//                RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
+//                byte[] value = connection.get(serializer.serialize(key));
+//                return serializer.deserialize(value);
+//            }
+//        });
+//        return result;
+//    }
+//
+//
+//
+//    @Override
+//    public boolean expire(final String key, long expire) {
+//        return redisTemplate.expire(key, expire, TimeUnit.SECONDS);
+//    }
+//
+//    @Override
+//    public boolean remove(final String key) {
+//        boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
+//            @Override
+//            public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
+//                RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
+//                connection.del(key.getBytes());
+//                return true;
+//            }
+//        });
+//        return result;
+//    }
+//
+//    @Override
+//    public boolean hasKey(final String key) {
+//        try {
+//            return redisTemplate.hasKey(key);
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//            return false;
+//        }
+//    }
+//
+//    @Override
+//    public void setObject(Object obj) {
+//        Field[] fields = obj.getClass().getDeclaredFields();
+//        for(int i = 0 , len = fields.length; i < len; i++) {
+//            // 对于每个属性,获取属性名
+//            String varName = fields[i].getName();
+//            try {
+//                // 获取原来的访问控制权限
+//                boolean accessFlag = fields[i].isAccessible();
+//                // 修改访问控制权限
+//                fields[i].setAccessible(true);
+//                // 获取在对象f中属性fields[i]对应的对象中的变量
+//                Object o;
+//                try {
+//                    o = fields[i].get(obj);
+//                    if (o!=null){
+//                        set(varName, String.valueOf(o));
+//                    }else {
+//                        set(varName,"");
+//                    }
+//
+//                    //System.err.println("传入的对象中包含一个如下的变量:" + varName + " = " + o);
+//                } catch (IllegalAccessException e) {
+//                    // TODO Auto-generated catch block
+//                    e.printStackTrace();
+//                }
+//                // 恢复访问控制权限
+//                fields[i].setAccessible(accessFlag);
+//            } catch (IllegalArgumentException ex) {
+//                ex.printStackTrace();
+//            }
+//        }
+//
+//    }
+//
+//    public void select(Integer dbIndex) {
+//        if (dbIndex == null || dbIndex > 15 || dbIndex < 0) {
+//            dbIndex = 0;
+//        }
+//        LettuceConnectionFactory jedisConnectionFactory = (LettuceConnectionFactory) redisTemplate
+//                .getConnectionFactory();
+//        jedisConnectionFactory.setDatabase(dbIndex);
+//        redisTemplate.setConnectionFactory(jedisConnectionFactory);
+//        jedisConnectionFactory.afterPropertiesSet();
+////        jedisConnectionFactory.resetConnection();
+//
+//    }
+//}

+ 29 - 4
realtime/meteorologicalcollection/src/main/java/com/gyee/meteorological/task/SaticScheduleTask.java

@@ -1,12 +1,15 @@
 package com.gyee.meteorological.task;
 
 
+import com.gyee.meteorological.service.auto.IProEconCoordinateService;
 import com.gyee.meteorological.service.collection.CollectionService;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 
 import javax.annotation.Resource;
+import java.io.FileNotFoundException;
+import java.io.IOException;
 
 /**
  * @ClassName : SaticScheduleTask
@@ -23,15 +26,37 @@ public class SaticScheduleTask {
     private CollectionService collectionService;
 
 
-    /**
+
+//    /**
+//     * 定时采集
+//     */
+//    @Scheduled(cron = "0 0/10 * * * ?")
+//    //或直接指定时间间隔,例如:5秒
+//    //@Scheduled(fixedRate=5000)
+//    private void analysisTasks() {
+//        collectionService.saveMeteorologicalData();
+//    }
+
+        /**
      * 定时采集
      */
-    @Scheduled(cron = "0 0/20 * * * ?")
+    @Scheduled(cron = "0 0/15 * * * ?")
+    //或直接指定时间间隔,例如:5秒
+    //@Scheduled(fixedRate=5000)
+    private void saveMeteorological() throws IOException {
+        collectionService.saveMeteorological();
+    }
+
+
+    @Scheduled(cron = "0 0 0/2 * * ?")
     //或直接指定时间间隔,例如:5秒
     //@Scheduled(fixedRate=5000)
-    private void analysisTasks() {
-        collectionService.saveMeteorologicalData();
+    private void saveMeteorologicalFourDay() throws IOException {
+        collectionService.saveMeteorologicalFiveDay();
     }
 
 
+
+
+
 }

+ 22 - 23
realtime/meteorologicalcollection/src/main/resources/application-test.yml

@@ -8,33 +8,32 @@ spring:
   main:
     allow-bean-definition-overriding: true #当遇到同样名字的时候,是否允许覆盖注册
   #redis集群
-  redis:
-    host: 10.83.68.94
-    port: 6379
-    timeout: 100000
-    #    集群环境打开下面注释,单机不需要打开
-    #    cluster:
-    #      集群信息
-    #      nodes: xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx
-    #      #默认值是5 一般当此值设置过大时,容易报:Too many Cluster redirections
-    #      maxRedirects: 3
-    password:
-    application:
-      name: test
-    jedis:
-      pool:
-        max-active: 8
-        min-idle: 0
-        max-idle: 8
-        max-wait: -1
-    database: 19
+#  redis:
+#    host: 10.81.3.155
+#    port: 6379
+#    timeout: 100000
+#    #    集群环境打开下面注释,单机不需要打开
+#    #    cluster:
+#    #      集群信息
+#    #      nodes: xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx
+#    #      #默认值是5 一般当此值设置过大时,容易报:Too many Cluster redirections
+#    #      maxRedirects: 3
+#    password:
+#    application:
+#      name: test
+#    jedis:
+#      pool:
+#        max-active: 8
+#        min-idle: 0
+#        max-idle: 8
+#        max-wait: -1
+#    database: 1
   autoconfigure:
     exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
-    driver-class-name: oracle.jdbc.OracleDriver
-    #外网
-    url: jdbc:oracle:thin:@10.83.68.165:1521:gdsj
+    driver-class-name: org.postgresql.Driver
+    url: jdbc:postgresql://120.46.148.180:5432/wisdom
     username: gdprod
     password: gd123
     oracle-schema=:

+ 1 - 1
realtime/meteorologicalcollection/src/main/resources/application.yml

@@ -1,4 +1,4 @@
 spring:
   profiles:
-    active: dev
+    active: test
 #    active: jn

+ 6 - 2
realtime/meteorologicalcollection/src/test/java/com/gyee/meteorological/MeteorologicalTest.java

@@ -9,6 +9,8 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import javax.annotation.Resource;
+import java.io.FileNotFoundException;
+import java.io.IOException;
 
 /**
  * @ClassName : MeteorologicalTest
@@ -24,7 +26,9 @@ public class MeteorologicalTest {
     private CollectionService collectionService;
 
     @Test
-    public void test1(){
-        collectionService.saveMeteorologicalData();
+    public void test1() throws IOException {
+//        collectionService.saveMeteorologicalData();
+//        collectionService.saveMeteorological();
+        collectionService.saveMeteorologicalFourDay();
     }
 }