| | |
| | | package com.dy.common.util; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.Calendar; |
| | | |
| | | @Slf4j |
| | | @Component |
| | | public class IDLongGenerator { |
| | | |
| | | private static final Object synObj = new Object() ; |
| | | |
| | | private static final int yearLenght = 4 ;//4:年度取四位, 3:年度取三位, 2:年度取两位, 1:年度取一位, 0:年度取0位 |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * 23 10 28 09 14 40 00000 |
| | | * 长度16的ID,年度取两位,长度18的ID,年度取四位,17位数字超出了javascript的表数范围,javascript会表数不正确 |
| | | * 2023 10 28 09 14 40 00000 |
| | | * 长度19的ID,年度取两位,长度18的ID,年度取四位,17位数字超出了javascript的表数范围,javascript会表数不正确 |
| | | */ |
| | | public Long generate(){ |
| | | return doGenerate() ; |
| | | synchronized (synObj){ |
| | | //Long id = doGenerate() ; |
| | | //log.info("产生ID = " + id); |
| | | //return id ; |
| | | return doGenerate() ; |
| | | } |
| | | } |
| | | /** |
| | | * 设置后缀,不同子系统设置不同的后缀 |
| | |
| | | |
| | | /** |
| | | * 执行生成 |
| | | * @return ID |
| | | * @return ID 20231218 104504 06900 |
| | | */ |
| | | private synchronized Long doGenerate(){ |
| | | private Long doGenerate(){ |
| | | long id ; |
| | | long now = current() ; |
| | | if(now != last){ |