//暂停 private void Pause() { lock (objLock) { LockAction.RunWindowLock(windowNo, () => { stateModel = csBll.GetModelByWindowNo(windowNo); if (stateModel == null) { stateModel = new FCallStateModel(); stateModel.windowNo = windowNo; stateModel.workState = (int)WorkState.Defalt; csBll.Insert(stateModel); } if (stateModel.workState != (int)WorkState.PauseService) { string mess = windowNo + "号窗口暂停服务"; this.client.SendMessage(new OperateMessage() { WindowNo = windowNo, Operate = Operate.Pause }); this.Invoke(new Action(() => { this.listView1.Items.Add(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff") + " : " + mess); })); stateModel.pauseState = stateModel.workState; stateModel.workState = (int)WorkState.PauseService; csBll.Update(stateModel); WriterCallLog(0, mess); } }); } }
private void btnGiveUpAll_Click(object sender, EventArgs e) { if (DialogResult.OK == MessageBox.Show("确定对当前窗口所有业务的排队票进行批量弃号?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)) { stateModel = csBll.GetModelByWindowNo(windowNo); if (stateModel != null) { stateModel.callId = 0; stateModel.workState = 0; stateModel.hangId = 0; stateModel.pauseState = 0; stateModel.ticketNo = ""; csBll.Update(stateModel); } var tList = cBll.GiveUpAll(windowBusys); foreach (var t in tList) { string mess = "批量弃号:窗口[" + t.windowNumber + "]票号[" + t.ticketNumber + "]已完成弃号"; this.client.SendMessage(new OperateMessage() { WindowNo = t.windowNumber, Operate = Operate.Reset }); this.Invoke(new Action(() => { this.listView1.Items.Add(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff") + " : " + mess); })); WriterCallLog(4, mess); } } }
//呼叫*顺呼 private void CallNo() { lock (objLock) { action.lockWin(windowNo, () => { stateModel = csBll.GetModelByWindowNo(windowNo); if (stateModel == null) { stateModel = new FCallStateModel(); stateModel.windowNo = windowNo; stateModel.workState = (int)WorkState.Defalt; stateModel = csBll.Insert(stateModel); } if (stateModel.workState == (int)WorkState.PauseService) { this.client.SendMessage(new OperateMessage() { WindowNo = windowNo, Operate = Operate.Reset }); stateModel.workState = stateModel.pauseState; csBll.Update(stateModel); this.Invoke(new Action(() => { this.listView1.Items.Add(DateTime.Now.ToString("MM-dd HH:mm:ss") + " : " + windowNo + "号窗口恢复服务"); })); } if (stateModel.workState == (int)WorkState.Defalt || stateModel.workState == (int)WorkState.Evaluate) { try { var model = cBll.CallNo(windowBusys, windowBusyGreens, windowNo, userId); if (model != null) { stateModel.callId = model.ID; var callString = "请" + model.ticketNumber + "号到 " + windowNo + "号窗口办理 "; client.SendMessage(new CallMessage() { TicketNo = model.ticketNumber, WindowNo = windowNo, AreaNo = windowModel.AreaName.ToString(), IsLEDMessage = true, IsSoundMessage = true }); client.SendMessage(new WeChatMessage() { ID = model.qId.ToString() }); stateModel.workState = (int)WorkState.Call; stateModel.ticketNo = model.ticketNumber; stateModel.callId = model.ID; stateModel.reCallTimes = 0; csBll.Update(stateModel); this.Invoke(new Action(() => { this.listView1.Items.Add(DateTime.Now.ToString("MM-dd HH:mm:ss") + " : " + callString); })); //SendTicket(adress, model.ticketNumber.Substring(model.ticketNumber.Length - 3, 3)); WriterCallLog(0, callString); } } catch (Exception ex) { WriterLog("叫号异常:" + ex.Message); } } }); } }
//回呼 private void CallBack() { lock (objLock) { action.lockWin(windowNo, () => { stateModel = csBll.GetModelByWindowNo(windowNo); if (stateModel == null) { return; } if (stateModel.workState == (int)WorkState.PauseService) { this.client.SendMessage(new OperateMessage() { WindowNo = windowNo, Operate = Operate.Reset }); stateModel.workState = stateModel.pauseState; csBll.Update(stateModel); this.Invoke(new Action(() => { this.listView1.Items.Add(DateTime.Now.ToString("MM-dd HH:mm:ss") + " : " + windowNo + "号窗口恢复服务"); })); } if (stateModel.workState == (int)WorkState.Defalt || stateModel.workState == (int)WorkState.Evaluate) { var model = cBll.GetModel(stateModel.hangId); if (model == null) { return; } else { if (model.ticketTime.Date != DateTime.Now.Date) { stateModel.hangId = 0; csBll.Update(stateModel); return; } } model.state = 0; cBll.Update(model); var callString = model.ticketNumber + "号回呼"; client.SendMessage(new CallMessage() { TicketNo = model.ticketNumber, WindowNo = windowNo, AreaNo = windowModel.AreaName.ToString(), IsLEDMessage = true, IsSoundMessage = true }); this.Invoke(new Action(() => { this.listView1.Items.Add(DateTime.Now.ToString("MM-dd HH:mm:ss") + " : " + callString); })); //SendTicket(adress, wHang[adress].ticketNumber.Substring(wHang[adress].ticketNumber.Length - 3, 3)); stateModel.workState = (int)WorkState.Call; stateModel.ticketNo = model.ticketNumber; stateModel.callId = model.ID; stateModel.reCallTimes = 0; stateModel.hangId = 0; csBll.Update(stateModel); WriterCallLog(7, callString); } }); } }
void RefreshInfo() { this.txtWindow.Text = windowName; this.lblWindow.Text = windowNo; this.txtUserCode.Text = userId; stateModel = csBll.GetModelByWindowNo(windowNo); if (stateModel != null) { this.txtTicket.Text = stateModel.workState == (int)WorkState.Call ? stateModel.ticketNo : ""; this.txtHangCount.Text = (stateModel.hangId > 0 ? 1 : 0).ToString(); } else { this.txtHangCount.Text = "0"; this.txtTicket.Text = ""; } //查询当前窗口排队等候人数 var list = qBll.GetModelList(windowBusys, 0).OrderBy(o => o.ticketTime).ToList(); //排队中 var list2 = qBll.GetModelList(windowBusys, 1); //已完成 this.txtQueueCount.Text = (list.Count + list2.Count).ToString(); this.txtWait.Text = list.Count.ToString(); this.txtAlready.Text = list2.Count.ToString(); foreach (var l in list.OrderByDescending(o => o.ticketTime).ToList()) { if (qList.FirstOrDefault(q => q.ID == l.ID) == null) { frmMsg frm = new frmMsg(); frm.Ticket = l.qNumber; frm.Show(); break; } } qList = list; //if (x > 3) //{ // frmMsg frm = new frmMsg(); // frm.Ticket = "AB016"; // frm.Show(); // x = 0; //} //x++; //listView2.Items.Clear(); //foreach (var item in list) //{ // ListViewItem lvItem = new ListViewItem(); // lvItem.Tag = item; // lvItem.SubItems[0].Text = item.ticketNumber; // lvItem.SubItems.Add(item.ticketTime.ToString("yyyy-MM-dd HH:mm:ss")); // lvItem.SubItems.Add(item.qNmae); // listView2.Items.Add(lvItem); //} //listView2.Refresh(); }
//弃号 private void GiveUpNo() { lock (objLock) { action.lockWin(windowNo, () => { stateModel = csBll.GetModelByWindowNo(windowNo); if (stateModel == null) { return; } if (stateModel.workState == (int)WorkState.PauseService) { this.client.SendMessage(new OperateMessage() { WindowNo = windowNo, Operate = Operate.Reset }); stateModel.workState = stateModel.pauseState; csBll.Update(stateModel); this.Invoke(new Action(() => { this.listView1.Items.Add(DateTime.Now.ToString("MM-dd HH:mm:ss") + " : " + windowNo + "号窗口恢复服务"); })); } if (stateModel.workState == (int)WorkState.Call) { try { var model = cBll.GetModel(stateModel.callId); if (model == null) { return; } string mess = model.ticketNumber + "号已弃号。"; model.state = -1; model.finishTime = DateTime.Now; cBll.Update(model); stateModel.workState = (int)WorkState.Evaluate; stateModel.callId = 0; stateModel.ticketNo = ""; csBll.Update(stateModel); this.Invoke(new Action(() => { this.listView1.Items.Add(DateTime.Now.ToString("MM-dd HH:mm:ss") + " : " + mess); })); this.client.SendMessage(new OperateMessage() { WindowNo = windowNo, Operate = Operate.Reset }); //SendWait(adress); WriterCallLog(4, mess); } catch (Exception ex) { WriterLog("弃号异常:" + ex.Message); } } }); } }
//转移-丢回去 private void Transfer() { lock (objLock) { action.lockWin(windowNo, () => { stateModel = csBll.GetModelByWindowNo(windowNo); if (stateModel == null) { stateModel = new FCallStateModel(); stateModel.windowNo = windowNo; stateModel.workState = (int)WorkState.Defalt; stateModel = csBll.Insert(stateModel); } if (stateModel.workState == (int)WorkState.PauseService) { this.client.SendMessage(new OperateMessage() { WindowNo = windowNo, Operate = Operate.Reset }); stateModel.workState = stateModel.pauseState; csBll.Update(stateModel); this.Invoke(new Action(() => { this.listView1.Items.Add(DateTime.Now.ToString("MM-dd HH:mm:ss") + " : " + windowNo + "号窗口恢复服务"); })); } if (stateModel.workState == (int)WorkState.Call) { var model = cBll.GetModel(stateModel.callId); if (model == null) { return; } //转移号码 model.finishTime = DateTime.Now; cBll.Transfer(model); this.client.SendMessage(new OperateMessage() { WindowNo = windowNo, Operate = Operate.Reset }); var callString = model.ticketNumber + "号已转移(重置) "; this.Invoke(new Action(() => { this.listView1.Items.Add(DateTime.Now.ToString("MM-dd HH:mm:ss") + " : " + callString); })); //SendWait(adress); stateModel.workState = (int)WorkState.Defalt; stateModel.callId = 0; stateModel.ticketNo = ""; stateModel.reCallTimes = 0; csBll.Update(stateModel); WriterCallLog(5, callString); } }); } }
//重呼 private void ReCallNo() { lock (objLock) { action.lockWin(windowNo, () => { stateModel = csBll.GetModelByWindowNo(windowNo); if (stateModel == null) { return; } if (stateModel.workState == (int)WorkState.PauseService) { this.client.SendMessage(new OperateMessage() { WindowNo = windowNo, Operate = Operate.Reset }); stateModel.workState = stateModel.pauseState; csBll.Update(stateModel); this.Invoke(new Action(() => { this.listView1.Items.Add(DateTime.Now.ToString("MM-dd HH:mm:ss") + " : " + windowNo + "号窗口恢复服务"); })); } if (stateModel.workState == (int)WorkState.Call) { var model = cBll.GetModel(stateModel.callId); if (model == null) { return; } if (stateModel.reCallTimes >= 5) { return; } else { stateModel.reCallTimes = stateModel.reCallTimes + 1; csBll.Update(stateModel); } var callString = "请" + model.ticketNumber + "号到 " + windowNo + "号窗口办理(重呼) "; client.SendMessage(new CallMessage() { TicketNo = model.ticketNumber, WindowNo = windowNo, AreaNo = windowModel.AreaName.ToString(), IsLEDMessage = true, IsSoundMessage = true }); this.Invoke(new Action(() => { this.listView1.Items.Add(DateTime.Now.ToString("MM-dd HH:mm:ss") + " : " + callString); })); //SendTicket(adress, wModel[adress].ticketNumber.Substring(wModel[adress].ticketNumber.Length - 3, 3)); WriterCallLog(1, callString); } }); } }
//挂起 private void Hang() { lock (objLock) { LockAction.RunWindowLock(windowNo, () => { stateModel = csBll.GetModelByWindowNo(windowNo); if (stateModel == null) { stateModel = new FCallStateModel(); stateModel.windowNo = windowNo; stateModel.workState = (int)WorkState.Defalt; csBll.Insert(stateModel); } if (stateModel.workState == (int)WorkState.PauseService) { this.client.SendMessage(new OperateMessage() { WindowNo = windowNo, Operate = Operate.Reset }); stateModel.workState = stateModel.pauseState; csBll.Update(stateModel); } if (stateModel.workState == (int)WorkState.Call) { var model = cBll.GetModel(stateModel.callId); if (model == null) { return; } model.state = 3; cBll.Update(model); var callString = model.ticketNumber + "号已挂起"; this.Invoke(new Action(() => { this.listView1.Items.Add(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff") + " : " + callString); })); //SendWait(adress); stateModel.workState = (int)WorkState.Defalt; stateModel.hangId = model.ID; stateModel.callId = 0; stateModel.ticketNo = ""; stateModel.reCallTimes = 0; csBll.Update(stateModel); WriterCallLog(6, callString); } }); } }
void RefreshInfo() { try { this.txtWindow.Text = windowName; this.lblWindow.Text = windowNo; this.txtUserCode.Text = userId; stateModel = csBll.GetModelByWindowNo(windowNo); if (stateModel != null) { this.txtTicket.Text = stateModel.workState == (int)WorkState.Call ? stateModel.ticketNo : ""; this.txtHangCount.Text = (stateModel.hangId > 0 ? 1 : 0).ToString(); } else { this.txtHangCount.Text = "0"; this.txtTicket.Text = ""; } //查询当前窗口排队等候人数 var list = qBll.GetModelList(windowBusys, 0).OrderBy(o => o.ticketTime).ToList(); //排队中 var list2 = qBll.GetModelList(windowBusys, 1); //已完成 this.txtQueueCount.Text = (list.Count + list2.Count).ToString(); this.txtWait.Text = list.Count.ToString(); this.txtAlready.Text = list2.Count.ToString(); foreach (var l in list.OrderByDescending(o => o.ticketTime).ToList()) { if (qList.FirstOrDefault(q => q.ID == l.ID) == null) { frmMsg frm = new frmMsg(); frm.Ticket = l.qNumber; frm.Show(); break; } } qList = list; } catch (Exception ex) { File.AppendAllText(AppDomain.CurrentDomain.BaseDirectory + "log\\" + DateTime.Now.ToString("yyyy-MM-dd") + "\\Exception.txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " : " + ex.Message + "\r\n"); this.messageIndicator1.SetState(StateType.Error, "数据刷新异常,请核查网络!"); } }
//评价 private void EvaluateService() { lock (objLock) { LockAction.RunWindowLock(windowNo, () => { stateModel = csBll.GetModelByWindowNo(windowNo); if (stateModel == null) { stateModel = new FCallStateModel(); stateModel.windowNo = windowNo; stateModel.workState = (int)WorkState.Defalt; csBll.Insert(stateModel); } if (stateModel.workState == (int)WorkState.PauseService) { this.client.SendMessage(new OperateMessage() { WindowNo = windowNo, Operate = Operate.Reset }); stateModel.workState = stateModel.pauseState; csBll.Update(stateModel); } if (stateModel.workState == (int)WorkState.Call) { try { var model = cBll.GetModel(stateModel.callId); if (model == null) { return; } model.state = 1; cBll.Update(model); stateModel.workState = (int)WorkState.Evaluate; //stateModel.callId = 0; stateModel.ticketNo = ""; csBll.Update(stateModel); client.SendMessage(new RateMessage() //发送评价请求 { WindowNo = windowNo, RateId = model.handleId, ItemName = "项目名称", WorkDate = DateTime.Now.ToShortDateString(), Transactor = model.qNmae, reserveSeq = model.reserveSeq } ); //SendWait(adress); string mess = " [" + model.ticketNumber + "]号已评价。"; this.Invoke(new Action(() => { this.listView1.Items.Add(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff") + " : [" + model.ticketNumber + "]号已评价。"); })); WriterCallLog(2, mess); } catch (Exception ex) { WriterLog("评价异常:" + ex.Message); } } else { if (stateModel.workState == (int)WorkState.Defalt || stateModel.workState == (int)WorkState.Evaluate) { //SendWait(adress); } } }); } }