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