规则:大分类+小分类+日期+数据落地顺序
表结构:sys_code表
guid: 主键
code: 序列号(重点)
name: 日期
code_type: 序列类型(默认:serialno)
//处置单号
SysCode sysCode = sysCodeMapper.selectByCodeType("SERIALNO"); //从表里查出数据
int serial = Integer.parseInt(sysCode.getCode());
if(!DateUtil.getCurrentDate().equals(sysCode.getName())) {
serial = 1;
sysCode.setName(DateUtil.getCurrentDate()); //更新为落地当天的日期
}
sysCode.setCode(String.valueOf(serial + listDown.size())); //更新表里的序列号
sysCodeMapper.updateSysCode(sysCode);
// 循环落地数据 (listDown)
for(int i=0;i<listDown.size();i++){
String serialNo = String.format("%04d", serial++);
monitoring.setNo(ManageNoUtil.generate(ModuleEnum.REALTIME_WARN,ClassifyType.WARN, serialNo)+1);
}
工具类(DateUtil)
public static String getCurrentDate(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
return sdf.format(Calendar.getInstance().getTime());
}
工具类(ManageNoUtil)
/**
* 生成处置单号方法
* @param module 模块
* @param type 类型
* @param serialNo 序列
* @return 处置单号
*/
public static String generate(ModuleEnum module,String type,String serialNo) {
String date = DateUtil.getCurrentDate();
String result = module.getCode() + type + date + serialNo;
return result;
}
/**
* 判断当前序列号应为?
* @param date
* @param currentNo
* @return
*/
public static String nextNo(String date, int currentNo) {
if(DateUtil.getCurrentDate().equals(date)) {
return String.format("%03d", currentNo + 1);
}
return String.format("%03d", 1);
}
枚举(public enum ModuleEnum {
PRICE("01"),
CLASSIFY("02"),
SOURCE_AREA("03"),
MANUAL_ENTRY("04"),
REALTIME_WARN("05"),
;
private String code;
private ModuleEnum(String code) {
this.code = code;
}
public String getCode() {
return code;
}
})
落地出来的数据是:
0504 201907081053303