车辆录入,生成vin码,可以用于模拟车辆和验证车辆上线
parent
9df04a6af2
commit
39c764922c
|
@ -5,6 +5,8 @@ import com.couplet.common.core.web.controller.BaseController;
|
|||
import com.couplet.common.log.annotation.Log;
|
||||
import com.couplet.common.log.enums.BusinessType;
|
||||
import com.couplet.vehicle.domain.LyhVehicle;
|
||||
import com.couplet.vehicle.domain.req.LyhVehicleEditParams;
|
||||
import com.couplet.vehicle.domain.req.LyhVehicleInsertParams;
|
||||
import com.couplet.vehicle.domain.req.LyhVehicleListParams;
|
||||
import com.couplet.vehicle.service.LyhVehicleService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -56,4 +58,35 @@ public class LyhVehicleController extends BaseController {
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* @Author: LiuYunHu
|
||||
* @Date: 2024/3/27 16:09
|
||||
* @Description: 编辑车辆
|
||||
* @Param: [editParams]
|
||||
* @Return: com.couplet.common.core.domain.Result
|
||||
**/
|
||||
@PostMapping("/editById")
|
||||
@Log(title = "编辑车辆", businessType = BusinessType.UPDATE)
|
||||
public Result editById(@RequestBody LyhVehicleEditParams editParams) {
|
||||
|
||||
String result = lyhVehicleService.editById(editParams);
|
||||
|
||||
return Result.success(result);
|
||||
}
|
||||
|
||||
/*
|
||||
* @Author: LiuYunHu
|
||||
* @Date: 2024/3/27 16:21
|
||||
* @Description: 新增车辆
|
||||
* @Param: [insertParams]
|
||||
* @Return: com.couplet.common.core.domain.Result
|
||||
**/
|
||||
@PostMapping("/insert")
|
||||
@Log(title = "新增车辆", businessType = BusinessType.INSERT)
|
||||
public Result insert(@RequestBody LyhVehicleInsertParams insertParams) {
|
||||
|
||||
String result = lyhVehicleService.insert(insertParams);
|
||||
|
||||
return Result.success(result);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,10 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
|||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.couplet.common.core.web.domain.BaseEntity;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
package com.couplet.vehicle.domain.req;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* @ProjectName: five-groups-couplet
|
||||
* @Author: LiuYunHu
|
||||
* @CreateTime: 2024/3/27
|
||||
* @Description: 车辆编辑入参
|
||||
*/
|
||||
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class LyhVehicleEditParams {
|
||||
/*
|
||||
*车辆id
|
||||
* */
|
||||
private Long vehicleId;
|
||||
|
||||
/*
|
||||
*车辆类型
|
||||
* */
|
||||
private Integer vehicleType;
|
||||
|
||||
|
||||
/*
|
||||
*电机厂商
|
||||
* */
|
||||
private String motorManufacturer;
|
||||
|
||||
/*
|
||||
*电池厂商
|
||||
* */
|
||||
private String batteryManufacturer;
|
||||
|
||||
/*
|
||||
*电机编号
|
||||
* */
|
||||
private String motorNumber;
|
||||
|
||||
/*
|
||||
*电池编号
|
||||
* */
|
||||
private String batteryNumber;
|
||||
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
package com.couplet.vehicle.domain.req;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @ProjectName: five-groups-couplet
|
||||
* @Author: LiuYunHu
|
||||
* @CreateTime: 2024/3/27
|
||||
* @Description: 车辆编辑入参
|
||||
*/
|
||||
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class LyhVehicleInsertParams {
|
||||
|
||||
/*
|
||||
*车辆类型
|
||||
* */
|
||||
@NotNull(message = "车辆类型不能为空")
|
||||
private Integer vehicleType;
|
||||
|
||||
|
||||
/*
|
||||
*电机厂商
|
||||
* */
|
||||
@NotBlank(message = "电机厂商不能为空")
|
||||
private String motorManufacturer;
|
||||
|
||||
/*
|
||||
*电池厂商
|
||||
* */
|
||||
@NotBlank(message = "电池厂商不能为空")
|
||||
private String batteryManufacturer;
|
||||
|
||||
/*
|
||||
*电机编号
|
||||
* */
|
||||
@NotBlank(message = "电机编号不能为空")
|
||||
private String motorNumber;
|
||||
|
||||
/*
|
||||
*电池编号
|
||||
* */
|
||||
@NotBlank(message = "电池编号不能为空")
|
||||
private String batteryNumber;
|
||||
|
||||
}
|
|
@ -1,11 +1,7 @@
|
|||
package com.couplet.vehicle.domain.req;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.couplet.common.core.web.domain.BaseEntity;
|
||||
import io.swagger.models.auth.In;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
|
|
|
@ -2,6 +2,8 @@ package com.couplet.vehicle.service;
|
|||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.couplet.vehicle.domain.LyhVehicle;
|
||||
import com.couplet.vehicle.domain.req.LyhVehicleEditParams;
|
||||
import com.couplet.vehicle.domain.req.LyhVehicleInsertParams;
|
||||
import com.couplet.vehicle.domain.req.LyhVehicleListParams;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -17,4 +19,8 @@ public interface LyhVehicleService extends IService<LyhVehicle> {
|
|||
List<LyhVehicle> list(LyhVehicleListParams listParams);
|
||||
|
||||
String deleteById(Long vehicleId);
|
||||
|
||||
String editById(LyhVehicleEditParams editParams);
|
||||
|
||||
String insert(LyhVehicleInsertParams insertParams);
|
||||
}
|
||||
|
|
|
@ -5,9 +5,12 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.couplet.common.core.utils.StringUtils;
|
||||
import com.couplet.vehicle.domain.LyhVehicle;
|
||||
import com.couplet.vehicle.domain.req.LyhVehicleEditParams;
|
||||
import com.couplet.vehicle.domain.req.LyhVehicleInsertParams;
|
||||
import com.couplet.vehicle.domain.req.LyhVehicleListParams;
|
||||
import com.couplet.vehicle.mapper.LyhVehicleMapper;
|
||||
import com.couplet.vehicle.service.LyhVehicleService;
|
||||
import com.couplet.vehicle.utils.SnowflakeIdGenerator;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -83,4 +86,77 @@ public class LyhVehicleServiceImpl extends ServiceImpl<LyhVehicleMapper, LyhVehi
|
|||
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* @Author: LiuYunHu
|
||||
* @Date: 2024/3/27 15:21
|
||||
* @Description: 通过id进行编辑
|
||||
* @Param: [editParams]
|
||||
* @Return: java.lang.String
|
||||
**/
|
||||
@Override
|
||||
public String editById(LyhVehicleEditParams editParams) {
|
||||
String result = "";
|
||||
|
||||
UpdateWrapper<LyhVehicle> updateWrapper = new UpdateWrapper<>();
|
||||
|
||||
//编辑车辆类型
|
||||
|
||||
updateWrapper.set("vehicle_type", editParams.getVehicleType())
|
||||
|
||||
//编辑电机厂商
|
||||
.set("motor_manufacturer", editParams.getMotorManufacturer())
|
||||
|
||||
//编辑电池厂商
|
||||
.set("battery_manufacturer", editParams.getBatteryManufacturer())
|
||||
|
||||
//编辑电机编号
|
||||
.set("motor_number", editParams.getMotorNumber())
|
||||
|
||||
//编辑电池编号
|
||||
.set("battery_number", editParams.getBatteryNumber())
|
||||
|
||||
//匹配车辆id
|
||||
.eq("vehicle_id", editParams.getVehicleId());
|
||||
|
||||
|
||||
boolean update = update(updateWrapper);
|
||||
|
||||
if (!update) {
|
||||
result = "编辑失败";
|
||||
throw new RuntimeException(result);
|
||||
}
|
||||
|
||||
result = "编辑成功!";
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* @Author: LiuYunHu
|
||||
* @Date: 2024/3/27 16:34
|
||||
* @Description: 新增车辆
|
||||
* @Param: [insertParams]
|
||||
* @Return: java.lang.String
|
||||
**/
|
||||
@Override
|
||||
public String insert(LyhVehicleInsertParams insertParams) {
|
||||
String result = "";
|
||||
|
||||
SnowflakeIdGenerator idGenerator = new SnowflakeIdGenerator(1, 1);
|
||||
long randomId = idGenerator.nextId();
|
||||
String vin = "VIN" + randomId;
|
||||
|
||||
int insert = lyhVehicleMapper.insert(new LyhVehicle(null, insertParams.getVehicleType(), insertParams.getMotorManufacturer(), insertParams.getBatteryManufacturer(), insertParams.getMotorNumber(), insertParams.getBatteryNumber(), vin, 0, 0));
|
||||
|
||||
if (insert == 0) {
|
||||
result = "新增失败";
|
||||
throw new RuntimeException(result);
|
||||
}
|
||||
|
||||
result = "新增成功!";
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,79 @@
|
|||
package com.couplet.vehicle.utils;
|
||||
|
||||
/**
|
||||
* @ProjectName: five-groups-couplet
|
||||
* @Author: LiuYunHu
|
||||
* @CreateTime: 2024/3/27
|
||||
* @Description: 雪花ID生成器
|
||||
* 使用方法
|
||||
* SnowflakeIdGenerator idGenerator = new SnowflakeIdGenerator(1, 1); // 创建一个 ID 生成器,传入机器 ID 和数据中心 ID
|
||||
* long id = idGenerator.nextId(); // 生成 ID
|
||||
*/
|
||||
|
||||
public class SnowflakeIdGenerator {
|
||||
|
||||
private final long epoch = 1420041600000L; // 起始时间戳,用于缩小时间戳范围,可根据实际情况调整
|
||||
private final long workerIdBits = 5L; // 机器 ID 所占位数
|
||||
private final long dataCenterIdBits = 5L; // 数据中心 ID 所占位数
|
||||
private final long sequenceBits = 12L; // 序列号所占位数
|
||||
|
||||
private final long maxWorkerId = -1L ^ (-1L << workerIdBits); // 机器 ID 最大值
|
||||
private final long maxDataCenterId = -1L ^ (-1L << dataCenterIdBits); // 数据中心 ID 最大值
|
||||
private final long maxSequence = -1L ^ (-1L << sequenceBits); // 序列号最大值
|
||||
|
||||
private final long workerIdShift = sequenceBits; // 机器 ID 向左移动位数
|
||||
private final long dataCenterIdShift = sequenceBits + workerIdBits; // 数据中心 ID 向左移动位数
|
||||
private final long timestampShift = sequenceBits + workerIdBits + dataCenterIdBits; // 时间戳向左移动位数
|
||||
|
||||
private long workerId; // 机器 ID
|
||||
private long dataCenterId; // 数据中心 ID
|
||||
private long sequence = 0L; // 序列号
|
||||
private long lastTimestamp = -1L; // 上次生成的时间戳
|
||||
|
||||
public SnowflakeIdGenerator(long workerId, long dataCenterId) {
|
||||
if (workerId > maxWorkerId || workerId < 0) {
|
||||
throw new IllegalArgumentException("Worker ID can't be greater than " + maxWorkerId + " or less than 0");
|
||||
}
|
||||
if (dataCenterId > maxDataCenterId || dataCenterId < 0) {
|
||||
throw new IllegalArgumentException("Data center ID can't be greater than " + maxDataCenterId + " or less than 0");
|
||||
}
|
||||
this.workerId = workerId;
|
||||
this.dataCenterId = dataCenterId;
|
||||
}
|
||||
|
||||
public synchronized long nextId() {
|
||||
long timestamp = timeGen();
|
||||
|
||||
if (timestamp < lastTimestamp) {
|
||||
throw new RuntimeException("Clock moved backwards, refusing to generate ID");
|
||||
}
|
||||
|
||||
if (timestamp == lastTimestamp) {
|
||||
sequence = (sequence + 1) & maxSequence;
|
||||
if (sequence == 0) {
|
||||
timestamp = tilNextMillis(lastTimestamp);
|
||||
}
|
||||
} else {
|
||||
sequence = 0L;
|
||||
}
|
||||
|
||||
lastTimestamp = timestamp;
|
||||
|
||||
return ((timestamp - epoch) << timestampShift) |
|
||||
(dataCenterId << dataCenterIdShift) |
|
||||
(workerId << workerIdShift) |
|
||||
sequence;
|
||||
}
|
||||
|
||||
private long tilNextMillis(long lastTimestamp) {
|
||||
long timestamp = timeGen();
|
||||
while (timestamp <= lastTimestamp) {
|
||||
timestamp = timeGen();
|
||||
}
|
||||
return timestamp;
|
||||
}
|
||||
|
||||
private long timeGen() {
|
||||
return System.currentTimeMillis();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
import com.couplet.vehicle.utils.SnowflakeIdGenerator;
|
||||
|
||||
/**
|
||||
* @ProjectName: five-groups-couplet
|
||||
* @Author: LiuYunHu
|
||||
* @CreateTime: 2024/3/27
|
||||
* @Description:
|
||||
*/
|
||||
|
||||
public class IdTest {
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
SnowflakeIdGenerator idGenerator = new SnowflakeIdGenerator(1, 1);
|
||||
|
||||
long l = idGenerator.nextId();
|
||||
System.out.println(l);
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue