package com.uas.finance.util;

import java.util.Calendar;
import java.util.Date;

/**
 * 数字生成工具类
 * 
 * @author sunyj
 * @since 2017年8月22日 上午11:34:44
 */
public class NumberGenerator {

	/**
	 * 生成id时的偏移量
	 */
	private static int offset = 0;

	/**
	 * @return 产生唯一的id（一毫秒内不超过100个则不重复）
	 */
	public static String generateId() {
		// 偏移量，不超过100个
		offset = (offset + 1) % 100;
		// 当前毫秒数
		long now = new Date().getTime();
		// 起始时间 2017-01-01 00:00:00:000
		Calendar startCalendar = Calendar.getInstance();
		startCalendar.set(2017, 0, 1, 0, 0, 0);
		startCalendar.set(Calendar.MILLISECOND, 0);
		// 偏移量加16，保证得到的是两位16进制字符
		String hex = Long.toHexString(now - startCalendar.getTimeInMillis()) + Integer.toHexString(offset + 16);
		// 最后反转并转为大写
		return hex.toUpperCase();
	}
}
