whyclxw
2025-06-10 a1d2d4dbf00ffc778003abefac9e643c6bb82059
系统概述推送添加蓄电池组单体信息统计
8个文件已修改
2个文件已添加
230 ■■■■ 已修改文件
src/main/java/com/whyc/dto/Real/SticRealRtdataDto.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/dto/Statistic/DisChargeStic.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/dto/Statistic/SticDischarge6Res.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/BattInfMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/db_ram_db/BattRtstate.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattInfService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BatttestdataInfService.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/webSocket/RealTimeSocket.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BattInfMapper.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/DeviceSetparamMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/dto/Real/SticRealRtdataDto.java
New file
@@ -0,0 +1,45 @@
package com.whyc.dto.Real;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class SticRealRtdataDto {
    private Float maxCap;
    private Float minCap;
    private List<Integer> maxCapNumList;
    private List<Integer> minCapNumList;
    private Float maxVol;
    private Float minVol;
    private List<Integer> maxVolNumList;
    private List<Integer> minVolNumList;
    private Float maxTmp;
    private Float minTmp;
    private List<Integer> maxTmpNumList;
    private List<Integer> minTmpNumList;
    private Float maxRes;
    private Float minRes;
    private List<Integer> maxResNumList;
    private List<Integer> minResNumList;
    public SticRealRtdataDto() {
        maxCap = 0.0f;
        minCap = 0.0f;
        maxVol = 0.0f;
        minVol = 0.0f;
        maxTmp = 0.0f;
        minTmp = 0.0f;
        maxRes = 0.0f;
        minRes = 0.0f;
        maxCapNumList = new ArrayList<>();
        minCapNumList = new ArrayList<>();
        maxVolNumList = new ArrayList<>();
        minVolNumList = new ArrayList<>();
        maxTmpNumList = new ArrayList<>();
        minTmpNumList = new ArrayList<>();
        maxResNumList = new ArrayList<>();
        minResNumList = new ArrayList<>();
    }
}
src/main/java/com/whyc/dto/Statistic/DisChargeStic.java
@@ -4,6 +4,7 @@
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class DisChargeStic {
@@ -19,4 +20,5 @@
    private Date testEndTime;//结束时间
    private Integer pageNum;
    private Integer pageSize;
    private List<Integer> typeList;  //停止原因集合
}
src/main/java/com/whyc/dto/Statistic/SticDischarge6Res.java
New file
@@ -0,0 +1,22 @@
package com.whyc.dto.Statistic;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class SticDischarge6Res {
    private String provice;
    private String city;
    private String country;
    private String stationName;
    private String battgroupName;
    private Float monvolstd;
    private Float moncapstd;
    private Float monCount;
    private String product;
    private Integer errorNum;
    private List<String> stopList;
}
src/main/java/com/whyc/mapper/BattInfMapper.java
@@ -50,4 +50,6 @@
    List<BattInf> getBattCompare17Statistic(@Param("stic")  BattCompareStic stic);
    //本年度已放电数量统计(1.2.5)
    List<BattInf> getDischr5Statistic(@Param("stic") DisChargeStic stic);
    //本年度已放电数量统计(1.2.6)
    List<BattInf> getDischr6Statistic(@Param("stic") DisChargeStic stic);
}
src/main/java/com/whyc/pojo/db_ram_db/BattRtstate.java
@@ -105,5 +105,8 @@
    @ApiModelProperty(value = "上一次核容终止原因")
    private Integer lastCaptestStopType;
    @ApiModelProperty(value = "上一次核容终止原因")
    private Float loadCurr;
}
src/main/java/com/whyc/service/BattInfService.java
@@ -464,4 +464,8 @@
    public List<BattInf> getDischr5Statistic(DisChargeStic stic) {
        return mapper.getDischr5Statistic(stic);
    }
    //本年度已放电数量统计(1.2.6)
    public List<BattInf> getDischr6Statistic(DisChargeStic stic) {
        return mapper.getDischr6Statistic(stic);
    }
}
src/main/java/com/whyc/service/BatttestdataInfService.java
@@ -86,7 +86,7 @@
                BattInf binf=battInfService.getBinfByBattgroupId(tinf.getBattgroupId());
                //实时组端电流,剩余容量,标称容量
                if(battRtstate!=null){
                    Float restTime= BattCapFactory.getTheoryTime(battRtstate.getGroupCurr(), restCap, binf.getMoncapstd());
                    Float restTime= BattCapFactory.getTheoryTime(battRtstate.getLoadCurr(), restCap, binf.getMoncapstd());
                    tinf.setRestTime(restTime);
                }
                //保留5位小数
@@ -572,7 +572,7 @@
            dto.setMonCount(binf.getMoncount());
            dto.setMonvolstd(binf.getMonvolstd());
            if(battRtstate!=null){
                Float restTime= BattCapFactory.getTheoryTime(battRtstate.getGroupCurr(), realCap, binf.getMoncapstd());
                Float restTime= BattCapFactory.getTheoryTime(battRtstate.getLoadCurr(), realCap, binf.getMoncapstd());
                dto.setRestTime(restTime);
                dto.setFloatchartVol(battRtstate.getGroupVol());
            }else{
@@ -715,37 +715,23 @@
        Map<String,  Object> map=new HashMap<>();
        //查询出所有的班组并赋予初始值
        setBanZuDefault(map);
        //获取核容优劣,损坏参数
        List<AppParam> paramList=appParamService.getHrParam();
        Float badValue=0f;
        Float damageValue=0f;
        if(paramList!=null){
            for (AppParam param:paramList) {
                if(param.getParamNamePsx().equals("batt_mon_deteriorate_val")){
                    badValue=param.getParamValue();
                }
                if(param.getParamNamePsx().equals("batt_mon_damage_val")){
                    damageValue=param.getParamValue();
                }
            }
        }
        //1查询符合条件的电池组
        List<BattInf> binfList=battInfService.getDischr5Statistic(stic);
        List<BattInf> binfList=battInfService.getDischr6Statistic(stic);
        if(binfList==null||binfList.size()==0){
            return new Response().set(1,false,"当前用户未管理满足条件的电池组");
        }
        List<SticDischarge5Res> reslist=new ArrayList<>();
        for (BattInf binf:binfList) {
        List<SticDischarge6Res> reslist=new ArrayList<>();
        /*for (BattInf binf:binfList) {
            //查询电池组所在的班组
            String  groupName=bjService.getGroupName(binf.getPowerId());
            SticDischarge5Res res=new SticDischarge5Res();
            SticDischarge6Res res=new SticDischarge6Res();
            res.setProvice(binf.getProvice());
            res.setCity(binf.getCity());
            res.setCountry(binf.getCountry());
            res.setStationName(binf.getStationName());
            res.setBattgroupName(binf.getBattgroupName());
            //2.获取电池组在给定时间段的放电记录(指定时间段的标准核容放电)
            //2.获取电池组未放电记录(指定时间段的标准核容放电)
            BatttestdataInf tinf =getLastStandardTestDataByTime(binf.getBattgroupId(),stic.getTestStartTime(),stic.getTestEndTime());
            if(tinf==null){
                res.setRealCap(0f);
@@ -794,7 +780,7 @@
                    reslist.add(res);
                }
            }
        }
        }*/
        PageInfo pageInfo=PageInfoUtils.list2PageInfo(reslist, stic.getPageNum(), stic.getPageSize());
        return new Response().setII(1,reslist.size()>0,pageInfo,"本年度未放电数量统计");
    }
src/main/java/com/whyc/webSocket/RealTimeSocket.java
@@ -2,6 +2,7 @@
import com.whyc.config.WebSocketConfig;
import com.whyc.constant.DevStateEnum;
import com.whyc.dto.Real.SticRealRtdataDto;
import com.whyc.dto.Real.TopDto;
import com.whyc.dto.RealTimeDto;
import com.whyc.dto.Response;
@@ -25,6 +26,7 @@
import javax.servlet.http.HttpSession;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -238,7 +240,7 @@
                    topDto.setRestCap(restCap);
                    //实时组端电流,剩余容量,标称容量
                    if(battRtstate!=null){
                        Float restTime= BattCapFactory.getTheoryTime(battRtstate.getGroupCurr(), restCap, binf.getMoncapstd());
                        Float restTime= BattCapFactory.getTheoryTime(battRtstate.getLoadCurr(), restCap, binf.getMoncapstd());
                        topDto.setRestTime(restTime);
                    }
                }
@@ -462,13 +464,98 @@
            //电源对象(整流器使用情况)
            PowerInf powerInf = powerInfService.getPowerInfById(realDto.getPowerId());
            map.put("powerInf",powerInf!=null?powerInf:"");
            //获取电池组的蓄电池信息
            List<BattRtdata> battRtdataList = rtdataService.getRtdataRealInfo(realDto.getBattgroupId());
            SticRealRtdataDto dto=setMaxMinData(battRtdataList);
            map.put("sticRtdata",dto);
            return new Response().setII(1,true,map,"系统概述推送");
        }catch (Exception e) {
            e.printStackTrace();
        }
        return new Response().set(1,false,"系统概述推送");
    }
    //计算集合中单体电压,内阻,温度,容量的最大最小值
    public SticRealRtdataDto setMaxMinData(List<BattRtdata> battRtdataList){
        SticRealRtdataDto dto=new SticRealRtdataDto();
        Float maxCap = 0.0f;
        Float minCap = 0.0f;
        Float maxVol = 0.0f;
        Float minVol = 0.0f;
        Float maxTmp = 0.0f;
        Float minTmp = 0.0f;
        Float maxRes = 0.0f;
        Float minRes = 0.0f;
        List<Integer> maxCapNumList = new ArrayList<>();
        List<Integer> minCapNumList = new ArrayList<>();
        List<Integer> maxVolNumList = new ArrayList<>();
        List<Integer> minVolNumList = new ArrayList<>();
        List<Integer> maxTmpNumList = new ArrayList<>();
        List<Integer> minTmpNumList = new ArrayList<>();
        List<Integer> maxResNumList = new ArrayList<>();
        List<Integer> minResNumList = new ArrayList<>();
          //计算集合中单体电压,内阻,温度,容量的最大最小值
        for (BattRtdata rtdata:battRtdataList) {
            if(rtdata.getMonVol()>=maxVol){
                maxVol = rtdata.getMonVol();
            }
            if(rtdata.getMonVol()<=minVol){
                minVol = rtdata.getMonVol();
            }
            if(rtdata.getMonTmp()>=maxTmp){
                maxTmp = rtdata.getMonTmp();
            }
            if(rtdata.getMonTmp()<=minTmp){
                minTmp = rtdata.getMonTmp();
            }
            if(rtdata.getMonRes()>=maxRes){
                maxRes = rtdata.getMonRes();
            }
            if(rtdata.getMonRes()<=minRes){
                minRes = rtdata.getMonRes();
            }
            if(rtdata.getMonCap()>=maxCap){
                maxCap = rtdata.getMonCap();
            }
            if(rtdata.getMonCap()<=minCap){
                minCap = rtdata.getMonCap();
            }
        }
        dto.setMaxCap(maxCap);
        dto.setMinCap(minCap);
        dto.setMaxVol(maxVol);
        dto.setMinVol(minVol);
        dto.setMaxTmp(maxTmp);
        dto.setMinTmp(minTmp);
        dto.setMaxRes(maxRes);
        dto.setMinRes(minRes);
        for (BattRtdata rtdata:battRtdataList) {
            if(rtdata.getMonVol()==maxVol){
                maxVolNumList.add(rtdata.getMonNum());
            }
            if(rtdata.getMonVol()==minVol){
                minVolNumList.add(rtdata.getMonNum());
            }
            if(rtdata.getMonTmp()==maxTmp){
                maxTmpNumList.add(rtdata.getMonNum());
            }
            if(rtdata.getMonTmp()==minTmp){
                minTmpNumList.add(rtdata.getMonNum());
            }
            if(rtdata.getMonRes()==maxRes){
                maxResNumList.add(rtdata.getMonNum());
            }
            if(rtdata.getMonRes()==minRes){
                minResNumList.add(rtdata.getMonNum());
            }
            if(rtdata.getMonCap()==maxCap){
                maxCapNumList.add(rtdata.getMonNum());
            }
            if(rtdata.getMonCap()==minCap){
                minCapNumList.add(rtdata.getMonNum());
            }
        }
        return dto;
    }
    @OnClose
    public void onClose(CloseReason closeReason){
        System.err.println("closeReason = " + closeReason);
src/main/resources/mapper/BattInfMapper.xml
@@ -346,5 +346,32 @@
            order by tb_batt_inf.dev_id asc,battgroup_id asc
        </where>
    </select>
    <select id="getDischr6Statistic" resultType="com.whyc.pojo.db_station.BattInf">
        select distinct tb_batt_inf.*
        ,tb_station_inf.station_type,tb_station_inf.station_name,tb_station_inf.provice,tb_station_inf.city,tb_station_inf.country,tb_station_inf.full_name
        from db_station.tb_batt_inf,db_station.tb_station_inf
        <where>
            tb_batt_inf.station_id=tb_station_inf.station_id
            <if test="stic.provice!=null">
                and tb_station_inf.provice=#{stic.provice}
            </if>
            <if test="stic.city!=null">
                and tb_station_inf.city=#{stic.city}
            </if>
            <if test="stic.country!=null">
                and tb_station_inf.country=#{stic.country}
            </if>
            <if test="stic.stationName!=null">
                and tb_station_inf.station_name=#{stic.stationName}
            </if>
            <if test="stic.uid>100">
                and tb_batt_inf.station_id in(
                select distinct station_id from db_user.tb_baojigroup_power,db_user.tb_baojigroup_usr
                where   tb_baojigroup_power.baoji_group_id=tb_baojigroup_usr.baoji_group_id
                and tb_baojigroup_usr.uid=#{stic.uid}
                )
            </if>
            order by tb_batt_inf.dev_id asc,battgroup_id asc
        </where>
    </select>
</mapper>
src/main/resources/mapper/DeviceSetparamMapper.xml
@@ -26,6 +26,6 @@
        from db_ram_db.tb_device_setparam,  db_station.tb_batt_inf, db_station.tb_station_inf
        where tb_device_setparam.dev_id = tb_batt_inf.dev_id
        and tb_batt_inf.station_id = tb_station_inf.station_id
        and dev_id = #{devId} and battgroup_num = #{battGroupNum}
        and tb_device_setparam.dev_id = #{devId} and tb_device_setparam.battgroupnum = #{battGroupNum}
    </select>
</mapper>