Java后台生成NO2016012701(代码+年月日+流水号)这样的流水编号
记录今日较大的点。
参考文章:
https://blog.csdn.net/weixin_44538107/article/details/87740611
https://blog.csdn.net/jianqiangdexiaohai/article/details/81240176
项目过程中需要自动生成编号,不在数据库生成,而是在后台代码生成,根据客户对流水号的要求比较高并必须按照规范,而且组合起来清晰易懂并不会有重复。故参考了上述两篇文的代码后,结合自己的业务需要加以改编:
1 首先从数据库查询出已有的最大编号
2 拼成NO+当前时间格式的字符串
3 判断最大编号是否存在,最大编号中是否包含当天时间
4 如果最大编号不存在,则直接生成第一个编号NO201601270001
5 如果最大编号存在且包涵当天时间,则给最大编号加1,拼成编码
注意:以下代码演示里做的是OPP20190801 这样的生成,少了日子。
下面是Controller方法,由于两篇文章其中各自使用的Json类未知,所以 结合我的项目细节加以稍微的改编。项目是springboot加bootstrap+vue。在像上述文章做json数据传值时,结合自己项目的封装返回值R类型,故由前台发起请求,请求方法返回可json串到前台,在进行页面赋值。
@RequestMapping("/getCommentCode")
//@RequiresPermissions("tbusinesschance:save")
public R getCommentCode(){List<String> bhList = new ArrayList<String>();String currentMonth = null;int month = Calendar.getInstance().get(Calendar.MONTH) + 1;if(month < 10) {currentMonth = "0" + month; } else {currentMonth = month + "";}List<TBusinesschanceEntity> partList = tBusinesschanceService.getPartList(currentMonth);for (TBusinesschanceEntity tBusinesschanceEntity : partList) {bhList.add(tBusinesschanceEntity.getBusinesschanceid());}String max_code = "";//最新编号String comment_code = "";//做好的编号if(bhList.size() > 0) {//得到该月最新(最大号)的一个编号max_code = bhList.get(0);}// 时间字符串产生方式SimpleDateFormat format = new SimpleDateFormat("yyyyMM");// 组合流水号前一部分,时间字符串,如:201907String bcid_pfix = format.format(new Date()); //判断数据库是否有数据if (max_code != null && max_code.contains(bcid_pfix)) {// 从OOP20190803 截取字符串最后2位,结果:03String uid_end = max_code.substring(9);//substring(8) // 把String类型的03转化为int类型的3int endNum = Integer.parseInt(uid_end); // 结果4int tmpNum = endNum + 1; // 100 + 1 + 1 = 结果102//已经加了1 再给他在拼成OOP20190804comment_code = "OOP" + bcid_pfix + ("0" + tmpNum);} else {//数据库没数据时,输出OOP20190801comment_code = "OOP" + bcid_pfix + "01";}return R.ok().put("comment_code", comment_code);
}
Js代码
无参—Get请求
把 $("#businesschanceid").val(r.comment_code) ;值赋给页面
function getCommentCode(){$.ajax({type: "GET",url: baseURL + "tbusinesschance/getCommentCode",contentType: "application/json",//data: JSON.stringify(ids),success: function(r){if(r.code == 0){$("#businesschanceid").val(r.comment_code);}else{alert(r.msg);}}});
}
这样html页面定义的id 前后台交互。
这里再说下xml文件写sql语句 有个问题想说出来
开始,是仿照别人的抄来一段更改:
<select id="queryList" resultType="xxx.server.businesschance.entity.TBusinesschanceEntity">select * from t_businesschance bc<where>bc.`isdel`="1"1 <if test="businesschanceid !=null and businesschanceid.trim() != ''">2 and bc.`businesschanceid like concat('%',#{value},'%')
------------------------------这里想要的效果是-----------------------------Controller传来的value(eg:07) 让businesschanceid 做模糊查询查询出所有是该位是07的编号。
可是不知test的值是否要与下面bc.`businesschanceid #{value} 一样,所以不论怎么改,照网上
搜的更改方法改了_parameter 都是报 here is no getter for property named 'businesschanceid' in 'class xxx.User'。 实在xml里写sql语句不太会所以这里出错了好久。后来调整了sql的写法,然后就对了。</if></where><choose><when test="sidx != null and sidx.trim() != ''">order by ${sidx} ${order}</when><otherwise>order by id desc</otherwise></choose><if test="offset != null and limit != null">limit #{offset}, #{limit}</if></select>
以下是改后的sql
<!-- 查询编号集合 -->
<select id="getPartList" resultType="com.rlc.modules.server.businesschance.entity.TBusinesschanceEntity">select * from t_businesschance tbc<where>tbc.businesschanceid like concat('_______',#{value},'__') order by tbc.id desc
---------------------------不在这里用人家的模板,而是简单写了,就对了。不在报 here is no getter for property named 'businesschanceid' in xxx.xxx了
这里的这个错误如果有高手了解,还请告知以下。感谢!!!!!!!</where></select>
Java后台生成NO2016012701(代码+年月日+流水号)这样的流水编号相关推荐
- Java后台生成图表——主代码(折线图,饼状图,柱状图,-》并产出图片PDF或其他格式的图片内容)
声明: 本文采用的数据均来源于网络,本人只用于学习记录,若有侵权,还望能及时联系. Maven 的 POM 依赖 <!--必要--><!--用于jfreechart生成图片 --&g ...
- Java后台生成Excel表格
Java后台生成Excel表格 功能简述 需求 目标 实现 1.首先在项目中导入jxl相关jar包,并引入 2.编写代码 3.结果 后记 功能简述 由于公司业务需求,我需要实现一个完全通过Java后台 ...
- java后台生成echarts图表
java后台生成echarts图表 最近博主在做一个项目,需要后台出图和前端echarts一样的图,比如折线图和柱状图. 经过一番整理,顺利实现了该功能,特此分享,需要白嫖的,拿走不谢. 直接上效果图 ...
- java后台生成并下载二维码
java后台生成并下载二维码(以二进制流的形式输出) 前提业务要求:前台页面展示数据,有下载按钮,点击下载,下载对应数据的二维码. 在pom.xml文件中添加依赖 <dependency> ...
- java后台生成的Excel文件并通过浏览器下载
java后台生成Excel文件需要引入poi, 以下是poi的pom可以引入自己的项目里面去 <dependency><groupId>org.apache.poi</g ...
- java后台生成二维码以及页面显示二维码方式
上篇文章已经说明并发布了后台生成二维码工具类,大家可以直接去看或者去拿. 地址:最简单实用的java生成二维码工具 现在呢说明页面上展示二维码的两种方式: 1.使用img标签的src来请求生成二维码, ...
- java后台生成含有echarts图表的报告并发送邮件
无头浏览器使用 业务场景, 有一个报告的预览页面,这个页面中含有echarts图表,点击下载报告之后,调用echarts的getDataURL()方法将图片数据传到后台,在后台生成word或者pdf. ...
- uniapp使用unipush推送及java后台推送代码(含本地打包apk使用unipush推送)
你懂的,又是项目用到了,作为程序猿义无反顾需要定时 "进化" ,硬头皮去写,虽然曾经作为android开发者写了很多的推送,但是uniapp的推送也是有所差异的,记录一下,以后留用 ...
- Java后台生成二维码
今天做了一下生成二维码的两种方式 第一种就是前台调用接口去生成二维码,第二种就是后台生成二维码 既然我们是后台开发人员,我这里就写后台代码了,后台代码实现很简单,说白了大家调用一个工具类就OK啦. 工 ...
- java自动生成数据库代码
自从学习计算机以来,学习了很多知识,都是从网上学习的,特别感谢网络,经常自比网络的boy, 现在把我过去做的工具共享出来,希望给大家的工作与学习带来帮助. webtool自动生成数据库代码,支持mys ...
最新文章
- Android 占位符 %1$s %1$d
- WinAPI: CreateDirectoryEx - 根据模版建立文件夹
- python完全新手教程-Python完全新手教程
- 原子变量、锁、内存屏障,写得非常好!
- css深入理解之overflow
- python 3.6.5编译安装_Centos7下编译安装python3.6.5
- 为什么采用4~20mA的电流来传输模拟量?(转)
- 环境变量PATH cp命令 mv命令 文档查看cat/more/less/head/tail
- win10+VS2013+OPENCV如何配置于仕琪人脸检测算法
- LayerCAM:Exploring Hierarchical Class Activation Maps for Localization
- 解决移动浏览器不能正确转化时间
- 光驱动器类有哪些最新发表的毕业论文呢?
- SSO (Single Sign On)
- 最简单的http文件服务器
- php zend optimizer 解密,PHP反编译工具(Mr.DeZend GUI)下载 v1.0
- JESD204B高速AD开发(一)基于FPGA的LMK04821时钟芯片设计
- Magisk 保留root升级系统(亲测小米)
- 黑马培训的点滴(前端)
- SSIS中刷新Power BI数据集
- 我肝了2个月,为你整理了Java并发编程手册