whycxzp
2025-04-23 abccd023bae40d5d8ad2fcdbf848b4240928414d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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<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);
    }
}