| | |
| | | public static void main(String[] args) { |
| | | String s = generateRandomString(26); |
| | | System.out.println(s); |
| | | System.out.println(generateOrderNumber()); |
| | | System.out.println(generateOrderNumber(10L, "NC")); |
| | | |
| | | } |
| | | |
| | | private static final Random RANDOM = new Random(); |
| | | private static final AtomicInteger SEQUENCE = new AtomicInteger(0); |
| | | private static final int MAX_SEQUENCE = 99999;// 5位数的序列号 |
| | | private static final String ORDER_PER = "SN"; |
| | | |
| | | public static synchronized String generateOrderNumber() { |
| | | public static String generateOrderNumber(Long dataId, String orderType) { |
| | | String datePart = new SimpleDateFormat("yyyyMMddhhmm").format(new Date()); |
| | | int sequencePart = SEQUENCE.getAndIncrement() % MAX_SEQUENCE; |
| | | String sequenceStr = String.format("%05d", sequencePart); // 保证序列号是5位数,不足的前面补0 |
| | | int randomPart = RANDOM.nextInt(90000) + 10000; // 生成5位随机数 |
| | | |
| | | return ORDER_PER + datePart + sequenceStr; |
| | | return ORDER_PER + datePart + String.format("%05d", randomPart) + dataId; |
| | | } |
| | | |
| | | } |