From 7c566ca7b8d0ebdd8d5ae69fe4622f8ac19b0b1d Mon Sep 17 00:00:00 2001
From: 杨凯 <398860375@qq.com>
Date: 星期一, 16 十月 2023 21:12:19 +0800
Subject: [PATCH] 编码生成服务

---
 consum-base/src/main/java/com/consum/base/core/CodeGeneratorService.java |   85 ++++++++++++++++++++++++++++--------------
 1 files changed, 57 insertions(+), 28 deletions(-)

diff --git a/consum-base/src/main/java/com/consum/base/core/CodeGeneratorService.java b/consum-base/src/main/java/com/consum/base/core/CodeGeneratorService.java
index b976bbc..b92480e 100644
--- a/consum-base/src/main/java/com/consum/base/core/CodeGeneratorService.java
+++ b/consum-base/src/main/java/com/consum/base/core/CodeGeneratorService.java
@@ -1,8 +1,15 @@
 package com.consum.base.core;
 
 
+import com.consum.base.core.tools.SqlParameter;
+import com.consum.model.po.BaseCodeIndexing;
+import com.walker.infrastructure.utils.DateUtils;
+import com.walker.infrastructure.utils.NumberGenerator;
 import com.walker.jdbc.service.BaseServiceImpl;
+import io.swagger.models.auth.In;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.util.IdGenerator;
 
 import java.util.List;
 
@@ -13,42 +20,56 @@
 public class CodeGeneratorService extends BaseServiceImpl {
 
 
+    public static void main(String[] args) {
+        String prefix = "RK";
+        int[] days = DateUtils.getCurrentYearMonthDay();
+        prefix +=  StringUtils.removeStart(Integer.valueOf(days[0]).toString(),"20");
+        prefix += days[1] < 9 ? "0" + Integer.valueOf(days[1]).toString() : days[1];
+        prefix += days[2] < 9 ? "0" + Integer.valueOf(days[2]).toString() : days[2];
+        System.out.println(prefix);
+    }
+
+    private String createCodeByPrefix(String prefix,int length){
+        String CODE_PREFIX = prefix;
+        String sql = "SELECT * from BASE_CODE_INDEXING where CODE_PREFIX=:CODE_PREFIX";
+
+        BaseCodeIndexing  codeIndexing = get(sql,new SqlParameter().put("CODE_PREFIX",CODE_PREFIX),new BaseCodeIndexing());
+        if (codeIndexing == null){
+            codeIndexing = new BaseCodeIndexing();
+            codeIndexing.setId(NumberGenerator.getLongSequenceNumber());
+            codeIndexing.setCodePrefix(CODE_PREFIX);
+            codeIndexing.setCodeIndex(1);
+            insert(codeIndexing);
+        } else {
+            codeIndexing.setCodeIndex(codeIndexing.getCodeIndex()+1);
+            update(codeIndexing);
+        }
+
+        String index = codeIndexing.getCodeIndex().toString();
+        String intPrefix = "0";
+        for (int i=1;i<(length-index.length());i++){
+            intPrefix += "0";
+        }
+        return CODE_PREFIX+intPrefix+index;
+    }
+
     /**
      * 鑾峰彇浠撳簱缂栫爜
      *
      * @return 浠撳簱缂栫爜瑙勫垯涓猴細WH+鍥涗綅鏁板瓧杩炲彿锛�0001锛�
      */
     public String createWarehouseCode() {
-        // TODO: 10/10/2023  鑾峰彇浠撳簱缂栫爜
-
-        String CODE_PREFIX = CodeGeneratorEnum.Warehouse.getValue();
-        /*
+      /*
         1.SELECT CODE_INDEX from BASE_CODE_INDEXING where CODE_PREFIX=:CODE_PREFIX
           CODE_PREFIX鏄�"WH"
           濡傛灉鑾峰彇涓嶅埌锛屽氨浠�1寮�濮嬶紝浣嗛渶瑕佽ˉ鍏ㄥ墠闈㈢殑"0"杩斿洖 "0001"锛涘悓鏃堕渶瑕佹彃鍏ユ暟鎹簱
           insert BASE_CODE_INDEXING CODE_INDEX=1 CODE_PREFIX鏄�="WH"  where CODE_PREFIX=:CODE_PREFIX;
          2.濡傛灉鑳藉鑾峰彇鍒帮紝鍒欏皢CODE_INDEX=CODE_INDEX+1鍚庢洿鏂板埌鏁版嵁搴擄紝琛ュ叏鍓嶉潰鐨�"0"杩斿洖 "0001"
          */
-        return null;
-    }
-
-    /**
-     * 杩炵画鑾峰彇澶氫釜浠撳簱缂栫爜
-     *
-     * @return 浠撳簱缂栫爜瑙勫垯涓猴細WH+鍥涗綅鏁板瓧杩炲彿锛�0001锛�
-     */
-    public List<String> createWarehouseCodeList(int count) {
-        // TODO: 10/10/2023  鑾峰彇浠撳簱缂栫爜
-
-        String CODE_PREFIX = CodeGeneratorEnum.Warehouse.getValue();
-        /*
-        1.SELECT CODE_INDEX from BASE_CODE_INDEXING where CODE_PREFIX=:CODE_PREFIX
-          CODE_PREFIX鏄�"WH"
-          濡傛灉鑾峰彇涓嶅埌锛屽氨浠�1寮�濮嬶紝浣嗛渶瑕佽ˉ鍏ㄥ墠闈㈢殑"0"杩斿洖 "0001"锛涘悓鏃堕渶瑕佹彃鍏ユ暟鎹簱
-          insert BASE_CODE_INDEXING CODE_INDEX=1 CODE_PREFIX鏄�="WH"  where CODE_PREFIX=:CODE_PREFIX;
-         2.濡傛灉鑳藉鑾峰彇鍒帮紝鍒欏皢CODE_INDEX=CODE_INDEX+1鍚庢洿鏂板埌鏁版嵁搴擄紝琛ュ叏鍓嶉潰鐨�"0"杩斿洖 "0001"
-         */
-        return null;
+        synchronized (this){
+            String CODE_PREFIX = CodeGeneratorEnum.Warehouse.getValue();
+            return createCodeByPrefix(CODE_PREFIX,4);
+        }
     }
 
     /**
@@ -59,8 +80,6 @@
      * @return 鍏�8浣嶏紝 涓�浣嶇墿鍝佸垎绫伙紙A/B/C锛�+涓�浣嶇被鍨嬶紙1涓洪泦閲囷紝2涓鸿嚜閲囷級+6浣嶈繛缁暟瀛楀彿
      */
     public String createGoodsTemplateCode(String classify, int type) {
-        String prefix = classify + Integer.valueOf(type).toString();
-
         /*
         1.SELECT CODE_INDEX from BASE_CODE_INDEXING where CODE_PREFIX=:CODE_PREFIX
           CODE_PREFIX鏄� prefix
@@ -68,7 +87,10 @@
           insert BASE_CODE_INDEXING CODE_INDEX=1 CODE_PREFIX鏄�=:prefix  where CODE_PREFIX=:CODE_PREFIX;
          2.濡傛灉鑳藉鑾峰彇鍒帮紝鍒欏皢CODE_INDEX=CODE_INDEX+1鍚庢洿鏂板埌鏁版嵁搴擄紝琛ュ叏鍓嶉潰鐨�"0"杩斿洖 "000001"
          */
-        return null;
+        synchronized (this){
+            String prefix = classify + Integer.valueOf(type).toString();
+            return createCodeByPrefix(prefix,6);
+        }
     }
 
     /**
@@ -79,7 +101,14 @@
      */
     public String createBusinessFormCode(CodeGeneratorEnum codeGeneratorEnum) {
 
-        return null;
+        synchronized (this){
+            String prefix = codeGeneratorEnum.getValue();
+            int[] days = DateUtils.getCurrentYearMonthDay();
+            prefix +=  StringUtils.removeStart(Integer.valueOf(days[0]).toString(),"20");
+            prefix += days[1] < 9 ? "0" + Integer.valueOf(days[1]).toString() : days[1];
+            prefix += days[2] < 9 ? "0" + Integer.valueOf(days[2]).toString() : days[2];
+            return createCodeByPrefix(prefix,4);
+        }
     }
 
 

--
Gitblit v1.9.1