whyclxw
2024-07-26 cc942a2f5a1d4453b8c4c6e5445527f83179b60f
2024-7-26修改文件解析时容量百分比公式
3个文件已修改
62 ■■■■■ 已修改文件
src/main/java/com/whyc/dto/XmlFileOpreate.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/BattgroupData.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/util/MathUtil.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
@@ -123,14 +124,22 @@
                    file_node=node.element("br_1");
                    String br=file_node.getTextTrim();
                    battData.setBr(br);
                    float esCap=0f;
                    /*float esCap=0f;
                    if(battRes==0){
                        esCap=1;
                    }else{
                        esCap=battRes/Float.valueOf(br);
                    }
                    battData.setEstimatedCap(esCap*battCap);
                    battData.setBr(br);
                    battData.setEstimatedCap(esCap*battCap);*/
                    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);
                    file_node=node.element("bs_1");
                    battData.setBs(file_node.getTextTrim());
                    file_node=node.element("cr_1");
@@ -284,13 +293,22 @@
                        batt_node=file_node.element("br_1");
                        String br=batt_node.getTextTrim();
                        battData.setBr(br);
                        float esCap=0f;
                       /* float esCap=0f;
                        if(battRes==0){
                            esCap=1;
                        }else{
                            esCap=battRes/Float.valueOf(br);
                        }
                        battData.setEstimatedCap(esCap*battCap);
                        battData.setEstimatedCap(esCap*battCap);*/
                        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);
                        batt_node=file_node.element("bs_1");
                        battData.setBs(batt_node.getTextTrim());
                        batt_node=file_node.element("cr_1");
@@ -331,6 +349,8 @@
        }
        return  fileInfo;
    }
    //解析xml文件
    public static FileInfo readXml(String xmlFilePath)
    {
src/main/java/com/whyc/pojo/BattgroupData.java
@@ -53,7 +53,7 @@
    private String cr;
    @ApiModelProperty(value = "异常标记 0:无异常 1:鼓包 2:漏液 4:开裂 8:内阻超标")
    private int er;
    private Integer er;
    @TableField(exist = false)
    private Date testTime;
@@ -79,7 +79,17 @@
    private String resEvaluation;
    @TableField(exist = false)
    private String monNumStr;
    @TableField(exist = false)
    @ApiModelProperty("预估容量")
    private float estimatedCap;
    @TableField(exist = false)
    @ApiModelProperty("预估容量百分比")
    private float preCapPercent;
    @TableField(exist = false)
    @ApiModelProperty("内阻偏差率")
    private float resDevRate;
}
src/main/java/com/whyc/util/MathUtil.java
@@ -84,6 +84,26 @@
        return judge;
    }
    /*
     (容量百分比预估计算方式)
        A、系统读取测试文件内参考值R(此时并没有分他是平均值或参考值,参考值可有在文件打开时手动更改):
        a、测试值R≤参考值R时,容量预估值=100%
        b、测试值R≥参考值2R时,容量预估值直接显示1%
        c、参考值R<测试值R<参考值2R时,容量预估值={100%~1%(比值=(1-(R测-R参)/R参)*100%”)}
     **/
    public static float getPreCapTest(float testRes,float refRes){
        float preCap=0f;
        if(testRes<=refRes){
            preCap=1;
        }else if(testRes>=(2*refRes)){
            preCap= (float) 0.01;
        }else {
            float radio=(1-(testRes-refRes)/refRes);
            preCap= (float) (1-0.01*radio);
        }
        return preCap;
    }
    public static void main(String[] args) {
        Float[] f = {3.54f,3.55f,3.55f,3.56f,3.57f,3.56f,3.58f,3.58f,3.56f};
        Float[] f2 = {3.53f,3.55f,3.56f,3.57f,3.59f,3.58f,3.6f,3.6f,3.61f};