//
// Created by zx on 2019/12/28.
//

#ifndef TASK_COMAND_MANAGER_H
#define TASK_COMAND_MANAGER_H
#include <string>
#include "../error_code/error_code.h"

//任务类型
enum Task_type
{
    LASER_TASK=0,           //雷达扫描任务
    LOCATE_TASK,            //测量任务
    PLC_TASK,                //上传PLC任务
    WJ_TASK,
    UNKNOW_TASK             //未知任务单/初始化
};
//任务状态，如果任务故障，任务状态改为TASK_OVER，然后在m_task_error_manager 补充错误码。
enum Task_statu
{
    TASK_CREATED            =0,             //创建状态，默认值
    TASK_SIGNED             =1,             //已签收
    TASK_WORKING            =2,             //处理中
    TASK_OVER               =3,             //已结束
};

//任务单基类
class Task_Base
{
public:
    virtual ~Task_Base();
    //初始化任务单,初始任务单类型为 UNKONW_TASK
    virtual Error_manager init();
    //更新任务单
    //task_statu: 任务状态
    //statu_information:状态说明
    Error_manager update_statu(Task_statu task_statu,std::string statu_information="");
    //获取任务类型
    Task_type   get_task_type();
    //获取任务单状态
    Task_statu  get_statu();
    //获取状态说明
    std::string get_statu_information();
	//获取 错误码
	Error_manager& get_task_error_manager();
	//设置 错误码
	void set_task_error_manager(Error_manager & error_manager);
protected:
    Task_Base();
protected:
    Task_type                   m_task_type;					//任务类型
    Task_statu                  m_task_statu;					//任务状态
    std::string					m_task_statu_information;		//任务状态说明
	//错误码，任务故障信息，任务输出
	Error_manager               m_task_error_manager;
};

#endif //TASK_COMAND_MANAGER_H
