java生成条码号的源码

在实际业务中会有很多通过和流水号拼接,形成一个用户唯一id的标识。由于本次用的是和oracle数据库结合,所以会用到oracle的序列,为了演示方便,所以把动态得到的序列号写成了静态的了。具体源码如下:

package com.evan.string;

import java.text.SimpleDateFormat;

public class BarcodeGenerateTest {

    public static void main(String[] args) {
        String dept = "0001";//分院id号
        int max = 202;//当前序列的下一个序列
        SimpleDateFormat sd = new SimpleDateFormat("yyMMdd");

        String day = sd.format(new java.util.Date());
        String spk = String.format("%05d", max);

        //条码号生成规则: 分院id号+999+当前日期+当前序列的下一个序列
        String barcode = dept + "999" + day + spk;

        System.out.println(barcode);//000199915050700202

        /**前面补零 将条码号强制补齐为十八位,在Excel导入时,可能会遇到,因为excel条码显示为000199915050700202
        但是传递到后台后就变成199915050700202,三个零自动就没了。可以用强制补零来解决。*/
        String sglCheckId = "123456789";
        String result = String.format("%018d", Integer.valueOf(sglCheckId));
        System.out.println(result);
    }

}

但是这样做可能会有一个问题,就是在同一天当序列增长到最大值时,序列会从最小值重新开始,这样会导致条码重复。

解决办法目前可能有两个个:

1、要求业务部门,当前最多可导入10万条数据 。(目前真是这样做的)

2、将条码号的生成规则改变,增加两个数量级。

时间: 2024-11-06 13:40:40

java生成条码号的源码的相关文章

死磕 java同步系列之ReentrantReadWriteLock源码解析

问题 (1)读写锁是什么? (2)读写锁具有哪些特性? (3)ReentrantReadWriteLock是怎么实现读写锁的? (4)如何使用ReentrantReadWriteLock实现高效安全的TreeMap? 简介 读写锁是一种特殊的锁,它把对共享资源的访问分为读访问和写访问,多个线程可以同时对共享资源进行读访问,但是同一时间只能有一个线程对共享资源进行写访问,使用读写锁可以极大地提高并发量. 特性 读写锁具有以下特性: 是否互斥 读 写 读 否 是 写 是 是 可以看到,读写锁除了读读

最新dedecms网页游戏开服表发号网站源码模板

模板介绍 最新dedecms网页游戏开服表发号网站源码模板,让你更精确的把握游戏开服时间和战略技巧. 这套网页游戏模板是织梦二次开发后的一套网页源码,后台也是经过二次开发后,适合游戏网站的一些参数说明及添加信息. 模板文件: 404.htm            大气的404页面 article_fahao.htm  发号模板详细页 article_time.htm   发号时间详细页 footer_time.htm    发号时间底部模板 head_time.htm      发号时间头部模板

北京赛车 PK10 微信公众号程序源码下载

北京赛车  PK10 微信公众号程序源码下载:http://www.ttkmwl.com/thread-639-1-1.html 北京赛车  PK10  游戏玩的人越来越多,  目前  PK10  "  的  13  个玩法为:  猜冠军.  猜冠亚军.  猜前三名.猜前四名.猜前五名.猜前六名.猜前七名.猜前八名.猜前九名.猜前十名以  及精确前二.精确前三.精确前四.所以玩  PK10  赚钱必不可少的需要一些辅助软件来提高  中奖率,下面来介绍一款智能生成  PK10  计划给大家使用.

查看JDK自动生成的代理类源码

直接运行下面的代码,在D盘就可以看到生成的源码类$GameProxy.class import sun.misc.ProxyGenerator; import java.io.File; import java.io.FileOutputStream; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; /** * 查看JDK自动生

死磕 java同步系列之Semaphore源码解析

问题 (1)Semaphore是什么? (2)Semaphore具有哪些特性? (3)Semaphore通常使用在什么场景中? (4)Semaphore的许可次数是否可以动态增减? (5)Semaphore如何实现限流? 简介 Semaphore,信号量,它保存了一系列的许可(permits),每次调用acquire()都将消耗一个许可,每次调用release()都将归还一个许可. 特性 Semaphore通常用于限制同一时间对共享资源的访问次数上,也就是常说的限流. 下面我们一起来学习Java

死磕 java同步系列之CountDownLatch源码解析

??欢迎关注我的公众号"彤哥读源码",查看更多源码系列文章, 与彤哥一起畅游源码的海洋. (手机横屏看源码更方便) 问题 (1)CountDownLatch是什么? (2)CountDownLatch具有哪些特性? (3)CountDownLatch通常运用在什么场景中? (4)CountDownLatch的初始次数是否可以调整? 简介 CountDownLatch,可以翻译为倒计时器,但是似乎不太准确,它的含义是允许一个或多个线程等待其它线程的操作执行完毕后再执行后续的操作. Cou

死磕 java同步系列之StampedLock源码解析

问题 (1)StampedLock是什么? (2)StampedLock具有什么特性? (3)StampedLock是否支持可重入? (4)StampedLock与ReentrantReadWriteLock的对比? 简介 StampedLock是java8中新增的类,它是一个更加高效的读写锁的实现,而且它不是基于AQS来实现的,它的内部自成一片逻辑,让我们一起来学习吧. StampedLock具有三种模式:写模式.读模式.乐观读模式. ReentrantReadWriteLock中的读和写都是

死磕 java同步系列之CyclicBarrier源码解析——有图有真相

问题 (1)CyclicBarrier是什么? (2)CyclicBarrier具有什么特性? (3)CyclicBarrier与CountDownLatch的对比? 简介 CyclicBarrier,回环栅栏,它会阻塞一组线程直到这些线程同时达到某个条件才继续执行.它与CountDownLatch很类似,但又不同,CountDownLatch需要调用countDown()方法触发事件,而CyclicBarrier不需要,它就像一个栅栏一样,当一组线程都到达了栅栏处才继续往下走. 使用方法 pu

死磕 java同步系列之Phaser源码解析

问题 (1)Phaser是什么? (2)Phaser具有哪些特性? (3)Phaser相对于CyclicBarrier和CountDownLatch的优势? 简介 Phaser,翻译为阶段,它适用于这样一种场景,一个大任务可以分为多个阶段完成,且每个阶段的任务可以多个线程并发执行,但是必须上一个阶段的任务都完成了才可以执行下一个阶段的任务. 这种场景虽然使用CyclicBarrier或者CountryDownLatch也可以实现,但是要复杂的多.首先,具体需要多少个阶段是可能会变的,其次,每个阶