package com.moral.api.service.impl;
|
|
import com.moral.api.entity.Device;
|
import com.moral.api.entity.HistoryFiveMinutely;
|
import com.moral.api.entity.MonitorPoint;
|
import com.moral.api.mapper.HistoryFiveMinutelyMapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.moral.api.pojo.dto.historyFiveMinutely.DeviceAndFiveMinuteDataDTO;
|
import com.moral.api.pojo.form.device.MonitorPointQueryForm;
|
import com.moral.api.pojo.form.historyFiveMinutely.QueryDeviceAndFiveMinuteDataForm;
|
import com.moral.api.service.HistoryFiveMinutelyService;
|
import com.moral.api.service.MonitorPointService;
|
import com.moral.constant.RedisConstants;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.ObjectUtils;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* <p>
|
* 5分钟数据表 服务实现类
|
* </p>
|
*
|
* @author moral
|
* @since 2021-07-15
|
*/
|
@Service
|
public class HistoryFiveMinutelyServiceImpl extends ServiceImpl<HistoryFiveMinutelyMapper, HistoryFiveMinutely> implements HistoryFiveMinutelyService {
|
|
@Autowired
|
MonitorPointService monitorPointService;
|
@Autowired
|
RedisTemplate redisTemplate;
|
|
@Override
|
public List<DeviceAndFiveMinuteDataDTO> queryDeviceAndFiveMinuteData(QueryDeviceAndFiveMinuteDataForm form) {
|
//取参
|
Integer organizationId = form.getOrganizationId();
|
Integer regionCode = form.getRegionCode();
|
String sensorCode = form.getSensorCode();
|
//查询组织在对应地区下的站点以及设备
|
List<MonitorPoint> monitorPoints = monitorPointService.queryByOrgIdAndRegionCode(new MonitorPointQueryForm(organizationId, regionCode));
|
List<Device> devices = new ArrayList<>();
|
for (MonitorPoint monitorPoint : monitorPoints) {
|
List<Device> monitorPointDevices = monitorPoint.getDevices();
|
if (!ObjectUtils.isEmpty(monitorPointDevices))
|
devices.addAll(monitorPointDevices);
|
}
|
//查询所有设备对应的数据
|
List<DeviceAndFiveMinuteDataDTO> dtos = new ArrayList<>();
|
for (Device device : devices) {
|
DeviceAndFiveMinuteDataDTO dto = new DeviceAndFiveMinuteDataDTO();
|
String mac = device.getMac();
|
Map<String, Object> sensorValues = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.DATA_FIVE_MINUTES, mac);
|
Map<String,Object> value = new HashMap<>();
|
if (sensorValues!=null&&sensorValues.get(sensorCode) != null)
|
value.put(sensorCode,sensorValues.get(sensorCode));
|
else
|
value.put(sensorCode,null);
|
dto.setDevice(device);
|
dto.setSensorValue(value);
|
dtos.add(dto);
|
}
|
return dtos;
|
}
|
|
}
|