package com.whyc.service; import com.whyc.dto.BattCapFactory; import com.whyc.dto.Response; import com.whyc.mapper.CallBack; import com.whyc.pojo.db_batt.PowerInf; import com.whyc.pojo.db_dis_batt.BattTestInf; import com.whyc.pojo.db_dis_batt.BattTestInfData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.sql.ResultSet; import java.sql.SQLException; import java.util.LinkedList; import java.util.List; @Service public class BattTestInfDataService { @Autowired private JdbcSqlExecuteService jdbcSqlExecuteService; @Autowired private BattTestInfService battTestInfService; @Autowired private PowerInfService powerInfService; public Response getMonTestData(int battGroupId) { //查询最近一次的放电记录 BattTestInf battTestInf =battTestInfService.getDischargeLast(battGroupId); PowerInf powerInf =powerInfService.getByBattGroupId(battGroupId); Float monCapStd = powerInf.getMonCap(); Float monVolStd = powerInf.getMonVol(); List list = new LinkedList<>(); if (battTestInf !=null){ Integer testRecordCount = battTestInf.getTestRecordCount(); Integer recordNum = battTestInf.getRecordNum(); String sql = "select * from db_dis_batt.batt_test_inf_"+battGroupId+" where test_record_count ="+testRecordCount + " and record_num ="+recordNum; list = jdbcSqlExecuteService.executeQuery_call(sql, new CallBack() { @Override public List getResults(ResultSet rs) throws SQLException { List list = new LinkedList<>(); while (rs.next()) { BattTestInfData data = new BattTestInfData(); data.setRecordTime(rs.getTimestamp("record_time")); data.setTestStarttime(rs.getTimestamp("test_starttime")); data.setTestTimelong(rs.getInt("test_timelong")); data.setOnlineVol(rs.getFloat("online_vol")); data.setGroupVol(rs.getFloat("group_vol")); data.setTestCurr(rs.getFloat("test_curr")); data.setTestCap(rs.getFloat("test_cap")); data.setMonNum(rs.getInt("mon_num")); data.setMonVol(rs.getFloat("mon_vol")); list.add(data); } return list; } }); list.forEach(item->{ //小时率 int hourRate = BattCapFactory.GetHourRate(monCapStd, item.getTestCurr()); //容量计算 Double realCap = BattCapFactory.GetMonomerCap(monCapStd, hourRate, item.getTestCap(), item.getMonVol(), item.getMonVol(), monVolStd, BattCapFactory.CapType_Real); item.setRealCap(realCap.floatValue()); }); }else{ //返回标称单体容量 Integer monNum = powerInf.getMonNum(); for (int i = 1; i < monNum+1; i++) { BattTestInfData battTestInfData = new BattTestInfData(); battTestInfData.setMonNum(i); battTestInfData.setRealCap(monCapStd); list.add(battTestInfData); } } return new Response().set(1, list); } }