You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

183 lines
6.2 KiB

#include "trendwidet.h"
#include "ui_trendwidet.h"
#include "trendmanager.h"
#include "loadingdialog.h"
#include <QStandardItemModel>
#include <QSqlQuery>
#include <QStandardItem>
#include <QDebug>
#include "trendtablemodel.h"
trendWidet::trendWidet(QWidget *parent) :
QWidget(parent),
ui(new Ui::trendWidet)
{
ui->setupUi(this);
if(!QSqlDatabase::contains("trendWidet"))
{
db = QSqlDatabase::addDatabase("QMYSQL","trendWidet");
db.setHostName("192.168.0.201");
db.setDatabaseName("nstocks");
db.setUserName("admin");
db.setPassword("1qazse42W3");
db.open();
}
trend10Model = new QSqlQueryModel;
ui->tableView_trend10->setModel(trend10Model);
trend20Model = new QSqlQueryModel;
ui->tableView_trend20->setModel(trend20Model);
stocks10Model = new QSqlQueryModel;
ui->tableView_stocks10->setModel(stocks10Model);
stocks20Model = new QSqlQueryModel;
ui->tableView_stocks20->setModel(stocks20Model);
ui->currentDate->setDate(QDate::currentDate());
dthread.start();
// trend20_Model = new QStandardItemModel(ui->tableView_trend20);
// trend20_Model->setColumnCount(3);
// trend20_Model->setHeaderData(0,Qt::Horizontal,QStringLiteral("名称"));
// trend20_Model->setHeaderData(1,Qt::Horizontal,QDate::currentDate().toString("yyyy-MM-dd"));
// trend20_Model->setHeaderData(2,Qt::Horizontal,QDate::currentDate().addDays(-1).toString("yyyy-MM-dd"));
// ui->tableView_trend20->setModel(trend20_Model);
m_trend20_Model = new TrendTableModel(ui->tableView_trend20);
m_trend20_Model->setColumnCount(3);
m_trend20_Model->setHeaderData(0,Qt::Horizontal,QStringLiteral("名称"));
m_trend20_Model->setHeaderData(1,Qt::Horizontal,QDate::currentDate().toString("yyyy-MM-dd"));
m_trend20_Model->setHeaderData(2,Qt::Horizontal,QDate::currentDate().addDays(-1).toString("yyyy-MM-dd"));
ui->tableView_trend20->setModel(m_trend20_Model);
}
trendWidet::~trendWidet()
{
dthread.terminate();
delete ui;
}
void trendWidet::on_pushButton_trend_clicked()
{
TrendManager* tm = new TrendManager;
tm->setDataDate(ui->currentDate->date().toString("yyyy-MM-dd"));
tm->addParam("date",ui->currentDate->date().toString("yyyy-MM-dd"));
tm->addParam("limitCount","590");
tm->addParam("type","10");
LoadingDialog ld;
connect(&dthread,SIGNAL(managerFinished()),&ld,SLOT(accept()));
// //10日
// //获取stocks中所有数据
// tm->setExcuteType(DataManagerBase::getData);
// dthread.setManager(tm);
// dthread.startManager();
// ld.exec();
// //简单筛选排序后数据插入数据库
// tm->setExcuteType(DataManagerBase::decode);
// dthread.setManager(tm);
// dthread.startManager();
// ld.exec();
//20日
tm->addParam("type","20");
//获取stocks中所有数据
tm->setExcuteType(DataManagerBase::getData);
dthread.setManager(tm);
dthread.startManager();
ld.exec();
//简单筛选排序后数据插入数据库
tm->setExcuteType(DataManagerBase::decode);
dthread.setManager(tm);
dthread.startManager();
ld.exec();
queryTrends(ui->currentDate->date().toString("yyyy-MM-dd"),"20");
queryTrends(ui->currentDate->date().addDays(-1).toString("yyyy-MM-dd"),"20");
QStringList dates;
dates.append(ui->currentDate->date().toString("yyyy-MM-dd"));
dates.append(ui->currentDate->date().addDays(-1).toString("yyyy-MM-dd"));
updateViews(dates);
}
void trendWidet::on_pushButton_query_clicked()
{
// queryStocks("10");
// queryStocks("20");
// queryTrends("10");
// queryTrends("20");
// trend20_Model->setHeaderData(1,Qt::Horizontal,ui->currentDate->date().toString("yyyy-MM-dd"));
// trend20_Model->setHeaderData(2,Qt::Horizontal,ui->currentDate->date().addDays(-1).toString("yyyy-MM-dd"));
m_trend20_Model->setHeaderData(1,Qt::Horizontal,ui->currentDate->date().toString("yyyy-MM-dd"));
m_trend20_Model->setHeaderData(2,Qt::Horizontal,ui->currentDate->date().addDays(-1).toString("yyyy-MM-dd"));
queryTrends(ui->currentDate->date().toString("yyyy-MM-dd"),"20");
queryTrends(ui->currentDate->date().addDays(-1).toString("yyyy-MM-dd"),"20");
QStringList dates;
dates.append(ui->currentDate->date().toString("yyyy-MM-dd"));
dates.append(ui->currentDate->date().addDays(-1).toString("yyyy-MM-dd"));
updateViews(dates);
}
void trendWidet::queryStocks(QString type)
{
}
void trendWidet::queryTrends(QString date,QString type)
{
QSqlQuery q(QSqlDatabase::database("trendWidet"));
QString sql = QString("select * from trends WHERE trade_day = '%1' and type = '%2' ORDER BY sort ASC;").arg(date).arg(type);
qDebug() << sql;
q.exec(sql);
while (q.next())
{
trends t;
t.blemind2 = q.value("blemind2").toString();
t.tradeDay = q.value("trade_day").toString();
t.stocksCount = q.value("stocks_count").toString();
t.trendsValue = q.value("trend_value").toString();
t.trendsValueChanged = q.value("trend_value_change").toString();
t.sort = q.value("sort").toString();
t.sortChanged = q.value("sort_change").toString();
t.type = q.value("type").toString();
if(trends20.contains(t.blemind2))
{
trends20[t.blemind2].append(t);
}
else
{
QList<trends> tl;
tl.append(t);
trends20.insert(t.blemind2,tl);
}
}
}
void trendWidet::updateViews(QStringList dates)
{
// int row = trend20_Model->rowCount();
int row = m_trend20_Model->rowCount();
QHashIterator<QString,QList<trends> > ti(trends20);
while (ti.hasNext()) {
ti.next();
QList<trends> l = ti.value();
// trend20_Model->setItem(row,0,new QStandardItem(ti.key()));
m_trend20_Model->addData(row,0,ti.key());
for (int di = 0; di < dates.size(); ++di)
{
for (int i = 0 ; i < l.count() ; i++)
{
if(l[i].tradeDay == dates[di])
{
// trend20_Model->setItem(row,di+1,new QStandardItem(l[i].sort));
m_trend20_Model->addData(row,di+1,l[i].sort);
break;
}
}
}
row++;
}
}