fix(): 修复查询多租户
parent
a507bb3e73
commit
518900891d
|
@ -3,6 +3,9 @@ package com.muyu.config;
|
||||||
import com.baomidou.mybatisplus.annotation.DbType;
|
import com.baomidou.mybatisplus.annotation.DbType;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
|
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
|
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
|
||||||
|
import com.muyu.config.tenant.CustomTenantHandler;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
@ -12,6 +15,9 @@ import org.springframework.context.annotation.Configuration;
|
||||||
@Configuration
|
@Configuration
|
||||||
public class MybatisPlusConfig {
|
public class MybatisPlusConfig {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CustomTenantHandler customTenantHandler;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新的分页插件,一缓和二缓遵循mybatis的规则,
|
* 新的分页插件,一缓和二缓遵循mybatis的规则,
|
||||||
*/
|
*/
|
||||||
|
@ -19,6 +25,9 @@ public class MybatisPlusConfig {
|
||||||
public MybatisPlusInterceptor mybatisPlusInterceptor() {
|
public MybatisPlusInterceptor mybatisPlusInterceptor() {
|
||||||
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
|
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
|
||||||
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
|
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
|
||||||
|
TenantLineInnerInterceptor tenantInterceptor = new TenantLineInnerInterceptor();
|
||||||
|
tenantInterceptor.setTenantLineHandler(customTenantHandler);
|
||||||
|
interceptor.addInnerInterceptor(tenantInterceptor);
|
||||||
return interceptor;
|
return interceptor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.muyu.vehicle.core;
|
package com.muyu.vehicle.core;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.muyu.config.tenant.CustomTenantHandler;
|
||||||
import com.muyu.web.common.pool.FixedThreadPool;
|
import com.muyu.web.common.pool.FixedThreadPool;
|
||||||
import com.muyu.web.common.pool.ScheduledThreadPool;
|
import com.muyu.web.common.pool.ScheduledThreadPool;
|
||||||
import com.muyu.web.domain.VehicleInfo;
|
import com.muyu.web.domain.VehicleInfo;
|
||||||
|
@ -31,6 +32,8 @@ public class VehicleConfiguration implements ApplicationRunner {
|
||||||
|
|
||||||
private final VehicleInstanceService vehicleInstanceService;
|
private final VehicleInstanceService vehicleInstanceService;
|
||||||
|
|
||||||
|
private final CustomTenantHandler customTenantHandler;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 初始化加载汽车数据到内存当中
|
* 初始化加载汽车数据到内存当中
|
||||||
*/
|
*/
|
||||||
|
@ -38,6 +41,7 @@ public class VehicleConfiguration implements ApplicationRunner {
|
||||||
long startTime = System.currentTimeMillis();
|
long startTime = System.currentTimeMillis();
|
||||||
int page = 0, pageSize = 10;
|
int page = 0, pageSize = 10;
|
||||||
log.info("初始开始,批量从数据库当中加载数据到内存当中,每次[{}]条", pageSize);
|
log.info("初始开始,批量从数据库当中加载数据到内存当中,每次[{}]条", pageSize);
|
||||||
|
customTenantHandler.ignore();
|
||||||
while (true){
|
while (true){
|
||||||
Page<VehicleInfo> vehiclePage = vehicleInfoService.page(new Page<>(page++, pageSize));
|
Page<VehicleInfo> vehiclePage = vehicleInfoService.page(new Page<>(page++, pageSize));
|
||||||
List<VehicleInfo> vehicleInfoList = vehiclePage.getRecords();
|
List<VehicleInfo> vehicleInfoList = vehiclePage.getRecords();
|
||||||
|
@ -47,6 +51,7 @@ public class VehicleConfiguration implements ApplicationRunner {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
customTenantHandler.remove();
|
||||||
log.info("数据加载完成,耗时:{} MS", System.currentTimeMillis() - startTime);
|
log.info("数据加载完成,耗时:{} MS", System.currentTimeMillis() - startTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,9 +32,12 @@ public class VehicleController {
|
||||||
* @param sum 车辆总数
|
* @param sum 车辆总数
|
||||||
* @return 结果集
|
* @return 结果集
|
||||||
*/
|
*/
|
||||||
@GetMapping("/gen/{sum}")
|
@GetMapping("/gen/{sum}/{messageTemplateId}")
|
||||||
public Result<String> generate(@PathVariable(value = "sum") Integer sum){
|
public Result<String> generate(
|
||||||
vehicleInfoService.generate(sum);
|
@PathVariable(value = "sum") Integer sum,
|
||||||
|
@PathVariable("messageTemplateId") Long messageTemplateId
|
||||||
|
){
|
||||||
|
vehicleInfoService.generate(sum, messageTemplateId);
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
@ -44,7 +47,7 @@ public class VehicleController {
|
||||||
*/
|
*/
|
||||||
@PostMapping("/create")
|
@PostMapping("/create")
|
||||||
public Result<String> create(@RequestBody VehicleCreateAddReq vehicleCreateAddReq){
|
public Result<String> create(@RequestBody VehicleCreateAddReq vehicleCreateAddReq){
|
||||||
vehicleInfoService.create(vehicleCreateAddReq.getVinStr());
|
vehicleInfoService.create(vehicleCreateAddReq.getVinStr(), vehicleCreateAddReq.getMessageTemplateId());
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author DongZeLiang
|
* @author DongZeLiang
|
||||||
|
@ -44,6 +45,12 @@ public class VehicleInfo {
|
||||||
@TableField(value = "tenant_id", fill = FieldFill.INSERT)
|
@TableField(value = "tenant_id", fill = FieldFill.INSERT)
|
||||||
private String tenantId;
|
private String tenantId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 报文模板
|
||||||
|
*/
|
||||||
|
@TableField("message_template_id")
|
||||||
|
private Long messageTemplateId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 电池剩余电量
|
* 电池剩余电量
|
||||||
*/
|
*/
|
||||||
|
@ -70,20 +77,22 @@ public class VehicleInfo {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生成车辆数据
|
* 生成车辆数据
|
||||||
|
* @param messageTemplateId 报文ID
|
||||||
* @return 车辆数据
|
* @return 车辆数据
|
||||||
*/
|
*/
|
||||||
public static VehicleInfo gen() {
|
public static VehicleInfo gen(Supplier<Long> messageTemplateId) {
|
||||||
return VehicleInfo.create(VehicleUtils.genVin());
|
return VehicleInfo.create(VehicleUtils.genVin(), messageTemplateId);
|
||||||
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 生成车辆数据
|
* 生成车辆数据
|
||||||
* @return 车辆数据
|
* @return 车辆数据
|
||||||
*/
|
*/
|
||||||
public static VehicleInfo create(String vin) {
|
public static VehicleInfo create(String vin, Supplier<Long> messageTemplateId) {
|
||||||
BigDecimal battery = VehicleUtils.genBattery();
|
BigDecimal battery = VehicleUtils.genBattery();
|
||||||
return VehicleInfo.builder()
|
return VehicleInfo.builder()
|
||||||
.vin(vin)
|
.vin(vin)
|
||||||
|
.messageTemplateId(messageTemplateId.get())
|
||||||
.createTime(new Date())
|
.createTime(new Date())
|
||||||
.batteryLevel(battery)
|
.batteryLevel(battery)
|
||||||
.remainingBattery(battery)
|
.remainingBattery(battery)
|
||||||
|
|
|
@ -20,4 +20,9 @@ public class VehicleCreateAddReq {
|
||||||
* 车辆添加VIN
|
* 车辆添加VIN
|
||||||
*/
|
*/
|
||||||
private String vinStr;
|
private String vinStr;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 报文模板
|
||||||
|
*/
|
||||||
|
private Long messageTemplateId;
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,15 +15,19 @@ public interface VehicleInfoService extends IService<VehicleInfo> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据数量生成测试车辆
|
* 根据数量生成测试车辆
|
||||||
|
*
|
||||||
* @param sum 数量
|
* @param sum 数量
|
||||||
|
* @param messageTemplateId
|
||||||
*/
|
*/
|
||||||
void generate(Integer sum);
|
void generate(Integer sum, Long messageTemplateId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建IVN
|
* 创建IVN
|
||||||
|
*
|
||||||
* @param vinStr VIN
|
* @param vinStr VIN
|
||||||
|
* @param messageTemplateId
|
||||||
*/
|
*/
|
||||||
void create (String vinStr);
|
void create (String vinStr, Long messageTemplateId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 同步数据库
|
* 同步数据库
|
||||||
|
|
|
@ -65,7 +65,9 @@ public class SystemAuthServiceImpl implements SystemAuthService {
|
||||||
UserInfo userInfo = userInfoList.get(0);
|
UserInfo userInfo = userInfoList.get(0);
|
||||||
LambdaQueryWrapper<ServerConfig> serverConfigQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<ServerConfig> serverConfigQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
serverConfigQueryWrapper.eq(ServerConfig::getTenantId, userInfo.getTenantId());
|
serverConfigQueryWrapper.eq(ServerConfig::getTenantId, userInfo.getTenantId());
|
||||||
|
customTenantHandler.ignore();
|
||||||
ServerConfig serverConfig = serverConfigService.getOne(serverConfigQueryWrapper);
|
ServerConfig serverConfig = serverConfigService.getOne(serverConfigQueryWrapper);
|
||||||
|
customTenantHandler.remove();
|
||||||
LoginUserInfo loginUserInfo = LoginUserInfo.builder()
|
LoginUserInfo loginUserInfo = LoginUserInfo.builder()
|
||||||
.id(userInfo.getId())
|
.id(userInfo.getId())
|
||||||
.tenantId(userInfo.getTenantId())
|
.tenantId(userInfo.getTenantId())
|
||||||
|
|
|
@ -41,11 +41,15 @@ public class VechileInfoServiceImpl extends ServiceImpl<VehicleInfoMapper, Vehic
|
||||||
* 根据数量生成测试车辆
|
* 根据数量生成测试车辆
|
||||||
*
|
*
|
||||||
* @param sum 数量
|
* @param sum 数量
|
||||||
|
* @param messageTemplateId
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public void generate (Integer sum) {
|
public void generate (Integer sum, Long messageTemplateId) {
|
||||||
List<VehicleInfo> vehicleInfoList = Stream.generate(VehicleInfo::gen).limit(sum).toList();
|
List<VehicleInfo> vehicleInfoList =
|
||||||
|
Stream.generate(() -> VehicleInfo.gen(() -> messageTemplateId))
|
||||||
|
.limit(sum)
|
||||||
|
.toList();
|
||||||
this.saveBatch(vehicleInfoList);
|
this.saveBatch(vehicleInfoList);
|
||||||
vehicleInfoList.forEach(vehicleInstanceService::init);
|
vehicleInfoList.forEach(vehicleInstanceService::init);
|
||||||
}
|
}
|
||||||
|
@ -54,10 +58,11 @@ public class VechileInfoServiceImpl extends ServiceImpl<VehicleInfoMapper, Vehic
|
||||||
* 创建IVN
|
* 创建IVN
|
||||||
*
|
*
|
||||||
* @param vinStr VIN
|
* @param vinStr VIN
|
||||||
|
* @param messageTemplateId 报文模板
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public void create (String vinStr) {
|
public void create (String vinStr, Long messageTemplateId) {
|
||||||
String[] vinList = vinStr.split("\n");
|
String[] vinList = vinStr.split("\n");
|
||||||
StringBuilder errorMsg = new StringBuilder();
|
StringBuilder errorMsg = new StringBuilder();
|
||||||
for (String vin : vinList) {
|
for (String vin : vinList) {
|
||||||
|
@ -76,7 +81,9 @@ public class VechileInfoServiceImpl extends ServiceImpl<VehicleInfoMapper, Vehic
|
||||||
if (!errorMsg.isEmpty()) {
|
if (!errorMsg.isEmpty()) {
|
||||||
throw new RuntimeException(errorMsg.toString());
|
throw new RuntimeException(errorMsg.toString());
|
||||||
}
|
}
|
||||||
List<VehicleInfo> vehicleInfoList = Arrays.stream(vinList).map(VehicleInfo::create).toList();
|
List<VehicleInfo> vehicleInfoList = Arrays.stream(vinList)
|
||||||
|
.map((String vin) -> VehicleInfo.create(vin, () -> messageTemplateId))
|
||||||
|
.toList();
|
||||||
this.saveBatch(vehicleInfoList);
|
this.saveBatch(vehicleInfoList);
|
||||||
vehicleInfoList.forEach(vehicleInstanceService::init);
|
vehicleInfoList.forEach(vehicleInstanceService::init);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
server:
|
server:
|
||||||
port: 81
|
port: 9865
|
||||||
spring:
|
spring:
|
||||||
main:
|
main:
|
||||||
allow-circular-references: true
|
allow-circular-references: true
|
||||||
|
|
Loading…
Reference in New Issue