From b46f7fa6d77852ae9e28a062da234a2ddf9405fb Mon Sep 17 00:00:00 2001
From: whyclxw <810412026@qq.com>
Date: 星期一, 31 三月 2025 16:09:51 +0800
Subject: [PATCH] 2025-3-22定制修改导出去掉容量和连接条

---
 src/main/java/com/whyc/dto/XmlFileOpreate.java |  104 ++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 89 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/whyc/dto/XmlFileOpreate.java b/src/main/java/com/whyc/dto/XmlFileOpreate.java
index 8bbed61..1911faf 100644
--- a/src/main/java/com/whyc/dto/XmlFileOpreate.java
+++ b/src/main/java/com/whyc/dto/XmlFileOpreate.java
@@ -113,7 +113,9 @@
             Iterator nodes = rootnode.elementIterator("node_batt_num");
             BattgroupInfo battInfo=new BattgroupInfo();
             List<BattgroupData> battDataList=new ArrayList();
-            List<Float> list=new ArrayList();//瀛樻斁鎵�鏈夌殑鍐呴樆鏁版嵁
+            //List<Float> list=new ArrayList();//瀛樻斁鎵�鏈夌殑鍐呴樆鏁版嵁
+            List<Float> avglist=new ArrayList();//瀛樻斁鏈夋晥鐨勫唴闃绘暟鎹敤浜庤绠楀亸宸巼锛堝綋鏍囩О鍐呴樆涓�0鏃讹紝鐢ㄥ钩鍐呴樆锛�
+            int avgNum=0;
             if(nodes!=null){
                 while (nodes.hasNext()){
                     node= (Element) nodes.next();
@@ -131,21 +133,29 @@
                         esCap=battRes/Float.valueOf(br);
                     }
                     battData.setEstimatedCap(esCap*battCap);*/
-                    float preCapPercent=MathUtil.getPreCapTest(Float.valueOf(br),battRes);
+                    /* float preCapPercent=MathUtil.getPreCapTest(Float.valueOf(br),battRes);
                     //瀹归噺鐧惧垎姣斾慨鏀�
                     battData.setPreCapPercent(preCapPercent);
                     //棰勪及瀹归噺
                     battData.setEstimatedCap(preCapPercent*battCap);
-                    //鍐呴樆鍋忓樊鐜�
-                    float resDevRate=(Float.valueOf(br)-battRes)/battRes;
-                    battData.setResDevRate(resDevRate);
-
+                   //鍐呴樆鍋忓樊鐜囪缃粯璁ゅ�间负0
+                    if(battRes==0){
+                        battData.setResDevRate(Float.POSITIVE_INFINITY);
+                    }else{
+                        float resDevRate=(Float.valueOf(br)-battRes)/battRes;
+                        battData.setResDevRate(resDevRate);
+                    }*/
                     file_node=node.element("bs_1");
                     battData.setBs(file_node.getTextTrim());
                     file_node=node.element("cr_1");
                     battData.setCr(file_node.getTextTrim());
                     battDataList.add(battData);
-                    list.add(Float.valueOf(battData.getBr()));
+                    //list.add(Float.valueOf(battData.getBr()));
+                    //鑾峰彇鏈夋晥鍐呴樆
+                    if(Float.parseFloat(battData.getBv())>0&&Float.parseFloat(battData.getBr())>0){
+                        avgNum++;
+                        avglist.add(Float.parseFloat(battData.getBr()));
+                    }
                 }
             }
             battInfo.setBattDataList(battDataList);
@@ -153,17 +163,42 @@
             fileInfo.getBattInfoList().add(battInfo);
             //褰撴爣绉板唴闃讳负0鏃讹紝璁$畻鏈�浣庝笁鍒嗕箣涓�鍗曚綋鏁板唴闃绘暟鎹殑骞冲潎鍊�
             if(fparam.getBattRes()==0){
-                if(list!=null&&list.size()>0){
+                /*if(list!=null&&list.size()>0){
                     int battNum= (int) Math.ceil(list.size()/3);
                     float resSum=0f;
                     Collections.sort(list);
-                    System.out.println(list.toString());
                     for(int i=0;i<battNum;i++){
                         resSum=resSum+list.get(i);
                     }
                     String avgRes=String.format("%.2f",resSum/battNum);
                     fparam.setBattRes(Float.valueOf(avgRes));
+                }*/
+                //璁$畻骞冲眬鍐呴樆
+                if(avglist!=null&&avglist.size()>0){
+                    Collections.sort(avglist);
+                    System.err.println(avglist.toString());
+                    float sunBr=0f;
+                    avgNum= (int) Math.ceil(0.01*avgNum*(100-fparam.getSamplePercent()));
+                    int effNum=0;
+                    for (int i=0;i<avglist.size();i++) {
+                        if(i!=0&&i<=avgNum){
+                            sunBr+=avglist.get(i);
+                            effNum++;
+                        }
+                    }
+                    String avgRes=String.format("%.2f",sunBr/effNum);
+                    fparam.setBattRes(Float.valueOf(avgRes));
                 }
+            }
+            float effRes=fparam.getBattRes();  //鏈夋晥鐨勬爣绉板唴闃�
+            for (BattgroupData battData:battInfo.getBattDataList()) {
+                float resDevRate=(Float.valueOf(battData.getBr())-effRes)/effRes;
+                battData.setResDevRate(resDevRate);
+                float preCapPercent=MathUtil.getPreCapTest(Float.valueOf(battData.getBr()),effRes);
+                //瀹归噺鐧惧垎姣斾慨鏀�
+                battData.setPreCapPercent(preCapPercent);
+                //棰勪及瀹归噺
+                battData.setEstimatedCap(preCapPercent*battCap);
             }
             fileInfo.setFileParam(fparam);
             fiso.close();
@@ -283,7 +318,9 @@
                     Iterator iterator1 = node.elementIterator();
                     BattgroupInfo battInfo=new BattgroupInfo();
                     List<BattgroupData> battDataList=new ArrayList();
-                    List<Float> list=new ArrayList();//瀛樻斁鎵�鏈夌殑鍐呴樆鏁版嵁
+                    //List<Float> list=new ArrayList();//瀛樻斁鎵�鏈夌殑鍐呴樆鏁版嵁
+                    List<Float> avglist=new ArrayList();//瀛樻斁鏈夋晥鐨勫唴闃绘暟鎹敤浜庤绠楀亸宸巼锛堝綋鏍囩О鍐呴樆涓�0鏃讹紝鐢ㄥ钩鍐呴樆锛�
+                    int avgNum=0;
                     while (iterator1.hasNext()){
                         file_node= (Element) iterator1.next();
                         BattgroupData battData=new BattgroupData();
@@ -300,14 +337,18 @@
                             esCap=battRes/Float.valueOf(br);
                         }
                         battData.setEstimatedCap(esCap*battCap);*/
-                        float preCapPercent=MathUtil.getPreCapTest(Float.valueOf(br),battRes);
+                        /*float preCapPercent=MathUtil.getPreCapTest(Float.valueOf(br),battRes);
                         //瀹归噺鐧惧垎姣斾慨鏀�
                         battData.setPreCapPercent(preCapPercent);
                         //棰勪及瀹归噺
                         battData.setEstimatedCap(preCapPercent*battCap);
                         //鍐呴樆鍋忓樊鐜�
-                        float resDevRate=(Float.valueOf(br)-battRes)/battRes;
-                        battData.setResDevRate(resDevRate);
+                        if(battRes==0){
+                            battData.setResDevRate(Float.POSITIVE_INFINITY);
+                        }else{
+                            float resDevRate=(Float.valueOf(br)-battRes)/battRes;
+                            battData.setResDevRate(resDevRate);
+                        }*/
 
                         batt_node=file_node.element("bs_1");
                         battData.setBs(batt_node.getTextTrim());
@@ -316,13 +357,18 @@
                         batt_node=file_node.element("er_1");
                         battData.setEr(Integer.parseInt(batt_node.getTextTrim()));
                         battDataList.add(battData);
-                        list.add(Float.valueOf(battData.getBr()));
+                        //list.add(Float.valueOf(battData.getBr()));
+                        //鑾峰彇鏈夋晥鍐呴樆
+                        if(Float.parseFloat(battData.getBv())>0&&Float.parseFloat(battData.getBr())>0){
+                            avgNum++;
+                            avglist.add(Float.parseFloat(battData.getBr()));
+                        }
                     }
                     battInfo.setTestTime(ActionUtil.sdfwithALL.parse(testTime));
                     battInfo.setBattDataList(battDataList);
                     fileInfo.getBattInfoList().add(battInfo);
                     //褰撴爣绉板唴闃讳负0鏃讹紝璁$畻鏈�浣庝笁鍒嗕箣涓�鍗曚綋鏁板唴闃绘暟鎹殑骞冲潎鍊�
-                    if(fparam.getBattRes()==0){
+                    /*if(fparam.getBattRes()==0){
                         if(list!=null&&list.size()>0){
                             int battNum= (int) Math.ceil(list.size()/3);
                             float resSum=0f;
@@ -333,6 +379,34 @@
                             String avgRes=String.format("%.2f",resSum/battNum);
                             fparam.setBattRes(Float.valueOf(avgRes));
                         }
+                    }*/
+                    if(fparam.getBattRes()==0){
+                        //璁$畻骞冲眬鍐呴樆
+                        if(avglist!=null&&avglist.size()>0){
+                            Collections.sort(avglist);
+                            System.err.println(avglist.toString());
+                            float sunBr=0f;
+                            avgNum= (int) Math.ceil(0.01*avgNum*(100-fparam.getSamplePercent()));
+                            int effNum=0;
+                            for (int i=0;i<avglist.size();i++) {
+                                if(i!=0&&i<=avgNum){
+                                    sunBr+=avglist.get(i);
+                                    effNum++;
+                                }
+                            }
+                            String avgRes=String.format("%.2f",sunBr/effNum);
+                            fparam.setBattRes(Float.valueOf(avgRes));
+                        }
+                    }
+                    float effRes=fparam.getBattRes();  //鏈夋晥鐨勬爣绉板唴闃�
+                    for (BattgroupData battData:battInfo.getBattDataList()) {
+                        float resDevRate=(Float.valueOf(battData.getBr())-effRes)/effRes;
+                        battData.setResDevRate(resDevRate);
+                        float preCapPercent=MathUtil.getPreCapTest(Float.valueOf(battData.getBr()),effRes);
+                        //瀹归噺鐧惧垎姣斾慨鏀�
+                        battData.setPreCapPercent(preCapPercent);
+                        //棰勪及瀹归噺
+                        battData.setEstimatedCap(preCapPercent*battCap);
                     }
                 }
             }

--
Gitblit v1.9.1