whyclxw
2025-03-28 cc86bb05bba08200a2e2bc301bb835f52a708a1f
src/main/java/com/whyc/util/MathUtil.java
@@ -1,11 +1,14 @@
package com.whyc.util;
import com.whyc.config.I18nLocaleResolver;
import com.whyc.pojo.TestParam;
import org.springframework.beans.factory.annotation.Autowired;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.stream.Collectors;
public class MathUtil {
@@ -25,25 +28,84 @@
        double σ = Math.sqrt(s.doubleValue());
        return BigDecimal.valueOf(σ).setScale(4, RoundingMode.HALF_UP).floatValue();
    }
    //评判整组的好坏flag:1 电压; 2 内阻;3 连接条
    public static String getJudge(float minStd, float std, TestParam testParam){
        String judge="未知";
    //评判整组的好坏flag:1差,2良,3优 电压; 内阻越大越不好
    public static int getflag(float maxStd, float std, TestParam testParam){
        int flag=0;
        float judgeStdLow=0f;
        float judgeStdHigh=0f;
        maxStd=maxStd*100;
        if (testParam!=null){
            judgeStdLow=std*testParam.getResGoodCoeK3();
            judgeStdHigh=std*testParam.getResBadCoeK4();
            if(minStd<=judgeStdLow){
                judge="差";
            }else if(minStd<=judgeStdHigh){
                judge="良";
            if(maxStd>=judgeStdHigh){
                flag=1;//"差"
            }else if(maxStd>=judgeStdLow){
                flag=2;//"良";
            }else{
                judge="优";
                flag=3;//"优";
            }
        }
        return flag;
    }
    //评判整组的好坏flag:1 电压; 内阻越大越不好
    public static String getJudge(boolean zhFlag,int flag){
        String judge="";
        if(zhFlag) {
            judge="未知";
        }else{
            judge="unknown";
        }
        switch (flag){
            /*case 1:judge="差";break;
            case 2:judge="良";break;
            case 3:judge="优";break;*/
            case 1:
                if(zhFlag) {
                    judge="差";
                }else{
                    judge="bad";
                }
                break;
            case 2:
                if(zhFlag) {
                    judge="良";
                }else{
                    judge="good";
                }
                break;
            case 3:
                if(zhFlag) {
                    judge="优";
                }else{
                    judge="excellent";
                }
                break;
        }
        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;
        }
        if(testRes>=(2*refRes)){
            preCap= (float) 0.01;
        }
        if((testRes>refRes)&&(testRes<(2*refRes))){
            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};