道路环境监测node后端和java后台代码
wangrong
2021-12-22 6926c27f2105577591e558b83d3916fde52c88bd
fix weather bug
1个文件已修改
24 ■■■■ 已修改文件
server/models/taskSchedule.js 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/models/taskSchedule.js
@@ -6,8 +6,9 @@
var jsonData = '';//存储天气信息
// 定义规则
let rule = new schedule.RecurrenceRule();
// rule.minute = [1,11,21,31,41,51]
rule.second = [30, 60]; // 每隔 10 秒执行一次
rule.minute = [1,6,11,16,21,26,31,36,41,46,51,56]
//rule.second = [30, 60]; // 每隔 10 秒执行一次
module.exports = {
@@ -19,13 +20,18 @@
};
schedule.scheduleJob('5 0 * * * *', async () => {//每小时定时取天气数据
schedule.scheduleJob(rule, async () => {//每小时定时取天气数据
    //https://devapi.heweather.net/v7/weather/now?location=101021700&key=495b433d21c84986a99c4ac52d42fd3b
    let urlstr = "https://devapi.heweather.net/v7/weather/now?location=location_code&key=495b433d21c84986a99c4ac52d42fd3b";
    let sqlstr = `select * from t_s_weather_city order by code`;
    sqlstr = `select * from t_s_weather_city order by code`;
    let data_rets = await mysql.query_data(sqlstr, 'master', null)
    for (let index = 0; index < data_rets.length; index++) {
        let element = data_rets[index];
        // 检测当前是否已有天气数据
        let sqlstr = `select count(1) as counter from t_d_weather_hour where citycode='`+element.code+`' and TO_DAYS(now())=TO_DAYS(posttime) and HOUR(now())=hour(posttime) `;
        let lastdata_times = await mysql.query_data(sqlstr, 'master', null);
        if( lastdata_times[0].counter > 0 ) { continue ;}
        // 若当前无天气数据,重新抓取
        axios.get(urlstr.replace('location_code', element.code)).then(response => {
            if(response.data.now) {
                let w = response.data.now;
@@ -44,13 +50,19 @@
});
schedule.scheduleJob('5 1 0 * * *', async () => {//每天定时更新天气数据
schedule.scheduleJob(rule, async () => {//每天定时更新天气数据
    //https://devapi.qweather.com/v7/weather/3d?location=101021700&key=495b433d21c84986a99c4ac52d42fd3b
    let urlstr = "https://devapi.qweather.com/v7/weather/3d?location=location_code&key=495b433d21c84986a99c4ac52d42fd3b";
    let sqlstr = `select * from t_s_weather_city order by code`;
    sqlstr = `select * from t_s_weather_city order by code`;
    let data_rets = await mysql.query_data(sqlstr, 'master', null)
    for (let index = 0; index < data_rets.length; index++) {
        let element = data_rets[index];
        // 检测当前是否已有天气数据
        let sqlstr = `select count(1) as counter from t_d_weather_day where citycode='`+element.code+`' and TO_DAYS(now())=TO_DAYS(posttime)`;
        let lastdata_times = await mysql.query_data(sqlstr, 'master', null);
        if( lastdata_times[0].counter > 0 ) { continue ;}
        // 若当前无天气数据,重新抓取
        axios.get(urlstr.replace('location_code', element.code)).then(response => {
            if(response.data.daily) {
                let w = response.data.daily[0];