diff --git a/src/main/java/com/qs/serve/common/util/CodeGenUtil.java b/src/main/java/com/qs/serve/common/util/CodeGenUtil.java index 30b1d549..3c3f0b5c 100644 --- a/src/main/java/com/qs/serve/common/util/CodeGenUtil.java +++ b/src/main/java/com/qs/serve/common/util/CodeGenUtil.java @@ -28,6 +28,16 @@ public class CodeGenUtil { private String code; } + @Getter + @AllArgsConstructor + public enum SourceDataKey{ + SaleRegion("S","SaleRegion"), + BizRegion("B","BizRegion"); + private String prefix; + private String code; + } + + private static final int split_num = 1000; @@ -39,6 +49,19 @@ public class CodeGenUtil { "X" , "Y" }; + public static Long getIdx(String key){ + RedisService redisService = SpringUtils.getBean(RedisService.class); + Long value = redisService.getLong(key); + if(value==null){ + redisService.set(key,1); + value = 1L; + }else { + value++; + } + redisService.set(key,value); + return value; + } + public static String generate(SourceKey sourceKey){ try { LocalDate localDateTime = LocalDate.now(); @@ -46,38 +69,33 @@ public class CodeGenUtil { String localTime = df.format(localDateTime); localTime = localTime.substring(2); String key = "code_index:"+sourceKey.getCode()+":"+localTime; - RedisService redisService = SpringUtils.getBean(RedisService.class); - Long value = redisService.getLong(key); - if(value==null){ - redisService.set(key,1); - value = 1L; - }else { - value++; - } - redisService.set(key,value); - String digitsNum = ""; - String appendStr = value+""; - if(value>split_num){ - appendStr = (value%100)+""; - Long d = value/split_num; - digitsNum = digits2[d.intValue()]; - } - StringBuilder appendZeros = new StringBuilder(); - for (int i = (appendStr+digitsNum).length(); i < 3; i++) { - appendZeros.append("0"); - } - return localTime + digitsNum + appendZeros + appendStr; + return localTime + getCommonValue(key); } catch (BeansException e) { e.printStackTrace(); } return IdUtil.getSnowflakeNextIdStr(); } - public static void main(String[] args) { - long value = 99; - long v2 = value/1000; - System.out.println(v2); - System.out.println(value%1000); + public static String getCommonValue(String key){ + Long value = getIdx(key); + String digitsNum = ""; + String appendStr = value+""; + if(value>split_num){ + appendStr = (value%100)+""; + Long d = value/split_num; + digitsNum = digits2[d.intValue()]; + } + StringBuilder appendZeros = new StringBuilder(); + for (int i = (appendStr+digitsNum).length(); i < 3; i++) { + appendZeros.append("0"); + } + return digitsNum + appendZeros + appendStr; + } + + public static String getDataCode(SourceDataKey dataKey){ + String key = "code_data_index:"+dataKey.getCode(); + String commonVal = getCommonValue(key); + return dataKey.getPrefix() + commonVal; } /** diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java index 2822d3c6..e6ead1e4 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java @@ -323,6 +323,9 @@ public class BmsRegionController { if(param.getId()==null){ param.setId("A"+IdUtil.getSnowFlakeId()); } + if (param.getCode()==null){ + param.setCode(CodeGenUtil.getDataCode(CodeGenUtil.SourceDataKey.SaleRegion)); + } boolean result = bmsRegionService.saveBmsRegion(param); return R.isTrue(result); } diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegionServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegionServiceImpl.java index 23757576..30136d5d 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegionServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegionServiceImpl.java @@ -57,16 +57,16 @@ public class BmsRegionServiceImpl extends ServiceImpl @Override public boolean updateBmsRegionById(BmsRegion param){ BmsRegion ori = this.getById(param.getId()); - String[] paths = ori.getPathIds().split("_"); - for (String path : paths) { - if(path.equals(ori.getPid())){ - Assert.throwEx("不能选子节点为父级节点"); - } - } param = this.flushSetLevel(param); boolean changePid = !ori.getPid().equals(param.getPid()); boolean b = this.updateById(param); if(!ori.getName().equals(param.getName())||changePid) { + String[] paths = ori.getPathIds().split("_"); + for (String path : paths) { + if(path.equals(ori.getPid())){ + Assert.throwEx("不能选子节点为父级节点"); + } + } //更新相关表(网点) this.updatePathByPid(param.getId()); if(changePid){