whyclxw
2025-05-08 35bd0babece513b6ee4285265f3379cbcb050e59
src/main/java/com/whyc/service/BattRtstateService.java
@@ -1,21 +1,28 @@
package com.whyc.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.constant.AlarmConstant;
import com.whyc.dto.BattState;
import com.whyc.dto.BattMaintDealarm;
import com.whyc.dto.BattTestData;
import com.whyc.dto.Response;
import com.whyc.mapper.BattRtstateMapper;
import com.whyc.pojo.BattRtstate;
import com.whyc.pojo.Battinf;
import com.whyc.pojo.Fbs9100State;
import com.whyc.pojo.UserInf;
import com.whyc.util.ActionUtil;
import com.whyc.util.DateUtil;
import com.whyc.util.MessageUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class BattRtstateService {
@@ -31,22 +38,144 @@
     * @return
     */
    public Response searchBattLife(int pageNum, int pageSize, Battinf binf) {
        PageHelper.startPage(pageNum,pageSize);
        PageHelper.startPage(pageNum, pageSize);
        UserInf userInf = ActionUtil.getUser();
        List<BattState> list = battRtstateMapper.searchBattLife(binf,userInf.getUId().intValue());
        for (BattState bs:list) {
        String lang = ActionUtil.getLang();
        List<BattState> list = battRtstateMapper.searchBattLife(binf, userInf.getUId().intValue());
        for (BattState bs : list) {
            Battinf battinf = bs.getBinf();
            battinf.setStationName9(BattTestData.battState(battinf.getNum()));
            battinf.setStationName9(MessageUtils.getMessageSocket(BattTestData.battState(battinf.getNum()), lang));
        }
        PageInfo<BattState> pageInfo = new PageInfo<>(list);
        return new Response().set(1,pageInfo,"查询成功");
        return new Response().set(1, pageInfo, "查询成功");
    }
    //查询实时组端信息
    @Transactional
    public Response<BattRtstate> serchByCondition(int battGroupId) {
        QueryWrapper wrapper=new QueryWrapper();
        wrapper.eq("BattGroupId",battGroupId);
        QueryWrapper wrapper = new QueryWrapper();
        wrapper.eq("BattGroupId", battGroupId);
        wrapper.last(" limit 1");
        BattRtstate brt=battRtstateMapper.selectOne(wrapper);
        return new Response().set(1,brt);
        BattRtstate brt = battRtstateMapper.selectOne(wrapper);
        if(brt!=null){
            brt.setControlFailTypeName(BattTestData.getControlFailType6186(brt.getControlFailType()));
            brt.setLastCapTestStopTypeName(BattTestData.getStopType_61853(brt.getLastCapTestStopType()));
        }
        return new Response().setII(1, brt == null ? false : true, brt, "");
    }
    //9140设备要将2组电池的组端信息都给他
    public Response serch9140Info(int devId) {
        List<BattRtstate> list = battRtstateMapper.serch9140Info(devId);
        return new Response().setII(1, list.size() > 0 ? true : false, list, "9140数据");
    }
    //3D查询机房下电池组端信息
    public Response getStation3D(String stationId) {
        List<BattRtstate> list = battRtstateMapper.getStation3D(stationId);
        PageInfo pageInfo = new PageInfo(list);
        return new Response().setII(1, list.size() > 0 ? true : false, pageInfo, "");
    }
    /*public void update(List<BattRtstate> battStateList) {
        battRtstateMapper.updateBatch(battStateList);
    }*/
    public void addOrUpdate(List<BattRtstate> battStateList) {
        List<BattRtstate> updateList = new LinkedList<>();
        List<BattRtstate> addList = new LinkedList<>();
        List<Integer> battGroupIdList = battStateList.stream().map(BattRtstate::getBattGroupId).collect(Collectors.toList());
        QueryWrapper<BattRtstate> query = Wrappers.query();
        query.in("BattGroupId",battGroupIdList);
        List<BattRtstate> battStateListInDB = battRtstateMapper.selectList(query);
        List<Integer> battGroupIdListInDB = battStateListInDB.stream().map(BattRtstate::getBattGroupId).collect(Collectors.toList());
        for (BattRtstate battState : battStateList) {
            if(battGroupIdListInDB.contains(battState.getBattGroupId())){ //更新
                updateList.add(battState);
            }else{ //新增
                addList.add(battState);
            }
        }
        if(updateList.size()>0){
            battRtstateMapper.updateBatch(battStateList);
        }
        if(addList.size()>0) {
            battRtstateMapper.insertBatch(addList);
        }
    }
    /**
     * 61850电池组,每组电池都单独分配了个设备id,是一一对应的
     * @param userId
     * @return
     */
    public Response getDischargingList(int userId) {
        try {
            //设备才有放电的具体操作,是 核容还是 停电放电
            List<BattRtstate> list = battRtstateMapper.getDischargingList(userId);
            String nowStr = DateUtil.YYYY_MM_DD_HH_MM_SS.format(new Date());
            return new Response().setII(1,true, list,nowStr);
        }catch (Exception e){
            return new Response().set(1,false, e.getCause().toString());
        }
    }
    //查询电池组端信息
    public Response serchPowerHr6159(int devId) {
        List<BattRtstate> list= battRtstateMapper.serchPowerHr6159(devId);
        return new Response().setII(1,list!=null,list,"查询电池组端信息");
    }
    //插入初始数据
    public void setDefalut( Map<String,Object> map){
        Map<String,Object> mapNum=new HashMap<>();
        mapNum.put("未知",0);
        mapNum.put("浮充",0);
        mapNum.put("充电",0);
        mapNum.put("放电",0);
        mapNum.put("均充",0);
        mapNum.put("内阻测试",0);
        map.put("3",mapNum);
        map.put("5",mapNum);
        map.put("6",mapNum);
        map.put("7",mapNum);
        map.put("8",mapNum);
    }
    //3.统计:电池状态
    public Response getAllBattStateInSz2(Integer userId) {
        Map<String,Object> map=new HashMap<>();
        Map<String,Integer> allTypemap=new HashMap<>();
        //setDefalut(map);
        try {
            //查询电池状态(去除未知)
            List<BattRtstate> list=battRtstateMapper.getAllBattStateInSz2(userId);
            Map<String, List<BattRtstate>> ListMap = list.stream().collect(Collectors.groupingBy(BattRtstate::getStationName9));
            for (String stationName9 : ListMap.keySet()) {
                Map<String, Object> battInfoMap = new HashMap<>();
                //battInfoMap.put("未知",0);
                battInfoMap.put("浮充",0);
                battInfoMap.put("充电",0);
                battInfoMap.put("放电",0);
                battInfoMap.put("均充",0);
                battInfoMap.put("内阻测试",0);
                List<BattRtstate> name9List=ListMap.get(stationName9);
                Map<Integer, List<BattRtstate>> battStateMap = name9List.stream().collect(Collectors.groupingBy(BattRtstate::getBattState));
                for (Integer battState:battStateMap.keySet()) {
                    battInfoMap.put(BattTestData.getBattState(battState),battStateMap.get(battState).size());
                    int typenum=0;
                    if(allTypemap.get(BattTestData.getBattState(battState))==null){
                        typenum=battStateMap.get(battState).size();
                    }else{
                        typenum=allTypemap.get(BattTestData.getBattState(battState))+battStateMap.get(battState).size();
                    }
                    allTypemap.put(BattTestData.getBattState(battState),typenum);
                }
                map.put(stationName9,battInfoMap);
            }
            map.put("allmap",allTypemap);
            return new Response<>().setII(1,true,map,"");
        } catch (Exception e) {
            return new Response<>().set(1,false,"");
        }
    }
}