生成唯一流水码

package com.byd.mes.util;

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

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.byd.mes.bussiness.bo.main.NextNumberBO;
import com.byd.mes.dev.nextNumber.NextNumberBaseConfig;
/**
 * 
 * ClassName:NextNumberArgUtils
 * @author  kht * @Date	 2011-6-1		下午01:39:44
 */
public class NextNumberArgUtils {
	private static final Log log = LogFactory.getLog(NextNumberArgUtils.class);
	/**
	 * 
	 * parse:(生成流水号)
	 * @param  String source
	 * @param  Object param
	 * @param  String seq
	 * @param  NextNumberBO bo
	 * @return String
	 */
	public static String parse(String source,final Object param,final String seq, NextNumberBO bo){ 		
		return  StringUtils.findAndReplace("\\x7B[\\s]*[\\w\\[\\]\\s\\:\\.]+[\\s]*}", source, 
				new StringUtils.FindCallback() {			
				@Override
				public String execute(String gr, NextNumberBO bo) {
					String s = StringUtils.substringBetween(gr,"{", "}").trim();
					int si = s.indexOf("[");
					String varName = "";
					String varParam = "";
					if(si > -1){
						varName = StringUtils.substringBefore(s, "[");
						//varParam  = s.substring(si+1, s.length()-1).trim();
						int index = s.indexOf("]");
						if(index <= -1){
							varParam  = s.substring(si+1).trim();
							//varParam  = StringUtils.substringBetween(s, "[", "").trim();
						}else{
							varParam  = StringUtils.substringBetween(s, "[", "]").trim();
						}
					}
					else{
						varName = s;
					}  
					log.debug("var name:"+varName + ",var param:"+varParam+",var seq:"+seq);
					if(StringUtils.equals(varName,"seq")){
						return seq;
					}
					else if(StringUtils.equals(varName,"date")){
						return NextNumberArgUtils.toDate(varParam, bo);
					}
					else if(StringUtils.equals(varName,"var")){
						Object o = BoPoPropertyUtil.getProperty(param, varParam);
						if(o != null){
							return o.toString();
						}
					}
					else{
					}			
					return gr;
				}
		}, bo);
	}
	/**
	 * 
	 * parseTest:(抽象时产生的进制格式)
	 * @param  String source
	 * @param  Object param
	 * @param  String seq
	 * @param  NextNumberBO bo
	 * @return String
	 */
	public static String parseTest(String source,final Object param,final String seq, NextNumberBO bo){ 
		return  StringUtils.findAndReplace("\\x7B[\\s]*[\\w\\[\\]\\s\\:\\.]+[\\s]*}", source, 
				new StringUtils.FindCallback() {			
				@Override
				public String execute(String gr, NextNumberBO bo) {
					String s = gr.replaceAll("[\\x7B\\}]", "").trim();
					int si = s.indexOf("[");
					String varName = "";
					String varParam = "";
					if(si > -1){
						varName = s.substring(0, si);
						varParam  = s.substring(si+1, s.length()-1).trim();
					}
					else{
						varName = s;
					}  
					log.debug("var name:"+varName + ",var param:"+varParam+",var seq:"+seq);
					if(StringUtils.equals(varName,"seq")){
						return seq;
					}
					else if(StringUtils.equals(varName,"date")){
						return NextNumberArgUtils.toDate(varParam, bo);
					}
					else if(StringUtils.equals(varName,"var")){
						Object o = BoPoPropertyUtil.getProperty(param, varParam);
						if(o != null){
							return o.toString();
						}
					}
					else{
					}			
					return gr;
				}
		}, bo);
	}
	/**
	 * 
	 * toDate:(转换成相对应的进制时间格式)
	 * @param  String partten
	 * @param  NextNumberBO bo
	 * @return String
	 */
	public static String toDate(String partten, NextNumberBO bo){
		String className = bo.getClassName();
		if(StringUtils.isNotEmpty(className) && StringUtils.isNotBlank(className)){
			NextNumberBaseConfig baseConfig = null;
			try{
				baseConfig = (NextNumberBaseConfig) Class.forName(className).newInstance();
			}catch(Exception ex){
				log.debug(ex.getMessage());
			}
			return baseConfig.toDate(partten);
		}else{
			SimpleDateFormat format = new SimpleDateFormat(partten);
			String result = format.format(new Date());
			StringBuffer buffer = new StringBuffer();
			Date date = null;
			try {
				date = (Date)format.parseObject(result);
			} catch (ParseException e) {
				e.printStackTrace();
			}
			if(partten.indexOf("yyyy") > -1){
				int year = date.getYear()+1900;
				if(year == 2011){
					year = 1;
				}else if(year == 2012){
					year = 2;
				}else if(year == 2013){
					year = 3;
				}else if(year == 2014){
					year = 4;
				}else if(year == 2015){
					year = 5;
				}else if(year == 2016){
					year = 6;
				}else if(year == 2017){
					year = 7;
				}else if(year == 2018){
					year = 8;
				}else if(year == 2019){
					year = 9;
				}else{
					year = 0;
				}
				buffer.append(year);
			}
			
			if(partten.indexOf("MM") > -1){
				String month = Integer.toString(date.getMonth()+1, bo.getSequenceBase());
				buffer.append(month);
			}
			
			if(partten.indexOf("dd") > -1){
				String day = Integer.toString(date.getDate(), bo.getSequenceBase());
				buffer.append(day);
			}
			
			if(partten.indexOf("HH") > -1){
				String hours = Integer.toString(date.getHours(), bo.getSequenceBase());
				buffer.append(hours);
			}
			
			if(partten.indexOf("mm") > -1){
				String minutes = Integer.toString(date.getMinutes(), bo.getSequenceBase());
				buffer.append(minutes);
			}
			
			if(partten.indexOf("ss") > -1){
				String seconds = Integer.toString(date.getSeconds(), bo.getSequenceBase());
				buffer.append(seconds);
			}
			return buffer.toString();
		}
	}
	
}
原文地址:https://www.cnblogs.com/qq1988627/p/6606892.html