diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 7c67a44..b34375b 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -5,9 +5,17 @@ - + + + + + + + + + diff --git a/pom.xml b/pom.xml index caaef57..c17b7ca 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ com.rehome admin-client-temperature 1.0.0 - jar + war admin-client-temperature admin-client-temperature diff --git a/src/main/java/com/rehome/mqttclienttemperature/AdminClientTemperatureApplication.java b/src/main/java/com/rehome/mqttclienttemperature/AdminClientTemperatureApplication.java index 65cf4b8..df0d7f9 100644 --- a/src/main/java/com/rehome/mqttclienttemperature/AdminClientTemperatureApplication.java +++ b/src/main/java/com/rehome/mqttclienttemperature/AdminClientTemperatureApplication.java @@ -6,6 +6,8 @@ import org.springframework.beans.BeansException; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; @@ -18,7 +20,7 @@ import java.util.Map; @EnableJpaAuditing @EnableScheduling @SpringBootApplication -public class AdminClientTemperatureApplication implements CommandLineRunner, ApplicationContextAware { +public class AdminClientTemperatureApplication extends SpringBootServletInitializer implements CommandLineRunner, ApplicationContextAware { /** * 获取Spring框架的上下文 @@ -34,6 +36,11 @@ public class AdminClientTemperatureApplication implements CommandLineRunner, App SpringApplication.run(AdminClientTemperatureApplication.class, args); } + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(AdminClientTemperatureApplication.class); + } + /** * 调用 applicationContext(不能在main中使用,main是static的,不能调用) * @param args @@ -50,8 +57,8 @@ public class AdminClientTemperatureApplication implements CommandLineRunner, App if (temperatureService != null) { System.out.println("------------------------"); System.out.println("UseryfController is not empty"); - MqttRSAClient client = new MqttRSAClient(); - client.start(temperatureService); +// MqttRSAClient client = new MqttRSAClient(); +// client.start(temperatureService); } else { System.out.println("UseryfController is empty"); } diff --git a/src/main/java/com/rehome/mqttclienttemperature/controller/JdbcDemoController.java b/src/main/java/com/rehome/mqttclienttemperature/controller/JdbcDemoController.java index b89c609..2cabc9b 100644 --- a/src/main/java/com/rehome/mqttclienttemperature/controller/JdbcDemoController.java +++ b/src/main/java/com/rehome/mqttclienttemperature/controller/JdbcDemoController.java @@ -1,12 +1,23 @@ package com.rehome.mqttclienttemperature.controller; +import com.google.gson.Gson; import com.rehome.mqttclienttemperature.datasource.DataSource; import com.rehome.mqttclienttemperature.dto.ResponseDto; +import com.rehome.mqttclienttemperature.dto.ResponseTemperatureDto; +import com.rehome.mqttclienttemperature.dto.TemperatureDto; +import com.rehome.mqttclienttemperature.entity.Temperature; +import com.rehome.mqttclienttemperature.service.TemperatureService; import com.rehome.mqttclienttemperature.utils.JdbcUtil; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + /** * * 背景 @@ -46,8 +57,14 @@ import org.springframework.web.bind.annotation.RestController; * */ +@Slf4j @RestController public class JdbcDemoController { + + @Resource + private TemperatureService temperatureService; + + public static DataSource ds = new DataSource(); static { //配置数据源 @@ -67,9 +84,43 @@ public class JdbcDemoController { //@RequestMapping("/api/list") public ResponseDto queryList() { - String sql = "show tables"; - ResponseDto responseDto = JdbcUtil.executeSql(ds,sql); - return responseDto; + String sql = "select * from temperature where id = ?"; + + List jdbcParamValues = new ArrayList<>(); + for(int i=1230883;i<1646758;i++){ + try { + Thread.sleep(10); + } catch (InterruptedException e) { + e.printStackTrace(); + } + jdbcParamValues.add(i+1); + + Gson gson = new Gson(); + ResponseDto responseDto = JdbcUtil.executeSql(ds,sql,jdbcParamValues); + String dbQueryResult = gson.toJson(responseDto); + log.info(dbQueryResult); + jdbcParamValues.clear(); + + ResponseTemperatureDto responseTemperatureDto=gson.fromJson(dbQueryResult,ResponseTemperatureDto.class); + if(responseTemperatureDto.isSuccess()&&responseTemperatureDto.getData()!=null&&responseTemperatureDto.getData().size()>0){ + log.info(gson.toJson(responseTemperatureDto.getData().get(0))); + + TemperatureDto dto = responseTemperatureDto.getData().get(0); + + Temperature temperature = new Temperature(); + temperature.setCreateDate(dto.getCreateDate()); + temperature.setDataDate(dto.getDataDate()); + temperature.setDataHour(dto.getDataHour()); + temperature.setDataMinute(dto.getDataMinute()); + temperature.setTopic(dto.getTopic()); + temperature.setHumidity(String.valueOf(dto.getHumidity())); + temperature.setTemperature(String.valueOf(dto.getTemperature())); + temperature.setLocationDesc(dto.getLocationDesc()); + + temperatureService.saveTemperature(temperature); + } + } + return null; } } diff --git a/src/main/java/com/rehome/mqttclienttemperature/dto/ResponseTemperatureDto.java b/src/main/java/com/rehome/mqttclienttemperature/dto/ResponseTemperatureDto.java new file mode 100644 index 0000000..1c70f5f --- /dev/null +++ b/src/main/java/com/rehome/mqttclienttemperature/dto/ResponseTemperatureDto.java @@ -0,0 +1,16 @@ +package com.rehome.mqttclienttemperature.dto; + + +import lombok.Data; +import java.util.List; + +/** + * 返回值包装类 + */ +@Data +public class ResponseTemperatureDto { + String msg; + List data; + boolean success; +} + diff --git a/src/main/java/com/rehome/mqttclienttemperature/dto/TemperatureDto.java b/src/main/java/com/rehome/mqttclienttemperature/dto/TemperatureDto.java new file mode 100644 index 0000000..c4da5e1 --- /dev/null +++ b/src/main/java/com/rehome/mqttclienttemperature/dto/TemperatureDto.java @@ -0,0 +1,46 @@ +package com.rehome.mqttclienttemperature.dto; + + +import com.google.gson.annotations.SerializedName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.io.Serializable; +import java.util.Date; + +@Data +public class TemperatureDto implements Serializable { + + + @ApiModelProperty(value = "主键") + private Long id; + + @ApiModelProperty(value = "温度") + private Double temperature; + + @ApiModelProperty(value = "湿度") + private Double humidity; + + @ApiModelProperty(value = "日期") + @SerializedName("data_date") + private String dataDate; + + @ApiModelProperty(value = "时") + @SerializedName("data_hour") + private String dataHour; + + @ApiModelProperty(value = "分") + @SerializedName("data_minute") + private String dataMinute; + + @ApiModelProperty(value = "主题") + private String topic; + + @ApiModelProperty(value = "位置描述") + @SerializedName("location_desc") + private String locationDesc; + + @ApiModelProperty(value = "时间") + @SerializedName("create_date") + private String createDate; + +} \ No newline at end of file diff --git a/src/main/java/com/rehome/mqttclienttemperature/entity/Temperature.java b/src/main/java/com/rehome/mqttclienttemperature/entity/Temperature.java index 8c66dab..83fc5dd 100644 --- a/src/main/java/com/rehome/mqttclienttemperature/entity/Temperature.java +++ b/src/main/java/com/rehome/mqttclienttemperature/entity/Temperature.java @@ -25,16 +25,19 @@ import java.util.Date; //同时创建普通索引和组合索引,注意普通索引每个索引名都不同,注意组合索引每个索引名都相同 @Table(indexes = {@Index(name = "idx_dataDate", columnList = "dataDate"),@Index(name = "idx_locationDesc", columnList = "locationDesc"),@Index(name = "idx_dataHour", columnList = "dataHour"),@Index(name = "idx_dataMinute", columnList = "dataMinute"),@Index(name = "data_date_location_desc", columnList = "dataDate"),@Index(name = "data_date_location_desc", columnList = "locationDesc")}) public class Temperature implements Serializable { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @Id +// @GeneratedValue(strategy = GenerationType.IDENTITY) @ApiModelProperty(value = "主键") + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE,generator="temperature_seq") + @SequenceGenerator(name="temperature_seq", sequenceName="temperature_seq_name_appserver") private Long id; @ApiModelProperty(value = "温度") - private Double temperature; + private String temperature; @ApiModelProperty(value = "湿度") - private Double humidity; + private String humidity; @ApiModelProperty(value = "日期") @Column(length=20) @@ -57,7 +60,7 @@ public class Temperature implements Serializable { private String locationDesc; @ApiModelProperty(value = "时间") - @Temporal(TemporalType.TIMESTAMP) - private Date createDate; + @Column(length=20) + private String createDate; } diff --git a/src/main/java/com/rehome/mqttclienttemperature/service/ScheduledService.java b/src/main/java/com/rehome/mqttclienttemperature/service/ScheduledService.java index 850344f..c2d9b9f 100644 --- a/src/main/java/com/rehome/mqttclienttemperature/service/ScheduledService.java +++ b/src/main/java/com/rehome/mqttclienttemperature/service/ScheduledService.java @@ -25,13 +25,14 @@ public class ScheduledService { /** * @date 2022-03-16 09:41 + * * @description: 从中央气象台获取省份列表 * @Param: null */ - @Scheduled(cron = "0/10 * * * * *") + //@Scheduled(cron = "0 14 23 14 12 *") public void getNmcWeatherProvince() { ResponseDto responseDto = jdbcDemoController.queryList(); - System.out.println(new Gson().toJson(responseDto)); + //System.out.println(new Gson().toJson(responseDto)); } } \ No newline at end of file diff --git a/src/main/java/com/rehome/mqttclienttemperature/service/TemperatureService.java b/src/main/java/com/rehome/mqttclienttemperature/service/TemperatureService.java index 9c787ae..fdb5fc3 100644 --- a/src/main/java/com/rehome/mqttclienttemperature/service/TemperatureService.java +++ b/src/main/java/com/rehome/mqttclienttemperature/service/TemperatureService.java @@ -8,6 +8,7 @@ import java.util.List; public interface TemperatureService { //温度和湿度 void saveTemperature(String temperatureAndHumidityData,String topic); + void saveTemperature(Temperature temperature); List findFirst10ByDataDateAndLocationDesc(String dataDate, String locationDesc); List findFirst10ByLocationDesc(String locationDesc); Temperature findFirstByOrderByLocationDescAsc(String locationDesc); diff --git a/src/main/java/com/rehome/mqttclienttemperature/service/impl/TemperatureServiceImpl.java b/src/main/java/com/rehome/mqttclienttemperature/service/impl/TemperatureServiceImpl.java index 743ca30..b10f013 100644 --- a/src/main/java/com/rehome/mqttclienttemperature/service/impl/TemperatureServiceImpl.java +++ b/src/main/java/com/rehome/mqttclienttemperature/service/impl/TemperatureServiceImpl.java @@ -30,12 +30,14 @@ public class TemperatureServiceImpl implements TemperatureService { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdfHour = new SimpleDateFormat("yyyy-MM-dd HH"); SimpleDateFormat sdfMinute = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + SimpleDateFormat sdfSecond = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String nowDate = sdf.format(now); String nowHour = sdfHour.format(now); String dataMinute = sdfMinute.format(now); + String dataSecond = sdfSecond.format(now); Temperature temperature = new Temperature(); - temperature.setCreateDate(now); + temperature.setCreateDate(dataSecond); temperature.setDataDate(nowDate); temperature.setDataHour(nowHour); temperature.setDataMinute(dataMinute); @@ -51,13 +53,18 @@ public class TemperatureServiceImpl implements TemperatureService { temperature.setLocationDesc("广西壮族自治区崇左市天等县天等镇荣华村弄在屯113号"); } } - temperature.setHumidity(Double.valueOf(strDataTemperature[0])); - temperature.setTemperature(Double.valueOf(strDataTemperature[1])); + temperature.setHumidity(strDataTemperature[0]); + temperature.setTemperature(strDataTemperature[1]); this.temperatureRepository.save(temperature); } } + @Override + public void saveTemperature(Temperature temperature) { + this.temperatureRepository.save(temperature); + } + @Override public List findFirst10ByDataDateAndLocationDesc(String dataDate, String locationDesc) { int page=1,size=10; diff --git a/src/main/java/com/rehome/mqttclienttemperature/utils/JdbcUtil.java b/src/main/java/com/rehome/mqttclienttemperature/utils/JdbcUtil.java index 4399eed..5e5443f 100644 --- a/src/main/java/com/rehome/mqttclienttemperature/utils/JdbcUtil.java +++ b/src/main/java/com/rehome/mqttclienttemperature/utils/JdbcUtil.java @@ -9,6 +9,7 @@ import com.rehome.mqttclienttemperature.dto.ResponseDto; import lombok.extern.slf4j.Slf4j; import java.sql.*; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; @@ -55,9 +56,15 @@ public class JdbcUtil { JSONObject jo = new JSONObject(); columns.stream().forEach(t -> { try { - Object value = rs.getObject(t); - jo.put(t, value); - + if(t.equals("create_date")){ + Timestamp timestamp = rs.getTimestamp("create_date"); + Date date = new Date(timestamp.getTime()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + jo.put(t, sdf.format(date)); + }else{ + Object value = rs.getObject(t); + jo.put(t, value); + } } catch (SQLException e) { e.printStackTrace(); } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 8ee2c1c..d2f66ad 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -10,17 +10,17 @@ spring: #url: jdbc:mysql://192.168.1.21:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true #url: jdbc:mysql://127.0.0.1:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true #url: jdbc:mysql://192.168.2.18:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true - #url: jdbc:mysql://192.168.3.7:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true - url: jdbc:mysql://192.168.1.24:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true - driverClassName: com.mysql.cj.jdbc.Driver #com.mysql.cj.jdbc.Driver com.mysql.jdbc.Driver - username: root - password: Skyinno251, -# driverClassName: oracle.jdbc.driver.OracleDriver -# url: jdbc:oracle:thin:@192.168.1.9:1521/orcl -# username: appserver -# password: appserver + #url: jdbc:mysql://192.168.1.24:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true +# url: jdbc:mysql://192.168.3.7:3306/temperature?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true +# driverClassName: com.mysql.cj.jdbc.Driver #com.mysql.cj.jdbc.Driver com.mysql.jdbc.Driver +# username: root +# password: Skyinno251, + driverClassName: oracle.jdbc.driver.OracleDriver + url: jdbc:oracle:thin:@192.168.1.9:1521/orcl + username: appserver + password: appserver jpa: - database: mysql # 配置 DBMS 类型 + database: oracle # 配置 DBMS 类型 show-sql: true # 配置是否将执行的 SQL 输出到日志 open-in-view: true hibernate: