From 5f8a4c8d12855caa8d06cfcc5caa5a0601563710 Mon Sep 17 00:00:00 2001
From: wumu <mayi@mayi.com>
Date: 星期四, 30 十月 2025 00:12:13 +0800
Subject: [PATCH] 251030
---
positionmanagement.cpp | 267 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 265 insertions(+), 2 deletions(-)
diff --git a/positionmanagement.cpp b/positionmanagement.cpp
index 3b76da8..cf69af3 100644
--- a/positionmanagement.cpp
+++ b/positionmanagement.cpp
@@ -1,5 +1,13 @@
锘�#include "positionmanagement.h"
#include "ui_positionmanagement.h"
+#include <QVBoxLayout>
+#include <QLineEdit>
+#include <QPushButton>
+#include <QComboBox>
+#include <QDebug>
+#include <QMessageBox>
+#include <QDateTime>
+#include <QMessageBox>
PositionManagement::PositionManagement(QWidget *parent):
QMainWindow(parent),
@@ -12,8 +20,9 @@
m_modelMid = new QStandardItemModel(this);
m_modelLong = new QStandardItemModel(this);
- QStringList labels;
- labels<<"id"<<"鑲$エ"<<"code"<<"鍏ユ睜鏃堕棿"<<"鍏ユ睜浠锋牸"<<"璐拱鏃堕棿"<<"璐拱浠锋牸"<<"鍏ユ睜鏀剁泭"<<"璐拱鏀剁泭"<<"绫诲瀷";
+ QStringList labels; // 14鍒�
+ labels<<"id"<<"鑲$エ"<<"code"<<"鍏ユ睜鏃堕棿"<<"鍏ユ睜浠锋牸"<<"璐拱鏃堕棿"<<"璐拱浠锋牸"
+ <<"鍗栧嚭鏃堕棿"<<"鍗栧嚭浠锋牸"<<"鍏ユ睜鏀剁泭"<<"涔板叆鏀剁泭"<<"鍗栧嚭鏀剁泭"<<"绫诲瀷"<<"鐘舵��"<<"褰撳墠浠锋牸";
m_modelAll->setHorizontalHeaderLabels(labels);
m_modelShort->setHorizontalHeaderLabels(labels);
@@ -24,9 +33,263 @@
ui->tableView_short->setModel(m_modelShort);
ui->tableView_mid->setModel(m_modelMid);
ui->tableView_long->setModel(m_modelLong);
+
+ // 鍒濆鍖栨暟鎹簱
+ initMySQL();
+
+ // 娣诲姞鑲$エ淇℃伅鐩稿叧
+ m_addDlg = new QDialog(this);
+ m_addDlg->setWindowTitle("娣诲姞鑲$エ鍒颁粨浣嶆睜");
+ QVBoxLayout *vb = new QVBoxLayout(m_addDlg);
+ QStringList placetext;
+ placetext<<"杈撳叆鑲$エ鍚嶅瓧"<<"杈撳叆鑲$エ浠e彿"<<"杈撳叆浠锋牸";
+ for(int i=0;i<3;++i){
+ QLineEdit *lt = new QLineEdit(this);
+ lt->setPlaceholderText(placetext.at(i));
+ vb->addWidget(lt);
+ m_lineEdits.append(lt);
+ }
+
+ QComboBox *comBox = new QComboBox(this);
+ comBox->addItem("鐭嚎");
+ comBox->addItem("涓嚎");
+ comBox->addItem("闀跨嚎");
+ vb->addWidget(comBox);
+
+ QPushButton *addBtn = new QPushButton("娣诲姞",this);
+ vb->addWidget(addBtn);
+
+ // 浣跨敤鍖垮悕鍑芥暟鏉ュ疄鐜版Ы
+ connect(addBtn,&QPushButton::clicked,this,[=]{
+ QString name = m_lineEdits.at(0)->text();
+ QString code = m_lineEdits.at(1)->text();
+ QString price = m_lineEdits.at(2)->text();
+ QString type = comBox->currentText();
+ qDebug()<<name<<code<<price<<type;
+ QString cur_time = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
+
+ QString sql = QString("insert into position_pool (name,code,time_in,price_in,type,cur_price) values ('%1','%2','%3',%4,'%5',%6)")
+ .arg(name).arg(code).arg(cur_time).arg(price).arg(type).arg(price);
+ qDebug()<<"娣诲姞鑲$エ鐨剆ql:"<<sql;
+
+ QSqlQuery que(db);
+
+ if(que.exec(sql)){
+ qDebug()<<"insert ok";
+ QMessageBox::information(m_addDlg,"娣诲姞鎴愬姛",name+" "+price);
+
+ }else{
+ qDebug()<<"insert fail"<<que.lastError().text();
+ QMessageBox::information(m_addDlg,"娣诲姞澶辫触",name+" "+que.lastError().text());
+ }
+
+ });
+
+ // 鍙冲嚮鑿滃崟: 鍑嗗濂借彍鍗�--缁欑洰鏍囧璞¤缃彍鍗曠瓥鐣ヤ负鑷畾涔変笂涓嬫枃鑿滃崟--杩炴帴淇″彿妲�
+ m_menu = new QMenu(this);
+ m_menu->addAction("鏌ヨ鏈�鏂颁环鏍�");
+ m_menu->addAction("涔板叆褰撳墠鑲$エ");
+ m_menu->addAction("鍗栧嚭褰撳墠鑲$エ");
+
+ // 杩炴帴鑿滃崟鍔ㄤ綔鍜屾Ы
+ connect(m_menu->actions().at(0),SIGNAL(triggered(bool)),this,SLOT(searchPriceAction()));
+ connect(m_menu->actions().at(1),SIGNAL(triggered(bool)),this,SLOT(buyStockAction()));
+ connect(m_menu->actions().at(2),SIGNAL(triggered(bool)),this,SLOT(saleStockAction()));
+
+
+ this->setContextMenuPolicy(Qt::CustomContextMenu); // 璁惧畾鑿滃崟绛栫暐
+ ui->tableView_all->setContextMenuPolicy(Qt::CustomContextMenu);
+ ui->tableView_short->setContextMenuPolicy(Qt::CustomContextMenu);
+ ui->tableView_mid->setContextMenuPolicy(Qt::CustomContextMenu);
+ ui->tableView_long->setContextMenuPolicy(Qt::CustomContextMenu);
+
+ // 鍜岀獥鍙h繛鎺ワ紝鍦ㄦ暣涓獥鍙d腑閮藉彲浠ュ彸鍑绘樉绀鸿彍鍗�
+// connect(this,&PositionManagement::customContextMenuRequested,this,[=](QPoint p){
+// //m_menu->exec(QCursor::pos()); // 鏂瑰紡1
+// //m_menu->exec(this->mapToGlobal(p)); // 鏂瑰紡2,濡傛灉鏄瓙閮ㄤ欢锛屽鏄撳潗鏍囧亸绉�
+// m_menu->popup(QCursor::pos()); // 鎹竴涓柟寮�3 涔熷彲浠�
+// });
+
+ // 鍜屾瘡涓鍥捐繛鎺ワ紝鍙湪瑙嗗浘涓樉绀鸿彍鍗�
+ connect(ui->tableView_all,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(showMenu(QPoint)));
+ connect(ui->tableView_short,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(showMenu(QPoint)));
+ connect(ui->tableView_mid,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(showMenu(QPoint)));
+ connect(ui->tableView_long,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(showMenu(QPoint)));
+
+
+
}
PositionManagement::~PositionManagement()
{
delete ui;
}
+
+void PositionManagement::initMySQL()
+{
+ //娣诲姞涓�涓暟鎹簱
+ db=QSqlDatabase::addDatabase("QMYSQL"); //鎷彿鍐呰鍐欏嚭鏁版嵁搴撶殑绫诲瀷
+ //璁剧疆鏁版嵁搴�
+ db.setHostName("127.0.0.1"); //璁剧疆鏁版嵁搴撶殑涓绘満ip
+ //璁剧疆鏁版嵁搴撶殑鐢ㄦ埛鍚�
+ db.setUserName("root");
+ //璁剧疆鏁版嵁搴撶殑瀵嗙爜
+ db.setPassword("root"); //杩欎釜灏辨槸瀹夎MySQL鏃惰缃殑瀵嗙爜
+ //璁剧疆鏁版嵁搴撶殑鍚嶅瓧
+ db.setDatabaseName("stock_plan");
+ //鎵撳紑鏁版嵁搴擄紙宸茬粡瀹夎杩噈ysql椹卞姩浜嗭級
+ if(db.open()==false){
+ QMessageBox::warning(this,"waring",db.lastError().text());
+ }else{
+ qDebug()<<"mysql conn ok";
+ }
+}
+
+void PositionManagement::on_pushButton_add_clicked()
+{
+ m_addDlg->show();
+}
+
+void PositionManagement::on_pushButton_refresh_clicked()
+{
+ m_modelAll->setRowCount(0);
+ m_modelShort->setRowCount(0);
+ m_modelMid->setRowCount(0);
+ m_modelLong->setRowCount(0);
+
+
+ QString sql = "select * from position_pool";
+ QSqlQuery que(db);
+ if(que.exec(sql)){
+ qDebug()<<"鏌ヨ鎴愬姛";
+
+ qDebug()<<"size:"<<que.size();
+ while (que.next()) {
+ QList<QStandardItem*> items;
+ QList<QStandardItem*> items_short;
+ QList<QStandardItem*> items_mid;
+ QList<QStandardItem*> items_long;
+ for(int i=0;i<15;++i){
+ qDebug()<<i<<que.value(i).toString();
+ items.append(new QStandardItem(que.value(i).toString()));
+ items_short.append(new QStandardItem(que.value(i).toString()));
+ items_mid.append(new QStandardItem(que.value(i).toString()));
+ items_long.append(new QStandardItem(que.value(i).toString()));
+
+ }
+ m_modelAll->appendRow(items);
+ if(items.at(12)->text() == "鐭嚎"){
+ m_modelShort->appendRow(items_short);
+ }else if(items.at(12)->text() == "涓嚎"){
+ m_modelMid->appendRow(items_mid);
+ }else{
+ m_modelLong->appendRow(items_long);
+ }
+ }
+
+ }else{
+ qDebug()<<"鏌ヨ澶辫触";
+ }
+}
+
+void PositionManagement::showMenu(QPoint p)
+{
+ m_curPoint = p; // 璁板綍褰撳墠鍧愭爣--瀛愰儴浠跺唴鐨勫潗鏍囷紝鍒氬ソ鍙敤锛屼笉鐢ㄥ啀杞崲浜�
+ m_curView = (QTableView*)sender(); // 璁板綍琚偣鍑荤殑瑙嗗浘锛岀敤鏉ュ彇绱㈠紩--妯″瀷--鏁版嵁
+// qDebug()<<sender()<<p;
+// qDebug()<<"鏄剧ず鍙冲嚮鑿滃崟";
+// m_menu->exec(this->mapFromGlobal(p)); // 鏂瑰紡1,瀹规槗鍧愭爣璺戝亸锛岀壒鍒槸瀛愰儴浠舵樉绀鸿彍鍗曟椂
+ m_menu->exec(QCursor::pos());
+
+
+
+}
+
+void PositionManagement::searchPriceAction()
+{
+ qDebug()<<"鏌ヨ鏈�鏂颁环鏍�"<<sender();
+
+}
+
+void PositionManagement::buyStockAction()
+{
+ qDebug()<<"涔板叆褰撳墠鑲$エ";
+ // 鍒ゆ柇褰撳墠浣嶇疆鏄惁涓洪�変腑鐨勬湁鏁堝唴瀹硅锛岀劧鍚庢寜褰撳墠浠锋牸涔板叆鍗冲彲锛屽簲璇ユ嬁鍒版渶鏂颁环涔板崠
+ // 涓�瀹氳鍏堝垽鏂姸鎬佹槸鍚︿负瑙傚療锛氳瀵熺殑璇�--褰撳墠琛屼拱鍏ワ紝淇敼璁板綍鍗冲彲锛涘鏋滄槸宸茬粡涔板叆鎴栧崠鍑虹殑鐘舵�侊紝鍐嶆坊鍔犱竴鏉℃柊鐨勪拱鍏ヨ褰�
+
+ QModelIndex index = m_curView->indexAt(m_curPoint);
+ if(index.row() == -1) return; // 闃叉寮傚父
+
+ QStandardItemModel * curModel = (QStandardItemModel*)index.model();
+ int row = index.row();
+ QString id = curModel->item(row,0)->text();
+ QString name = curModel->item(row,1)->text();
+ QString code = curModel->item(row,2)->text();
+ QString price = curModel->item(row,14)->text();
+ QString state = curModel->item(row,13)->text();
+ qDebug()<<id<<name<<code<<price<<"state:"<<state;
+
+ if(state.toInt() == 1){
+ // 鏇存柊褰撳墠鍗冲彲,閫氳繃id鏉ュ姣斿鐞嗗嵆鍙洿鏂�
+ QString buy_time = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
+ QString sql = QString("update position_pool set time_buy='%1',price_buy=%2,state=%4 where id=%3")
+ .arg(buy_time).arg(price).arg(id).arg("2");
+
+ qDebug()<<"buy sql:"<<sql;
+
+ QSqlQuery que(db);
+ if(que.exec(sql)){
+ qDebug()<<"buy 鎴愬姛:"<<name<<price;
+ on_pushButton_refresh_clicked(); // 鍒锋柊鑲$エ姹�
+ }else{
+ qDebug()<<"buy 澶辫触:"<<name<<price;
+ }
+
+ }else{
+ // 鍒涘缓鏂扮殑璁板綍锛屾妸褰撳墠浠锋牸鍜屾椂闂磋缃负鍏ユ睜銆佷拱鍏ョ浉搴旂殑浠锋牸鍜屾椂闂�
+ }
+
+}
+
+void PositionManagement::saleStockAction()
+{
+ qDebug()<<"鍗栧嚭褰撳墠鑲$エ";
+ // 鍒ゆ柇褰撳墠浣嶇疆鏄惁涓洪�変腑鐨勬湁鏁堝唴瀹硅锛岀劧鍚庢寜褰撳墠浠锋牸鍗栧嚭鍗冲彲锛屽簲璇ユ嬁鍒版渶鏂颁环涔板崠
+ // 涓�瀹氳鍏堝垽鏂嚭鐩墠鏄拱鍏ユ寔浠撶殑鐘舵�侊紝鍚﹀垯鍗栧嚭澶辫触
+
+ QModelIndex index = m_curView->indexAt(m_curPoint);
+ if(index.row() == -1) return; // 闃叉寮傚父
+
+ QStandardItemModel * curModel = (QStandardItemModel*)index.model();
+ int row = index.row();
+ QString id = curModel->item(row,0)->text();
+ QString name = curModel->item(row,1)->text();
+ QString code = curModel->item(row,2)->text();
+ QString price = curModel->item(row,14)->text();
+ QString state = curModel->item(row,13)->text();
+ QString buy_price = curModel->item(row,6)->text();
+ qDebug()<<id<<name<<code<<price<<"state:"<<state;
+
+ if(state.toInt() == 2){
+ // 鏇存柊褰撳墠鍗冲彲,閫氳繃id鏉ュ姣斿鐞嗗嵆鍙洿鏂�
+ QString sell_time = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
+ double rate = (price.toDouble() / buy_price.toDouble() - 1.0)*100; // 璁$畻鍗栧嚭鐩堝埄姣�
+ QString sql = QString("update position_pool set time_sale='%1',price_sale=%2,state=%4,rate_sale=%7 where id=%3")
+ .arg(sell_time).arg(price).arg(id).arg("3").arg(QString::number(rate));
+
+ qDebug()<<"sell sql:"<<sql;
+
+ QSqlQuery que(db);
+ if(que.exec(sql)){
+ qDebug()<<"sell 鎴愬姛:"<<name<<price;
+ on_pushButton_refresh_clicked(); // 鍒锋柊鑲$エ姹�
+ QMessageBox::information(this,"鍗栧嚭鎴愬姛",name+" 鐩堝埄鐧惧垎姣�:"+QString::number(rate));
+ }else{
+ qDebug()<<"sell 澶辫触:"<<name<<price;
+ }
+
+ }else{
+ qDebug()<<"涓嶉�傚悎鍗栧嚭,娌℃湁鎸佷粨";
+ QMessageBox::information(this,"鍗栧嚭澶辫触","鏃犳寔浠擄紝涓嶈兘鍗栧嚭");
+ }
+}
--
Gitblit v1.8.0