|
@@ -179,6 +179,7 @@ ULONGLONG time_send_json_postion;
|
|
|
ULONGLONG time_sync_reader_time;
|
|
|
ULONGLONG time_clear_call_time;
|
|
|
ULONGLONG time_send_call;
|
|
|
+ULONGLONG time_send_help;
|
|
|
ULONGLONG time_ws_connect;
|
|
|
bool g_exit=false;
|
|
|
long giSqlCount=0;
|
|
@@ -290,18 +291,18 @@ UINT _thread_timer(LPVOID lparam)
|
|
|
time_send_json_postion = cur_time;
|
|
|
|
|
|
DWORD dw = ::GetTickCount();
|
|
|
- dlg->package_data();
|
|
|
- //TRACE(_T("package_data: %d\r\n"), ::GetTickCount() - dw);
|
|
|
+ dlg->package_data();
|
|
|
}
|
|
|
//send help
|
|
|
- if(dlg->get_help_card_nums()>0){
|
|
|
+ if(cur_time - time_send_help > theApp.send_json_alarm){
|
|
|
+ time_send_help = cur_time;
|
|
|
dlg->send_json_data(JSON_CMD_VALUE_PUSH,dlg->get_json_help());
|
|
|
}
|
|
|
// send_call_data
|
|
|
if(cur_time - time_send_call > theApp.send_json_alarm){
|
|
|
- time_send_call = cur_time;
|
|
|
- dlg->clear_call_info();
|
|
|
+ time_send_call = cur_time;
|
|
|
dlg->send_call_info();
|
|
|
+ //dlg->clear_call_info();
|
|
|
}
|
|
|
|
|
|
if(!dlg->is_websocket_login &&cur_time - time_ws_connect > theApp.ws_connect_interval){
|
|
@@ -319,7 +320,6 @@ UINT _thread_timer(LPVOID lparam)
|
|
|
UINT _thread_monitor(LPVOID lparam)
|
|
|
{
|
|
|
CYAServerDlg* dlg = reinterpret_cast<CYAServerDlg*>(lparam);
|
|
|
- //TRACE(_T("time memcpy 10\n"));
|
|
|
time_t time_end = time(NULL);
|
|
|
while (!g_exit){
|
|
|
time_t time_current = time(NULL);
|
|
@@ -431,7 +431,7 @@ BOOL CYAServerDlg::OnInitDialog()
|
|
|
OnBnStart();
|
|
|
|
|
|
time_send_json_counting = time_send_json_device_state=time_send_json_alarm=time_send_json_postion=::GetTickCount();
|
|
|
- time_sync_reader_time=time_clear_call_time=time_send_call=::GetTickCount();
|
|
|
+ time_sync_reader_time=time_clear_call_time=time_send_call=time_send_help=::GetTickCount();
|
|
|
m_thread_timer = ::AfxBeginThread(_thread_timer, this, THREAD_PRIORITY_HIGHEST);
|
|
|
|
|
|
UpdateData(FALSE);
|
|
@@ -2969,9 +2969,9 @@ std::string CYAServerDlg::get_json_position()
|
|
|
for(; it_map != mp_map_list.end(); ++it_map){
|
|
|
CardMap::iterator it = mp_card_list_all.begin();
|
|
|
for(; it != mp_card_list_all.end(); ++it){
|
|
|
- if(it->second->pos_state != DT_DOWN){
|
|
|
+ /*if(it->second->pos_state != DT_DOWN){
|
|
|
continue;
|
|
|
- }
|
|
|
+ }*/
|
|
|
if(it->second->issent) {
|
|
|
continue;
|
|
|
}
|
|
@@ -3782,6 +3782,7 @@ void CYAServerDlg::OnFailed()
|
|
|
{
|
|
|
is_websocket_login = false;
|
|
|
is_websocket_ok = false;
|
|
|
+ _io->close();
|
|
|
}
|
|
|
|
|
|
void CYAServerDlg::ws_open()
|
|
@@ -4558,7 +4559,7 @@ void CYAServerDlg::parse_json_data_call_card(message::ptr const& data /*const ch
|
|
|
|
|
|
map<string,message::ptr> data_map = data->get_map()[JSON_ROOT_KEY_DATA]->get_map();
|
|
|
|
|
|
- call_id = data_map[JSON_KEY_CALL_CARD_CALL_ID]->get_string().c_str();
|
|
|
+ call_id = data_map[JSON_KEY_CALL_CARD_CALL_ID]->get_string();
|
|
|
call_time_out = data_map[JSON_KEY_CALL_CARD_CALL_TIME_OUT]->get_int();
|
|
|
call_type_id = data_map[JSON_KEY_CALL_CARD_CALL_TYPE]->get_int();
|
|
|
user_name = data_map[JSON_KEY_CALL_CARD_USER_NAME]->get_string();
|
|
@@ -4577,67 +4578,148 @@ void CYAServerDlg::parse_json_data_call_card(message::ptr const& data /*const ch
|
|
|
BYTE buf[LENGTH_SEND_BUF];
|
|
|
_call_info_reader* call_reader;
|
|
|
_call_info_card* call_card;
|
|
|
+
|
|
|
+ //呼叫发起有两种,
|
|
|
+ //一种通过分站发起呼叫即为对此分站下的所有自组网卡全员呼叫
|
|
|
+ //一种是对单卡发起的呼叫
|
|
|
vector<message::ptr>::const_iterator it_reader = reader_vec.begin();
|
|
|
- for(; it_reader != reader_vec.end(); ++it_reader){
|
|
|
- reader_id = (*it_reader)->get_map()[JSON_KEY_CALL_CARD_STATION_ID]->get_int();
|
|
|
-
|
|
|
- CallInfoReaderMap::iterator it_call_reader = mp_call_info.find(reader_id);
|
|
|
- if(it_call_reader != mp_call_info.end()){
|
|
|
- call_reader = it_call_reader->second;
|
|
|
- if(call_reader->call_type > call_type_id){
|
|
|
+ if(reader_vec.size() > 0){
|
|
|
+ for(; it_reader != reader_vec.end(); ++it_reader){
|
|
|
+ string s_reader_id = "";
|
|
|
+ s_reader_id = (*it_reader)->get_map()[JSON_KEY_CALL_CARD_STATION_ID]->get_string();
|
|
|
+ reader_id = atoi(s_reader_id.c_str());
|
|
|
+
|
|
|
+ CallInfoReaderMap::iterator it_call_reader = mp_call_info.find(reader_id);
|
|
|
+ if(it_call_reader != mp_call_info.end()){
|
|
|
+ call_reader = it_call_reader->second;
|
|
|
+ if(call_reader->call_type > call_type_id){
|
|
|
+ call_reader->call_type = call_type_id;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ call_reader = new _call_info_reader;
|
|
|
call_reader->call_type = call_type_id;
|
|
|
+ mp_call_info.insert(make_pair(reader_id, call_reader));
|
|
|
}
|
|
|
- }else{
|
|
|
- call_reader = new _call_info_reader;
|
|
|
- call_reader->call_type = call_type_id;
|
|
|
- mp_call_info.insert(make_pair(reader_id, call_reader));
|
|
|
- }
|
|
|
|
|
|
- vector<message::ptr>::const_iterator it_card = card_vec.begin();
|
|
|
-
|
|
|
- if(0 == (*it_card)->get_map()[JSON_KEY_CALL_CARD_CARD_ID]->get_int()){
|
|
|
- call_reader->cards_count = 0;
|
|
|
- call_reader->is_call_all = true;
|
|
|
- }else{
|
|
|
- call_reader->cards_count = card_vec.size();
|
|
|
- call_reader->is_call_all = false;
|
|
|
+ vector<message::ptr>::const_iterator it_card = card_vec.begin();
|
|
|
+ if(card_vec.size() == 0 || "" == (*it_card)->get_map()[JSON_KEY_CALL_CARD_CARD_ID]->get_string()){
|
|
|
+ call_reader->cards_count = 0;
|
|
|
+ call_reader->is_call_all = true;
|
|
|
+ call_reader->is_start_call = true;
|
|
|
+ }else{
|
|
|
+ call_reader->cards_count = card_vec.size();
|
|
|
+ call_reader->is_call_all = false;
|
|
|
+ call_reader->is_start_call = true;
|
|
|
|
|
|
- BYTE card_type = 0;
|
|
|
- for(; it_card != card_vec.end(); ++it_card){
|
|
|
- map<string,message::ptr> card_map = (*it_card)->get_map();
|
|
|
- if( 0 == card_map[JSON_KEY_CALL_CARD_CARD_ID]->get_int()){
|
|
|
- call_reader->cards_count = 0;
|
|
|
- call_reader->is_call_all = true;
|
|
|
- }else{
|
|
|
- int card_id = card_map[JSON_KEY_CALL_CARD_CARD_ID]->get_int();
|
|
|
- card_type = card_map[JSON_KEY_CALL_CARD_CARD_TYPE_ID]->get_int();
|
|
|
- string str_card_id = CFunctions::getstrwithzero(card_type, 3) + CFunctions::getstrwithzero(card_id, 10);
|
|
|
- CallInfoCardMap::iterator it_call_card = call_reader->mpCard.find(str_card_id);
|
|
|
- if(it_call_card != call_reader->mpCard.end()){ // 已在呼叫列表
|
|
|
- call_card = it_call_card->second;
|
|
|
- if(call_card->call_type < call_type_id){ // 原呼叫优先级低
|
|
|
+ BYTE card_type = 0;
|
|
|
+ for(; it_card != card_vec.end(); ++it_card){
|
|
|
+ if( "" == (*it_card)->get_map()[JSON_KEY_CALL_CARD_CARD_ID]->get_string()){
|
|
|
+ call_reader->cards_count = 0;
|
|
|
+ call_reader->is_call_all = true;
|
|
|
+ }else{
|
|
|
+ string s_card_id = (*it_card)->get_map()[JSON_KEY_CALL_CARD_CARD_ID]->get_string();
|
|
|
+ string s_card_type = (*it_card)->get_map()[JSON_KEY_CALL_CARD_CARD_TYPE_ID]->get_string();
|
|
|
+ //string str_card_id = CFunctions::getstrwithzero(card_type, 3) + CFunctions::getstrwithzero(card_id, 10);
|
|
|
+ CallInfoCardMap::iterator it_call_card = call_reader->mpCard.find(s_card_id);
|
|
|
+
|
|
|
+ int card_id = atoi(s_card_id.c_str());
|
|
|
+ int card_type = atoi(s_card_type.c_str());
|
|
|
+ if(it_call_card != call_reader->mpCard.end()){ // 已在呼叫列表
|
|
|
+ call_card = it_call_card->second;
|
|
|
+ if(call_card->call_type < call_type_id){ // 原呼叫优先级低
|
|
|
+ call_card->card_type = card_type;
|
|
|
+ call_card->call_type = call_type_id;
|
|
|
+ call_card->start_time = time(NULL);
|
|
|
+ call_card->time_out = call_time_out;
|
|
|
+ }else {
|
|
|
+ call_card->start_time = time(NULL);
|
|
|
+ call_card->time_out = call_time_out;
|
|
|
+ }
|
|
|
+ }else{ // 未在呼叫列表
|
|
|
+ call_card = new _call_info_card;
|
|
|
+ //call_card->card_id = card_id;
|
|
|
call_card->card_type = card_type;
|
|
|
- call_card->call_type = call_type_id;
|
|
|
- call_card->start_time = time(NULL);
|
|
|
- call_card->time_out = call_time_out;
|
|
|
- }else {
|
|
|
call_card->start_time = time(NULL);
|
|
|
call_card->time_out = call_time_out;
|
|
|
+ call_card->call_type = call_type_id;
|
|
|
+ call_reader->mpCard.insert(make_pair(s_card_id, call_card));
|
|
|
}
|
|
|
- }else{ // 未在呼叫列表
|
|
|
- call_card = new _call_info_card;
|
|
|
- call_card->card_id = card_id;
|
|
|
- call_card->card_type = card_type;
|
|
|
- call_card->start_time = time(NULL);
|
|
|
- call_card->time_out = call_time_out;
|
|
|
- call_card->call_type = call_type_id;
|
|
|
- call_reader->mpCard.insert(make_pair(str_card_id, call_card));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //单卡发送呼叫
|
|
|
+ it_reader = reader_vec.begin();
|
|
|
+ if(it_reader == reader_vec.end() && card_vec.size() > 0 ){
|
|
|
+ int nCounts = 0;
|
|
|
+ int card_id = 0;
|
|
|
+ BYTE card_type = 0;
|
|
|
+ string s_card_id = "";
|
|
|
+ string s_card_type = "";
|
|
|
+
|
|
|
+ vector<message::ptr>::const_iterator it_card = card_vec.begin();
|
|
|
+
|
|
|
+ for(; it_card != card_vec.end(); ++it_card){
|
|
|
+ card_type = 0;
|
|
|
+ s_card_id = "";
|
|
|
+ s_card_type = "";
|
|
|
+ call_type_id = 0;
|
|
|
+
|
|
|
+ nCounts++;
|
|
|
+
|
|
|
+ s_card_id = (*it_card)->get_map()[JSON_KEY_CALL_CARD_CARD_ID]->get_string();
|
|
|
+ s_card_type =(*it_card)->get_map()[JSON_KEY_CALL_CARD_CARD_TYPE_ID]->get_string();
|
|
|
+
|
|
|
+ string new_card_id = s_card_id.substr(3,s_card_id.length());
|
|
|
+ card_id = atoi(new_card_id.c_str());
|
|
|
+ card_type = CT_ADHOC;
|
|
|
+
|
|
|
+ reader_id = mp_card_list_down_adhoc.find(s_card_id)->second->reader_id;
|
|
|
+ CallInfoReaderMap::iterator it_call_reader = mp_call_info.find(reader_id);
|
|
|
+
|
|
|
+ if(it_call_reader != mp_call_info.end()){
|
|
|
+ call_reader = it_call_reader->second;
|
|
|
+ call_reader->is_start_call = true;
|
|
|
+ if(call_reader->call_type > call_type_id){
|
|
|
+ call_reader->call_type = call_type_id;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ call_reader = new _call_info_reader;
|
|
|
+ call_reader->call_type = call_type_id;
|
|
|
+ call_reader->is_call_all = false;
|
|
|
+ call_reader->cards_count = 1;
|
|
|
+ call_reader->is_start_call = true;
|
|
|
+ mp_call_info.insert(make_pair(reader_id, call_reader));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ CallInfoCardMap::iterator it_call_card = call_reader->mpCard.find(s_card_id);
|
|
|
+ if(it_call_card != call_reader->mpCard.end()){ // 已在呼叫列表
|
|
|
+ call_card = it_call_card->second;
|
|
|
+ if(call_card->call_type < call_type_id){ // 原呼叫优先级低
|
|
|
+ call_card->card_type = card_type;
|
|
|
+ call_card->card_id = 1;
|
|
|
+ call_card->call_type = call_type_id;
|
|
|
+ call_card->start_time = time(NULL);
|
|
|
+ call_card->time_out = call_time_out;
|
|
|
+ }else {
|
|
|
+ call_card->start_time = time(NULL);
|
|
|
+ call_card->time_out = call_time_out;
|
|
|
+ }
|
|
|
+ }else{ // 未在呼叫列表
|
|
|
+ call_card = new _call_info_card;
|
|
|
+ call_card->card_id = card_id;
|
|
|
+ call_card->card_type = card_type;
|
|
|
+ call_card->start_time = time(NULL);
|
|
|
+ call_card->time_out = call_time_out;
|
|
|
+ call_card->call_type = call_type_id;
|
|
|
+ call_reader->mpCard.insert(make_pair(s_card_id, call_card));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
strlog.Format(_T("%s%s"), _T(LOG_CALL_CARD), _T(LOG_SUCCESS));
|
|
|
show_log(strlog);
|
|
|
}
|
|
@@ -5249,6 +5331,16 @@ void CYAServerDlg::send_call_info()
|
|
|
BYTE buf[LENGTH_SEND_BUF];
|
|
|
SocketMap::iterator it_sock;
|
|
|
CallInfoReaderMap::iterator it_call_reader = mp_call_info.begin();
|
|
|
+
|
|
|
+ if(it_call_reader == mp_call_info.end()){
|
|
|
+ LeaveCriticalSection(&m_csCallInfo);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(!it_call_reader->second->is_start_call){
|
|
|
+ LeaveCriticalSection(&m_csCallInfo);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
for(; it_call_reader != mp_call_info.end(); ++it_call_reader){
|
|
|
it_sock = mp_socket_list.begin();
|
|
|
for(it_sock;it_sock!=mp_socket_list.end();++it_sock){
|
|
@@ -5260,29 +5352,35 @@ void CYAServerDlg::send_call_info()
|
|
|
if(it_sock != mp_socket_list.end()){
|
|
|
memset(buf, 0, LENGTH_SEND_BUF);
|
|
|
int npos = 0, card_count = 0;
|
|
|
-
|
|
|
+ //卡数
|
|
|
+ card_count = it_call_reader->second->cards_count;
|
|
|
memcpy(&buf[npos], &card_count, sizeof(BYTE));
|
|
|
npos += sizeof(BYTE);
|
|
|
+ //呼叫类型
|
|
|
memcpy(&buf[npos], &it_call_reader->second->call_type, sizeof(BYTE));
|
|
|
npos += sizeof(BYTE);
|
|
|
-
|
|
|
+
|
|
|
if(!it_call_reader->second->is_call_all){ // 定员呼叫,加入卡列表
|
|
|
+ //循环添加卡信息
|
|
|
CallInfoCardMap::iterator it_call_card = it_call_reader->second->mpCard.begin();
|
|
|
for(; it_call_card != it_call_reader->second->mpCard.end(); ++it_call_card){
|
|
|
+ //呼叫类型
|
|
|
memcpy(&buf[npos], &it_call_card->second->call_type, sizeof(BYTE));
|
|
|
npos += sizeof(BYTE);
|
|
|
+ //卡类型
|
|
|
memcpy(&buf[npos], &it_call_card->second->card_type, sizeof(BYTE));
|
|
|
npos += sizeof(BYTE);
|
|
|
+ //卡ID长度
|
|
|
BYTE id_len = (BYTE)get_card_id_len(it_call_card->second->card_type);
|
|
|
memcpy(&buf[npos], &id_len, sizeof(BYTE));
|
|
|
npos += sizeof(BYTE);
|
|
|
+ //卡ID
|
|
|
if(id_len > 1){ // 标准卡id为4个字节,自组网卡为1个字节
|
|
|
CFunctions::memcpyDWord(buf, it_call_card->second->card_id, npos);
|
|
|
}else{
|
|
|
memcpy(&buf[npos], &it_call_card->second->card_id, id_len);
|
|
|
}
|
|
|
npos += id_len;
|
|
|
- card_count++;
|
|
|
}
|
|
|
memcpy(&buf[0], &card_count, sizeof(BYTE));
|
|
|
}
|
|
@@ -5304,6 +5402,7 @@ void CYAServerDlg::clear_call_info()
|
|
|
for(; it_call_card != it_call_reader->second->mpCard.end();){
|
|
|
if(difftime(current_time, it_call_card->second->start_time) > it_call_card->second->time_out * 60 ){
|
|
|
it_call_reader->second->mpCard.erase(it_call_card++);
|
|
|
+ it_call_reader->second->is_start_call = false;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -7371,6 +7470,7 @@ void CYAServerDlg::OnEnUpdateEditReaderid()
|
|
|
void CYAServerDlg::parse_json_data_call_card_cancel(message::ptr const& data )
|
|
|
{
|
|
|
EnterCriticalSection(&m_csCallInfo);
|
|
|
+
|
|
|
CString strlog;
|
|
|
string call_id, user_name, call_time;
|
|
|
string cardid, readerid;
|
|
@@ -7378,11 +7478,10 @@ void CYAServerDlg::parse_json_data_call_card_cancel(message::ptr const& data )
|
|
|
|
|
|
map<string,message::ptr> data_map = data->get_map()[JSON_ROOT_KEY_DATA]->get_map();
|
|
|
|
|
|
- call_id = data_map[JSON_KEY_CALL_CARD_CALL_ID]->get_string().c_str();
|
|
|
- call_time_out = data_map[JSON_KEY_CALL_CARD_CALL_TIME_OUT]->get_int();
|
|
|
+ call_id = data_map[JSON_KEY_CALL_CARD_CALL_ID]->get_string();
|
|
|
user_name = data_map[JSON_KEY_CALL_CARD_USER_NAME]->get_string();
|
|
|
call_time = data_map[JSON_KEY_CALL_CARD_CALL_TIME]->get_string();
|
|
|
-
|
|
|
+
|
|
|
vector<message::ptr> reader_vec = data_map[JSON_KEY_CALL_CARD_STATIONS]->get_vector();
|
|
|
vector<message::ptr> card_vec = data_map[JSON_KEY_CALL_CARD_CARDS]->get_vector();
|
|
|
|
|
@@ -7396,49 +7495,72 @@ void CYAServerDlg::parse_json_data_call_card_cancel(message::ptr const& data )
|
|
|
BYTE buf[LENGTH_SEND_BUF];
|
|
|
_call_info_reader* call_reader;
|
|
|
_call_info_card* call_card;
|
|
|
+ //取消呼叫有两种:
|
|
|
+ //从分站取消呼叫,即取消全员呼叫
|
|
|
+ //对指定卡取消呼叫
|
|
|
vector<message::ptr>::const_iterator it_reader = reader_vec.begin();
|
|
|
- for(; it_reader != reader_vec.end(); ++it_reader){
|
|
|
- reader_id = (*it_reader)->get_map()[JSON_KEY_CALL_CARD_STATION_ID]->get_int();
|
|
|
-
|
|
|
- CallInfoReaderMap::iterator it_call_reader = mp_call_info.find(reader_id);
|
|
|
- if(it_call_reader != mp_call_info.end()){
|
|
|
- call_reader = it_call_reader->second;
|
|
|
-
|
|
|
- vector<message::ptr>::const_iterator it_card = card_vec.begin();
|
|
|
- if(0 == (*it_card)->get_map()[JSON_KEY_CALL_CARD_CARD_ID]->get_int()){
|
|
|
- if( call_reader->cards_count){
|
|
|
- CallInfoCardMap::iterator it_reader_card = call_reader->mpCard.begin();
|
|
|
- for(; it_reader_card != call_reader->mpCard.end();){
|
|
|
- call_reader->mpCard.erase(++it_reader_card);
|
|
|
- }
|
|
|
- }
|
|
|
- call_reader->mpCard.clear();
|
|
|
- mp_call_info.erase(it_call_reader);
|
|
|
- }else{
|
|
|
- call_reader->cards_count = card_vec.size();
|
|
|
+ if(reader_vec.size() > 0){
|
|
|
+ for(; it_reader != reader_vec.end(); ++it_reader){
|
|
|
+ string s_reader_id = (*it_reader)->get_map()[JSON_KEY_CALL_CARD_STATION_ID]->get_string();
|
|
|
+ reader_id = atoi(s_reader_id.c_str());
|
|
|
+ CallInfoReaderMap::iterator it_call_reader = mp_call_info.find(reader_id);
|
|
|
+ if(it_call_reader != mp_call_info.end()){
|
|
|
+ call_reader = it_call_reader->second;
|
|
|
+ call_reader->is_start_call = false;
|
|
|
call_reader->is_call_all = false;
|
|
|
|
|
|
- BYTE card_type = 0;
|
|
|
- for(; it_card != card_vec.end(); ++it_card){
|
|
|
- map<string,message::ptr> card_map = (*it_card)->get_map();
|
|
|
-
|
|
|
- int card_id = card_map[JSON_KEY_CALL_CARD_CARD_ID]->get_int();
|
|
|
- card_type = card_map[JSON_KEY_CALL_CARD_CARD_TYPE_ID]->get_int();
|
|
|
- string str_card_id = CFunctions::getstrwithzero(card_type, 3) + CFunctions::getstrwithzero(card_id, 10);
|
|
|
- CallInfoCardMap::iterator it_call_card = call_reader->mpCard.find(str_card_id);
|
|
|
- if(it_call_card != call_reader->mpCard.end()){ // 已在呼叫列表
|
|
|
- call_reader->mpCard.erase(it_call_card);
|
|
|
+ vector<message::ptr>::const_iterator it_card = card_vec.begin();
|
|
|
+ if(card_vec.size() == 0 || "" == (*it_card)->get_map()[JSON_KEY_CALL_CARD_CARD_ID]->get_string()){
|
|
|
+ if(call_reader->cards_count){
|
|
|
+ CallInfoCardMap::iterator it_reader_card = call_reader->mpCard.begin();
|
|
|
+ for(; it_reader_card != call_reader->mpCard.end();){
|
|
|
+ call_reader->mpCard.erase(++it_reader_card);
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- if(call_reader->mpCard.size() == 0){
|
|
|
call_reader->mpCard.clear();
|
|
|
mp_call_info.erase(it_call_reader);
|
|
|
+ call_reader->cards_count = 0;
|
|
|
+ }else{
|
|
|
+ BYTE card_type = 0;
|
|
|
+ for(; it_card != card_vec.end(); ++it_card){
|
|
|
+ string s_card_id = (*it_card)->get_map()[JSON_KEY_CALL_CARD_CARD_ID]->get_string();
|
|
|
+ string s_card_type = (*it_card)->get_map()[JSON_KEY_CALL_CARD_CARD_TYPE_ID]->get_string();
|
|
|
+
|
|
|
+ CallInfoCardMap::iterator it_call_card = call_reader->mpCard.find(s_card_id);
|
|
|
+ if(it_call_card != call_reader->mpCard.end()){ // 已在呼叫列表
|
|
|
+ call_reader->mpCard.erase(it_call_card);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(call_reader->mpCard.size() == 0){
|
|
|
+ call_reader->mpCard.clear();
|
|
|
+ mp_call_info.erase(it_call_reader);
|
|
|
+ }
|
|
|
}
|
|
|
+ call_reader->cards_count = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ it_reader = reader_vec.begin();
|
|
|
+ if(it_reader == reader_vec.end() && card_vec.size() > 0){
|
|
|
+ vector<message::ptr>::const_iterator it_card = card_vec.begin();
|
|
|
+ BYTE card_type = 0;
|
|
|
+ for(; it_card != card_vec.end(); ++it_card){
|
|
|
+ string s_card_id = (*it_card)->get_map()[JSON_KEY_CALL_CARD_CARD_ID]->get_string();
|
|
|
+ string s_card_type = (*it_card)->get_map()[JSON_KEY_CALL_CARD_CARD_TYPE_ID]->get_string();
|
|
|
+
|
|
|
+ int reader_id = mp_card_list_down_adhoc.find(s_card_id)->second->reader_id;
|
|
|
+
|
|
|
+ call_reader = mp_call_info.find(reader_id)->second;
|
|
|
+ call_reader->is_start_call = false;
|
|
|
+ CallInfoCardMap::iterator it_call_card = call_reader->mpCard.find(s_card_id);
|
|
|
+ if(it_call_card != call_reader->mpCard.end()){ // 已在呼叫列表
|
|
|
+ call_reader->mpCard.erase(it_call_card);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
LeaveCriticalSection(&m_csCallInfo);
|
|
|
- strlog.Format(_T("%s%s"), _T(LOG_CALL_CARD), _T(LOG_SUCCESS));
|
|
|
+ strlog.Format(_T("%s%s"), _T(LOG_CANCEL_CALL_CARD), _T(LOG_SUCCESS));
|
|
|
show_log(strlog);
|
|
|
}
|