创建唯一编号
@Override
public int registerImpl(Map<String, Object> user) {
String preUuid;
while (true) {
String uuid = UUID.randomUUID().toString(); // 生成一个UUID
String numOnlyStr = uuid.replaceAll("[a-zA-Z]", "0"); // 替换掉所有字母为数字0
preUuid = numOnlyStr.substring(0, 10); // 截取前12位数字
Map<String, Object> u2id = login.uid(preUuid);
Integer i = Integer.valueOf(u2id.get("Uid").toString());
if (i == 0) break;
}
user.put("Organization_No", preUuid);
try {
return login.register(user);
} catch (DuplicateKeyException e) {
return 2;
}
}
UUID.randomUUID().toString()生成UUID 字符串的长度为 36 个字符,其中包括 32 个十六进制数字和 4 个分隔符
根据日期创建对订单编号
@Override
public int insert_class_listImp(Map<Object, String> on) {
Calendar cal = Calendar.getInstance();
int y = cal.get(Calendar.YEAR) % 100;
int m = cal.get(Calendar.MONTH);
String Organization_No;
if (++m < 10) {
Organization_No = "PK" + on.get("Organization_No") + String.valueOf(y) + "0" + String.valueOf(m);
} else {
Organization_No = "PK" + on.get("Organization_No") + String.valueOf(y) + String.valueOf(m);
}
String a = daoClass.maxScheduling_Code(Organization_No);
int insetAllStudent_try;
try {
if ("0".equals(a)) {
on.put("Scheduling_Code", Organization_No + "0001");
} else {
int result = Integer.parseInt(a.substring(a.length() - 4));
on.put("Scheduling_Code", Organization_No + String.format("%04d", result + 1));
}
insetAllStudent_try=daoClass.insert_class_list(on);
} catch (Exception e) {
insetAllStudent_try=0;
}
return insetAllStudent_try;
}
在代码中if (++m < 10) 保证当日期为1-9号时候也可以呈现两位字符列如
20230606保证大家的编号长度一致
我的daoClass.maxScheduling_Code方法是模糊查询查看是否最大值为空为空创建:
PK<机构编号>2023060600001
不为空获取最大致后四位自增1新增!
<select id="maxScheduling_Code" resultType="java.lang.String">
SELECT RIGHT(CAST(IFNULL(MAX(Scheduling_Code), '0') AS CHAR),4) AS max_suffix
FROM dd_ClassScheduling WHERE Scheduling_Code LIKE concat(#{Scheduling_Code},'%')
</select>