From 509cab4025caa96e6b3e3962916b0d8cdadc4b93 Mon Sep 17 00:00:00 2001
From: wumu <mayi@mayi.com>
Date: 星期三, 20 八月 2025 23:35:29 +0800
Subject: [PATCH] 250820

---
 historydata.cpp |   66 +++++++++++++++++++++++++++++++--
 1 files changed, 62 insertions(+), 4 deletions(-)

diff --git a/historydata.cpp b/historydata.cpp
index 2513297..06b11f9 100644
--- a/historydata.cpp
+++ b/historydata.cpp
@@ -38,7 +38,7 @@
     ui->tableView->setSortingEnabled(true);
 
     QStringList labels;
-    labels<<"鑲$エ鍚嶅瓧"<<"鑲$エ浠e彿"<<"甯傚��(浜�)"<<"娑ㄨ穼骞�"<<"鏀剁洏浠�"<<"鎴愪氦棰�(浜�)"<<"鎴愪氦閲�"<<"鎹㈡墜鐜�"<<"PE_TTM";
+    labels<<"鑲$エ鍚嶅瓧"<<"鑲$エ浠e彿"<<"甯傚��(浜�)"<<"娑ㄨ穼骞�"<<"鏀剁洏浠�"<<"鎴愪氦棰�(浜�)"<<"鎴愪氦閲�"<<"鎹㈡墜鐜�"<<"PE_TTM"<<"浜ゆ槗棰濇帓鍚�";
     m_model->setHorizontalHeaderLabels(labels);
 
     initMySQL(); // 鍒濆鍖朚ySQL
@@ -54,7 +54,7 @@
     QVariant var;
     var.setValue(list);
     // 璁剧疆瑕佽闂殑缃戝潃
-    m_request.setUrl(QUrl("https://xueqiu.com/?md5__1038=QqGxcDnDyiitnD05o4%2Br%3Di%3De0KDtYqCDRWOoD"));
+    m_request.setUrl(QUrl("https://xueqiu.com/S/SZ002466"));
     // 璁剧疆璇锋眰澶达紝鐢ㄦ埛浠g悊锛岀敤鏉ユā鎷熸祻瑙堝櫒
     m_request.setHeader(QNetworkRequest::UserAgentHeader,userAgent);
     // 璁剧疆cookie
@@ -320,7 +320,7 @@
 
     QString searchTime = ui->dateEdit->text();
     qDebug()<<"鏌ヨ鐨勬椂闂�:"<<searchTime;
-    QString sql = QString("select name,code,market_capital,percent,close,amount,volume,turnover_rate,pe_ttm from stock_day_info where time_trade = '%1'").arg(searchTime);
+    QString sql = QString("select name,code,market_capital,percent,close,amount,volume,turnover_rate,pe_ttm,amount_rank from stock_day_info where time_trade = '%1'").arg(searchTime);
     qDebug()<<"sql:"<<sql;
 
     m_modelDatas.clear(); // 娓呯┖鏁扮粍涓殑鏁版嵁
@@ -341,8 +341,9 @@
             QString volume = que.value(6).toString();
             QString turnover_rate = que.value(7).toString();
             QString pe_ttm = que.value(8).toString();
+            QString amount_rank = que.value(9).toString();
 
-            m_modelDatas.append({name,code,market_capital,percent,close,amount,volume,turnover_rate,pe_ttm});
+            m_modelDatas.append({name,code,market_capital,percent,close,amount,volume,turnover_rate,pe_ttm,amount_rank});
 
             QList<QStandardItem*> items;
             items.append(new QStandardItem(name));
@@ -366,6 +367,7 @@
             items.append(new QStandardItem(volume));
             items.append(new QStandardItem(turnover_rate));
             items.append(new QStandardItem(pe_ttm));
+            items.append(new QStandardItem(amount_rank));
             m_model->appendRow(items);
             rows++;
         }
@@ -515,3 +517,59 @@
         m_getPoolCloseTimer->stop();
     }
 }
+
+void HistoryData::on_pushButton_updateRank_clicked()
+{
+    // 鍏堣幏鍙栨渶鏂扮殑鏃ユ湡鏇存柊琛紝鎵惧�掓暟绗簩涓棩鏈�
+    // 閫氳繃鍊掓暟绗簩涓棩鏈燂紝鎵惧埌鎵�鏈夎褰曞ぇ浜庤鏃ユ湡鐨勬棩鏈�
+    // 鏍规嵁鎵惧埌鐨勬墍鏈夊ぇ浜庣殑鏃ユ湡锛屾尐涓繘琛屾帓鍚嶅鐞�
+
+    QVector<QString> log_days;
+    QString sql = "select * from days_info";
+    QSqlQuery que(db);
+    if(que.exec(sql)){
+        while (que.next()) {
+            log_days.append(que.value(1).toString());
+        }
+    }else{
+        qDebug()<<"鏌ヨ澶辫触";
+        return ;
+    }
+    qDebug()<<log_days.size()<<log_days.back();
+
+    QString time_trade = "2019-01-01";
+    if(log_days.size() > 1){
+        time_trade = log_days.at(log_days.size() - 2); // 鏈熬鍊掓暟绗簩涓洿鏂�
+        //time_trade = log_days.first(); // 浠庣涓�涓紑濮嬫洿鏂�
+    }
+    qDebug()<<"time_trade:"<<time_trade;
+
+    //  閫氳繃鍊掓暟绗簩涓棩鏈燂紝鎵惧埌鎵�鏈夎褰曞ぇ浜庤鏃ユ湡鐨勬棩鏈�
+    sql = QString("SELECT DISTINCT time_trade FROM stock_day_info WHERE time_trade IS NOT NULL AND time_trade >= '%1' ORDER BY time_trade;").arg(time_trade);
+    qDebug()<<"sql:"<<sql;
+    QVector<QString> rank_days; // 瑕佹帓鍚嶇殑鏃ユ湡
+    //QSqlQuery que(db);
+    if(que.exec(sql)){
+        while (que.next()) {
+            rank_days.append(que.value(0).toString());
+        }
+    }else{
+        qDebug()<<"鏌ヨ澶辫触";
+        return ;
+    }
+    qDebug()<<"rank_days size:"<<rank_days.size()<<rank_days.first()<<rank_days.back();
+
+    // 鏍规嵁鎵惧埌鐨勬墍鏈夊ぇ浜庣殑鏃ユ湡锛屾尐涓繘琛屾帓鍚嶅鐞�
+    for(int i=0;i<rank_days.size();++i){
+        sql = QString("SET @rank := 0; SET @trade_date := '%1'; UPDATE stock_day_info c JOIN ( SELECT id, @rank := @rank + 1 AS rank FROM stock_day_info WHERE time_trade = @trade_date ORDER BY amount DESC ) d ON c.id = d.id SET c.amount_rank = d.rank WHERE c.time_trade = @trade_date;").arg(rank_days.at(i));
+        qDebug()<<QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz")<<sql;
+        if(que.exec(sql)){
+            qDebug()<<"sql update ok"<<QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz");
+        }else{
+            qDebug()<<"鏌ヨ澶辫触";
+            break ;
+        }
+    }
+    qDebug()<<"鏇存柊鎺掑悕瀹屾垚浜�";
+
+}

--
Gitblit v1.8.0