Java实现一个单号生成工具类
在项目开发的过程中,如果一个系统存在多种不同类型的单据,单号生成就比较难以处理,为此,创造出一个单号生成的工具类就很有必要。直接上代码:
实体类:(数据库字段同下)
public class SerialNumber {@TableId(type = IdType.AUTO)@Excel(name = "序号", cellType = Excel.ColumnType.NUMERIC)private Long id;@Excel(name = "单据类型")private Integer orderType;@Excel(name = "订单日期")private LocalDate orderDate;@Excel(name = "订单量")private Integer orderNum;}
Mybatis Mapper:就是简简单单的添加,还有查询当前不同种类单据的数量
<select id="selNum" resultType="java.lang.Integer">select max(order_num) from data_serial_number where order_type = #{orderType}and order_date = #{orderDate} </select> <insert id="insNum">insert into data_serial_number (order_type, order_date, order_num)values (#{orderType},#{orderDate},#{orderNum}) </insert>
Mapper:
public interface SerialNumberMapper extends BaseMapper<SerialNumber> {/*** 获取当前流水号* @param serialNumber* @return*/Integer selNum (@Param("orderType") Integer orderType, @Param("orderDate") LocalDate orderDate);/*** 保存时添加一条* @param serialNumber* @return*/Boolean insNum(@Param("serialNumber")SerialNumber serialNumber);}
接口类:
public interface ISerialNumberService extends IService<SerialNumber> {/*** 生成多种单号* @param* @return*/String OrderCode(Integer type);/*** 保存时添加一条* @param type* @return*/Boolean insNum(@Param("serialNumber")Integer type);}
实现接口:
public class SerialNumberServiceImpl extends ServiceImpl<SerialNumberMapper, SerialNumber> implements ISerialNumberService {/*** 生成多种单号单号** @param* @return*/@Overridepublic String OrderCode(Integer type) {SerialNumber serialNumber = SerialNumber.builder().build();String orderType=null;switch (type){case 1: orderType="RK";break;case 2:orderType="CK";break;case 3:orderType="TK";break;case 4:orderType="JC";break;case 5:orderType="GH";break;case 6:orderType="SL";break;case 7:orderType="XH";break;case 8:orderType="PD";break;}serialNumber.setOrderType(type);serialNumber.getOrderType();serialNumber.setOrderDate(LocalDate.now());Integer integer = this.baseMapper.selNum(type, LocalDate.now());if (integer == null){integer=0;}serialNumber.setOrderNum(integer+1);DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd");String todayStr = dateTimeFormatter.format(serialNumber.getOrderDate());String serial_number = String.format("%03d", serialNumber.getOrderNum());return orderType+todayStr+serial_number;}/*** 保存时添加一条** @param type* @return*/@Overridepublic Boolean insNum(Integer type) {SerialNumber serialNumber= SerialNumber.builder().build();serialNumber.setOrderType(type);serialNumber.setOrderDate(LocalDate.now());Boolean isExist = true;Integer integer = this.baseMapper.selNum(type, LocalDate.now());if(integer == null){integer = 0;isExist = false;}serialNumber.setOrderNum(integer+1);//更新数据库里的流水号int flag = 0;if(isExist){QueryWrapper<SerialNumber> queryWrapper = new QueryWrapper<>();queryWrapper.eq("order_type",type);queryWrapper.eq("order_date",LocalDate.now());flag = this.baseMapper.update(serialNumber,queryWrapper);}else {flag = this.baseMapper.insert(serialNumber);}if (flag>0){return true;}return false;}}
Java实现一个单号生成工具类相关推荐
- Java:二维码生成工具类
java 二维码生成工具类 需要引入的maven <!--Java 生成二维码 --> <dependency><groupId>com.google.zxing& ...
- JAVA 雪花算法 唯一ID生成工具类
package com.gblfy;/*** @Author:JCccc* @Description:* @Date: created in 15:31 2019/6/12*/ public clas ...
- 编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类,银联借记卡号是一个 19 位的数字,卡号以“62”开头,如图所示。
查看本章节 查看作业目录 需求说明: 使用单例模式,创建可以生成银联借记卡号的工具类,银联借记卡号是一个 19 位的数字,卡号以"62"开头,如图所示. 实现思路: (1)创建 J ...
- 银联银行卡卡号java_编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类...
编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类 编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类,银联借记卡号是一个 19 位的数字,卡号以"62" ...
- java 图形校验_java图形验证码生成工具类 web页面校验验证码
java图形验证码生成工具类 web页面校验验证码 发布于 2020-7-14| 复制链接 摘记: 最近做验证码,参考网上案例,发现有不少问题,特意进行了修改和完善.验证码生成器: ```java i ...
- mongodb java 单例_JAVA单例MongoDB工具类详解
shasha 2018年09月07日 681 0 JAVA单例MongoDB工具类 JAVA驱动版本: org.mongodb mongo-java-driver 3.0.2 工具类代码如下: pac ...
- java 手机号脱敏,身份证号脱敏 工具类
java 手机号脱敏,身份证号脱敏 工具类 import org.apache.commons.lang3.StringUtils;/*** * @title: 脱敏工具类* @author: wll ...
- opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类
opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类 参考文章: (1)opengl中的Floatbuffer和 ...
- java图形验证码生成工具类
转载自 java图形验证码生成工具类 生成验证码效果 ValidateCode.java 验证码生成类 package cn.dsna.util.images; import java ...
最新文章
- 人工智能能否复制人脑引争论 美媒:目前AI仍存在局限性
- Puppet exec资源介绍(二十六)
- Xamarin效果第十八篇之GIS中复合型Mark
- leetcode64. 最小路径和(dp)
- 408数据结构:1.顺序表的定义
- 机器学习入门笔记(二):线性模型
- Nginx篇--解读nginx配置
- Linux操作系统下6个应急处理小常识
- WSS3 Elevation of Privilege 替代 用户身份模拟Impersonate 进行权限提升
- windows bat 命令之%~dp0
- 算法与数据结构1800题 图
- 计算机网络释疑与解答第六版 pdf,计算机网络释疑与习题解答第5版.pdf
- 解决WebStorme点击谷歌浏览器图标无反应问题
- 计算机和小学科课题,《小学信息技术课堂有效教学的探索》课题研究方案
- 【多源融合】自适应卡尔曼滤波的多种形式:遗忘卡尔曼滤波、渐消记忆卡尔曼滤波和自适应卡尔曼滤波
- Visual Studio 11开发指南(5)Visual Studio 11 IDE增强
- HRBUST1313-火影忍者之~静音
- Promise基础知识
- 无法连接到mysql数据库_无法连接到数据库服务器(mysql workbench)
- 程序员简历优化指南-安晓辉-专题视频课程
热门文章
- catkin_make问题: The build space at ‘/home/lufeng/Documents/test/catkin_ws/build’ was previously built
- PLC数据采集与远程监控方案
- 英语日常口语对话(3)
- 我这两年提升技术的经历和感受(舒适区危机篇)
- 隐藏通知内容什么意思_隐藏通知内容
- 【原创】怎样关联多个 Excel 档工作表(Sheet)中的数据
- FastDFS为什么要用Nginx做代理
- rk3288之CPU定频实现(手动、内核)
- 【计算几何】atan2函数
- 字符串 Z 字形变换(Java)