MineCardManager.cpp 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. #include "MineCardManager.h"
  2. #include "ya_setting.h"
  3. #include "common_tool.h"
  4. #include "mine.h"
  5. CMineCardManager::CMineCardManager()
  6. {
  7. m_minecards = std::make_shared<mine_card_info>();
  8. }
  9. std::shared_ptr<mine_card_info> CMineCardManager::GetMineCards()
  10. {
  11. return m_minecards;
  12. }
  13. /**
  14. * @brief 获取事件ID
  15. **/
  16. bool CMineCardManager::Exist(SET_CARDID &list,uint64_t id)
  17. {
  18. if (list.find(id) == list.end())
  19. {
  20. return false;
  21. }
  22. return true;
  23. }
  24. bool CMineCardManager::Exist(SET_CARDID &list,int card_id,int card_type)
  25. {
  26. return Exist(list,tool_other::type_id_to_u64(card_type,card_id));
  27. }
  28. /**
  29. * @brief 人员下井
  30. * @param card 卡
  31. **/
  32. void CMineCardManager::OnPersonDown(std::shared_ptr<card> card,bool bInit/* = false*/)
  33. {
  34. if (nullptr == card)
  35. {
  36. return ;
  37. }
  38. //设置卡的状态
  39. card->m_is_attendance = EAttendanceState::MineDown;
  40. uint64_t key = tool_other::type_id_to_u64(card->m_id,card->m_type);
  41. if (this->Exist(m_minecards->m_down_person,key))
  42. {
  43. return ;
  44. }
  45. //移除升井中的状态
  46. m_minecards->m_up_person.erase(key);
  47. //加入到井下列表中
  48. m_minecards->m_down_person.insert(key);
  49. if(!bInit)
  50. {
  51. //井下超员判断
  52. this->OnPersonOvercrowdingWarning();
  53. }
  54. }
  55. /**
  56. * @brief 人员升井
  57. * @param card 卡
  58. **/
  59. void CMineCardManager::OnPersonUp(std::shared_ptr<card> card)
  60. {
  61. if (nullptr == card)
  62. {
  63. return ;
  64. }
  65. card->m_is_attendance = EAttendanceState::MineUp;
  66. uint64_t key = tool_other::type_id_to_u64(card->m_id,card->m_type);
  67. if (this->Exist(m_minecards->m_up_person,key))
  68. {
  69. return ;
  70. }
  71. //移除井下列表
  72. m_minecards->m_down_person.erase(key);
  73. //加入到升井列表中
  74. m_minecards->m_up_person.insert(key);
  75. int max_person = CYaSetting::m_sys_setting.over_count_person;
  76. //井下超员判断--取消
  77. if (max_person != 0 && (int)m_minecards->m_down_person.size() < max_person )
  78. {
  79. //this->CancelEvent(EVENT_TYPE::ET_OVER_COUNT_PERSON,(int)m_minecards->m_down_person.size());
  80. }
  81. }
  82. /**
  83. * @brief 人员超员警告
  84. **/
  85. void CMineCardManager::OnPersonOvercrowdingWarning()
  86. {
  87. // int max_person = CYaSetting::m_sys_setting.over_count_person;
  88. // //井下超员判断
  89. // if (max_person != 0 && (int)m_minecards->m_down_person.size() > max_person )
  90. // {
  91. // std::string log = "";
  92. // for (uint64_t id : m_minecards->m_down_person)
  93. // {
  94. // std::shared_ptr<card_location_base> pitcard = card_list::instance()->get(id);
  95. // if (nullptr != pitcard)
  96. // {
  97. // log += tool_other::type_id_to_str(pitcard->m_type,pitcard->m_id);
  98. // log += "&";
  99. // }
  100. // }
  101. // //打印日志
  102. // log_info("[lemon mp_card_list_down_person:]:%s",log.c_str());
  103. // this->StartEvent(EVENT_TYPE::ET_OVER_COUNT_PERSON,max_person,(int)m_minecards->m_down_person.size());
  104. // }
  105. }
  106. /**
  107. * @brief 人员井下超时
  108. **/
  109. void CMineCardManager::OnPersonInMineOverTime(int card_id,int card_type)
  110. {
  111. // std::shared_ptr<card_location_base> card = card_list::instance()->get(tool_other::type_id_to_u64(card_type, card_id));
  112. // if (nullptr == card)
  113. // {
  114. // return ;
  115. // }
  116. // std::shared_ptr<mine_tool> mine = card->get_mine_tool();
  117. // if(nullptr == mine )
  118. // {
  119. // return ;
  120. // }
  121. // int sec= tool_time::to_ms(std::chrono::system_clock::now()) - mine->get_work_time();
  122. // if (!mine->m_is_overtime && sec > (int)CYaSetting::m_sys_setting.over_time_person)
  123. // {
  124. // //人员超时
  125. // mine->m_is_overtime = true;
  126. // mine->m_overtime = std::chrono::system_clock::now();
  127. // }
  128. // else if (mine->m_is_overtime && sec < (int)CYaSetting::m_sys_setting.over_time_person)
  129. // {
  130. // mine->m_is_overtime = false;
  131. // mine->m_overtime = std::chrono::system_clock::now();
  132. // }
  133. // else
  134. // {
  135. // return ;
  136. // }
  137. // // 发送警告
  138. // event_ptr evPtr = event_list::instance()->get_event_card(card->m_id,card->m_type,ET_CARD_OVER_TIME_PERSON);
  139. // if (nullptr == evPtr)
  140. // {
  141. // event_ptr evPtr = event_list::create_event_card(card->m_id, card->m_type, ET_CARD_OVER_TIME_PERSON);
  142. // event_list::instance()->copy_event(card, evPtr);
  143. // event_list::instance()->add(evPtr->get_list_id(), evPtr);
  144. // }
  145. // evPtr->m_limit_value = 0;
  146. // evPtr->m_cur_value = 0;
  147. // evPtr->m_is_display = false;
  148. // evPtr->m_status = mine->m_is_overtime ? ES_START : ES_END;
  149. // evPtr->m_cur_time = std::chrono::system_clock::now();
  150. // event_list::save_event(evPtr);
  151. // log_info("OnPersonInMineOverTime: send Event=ET_CARD_OVER_TIME_PERSON card=id,eventState=%d",card->m_id,evPtr->m_status);
  152. }
  153. /**
  154. * @brief 车下井
  155. * @param card 卡
  156. **/
  157. void CMineCardManager::OnVehicleDown(std::shared_ptr<card> card,bool bInit/* = false*/)
  158. {
  159. if (nullptr == card)
  160. {
  161. return ;
  162. }
  163. }
  164. /**
  165. * @brief 车升井
  166. * @param card 卡
  167. **/
  168. void CMineCardManager::OnVehicleUp(std::shared_ptr<card> card)
  169. {
  170. if (nullptr == card)
  171. {
  172. return ;
  173. }
  174. }
  175. /**
  176. * @brief 车辆超员警告
  177. **/
  178. void CMineCardManager::OnVehicleOvercrowdingWarning()
  179. {
  180. }