From ed769962f71894a5e75a1269c161e76e613aec7e Mon Sep 17 00:00:00 2001 From: whycxzp <perryhsu@163.com> Date: 星期二, 20 九月 2022 15:02:44 +0800 Subject: [PATCH] 更新分析,对比 --- src/main/java/com/whyc/service/BattGroupDataService.java | 83 ++++++++++++++++++++++++++++++++++++++--- 1 files changed, 77 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/whyc/service/BattGroupDataService.java b/src/main/java/com/whyc/service/BattGroupDataService.java index cc04f9e..cdad6ac 100644 --- a/src/main/java/com/whyc/service/BattGroupDataService.java +++ b/src/main/java/com/whyc/service/BattGroupDataService.java @@ -4,11 +4,16 @@ import com.whyc.mapper.BattGroupDataMapper; import com.whyc.pojo.BattgroupData; import com.whyc.pojo.FileInfo; +import com.whyc.util.MathUtil; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.HashMap; import java.util.LinkedList; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; @Service public class BattGroupDataService { @@ -24,12 +29,78 @@ List<BattgroupData> baseDataList = getListWithTestTime(baseBattGroupId); List<BattgroupData> dataList = getListWithTestTime(battGroupId); - //鍐呴樆鍙樺寲鐜�,鍧囦竴鎬�;鐢靛帇鍙樺寲鐜�,鍧囦竴鎬� TODO 鍧囦竴鎬� - List<Float> resChangeRate = new LinkedList<>(); - List<Float> volChangeRate = new LinkedList<>(); - List<Float> resBalanceRate = new LinkedList<>(); - List<Float> volBalanceRate = new LinkedList<>(); + //鍐呴樆鍙樺寲鐜�,鍧囦竴鎬�;鐢靛帇鍙樺寲鐜�,鍧囦竴鎬� + Map<String,List<String>> map = new HashMap<>(); + List<String> resChangeRate = new LinkedList<>(); + List<String> volChangeRate = new LinkedList<>(); + List<String> resBalanceRate = new LinkedList<>(); + List<String> volBalanceRate = new LinkedList<>(); - return new Response().setII(1,baseDataList,dataList,null); + float sdBaseBr = MathUtil.getStandardDeviation(baseDataList.stream().map(BattgroupData::getBr).collect(Collectors.toList())); + float sdBaseBv = MathUtil.getStandardDeviation(baseDataList.stream().map(BattgroupData::getBv).collect(Collectors.toList())); + float sdBr = MathUtil.getStandardDeviation(dataList.stream().map(BattgroupData::getBr).collect(Collectors.toList())); + float sdBv = MathUtil.getStandardDeviation(dataList.stream().map(BattgroupData::getBv).collect(Collectors.toList())); + + resBalanceRate.add(sdBaseBr*100+"%"); + resBalanceRate.add(sdBr*100+"%"); + + volBalanceRate.add(sdBaseBv*100+"%"); + volBalanceRate.add(sdBv*100+"%"); + + for (int i = 0; i < dataList.size(); i++) { + BattgroupData data = dataList.get(i); + //杩欎箞鍋氭槸鍦� 鐢垫睜鍗曚綋鏁版嵁鎸夊瓨鍌ㄩ『搴忎笖涓嶅嚭鐜版柇灞� + BattgroupData baseData = null; + if(i< baseDataList.size()) { + baseData = baseDataList.get(i); + } + if(baseData!=null){ + //杩涜鍐呴樆鍜岀數鍘嬪彉鍖栫巼璁$畻 + Float br = data.getBr(); + Float baseBr = baseData.getBr(); + if(baseBr == 0.0f){ + if(br == 0.0f){ + resChangeRate.add("0.0%"); + }else{ + resChangeRate.add("-"); + } + }else { + float brFloat = BigDecimal.valueOf(br).subtract(BigDecimal.valueOf(baseBr)).divide(BigDecimal.valueOf(baseBr), 4, BigDecimal.ROUND_HALF_UP).floatValue(); + resChangeRate.add(brFloat * 100 + "%"); + } + + Float bv = data.getBv(); + Float baseBv = baseData.getBv(); + if(baseBv == 0.0f){ + if(bv == 0.0f){ + volChangeRate.add("0.0%"); + }else{ + volChangeRate.add("-"); + } + }else { + float bvFloat = BigDecimal.valueOf(bv).subtract(BigDecimal.valueOf(baseBv)).divide(BigDecimal.valueOf(baseBv), 4, BigDecimal.ROUND_HALF_UP).floatValue(); + volChangeRate.add(bvFloat * 100 + "%"); + } + } + } + //灏嗗潎涓�鎬у��,涔熻繘琛屽彉鍖栫巼璁$畻 + float brFloat = BigDecimal.valueOf(sdBr).subtract(BigDecimal.valueOf(sdBaseBr)).divide(BigDecimal.valueOf(sdBaseBr),4, BigDecimal.ROUND_HALF_UP).floatValue(); + resChangeRate.add(brFloat*100+"%"); + + float bvFloat = BigDecimal.valueOf(sdBv).subtract(BigDecimal.valueOf(sdBaseBv)).divide(BigDecimal.valueOf(sdBaseBv),4, BigDecimal.ROUND_HALF_UP).floatValue(); + volChangeRate.add(bvFloat*100+"%"); + + map.put("resChangeRate",resChangeRate); + map.put("volChangeRate",volChangeRate); + map.put("resBalanceRate",resBalanceRate); + map.put("volBalanceRate",volBalanceRate); + return new Response().setIII(1,baseDataList,dataList,map,null); + } + + public static void main(String[] args) { + Float bv = 0.353f; + Float baseBv = 0.354f; + float bvFloat = BigDecimal.valueOf(bv).subtract(BigDecimal.valueOf(baseBv)).divide(BigDecimal.valueOf(baseBv),4,BigDecimal.ROUND_HALF_UP).floatValue(); + System.out.println((bvFloat * 100 + "%")); } } -- Gitblit v1.9.1