private int CheckReporting(string p_invoicerId, int p_noIssuing, string p_where, PgDatParameters p_dbps) { int _noReporting = 0; lock (SyncEngine) _noReporting = CheckReEnter(p_invoicerId, p_where, p_dbps); if (_noReporting > 0) { ReportArgs _args = new ReportArgs() { invoicerId = p_invoicerId, noIssuing = p_noIssuing, noReporting = _noReporting, where = p_where, dbps = p_dbps }; // Do not use using statement ThreadPoolWait _doneEvent = new ThreadPoolWait(); _doneEvent.QueueUserWorkItem(DoReporting, _args); if (Environment.UserInteractive == true) { _doneEvent.WaitOne(); } } return(_noReporting); }
public override ReportVM Build(ReportArgs args) { /* Some code to get roles here */ if (**validation code fails * *) { return new TInvalidModel { } } return(new TModel { FeedbackModel = FeedbackBuilder.Build(inputGrid.Report.Id), }); }
static void Main(string[] args) { TdxHqData th = TdxHqData.Instance; ReportArgs rags = th.Connect("121.14.110.200", 443); if (rags.Succeeded) { Console.WriteLine("succeeded."); List <string> symbols = new List <string>(); symbols.Add("SZSE.000001"); symbols.Add("SZSE.000070"); symbols.Add("SHSE.603078"); symbols.Add("SHSE.600000"); rags = th.GetQuotes(symbols); if (rags.Succeeded) { List <GMSDK.Tick> ticks = (List <GMSDK.Tick>)rags.Result; DateTime startTimeUTC = DateTime.Now.Date; foreach (GMSDK.Tick tick in ticks) { string symbol = tick.exchange + '.' + tick.sec_id; double t = tick.utc_time; DateTime time = new DateTime(2017, 4, 28).AddSeconds(t / 100); Console.WriteLine("symbol:{0},price:{1},volume:{2},time:{3},tt:{4}", symbol, tick.last_price, tick.last_volume, time, t); } } else { Console.WriteLine("wrong:" + rags.ErrorInfo); } } else { Console.WriteLine("wrong:" + rags.ErrorInfo); } Console.ReadLine(); }
private async Task <IActionResult> DoReport(ReportArgs args) { var t = await Db.GetTopic(args.Topic); if (t == null) { return(new NotFoundResult()); } else if (!t.WriteToken.Equals(args.WriteToken, StringComparison.OrdinalIgnoreCase)) { return(StatusCode(403)); } if (Timeouts.IsTimedOut(t.TopicId)) { return(StatusCode(StatusCodes.Status429TooManyRequests)); } await Herald.PublishMessage(t, args.Message); Timeouts.ApplyCost(t.TopicId, Config.ReportCost); return(new OkResult()); }
private void DoReporting(object p_args) { ReportArgs _args = (ReportArgs)p_args; _args.noIssuing = _args.noReporting; _args.noReporting = 0; try { int _toprow = 100; int _chunkCount = _args.noIssuing / _toprow + 1; if (_chunkCount > UAppHelper.NoThreadOfReporter) { _chunkCount = UAppHelper.NoThreadOfReporter; } string _issueid = ""; var _sqlstr = "SELECT a.issueId, a.document, a.rvalue " + " FROM TB_eTAX_ISSUING a INNER JOIN TB_eTAX_INVOICE b " + " ON a.issueId=b.issueId " + " WHERE a.isNTSSending=@isNTSSendingX " + " AND ( " + " (RIGHT(b.typeCode, 2) IN ('01', '02', '04') AND b.invoicerId=@invoicerId) " + " OR " + " (RIGHT(b.typeCode, 2) IN ('03', '05') AND b.brokerId=@invoicerId) " + " ) " + " AND a.issueId > @issueId " + _args.where + " ORDER BY a.issueId" + " LIMIT " + _toprow; { _args.dbps.Add("@isNTSSendingX", NpgsqlDbType.Varchar, "X"); _args.dbps.Add("@invoicerId", NpgsqlDbType.Varchar, _args.invoicerId); } //if (LogCommands == true) // ELogger.SNG.WriteLog(String.Format("begin: invoicerId->'{0}', noIssuing->{1}", _args.invoicerId, _args.noIssuing)); // 만약 InsertDeltaSet을 처리하는 중에 오류가 발생하면 무한 loop를 발생 하게 되므로, // 'X'로 marking한 레코드의 총 갯수를 감소하여 '0'보다 큰 경우에만 반복한다. while (_args.noIssuing > 0) { int _rowsCount = 0; IssuingTbl.Clear(); ResponseTbl.Clear(); var _doneEvents = new ThreadPoolWait[_chunkCount]; for (int i = 0; i < _chunkCount; i++) { _args.dbps.Add("@issueId", NpgsqlDbType.Varchar, _issueid); // 100건 까지를 한 묶음으로 전송하기 위해 기준이 되는 승인번호 var _workingSet = LSQLHelper.SelectDataSet(UAppHelper.ConnectionString, _sqlstr, _args.dbps); if (LSQLHelper.IsNullOrEmpty(_workingSet) == true) { break; } var _rows = _workingSet.Tables[0].Rows; _issueid = Convert.ToString(_rows[_rows.Count - 1]["issueId"]); // 다음 100건의 기준 (>) 승인번호 _doneEvents[i] = new ThreadPoolWait(); Updater _worker = new Updater(IssuingTbl, ResponseTbl); _doneEvents[i].QueueUserWorkItem(_worker.ReporterCallback, _rows); if (Environment.UserInteractive == true) { _doneEvents[i].WaitOne(); } _rowsCount += _rows.Count; } ThreadPoolWait.WaitForAll(_doneEvents); // 처리된 레코드가 한개 이하 인 경우는 종료한다. (문제가 있는 경우로 보여 짐) if (_rowsCount < 1) { break; } //if (LogCommands == true) // ELogger.SNG.WriteLog(String.Format("loop: invoicerId->'{0}', noIssuing->{1}, noReporting->{2}", _args.invoicerId, _args.noIssuing, _rowsCount)); _args.noIssuing -= _rowsCount; _args.noReporting += IssuingTbl.Rows.Count; LDltaHelper.InsertDeltaSet(UAppHelper.ConnectionString, ResponseSet); } } catch (ReporterException ex) { ELogger.SNG.WriteLog(ex); } catch (Exception ex) { ELogger.SNG.WriteLog(ex); } finally { if (LogCommands == true) { ELogger.SNG.WriteLog(String.Format("end: invoicerId->'{0}', noIssuing->{1}, noReporting->{2}", _args.invoicerId, _args.noIssuing, _args.noReporting)); } int _noClearing = ClearXFlag(_args.invoicerId); if (_noClearing > 0) { if (LogCommands == true) { ELogger.SNG.WriteLog(String.Format("clearX: invoicerId->'{0}', noClear->{1}", _args.invoicerId, _noClearing)); } } } }
/// <summary> /// Generates a report to the output stream. /// </summary> public abstract void Generate(ReportArgs args, Stream outStream);
static void Main(string[] args) { //DLL是32位的,因此必须把C#工程生成的目标平台从Any CPU改为X86,才能调用DLL; //必须把Trade.dll等4个DLL复制到Debug和Release工程目录下; //无论用什么语言编程,都必须仔细阅读VC版内的关于DLL导出函数的功能和参数含义说明,不仔细阅读完就提出问题者因时间精力所限,恕不解答。 //StringBuilder ErrInfo = new StringBuilder(256); //StringBuilder Result = new StringBuilder(1024 * 1024); //OpenTdx();//打开通达信 ////登录 //int ClientID = Logon("210.21.122.241", 80, "8.20", 0, "210100014580", "20615111", "328077", string.Empty, ErrInfo); ////登录第二个帐号 ////int ClientID2 = Logon("111.111.111.111", 7708, "4.20", 0, "5555555555", "1111", "555", string.Empty, ErrInfo); //if (ClientID == -1) //{ // Console.WriteLine(ErrInfo); // return; //} //SendOrder(ClientID, 0, 0, "", "601558", 2.1f, 100, Result, ErrInfo);//下单 //SendOrder(ClientID, 0, 0, "0142996817", "000987", 2.5f, 100, Result, ErrInfo);//第二个帐号,下单 //Console.WriteLine(ErrInfo); //Console.WriteLine("下单结果: {0}", Result); //Console.ReadLine(); //GetQuote(ClientID, "601988", Result, ErrInfo);//查询五档报价 // if (ErrInfo.ToString() != string.Empty) // { // Console.WriteLine(ErrInfo.ToString()); // return; // } // Console.WriteLine("行情结果: {0}", Result); //CancelOrder(ClientID, "", "7258", Result, ErrInfo); //Console.WriteLine(ErrInfo); //Console.WriteLine("撤单结果: {0}", Result); //QueryData(ClientID, 0, Result, ErrInfo);//查询资金 //if (ErrInfo.ToString() != string.Empty) //{ // Console.WriteLine(ErrInfo.ToString()); // Console.ReadLine(); // return; //} //Console.WriteLine("查询资金结果: {0}", Result); //QueryData(ClientID, 1, Result, ErrInfo);//查询股份 //if (ErrInfo.ToString() != string.Empty) //{ // Console.WriteLine(ErrInfo.ToString()); // Console.ReadLine(); // return; //} //Console.WriteLine("查询股份结果: {0}", Result); //QueryData(ClientID, 2, Result, ErrInfo);//查询当日委托 //if (ErrInfo.ToString() != string.Empty) //{ // Console.WriteLine(ErrInfo.ToString()); // Console.ReadLine(); // return; //} //Console.WriteLine("查询委托结果: {0}", Result); ///*List<string[]> records = new List<string[]>(); //string text = Result.ToString(); //string[] lines = text.Split('\n'); //foreach (string aline in lines) //{ // string[] fields = aline.Split(new char[] { ' ', '\t' }); // records.Add(fields); //} //Console.WriteLine("code={0},marketID={1}", records[1][0], records[1][2]); //Console.WriteLine("code={0},marketID={1}", records[2][0], records[2][2]); ///* // //批量查询多个证券的五档报价 // string[] Zqdm = new string[] { "600030", "600031" }; // string[] Results = new string[Zqdm.Length]; // string[] ErrInfos = new string[Zqdm.Length]; // IntPtr[] ResultPtr = new IntPtr[Zqdm.Length]; // IntPtr[] ErrInfoPtr = new IntPtr[Zqdm.Length]; // for (int i = 0; i < Zqdm.Length; i++) // { // ResultPtr[i] = Marshal.AllocHGlobal(1024 * 1024); // ErrInfoPtr[i] = Marshal.AllocHGlobal(256); // } // GetQuotes(ClientID, Zqdm, Zqdm.Length, ResultPtr, ErrInfoPtr); // for (int i = 0; i < Zqdm.Length; i++) // { // Results[i] = Marshal.PtrToStringAnsi(ResultPtr[i]); // ErrInfos[i] = Marshal.PtrToStringAnsi(ErrInfoPtr[i]); // Marshal.FreeHGlobal(ResultPtr[i]); // Marshal.FreeHGlobal(ErrInfoPtr[i]); // }*/ //Logoff(ClientID);//注销 //CloseTdx();//关闭通达信 TDXTrader trader = TDXTrader.Instance; ReportArgs ra = trader.Logon("183.62.246.154", 7708, "8.20", 0, "210100014580", "20615111", "328077"); if (ra.Succeeded) { Console.WriteLine("登录成功"); ra = trader.QueryFund(); if (ra.Succeeded) { if (ra.Result != null) { Console.WriteLine(((FundRecord)(ra.Result)).TotalAsserts); } } else { Console.WriteLine(ra.ErrorInfo); } ra = trader.QueryPositions(); if (ra.Succeeded) { if (ra.Result != null) { List <PositionRecord> poss = (List <PositionRecord>)ra.Result; foreach (PositionRecord p in poss) { Console.WriteLine(p.SecurityID); } } } else { Console.WriteLine(ra.ErrorInfo); } //ra = trader.SendOrder(OrderSide.Buy, OrderType.Limit, "601558", (float)2.01, 100); //ra = trader.CancelOrder("78"); //if (ra.Succeeded) //{ // if (ra.Result != null) // { // string orderID = ra.Result.ToString(); // Console.WriteLine("委托编号:{0}", orderID); // } //} //else //{ // Console.WriteLine(ra.ErrorInfo); //} ra = trader.QueryOrders(); if (ra.Succeeded) { List <OrderRecord> orders = (List <OrderRecord>)ra.Result; foreach (OrderRecord order in orders) { Console.WriteLine("订单ID:{0},订单状态:{1}", order.InnerOrderID, order.OrderStatus); } } else { Console.WriteLine(ra.ErrorInfo); } } else { Console.WriteLine(ra.ErrorInfo); } Console.ReadLine(); //trader.Logoff(); }
private Point SignToXy(string sign, ReportArgs args) { Point pt; switch (sign) { case "P": pt = new Point(0 * args.Env.KmW, 0 * args.Env.KmH); break; case "p": pt = new Point(0 * args.Env.KmW, 1 * args.Env.KmH); break; case "L": pt = new Point(1 * args.Env.KmW, 0 * args.Env.KmH); break; case "l": pt = new Point(1 * args.Env.KmW, 1 * args.Env.KmH); break; case "N": pt = new Point(2 * args.Env.KmW, 0 * args.Env.KmH); break; case "n": pt = new Point(2 * args.Env.KmW, 1 * args.Env.KmH); break; case "S": pt = new Point(3 * args.Env.KmW, 0 * args.Env.KmH); break; case "s": pt = new Point(3 * args.Env.KmW, 1 * args.Env.KmH); break; case "G": pt = new Point(4 * args.Env.KmW, 0 * args.Env.KmH); break; case "g": pt = new Point(4 * args.Env.KmW, 1 * args.Env.KmH); break; case "K": pt = new Point(5 * args.Env.KmW, 0 * args.Env.KmH); break; case "k": pt = new Point(5 * args.Env.KmW, 1 * args.Env.KmH); break; case "R": pt = new Point(6 * args.Env.KmW, 0 * args.Env.KmH); break; case "r": pt = new Point(6 * args.Env.KmW, 1 * args.Env.KmH); break; case "B": pt = new Point(7 * args.Env.KmW, 0 * args.Env.KmH); break; case "b": pt = new Point(7 * args.Env.KmW, 1 * args.Env.KmH); break; case "+P": pt = new Point(8 * args.Env.KmW, 0 * args.Env.KmH); break; case "+p": pt = new Point(8 * args.Env.KmW, 1 * args.Env.KmH); break; case "+L": pt = new Point(9 * args.Env.KmW, 0 * args.Env.KmH); break; case "+l": pt = new Point(9 * args.Env.KmW, 1 * args.Env.KmH); break; case "+S": pt = new Point(10 * args.Env.KmW, 0 * args.Env.KmH); break; case "+s": pt = new Point(10 * args.Env.KmW, 1 * args.Env.KmH); break; case "+R": pt = new Point(11 * args.Env.KmW, 0 * args.Env.KmH); break; case "+r": pt = new Point(11 * args.Env.KmW, 1 * args.Env.KmH); break; case "+B": pt = new Point(12 * args.Env.KmW, 0 * args.Env.KmH); break; case "+b": pt = new Point(12 * args.Env.KmW, 1 * args.Env.KmH); break; default: pt = Point.Empty; break; } return(pt); }
/// <summary> /// 局面を描きます。 /// </summary> public void Paint(Graphics g, ReportArgs args) { var positionPngDataDirectory = this.EngineConf.GetResourceFullPath("PositionPngDataDirectory"); // 8×8 の将棋盤 int bOx = args.Env.KmW + 2 * args.Env.SjW; // 将棋盤の左辺 int bOy = 0; { // 縦線 for (int col = 0; col < 10; col++) { g.DrawLine(Pens.Black, col * args.Env.KmW + bOx, 0 + bOy, col * args.Env.KmW + bOx, 180 + bOy); } // 横線 for (int row = 0; row < 10; row++) { g.DrawLine(Pens.Black, 0 + bOx, row * args.Env.KmH + bOy, 180 + bOx, row * args.Env.KmH + bOy); } } // 盤上の駒 { for (int suji = 1; suji < 10; suji++) { for (int dan = 1; dan < 10; dan++) { string sign = args.Ro_Kyokumen1.Ban[suji][dan]; if ("" != sign) { Point pt = this.SignToXy(sign, args); g.DrawImage(Image.FromFile(Path.Combine(positionPngDataDirectory, args.Env.KmFile)), new Rectangle((9 - suji) * args.Env.KmW + bOx, (dan - 1) * args.Env.KmH + bOy, args.Env.KmW, args.Env.KmH), //dst new Rectangle(pt.X, pt.Y, args.Env.KmW, args.Env.KmH), //src GraphicsUnit.Pixel ); } } } } // 後手の持駒 (飛,角,金,銀,桂,香,歩) { string[] signs = new string[] { "r", "b", "g", "s", "n", "l", "p" }; int ox = 0; int oy = 0; for (int moti = 0; moti < 7; moti++) { Point pt = this.SignToXy(signs[moti], args); // 枚数 int maisu = args.Ro_Kyokumen1.MotiP2[moti]; if (0 < maisu) { //駒 g.DrawImage( Image.FromFile(Path.Combine(positionPngDataDirectory, args.Env.KmFile)), new Rectangle(ox, (signs.Length - moti - 1) * args.Env.KmH + oy, args.Env.KmW, args.Env.KmH), //dst new Rectangle(pt.X, pt.Y, args.Env.KmW, args.Env.KmH), //src GraphicsUnit.Pixel ); // 1桁目が先 { int ichi = maisu % 10; g.DrawImage(Image.FromFile(Path.Combine(positionPngDataDirectory, args.Env.SjFile)), new Rectangle(ox + args.Env.KmW, (signs.Length - moti - 1) * args.Env.KmH + (args.Env.KmH - args.Env.SjH) + oy, args.Env.SjW, args.Env.SjH), //dst new Rectangle(ichi * args.Env.SjW, args.Env.SjH, args.Env.SjW, args.Env.SjH), //src GraphicsUnit.Pixel ); // 一の位 } // 2桁目が後 { int ju = maisu / 10; if (ju < 1) { ju = -1;//空桁 } g.DrawImage( Image.FromFile(Path.Combine(positionPngDataDirectory, args.Env.SjFile)), new Rectangle(ox + args.Env.KmW + args.Env.SjW, (signs.Length - moti - 1) * args.Env.KmH + (args.Env.KmH - args.Env.SjH) + oy, args.Env.SjW, args.Env.SjH), //dst new Rectangle(ju * args.Env.SjW, 0, args.Env.SjW, args.Env.SjH), //src GraphicsUnit.Pixel ); // 十の位 } } } } // 先手の持駒 (飛,角,金,銀,桂,香,歩) { string[] signs = new string[] { "R", "B", "G", "S", "N", "L", "P" }; int ox = (args.Env.KmW + 2 * args.Env.SjW) + 9 * args.Env.KmW + BN_BRD_R_W; int oy = (9 * args.Env.KmW + BN_BRD_B_W) - 7 * args.Env.KmH; for (int moti = 0; moti < 7; moti++) { Point pt = this.SignToXy(signs[moti], args); // 枚数 int maisu = args.Ro_Kyokumen1.MotiP1[moti]; if (0 < maisu) { g.DrawImage(Image.FromFile(Path.Combine(positionPngDataDirectory, args.Env.KmFile)), new Rectangle(ox, moti * args.Env.KmH + oy, args.Env.KmW, args.Env.KmH), //dst new Rectangle(pt.X, pt.Y, args.Env.KmW, args.Env.KmH), //src GraphicsUnit.Pixel ); //駒 // 十の位が先 { int ju = maisu / 10; if (ju < 1) { ju = -1;//空桁 } g.DrawImage(Image.FromFile(Path.Combine(positionPngDataDirectory, args.Env.SjFile)), new Rectangle(ox + args.Env.KmW, moti * args.Env.KmH + (args.Env.KmH - args.Env.SjH) + oy, args.Env.SjW, args.Env.SjH), //dst new Rectangle(ju * args.Env.SjW, 0, args.Env.SjW, args.Env.SjH), //src GraphicsUnit.Pixel ); // 十の位 } // 一の位が後 { int ichi = maisu % 10; g.DrawImage(Image.FromFile(Path.Combine(positionPngDataDirectory, args.Env.SjFile)), new Rectangle(ox + args.Env.KmW + args.Env.SjW, moti * args.Env.KmH + (args.Env.KmH - args.Env.SjH) + oy, args.Env.SjW, args.Env.SjH), //dst new Rectangle(ichi * args.Env.SjW, 0, args.Env.SjW, args.Env.SjH), //src GraphicsUnit.Pixel ); // 一の位 } } } } }