JAVA自动生成前缀加日期的编码

1.生成类似与220114这样的日期数字

`String yearMonth = DateUtils.parseDateToStr("yyMMdd", DateUtils.getNowDate());

2.new一个map

Map map = new HashMap();

3.new一个String拼接字符串和日期数字

String pre = "AC" + yearMonth;

4.将per塞到map里

map.put("pre", pre);

5.再new一个String利用模糊查找数据库里最大的编码

String maxCode = findMaxCode(map);

findMaxCode方法
  @Override
    public String findMaxCode(Map map) {
        return jijianAccountMapper.findMaxCode(map);
    }

SQL语句
 select max('编码') as max_code from '表名'
         where '编码' like  concat(#{pre}, '%')`

6.返回GenerateCodeUtil类的create方法

return GenerateCodeUtil.create(pre, maxCode, pre.length(), 3);

7.看到这个方法有四个参数分别是前缀,最大编码,前缀长度,编码中最后放几位顺序码,我们进入GenerateCodeUtil类

 public static String create(String pre, String maxCode, int preLength, Integer sequenceBit) {
        //预备补位0
        String codeBit = "0000000000000000";
        //要生成的编码
        String nextCode = "";
        if (!EmptyUtils.isEmpty(maxCode)) {
            nextCode = maxCode.substring(0, preLength);
            Integer codeNum = Integer.valueOf(maxCode.substring(pre.length()));
            Integer zeroNum = sequenceBit > String.valueOf(codeNum + 1).length() ? sequenceBit - (String.valueOf(codeNum + 1).length()) : 0;
            nextCode += (zeroNum > 0 ? (codeBit.substring(0, zeroNum) + (codeNum + 1)) : (codeNum + 1));
        } else {
            nextCode = pre + codeBit.substring(0, sequenceBit - 1) + "1";
        }
        return nextCode;
    }

总结,这就是完成步骤和方法

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值