`
zdk8105
  • 浏览: 37727 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

java 生成单号

    博客分类:
  • java
 
阅读更多

 

import java.text.DecimalFormat;

import java.text.Format;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.GregorianCalendar;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

 

import wt.cache.CacheManager;

 

public class NumberProduce {

private static Map<String, String> map = new HashMap<String, String>();

private static String STATNUM = "0";

 

private String getLastSixNum(int seq, int length) {

String formatStr = "";

for(int i=0; i<length; i++){

formatStr+= "0";

}

DecimalFormat numformat = new DecimalFormat(formatStr);

String rs = numformat.format(seq+1);

return rs;

}

 

private static void cleanMap(Map<String, String> map) {

if(map == null){

return ;

}

//当前时间

GregorianCalendar nowDate=new GregorianCalendar(); 

nowDate.setTime(new Date());

nowDate.add(Calendar.DATE, -3);

 

SimpleDateFormat dateformat = new SimpleDateFormat("yyyyMMdd");

GregorianCalendar keyDate=new GregorianCalendar(); 

try {

Iterator<String> it = map.keySet().iterator();  

       while(it.hasNext()){  

   String key = it.next();

//集合中的时间时间

String keyDateStr = key.substring(key.indexOf("_")+1);

Date tempKeyDate = dateformat.parse(keyDateStr);

keyDate.setTime(tempKeyDate);

 

System.out.println(key+":"+keyDate.before(nowDate));

if(keyDate.before(nowDate)){

it.remove();

}

}

} catch (ParseException e) {

e.printStackTrace();

System.out.println("清除今天之前的缓存序列数据失败");

}

 

}

 

public synchronized String getNum(String prefix,int length) {

//CacheManager ss = new CacheManager();

Format dateformat = new SimpleDateFormat("yyyyMMdd");

String ymd = dateformat.format(new Date());

String key = prefix+"_"+ymd;

String lastNumStr = map.get(key)==null ?STATNUM:map.get(key);

int lastNum = Integer.parseInt(lastNumStr);

map.put(key, getLastSixNum(lastNum,length));

 

return prefix + ymd + map.get(key);

}

 

public static void main(String[] args) {

NumberProduce t = new NumberProduce();

String prefix = "BOM";

int length = 4;

//System.out.println(t.getNum(prefix,length));

//System.out.println(t.getNum(prefix,length));

//System.out.println(t.getNum(prefix,length));

 

Map<String, String> map1 = new HashMap<String, String>();

map1.put("BOM_20150606", "BOM201506060001");

map1.put("BOM_20150605", "BOM201506060001");

map1.put("BOM_20150604", "BOM201506060001");

map1.put("BOM_20150603", "BOM201506060001");

map1.put("BOM_20150602", "BOM201506060001");

map1.put("BOM_20150601", "BOM201506060001");

cleanMap(map1);

 

System.out.println(map1);

 

}

}

分享到:
评论

相关推荐

    顺丰单号、EMS 单号算法(规则 规律)Java版

    顺丰、EMS 单号算法 delphi 写的,里面部分变量可能是多余的,主要是当时定义为以后用的,可以删掉或整合。两个方法,直接调用即可,第一个参数为开头第一个快递单单号,第二个参数为要生成的个数。 本程序 2010-09...

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

    在Java编程中,生成订单号是一项常见的任务,特别是在电商或者交易系统中,每个订单都需要一个唯一的标识符。本文将详细讲解如何使用Java按照日期加流水号的方式生成订单号,并确保其递增性。 首先,订单号通常由...

    Java生成物流打印单(条形码,二维码)

    在Java编程环境中,生成物流打印单是常见的任务之一,尤其对于电商或物流公司而言。这个过程通常涉及到条形码和二维码的生成,以便于快速准确地识别包裹信息。在这个项目中,开发者利用了Java的Graphics2D图形库以及...

    Java生成订单号的工具类

    该工具类是Java编写下载即可使用,该工具类中有生成各种长度的订单号,有英文数字混合的,有数字的

    快递单号生成

    快递单号生成器,可以自动生成快递单号,但只能生成10个,其他的需要用钱买

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

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

    java专门生产订单id

    java专门生产订单id,不重复,线程安全,经过项目实践

    java开发利用日期+xxx生成形如20131210001的流水号

    java开发用于给上传文件附上ID,此ID号为日期+xxx,生成形如20131210001 第二天自动从20131211001开发不会重复。有问题可联系我。

    顺丰单号、EMS 单号算法(规则 规律)

    3. **循环生成单号**: - 读取`fri`中的每个数字字符并转换为整型,分别存储在`num3`至`num0`中。 - 使用这些数字进行校验码的计算: ```delphi mid := 8 * num3 + 6 * num4 + 4 * num5 + 2 * num6 + 3 * num7 +...

    订单号生成工具类

    7. **工具类的设计**:在Java等编程语言中,订单号生成工具类通常会设计为线程安全,提供静态方法供调用,以确保在多线程环境下的正确性。同时,可以考虑提供配置项,允许用户自定义订单号的格式和生成策略。 8. **...

    订单号生成器实现类(会根据自定义规则动态的生成)

    订单号生成器实现类(会根据自定义规则动态的生成)

    Java生成支付宝支付参数

    Java后台需要解析这个响应,提取出预订单号(prepay_id),然后将这个预订单号传递给前端,前端可以进一步调起支付宝客户端进行支付。 6. **支付通知处理**: 在用户完成支付后,支付宝会发送一个通知到我们指定的回...

    EMS单号推算

    首先,理解EMS单号的生成规则是推算的基础。这些规则可能包括固定前缀、日期编码、流水号等元素。例如,一个常见的EMS单号可能是“EJ123456789CN”,其中“EJ”是EMS的标识,“123456789”是流水号,而“CN”代表...

    单号生成器

    6. **技术实现**:单号生成器可能基于各种编程语言实现,如Python、Java或JavaScript。它们可能包含随机数生成算法,以及对特定快递公司编码规则的理解。此外,一些高级的生成器可能还会包含数据库功能,以便记录...

    java自动生成编号的实现(格式:yyMM+四位流水号)

    java自动生成编号的实现(格式:yyMM+四位流水号) ...java自动生成编号的实现可以应用于各种场景,如订单编号、用户编号、物流单号等。通过使用java语言和数据库查询,可以实现自动生成编号的功能。

    海明快递单号生成器版本8.2.5

    摘要:Java源码,网络相关,快递单号生成器 1. 非固数式快递单号生成 器,可生成当日快递单号,且不需要提供固数,软件可以锁定全国任何一个发货地。  2. 软件独创智能扫描能智能分析单号范围进行扫描。  3. 软件...

    高并发订单号生成工具类

    高并发订单号生成工具类,TWITTER编码方式可BAIDU

    百世快递生成条形码,带打印功能

    "加载数据"部分则涉及到数据库操作,系统可能连接到一个包含快递信息的数据库,如快递单号、发件人、收件人信息等。这些数据被用来生成唯一的条形码,条形码编码通常遵循一定的标准,如EAN、UPC或Code128等。C#的ADO...

    订单号随机生成器

    在Java中,`java.util.Random`类可用于生成随机数,而`java.util.UUID`类则能生成UUID。这些随机数经过一定的格式化处理,如添加前缀或后缀,就能形成符合业务需求的订单号。 考虑到订单号还需要具有一定的可读性,...

Global site tag (gtag.js) - Google Analytics