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

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

相关文章

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南

《Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南》在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFrame中,以便进行进一步... 目录一、准备工作二、读取Excel文件三、数据叠加四、处理重复数据(可选)五、保存新DataFram

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

SpringBoot项目删除Bean或者不加载Bean的问题解决

《SpringBoot项目删除Bean或者不加载Bean的问题解决》文章介绍了在SpringBoot项目中如何使用@ComponentScan注解和自定义过滤器实现不加载某些Bean的方法,本文通过实... 使用@ComponentScan注解中的@ComponentScan.Filter标记不加载。@C

SpringBoot生成和操作PDF的代码详解

《SpringBoot生成和操作PDF的代码详解》本文主要介绍了在SpringBoot项目下,通过代码和操作步骤,详细的介绍了如何操作PDF,希望可以帮助到准备通过JAVA操作PDF的你,项目框架用的... 目录本文简介PDF文件简介代码实现PDF操作基于PDF模板生成,并下载完全基于代码生成,并保存合并P

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(