wangrong
2022-06-28 19f5f603fb890e84e43fadcf3135e660802026d0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
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);
    });
}