lxw
2022-10-11 c8fe7628d2d6a3a40d8e168c67b10b6e65415517
评价
3个文件已修改
45 ■■■■ 已修改文件
src/main/java/com/whyc/pojo/BattgroupInfo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/FileParamService.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/util/MathUtil.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/BattgroupInfo.java
@@ -72,6 +72,10 @@
    @TableField(exist = false)
    private Float sdBasecr;
    @ApiModelProperty(value = "内阻评价")
    @TableField(exist = false)
    private String brJudge;
    public BattgroupInfo() {
        battDataList=new ArrayList<>();
    }
src/main/java/com/whyc/service/FileParamService.java
@@ -7,10 +7,8 @@
import com.whyc.dto.*;
import com.whyc.mapper.BattGroupDataMapper;
import com.whyc.mapper.FileParamMapper;
import com.whyc.pojo.BattgroupData;
import com.whyc.pojo.BattgroupInfo;
import com.whyc.pojo.FileInfo;
import com.whyc.pojo.FileParam;
import com.whyc.mapper.TestParamMapper;
import com.whyc.pojo.*;
import com.whyc.util.MathUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -30,6 +28,9 @@
    @Autowired(required = false)
    private FileParamMapper paramMapper;
    @Autowired(required = false)
    private TestParamMapper testParamMapper;
    //解析xml文件(传参一个文件)
    public Response getXmlValue(String filePath) {
@@ -130,12 +131,18 @@
    public Response getDataByCondition(Date testTime1, Date testTime2, int battVol,int pageCurr,int pageSize) {
        PageHelper.startPage(pageCurr,pageSize);
        List<FileParam> list=mapper.getDataByCondition(testTime1,testTime2,battVol);
        QueryWrapper testParamWrapper=new QueryWrapper();
        testParamWrapper.eq("enabled",1);
        TestParam testParam=testParamMapper.selectOne(testParamWrapper);
        float std=0f;
        if(list!=null&&list.size()>0){
            for (FileParam fparam:list) {
                List<BattgroupInfo> binfInfoList=fparam.getBattInfoList();
                std=fparam.getBattRes();
                if(binfInfoList!=null&&binfInfoList.size()>0){
                    for (BattgroupInfo binfo:binfInfoList) {
                        List<BattgroupData> binfDataList=binfo.getBattDataList();
                        float minStd=9999999.0f;
                        List listBv=new ArrayList();
                        List listBr=new ArrayList();
                        List listBs=new ArrayList();
@@ -146,11 +153,15 @@
                                listBr.add(bData.getBr());
                                listBs.add(bData.getBs());
                                listCr.add(bData.getCr());
                                if(bData.getBr()<=minStd){
                                    minStd=bData.getBr();
                                }
                            }
                            binfo.setSdBasebv(MathUtil.getStandardDeviation(listBv));
                            binfo.setSdBasebr(MathUtil.getStandardDeviation(listBr));
                            binfo.setSdBasebs(MathUtil.getStandardDeviation(listBs));
                            binfo.setSdBasecr(MathUtil.getStandardDeviation(listCr));
                            binfo.setBrJudge(MathUtil.getJudge(minStd,std,testParam));
                        }
                    }
                }
src/main/java/com/whyc/util/MathUtil.java
@@ -1,5 +1,7 @@
package com.whyc.util;
import com.whyc.pojo.TestParam;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Arrays;
@@ -7,7 +9,7 @@
import java.util.stream.Collectors;
public class MathUtil {
    //均一性
    public static float getStandardDeviation(List<Float> list){
        //求平均值
        float avg = list.stream().collect(Collectors.averagingDouble(Float::floatValue)).floatValue();
@@ -23,6 +25,24 @@
        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="未知";
        float judgeStdLow=0f;
        float judgeStdHigh=0f;
        if (testParam!=null){
            judgeStdLow=std*testParam.getResGoodCoeK3();
            judgeStdHigh=std*testParam.getResBadCoeK4();
            if(minStd<=judgeStdLow){
                judge="差";
            }else if(minStd<=judgeStdHigh){
                judge="良";
            }else{
                judge="优";
            }
        }
        return judge;
    }
    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};