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;
|
}
|
}
|