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