#ifndef SRUNPROCESS #define SRUNPROCESS #include #include #include #include "sutilclass.h" class QTimer; class QProcess; //enum class E_RUN_MODE; class SRunProcess:public QObject { Q_OBJECT enum class E_LIST_MODE:unsigned short { MODE_COMPANY = 0, MODE_ERROR }; enum class E_INNER_RUN_MODE:unsigned short; public: explicit SRunProcess(); ~SRunProcess(); void setList(const QVector& _runList); void setList(QVector&& _runList); void setList(const QVector& _errorList); void setList(QVector&& _errorList); bool isRunning(); SRunProcess& operator=(const SRunProcess& other) = delete; SRunProcess(const SRunProcess& other) = delete; template void start(QVector&& _list); SError gerError(); public slots: void stop(); void start(); SReportSummary getReportSummary(); QVector getErrorList(); private slots: void update(); signals: void signalTerminateAllCompany(); void signalTerminateCompany(); void signalTerminateError(); void signalTerminateAllError(); void signalUserAbort(); void signalError(); private: void init(); void initDatabase(); void run(); void updateCompany(); void updateError(); void processError(SError&& _error); void processError(const SError& _error); void runInitCompany(); void runInitError(); void runEventcodeCompany(); void runEventcodeError(); void runFinishEventcode(); void userAbort(); void setInnerMode(E_INNER_RUN_MODE _inner_mode); private: std::unique_ptr m_pTimer; std::unique_ptr m_pProcess; QVector m_vecRunList; QVector m_vecErrorList; QVector m_vecRunOrderList; QMap> m_mapEffectRow; E_RUN_MODE m_eRunMode; E_LIST_MODE m_eListMode; E_INNER_RUN_MODE m_eInnerRunMode; SError m_errError; bool m_bRun; }; #endif // SRUNPROCESS