java生成仓库入库单号(前缀+日期+6位流水)

在这里插入图片描述
在这里插入图片描述

生成入库单号,例如:R20220211112442000001,其中R代表前缀,20220211112442代表年月日时分秒,000001表示流水号,自动递增
在这里插入图片描述
实现:需要一张自动递增流水表,传入入库表名,查询到单号比较是否是当前日期,是SerialCount+1,不是设置为1,
拼接前缀+日期时间+6位流水
核心代码:

/**
     * 传入表名,返回生成单号
     * @param tableName 表名
     * @return
     */
    @Override
    public String GetSerialnum(String tableName) {

        Map<String,Object> map=new HashMap<String, Object>();

        //定义需要返回的流水号
        String result = null;
        Long serialCount;

        //1.通过tableName表名查询唯一对象
        Serialnum serialnum = serialnumMapper.selectByTname(tableName);
        //2. 获取对象的前缀
        String prefix = serialnum.getPrefix();
        //3. 获取对象的默认单号
        String serialNumber = serialnum.getSerialNumber();
        //4. 通过当前系统时间和默认单号时间对比
        //4.1 获取当前时间 格式:yyyyMMdd
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String nowDate = sdf.format(new Date());
        //4.2 获取单号时间
        String oldDate = serialNumber.substring(1, 9);
        //4.3 日期相等,说明今天已经生成订单号
        if(nowDate.equals(oldDate)){
            //拿到自增id,拼接生成单号
            serialCount = serialnum.getSerialCount();
            serialCount=serialCount+1L;
            //返回结果,前缀+时间日期+6位流水
        }else{
            //4.4日期不相等
             serialCount=1L;
        }
        result=prefix+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+String.format("%06d",serialCount);
        return result;
    }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值