Java生成递增流水号:编号+时间+流水号

Java编写一个流水号,要求格式【编号】【时间】【流水号】。编号和时间比较简单,直接获取拼接就可以,流水号使用类型转换来实现。

  1. 获取车间编号,变量为workCenter(例子A1、B2、C3);

  1. 使用simpleDateFormat获取时间格式:20230112。变量为dateNo;

  1. 初始化一个流水号markNo1,使用join拼接:A120230112001;

  1. 使用编号与时间拼接,用于模糊查询的参数,DESC取到最新一条数据(这里是第一条);

  1. 判断初始流水号是否存在数据库,如果不存在,则返回初始化流水号;

  1. 若存在,取最新一条数据,截取后3位字符串,转换为数字number1;

  1. 在number1的基础上+1,得到number2,再将number2转换成格式化字符串“00X”;

  1. 最后将字符串与编号、时间拼接一起,返回。OK!


            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;

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值