之前需求一直让列表里展示编码,我想的是编码展示有什么意义,后台挂关系也是随机数id,不可能展示出来,后台问了下旁边高级同事,这个需求很正常,然后就得到大神的点拨,自己再琢磨了下,写了下面的工具;
需求:"***"+日期+4位顺序码
这里我先说一下我生成唯一编码的思路:
1、先用工具生成"***"+日期字符串
2、从数据库中模糊查到包含"***"+日期字符串的所有编码字段,是一个数组
3、对数组进行排序,拿到最大值的那个编码
4、找到编码中顺序码的第一个非零数的索引
5、截取到顺序码的数字,给其加1,加1操作在工具类中体现
6、最后再拼接生成编码
工具类:
package com.sunyard.ec.promotion.util;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class CodeCreateTool {
/*
* 时间格式20190429
*/
public static final String LONG_FORMATTER = "yyyyMMdd";
/*
* 预备补位0
*/
public static final String CODE_BIT = "0000000000000000";
/*
* 编码前缀
*/
private String prefix;
/*
* 顺序号即是当前日期下的第几条数据
*/
private Integer sequence;
/*
* 顺序码位数
*/
private Integer sequenceBit;
public CodeCreateTool(String prefix)