home 2 жил өмнө
parent
commit
afab24bc3a

+ 14 - 16
hx-service/victoriatourist/src/main/java/com/fjhx/uitl/code/CodeEnum.java

@@ -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);
     }
 
 }