Files
CalibratorLauncher/procedure/proceduremanager.h
2026-01-02 19:20:35 +09:00

59 lines
1.8 KiB
C++

#ifndef PROCEDUREMANAGER_H
#define PROCEDUREMANAGER_H
#include <QObject>
#include <QVector>
#include <QMap>
#include "proceduredata.h"
class ProcedureManager : public QObject
{
Q_OBJECT
public:
explicit ProcedureManager(QObject *parent = nullptr);
~ProcedureManager();
// 加载规程列表
QVector<ProcedureSummary> loadProcedureList(const QString &directory);
// 搜索规程
QVector<ProcedureSummary> searchProcedures(const QString &keyword);
// 加载规程详情
ProcedureData loadProcedure(const QString &procedureId);
// 设置工单号
void setWorkOrderId(const QString &workOrderId);
QString workOrderId() const { return m_workOrderId; }
// 步骤操作
bool confirmStep(const QString &procedureId, const QString &stepId);
bool cancelStepConfirm(const QString &procedureId, const QString &stepId, const QString &reason);
bool executeAutoStep(const QString &procedureId, const QString &stepId);
// 获取表格数据
TableData getTableData(const QString &procedureId, const QString &tableId);
bool updateTableData(const QString &procedureId, const QString &tableId, const QVector<QVariantMap> &rows);
signals:
void procedureLoaded(const ProcedureData &procedure);
void stepStatusChanged(const QString &stepId, StepStatus status);
void tableDataUpdated(const QString &tableId);
private:
ProcedureData parseProcedureYaml(const QString &filePath);
void createSampleProcedures();
void createMockExceptionData();
ProcedureData loadMockProcedureFromJson(const QString &procedureId);
StepType parseStepType(const QString &typeStr);
StepStatus parseStepStatus(const QString &statusStr);
QString m_workOrderId;
QString m_procedureDirectory;
QVector<ProcedureSummary> m_procedureList;
QMap<QString, ProcedureData> m_loadedProcedures;
};
#endif // PROCEDUREMANAGER_H