package com.moral.api.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.moral.api.entity.CityAqi;
import com.moral.api.entity.CityConfigWeatherForecast;
import com.moral.api.entity.CityWeather;
import com.moral.api.entity.CityWeatherForecast;
import com.moral.api.entity.Forecast;
import com.moral.api.mapper.ForecastMapper;
import com.moral.api.service.CityAqiService;
import com.moral.api.service.CityConfigWeatherForecastService;
import com.moral.api.service.CityWeatherForecastService;
import com.moral.api.service.CityWeatherService;
import com.moral.api.service.ForecastService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.constant.Constants;
import com.moral.util.AmendUtils;
import com.moral.util.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.OptionalDouble;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import java.util.stream.DoubleStream;
import java.util.stream.Stream;
/**
*
* 预测小时数据 服务实现类
*
*
* @author moral
* @since 2021-12-31
*/
@Service
public class ForecastServiceImpl extends ServiceImpl implements ForecastService {
@Autowired
private CityWeatherForecastService cityWeatherForecastService;
@Autowired
private CityConfigWeatherForecastService cityConfigWeatherForecastService;
@Autowired
private CityWeatherService cityWeatherService;
@Autowired
private CityAqiService cityAqiService;
@Autowired
private ForecastMapper forecastMapper;
private static final Map weatherScore = new HashMap<>();
static {
weatherScore.put("晴", 100);
weatherScore.put("雾", 90);
weatherScore.put("多云", 80);
weatherScore.put("霾", 70);
weatherScore.put("阴", 60);
weatherScore.put("扬沙", 60);
weatherScore.put("浮尘", 60);
weatherScore.put("阵雨", 45);
weatherScore.put("雷阵雨", 40);
weatherScore.put("雷阵雨转小雨", 30);
weatherScore.put("阵雨转小雨", 30);
weatherScore.put("小雨", 20);
weatherScore.put("雨", 10);
weatherScore.put("雷阵雨转中雨", 5);
weatherScore.put("雷阵雨转大雨", 4);
weatherScore.put("中雨", 0);
weatherScore.put("大雨", 0);
weatherScore.put("暴雨", 0);
weatherScore.put("小雪", 0);
weatherScore.put("中雪", 0);
weatherScore.put("大雪", 0);
weatherScore.put("暴雪", 0);
weatherScore.put("雨夹雪", 0);
}
@Override
public void forecastO3() {
Date nextDay = DateUtils.addDays(new Date(), 1);
String nextTime = DateUtils.dateToDateString(nextDay, DateUtils.yyyy_MM_dd_EN);
//根据最近一个月历史数据来预测
Date start = DateUtils.addMonths(DateUtils.getDate(nextTime), -1);
//获取要预测的城市
QueryWrapper cityConfigWeatherForecastQueryWrapper = new QueryWrapper<>();
cityConfigWeatherForecastQueryWrapper.select("city_code")
.eq("is_delete", Constants.NOT_DELETE);
List