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.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.*; import java.util.stream.Collectors; @Service public class BattRtstateService { @Resource private BattRtstateMapper battRtstateMapper; /** * @param binf binf.battGroupId、binf.num、binf.stationname.binf、stationname1 * uId * 落后单体查询:根据条件查询落后单体 * @return */ public Response searchBattLife(int pageNum, int pageSize, Battinf binf) { PageHelper.startPage(pageNum, pageSize); UserInf userInf = ActionUtil.getUser(); String lang = ActionUtil.getLang(); List list = battRtstateMapper.searchBattLife(binf, userInf.getUId().intValue()); for (BattState bs : list) { Battinf battinf = bs.getBinf(); battinf.setStationName9(MessageUtils.getMessageSocket(BattTestData.battState(battinf.getNum()), lang)); } PageInfo pageInfo = new PageInfo<>(list); return new Response().set(1, pageInfo, "查询成功"); } //查询实时组端信息 @Transactional public Response serchByCondition(int battGroupId) { QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("BattGroupId", battGroupId); wrapper.last(" limit 1"); 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 list = battRtstateMapper.serch9140Info(devId); return new Response().setII(1, list.size() > 0 ? true : false, list, "9140数据"); } //3D查询机房下电池组端信息 public Response getStation3D(String stationId) { List list = battRtstateMapper.getStation3D(stationId); PageInfo pageInfo = new PageInfo(list); return new Response().setII(1, list.size() > 0 ? true : false, pageInfo, ""); } /*public void update(List battStateList) { battRtstateMapper.updateBatch(battStateList); }*/ public void addOrUpdate(List battStateList) { List updateList = new LinkedList<>(); List addList = new LinkedList<>(); List battGroupIdList = battStateList.stream().map(BattRtstate::getBattGroupId).collect(Collectors.toList()); QueryWrapper query = Wrappers.query(); query.in("BattGroupId",battGroupIdList); List battStateListInDB = battRtstateMapper.selectList(query); List 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 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 list= battRtstateMapper.serchPowerHr6159(devId); return new Response().setII(1,list!=null,list,"查询电池组端信息"); } //插入初始数据 public void setDefalut( Map map){ Map 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 map=new HashMap<>(); Map allTypemap=new HashMap<>(); //setDefalut(map); try { //查询电池状态 List list=battRtstateMapper.getAllBattStateInSz2(userId); Map> ListMap = list.stream().collect(Collectors.groupingBy(BattRtstate::getStationName9)); for (String stationName9 : ListMap.keySet()) { Map battInfoMap = new HashMap<>(); battInfoMap.put("未知",0); battInfoMap.put("浮充",0); battInfoMap.put("充电",0); battInfoMap.put("放电",0); battInfoMap.put("均充",0); battInfoMap.put("内阻测试",0); List name9List=ListMap.get(stationName9); Map> 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,""); } } }