`
qq1988627
  • 浏览: 102966 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

生成唯一流水码

    博客分类:
  • Java
 
阅读更多
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();
		}
	}
	
}

 

分享到:
评论

相关推荐

    测试多种方法生成唯一性随机码Demo

    采用多种方法通过生成随机数的方式验证流水号的重复率与唯一性

    JAVA版本的生成唯一编号

    /** * 获得序列号,同时更新持久化存储中的序列 * @param current 当前的日期 * @param start 初始化的序号 * @return 所获得新的序列号 */ protected abstract int getOrUpdateNumber(Date current, int start);

    VS中流水号自动生成

    /// 根据时间生成流水号 /// 流水号组成如XS200811050001 /// XS:销售 /// 20081105:日期 /// 0001:20081105日的第一个订单 /// /// &lt;returns&gt;&lt;/returns&gt; private string GetNumberString() { string ...

    PHP生成唯一会员卡号

    会员卡号由3位城市编号+5位卡号编码+2位校验码组成,城市编号用区号表示,如755代表深圳,5位卡编号则由36进制的卡编号组成,后面两位校验码则是通过一定的算法生成的,校验码的用处是能验证卡号的合法性,...

    C#生成标识字符串

    生成字母+日期+流水的唯一识别号码,在日期变更时,流水号归为1

    PHP实现生成唯一编号(36进制的不重复编号)

    当我们要将一个庞大的数据进行编号时,而编号有位数限制,比如5位的车牌号、10位的某证件号码、订单流水号、短网址等等,我们可以使用36进制计算出符合位数的不重复的编号。 我们将0-Z(0123456789...

    PHP实现生成唯一会员卡号

    在不查询数据库的情况下,每个会员登录进来会生成一个数字字母组合不重复的会员卡号。 效果图如下: 当我们要将一个庞大的数据进行编号时,而编号有位数限制,比如5位的车牌号、10位的某证件号码、订单流水号、短...

    条码在智能工厂的应用.pptx

    单据条码 料品条码 箱码 条码分类 条码管理-条码分类 用来区分不同的业务单据,为系统中每一个业务单据提供唯一的条码,方便条码应用中快速定位业务单据 用来区分不同物理属性和管理属性的料品,可以按料品的明细...

    C语言银行业务

    )存取标记根据发生额自动生成(1表示存,-1表示取)、日期(包含年月日时分)自动生成、余额自动更改, 输入完毕后,系统询问是否确定?是(1)否(0)。输入1,系统将此信息存入到文件”bankrecord.dat”中,...

    Oracle数据库课程设计-超市管理系统报告.doc

    商品录入:根据超巿业务特点制定相关功能,可以通过输入唯一编号、扫描条形码、商品名称等来实现精确或模糊的商品扫描录入。 收银业务:直接输入商品名称(对于同类多件商品采用一次录入加数量的方式)自动计算...

    超市管理系统数据库设计.pdf

    1.4 定义 (1)商品条形码:每种商品具有唯一的条形码,对于某些价格一样的商品,可以使 用自定义条形码。 (2)交易清单:包括交易的流水账号、每类商品的商品名、数量、该类商品的总金 额、交易的时间、负责本次...

    数据库设计报告《小商店销售管理子系统》

    商品录入:根据超巿业务特点制定相关功能,可以通过输入唯一编号,扫描条形码,商品名称等来实现精确或模糊的商品扫描录入.该扫描录入方法可以充分保证各种电脑操作水平层次的人员均能准确快速地进行商品扫描录入. 收银...

    生产线设计方案.docx

    计算机可以显示扫描的条形码同时把条形码和测量数据同步到系统临时数据库,并且反馈系统计算机的工作状态,当到达最后一道工序进行打标时系统根据产品要求自动产生一个唯一的产品序列号,系统用产品序列号代替产品...

    采用sql编写的小型超市零售管理系统设计说明书

    1. 商品录入:根据超巿业务特点制定相关功能,可以通过输入唯一编号、扫描条形码、商品名称等来实现精确或模糊的商品扫描录入。该扫描录入方法可以充分保证各种电脑操作水平层次的人员均能准确快速地进行商品扫描...

    MF00147-ASP.NET手机点餐收银系统源码.zip

    9、 餐桌二维码:根据当前餐桌数量生成每一张餐桌唯一的二维码(二维码可以贴在餐    桌上,用餐人员可以自行扫描点餐,订单同一汇总到厨房接单为止) 10、就餐人员中途可以加菜,就餐完毕可以再一次扫描餐桌...

    guideseq:GUIDE-seq分析的分析管道。 有关新闻,请参阅

    guideseq:GUIDE-Seq分析软件包 请注意,此软件包的更新版本(包括Python 3支持)由Tsai Lab维护: : guideseq软件包为GUIDE-Seq数据实现... 读段被多路分解为特定于样品的FASTQ,并使用唯一的分子索引(UMI)条形码

    图书馆管理信息系统的数据库设计.doc

    (2)书籍编号按照一定规则, "ISBN号"+三位流水号"XXX" (3)每种借阅类型和读者类型,其借阅册数、借期、是否允许续借、续借期限等不 同。不同借阅种类和借阅对象的借阅要求规定限制。例如,本专科生可以借中文...

    超市管理系统数据库设计.doc

    定义 (1)商品条形码:每种商品具有唯一的条形码,对于某些价格一样的商品,可以使用自 定义条形码。 (2)交易清单:包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、 交易的时间、负责本次收银...

    超市管理系统数据库设计(1).doc

    定义 (1)商品条形码:每种商品具有唯一的条形码,对于某些价格一样的商品,可以使用自 定义条形码。 (2)交易清单:包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、 交易的时间、负责本次收银...

    超市管理系统数据库设计(3).doc

    定义 (1)商品条形码:每种商品具有唯一的条形码,对于某些价格一样的商品,可以使用自 定义条形码。 (2)交易清单:包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、 交易的时间、负责本次收银...

Global site tag (gtag.js) - Google Analytics