package com.whyc.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.whyc.dto.Response; import com.whyc.mapper.*; import com.whyc.pojo.db_batt.PowerInf; import com.whyc.pojo.db_batt.StationInf; import com.whyc.pojo.db_batt.StationPowerRelation; import com.whyc.pojo.db_power_alarm.PowerAlarm; import com.whyc.pojo.db_real_batt.RtData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @Service public class PowerInfService { @Autowired(required = false) private PowerInfMapper mapper; @Autowired(required = false) private RtDataMapper rtDataMapper; @Autowired(required = false) private PowerRealRt1Mapper realRt1Mapper; @Autowired(required = false) private PowerRealRt2Mapper realRt2Mapper; @Autowired(required = false) private PowerRealRt3Mapper realRt3Mapper; @Autowired(required = false) private PowerAlarmMapper pAlarmMapper; @Autowired private StationPowerRelationService stationPowerRelationService; @Autowired private StationInfService stationInfService; //根据id获取电源信息 public Map getInfById(int powerId) { Map map=new HashMap<>(); QueryWrapper wrapper=new QueryWrapper(); wrapper.eq("power_id",powerId); wrapper.last("limit 1"); PowerInf pinf=mapper.selectOne(wrapper); Integer devType=pinf.getDevType(); map.put("devType",devType); if(devType!=3){//第三种不包含单体实时 List list=getBattRt(pinf.getBattGroupId()); map.put("battRt",list); } Object obj=getRealRt(powerId,devType); map.put("realRt"+devType,obj); List powerAlarmList=pAlarmMapper.getResPowerAlm(powerId); map.put("powerAlarm",powerAlarmList); return map; } //获取电电源信息 private Object getRealRt(int powerId,int devType) { QueryWrapper wrapper=new QueryWrapper(); wrapper.eq("power_id",powerId); wrapper.last("limit 1"); Object obj=null; if(devType==1){ obj=realRt1Mapper.selectOne(wrapper); } if(devType==2){ obj=realRt2Mapper.selectOne(wrapper); } if(devType==3){ obj=realRt3Mapper.selectOne(wrapper); } return obj; } //获取电源电池组信息 private List getBattRt(int binfId) { QueryWrapper wrapper=new QueryWrapper(); wrapper.eq("binf_id",binfId); List list=rtDataMapper.selectList(wrapper); return list; } @Transactional public Response add(PowerInf powerInf) { powerInf.setCreateTime(new Date()); //对powerInf的 devType进行判断 //如果devType=3,battGroupId为0 //如果devType!=3,battGroupId为数据库中最大值+1 Integer devType = powerInf.getDevType(); if(devType == 3){ powerInf.setBattGroupId(0); }else{ powerInf.setBattGroupId(mapper.selectMaxBattGroupId()+1); } //如果没指定channelCount,默认为1 if(powerInf.getChannelCount() == null){ powerInf.setChannelCount(1); } //电源id查询最大值 int powerId = mapper.getMaxPowerId(); powerInf.setPowerId(powerId); //对站点名称进行查询,如果存在则直接绑定关系 //如果不存在,则新增后,再绑定关系 StationInf stationInf = stationInfService.getByStationName(powerInf.getStationName()); if(stationInf == null){ StationInf stationNew = new StationInf(); stationNew.setSinfName(powerInf.getStationName()); int stationId = stationInfService.getMaxStationId(); stationNew.setSinfId(stationId+1); stationInfService.add(stationNew); //站点和电源id关联 stationPowerRelationService.add(stationId,powerId); } mapper.insert(powerInf); return new Response().setII(1,"新增完成"); } @Transactional public Response delete(int powerId) { mapper.deleteById(powerId); //删除跟电源相关的所有关联 stationPowerRelationService.deleteByPowerId(powerId); return new Response().setII(1,"删除完成"); } public Response update(PowerInf powerInf) { powerInf.setUpdateTime(new Date()); mapper.updateById(powerInf); return new Response().setII(1,"修改完成"); } public Response getPage(int pageNum, int pageSize) { PageHelper helper = new PageHelper(); helper.startPage(pageNum,pageSize); QueryWrapper queryWrapper = Wrappers.query(); queryWrapper.orderByAsc("power_id"); List powerInfs = mapper.selectList(queryWrapper); PageInfo pageInfo = new PageInfo<>(powerInfs); return new Response().set(1,pageInfo); } public Response getById(int powerId) { PowerInf powerInf = mapper.selectById(powerId); return new Response().set(1,powerInf); } }