|
@@ -0,0 +1,87 @@
|
|
|
+#include <string.h>
|
|
|
+#include "db/db_tool.h"
|
|
|
+#include "module_screen.h"
|
|
|
+#include "log.h"
|
|
|
+#include "common.h"
|
|
|
+#include <chrono>
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief 更新大屏内显示所需人员id,区域id,部门id,电池电量状态等数据
|
|
|
+ * @param 卡数据
|
|
|
+ * @return 无
|
|
|
+ * @note
|
|
|
+ * @warning
|
|
|
+ * @bug
|
|
|
+ *
|
|
|
+ * */
|
|
|
+void module_screen::do_write(const std::map<uint64_t, sys::_CARD_POS_> card_pos_list)
|
|
|
+{
|
|
|
+ std::string p_stat = "";
|
|
|
+ char item[200] = { 0 };
|
|
|
+ for(auto it : card_pos_list)
|
|
|
+ {
|
|
|
+ memset(item, 0, 200*sizeof(char));
|
|
|
+ // 电量状态0表示正常,1表示电量不足,
|
|
|
+ snprintf(item, 200, "%d,%d,%d,%d,%d,%d;",it.second.ID, it.second.area_id, it.second.dept_id, (it.second.battery_stat), it.second.biz_stat, it.second.level_id);
|
|
|
+ p_stat += std::string(item);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(p_stat == ""){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ log_info("[screen] stat info=%s", p_stat.c_str());
|
|
|
+ char sql[4096] = {0};
|
|
|
+ snprintf(sql, 4096, "update rt_screen_msg set person_stat='%s' where id=1;", p_stat.c_str());
|
|
|
+ log_info("[screen] sql=%s", sql);
|
|
|
+ db_tool::PushAsync(sql);
|
|
|
+}
|
|
|
+
|
|
|
+void module_screen::start()
|
|
|
+{
|
|
|
+ m_exited = false;
|
|
|
+ m_thread.reset(new std::thread(std::bind(&module_screen::run, this)));
|
|
|
+ m_thread->detach();
|
|
|
+}
|
|
|
+
|
|
|
+void module_screen::run()
|
|
|
+{
|
|
|
+ while(!m_exited){
|
|
|
+ do_wellhead();
|
|
|
+ std::this_thread::sleep_for(std::chrono::seconds(1));
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief 更新井口人员数据
|
|
|
+ * @param 无
|
|
|
+ * @return 无
|
|
|
+ * @note
|
|
|
+ * @warning
|
|
|
+ * @bug
|
|
|
+ *
|
|
|
+ * */
|
|
|
+void module_screen::do_wellhead()
|
|
|
+{
|
|
|
+ std::lock_guard<std::mutex> lg(m_mtx);
|
|
|
+
|
|
|
+ if(m_card_list.size() <= 0){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ std::string sid = "";
|
|
|
+ char buf[12] = {0};
|
|
|
+ for(auto it = m_card_list.begin(); it != m_card_list.end();){
|
|
|
+ if(time(NULL) - it->second.m_recv_time < 120){
|
|
|
+ snprintf(buf, 12, "%ld,%d;", it->first, it->second.m_battery);
|
|
|
+ sid += std::string(buf);
|
|
|
+ it++;
|
|
|
+ }else{
|
|
|
+ m_card_list.erase(it++);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ char sql[4096] = {0};
|
|
|
+ snprintf(sql, 4096, "update rt_screen_msg set wellhead_stat='%s' where id=1;", sid.c_str());
|
|
|
+ log_info("[screen] sql=%s", sql);
|
|
|
+ db_tool::PushAsync(sql);
|
|
|
+}
|