1.根据日期和股票代号查询表stock_items中的股票代码,找出最大价格的日期,看是否等于当天日期,如果等于,则得分+1,再判断当天股票价格是否大于9.7,如果大于,则得分再+2,最后将计算后的得分语句再插入表stock_score.
let commitCount = 0;
let allData = results;
for (let i = 0; i < allData.length; i++) {
let dto = allData[i];
let sqlData = [dto.getCode(), dto.getDate()];
let sqlSelect = `select * from stock_items where code='601489' and date in('2021-12-17','2021-12-16','2021-12-15')`;
connection.query(sqlSelect, sqlData, function (error, results, fields) {
if (error)
throw error;
console.log('The solution is: ', results);
let maxR = EastScoreService.getInstance().getMaxRatio(results);
let count = 0;
if (maxR.Date == dto.getDate()) {
count = count + 1;
}
if (dto.getMaxAndMinRatio() > 9.7) {
count = count + 2;
console.log(count);
}
console.log(dto);//如果出现报错,就在错误的上方打console.log()。
dto.setCount(count);//将计算之后的得分set进dto。
console.log(dto);
commitCount++;
if (commitCount == allData.length) {//提交的次数与设置的dto的个数有关,与数据库里查询的语句条数无关。
let insertData = [dto.getCode(), dto.getDate(), dto.getCount(), dto.getMaxAndMinRatio()];//不能直接用最开始声明的 sqlData,否则dto里的count还是原始设置的0。
let sqlInsert = `insert into stock_score(code,date,count,maxAndMinRatio)values(?,?,?,?)`;
console.log(insertData);
console.log(results);
connection.query(sqlInsert, insertData, function (error, results, fields) {
if (error)
throw error;
console.log('The solution is: ', results);
connection.commit();
connection.end();
});
}
})
}
}
getMaxRatio(results) {//数据库里查询到的results只用于找出最大的股票价格。
let max = results[0];
for (let i = 1; i < results.length; i++) {
if (max.MaxAndMinRatio <= results[i].MaxAndMinRatio) {
max = results[i];
}//思路:先假定第0个为最大值,第0个与第1个比较,如果0<1,则max=[1];如果0>1,则不变。
}
return max;
}