whyclxw
2025-06-04 4288e68cced096a216bebfcd797e78791e192c67
添加电池组使用时间,常量参数处理,单体统计修改,下拉条件增加
9个文件已修改
11个文件已添加
806 ■■■■■ 已修改文件
src/main/java/com/whyc/constant/BattAlarmIdEnum.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/constant/BattSingalIdEnum.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/constant/BattStateEnum.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/constant/DevAlarmEnum.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/constant/DevStateEnum.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/constant/PowerAlarmEnum.java 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/constant/StopReasonEnum.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/ConditionController.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/dto/Statistic/SticMonRes.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/AppParamMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/db_param/AppParam.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/db_station/BattInf.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/AppParamService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattRtdataService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattRtstateService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattalarmDataService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BatttestdataInfService.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/DeviceStateService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/webSocket/RealTimeSocket.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BattInfMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/constant/BattAlarmIdEnum.java
New file
@@ -0,0 +1,64 @@
package com.whyc.constant;
import java.util.HashMap;
import java.util.Map;
public enum BattAlarmIdEnum {
    ALARM_1(1,"在线电压上上限告警"),
    ALARM_2(2,"在线电压上限告警"),
    ALARM_3(3,"在线电压下限告警"),
    ALARM_4(4,"在线电压下下限告警"),
    ALARM_5(5,"组端电压上上限告警"),
    ALARM_6(6,"组端电压上限告警"),
    ALARM_7(7,"组端电压下限告警"),
    ALARM_8(8,"组端电压下下限告警"),
    ALARM_9(9,"充电电流上上限告警"),
    ALARM_10(10,"充电电流上限告警"),
    ALARM_11(11,"充电电流下限告警"),
    ALARM_12(12,"充电电流下下限告警"),
    ALARM_13(13,"放电电流上上限告警"),
    ALARM_14(14,"放电电流上限告警"),
    ALARM_15(15,"放电电流下限告警"),
    ALARM_16(16,"放电电流下下限告警"),
    ALARM_17(17,"单体电压上上限告警"),
    ALARM_18(18,"单体电压上限告警"),
    ALARM_19(19,"单体电压下限告警"),
    ALARM_20(20,"单体电压下下限告警"),
    ALARM_21(21,"单体温度上上限告警"),
    ALARM_22(22,"单体温度上限告警"),
    ALARM_23(23,"单体温度下限告警"),
    ALARM_24(24,"单体温度下下限告警"),
    ALARM_25(25,"单体内阻上上限告警"),
    ALARM_26(26,"单体内阻上限告警"),
    ALARM_27(27,"单体内阻下限告警"),
    ALARM_28(28,"单体内阻下下限告警"),
    ;
    private Integer stateId;
    private String stateName;
    BattAlarmIdEnum(Integer stateId, String stateName) {
        this.stateId = stateId;
        this.stateName = stateName;
    }
    public Integer getStateId() {
        return stateId;
    }
    public String getStateName() {
        return stateName;
    }
    public static String getValue(Integer stateId) {
        if(stateId==null){
            return "";
        }
        for (BattAlarmIdEnum ele : values()) {
            if(ele.getStateId().equals(stateId)) {
                return ele.getStateName();
            }
        }
        return null;
    }
}
src/main/java/com/whyc/constant/BattSingalIdEnum.java
New file
@@ -0,0 +1,51 @@
package com.whyc.constant;
import java.util.HashMap;
import java.util.Map;
public enum BattSingalIdEnum {
    ALARM_119001(119001,"在线电压告警"),
    ALARM_119002(119002,"组端电压告警"),
    ALARM_119003(119003,"充电电流告警"),
    ALARM_119004(119004,"放电电流告警"),
    ALARM_119005(119005,"单体电压告警"),
    ALARM_119006(119006,"单体温度告警"),
    ALARM_119007(119007,"单体内阻告警")
    ;
    private Integer stateId;
    private String stateName;
    BattSingalIdEnum(Integer stateId, String stateName) {
        this.stateId = stateId;
        this.stateName = stateName;
    }
    public Integer getStateId() {
        return stateId;
    }
    public String getStateName() {
        return stateName;
    }
    public static String getValue(Integer stateId) {
        if(stateId==null){
            return "";
        }
        for (BattSingalIdEnum ele : values()) {
            if(ele.getStateId().equals(stateId)) {
                return ele.getStateName();
            }
        }
        return null;
    }
    public static Map<Integer,String> getOpInfo() {
        Map<Integer,String> map=new HashMap<>();
        for (BattSingalIdEnum logOpEnum : BattSingalIdEnum.values()) {
            map.put(logOpEnum.getStateId(),logOpEnum.getStateName());
        }
        return map;
    }
}
src/main/java/com/whyc/constant/BattStateEnum.java
New file
@@ -0,0 +1,48 @@
package com.whyc.constant;
import java.util.HashMap;
import java.util.Map;
public enum BattStateEnum {
    BATTSTATE_0(0,"未知"),
    BATTSTATE_1(1,"浮充"),
    BATTSTATE_2(2,"充电"),
    BATTSTATE_3(3,"放电"),
    BATTSTATE_4(4,"内阻测试")
    ;
    private Integer stateId;
    private String stateName;
    BattStateEnum(Integer stateId, String stateName) {
        this.stateId = stateId;
        this.stateName = stateName;
    }
    public Integer getStateId() {
        return stateId;
    }
    public String getStateName() {
        return stateName;
    }
    public static String getValue(Integer stateId) {
        if(stateId==null){
            return "";
        }
        for (BattStateEnum ele : values()) {
            if(ele.getStateId().equals(stateId)) {
                return ele.getStateName();
            }
        }
        return null;
    }
    public static Map<Integer,String> getOpInfo() {
        Map<Integer,String> map=new HashMap<>();
        for (BattStateEnum logOpEnum : BattStateEnum.values()) {
            map.put(logOpEnum.getStateId(),logOpEnum.getStateName());
        }
        return map;
    }
}
src/main/java/com/whyc/constant/DevAlarmEnum.java
New file
@@ -0,0 +1,51 @@
package com.whyc.constant;
import java.util.HashMap;
import java.util.Map;
public enum DevAlarmEnum {
    ALARM_119020(119020,"通信故障"),
    ALARM_119021(119021,"设备高温告警"),
    ALARM_618501(618501,"继电器告警"),
    ALARM_618502(618502,"汇集器通讯故障告警"),
    ALARM_618503(618503,"设备过温告警"),
    ALARM_618504(618504,"二极管D1告警"),
    ALARM_618505(618505,"干接点告警")
    ;
    private Integer stateId;
    private String stateName;
    DevAlarmEnum(Integer stateId, String stateName) {
        this.stateId = stateId;
        this.stateName = stateName;
    }
    public Integer getStateId() {
        return stateId;
    }
    public String getStateName() {
        return stateName;
    }
    public static String getValue(Integer stateId) {
        if(stateId==null){
            return "";
        }
        for (DevAlarmEnum ele : values()) {
            if(ele.getStateId().equals(stateId)) {
                return ele.getStateName();
            }
        }
        return null;
    }
    public static Map<Integer,String> getOpInfo() {
        Map<Integer,String> map=new HashMap<>();
        for (DevAlarmEnum logOpEnum : DevAlarmEnum.values()) {
            map.put(logOpEnum.getStateId(),logOpEnum.getStateName());
        }
        return map;
    }
}
src/main/java/com/whyc/constant/DevStateEnum.java
New file
@@ -0,0 +1,50 @@
package com.whyc.constant;
import java.util.HashMap;
import java.util.Map;
public enum DevStateEnum {
    DEVSTATE_0(0,"直连充电"),
    DEVSTATE_1(1,"充电测试"),
    DEVSTATE_2(2,"放电测试"),
    DEVSTATE_3(3,"停电放电"),
    DEVSTATE_4(4,"内阻测试")
    ;
    private Integer stateId;
    private String stateName;
    DevStateEnum(Integer stateId, String stateName) {
        this.stateId = stateId;
        this.stateName = stateName;
    }
    public Integer getStateId() {
        return stateId;
    }
    public String getStateName() {
        return stateName;
    }
    public static String getValue(Integer stateId) {
        if(stateId==null){
            return "";
        }
        for (DevStateEnum ele : values()) {
            if(ele.getStateId().equals(stateId)) {
                return ele.getStateName();
            }
        }
        return null;
    }
    public static Map<Integer,String> getOpInfo() {
        Map<Integer,String> map=new HashMap<>();
        for (DevStateEnum logOpEnum : DevStateEnum.values()) {
            map.put(logOpEnum.getStateId(),logOpEnum.getStateName());
        }
        return map;
    }
}
src/main/java/com/whyc/constant/PowerAlarmEnum.java
New file
@@ -0,0 +1,184 @@
package com.whyc.constant;
import java.util.HashMap;
import java.util.Map;
public enum PowerAlarmEnum {
    ALARM_110001(110001,"1路交流A相过压告警"),
    ALARM_110002(110002,"1路交流A相欠压告警"),
    ALARM_110003(110003,"1路交流A相缺相告警"),
    ALARM_110004(110004,"1路交流B相过压告警"),
    ALARM_110005(110005,"1路交流B相欠压告警"),
    ALARM_110006(110006,"1路交流B相缺相告警"),
    ALARM_110007(110007,"1路交流C相过压告警"),
    ALARM_110008(110008,"1路交流C相欠压告警"),
    ALARM_110009(110009,"1路交流C相缺相告警"),
    ALARM_110010(110010,"交流停电告警"),
    ALARM_110011(110011,"防雷器故障告警"),
    ALARM_110012(110012,"直流电压过高告警"),
    ALARM_110013(110013,"直流电压过低告警"),
    ALARM_110014(110014,"负载熔断告警"),
    ALARM_110015(110015,"电池组1熔断告警"),
    ALARM_110016(110016,"电池组2熔断告警"),
    ALARM_110017(110017,"整流器1总故障告警"),
    ALARM_110018(110018,"整流器2总故障告警"),
    ALARM_110019(110019,"整流器3总故障告警"),
    ALARM_110020(110020,"整流器4总故障告警"),
    ALARM_110021(110021,"整流器5总故障告警"),
    ALARM_110022(110022,"整流器6总故障告警"),
    ALARM_110023(110023,"整流器7总故障告警"),
    ALARM_110024(110024,"整流器8总故障告警"),
    ALARM_110025(110025,"整流器9总故障告警"),
    ALARM_110026(110026,"整流器10总故障告警"),
    ALARM_110027(110027,"整流器11总故障告警"),
    ALARM_110028(110028,"整流器12总故障告警"),
    ALARM_110029(110029,"整流器13总故障告警"),
    ALARM_110030(110030,"整流器14总故障告警"),
    ALARM_110031(110031,"整流器15总故障告警"),
    ALARM_110032(110032,"整流器16总故障告警"),
    ALARM_110033(110033,"交流总故障告警"),
    ALARM_110034(110034,"直流总故障告警"),
    ALARM_110035(110035,"交流A相过流告警"),
    ALARM_110036(110036,"交流B相过流告警"),
    ALARM_110037(110037,"交流C相过流告警"),
    ALARM_110038(110038,"监控器故障告警"),
    ALARM_110039(110039,"直流过流告警"),
    ALARM_110040(110040,"开关柜总报警"),
    ALARM_110041(110041,"电池组1电压低告警"),
    ALARM_110042(110042,"电池组2电压低告警"),
    ALARM_110043(110043,"电池组1下电告警"),
    ALARM_110044(110044,"电池组2下电告警"),
    ALARM_110045(110045,"电池组1充电过流告警"),
    ALARM_110046(110046,"电池组2充电过流告警"),
    ALARM_110047(110047,"整流器1过压告警"),
    ALARM_110048(110048,"整流器2过压告警"),
    ALARM_110049(110049,"整流器3过压告警"),
    ALARM_110050(110050,"整流器4过压告警"),
    ALARM_110051(110051,"整流器5过压告警"),
    ALARM_110052(110052,"整流器6过压告警"),
    ALARM_110053(110053,"整流器7过压告警"),
    ALARM_110054(110054,"整流器8过压告警"),
    ALARM_110055(110055,"整流器9过压告警"),
    ALARM_110056(110056,"整流器10过压告警"),
    ALARM_110057(110057,"整流器11过压告警"),
    ALARM_110058(110058,"整流器12过压告警"),
    ALARM_110059(110059,"整流器13过压告警"),
    ALARM_110060(110060,"整流器14过压告警"),
    ALARM_110061(110061,"整流器15过压告警"),
    ALARM_110062(110062,"整流器16过压告警"),
    ALARM_110063(110063,"整流器1欠压告警"),
    ALARM_110064(110064,"整流器2欠压告警"),
    ALARM_110065(110065,"整流器3欠压告警"),
    ALARM_110066(110066,"整流器4欠压告警"),
    ALARM_110067(110067,"整流器5欠压告警"),
    ALARM_110068(110068,"整流器6欠压告警"),
    ALARM_110069(110069,"整流器7欠压告警"),
    ALARM_110070(110070,"整流器8欠压告警"),
    ALARM_110071(110071,"整流器9欠压告警"),
    ALARM_110072(110072,"整流器10欠压告警"),
    ALARM_110073(110073,"整流器11欠压告警"),
    ALARM_110074(110074,"整流器12欠压告警"),
    ALARM_110075(110075,"整流器13欠压告警"),
    ALARM_110076(110076,"整流器14欠压告警"),
    ALARM_110077(110077,"整流器15欠压告警"),
    ALARM_110078(110078,"整流器16欠压告警"),
    ALARM_110079(110079,"整流器1过流告警"),
    ALARM_110080(110080,"整流器2过流告警"),
    ALARM_110081(110081,"整流器3过流告警"),
    ALARM_110082(110082,"整流器4过流告警"),
    ALARM_110083(110083,"整流器5过流告警"),
    ALARM_110084(110084,"整流器6过流告警"),
    ALARM_110085(110085,"整流器7过流告警"),
    ALARM_110086(110086,"整流器8过流告警"),
    ALARM_110087(110087,"整流器9过流告警"),
    ALARM_110088(110088,"整流器10过流告警"),
    ALARM_110089(110089,"整流器11过流告警"),
    ALARM_110090(110090,"整流器12过流告警"),
    ALARM_110091(110091,"整流器13过流告警"),
    ALARM_110092(110092,"整流器14过流告警"),
    ALARM_110093(110093,"整流器15过流告警"),
    ALARM_110094(110094,"整流器16过流告警"),
    ALARM_110095(110095,"整流器1交流异常告警"),
    ALARM_110096(110096,"整流器2交流异常告警"),
    ALARM_110097(110097,"整流器3交流异常告警"),
    ALARM_110098(110098,"整流器4交流异常告警"),
    ALARM_110099(110099,"整流器5交流异常告警"),
    ALARM_110100(110100,"整流器6交流异常告警"),
    ALARM_110101(110101,"整流器7交流异常告警"),
    ALARM_110102(110102,"整流器8交流异常告警"),
    ALARM_110103(110103,"整流器9交流异常告警"),
    ALARM_110104(110104,"整流器10交流异常告警"),
    ALARM_110105(110105,"整流器11交流异常告警"),
    ALARM_110106(110106,"整流器12交流异常告警"),
    ALARM_110107(110117,"整流器13交流异常告警"),
    ALARM_110108(110108,"整流器14交流异常告警"),
    ALARM_110109(110109,"整流器15交流异常告警"),
    ALARM_110110(110110,"整流器16交流异常告警"),
    ALARM_110111(110111,"交流输入1跳闸告警"),
    ALARM_110112(110112,"交流输入2跳闸告警"),
    ALARM_110113(110113,"交流输入1熔丝告警"),
    ALARM_110114(110114,"交流输入2熔丝告警"),
    ALARM_110115(110115,"交流输入1三相不平衡告警"),
    ALARM_110116(110116,"交流输入2三相不平衡告警"),
    ALARM_110117(110117,"交流输入1频率异常告警"),
    ALARM_110118(110118,"交流输入2频率异常告警"),
    ALARM_110119(110119,"协转通信故障告警"),
    ALARM_110120(110120,"电源通信故障告警"),
    ALARM_110121(110121,"交流输入1停电告警"),
    ALARM_110122(110122,"交流输入2停电告警"),
    ALARM_110123(110123,"交流1采集通信故障告警"),
    ALARM_110124(110124,"交流2采集通信故障告警"),
    ALARM_110125(110125,"温感1通信故障告警"),
    ALARM_110126(110126,"温感2通信故障告警"),
    ALARM_110127(110127,"温感3通信故障告警"),
    ALARM_110128(110128,"湿感1通信故障告警"),
    ALARM_110129(110129,"湿感2通信故障告警"),
    ALARM_110130(110130,"湿感3通信故障告警"),
    ALARM_110131(110131,"烟感1报警告警"),
    ALARM_110132(110132,"烟感2报警告警"),
    ALARM_110133(110133,"烟感3报警告警"),
    ALARM_110134(110134,"烟感1通信故障告警"),
    ALARM_110135(110135,"烟感2通信故障告警"),
    ALARM_110136(110136,"烟感3通信故障告警"),
    ALARM_110137(110137,"2路交流A相过压告警"),
    ALARM_110138(110138,"2路交流A相欠压告警"),
    ALARM_110139(110139,"2路交流A相缺相告警"),
    ALARM_110140(110140,"2路交流B相过压告警"),
    ALARM_110141(110141,"2路交流B相欠压告警"),
    ALARM_110142(110142,"2路交流B相缺相告警"),
    ALARM_110143(110143,"2路交流C相过压告警"),
    ALARM_110144(110144,"2路交流C相欠压告警"),
    ALARM_110145(110145,"2路交流C相缺相告警"),
    ALARM_110146(110146,"电源告警"),
    ALARM_110147(110147,"交流停电通信故障")
    ;
    private Integer stateId;
    private String stateName;
    PowerAlarmEnum(Integer stateId, String stateName) {
        this.stateId = stateId;
        this.stateName = stateName;
    }
    public Integer getStateId() {
        return stateId;
    }
    public String getStateName() {
        return stateName;
    }
    public static String getValue(Integer stateId) {
        if(stateId==null){
            return "";
        }
        for (PowerAlarmEnum ele : values()) {
            if(ele.getStateId().equals(stateId)) {
                return ele.getStateName();
            }
        }
        return null;
    }
}
src/main/java/com/whyc/constant/StopReasonEnum.java
New file
@@ -0,0 +1,76 @@
package com.whyc.constant;
import java.util.HashMap;
import java.util.Map;
public enum StopReasonEnum {
    STOPREASON_0(0,"设备掉电终止"),
    STOPREASON_1(1,"手动终止"),
    STOPREASON_2(2,"放电时间到终止"),
    STOPREASON_3(3,"放电容量到终止"),
    STOPREASON_4(4,"单体电压下限到终止"),
    STOPREASON_5(5,"单体温度上限到终止"),
    STOPREASON_6(6,"组端电压下限到终止"),
    STOPREASON_7(7,"市电中断终止"),
    STOPREASON_8(8,"单体通信异常终止"),
    STOPREASON_9(9,"存储数据满终止"),
    STOPREASON_10(10,"机内温度异常终止"),
    STOPREASON_11(11,"放电电流异常终止"),
    STOPREASON_12(12,"后台通信中断终止"),
    STOPREASON_13(13,"内部程序异常终止"),
    STOPREASON_14(14,"电源电压高终止"),
    STOPREASON_15(15,"协转通信异常"),
    STOPREASON_16(16,"切换装置通信故障"),
    STOPREASON_17(17,"切换装置故障"),
    STOPREASON_18(18,"逆变器模块故障"),
    STOPREASON_19(19,"负载功率小"),
    STOPREASON_20(20,"干接点输入故障"),
    STOPREASON_21(21,"母联通信异常"),
    STOPREASON_22(22,"母联手动关闭或信号异常"),
    STOPREASON_23(23,"逆变器通信故障"),
    STOPREASON_24(24,"防雷器故障"),
    STOPREASON_25(25,"机柜表头通信故障"),
    STOPREASON_26(26,"限流充电模块故障"),
    STOPREASON_27(27,"紧急停止"),
    STOPREASON_28(28,"远程闭锁"),
    STOPREASON_29(29,"切换装置开关异常"),
    STOPREASON_30(30,"交流空开异常"),
    STOPREASON_31(31,"交流接触器异常"),
    STOPREASON_32(32,"直流空开异常"),
    STOPREASON_33(33,"切换开关粘连或电源状态异常"),
    STOPREASON_34(34,"电阻箱温度过高"),
    STOPREASON_35(35,"降压模块过温限流"),
    STOPREASON_36(36,"降压模块风扇故障"),
    STOPREASON_37(37,"降压模块过流故障"),
    STOPREASON_38(38,"充电截止到"),
    STOPREASON_39(39,"在线接触器状态异常")
    ;
    private Integer stateId;
    private String stateName;
    StopReasonEnum(Integer stateId, String stateName) {
        this.stateId = stateId;
        this.stateName = stateName;
    }
    public Integer getStateId() {
        return stateId;
    }
    public String getStateName() {
        return stateName;
    }
    public static String getValue(Integer stateId) {
        if(stateId==null){
            return "";
        }
        for (StopReasonEnum ele : values()) {
            if(ele.getStateId().equals(stateId)) {
                return ele.getStateName();
            }
        }
        return null;
    }
}
src/main/java/com/whyc/controller/ConditionController.java
@@ -2,10 +2,7 @@
import com.whyc.dto.Response;
import com.whyc.pojo.db_user.User;
import com.whyc.service.BaojigroupService;
import com.whyc.service.BattInfService;
import com.whyc.service.PowerInfService;
import com.whyc.service.StationInfService;
import com.whyc.service.*;
import com.whyc.util.ActionUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -27,6 +24,15 @@
    @Autowired
    private BattInfService binfService;
    @Autowired
    private BattalarmDataService  almDataService;
    @Autowired
    private DeviceStateService  deviceStateService;
    @Autowired
    private BattRtstateService  rtstateService;
    @ApiOperation("获取所有的省份(下拉)")
    @GetMapping("getProviceByUid")
@@ -134,6 +140,23 @@
        return bjGroupService.getBaojiUserByUid(uinf.getId());
    }
    @ApiOperation(value = "获取电池告警类型(下拉)")
    @GetMapping("getSingalIdIdType")
    public Response getSingalIdIdType(){
        return almDataService.getSingalIdType();
    }
    @ApiOperation(value = "获取设备工作类型(下拉)")
    @GetMapping("getDevState")
    public Response getDevState(){
        return deviceStateService.getDevState();
    }
    @ApiOperation(value = "获取电池组工作状态类型(下拉)")
    @GetMapping("getBattState")
    public Response getBattState(){
        return rtstateService.getBattState();
    }
}
src/main/java/com/whyc/dto/Statistic/SticMonRes.java
New file
@@ -0,0 +1,11 @@
package com.whyc.dto.Statistic;
import lombok.Data;
@Data
public class SticMonRes {
    private Integer battgroupId;
    private Integer monNum;
    private Float monVol;
    private Float monRes;
}
src/main/java/com/whyc/mapper/AppParamMapper.java
New file
@@ -0,0 +1,6 @@
package com.whyc.mapper;
import com.whyc.pojo.db_param.AppParam;
public interface AppParamMapper extends CustomMapper<AppParam>{
}
src/main/java/com/whyc/pojo/db_param/AppParam.java
New file
@@ -0,0 +1,48 @@
package com.whyc.pojo.db_param;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
 * <p>
 * 平台参数表
 * </p>
 *
 * @author lxw
 * @since 2025-06-04
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName(schema = "db_param",value ="tb_app_param")
@ApiModel(value="AppParam对象", description="平台参数表")
public class AppParam implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "自增主键")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @ApiModelProperty(value = "参数名称")
    private String paramName;
    @ApiModelProperty(value = "参数类别[1-单体判别阈值]")
    private Integer categoryId;
    @ApiModelProperty(value = "参数值")
    private Float paramValue;
    @ApiModelProperty(value = "参数名称(英文)")
    private String paramNamePsx;
}
src/main/java/com/whyc/pojo/db_station/BattInf.java
@@ -80,10 +80,12 @@
    @ApiModelProperty(value = "型号")
    private String battModel;
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/Shanghai")
    private Date createTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/Shanghai")
    private Date inuseTime;
    @TableField(exist = false)
    private String stationName;
src/main/java/com/whyc/service/AppParamService.java
New file
@@ -0,0 +1,26 @@
package com.whyc.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.whyc.mapper.AppParamMapper;
import com.whyc.pojo.db_param.AppParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class AppParamService {
    @Autowired(required = false)
    private AppParamMapper mapper;
    //获取核容优劣,损坏参数
    public List<AppParam> getHrParam() {
        QueryWrapper wrapper=new QueryWrapper();
        List<String> params=new ArrayList<>();
        params.add("batt_mon_deteriorate_val");
        params.add("batt_mon_damage_val");
        wrapper.in("param_name_psx",params);
        wrapper.orderByAsc("id");
        return mapper.selectList(wrapper);
    }
}
src/main/java/com/whyc/service/BattRtdataService.java
@@ -20,4 +20,13 @@
        List<BattRtdata> list=mapper.selectList(wrapper);
        return list;
    }
    //获取单体的实时数据
    public BattRtdata getRtdataByNum(Integer battgroupId, Integer monNum) {
        QueryWrapper wrapper=new QueryWrapper();
        wrapper.eq("battgroup_id",battgroupId);
        wrapper.eq("mon_num",monNum);
        wrapper.last("limit 1");
        BattRtdata rtdata=mapper.selectOne(wrapper);
        return rtdata;
    }
}
src/main/java/com/whyc/service/BattRtstateService.java
@@ -1,10 +1,15 @@
package com.whyc.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.whyc.constant.BattStateEnum;
import com.whyc.constant.DevStateEnum;
import com.whyc.dto.Response;
import com.whyc.mapper.BattRtstateMapper;
import com.whyc.pojo.db_ram_db.BattRtstate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
@Service
public class BattRtstateService {
@@ -18,4 +23,9 @@
        BattRtstate batt=mapper.selectOne(wrapper);
        return batt;
    }
    //获取电池组工作状态类型(下拉)
    public Response getBattState() {
        Map<Integer,String> map= BattStateEnum.getOpInfo();
        return new Response().setII(1,true,map,"获取电池组工作状态类型(下拉)");
    }
}
src/main/java/com/whyc/service/BattalarmDataService.java
@@ -4,6 +4,8 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.constant.BattAlarmIdEnum;
import com.whyc.constant.BattSingalIdEnum;
import com.whyc.dto.Real.AlmDto;
import com.whyc.dto.Response;
import com.whyc.mapper.BattalarmDataMapper;
@@ -14,7 +16,9 @@
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class BattalarmDataService {
@@ -46,4 +50,9 @@
        List<BattalarmData> list=mapper.selectList(wrapper);
        return list!=null?list.size():0;
    }
    //获取电池告警类型(下拉)
    public Response getSingalIdType() {
       Map<Integer,String> map= BattSingalIdEnum.getOpInfo();
       return new Response().setII(1,true,map,"获取电池告警类型(下拉)");
    }
}
src/main/java/com/whyc/service/BatttestdataInfService.java
@@ -7,17 +7,23 @@
import com.whyc.dto.Statistic.BattTinfStic;
import com.whyc.dto.Statistic.MonStic;
import com.whyc.dto.Statistic.StationStic;
import com.whyc.dto.Statistic.SticMonRes;
import com.whyc.factory.BattCapFactory;
import com.whyc.mapper.BattInfMapper;
import com.whyc.mapper.BatttestdataInfMapper;
import com.whyc.pojo.db_batt_testdata.BatttestdataId;
import com.whyc.pojo.db_batt_testdata.BatttestdataInf;
import com.whyc.pojo.db_param.AppParam;
import com.whyc.pojo.db_ram_db.BattRtdata;
import com.whyc.pojo.db_ram_db.BattRtstate;
import com.whyc.pojo.db_station.BattInf;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class BatttestdataInfService {
@@ -28,10 +34,17 @@
    private BattRtstateService rtstateService;
    @Autowired(required = false)
    private BattRtdataService rtdataService;
    @Autowired(required = false)
    private BattInfService battInfService;
    @Autowired(required = false)
    private BatttestdataIdService battTestdataIdService;
    @Autowired(required = false)
    private AppParamService appParamService;
@@ -86,11 +99,10 @@
    public BatttestdataInf getLastStandardTestData(Integer battgroupId) {
        QueryWrapper wrapper = new QueryWrapper();
        wrapper.eq("battgroup_id", battgroupId);
        wrapper.eq("data_available", 1);
        wrapper.eq("test_type", 3);
        wrapper.eq("test_starttype", 3);
        wrapper.last("limit 1");
        wrapper.last("  and test_timelong >= 7200 ORDER BY test_starttime DESC ");
        wrapper.last("limit 1");
        BatttestdataInf tinf = mapper.selectOne(wrapper);
        return tinf;
    }
@@ -101,20 +113,107 @@
      4浮充电压图,需要显示单体+实时数据的单体电压,单体内阻
    */
    public Response getMonStatistic(MonStic stic) {
        Map<String,Object> map=new HashMap<>();
        List<SticMonRes> goodlist=new ArrayList();
        List<SticMonRes> badlist=new ArrayList();
        List<SticMonRes> damagelist=new ArrayList();
        map.put("goodlist",goodlist);
        map.put("badlist",badlist);
        map.put("damagelist",damagelist);
        map.put("goodlistNum",0);
        map.put("badlistNum",0);
        map.put("damagelistNum",0);
        //获取核容优劣,损坏参数
        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();
                }
            }
        }
        List<BattInf> binfList=battInfService.getMonStatistic(stic);
        if(binfList!=null&&binfList.size()>0){
        Float realCap=0f;
        if(binfList==null){
           return new Response().set(1,false,"当前用户未管理满足条件的电池组");
        }
            for (BattInf binf:binfList) {
                BatttestdataInf tinf =getLastStandardTestData(binf.getBattgroupId());
                if(tinf!=null){
            if(tinf==null){
                //将不满足条件的电池组的所有单体放入damage中
                setDamage(damagelist,binf);
                continue;
            }
                    //找这次放电的最后一笔数据
                    List<BatttestdataId> idDataList=battTestdataIdService.getLastDataByBattgroupId(tinf.getBattgroupId(),tinf.getTestRecordCount(),tinf.getRecordNum());
                    for (BatttestdataId data:idDataList) {
            if(idDataList==null||idDataList.size()==0){
                //将不满足条件的电池组的所有单体放入damage中
                setDamage(damagelist,binf);
                continue;
            }
                        int hourRate = BattCapFactory.GetHourRate(tinf.getTestCap(), tinf.getTestCurr());
                        Float realCap = (float) BattCapFactory.GetMonomerCap(tinf.getTestCap(), hourRate, tinf.getTestCap(), tinf.getMaxMonvol(), tinf.getMinMonvol(), tinf.getGroupVol(), BattCapFactory.CapType_Real);
            Float moncapStd=binf.getMoncapstd();
            for (BatttestdataId data:idDataList) {//求单体的 实际容量,最小值就是单体的单体电压
                realCap = (float) BattCapFactory.GetMonomerCap(tinf.getTestCap(), hourRate, tinf.getTestCap(), tinf.getMaxMonvol(),data.getMonVol() , tinf.getGroupVol(), BattCapFactory.CapType_Real);
                SticMonRes res=new SticMonRes();
                res.setBattgroupId(binf.getBattgroupId());
                res.setMonNum(data.getMonNum());
                //获取单体的实时数据
                BattRtdata rtdata=rtdataService.getRtdataByNum(binf.getBattgroupId(),data.getMonNum());
                if(rtdata==null){
                    res.setMonVol(0f);
                    res.setMonRes(0f);
                }else{
                    res.setMonVol(rtdata.getMonVol());
                    res.setMonRes(rtdata.getMonRes());
                }
                if(realCap>=moncapStd*badValue){
                    goodlist.add(res);
                }
                if(realCap<=moncapStd*damageValue){
                    damagelist.add(res);
                }
                if((realCap>moncapStd*damageValue)&&(realCap<moncapStd*badValue)){
                    badlist.add(res);
                    }
                }
            }
        map.put("goodlist",goodlist);
        map.put("badlist",badlist);
        map.put("damagelist",damagelist);
        map.put("goodlistNum",goodlist.size());
        map.put("badlistNum",badlist.size());
        map.put("damagelistNum",damagelist.size());
        return new Response().setII(1,true,map,"单节数量统计");
        }
        return new Response().set(1,false,"");
    //将不满足条件的电池组的所有单体放入damage中
    private void setDamage(List damagelist, BattInf binf) {
        //获取电池组的实时数据
        List<BattRtdata> rtdataList=rtdataService.getRtdataRealInfo(binf.getBattgroupId());
        if(rtdataList==null||rtdataList.size()==0){
            for (int i=0;i<binf.getMoncount();i++){
                SticMonRes res=new SticMonRes();
                res.setBattgroupId(binf.getBattgroupId());
                res.setMonNum(i+1);
                res.setMonVol(0f);
                res.setMonRes(0f);
                damagelist.add(res);
            }
        }else {
            for (BattRtdata rtdata:rtdataList) {
                SticMonRes res=new SticMonRes();
                res.setBattgroupId(binf.getBattgroupId());
                res.setMonNum(rtdata.getMonNum());
                res.setMonVol(rtdata.getMonVol());
                res.setMonRes(rtdata.getMonRes());
                damagelist.add(res);
            }
        }
    }
}
src/main/java/com/whyc/service/DeviceStateService.java
@@ -3,6 +3,8 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.constant.BattSingalIdEnum;
import com.whyc.constant.DevStateEnum;
import com.whyc.dto.Response;
import com.whyc.dto.Statistic.DeviceStateStic;
import com.whyc.mapper.DeviceStateMapper;
@@ -13,6 +15,7 @@
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class DeviceStateService {
@@ -33,4 +36,9 @@
        PageInfo pageInfo=new PageInfo(list);
        return new Response().setII(1,list.size()>0,pageInfo,"设备工作状态统计");
    }
    //获取设备工作类型(下拉)
    public Response getDevState() {
        Map<Integer,String> map= DevStateEnum.getOpInfo();
        return new Response().setII(1,true,map,"获取设备工作类型(下拉)");
    }
}
src/main/java/com/whyc/webSocket/RealTimeSocket.java
@@ -1,6 +1,7 @@
package com.whyc.webSocket;
import com.whyc.config.WebSocketConfig;
import com.whyc.constant.DevStateEnum;
import com.whyc.dto.Real.TopDto;
import com.whyc.dto.RealTimeDto;
import com.whyc.dto.Response;
@@ -227,7 +228,7 @@
            DeviceState deviceState = deviceStateService.getDevRealInfo(realDto.getDevId());
            if (deviceState != null) {
                topDto.setDevState(deviceState.getDevWorkstate());
                if (deviceState.getDevWorkstate() == 1) {//核容放电
                if (deviceState.getDevWorkstate() == DevStateEnum.DEVSTATE_2.getStateId()) {//核容放电
                    topDto.setCaptestGroupvol(deviceState.getDevCaptestGroupvol());
                    topDto.setCaptestCurr(deviceState.getDevCaptestCurr());
                    topDto.setCaptestTimelong(deviceState.getDevCaptestTimelong());
src/main/resources/mapper/BattInfMapper.xml
@@ -186,10 +186,10 @@
                and tb_batt_inf.monvolstd=#{stic.monvolstd}
            </if>
            <if test="stic.startTime!=null">
                and tb_batt_inf.create_time>=#{stic.startTime}
                and tb_batt_inf.inuse_time>=#{stic.startTime}
            </if>
            <if test="stic.endTime!=null">
                and tb_batt_inf.create_time&lt;=#{stic.endTime}
                and tb_batt_inf.inuse_time&lt;=#{stic.endTime}
            </if>
            <if test="stic.uid>100">
                and tb_batt_inf.station_id in(