트리 구조 형식 변경
git-svn-id: svn://192.168.0.12/source@40 8346c931-da38-4b9b-9d4c-e48b93cbd075
This commit is contained in:
@@ -8,8 +8,11 @@
|
||||
#include <QPushButton>
|
||||
#include <QThread>
|
||||
#include <QTime>
|
||||
#include <QMessageBox>
|
||||
#include <QFile>
|
||||
|
||||
#include "../json/sjson.h"
|
||||
#include "../common.h"
|
||||
|
||||
#define D_NONE -1
|
||||
|
||||
@@ -23,8 +26,7 @@
|
||||
#define D_DB_WEB_PASS "1234"
|
||||
#define D_DB_WEB_NAME "dbconcepters"
|
||||
|
||||
Widget::Widget(QWidget *parent)
|
||||
: QWidget(parent)
|
||||
Widget::Widget(QWidget *parent) : C_MAP_REAL_BODY (0x01) , C_MAP_REAL_REPLY (0x02) , QWidget(parent)
|
||||
{
|
||||
QVBoxLayout *vMainLayout = new QVBoxLayout;
|
||||
{
|
||||
@@ -42,7 +44,8 @@ Widget::Widget(QWidget *parent)
|
||||
hLayout->addLayout(vLayout);
|
||||
}
|
||||
connect(&m_plw[E_LIST_COMPANY],SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),this,SLOT(CompanyItemChanged(QListWidgetItem*,QListWidgetItem*)));
|
||||
vMainLayout->addLayout(hLayout);
|
||||
connect(&m_plw[E_LIST_DATA],SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(DataItemClicked(QListWidgetItem*)));
|
||||
vMainLayout->addLayout(hLayout);
|
||||
}
|
||||
{
|
||||
QHBoxLayout *hLayout = new QHBoxLayout;
|
||||
@@ -58,12 +61,17 @@ Widget::Widget(QWidget *parent)
|
||||
hLayoutEdit->addWidget(m_pleCycle);
|
||||
m_pleCycle->setText("172800");
|
||||
m_pleCycle->setEnabled(false);
|
||||
/*
|
||||
QPushButton *ppbLoad = new QPushButton("Load");
|
||||
connect(ppbLoad, SIGNAL(released()),this, SLOT(on_load()));
|
||||
hLayoutEdit->addWidget(ppbLoad);
|
||||
*/
|
||||
QPushButton *ppbInsert = new QPushButton("Insert");
|
||||
connect(ppbInsert, SIGNAL(released()),this, SLOT(on_insert()));
|
||||
hLayoutEdit->addWidget(ppbInsert);
|
||||
QPushButton *ppbDelete = new QPushButton("Delete");
|
||||
connect(ppbDelete, SIGNAL(released()),this, SLOT(on_delete()));
|
||||
hLayoutEdit->addWidget(ppbDelete);
|
||||
QPushButton *ppbSend = new QPushButton("Send");
|
||||
connect(ppbSend, SIGNAL(released()),this, SLOT(on_send()));
|
||||
hLayoutEdit->addWidget(ppbSend);
|
||||
vLayout->addLayout(hLayoutEdit);
|
||||
}
|
||||
hLayout->addLayout(vLayout);
|
||||
@@ -86,13 +94,20 @@ Widget::Widget(QWidget *parent)
|
||||
vMainLayout->addWidget(ppbSend);
|
||||
connect(ppbSend, SIGNAL(released()),this, SLOT(on_send()));
|
||||
*/
|
||||
connect(&m_timer, SIGNAL(timeout()), this, SLOT(Update()));
|
||||
//connect(&m_timer, SIGNAL(timeout()), this, SLOT(Update()));
|
||||
//m_pThread = new SGetThread;
|
||||
setLayout(vMainLayout);
|
||||
//m_pPutThread = new SPutThread[QThread::idealThreadCount()];
|
||||
m_nMode = 0;
|
||||
if (ReloadColumn() == false)
|
||||
{
|
||||
QMessageBox::critical(this,"Error","column.txt do not find",QMessageBox::Ok);
|
||||
exit(0);
|
||||
return;
|
||||
}
|
||||
|
||||
db = QSqlDatabase::addDatabase("QMYSQL");
|
||||
m_timer.start(100);
|
||||
//m_timer.start(100);
|
||||
Refresh();
|
||||
FilterProcssRefresh();
|
||||
}
|
||||
@@ -158,7 +173,7 @@ void Widget::Refresh()
|
||||
|
||||
if (db.open() == false)
|
||||
{
|
||||
qDebug() << db.lastError().text();
|
||||
InsertLog(db.lastError().text());
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -182,7 +197,7 @@ void Widget::CompanyItemChanged(QListWidgetItem* _current,QListWidgetItem*)
|
||||
db.setDatabaseName(D_DB_WEB_NAME);
|
||||
if (db.open() == false)
|
||||
{
|
||||
qDebug() << db.lastError().text();
|
||||
InsertLog(db.lastError().text());
|
||||
return;
|
||||
}
|
||||
m_plw[E_LIST_CATALOG].clear();
|
||||
@@ -197,18 +212,17 @@ void Widget::CompanyItemChanged(QListWidgetItem* _current,QListWidgetItem*)
|
||||
|
||||
void Widget::on_send()
|
||||
{
|
||||
//if (m_nMode != 0) return ;
|
||||
//m_nMode = 1;
|
||||
foreach (QListWidgetItem *item,m_plw[E_LIST_COMPANY].selectedItems())
|
||||
{
|
||||
InsertLog("Data Send Run Start : " + item->text());
|
||||
DataPut(item->data(Qt::UserRole).toString());
|
||||
InsertLog("Data Send Run End ");
|
||||
}
|
||||
}
|
||||
|
||||
void Widget::on_insert()
|
||||
{
|
||||
if (m_pleCycle->text().isEmpty())
|
||||
{
|
||||
InsertLog("Cycle is null");
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
int aId[E_LIST_MAX];
|
||||
QString aStr[E_LIST_MAX];
|
||||
for (int i = 0; i < E_LIST_MAX;i++)
|
||||
@@ -221,56 +235,31 @@ void Widget::on_insert()
|
||||
}
|
||||
if (aId[i] == D_NONE) return;
|
||||
}
|
||||
|
||||
/*
|
||||
db.setHostName("bigbird.iptime.org");
|
||||
db.setUserName("admin");
|
||||
db.setPassword("admin123");
|
||||
db.setDatabaseName("concepters");
|
||||
if (db.open() == false)
|
||||
{
|
||||
InsertLog(db.lastError().text());
|
||||
return;
|
||||
}
|
||||
QString sql("insert into filterprocess (datagroup_id,datagroup_name,filtergroup_id,filtergroup_name, company_num, company_name , category_name , cycletime , lastruntime ) value (");
|
||||
sql += QString::number(aId[E_LIST_DATA]) + ","; // datagroup_id
|
||||
sql += "'" + aStr[E_LIST_DATA] + "',"; // datagroup_name
|
||||
sql += QString::number(aId[E_LIST_FILTER]) + ","; // filtergroup_id
|
||||
sql += "'" + aStr[E_LIST_FILTER] + "',"; // datagroup_name
|
||||
sql += QString::number(aId[E_LIST_COMPANY]) + ","; // company_num
|
||||
sql += "'" +aStr[E_LIST_COMPANY]+ "'," ; // company_name
|
||||
sql += "'" +aStr[E_LIST_CATALOG]+ "'," ; // category_name
|
||||
sql += m_pleCycle->text() + ","; //cycletime
|
||||
QDateTime NowTime(QDateTime::currentDateTime().addDays(-3));
|
||||
sql += "'" + NowTime.toString("yyyy-MM-dd HH:mm:ss") + "')"; //lastruntime
|
||||
QSqlQuery query;
|
||||
if(query.exec(sql) == false)
|
||||
{
|
||||
qDebug() << sql;
|
||||
InsertLog(query.lastError().text());
|
||||
}
|
||||
db.close();
|
||||
*/
|
||||
QStringList list;
|
||||
list.append("0");
|
||||
list.append(QString::number(aId[E_LIST_DATA]));
|
||||
list.append(aStr[E_LIST_DATA]);
|
||||
list.append(QString::number(aId[E_LIST_FILTER]));
|
||||
list.append(aStr[E_LIST_FILTER]);
|
||||
list.append(QString::number(aId[E_LIST_COMPANY]));
|
||||
list.append(aStr[E_LIST_COMPANY]); // company_name
|
||||
list.append(aStr[E_LIST_CATALOG]);// category_name
|
||||
list.append("0");//0
|
||||
list.append(QString::number(aId[E_LIST_DATA]));//1
|
||||
list.append(aStr[E_LIST_DATA]);//2
|
||||
list.append(QString::number(aId[E_LIST_FILTER]));//3
|
||||
list.append(aStr[E_LIST_FILTER]);//4
|
||||
list.append(QString::number(aId[E_LIST_COMPANY]));//5
|
||||
list.append(aStr[E_LIST_COMPANY]);// company_name 6
|
||||
list.append(aStr[E_LIST_CATALOG]);// category_name 7
|
||||
list.append(m_pleCycle->text());
|
||||
InsertLog("Run (" + list.at(2) + "," + list.at(4) + ") -> (" + list.at(6) + "," + list.at(7) +")" );
|
||||
InsertLog("Data Get ..." );
|
||||
m_body_data.clear();
|
||||
m_reply_data.clear();
|
||||
//DataGet(list);
|
||||
InsertLog("Data Filter ..." );
|
||||
DataFilter(list);
|
||||
InsertLog("Data Put ..." );
|
||||
//DataPut(list);
|
||||
InsertLog("Finish");
|
||||
*/
|
||||
ReloadData();
|
||||
|
||||
foreach (QListWidgetItem *item,m_plw[E_LIST_FILTER].selectedItems())
|
||||
{
|
||||
InsertLog("Data Filter Run Start : " + item->text());
|
||||
DataFilter(item->data(Qt::UserRole).toString());
|
||||
InsertLog("Data Filter Run End ");
|
||||
}
|
||||
foreach (QListWidgetItem *item,m_plw[E_LIST_CATALOG].selectedItems())
|
||||
{
|
||||
InsertLog("Data Make Run Start : " + item->text());
|
||||
DataMake(item->data(Qt::UserRole).toInt());
|
||||
InsertLog("Data Make Run End ");
|
||||
}
|
||||
FilterProcssRefresh();
|
||||
}
|
||||
|
||||
@@ -345,188 +334,132 @@ QString Widget::SqlString(QString _str)
|
||||
|
||||
void Widget::Update()
|
||||
{
|
||||
/*
|
||||
db.setHostName("bigbird.iptime.org");
|
||||
db.setUserName("admin");
|
||||
db.setPassword("admin123");
|
||||
db.setDatabaseName("concepters");
|
||||
if (db.open() == false)
|
||||
{
|
||||
InsertLog(db.lastError().text());
|
||||
return;
|
||||
}
|
||||
QString sql("select id,datagroup_id,datagroup_name,filtergroup_id,filtergroup_name,company_num,company_name,category_name,cycletime,lastruntime from filterprocess");
|
||||
QSqlQuery query;
|
||||
if(query.exec(sql) == false) { InsertLog(query.lastError().text());return;}
|
||||
QVector <QStringList> vecData;
|
||||
while(query.next())
|
||||
{
|
||||
QDateTime nextDateTime = query.value(9).toDateTime().addSecs(query.value(8).toInt());
|
||||
if (QDateTime::currentDateTime() >= nextDateTime)
|
||||
{
|
||||
QStringList strlist;
|
||||
for(int i = 0; i < 10 ; i++)
|
||||
strlist.push_back(query.value(i).toString());
|
||||
vecData.push_back(strlist);
|
||||
}
|
||||
}
|
||||
db.close();
|
||||
foreach(QStringList list,vecData)
|
||||
{
|
||||
InsertLog("Run (" + list.at(2) + "," + list.at(4) + ") -> (" + list.at(6) + "," + list.at(7) +")" );
|
||||
InsertLog("Data Get ..." );
|
||||
m_mainData.clear();
|
||||
DataGet(list);
|
||||
InsertLog("Data Filter ..." );
|
||||
DataFilter(list);
|
||||
InsertLog("Data Put ..." );
|
||||
DataPut(list);
|
||||
InsertLog("Finish");
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
void Widget::DataGet(QStringList _list)
|
||||
{
|
||||
db.setHostName("bigbird.iptime.org");
|
||||
db.setUserName("admin");
|
||||
db.setPassword("admin123");
|
||||
db.setDatabaseName("concepters");
|
||||
if (db.open() == false)
|
||||
{
|
||||
InsertLog(db.lastError().text());
|
||||
return;
|
||||
}
|
||||
QString sql;
|
||||
QSqlQuery query;
|
||||
sql = "update filterprocess set lastruntime = '" + QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss") +"' where id = " + _list.at(0);
|
||||
query.exec(sql);
|
||||
if(query.exec(sql) == false) { InsertLog(query.lastError().text());return;}
|
||||
|
||||
QString strSelect;
|
||||
strSelect = "select ";
|
||||
strSelect += "CONVERT(platform_name USING utf8),"; //0
|
||||
strSelect += "CONVERT(platform_form USING utf8),"; //1
|
||||
strSelect += "CONVERT(platform_title USING utf8),"; //2
|
||||
strSelect += "CONVERT(article_id USING utf8),"; //3
|
||||
strSelect += "CONVERT(article_nickname USING utf8),"; //4
|
||||
strSelect += "CONVERT(article_title USING utf8),"; //5
|
||||
strSelect += "CONVERT(article_data USING utf8),"; //6
|
||||
strSelect += "CONVERT(article_url USING utf8),"; //7
|
||||
strSelect += "CONVERT(article_hit USING utf8),"; //8
|
||||
strSelect += "CONVERT(article_date USING utf8)"; //9
|
||||
//strSelect += "CONVERT(platform_id USING utf8)"; //10
|
||||
strSelect += " from ";
|
||||
strSelect += "data_" + _list.at(1);
|
||||
strSelect += " where ";
|
||||
strSelect += " article_form = 'body'";
|
||||
strSelect += " Order by article_date";
|
||||
|
||||
//qDebug() << strSelect;
|
||||
|
||||
if(query.exec(strSelect) == false) { InsertLog(query.lastError().text());return;}
|
||||
while(query.next())
|
||||
{
|
||||
QStringList strList;
|
||||
if (query.value(3).toString().isEmpty()) continue;
|
||||
for(int i = 0; i < 10; i++)
|
||||
strList << " " + query.value(i).toString() + " ";
|
||||
m_body_data.append(strList);
|
||||
}
|
||||
|
||||
int i=0;
|
||||
foreach(QStringList strList,m_body_data)
|
||||
{
|
||||
strSelect = "select ";
|
||||
strSelect += "CONVERT(article_id USING utf8),"; //0
|
||||
strSelect += "CONVERT(article_nickname USING utf8),"; //1
|
||||
strSelect += "CONVERT(article_parent USING utf8),"; //2
|
||||
strSelect += "CONVERT(article_data USING utf8),"; //3
|
||||
strSelect += "CONVERT(article_date USING utf8)"; //4
|
||||
strSelect += " from ";
|
||||
strSelect += "data_" + _list.at(1);
|
||||
strSelect += " where ";
|
||||
strSelect += " article_form = 'reply' and";
|
||||
strSelect += " article_url = '";
|
||||
strSelect += strList.at(7).trimmed();
|
||||
strSelect += "' Order by article_order";
|
||||
if(query.exec(strSelect) == false) {
|
||||
InsertLog(query.lastError().text());return;}
|
||||
int nStart = m_reply_data.size() + 1;
|
||||
int nEnd = nStart;
|
||||
while(query.next())
|
||||
{
|
||||
QStringList strList;
|
||||
for(int i = 0; i < 5; i++)
|
||||
strList << " " + query.value(i).toString() + " ";
|
||||
m_reply_data.append(strList);
|
||||
nEnd++;
|
||||
}
|
||||
if (nStart == nEnd)
|
||||
nStart = nEnd = -1;
|
||||
else
|
||||
nEnd--;
|
||||
m_body_data[i].push_back(QString::number(nStart));
|
||||
m_body_data[i++].push_back(QString::number(nEnd));
|
||||
}
|
||||
db.close();
|
||||
}
|
||||
|
||||
void Widget::FilterDate(QString _strJson)
|
||||
{
|
||||
int nColumn;
|
||||
/*
|
||||
switch(_nCategory)
|
||||
{
|
||||
case 0:nColumn = 2;break; // main
|
||||
case 1:nColumn = 10;break; // comment
|
||||
default : return;
|
||||
}
|
||||
*/
|
||||
|
||||
SJson json;
|
||||
int nSelect = json.Get(_strJson,"Article").toInt() - 1;
|
||||
if (nSelect < 0) return;
|
||||
m_bDataFlag[nSelect] = true;
|
||||
QVector <QStringList> copyData;
|
||||
foreach(QStringList strList , m_body_data)
|
||||
QDate dateStart = QDate::fromString(json.Get(_strJson,"Start"),"yyyy-MM-dd");
|
||||
QDate dateEnd = QDate::fromString(json.Get(_strJson,"End"),"yyyy-MM-dd");
|
||||
foreach(QStringList strList , m_data[nSelect])
|
||||
{
|
||||
bool bFlag = false;
|
||||
QString strTime = strList.at(nColumn).trimmed();
|
||||
QString strTime = strList.at(m_nDateColumn).trimmed();
|
||||
if (strTime.size() >= 10)
|
||||
{
|
||||
QChar ch = strTime.at(4);
|
||||
QString strFormat = QString("yyyy")+ch+QString("MM")+ch+QString("dd");
|
||||
QDate date = QDate::fromString(strTime.left(10),strFormat);
|
||||
if (_dateStart <= date && _dateEnd >= date)
|
||||
if (dateStart <= date && dateEnd >= date)
|
||||
bFlag = true;
|
||||
}
|
||||
if (bFlag)
|
||||
copyData.push_back(strList);
|
||||
}
|
||||
m_body_data.clear();
|
||||
m_body_data = copyData;
|
||||
m_data[nSelect].clear();
|
||||
m_data[nSelect] = copyData;
|
||||
}
|
||||
|
||||
void Widget::FilterLength(QString _strJson)
|
||||
{
|
||||
SJson json;
|
||||
int nSelect = json.Get(_strJson,"Article").toInt() - 1;
|
||||
if (nSelect < 0) return;
|
||||
m_bDataFlag[nSelect] = true;
|
||||
|
||||
int nCatalog = json.GetNumber(_strJson,"Category");
|
||||
int nComp = json.GetNumber(_strJson,"Comp");
|
||||
int nFlag = json.GetNumber(_strJson,"InsDel");
|
||||
int nLength = json.Get(_strJson,"String").toInt();
|
||||
|
||||
QVector <QStringList> copyData;
|
||||
foreach(QStringList strList , m_data[nSelect])
|
||||
{
|
||||
bool bFlag = false;
|
||||
int nCurrentLength = strList.at(nCatalog).trimmed().length();
|
||||
switch(nComp)
|
||||
{
|
||||
case E_LENGTH_COMP_GREATER:
|
||||
if (nCurrentLength > nLength)
|
||||
bFlag = true;
|
||||
break;
|
||||
case E_LENGTH_COMP_LESS:
|
||||
if (nCurrentLength < nLength)
|
||||
bFlag = true;
|
||||
break;
|
||||
case E_LENGTH_COMP_EQUAL:
|
||||
if (nLength == nCurrentLength)
|
||||
bFlag = true;
|
||||
break;
|
||||
}
|
||||
if (nFlag == 1) bFlag = !bFlag;
|
||||
if (bFlag)
|
||||
copyData.push_back(strList);
|
||||
}
|
||||
m_data[nSelect].clear();
|
||||
m_data[nSelect] = copyData;
|
||||
}
|
||||
|
||||
void Widget::FilterReplace(QString _strJson)
|
||||
{
|
||||
SJson json;
|
||||
int nSelect = json.Get(_strJson,"Article").toInt() - 1;
|
||||
if (nSelect < 0) return;
|
||||
m_bDataFlag[nSelect] = true;
|
||||
|
||||
int nCatalog = json.GetNumber(_strJson,"Category");
|
||||
QString strFind = json.Get(_strJson,"String_Find");
|
||||
QString strReplace = json.Get(_strJson,"String_Replace");
|
||||
|
||||
bool bFlag = false;
|
||||
QStringList strListKeyword;
|
||||
if (json.GetNumber(_strJson,"Find") == E_REPLACE_SPACE)
|
||||
{
|
||||
bFlag = true;
|
||||
strListKeyword = strFind.split(" ");
|
||||
}
|
||||
|
||||
for (int i = 0 ; i < m_data[nSelect].size(); i++)
|
||||
{
|
||||
if (bFlag)
|
||||
{
|
||||
foreach(QString str,strListKeyword)
|
||||
{
|
||||
m_data[nSelect][i][nCatalog] = m_data[nSelect][i][nCatalog].replace(str,strReplace);
|
||||
}
|
||||
}
|
||||
else
|
||||
m_data[nSelect][i][nCatalog] = m_data[nSelect][i][nCatalog].replace(strFind,strReplace);
|
||||
}
|
||||
}
|
||||
|
||||
void Widget::FilterSerach(QString _strJson)
|
||||
{
|
||||
QStringList strListKeyword = _strSearch.split(" ");
|
||||
if (_nMethod == 1)
|
||||
SJson json;
|
||||
int nSelect = json.Get(_strJson,"Article").toInt() - 1;
|
||||
if (nSelect < 0) return;
|
||||
m_bDataFlag[nSelect] = true;
|
||||
int nCategory = json.GetNumber(_strJson,"Category");
|
||||
int nMethod = json.GetNumber(_strJson,"Method");
|
||||
int nKeyword = json.GetNumber(_strJson,"Keyword");
|
||||
QStringList strListKeyword = json.Get(_strJson,"String").split(" ");
|
||||
|
||||
if (nMethod == 1)
|
||||
{
|
||||
for (int i = 0 ; i < strListKeyword.size(); i++ )
|
||||
strListKeyword[i] = " " + strListKeyword[i] + " ";
|
||||
}
|
||||
|
||||
QVector <QStringList> copyData;
|
||||
foreach(QStringList strList , m_body_data)
|
||||
foreach(QStringList strList , m_data[nSelect])
|
||||
{
|
||||
bool bFlag = false;
|
||||
QString strData = strList.at(_nCatalog);
|
||||
switch(_nKeyword)
|
||||
QString strData = strList.at(nCategory);
|
||||
switch(nKeyword)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
@@ -553,18 +486,36 @@ void Widget::FilterSerach(QString _strJson)
|
||||
case 3:
|
||||
{
|
||||
foreach(QString strKey , strListKeyword)
|
||||
strList[_nCatalog].replace(strKey,"");
|
||||
strList[nCategory].replace(strKey,"");
|
||||
bFlag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (bFlag) copyData.push_back(strList);
|
||||
}
|
||||
m_body_data.clear();
|
||||
m_body_data = copyData;
|
||||
m_data[nSelect].clear();
|
||||
m_data[nSelect] = copyData;
|
||||
}
|
||||
|
||||
void Widget::DataFilter(QStringList _list)
|
||||
void Widget::ReloadData()
|
||||
{
|
||||
for (int i = 0; i < E_ARTICLE_MAX ; i++)
|
||||
{
|
||||
m_data[i].clear();
|
||||
m_bDataFlag[i] = false;
|
||||
}
|
||||
|
||||
foreach(SBody stBody, m_mapData.values())
|
||||
{
|
||||
m_data[E_ARTICLE_BODY].push_back(stBody.m_strlist);
|
||||
foreach(SReply stReply , stBody.m_vecReply.values())
|
||||
{
|
||||
m_data[E_ARTICLE_REPLY].push_back(stReply.m_strlist);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Widget::DataFilter(QString _strFilterGroupID)
|
||||
{
|
||||
db.setHostName("bigbird.iptime.org");
|
||||
db.setUserName("admin");
|
||||
@@ -575,7 +526,7 @@ void Widget::DataFilter(QStringList _list)
|
||||
InsertLog(db.lastError().text());
|
||||
return;
|
||||
}
|
||||
QString sql = "select type,data from filter where filtergroup_id = " + _list.at(3);
|
||||
QString sql = "select type,data from filter where filtergroup_id = " + _strFilterGroupID;
|
||||
QSqlQuery query;
|
||||
if(query.exec(sql) == false) { InsertLog(query.lastError().text());return;}
|
||||
while (query.next())
|
||||
@@ -594,176 +545,11 @@ void Widget::DataFilter(QStringList _list)
|
||||
case E_FILTER_TYPE_REPLACE:
|
||||
FilterReplace(query.value(1).toString());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
db.close();
|
||||
}
|
||||
|
||||
void Widget::DataPut(QStringList _list)
|
||||
{
|
||||
db.setHostName(D_DB_WEB_HOST);
|
||||
db.setUserName(D_DB_WEB_USER);
|
||||
db.setPassword(D_DB_WEB_PASS);
|
||||
db.setDatabaseName(D_DB_WEB_NAME);
|
||||
if (db.open() == false)
|
||||
{
|
||||
InsertLog(db.lastError().text());
|
||||
return;
|
||||
}
|
||||
|
||||
QSqlQuery query;
|
||||
QString strQuery;
|
||||
strQuery = "DROP TABLE body_" + _list.at(5) + QString("_0000");
|
||||
if(query.exec(strQuery.toUtf8()) == false) /*{*/InsertLog(query.lastError().text());//return;}
|
||||
|
||||
strQuery = "DROP TABLE reply_" + _list.at(5) + QString("_0000");
|
||||
if(query.exec(strQuery.toUtf8()) == false) /*{*/InsertLog(query.lastError().text());//return;}
|
||||
|
||||
strQuery = "CREATE TABLE body_" + _list.at(5) + QString("_0000 (");
|
||||
strQuery += "num INT NOT NULL auto_increment primary key,"
|
||||
"platform_name CHAR(64),"
|
||||
"platform_form CHAR(64),"
|
||||
"platform_title VARCHAR(256),"
|
||||
"category_num INT,"
|
||||
"id CHAR(128),"
|
||||
"nickname VARCHAR(256),"
|
||||
"title VARCHAR(1024),"
|
||||
"data MEDIUMTEXT,"
|
||||
"url CHAR(255),"
|
||||
"hit INT,"
|
||||
"date DATETIME,"
|
||||
"reply_startnum INT,"
|
||||
"reply_endnum INT,"
|
||||
"isreal BOOLEAN,"
|
||||
"bodyisreal BOOLEAN,"
|
||||
"replyisreal BOOLEAN)DEFAULT CHARACTER SET = 'utf8' ENGINE=InnoDB;";
|
||||
|
||||
if(query.exec(strQuery.toUtf8()) == false)/*{*/InsertLog(query.lastError().text());//return;}
|
||||
|
||||
strQuery = "CREATE TABLE reply_" + _list.at(5) + QString("_0000 (");
|
||||
strQuery += "num INT NOT NULL auto_increment primary key,"
|
||||
"id CHAR(128),"
|
||||
"nickname VARCHAR(256),"
|
||||
"parent VARCHAR(256),"
|
||||
"data MEDIUMTEXT,"
|
||||
"date DATETIME,"
|
||||
"isreal BOOLEAN,"
|
||||
"body_num INT)DEFAULT CHARACTER SET = 'utf8' ENGINE=InnoDB;";
|
||||
|
||||
if(query.exec(strQuery.toUtf8()) == false)/*{*/InsertLog(query.lastError().text());//return;}
|
||||
|
||||
query.prepare("INSERT INTO body_" + _list.at(5) + QString("_0000 (") + "platform_name,"
|
||||
"platform_form,"
|
||||
"platform_title,"
|
||||
"category_num,"
|
||||
"id,"
|
||||
"nickname,"
|
||||
"title,"
|
||||
"data,"
|
||||
"url,"
|
||||
"hit,"
|
||||
"date,"
|
||||
"reply_startnum,"
|
||||
"reply_endnum,"
|
||||
"isreal,"
|
||||
"bodyisreal,"
|
||||
"replyisreal"
|
||||
") value ("
|
||||
":platform_name,"
|
||||
":platform_form,"
|
||||
":platform_title,"
|
||||
":category_num,"
|
||||
":id,"
|
||||
":nickname,"
|
||||
":title,"
|
||||
":data,"
|
||||
":url,"
|
||||
":hit,"
|
||||
":date,"
|
||||
":reply_startnum,"
|
||||
":reply_endnum,"
|
||||
":isreal,"
|
||||
":bodyisreal,"
|
||||
":replyisreal)");
|
||||
foreach(QStringList strList,m_body_data)
|
||||
{
|
||||
query.bindValue(":platform_name",strList.at(0));
|
||||
query.bindValue(":platform_form",strList.at(1));
|
||||
query.bindValue(":platform_title",SqlString(strList.at(2)).toUtf8());
|
||||
query.bindValue(":id",strList.at(3));
|
||||
query.bindValue(":nickname",SqlString(strList.at(4)).toUtf8());
|
||||
query.bindValue(":title",SqlString(strList.at(5)).toUtf8());
|
||||
query.bindValue(":data",SqlString(strList.at(6)).toUtf8());
|
||||
query.bindValue(":url",strList.at(7));
|
||||
query.bindValue(":hit",strList.at(8));
|
||||
query.bindValue(":date",strList.at(9));
|
||||
query.bindValue(":reply_startnum",strList.at(10));
|
||||
query.bindValue(":reply_endnum",strList.at(11));
|
||||
query.bindValue(":isreal",true);
|
||||
query.bindValue(":bodyisreal",false);
|
||||
query.bindValue(":replyisreal",false);
|
||||
if(query.exec() == false)
|
||||
InsertLog(query.lastError().text());
|
||||
}
|
||||
query.prepare("INSERT INTO reply_" + _list.at(5) + QString("_0000 (") + QString("id,nickname,parent,data,date)"
|
||||
" value "
|
||||
"(:id,:nickname,:parent,:data,:date)"));
|
||||
foreach(QStringList strList,m_reply_data)
|
||||
{
|
||||
query.bindValue(":id",strList.at(0));
|
||||
query.bindValue(":nickname",SqlString(strList.at(1)));
|
||||
query.bindValue(":parent",SqlString(strList.at(2)));
|
||||
query.bindValue(":data",SqlString(strList.at(3)));
|
||||
query.bindValue(":date",strList.at(4));
|
||||
if(query.exec() == false)
|
||||
InsertLog(query.lastError().text());
|
||||
}
|
||||
|
||||
/*
|
||||
QSqlQuery query;
|
||||
QString strDelete = "delete from data where company_name = '" + _list.at(6) + "' AND category_name = '" + _list.at(7) + "'";
|
||||
if(query.exec(strDelete.toUtf8()) == false) {
|
||||
InsertLog(query.lastError().text());
|
||||
return;}
|
||||
|
||||
//qDebug() << strDelete;
|
||||
|
||||
QString strInsert = "insert into data ( company_name , category_name , platform_name , platform_form , platform_title ,"
|
||||
"article_num , article_rownum , article_form , article_title , article_url , article_id , article_nickname , "
|
||||
"article_date , article_body , article_reply ) value (";
|
||||
|
||||
foreach(QStringList strList , m_body_data)
|
||||
{
|
||||
for (int i = 0; i < strList.size(); i++)
|
||||
strList[i] = strList[i].trimmed();
|
||||
QString strQuery = strInsert;
|
||||
strQuery += "'"+_list.at(6)+ "',"; //company_name
|
||||
strQuery += "'"+_list.at(7)+ "',"; //category_name
|
||||
strQuery += "'" + strList.at(14) + "',"; //platform_name
|
||||
strQuery += "'" + strList.at(15) + "',"; //platform_form
|
||||
strQuery += "'" + SqlString(strList.at(6)) + "',"; //platform_title
|
||||
strQuery += "'0',"; //article_num
|
||||
strQuery += "'" + strList.at(17) + "',"; //article_rownum
|
||||
strQuery += "'" + strList.at(16) + "',"; //article_type
|
||||
strQuery += "'" + SqlString(strList.at(3)) + "',"; //article_title
|
||||
strQuery += "'" + strList.at(7) + "',"; //article_url
|
||||
strQuery += "'" + strList.at(0) + "',"; //article_id
|
||||
QString str = strList.at(1);
|
||||
str.replace("var isInitial","");
|
||||
str.replace(";","");
|
||||
strQuery += "'" + SqlString(str.trimmed()) + "',"; //article_nickname
|
||||
if (strList.at(16) == "reply")
|
||||
strQuery += "'" + strList.at(10) + "',"; //article_date
|
||||
else
|
||||
strQuery += "'" + strList.at(2) + "',"; //article_date
|
||||
strQuery += "'" + SqlString(strList.at(4)) + "',"; //article_body
|
||||
strQuery += "'" + SqlString(strList.at(11)) + "')"; //article_reply
|
||||
|
||||
if(query.exec(strQuery) == false){ InsertLog(query.lastError().text());return;}
|
||||
}
|
||||
*/
|
||||
db.close();
|
||||
}
|
||||
|
||||
void Widget::on_refresh()
|
||||
{
|
||||
@@ -771,7 +557,6 @@ void Widget::on_refresh()
|
||||
FilterProcssRefresh();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
void Widget::Update()
|
||||
{
|
||||
@@ -830,3 +615,294 @@ void Widget::Update()
|
||||
}
|
||||
*/
|
||||
|
||||
bool Widget::ReloadColumn()
|
||||
{
|
||||
QVector <QStringList> vecColumn;
|
||||
QFile file("column.txt");
|
||||
if (file.open(QIODevice::ReadOnly | QIODevice::Text) == false) return false;
|
||||
{
|
||||
while (!file.atEnd())
|
||||
{
|
||||
QString str = QString(file.readLine());
|
||||
if (str.at(0) == QChar('#')) continue;
|
||||
if (str.trimmed().isEmpty()) continue;
|
||||
vecColumn.push_back(str.split(","));
|
||||
}
|
||||
}
|
||||
if (vecColumn.size() <= 0) return false;
|
||||
|
||||
foreach(QStringList strList,vecColumn)
|
||||
m_listDataBaseColumn.push_back(strList.at(E_COLUMN_DATABASE));
|
||||
|
||||
for(int i = 0; i < m_listDataBaseColumn.size(); i++)
|
||||
{
|
||||
if (m_listDataBaseColumn[i].trimmed() == QString("platform_title")) m_anData[E_DATA_platform_title] = i;
|
||||
if (m_listDataBaseColumn[i].trimmed() == QString("article_form")) m_anData[E_DATA_article_form] = i;
|
||||
if (m_listDataBaseColumn[i].trimmed() == QString("article_parent")) m_anData[E_DATA_article_parent] = i;
|
||||
if (m_listDataBaseColumn[i].trimmed() == QString("article_id")) m_anData[E_DATA_article_id] = i;
|
||||
if (m_listDataBaseColumn[i].trimmed() == QString("article_nickname")) m_anData[E_DATA_article_nickname] = i;
|
||||
if (m_listDataBaseColumn[i].trimmed() == QString("article_title")) m_anData[E_DATA_article_title] = i;
|
||||
if (m_listDataBaseColumn[i].trimmed() == QString("article_data")) m_anData[E_DATA_article_data] = i;
|
||||
if (m_listDataBaseColumn[i].trimmed() == QString("article_url")) m_anData[E_DATA_article_url] = i;
|
||||
if (m_listDataBaseColumn[i].trimmed() == QString("article_hit")) m_anData[E_DATA_article_hit] = i;
|
||||
if (m_listDataBaseColumn[i].trimmed() == QString("article_date")) m_anData[E_DATA_article_date] = i;
|
||||
if (m_listDataBaseColumn[i].trimmed() == QString("article_order")) m_anData[E_DATA_article_order] = i;
|
||||
if (m_listDataBaseColumn[i].trimmed() == QString("platform_id")) m_anData[E_DATA_platform_id] = i;
|
||||
if (m_listDataBaseColumn[i].trimmed() == QString("platform_name")) m_anData[E_DATA_platform_name] = i;
|
||||
if (m_listDataBaseColumn[i].trimmed() == QString("platform_form")) m_anData[E_DATA_platform_form] = i;
|
||||
if (m_listDataBaseColumn[i].trimmed() == QString("reply_url")) m_anData[E_DATA_reply_url] = i;
|
||||
if (m_listDataBaseColumn[i].trimmed() == QString("keyword_id")) m_anData[E_DATA_keyword_id] = i;
|
||||
if (m_listDataBaseColumn[i].trimmed() == QString("article_profileurl")) m_anData[E_DATA_article_profileurl] = i;
|
||||
}
|
||||
|
||||
m_nUrlColumn = m_anData[E_DATA_article_url];
|
||||
m_nDateColumn = m_anData[E_DATA_article_date];
|
||||
m_nOrderColumn = m_anData[E_DATA_article_order];
|
||||
|
||||
m_nDateColumn++;
|
||||
return true;
|
||||
}
|
||||
|
||||
void Widget::DataItemClicked(QListWidgetItem* item)
|
||||
{
|
||||
db.setHostName("bigbird.iptime.org");
|
||||
db.setUserName("admin");
|
||||
db.setPassword("admin123");
|
||||
db.setDatabaseName("concepters");
|
||||
if (db.open() == false)
|
||||
{
|
||||
InsertLog(db.lastError().text());
|
||||
return;
|
||||
}
|
||||
|
||||
QSqlQuery query;
|
||||
QString strSelect;
|
||||
strSelect = "select ";
|
||||
foreach (QString strColumn,m_listDataBaseColumn)
|
||||
strSelect += "CONVERT(" + strColumn + " USING utf8),";
|
||||
strSelect = strSelect.left(strSelect.size() - 1);
|
||||
strSelect += " from ";
|
||||
strSelect += "data_" + item->data(Qt::UserRole).toString();
|
||||
|
||||
InsertLog("Start Loading data_" + item->data(Qt::UserRole).toString());
|
||||
m_strlistOrder.clear();
|
||||
m_mapData.clear();
|
||||
m_vecMap.clear();
|
||||
QString astrWhere[E_ARTICLE_MAX] = {" where article_form = 'body' Order by article_date DESC"," where article_form = 'reply'"};
|
||||
for (int i = 0; i < E_ARTICLE_MAX ; i++)
|
||||
{
|
||||
if(query.exec(QString(strSelect + astrWhere[i]).toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
int nCount = 0;
|
||||
while(query.next())
|
||||
{
|
||||
QStringList strList;
|
||||
for(int j = 0; j < m_listDataBaseColumn.size(); j++)
|
||||
strList << " " + query.value(j).toString() + " ";
|
||||
QString strURL = strList[m_nUrlColumn].trimmed();
|
||||
switch(i)
|
||||
{
|
||||
case E_ARTICLE_BODY:
|
||||
{
|
||||
if (m_mapData.contains(strURL) == false)
|
||||
{
|
||||
if (strList[m_anData[E_DATA_article_date]].trimmed().isEmpty()) continue;
|
||||
if (strList[m_anData[E_DATA_article_id]].trimmed().isEmpty()) continue;
|
||||
if (strList[m_anData[E_DATA_article_nickname]].trimmed().isEmpty()) continue;
|
||||
SBody stBody;
|
||||
stBody.m_nNum = nCount++;
|
||||
stBody.m_dtLast = QDateTime::fromString(strList[m_anData[E_DATA_article_date]].trimmed(),"yyyy-MM-dd HH:mm:ss");
|
||||
stBody.m_bSelect = false;
|
||||
stBody.m_bReplySelect = false;
|
||||
stBody.m_strlist = strList;
|
||||
m_mapData.insert(strURL,stBody);
|
||||
m_strlistOrder.push_back(strURL);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case E_ARTICLE_REPLY:
|
||||
{
|
||||
if (m_mapData.contains(strURL))
|
||||
{
|
||||
SReply stReply;
|
||||
stReply.m_bSelect = false;
|
||||
stReply.m_nOrder = strList[m_nOrderColumn].toInt();
|
||||
stReply.m_strlist = strList;
|
||||
QDateTime dtComp = QDateTime::fromString(strList[m_anData[E_DATA_article_date]].trimmed(),"yyyy-MM-dd HH:mm:ss");
|
||||
if (m_mapData[strURL].m_dtLast < dtComp)
|
||||
m_mapData[strURL].m_dtLast = dtComp;
|
||||
m_mapData[strURL].m_vecReply.insert(stReply.m_nOrder,stReply);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
InsertLog("End Loading");
|
||||
db.close();
|
||||
}
|
||||
|
||||
void Widget::DataMake(int _nCategory)
|
||||
{
|
||||
QMap <QString,int> mapData;
|
||||
|
||||
if (m_bDataFlag[E_ARTICLE_BODY] == true)
|
||||
{
|
||||
foreach(QStringList strList,m_data[E_ARTICLE_BODY])
|
||||
{
|
||||
QString strURL = strList[m_nUrlColumn].trimmed();
|
||||
if (m_mapData.contains(strURL))
|
||||
{
|
||||
m_mapData[strURL].m_bSelect = true;
|
||||
m_mapData[strURL].m_vecCategory.push_back(_nCategory);
|
||||
if (mapData.contains(strURL))
|
||||
mapData[strURL] |= C_MAP_REAL_BODY;
|
||||
else
|
||||
mapData.insert(strURL,C_MAP_REAL_BODY);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (m_bDataFlag[E_ARTICLE_REPLY] == true)
|
||||
{
|
||||
foreach(QStringList strList,m_data[E_ARTICLE_REPLY])
|
||||
{
|
||||
QString strURL = strList[m_nUrlColumn].trimmed();
|
||||
if (m_mapData.contains(strURL))
|
||||
{
|
||||
m_mapData[strURL].m_bReplySelect = true;
|
||||
int nSelect = strList[m_nOrderColumn].trimmed().toInt();
|
||||
if (m_mapData[strURL].m_vecReply.contains(nSelect))
|
||||
{
|
||||
m_mapData[strURL].m_vecReply[nSelect].m_bSelect = true;
|
||||
m_mapData[strURL].m_vecReply[nSelect].m_vecCategory.push_back(_nCategory);
|
||||
if (mapData.contains(strURL))
|
||||
mapData[strURL] |= C_MAP_REAL_REPLY;
|
||||
else
|
||||
mapData.insert(strURL,C_MAP_REAL_REPLY);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach(QString strUrl , m_strlistOrder )
|
||||
{
|
||||
if (mapData.contains(strUrl))
|
||||
{
|
||||
if (mapData.value(strUrl) != 0)
|
||||
{
|
||||
SMap stMap;
|
||||
stMap.m_nBody = m_mapData[strUrl].m_nNum;
|
||||
stMap.m_nCategory = _nCategory;
|
||||
stMap.m_nRealIn = mapData.value(strUrl);
|
||||
stMap.m_strURL = strUrl;
|
||||
m_vecMap.push_back(stMap);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QString Widget::GetVectorToString(QVector <int> _vecCategory,QString _strDelimiter)
|
||||
{
|
||||
QString str;
|
||||
if (_vecCategory.isEmpty()) return QString(" ");
|
||||
foreach (int n , _vecCategory )
|
||||
str += QString::number(n) + _strDelimiter;
|
||||
return str.left(str.length() - _strDelimiter.length());
|
||||
}
|
||||
|
||||
void Widget::DataPut(QString _strCompanyNum)
|
||||
{
|
||||
db.setHostName(D_DB_WEB_HOST);
|
||||
db.setUserName(D_DB_WEB_USER);
|
||||
db.setPassword(D_DB_WEB_PASS);
|
||||
db.setDatabaseName(D_DB_WEB_NAME);
|
||||
if (db.open() == false)
|
||||
{
|
||||
InsertLog(db.lastError().text());
|
||||
return;
|
||||
}
|
||||
|
||||
QSqlQuery query;
|
||||
QString strQuery;
|
||||
strQuery = "delete from body_" + _strCompanyNum;
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
|
||||
strQuery = "delete from reply_" + _strCompanyNum;
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
|
||||
strQuery = "delete from body_category_map_" + _strCompanyNum;
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
|
||||
QString strReplyQuery = QString("insert into reply_" + _strCompanyNum + " (num,id,nickname,parent,data,date,body_num,realbycategorynum) VALUES (:NUM,:ID,:NICKNAME,:PARENT,:DATA,:DATE,:BODY_NUM,:REALBYCATEGORYNUM)").toUtf8();
|
||||
QString strBodyQuery = QString("insert into body_" + _strCompanyNum + " (num,platformname,platformform,platformtitle,id,nickname,title,data,profileurl,url,hit,date,reply_startnum,reply_endnum,lastupdate,realbycategorynum) VALUES (:NUM,:PLATFORMNAME,:PLATFORMFORM,:PLATFORMTITLE,:ID,:NICKNAME,:TITLE,:DATA,:PROFILEURL,:URL,:VIEW,:DATE,:REPLY_STARTNUM,:REPLY_ENDNUM,:LASTUPDATE,:REALBYCATEGORYNUM)").toUtf8();
|
||||
QString strMapQuery = QString("insert into body_category_map_" + _strCompanyNum + " (num,body_num,category_num,realin) VALUES (:NUM,:BODY_NUM,:CATEGORY_NUM,:REALIN)").toUtf8();
|
||||
|
||||
int nReplyCount = 0;
|
||||
foreach(QString strUrl , m_strlistOrder )
|
||||
{
|
||||
int nReplyStart = nReplyCount;
|
||||
foreach(SReply stReply,m_mapData[strUrl].m_vecReply)
|
||||
{
|
||||
query.prepare(strReplyQuery);
|
||||
query.bindValue(":NUM",nReplyCount);
|
||||
query.bindValue(":ID",stReply.m_strlist[m_anData[E_DATA_article_id]].trimmed().toUtf8());
|
||||
query.bindValue(":NICKNAME",stReply.m_strlist[m_anData[E_DATA_article_nickname]].trimmed().toUtf8());
|
||||
query.bindValue(":PARENT",stReply.m_strlist[m_anData[E_DATA_article_parent]].trimmed().toUtf8());
|
||||
query.bindValue(":DATA",SqlString(stReply.m_strlist[m_anData[E_DATA_article_data]].trimmed()).toUtf8());
|
||||
query.bindValue(":DATE",stReply.m_strlist[m_anData[E_DATA_article_date]].trimmed().toUtf8());
|
||||
query.bindValue(":BODY_NUM",m_mapData[strUrl].m_nNum);
|
||||
query.bindValue(":REALBYCATEGORYNUM",GetVectorToString(stReply.m_vecCategory," "));
|
||||
if (query.exec()==false){InsertLog(query.lastError().text());return;}
|
||||
nReplyCount++;
|
||||
}
|
||||
query.prepare(strBodyQuery);
|
||||
query.bindValue(":NUM",m_mapData[strUrl].m_nNum);
|
||||
query.bindValue(":PLATFORMNAME",m_mapData[strUrl].m_strlist[m_anData[E_DATA_platform_name]].trimmed());
|
||||
query.bindValue(":PLATFORMFORM",m_mapData[strUrl].m_strlist[m_anData[E_DATA_platform_form]].trimmed());
|
||||
query.bindValue(":PLATFORMTITLE",SqlString(m_mapData[strUrl].m_strlist[m_anData[E_DATA_platform_title]]).trimmed());
|
||||
query.bindValue(":ID",m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_id]].trimmed());
|
||||
query.bindValue(":NICKNAME",m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_nickname]].trimmed());
|
||||
query.bindValue(":TITLE",SqlString(m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_title]]).trimmed());
|
||||
query.bindValue(":DATA",SqlString(m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_data]]).trimmed());
|
||||
query.bindValue(":PROFILEURL",SqlString(m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_profileurl]]).trimmed());
|
||||
QString strArticleUrl = m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_url]].trimmed();
|
||||
query.bindValue(":URL",strArticleUrl.right(strArticleUrl.length() - QString("http://").length()));
|
||||
if (m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_hit]].trimmed().isEmpty())
|
||||
query.bindValue(":VIEW","-1");
|
||||
else
|
||||
query.bindValue(":VIEW",m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_hit]]);
|
||||
query.bindValue(":DATE",m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_date]].trimmed());
|
||||
if (m_mapData[strUrl].m_vecReply.size() == 0)
|
||||
{
|
||||
query.bindValue(":REPLY_STARTNUM",-1);
|
||||
query.bindValue(":REPLY_ENDNUM",-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
query.bindValue(":REPLY_STARTNUM",nReplyStart);
|
||||
query.bindValue(":REPLY_ENDNUM",nReplyCount-1);
|
||||
}
|
||||
QString strDate = m_mapData[strUrl].m_dtLast.toString("yyyy-MM-dd HH:mm:ss");
|
||||
if (strDate.trimmed().isEmpty())
|
||||
query.bindValue(":LASTUPDATE","1900-01-01 00:00:00");
|
||||
else
|
||||
query.bindValue(":LASTUPDATE",strDate);
|
||||
|
||||
query.bindValue(":REALBYCATEGORYNUM",GetVectorToString(m_mapData[strUrl].m_vecCategory," "));
|
||||
if (query.exec()==false) {InsertLog(query.lastError().text());return; }
|
||||
}
|
||||
query.prepare(strMapQuery);
|
||||
int nCount = 0;
|
||||
foreach(SMap stMap,m_vecMap)
|
||||
{
|
||||
query.bindValue(":NUM",nCount++);
|
||||
query.bindValue(":BODY_NUM",stMap.m_nBody);
|
||||
query.bindValue(":CATEGORY_NUM",stMap.m_nCategory);
|
||||
query.bindValue(":REALIN",stMap.m_nRealIn);
|
||||
if (query.exec()==false)
|
||||
{
|
||||
InsertLog(query.lastError().text());return;
|
||||
}
|
||||
}
|
||||
db.close();
|
||||
}
|
||||
|
||||
103
Filter/widget.h
103
Filter/widget.h
@@ -7,9 +7,37 @@
|
||||
#include <QTimer>
|
||||
#include <QSqlDatabase>
|
||||
#include <QLineEdit>
|
||||
#include <QVector>
|
||||
#include <QDateTime>
|
||||
|
||||
//#include "SGetThread.h"
|
||||
//#include "SPutThread.h"
|
||||
struct SReply
|
||||
{
|
||||
QStringList m_strlist;
|
||||
bool m_bSelect;
|
||||
int m_nOrder;
|
||||
QVector <int> m_vecCategory;
|
||||
};
|
||||
|
||||
struct SBody
|
||||
{
|
||||
int m_nNum;
|
||||
QStringList m_strlist;
|
||||
bool m_bSelect;
|
||||
bool m_bReplySelect;
|
||||
QDateTime m_dtLast;
|
||||
QMap <int,SReply> m_vecReply;
|
||||
QVector <int> m_vecCategory;
|
||||
};
|
||||
|
||||
struct SMap
|
||||
{
|
||||
int m_nBody;
|
||||
int m_nCategory;
|
||||
int m_nRealIn;
|
||||
QString m_strURL;
|
||||
};
|
||||
|
||||
class Widget : public QWidget
|
||||
{
|
||||
@@ -24,8 +52,49 @@ public:
|
||||
E_LIST_COMPANY,
|
||||
E_LIST_CATALOG,
|
||||
E_LIST_MAX
|
||||
};
|
||||
enum E_COLUMN
|
||||
{
|
||||
E_COLUMN_DATABASE=0,
|
||||
E_COLUMN_NAME,
|
||||
E_COLUMN_DATE,
|
||||
E_COLUMN_COUNT,
|
||||
};
|
||||
void Refresh();
|
||||
|
||||
enum E_ARTICLE
|
||||
{
|
||||
E_ARTICLE_BODY = 0,
|
||||
E_ARTICLE_REPLY,
|
||||
E_ARTICLE_MAX,
|
||||
};
|
||||
|
||||
enum E_DATA
|
||||
{
|
||||
E_DATA_platform_title = 0,
|
||||
E_DATA_article_form,
|
||||
E_DATA_article_parent,
|
||||
E_DATA_article_id,
|
||||
E_DATA_article_nickname,
|
||||
E_DATA_article_title,
|
||||
E_DATA_article_data,
|
||||
E_DATA_article_url,
|
||||
E_DATA_article_hit,
|
||||
E_DATA_article_date,
|
||||
E_DATA_article_order,
|
||||
E_DATA_platform_id,
|
||||
E_DATA_platform_name,
|
||||
E_DATA_platform_form,
|
||||
E_DATA_reply_url,
|
||||
E_DATA_keyword_id,
|
||||
E_DATA_article_profileurl,
|
||||
E_DATA_MAX,
|
||||
};
|
||||
|
||||
const int C_MAP_REAL_BODY;
|
||||
const int C_MAP_REAL_REPLY;
|
||||
|
||||
int m_anData[E_DATA_MAX];
|
||||
void Refresh();
|
||||
private:
|
||||
QListWidget *m_plw;
|
||||
QListWidget *m_plwLog;
|
||||
@@ -34,26 +103,40 @@ private:
|
||||
QProgressBar *m_pProg;
|
||||
QTimer m_timer;
|
||||
int m_nMode;
|
||||
QVector <QStringList> m_body_data;
|
||||
QVector <QStringList> m_reply_data;
|
||||
int m_nDateColumn;
|
||||
int m_nUrlColumn;
|
||||
int m_nOrderColumn;
|
||||
QVector <QStringList> m_data[E_ARTICLE_MAX];
|
||||
bool m_bDataFlag[E_ARTICLE_MAX];
|
||||
QStringList m_listDataBaseColumn;
|
||||
QMap <QString,SBody> m_mapData;
|
||||
QVector <SMap> m_vecMap;
|
||||
QStringList m_strlistOrder;
|
||||
QSqlDatabase db;
|
||||
//SGetThread *m_pThread;
|
||||
//SPutThread *m_pPutThread;
|
||||
QSqlDatabase db;
|
||||
void InsertLog(QString str);
|
||||
void FilterProcssRefresh();
|
||||
//QVector <QStringList> m_mainData;
|
||||
void DataGet(QStringList _list);
|
||||
void DataFilter(QStringList _list);
|
||||
void DataPut(QStringList _list);
|
||||
private:
|
||||
void InsertLog(QString str);
|
||||
void FilterProcssRefresh();
|
||||
//void DataGet(QStringList _list);
|
||||
void DataFilter(QString _strFilterGroupID);
|
||||
void DataPut(QString _strCompanyNum);
|
||||
QString GetVectorToString(QVector <int> _vecCategory,QString _strDelimiter);
|
||||
void DataMake(int _nCategory);
|
||||
QString SqlString(QString _str);
|
||||
void FilterDate(QString strJson);
|
||||
void FilterSerach(QString strJson);
|
||||
void FilterLength(QString strJson);
|
||||
void FilterReplace(QString strJson);
|
||||
bool ReloadColumn();
|
||||
void ReloadData();
|
||||
|
||||
private slots:
|
||||
void CompanyItemChanged(QListWidgetItem*,QListWidgetItem* _prev = 0);
|
||||
void on_send();
|
||||
void DataItemClicked(QListWidgetItem*);
|
||||
void on_insert();
|
||||
void on_send();
|
||||
void on_delete();
|
||||
void on_refresh();
|
||||
void Update();
|
||||
|
||||
Reference in New Issue
Block a user