public abstract class SerialResouce {//工作中的简单例子,大家根据需求自己修改校验规则
public abstract String getNextSerialNo(String year, String type)
throws Exception;
/**
* 获取序号
*
* @param seqName
* 序号名称
* @return 下一个序号值
* @throws Exception
*/
protected static String fixSequence(String str) {
if (str == null || str.length() == 0)
return str;
while (str.length() < 7) {
str = "0" + str;
}
return str;
}
/**
* 增加校验位
*
* @param number
* 号
* @return 带校验位的号
*/
protected static String getValidateSequence(String number) {
int validate = 0;
for (int i = 1; i <= number.length(); i++) {
char x = getCharFromString(number, i - 1);
int m = getIntFromChar(x);
if (m != 0) {
if (i < 9) {
validate = validate + m * (i + 1);
} else {
validate = validate + m * (i - 8);
}
}
}
validate = validate % 11;
if (validate == 10) {
return "Y";
} else {
return String.valueOf(validate);
}
}
/**
* 从字符串中获取指定位置的字符
*
* @param number
* 号
* @param position
* 位置
* @return 字符
*/
private static char getCharFromString(String number, int position) {
return number.charAt(position);
}
/**
* 字符转换为整数
*
* @param x
* 字符
* @return 整数
*/
private static int getIntFromChar(char x) {
return Integer.parseInt(String.valueOf(x));
}
}
Java增加校验位
点赞
收藏