增加从数据库导入数据到内存当中

master
DongZeLiang 2023-11-16 15:12:36 +08:00
parent fa69241b9d
commit 353d3d63ab
7 changed files with 117 additions and 25 deletions

8
.gitignore vendored
View File

@ -4,13 +4,11 @@ target/
!**/src/test/**/target/
### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
/.idea
*.iws
*.iml
*.ipr
/logs
### Eclipse ###
.apt_generated
@ -35,4 +33,4 @@ build/
.vscode/
### Mac OS ###
.DS_Store
.DS_Store

View File

@ -1,11 +1,14 @@
package com.muyu.vehicle;
import com.muyu.domain.Vehicle;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* @author
* @Classname VehicleData
@ -44,7 +47,7 @@ public class VehicleData {
/**
*
*/
private String mileage;
private BigDecimal mileage;
/**
*
@ -114,7 +117,12 @@ public class VehicleData {
/**
* SOC
*/
private String remainingBattery;
private BigDecimal remainingBattery;
/**
*
*/
private BigDecimal batteryLevel;
/**
*
@ -275,7 +283,7 @@ public class VehicleData {
//车速
sb.append(getValue(speed,6));
//总里程
sb.append(getValue(mileage,11));
sb.append(getValue(mileage.toString(),11));
// 总电压
sb.append(getValue(voltage,6));
//总电流
@ -303,7 +311,7 @@ public class VehicleData {
//电机电流
sb.append(getValue(motorCurrent,8));
//动力电池剩余电量SOC
sb.append(getValue(remainingBattery,6));
sb.append(getValue(remainingBattery.toString(),6));
//当前状态允许的最大反馈功率
sb.append(getValue(maximumFeedbackPower,6));
//当前状态允许最大放电功率
@ -370,6 +378,20 @@ public class VehicleData {
return val;
}
/**
* VIN
* @param vehicle
* @return
*/
public static VehicleData vehicleBuild (Vehicle vehicle) {
return VehicleData.builder()
.vin(vehicle.getVin())
.remainingBattery(vehicle.getRemainingBattery())
.batteryLevel(vehicle.getBatteryLevel())
.mileage(vehicle.getTotalMileage())
.build();
}
/**
VIN
vin;

View File

@ -1,10 +0,0 @@
package com.muyu.vehicle.core;
/**
* @author DongZeLiang
* @version 1.0
* @description
* @date 2023/11/9
*/
public class Config {
}

View File

@ -0,0 +1,32 @@
package com.muyu.vehicle.core;
import com.muyu.domain.Vehicle;
import com.muyu.vehicle.VehicleData;
import java.util.HashMap;
/**
* @author DongZl
* @description:
* @Date 2023-11-16 02:30
*/
public class LocalContainer {
/**
*
*/
public static final HashMap<String, VehicleData> vehicleDataMap = new HashMap<>();
/**
*
* @param vehicle
*/
public static void setVehicle(Vehicle vehicle){
String vin = vehicle.getVin();
VehicleData vehicleData = vehicleDataMap.get(vin);
if (vehicleData == null){
vehicleDataMap.put(vin,VehicleData.vehicleBuild(vehicle));
}
}
}

View File

@ -0,0 +1,53 @@
package com.muyu.vehicle.core;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.muyu.domain.Vehicle;
import com.muyu.service.VehicleService;
import com.muyu.vehicle.VehicleData;
import lombok.AllArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.annotation.Configuration;
import javax.annotation.PostConstruct;
import java.util.List;
/**
* @author DongZeLiang
* @version 1.0
* @description
* @date 2023/11/9
*/
@Log4j2
@Configuration
@AllArgsConstructor
public class VehicleConfiguration implements ApplicationRunner {
private final VehicleService vehicleService;
/**
*
*/
public void vehicleInit(){
long startTime = System.currentTimeMillis();
int page = 0, pageSize = 1000;
log.info("初始开始,批量从数据库当中加载数据到内存当中,每次[{}]条", pageSize);
while (true){
Page<Vehicle> vehiclePage = vehicleService.page(new Page<Vehicle>(page++, pageSize));
List<Vehicle> records = vehiclePage.getRecords();
records.forEach(LocalContainer::setVehicle);
log.info("第[{}]页,[{}]条", page, records.size());
if (records.size() < pageSize){
break;
}
}
log.info("数据加载完成,耗时:{}MS", System.currentTimeMillis() - startTime);
}
@Override
public void run (ApplicationArguments args) throws Exception {
this.vehicleInit();
}
}

View File

@ -10,8 +10,8 @@ spring:
# jdbc:h2:mem:testDB;DB_CLOSE_DELAY=-1
url: jdbc:h2:file:~/vehicle/db;AUTO_SERVER=TRUE;DB_CLOSE_DELAY=-1
driver-class-name: org.h2.Driver
# 开启这个配置就可以通过 web 页面访问了例如http://localhost:8080/springboot-h2/h2-console
h2:
# 开启这个配置就可以通过 web 页面访问了例如http://localhost:8080/springboot-h2/h2-console
console:
enabled: true
settings:
@ -45,11 +45,10 @@ mybatis-plus:
column-underline: true
logic-delete-value: -1
logic-not-delete-value: 0
banner: false
#原生配置
configuration:
# 打印sql
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true
cache-enabled: false
call-setters-on-nulls: true
@ -65,7 +64,7 @@ logging:
web: ERROR
file:
path: ./logs
name: './logs/springboot-h2.log'
name: './logs/vehicle.log'
pattern:
file: '%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n'
console: '%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n'

View File

@ -1,4 +1,2 @@
insert into t_user(id, username, pwd, create_time, update_time) values (0,'zhhangsan','1222', {ts '2022-07-27 18:47:52.69'}, {ts '2022-07-27 18:47:52.69'})
insert into vehicle(id,vin, create_time) values (1,'vin123456789123456',{ts '2022-07-27 18:47:52.69'})