package com.whyc.service;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.whyc.dto.BattInfDTO;
|
import com.whyc.dto.Response;
|
import com.whyc.mapper.BaoJiGroupBattGroupMapper;
|
import com.whyc.mapper.BattInfMapper;
|
import com.whyc.pojo.BaoJiGroup;
|
import com.whyc.pojo.BaojiGroupBattGroup;
|
import com.whyc.pojo.Battinf;
|
import com.whyc.pojo.UserInf;
|
import org.assertj.core.util.Lists;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.sql.Wrapper;
|
import java.util.LinkedHashMap;
|
import java.util.LinkedList;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
@Service
|
@Transactional
|
public class BaoJiGroupBattGroupService {
|
|
@Resource
|
private BaoJiGroupBattGroupMapper mapper;
|
|
@Resource
|
private BattInfMapper battInfMapper;
|
|
public Response<List<String>> searchStationName1InGroup(int userId) {
|
|
List<String> list = mapper.searchStationName1InGroup(userId);
|
|
return new Response<List<String>>().set(1, list);
|
}
|
|
public Response<List<Battinf>> searchStationByStationName1(String stationName1,int userId) {
|
|
List<Battinf> list = mapper.searchStationByStationName1(stationName1,userId);
|
|
return new Response<List<Battinf>>().set(1, list);
|
}
|
|
public Response<List<Battinf>> searchBattGroupIdInGroup(UserInf userInf) {
|
|
List<Battinf> list = mapper.searchBattGroupIdInGroup(userInf);
|
|
return new Response<List<Battinf>>().set(1, list);
|
}
|
|
public Map<String, List<Battinf>> getStationList(int baoJiGroupId) {
|
Map<String,List<Battinf>> resultMap = new LinkedHashMap<>();
|
//查询已添加的机房站点列表
|
List<Battinf> stationList = mapper.getStationList(baoJiGroupId);
|
//查询未添加的机房站点列表
|
/* QueryWrapper<Battinf> wrapper = Wrappers.query();
|
wrapper.select("distinct StationId,StationName");
|
List<Battinf> allStationList = battInfMapper.selectList(wrapper);*/
|
List<Battinf> allStationList = battInfMapper.getStationListOfBattPower();
|
List<Battinf> notRelatedStationList = allStationList.stream().filter(station -> !stationList.contains(station)).collect(Collectors.toList());
|
|
resultMap.put("stationsAdded",stationList);
|
resultMap.put("stationsNotAdded",notRelatedStationList);
|
|
return resultMap;
|
}
|
|
public void updateStationList(List<BaojiGroupBattGroup> baoJiGroupBattGroupList, int operationFlag) {
|
if(operationFlag==1){
|
//通过stationId查询出所有的battGroupId,再插入
|
List<BaojiGroupBattGroup> newBattGroupList = new LinkedList<>();
|
baoJiGroupBattGroupList.stream().forEach(baojiGroupBattGroup -> {
|
QueryWrapper<Battinf> wrapper = Wrappers.query();
|
wrapper.select("BattGroupId").eq("stationId",baojiGroupBattGroup.getStationId());
|
List<Battinf> battGroupList = battInfMapper.selectList(wrapper);
|
if(!battGroupList.isEmpty()) {
|
battGroupList.stream().forEach(battInf -> {
|
newBattGroupList.add(new BaojiGroupBattGroup(baojiGroupBattGroup.getBaojiGroupId(), baojiGroupBattGroup.getStationId(), battInf.getBattGroupId()));
|
|
});
|
}else{
|
newBattGroupList.add(new BaojiGroupBattGroup(baojiGroupBattGroup.getBaojiGroupId(), baojiGroupBattGroup.getStationId(), 0));
|
}
|
});
|
mapper.insertBatchSomeColumn(newBattGroupList);
|
}else{
|
mapper.deleteStationList(baoJiGroupBattGroupList);
|
}
|
}
|
|
public List<Battinf> getStationInfoList(Long uId, String stationName1) {
|
return mapper.getStationInfoList(uId,stationName1);
|
}
|
|
public List<BaojiGroupBattGroup> getBaoJiGroupListWithinBattGroupList() {
|
return mapper.getBaoJiGroupListWithinBattGroupList();
|
}
|
|
public List<BaojiGroupBattGroup> getBaoJiGroupListWithinBattGroupListOfUser(int userId) {
|
return mapper.getBaoJiGroupListWithinBattGroupListOfUser(userId);
|
}
|
|
public void clearErrorRelationship() {
|
List<BaojiGroupBattGroup> errorRelationships = new LinkedList<>();
|
//核查所有的关联记录
|
List<BaojiGroupBattGroup> baojiGroupBattGroups = mapper.selectList(null);
|
//查询电池组表列表
|
List<Battinf> battInfList = battInfMapper.selectList(null);
|
baojiGroupBattGroups.stream().forEach(baojiGroupBattGroup -> {
|
boolean errorRelation = false;
|
Integer battGroupId = baojiGroupBattGroup.getBattGroupId();
|
Long stationId = baojiGroupBattGroup.getStationId();
|
//查询该站点是否在电池组表中存在
|
boolean isExist = battInfList.stream().anyMatch(battInfDTO -> battInfDTO.getStationId().equals(stationId.toString()));
|
if(!isExist){ //不存在
|
errorRelation = true;
|
errorRelationships.add(baojiGroupBattGroup);
|
}
|
|
if(!errorRelation) {
|
if (battGroupId != 0) {
|
//查询该电池组是否在电池组表中存在
|
isExist = battInfList.stream().anyMatch(battInfDTO -> battInfDTO.getBattGroupId().equals(battGroupId));
|
if (!isExist) { //不存在
|
errorRelation = true;
|
errorRelationships.add(baojiGroupBattGroup);
|
}
|
}
|
}
|
|
if(!errorRelation){
|
//查询该电池组和站点是否在电池组表中关系一致
|
if(battGroupId !=0) {
|
List<String> battStationListInDB = battInfList.stream().map(battInfDTO -> battInfDTO.getStationId() + "-" + battInfDTO.getBattGroupId()).collect(Collectors.toList());
|
String stationIdAndBattGroupId = stationId + "-" + battGroupId;
|
if (!battStationListInDB.contains(stationIdAndBattGroupId)) {
|
errorRelationships.add(baojiGroupBattGroup);
|
}
|
}
|
}
|
});
|
|
//删除错误关联记录
|
if(errorRelationships.size()>0) {
|
mapper.deleteBatchIds(errorRelationships.stream().map(BaojiGroupBattGroup::getNum).collect(Collectors.toList()));
|
}
|
//return new Response().set(1, errorRelationships);
|
|
}
|
}
|