private List <Tb_Ticket_Passenger> getPassenger(PnrModel pnrModel) { var result = pnrModel._PassengerList.Select((p) => { var r = new Tb_Ticket_Passenger() { PassengerName = p.PassengerName, PassengerType = int.Parse(p.PassengerType), Cid = p.SsrCardID, }; return(r); }).ToList(); return(result); }
///// <summary> ///// 审核中 ///// </summary> ///// <param name="OperationType">0 审核中 </param> ///// <param name="msg"></param> ///// <returns></returns> //private void ProcessNew(int OperationType) //{ // bool result = false; // string msg = ""; // try // { // Tb_Ticket_Order mOrder = ViewState["Order"] as Tb_Ticket_Order; // List<Tb_Ticket_Passenger> PassengerList = ViewState["PassengerList"] as List<Tb_Ticket_Passenger>; // PbProject.Logic.Order.Tb_Ticket_OrderBLL orderBll = new PbProject.Logic.Order.Tb_Ticket_OrderBLL(); // #region 处理订单状态 // int OrderType = mOrder.TicketStatus; //3.退 4.废 5.改 // if (OperationType == 0 && (mOrder.OrderStatusCode == 6 || mOrder.OrderStatusCode == 7 || mOrder.OrderStatusCode == 8)) //审核中 // { // //修改订单状态为 审核中 // if (OrderType == 3) // mOrder.OrderStatusCode = 29; // else if (OrderType == 4) // mOrder.OrderStatusCode = 30; // else if (OrderType == 5) // mOrder.OrderStatusCode = 31; // string content = ""; // #region 记录手续费日志 // // 11 13 16 17 21 22 29 30 // if (mOrder.OrderStatusCode == 29 || mOrder.OrderStatusCode == 30) // { // string temp = ""; // bool re = false; // mOrder.A4 = DateTime.Parse(txtA4.Text.Trim()); // mOrder.A6 = decimal.Parse(txtA6.Text.Trim()); // //计算每个乘机人的手续费 // List<Tb_Ticket_Passenger> pasList = GetPassengerList(PassengerList, mOrder); // foreach (Tb_Ticket_Passenger item in pasList) // { // if (item.TGQHandlingFee > 0) // re = true; // temp += item.TGQHandlingFee + "/"; // } // temp = temp.TrimEnd('/'); // if (re) // { // //有手续费 // //记录日志 // content = "手续费:" + temp; // } // } // #endregion // result = orderBll.OperOrderTFGSHZ(mOrder, mUser, mCompany, content); // } // #endregion // msg = result == true ? "操作成功!" : "操作失败"; // } // catch (Exception ex) // { // msg = "处理出错"; // } // Page.ClientScript.RegisterStartupScript(this.GetType(), DateTime.Now.Ticks.ToString(), "showdialogOne('" + msg + "','OrderTGQList.aspx?currentuserid=" + this.currentuserid.Value.ToString() + "');", true); //} /// <summary> /// 获取乘机人信息 /// </summary> /// <returns></returns> public List <Tb_Ticket_Passenger> GetPassengerList(List <Tb_Ticket_Passenger> pasList, Tb_Ticket_Order Order) { if (Order != null && pasList != null && pasList.Count > 0) { //decimal TotalTGQHandlingFee = Order.TGQHandlingFee; decimal TotalTGQHandlingFee = 0; int Count = RepPassenger.Items.Count; for (int i = 0; i < Count; i++) { System.Web.UI.HtmlControls.HtmlInputText input = RepPassenger.Items[i].FindControl("txtTGQHandlingFee") as System.Web.UI.HtmlControls.HtmlInputText; System.Web.UI.HtmlControls.HtmlInputHidden Hid_Id = RepPassenger.Items[i].FindControl("Hid_Id") as System.Web.UI.HtmlControls.HtmlInputHidden; if (Hid_Id != null) { string id = Hid_Id.Value; Tb_Ticket_Passenger PasModel = pasList.Find(delegate(Tb_Ticket_Passenger _pas) { return(_pas.id.ToString() == id); }); if (PasModel != null) { if (input != null) { decimal TGQHandlingFee = 0; if (decimal.TryParse(input.Value, out TGQHandlingFee)) { PasModel.TGQHandlingFee = TGQHandlingFee; TotalTGQHandlingFee += TGQHandlingFee; } } } } } Order.TGQHandlingFee = TotalTGQHandlingFee; } return(pasList); }
/// <summary> /// 处理退改签 处理 /// </summary> private string TGQ(UserLoginInfo userInfo, Tb_Ticket_Order Order, List <Tb_Ticket_SkyWay> OldSkyWayList, List <HashObject> newSkyWay, List <Tb_Ticket_Passenger> oldPassengerList, List <HashObject> newPasList, string TGQRemark, string quitReasonType, string reason) { bool result = false; string msg = ""; //选择申请类型 int ApplayType = int.Parse(CommonMethod.GetFomartString(parames["ApplayType"])); try { //订单管理类 Tb_Ticket_OrderBLL OrderManage = new Tb_Ticket_OrderBLL(); List <Tb_Ticket_Passenger> tempPassengerList = new List <Tb_Ticket_Passenger>(); //记录出票订单id List <string> passengerId = new List <string>(); List <Tb_Ticket_Passenger> NewPassengerList = new List <Tb_Ticket_Passenger>(); Tb_Ticket_Passenger Passenger = null; //新订单号 string NewOrderId = OrderManage.GetOrderId("0"); int TicketNum = 0; #region 处理乘机人 string strId = "", IsChecked = "0"; for (int i = 0; i < newPasList.Count; i++) { Passenger = new Tb_Ticket_Passenger(); //strId = newPasList[i].GetValue<string>("id"); strId = newPasList[i]["id"].ToString(); //IsChecked = newPasList[i].GetValue<string>("IsChecked"); IsChecked = newPasList[i]["IsChecked"].ToString(); Guid id = Guid.Parse(strId); if (oldPassengerList != null && oldPassengerList.Count > 0) { tempPassengerList = oldPassengerList.Where(w => w.id == id).ToList <Tb_Ticket_Passenger>(); } if (tempPassengerList != null && tempPassengerList.Count > 0) { Passenger = tempPassengerList[0]; } //选中的乘客 if (IsChecked == "1") { //原乘客id //passengerId.Add(newPasList[i].GetValue<string>("id")); passengerId.Add(newPasList[i]["id"].ToString()); Passenger.id = Guid.NewGuid(); NewPassengerList.Add(Passenger); TicketNum++; } } #endregion #region 处理航段表 //改签用到航班号和舱位 List <string> FlightCodeList = new List <string>(); List <string> SpaceList = new List <string>(); //临时日期 DateTime TempDate = DateTime.Parse("1901-01-01"); DateTime fromDate = DateTime.Parse("1901-01-01"); for (int i = 0; i < OldSkyWayList.Count; i++) { //处理改签航段 if (ApplayType == 5) { foreach (HashObject skyParam in newSkyWay) { //找到相同航段id if (skyParam.GetValue <string>("SkyId") == OldSkyWayList[i].id.ToString()) { if (DateTime.TryParse(skyParam.GetValue <string>("FromDate"), out fromDate)) { OldSkyWayList[i].FromDate = fromDate; } if (TempDate.ToString("yyyy-MM-dd") == "1901-01-01") { TempDate = OldSkyWayList[i].FromDate; } if (DateTime.TryParse(skyParam.GetValue <string>("ToDate"), out fromDate)) { OldSkyWayList[i].ToDate = fromDate; } OldSkyWayList[i].FlightCode = skyParam.GetValue <string>("FlightCode"); OldSkyWayList[i].Space = skyParam.GetValue <string>("Space"); //航班号和舱位 FlightCodeList.Add(OldSkyWayList[i].FlightCode); SpaceList.Add(OldSkyWayList[i].Space); } } } //新id OldSkyWayList[i].id = Guid.NewGuid(); } #endregion if (TicketNum == 0) { msg = "请选择乘客!"; } else { string PassengerNameS = ""; foreach (Tb_Ticket_Passenger item in NewPassengerList) { PassengerNameS += item.PassengerName + "|"; } PassengerNameS = PassengerNameS.TrimEnd('|'); //新id Order.id = Guid.NewGuid(); Order.PassengerName = PassengerNameS; Order.PassengerNumber = NewPassengerList.Count; Order.OldOrderId = Order.OrderId; //原订单号 Order.OrderId = NewOrderId; //新订单号 //Order.PayNo = ""; Order.InPayNo = new PbProject.Logic.Order.Tb_Ticket_OrderBLL().GetIndexId(); Order.TicketStatus = ApplayType; //机票状态 Order.CreateTime = DateTime.Now; Order.YDRemark = TGQRemark; //退改签申请备注 Order.PayDebtsMoney = 0; Order.LockLoginName = ""; Order.LockCpyNo = ""; Order.LockTime = DateTime.Parse("1900-01-01 00:00:00.000"); string strType = ""; if (ApplayType == 3)//退票 { Order.OrderStatusCode = 7; Order.A8 = quitReasonType; if (quitReasonType == "1") { strType = "自愿申请"; Order.TGQApplyReason = reason + "--自愿申请"; //申请退票理由:自愿 } else { strType = "非自愿申请"; Order.TGQApplyReason = reason + "--非自愿申请"; //申请退票理由:非自愿 } } else if (ApplayType == 4)//废票 { Order.OrderStatusCode = 8; Order.TGQApplyReason = reason; //申请废票理由 } else if (ApplayType == 5) //改签 { Order.OrderStatusCode = 6; Order.AirTime = TempDate; Order.FlightCode = string.Join("/", FlightCodeList.ToArray()); Order.Space = string.Join("/", SpaceList.ToArray()); //改签申请理由 Order.TGQApplyReason = reason; //改签处理其它参数 Order.PayWay = 0; //默认支付方式 Order.PayNo = ""; } string isContent = ""; //是否保留编码日志 //生成订单 result = OrderManage.CreateOrderTFG(Order, NewPassengerList, passengerId, OldSkyWayList, userInfo.User, userInfo.Company, strType, isContent, out msg); } } catch (Exception ex) { } string values = ""; if (result) { values = "订单申请成功!"; } else { if (string.IsNullOrEmpty(msg)) { if (ApplayType == 3) { values = "订单申请退票失败!"; } else if (ApplayType == 4) { values = "订单申请废票失败!"; } else if (ApplayType == 5) { values = "订单申请改签失败!"; } } else { values = msg; } } return(values); }
/// <summary> /// 获取乘机人 /// </summary> /// <returns></returns> public List <Tb_Ticket_Passenger> GetPassengerList() { string[] strPasName = new string[] { "刘梦雯", "黄翔", "李忠", "杨晓红", "幸坤建", "刘爱珠", "陈国利", "何晓波", "王学成", "郝连娟", "周廷洋", "李财玉", "刘雪琴", "沈军", "朱万春", "姚贵玉", "李静", "翁琳", "吴俊", "陈刚", "李芳明" }; string[] strPasId = new string[] { "522321196906260415", "652827196911273119", "432426197011210371", "510211196911223422", "610402197003061299", "152221199002091849", "510525198503118432", "142327198010040213", "152224198212097581", "522423198112197319", "650202194410110716", "513624198010185727", "650300197207290332", "653201197604071014", "520102196102045822", "420105198009073647", "510226197305057187", "522423195403290026", "512923197410241294", "43022519760706153X", "620121196709260556" }; List <Tb_Ticket_Passenger> paslist = new List <Tb_Ticket_Passenger>(); try { //随机取一位乘客 Random rd = new Random((int)System.DateTime.Now.Ticks); int i = rd.Next(0, strPasName.Length); Tb_Ticket_Passenger Passenger = new Tb_Ticket_Passenger(); Passenger.PassengerName = strPasName[i]; Passenger.PassengerType = 1; Passenger.Cid = strPasId[i]; paslist.Add(Passenger); } catch (Exception) { Tb_Ticket_Passenger Passenger = new Tb_Ticket_Passenger(); Passenger.PassengerName = "张三"; Passenger.PassengerType = 1; Passenger.Cid = "2525145554"; paslist.Add(Passenger); } return(paslist); }
/* BSP常见错误信息 * MRT:HT0LYJ IGNORED * INCOMPLETE PNR/FN * PLEASE CHECK TKT ELEMENT * CHECK BLINK CODE * ELE NBR */ /// <summary> /// BSP订单处理 /// </summary> /// <param name="Order"></param> private void BspHandle(Tb_Ticket_Order Order, List <ListParam> LPList, BSPShowLog Log) { //订单日志 StringBuilder sbLog = new StringBuilder(); if (Order != null) { //订单出票公司信息 ListParam TicketLP = LPList.Find(delegate(ListParam _tempLP) { return(Order.OwnerCpyNo.Contains(_tempLP.CpyNo)); }); //编码解析类 PnrAnalysis.FormatPNR pnrFormat = new PnrAnalysis.FormatPNR(); //判断标识 List <string> NumTickList = new List <string>(); List <string> PTList = null; List <Tb_Ticket_Passenger> PasList = null; try { Log(0, System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "订单号:" + Order.OrderId + "=======================start=====================\r\n"); string GYCpyNo = Order.OwnerCpyNo; if (GYCpyNo.Length >= 12) { GYCpyNo = GYCpyNo.Substring(0, 12); } string CarrayCode = Order.CarryCode.Split('/')[0]; Tb_Ticket_PrintOffice PrintOffice = GetPrintOffice(GYCpyNo, CarrayCode); if (PrintOffice == null || PrintOffice.PrintCode == "") { Log(0, string.Format("{0}未设置打票机号,请手动出票!", CarrayCode)); sbLog.Append(string.Format("{0}未设置打票机号,请手动出票!", CarrayCode)); return; } //出票Office string pOffice = string.IsNullOrEmpty(PrintOffice.OfficeCode) ? Order.PrintOffice : PrintOffice.OfficeCode; string PrintCode = PrintOffice.PrintCode; string Pnr = Order.PNR;//Pnr编码 if (pOffice == "") { Log(0, string.Format("{0}出票Office不能为空!", CarrayCode)); sbLog.Append(string.Format("{0}出票Office不能为空!", CarrayCode)); return; } //获取乘客 string sqlWhere = string.Format(" OrderId='{0}' order by PassengerType", Order.OrderId); Tb_Ticket_Passenger pMode = null; PasList = Manage.CallMethod("Tb_Ticket_Passenger", "GetList", null, new object[] { sqlWhere }) as List <Tb_Ticket_Passenger>; if (PasList == null || PasList.Count == 0) { Log(0, string.Format("订单号:{0}没有找到对应的乘客信息!", Order.OrderId)); sbLog.Append(string.Format("订单号:{0}没有找到对应的乘客信息!", Order.OrderId)); return; } else { pMode = PasList[0]; } List <Bd_Base_Parameters> baseParamList = Manage.CallMethod("Bd_Base_Parameters", "GetList", null, new Object[] { "CpyNo='" + GYCpyNo + "'" }) as List <Bd_Base_Parameters>; ConfigParam config = Bd_Base_ParametersBLL.GetConfigParam(baseParamList); //指令管理类 //SendInsManage SendManage = new SendInsManage(Order.OwnerCpyNo, GYCpyNo, config); if (config == null) { Log(0, string.Format("订单号{0},公司{1}未设置使用配置信息,请设置!", Order.OrderId, CarrayCode)); sbLog.Append(string.Format("订单号{0},公司{1}未设置使用配置信息,请设置!", Order.OrderId, CarrayCode)); return; } if (string.IsNullOrEmpty(Order.PNR)) { Log(0, string.Format("订单号{0}中没有PNR,请检查!", Order.OrderId)); sbLog.Append(string.Format("订单号{0}中没有PNR,请检查!", Order.OrderId)); return; } ParamObject PM = new ParamObject(); PM.ServerIP = config.WhiteScreenIP; PM.ServerPort = int.Parse(config.WhiteScreenPort); PM.Office = pOffice; //发送指令 string SendIns = "RT" + Pnr; //返回数据 string Recvdata = string.Empty; PM.code = SendIns; PM.IsPn = true; // Recvdata = SendNewPID.SendCommand(PM); Recvdata = WriteLogDB(PM, TicketLP); //指令日志 Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata)); //授权检查 if (Recvdata.ToUpper().Contains("授权")) { Log(0, string.Format("订单号{0},编码{1} 出票Office{2},发送指令需要授权!", Order.OrderId, Pnr, pOffice)); sbLog.Append(string.Format("订单号{0},编码{1} 出票Office{2},发送指令需要授权!", Order.OrderId, Pnr, pOffice)); return; } else if (Recvdata.ToUpper().Contains("CANCELLED")) { Log(0, string.Format("订单号{0},编码{1} 出票Office{2},编码已取消,出票失败!", Order.OrderId, Pnr, pOffice)); sbLog.Append(string.Format("订单号{0},编码{1} 出票Office{2},编码已取消,出票失败!", Order.OrderId, Pnr, pOffice)); return; } string Msg = ""; string Xe = "", RR = ""; string PnrStatus = pnrFormat.GetPnrStatus(Recvdata, out Msg); if (PnrStatus.Contains("NO")) { Log(0, string.Format("订单号{0},编码{1} 出票Office{2},编码状态为{3},不能自动出票!!", Order.OrderId, Pnr, pOffice, PnrStatus)); sbLog.Append(string.Format("订单号{0},编码{1} 出票Office{2},编码状态为{3},不能自动出票!!", Order.OrderId, Pnr, pOffice, PnrStatus)); return; } //存在的票号 PTList = GetTicketNum(Pnr, Recvdata.ToUpper(), pnrFormat); List <string> RRList = null; List <string> XEList = null; if (PTList.Count == 0) { Start: { //进行出票 HashObject hash = GetNumList(Recvdata); XEList = hash["XEList"] as List <string>; RRList = hash["RRList"] as List <string>; List <string> StartXeList = hash["StartXeList"] as List <string>; //XE项 if (StartXeList.Count > 0) { for (int i = 0; i < StartXeList.Count; i++) { string XeStr = StartXeList[i]; if (XeStr != "") { //发送指令 SendIns = "RT" + Pnr + "|XE" + XeStr + "|@"; PM.code = SendIns; PM.IsPn = false; //Recvdata = SendNewPID.SendCommand(PM);//MRT:JG61M2 IGNORED Recvdata = WriteLogDB(PM, TicketLP); //指令日志 Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata)); //判断是否XE成功 if (pnrFormat.INFMarkIsOK(Recvdata, out Msg)) { /* 3U8881 E TU30APR CTUPEK HK1 0730 1005 * JG61M2 - 航空公司使用自动出票时限, 请检查PNR *** 预订酒店指令HC, 详情 HC:HELP *** */ //发送指令 SendIns = "RT" + Pnr; PM.code = SendIns; PM.IsPn = true; //Recvdata = SendNewPID.SendCommand(PM); Recvdata = WriteLogDB(PM, TicketLP); //指令日志 Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata)); goto Start; } } } } } string patPrice = "pat:a"; if (!Order.IsChdFlag) { //成人 patPrice = "pat:a"; } else { //儿童 patPrice = "pat:a*ch"; } //发送指令 SendIns = "RT" + Pnr + "|" + patPrice; PM.code = SendIns; PM.IsPn = false; //Recvdata = SendNewPID.SendCommand(PM); Recvdata = WriteLogDB(PM, TicketLP); //指令日志 Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata)); if (Recvdata.IndexOf("PAT") == -1) { //发送指令 Log(0, string.Format("订单号{0},编码{1} 出票Office{2},编码已取消,未能PAT出票价,出票失败!", Order.OrderId, Pnr, pOffice)); sbLog.Append(string.Format("订单号{0},编码{1} 出票Office{2},编码已取消,未能PAT出票价,出票失败!", Order.OrderId, Pnr, pOffice)); return; } //比较 string xuhao = "", Seat = "", Err = ""; decimal _xsFare = 0m; bool IsExistParice = false; PnrAnalysis.PatModel PAT = pnrFormat.GetPATInfo(Recvdata.Replace("\r", ""), out Err); foreach (PatInfo pat in PAT.UninuePatList) { decimal.TryParse(pat.Fare, out _xsFare); //存在此价格 if (_xsFare == pMode.PMFee) { IsExistParice = true; xuhao = pat.SerialNum; Seat = pat.SeatGroup; break; } } if (!IsExistParice) { Log(0, string.Format("订单号{0},编码{1} 出票Office{2},舱位价{3}与Pat价格{4}不一致,出票失败!", Order.OrderId, Pnr, pOffice, pMode.PMFee, _xsFare)); sbLog.Append(string.Format("订单号{0},编码{1} 出票Office{2},舱位价{3}与Pat价格{4}不一致,出票失败!", Order.OrderId, Pnr, pOffice, pMode.PMFee, _xsFare)); return; } //做价格进去 SendIns = "RT" + Pnr + "|" + patPrice + "|SFC:" + xuhao + "|@"; PM.code = SendIns; PM.IsPn = false; //Recvdata = SendNewPID.SendCommand(PM); Recvdata = WriteLogDB(PM, TicketLP); //指令日志 Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata)); if (Recvdata.Contains("超时") || Recvdata.Contains("NO PNR")) { //Recvdata = SendNewPID.SendCommand(PM); Recvdata = WriteLogDB(PM, TicketLP); //指令日志 Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata)); } //做备注 decimal _Discount = 0m; if (decimal.TryParse(Order.Discount, out _Discount) && Order.Space.IndexOf("Y") == -1 && Order.Space.IndexOf("C") == -1 && Order.Space.IndexOf("F") == -1 && _Discount < 100) { //做价格进去 SendIns = "RT" + Pnr + "|EI:不得签转|@"; PM.code = SendIns; PM.IsPn = false; //Recvdata = SendNewPID.SendCommand(PM); Recvdata = WriteLogDB(PM, TicketLP); //指令日志 Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata)); if (Recvdata != "" && Recvdata.Contains("超时")) { //Recvdata = SendNewPID.SendCommand(PM); Recvdata = WriteLogDB(PM, TicketLP); //指令日志 Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata)); } } foreach (string item in XEList) { if (item != "") { Xe += "XE" + item + "|"; } } foreach (string item in RRList) { if (item != "") { RR += item + "RR" + "|"; } } if (Xe.Trim(new char[] { '|' }) == "") { Xe = ""; } else { Xe = "|" + Xe.Trim('|') + "|"; } if (RR.Trim(new char[] { '|' }) == "") { RR = ""; } else { RR = "|" + RR.Trim('|') + "|"; } if (RR == "") { RR = "|"; } if (XEList == null || XEList.Count == 0 || Xe == "") { Log(0, string.Format("订单号{0},编码{1} 出票Office{2},编码状态为{3},未能取出出票时限!!", Order.OrderId, Pnr, pOffice, PnrStatus)); sbLog.Append(string.Format("订单号{0},编码{1} 出票Office{2},编码状态为{3},未能取出出票时限!!", Order.OrderId, Pnr, pOffice, PnrStatus)); return; } //组合打票指令 string etdz = "rt" + Pnr + Xe + RR.TrimEnd('|') + "|ETDZ " + PrintCode; etdz = etdz.Replace("||", "|"); //出票 SendIns = etdz; PM.code = SendIns; PM.IsPn = false; // Recvdata = SendNewPID.SendCommand(PM); Recvdata = WriteLogDB(PM, TicketLP); //指令日志 Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata)); if (Recvdata.Contains("超时") || Recvdata.Contains("NO PNR")) { //Recvdata = SendNewPID.SendCommand(PM); Recvdata = WriteLogDB(PM, TicketLP); //指令日志 Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata)); } if (Recvdata.Contains("请输入证件信息")) { Log(0, string.Format("订单号{0},编码{1} 出票Office{2},编码状态为{3},编码中没有证件号,请输入证件信息,否则不能出票!", Order.OrderId, Pnr, pOffice, PnrStatus)); sbLog.Append(string.Format("订单号{0},编码{1} 出票Office{2},编码状态为{3},编码中没有证件号,请输入证件信息,否则不能出票!", Order.OrderId, Pnr, pOffice, PnrStatus)); return; } if (Recvdata.ToUpper().Contains("STOCK")) { Log(0, string.Format("订单号{0},编码{1} 出票Office{2},编码状态为{3}," + Recvdata + "没有票号了!", Order.OrderId, Pnr, pOffice, PnrStatus)); sbLog.Append(string.Format("订单号{0},编码{1} 出票Office{2},编码状态为{3}," + Recvdata + "没有票号了!", Order.OrderId, Pnr, pOffice, PnrStatus)); return; } //出票成功 if (Recvdata.Contains("CNY") && Recvdata.ToUpper().Contains(Pnr.ToUpper())) { /*CNY2730.00 HF9550 * 876-3250823439 876-3250823441 */ SendIns = "RT" + Pnr; PM.code = SendIns; PM.IsPn = true; //Recvdata = SendNewPID.SendCommand(PM); Recvdata = WriteLogDB(PM, TicketLP); //指令日志 Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata)); //存在的票号 PTList = GetTicketNum(Pnr, Recvdata.ToUpper(), pnrFormat); } else { //出票失败 重试 if (!Recvdata.ToUpper().Contains("**ELECTRONIC TICKET PNR**") && Recvdata.ToUpper().Contains("SSR TKNE") && Recvdata.ToUpper().Contains("/DPN") && Recvdata.ToUpper().Contains("RMK " + CarrayCode + "/")) { //"ETRY:" 重试指令 SendIns = "RT" + Pnr + "|ETRY:"; PM.code = SendIns; PM.IsPn = false; //Recvdata = SendNewPID.SendCommand(PM); Recvdata = WriteLogDB(PM, TicketLP); //指令日志 Log(0, string.Format("\r\n【订单号{0}】发送指令>{1}\r\n接收数据:\r\n{2}\r\n", Order.OrderId, SendIns, Recvdata)); } else { Log(0, string.Format("订单号{0},编码{1} 出票Office{2},编码状态为{3}," + "出票失败,{4}", Order.OrderId, Pnr, pOffice, PnrStatus, Recvdata)); sbLog.Append(string.Format("订单号{0},编码{1} 出票Office{2},编码状态为{3}," + "出票失败,{4}", Order.OrderId, Pnr, pOffice, PnrStatus, Recvdata)); } } } } catch (Exception ex) { Log(0, string.Format("订单号{0},出票异常:{1}", Order.OrderId, ex.Message + ex.Source + ex.StackTrace.ToString())); sbLog.Append(string.Format("订单号{0},出票异常:{1}", Order.OrderId, ex.Message + ex.Source + ex.StackTrace.ToString())); } finally { string TicketMsg = ""; Log_Tb_AirOrder OrderLog = new Log_Tb_AirOrder(); //执行SQl语句 List <string> sqlList = new List <string>(); //修改订单数据列表 List <string> OrderList = new List <string>(); if (TicketLP != null) { //解锁 OrderList.Add(" LockCpyNo='' "); OrderList.Add(" LockLoginName='' "); OrderList.Add(" LockTime='1900-01-01' "); OrderList.Add(" CPTime=getdate() "); OrderList.Add(" CPName='管理员' "); OrderList.Add(string.Format(" CPCpyNo='{0}' ", TicketLP.CpyNo)); OrderList.Add(" CPRemark='BSP自动出票' "); OrderList.Add(string.Format(" CPCpyName='{0}' ", TicketLP.UninAllName)); //日志 OrderLog.id = Guid.NewGuid(); OrderLog.OrderId = Order.OrderId; OrderLog.OperType = "出票"; OrderLog.OperTime = DateTime.Now; OrderLog.OperLoginName = "管理员"; OrderLog.OperUserName = "******"; OrderLog.CpyNo = TicketLP.CpyNo; OrderLog.CpyType = 1; OrderLog.CpyName = TicketLP.UninAllName; } if (PTList != null && PTList.Count > 0 && PasList != null && PasList.Count > 0) { string PasName = "", TicketNumber = ""; for (int i = 0; i < PTList.Count; i++) { if (PTList[i].Split('|').Length == 2) { TicketNumber = PTList[i].Split('|')[0]; PasName = PTList[i].Split('|')[1]; Tb_Ticket_Passenger Passenger = PasList.Find(delegate(Tb_Ticket_Passenger _tempPassenger) { return(PTList[i].ToUpper().Trim().Contains(_tempPassenger.PassengerName.ToUpper().Trim())); }); if (Passenger != null) { sqlList.Add(string.Format(" update Tb_Ticket_Passenger set TicketNumber='{0}',TicketStatus=2 where id='{1}' and PassengerName='{2}' ", TicketNumber, Passenger.id.ToString(), Passenger.PassengerName)); } } } //修改订单数据 OrderList.Add(" TicketStatus=2 "); OrderList.Add(" OrderStatusCode=4 "); if (OrderList.Count > 0) { sqlList.Add(string.Format(" update Tb_Ticket_Order set {0} where id='{1}' ", string.Join(",", OrderList.ToArray()), Order.id.ToString())); } //出票成功 TicketMsg = "出票成功"; OrderLog.WatchType = 5; //日志 OrderLog.OperContent = "订单号:" + Order.OrderId + " BSP自动出票成功," + string.Format(",", PasList.ToArray()); //修改数据库状态 } else { //出票失败 TicketMsg = "出票失败"; //修改订单自动出票尝试次数 if (Order.AutoPrintTimes > 3)//尝试次数大于3改为手动出票 { sqlList.Add(string.Format(" update Tb_Ticket_Order set AutoPrintFlag=0,AutoPrintTimes=CAST(AutoPrintTimes as int)+1 where id='{0}' ", Order.id.ToString())); } else { sqlList.Add(string.Format(" update Tb_Ticket_Order set AutoPrintTimes=CAST(AutoPrintTimes as int)+1 where id='{0}' ", Order.id.ToString())); } OrderLog.WatchType = 2; //日志 OrderLog.OperContent = "BSP自动出票失败," + sbLog.ToString(); } //日志 string tempSql = Dal.Mapping.MappingHelper <Log_Tb_AirOrder> .CreateInsertModelSql(OrderLog); sqlList.Add(tempSql); string Msg = ""; //修改数据库 if (!Manage.ExecuteSqlTran(sqlList, out Msg)) { Log(0, string.Format("订单号{0},修改数据库失败:{1}", Order.OrderId, Msg)); } Log(0, System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "订单号:" + Order.OrderId + " " + TicketMsg + "=======================end=====================\r\n"); } } }
/// <summary> /// 获取打印数据 /// </summary> /// <returns></returns> public PnrAnalysis.Model.TripPrintData GetPrintData() { PnrAnalysis.Model.TripPrintData model = null; if (Request["OrderId"] != null && Request["OrderId"].ToString() != "" && Request["PasId"] != null && Request["PasId"].ToString() != "") { model = new PnrAnalysis.Model.TripPrintData(); model.m_strOrderId = Request["OrderId"].ToString(); model.m_strPassengerId = Request["PasId"].ToString(); OrderInputParam InputParam = new OrderInputParam(); string ErrMsg = ""; //成人订单数据显示 InputParam = OrderBLL.GetOrder(model.m_strOrderId, InputParam, out ErrMsg); if (InputParam != null && InputParam.OrderParamModel.Count > 0) { OrderMustParamModel OMP = InputParam.OrderParamModel[0]; Tb_Ticket_Passenger Passenger = OMP.PasList.Find(delegate(Tb_Ticket_Passenger _TP) { return(_TP.id.ToString().ToUpper() == model.m_strPassengerId.ToUpper()); }); Tb_TripDistribution tb_tripdistribution = null; Tb_Ticket_Order Order = OMP.Order; List <Tb_Ticket_SkyWay> skyList = OMP.SkyList; PbProject.Model.ConfigParam config = this.configparam; if (Passenger != null && Order != null) { if (Passenger.TravelNumber.Trim() != "") { string sqlWhere = string.Format(" TripNum='{0}' and UseCpyNo='{1}' ", Passenger.TravelNumber.Trim(), Order.OwnerCpyNo); List <Tb_TripDistribution> TTPList = this.baseDataManage.CallMethod("Tb_TripDistribution", "GetList", null, new object[] { sqlWhere }) as List <Tb_TripDistribution>; if (TTPList != null && TTPList.Count > 0) { tb_tripdistribution = TTPList[0]; } } //管理员 if (mCompany.RoleType == 1) { string GYCpyNo = Order.OwnerCpyNo; if (Order.OwnerCpyNo.Length >= 12) { GYCpyNo = GYCpyNo.Substring(0, 12); } List <Bd_Base_Parameters> baseParamList = baseDataManage.CallMethod("Bd_Base_Parameters", "GetList", null, new Object[] { "CpyNo='" + GYCpyNo + "'" }) as List <Bd_Base_Parameters>; config = Bd_Base_ParametersBLL.GetConfigParam(baseParamList); } #region 获取 配置号 if (tb_tripdistribution != null) { //航协号 model.m_strIataCode = tb_tripdistribution.IataCode; //中文填开单位 model.m_strCNTKTConjunction = tb_tripdistribution.OwnerCpyName; //office model.m_strAgentOffice = tb_tripdistribution.CreateOffice; //行程单号 model.m_strTravelNumber = tb_tripdistribution.TripNum; } else { //行程单号为空时 if (config != null) { string PrintOffice = GetPrintOffice(Order.OwnerCpyNo, Order.CarryCode.Split('/')[0]); string[] Arroffice = config.Office.Split('^'); //office string[] ArrIataCode = config.IataCode.Split('^'); //航协号 string[] ArrTicketCompany = config.TicketCompany.Split('^'); //公司名称 for (int i = 0; i < Arroffice.Length; i++) { if (Arroffice.Length == ArrIataCode.Length && Arroffice.Length == ArrTicketCompany.Length) { if (PrintOffice == "") { //Office model.m_strAgentOffice = Arroffice[i]; //中文填开单位 model.m_strCNTKTConjunction = ArrTicketCompany[i]; //航协号 model.m_strIataCode = ArrIataCode[i];//航协号 break; } else { if (PrintOffice.ToUpper() == Arroffice[i].ToUpper()) { //Office model.m_strAgentOffice = Arroffice[i]; //Office //中文填开单位 model.m_strCNTKTConjunction = ArrTicketCompany[i]; //填开单位 //航协号 model.m_strIataCode = ArrIataCode[i]; //航协号 break; } } } } } } #endregion //乘客姓名 model.m_strPassengerName = Passenger.PassengerName; //乘客证件号 model.m_strPassengerCardId = Passenger.Cid; //签注 model.m_strEndorsements = ddlEndorsements.SelectedValue; //小编码 model.m_strPnrB = Order.PNR.ToUpper(); //行程单号 model.m_strTravelNumber = Passenger.TravelNumber.Trim(); //舱位价 model.m_strSpaceFare = Passenger.PMFee.ToString("F2"); //基建费 model.m_strABFare = Passenger.ABFee.ToString("F2"); //燃油费 model.m_strFuelFare = Passenger.FuelFee.ToString("F2"); //总价 model.m_strTotalFare = (Passenger.PMFee + Passenger.ABFee + Passenger.FuelFee).ToString("F2"); //保险费 model.m_strInsuranceFare = "XXX"; //其他费用 model.m_strOtherFare = "0.00"; //票号 model.m_strTicketNumber = Passenger.TicketNumber; //验证码 model.m_strCheckNum = Passenger.TravelNumber.Length > 4 ? (Passenger.TravelNumber.Substring(Passenger.TravelNumber.Length - 4, 4)) : txtCheckNum.Value; //填开日期 model.m_strIssuedDate = System.DateTime.Now.ToString("yyyy-MM-dd"); //航段 if (skyList != null && skyList.Count > 0) { //第一段 model.m_strFCityName1 = skyList[0].FromCityName; //出发城市 model.m_strTCityName1 = skyList[0].ToCityName; //到达城市 model.m_strAirName1 = skyList[0].CarryName; //航空公司名称 model.m_strAirCode1 = skyList[0].CarryCode; //航空公司二字码 model.m_strFlightNum1 = skyList[0].FlightCode; //航班号 model.m_strSpace1 = skyList[0].Space.ToUpper(); //舱位 model.m_strTicketBasis1 = skyList[0].Space.ToUpper(); //舱位等级 model.m_strFlyDate1 = skyList[0].FromDate.ToString("yyyy-MM-dd"); model.m_strFlyStartTime1 = skyList[0].FromDate.ToString("HH:mm"); model.m_strFlyEndTime1 = skyList[0].ToDate.ToString("HH:mm"); //到达时间 model.m_strTerminal1 = skyList[0].Terminal; //航站楼 //行李 model.m_strAllowPacket1 = "20K"; if (model.m_strSpace1 == "C") { model.m_strAllowPacket1 = "30K"; } else if (model.m_strSpace1 == "F") { model.m_strAllowPacket1 = "40K"; } //------------------------------------------- //第二段 if (skyList.Count > 1) { model.m_strFCityName2 = skyList[1].FromCityName; //出发城市 model.m_strTCityName2 = skyList[1].ToCityName; //到达城市 model.m_strAirName2 = skyList[1].CarryName; //航空公司名称 model.m_strAirCode2 = skyList[1].CarryCode; //航空公司二字码 model.m_strFlightNum2 = skyList[1].FlightCode; //航班号 model.m_strSpace2 = skyList[1].Space.ToUpper(); //舱位 model.m_strTicketBasis2 = skyList[1].Space.ToUpper(); //舱位等级 model.m_strFlyDate2 = skyList[1].FromDate.ToString("yyyy-MM-dd"); model.m_strFlyStartTime2 = skyList[1].FromDate.ToString("HH:mm"); model.m_strFlyEndTime2 = skyList[1].ToDate.ToString("HH:mm"); //到达时间 model.m_strTerminal2 = skyList[1].Terminal; //航站楼 //行李 model.m_strAllowPacket2 = "20K"; if (model.m_strSpace2 == "C") { model.m_strAllowPacket2 = "30K"; } else if (model.m_strSpace2 == "F") { model.m_strAllowPacket2 = "40K"; } if (model.m_strFCityName2 == model.m_strTCityName1) { if (model.m_strFCityName1 != model.m_strTCityName2) { model.m_strTravelType = "3";//联程 } else { model.m_strTravelType = "2";//往返 } } else { if (skyList.Count == 2) { model.m_strTravelType = "4";//缺口程 } else { model.m_strTravelType = "5";//多程 } } } } } } } return(model); }