123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- #ifndef _CARD_HPP_
- #define _CARD_HPP_
- #include <message.h>
- #include <ev++.h>
- #include "point.h"
- #include "ant.h"
- #include "write-copy.h"
- #include "websocket/ws_common.h"
- #include "common.h"
- #include "area.h"
- #include "mine.h"
- #include "site_area.h"
- #define CARD_LOST_TIME_OUT (30*1000)
- struct task;
- template<typename T> struct zloop;
- struct select_tool;
- struct smooth_tool;
- struct monkey_person;
- struct card_message_handle;
- struct card:point
- {
- card(uint32_t id,uint16_t dis,int16_t type,int32_t deptid)
- :m_id(id)
- ,m_type(type)
- ,m_display(dis)
- ,m_speed(0)
- ,m_is_attendance(0)
- ,m_stat(0)
- ,m_ct(0)
- ,m_time(0)
- ,m_deptid(deptid)
- {}
- uint32_t m_id; //卡号
- int16_t m_type; //类型
- uint16_t m_display; //1显示0不显示,往前端推送
- double m_speed; //速度
- int m_is_attendance; //井上井下状态 0初始状态 1 井上 2 井下
- int m_stat; //运动静止状态
- uint16_t m_ct; //ct
- ///时间戳 ms
- uint64_t m_time;
- int32_t m_deptid; //部门编号
- };
- struct card_location_base:card
- {
- std::unique_ptr<select_tool> m_sel_tool;
- std::unique_ptr<smooth_tool> m_smo_tool;
- card_message_handle *m_message_handle=nullptr;
- ev::dynamic_loop * m_loop = nullptr;
- ev::timer m_timer;
- card_location_base()=default;
- card_location_base(std::string type,uint32_t id,uint16_t dis,int16_t t,int32_t );
- virtual void do_business(const point &pt)=0;
- virtual void set(ev::dynamic_loop * loop)=0;
- virtual void site_hover(int sid)=0;
- virtual std::shared_ptr<area_hover> get_area_hover()=0;
- virtual std::shared_ptr<mine_tool> get_mine_tool()=0;
- virtual std::shared_ptr<site_area_hover> get_site_area()=0;
- virtual void clear();
- virtual void reset(std::shared_ptr<monkey_person> mp){}
- virtual int get_vehicle_type_id(){return 0;}
- void on_message(zloop<task*> * loop,const message_locinfo&loc,bool is_history);
- void on_location(const std::vector<point>&vp,const std::vector<loc_message> &lm );
- void do_status(STATUS_CARD st);
- void upt_card_pos(YA::_CARD_POS_ &,const point &pt);
- int get_stat();
- bool is_person() const
- {
- return CT_PERSON == m_type;
- }
- bool is_vehicle() const
- {
- return CT_VEHICLE == m_type;
- }
- virtual ~card_location_base();
- };
- struct card_list:single_base<card_list,uint64_t,std::shared_ptr<card_location_base>>
- {
- void init_staffer();
- void init_vehicle();
- uint64_t getId(uint32_t cardid,uint64_t);
- void on_message(zloop<task*> *loop,const message_locinfo&loc,bool is_history);
- void init_card_from_db();
- void load_his_card_postion_vehicle();
- void load_his_card_postion_staff();
- void load_his_card_postion_from_db();
- /// (类型<<32)|卡号
- static uint64_t to_id64(int32_t type, uint32_t id)
- {
- return (static_cast<uint64_t>(type)<<32)|id;
- }
- static std::string to_id64_str(int32_t type, uint32_t id)
- {
- char sql[15] = {'\0'};
- sprintf(sql, "%03d%010d", type, id);
- return std::string(sql);
- }
- ~card_list(){}
- };
- #endif
|