void CCallThread::DoEvaMsg(const MSG& msg) { SLZEvaData* pEvaData = (SLZEvaData*)msg.wParam; SLZWindow Window; BOOL flag = m_rInlineQueData.m_rWindowTable.QueryWindowByEvaId(pEvaData->GetEvaluatorId(),Window); if(flag) { SLZData data; //找出正在呼叫的那条数据 if(m_rCalledQueData.GetCalledQueData(Window.GetWindowId(),data)) { data.SetEvaluateLevel(pEvaData->GetEvaLevel()); data.SetIsFinshEva(TRUE); CTime curTime = CTime::GetCurrentTime(); data.SetFinishTime(curTime); if(m_rCalledQueData.DeleteCalledQueData(data))//删除正在呼叫的那条数据 { m_rFinshQueData.Add(data);//加入完成队列 } } else//不呼叫只评价 { data.SetEvaluateLevel(pEvaData->GetEvaLevel()); data.SetIsFinshEva(TRUE); CTime curTime = CTime::GetCurrentTime(); data.SetFinishTime(curTime); data.SetWindowId(Window.GetWindowId()); data.SetWindowShowId(Window.GetShowWndId()); CString staffID = m_map_login[Window.GetWindowId()]; data.SetStaffId(staffID); CString bussinessType; /* 处理业务ID */ SLZWindow window; m_rInlineQueData.m_rWindowTable.QueryWindowById(data.GetWindowId(),window); CStringArray arrayQueID; window.GetArrayQueId(arrayQueID); if(!arrayQueID.IsEmpty()) { bussinessType = arrayQueID[0]; } else { CMap<int,int,CQueueInfo,CQueueInfo&>::CPair* pCurEva; int count = m_map_que.GetCount(); for(int i=0;i<count;i++) { pCurEva = m_map_que.PLookup(i); bussinessType = pCurEva->value.GetQueID(); break; } } //////////////////////////////// data.SetBussinessType(bussinessType); data.SetOrganId(theApp.m_logicVariables.strOrganID); data.SetOrganName(theApp.m_logicVariables.strOrganNmae); // data.SetQueSerialID(_T("1")); data.SetQueueNumber(_T("0")); data.SetCallTime(curTime); data.SetTakingNumTime(curTime); m_rFinshQueData.Add(data);//加入完成队列 } } if(pEvaData)//释放资源 delete pEvaData; }
/* 转移队列/窗口 */ void CCallThread::OnExChange(CallerCmd& callerCmd) { SLZData data; if(m_logicVariables.ExchangeQue) { BOOL flag = FALSE; CString queID = callerCmd.GetCarriedData();//获取转移的队列 if(queID.IsEmpty())return; CQueueInfo queinfo; for(int i=0;i<m_map_que.GetCount();i++) { if(m_map_que[i].GetQueManNum()==queID)//找到QUEID { flag = TRUE; queinfo = m_map_que[i]; break; } } //获取对应窗口正在呼叫的数据 if(flag) { if(m_rCalledQueData.GetCalledQueData(callerCmd.GetWindowId(),data)) { data.SetIsOpenEva(FALSE);data.SetIsFinshEva(FALSE); m_rCalledQueData.DeleteCalledQueData(data);//删除正在呼叫队列的数据 data.SetBussinessType(queinfo.GetQueID()); //设置队列名称 data.SetBussName(GetQueNumFromID(queinfo.GetQueID())); data.SetWindowId(0);//不设置指定窗口,返回初始状态 m_rInlineQueData.AddHeadData(data);//添加到排队队列最前 callerCmd.SetSuccess(TRUE); } } } if(m_logicVariables.ExchangeWindow)//转移窗口 { CString winID = callerCmd.GetCarriedData();//获取转移的窗口 if(winID.IsEmpty())return; CCommonConvert convert; int i_winID = -1; convert.CStringToint(i_winID,winID); SLZWindow Window; BOOL flag = m_rInlineQueData.m_rWindowTable.QueryWindowBySerialID(i_winID,Window); if(flag)//找到了窗口 { if(m_rCalledQueData.GetCalledQueData(callerCmd.GetWindowId(),data)) { if(JudgeWindowHaveQue(Window.GetWindowId()))//判断窗口ID下是否有可处理队列 { data.SetIsOpenEva(FALSE);data.SetIsFinshEva(FALSE); m_rCalledQueData.DeleteCalledQueData(data);//删除正在呼叫队列的数据 data.SetWindowId(Window.GetWindowId()); m_rInlineQueData.AddHeadData(data);//添加到排队队列最前 callerCmd.SetSuccess(TRUE); } else { callerCmd.SetSuccess(FALSE); } } } ///////////////////////////////////// } /////////////////////////////////// }