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 单号算法 delphi 写的,里面部分变量可能是多余的,主要是当时定义为以后用的,可以删掉或整合。两个方法,直接调用即可,第一个参数为开头第一个快递单单号,第二个参数为要生成的个数。 本程序 2010-09...
在Java编程中,生成订单号是一项常见的任务,特别是在电商或者交易系统中,每个订单都需要一个唯一的标识符。本文将详细讲解如何使用Java按照日期加流水号的方式生成订单号,并确保其递增性。 首先,订单号通常由...
在Java编程环境中,生成物流打印单是常见的任务之一,尤其对于电商或物流公司而言。这个过程通常涉及到条形码和二维码的生成,以便于快速准确地识别包裹信息。在这个项目中,开发者利用了Java的Graphics2D图形库以及...
该工具类是Java编写下载即可使用,该工具类中有生成各种长度的订单号,有英文数字混合的,有数字的
快递单号生成器,可以自动生成快递单号,但只能生成10个,其他的需要用钱买
Java Web 在高并发和分布式下实现订单号生成唯一的解决方案 在高并发和分布式下,实现订单号生成唯一是 Java Web 开发中的一大挑战。为了解决这个问题,我们需要从多方面考虑,包括时间戳、随机数、线程ID、进程ID...
java专门生产订单id,不重复,线程安全,经过项目实践
java开发用于给上传文件附上ID,此ID号为日期+xxx,生成形如20131210001 第二天自动从20131211001开发不会重复。有问题可联系我。
3. **循环生成单号**: - 读取`fri`中的每个数字字符并转换为整型,分别存储在`num3`至`num0`中。 - 使用这些数字进行校验码的计算: ```delphi mid := 8 * num3 + 6 * num4 + 4 * num5 + 2 * num6 + 3 * num7 +...
7. **工具类的设计**:在Java等编程语言中,订单号生成工具类通常会设计为线程安全,提供静态方法供调用,以确保在多线程环境下的正确性。同时,可以考虑提供配置项,允许用户自定义订单号的格式和生成策略。 8. **...
订单号生成器实现类(会根据自定义规则动态的生成)
Java后台需要解析这个响应,提取出预订单号(prepay_id),然后将这个预订单号传递给前端,前端可以进一步调起支付宝客户端进行支付。 6. **支付通知处理**: 在用户完成支付后,支付宝会发送一个通知到我们指定的回...
首先,理解EMS单号的生成规则是推算的基础。这些规则可能包括固定前缀、日期编码、流水号等元素。例如,一个常见的EMS单号可能是“EJ123456789CN”,其中“EJ”是EMS的标识,“123456789”是流水号,而“CN”代表...
6. **技术实现**:单号生成器可能基于各种编程语言实现,如Python、Java或JavaScript。它们可能包含随机数生成算法,以及对特定快递公司编码规则的理解。此外,一些高级的生成器可能还会包含数据库功能,以便记录...
java自动生成编号的实现(格式:yyMM+四位流水号) ...java自动生成编号的实现可以应用于各种场景,如订单编号、用户编号、物流单号等。通过使用java语言和数据库查询,可以实现自动生成编号的功能。
摘要:Java源码,网络相关,快递单号生成器 1. 非固数式快递单号生成 器,可生成当日快递单号,且不需要提供固数,软件可以锁定全国任何一个发货地。 2. 软件独创智能扫描能智能分析单号范围进行扫描。 3. 软件...
高并发订单号生成工具类,TWITTER编码方式可BAIDU
"加载数据"部分则涉及到数据库操作,系统可能连接到一个包含快递信息的数据库,如快递单号、发件人、收件人信息等。这些数据被用来生成唯一的条形码,条形码编码通常遵循一定的标准,如EAN、UPC或Code128等。C#的ADO...
在Java中,`java.util.Random`类可用于生成随机数,而`java.util.UUID`类则能生成UUID。这些随机数经过一定的格式化处理,如添加前缀或后缀,就能形成符合业务需求的订单号。 考虑到订单号还需要具有一定的可读性,...