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

生成入库单号,例如: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;
    }
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐