分享

生成流水号

 WindySky 2017-10-10
/* * Copyright 2015 imiansha.com All right reserved. This software is the confidential and proprietary information of * imiansha.com ("Confidential Information"). You shall not disclose such Confidential Information and shall use it only * in accordance with the terms of the license agreement you entered into with imiansha.com. */ package com.imiansha.baseframe.commom.util; import java.text.MessageFormat; import java.util.Date; /** * 类CreateOrderNo.java的实现描述:生成单据号 * * @author leon 2015年7月29日 下午12:07:32 */ public class CreateOrderNo { private static final Long maxNo = 10000000l; // 最大流水号 private static final int stepNo = 1; // 流水号每次增加数 private static final Integer completionZeroLength = maxNo.toString().length(); // 流水号补0长度 private static final String dateFormat = "yyyyMMddhhmmssSSS"; // 格式化日期格式 private static final String serialNumberFormat = "%0{0}d"; // // 0 代表前面补充0, {0}代表补0长度,d代表参数为正数型 private static final int randomNumber = 6; // 随机数位数 /** * 说明:根据台头和流水号生成单据号:单据号+时间:年月日时分秒毫秒+8位流水号(很有可能重复) * * @param headStr 单据台头 * @param serialNo 流水号(最近一个),最好是根据每天的数据量生成count * @return * @author yangdong */ public static String createOrderNo(String headStr, long serialNo) { String nowdate = DateUtil.dateToFormat(new Date(), dateFormat); String serialNumberFormatStr = MessageFormat.format(serialNumberFormat, completionZeroLength); if (serialNo >= maxNo) { serialNo = serialNo - maxNo; } serialNo = serialNo + stepNo; String sequenceNo = String.format(serialNumberFormatStr, serialNo); String orderNumber = headStr + nowdate + sequenceNo; return orderNumber; } /** * 方法说明:根据台头生成单据号:单据号+时间:年月日时分秒毫秒+6位水随机数(重复可能性很小) * * @param headStr * @return String * @time 2015年8月16日 下午2:38:26 * @author yangdong */ public static String createOrderNo(String headStr) { String nowdate = DateUtil.dateToFormat(new Date(), dateFormat); String orderNumber = headStr + nowdate + RandomUtil.getRandom(randomNumber); return orderNumber; } // public static void main(String[] args) { // Map<String, String> str = new HashMap<String, String>(); // for (int i = 0; i < 100000; i++) { // String string = CreateOrderNo.createOrderNo("test"); // str.put(string, string); // } // Set<String> ss = str.keySet(); // System.out.println("---------打印值"); // for (String string : ss) { // System.out.println(str.get(string)); // } // } } 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多