whyclxw
2025-05-07 b22e8e7a2d6f6a2998913c381af5ceba9542d79e
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
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<BattState> 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<BattState> pageInfo = new PageInfo<>(list);
        return new Response().set(1, pageInfo, "查询成功");
    }
 
    //查询实时组端信息
    @Transactional
    public Response<BattRtstate> 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<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,"");
        }
    }
}