注:算法比较low,先用着,流水号长度可变,如有需要,直接使用,本人测试通过,如有问题,自行修改。
如输入参数为0000,输出则为0001,输入参数为9999,输出参数为A000import org.apache.commons.lang3.StringUtils;
@RequestMapping(value = "/getSerialNumber", method = RequestMethod.POST)@ApiOperation(value = "获取流水号", notes = "获取流水号")public String getSerialNumber(@RequestBody Code code) {String result = "";try {if (code.getOriginal() == null) {return "";}char[] chars = code.getOriginal().toCharArray();String maxNumber = StringUtils.leftPad("9", chars.length, "9");String maxLetter = StringUtils.leftPad("Z", chars.length, "Z");if (chars[0] <= 57 && chars[0] >= 48) {int ori = Integer.parseInt(code.getOriginal());if (ori < Integer.parseInt(maxNumber)) {result = String.format("%0" + chars.length + "d", ori + 1);}if (ori == Integer.parseInt(maxNumber)) {result = String.format("A" + "%0" + (chars.length - 1) + "d", 0);}} else if (code.getOriginal().compareToIgnoreCase(maxLetter) == 0) {result = String.format("%0" + chars.length + "d", 1);} else {int i = 0;for (char item : chars) {if (item <= 57 && item >= 48) {break;} else {i++;}}String letter = code.getOriginal().substring(0, i);String number = code.getOriginal().substring(i, chars.length);maxNumber = StringUtils.leftPad("9", number.length(), "9");int ori = Integer.parseInt(number);if (ori < Integer.parseInt(maxNumber)) {result = String.format(letter + "%0" + number.length() + "d", ori + 1);}if (ori == Integer.parseInt(maxNumber) && letter.substring(letter.length() - 1).compareToIgnoreCase("Z") == 0) {String tailLetter = "";if ((number.length() - 1) == 0) {tailLetter = "A";}else{tailLetter = "A" + String.format("%0" + (number.length() - 1) + "d", 0);}result = letter + tailLetter;}if (ori == Integer.parseInt(maxNumber) && letter.substring(letter.length() - 1).compareToIgnoreCase("Z") < 0) {String topLetter = "";char[] tailLetter = letter.substring(letter.length() - 1).toCharArray();if (letter.length() == 1) {topLetter = String.valueOf((char) (tailLetter[0] + 1));} else {topLetter = letter.substring(0, letter.length() - 1) + String.valueOf((char) (tailLetter[0] + 1));}result = String.format(topLetter + "%0" + number.length() + "d", 0);}}} catch (Exception ex) {ex.printStackTrace();}return "result:" + result;}@Getter
@Setter
class Code {private String original;
}

java实现0001....A000...ZA00...ZA99-ZB00...ZZZZ流水号的自动生成相关推荐

  1. java汉字转换国标码_国标码(GB2312)的自动生成 | 学步园

    前面已提到,汉字是由两个字节构成的,每个字节占八位(8bits),那么每个汉字需要占十六位(16bits).而且由于中文字符的每个字节的最高位为1,则每个字节的ASCII码均大于127(27-1).这 ...

  2. 用java做小学数学系统_小学生数学练习题目自动生成系统——java课程设计

    <小学生数学练习题目自动生成系统--java课程设计>由会员分享,可在线阅读,更多相关<小学生数学练习题目自动生成系统--java课程设计(37页珍藏版)>请在金锄头文库上搜索 ...

  3. java bean 数据库表_如何从数据库的表格自动生成javabean,包含get/set方法等

    Torque是一种ORM的工具,它最早是Apache  Jakarta  Turbine项目的一部分,现在已经从Turbine中剥离出来,可以独立使用.目前,它的版本是3.0. Torque的主要特性 ...

  4. 使用maven根据JSON文件自动生成Java POJO类(Java Bean)源文件

    根据JSON文件自动生成Java POJO类(Java Bean)源文件 本文介绍使用程序jsonschema2pojo来自动生成Java的POJO类源文件,本文主要使用maven,其他构建工具请参考 ...

  5. 小d课堂mysql_小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-6.Mysql逆向工程效率神器之使用IDE自动生成Java实体类...

    笔记 6.Mysql逆向工程效率神器之使用IDE自动生成Java实体类 简介:实战使用IDE根据Mysql自动生成java pojo实体类 1.IDEA连接数据库 菜单View→Tool Window ...

  6. 关于使用java程序从excel或者数据库中取出建表规则数据,自动生成数据库建表语句(适用于批量建数据库表)

    公司开发新系统,需要创建几百个数据库表,建表的规则已经写好放到Excel中,如果手动创建的话需要占用较长的时间去做,而且字段类型的规则又被放到了另一张表,如果手动去一个一个去匹配就很麻烦,所以我先把两 ...

  7. Java基础以及变量和运算符、包机制、javadoc生成

    Java基础以及变量和运算符.包机制.javadoc生成 注释.标识符.关键字 注释 标识符 关键字 标识符注意点 数据类型 强类型语言 弱类型语言 Java的数据类型 基本类型(primitive ...

  8. aidl生成java文件_Android Studio编写AIDL文件后如何实现自动编译生成

    Android Studio编写AIDL文件后如何实现自动编译生成 发布时间:2020-09-17 23:34:54 来源:脚本之家 阅读:111 作者:EdwardChu123 在目录src/mai ...

  9. java 日志 生成器_自动生成 java 测试 mock 对象框架 DataFactory-01-入门使用教程

    项目简介 Data-Factory 用于根据对象,随机自动生成初始化信息,避免了手动创建对象的繁琐,便于测试. 特性 8 大基本类型的支持 String.Date.金额,日期等常见类型的支持 java ...

最新文章

  1. Zookeeper基于Java访问-节点事件监听
  2. D. Binary Literature
  3. webpack常用loader和plugin及打包速度优化
  4. 动态类型语言和静态类型语言
  5. python概念-Socket到底有多骚
  6. 代码重构!你敢吗?| 技术头条
  7. 阿里内核月报2017年01月
  8. 做系统ghost步骤图解_两台电脑硬盘对拷图解
  9. LayUI文档和技术支持网站
  10. centos7 分辨率修改,CentOS 7 修改屏幕分辨率
  11. 吉林大学软件学院软件构件与中间件技术
  12. 皮尔森残差_残差与标准化残差
  13. 使用xlang开发隐形水印制作工具
  14. Retrofit 2.9.0 源码解析
  15. linux怎么添加跃点数,Windows 7修改静态路由表的跃点数
  16. 人大金仓数据库添加substring_index函数
  17. 支付宝快捷登录相关事宜
  18. 抄码器视频教程牛羊抄码器冷库抄码机进口牛羊肉冷库冷冻肉抄码器怎么设置
  19. 【小白CV教程】YOLOv5+Deepsort实现车辆行人的检测、追踪和计数
  20. 免费开放聚合的论文查询下载网站推荐:查询SCI、SSCI、EI、核心期刊、CCF会议论文列表,免费下载论文

热门文章

  1. 编程范式-结构化编程
  2. 掌握这四个word快捷,大大提高你的论文写作效率
  3. 端到端加密优缺点_Tresorit推出端到端加密文档扫描应用
  4. 阻容感基础10:电感器分类(3)-共模电感和磁环
  5. 仅仅9行代码 爬取教务处成绩 仅用2个模块 正方教务系统
  6. 计算机本地连接没有有效ip配置,本地连接没有有效的ip配置,本地连接没有有效ip-...
  7. 常见面试题整理-MTX
  8. FD小工具代码-hex2bin
  9. 解决Matlab2014A在win10下字体模糊的问题
  10. 计算机找不到m337,使用曝光罗技m590和m336区别是什么?哪个好?内幕真实情况解密...