diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 900630a..94b4409 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -5,16 +5,15 @@ - + + - - - - + - + + + + + + + + + + @@ -63,7 +70,7 @@ - + @@ -182,6 +189,8 @@ + + diff --git a/src/main/java/com/rehome/mqttclienttemperature/MqttRSAClient.java b/src/main/java/com/rehome/mqttclienttemperature/MqttRSAClient.java index 74c96fd..6318f9d 100644 --- a/src/main/java/com/rehome/mqttclienttemperature/MqttRSAClient.java +++ b/src/main/java/com/rehome/mqttclienttemperature/MqttRSAClient.java @@ -107,7 +107,7 @@ public class MqttRSAClient { System.out.println("topic:"+s); System.out.println("Qos:"+mqttMessage.getQos()); System.out.println("message RSA:"+strData); - //temperatureService.saveTemperature(strData,s); + temperatureService.saveTemperature(strData,s); } @Override diff --git a/src/main/java/com/rehome/mqttclienttemperature/entity/Temperature.java b/src/main/java/com/rehome/mqttclienttemperature/entity/Temperature.java index a99d68c..c335513 100644 --- a/src/main/java/com/rehome/mqttclienttemperature/entity/Temperature.java +++ b/src/main/java/com/rehome/mqttclienttemperature/entity/Temperature.java @@ -26,13 +26,13 @@ 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) -// @ApiModelProperty(value = "主键") @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) @ApiModelProperty(value = "主键") - @GeneratedValue(strategy = GenerationType.SEQUENCE,generator="temperature_seq") - @SequenceGenerator(name="temperature_seq", sequenceName="temperature_seq_appserver") +// @Id +// @ApiModelProperty(value = "主键") +// @GeneratedValue(strategy = GenerationType.SEQUENCE,generator="temperature_seq") +// @SequenceGenerator(name="temperature_seq", sequenceName="temperature_seq_appserver") private Long id; @ApiModelProperty(value = "温度") diff --git a/src/main/java/com/rehome/mqttclienttemperature/entity/WebServiceProvince.java b/src/main/java/com/rehome/mqttclienttemperature/entity/WebServiceProvince.java index 7e364c5..0b9fe41 100644 --- a/src/main/java/com/rehome/mqttclienttemperature/entity/WebServiceProvince.java +++ b/src/main/java/com/rehome/mqttclienttemperature/entity/WebServiceProvince.java @@ -16,13 +16,9 @@ import java.util.Date; @Data @Entity public class WebServiceProvince implements Serializable { -// @Id -// @GeneratedValue(strategy = GenerationType.IDENTITY) -// @ApiModelProperty(value = "主键") @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) @ApiModelProperty(value = "主键") - @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "webService_province_seq") - @SequenceGenerator(name = "webService_province_seq", sequenceName = "webService_province_seq") private Long id; @ApiModelProperty(value = "洲、国内外省份") diff --git a/src/main/java/com/rehome/mqttclienttemperature/entity/WebServiceWeatherInfo.java b/src/main/java/com/rehome/mqttclienttemperature/entity/WebServiceWeatherInfo.java index 2e3fd3e..d4211c1 100644 --- a/src/main/java/com/rehome/mqttclienttemperature/entity/WebServiceWeatherInfo.java +++ b/src/main/java/com/rehome/mqttclienttemperature/entity/WebServiceWeatherInfo.java @@ -29,13 +29,9 @@ import java.util.Date; // @Index(name = "data_create_date_city_name", columnList = "cityName"), @Index(name = "data_create_date_city_name", columnList = "createDate")}) public class WebServiceWeatherInfo { -// @Id -// @GeneratedValue(strategy = GenerationType.IDENTITY) -// @ApiModelProperty(value = "主键") @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) @ApiModelProperty(value = "主键") - @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "webService_weather_info_seq") - @SequenceGenerator(name = "webService_weather_info_seq", sequenceName = "webService_weather_info_seq") private Long id; @Column(length = 100) diff --git a/src/main/java/com/rehome/mqttclienttemperature/service/OracleTemperatureService.java b/src/main/java/com/rehome/mqttclienttemperature/service/OracleTemperatureService.java new file mode 100644 index 0000000..6cf4c58 --- /dev/null +++ b/src/main/java/com/rehome/mqttclienttemperature/service/OracleTemperatureService.java @@ -0,0 +1,8 @@ +package com.rehome.mqttclienttemperature.service; + +import com.rehome.mqttclienttemperature.dto.ResponseDto; +import com.rehome.mqttclienttemperature.entity.Temperature; + +public interface OracleTemperatureService { + ResponseDto saveTemperature(Temperature temperature); +} diff --git a/src/main/java/com/rehome/mqttclienttemperature/service/impl/OracleTemperatureServiceImpl.java b/src/main/java/com/rehome/mqttclienttemperature/service/impl/OracleTemperatureServiceImpl.java new file mode 100644 index 0000000..890d989 --- /dev/null +++ b/src/main/java/com/rehome/mqttclienttemperature/service/impl/OracleTemperatureServiceImpl.java @@ -0,0 +1,65 @@ +package com.rehome.mqttclienttemperature.service.impl; + +import com.google.gson.Gson; +import com.rehome.mqttclienttemperature.datasource.DataSource; +import com.rehome.mqttclienttemperature.dto.ResponseDto; +import com.rehome.mqttclienttemperature.entity.Temperature; +import com.rehome.mqttclienttemperature.service.OracleTemperatureService; +import com.rehome.mqttclienttemperature.utils.JdbcUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +@Slf4j +@Service +public class OracleTemperatureServiceImpl implements OracleTemperatureService { + public static DataSource ds = new DataSource(); + static { + //配置数据源 + ds.setId("200"); + ds.setName("oracle"); + ds.setUrl("jdbc:oracle:thin:@192.168.3.9:1521/orcl"); + ds.setUsername("appserver"); + ds.setPassword("appserver"); + ds.setDriver("oracle.jdbc.driver.OracleDriver"); + } + + @Override + public ResponseDto saveTemperature(Temperature temperature) { + // 自定义一个线程池,内部包含8个线程 + ExecutorService customPool = Executors.newFixedThreadPool(8); + CompletableFuture future = CompletableFuture.supplyAsync(() -> { + String sql = "insert into temperature(id,temperature, humidity, data_date, data_hour, data_minute, topic, location_desc, create_date) values(temperature_seq_appserver.NEXTVAL, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)"; + List jdbcParamValues = new ArrayList<>(); + + jdbcParamValues.add(temperature.getTemperature()); + jdbcParamValues.add(temperature.getHumidity()); + jdbcParamValues.add(temperature.getDataDate()); + jdbcParamValues.add(temperature.getDataHour()); + jdbcParamValues.add(temperature.getDataMinute()); + jdbcParamValues.add(temperature.getTopic()); + jdbcParamValues.add(temperature.getLocationDesc()); + //jdbcParamValues.add(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(temperature.getCreateDate())); + + Gson gson = new Gson(); + ResponseDto responseDto = JdbcUtil.executeSql(ds, sql, jdbcParamValues); + String dbQueryResult = gson.toJson(responseDto); + log.info(dbQueryResult); + jdbcParamValues.clear(); + + return "数据库同步成功"; + }, customPool); + + future.thenApply(result -> { + log.info("Result: " + result); + return ResponseDto.successWithMsg(result); + }).join(); + return ResponseDto.successWithMsg("数据库正在同步..."); + } +} 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 97a3cb0..05b33b2 100644 --- a/src/main/java/com/rehome/mqttclienttemperature/service/impl/TemperatureServiceImpl.java +++ b/src/main/java/com/rehome/mqttclienttemperature/service/impl/TemperatureServiceImpl.java @@ -2,6 +2,7 @@ package com.rehome.mqttclienttemperature.service.impl; import com.rehome.mqttclienttemperature.dao.TemperatureRepository; import com.rehome.mqttclienttemperature.entity.Temperature; +import com.rehome.mqttclienttemperature.service.OracleTemperatureService; import com.rehome.mqttclienttemperature.service.TemperatureService; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -21,6 +22,8 @@ public class TemperatureServiceImpl implements TemperatureService { @Resource private TemperatureRepository temperatureRepository; + @Resource + private OracleTemperatureService oracleTemperatureService; @Override public void saveTemperature(String temperatureAndHumidityData,String topic) { @@ -56,7 +59,8 @@ public class TemperatureServiceImpl implements TemperatureService { temperature.setHumidity(strDataTemperature[0]); temperature.setTemperature(strDataTemperature[1]); - this.temperatureRepository.save(temperature); + //this.temperatureRepository.save(temperature); + this.oracleTemperatureService.saveTemperature(temperature); } } diff --git a/src/main/java/com/rehome/mqttclienttemperature/utils/JdbcUtil.java b/src/main/java/com/rehome/mqttclienttemperature/utils/JdbcUtil.java index 42229ac..2f45243 100644 --- a/src/main/java/com/rehome/mqttclienttemperature/utils/JdbcUtil.java +++ b/src/main/java/com/rehome/mqttclienttemperature/utils/JdbcUtil.java @@ -7,7 +7,6 @@ import com.alibaba.fastjson.JSONObject; import com.rehome.mqttclienttemperature.datasource.DataSource; import com.rehome.mqttclienttemperature.dto.ResponseDto; import lombok.extern.slf4j.Slf4j; - import java.sql.*; import java.text.SimpleDateFormat; import java.util.ArrayList; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index f4027dd..209afee 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -22,18 +22,18 @@ spring: #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/weather?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true #url: jdbc:mysql://192.168.3.24:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true - #url: jdbc:mysql://192.168.3.9: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 #url: jdbc:mysql://47.242.184.139: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.3.9:1521/orcl - username: appserver - password: appserver + url: jdbc:mysql://192.168.3.9: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.3.9:1521/orcl +# username: appserver +# password: appserver jpa: - database: oracle # 配置 DBMS 类型 + database: mysql # 配置 DBMS 类型 show-sql: true # 配置是否将执行的 SQL 输出到日志 open-in-view: true hibernate: