From 78331b154ab9e22e28d914ff80097044078eea3c Mon Sep 17 00:00:00 2001 From: Yen Date: Tue, 18 Jul 2023 09:46:32 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=BC=96=E7=A0=81=E8=A1=A5=E9=9B=B6?= =?UTF-8?q?=EF=BC=9B=E6=88=90=E6=9C=AC=E4=B8=AD=E5=BF=83=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/qs/serve/common/util/CodeGenUtil.java | 43 +++++++--- .../impl/BmsCenterExtendBuildServiceImpl.java | 80 ++++++++++++++----- 2 files changed, 92 insertions(+), 31 deletions(-) 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 58a0ec14..30b1d549 100644 --- a/src/main/java/com/qs/serve/common/util/CodeGenUtil.java +++ b/src/main/java/com/qs/serve/common/util/CodeGenUtil.java @@ -28,9 +28,24 @@ public class CodeGenUtil { private String code; } + private static final int split_num = 1000; + + + final static String[] digits2 = { + "A" , "B" , "C" , "D" , "E" , + "F" , "G" , "H" ,"J" , "K" , + "L" , "M" , "N" , "P" , + "Q" , "R" , "T" , "U" , "V" , "W" , + "X" , "Y" + }; + public static String generate(SourceKey sourceKey){ try { - String key = "code_index:"+sourceKey.getCode(); + LocalDate localDateTime = LocalDate.now(); + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMMdd"); + 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){ @@ -39,26 +54,32 @@ public class CodeGenUtil { }else { value++; } - if(value>10000){ - redisService.set(key,1); - }else { - redisService.set(key,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()]; } - LocalDate localDateTime = LocalDate.now(); - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMMdd"); - String localTime = df.format(localDateTime); - String appendStr = digits32(value); StringBuilder appendZeros = new StringBuilder(); - for (int i = appendStr.length(); i < 3; i++) { + for (int i = (appendStr+digitsNum).length(); i < 3; i++) { appendZeros.append("0"); } - return localTime.substring(2) + appendZeros + appendStr; + return localTime + digitsNum + appendZeros + appendStr; } 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); + } + /** * 32个字符,用来表示32进制 */ diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsCenterExtendBuildServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsCenterExtendBuildServiceImpl.java index 952cffe8..e5ad992f 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsCenterExtendBuildServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsCenterExtendBuildServiceImpl.java @@ -13,6 +13,7 @@ import com.qs.serve.modules.bms.mapper.BmsCenterExtendBuildMapper; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -34,9 +35,9 @@ public class BmsCenterExtendBuildServiceImpl extends ServiceImpl treeVoList, List buildList, BmsCenterExtendBuild parent) { + private void recursionBuildExtendCenter(List allTreeList, List buildList, BmsCenterExtendBuild parent) { //存放上级对象 - for (BmsCenterExtendTreeVo source : treeVoList) { + for (BmsCenterExtendTreeVo source : allTreeList) { BmsCenterExtendBuild build = new BmsCenterExtendBuild(); build.setBuildType(CenterExtendBuildType.TREE); build.setSourceId(source.getSourceId()); @@ -63,28 +64,67 @@ public class BmsCenterExtendBuildServiceImpl extends ServiceImpl parents = new ArrayList<>(); + this.filterParents(allTreeList, source, parents); + //修改为 从上往下 + Collections.reverse(parents); + for (int i = 0; i < parents.size(); i++) { + BmsCenterExtendTreeVo treeVo = parents.get(i); + //计算父级节点比率 + BigDecimal currParentWeightRate = treeVo.getWeightRate(); + for (int j = i+1; j < parents.size(); j++) { + BmsCenterExtendTreeVo nextTreeVo = parents.get(j); + currParentWeightRate = currParentWeightRate.multiply(nextTreeVo.getWeightRate()); + } + BmsCenterExtendBuild buildParentData = this.buildDataByTreeVo(treeVo, currParentWeightRate); + buildList.add(buildParentData); } - }else { //递归调用 - this.recursionBuildExtendCenter(treeVoList, buildList, build); + this.recursionBuildExtendCenter(allTreeList, buildList, build); + } + } + } + + /** + * 建立数据类型对象 + * @param source + * @param currParentWeightRate + * @return + */ + private BmsCenterExtendBuild buildDataByTreeVo(BmsCenterExtendTreeVo source, BigDecimal currParentWeightRate) { + BmsCenterExtendBuild parentData = new BmsCenterExtendBuild(); + parentData.setBuildType(CenterExtendBuildType.DATA); + parentData.setSourceId(source.getSourceId()); + parentData.setCenterType(source.getCenterType()); + parentData.setCenterId(source.getCenterId()); + parentData.setCenterCode(source.getCenterCode()); + parentData.setCenterName(source.getCenterName()); + parentData.setStartTime(source.getStartTime()); + parentData.setStopTime(source.getStopTime()); + parentData.setStopFlag(source.getStopFlag()); + parentData.setWeightRate(currParentWeightRate); + return parentData; + } + + /** + * 过滤获取父级节点(自下而上) + * @param allTreeList + * @param source + * @param parents + */ + private void filterParents(List allTreeList, BmsCenterExtendTreeVo source, List parents) { + String pid = source.getParentId(); + for (BmsCenterExtendTreeVo treeVo : allTreeList) { + if(treeVo.getId().equals(pid)){ + parents.add(treeVo); + if(!treeVo.getParentId().equals("0")){ + this.filterParents(allTreeList,treeVo,parents); + } + break; } } } From 15178770d9c879d919c44659ba178fb05fa49876 Mon Sep 17 00:00:00 2001 From: Yen Date: Tue, 18 Jul 2023 10:20:04 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=94=BF=E7=AD=96=E6=8E=92=E5=BA=8F?= =?UTF-8?q?=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qs/serve/modules/tzc/common/util/PolicySortWrapperUtil.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/qs/serve/modules/tzc/common/util/PolicySortWrapperUtil.java b/src/main/java/com/qs/serve/modules/tzc/common/util/PolicySortWrapperUtil.java index aee5eade..999beec2 100644 --- a/src/main/java/com/qs/serve/modules/tzc/common/util/PolicySortWrapperUtil.java +++ b/src/main/java/com/qs/serve/modules/tzc/common/util/PolicySortWrapperUtil.java @@ -105,6 +105,7 @@ public class PolicySortWrapperUtil { for (TbsScheduleItemBudget scheduleItemBudget : list) { if(scheduleItemBudget.getBudgetId().equals(costCondition.getBudgetId())){ newSortList.add(scheduleItemBudget); + break; } } }