Java编写一个流水号,要求格式【编号】【时间】【流水号】。编号和时间比较简单,直接获取拼接就可以,流水号使用类型转换来实现。
获取车间编号,变量为workCenter(例子A1、B2、C3);
使用simpleDateFormat获取时间格式:20230112。变量为dateNo;
初始化一个流水号markNo1,使用join拼接:A120230112001;
使用编号与时间拼接,用于模糊查询的参数,DESC取到最新一条数据(这里是第一条);
判断初始流水号是否存在数据库,如果不存在,则返回初始化流水号;
若存在,取最新一条数据,截取后3位字符串,转换为数字number1;
在number1的基础上+1,得到number2,再将number2转换成格式化字符串“00X”;
最后将字符串与编号、时间拼接一起,返回。OK!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 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>> maps = this .getJdbcTemplate().queryForList(markSQL,workDate+ "%" ); //判断模糊查找的隔离编号是否存在 if (maps.size()> 0 ){ Map 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;</map> |
总结
到此这篇关于Java生成递增流水号(编号+时间+流水号)的文章就介绍到这了,更多相关Java生成递增流水号内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!