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; } }