whyclxw
2024-07-30 ed04733e15a5304c68ac16c121fd2989c851a57b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
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);
 
    }
}