java自定义单据编号自增,规则如:销售单("XSD20170614001"),
来源:互联网 发布:ubuntu snmpwalk 安装 编辑:程序博客网 时间:2024/04/30 17:55
最近公司做一个进销存软件,需要给单据设置自定义编号功能
由于本人使用的是springmvc,仔细思考下后贴出代码:
/*service层调用工具类*/
String billType="YDD";//定义单据类型,预订单
String DbBillCode=bookBillInfoService.getMaxBillCode(billType);//获取最大的预订单号
String billId = IdGen.generateBillCode(billType,DbBillCode);
/*sql语句*/
<!-- 根据订单类型获取最大的订单编号 -->
<select id="getMaxBillCode" parameterType="java.lang.String" resultType="java.lang.String">
select Max(SUBSTRING(id,-11)) FROM book_bill_info
where id like concat ('%',#{billType},'%')
</select>
/**
* 自动生成单据编号,规则如:XSD+20170614+001,第二天的单据从001开始
* @param billType 单据类型如"XSD",DbBillCode "数据库中取出来的单据号"
* @return
*/
public static String generateBillCode(String billType,String DbBillCode){
//存放最终生成的单据编号的字符串
String billCode=new String();
String dateString = new SimpleDateFormat("yyyyMMdd").format(new Date());
if("".equals(DbBillCode)||DbBillCode==null){
//如果单号不存在,则设置每天的第一个单号
billCode=billType+dateString+"001";
}else{
//取出单据号中的固定位
String str=billType+DbBillCode.substring(0,8);
//取出流水号
String temp=DbBillCode.substring(DbBillCode.length()-3,DbBillCode.length());
//取出当天的所有单号中最大的单号截取后自增1
if(Integer.parseInt(temp)>=1&&Integer.parseInt(temp)<999){
temp=String.valueOf(Integer.parseInt(temp)+1);
}
switch (temp.length()) {
case 1:
temp="00"+temp;
break;
case 2:
temp="0"+temp;
break;
default:
break;
}
billCode=str+temp;
}
System.out.println(billCode);
return billCode;
}
junit测试代码,就不往出贴了,有需要的朋友自己传参测试一下,第一次发博客有不足或者优化的地方希望大神们
多多指导一下!
- java自定义单据编号自增,规则如:销售单("XSD20170614001"),
- 形如“BM10040009”的常用单据编号生成代码
- 通过设置规则生成各种单据编号(二)
- 通过设置规则生成各种单据编号(一)
- 销售订单头表的订单编号生产规则
- 金蝶KIS商贸版开发销售出库单、销售订单带商品图片打印单据
- C#生成单据编号
- tiptop 单据编号函数
- 金蝶KIS专业版V14.1生产任务单|销售单等单据图片打印
- access如何用代码在“默认值”里实现自动编号?单据流水号生成问题。
- access如何用代码在“默认值”里实现自动编号?单据流
- 单据编号的自动产生
- 生成不重复单据编号
- SQL 返回单据流水编号
- java(优化一) 编号规则生成器(一)
- java(优化二) 编号规则生成器(二)
- java(优化三) 编号规则生成器(三)
- 关于编号自增问题
- aqtest 004
- mysql---视图
- NSString 转 NSNumber
- Python-正则表达式与re模块
- [Unity&GameSparks]社交认证和玩家资料
- java自定义单据编号自增,规则如:销售单("XSD20170614001"),
- 这样来看电路,真是绝了!
- dbcp、c3p0、druid连接池的简单配置
- 交叉编译工具无法执行
- C#调用AutoIt3的DLL功能
- 主角遮挡渲染轮廓线方案
- 多线程使用linux时间函数的方法
- Server报错:java.lang.IllegalStateException: Cannot create a session after the response has been commit
- UFLDL教程: Exercise: Implement deep networks for digit classification