获取自增编码

  • 获取自增编码

public String getNewCodeValue(String oldCode) throws Exception {

String codeValue = "",sql="";

if (!oldCode.isEmpty()){

codeValue = oldCode;

} else {

// 获取最新的编码.以此编码作为基础创建新的编码
sql = "select top 1 " + codeField + " from " + masterTable + " order by " + keyField + " desc";

//执行sql的方法,结果为codeValue
codeValue = SysFunc.getValueOfSql(getSession(), sql, "0000").toString();

 }
 int codeIndex = codeValue.length() - 1;
 String s;
 // 在字符串中从最后往前找出连续为数字的索引,若字符串全为数字.则索引为-1.否则若ac001.索引为1
 while (codeIndex != -1) {

s = String.valueOf(codeValue.charAt(codeIndex));

if (s.compareTo("0") >= 0 && s.compareTo("9") <= 0) {

codeIndex--;

continue;

}

break;

}

 // 字符部分
 String codeString = "";
//  数字部分
String codeNumber = "";

 // codeIndex小于零则全为数字,否则分隔成字符和数字部分
 if (codeIndex >= 0) {

 codeString = codeValue.substring(0, codeIndex + 1);

 codeNumber = codeValue.substring(codeIndex + 1, codeValue.length());

 } else {

codeNumber = codeValue;

}

 // 若最后部分不存在数字.直接返回空串

if (codeNumber.trim().equals("")) {

 

return "";

}

 // 序号自增
Integer number = Integer.parseInt(codeNumber);
 number++;
 // 格式化.根据数字部分的长度来添0
codeNumber = String.format("%0" + codeNumber.length() + "d", number);
 // 拼接最终的字符串

 codeValue = codeString + codeNumber;

return codeValue;

 }

posted @ 2021-12-14 17:31  丶Ronnie  阅读(71)  评论(0)    收藏  举报