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; /** *

* 设备表 服务实现类 *

* * @author moral * @since 2021-06-22 */ @Service public class DeviceServiceImpl extends ServiceImpl implements DeviceService { @Autowired private DeviceMapper deviceMapper; @Autowired private RedisTemplate redisTemplate; @Override public void judgeOffLineDevice() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("state", Constants.DEVICE_STATE_OFFLINE); queryWrapper.eq("is_delete",Constants.NOT_DELETE); //获取所有在线设备 List devices = deviceMapper.selectList(queryWrapper); for (Device device : devices) { Map data = (Map) redisTemplate.opsForHash().get(RedisConstants.DATA_FIVE_MINUTES, 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, 12).getTime() > new Date().getTime()) { device.setState("1"); updateDeviceState(device); } } } } @Override @Transactional public void updateDeviceState(Device device) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", device.getId()).set("state", device.getState()); deviceMapper.update(null, updateWrapper); } @Override public List getDateByOrgId(int orgId) { QueryWrapper wrapper_device = new QueryWrapper<>(); wrapper_device.eq("is_delete",Constants.NOT_DELETE).eq("organization_id",orgId); List devices = new ArrayList<>(); devices = deviceMapper.selectList(wrapper_device); return devices; } }