java中生成yyyyMMdd001此类流水单号

最近项目需求要生成yyyyMMdd001此类流水单号,一开始摸不着头脑,慢慢找到了解决疑惑的方法
我就直接贴代码:
1.截取工具类SubUtils.java

public class SubUtils {


    /**
     * 生成yyyyMMdd+001此类流水编号
     * @param maxOrderno
     * @return
     */
    public static String createNumber (String maxOrderno){
        String orderNo = null;
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); // 时间字符串产生方式
        String uid_pfix = format.format(new Date()); // 组合流水号前一部分,时间字符串,如:20190710
        if (maxOrderno != null && maxOrderno.contains(uid_pfix)) {
            String uid_end = maxOrderno.substring(8, 11); // 截取字符串最后四位,结果:0001
            int endNum = Integer.parseInt(uid_end); // 把String类型的001转化为int类型的1
            int tmpNum = 1000 + endNum + 1; // 结果1002
            orderNo = uid_pfix + SubUtils.subStr("" + tmpNum, 1);// 把1002首位的1去掉,再拼成0190710002字符串

        }else{
            //第一位
            orderNo=uid_pfix+"001";
        }
        return orderNo;

    }
    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 "";
        }

    }

}

2.后面就简单了,按照当前日期(今天)去模糊查询单号,并按照创建日期倒序排列,取第一条作为最大的单号,若为null,则第一条就是yyyyMMdd001
3.模糊的

<select id="selectByNo" resultType="SendInvoices">
		select invoices_no
		from hl_send_invoices
        <bind name="invoicesNo" value="_parameter+'%'"/>
		where invoices_no like #{yyyyMMdd}
		order by invoices_no desc
select>

ok,1 row affected,it‘s finshed!!!

你可能感兴趣的:(java篇)