From f7bac9ae57c7b87f10faa286a85ec34333ade98f Mon Sep 17 00:00:00 2001 From: admin Date: Tue, 3 Feb 2015 08:03:16 +0000 Subject: [PATCH] git-svn-id: svn://192.168.0.12/source@16 8346c931-da38-4b9b-9d4c-e48b93cbd075 --- Filter/widget.cpp | 211 ++++++++++++++++++++++++++++++++++++++-------- Filter/widget.h | 5 +- 2 files changed, 181 insertions(+), 35 deletions(-) diff --git a/Filter/widget.cpp b/Filter/widget.cpp index efa9646..85fed6b 100644 --- a/Filter/widget.cpp +++ b/Filter/widget.cpp @@ -251,10 +251,11 @@ void Widget::on_insert() list.append(m_pleCycle->text()); InsertLog("Run (" + list.at(2) + "," + list.at(4) + ") -> (" + list.at(6) + "," + list.at(7) +")" ); InsertLog("Data Get ..." ); - m_mainData.clear(); + m_body_data.clear(); + m_reply_data.clear(); DataGet(list); InsertLog("Data Filter ..." ); - DataFilter(list); + //DataFilter(list); InsertLog("Data Put ..." ); DataPut(list); InsertLog("Finish"); @@ -324,7 +325,8 @@ void Widget::FilterProcssRefresh() QString Widget::SqlString(QString _str) { _str.replace("\\","\\\\"); - _str.replace("'",""); + _str.replace("'","\\'"); + _str.replace("\"","\\\""); _str.replace(",","\\,"); return _str; } @@ -391,35 +393,69 @@ void Widget::DataGet(QStringList _list) QString strSelect; strSelect = "select "; - strSelect += "CONVERT(body_articleid USING utf8),"; - strSelect += "CONVERT(body_nickname USING utf8),"; - strSelect += "CONVERT(body_date USING utf8),"; - strSelect += "CONVERT(body_articletitle USING utf8),"; - strSelect += "CONVERT(body_data USING utf8),"; - strSelect += "CONVERT(body_platformid USING utf8),"; - strSelect += "CONVERT(body_platformtitle USING utf8),"; - strSelect += "CONVERT(url USING utf8),"; - strSelect += "CONVERT(reply_nickname USING utf8),"; - strSelect += "CONVERT(reply_parent USING utf8),"; - strSelect += "CONVERT(reply_date USING utf8),"; - strSelect += "CONVERT(reply_data USING utf8),"; - strSelect += "CONVERT(reply_urlreply USING utf8),"; - strSelect += "CONVERT(keyword_id USING utf8),"; - strSelect += "CONVERT(platformname USING utf8),"; - strSelect += "CONVERT(platformform USING utf8),"; - strSelect += "CONVERT(articleform USING utf8),"; - strSelect += "CONVERT(reply_rownum USING utf8)"; + 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 += " Order by body_date"; + 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; - for(int i = 0; i < 18; i++) + if (query.value(3).toString().isEmpty()) continue; + for(int i = 0; i < 10; i++) strList << " " + query.value(i).toString() + " "; - m_mainData.append(strList); + 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(); } @@ -435,7 +471,7 @@ void Widget::FilterDate(int _nCategory,QDate _dateStart,QDate _dateEnd) } QVector copyData; - foreach(QStringList strList , m_mainData) + foreach(QStringList strList , m_body_data) { bool bFlag = false; QString strTime = strList.at(nColumn).trimmed(); @@ -450,8 +486,8 @@ void Widget::FilterDate(int _nCategory,QDate _dateStart,QDate _dateEnd) if (bFlag) copyData.push_back(strList); } - m_mainData.clear(); - m_mainData = copyData; + m_body_data.clear(); + m_body_data = copyData; } void Widget::FilterSeracher(int _nCatalog,int _nMethod , int _nKeyword , QString _strSearch) @@ -464,7 +500,7 @@ void Widget::FilterSeracher(int _nCatalog,int _nMethod , int _nKeyword , QString } QVector copyData; - foreach(QStringList strList , m_mainData) + foreach(QStringList strList , m_body_data) { bool bFlag = false; QString strData = strList.at(_nCatalog); @@ -502,8 +538,8 @@ void Widget::FilterSeracher(int _nCatalog,int _nMethod , int _nKeyword , QString } if (bFlag) copyData.push_back(strList); } - m_mainData.clear(); - m_mainData = copyData; + m_body_data.clear(); + m_body_data = copyData; } void Widget::DataFilter(QStringList _list) @@ -521,8 +557,7 @@ void Widget::DataFilter(QStringList _list) QSqlQuery query; if(query.exec(sql) == false) { InsertLog(query.lastError().text());return;} while (query.next()) - { - QString str; + { switch(query.value(1).toInt()) { case 0://Date @@ -549,7 +584,115 @@ void Widget::DataPut(QStringList _list) } 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()); @@ -561,7 +704,7 @@ void Widget::DataPut(QStringList _list) "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_mainData) + foreach(QStringList strList , m_body_data) { for (int i = 0; i < strList.size(); i++) strList[i] = strList[i].trimmed(); @@ -590,6 +733,7 @@ void Widget::DataPut(QStringList _list) if(query.exec(strQuery) == false){ InsertLog(query.lastError().text());return;} } + */ db.close(); } @@ -657,3 +801,4 @@ void Widget::Update() } } */ + diff --git a/Filter/widget.h b/Filter/widget.h index 9c89a48..ea7058d 100644 --- a/Filter/widget.h +++ b/Filter/widget.h @@ -34,13 +34,14 @@ private: QProgressBar *m_pProg; QTimer m_timer; int m_nMode; - QVector m_data; + QVector m_body_data; + QVector m_reply_data; //SGetThread *m_pThread; //SPutThread *m_pPutThread; QSqlDatabase db; void InsertLog(QString str); void FilterProcssRefresh(); - QVector m_mainData; + //QVector m_mainData; void DataGet(QStringList _list); void DataFilter(QStringList _list); void DataPut(QStringList _list);