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

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

相关文章

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

mysql如何查看当前连接数

《mysql如何查看当前连接数》:本文主要介绍mysql如何查看当前连接数问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql查看当前连接数查看mysql数据库允许最大连接数总结mysql查看当前连接数查看当前连接数SHOW STATUS LIKE

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

C/C++随机数生成的五种方法

《C/C++随机数生成的五种方法》C++作为一种古老的编程语言,其随机数生成的方法已经经历了多次的变革,早期的C++版本使用的是rand()函数和RAND_MAX常量,这种方法虽然简单,但并不总是提供... 目录C/C++ 随机数生成方法1. 使用 rand() 和 srand()2. 使用 <random

Flask 验证码自动生成的实现示例

《Flask验证码自动生成的实现示例》本文主要介绍了Flask验证码自动生成的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 目录生成图片以及结果处理验证码蓝图html页面展示想必验证码大家都有所了解,但是可以自己定义图片验证码