lxw
2023-05-25 f3c27fb78447449a950ba73c5e72ceda64ad8a12
src/main/java/com/whyc/service/BadBattMonService.java
@@ -1,5 +1,6 @@
package com.whyc.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.dto.AlarmDaoFactory;
@@ -7,32 +8,44 @@
import com.whyc.dto.Response;
import com.whyc.dto.paramter.BattinfPar;
import com.whyc.dto.result.ReportBattBadDTO;
import com.whyc.mapper.AlarmParamMapper;
import com.whyc.mapper.BadbattMonMapper;
import com.whyc.mapper.BattInfMapper;
import com.whyc.pojo.AlarmParam;
import com.whyc.pojo.BadbattMon;
import com.whyc.pojo.BattMapInformation;
import com.whyc.pojo.UserInf;
import com.whyc.util.ActionUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class BadBattMonService {
    @Resource
    BadbattMonMapper badbattMonMapper;
    @Resource
    AlarmParamMapper alarmParamMapper;
    @Resource
    BattInfMapper binfMapper;
    public Response<List<BattMaintDealarm>> searchByInfo(int pageNum,int pageSize,BattinfPar battinfPar) {
    public Response<List<BattMaintDealarm>> searchByInfo(int pageNum, int pageSize, BattinfPar battinfPar) {
        //分页信息
        PageHelper.startPage(pageNum,pageSize);
        PageHelper.startPage(pageNum, pageSize);
        UserInf userInf = ActionUtil.getUser();
        List<ReportBattBadDTO> list = badbattMonMapper.searchByInfo(battinfPar,userInf.getUId().intValue());
        for (ReportBattBadDTO dto:list) {
            if(Integer.parseInt(dto.getBdmon().getNote())== AlarmDaoFactory.Alarm_CapAlarm){
        List<ReportBattBadDTO> list = badbattMonMapper.searchByInfo(battinfPar, userInf.getUId().intValue());
        for (ReportBattBadDTO dto : list) {
            if (Integer.parseInt(dto.getBdmon().getNote()) == AlarmDaoFactory.Alarm_CapAlarm) {
                dto.getBdmon().setNote("告警");
            }else if(Integer.parseInt(dto.getBdmon().getNote())== AlarmDaoFactory.Alarm_CapChange){
            } else if (Integer.parseInt(dto.getBdmon().getNote()) == AlarmDaoFactory.Alarm_CapChange) {
                dto.getBdmon().setNote("更换");
            }else{
            } else {
                dto.getBdmon().setNote("--");
            }
        }
@@ -56,12 +69,151 @@
    }
    //管理员首页:蓄电池优劣分析
    @Transactional
    public Response getQualityAnalysis(int userId) {
        return new Response().set(1);
        try {
            //1.查询劣化(告警)和损坏(更换)的阈值
            QueryWrapper<AlarmParam> alarmWrapper = new QueryWrapper();
            alarmWrapper.and(wrapper -> {
                return wrapper.eq("alm_name", "Batt_Alarm_Type_CapAlarm").or().eq("alm_name", "Batt_Alarm_Type_CapChange");
            });
            alarmWrapper.orderByAsc("alm_id");
            List<AlarmParam> paramList = alarmParamMapper.selectList(alarmWrapper);
            float capAlarm = 0f;
            float capChange = 0f;
            if (paramList != null && paramList.size() > 0) {
                capAlarm = paramList.get(0).getAlmLowCoe();//劣化参数0.8
                capChange = paramList.get(1).getAlmLowCoe();//损坏参数0.6
            } else {
                capAlarm = 0.8f;
                capChange = 0.6f;
            }
            Map<String, Integer> map = new HashMap<>();
            //劣化数量(包含损坏)
            int alarmNum = badbattMonMapper.getQualityAnalysis(userId, capAlarm);
            //损坏数量
            int changeNum = badbattMonMapper.getQualityAnalysis(userId, capChange);
            map.put("alarmNum", (alarmNum - changeNum));
            map.put("changeNum", changeNum);
            //总单体数(分类)
            int monNum = binfMapper.getMonCount(userId);
            map.put("monNum", monNum);
            //蓄电池优良
            map.put("goodSum", (monNum - alarmNum));
            return new Response().setII(1, true, map, "蓄电池优劣分析");
        } catch (Exception e) {
            return new Response<>().set(1, false, "发生异常:" + e.getCause());
        }
    }
    //管理员首页:蓄电池组优劣分析
    @Transactional
    public Response getGroupAnalysis(int userId) {
        try {
            //1.查询劣化(告警)和损坏(更换)的阈值
            QueryWrapper<AlarmParam> alarmWrapper = new QueryWrapper();
            alarmWrapper.and(wrapper -> {
                return wrapper.eq("alm_name", "Batt_Alarm_Type_CapAlarm").or().eq("alm_name", "Batt_Alarm_Type_CapChange");
            });
            alarmWrapper.orderByAsc("alm_id");
            List<AlarmParam> paramList = alarmParamMapper.selectList(alarmWrapper);
            float capAlarm = 0f;
            float capChange = 0f;
            if (paramList != null && paramList.size() > 0) {
                capAlarm = paramList.get(0).getAlmLowCoe();//劣化参数0.8
                capChange = paramList.get(1).getAlmLowCoe();//损坏参数0.6
            } else {
                capAlarm = 0.8f;
                capChange = 0.6f;
            }
            Map<String, Integer> map = new HashMap<>();
            //站点劣化数量(包含损坏)
            int alarmNum = badbattMonMapper.getGroupAnalysis(userId, capAlarm);
            //站点损坏数量
            int changeNum = badbattMonMapper.getGroupAnalysis(userId, capChange);
            map.put("alarmNum", (alarmNum - changeNum));
            map.put("changeNum", changeNum);
            //总电池组数(分类)
            int groupNum = binfMapper.geGroupCount(userId);
            map.put("groupNum", groupNum);
            //蓄电池优良
            map.put("goodSum", (groupNum - alarmNum));
            return new Response().setII(1, true, map, "蓄电池组优劣分析");
        } catch (Exception e) {
            return new Response<>().set(1, false, "发生异常:" + e.getCause());
        }
    }
    //管理员首页:不同品牌同一时间品质
    public Response getProductQuaAnalysis(int userId) {
        return new Response().set(1);
        Map<String, Map<String, Map<String, Integer>>> responseMap = new HashMap<>();
        float capAlarm = 0.8f;
        float capChange = 0.6f;
        try {
            //1.查询劣化(告警)和损坏(更换)的阈值
            QueryWrapper<AlarmParam> alarmWrapper = new QueryWrapper();
            alarmWrapper.and(wrapper -> {
                return wrapper.eq("alm_name", "Batt_Alarm_Type_CapAlarm").or().eq("alm_name", "Batt_Alarm_Type_CapChange");
            });
            alarmWrapper.orderByAsc("alm_id");
            List<AlarmParam> paramList = alarmParamMapper.selectList(alarmWrapper);
            if (paramList.size() > 0) {
                capAlarm = paramList.get(0).getAlmLowCoe();//劣化参数0.8
                capChange = paramList.get(1).getAlmLowCoe();//损坏参数0.6
            }
            //一年内数据
            List<BadbattMon> list1 = badbattMonMapper.getProductQuaAnalysis(userId, 1, capAlarm, capChange);
            Map<String, List<BadbattMon>> list1Map = list1.stream().collect(Collectors.groupingBy(BadbattMon::getBattProducer));
            Map<String, Map<String, Integer>> producerMap1 = new HashMap<>();
            for (String producer : list1Map.keySet()) {
                List<BadbattMon> badList1 = list1Map.get(producer);
                Map<String, List<BadbattMon>> badList1Map = badList1.stream().collect(Collectors.groupingBy(BadbattMon::getNote));
                Map<String, Integer> badMap = new HashMap<>();
                badMap.put("change", 0);
                badMap.put("alarm", 0);
                for (String note : badList1Map.keySet()) {
                    badMap.put(note, badList1Map.get(note).size());
                }
                producerMap1.put(producer, badMap);
            }
            responseMap.put("oneYear", producerMap1);
            //两年内数据
            List<BadbattMon> list2 = badbattMonMapper.getProductQuaAnalysis(userId, 2, capAlarm, capChange);
            Map<String, List<BadbattMon>> list2Map = list2.stream().collect(Collectors.groupingBy(BadbattMon::getBattProducer));
            Map<String, Map<String, Integer>> producerMap2 = new HashMap<>();
            for (String producer : list2Map.keySet()) {
                List<BadbattMon> badList2 = list2Map.get(producer);
                Map<String, List<BadbattMon>> badList2Map = badList2.stream().collect(Collectors.groupingBy(BadbattMon::getNote));
                Map<String, Integer> badMap2 = new HashMap<>();
                badMap2.put("change", 0);
                badMap2.put("alarm", 0);
                for (String note : badList2Map.keySet()) {
                    badMap2.put(note, badList2Map.get(note).size());
                }
                producerMap2.put(producer, badMap2);
            }
            responseMap.put("twoYear", producerMap2);
            //三年内数据
            List<BadbattMon> list3 = badbattMonMapper.getProductQuaAnalysis(userId, 3, capAlarm, capChange);
            Map<String, List<BadbattMon>> list3Map = list3.stream().collect(Collectors.groupingBy(BadbattMon::getBattProducer));
            Map<String, Map<String, Integer>> producerMap3 = new HashMap<>();
            for (String producer : list3Map.keySet()) {
                List<BadbattMon> badList3 = list3Map.get(producer);
                Map<String, List<BadbattMon>> badList3Map = badList3.stream().collect(Collectors.groupingBy(BadbattMon::getNote));
                Map<String, Integer> badMap3 = new HashMap<>();
                badMap3.put("change", 0);
                badMap3.put("alarm", 0);
                for (String note : badList3Map.keySet()) {
                    badMap3.put(note, badList3Map.get(note).size());
                }
                producerMap3.put(producer, badMap3);
            }
            responseMap.put("threeYear", producerMap3);
            return new Response().set(1, responseMap, "不同品牌同一时间品质和同品牌同时间品质");
        } catch (Exception e) {
            return new Response().set(1, responseMap, e.getCause().toString());
        }
    }
}