values, HSSFWorkbook wb) {
+
+ // 第一步,创建一个HSSFWorkbook,对应一个Excel文件
+ if (wb == null) {
+ wb = new HSSFWorkbook();
+ }
+
+ // 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
+ HSSFSheet sheet = wb.createSheet(sheetName);
+
+ // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
+ HSSFRow row = sheet.createRow(0);
+
+ // 第四步,创建单元格,并设置值表头 设置表头居中
+ HSSFCellStyle style = wb.createCellStyle();
+ // 创建一个居中格式
+ style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
+
+ //声明列对象
+ HSSFCell cell;
+
+ //创建标题
+ for (int i = 0; i < title.length; i++) {
+ cell = row.createCell(i);
+ cell.setCellValue(title[i]);
+ cell.setCellStyle(style);
+ }
+
+ //创建内容
+ for (int i = 0; i < values.size(); i++) {
+ row = sheet.createRow(i + 1);
+ for (int j = 0; j < values.get(i).length; j++) {
+ //将内容按顺序赋给对应的列对象
+ row.createCell(j).setCellValue(values.get(i)[j]);
+ }
+ }
+ return wb;
+ }
+}
diff --git a/storm_zj_hz/src/main/java/com/rehome/jpahefengweather/utils/IPaging.java b/storm_zj_hz/src/main/java/com/rehome/jpahefengweather/utils/IPaging.java
new file mode 100644
index 0000000..b8e8aa9
--- /dev/null
+++ b/storm_zj_hz/src/main/java/com/rehome/jpahefengweather/utils/IPaging.java
@@ -0,0 +1,38 @@
+package com.rehome.jpahefengweather.utils;
+
+/**
+ * 分页接口
+ *
+ * @ApiModelProperty("分页信息")
+ * private Paging paging = new Paging();
+ *
+ * @Override
+ * public Paging getPaging() {
+ * return paging;
+ * }
+ *
+ * @Override
+ * public void setPaging(Paging paging) {
+ * this.paging = paging;
+ * }
+ *
+ * @author LiuHuiYu
+ * @version v1.0.0.0
+ * Created DateTime 2022-01-12 10:22
+ */
+public interface IPaging {
+ /**
+ * 获取分页信息
+ * @author LiuHuiYu
+ * Created DateTime 2022-01-20 15:29
+ * @return cc.rehome.zhanjiang.data_center_model.domain.Paging
+ */
+ Paging getPaging();
+ /**
+ * 设置分页信息
+ * @author LiuHuiYu
+ * Created DateTime 2022-01-20 15:29
+ * @param paging 分页信息
+ */
+ void setPaging(Paging paging);
+}
diff --git a/storm_zj_hz/src/main/java/com/rehome/jpahefengweather/utils/ISerializationJson.java b/storm_zj_hz/src/main/java/com/rehome/jpahefengweather/utils/ISerializationJson.java
new file mode 100644
index 0000000..59c28f0
--- /dev/null
+++ b/storm_zj_hz/src/main/java/com/rehome/jpahefengweather/utils/ISerializationJson.java
@@ -0,0 +1,18 @@
+package com.rehome.jpahefengweather.utils;
+
+import java.io.Serializable;
+
+/**
+ * @author LiuHuiYu
+ * @version v1.0.0.0
+ * Created DateTime 2022-01-08 9:45
+ */
+public interface ISerializationJson extends Serializable {
+ /**
+ * 将当前类序列化成json字符串
+ * @author LiuHuiYu
+ * Created DateTime 2022-01-20 15:30
+ * @return java.lang.String
+ */
+ String toJson();
+}
diff --git a/storm_zj_hz/src/main/java/com/rehome/jpahefengweather/utils/OkHttpConfig.java b/storm_zj_hz/src/main/java/com/rehome/jpahefengweather/utils/OkHttpConfig.java
new file mode 100644
index 0000000..d30da45
--- /dev/null
+++ b/storm_zj_hz/src/main/java/com/rehome/jpahefengweather/utils/OkHttpConfig.java
@@ -0,0 +1,86 @@
+package com.rehome.jpahefengweather.utils;
+
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+import java.util.concurrent.TimeUnit;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
+import com.liuhuiyu.spring_util.SpringUtil;
+import okhttp3.ConnectionPool;
+import okhttp3.OkHttpClient;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * Created by qhong on 2018/7/3 16:52
+ **/
+@Configuration
+public class OkHttpConfig {
+
+ public static OkHttpConfig getInstance() {
+ return SpringUtil.getBean(OkHttpConfig.class);
+ }
+ public OkHttpConfig() {}
+ public OkHttpClient okHttpClient;
+ public OkHttpClient getOkHttpClient(){
+ if(okHttpClient==null){
+ okHttpClient=OkHttpConfig.getInstance().okHttpClient();
+ }
+ return okHttpClient;
+ }
+
+
+ @Bean
+ public X509TrustManager x509TrustManager() {
+ return new X509TrustManager() {
+ @Override
+ public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
+ }
+ @Override
+ public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
+ }
+ @Override
+ public X509Certificate[] getAcceptedIssuers() {
+ return new X509Certificate[0];
+ }
+ };
+ }
+ @Bean
+ public SSLSocketFactory sslSocketFactory() {
+ try {
+ //信任任何链接
+ SSLContext sslContext = SSLContext.getInstance("TLS");
+ sslContext.init(null, new TrustManager[]{x509TrustManager()}, new SecureRandom());
+ return sslContext.getSocketFactory();
+ } catch (NoSuchAlgorithmException e) {
+ e.printStackTrace();
+ } catch (KeyManagementException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ /**
+ * Create a new connection pool with tuning parameters appropriate for a single-user application.
+ * The tuning parameters in this pool are subject to change in future OkHttp releases. Currently
+ */
+ @Bean
+ public ConnectionPool pool() {
+ return new ConnectionPool(200, 5, TimeUnit.MINUTES);
+ }
+ @Bean
+ public OkHttpClient okHttpClient() {
+ return new OkHttpClient.Builder()
+ .sslSocketFactory(sslSocketFactory(), x509TrustManager())
+ .retryOnConnectionFailure(true)//是否开启缓存
+ .connectionPool(pool())//连接池
+ .connectTimeout(10L, TimeUnit.SECONDS)
+ .readTimeout(30L, TimeUnit.SECONDS)
+ .build();
+ }
+}
\ No newline at end of file
diff --git a/storm_zj_hz/src/main/java/com/rehome/jpahefengweather/utils/OkHttpUtil.java b/storm_zj_hz/src/main/java/com/rehome/jpahefengweather/utils/OkHttpUtil.java
new file mode 100644
index 0000000..2f40152
--- /dev/null
+++ b/storm_zj_hz/src/main/java/com/rehome/jpahefengweather/utils/OkHttpUtil.java
@@ -0,0 +1,133 @@
+package com.rehome.jpahefengweather.utils;
+
+import java.util.Iterator;
+import java.util.Map;
+
+import com.liuhuiyu.spring_util.SpringUtil;
+import okhttp3.FormBody;
+import okhttp3.MediaType;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+import okhttp3.Response;
+
+/**
+ * Created by qhong on 2018/7/3 16:55
+ **/
+public class OkHttpUtil{
+
+
+ /**
+ * 根据map获取get请求参数
+ * @param queries
+ * @return
+ */
+ public static StringBuffer getQueryString(String url,Map queries){
+ StringBuffer sb = new StringBuffer(url);
+ if (queries != null && queries.keySet().size() > 0) {
+ boolean firstFlag = true;
+ Iterator iterator = queries.entrySet().iterator();
+ while (iterator.hasNext()) {
+ Map.Entry entry = (Map.Entry) iterator.next();
+ if (firstFlag) {
+ sb.append("?" + entry.getKey() + "=" + entry.getValue());
+ firstFlag = false;
+ } else {
+ sb.append("&" + entry.getKey() + "=" + entry.getValue());
+ }
+ }
+ }
+ return sb;
+ }
+
+ /**
+ * 调用okhttp的newCall方法
+ * @param request
+ * @return
+ */
+ private static String execNewCall(Request request){
+ Response response = null;
+ try {
+ OkHttpClient okHttpClient = OkHttpConfig.getInstance().getOkHttpClient();
+ response = okHttpClient.newCall(request).execute();
+ int status = response.code();
+ if (response.isSuccessful()&&status==200) {
+ return response.body().string();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if (response != null) {
+ response.close();
+ }
+ }
+ return "";
+ }
+
+ /**
+ * get
+ * @param url 请求的url
+ * @param queries 请求的参数,在浏览器?后面的数据,没有可以传null
+ * @return
+ */
+ public static String get(String url, Map queries) {
+ StringBuffer sb = getQueryString(url,queries);
+ Request request = new Request.Builder()
+ .url(sb.toString())
+ .build();
+ return execNewCall(request);
+ }
+
+ /**
+ * post
+ *
+ * @param url 请求的url
+ * @param params post form 提交的参数
+ * @return
+ */
+ public static String postFormParams(String url, Map params) {
+ FormBody.Builder builder = new FormBody.Builder();
+ //添加参数
+ if (params != null && params.keySet().size() > 0) {
+ for (String key : params.keySet()) {
+ builder.add(key, params.get(key));
+ }
+ }
+ Request request = new Request.Builder()
+ .url(url)
+ .post(builder.build())
+ .build();
+ return execNewCall(request);
+ }
+
+
+ /**
+ * Post请求发送JSON数据....{"name":"zhangsan","pwd":"123456"}
+ * 参数一:请求Url
+ * 参数二:请求的JSON
+ * 参数三:请求回调
+ */
+ public static String postJsonParams(String url, String jsonParams) {
+ RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), jsonParams);
+ Request request = new Request.Builder()
+ .url(url)
+ .post(requestBody)
+ .build();
+ return execNewCall(request);
+ }
+
+ /**
+ * Post请求发送xml数据....
+ * 参数一:请求Url
+ * 参数二:请求的xmlString
+ * 参数三:请求回调
+ */
+ public static String postXmlParams(String url, String xml) {
+ RequestBody requestBody = RequestBody.create(MediaType.parse("application/xml; charset=utf-8"), xml);
+ Request request = new Request.Builder()
+ .url(url)
+ .post(requestBody)
+ .build();
+ return execNewCall(request);
+ }
+}
diff --git a/storm_zj_hz/src/main/java/com/rehome/jpahefengweather/utils/Paging.java b/storm_zj_hz/src/main/java/com/rehome/jpahefengweather/utils/Paging.java
new file mode 100644
index 0000000..a6a7a90
--- /dev/null
+++ b/storm_zj_hz/src/main/java/com/rehome/jpahefengweather/utils/Paging.java
@@ -0,0 +1,82 @@
+package com.rehome.jpahefengweather.utils;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.data.domain.PageRequest;
+
+/**
+ * 分页查询信息
+ *
+ * @author LiuHuiYu
+ * @version v1.0.0.0
+ * Created DateTime 2021-12-20 16:13
+ */
+@ApiModel(value = "Paging", description = "分页信息")
+public class Paging {
+ @ApiModelProperty("当前页面索引(0开始)")
+ private int pageIndex;
+ @ApiModelProperty("页面大小(0,表示不会有列表信息)")
+ private int pageSize;
+ @ApiModelProperty("全部数据放入一个页面不分页")
+ private boolean allInOne;
+ public static final int FIRST_PAGE_INDEX = 0;
+ public static final int DEFAULT_PAGE_SIZE = 20;
+ public static final int MIN_PAGE_SIZE = 0;
+
+ public Paging() {
+ pageIndex = FIRST_PAGE_INDEX;
+ pageSize = DEFAULT_PAGE_SIZE;
+ }
+
+ public int getPageIndex() {
+ return pageIndex;
+ }
+
+ public void setPageIndex(int pageIndex) {
+ this.pageIndex = Math.max(pageIndex, FIRST_PAGE_INDEX);
+ }
+
+ public int getPageSize() {
+ return pageSize;
+ }
+
+ public void setPageSize(int pageSize) {
+ this.pageSize = pageSize < MIN_PAGE_SIZE ? DEFAULT_PAGE_SIZE : pageSize;
+ }
+ public boolean isAllInOne() {
+ return allInOne;
+ }
+
+ public void setAllInOne(boolean allInOne) {
+ this.allInOne = allInOne;
+ }
+
+ /**
+ * Pageable 实现 bean
+ *
+ * @return org.springframework.data.domain.PageRequest
+ * @author LiuHuiYu
+ * Created DateTime 2022-02-11 11:19
+ */
+ public PageRequest getPageRequest() {
+ return PageRequest.of(this.pageIndex, this.pageSize == 0 ? 1 : this.pageSize);
+ }
+ /**
+ * 获取起始数据NO(1开始)
+ * @author LiuHuiYu
+ * Created DateTime 2022-04-01 16:00
+ * @return java.lang.Integer
+ */
+ public Integer beginRowNo() {
+ return this.pageIndex * pageSize + 1;
+ }
+ /**
+ * 获取结束数据NO(包含此NO的数据)
+ * @author LiuHuiYu
+ * Created DateTime 2022-04-01 16:01
+ * @return java.lang.Integer
+ */
+ public Integer endRowNo() {
+ return beginRowNo() + pageSize - 1;
+ }
+}
diff --git a/storm_zj_hz/src/main/java/com/rehome/jpahefengweather/utils/PagingImplDto.java b/storm_zj_hz/src/main/java/com/rehome/jpahefengweather/utils/PagingImplDto.java
new file mode 100644
index 0000000..688451b
--- /dev/null
+++ b/storm_zj_hz/src/main/java/com/rehome/jpahefengweather/utils/PagingImplDto.java
@@ -0,0 +1,33 @@
+package com.rehome.jpahefengweather.utils;
+
+import com.google.gson.Gson;
+
+/**
+ * 简单的分页实现类
+ *
+ * @author LiuHuiYu
+ * @version v1.0.0.0
+ * Created DateTime 2022-03-21 17:28
+ */
+public class PagingImplDto implements IPaging, ISerializationJson {
+ Paging paging;
+
+ public PagingImplDto() {
+ this.paging = new Paging();
+ }
+
+ @Override
+ public Paging getPaging() {
+ return this.paging;
+ }
+
+ @Override
+ public void setPaging(Paging paging) {
+ this.paging = paging;
+ }
+
+ @Override
+ public String toJson() {
+ return new Gson().toJson(this);
+ }
+}
diff --git a/storm_zj_hz/src/main/java/com/rehome/jpahefengweather/utils/TimestampUtil.java b/storm_zj_hz/src/main/java/com/rehome/jpahefengweather/utils/TimestampUtil.java
new file mode 100644
index 0000000..17f1294
--- /dev/null
+++ b/storm_zj_hz/src/main/java/com/rehome/jpahefengweather/utils/TimestampUtil.java
@@ -0,0 +1,107 @@
+package com.rehome.jpahefengweather.utils;
+
+import java.sql.Timestamp;
+import java.text.SimpleDateFormat;
+
+/**
+ * @author LiuHuiYu
+ * @version v1.0.0.0
+ * Created DateTime 2022-01-06 15:35
+ */
+public class TimestampUtil {
+ public static final String FORMAT_YEAR_MONTH_DAY = "yyyy-MM-dd";
+ public static final String FORMAT_YEAR_MONTH_DAY_HOUR = "yyyy-MM-dd HH";
+ public static final String FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE = "yyyy-MM-dd HH:mm";
+ public static final String FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND = "yyyy-MM-dd HH:mm:ss";
+
+ /**
+ * 转换成开始时间
+ *
+ * @param value 字符串
+ * @return java.sql.Timestamp
+ * @author LiuHuiYu
+ * Created DateTime 2022-01-06 15:38
+ */
+ public static Timestamp beginTime(String value) {
+ try {
+ String tempV = value;
+ if (tempV.length() == FORMAT_YEAR_MONTH_DAY.length()) {
+ tempV += " 00:00:00";
+ }
+ else if (tempV.length() == FORMAT_YEAR_MONTH_DAY_HOUR.length()) {
+ tempV += ":00:00";
+ }
+ else if (tempV.length() == FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE.length()) {
+ tempV += ":00";
+ }
+ return Timestamp.valueOf(tempV);
+ }
+ catch (Exception e) {
+ return null;
+ }
+ }
+
+ /**
+ * 转换成结束时间
+ *
+ * @param value 字符串
+ * @return java.sql.Timestamp
+ * @author LiuHuiYu
+ * Created DateTime 2022-01-06 15:38
+ */
+ public static Timestamp endTime(String value) {
+ try {
+ String tempV = value;
+ if (tempV.length() == FORMAT_YEAR_MONTH_DAY.length()) {
+ tempV += " 23:59:59";
+ }
+ else if (tempV.length() == FORMAT_YEAR_MONTH_DAY_HOUR.length()) {
+ tempV += ":59:59";
+ }
+ else if (tempV.length() == FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE.length()) {
+ tempV += ":59";
+ }
+ return Timestamp.valueOf(tempV);
+ }
+ catch (Exception e) {
+ return null;
+ }
+ }
+
+ /**
+ * 可以转换为 Timestamp 的字符串
+ *
+ * @param value 字符串
+ * @return boolean
+ * @author LiuHuiYu
+ * Created DateTime 2022-01-06 15:37
+ */
+ public static boolean isTimestampString(String value) {
+ try {
+ String tempV = value;
+ if (tempV.length() == FORMAT_YEAR_MONTH_DAY.length()) {
+ tempV += " 23:59:59";
+ }
+ else if (tempV.length() == FORMAT_YEAR_MONTH_DAY_HOUR.length()) {
+ tempV += ":59:59";
+ }
+ else if (tempV.length() == FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE.length()) {
+ tempV += ":59";
+ }
+ Timestamp.valueOf(tempV);
+ return true;
+ }
+ catch (Exception e) {
+ return false;
+ }
+ }
+
+ public static String toString(Timestamp timestamp, String format) {
+ try {
+ return new SimpleDateFormat(format).format(timestamp);
+ }
+ catch (Exception ex) {
+ return "";
+ }
+ }
+}
diff --git a/storm_zj_hz/src/main/resources/application.yml b/storm_zj_hz/src/main/resources/application.yml
new file mode 100644
index 0000000..5e083de
--- /dev/null
+++ b/storm_zj_hz/src/main/resources/application.yml
@@ -0,0 +1,77 @@
+#1.项目启动的端口
+server:
+ port: 48080
+
+spring:
+ datasource:
+ type: com.zaxxer.hikari.HikariDataSource
+ #driverClassName: com.mysql.jdbc.Driver #com.mysql.cj.jdbc.Driver com.mysql.jdbc.Driver
+ #driverClassName: com.mysql.cj.jdbc.Driver #com.mysql.cj.jdbc.Driver com.mysql.jdbc.Driver
+ #url: jdbc:mysql://localhost:3306/head_office_data_center?characterEncoding=utf-8&serverTimezone=UTC&autoReconnect=true
+ #url: jdbc:mysql://127.0.0.1:3306/head_office_data_center?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true&allowMultiQueries=true
+ #url: jdbc:mysql://localhost:3306/head_office_data_center?useUnicode=true&characterEncoding=utf-8&useSSL=true&nullCatalogMeansCurrent=true&serverTimezone=UTC
+ #url: jdbc:mysql://121.36.143.201:33400/hefengweather?useUnicode=true&characterEncoding=utf-8&useSSL=false
+ #url: jdbc:mysql://192.168.1.28:3340/hefengweather?useUnicode=true&characterEncoding=utf-8&useSSL=false
+# url: jdbc:mysql://192.168.1.71:2881/hefengweather?useUnicode=true&characterEncoding=utf-8&useSSL=false
+ #url: jdbc:mysql://192.168.2.18:3306/nmcweather?useUnicode=true&characterEncoding=utf-8&useSSL=false
+ driverClassName: com.mysql.cj.jdbc.Driver #com.mysql.cj.jdbc.Driver com.mysql.jdbc.Driver
+ url: jdbc:mysql://192.168.3.7:3306/nmcweather?useUnicode=true&characterEncoding=utf-8&useSSL=false
+ username: root
+ password: Skyinno251,
+# driverClassName: oracle.jdbc.driver.OracleDriver
+# url: jdbc:oracle:thin:@192.168.2.18:1521/orcl
+# username: maximo
+# password: maximo
+# driverClassName: oracle.jdbc.driver.OracleDriver
+# url: jdbc:oracle:thin:@192.168.1.9:1521/orcl
+# username: huangwenfei
+# password: huangwenfei
+# driverClassName: oracle.jdbc.driver.OracleDriver
+# url: jdbc:oracle:thin:@192.168.1.40:1521/orcl
+# username: maximo
+# password: maximo
+# driverClassName: oracle.jdbc.driver.OracleDriver
+# url: jdbc:oracle:thin:@192.168.1.13:1521/ORCLCDB
+# username: c##maximo
+# password: maximo
+# driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
+# url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=weather;encrypt=false;
+# username: sa
+# password: Skyinno251,
+ # 配置 DBMS 类型
+ #database: sql_server
+ #url: jdbc:mysql://192.168.1.71:2881/hefengweather?useUnicode=true&characterEncoding=utf-8&useSSL=false
+# driverClassName: com.mysql.cj.jdbc.Driver #com.mysql.cj.jdbc.Driver com.mysql.jdbc.Driver
+# url: jdbc:mysql://192.168.5.21:3306/weather?useUnicode=true&characterEncoding=utf-8&useSSL=false
+# username: root
+# password: Skyinno251,
+ # driverClassName: oracle.jdbc.driver.OracleDriver
+ # url: jdbc:oracle:thin:@192.168.2.18:1521/orcl
+ # username: maximo
+ # password: maximo
+ # driverClassName: oracle.jdbc.driver.OracleDriver
+ # url: jdbc:oracle:thin:@192.168.1.9:1521/orcl
+ # username: huangwenfei
+ # password: huangwenfei
+ # driverClassName: oracle.jdbc.driver.OracleDriver
+ # url: jdbc:oracle:thin:@192.168.1.40:1521/orcl
+ # username: maximo
+ # password: maximo
+ # driverClassName: oracle.jdbc.driver.OracleDriver
+ # url: jdbc:oracle:thin:@192.168.1.13:1521/ORCLCDB
+ # username: c##maximo
+ # password: maximo
+ # driverClassName: oracle.jdbc.driver.OracleDriver
+ # url: jdbc:oracle:thin:@192.168.5.9:1521/orcl
+ # username: maximo
+ # password: maximo
+ jpa:
+ # 配置 DBMS 类型
+ database: mysql
+ # 配置是否将执行的 SQL 输出到日志
+ show-sql: false
+ open-in-view: true
+ hibernate:
+ ddl-auto: update # 第一次建表create 后面用update,要不然每次重启都会新建表
+rehome:
+ resources-path: /Users/wenfeihuang/storage # 外部资源文件存储路径 格式:/Users/edao/storage
\ No newline at end of file
diff --git a/storm_zj_hz/src/main/resources/index.html b/storm_zj_hz/src/main/resources/index.html
new file mode 100644
index 0000000..566549b
--- /dev/null
+++ b/storm_zj_hz/src/main/resources/index.html
@@ -0,0 +1,10 @@
+
+
+
+
+ Title
+
+
+
+
+
\ No newline at end of file
diff --git a/storm_zj_hz/src/test/java/com/rehome/jpahefengweather/JpahefengweatherApplicationTests.java b/storm_zj_hz/src/test/java/com/rehome/jpahefengweather/JpahefengweatherApplicationTests.java
new file mode 100644
index 0000000..c399c68
--- /dev/null
+++ b/storm_zj_hz/src/test/java/com/rehome/jpahefengweather/JpahefengweatherApplicationTests.java
@@ -0,0 +1,13 @@
+package com.rehome.jpahefengweather;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class JpahefengweatherApplicationTests {
+
+ @Test
+ void contextLoads() {
+ }
+
+}
diff --git a/storm_zj_hz/storage/China-City-List-latest.xls b/storm_zj_hz/storage/China-City-List-latest.xls
new file mode 100644
index 0000000..fccfe79
Binary files /dev/null and b/storm_zj_hz/storage/China-City-List-latest.xls differ
diff --git a/storm_zj_hz/storage/China-City-List-latest.xlsx b/storm_zj_hz/storage/China-City-List-latest.xlsx
new file mode 100644
index 0000000..d8f8241
Binary files /dev/null and b/storm_zj_hz/storage/China-City-List-latest.xlsx differ
diff --git a/storm_zj_hz/storage/writeExcel.xlsx b/storm_zj_hz/storage/writeExcel.xlsx
new file mode 100644
index 0000000..23c41b4
Binary files /dev/null and b/storm_zj_hz/storage/writeExcel.xlsx differ