whycxzp
2025-04-30 d19e91bcc4ed9ab08e8be375fb5fc0f7e874a6a9
src/main/java/com/whyc/service/BattTestInfDataService.java
@@ -1,24 +1,81 @@
package com.whyc.service;
import com.whyc.dto.BattCapFactory;
import com.whyc.dto.Response;
import com.whyc.mapper.BattTestInfDataMapper;
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(required = false)
    private BattTestInfDataMapper mapper;
    @Autowired
    private SubTableService service;
    private JdbcSqlExecuteService jdbcSqlExecuteService;
    //根据充放电记录查询单体放电历史详情
    public Response getTDataHis(int binfId, int testRecordCount) {
        List<BattTestInfData> list=service.getTDataHis(binfId,testRecordCount);
        return new Response().setII(1,list!=null,list,"根据充放电记录查询单体放电历史详情");
    @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<BattTestInfData> 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<BattTestInfData>() {
                @Override
                public List<BattTestInfData> getResults(ResultSet rs) throws SQLException {
                    List<BattTestInfData> 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);
    }
}
}