在编写代码时,常用到流水线编号,大家使用的时候结合自己的数据库的流水线编号来进行查询。
流水编号产生过程
- 获取时间编号,作为流水线的前一部分。
- 查询数据库中当前 时间编号,如果有就拿取当前时间编号的后3位,进行加一,然后与当前时间编号拼接,返回回去。如果没有就是当前时间编号 加上001,返回回去。
- 如果有其他需要,比如不同部门的流水线可能一致,但是部门ID不同,那就查询时要加入这个条件。
/**
* 生成流水线编号 格式:年月日+001
* 不同的学校,作文批改批号可以重复
* 查表的类型
* @return String
*/
public String codeNumber(){
//获取时间编号
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String dateNo = sdf.format(new Date()); // 格式化日期 date: 20230613
//下面这句话就是保证数据库中的流水线编号顺序的
// 对这个年月日进行查询,如果有就读取最后一条,拿出最后三位。如果没有就放 当前的年月日+001,放入数据库
EssayCorrection correction = new EssayCorrection();
correction.setCorrectBatch(dateNo);
// 获取当前用户登录账号,根据账号找到所属学校
EssayTeacher teacher = new EssayTeacher();
teacher.setTeacherPhone(SecurityUtils.getLoginUser().getUser().getUserName());
EssayTeacher teacherPhone = essayTeacherService.selectTeacherByPhone(teacher);
// 加入学校ID
correction.setSchoolId(teacherPhone.getSchoolId());
List<EssayCorrection> essayCorrections = essayCorrectionService.selectEssayCorrectBatchNotUser(correction);
if (essayCorrections.size()>0){
String endLength = String.valueOf(essayCorrections.get(0).getCorrectBatch());
String dateNoFrong = endLength.substring(0,8);
String dateNoRear = endLength.substring(8);
// 最后三位转数字
int dataNoRearMiddle = Integer.parseInt(dateNoRear);
if (dataNoRearMiddle>999){
throw new RuntimeException("超过今日批改次数");
}
dataNoRearMiddle+=1;
// 最后三位不够加0
String dateNoRearMiddle1 = null;
if (dataNoRearMiddle>0 && dataNoRearMiddle<=9){
dateNoRearMiddle1 = "00"+dataNoRearMiddle;
}
if (dataNoRearMiddle>=10 && dataNoRearMiddle<=99){
dateNoRearMiddle1 = "0"+dataNoRearMiddle;
}
if (dataNoRearMiddle>=100 && dataNoRearMiddle <=999){
dateNoRearMiddle1 = String.valueOf(dataNoRearMiddle);
}
// 再转回去
String dateNoRearEnd = dateNoRearMiddle1;
// 最后的拼接
dateNoFrong = dateNoFrong+dateNoRearEnd;
return dateNoFrong;
}else {
dateNo = dateNo+"001";
}
return dateNo;
}
成果展示: