package com.moral.api.service.impl;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.moral.api.config.mybatis.MybatisPlusConfig;
|
import com.moral.api.entity.HistoryFiveMinutely;
|
import com.moral.api.entity.HistoryHourly;
|
import com.moral.api.mapper.HistoryHourlyMapper;
|
import com.moral.api.service.HistoryHourlyService;
|
import com.moral.constant.Constants;
|
import com.moral.constant.SeparateTableType;
|
import com.moral.pojo.AQI;
|
import com.moral.util.AQIUtils;
|
import com.moral.util.DateUtils;
|
|
import com.moral.util.MybatisPLUSUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.ObjectUtils;
|
|
import java.util.*;
|
|
/**
|
* <p>
|
* 已校准小时表 服务实现类
|
* </p>
|
*
|
* @author moral
|
* @since 2021-07-14
|
*/
|
@Service
|
public class HistoryHourlyServiceImpl implements HistoryHourlyService {
|
|
@Autowired
|
private HistoryHourlyMapper historyHourlyMapper;
|
|
@Override
|
public Map<String, Object> getHourlyAqiByMac(String mac) {
|
Date now = new Date();
|
String time = DateUtils.dateToDateString(now, DateUtils.yyyy_MM_dd_HH_EN) + ":00:00";
|
//获取小时数据
|
Map<String, Object> params = new HashMap<>();
|
params.put("timeUnits", DateUtils.dateToDateString(now, DateUtils.yyyyMM_EN));
|
params.put("mac", mac);
|
params.put("time", time);
|
String value = historyHourlyMapper.selectHourlyData(params);
|
Map<String, Object> result = new HashMap<>();
|
if (ObjectUtils.isEmpty(value)) {
|
result.put("AQI", Constants.NULL_VALUE);
|
return result;
|
}
|
Map<String, Object> data = JSONObject.parseObject(value, Map.class);
|
AQI aqi = AQIUtils.hourlyAQI(data);
|
result.put("AQI", aqi.getAQIValue());
|
return result;
|
}
|
|
/**
|
* @Description: 查询一段时间内某一mac的数据
|
* @Param: [mac, startDate, endDate]
|
* @return: java.util.List<com.moral.api.entity.HistoryHourly>
|
* @Author: 陈凯裕
|
* @Date: 2021/9/23
|
*/
|
@Override
|
public List<HistoryHourly> getValueByMacAndTime(String mac,Date startDate,Date endDate){
|
QueryWrapper<HistoryHourly> wrapper = new QueryWrapper<>();
|
wrapper.eq("mac",mac);
|
wrapper.between("time",startDate,endDate);
|
List<String> tableNames = MybatisPLUSUtils.getTableNamesByWrapper(startDate, endDate, SeparateTableType.MONTH);
|
List<HistoryHourly> datas = multiTableQuery(wrapper, tableNames);
|
return datas;
|
}
|
|
/**
|
* @Description: 多表查询,传入表名集合,以及条件wrapper,返回数据
|
* @Param: [wrapper, tableNames]
|
* @return: java.util.List<com.moral.api.entity.HistoryHourly>
|
* @Author: 陈凯裕
|
* @Date: 2021/9/23
|
*/
|
private List<HistoryHourly> multiTableQuery(QueryWrapper<HistoryHourly> wrapper,List<String> tableNames){
|
List<HistoryHourly> result = new ArrayList<>();
|
for (String tableName : tableNames) {
|
MybatisPlusConfig.tableName.set(tableName);
|
List<HistoryHourly> datas = historyHourlyMapper.selectList(wrapper);
|
result.addAll(datas);
|
}
|
MybatisPlusConfig.tableName.remove();
|
return result;
|
}
|
|
}
|