/// <summary> /// 在窗口中操作的特殊类型 /// </summary> /// <param name="type"></param> public void SetType(ETERM_COMMAND_TYPE type) { switch (type) { case ETERM_COMMAND_TYPE.RECEIPT_PRINT: this.m_cmdtype = type; break; case ETERM_COMMAND_TYPE.RECEIPT_CANCEL: this.m_cmdtype = type; break; case ETERM_COMMAND_TYPE.ETDZ_ONEKEY_RT: m_cmdtype = type; break; case ETERM_COMMAND_TYPE.ETDZ_ONEKEY_PAT: m_cmdtype = type; break; case ETERM_COMMAND_TYPE.ETDZ: m_cmdtype = type; break; case ETERM_COMMAND_TYPE.PNR_ORDER_SUBMIT: m_cmdtype = type; break; case ETERM_COMMAND_TYPE.QUEUE_CLEAR_AUTO: m_cmdtype = type; break; case ETERM_COMMAND_TYPE.RRT_AIRCODE2PNR: m_cmdtype = type; break; case ETERM_COMMAND_TYPE.TPR_IMPORT: m_cmdtype = type; break; case ETERM_COMMAND_TYPE.TOL_INCOMING: m_cmdtype = type; break; case ETERM_COMMAND_TYPE.SS_4PassengerAddForm: m_cmdtype = type; break; case ETERM_COMMAND_TYPE.DETR_ExpiredTicketFind: m_cmdtype = type; break; case ETERM_COMMAND_TYPE.DETR_GetReceiptNoFinance: m_cmdtype = type; break; default: throw new Exception("不能通过SetType设置,需要调用HandleCommand"); } }
void CheckXepnr() { ETERM_COMMAND_TYPE t = new ETERM_COMMAND_TYPE(); for (int i = 0; i < ls.Count; ++i) { t = CommandType(ls[i]); if (t == ETERM_COMMAND_TYPE.RT) { return; } } throw new Exception("\r\n请先RT操作"); }
/// <summary> /// 将待发送的指令送到池中处理,得到具体要发送的文本 /// </summary> public string HandleCommand(string cmd) { m_cmdtype = CommandType(cmd); switch (m_cmdtype) { case ETERM_COMMAND_TYPE.AV: if (EagleString.egString.right(cmd.ToLower().Trim(), 3) == "/eg") { System.Windows.Forms.MessageBox.Show("AV指令不可以自动翻页"); return(""); } break; case ETERM_COMMAND_TYPE.DETR: ls.Clear(); break; case ETERM_COMMAND_TYPE.DETRF: ls.Clear(); break; case ETERM_COMMAND_TYPE.TRFD: ls.Clear(); break; case ETERM_COMMAND_TYPE.TRFU: ls.Clear(); break; case ETERM_COMMAND_TYPE.TRFX: ls.Clear(); break; case ETERM_COMMAND_TYPE.QT: ls.Clear(); break; case ETERM_COMMAND_TYPE.TPR: ls.Clear(); break; case ETERM_COMMAND_TYPE.TSL: ls.Clear(); break; case ETERM_COMMAND_TYPE.ETDZ: if (ls[0].ToLower().IndexOf("rt") != 0) { throw new Exception("未产生PNR,不能ETDZ"); } break; } if (!RelationCommand(cmd)) { return(cmd); } string s = cmd.ToLower(); if (s == "i" || s == "ig") { m_cmdtype = ETERM_COMMAND_TYPE.NONE; ls.Clear(); return("i"); } if (ls.Count > 0) { string last = ls[ls.Count - 1]; if (SameCommand(s)) { if (s.IndexOf("xe") == 0 || s.IndexOf("pn") == 0 || s.IndexOf("pb") == 0) { ls.Add(s);//不重复上一次指令才增加(XE,PN,PB除外) } else { ls.RemoveAt(ls.Count - 1); ls.Add(s);//替换掉最后一个指令 } } else { if (last.IndexOf("@") >= 0 || last.IndexOf("\\") >= 0)//若上一条为封口,则先清空 { ls.Clear(); } ls.Add(s); } } else { ls.Add(s); } CommandSendControl(s); return("i~" + string.Join("~", ls.ToArray())); }
/// <summary> /// 在池中处理前,判断该指令的类型,以便与返回结果结合做相应处理 /// </summary> private ETERM_COMMAND_TYPE CommandType(string cmd) { string s = cmd.ToLower().Trim(); ETERM_COMMAND_TYPE ret = ETERM_COMMAND_TYPE.NONE; if (s.IndexOf("a") == 0)//AV指令可缩写为A { ret = ETERM_COMMAND_TYPE.AV; } else if (s.IndexOf("etdz") == 0) { ret = ETERM_COMMAND_TYPE.ETDZ; } else if (s.IndexOf("trfd") == 0) { ret = ETERM_COMMAND_TYPE.TRFD; } else if (s.IndexOf("trfx") == 0) { ret = ETERM_COMMAND_TYPE.TRFX; } else if (s.IndexOf("rt") == 0) { if (s.Length >= 7) { ret = ETERM_COMMAND_TYPE.RT; if (EagleString.egString.right(s, 3).ToLower() == "/eg" && s.Length >= 10) { string temp = s.Substring(0, s.Length - 3).Trim(); //m_rtpnr = egString.right(temp, 5);//modified by king 2010.12.07 升级6位PNR m_rtpnr = s.Substring(temp.LastIndexOf("/") + 1); } else { //m_rtpnr = egString.right(s, 5);//modified by king 2010.12.07 升级6位PNR m_rtpnr = s.Substring(s.LastIndexOf("/") + 1); } } } else if (s.IndexOf("sfc") == 0) { ret = ETERM_COMMAND_TYPE.SFC; } else if (s.IndexOf("pat") == 0) { ret = ETERM_COMMAND_TYPE.PAT; } else if (IsEntireSsCommand(s)) { ret = ETERM_COMMAND_TYPE.SS; } else if (s.IndexOf("xepnr") == 0) { ret = ETERM_COMMAND_TYPE.XEPNR; } else if (s.IndexOf("pn") == 0) { ret = ETERM_COMMAND_TYPE.PN; } else if (s.IndexOf("detr") == 0 && s.IndexOf(",f") > 0) { ret = ETERM_COMMAND_TYPE.DETRF; } else if (s.IndexOf("detr") == 0) { ret = ETERM_COMMAND_TYPE.DETR; } else if (s.IndexOf("tpr") == 0) { ret = ETERM_COMMAND_TYPE.TPR; } else if (s.IndexOf("tsl") == 0) { ret = ETERM_COMMAND_TYPE.TSL; } else if (s[0] >= '0' && s[0] <= '9') { ret = ETERM_COMMAND_TYPE.MODIFYING; } else if (s.IndexOf("fd") == 0) { ret = ETERM_COMMAND_TYPE.FD; } return(ret); }
/// <summary> /// 设置指令类型 /// </summary> /// <param name="cmd"></param> /// <returns></returns> public void SetCommandType(string cmd) { m_cmdtype = CommandType(cmd); }