Files
QTradeProgram/Sqbase/qbigordermanager.h

66 lines
1.6 KiB
C
Raw Normal View History

2025-08-15 15:56:40 +08:00
#ifndef QBIGORDERMANAGER_H
#define QBIGORDERMANAGER_H
#include <QObject>
#include <QList>
#include <QMap>
#include <QMutex>
#include <QSharedPointer>
#include <QDateTime>
#include <QFile>
#include <QTimer>
#include <atomic>
#include <BZStruct.h>
class QBigOrderManager : public QObject
{
Q_OBJECT
public:
static QBigOrderManager* instance();
static void destroy();
bool addBigOrder(const BigOrderInfo &order);
QList<QSharedPointer<BigOrderInfo>> getAllBigOrders() const;
QList<QSharedPointer<BigOrderInfo>> getBigOrdersByStock(const QString &stockCode) const;
QList<QSharedPointer<BigOrderInfo>> getBigOrdersByType(const QString &orderType) const;
void setAutoSave(bool enabled);
void setAutoSavePath(const QString &path);
void setAutoSaveInterval(int hours);
QString m_historyPath;
signals:
/*void bigOrderAdded(QSharedPointer<BigOrderItem> &order);
void bigOrdersUpdated();*/
void bigOrderAdded(const BigOrderInfo &order); // 修改参数类型
//void bigOrdersUpdated();
void saveOverRefreshView();
protected:
explicit QBigOrderManager(QObject *parent = nullptr);
~QBigOrderManager();
private:
static std::atomic<QBigOrderManager*> s_instance;
static QMutex s_mutex;
mutable QMutex m_orderMutex;
QList<QSharedPointer<BigOrderInfo>> m_bigOrders;
//QMap<long long,int> m_bigOrderID;
QSet<QString> m_bigOrderID;
QTimer* m_autoSaveTimer;
QString m_autoSavePath;
int m_autoSaveInterval = 5;
bool m_autoSaveEnabled = true;
void saveToFile();
void loadFromFile();
void autoSave();
void cleanupOldData(int maxDays = 30);
};
#endif // QBIGORDERMANAGER_H