package com.moral.service.impl;
|
|
import java.time.LocalDateTime;
|
import java.util.*;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.stereotype.Service;
|
|
import com.moral.common.util.ValidateUtil;
|
import com.moral.entity.Profession;
|
import com.moral.entity.Sensor;
|
import com.moral.mapper.DeviceMapper;
|
import com.moral.mapper.HistoryMapper;
|
import com.moral.mapper.ProfessionMapper;
|
import com.moral.mapper.SensorMapper;
|
import com.moral.service.AccountService;
|
import com.moral.service.HistoryService;
|
|
@Service
|
public class HistoryServiceImpl implements HistoryService {
|
|
@Resource
|
private AccountService accountService;
|
|
@Resource
|
private HistoryMapper historyMapper;
|
|
@Resource
|
private DeviceMapper deviceMapper;
|
|
@Resource
|
private SensorMapper sensorMapper;
|
|
@Resource
|
private ProfessionMapper professionMapper;
|
|
@Override
|
public Map<String, Object> getAllSensorAverageByDevice(Map<String, Object> parameters) throws Exception {
|
ValidateUtil.notNull(parameters.get("areaCode"), "param.is.null");
|
ValidateUtil.notNull(parameters.get("accountId"), "param.is.null");
|
Map<String,Object> resultMap = new LinkedHashMap<String, Object>();
|
accountService.setOrgIdsByAccount(parameters);
|
LocalDateTime time = LocalDateTime.now();
|
// 当前时间 -10分钟
|
parameters.put("start", time.minusMinutes(10));
|
// 当前时间 -5分钟
|
parameters.put("end", time.minusMinutes(5));
|
List<Sensor> Sensors = sensorMapper.getSensorsByCriteria(parameters);
|
List<String> sensorKeys = new ArrayList<String>();
|
for (Sensor sensor : Sensors) {
|
sensorKeys.add(sensor.getSensorKey());
|
}
|
parameters.put("sensorKeys", sensorKeys);
|
List<Map<String, Object>> list = historyMapper.getAreaAllDataByAccount(parameters);
|
resultMap.putAll(list.get(0));
|
return resultMap;
|
}
|
|
@Override
|
public Map<String, Object> getDeviceRankingBySensorAverage(Map<String, Object> parameters) {
|
ValidateUtil.notNull(parameters.get("areaCode"), "param.is.null");
|
ValidateUtil.notNull(parameters.get("accountId"), "param.is.null");
|
Object macKey = parameters.get("macKey");
|
ValidateUtil.notNull(macKey, "param.is.null");
|
|
Map<String, Object> result = new LinkedHashMap<String, Object>();
|
accountService.setOrgIdsByAccount(parameters);
|
LocalDateTime time = LocalDateTime.now();
|
// 当前时间 -1小时
|
parameters.put("start", time.minusHours(1));
|
parameters.put("end", time);
|
List<String> sensorKeys = new ArrayList<String>();
|
sensorKeys.add(macKey.toString());
|
parameters.put("sensorKeys", sensorKeys);
|
List<Map<String, Object>> list = historyMapper.getAreaAllDataByAccount(parameters);
|
|
for (Map<String, Object> map : list) {
|
result.put((String) map.get("name"), map.get(macKey.toString()));
|
}
|
return result;
|
}
|
@Override
|
public String queryValueByMacAndTime(String mac, Date time){
|
return historyMapper.selectValueByMacAndTime(mac, time);
|
}
|
|
@Override
|
public List<Map<String, Object>> getRegionRankingData(Map<String, Object> parameters) {
|
ValidateUtil.notNull(parameters.get("regionCode"), "param.is.null");
|
ValidateUtil.notNull(parameters.get("dimension"), "param.is.null");
|
ValidateUtil.notNull(parameters.get("sensorKey"), "param.is.null");
|
ValidateUtil.notNull(parameters.get("accountId"), "param.is.null");
|
|
String regionCode = parameters.get("regionCode").toString();
|
String regionType = "village_code";
|
String nextLevel = "";
|
if (regionCode.length() == 6) {
|
if (regionCode.endsWith("0000")) {
|
regionType = "province_code";
|
nextLevel = "city";
|
} else if (regionCode.endsWith("00")) {
|
regionType = "city_code";
|
nextLevel = "area";
|
} else {
|
regionType = "area_code";
|
nextLevel = "town";
|
}
|
} else {
|
if (regionCode.endsWith("000")) {
|
regionType = "town_code";
|
nextLevel = "village";
|
}
|
}
|
parameters.put("regionType", regionType);
|
parameters.put("nextLevel", nextLevel);
|
parameters.put("start", LocalDateTime.now().minusMinutes(5));
|
|
accountService.setOrgIdsByAccount(parameters);
|
List<Map<String, Object>> result = historyMapper.getRegionRankingData(parameters);
|
if ("profession".equals(parameters.get("dimension"))) {
|
List<Profession> professions = professionMapper.selectAll();
|
for (Map<String, Object> map : result) {
|
for (Profession profession : professions) {
|
if (map.get("name").equals(profession.getName())) {
|
professions.remove(profession);
|
break;
|
}
|
}
|
}
|
for (Profession profession : professions) {
|
Map<String, Object> map = new HashMap<String, Object>();
|
map.put("name", profession.getName());
|
map.put("avg", 0);
|
result.add(map);
|
}
|
} else if ("region".equals(parameters.get("dimension"))) {
|
List<Map<String, Object>> regions = historyMapper.selectNextLevelRegion(parameters);
|
for (int i = result.size() - 1; i >= 0; i--) {
|
Map<String, Object> map = result.get(i);
|
for (Map<String, Object> region : regions) {
|
if ((map.get("code") == null)) {
|
result.remove(map);
|
break;
|
}
|
if (map.get("code").equals(region.get("code"))) {
|
map.put("name", region.get("name"));
|
regions.remove(region);
|
break;
|
}
|
}
|
}
|
for (Map<String, Object> region : regions) {
|
Map<String, Object> map = new HashMap<String, Object>();
|
map.put("name", region.get("name"));
|
map.put("avg", 0);
|
result.add(map);
|
}
|
}
|
return result;
|
}
|
}
|