whycxzp
9 天以前 1f8715acbe5ac4bbaa61ac0224a7f3d77470ccad
领导层首页-设备数量概况信息统计
4个文件已修改
103 ■■■■■ 已修改文件
src/main/java/com/whyc/mapper/BatttestdataInfMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BatttestdataInfService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/LeaderHomeService.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BatttestdataInfMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/BatttestdataInfMapper.java
@@ -16,4 +16,5 @@
    List<BatttestdataInf> getListByUserId(Integer userId);
    int getHrDisCount(Integer userId, Date startTime, Date endTime);
}
src/main/java/com/whyc/service/BatttestdataInfService.java
@@ -976,4 +976,8 @@
    public List<BatttestdataInf> getListByUserId(Integer userId) {
        return mapper.getListByUserId(userId);
    }
    public int getHrDisCount(Integer userId, Date startTime, Date endTime) {
        return mapper.getHrDisCount(userId, startTime, endTime);
    }
}
src/main/java/com/whyc/service/LeaderHomeService.java
@@ -18,6 +18,8 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.*;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ThreadPoolExecutor;
@@ -60,7 +62,6 @@
    private BatttestdataIdService battTestDataIdService;
    public Response getAll(Integer userId) {
        Response response = new Response();
        Map<String,Object> map = new HashMap<>();
@@ -89,9 +90,9 @@
            testDataInfoStatistics(userId, map);
            latch.countDown();
        });
        //TODO 设备数量信息统计
        //10类基础资产信息统计
        poolExecutor.execute(() -> {
            //deviceInfoStatistics(userId, map);
            deviceInfoStatistics(userId, map);
            latch.countDown();
        });
@@ -108,6 +109,69 @@
        return response;
    }
    private void deviceInfoStatistics(Integer userId, Map<String, Object> map) {
        NameValueIntDto baseDto = new NameValueIntDto();
        int powerCount = powerInfService.getListByUserId(userId).size();
        map.put("powerCount", powerCount);
        List<BattInf> battInfList = battInfService.getListByUserId(userId);
        int battCount = battInfList.size();
        Map<Integer, List<BattInf>> devIdMap = battInfList.stream().collect(Collectors.groupingBy(BattInf::getDevId));
        map.put("devCount", devIdMap.size());
        map.put("battCount",battCount);
        int monCountTotal = 0;
        for (int i = 0; i < battCount; i++) {
            int monCount = battInfList.get(i).getMoncount().intValue();
            monCountTotal += monCount;
        }
        map.put("monCount", monCountTotal);
        LocalDateTime now = LocalDateTime.now();
        //本年第一天
        LocalDateTime yearStart = now.withDayOfYear(1).withHour(0).withMinute(0).withSecond(0).withNano(0);
        Date yearStartTime = DateUtil.convertToDate(yearStart);
        //去年的第一天
        LocalDateTime lastYearStart = now.minusYears(1).withDayOfYear(1).withHour(0).withMinute(0).withSecond(0).withNano(0);
        //去年的最后一天
        int lastYear = now.minusYears(1).getYear();
        LocalDate lastDayOfLastYear = LocalDate.of(lastYear, 12, 31);
        LocalDateTime lastYearEnd = lastDayOfLastYear.atTime(LocalTime.MAX);
        Date lastYearStartTime = DateUtil.convertToDate(lastYearStart);
        Date lastYearEndTime = DateUtil.convertToDate(lastYearEnd);
        //本年已放电电池数量
        //本年未放电电池数量
        //去年已放电电池数量
        //去年未放电电池数量
        int hrDisBattCount = battTestDataInfService.getHrDisCount(userId,yearStartTime,null);
        int hrNoDisBattCount = battCount - hrDisBattCount;
        int hrDisBattCountLastYear = battTestDataInfService.getHrDisCount(userId,lastYearStartTime,lastYearEndTime);
        int hrNoDisBattCountLastYear = battCount - hrDisBattCountLastYear;
        map.put("hrDisBattCount", hrDisBattCount);
        map.put("hrNoDisBattCount", hrNoDisBattCount);
        map.put("hrDisBattCountLastYear", hrDisBattCountLastYear);
        map.put("hrNoDisBattCountLastYear", hrNoDisBattCountLastYear);
        //本年优良劣化损坏数量
        List<BattCapInfoDto> battCapInfoList = getBattCapInfo(battInfList,yearStartTime,null);
        long battGoodCount = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_1.getStateName())).count();
        long battBadCount = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_2.getStateName())).count();
        long battDamageCount = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_3.getStateName())).count();
        //去年优良劣化损坏数量
        List<BattCapInfoDto> battCapInfoListLastYear = getBattCapInfo(battInfList,lastYearStartTime,lastYearEndTime);
        long battGoodCountLastYear = battCapInfoListLastYear.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_1.getStateName())).count();
        long battBadCountLastYear = battCapInfoListLastYear.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_2.getStateName())).count();
        long battDamageCountLastYear = battCapInfoListLastYear.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_3.getStateName())).count();
        map.put("battGoodCount", battGoodCount);
        map.put("battBadCount", battBadCount);
        map.put("battDamageCount", battDamageCount);
        map.put("battGoodCountLastYear", battGoodCountLastYear);
        map.put("battBadCountLastYear", battBadCountLastYear);
        map.put("battDamageCountLastYear", battDamageCountLastYear);
        //TODO 优良电源数量
        map.put("powerGoodCount","优良判定标准待确定" );
    }
    private void alarmRealtimeStatistics(Integer userId, Map<String, Object> map) {
        //电池告警信息统计
@@ -792,7 +856,7 @@
        battInf.setProduct(brand);
        //查询满足条件的蓄电池列表
        List<BattInf> battInfList = battInfService.getListByCondition(userId,battInf);
        List<BattCapInfoDto> battCapInfoList = getBattCapInfo(battInfList);
        List<BattCapInfoDto> battCapInfoList = getBattCapInfo(battInfList,null,null);
        //data,和data2分别返回 统计数量和 站点优良,劣化,损坏 前二的信息
        List<NameValueIntDto> data = new ArrayList<>();
        List<NameValueListDto> data2 = new ArrayList<>();
@@ -836,7 +900,7 @@
        battInf.setInuseTime(inuseTimeStart);
        //查询满足条件的蓄电池列表
        List<BattInf> battInfList = battInfService.getListByCondition(userId,battInf);
        List<BattCapInfoDto> battCapInfoList = getBattCapInfo(battInfList);
        List<BattCapInfoDto> battCapInfoList = getBattCapInfo(battInfList,null,null);
        //data,根据品牌分组统计百分比
        Map<String, List<BattCapInfoDto>> brandMap = battCapInfoList.stream().collect(Collectors.groupingBy(BattCapInfoDto::getProduct));
@@ -943,7 +1007,7 @@
        battInf.setProduct(brand);
        //查询满足条件的蓄电池列表
        List<BattInf> battInfList = battInfService.getListByCondition(userId,battInf);
        List<BattCapInfoDto> battCapInfoList = getBattCapInfo(battInfList);
        List<BattCapInfoDto> battCapInfoList = getBattCapInfo(battInfList,null,null);
        //data,TODO 投运时间的维度参数,先固定变量,后续从数据库获取
        //time1和time2的单位为年
@@ -1055,7 +1119,7 @@
    }
    public List<BattCapInfoDto> getBattCapInfo(List<BattInf> battInfList) {
    public List<BattCapInfoDto> getBattCapInfo(List<BattInf> battInfList,Date startTime, Date endTime) {
        //获取核容优劣,损坏参数
        List<AppParam> paramList=appParamService.getHrParam();
        Float badValue=0f;
@@ -1086,7 +1150,8 @@
            capInfo.setInuseTime(battInf.getInuseTime());
            //2.获取电池组在给定时间段的放电记录(指定时间段的标准核容放电)
            BatttestdataInf testInf = battTestDataInfService.getLastStandardTestDataByTime(battInf.getBattgroupId(), battInf.getInuseTime(),null);
            //BatttestdataInf testInf = battTestDataInfService.getLastStandardTestDataByTime(battInf.getBattgroupId(), battInf.getInuseTime(),null);
            BatttestdataInf testInf = battTestDataInfService.getLastStandardTestDataByTime(battInf.getBattgroupId(), startTime,endTime);
            if (testInf == null) {
                capInfo.setRealCap(0f);
                capInfo.setCapPercentage("0");
src/main/resources/mapper/BatttestdataInfMapper.xml
@@ -71,4 +71,21 @@
        )
    </select>
    <select id="getHrDisCount" resultType="java.lang.Integer">
        select distinct battgroup_id from db_batt_testdata.tb_batttestdata_inf
        where test_type=3
        and test_starttype=3 and test_timelong >=7200
        <if test="startTime!=null">
            and test_starttime >= #{startTime}
        </if>
        <if test="endTime!=null">
            and test_starttime &lt;= #{endTime}
        </if>
        and battgroup_id in(
        select distinct battgroup_id from db_user.tb_baojigroup_usr bu,db_user.tb_baojigroup_power bp,db_station.tb_batt_inf bi
        where bu.baoji_group_id = bp.baoji_group_id
        and bp.station_id = bi.station_id
        and bu.uid = #{userId}
        )
    </select>
</mapper>