whycxzp
2022-03-23 b74e90e2012203ac2353a50a3b4730ab38303627
根据标准曲线单体电压统计值统计多个实际容量
2个文件已修改
54 ■■■■■ 已修改文件
src/com/fgkj/dao/impl/Battmon_testcapImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/fgkj/services/Batt_rtstateService.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/fgkj/dao/impl/Battmon_testcapImpl.java
@@ -166,6 +166,27 @@
        return null;
    }
    //根据标称电压和测试容量查询出当前测试容量对应标准曲线的单体电压
    public List<Double> searchBattStandardVolList(double monvolstd,double moncapstd,float test_cap,long hourate) {
        String mainSql = "select mon_vol from db_battinf.tb_battmon_testcap_"+(int)monvolstd+"_"+(int)moncapstd+"_"+hourate+" where test_cap = ";
        String subSql = "select test_cap from db_battinf.tb_battmon_testcap_"+(int)monvolstd+"_"+(int)moncapstd+"_"+hourate+" where monvolstd="+monvolstd+" and abs(test_cap)<="+toFixed((Math.abs(test_cap)),1)+" and moncapstd = "+moncapstd+" ORDER BY test_cap ASC  limit 1";
        String sql = mainSql+"("+subSql+")";
        List<Double> list = DAOHelper.executeQuery(sql, DBUtil.getConn(), null, new CallBack() {
            @Override
            public List getResults(ResultSet rs) throws SQLException {
                List<Double> listTemp = new LinkedList<>();
                while (rs.next()) {
                    listTemp.add(rs.getDouble("mon_vol"));
                }
                return listTemp;
            }
        });
        if(list!=null && list.size()!=0){
            return list;
        }
        return null;
    }
    public static double toFixed(double f , int digit) {
        BigDecimal bg = new BigDecimal(f);
        return bg.setScale(digit, BigDecimal.ROUND_HALF_UP).doubleValue();
src/com/fgkj/services/Batt_rtstateService.java
@@ -5,6 +5,7 @@
import com.fgkj.dao.impl.*;
import com.fgkj.dto.*;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
@@ -49,7 +50,7 @@
                        realCap = rtState.getBatt_test_cap().doubleValue();
                    }else {
                        //查询出当前测试容量对应标准曲线的单体电压
                        Double StandVol = new Battmon_testcapImpl().searchBattStandardVol(battInf.getMonVolStd(),battInf.getMonCapStd(),rtState.getBatt_test_cap(),avg_hourRate);
                        /*Double StandVol = new Battmon_testcapImpl().searchBattStandardVol(battInf.getMonVolStd(),battInf.getMonCapStd(),rtState.getBatt_test_cap(),avg_hourRate);
                        if(StandVol!=null) {
                            if (battInf.getMonVolStd() == 12) {
                                realCap = Math.abs((double) ((rtState.getGroup_vol() - STANDARD_VOL_12V) / (StandVol * battInf.getMonCount() - STANDARD_VOL_12V)) * battInf.getMonCapStd() * 1.2);
@@ -59,6 +60,36 @@
                            if ((battInf.getMonCapStd() * 1.2) < realCap) {
                                realCap = (battInf.getMonCapStd() * 1.2);
                            }
                        }*/
                        //查询出当前测试容量对应标准曲线的单体电压的第一笔,最后一笔,最小值,最大值,平均值
                        String realCapStr="";
                        List<Double> StandVolList = new Battmon_testcapImpl().searchBattStandardVolList(battInf.getMonVolStd(),battInf.getMonCapStd(),rtState.getBatt_test_cap(),avg_hourRate);
                        List<Double> volList = new LinkedList<>();
                        if(StandVolList!=null) {
                            //求计算值
                            Double maxVol = Collections.max(StandVolList);
                            Double minVol = Collections.min(StandVolList);
                            Double avgVol = StandVolList.stream().mapToDouble(vol -> vol).average().getAsDouble();
                            Double fistVol = StandVolList.get(0);
                            Double lastVol = StandVolList.get(StandVolList.size() - 1);
                            volList.add(fistVol);
                            volList.add(lastVol);
                            volList.add(minVol);
                            volList.add(maxVol);
                            volList.add(avgVol);
                            for (Double StandVol:volList){
                                if (battInf.getMonVolStd() == 12) {
                                    realCapStr += Math.abs((double) ((rtState.getGroup_vol() - STANDARD_VOL_12V) / (StandVol * battInf.getMonCount() - STANDARD_VOL_12V)) * battInf.getMonCapStd() * 1.2);
                                } else if (battInf.getMonVolStd() == 2) {
                                    realCapStr += Math.abs((double) ((rtState.getGroup_vol() - STANDARD_VOL_2V) / (StandVol * battInf.getMonCount() - STANDARD_VOL_2V)) * battInf.getMonCapStd() * 1.2);
                                }
                                if ((battInf.getMonCapStd() * 1.2) < realCap) {
                                    realCapStr += (battInf.getMonCapStd() * 1.2);
                                }
                            }
                            rtState.setStationId(realCapStr);
                        }
                    }
                }