获取自增编码
- 获取自增编码
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;
}

浙公网安备 33010602011771号