Java编写一个流水号,要求格式【编号】【时间】【流水号】。编号和时间比较简单,直接获取拼接就可以,流水号使用类型转换来实现。
获取车间编号,变量为workCenter(例子A1、B2、C3);
使用simpleDateFormat获取时间格式:20230112。变量为dateNo;
初始化一个流水号markNo1,使用join拼接:A120230112001;
使用编号与时间拼接,用于模糊查询的参数,DESC取到最新一条数据(这里是第一条);
判断初始流水号是否存在数据库,如果不存在,则返回初始化流水号;
若存在,取最新一条数据,截取后3位字符串,转换为数字number1;
在number1的基础上+1,得到number2,再将number2转换成格式化字符串“00X”;文章来源:https://www.toymoban.com/news/detail-528490.html
最后将字符串与编号、时间拼接一起,返回。OK!文章来源地址https://www.toymoban.com/news/detail-528490.html
JSONObject jsonObject = new JSONObject();
//获取车间编号
String workCenter = workCenterNo.substring(0,2);
//获取时间编号
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String dateNo = sdf.format(new Date()); // 格式化日期 date: 20230112
//初始化隔离编号
String markNo1 = String.join("",workCenter,dateNo,"001");
//模糊查找用
String workDate = String.join("",workCenter,dateNo);
//模糊查询隔离编号
String markSQL = "SELECT MARK_NO FROM BP_MARKING WHERE MARK_NO LIKE ? order by CREATE_DATE DESC";
List<Map<String, Object>> maps = this.getJdbcTemplate().queryForList(markSQL,workDate+"%");
//判断模糊查找的隔离编号是否存在
if (maps.size()>0){
Map<String, Object> m=maps.get(0);
String mark1=m.get("MARK_NO").toString();
//取出mark1的后面三位数
String str1 = mark1.substring(mark1.length()-3);
int number1 = Integer.valueOf(str1).intValue();
if (number1>999)throw new Exception("流水号超过规定!");
int number2 = number1+1;
//实例化format,格式为“000”
DecimalFormat formatCount = new DecimalFormat("000");
//一般都是将累加的数字当做一些单号的一部分,format要求string
String str2 = formatCount.format(number2);
//再用number2拼接workDate
String markNo2 =String.join("",workDate,str2);
jsonObject.put("markNo",markNo2);
array.add(jsonObject);
}else if (maps.size()==0){
//如果maps为零,取markNo1
jsonObject.put("markNo",markNo1);
array.add(jsonObject);
}
return array;
到了这里,关于Java生成递增流水号:编号+时间+流水号的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!