Java生成NO201601270001这样的流水编号

来源:互联网 发布:公知怎么喷中国航母 编辑:程序博客网 时间:2024/06/05 05:13
  1. 首先从数据库查询出已有的最大编号
  2. 拼成NO+当前时间格式的字符串
  3. 判断最大编号是否存在,最大编号中是否包含当天时间
  4. 如果最大编号不存在,则直接生成第一个编号NO201601270001
  5. 如果最大编号存在且包涵当天时间,则给最大编号加1,拼成编码
    具体代码实现如下:
public class Main {    public static void main(String args[]) {        String Orderno = null;        String maxOrderno = "NO201601270001"; // 从数据库查询出的最大编号        System.out.println("maxOrderno=" + maxOrderno);        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); // 时间字符串产生方式        String uid_pfix = "NO" + format.format(new Date()); // 组合流水号前一部分,NO+时间字符串,如:NO20160126        System.out.println("time=" + format.format(new Date()));        if (maxOrderno != null && maxOrderno.contains(uid_pfix)) {            String uid_end = maxOrderno.substring(10, 14); // 截取字符串最后四位,结果:0001            System.out.println("uid_end=" + uid_end);            int endNum = Integer.parseInt(uid_end); // 把String类型的0001转化为int类型的1            System.out.println("endNum=" + endNum);            int tmpNum = 10000 + endNum + 1; // 结果10002            System.out.println("tmpNum=" + tmpNum);            Orderno = uid_pfix + Tools.subStr("" + tmpNum, 1);// 把10002首位的1去掉,再拼成NO201601260002字符串        } else {            Orderno = uid_pfix + "0001";        }        System.out.println(Orderno);    }}

把10002首位的1去掉的实现方法:

public class Tools {    public static String subStr(String str, int start) {        if (str == null || str.equals("") || str.length() == 0)            return "";        if (start < str.length()) {            return str.substring(start);        } else {            return "";        }    }}
0 0
原创粉丝点击