| package com.moral.api.service.impl; | 
|   | 
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
| import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; | 
| import com.moral.api.entity.Device; | 
| import com.moral.api.mapper.DeviceMapper; | 
| import com.moral.api.service.DeviceService; | 
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
| import com.moral.constant.Constants; | 
| import com.moral.constant.RedisConstants; | 
| import com.moral.util.DateUtils; | 
|   | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.data.redis.core.RedisTemplate; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.transaction.annotation.Transactional; | 
|   | 
| import java.util.ArrayList; | 
| import java.util.Date; | 
| import java.util.List; | 
| import java.util.Map; | 
|   | 
| /** | 
|  * <p> | 
|  * 设备表 服务实现类 | 
|  * </p> | 
|  * | 
|  * @author moral | 
|  * @since 2021-06-22 | 
|  */ | 
| @Service | 
| public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> implements DeviceService { | 
|   | 
|     @Autowired | 
|     private DeviceMapper deviceMapper; | 
|   | 
|     @Autowired | 
|     private RedisTemplate redisTemplate; | 
|   | 
|     @Override | 
|     public void judgeOffLineDevice() { | 
|         QueryWrapper<Device> queryWrapper = new QueryWrapper<>(); | 
|         queryWrapper.ne("state", Constants.DEVICE_STATE_OFFLINE); | 
|         queryWrapper.eq("is_delete",Constants.NOT_DELETE); | 
|         //获取所有在线设备 | 
|         List<Device> devices = deviceMapper.selectList(queryWrapper); | 
|         for (Device device : devices) { | 
|             Map<String, Object> data = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.DATA_SECOND, device.getMac()); | 
|             device.setState(Constants.DEVICE_STATE_OFFLINE); | 
|             if (data != null && data.containsKey("DataTime")) { | 
|                 Date time = DateUtils.getDate((String) data.get("DataTime"), DateUtils.yyyyMMddHHmmss_EN); | 
|                 //超过两分钟无数据就离线 | 
|                 if (DateUtils.getDateOfMin(time, 2).getTime() < new Date().getTime()) { | 
|                     updateDeviceState(device); | 
|                 } | 
|             } else { | 
|                 updateDeviceState(device); | 
|             } | 
|         } | 
|     } | 
|   | 
|     @Override | 
|     @Transactional | 
|     public void updateDeviceState(Device device) { | 
|         UpdateWrapper<Device> updateWrapper = new UpdateWrapper<>(); | 
|         updateWrapper.eq("id", device.getId()).set("state", device.getState()); | 
|         deviceMapper.update(null, updateWrapper); | 
|     } | 
|   | 
|     @Override | 
|     public List<Device> getDateByOrgId(int orgId) { | 
|         QueryWrapper<Device> wrapper_device = new QueryWrapper<>(); | 
|         wrapper_device.eq("is_delete",Constants.NOT_DELETE).eq("organization_id",orgId); | 
|         List<Device> devices = new ArrayList<>(); | 
|         devices = deviceMapper.selectList(wrapper_device); | 
|         return devices; | 
|     } | 
| } |