whyclxw
2024-09-19 ef8592668904f629f33c7c1f3e5ec0776f74ebc0
2024-9-19bug修改
4个文件已修改
93 ■■■■ 已修改文件
res.db 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/dto/XmlFileOpreate.java 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/BattgroupData.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattGroupDataService.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
res.db
Binary files differ
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();
@@ -136,20 +138,24 @@
                    battData.setPreCapPercent(preCapPercent);
                    //预估容量
                    battData.setEstimatedCap(preCapPercent*battCap);
                    //内阻偏差率
                   /* //内阻偏差率设置默认值为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);
@@ -157,17 +163,37 @@
            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);
            }
            fileInfo.setFileParam(fparam);
            fiso.close();
@@ -287,7 +313,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();
@@ -324,13 +352,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;
@@ -341,6 +374,29 @@
                            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);
                    }
                }
            }
src/main/java/com/whyc/pojo/BattgroupData.java
@@ -96,4 +96,9 @@
    @ApiModelProperty("预估容量百分比字符串")
    private String preCapPercentStr;
    @TableField(exist = false)
    @ApiModelProperty("平均标称内阻(计算出的)")
    private float avgRes ;
}
src/main/java/com/whyc/service/BattGroupDataService.java
@@ -128,16 +128,8 @@
            //预估容量
            data.setEstimatedCap(preCapPercent*stdCap);
            //内阻偏差率
            /*float resDevRate=(Float.valueOf(br)-stdRes)/stdRes;
            data.setResDevRate(resDevRate);*/
            //内阻偏差率
            if(stdRes==0){
                data.setResDevRate(Float.POSITIVE_INFINITY);
            }else{
                float resDevRate=(Float.valueOf(br)-stdRes)/stdRes;
                data.setResDevRate(resDevRate);
            }
            float resDevRate=(Float.valueOf(br)-stdRes)/stdRes;
            data.setResDevRate(resDevRate);
        });
        info.setDataList(dataList);