jiazx0107@163.com
2023-05-17 620eab6cca2bc9ef9ea6d3067a0a5ba1deadbd1c
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
package com.ld.igds.door.service;
 
import com.ld.igds.constant.RedisConst;
import com.ld.igds.door.mapper.DoorSensorMapper;
import com.ld.igds.models.DoorSensor;
import com.ld.igds.util.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
 
/**
 * @author vince.xu
 * @Title: CoreDoorSensorServiceImpl
 * @ProjectName igds-dev
 * @Description:  门磁
 */
@Slf4j
@Service(CoreDoorSensorService.BEAN_ID)
public class CoreDoorSensorServiceImpl implements CoreDoorSensorService {
    @Autowired
    private DoorSensorMapper doorSensorMapper;
    @Autowired
    private RedisUtil redisUtil;
 
    @Override
    public void updateStatus(String sn, String status) {
        doorSensorMapper.updateStatus(sn,status);
    }
 
    @Override
    public void setCache(List<DoorSensor> list, String companyId) {
        if (null == list || list.isEmpty()) return;
        redisUtil.set(
                RedisConst.buildKey(companyId, RedisConst.KEY_DOOR_SENSOR_LIST),
                list);
    }
 
    @Override
    public void updateCache(DoorSensor data) {
        this.updateStatus(data.getSn(), data.getStatus());
        List<DoorSensor> list = this.getCache(data.getCompanyId());
        if(list == null){
            list = new ArrayList<>();
            list.add(data);
            this.setCache(list, data.getCompanyId());
            return;
        }
 
        DoorSensor temp;
        for(int i = 0; i< list.size(); i++){
            temp = list.get(i);
            if(temp.getSn().equals(data.getSn())){
                list.set(i, data);
                break;
            }
        }
        this.setCache(list, data.getCompanyId());
    }
 
    @Override
    public List<DoorSensor> getCache(String companyId, String deptId) {
        List<DoorSensor> data = getCache(companyId);
        if (null == data)
            return null;
 
        if (null == deptId)
            return null;
        return data.stream().filter(item -> item.getDeptId().equals(deptId))
                .collect(Collectors.toList());
    }
 
    @Override
    public DoorSensor getCacheBySn(String companyId, String sn) {
        List<DoorSensor> data = getCache(companyId);
        if (null == data)
            return null;
        if (null == sn)
            return null;
        return data.stream().filter(item -> sn.equals(item.getSn()))
                .findAny().orElse(null);
    }
 
    @SuppressWarnings("unchecked")
    @Override
    public List<DoorSensor> getCache(String companyId) {
        String key = RedisConst.buildKey(companyId,
                RedisConst.KEY_DOOR_SENSOR_LIST);
        List<DoorSensor> data = (List<DoorSensor>) redisUtil.get(key);
        if (null == data) {
            log.error("没有获取到缓存信息,KEY={}", key);
        }
        return data;
    }
 
    @Override
    public List<DoorSensor> getData(DoorSensor param) {
        return doorSensorMapper.getData(param);
    }
 
    @Override
    public List<DoorSensor> getDoorSensorList(DoorSensor param) {
        List<DoorSensor> list = this.getCache(param.getCompanyId(), param.getDeptId());
        if(list == null){
            return null;
        }
 
        if(StringUtils.isNotEmpty(param.getDepotId())){
            return list.stream().filter(item -> item.getDepotId().equals(param.getDepotId()))
                    .collect(Collectors.toList());
        }
 
        return list;
    }
}