whycxzp
2021-10-05 52336ae7b390983116a0c5a24ec875cc022ad1ff
更新续航统计和电池健康统计接口
5个文件已修改
1个文件已添加
136 ■■■■■ 已修改文件
src/main/java/com/whyc/constant/SqlConstant.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/BatteryDataController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/dto/BadBattMonDTO.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/BatteryDataMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BatteryDataService.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BatteryDataMapper.xml 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/constant/SqlConstant.java
@@ -38,4 +38,15 @@
            "  `create_time` DATETIME NULL,\n" +
            "  PRIMARY KEY (`id`));";
    /**用户对应的电池组id*/
    public static String BattGroupIdsOfUser =" (select distinct db_battinf.tb_battinf.battgroupid " +
            "from " +
            "db_battinf.tb_battinf," +
            "db_user.tb_user_battgroup_baojigroup_battgroup," +
            "db_user.tb_user_battgroup_baojigroup_usr," +
            "db_user.tb_user_inf " +
            "where db_user.tb_user_battgroup_baojigroup_battgroup.BattGroupId=db_battinf.tb_battinf.BattGroupId " +
            "and db_user.tb_user_battgroup_baojigroup_usr.baoji_group_id=db_user.tb_user_battgroup_baojigroup_battgroup.baoji_group_id " +
            "and db_user.tb_user_inf.uid=db_user.tb_user_battgroup_baojigroup_usr.uid " +
            "and db_user.tb_user_inf.uid=? )";
}
src/main/java/com/whyc/controller/BatteryDataController.java
@@ -34,6 +34,12 @@
        return service.getBatteryCap(userId);
    }
    @GetMapping("capStatus")
    @ApiOperation(value = "电池单体容量状态")
    public Response monCapStatus(@RequestParam Integer userId){
        return service.getMonCapStatus(userId);
    }
    @GetMapping("monVol")
    @ApiOperation(value = "单体电压统计")
    public Response getMonVol(@RequestParam Integer userId){
@@ -52,9 +58,6 @@
        return service.getMonRes(userId);
    }
    /**
     * TODO:单体容量统计,统计格式待定,如何统计待确定
     */
    @GetMapping("monCap")
    @ApiOperation(value = "单体容量统计")
    public Response getMonCap(@RequestParam Integer userId){
src/main/java/com/whyc/dto/BadBattMonDTO.java
New file
@@ -0,0 +1,23 @@
package com.whyc.dto;
/**落后电池单体*/
public class BadBattMonDTO {
    private Integer note;
    private Integer num;
    public Integer getNote() {
        return note;
    }
    public void setNote(Integer note) {
        this.note = note;
    }
    public Integer getNum() {
        return num;
    }
    public void setNum(Integer num) {
        this.num = num;
    }
}
src/main/java/com/whyc/mapper/BatteryDataMapper.java
@@ -1,5 +1,6 @@
package com.whyc.mapper;
import com.whyc.dto.BadBattMonDTO;
import com.whyc.dto.BatteryInfo;
import com.whyc.dto.DataAnalysisFloatDTO;
import com.whyc.pojo.BatteryEndurance;
@@ -13,4 +14,7 @@
    List<BatteryRTState> getBatteryCap(Integer userId);
    Integer getTotalMonNum(Integer userId);
    List<BadBattMonDTO> getBadMonOfCapAlarm(Integer userId);
}
src/main/java/com/whyc/service/BatteryDataService.java
@@ -1,10 +1,8 @@
package com.whyc.service;
import com.whyc.dto.AnalysisMonCapDTO;
import com.whyc.dto.BatteryInfo;
import com.whyc.dto.Response;
import com.whyc.constant.AlarmConstant;
import com.whyc.dto.*;
import com.whyc.mapper.*;
import com.whyc.dto.AnalysisMonFieldDTO;
import com.whyc.pojo.BatteryEndurance;
import com.whyc.pojo.BatteryRTState;
import com.whyc.pojo.Tables;
@@ -44,7 +42,20 @@
    /**按时间阶段统计续航*/
    private static Map enduranceAnalysis(List<BatteryEndurance> enduranceList, List<Integer> times) {
        Map<String,Integer> map = new HashMap<>();
        Map<String,Integer> map = new LinkedHashMap<>();
        //初始化续航分类
        for (int i = 0; i < times.size(); i++) {
            if(i ==0 ){
                map.put("续航"+times.get(0)+"小时内",0);
            }
            else if(i == times.size()-1){
                map.put("续航"+times.get(i-1)+"小时到"+times.get(i)+"小时",0);
                map.put("续航"+times.get(times.size()-1)+"小时以上",0);
            }else {
                map.put("续航" + times.get(i-1) + "小时到" + times.get(i) + "小时", 0);
            }
        }
        for (int i = 0; i < enduranceList.size(); i++) {
            //每一个具体的续航进行分组
@@ -116,6 +127,44 @@
        return maps;
    }
    /**
     * 落后单体统计,统计各种类型所占比例:
     * 容量告警:单体容量告警
     * 容量更换:单体容量更换
     * 总电池单体-上面两种:单体容量健康
     */
    public Response getMonCapStatus(Integer userId) {
        //初始化 单体容量健康 单体容量告警 单体容量更换 和 map
        Map<String,Integer> monCapMap = new HashMap();
        Integer monCapGood = 0;
        Integer monCapAlarm = 0;
        Integer monCapChange = 0;
        //查询用户管理的总单体数
        Integer totalMonNum = mapper.getTotalMonNum(userId);
        //查询用户管理的落后单体数
        List<BadBattMonDTO> list = mapper.getBadMonOfCapAlarm(userId);
        if(!list.isEmpty()) {
            for (int i = 0; i < list.size(); i++) {
                //容量告警
                if (list.get(i).getNote() == AlarmConstant.Alarm_CapAlarm) {
                    monCapAlarm = list.get(i).getNum();
                }
                //容量更换
                else {
                    monCapChange = list.get(i).getNum();
                }
            }
        }
        monCapGood = totalMonNum - monCapAlarm -monCapChange ;
        monCapMap.put("单体容量健康",monCapGood);
        monCapMap.put("单体容量告警",monCapAlarm);
        monCapMap.put("单体容量更换",monCapChange);
        return new Response().set(1,monCapMap);
    }
    /**单体信息统计*/
    public List<AnalysisMonFieldDTO> monFieldStatistics(String filedName, String fieldName2) {
            //查询所有的电池组
src/main/resources/mapper/BatteryDataMapper.xml
@@ -52,4 +52,34 @@
    <select id="getMonVolAndTemp" resultType="com.whyc.dto.DataAnalysisFloatDTO"></select>
    <select id="getMonRes" resultType="com.whyc.dto.DataAnalysisFloatDTO"></select>
    <select id="getMonCap" resultType="com.whyc.dto.DataAnalysisFloatDTO"></select>
    <select id="getTotalMonNum" resultType="java.lang.Integer">
        SELECT
            SUM(moncount) AS totalMonNum
        FROM
            db_battinf.tb_battinf,
            db_user.tb_user_battgroup_baojigroup_battgroup,
            db_user.tb_user_battgroup_baojigroup_usr,
            db_user.tb_user_inf
        WHERE
            db_user.tb_user_battgroup_baojigroup_battgroup.BattGroupId = db_battinf.tb_battinf.BattGroupId
        AND db_user.tb_user_battgroup_baojigroup_usr.baoji_group_id = db_user.tb_user_battgroup_baojigroup_battgroup.baoji_group_id
        AND db_user.tb_user_inf.uid = db_user.tb_user_battgroup_baojigroup_usr.uid
        AND db_user.tb_user_inf.uid = #{userId}
    </select>
    <select id="getBadMonOfCapAlarm" resultType="com.whyc.dto.BadBattMonDTO">
        SELECT
            note,count(distinct battgroupid,mon_num) as num
        FROM
            web_site.tb_badbatt_mon
        where
            note in (119010,119011)
        and battgroupid in (
            select distinct db_battinf.tb_battinf.battgroupid
            from db_battinf.tb_battinf,db_user.tb_user_battgroup_baojigroup_battgroup,db_user.tb_user_battgroup_baojigroup_usr,db_user.tb_user_inf
            where db_user.tb_user_battgroup_baojigroup_battgroup.BattGroupId=db_battinf.tb_battinf.BattGroupId
            and db_user.tb_user_battgroup_baojigroup_usr.baoji_group_id=db_user.tb_user_battgroup_baojigroup_battgroup.baoji_group_id
            and db_user.tb_user_inf.uid=db_user.tb_user_battgroup_baojigroup_usr.uid
            and db_user.tb_user_inf.uid=#{userId} )
        group by note
    </select>
</mapper>