|
@@ -16,13 +16,14 @@ import java.util.Map;
|
|
|
public enum CodeEnum {
|
|
|
|
|
|
// 供应商code
|
|
|
- SUPPLIER("GY", null, "code", SupplierService.class),
|
|
|
+ SUPPLIER("GY", null, "code", 5, SupplierService.class),
|
|
|
// 物料code
|
|
|
- MATERIAL("M", null, "code", MaterialService.class);
|
|
|
+ MATERIAL("M", null, "code", 5, MaterialService.class);
|
|
|
|
|
|
- CodeEnum(String prefix, String dateFormat, String codeFieldName, Class<? extends IService<?>> entityCls) {
|
|
|
+ CodeEnum(String prefix, String dateFormat, String codeFieldName, Integer length, Class<? extends IService<?>> entityCls) {
|
|
|
this.prefix = prefix;
|
|
|
this.dateFormat = dateFormat;
|
|
|
+ this.length = length;
|
|
|
this.codeFieldName = codeFieldName;
|
|
|
this.service = SpringUtil.getBean(entityCls);
|
|
|
}
|
|
@@ -31,6 +32,8 @@ public enum CodeEnum {
|
|
|
private final String prefix;
|
|
|
// 编码加日期规则
|
|
|
private final String dateFormat;
|
|
|
+ // 长度
|
|
|
+ private final Integer length;
|
|
|
// 编码字段名
|
|
|
private final String codeFieldName;
|
|
|
// service
|
|
@@ -57,27 +60,22 @@ public enum CodeEnum {
|
|
|
.one();
|
|
|
|
|
|
if (obj == null) {
|
|
|
- return itemPrefix + "00001";
|
|
|
+ return itemPrefix + autoGenericCode(0, length);
|
|
|
}
|
|
|
|
|
|
Map<String, Object> map = Convert.toMap(String.class, Object.class, obj);
|
|
|
|
|
|
String code = Convert.toStr(map.get(codeFieldName));
|
|
|
-
|
|
|
Integer codeNum = Convert.toInt(code.substring(itemPrefix.length()));
|
|
|
|
|
|
- codeNum++;
|
|
|
+ return itemPrefix + autoGenericCode(codeNum, length);
|
|
|
+ }
|
|
|
|
|
|
- if (codeNum < 10) {
|
|
|
- return itemPrefix + "0000" + codeNum;
|
|
|
- } else if (codeNum < 100) {
|
|
|
- return itemPrefix + "000" + codeNum;
|
|
|
- } else if (codeNum < 1000) {
|
|
|
- return itemPrefix + "00" + codeNum;
|
|
|
- } else if (codeNum < 10000) {
|
|
|
- return itemPrefix + "0" + codeNum;
|
|
|
- }
|
|
|
- return itemPrefix + codeNum;
|
|
|
+ /**
|
|
|
+ * 不够位数的在前面补0,保留num的长度位数字
|
|
|
+ */
|
|
|
+ private static String autoGenericCode(Integer code, int num) {
|
|
|
+ return String.format("%0" + num + "d", code + 1);
|
|
|
}
|
|
|
|
|
|
}
|