const schedule = require('node-schedule');
|
const axios = require('axios');
|
|
const ProtoBufJs = require("protobufjs");
|
const root = ProtoBufJs.loadSync("D:/22-hn3d/hn3d/src/schedule/aerial.proto");
|
const CommandMessage = root.lookupType("CommandMessage");
|
const command_req = CommandMessage.create();
|
var jsonData = '';//存储天气信息
|
// 定义规则
|
let rule = new schedule.RecurrenceRule();
|
// rule.minute = [1,6,11,16,21,26,31,36,41,46,51,56]
|
rule.second = [58]; // 每隔 10 秒执行一次
|
|
let rule_task = new schedule.RecurrenceRule();
|
// rule.minute = [1,6,11,16,21,26,31,36,41,46,51,56]
|
rule_task.second = [00]; // 每隔 10 秒执行一次
|
|
var periodTasklist = []
|
|
var payload = { source: "AwesomeString", syscommand: 1, subcommand: 2, generatetime: "2", targetclient:"111",returnserver:"#server#", taskuuid:"1234" };
|
|
// Verify the payload if necessary (i.e. when possibly incomplete or invalid)
|
var errMsg = CommandMessage.verify(payload);
|
if (errMsg)
|
throw Error(errMsg);
|
|
// Create a new message
|
var message = CommandMessage.create(payload); // or use .fromObject if conversion is necessary
|
|
// let buffer = Buffer.from(command_req)
|
// let buffer = CommandMessage.encode(message).finish();
|
// let msg = CommandMessage.decode(buffer);
|
|
|
module.exports = {
|
async job_() {
|
// schedule.scheduleJob('5 * * * * *', async () => {
|
|
// });
|
},
|
|
};
|
|
schedule.scheduleJob(rule_task, async () => {//每分钟读取周期任务 并将任务分解执行
|
// let res = httpGet('http://127.0.0.1:8001/admin/business/periodicsetting/getdata?bid=getPeriodTaskList');
|
axios.get('http://127.0.0.1:8001/admin/business/periodicsetting/getdata?bid=getPeriodTaskList').then(response => {
|
periodTasklist = response.data.data;
|
console.log(periodTasklist)
|
}).catch(error => {
|
console.log(error);
|
});
|
});
|
|
schedule.scheduleJob(rule, async () => {//每分钟读取周期任务 并将任务分解执行
|
//http://192.168.1.4:5000/api
|
// Exemplary payload
|
var payload = { source: "AwesomeString", syscommand: 1, subcommand: 2, generatetime: "2", targetclient:"111",returnserver:"#server#", taskuuid:"1234" };
|
|
// Verify the payload if necessary (i.e. when possibly incomplete or invalid)
|
var errMsg = CommandMessage.verify(payload);
|
if (errMsg)
|
throw Error(errMsg);
|
|
// Create a new message
|
var message = CommandMessage.create(payload); // or use .fromObject if conversion is necessary
|
|
// let buffer = Buffer.from(command_req)
|
let buffer = CommandMessage.encode(message).finish();
|
let msg = CommandMessage.decode(buffer);
|
console.log('-------step in-------------------------')
|
let urlstr = "http://192.168.1.4:5000/api";
|
axios({
|
method: 'post',
|
url: urlstr,
|
data: buffer,
|
headers: {
|
'Content-Type': 'application/octet-stream', // 关键
|
},
|
}).then(res => {
|
console.log(res)
|
}).catch((error) => {
|
console.log(error)
|
})
|
|
|
console.log('-----step over------------------------------------------------')
|
|
});
|
|
|
|
// schedule.scheduleJob(rule, async () => {//每小时定时取天气数据
|
// //https://devapi.heweather.net/v7/weather/now?location=101021700&key=495b433d21c84986a99c4ac52d42fd3b
|
// // 1. 检测当前是否已有天气数据
|
// let sqlstr = `select count(1) as counter from t_d_weather_hour where TO_DAYS(now())=TO_DAYS(posttime) and HOUR(now())=hour(posttime) and posttime> date_sub(now(), interval 1 hour)`;
|
// let lastdata_times = await mysql.query_data(sqlstr, 'master', null);
|
// if( lastdata_times[0].counter > 0 ) { return ;}
|
// // 2.若当前无天气数据,重新抓取
|
// let urlstr = "https://devapi.heweather.net/v7/weather/now?location=location_code&key=495b433d21c84986a99c4ac52d42fd3b";
|
// 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];
|
// axios.get(urlstr.replace('location_code', element.code)).then(response => {
|
// if(response.data.now) {
|
// let w = response.data.now;
|
// let posttime_ = w.obsTime.replace('T',' ').substr(0,13)+ ':00:00';
|
// let sql_ = `insert into t_d_weather_hour (type,citycode,cityname,posttime,temp,feelsLike,icon,text,wind360,windDir,windScale,windSpeed,humidity,precip,pressure,vis,cloud,dew,responsedata)
|
// values ('${element.type}','${element.code}','${element.name}','${posttime_}','${w.temp}','${w.feelsLike}','${w.icon}','${w.text}','${w.wind360}',
|
// '${w.windDir}','${w.windScale}','${w.windSpeed}','${w.humidity}','${w.precip}','${w.pressure}','${w.vis}','${w.cloud}','${w.dew}','${JSON.stringify(response.data)}'
|
// )`;
|
// mysql.query_data(sql_, 'master', null)
|
// }
|
// }).catch(error => {
|
// console.log(error);
|
// });
|
// }
|
|
// });
|
|
|
// schedule.scheduleJob(rule, async () => {//每天定时更新天气数据
|
// //https://devapi.qweather.com/v7/weather/3d?location=101021700&key=495b433d21c84986a99c4ac52d42fd3b
|
// // 1. 检测当前是否已有天气数据
|
// let sqlstr = `select count(1) as counter from t_d_weather_day where TO_DAYS(now())=TO_DAYS(posttime)`;
|
// let lastdata_times = await mysql.query_data(sqlstr, 'master', null);
|
// if( lastdata_times[0].counter > 0 ) { return ;}
|
// // 2.若当前无天气数据,重新抓取
|
// let urlstr = "https://devapi.qweather.com/v7/weather/3d?location=location_code&key=495b433d21c84986a99c4ac52d42fd3b";
|
// 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];
|
// axios.get(urlstr.replace('location_code', element.code)).then(response => {
|
// if(response.data.daily) {
|
// let w = response.data.daily[0];
|
// let posttime_ = w.fxDate+ ' 00:00:00';
|
// let sql_ = `insert into t_d_weather_day (type,citycode,cityname,posttime,iconNight,iconDay,humidity,precip,pressure,vis,cloud,
|
// moonPhase,moonPhaseIcon,moonrise,moonset,sunrise,sunset,tempMax,tempMin,textDay,textNight,uvIndex,
|
// wind360Day,windDirDay,wind360Night,windDirNight,windScaleDay,windScaleNight,windSpeedDay,windSpeedNight,responsedata)
|
// values ('${element.type}','${element.code}','${element.name}','${posttime_}','${w.iconNight}','${w.iconDay}','${w.humidity}','${w.precip}','${w.pressure}','${w.vis}',
|
// '${w.cloud}','${w.moonPhase}','${w.moonPhaseIcon}','${w.moonrise}','${w.moonset}','${w.sunrise}','${w.sunset}','${w.tempMax}','${w.tempMin}','${w.textDay}','${w.textNight}','${w.uvIndex}',
|
// '${w.wind360Day}','${w.windDirDay}','${w.wind360Night}','${w.windDirNight}','${w.windScaleDay}','${w.windScaleNight}','${w.windSpeedDay}','${w.windSpeedNight}',
|
// '${JSON.stringify(response.data)}'
|
// )`;
|
// mysql.query_data(sql_, 'master', null)
|
// }
|
// }).catch(error => {
|
// console.log(error);
|
// });
|
// }
|
|
// });
|
|
|
// https://devapi.heweather.net/v7/weather/now?location=101021700&key=495b433d21c84986a99c4ac52d42fd3b
|
|
|
function httpGet(uri) {
|
console.log(uri);
|
axios.get(uri).then(response => {
|
console.log(response.data);
|
return response.data;
|
}).catch(error => {
|
console.log(error);
|
});
|
}
|
|
function httpPost(uri, postdata) {
|
// let data = {
|
// name: 'John Doe',
|
// job: 'Content Writer'
|
// };
|
axios.post(uri, postdata).then((res) => {
|
return res.data;
|
console.log(`Status: ${res.status}`);
|
console.log('Body: ', res.data);
|
}).catch((err) => {
|
console.error(err);
|
});
|
}
|