在项目中,如何根据当前的流水号,生成下一个流水号!

2024-09-08 04:08
文章标签 项目 生成 当前 流水号

本文主要是介绍在项目中,如何根据当前的流水号,生成下一个流水号!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在项目中,如何根据当前的流水号,生成下一个流水号!

DataType.java

package cn.itcast.crm.util;import org.apache.commons.lang.StringUtils;public class DataType {/*** 利用给定的流水位生成第一个流水号* 流水位3 ----- 001 * 流水位4-----0001*/public static String geneFirstGlideNumber(Integer glideBit) {if(glideBit==null||glideBit<3){glideBit=3;}String glideNumber="";for(int i=0;i<glideBit-1;i++){glideNumber=glideNumber+"0";}glideNumber=glideNumber+"1";return glideNumber;}/*** 根据当前的流水号,生成下一个流水号* 当前是001 下一个002* 当前是005 下一个006* @param curGlideNumber 当前的流水号* @return* String 10005  ----整形	 10005* 整形 10005+1    ----整形 10006* 整形10006      ----String 10006* String 10006  ----截取 0006*/public static String geneNextGlideNumber(String curGlideNumber) {if(StringUtils.isBlank(curGlideNumber)){throw new RuntimeException("不能计算下一个流水号");}curGlideNumber="1"+curGlideNumber;Integer icurGlideNumber=Integer.parseInt(curGlideNumber);icurGlideNumber++;curGlideNumber=icurGlideNumber+"";curGlideNumber=curGlideNumber.substring(1);return curGlideNumber;}public static void main(String[] args) {System.out.println(geneNextGlideNumber("004"));}}

CompanyServiceImpl.java

package cn.itcast.crm.service.impl;import java.util.Date;
import java.util.List;import javax.annotation.Resource;import org.apache.commons.lang.time.DateFormatUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;import cn.itcast.crm.dao.ISysCodeRuleDao;
import cn.itcast.crm.domain.SysCodeRule;
import cn.itcast.crm.service.ICompanyService;
import cn.itcast.crm.util.DataType;@Transactional(readOnly=true)
@Service(ICompanyService.SERVICE_NAME)
public class CompanyServiceImpl implements ICompanyService {@Resource(name=ISysCodeRuleDao.SERVICE_NAME)private ISysCodeRuleDao sysCodeRuleDao;@Transactional(isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED,readOnly=false)public String getCompanyCodeByTabName(String tabName) {//获取代码规则,查询sys_code_ruleString whereHql=" and o.tabName=?";Object[] params={tabName};List<SysCodeRule> list=sysCodeRuleDao.findObjectByConditionWithNoPage(whereHql, params);if(list==null||list.size()!=1){throw new RuntimeException("不能生成客户的编码");}SysCodeRule sysCodeRule=list.get(0);//* 获取 是否被修改过或新添加的 字段的值  //* 如果  是否被修改过或新添加的=='Y'  if(sysCodeRule.getAvailable().equals("Y")){//* 获取 流水位=3Integer glideBit=sysCodeRule.getGlideBit();//* 生成第一个流水号 001String firstGlideNumber=DataType.geneFirstGlideNumber(glideBit);//* 计算下一个流水号 002String nextGlideNumber=DataType.geneNextGlideNumber(firstGlideNumber);//* 获取系统的当前时间 格式yyyyMMdd  20110914String curDate=DateFormatUtils.format(new Date(), "yyyyMMdd");//* 生成客户编码//* 编码前缀+"-"+利用日期位格式生成当前的日期[yyyy-MM-dd ]+"-"+001  c-2011-09-14-001String code=sysCodeRule.getAreaPrefix()+"-"+DateFormatUtils.format(new Date(), sysCodeRule.getAreaTime())+"-"+firstGlideNumber;//* 修改代码规则表//*  下一个序列号="002"sysCodeRule.setNextseq(nextGlideNumber);//*  当前日期  20110914sysCodeRule.setCurDate(curDate);//*  是否被修改过='N' sysCodeRule.setAvailable("N");sysCodeRuleDao.update(sysCodeRule);//System.out.println("1:code:"+code);return code;}else{  //是否被修改过或新添加的=='N'  //* 获取代码规则表中的当前日期字段的值String curDate=sysCodeRule.getCurDate();//* 获取系统的当前日期、String sysCurDate=DateFormatUtils.format(new Date(), "yyyyMMdd"); //* 如果代码规则表中的当前日期字段的值==系统的当前日期、if(curDate.equals(sysCurDate)) {//* 获取下一个序列号 ="002"String nextseq=sysCodeRule.getNextseq();//* 计算新的流水号 003String nextGlideNumber=DataType.geneNextGlideNumber(nextseq);//* 生成客户编码//* 编码前缀+"-"+利用日期位格式生成当前的日期[yyyy-MM-dd ]+"-"+001 String code=sysCodeRule.getAreaPrefix()+"-"+DateFormatUtils.format(new Date(), sysCodeRule.getAreaTime())+"-"+nextseq;//* 修改代码规则表//*  下一个序列号="003"sysCodeRule.setNextseq(nextGlideNumber);//*  当前日期  20110914//*  是否被修改过='N' sysCodeRuleDao.update(sysCodeRule);//System.out.println("2:code:"+code);return code;}else{ //如果代码规则表中的当前日期字段的值!=系统的当前日期、//* 获取 流水位=3   Integer glideBit=sysCodeRule.getGlideBit();//* 生成第一个流水号 001String firstGlideNumber=DataType.geneFirstGlideNumber(glideBit);//* 计算下一个流水号 002String nextGlideNumber=DataType.geneNextGlideNumber(firstGlideNumber);//* 生成客户编码//* 编码前缀+"-"+利用日期位格式生成当前的日期[yyyy-MM-dd ]+"-"+001 String code=sysCodeRule.getAreaPrefix()+"-"+DateFormatUtils.format(new Date(), sysCodeRule.getAreaTime())+"-"+firstGlideNumber;//* 修改代码规则表//*  下一个序列号="002"sysCodeRule.setNextseq(nextGlideNumber);//*  当前日期  20110915sysCodeRule.setCurDate(sysCurDate);//*  是否被修改过='N' sysCodeRule.setAvailable("N");sysCodeRuleDao.update(sysCodeRule);//System.out.println("3:code:"+code);return code;}}
}
}
利用上面的代码,就可以自动生成流水号。



这篇关于在项目中,如何根据当前的流水号,生成下一个流水号!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1147071

相关文章

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

MyCat分库分表的项目实践

《MyCat分库分表的项目实践》分库分表解决大数据量和高并发性能瓶颈,MyCat作为中间件支持分片、读写分离与事务处理,本文就来介绍一下MyCat分库分表的实践,感兴趣的可以了解一下... 目录一、为什么要分库分表?二、分库分表的常见方案三、MyCat简介四、MyCat分库分表深度解析1. 架构原理2. 分

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

在.NET项目中嵌入Python代码的实践指南

《在.NET项目中嵌入Python代码的实践指南》在现代开发中,.NET与Python的协作需求日益增长,从机器学习模型集成到科学计算,从脚本自动化到数据分析,然而,传统的解决方案(如HTTPAPI或... 目录一、CSnakes vs python.NET:为何选择 CSnakes?二、环境准备:从 Py

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建