// 满员方案拆分为票 private void WriteTickets() { DataTable dt = new DAL.Views.V_SchemeSchedules().Open(ConnectionString, " ID, LotteryID, PlayTypeID, LotteryNumber, Multiple, Money", "Buyed = 0 and PrintOutType = 103 and (GetDate() between StartTime and EndTime) and Schedule >= 100 and not [ID] in (select SchemeID from T_SchemesSendToCenter)", "[ID]"); if (dt == null) { msg.Send("读取方案错误(WriteTickets)。"); log.Write("读取方案错误(WriteTickets)。"); return; } DAL.Tables.T_Schemes t_Schemes = new DAL.Tables.T_Schemes(); ElectronTicketBase.ElectronTicketTwo ElectronTicket = new ElectronTicketBase.ElectronTicketTwo(); foreach (DataRow dr in dt.Rows) { List <string> TicekList = ElectronTicket.ToResault(Convert.ToInt32(dr["PlayTypeID"].ToString()), dr["LotteryNumber"].ToString()); string LotterNumber = null; long SchemeID = Shove._Convert.StrToLong(dr["ID"].ToString(), -1); for (int j = 0; j < TicekList.Count; j++) { LotterNumber += TicekList[j].ToString() + ","; } int PlayTypeID = Shove._Convert.StrToInt(dr["PlayTypeID"].ToString(), -1); int Multiple = Shove._Convert.StrToInt(dr["Multiple"].ToString(), -1); decimal Money = Convert.ToDecimal(dr["Money"].ToString()); if ((SchemeID < 0) || (PlayTypeID < 0) || (Multiple < 1)) { msg.Send("读取方案错误(WriteTickets)。方案号:" + SchemeID.ToString()); log.Write("读取方案错误(WriteTickets)。方案号:" + SchemeID.ToString()); continue; } string TicketXML = "<Tickets>"; TicketXML += "<Ticket LotteryNumber=\"" + LotterNumber + "\" Multiple=\"" + Multiple + "\" Money=\"" + Money + "\" />"; TicketXML += "</Tickets>"; int ReturnValue = 0; string ReturnDescription = ""; int Result = DAL.Procedures.P_SchemesSendToCenterAdd(ConnectionString, SchemeID, PlayTypeID, TicketXML, ref ReturnValue, ref ReturnDescription); if ((Result < 0) || (ReturnValue < 0)) { msg.Send("票写入错误(WriteTickets):方案号:" + SchemeID.ToString() + "," + ReturnDescription); log.Write("票写入错误(WriteTickets):方案号:" + SchemeID.ToString() + "," + ReturnDescription); } } }
//向中民卓彩票出票接口发送票 发送类型102(投注请求) private void Send() { DataTable dt = new DAL.Views.V_SchemesSendToCenter().Open(ConnectionString, "", "Buyed = 0 and PrintOutType = 104 and (GetDate() between StartTime and EndTime) and ((Sends = 0) or (Sends < 3 and HandleResult = 0 and datediff(minute, [Datetime], GetDate()) > 3))", "[ID]"); if (dt == null) { log.Write("向中民卓彩票电子票网关发送数据出错:读取方案错误。"); return; } DAL.Tables.T_SchemesSendToCenter t_SchemesSendToCenter = new DAL.Tables.T_SchemesSendToCenter(); if (dt.Rows.Count < 1) { return; } int SendCount = 0; if ((dt.Rows.Count % 500) != 0) { SendCount = (dt.Rows.Count - (dt.Rows.Count % 500)) / 500 + 1; } else { SendCount = dt.Rows.Count / 500; } ElectronTicketBase.ElectronTicketTwo ElectronTicket = new ElectronTicketBase.ElectronTicketTwo(); for (int i = 0; i < SendCount; i++) { DateTime Now = DateTime.Now; for (int j = i * 500; j < (i * 500) + 500; j++) { if (j >= dt.Rows.Count) { break; } DataRow dr = dt.Rows[j]; string wParamStr = ""; string wSignStr = ""; try { var Ticket = dr["Ticket"].ToString().Split(','); string transcode = "102"; wParamStr = @"<?xml version='1.0' encoding='utf-8'?>"; wParamStr += @"<msg>"; wParamStr += @"<head transcode='" + transcode + "' partnerid='" + ElectronTicketbase_FC_Agent_UserNumber + "' version='1.0' time='" + DateTime.Now.ToString("yyyymmddhhmmss") + "'/>"; wParamStr += @"<body>"; wParamStr += @"<ticketorder lotteryid='" + ElectronTicket.GetLotteryID(dr["LotteryID"].ToString()) + "' issueid='" + ElectronTicket.GetToPalyIsuse(Convert.ToInt32(dr["LotteryID"].ToString()), dr["IsuseName"].ToString()) + "' ticketnum='" + Convert.ToInt32(Ticket.Length - 1) + "' totalmoney='" + Convert.ToDecimal(dr["Money"].ToString()).ToString("F2") + "' > "; wParamStr += @"<tickets>"; for (int k = 0; k < Ticket.Length - 1; k++) { wParamStr += @"<ticket play='" + Ticket[k].Split('|')[0].ToString() + "' id='" + Guid.NewGuid().ToString() + "' multiple='" + dr["Multiple"].ToString() + "' money='" + Ticket[k].Split('|')[2].ToString() + "' code='" + Ticket[k].Split('|')[1].ToString() + "'/>"; } wParamStr += @"</tickets>"; wParamStr += @"</ticketorder>"; wParamStr += @"</body>"; wParamStr += @"</msg>"; } catch (Exception ex) { msg.Send(ex.Message); log.Write(ex.Message); continue; } try { wSignStr = Shove._Security.Encrypt.MD5(wParamStr + ElectronTicketbase_FC_Agent_Key, "UTF-8"); } catch (Exception ex) { msg.Send(ex.Message); log.Write(ex.Message); continue; } string Sends = dr["Sends"].ToString(); if (MSSQL.ExecuteNonQuery(ConnectionString, "update T_SchemesSendToCenter set Sends = Sends + 1, [DateTime] = GetDate() where [ID] =" + dr["ID"].ToString()) < 0) { msg.Send("更新票发送状态时出错(SendTickets)。方案ID:" + dt.Rows[i]["SchemeID"].ToString()); log.Write("更新票发送状态时出错(SendTickets)。方案ID:" + dt.Rows[i]["SchemeID"].ToString()); continue; } string ReceiveString = ""; try { log.Write(wParamStr); ReceiveString = PublicFunction.Post(ElectronTicketbase_FC_Getway, wParamStr, wSignStr); } catch { msg.Send("电子票-102 发送失败(SendTickets)。方案ID:" + dt.Rows[i]["SchemeID"].ToString()); log.Write("电子票-102 发送失败(SendTickets)。方案ID:" + dt.Rows[i]["SchemeID"].ToString()); continue; } log.Write(ReceiveString); string code = ElectronTicket.GetXMLValue(ReceiveString, "head", "transcode"); int ReturnValue = 0; string ReturnDescription = ""; if (code == "702") { int Result = DAL.Procedures.P_SchemesSendToCenterHandleUniteAnte(ConnectionString, Shove._Convert.StrToLong(dt.Rows[i]["SchemeID"].ToString(), -1), DateTime.Now, true, ref ReturnValue, ref ReturnDescription); if ((Result < 0) || (ReturnValue < 0)) { msg.Send("对所发送的成功的代购票第一次处理出错(SendTickets):数据读写错误。票号:" + dt.Rows[i]["SchemeID"].ToString() + "," + ReturnDescription); log.Write("对所发送的成功的代购票第一次处理出错(SendTickets):数据读写错误。票号:" + dt.Rows[i]["SchemeID"].ToString() + "," + ReturnDescription); } continue; } int State = 0; int SiteID = Shove._Convert.StrToInt(dt.Rows[i]["SiteID"].ToString(), 1); t_SchemesSendToCenter.Sends.Value = 100 + State; t_SchemesSendToCenter.Update(ConnectionString, "SchemeID = " + dt.Rows[i]["SchemeID"].ToString()); if ("9999 9001 9005 9002 9003 9004".IndexOf(code) >= 0) { int Result = DAL.Procedures.P_QuashScheme(ConnectionString, SiteID, Shove._Convert.StrToLong(dt.Rows[i]["SchemeID"].ToString(), 0), true, false, ref ReturnValue, ref ReturnDescription); if ((Result < 0) || (ReturnValue < 0)) { msg.Send("对所发送落地失败的代购票【作撤单】处理出错(SendTickets):数据读写错误。票号:" + dt.Rows[i]["SchemeID"].ToString() + "," + code + "," + ReturnDescription); log.Write("对所发送落地失败的代购票【作撤单】处理出错(SendTickets):数据读写错误。票号:" + dt.Rows[i]["SchemeID"].ToString() + "," + code + "," + ReturnDescription); } } } } }