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