feat(serial-number): 添加乐观锁支持及初始化报价代码接口
- 在AdminBaseSerialNumber实体中添加@Version注解实现乐观锁 - 在MybatisPlus配置中加入OptimisticLockerInnerInterceptor支持乐观锁插件 - 修正AdminBaseSerialNumberServiceImpl中序列号生成逻辑,避免逻辑遗漏 - TestController新增接口initAdminUserQuotationCode,批量初始化内部用户报价代码字段 - 新增日志记录生成的报价代码,确保数据初始化过程可追踪 - 引入相关服务依赖,完善测试控制器注入与调用逻辑
This commit is contained in:
parent
9cceef75bb
commit
b8ca2a9905
|
|
@ -5,13 +5,14 @@ import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.nflg.mobilebroken.common.pojo.ApiResult;
|
import com.nflg.mobilebroken.common.pojo.ApiResult;
|
||||||
import com.nflg.mobilebroken.common.util.VUtils;
|
import com.nflg.mobilebroken.common.util.VUtils;
|
||||||
|
import com.nflg.mobilebroken.repository.entity.AdminUser;
|
||||||
import com.nflg.mobilebroken.repository.entity.ProductModel;
|
import com.nflg.mobilebroken.repository.entity.ProductModel;
|
||||||
import com.nflg.mobilebroken.repository.entity.TBaseArea;
|
import com.nflg.mobilebroken.repository.entity.TBaseArea;
|
||||||
import com.nflg.mobilebroken.repository.entity.TBaseCustomer;
|
import com.nflg.mobilebroken.repository.entity.TBaseCustomer;
|
||||||
import com.nflg.mobilebroken.repository.service.IProductModelService;
|
import com.nflg.mobilebroken.repository.service.*;
|
||||||
import com.nflg.mobilebroken.repository.service.ITBaseAreaService;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import com.nflg.mobilebroken.repository.service.ITBaseCustomerService;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
|
@ -26,6 +27,7 @@ import java.util.stream.Collectors;
|
||||||
/**
|
/**
|
||||||
* 测试
|
* 测试
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/test")
|
@RequestMapping("/test")
|
||||||
public class TestController extends ControllerBase {
|
public class TestController extends ControllerBase {
|
||||||
|
|
@ -39,6 +41,12 @@ public class TestController extends ControllerBase {
|
||||||
@Resource
|
@Resource
|
||||||
ITBaseAreaService areaService;
|
ITBaseAreaService areaService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IAdminUserService adminUserService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IAdminBaseSerialNumberService serialNumberService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 初始化机型表的BatchNumber字段数据
|
* 初始化机型表的BatchNumber字段数据
|
||||||
*/
|
*/
|
||||||
|
|
@ -121,4 +129,25 @@ public class TestController extends ControllerBase {
|
||||||
return ApiResult.success();
|
return ApiResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化内部用户报价代码字段数据
|
||||||
|
*/
|
||||||
|
@PostMapping("initAdminUserQuotationCode")
|
||||||
|
public ApiResult<Void> initAdminUserQuotationCode(){
|
||||||
|
List<AdminUser> adminUsers=adminUserService.lambdaQuery()
|
||||||
|
.isNull(AdminUser::getQuotationCode)
|
||||||
|
.orderByAsc(AdminUser::getId)
|
||||||
|
.list();
|
||||||
|
if (CollectionUtil.isNotEmpty(adminUsers)) {
|
||||||
|
adminUsers.forEach(adminUser -> {
|
||||||
|
String quotationCode = serialNumberService.generateSerialNumber(0, "NF", "", false, 6);
|
||||||
|
log.info("生成报价代码【{}】:{}", adminUser.getUserName(), quotationCode);
|
||||||
|
adminUser.setQuotationCode(quotationCode);
|
||||||
|
});
|
||||||
|
adminUserService.updateBatchById(adminUsers);
|
||||||
|
return ApiResult.success();
|
||||||
|
}
|
||||||
|
return ApiResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.Version;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
|
@ -45,6 +47,7 @@ public class AdminBaseSerialNumber implements Serializable {
|
||||||
/**
|
/**
|
||||||
* 乐观锁版本号
|
* 乐观锁版本号
|
||||||
*/
|
*/
|
||||||
|
@Version
|
||||||
private Integer version;
|
private Integer version;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.nflg.mobilebroken.repository.service.impl;
|
package com.nflg.mobilebroken.repository.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.nflg.mobilebroken.repository.entity.AdminBaseSerialNumber;
|
import com.nflg.mobilebroken.repository.entity.AdminBaseSerialNumber;
|
||||||
import com.nflg.mobilebroken.repository.mapper.AdminBaseSerialNumberMapper;
|
import com.nflg.mobilebroken.repository.mapper.AdminBaseSerialNumberMapper;
|
||||||
import com.nflg.mobilebroken.repository.service.IAdminBaseSerialNumberService;
|
import com.nflg.mobilebroken.repository.service.IAdminBaseSerialNumberService;
|
||||||
|
|
@ -14,9 +15,8 @@ import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* 服务实现类
|
* 服务实现类
|
||||||
* </p>
|
* </p>
|
||||||
*
|
|
||||||
* @author 代码生成器生成
|
* @author 代码生成器生成
|
||||||
* @since 2026
|
* @since 2026
|
||||||
*/
|
*/
|
||||||
|
|
@ -34,7 +34,7 @@ public class AdminBaseSerialNumberServiceImpl extends ServiceImpl<AdminBaseSeria
|
||||||
public String generateSerialNumber(Integer businessType, String prefixNumber, String specialNumber,
|
public String generateSerialNumber(Integer businessType, String prefixNumber, String specialNumber,
|
||||||
boolean hasTimeStr, Integer serialLength) {
|
boolean hasTimeStr, Integer serialLength) {
|
||||||
String currentDate = "";
|
String currentDate = "";
|
||||||
String serialNo ;
|
String serialNo;
|
||||||
AdminBaseSerialNumber serialNumber = this.lambdaQuery()
|
AdminBaseSerialNumber serialNumber = this.lambdaQuery()
|
||||||
.eq(AdminBaseSerialNumber::getBusinessType, businessType)
|
.eq(AdminBaseSerialNumber::getBusinessType, businessType)
|
||||||
.one();
|
.one();
|
||||||
|
|
@ -59,6 +59,8 @@ public class AdminBaseSerialNumberServiceImpl extends ServiceImpl<AdminBaseSeria
|
||||||
if (serialNumber.getCurrentDateStr().equals(currentDate)) {
|
if (serialNumber.getCurrentDateStr().equals(currentDate)) {
|
||||||
startSerial = serialNumber.getMaxSerial() + 1;
|
startSerial = serialNumber.getMaxSerial() + 1;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
startSerial = serialNumber.getMaxSerial() + 1;
|
||||||
}
|
}
|
||||||
serialNumber.setSerialLength(serialLength);
|
serialNumber.setSerialLength(serialLength);
|
||||||
serialNumber.setMaxSerial(startSerial);
|
serialNumber.setMaxSerial(startSerial);
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import com.alibaba.druid.pool.DruidDataSource;
|
||||||
import com.baomidou.mybatisplus.annotation.DbType;
|
import com.baomidou.mybatisplus.annotation.DbType;
|
||||||
import com.baomidou.mybatisplus.core.MybatisConfiguration;
|
import com.baomidou.mybatisplus.core.MybatisConfiguration;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
|
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
|
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
|
||||||
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
|
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
|
||||||
import com.nflg.mobilebroken.starter.handler.UTCLocalDateTimeTypeHandler;
|
import com.nflg.mobilebroken.starter.handler.UTCLocalDateTimeTypeHandler;
|
||||||
|
|
@ -104,6 +105,7 @@ public class MysqlDataSourceConfig {
|
||||||
@Bean
|
@Bean
|
||||||
public MybatisPlusInterceptor mybatisPlusInterceptor() {
|
public MybatisPlusInterceptor mybatisPlusInterceptor() {
|
||||||
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
|
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
|
||||||
|
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
|
||||||
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
|
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
|
||||||
return interceptor;
|
return interceptor;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue