zoukankan      html  css  js  c++  java
  • 自动生成批次号,要求:P+四位台数+年月+3位当月驻地增加序列号

    规则:P+四位台数+年月+3位当月驻地增加序列号

    基本原理:

    P+四位台数 需要把实际台数与0拼接成四位;

    年月+3位递增序列号数据库新建一个表,字段包含主键,模块常量,流水日期,流水长度,流水值(默认0,即序列号);

    每次新增时先更新数据库流水值,直接加1;

    然后判断当前日期与数据库流水日期是否一致,不一致更新流水日期为当前日期;

    年月 日期获取可直接调用日期工具类对系统日期进行改造即可;

    然后获取最新的数据库流水值,调用工具类与0拼接成四位序列号

           String batchId = "P";
                String number = getBatchIdNumber("5");//默认台数为5台,可依据实际业务传参
                batchId = batchId + number;
                //批次号生成规则:
                orderNo = serialNoUtils.getGroupPurchaseBatchId(SerialType.group_purchase_no,batchId);//生成批次号
    //获取四位台数,实际业务台数 与 0 拼接
    public
    String getBatchIdNumber(Integer number) { String numberString = SerialNoUtils.getPreZeroNumber(4,StringTools.stringOf(number)); return numberString; }
        /**
         * 数字补0
         * 
         * @param num
         *            需要补充到num位
         * @param str
         *            待补充0的字符串(数字转化而来)
         * @return
         */
        public static String getPreZeroNumber(int num, String str) {
            int strLen = str.length();
            if (strLen < num) {
                for (int i = strLen; i < num; i++) {
                    StringBuffer sb = new StringBuffer();
                    sb.append("0").append(str);
                    str = sb.toString();
                }
            }
            return str;
        }
    /**
         * 获取批次号
         * @param codeConfigId 主键
         * @param pre
         * @return
         */
        @Override
        public String getGroupPurchaseBatchId(String codeConfigId, String pre) {
            //1.先更新数据库,流水值 即 序列号递增加1
            baseMapper.updateSerialValue(codeConfigId);
            //2.查询
            CodeConfigEntity cce = baseMapper.selectById(codeConfigId);
            if (cce == null || cce.getSerialDate() == null) {
                throw new RRException("请维护" + codeConfigId + "的生成规则信息");
            }
            //若编号日期与数据库日期不符合,更新编号日期
            if (!cce.getSerialDate().equals(DateUtils.getYMDate())) {
                baseMapper.resetSerialValue(DateUtils.getYMDate(), codeConfigId);
                cce = baseMapper.selectById(codeConfigId);
            }
            // 获取 流水值 即 序列号
            String suf = cce.getSerialValue() + "";
         // 将序列号 与 0 拼接成3位 序列号,然后与其他数据 拼接 即可 String serialNO
    = SerialNoUtils.getBatchId(pre, cce.getSerialLength(), suf); logger.info(codeConfigId+"编号获取成功 :" + serialNO ); return serialNO; }
    /**
         * 获取批次号
         * @param pre 常量
         * @param length 变量长度
         * @param suf 变量
         * @return
         */
        public static String getBatchId(String pre,int length, String suf) {
        //调用日期工具类,获取年月
            String date = getPrefixYM();
            return pre + date + getPreZeroNumber(length, suf);
        }

    数据库设计

  • 相关阅读:
    angularjs---select使用---默认值及联动
    protobuf--嵌套repeated get set
    protobuf--repeated get set
    Spring学习笔记1——基础知识
    Spring的BeanFactoryPostProcessor和BeanPostProcessor
    Git分支管理策略
    如何高效利用 GitHub
    一张思维导图教你使用google一下
    手把手教你如何加入到github的开源世界
    Spring4 MVC HelloWorld 注解和JavaConfig实例
  • 原文地址:https://www.cnblogs.com/sanhao/p/12470474.html
Copyright © 2011-2022 走看看