lxw
2023-05-25 7b7e2cb0a59221fd0e7f77a471bd22e42ece4911
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
package com.whyc.service;
 
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.dto.Response;
import com.whyc.dto.paramter.DevAlarmPar;
import com.whyc.mapper.BattDevAlarmDataMapper;
import com.whyc.mapper.DevalarmDataMapper;
import com.whyc.pojo.DevalarmData;
import com.whyc.pojo.UserInf;
import com.whyc.util.ActionUtil;
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 DevalarmDataService {
 
    @Resource
    private DevalarmDataMapper mapper;
 
    @Resource
    private BattDevAlarmDataMapper battDevAlarmDataMapper;
    //设备告警实时查询
    public Response serchByInfo(DevAlarmPar par) {
        PageHelper.startPage(par.getPage().getPageCurr(),par.getPage().getPageSize());
        UserInf uinf= ActionUtil.getUser();
        par.setUId(uinf.getUId().intValue());
        List list=mapper.serchByInfo(par);
        PageInfo pageInfo=new PageInfo(list);
        return  new Response().set(1,pageInfo);
    }
    //设备告警实时查询-webSocket
    public Response serchByInfoOfWebSocket(DevAlarmPar par) {
        PageHelper.startPage(par.getPage().getPageCurr(),par.getPage().getPageSize());
        List list=mapper.serchByInfo(par);
        PageInfo pageInfo=new PageInfo(list);
        return  new Response().set(1,pageInfo);
    }
 
    //设备告警实时查询-sendwebSocket
    @Transactional
    public Response getSendDevAlarmOfWebSocket(Integer uId) {
        List<DevalarmData> list=mapper.getSendDevAlarm(uId);
        Date now = new Date();
        ListIterator<DevalarmData> it = list.listIterator();
        while (it.hasNext()){
            DevalarmData adata = it.next();
            if(adata.getAlmLevel()==1 && adata.getRecordTime()!=null && now.getTime()-adata.getRecordTime().getTime()<24*3600000){
                it.remove();
            }
            if(adata.getAlmLevel()==2 && adata.getRecordTime()!=null && now.getTime()-adata.getRecordTime().getTime()<7*24*3600000){
                it.remove();
            }
            if(adata.getAlmLevel()==3 && adata.getRecordTime()!=null && now.getTime()-adata.getRecordTime().getTime()<30*7*24*3600000){
                it.remove();
            }
        }
        return new Response().set(1,list);
    }
 
    //设备告警确认告警
    public Response update(int num) {
        UpdateWrapper wrapper=new UpdateWrapper();
        wrapper.set("alm_is_confirmed",1);
        wrapper.eq("num",num);
        int flag=mapper.update(null,wrapper);
        return  new Response().set(flag);
    }
    //设备告警取消告警
    public Response cancel(int num) {
        UpdateWrapper wrapper=new UpdateWrapper();
        wrapper.set("alm_is_confirmed",0);
        wrapper.eq("num",num);
        int flag=mapper.update(null,wrapper);
        return  new Response().set(flag);
    }
    //设备告警删除告警
    public Response delete(int num) {
        UpdateWrapper wrapper=new UpdateWrapper();
        wrapper.eq("num",num);
        int flag=mapper.delete(wrapper);
        return  new Response().set(flag);
    }
 
    //设备告警数查询
    public Response searchNums() {
        UserInf uinf = ActionUtil.getUser();
        int devAlarmNum = mapper.searchNums(uinf.getUId().intValue());
        return new Response().set(1, devAlarmNum);
    }
 
    /**
     *
     * @param userId
     * @param type 1,查询24小时内;0,查询所有
     * @return
     */
    public List<DevalarmData> getList(Long userId, int type) {
        return mapper.getList(userId,type);
    }
 
 
    //查询分级告警的个数
    public Response serchByLevel(int uId) {
        List list = new ArrayList();
        //分四级查询个数
        for (int i = 1; i <= 4; i++) {
            int countLevel = mapper.serchByLevel(i, uId);
            list.add(countLevel);
        }
        return new Response().setII(1, list.size() > 0, list, "分级告警数");
    }
 
    public int getAlarmNum(int userId) {
        return battDevAlarmDataMapper.searchNums(userId);
    }
 
    public int getRealTimeWithLevel1(int userId) {
        return battDevAlarmDataMapper.getRealTimeWithLevel1(userId);
    }
 
    //今日实时告警
    public Response getDalmToday(int userId) {
        try {
            Map<String, Object> map = new HashMap<>();
            int dtatolNum = 0;
            Map<String, Integer> dAlmClearMap = new HashMap<>();
            dAlmClearMap.put("clear0", 0);
            dAlmClearMap.put("clear1", 0);
            List<DevalarmData> dAlmList = mapper.getDalmToday(userId);
            Map<Integer, List<DevalarmData>> dclearedMap = dAlmList.stream().collect(Collectors.groupingBy(DevalarmData::getAlmClearedType));
            for (Integer cleared : dclearedMap.keySet()) {
                dAlmClearMap.put("clear" + String.valueOf(cleared), dclearedMap.get(cleared).size());
                dtatolNum += dclearedMap.get(cleared).size();
            }
            Map<String, Integer> dAlmLevelMap = new HashMap<>();
            dAlmLevelMap.put("level1", 0);
            dAlmLevelMap.put("level2", 0);
            dAlmLevelMap.put("level3", 0);
            dAlmLevelMap.put("level4", 0);
            Map<Integer, List<DevalarmData>> dlevelMap = dAlmList.stream().collect(Collectors.groupingBy(DevalarmData::getAlmLevel));
            for (Integer level : dlevelMap.keySet()) {
                dAlmLevelMap.put("level" + String.valueOf(level), dlevelMap.get(level).size());
                //dtatolNum += dlevelMap.get(level).size();
            }
            map.put("dAlmClearMap", dAlmClearMap);
            map.put("dAlmLevelMap", dAlmLevelMap);
            map.put("dtatolNum", dtatolNum);
            return new Response().setII(1, true, map, "今日实时告警");
        } catch (Exception e) {
            return new Response().set(1, false, "出现异常" + e.getMessage());
        }
    }
 
    public List<Integer> getStationList(int userId) {
        return mapper.getStationList(userId);
    }
}