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.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.*;
/**
*
* 已校准小时表 服务实现类
*
*
* @author moral
* @since 2021-07-14
*/
@Service
public class HistoryHourlyServiceImpl implements HistoryHourlyService {
@Autowired
private HistoryHourlyMapper historyHourlyMapper;
@Override
public Map getHourlyAqiByMac(String mac) {
Date now = new Date();
String time = DateUtils.dateToDateString(now, DateUtils.yyyy_MM_dd_HH_EN) + ":00:00";
//获取小时数据
Map 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 result = new HashMap<>();
if (ObjectUtils.isEmpty(value)) {
result.put("AQI", Constants.NULL_VALUE);
return result;
}
Map data = JSONObject.parseObject(value, Map.class);
result.put("AQI", AQIUtils.hourlyAqi(data));
return result;
}
/**
* @Description: 查询一段时间内某一mac的数据
* @Param: [mac, startDate, endDate]
* @return: java.util.List
* @Author: 陈凯裕
* @Date: 2021/9/23
*/
public List getValueByMacAndTime(String mac,Date startDate,Date endDate){
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.eq("mac",mac);
wrapper.between("time",startDate,endDate);
List tableNames = MybatisPLUSUtils.getTableNamesByWrapper(startDate, endDate, SeparateTableType.MONTH);
List datas = multiTableQuery(wrapper, tableNames);
return datas;
}
/**
* @Description: 多表查询,传入表名集合,以及条件wrapper,返回数据
* @Param: [wrapper, tableNames]
* @return: java.util.List
* @Author: 陈凯裕
* @Date: 2021/9/23
*/
private List multiTableQuery(QueryWrapper wrapper,List tableNames){
List result = new ArrayList<>();
for (String tableName : tableNames) {
MybatisPlusConfig.tableName.set(tableName);
List datas = historyHourlyMapper.selectList(wrapper);
result.addAll(datas);
}
return result;
}
}