import java.text.DecimalFormat;
import java.util.Date;
import k.common.util.DateUtil;
/**
*
* @ClassName OrderNoCreator
* @Description: 订单号生成器
* @author: GuXiYang
* @date: 2017/02/14 15:06:18
*/
public class OrderNoCreator {
//流水号加1后返回,流水号长度为4
private static final String STR_FORMAT = "000000";
/**
*有时候我们需要固定长度的字符串做流水号,每添加一个记录时流水号的值加1,
而流水号的长度保持不变。
一般的做法是先把流水号转换为数值型,然后此数值加1,再把数值转换为字符串,
长度不够流水号长度时再在前面补0:
* @Description: 流水号加1后返回
* @author: GuXiYang
* @date: 2017/02/14 15:56:19
* @param liuShuiHao
* @return
*/
public static String haoAddOne(String liuShuiHao){
Integer intHao = Integer.parseInt(liuShuiHao);
intHao++;
String strHao = intHao.toString();
while (strHao.length() < liuShuiHao.length())
strHao = "0" + strHao;
return strHao;
}
public static String getOrder(String liuShuiHao){
Integer intHao = Integer.parseInt(liuShuiHao);
intHao++;
DecimalFormat df = new DecimalFormat(STR_FORMAT);
return df.format(intHao);
}
/**
* 不够位数的在前面补0,保留code的长度位数字
* @param code
* @return
*/
public static String autoGenericCode(String code) {
try {
// 保留code的位数
return String.format("%0" + code.length() + "d", Integer.parseInt(code) + 1);
} catch (NumberFormatException e) {
e.printStackTrace();
}
return "";
}
/**
* @Description: 不够位数的在前面补0,保留num的长度位数字
* @author: GuXiYang
* @date: 2017/02/14 15:10:14
* @param code 字符串
* @param num 保留位数
* @return
*/
public static String autoGenericCode(String code, int num) {
try {
// 保留num的位数
// 0 代表前面补充0
// num 代表长度为4
// d 代表参数为正数型
return String.format("%0" + num + "d", Integer.parseInt(code) + 1);
} catch (NumberFormatException e) {
e.printStackTrace();
}
return "";
}
/**
* 根据银行编号位数要求根据采用交易码+日期+Squense
*/
public static String createNo()
{
int bankLength =30;
long sequence = 85462;
String businessCode ="FB01";
businessCode = businessCode.substring(2);
String transDate = DateUtil.formatDateToString(new Date(), "yyMMdd");
//根据银行流水号长度判断如何拼接字符串,无法处理1-9位流水号的情况
System.out.println("生成的sequence为:"+sequence);
int sqlength = 0;
if(bankLength <= 11){
sqlength = bankLength;
return String.format("%1$0"+sqlength+"d",sequence);
}else if(bankLength >= 12 && bankLength < 14){
sqlength = bankLength - transDate.length();
return String.format("%s%2$0"+sqlength+"d",transDate,sequence);
}else{
sqlength = bankLength - transDate.length() - businessCode.length();
return String.format("%s%s%3$0"+sqlength+"d",transDate, businessCode,sequence);
}
}
public static void main(String[] args) {
System.out.println(OrderNoCreator.autoGenericCode("265"));
System.out.println(OrderNoCreator.autoGenericCode("3223",10));
System.out.println( String.format("%s%s%3$025d",20170204,01,56126));
System.out.println(OrderNoCreator.haoAddOne("999"));
System.out.println(OrderNoCreator.getOrder("2565626"));
}
}
不够位数的在前面补0,保留num的长度位数字
最新推荐文章于 2019-05-27 23:24:47 发布