/**
* @brief
  websocket公共头文件

* @version
  V 1.0.0

* @author
  王益俊

* @date
  创建时间:  2018-08-17\n

* @note
  2018-08-17  初次创建。\n

* @warning

* @bug
  
*/

#ifndef _WS_COMMON_INC_H_
#define _WS_COMMON_INC_H_
#include <map>
namespace YA
{
	const int MIN_SEND_INTERVAL = 1;//最小发送时间间隔

	/**
	* @brief
	线程配置结构体。
	*/
	struct _THREAD_CONFIG_
	{
		int SendInterval;//发送间隔(单位:秒)
		void Clear()
		{
			SendInterval = 0;
		}
		_THREAD_CONFIG_()
		{
			Clear();
		}
	};

	/**
	* @brief
	基础卡信息结构体。
	*/
	struct _BASE_CARD_
	{
		int Type;//卡类型
		int ID;//卡ID
		double x;//x坐标
		double y;//y坐标
		double z;//z坐标
		double down_time;//入井时间戳
		double enter_area_time;//进入区域时间戳
		double rec_time;//最后接收时间戳
		double work_time;//工作时长
		int map_id;//地图编号
		int area_id;//区域ID
		int dept_id;//部门编号
		int stat;//状态
		int running_stat;//运行状态
		int biz_stat;//业务状态
		double speed;//速度
		_BASE_CARD_()
		{
			Type            = 0;
			ID              = 0;
			x               = 0;
			y               = 0;
			z               = 0;
			down_time       = 0;
			enter_area_time = 0;
			rec_time        = 0;
			work_time       = 0;
			map_id          = 0;
			area_id         = 0;
			dept_id         = 0;
			stat            = 0;
			running_stat    = 0;
			biz_stat        = 0;
			speed           = 0.0;
		}
	};

	/**
	* @brief
	卡位置结构体。
	*/
	struct _CARD_POS_ : public _BASE_CARD_
	{
		std::map<int,std::tuple<int,int,int,double,uint64_t>> area_info;
		int landmark_id;//地标编号
		int lm_direction;//地标方向
		int landmark_dis;//距离地标的距离
		int level_id;//级别编号
		int is_on_duty;//车辆是否是当天出勤的标识(1:出勤,0:不出勤)
		int display;//是否显示(1:显示,0:不显示)
		void Clear()
		{
			landmark_id  = 0;
			lm_direction = 0;
			landmark_dis = 0;
			level_id     = 0;
			is_on_duty   = 0;
			display      = 1;//默认显示
		}
		_CARD_POS_()
		{
			Clear();
		}
	};

	/**
	* @brief
	统计部门结构体。
	*/
	struct _STAT_DEPT_ITEM_
	{
		int DeptID;//部门ID
		std::map<int, int> Area;//区域数量列表(key是区域ID,value是区域里的卡数)
		std::map<int, int> Dept;//部门数量列表(key是区域ID,value是部门里的卡数)
		std::map<int, int> OcptLvl;//职务级别数量列表(key是区域ID,value是职务级别里的卡数)
		int Sum;//卡总数
		_STAT_DEPT_ITEM_()
		{
			DeptID = 0;
			Sum    = 0;
		}
	};
}

#endif
