| | |
| | | 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(); |
| | |
| | | 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); |
| | |
| | | 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(); |
| | |
| | | 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(); |
| | |
| | | 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; |
| | |
| | | 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); |
| | | } |
| | | } |
| | | } |