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 | 247 +++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 206 insertions(+), 41 deletions(-) diff --git a/src/main/java/com/whyc/dto/XmlFileOpreate.java b/src/main/java/com/whyc/dto/XmlFileOpreate.java index d180d3b..1911faf 100644 --- a/src/main/java/com/whyc/dto/XmlFileOpreate.java +++ b/src/main/java/com/whyc/dto/XmlFileOpreate.java @@ -2,6 +2,7 @@ import com.whyc.pojo.*; +import com.whyc.util.MathUtil; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; @@ -64,7 +65,12 @@ } file_node=node.element("batt_res"); - fparam.setBattRes(Float.parseFloat(file_node.getTextTrim())); + if(file_node!=null){ + fparam.setBattRes(Float.parseFloat(file_node.getTextTrim())); + }else{ + fparam.setBattRes(0f); + } + file_node=node.element("batt_res_good"); if(file_node!=null){ fparam.setBattResGood(Float.parseFloat(file_node.getTextTrim())); @@ -100,27 +106,100 @@ if(file_node!=null){ fparam.setConnResBad(Float.parseFloat(file_node.getTextTrim())); } + + float battCap=fparam.getBattCap();//鏍囩О瀹归噺 + float battRes=fparam.getBattRes();//鏍囩О鍐呴樆 //-----鏍规嵁groupNum鐨勫�艰鍙栨祴璇曟暟鎹�---------------------------// Iterator nodes = rootnode.elementIterator("node_batt_num"); BattgroupInfo battInfo=new BattgroupInfo(); List<BattgroupData> battDataList=new ArrayList(); - - while (nodes.hasNext()){ - node= (Element) nodes.next(); - BattgroupData battData=new BattgroupData(); - battData.setMonNum(Integer.parseInt(node.attributeValue("batt_num"))); - file_node=node.element("bv_1"); - battData.setBv(file_node.getTextTrim()); - file_node=node.element("br_1"); - battData.setBr(file_node.getTextTrim()); - 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<Float> list=new ArrayList();//瀛樻斁鎵�鏈夌殑鍐呴樆鏁版嵁 + List<Float> avglist=new ArrayList();//瀛樻斁鏈夋晥鐨勫唴闃绘暟鎹敤浜庤绠楀亸宸巼锛堝綋鏍囩О鍐呴樆涓�0鏃讹紝鐢ㄥ钩鍐呴樆锛� + int avgNum=0; + if(nodes!=null){ + while (nodes.hasNext()){ + node= (Element) nodes.next(); + BattgroupData battData=new BattgroupData(); + battData.setMonNum(Integer.parseInt(node.attributeValue("batt_num"))); + file_node=node.element("bv_1"); + battData.setBv(file_node.getTextTrim()); + file_node=node.element("br_1"); + String br=file_node.getTextTrim(); + battData.setBr(br); + /*float esCap=0f; + if(battRes==0){ + esCap=1; + }else{ + esCap=battRes/Float.valueOf(br); + } + battData.setEstimatedCap(esCap*battCap);*/ + /* float preCapPercent=MathUtil.getPreCapTest(Float.valueOf(br),battRes); + //瀹归噺鐧惧垎姣斾慨鏀� + 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())); + //鑾峰彇鏈夋晥鍐呴樆 + if(Float.parseFloat(battData.getBv())>0&&Float.parseFloat(battData.getBr())>0){ + avgNum++; + avglist.add(Float.parseFloat(battData.getBr())); + } + } } battInfo.setBattDataList(battDataList); + battInfo.setTestTime(ActionUtil.sdfwithALL.parse(testTime)); fileInfo.getBattInfoList().add(battInfo); + //褰撴爣绉板唴闃讳负0鏃讹紝璁$畻鏈�浣庝笁鍒嗕箣涓�鍗曚綋鏁板唴闃绘暟鎹殑骞冲潎鍊� + if(fparam.getBattRes()==0){ + /*if(list!=null&&list.size()>0){ + int battNum= (int) Math.ceil(list.size()/3); + float resSum=0f; + Collections.sort(list); + 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(); } catch (NullPointerException | NumberFormatException | DocumentException | ParseException | FileNotFoundException e) { @@ -196,7 +275,12 @@ file_node=node.element("batt_vol"); fparam.setBattVol(Float.parseFloat(file_node.getTextTrim())); file_node=node.element("batt_res"); - fparam.setBattRes(Float.parseFloat(file_node.getTextTrim())); + if(file_node!=null){ + fparam.setBattRes(Float.parseFloat(file_node.getTextTrim())); + }else{ + fparam.setBattRes(0f); + } + file_node=node.element("gropNum"); fparam.setGroupNum(Integer.parseInt(file_node.getTextTrim())); @@ -224,30 +308,107 @@ //-----鏍规嵁groupNum鐨勫�艰鍙栨祴璇曟暟鎹�---------------------------// Iterator nodes = rootnode.elementIterator("node_group_num"); - while (nodes.hasNext()){ - node= (Element) nodes.next(); - Iterator iterator1 = node.elementIterator(); - BattgroupInfo battInfo=new BattgroupInfo(); - List<BattgroupData> battDataList=new ArrayList(); - while (iterator1.hasNext()){ - file_node= (Element) iterator1.next(); - BattgroupData battData=new BattgroupData(); - battData.setMonNum(Integer.parseInt(file_node.attributeValue("batt_num"))); - batt_node=file_node.element("bv_1"); - battData.setBv(batt_node.getTextTrim()); - batt_node=file_node.element("br_1"); - battData.setBr(batt_node.getTextTrim()); - batt_node=file_node.element("bs_1"); - battData.setBs(batt_node.getTextTrim()); - batt_node=file_node.element("cr_1"); - battData.setCr(batt_node.getTextTrim()); - batt_node=file_node.element("er_1"); - battData.setEr(Integer.parseInt(batt_node.getTextTrim())); - battDataList.add(battData); + + float battCap=fparam.getBattCap();//鏍囩О瀹归噺 + float battRes=fparam.getBattRes();//鏍囩О鍐呴樆 + + if(nodes!=null){ + while (nodes.hasNext()){ + node= (Element) nodes.next(); + Iterator iterator1 = node.elementIterator(); + BattgroupInfo battInfo=new BattgroupInfo(); + List<BattgroupData> battDataList=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(); + battData.setMonNum(Integer.parseInt(file_node.attributeValue("batt_num"))); + batt_node=file_node.element("bv_1"); + battData.setBv(batt_node.getTextTrim()); + batt_node=file_node.element("br_1"); + String br=batt_node.getTextTrim(); + battData.setBr(br); + /* float esCap=0f; + if(battRes==0){ + esCap=1; + }else{ + esCap=battRes/Float.valueOf(br); + } + battData.setEstimatedCap(esCap*battCap);*/ + /*float preCapPercent=MathUtil.getPreCapTest(Float.valueOf(br),battRes); + //瀹归噺鐧惧垎姣斾慨鏀� + battData.setPreCapPercent(preCapPercent); + //棰勪及瀹归噺 + battData.setEstimatedCap(preCapPercent*battCap); + //鍐呴樆鍋忓樊鐜� + 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()); + batt_node=file_node.element("cr_1"); + battData.setCr(batt_node.getTextTrim()); + batt_node=file_node.element("er_1"); + battData.setEr(Integer.parseInt(batt_node.getTextTrim())); + battDataList.add(battData); + //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(list!=null&&list.size()>0){ + int battNum= (int) Math.ceil(list.size()/3); + float resSum=0f; + Collections.sort(list); + 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(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); + } } - battInfo.setTestTime(ActionUtil.sdfwithALL.parse(testTime)); - battInfo.setBattDataList(battDataList); - fileInfo.getBattInfoList().add(battInfo); } fileInfo.setFileParam(fparam); fiso.close(); @@ -262,6 +423,8 @@ } return fileInfo; } + + //瑙f瀽xml鏂囦欢 public static FileInfo readXml(String xmlFilePath) { @@ -280,7 +443,7 @@ switch (version){ case "V2.0": fileInfo=readFBR_6000NT_bj(xmlFilePath);break; case "V2.7": fileInfo=readFBR_6000NT_jc(xmlFilePath);break; - default:break; + default:fileInfo=readFBR_6000NT_bj(xmlFilePath);break; } } fiso.close(); @@ -305,7 +468,9 @@ //System.out.println(mapKey+":"+mapValue); //寰楀埌绗竴涓猰apKey鑺傜偣 Node node=document.selectSingleNode("//"+mapKey); - node.setText(mapValue); + if(node!=null){ + node.setText(mapValue); + } } OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8");//榛樿鐨勭紪鐮佸氨鏄疷TF-8 -- Gitblit v1.9.1