whyclxw
2025-05-29 086e9639f47c407e3a1e5b2f71ca816d397fe9fc
实时页面内阻测试
6个文件已修改
243 ■■■■■ 已修改文件
src/main/java/com/whyc/controller/HistoryIdController.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattInfService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattRealdataIdService.java 122 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattresdataInfService.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/SubTablePageInfoService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/webSocket/RealTimeSocket.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/HistoryIdController.java
@@ -21,9 +21,21 @@
    private BattRealdataIdService battHisIdService;
    @ApiOperation("获取电池组最近一季度的数据")
    @GetMapping("getBattQuarter")
    public Response getBattQuarter(@RequestParam Integer battgroupId) {
        return battHisIdService.getBattQuarter(battgroupId);
    @ApiOperation("获取电池组最近一季度的电压数据")
    @GetMapping("getBattQuarterVol")
    public Response getBattQuarterVol(@RequestParam Integer battgroupId) {
        return battHisIdService.getBattQuarterVol(battgroupId);
    }
    @ApiOperation("获取电池组最近一季度的内阻数据")
    @GetMapping("getBattQuarterRes")
    public Response getBattQuarterRes(@RequestParam Integer battgroupId) {
        return battHisIdService.getBattQuarterRes(battgroupId);
    }
    @ApiOperation("获取电池组最近一季度的温度数据")
    @GetMapping("getBattQuarterTmp")
    public Response getBattQuarterTmp(@RequestParam Integer battgroupId) {
        return battHisIdService.getBattQuarterTmp(battgroupId);
    }
}
src/main/java/com/whyc/service/BattInfService.java
@@ -6,6 +6,7 @@
import com.github.pagehelper.PageInfo;
import com.whyc.dto.BattDto;
import com.whyc.dto.InfoDto;
import com.whyc.dto.Real.QuarterDto;
import com.whyc.dto.Response;
import com.whyc.factory.InfoFactory;
import com.whyc.mapper.BattInfMapper;
@@ -386,5 +387,20 @@
        BattInf binf=mapper.selectOne(wrapper);
        return binf;
    }
   //当没有内助测试时初始内阻值为标称内阻
    public List<QuarterDto> getBinfResStd(Integer battgroupId) {
        QueryWrapper wrapper=new QueryWrapper();
        wrapper.eq("battgroup_id",battgroupId);
        wrapper.last("limit 1");
        BattInf binf=mapper.selectOne(wrapper);
        Float monresstd=binf.getMonresstd();
        List<QuarterDto> list=new ArrayList<>();
        for(int i=0;i<binf.getMoncount();i++){
            QuarterDto dto=new QuarterDto();
            dto.setRecordTime(binf.getCreateTime());
            dto.setMonNum(i+1);
            dto.setNumValue(monresstd);
        }
        return list;
    }
}
src/main/java/com/whyc/service/BattRealdataIdService.java
@@ -4,6 +4,9 @@
import com.whyc.dto.Real.QuarterDto;
import com.whyc.dto.Response;
import com.whyc.mapper.CommonMapper;
import com.whyc.pojo.db_batt_testdata.BattresdataId;
import com.whyc.pojo.db_batt_testdata.BattresdataInf;
import com.whyc.pojo.db_station.BattInf;
import com.whyc.util.ActionUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -19,12 +22,19 @@
    @Resource
    private CommonMapper commonMapper;
    @Autowired
    private BattresdataInfService resInfService;
    @Autowired
    private BattInfService binfService;
    //获取电池组最近一季度的单体数据
    public Response getBattQuarter(Integer battgroupId) {
    public Response getBattQuarterVol(Integer battgroupId) {
        HashMap<String,Object> map = new HashMap<>();
        Float maxVol=0f;
        Float minVol=0f;
        Float avgVol=0f;
        Float maxData=0f;
        Float minData=0f;
        Float avgData=0f;
        int num=0;
        List<String> datelist = ActionUtil.getLastQuarterYearMonths();
        for (int i=0;i<datelist.size();i++) {
@@ -40,21 +50,103 @@
            //获取表中最大,最小,平均数据值
            CompareDto compareData=subTablePageInfoService.getBattCompareHis(tableName,"mon_vol");
            if(num==0){
                maxVol=compareData.getMaxData();
                minVol=compareData.getMinData();
                maxData=compareData.getMaxData();
                minData=compareData.getMinData();
            }
            if (compareData.getMaxData() >= maxVol) {
                maxVol =compareData.getMaxData();
            if (compareData.getMaxData() >= maxData) {
                maxData =compareData.getMaxData();
            }
            if (compareData.getMinData() <= minVol) {
                minVol = compareData.getMinData();
            if (compareData.getMinData() <= minData) {
                minData= compareData.getMinData();
            }
            avgVol += compareData.getAvgData();
            map.put("maxVol",maxVol);
            map.put("minVol",minVol);
            map.put("avgVol",avgVol/datelist.size());
            avgData+= compareData.getAvgData();
            map.put("maxData",maxData);
            map.put("minData",minData);
            map.put("avgData",avgData/datelist.size());
            num++;
        }
        return new Response().setII(1,map.size()>0,map,"获取电池组最近一季度的数据");
        return new Response().setII(1,map.size()>0,map,"获取电池组最近一季度的电压数据");
    }
    //获取电池组最近一季度的内阻数据
    public Response getBattQuarterRes(Integer battgroupId) {
        HashMap<String,Object> map = new HashMap<>();
        Float maxData=0f;
        Float minData=0f;
        Float avgData=0f;
        int num=0;
        List<String> datelist = ActionUtil.getLastQuarterYearMonths();
        //获取内阻初始数据(第一次内阻测试的第一笔数据)
        List<QuarterDto> list=resInfService.getFirstResData(battgroupId);
        if(list==null){//当初始值为0时使用标称内阻
            list=binfService.getBinfResStd(battgroupId);
        }
        map.put("startRes",list);
        for (int i=0;i<datelist.size();i++) {
            String date=datelist.get(i);
            String tableName ="db_data_history.tb_batt_realdata_"+battgroupId+"_"+date;
            String existTableName = commonMapper.existTable("db_data_history", "tb_batt_realdata_"+battgroupId+"_"+date);
            if(existTableName == null){
                continue;
            }
            //判断表是否存在
            List<QuarterDto> datalist=subTablePageInfoService.getBattRealHis(tableName,"mon_res");
            map.put(date,datalist);
            //获取表中最大,最小,平均数据值
            CompareDto compareData=subTablePageInfoService.getBattCompareHis(tableName,"mon_res");
            if(num==0){
                maxData=compareData.getMaxData();
                minData=compareData.getMinData();
            }
            if (compareData.getMaxData() >= maxData) {
                maxData =compareData.getMaxData();
            }
            if (compareData.getMinData() <= minData) {
                minData= compareData.getMinData();
            }
            avgData+= compareData.getAvgData();
            map.put("maxData",maxData);
            map.put("minData",minData);
            map.put("avgData",avgData/datelist.size());
            num++;
        }
        return new Response().setII(1,map.size()>0,map,"获取电池组最近一季度的内阻数据");
    }
    //获取电池组最近一季度的温度数据
    public Response getBattQuarterTmp(Integer battgroupId) {
        HashMap<String,Object> map = new HashMap<>();
        Float maxData=0f;
        Float minData=0f;
        Float avgData=0f;
        int num=0;
        List<String> datelist = ActionUtil.getLastQuarterYearMonths();
        for (int i=0;i<datelist.size();i++) {
            String date=datelist.get(i);
            String tableName ="db_data_history.tb_batt_realdata_"+battgroupId+"_"+date;
            String existTableName = commonMapper.existTable("db_data_history", "tb_batt_realdata_"+battgroupId+"_"+date);
            if(existTableName == null){
                continue;
            }
            //判断表是否存在
            List<QuarterDto> datalist=subTablePageInfoService.getBattRealHis(tableName,"mon_tmp");
            map.put(date,datalist);
            //获取表中最大,最小,平均数据值
            CompareDto compareData=subTablePageInfoService.getBattCompareHis(tableName,"mon_tmp");
            if(num==0){
                maxData=compareData.getMaxData();
                minData=compareData.getMinData();
            }
            if (compareData.getMaxData() >= maxData) {
                maxData =compareData.getMaxData();
            }
            if (compareData.getMinData() <= minData) {
                minData= compareData.getMinData();
            }
            avgData+= compareData.getAvgData();
            map.put("maxData",maxData);
            map.put("minData",minData);
            map.put("avgData",avgData/datelist.size());
            num++;
        }
        return new Response().setII(1,map.size()>0,map,"获取电池组最近一季度的温度数据");
    }
}
src/main/java/com/whyc/service/BattresdataInfService.java
@@ -1,15 +1,28 @@
package com.whyc.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.whyc.dto.Real.QuarterDto;
import com.whyc.mapper.BattresdataInfMapper;
import com.whyc.mapper.CommonMapper;
import com.whyc.pojo.db_batt_testdata.BattresdataId;
import com.whyc.pojo.db_batt_testdata.BattresdataInf;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class BattresdataInfService {
    @Autowired(required = false)
    private BattresdataInfMapper mapper;
    @Autowired(required = false)
    private SubTablePageInfoService  subTablePageInfoService;
    @Resource
    private CommonMapper commonMapper;
    //上一次内阻测试数据
    public BattresdataInf getLastTestData(Integer battgroupId) {
        QueryWrapper wrapper = new QueryWrapper();
@@ -19,4 +32,21 @@
        BattresdataInf rinf = mapper.selectOne(wrapper);
        return rinf;
    }
    //获取内阻初始数据(第一次内阻测试的第一笔数据)
    public List<QuarterDto> getFirstResData(Integer battgroupId) {
        QueryWrapper wrapper = new QueryWrapper();
        wrapper.eq("battgroup_id", battgroupId);
        wrapper.last(" limit 1");
        wrapper.last(" ORDER BY test_record_count asc ");
        BattresdataInf rinf = mapper.selectOne(wrapper);
        if(rinf!=null){
            String tableName ="db_batt_testdata.tb_battresdata_"+battgroupId;
            String existTableName = commonMapper.existTable("db_batt_testdata", "tb_battresdata_"+battgroupId);
            if(existTableName != null){
                List<QuarterDto> list=subTablePageInfoService.getBattResInfData(battgroupId,rinf.getTestRecordCount());
                return list;
            }
        }
        return null;
    }
}
src/main/java/com/whyc/service/SubTablePageInfoService.java
@@ -508,4 +508,24 @@
            return null;
        }
    }
    //获取内阻数据
    public  List<QuarterDto> getBattResInfData(Integer battgroupId,Integer testRecordCount) {
        String sql="select   distinct mon_num,test_starttime,mon_res, from db_batt_testdata.tb_battresdata_"+battgroupId
                +" where test_record_count="+testRecordCount+" order by mon_num asc";
        List<QuarterDto> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
            @Override
            public List getResults(ResultSet rs) throws SQLException {
                List<QuarterDto> list=new ArrayList<>();
                while (rs.next()){
                    QuarterDto data=new QuarterDto();
                    data.setMonNum(rs.getInt("mon_num"));
                    data.setNumValue(rs.getFloat("mon_res"));
                    data.setRecordTime(rs.getTimestamp("test_starttime"));
                    list.add(data);
                }
                return list;
            }
        });
       return list;
    }
}
src/main/java/com/whyc/webSocket/RealTimeSocket.java
@@ -301,7 +301,38 @@
    }
    //获取温度界面信息
    private Response getTmpPage(RealTimeDto realDto) {
        return new Response().set(1);
        Map<String, Object> map=new HashMap<>();
        Float maxData=0f;
        Float minData=0f;
        Float avgData=0f;
        try {
            //实时获取单体信息
            List<BattRtdata> rtdataList = rtdataService.getRtdataRealInfo(realDto.getBattgroupId());
            if(rtdataList!=null&&rtdataList.size()>0){
                for(int i=0;i<rtdataList.size();i++) {
                    BattRtdata battRtdata=rtdataList.get(i);
                    if(i==0){
                        maxData=battRtdata.getMonTmp();
                        minData=battRtdata.getMonTmp();
                    }
                    if (battRtdata.getMonTmp() >= maxData) {
                        maxData = battRtdata.getMonTmp();
                    }
                    if (battRtdata.getMonTmp() <= minData) {
                        minData = battRtdata.getMonTmp();
                    }
                    avgData += battRtdata.getMonTmp();
                }
                avgData=avgData/rtdataList.size();
            }
            map.put("rtdataList",rtdataList);
            map.put("maxData",maxData);
            map.put("minData",minData);
            map.put("avgData",avgData);
            return new Response().setII(1,true,map,"温度界面信息推送");
        }catch (Exception e){
            return new Response().set(1,false,"温度界面信息推送");
        }
    }
    //获取内阻界面信息
    private Response getResPage(RealTimeDto realDto) {