`
qq1988627
  • 浏览: 107076 次
  • 性别: 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();
		}
	}
	
}

 

分享到:
评论

相关推荐

    JAVA版本的生成唯一编号

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

    C#生成流水号小代码

    该代码通过结合当前日期与递增的序列号来生成唯一的流水号。 #### 二、关键代码分析 ##### 1. **命名空间引入** ```csharp using System; using System.Collections.Generic; using System.Text; using ...

    流水号生成软件

    流水号生成软件是一种用于自动化创建连续、唯一标识序列号或编号的工具,广泛应用于各种数据库管理、订单处理、产品标识等场景。这类软件的核心功能是确保每个生成的流水号都是独一无二的,避免重复,以便有效地追踪...

    自定義編碼生成:編碼類型+年月日+流水碼

    本文将深入探讨如何根据"自定义编码生成:编码类型+年月日+流水码"这一主题,利用C#编程语言和MySQL数据库来设计和实现这样一个系统。 首先,自定义编码通常是为了满足特定业务场景的需求,例如订单号、发票号等。...

    JAVA生成订单号(日期+流水号)

    ### JAVA生成订单号(日期+流水号)的知识点解析 #### 一、概述 在现代电商及金融系统中,订单号作为唯一标识符扮演着极其重要的角色。它不仅需要具备唯一性,还要易于管理和追踪。本文将详细介绍一个通过Java语言...

    abap产生流水号的两种方法

    在SAP系统中,流水号是非常重要的一种数据类型,用于标识唯一的记录。然而,SAP系统中并没有提供序列号的功能,但是我们可以使用范围对象或数据库方法来实现流水号的生成。 方法一:使用范围对象 使用范围对象可以...

    二维码生成和业务流水号生成demo

    一种常见方法是结合当前时间戳(精确到毫秒或微秒)和随机数生成器,确保每个流水号都是唯一的。例如,可以使用Python的`uuid`库生成UUID(Universally Unique Identifier),或者自定义一个函数,将时间戳与随机数...

    【流水生成器】 随机生成上千个号码.zip

    【流水生成器】是一种在计算机编程中常见的工具,主要用于生成一系列连续或随机的数字序列,这些序列常用于测试、数据分析、模拟或者作为唯一标识符。在这个压缩包中,"【流水生成器】 随机生成上千个号码.zip"包含...

    .NET 流水号的生成源代码(附:数据库)

    .NET框架在开发过程中,经常会遇到需要生成唯一标识或者流水号的需求,这在诸如订单系统、日志记录或者用户账户管理等场景中尤为重要。本资源提供了一种.NET平台下生成流水号的源代码实现,同时也结合了SQL Server...

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

    在PHP编程中,生成唯一编号是一项常见的需求,特别是在管理和跟踪大量数据时。在这个场景中,36进制的编号系统可以有效地提供大量的不重复编号,同时保持编号长度相对较小。36进制系统使用0-9和A-Z这36个字符来表示...

    利用时间生成8位不重复数

    这使得它成为生成唯一ID的理想选择。当需要生成8位不重复的数字时,可以将时间戳转换为其他进制,例如十六进制,这样可以得到更短但依然唯一的字符串。 如描述所示,一个具体的操作步骤如下: 1. 获取当前系统时间...

    VS中流水号自动生成

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

    用JS实现根据当前时间随机生成流水号或者订单号

    在当前互联网环境下,为了确保每一笔交易都有一个唯一的标识,生成流水号或订单号是必不可少的环节。流水号与订单号的区别主要在于用途不同,流水号一般用于系统内部管理,而订单号是面向客户的,便于用户查询和确认...

    java web在高并发和分布式下实现订单号生成唯一的解决方案

    Java Web 在高并发和分布式下实现订单号生成唯一的解决方案 在高并发和分布式下,实现订单号生成唯一是 Java Web 开发中的一大挑战。为了解决这个问题,我们需要从多方面考虑,包括时间戳、随机数、线程ID、进程ID...

    手机IMEI串码批量生成工具

    手机串码批量生成工具(IMEI&MEID;)》是由恒佑科技研发的一款专业批量生成手机IMEI和MEID串码数据的工具,功能强大、操作简单。用户只需输入前14位起始号,软件将自动计算最后一位校验码。用户可随意设置流水增减量...

    冠字号码解析及生成java源码

    流水号则需要确保全局唯一性,可以使用`java.util.Random`或`java.util.UUID`类生成随机数字或唯一标识符。将这两部分组合起来,就形成了完整的冠字号码。 在编写Java源码时,应考虑以下几点: 1. 异常处理:文件I...

    Produced-four-serial-for-java.rar_four_java 生成流水_java四位流水号

    在Java编程中,生成流水号是一项常见的需求,特别是在数据库记录、订单系统或者任何需要唯一标识符的场景。流水号通常是一串连续的数字,用于表示数据的顺序或时间序列。在给定的“Produced-four-serial-for-java....

    PHP生成唯一会员卡号

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

    淘宝快递单号生成器2.0

    生成器会根据设定的规则生成不同长度和结构的流水号。 4. **校验码**:为了确保单号的正确性,快递单号通常会包含一个校验位,通过某种算法(如模10除法)计算得出。生成器会根据选定的校验算法生成正确的校验位。 ...

    PHP实现生成唯一会员卡号

    在实际应用中,这样的技术可以广泛应用于各种需要快速、高效生成唯一标识的场合,例如网络游戏中的账号系统、在线教育的学员识别码、电商平台的订单流水号等。此外,由于会员卡号的生成是在不依赖数据库查询的情况下...

Global site tag (gtag.js) - Google Analytics