SnowflakeIdWorker3rd逻辑还原

This commit is contained in:
gaoqr
2026-08-13 19:50:23 +08:00
parent 3ee87082f3
commit 42777bc7cd
11 changed files with 26 additions and 64 deletions
@@ -70,19 +70,6 @@ public class SnowflakeIdWorker3rd {
return Integer.parseInt(formatted_date);
}
/**
* 生成小板短编号。
*
* <p>编号以固定的 {@code 1} 开始,再拼接五位组织编号,避免其他系统截取前五位时出现前导零。</p>
*
* @param organId 组织编号
* @param id 小板序列号
* @return 小板短编号
*/
public static String generatePlateNo(Long organId, long id) {
return "1" + String.format("%05d", organId) + obtainingTime() + Long.toString(id).substring(2);
}
/**
* 获得下一个ID (该方法是线程安全)
*
@@ -1,17 +0,0 @@
package com.cf.imes.framework.id.core.util;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
class SnowflakeIdWorker3rdTest {
@Test
void generatePlateNoStartsWithOneAndKeepsFiveDigitOrganId() {
String plateNo = SnowflakeIdWorker3rd.generatePlateNo(7L, 123456L);
assertTrue(plateNo.startsWith("1"));
assertEquals("00007", plateNo.substring(1, 6));
}
}
@@ -569,8 +569,6 @@ public class PlateServiceImpl implements PlateService {
Map<Long, OrderPlanPlateNumAndAreaRespVO> orderGoodsPlanPlateNumAndAreaRespVOMap = new HashMap<>();
Long organId = getUserOrganId();
// 组装新增数据
reqVO.forEach(f -> {
@@ -586,7 +584,8 @@ public class PlateServiceImpl implements PlateService {
.build());
// 生成板编号
String plateNo = SnowflakeIdWorker3rd.generatePlateNo(organId, idWorker.nextId());
long obtainingTime = idWorker.obtainingTime();
String plateNo = "1" + obtainingTime + Long.toString(idWorker.nextId()).substring(2);
String remake1 = f.getRemake1() == null ? "" : f.getRemake1() + ";";
@@ -603,7 +602,6 @@ public class PlateServiceImpl implements PlateService {
plateDOS.add(PlateDO.builder()
.id(plateId)
.orderId(orderId)
.organId(organId)
.name(f.getName())
.plateNo(plateNo)
.type(OrderPlateTypeEnum.SELFINCREASINGBOARD.getType())
@@ -1228,8 +1226,8 @@ public class PlateServiceImpl implements PlateService {
@Override
public OrderPlateWechatMiniProgramCadInfoRespVO getPlateInfoByPlateNo(String plateNo) {
// 1、解析组织id,查询板件信息
Long organId = parseOrganId(plateNo);
organApi.validOrgan(organId).checkError();
Integer organId = Integer.parseInt(plateNo.substring(0, 5));
organApi.validOrgan(organId.longValue()).checkError();
PlateDO plateDO = plateMapper.selectOne(new LambdaQueryWrapper<PlateDO>()
.eq(PlateDO::getOrganId, organId)
@@ -1294,8 +1292,9 @@ public class PlateServiceImpl implements PlateService {
public OrderWechatMiniProgramCadInfoRespVO getOrderInfoByPlateNo(String plateNo) {
OrderWechatMiniProgramCadInfoRespVO result = new OrderWechatMiniProgramCadInfoRespVO();
// 1、解析组织id,查询板件信息
Long organIdLong = parseOrganId(plateNo);
organApi.validOrgan(organIdLong).checkError();
Integer organId = Integer.parseInt(plateNo.substring(0, 5));
Long organIdLong = organId.longValue();
organApi.validOrgan(organId.longValue()).checkError();
PlateDO plateDO = plateMapper.selectOne(new LambdaQueryWrapper<PlateDO>()
.eq(PlateDO::getOrganId, organIdLong)
@@ -1324,8 +1323,9 @@ public class PlateServiceImpl implements PlateService {
@Override
public OrdersViewCadViewInfoRespVO getOrderDetailsByPlateNo(String plateNo, OrderWechatMiniProgramDetailReqVO reqVO) {
// 1、解析组织id,查询板件信息
Long organIdLong = parseOrganId(plateNo);
organApi.validOrgan(organIdLong).checkError();
Integer organId = Integer.parseInt(plateNo.substring(0, 5));
Long organIdLong = organId.longValue();
organApi.validOrgan(organId.longValue()).checkError();
OrganContextHolder.setIgnore(false);
OrganContextHolder.setOrganId(organIdLong);
@@ -1357,20 +1357,4 @@ public class PlateServiceImpl implements PlateService {
return orderComponentService.getOrderViewCadInfo(detailReqVO);
}
/**
* 从板件短编号解析组织编号,同时兼容旧版未增加固定前缀的编号。
*
* @param plateNo 板件短编号
* @return 组织编号
*/
private Long parseOrganId(String plateNo) {
if (plateNo.length() >= 10 && plateNo.charAt(0) == '1') {
int year = Integer.parseInt(plateNo.substring(6, 8));
int month = Integer.parseInt(plateNo.substring(8, 10));
if (year >= 20 && month >= 1 && month <= 12) {
return Long.parseLong(plateNo.substring(1, 6));
}
}
return Long.parseLong(plateNo.substring(0, 5));
}
}
@@ -966,6 +966,7 @@ public class ApiTypeRealize {
for (int i = 0; i < plateLists.size(); i++) {
long plateNo = idWorker.nextId();
long obtainingTime = idWorker.obtainingTime();
JSONObject plate = plateLists.getJSONObject(i);
@@ -983,7 +984,7 @@ public class ApiTypeRealize {
.id(plateId)
.orderId(orderId)
.name(plate.getString(ProduceApiConstants.BD_BOARD_NAME))
.plateNo(SnowflakeIdWorker3rd.generatePlateNo(organId, plateNo))
.plateNo("1" + obtainingTime + Long.toString(plateNo).substring(2))
.type(type)
.goodsId(plate.getLong(ProduceApiConstants.BD_GOODS_ID))
.splitHeight(BigDecimal.valueOf(plate.getDouble(ProduceApiConstants.BD_SPLIT_HEIGHT)))
@@ -274,6 +274,7 @@ public class ExcelTypeRealize {
for (int i = 0; i < Integer.parseInt(combination.getGoodsNumber()); i++) {
long plateNo = idWorker.nextId();
long obtainingTime = idWorker.obtainingTime();
// 计算面积
BigDecimal area = BigDecimal.valueOf(Double.parseDouble(combination.getWidth()))
@@ -292,7 +293,7 @@ public class ExcelTypeRealize {
.plateNo(combination.getPlateNo())
.goodsId(combination.getGoodId())
.width(BigDecimal.valueOf(Double.parseDouble(combination.getWidth())))
.plateNo(SnowflakeIdWorker3rd.generatePlateNo(organId, plateNo))
.plateNo("1" + obtainingTime + Long.toString(plateNo).substring(2))
.height(BigDecimal.valueOf(Double.parseDouble(combination.getHeight())))
.thickness(BigDecimal.valueOf(Double.parseDouble(combination.getThickness())))
.splitWidth(BigDecimal.valueOf(Double.parseDouble(combination.getSplitWidth())))
@@ -809,6 +809,7 @@ public class XmlTypeRealize {
for (BlockXmlVO blockXmlVO : blockXmlVOS.getBlockXmlVOList()) {
long plateNo = idWorker.nextId();
long obtainingTime = idWorker.obtainingTime();
Long plateId = (Long) identifierGenerator.nextId(null);
// 成品面积
@@ -864,7 +865,7 @@ public class XmlTypeRealize {
.organId(organId)
.orderId(orderId)
.name(blockXmlVO.getName())
.plateNo(SnowflakeIdWorker3rd.generatePlateNo(organId, plateNo))
.plateNo("1" + obtainingTime + Long.toString(plateNo).substring(2))
.type(plateType)
.goodsId(goodsId)
.width(BigDecimal.valueOf(Double.parseDouble(blockXmlVO.getWidth())))
@@ -655,6 +655,7 @@ public class DefaultExcelOrderImportFactory {
// 根据数量生成num个小板数据
for (int i = 0; i < num; i++) {
long plateNo = idWorker.nextId();
long obtainingTime = idWorker.obtainingTime();
long goodsId = Long.parseLong(tempDataDO.getInnerGoodsId());
// 成品宽
String width = combination.getWidth();
@@ -673,7 +674,7 @@ public class DefaultExcelOrderImportFactory {
.name(combination.getName())
.type(OrderPlateTypeEnum.LAYERBOARD.getType())
.goodsId(goodsId)
.plateNo(SnowflakeIdWorker3rd.generatePlateNo(organId, plateNo))
.plateNo("1" + String.format("%05d", organId) + obtainingTime + Long.toString(plateNo).substring(2))
.height(BigDecimal.valueOf(Double.parseDouble(height)))
.width(BigDecimal.valueOf(Double.parseDouble(width)))
.thickness(BigDecimal.valueOf(Double.parseDouble(combination.getThickness())))
@@ -465,6 +465,7 @@ public class DefaultXmlOrderImportFactory {
BlockXmlVO blockXmlVO = JSON.parseObject(detail, BlockXmlVO.class);
long plateNo = idWorker.nextId();
long obtainingTime = idWorker.obtainingTime();
Long plateId = (Long) snowFlakeGenerator.nextId(null);
// 成品面积
@@ -514,7 +515,7 @@ public class DefaultXmlOrderImportFactory {
.id(plateId)
.orderId(orderId)
.name(blockXmlVO.getName())
.plateNo(SnowflakeIdWorker3rd.generatePlateNo(organId, plateNo))
.plateNo("1" + String.format("%05d", organId) + obtainingTime + Long.toString(plateNo).substring(2))
.type(plateType)
.goodsId(goodsId)
.width(BigDecimal.valueOf(Double.parseDouble(blockXmlVO.getWidth())))
@@ -1244,6 +1244,7 @@ public class ProducingOrderImportFactory {
Long plateId = (Long) snowFlakeGenerator.nextId(null);
long plateNo = idWorker.nextId();
long obtainingTime = idWorker.obtainingTime();
// 从info.remarks中获取备注相关
ProducingImportBlockRemark plateRemark = getPlateRemark(block);
@@ -1268,7 +1269,7 @@ public class ProducingOrderImportFactory {
.id(plateId)
.orderId(orderId)
.name(block.getName())
.plateNo(SnowflakeIdWorker3rd.generatePlateNo(organId, plateNo))
.plateNo("1" + String.format("%05d", organId) + obtainingTime + Long.toString(plateNo).substring(2))
.type(block.getType())
.goodsId(goodsDO.getId())
.width(getBigDecimalOrNull(block.getWidth()))
@@ -770,6 +770,7 @@ public class WebCadOrderImportAsyncFactory {
Long plateId = (Long) snowFlakeGenerator.nextId(null);
long plateNo = idWorker.nextId();
long obtainingTime = idWorker.obtainingTime();
// 从info.remarks中获取备注相关
WebCadDataBlockRemarkVO plateRemark = getPlateRemark(block);
@@ -796,7 +797,7 @@ public class WebCadOrderImportAsyncFactory {
.id(plateId)
.orderId(orderId)
.name(block.getName())
.plateNo(SnowflakeIdWorker3rd.generatePlateNo(organId, plateNo))
.plateNo("1" + String.format("%05d", organId) + obtainingTime + Long.toString(plateNo).substring(2))
.type(block.getType())
.goodsId(goodsDO.getId())
.width(getBigDecimalOrNull(block.getWidth()))
@@ -953,6 +953,7 @@ public class WebCadOrderImportFactory {
Long plateId = (Long) snowFlakeGenerator.nextId(null);
long plateNo = idWorker.nextId();
long obtainingTime = idWorker.obtainingTime();
// 从info.remarks中获取备注相关
WebCadDataBlockRemarkVO plateRemark = getPlateRemark(block);
@@ -977,7 +978,7 @@ public class WebCadOrderImportFactory {
.id(plateId)
.orderId(orderId)
.name(block.getName())
.plateNo(SnowflakeIdWorker3rd.generatePlateNo(organId, plateNo))
.plateNo("1" + String.format("%05d", organId) + obtainingTime + Long.toString(plateNo).substring(2))
.type(block.getType())
.goodsId(goodsDO.getId())
.width(getBigDecimalOrNull(block.getWidth()))