当前访客身份:游客 [ 登录 | 加入 OSCHINA ]

代码分享

当前位置:
代码分享 » Java  » 编程基础
分享到: 
收藏 +0
2
单据的编号规则为:RW+年月+序号(三位数),例:RW-201408-001;
查询数据库当前年月下最大的序号,自动生成下一序号
标签: <无>

代码片段(1) [全屏查看所有代码]

1. [代码][Java]代码     跳至 [1] [全屏预览]

package com.catt;

import java.text.SimpleDateFormat;
import java.util.Date;

public class OrderId {
	public static void main(String[] args) {
		String[] temp = "RW-201402-001".split("-");
		System.out.println(getOddNumber(temp[temp.length - 1]));
	}

	/**
	 * 生成流程单号【单据的编号规则为:RW+年月+序号(三位数),例:RW-201408-001】
	 * 
	 * @param num
	 *            当前数据库最大单号
	 *            
	 *            如下sql查询出【当前年月】下最大的单号
	 *            SELECT MAX(o.order) FROM `t` o WHERE o.`order` LIKE 'RW-201402-%'
	 *            String[] temp = "RW-201402-001".split("-");
	 *            getOddNumber(temp[temp.length])
	 * @return
	 */
	public static String getOddNumber(String num) {
		// 前缀
		String prefix = "RW";
		// 分隔符
		String Delimiter = "-";
		// 默认单号3位数(不足3位补零)
		int defaultNum = 4;
		// 最终返回的单号
		StringBuffer sb = new StringBuffer();

		// 添加前缀
		sb.append(prefix).append(Delimiter);

		// 添加时间
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
		sb.append(sdf.format(new Date())).append(Delimiter);

		// 计算下一单号数字
		Integer nums = Integer.valueOf(num) + 1;
		String temp = nums + "";
		for (int i = temp.length(); i < defaultNum; i++) {
			sb.append("0");
		}
		sb.append(nums);
		return sb.toString();
	}
}


开源中国-程序员在线工具:Git代码托管 API文档大全(120+) JS在线编辑演示 二维码 更多»

发表评论 回到顶部 网友评论(5)

  • 1楼:V 发表于 2014-12-16 11:32 回复此评论
    单号考虑最多的就是并发量,大时,你这里如何保证?
  • 2楼:大侠rrr 发表于 2014-12-16 16:41 回复此评论
    应用极限编程
  • 3楼:p2ng 发表于 2014-12-17 23:19 回复此评论

    引用来自“V”的评论

    单号考虑最多的就是并发量,大时,你这里如何保证?
    对的,今天早上一直在思考要怎么搞...
  • 4楼:dizh 发表于 2014-12-18 19:17 回复此评论
    用号表,这东西现在很多的~
  • 5楼:V 发表于 2015-01-13 15:55 回复此评论

    引用来自“dizh”的评论

    用号表,这东西现在很多的~
    详述下呀,哥们,不要吝惜你的字呀
开源从代码分享开始 分享代码
p2ng的其它代码 全部(1)...