SystemService.cs 80 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449
  1. using Muchinfo.MTPClient.Data;
  2. using Muchinfo.MTPClient.Data.Enums;
  3. using Muchinfo.MTPClient.Data.Model;
  4. using Muchinfo.MTPClient.Infrastructure.Cache;
  5. using Muchinfo.MTPClient.Infrastructure.Users;
  6. using Muchinfo.MTPClient.Infrastructure.Utilities;
  7. using Muchinfo.MTPClient.IService;
  8. using Muchinfo.MTPClient.Resources;
  9. using Muchinfo.MTPClient.Service.Utilities;
  10. using Muchinfo.PC.Common.Extensions;
  11. using System;
  12. using System.Collections;
  13. using System.Collections.Generic;
  14. using System.Collections.ObjectModel;
  15. using System.Linq;
  16. using System.Windows;
  17. using System.Windows.Input;
  18. namespace Muchinfo.MTPClient.Service
  19. {
  20. public class SystemService : ISystemService
  21. {
  22. /// <summary>
  23. /// 是否显示P+X标签
  24. /// </summary>
  25. /// <returns><c>true</c> if [is show p and x]; otherwise, <c>false</c>.</returns>
  26. public bool IsShowPAndX()
  27. {
  28. ////有权限的交易商品有配置P+X交割关系时,显示P+X交割标签
  29. var goodsIds = CacheManager.CacheGoodsBaseInfos.Select(z => z.GoodsId);
  30. var pAndXIds = CacheManager.AllDeliveryRelationList.Where(z => z != null && z.RelationMode == eDeliveryContractLink.PAndX).Select(z => z.GoodsId);
  31. if (!goodsIds.Any() || !pAndXIds.Any()) return false;
  32. foreach (var id in pAndXIds)
  33. {
  34. uint uid;
  35. if (uint.TryParse(id.ToString(), out uid))
  36. {
  37. if (goodsIds.Contains(uid)) return true;
  38. }
  39. }
  40. return false;
  41. }
  42. /// <summary>
  43. /// 获取行情底部分类菜单
  44. /// </summary>
  45. /// <returns>List{QuoteCategoryItem}.</returns>
  46. /// <exception cref="System.NotImplementedException"></exception>
  47. public List<SysMenuItem> GetQuoteCategoryMenus()
  48. {
  49. var list = new List<SysMenuItem>();
  50. var allgoods = BuildAllGoodsItems();
  51. if (allgoods != null) list.Add(allgoods);
  52. var favoriteItem = BuildFavoriteItem();
  53. if (favoriteItem != null) list.Add(favoriteItem);
  54. //添加外部交易所-资管
  55. var exchangeMenuItems = GetExchangeMenuItems();
  56. var sysMenuItems = exchangeMenuItems as IList<SysMenuItem> ?? exchangeMenuItems.ToList();
  57. if (exchangeMenuItems != null && sysMenuItems.Any())
  58. {
  59. list.AddRange(sysMenuItems);
  60. }
  61. return list;
  62. }
  63. /// <summary>
  64. /// 获取多资金账户分类菜单
  65. /// </summary>
  66. /// <returns></returns>
  67. public List<SysMenuItem> GetCaptialAccountMenus()
  68. {
  69. var list = new List<SysMenuItem>();
  70. if (UserManager.CurrentTradeAccount.FundsAccounts != null && UserManager.CurrentTradeAccount.FundsAccounts.Count > 0)
  71. {
  72. foreach (var item in UserManager.CurrentTradeAccount.FundsAccounts)
  73. {
  74. list.Add(new SysMenuItem(item.AccountId.ToString(), MenuCommandType.Query)
  75. {
  76. QuoteParameters = item.AccountId.ToString()
  77. });
  78. }
  79. }
  80. return list;
  81. }
  82. /// <summary>
  83. /// 获取分析图表右键菜单
  84. /// </summary>
  85. /// <param name="isMySelected">if set to <c>true</c> [is my selected].</param>
  86. /// <param name="isNotComparison">if set to <c>true</c> [is comparison].</param>
  87. /// <returns>List{SysContextMenuItem}.</returns>
  88. /// <exception cref="System.NotImplementedException"></exception>
  89. public IEnumerable<SysContextMenuItem> GetQuoteChartContextMenuItems(bool isMySelected, bool isNotComparison)
  90. {
  91. var result = new List<SysContextMenuItem>();
  92. //if (isMySelected)
  93. //{
  94. // result.Add(new SysContextMenuItem(ContextMenuNames.RemoveFromMySelected, ContextMenuCommandType.RemoveFromMySelected));
  95. //}
  96. //else
  97. //{
  98. // result.Add(new SysContextMenuItem(ContextMenuNames.AddToMySelected, ContextMenuCommandType.AddToMySelected));
  99. //}
  100. //result.Add(new SysContextMenuItem(ContextMenuNames.SwitchCycle, ContextMenuCommandType.SwitchCycle)
  101. //{
  102. // Children = new List<SysContextMenuItem>()
  103. // {
  104. // new SysContextMenuItem(ToolbarNames.CycleMinute1, ContextMenuCommandType.CycleMinute1),
  105. // //new SysContextMenuItem(ToolbarNames.CycleMinute3, ContextMenuCommandType.CycleMinute3),
  106. // new SysContextMenuItem(ToolbarNames.CycleMinute5, ContextMenuCommandType.CycleMinute5),
  107. // new SysContextMenuItem(ToolbarNames.CycleMinute10, ContextMenuCommandType.CycleMinute10),
  108. // new SysContextMenuItem(ToolbarNames.CycleMinute15, ContextMenuCommandType.CycleMinute15),
  109. // new SysContextMenuItem(ToolbarNames.CycleMinute30, ContextMenuCommandType.CycleMinute30),
  110. // //new SysContextMenuItem(ToolbarNames.CycleMinute60, ContextMenuCommandType.CycleMinute60),
  111. // //new SysContextMenuItem(ToolbarNames.CycleMinute90, ContextMenuCommandType.CycleMinute90),
  112. // //new SysContextMenuItem(ToolbarNames.CycleMinute120, ContextMenuCommandType.CycleMinute120),
  113. // //new SysContextMenuItem(ToolbarNames.CycleMinute180, ContextMenuCommandType.CycleMinute180),
  114. // //new SysContextMenuItem(ToolbarNames.CycleMinute240, ContextMenuCommandType.CycleMinute240),
  115. // new SysContextMenuItem(ToolbarNames.CycleHour, ContextMenuCommandType.CycleHour),
  116. // new SysContextMenuItem(ToolbarNames.CycleHour4, ContextMenuCommandType.CycleHour4),
  117. // new SysContextMenuItem(ToolbarNames.CycleDay, ContextMenuCommandType.CycleDay),
  118. // new SysContextMenuItem(ToolbarNames.CycleWeek, ContextMenuCommandType.CycleWeek),
  119. // new SysContextMenuItem(ToolbarNames.CycleMonth, ContextMenuCommandType.CycleMonth),
  120. // //new SysContextMenuItem(ToolbarNames.CycleQuarter, ContextMenuCommandType.CycleQuarter),
  121. // new SysContextMenuItem(ToolbarNames.CycleYear, ContextMenuCommandType.CycleYear),
  122. // //new SysContextMenuItem(ToolbarNames.CycleCustom, ContextMenuCommandType.CycleCustom),
  123. // }
  124. //});
  125. result.Add(new SysContextMenuItem(ContextMenuNames.ChangeGoods, ContextMenuCommandType.ChangeGoods));
  126. //if (isNotComparison)
  127. //{
  128. // result.Add(new SysContextMenuItem(ContextMenuNames.ComparisonGoods,
  129. // ContextMenuCommandType.ComparisonGoods));
  130. //}
  131. //else
  132. //{
  133. // result.Add(new SysContextMenuItem(ContextMenuNames.CancelComparison,
  134. // ContextMenuCommandType.CancelComparison));
  135. //}
  136. //result.Add(new SysContextMenuItem(ContextMenuNames.GoodsNews, ContextMenuCommandType.GoodsNews));
  137. //result.Add(new SysContextMenuItem(ContextMenuNames.DrawingTool, ContextMenuCommandType.DrawingTool)
  138. //{
  139. // Children = new List<SysContextMenuItem>()
  140. // {
  141. // new SysContextMenuItem(ContextMenuNames.Top, ContextMenuCommandType.DrawingToolTop),
  142. // new SysContextMenuItem(ContextMenuNames.Bottom, ContextMenuCommandType.DrawingToolBottom),
  143. // new SysContextMenuItem(ContextMenuNames.Left, ContextMenuCommandType.DrawingToolLeft ),
  144. // new SysContextMenuItem(ContextMenuNames.Right, ContextMenuCommandType.DrawingToolRight),
  145. // new SysContextMenuItem(ContextMenuNames.Hidden, ContextMenuCommandType.DrawingToolHidden),
  146. // }
  147. //});
  148. result.Add(new SysContextMenuItem(ContextMenuNames.DataExport,
  149. ContextMenuCommandType.DataExport));
  150. result.Add(new SysContextMenuItem(ContextMenuNames.ShowHandicap,
  151. ContextMenuCommandType.ShowHandicap));
  152. result.Add(new SysContextMenuItem(ContextMenuNames.SelectIndicator,
  153. ContextMenuCommandType.SelectIndicator));
  154. result.Add(new SysContextMenuItem(ContextMenuNames.EditIndicator,
  155. ContextMenuCommandType.EditIndicatorParam));
  156. result.Add(new SysContextMenuItem(ContextMenuNames.ClearMainIndicator,
  157. ContextMenuCommandType.ClearMainIndicator));
  158. return result;
  159. }
  160. /// <summary>
  161. /// 获取分析图表右键菜单
  162. /// </summary>
  163. /// <param name="isMySelected">if set to <c>true</c> [is my selected].</param>
  164. /// <param name="isNotComparison">if set to <c>true</c> [is comparison].</param>
  165. /// <param name="command">The command.</param>
  166. /// <returns>List{SysContextMenuItem}.</returns>
  167. /// <exception cref="System.NotImplementedException"></exception>
  168. public List<SysMenuItem> GetQuoteChartMenuItems(bool isMySelected, bool isNotComparison, ICommand command)
  169. {
  170. var result = new List<SysMenuItem>();
  171. // result.Add(new SysMenuItem(ContextMenuNames.ChangeGoods, MenuCommandType.ChangeGoods) { Command = command });
  172. var sysLoad = new SysMenuItem(ContextMenuNames.LoadMoreData, MenuCommandType.LoadMoreData)
  173. {
  174. Command = command
  175. };
  176. result.Add(sysLoad);
  177. var sysMenuCycles = new SysMenuItem(ContextMenuNames.SwitchCycle, MenuCommandType.Cycles);
  178. sysMenuCycles.Children = GetAnalysisCycle(command, sysMenuCycles);
  179. result.Add(sysMenuCycles);
  180. var indicator = new SysMenuItem(ContextMenuNames.SelectIndicator,
  181. MenuCommandType.Indecator);
  182. indicator.Children = new List<SysMenuItem>()
  183. {
  184. new SysMenuItem(MenuNames.AnalysisIndicator_MA, MenuCommandType.MA),
  185. new SysMenuItem(MenuNames.AnalysisIndicator_MA4, MenuCommandType.MA4),
  186. new SysMenuItem(MenuNames.AnalysisIndicator_BOLL, MenuCommandType.BOLL),
  187. new SysMenuItem(MenuNames.AnalysisIndicator_MACD, MenuCommandType.MACD),
  188. new SysMenuItem(MenuNames.AnalysisIndicator_DMI, MenuCommandType.DMI),
  189. new SysMenuItem(MenuNames.AnalysisIndicator_OBV, MenuCommandType.OBV),
  190. new SysMenuItem(MenuNames.AnalysisIndicator_VOL, MenuCommandType.VOL),
  191. new SysMenuItem(MenuNames.AnalysisIndicator_RSI, MenuCommandType.RSI),
  192. new SysMenuItem(MenuNames.AnalysisIndicator_KDJ, MenuCommandType.KDJ),
  193. new SysMenuItem(MenuNames.AnalysisIndicator_CCI, MenuCommandType.CCI),
  194. new SysMenuItem(MenuNames.AnalysisIndicator_BIAS, MenuCommandType.BIAS),
  195. new SysMenuItem(MenuNames.AnalysisIndicator_PSY, MenuCommandType.PSY),
  196. new SysMenuItem(MenuNames.AnalysisIndicator_MTM, MenuCommandType.MTM),
  197. new SysMenuItem(MenuNames.AnalysisIndicator_WR, MenuCommandType.WR),
  198. };
  199. result.Add(indicator);
  200. var reMoveIndicator = new SysMenuItem(ContextMenuNames.DeleteIndicator, MenuCommandType.RemoveIndecator)
  201. {
  202. Command = command
  203. };
  204. result.Add(reMoveIndicator);
  205. return result;
  206. }
  207. /// <summary>
  208. /// 获取系统菜单
  209. /// </summary>
  210. /// <returns>List{SysMenuItem}.</returns>
  211. public ObservableCollection<SysMenuItem> GetSysMenuItems(List<SysMenuItem> accessFuncMenus, ICommand command)
  212. {
  213. bool isListing = accessFuncMenus.Exists((item) => item.FuncMenuCode == UserManager.GetMenuCommandValue(MenuCommandType.ListingManage));
  214. var result = new List<SysMenuItem>();
  215. //result.AddRange(BuildSystemMenu());
  216. result.AddRange(BuildQuoteMenus(isListing));
  217. //result.AddRange(BuildTradingMenus(accessFuncMenus, command));
  218. result.AddRange(BuildErmcpMenu());
  219. result.AddRange(BuildHelpMenus());
  220. return result.ToObservableCollection();
  221. //todo:暂时使用本地的
  222. // var systemMenu= UserManager.AccessFuncMenus.FirstOrDefault((item) => item.SysCommandType == MenuCommandType.SysHeadMenu);
  223. //if (systemMenu != null && systemMenu.Children != null)
  224. //{
  225. // systemMenu.Children.AddRange(BuildQuoteMenus()); ////构建行情菜单
  226. // return systemMenu.Children.ToObservableCollection();
  227. //}
  228. //return systemMenu.Children.ToObservableCollection();
  229. }
  230. /// <summary>
  231. /// 获取工具栏按钮
  232. /// </summary>
  233. /// <returns>List{ToolbarGroup}.</returns>
  234. public List<ToolbarGroup> GetToolbarGroups()
  235. {
  236. //粤国际:无此功能
  237. return null;
  238. }
  239. /// <summary>
  240. /// 创建图表周期
  241. /// </summary>
  242. /// <returns></returns>
  243. public List<SysMenuItem> GetAnalysisCycle()
  244. {
  245. return new List<SysMenuItem>()
  246. {
  247. // new SysMenuItem(MenuNames.AnalysisCycle_TimeSharing, MenuCommandType.TimeSharingChart),
  248. new SysMenuItem(MenuNames.AnalysisCycle_1M, MenuCommandType.Minute1),
  249. new SysMenuItem(MenuNames.AnalysisCycle_5M, MenuCommandType.Minute5),
  250. new SysMenuItem(MenuNames.AnalysisCycle_15M, MenuCommandType.Minute15),
  251. new SysMenuItem(MenuNames.AnalysisCycle_30M, MenuCommandType.Minute30),
  252. new SysMenuItem(MenuNames.AnalysisCycle_60M, MenuCommandType.Minute60),
  253. new SysMenuItem(MenuNames.AnalysisCycle_120M, MenuCommandType.Minute120),
  254. new SysMenuItem(MenuNames.AnalysisCycle_240M, MenuCommandType.Minute240),
  255. new SysMenuItem(MenuNames.AnalysisCycle_Day, MenuCommandType.Day),
  256. new SysMenuItem(MenuNames.AnalysisCycle_Week, MenuCommandType.Week),
  257. new SysMenuItem(MenuNames.AnalysisCycle_Month, MenuCommandType.Month),
  258. new SysMenuItem(MenuNames.AnalysisCycle_Year, MenuCommandType.Year)
  259. };
  260. }
  261. /// <summary>
  262. /// 创建图表周期
  263. /// </summary>
  264. /// <returns></returns>
  265. public List<SysMenuItem> GetAnalysisCycle(ICommand command, SysMenuItem parent)
  266. {
  267. return new List<SysMenuItem>()
  268. {
  269. new SysMenuItem(MenuNames.AnalysisCycle_TimeSharing, MenuCommandType.TimeSharingChart){Command = command,ParentItem = parent},
  270. new SysMenuItem(MenuNames.AnalysisCycle_1M, MenuCommandType.Minute1){Command = command,ParentItem = parent},
  271. new SysMenuItem(MenuNames.AnalysisCycle_5M, MenuCommandType.Minute5){Command = command,ParentItem = parent},
  272. // new SysMenuItem(MenuNames.AnalysisCycle_15M, MenuCommandType.Minute15){Command = command},
  273. new SysMenuItem(MenuNames.AnalysisCycle_30M, MenuCommandType.Minute30){Command = command,ParentItem = parent},
  274. new SysMenuItem(MenuNames.AnalysisCycle_1H, MenuCommandType.Hour1){Command = command,ParentItem = parent},
  275. // new SysMenuItem(MenuNames.AnalysisCycle_120M, MenuCommandType.Minute120){Command = command},
  276. new SysMenuItem(MenuNames.AnalysisCycle_4H, MenuCommandType.Hour4){Command = command,ParentItem = parent},
  277. new SysMenuItem(MenuNames.AnalysisCycle_Day, MenuCommandType.Day){Command = command,ParentItem = parent},
  278. //new SysMenuItem(MenuNames.AnalysisCycle_Week, MenuCommandType.Week){Command = command},
  279. //new SysMenuItem(MenuNames.AnalysisCycle_Month, MenuCommandType.Month){Command = command},
  280. //new SysMenuItem(MenuNames.AnalysisCycle_Year, MenuCommandType.Year){Command = command},
  281. };
  282. }
  283. /// <summary>
  284. /// 获取行情列表右键菜单
  285. /// </summary>
  286. /// <param name="isMySelected">if set to <c>true</c> [is my selected].</param>
  287. /// <returns>List{SysContextMenuItem}.</returns>
  288. /// <exception cref="System.NotImplementedException"></exception>
  289. public IEnumerable<SysContextMenuItem> GetQuoteListContextMenuItems(bool isMySelected)
  290. {
  291. var result = new List<SysContextMenuItem>();
  292. if (ApplicationParameter.ShowMySelectedGoods)
  293. {
  294. result.Add(isMySelected
  295. ? new SysContextMenuItem(ContextMenuNames.RemoveFromMySelected,
  296. ContextMenuCommandType.RemoveFromMySelected)
  297. : new SysContextMenuItem(ContextMenuNames.AddToMySelected, ContextMenuCommandType.AddToMySelected));
  298. }
  299. //result.Add(new SysContextMenuItem(ContextMenuNames.AddToAlert, ContextMenuCommandType.AddToAlert));
  300. //result.Add(new SysContextMenuItem(ContextMenuNames.EditDataGridHeader, ContextMenuCommandType.EditDataGridHeader));
  301. return result;
  302. }
  303. /// <summary>
  304. /// Builds the favorite item.
  305. /// </summary>
  306. /// <returns>SysMenuItem.</returns>
  307. private SysMenuItem BuildFavoriteItem()
  308. {
  309. //添加"自选"
  310. if (!ApplicationParameter.ShowMySelectedGoods) return null;
  311. var myFavorites = FavoriteManager.GetMyFavorites();
  312. if (myFavorites != null)
  313. {
  314. //目前只做一个自选
  315. var first = myFavorites.FirstOrDefault();
  316. if (first != null)
  317. {
  318. var item = new SysMenuItem(first.Name, MenuCommandType.SelectedGoodses)
  319. {
  320. QuoteParameters = first.Id.ToString()
  321. };
  322. item.GoodsGroup = new MarketsInfoModel() { MarketName = first.Name, MarketID = first.Id, TradeMode = eTradeMode.MySelected };
  323. return item;
  324. }
  325. }
  326. return null;
  327. }
  328. /// <summary>
  329. /// 显示所有商品
  330. /// </summary>
  331. /// <returns></returns>
  332. private SysMenuItem BuildAllGoodsItems()
  333. {
  334. if (!ApplicationParameter.ShowAllGoods) return null;
  335. var item = new SysMenuItem(ContextMenuNames.QuoteAllGoods, MenuCommandType.AllGoods)
  336. {
  337. //QuoteParameters = (int)eTradeMode.AllGoods + string.Empty
  338. };
  339. item.GoodsGroup = new MarketsInfoModel()
  340. {
  341. MarketName = ContextMenuNames.QuoteAllGoods,
  342. MarketID = (uint) eTradeMode.AllGoods,
  343. TradeMode = eTradeMode.AllGoods
  344. };
  345. return item;
  346. }
  347. /// <summary>
  348. /// P+X模式显示
  349. /// </summary>
  350. /// <returns>SysMenuItem.</returns>
  351. private SysMenuItem BuildDeliveryMode()
  352. {
  353. var item = new SysMenuItem(ContextMenuNames.QuotePAndX, MenuCommandType.SelectedGoodses);
  354. item.GoodsGroup = new MarketsInfoModel() { MarketName = ContextMenuNames.QuotePAndX, MarketID = (uint)eTradeMode.QuotePAndX, TradeMode = eTradeMode.QuotePAndX, IsDeliveryMode = true };
  355. return item;
  356. }
  357. /// <summary>
  358. /// 显示托管计划
  359. /// </summary>
  360. /// <returns></returns>
  361. private SysMenuItem BuildDepositItems()
  362. {
  363. var itemDeposit = new SysMenuItem(Client_Resource.AResources_DepositPlanMarket, MenuCommandType.SelectedGoodses)
  364. {
  365. QuoteParameters = (int)eTradeMode.Deposit + string.Empty
  366. };
  367. itemDeposit.GoodsGroup = new MarketsInfoModel() { MarketName = Client_Resource.AResources_DepositPlanMarket, MarketID = (uint)eTradeMode.Deposit, TradeMode = eTradeMode.Deposit };
  368. return itemDeposit;
  369. }
  370. /// <summary>
  371. /// 构建帮助菜单
  372. /// </summary>
  373. /// <returns>IEnumerable{SysMenuItem}.</returns>
  374. private IEnumerable<SysMenuItem> BuildHelpMenus()
  375. {
  376. var result = new List<SysMenuItem>();
  377. var help = new SysMenuItem(MenuNames.Help);
  378. result.Add(help);
  379. help.Children = new List<SysMenuItem>()
  380. {
  381. new SysMenuItem(MenuNames.HelpAboutUs, MenuCommandType.AboutUs),
  382. // new SysMenuItem(MenuNames.HelpEscapeClause, MenuCommandType.EscapeClause)
  383. //new SysMenuItem(MenuNames.HelpUserGuide , MenuCommandType.UserGuide),
  384. //new SysMenuItem(MenuNames.HelpOnlineCS, MenuCommandType.OnlineCS),
  385. };
  386. if (UserManager.IsAccountLogin) ////只有账号登录才显示网页
  387. {
  388. help.Children.Add(new SysMenuItem(MenuNames.HelpOfficalWeb, MenuCommandType.OfficalWeb));
  389. }
  390. return result;
  391. }
  392. /// <summary>
  393. /// 构建行情菜单
  394. /// </summary>
  395. /// <returns>IEnumerable{SysMenuItem}.</returns>
  396. private IEnumerable<SysMenuItem> BuildQuoteMenus(bool IsListing)
  397. {
  398. var result = new List<SysMenuItem>();
  399. var quoteItem = new SysMenuItem(MenuNames.Quotation)
  400. {
  401. Children = new List<SysMenuItem>()
  402. };
  403. var allgoods = BuildAllGoodsItems();
  404. if(allgoods != null) quoteItem.Children.Add(allgoods);
  405. ////有权限的交易商品有配置P+X交割关系时,显示P+X交割标签
  406. if (IsShowPAndX()) quoteItem.Children.Add(BuildDeliveryMode());
  407. var favoriteItem = BuildFavoriteItem();
  408. if (favoriteItem != null) quoteItem.Children.Add(favoriteItem);
  409. // 获取外币交易所的列表
  410. var exchangeMenuItems = GetExchangeMenuItems();
  411. if (exchangeMenuItems != null && exchangeMenuItems.Any())
  412. {
  413. quoteItem.Children.AddRange(exchangeMenuItems);
  414. }
  415. result.Add(quoteItem);
  416. if (ApplicationParameter.IsShowDepositPlanMarket)
  417. {
  418. var deposit = BuildDepositItems();
  419. quoteItem.Children.Add(deposit);
  420. }
  421. return result;
  422. }
  423. /// <summary>
  424. /// 根据市场创建菜单
  425. /// </summary>
  426. /// <returns>IEnumerable{SysMenuItem}.</returns>
  427. public IEnumerable<SysMenuItem> GetMarketMenuItems(bool IsListing)
  428. {
  429. var result = new List<SysMenuItem>();
  430. var goodsGroups = CacheManager.CacheMarketsGroups;//需要先查市场才能有数据
  431. if (goodsGroups != null && goodsGroups.Any())
  432. {
  433. foreach (var goodsGroup in goodsGroups)
  434. {
  435. if ((int)goodsGroup.TradeMode != 4)
  436. {
  437. var item = new SysMenuItem(goodsGroup.MarketName, MenuCommandType.MarketQuote)
  438. {
  439. QuoteParameters = goodsGroup.MarketID.ToString()
  440. };
  441. item.GoodsGroup = goodsGroup;
  442. //市场权限过滤,登陆后的账号市场权限 MTP2.0
  443. if (CacheManager.CacheMarketsGroups != null && CacheManager.CacheAvailableMarketList.Contains(goodsGroup.MarketID))
  444. {
  445. result.Add(item);
  446. }
  447. }
  448. }
  449. }
  450. //if (IsListing) //是否显示挂牌
  451. //{
  452. // var item = new SysMenuItem(Client_Resource.MarketGroupName_ListingMarket, MenuCommandType.MarketQuote)
  453. // {
  454. // QuoteParameters = -2 + string.Empty
  455. // };
  456. // item.GoodsGroup = new MarketsInfoModel() { MarketID = -2, MarketName = Client_Resource.MarketGroupName_ListingMarket, TradeMode = eTradeMode.TRADEMODE_HANGTAG };
  457. // result.Add(item);
  458. //}
  459. return result;
  460. }
  461. /// <summary>
  462. /// 根据扩展交易所创建菜单
  463. /// </summary>
  464. /// <returns>IEnumerable{SysMenuItem}.</returns>
  465. public IEnumerable<SysMenuItem> GetExchangeMenuItems()
  466. {
  467. var result = new List<SysMenuItem>();
  468. if (!ApplicationParameter.ShowExternalExchage) return result;
  469. var exchanges = CacheManager.CacheExchanges;//需要先查市场才能有数据
  470. ApplicationParameter.MakeExChangeGroupGoodsMap();// 重组数据,重组的数据,会保存在CacheManager.CacheExChangeGroupGoods中
  471. if (exchanges != null && exchanges.Any())
  472. {
  473. var exChanges = CacheManager.CacheExChangeGroupGoods;
  474. foreach (var exchange in exchanges)
  475. {
  476. if (exChanges.Count > 0 && exChanges[0].IsExchangeHasGoods(exchange.ExchangeId)/*判断交易所下是否有交易商品*/)
  477. {
  478. var item = new SysMenuItem(exchange.ExchangeName, MenuCommandType.MarketQuote)
  479. {
  480. QuoteParameters = exchange.ExchangeId.ToString()
  481. };
  482. var market = new MarketsInfoModel();
  483. market.MarketID = (uint)exchange.ExchangeId;
  484. market.MarketName = exchange.ExchangeName;
  485. market.TradeMode = eTradeMode.TRADEMODE_ENTRUST_HEDGE;
  486. market.IsDeliveryMode = false;
  487. item.GoodsGroup = market;
  488. result.Add(item);
  489. }
  490. }
  491. }
  492. return result;
  493. }
  494. private IEnumerable<SysMenuItem> BuildErmcpMenu()
  495. {
  496. var ermcpMenus = new List<SysMenuItem>();
  497. var manage = new SysMenuItem("现货")
  498. {
  499. IsEnabled = true,
  500. };
  501. ermcpMenus.Add(manage);
  502. manage.Children = new List<SysMenuItem>()
  503. {
  504. new SysMenuItem("现货管理", MenuCommandType.Manage),
  505. // new SysMenuItem(MenuNames.HelpEscapeClause, MenuCommandType.EscapeClause)
  506. //new SysMenuItem(MenuNames.HelpUserGuide , MenuCommandType.UserGuide),
  507. //new SysMenuItem(MenuNames.HelpOnlineCS, MenuCommandType.OnlineCS),
  508. };
  509. return ermcpMenus;
  510. }
  511. /// <summary>
  512. /// 构建[系统]菜单
  513. /// </summary>
  514. /// <returns>IEnumerable{SysMenuItem}.</returns>
  515. private IEnumerable<SysMenuItem> BuildSystemMenu()
  516. {
  517. var defaultColor = UserManager.GetCurrentColorStyle();
  518. var systemMenus = new List<SysMenuItem>();
  519. var system = new SysMenuItem(MenuNames.System);
  520. systemMenus.Add(system);
  521. system.Children = new List<SysMenuItem>();
  522. var themes = new SysMenuItem(MenuNames.SystemThemes)
  523. {
  524. IsEnabled = true,
  525. };
  526. themes.Children = new List<SysMenuItem>()
  527. {
  528. new SysMenuItem(MenuNames.SystemCoolBlack, MenuCommandType.CoolBlack){
  529. ParentItem = themes,
  530. IsCheckable = true,
  531. IsChecked = defaultColor == ColorStyle.CoolBlack,
  532. },
  533. new SysMenuItem(MenuNames.SystemDarkBlue, MenuCommandType.DarkBlue){
  534. ParentItem = themes,
  535. IsCheckable = true,
  536. IsChecked = defaultColor==ColorStyle.DarkBlue,
  537. },
  538. new SysMenuItem(MenuNames.SystemBlueWhite, MenuCommandType.BlueWhite)
  539. {
  540. ParentItem = themes,
  541. IsCheckable = true,
  542. IsChecked = defaultColor==ColorStyle.BlueWhite,
  543. }
  544. };
  545. system.Children.Add(themes);
  546. if (UserManager.IsAccountLogin)
  547. {
  548. var defaultLayout = UserManager.GetCurrentLayoutStyle();
  549. var layout = new SysMenuItem(MenuNames.Layout)
  550. {
  551. IsEnabled = true,
  552. };
  553. layout.Children = new List<SysMenuItem>()
  554. {
  555. new SysMenuItem(MenuNames.Horizontal, MenuCommandType.Horizontal)
  556. {
  557. ParentItem = layout,
  558. IsCheckable = true,
  559. IsChecked = defaultLayout == LayoutStyle.Horizontal,
  560. },
  561. new SysMenuItem(MenuNames.Vertical, MenuCommandType.Vertical)
  562. {
  563. ParentItem = layout,
  564. IsCheckable = true,
  565. IsChecked = defaultLayout == LayoutStyle.Vertical,
  566. },
  567. new SysMenuItem(MenuNames.Tradition, MenuCommandType.Tradition)
  568. {
  569. ParentItem = layout,
  570. IsCheckable = true,
  571. IsChecked = defaultLayout == LayoutStyle.Tradition,
  572. },
  573. };
  574. system.Children.Add(layout);
  575. system.Children.Add(new SysMenuItem(MenuNames.TradingChangePassword, MenuCommandType.ChangeTradePassword));
  576. }
  577. //sysMenu.Add(MenuCommandType.Notice,
  578. // new SysMenuItem(MenuCommandType.Notice) { Command = AnnouncementCommand, ViewType = typeof(NoticesView), IsDialog = true });
  579. system.Children.Add(new SysMenuItem(MenuNames.LockScreen, MenuCommandType.LockScreen) { });
  580. system.Children.Add(new SysMenuItem(MenuNames.SystemReconnect, MenuCommandType.Reconnect));
  581. system.Children.Add(new SysMenuItem(MenuNames.SystemLogout, MenuCommandType.Logout));
  582. return systemMenus;
  583. }
  584. /// <summary>
  585. /// 构建交易菜单
  586. ///
  587. /// </summary>
  588. /// <returns>IEnumerable{SysMenuItem}.</returns>
  589. private IEnumerable<SysMenuItem> BuildTradingMenus(List<SysMenuItem> accessFuncMenus, ICommand command)
  590. {
  591. //Edit by DK 20160721
  592. // var enableMenuList = UserManager.AccessFuncMenus;
  593. UserManager.TradeFuncMenus = new List<SysMenuItem>();
  594. ////是否为游客登录
  595. if (!UserManager.IsAccountLogin)
  596. {
  597. UserManager.TradeFuncMenus.Add(new SysMenuItem(MenuNames.TradingLogin, MenuCommandType.TradeLogin));
  598. }
  599. if (accessFuncMenus != null && accessFuncMenus.Any())
  600. {
  601. //获取-交易菜单=》权限列表
  602. var tradeMenus = accessFuncMenus.FirstOrDefault((item) => item.FuncMenuCode == UserManager.GetMenuCommandValue(MenuCommandType.Trade));
  603. if (tradeMenus != null)
  604. {
  605. foreach (var child in tradeMenus.Children)
  606. {
  607. var menus = new SysMenuItem(child.Title, UserManager.GetMenuCommandType(child.FuncMenuCode)) { Command = command };
  608. var commandType = UserManager.GetMenuCommandType(child.FuncMenuCode);// (MenuCommandType)(Enum.Parse(typeof(MenuCommandType), child.FuncMenuCode));
  609. switch (commandType)
  610. {
  611. case MenuCommandType.BuyIn:
  612. case MenuCommandType.Sellout:
  613. // case MenuCommandType.Cancel: ///菜单不显示撤单
  614. case MenuCommandType.SaleApply:
  615. UserManager.TradeFuncMenus.Add(menus);
  616. break;
  617. }
  618. ////买入
  619. //if (child.FuncMenuCode==(int)MenuCommandType.BuyIn)
  620. //{
  621. // menuList.Add();
  622. //}
  623. ////卖出
  624. //if (m.Select(x => x.Title).Contains(MenuNames.Sellout))
  625. //{
  626. // menuList.Add(new SysMenuItem(MenuNames.Sellout, MenuCommandType.OrderClose));
  627. //}
  628. ////撤销
  629. //if (m.Select(x => x.Title).Contains(MenuNames.OrderCancel))
  630. //{
  631. // menuList.Add(new SysMenuItem(MenuNames.OrderCancel, MenuCommandType.OrderCancel) { IsEnabled = true });
  632. //}
  633. ////申购
  634. //if (m.Select(x => x.Title).Contains(MenuNames.SaleApply))
  635. //{
  636. // menuList.Add(new SysMenuItem(MenuNames.SaleApply, MenuCommandType.SaleApply) { IsEnabled = true });
  637. //}
  638. }
  639. }
  640. }
  641. return new List<SysMenuItem>()
  642. {
  643. new SysMenuItem(MenuNames.Trading)
  644. {
  645. IsEnabled = true,
  646. IsExpanded=true,
  647. Children = UserManager.TradeFuncMenus,
  648. //Children = new List<SysMenuItem>()
  649. //{
  650. // //new SysMenuItem(MenuNames.OrderOpen, MenuCommandType.OrderOpen),
  651. // //new SysMenuItem(MenuNames.OrderClose, MenuCommandType.OrderClose),
  652. // new SysMenuItem(MenuNames.BuyIn, MenuCommandType.OrderOpen),
  653. // new SysMenuItem(MenuNames.Sellout, MenuCommandType.OrderClose),
  654. // new SysMenuItem(MenuNames.OrderCancel, MenuCommandType.OrderCancel){ IsEnabled = true},
  655. // // new SysMenuItem(MenuNames.Listing,MenuCommandType.Listing),
  656. // // new SysMenuItem(MenuNames.DeliveryApply, MenuCommandType.DeliveryApply), //通用版本使用通用交收
  657. // // bug 13878 设计删除
  658. // // new SysMenuItem(MenuNames.ReportQuery, MenuCommandType.ReportQuery)
  659. //}
  660. }
  661. };
  662. }
  663. /// <summary>
  664. /// 右键交易菜单
  665. /// </summary>
  666. /// <returns></returns>
  667. public IEnumerable<SysContextMenuItem> BuildQuoteTradeContextMenuItems(bool isMySelected)
  668. {
  669. var result = new List<SysContextMenuItem>();
  670. if (!UserManager.IsAccountLogin)
  671. {
  672. return result; //游客登录无菜单
  673. }
  674. result.Add(new SysContextMenuItem(ContextMenuNames.Market_Purchase, ContextMenuCommandType.Market_Purchase));
  675. result.Add(new SysContextMenuItem(ContextMenuNames.Market_SellOut, ContextMenuCommandType.Market_SellOut));
  676. //result.Add(new SysContextMenuItem(ContextMenuNames.MarketClose, ContextMenuCommandType.MarketClose));
  677. //result.Add(new SysContextMenuItem(ContextMenuNames.LimitClose, ContextMenuCommandType.LimitClose));
  678. //new SysContextMenuItem(ContextMenuNames.CancelOrder, ContextMenuCommandType.CancelOrder)
  679. result.Add(new SysContextMenuItem(ContextMenuNames.ContextMenuQuoteBoard, ContextMenuCommandType.QuoteBoard));
  680. result.Add(new SysContextMenuItem(ContextMenuNames.ContextMenuChart, ContextMenuCommandType.QuoteChart));
  681. result.Add(new SysContextMenuItem(ContextMenuNames.MenuNamesGoodsInfo, ContextMenuCommandType.GoodsInfo));
  682. if (ApplicationParameter.ShowMySelectedGoods)
  683. {
  684. result.Add(isMySelected
  685. ? new SysContextMenuItem(ContextMenuNames.RemoveFromMySelected,
  686. ContextMenuCommandType.RemoveFromMySelected)
  687. : new SysContextMenuItem(ContextMenuNames.AddToMySelected, ContextMenuCommandType.AddToMySelected));
  688. }
  689. // 错误 #90858
  690. //result.Add(new SysContextMenuItem(ContextMenuNames.MenuNamesQuoteTik, ContextMenuCommandType.QuoteTik)); ///分笔明细
  691. ////刷新商品列表
  692. result.Add(new SysContextMenuItem(ContextMenuNames.RefreshGoodsList, ContextMenuCommandType.RefreshGoodsList));
  693. return result;
  694. }
  695. /// <summary>
  696. /// 挂牌点价右键菜单
  697. /// </summary>
  698. /// <returns></returns>
  699. public IEnumerable<SysContextMenuItem> BuildListingContextMenuItems()
  700. {
  701. var result = new List<SysContextMenuItem>();
  702. if (!UserManager.IsAccountLogin)
  703. {
  704. return result; //游客登录无菜单
  705. }
  706. result.Add(new SysContextMenuItem(Client_Resource.ListingMarket_QuotePriceBoard, ContextMenuCommandType.ListingQuoteBoard));
  707. result.Add(new SysContextMenuItem(Client_Resource.ListingMarket_ListingTrade, ContextMenuCommandType.ListingApply));
  708. //result.Add(new SysContextMenuItem(ContextMenuNames.MarketClose, ContextMenuCommandType.MarketClose));
  709. //result.Add(new SysContextMenuItem(ContextMenuNames.LimitClose, ContextMenuCommandType.LimitClose));
  710. //new SysContextMenuItem(ContextMenuNames.CancelOrder, ContextMenuCommandType.CancelOrder)
  711. result.Add(new SysContextMenuItem(Client_Resource.MenuNamesGoodsInfo, ContextMenuCommandType.GoodsInfo));
  712. result.Add(new SysContextMenuItem(Client_Resource.MenuNamesRefresh, ContextMenuCommandType.RefreshGoodsList));
  713. return result;
  714. }
  715. public List<SysMenuItem> BuildFormChartMenuItems()
  716. {
  717. var result = new List<SysMenuItem>();
  718. return result;
  719. }
  720. #region Build DataGrid Headers
  721. #region Public Methods
  722. /// <summary>
  723. /// 获取抬头列表
  724. /// </summary>
  725. /// <param name="marketType">Type of the market.</param>
  726. /// <returns>IEnumerable{QuoteListHeader}.</returns>
  727. /// <exception cref="System.NotImplementedException"></exception>
  728. public IEnumerable<QuoteListHeader> GetQuoteListHeaders(eTradeMode marketType)
  729. {
  730. switch (marketType)
  731. {
  732. //全款转让[NEW MTP2.0]
  733. //case eTradeMode.Full_Transfer:
  734. case eTradeMode.TRADEMODE_MARKETMAKE:
  735. return GetOTCHeaders();
  736. case eTradeMode.QuotePAndX:
  737. case eTradeMode.TRADEMODE_BIDDING:
  738. return GetBidHeaders();
  739. case eTradeMode.MySelected:
  740. case eTradeMode.AllGoods:
  741. case eTradeMode.TRADEMODE_ENTRUST_HEDGE:
  742. return GetChannelHeaders();
  743. case eTradeMode.Deposit:
  744. return GetDepositHeaders();
  745. default:
  746. return GetOTCHeaders();
  747. }
  748. }
  749. /// <summary>
  750. /// 交割抬头列表
  751. /// </summary>
  752. /// <param name="marketType"></param>
  753. /// <returns></returns>
  754. public IEnumerable<QuoteListHeader> GetDeliveryQuoteListHeaders(eTradeMode marketType)
  755. {
  756. var listHeaders = GetQuoteListHeaders(marketType).ToList();
  757. listHeaders.RemoveAt(0); ////移除序号
  758. var listHeader = new QuoteListHeader(QuoteHeaderNames.DeliveryGoodsName, "DeliveryGoodsName")
  759. {
  760. ColorProperty = "NameColor",
  761. IsBold = false,
  762. Width = 80,
  763. TextAlignment = TextAlignment.Center,
  764. HeadHorizontalAlignment = HorizontalAlignment.Center
  765. };
  766. listHeaders.Insert(0, listHeader);
  767. //合约单位
  768. //var AgreeUnitHeader = new QuoteListHeader(QuoteHeaderNames.AgreeUnitName, "AgreeUnitName")
  769. //{
  770. // ColorProperty = "NameColor",
  771. // IsBold = false,
  772. // Width = 80,
  773. // TextAlignment = TextAlignment.Center,
  774. // HeadHorizontalAlignment = HorizontalAlignment.Center
  775. //};
  776. //listHeaders.Insert(16, AgreeUnitHeader);
  777. return listHeaders;
  778. }
  779. /// <summary>
  780. /// 根据交易模式获取列表抬头类型
  781. /// </summary>
  782. /// <param name="marketType">Type of the market.</param>
  783. /// <returns>QuoteListHeaderType.</returns>
  784. public QuoteListHeaderType GetQuoteListHeaderType(eTradeMode marketType)
  785. {
  786. switch (marketType)
  787. {
  788. case eTradeMode.TRADEMODE_MARKETMAKE:
  789. return QuoteListHeaderType.OTC;
  790. case eTradeMode.QuotePAndX:
  791. case eTradeMode.TRADEMODE_BIDDING:
  792. return QuoteListHeaderType.Bid;
  793. //case eTradeMode.TRADEMODE_BIDDINGMARKETMAKE:
  794. // return QuoteListHeaderType.BidMarket;
  795. //case eTradeMode.MySelected:
  796. ////先使用OTC表头
  797. ////return GetMySelectedHeaders();
  798. //return QuoteListHeaderType.OTC;
  799. //case eTradeMode.TRADEMODE_SALE:
  800. // return QuoteListHeaderType.Sale;
  801. case eTradeMode.MySelected:
  802. case eTradeMode.AllGoods:
  803. case eTradeMode.TRADEMODE_ENTRUST_HEDGE:
  804. return QuoteListHeaderType.Channel;
  805. default:
  806. return QuoteListHeaderType.OTC;
  807. }
  808. }
  809. #endregion
  810. #region Private Methods
  811. /// <summary>
  812. /// 获取我的自选字段
  813. /// </summary>
  814. /// <returns>List{QuoteListHeader}.</returns>
  815. private List<QuoteListHeader> GetMySelectedHeaders()
  816. {
  817. //我的自选择没有配置,手动生成
  818. return new List<QuoteListHeader>()
  819. {
  820. new QuoteListHeader(QuoteHeaderNames.Order, "ShowIndex") { Width= 50,HeadHorizontalAlignment = HorizontalAlignment.Center, TextAlignment = TextAlignment.Center },
  821. new QuoteListHeader(QuoteHeaderNames.Code, "GoodsCode") {ColorProperty="GoodsCodeColor", IsBold = true, Width=50, TextAlignment = TextAlignment.Left, HeadHorizontalAlignment = HorizontalAlignment.Center},
  822. new QuoteListHeader(string.Empty, "MySelectedFlag") { Width= 15, TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center},
  823. new QuoteListHeader(QuoteHeaderNames.Name, "Name") { ColorProperty="NameColor", IsBold=false, Width=80,TextAlignment = TextAlignment.Left, HeadHorizontalAlignment = HorizontalAlignment.Center},
  824. new QuoteListHeader(QuoteHeaderNames.CurrentPrice, "CurrentPriceDisplay") {SortProperty = "CurrentPrice", ColorProperty = "CurrentPriceColor", Width=80 },
  825. new QuoteListHeader(QuoteHeaderNames.IncreasePercent, "IncreasePercentDisplay"){ SortProperty = "IncreasePercent", ColorProperty ="IncreasePercentColor", Width=80 },
  826. new QuoteListHeader(QuoteHeaderNames.TotalTurnover, "TotalTurnoverDisplay"){ SortProperty = "TotalTurnover" , Width=80 },
  827. new QuoteListHeader(QuoteHeaderNames.Open, "OpenDisplay") { ColorProperty="OpenColor", SortProperty = "Open", Width=80 },
  828. new QuoteListHeader(QuoteHeaderNames.High, "HighDisplay") { ColorProperty = "HighColor", SortProperty = "High" , Width=80 },
  829. new QuoteListHeader(QuoteHeaderNames.Low, "LowDisplay") { ColorProperty = "LowColor",SortProperty = "Low" , Width=80 },
  830. new QuoteListHeader(QuoteHeaderNames.LastClose, "LastCloseDisplay"){SortProperty = "LastClose", Width=80 },
  831. new QuoteListHeader(QuoteHeaderNames.IncreaseValue, "IncreaseValue") { ColorProperty="IncreaseValueColor", Width=80 },
  832. new QuoteListHeader(QuoteHeaderNames.Amplitude, "AmplitudeDisplay"){ SortProperty = "Amplitude", Width=80 },
  833. new QuoteListHeader(QuoteHeaderNames.Market, "ExchangeName"){ Width=80 },
  834. new QuoteListHeader(QuoteHeaderNames.Sort, "SortName"){ Width=80 },
  835. //new QuoteListHeader(QuoteHeaderNames.Date, "DateDisplay"){SortProperty = "Date", Width=80, TextAlignment = TextAlignment.Right, HeadHorizontalAlignment = HorizontalAlignment.Right},
  836. };
  837. }
  838. /// <summary>
  839. /// 获取OTC行情字段
  840. /// </summary>
  841. /// <returns>List{QuoteListHeader}.</returns>
  842. private List<QuoteListHeader> GetOTCHeaders()
  843. {
  844. //var headers = UserManager.GetQuoteListHeaders(QuoteListHeaderType.OTC);
  845. //if (headers != null && headers.Any()) return headers;
  846. //序、商品代码、商品名称、买、卖、今开、昨收、最低、最高、 涨跌、涨跌幅、合约单位[new]、时间 ,
  847. var otcHeaders = new List<QuoteListHeader>()
  848. {
  849. new QuoteListHeader(QuoteHeaderNames.Order, "ShowIndex") { Width= 50,HeadHorizontalAlignment = HorizontalAlignment.Center, TextAlignment = TextAlignment.Center },
  850. new QuoteListHeader(QuoteHeaderNames.Code, "GoodsCode") {HeadFlag = 1, ColorProperty="GoodsCodeColor", IsBold = true, Width=50, TextAlignment = TextAlignment.Left, HeadHorizontalAlignment = HorizontalAlignment.Center},
  851. new QuoteListHeader(string.Empty, "MySelectedFlag") {HeadFlag = 100, Width= 15, TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center},
  852. new QuoteListHeader(QuoteHeaderNames.Name, "Name") {HeadFlag = 2, ColorProperty="NameColor", IsBold=false, Width=80,TextAlignment = TextAlignment.Left, HeadHorizontalAlignment = HorizontalAlignment.Center},
  853. new QuoteListHeader(QuoteHeaderNames.BuyPrice, "BidPriceDisplay") {HeadFlag = 3,SortProperty = "BidPrice", ColorProperty = "BidPriceColor",Width=80},
  854. new QuoteListHeader(QuoteHeaderNames.SellPrice, "AskPriceDisplay") {HeadFlag = 4,SortProperty = "AskPrice", ColorProperty = "AskPriceColor",Width=80},
  855. new QuoteListHeader(QuoteHeaderNames.Date, "DateDisplay"){HeadFlag =5, SortProperty = "Date", Width=80, TextAlignment = TextAlignment.Right, HeadHorizontalAlignment = HorizontalAlignment.Right},
  856. new QuoteListHeader(QuoteHeaderNames.Open, "OpenDisplay") {HeadFlag =6, ColorProperty="OpenColor", SortProperty = "Open",Width=80},
  857. new QuoteListHeader(QuoteHeaderNames.LastClose, "LastCloseDisplay") {HeadFlag =7, SortProperty="LastClose",Width=80},
  858. new QuoteListHeader(QuoteHeaderNames.Low, "LowDisplay") {HeadFlag =8, ColorProperty = "LowColor",SortProperty = "Low",Width=80},
  859. new QuoteListHeader(QuoteHeaderNames.High, "HighDisplay") {HeadFlag =9, ColorProperty = "HighColor", SortProperty = "High", Width=80},
  860. new QuoteListHeader(QuoteHeaderNames.IncreaseValue, "IncreaseValueDisplay") {HeadFlag =10, ColorProperty="IncreaseValueColor", SortProperty="IncreaseValue", Width=80},
  861. new QuoteListHeader(QuoteHeaderNames.IncreasePercent, "IncreasePercentDisplay"){HeadFlag =11, SortProperty = "IncreasePercent", ColorProperty ="IncreasePercentColor",Width=80},
  862. };
  863. if (UserManager.IsAccountLogin)
  864. {
  865. var quoteHeader = new QuoteListHeader(QuoteHeaderNames.AgreeUnitName, "AgreeUnitDisplay")
  866. {
  867. HeadFlag = 12,
  868. Width = 80,
  869. IsBold = false,
  870. TextAlignment = TextAlignment.Center,
  871. HeadHorizontalAlignment = HorizontalAlignment.Center
  872. }; //合约单位[new]
  873. otcHeaders.Add(quoteHeader);
  874. }
  875. return GetConfigHeaders(ApplicationParameter.MakeMarketQuoteHeaders, otcHeaders);
  876. }
  877. /// <summary>
  878. /// 获取竞价行情字段
  879. /// </summary>
  880. /// <returns>System.Collections.Generic.List{Muchinfo.MTPClient.Data.Model.QuoteListHeader}.</returns>
  881. private List<QuoteListHeader> GetBidHeaders()
  882. {
  883. //var headers = UserManager.GetQuoteListHeaders(QuoteListHeaderType.Bid);
  884. //if (headers != null && headers.Any()) return headers;
  885. var bidHeader = new List<QuoteListHeader>()
  886. {
  887. new QuoteListHeader(QuoteHeaderNames.Order, "ShowIndex") { Width= 50,HeadHorizontalAlignment = HorizontalAlignment.Center, TextAlignment = TextAlignment.Center },
  888. new QuoteListHeader(QuoteHeaderNames.Code, "GoodsCode") {HeadFlag =1, ColorProperty="GoodsCodeColor", IsBold = true, Width=50, TextAlignment = TextAlignment.Left, HeadHorizontalAlignment = HorizontalAlignment.Center},
  889. new QuoteListHeader(string.Empty, "MySelectedFlag") {HeadFlag =100, Width= 15, TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center},
  890. new QuoteListHeader(QuoteHeaderNames.Name, "Name") {HeadFlag =2, ColorProperty="NameColor", IsBold=false, Width=80,TextAlignment = TextAlignment.Left, HeadHorizontalAlignment = HorizontalAlignment.Center},
  891. new QuoteListHeader(QuoteHeaderNames.BuyPrice, "BidPriceDisplay") {HeadFlag =3, SortProperty = "BidPrice", ColorProperty = "BidPriceColor",Width=80},
  892. new QuoteListHeader(QuoteHeaderNames.BuyVolume, "BidVolumeDisplay") {HeadFlag =4,SortProperty = "BidVolume", ColorProperty = "BidPriceColor",Width=80},
  893. new QuoteListHeader(QuoteHeaderNames.SellPrice, "AskPriceDisplay")
  894. {
  895. HeadFlag =5,SortProperty = "AskPrice", ColorProperty = "AskPriceColor",Width=80
  896. },
  897. new QuoteListHeader(QuoteHeaderNames.SellVolume, "AskVolumeDisplay")
  898. {
  899. HeadFlag =6,
  900. SortProperty = "AskVolume", ColorProperty = "AskPriceColor",Width=80
  901. },
  902. new QuoteListHeader(QuoteHeaderNames.CurrentPrice, "CurrentPriceDisplay")
  903. {
  904. HeadFlag =7,
  905. SortProperty = "CurrentPrice", ColorProperty = "CurrentPriceColor",Width=80
  906. },
  907. new QuoteListHeader(QuoteHeaderNames.IncreaseValue, "IncreaseValueDisplay") { HeadFlag =8, ColorProperty="IncreaseValueColor", SortProperty="IncreaseValue", Width=80},
  908. new QuoteListHeader(QuoteHeaderNames.IncreasePercent, "IncreasePercentDisplay"){HeadFlag =9, SortProperty = "IncreasePercent", ColorProperty ="IncreasePercentColor",Width=80},
  909. new QuoteListHeader(QuoteHeaderNames.Open, "OpenDisplay") {HeadFlag =10, ColorProperty="OpenColor", SortProperty = "Open",Width=80},
  910. new QuoteListHeader(QuoteHeaderNames.LastClose, "LastCloseDisplay") {HeadFlag =11, SortProperty="LastClose",Width=80},
  911. new QuoteListHeader(QuoteHeaderNames.Low, "LowDisplay") {HeadFlag =12, ColorProperty = "LowColor",SortProperty = "Low",Width=80},
  912. new QuoteListHeader(QuoteHeaderNames.High, "HighDisplay") {HeadFlag =13, ColorProperty = "HighColor", SortProperty = "High",Width=80},
  913. new QuoteListHeader(QuoteHeaderNames.TotalVolume, "TotalVolumeDisplay")
  914. {HeadFlag =14,
  915. SortProperty = "TotalVolume",Width=120
  916. },
  917. new QuoteListHeader(QuoteHeaderNames.TotalTurnover, "TotalTurnoverDisplay"){HeadFlag =15, SortProperty = "TotalTurnover",Width=120},
  918. new QuoteListHeader(QuoteHeaderNames.PositionsDisplay, "PositionsDisplay"){ HeadFlag =16, SortProperty = "PositionsDisplay",Width=80},
  919. new QuoteListHeader(QuoteHeaderNames.Inventory, "InventoryDisplay"){ HeadFlag =17,SortProperty = "Inventory",Width=120},
  920. new QuoteListHeader(QuoteHeaderNames.RaisesPrice, "RaisesPriceDisplay"){HeadFlag =18,SortProperty = "RaisesPrice", ColorProperty = "RaisesPriceColor", Width=80},
  921. new QuoteListHeader(QuoteHeaderNames.FallsPrice, "FallsPriceDisplay")
  922. {
  923. HeadFlag =19,
  924. SortProperty = "FallsPrice", ColorProperty = "FallsPriceColor", Width=80
  925. },
  926. new QuoteListHeader(QuoteHeaderNames.TurnoverRate, "TurnoverRateDisplay"){ HeadFlag =20,SortProperty = "TurnoverRateDisplay", Width=80},
  927. //new QuoteListHeader(QuoteHeaderNames.AgreeUnitName, "AgreeUnitDisplay") {HeadFlag =21,Width=80,IsBold=false,TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center},//合约单位[new]
  928. //new QuoteListHeader(QuoteHeaderNames.Date, "DateDisplay"){SortProperty = "Date", Width=80, TextAlignment = TextAlignment.Right, HeadHorizontalAlignment = HorizontalAlignment.Right},
  929. };
  930. if (UserManager.IsAccountLogin)
  931. {
  932. var quoteHeader = new QuoteListHeader(QuoteHeaderNames.AgreeUnitName, "AgreeUnitDisplay")
  933. {
  934. HeadFlag = 21,
  935. Width = 80,
  936. IsBold = false,
  937. TextAlignment = TextAlignment.Center,
  938. HeadHorizontalAlignment = HorizontalAlignment.Center
  939. }; //合约单位[new]
  940. bidHeader.Add(quoteHeader);
  941. }
  942. return GetConfigHeaders(ApplicationParameter.BidQuoteHeaders, bidHeader);
  943. }
  944. /// <summary>
  945. /// 获取竞价行情字段-混合
  946. /// </summary>
  947. /// <returns>System.Collections.Generic.List{Muchinfo.MTPClient.Data.Model.QuoteListHeader}.</returns>
  948. private List<QuoteListHeader> GetBidMarketHeaders()
  949. {
  950. //var headers = UserManager.GetQuoteListHeaders(QuoteListHeaderType.BidMarket);
  951. //if (headers != null && headers.Any()) return headers;
  952. var bidMarketHeader = new List<QuoteListHeader>()
  953. {
  954. new QuoteListHeader(QuoteHeaderNames.Order, "ShowIndex") { Width= 50,HeadHorizontalAlignment = HorizontalAlignment.Center, TextAlignment = TextAlignment.Center },
  955. new QuoteListHeader(QuoteHeaderNames.Code, "GoodsCode") {HeadFlag =1, ColorProperty="GoodsCodeColor", IsBold = true, Width=50, TextAlignment = TextAlignment.Left, HeadHorizontalAlignment = HorizontalAlignment.Center},
  956. new QuoteListHeader(string.Empty, "MySelectedFlag") {HeadFlag =100, Width= 15, TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center},
  957. new QuoteListHeader(QuoteHeaderNames.Name, "Name") {HeadFlag =2, ColorProperty="NameColor", IsBold=false, Width=80,TextAlignment = TextAlignment.Left, HeadHorizontalAlignment = HorizontalAlignment.Center},
  958. new QuoteListHeader(QuoteHeaderNames.BuyPrice, "BidPriceDisplay") {HeadFlag =3, SortProperty = "BidPrice", ColorProperty = "BidPriceColor",Width=80},
  959. new QuoteListHeader(QuoteHeaderNames.BuyVolume, "BidVolumeDisplay") {HeadFlag =4,SortProperty = "BidVolume", ColorProperty = "BidPriceColor",Width=80},
  960. new QuoteListHeader(QuoteHeaderNames.SellPrice, "AskPriceDisplay")
  961. {
  962. HeadFlag =5,SortProperty = "AskPrice", ColorProperty = "AskPriceColor",Width=80
  963. },
  964. new QuoteListHeader(QuoteHeaderNames.SellVolume, "AskVolumeDisplay")
  965. {
  966. HeadFlag =6,
  967. SortProperty = "AskVolume", ColorProperty = "AskPriceColor",Width=80
  968. },
  969. new QuoteListHeader(QuoteHeaderNames.CurrentPrice, "CurrentPriceDisplay")
  970. {
  971. HeadFlag =7,
  972. SortProperty = "CurrentPrice", ColorProperty = "CurrentPriceColor",Width=80
  973. },
  974. new QuoteListHeader(QuoteHeaderNames.IncreaseValue, "IncreaseValueDisplay") { HeadFlag =8, ColorProperty="IncreaseValueColor", SortProperty="IncreaseValue", Width=80},
  975. new QuoteListHeader(QuoteHeaderNames.IncreasePercent, "IncreasePercentDisplay"){HeadFlag =9, SortProperty = "IncreasePercent", ColorProperty ="IncreasePercentColor",Width=80},
  976. new QuoteListHeader(QuoteHeaderNames.Open, "OpenDisplay") {HeadFlag =10, ColorProperty="OpenColor", SortProperty = "Open",Width=80},
  977. new QuoteListHeader(QuoteHeaderNames.LastClose, "LastCloseDisplay") {HeadFlag =11, SortProperty="LastClose",Width=80},
  978. new QuoteListHeader(QuoteHeaderNames.Low, "LowDisplay") {HeadFlag =12, ColorProperty = "LowColor",SortProperty = "Low",Width=80},
  979. new QuoteListHeader(QuoteHeaderNames.High, "HighDisplay") {HeadFlag =13, ColorProperty = "HighColor", SortProperty = "High",Width=80},
  980. new QuoteListHeader(QuoteHeaderNames.TotalVolume, "TotalVolumeDisplay")
  981. {HeadFlag =14,
  982. SortProperty = "TotalVolume",Width=120
  983. },
  984. new QuoteListHeader(QuoteHeaderNames.TotalTurnover, "TotalTurnoverDisplay"){HeadFlag =15, SortProperty = "TotalTurnover",Width=120},
  985. // new QuoteListHeader(QuoteHeaderNames.AgreeUnitName, "AgreeUnitDisplay") {HeadFlag =16,Width=80,IsBold=false,TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center},//合约单位[new]
  986. new QuoteListHeader(QuoteHeaderNames.RaisesPrice, "RaisesPriceDisplay")
  987. {
  988. HeadFlag =17,
  989. SortProperty = "RaisesPrice", ColorProperty = "RaisesPriceColor", Width=80
  990. },
  991. new QuoteListHeader(QuoteHeaderNames.FallsPrice, "FallsPriceDisplay")
  992. {
  993. HeadFlag =18,
  994. SortProperty = "FallsPrice", ColorProperty = "FallsPriceColor", Width=80
  995. },
  996. //new QuoteListHeader(QuoteHeaderNames.TurnoverRate, "TurnoverRateDisplay"){SortProperty = "TurnoverRateDisplay", Width=80},
  997. //new QuoteListHeader(QuoteHeaderNames.Date, "DateDisplay"){SortProperty = "Date", Width=80, TextAlignment = TextAlignment.Right, HeadHorizontalAlignment = HorizontalAlignment.Right},
  998. };
  999. if (UserManager.IsAccountLogin)
  1000. {
  1001. var quoteHeader = new QuoteListHeader(QuoteHeaderNames.AgreeUnitName, "AgreeUnitDisplay")
  1002. {
  1003. HeadFlag = 16,
  1004. Width = 80,
  1005. IsBold = false,
  1006. TextAlignment = TextAlignment.Center,
  1007. HeadHorizontalAlignment = HorizontalAlignment.Center
  1008. }; //合约单位[new]
  1009. bidMarketHeader.Add(quoteHeader);
  1010. }
  1011. return GetConfigHeaders(ApplicationParameter.BidMarketQuoteHeaders, bidMarketHeader);
  1012. }
  1013. /// <summary>
  1014. /// 获取发售行情字段
  1015. /// </summary>
  1016. /// <returns>List{QuoteListHeader}.</returns>
  1017. private List<QuoteListHeader> GetSaleHeaders()
  1018. {
  1019. //var headers = UserManager.GetQuoteListHeaders(QuoteListHeaderType.Sale);
  1020. //if (headers != null && headers.Any()) return headers;
  1021. var saleHeader = new List<QuoteListHeader>()
  1022. {
  1023. new QuoteListHeader(QuoteHeaderNames.Order, "OrderNumber") { Width= 50,HeadHorizontalAlignment = HorizontalAlignment.Center, TextAlignment = TextAlignment.Center },
  1024. new QuoteListHeader(QuoteHeaderNames.Code, "GoodsCode") {ColorProperty="GoodsCodeColor", IsBold = true, Width=80, TextAlignment = TextAlignment.Left, HeadHorizontalAlignment = HorizontalAlignment.Center,HeadFlag = 1},
  1025. new QuoteListHeader(QuoteHeaderNames.Name, "GoodsName") { ColorProperty="GoodsNameColor", IsBold=false, Width=80,TextAlignment = TextAlignment.Left, HeadHorizontalAlignment = HorizontalAlignment.Center ,HeadFlag =2},
  1026. // new QuoteListHeader(Client_Resource.Content_AgreeUnit, "AgreeUnitDisplay") {Width=80,IsBold=false,TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center ,HeadFlag =3},
  1027. new QuoteListHeader(Client_Resource.Content_SalePrice, "SalePrice") {Width=80,ColorProperty = "SalePriceColor" ,HeadFlag =4},
  1028. new QuoteListHeader(Client_Resource.Content_PublicQty, "IssueTotalDisplay") {Width=80,ColorProperty = "GoodsNameColor" ,HeadFlag =5},
  1029. new QuoteListHeader(Client_Resource.Content_ApplyStartTime, "ApplyStartTimeDisplay") {Width=120, SortProperty = "ApplyStartTime" ,HeadFlag =6},
  1030. new QuoteListHeader(Client_Resource.Content_ApplyEndTime, "ApplyEndTimeDisplay") { Width=120, SortProperty="ApplyEndTime" ,HeadFlag =7},
  1031. new QuoteListHeader(Client_Resource.Content_State, "RunStepsDisplay") { Width=80,IsBold=false, TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center ,HeadFlag =8},
  1032. };
  1033. if (UserManager.IsAccountLogin)
  1034. {
  1035. var quoteHeader = new QuoteListHeader(QuoteHeaderNames.AgreeUnitName, "AgreeUnitDisplay")
  1036. {
  1037. HeadFlag = 3,
  1038. Width = 80,
  1039. IsBold = false,
  1040. TextAlignment = TextAlignment.Center,
  1041. HeadHorizontalAlignment = HorizontalAlignment.Center
  1042. }; //合约单位[new]
  1043. saleHeader.Add(quoteHeader);
  1044. }
  1045. return GetConfigHeaders(ApplicationParameter.SaleQuoteHeaders, saleHeader);
  1046. }
  1047. /// <summary>
  1048. /// 获取挂牌抬头字段
  1049. /// </summary>
  1050. /// <returns>List{QuoteListHeader}.</returns>
  1051. private List<QuoteListHeader> GetDeliveryListingHeaders()
  1052. {
  1053. //var headers = UserManager.GetQuoteListHeaders(QuoteListHeaderType.Listing);
  1054. //if (headers != null && headers.Any()) return headers;
  1055. return new List<QuoteListHeader>()
  1056. {
  1057. new QuoteListHeader(QuoteHeaderNames.Order, "OrderNumber") { Width= 50,HeadHorizontalAlignment = HorizontalAlignment.Center, TextAlignment = TextAlignment.Center },
  1058. //new QuoteListHeader(string.Empty, "MySelectedFlag") { Width= 15, TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1059. //new QuoteListHeader(QuoteHeaderNames.Name, "GoodsName") { ColorProperty="GoodsNameColor", IsBold=false, Width=80,TextAlignment = TextAlignment.Left, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1060. new QuoteListHeader(QuoteHeaderNames.Code, "DeliveryGoodsCode") { IsBold=false, Width=80,TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1061. new QuoteListHeader(Client_Resource.DeliveryOrderView_DeliveryGoods, "DeliveryGoodsName") { ColorProperty="GoodsNameColor", IsBold=false, Width=140,TextAlignment = TextAlignment.Left, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1062. new QuoteListHeader(Client_Resource.Listing_BidHighest, "BidHighestDisplay") { SortProperty ="BidHighest", Width=120,IsBold=false,TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1063. new QuoteListHeader(Client_Resource.Listing_AskLowest, "AskLowestDisplay") { SortProperty ="AskLowest", Width=120,IsBold=false,TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1064. new QuoteListHeader(Client_Resource.Listing_CurrentPrice, "CurrentPriceDisplay") {Width=120,IsBold=false,TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1065. new QuoteListHeader(Client_Resource.Listing_TotalVolume, "TotalVolume") {Width=120 ,IsBold=false,TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1066. new QuoteListHeader(Client_Resource.Listing_GoodsUint, "GoodsUnitName") {Width=60 ,IsBold=false,TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1067. };
  1068. }
  1069. /// <summary>
  1070. /// 从配置中取要显示的字段
  1071. /// </summary>
  1072. /// <param name="configHeaders">配置的字符串</param>
  1073. /// <param name="baseHeaders">要筛选的字符串,</param>
  1074. /// <returns>如果configHeaders为空串,返回babaseHeaders</returns>
  1075. private List<QuoteListHeader> GetConfigHeaders(string configHeaders, List<QuoteListHeader> baseHeaders)
  1076. {
  1077. var diCheaders = baseHeaders.ToDictionary((item) => item.HeadFlag);
  1078. if (!string.IsNullOrWhiteSpace(configHeaders))
  1079. {
  1080. string[] headFlags = configHeaders.Split(',');
  1081. int flaghead = -1;
  1082. var lsHeaders = new List<QuoteListHeader>();
  1083. foreach (var headFlag in headFlags)
  1084. {
  1085. if (int.TryParse(headFlag, out flaghead))
  1086. {
  1087. if (diCheaders.ContainsKey(flaghead))
  1088. {
  1089. if (flaghead == 2 && diCheaders.ContainsKey(100)) ////名称加自选
  1090. {
  1091. lsHeaders.Add(diCheaders[100]);
  1092. }
  1093. lsHeaders.Add(diCheaders[flaghead]);
  1094. }
  1095. }
  1096. flaghead = -1;
  1097. }
  1098. return lsHeaders;
  1099. }
  1100. return baseHeaders;
  1101. }
  1102. /// <summary>
  1103. /// 获取托管计划字段
  1104. /// </summary>
  1105. /// <returns>List{QuoteListHeader}.</returns>
  1106. private List<QuoteListHeader> GetDepositHeaders()
  1107. {
  1108. //var headers = UserManager.GetQuoteListHeaders(QuoteListHeaderType.Deposit);
  1109. //if (headers != null && headers.Any()) return headers;
  1110. return new List<QuoteListHeader>()
  1111. {
  1112. new QuoteListHeader(Client_Resource.Content_DepositName, "DepositName") { IsBold = false, Width=110, TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1113. new QuoteListHeader(Client_Resource.Content_DepositGoodsCode, "DepositGoodsCode") { IsBold = true, Width=110, TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1114. new QuoteListHeader(Client_Resource.Content_DepositGoodsName, "DepositGoodsName") { IsBold=true, Width=110,TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1115. new QuoteListHeader(Client_Resource.Content_MaxDepositNumber, "MaxDepositNumber") {Width=120,TextAlignment = TextAlignment.Right, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1116. new QuoteListHeader(Client_Resource.Content_UnitName, "UnitName") {Width=80,IsBold=false,TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1117. new QuoteListHeader(Client_Resource.Content_DepositStartTime, "DepositStartTime") {Width=160, IsBold=false,TextAlignment = TextAlignment.Right, HeadHorizontalAlignment = HorizontalAlignment.Center },
  1118. new QuoteListHeader(Client_Resource.Content_DepositEndTime, "DepositEndTime") { Width=160, IsBold=false,TextAlignment = TextAlignment.Right, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1119. new QuoteListHeader(Client_Resource.Content_DepositReferPrice, "DepositReferPrice") { Width=120,IsBold=false, TextAlignment = TextAlignment.Right, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1120. new QuoteListHeader(Client_Resource.Content_SubscribeRate, "DisplaySubscribeRate") {Width=80,IsBold=false,TextAlignment = TextAlignment.Right, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1121. new QuoteListHeader(Client_Resource.Content_State, "DisplayDepositStatus") { Width=80,IsBold=false, TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1122. };
  1123. }
  1124. /// <summary>
  1125. /// 获取挂牌抬头字段
  1126. /// </summary>
  1127. /// <returns>List{QuoteListHeader}.</returns>
  1128. private List<QuoteListHeader> GetListingHeaders()
  1129. {
  1130. //var headers = UserManager.GetQuoteListHeaders(QuoteListHeaderType.Listing);
  1131. //if (headers != null && headers.Any()) return headers;
  1132. return new List<QuoteListHeader>()
  1133. {
  1134. new QuoteListHeader(QuoteHeaderNames.Order, "OrderNumber") { Width= 50,HeadHorizontalAlignment = HorizontalAlignment.Center, TextAlignment = TextAlignment.Center },
  1135. new QuoteListHeader(string.Empty, "MySelectedFlag") { Width= 15, TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1136. //new QuoteListHeader(QuoteHeaderNames.Name, "GoodsName") { ColorProperty="GoodsNameColor", IsBold=false, Width=80,TextAlignment = TextAlignment.Left, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1137. new QuoteListHeader(Client_Resource.DeliveryOrderView_DeliveryGoods, "GoodsName") { ColorProperty="GoodsNameColor", IsBold=false, Width=80,TextAlignment = TextAlignment.Left, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1138. new QuoteListHeader(Client_Resource.EntrustOrderFrame_Direction, "DirectionDisplay") { Width=80,IsBold=false,TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1139. new QuoteListHeader(Client_Resource.Listing_Price, "OrderPrice") {Width=80},
  1140. new QuoteListHeader(QuoteHeaderNames.CurrentPrice, "CurrentPriceDisplay") {Width=80},
  1141. new QuoteListHeader(Client_Resource.Listing_Lot, "OrderQty") {Width=80 },
  1142. new QuoteListHeader(Client_Resource.Listing_AvailQty, "AvailQty") {Width=80 },
  1143. new QuoteListHeader(Client_Resource.Listing_Goods_Discription, "RequesRemark") {Width=120 },
  1144. new QuoteListHeader(Client_Resource.Listing_Mode, "ListingModeDisplay") {Width=80,ToolTipProperty ="ListingModeToolTip" },
  1145. new QuoteListHeader(Client_Resource.Delisting_MoneyMode, "MoneyModeDisplay") {Width=120 },
  1146. new QuoteListHeader(Client_Resource.DeListing_StartTime, "StartTimeDisplay") {Width=160, SortProperty = "StartTime"},
  1147. new QuoteListHeader(Client_Resource.Delisting_EndTime, "EndTimeDisplay") { Width=160, SortProperty="EndTime"},
  1148. };
  1149. }
  1150. /// <summary>
  1151. /// 获取通道交易行情字段
  1152. /// </summary>
  1153. /// <returns>System.Collections.Generic.List{Muchinfo.MTPClient.Data.Model.QuoteListHeader}.</returns>
  1154. private List<QuoteListHeader> GetChannelHeaders()
  1155. {
  1156. var channelHeader = new List<QuoteListHeader>()
  1157. {
  1158. new QuoteListHeader(QuoteHeaderNames.Order, "ShowIndex") { Width= 50,HeadHorizontalAlignment = HorizontalAlignment.Center, TextAlignment = TextAlignment.Center },
  1159. new QuoteListHeader(QuoteHeaderNames.Code, "GoodsCode") {HeadFlag =1, ColorProperty="GoodsCodeColor", IsBold = true, Width=50, TextAlignment = TextAlignment.Left, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1160. new QuoteListHeader(string.Empty, "MySelectedFlag") {HeadFlag =100, Width= 15, TextAlignment = TextAlignment.Center, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1161. new QuoteListHeader(QuoteHeaderNames.Name, "Name") {HeadFlag =2, ColorProperty="NameColor", IsBold=false, Width=80,TextAlignment = TextAlignment.Left, HeadHorizontalAlignment = HorizontalAlignment.Center},
  1162. new QuoteListHeader(QuoteHeaderNames.BuyPrice, "BidPriceDisplay") {HeadFlag =3, SortProperty = "BidPrice", ColorProperty = "BidPriceColor",Width=80},
  1163. new QuoteListHeader(QuoteHeaderNames.BuyVolume, "BidVolumeDisplay") {HeadFlag =4,SortProperty = "BidVolume", ColorProperty = "BidPriceColor",Width=80},
  1164. new QuoteListHeader(QuoteHeaderNames.SellPrice, "AskPriceDisplay")
  1165. {
  1166. HeadFlag =5,SortProperty = "AskPrice", ColorProperty = "AskPriceColor",Width=80
  1167. },
  1168. new QuoteListHeader(QuoteHeaderNames.SellVolume, "AskVolumeDisplay")
  1169. {
  1170. HeadFlag =6,
  1171. SortProperty = "AskVolume", ColorProperty = "AskPriceColor",Width=80
  1172. },
  1173. new QuoteListHeader(QuoteHeaderNames.CurrentPrice, "CurrentPriceDisplay")
  1174. {
  1175. HeadFlag =7,
  1176. SortProperty = "CurrentPrice", ColorProperty = "CurrentPriceColor",Width=80
  1177. },
  1178. new QuoteListHeader(QuoteHeaderNames.IncreaseValue, "IncreaseValueDisplay") { HeadFlag =8, ColorProperty="IncreaseValueColor", SortProperty="IncreaseValue", Width=80},
  1179. new QuoteListHeader(QuoteHeaderNames.IncreasePercent, "IncreasePercentDisplay"){HeadFlag =9, SortProperty = "IncreasePercent", ColorProperty ="IncreasePercentColor",Width=80},
  1180. new QuoteListHeader(QuoteHeaderNames.Open, "OpenDisplay") {HeadFlag =10, ColorProperty="OpenColor", SortProperty = "Open",Width=80},
  1181. new QuoteListHeader(QuoteHeaderNames.LastClose, "LastCloseDisplay") {HeadFlag =11, SortProperty="LastClose",Width=80},
  1182. new QuoteListHeader(QuoteHeaderNames.Low, "LowDisplay") {HeadFlag =12, ColorProperty = "LowColor",SortProperty = "Low",Width=80},
  1183. new QuoteListHeader(QuoteHeaderNames.High, "HighDisplay") {HeadFlag =13, ColorProperty = "HighColor", SortProperty = "High",Width=80},
  1184. new QuoteListHeader(QuoteHeaderNames.TotalVolume, "TotalVolumeDisplay")
  1185. {HeadFlag =14,
  1186. SortProperty = "TotalVolume",Width=120
  1187. },
  1188. // new QuoteListHeader(QuoteHeaderNames.Inventory, "InventoryDisplay"){ HeadFlag =17,SortProperty = "Inventory",Width=120},// 库存量暂时去掉吧。所有版本?
  1189. new QuoteListHeader(QuoteHeaderNames.PositionsDisplay, "PositionsDisplay"){ HeadFlag =17,SortProperty = "PositionsDisplay",Width=120},
  1190. };
  1191. return GetConfigHeaders(ApplicationParameter.ChannelQuoteHeaders, channelHeader);
  1192. }
  1193. #endregion
  1194. #endregion
  1195. public void QeuryMtpSystemConfigs(string configid, System.Action<List<MTPSystemConfig>> successAction, System.Action<ErrorEntity> errorAction)
  1196. {
  1197. var queryCommonParams = new List<QueryCommonParam>();
  1198. queryCommonParams.Add(new QueryCommonParam() { ParamKey = "KeyId", ParamValue = configid });
  1199. QueryCommonHelper.QueryCommon(QueryStatement.QuerySystemConfig, queryCommonParams, new Action<List<MTPSystemConfig>>((systemConfig) =>
  1200. {
  1201. if (successAction != null)
  1202. {
  1203. successAction(systemConfig);
  1204. }
  1205. }), (error) =>
  1206. {
  1207. if (errorAction != null)
  1208. {
  1209. error.RequestFunc = Client_Resource.SystemParamQuery;
  1210. errorAction(error);
  1211. }
  1212. });
  1213. }
  1214. public void QueryResxVer(Action<List<ResxVerInfo>> successAction, Action<ErrorEntity> errorAction)
  1215. {
  1216. var queryCommonParams = new List<QueryCommonParam>();
  1217. QueryCommonHelper.QueryCommon(QueryStatement.SearchConstErrorCodeVer, queryCommonParams,
  1218. new Action<List<ResxVerInfo>>(
  1219. (verinfos) =>
  1220. {
  1221. successAction(verinfos);
  1222. }), (error) =>
  1223. {
  1224. error.RequestFunc = Client_Resource.ResxVerRequest;
  1225. if (errorAction != null) errorAction(error);
  1226. });
  1227. }
  1228. public void QueryResxDescrition(ResxVerType resxVerType, Action<List<ResxDescrition>, ResxVerType> successAction, Action<ErrorEntity> errorAction)
  1229. {
  1230. var statement = string.Empty;
  1231. var queryCommonParams = new List<QueryCommonParam>();
  1232. switch (resxVerType)
  1233. {
  1234. case ResxVerType._const:
  1235. statement = QueryStatement.SearchConstDesc;
  1236. break;
  1237. case ResxVerType.errorCode:
  1238. statement = QueryStatement.SearchErrorCodeDesc;
  1239. break;
  1240. }
  1241. QueryCommonHelper.QueryCommon(statement, queryCommonParams,
  1242. new Action<List<ResxDescrition>>(
  1243. (descritions) =>
  1244. {
  1245. successAction(descritions, resxVerType);
  1246. }), (error) =>
  1247. {
  1248. error.RequestFunc = string.Format(Client_Resource.ResxRequestfuc, (int)resxVerType);
  1249. if (errorAction != null) errorAction(error);
  1250. });
  1251. }
  1252. /// <summary>
  1253. /// 设置主页面的命令
  1254. /// </summary>
  1255. /// <param name="command"></param>
  1256. /// <returns></returns>
  1257. public List<KeyBinding> GetHomeKeyBindings(ICommand command)
  1258. {
  1259. var keyCommands = new List<KeyBinding>();
  1260. //keyCommands.Add(new KeyBinding(command, new KeyGesture(Key.Enter)) { CommandParameter = CommandFunc.OpenChart });
  1261. keyCommands.Add(new KeyBinding(command, new KeyGesture(Key.F10)) { CommandParameter = CommandFunc.GoodsF10 });
  1262. keyCommands.Add(new KeyBinding(command, new KeyGesture(Key.Escape)) { CommandParameter = CommandFunc.BrowserBack });
  1263. keyCommands.Add(new KeyBinding(command, new KeyGesture(Key.PageDown)) { CommandParameter = CommandFunc.QuotePageDown });
  1264. keyCommands.Add(new KeyBinding(command, new KeyGesture(Key.PageUp)) { CommandParameter = CommandFunc.QuotePageup });
  1265. keyCommands.Add(new KeyBinding(command, new KeyGesture(Key.Insert)) { CommandParameter = CommandFunc.QuoteInsert });
  1266. //// keyCommands.Add(new KeyBinding(command, Key.Tab, ModifierKeys.Control) { CommandParameter = CommandFunc.Tab }); //使用KeyUp事件操作
  1267. //keyCommands.Add(new KeyBinding(command, new KeyGesture(Key.Enter)) { CommandParameter = CommondFunc.OpenOrder });
  1268. keyCommands.Add(new KeyBinding(command, new KeyGesture(Key.F7)) { CommandParameter = CommandFunc.HoldDetail });
  1269. keyCommands.Add(new KeyBinding(command, new KeyGesture(Key.F8)) { CommandParameter = CommandFunc.Amount });
  1270. keyCommands.Add(new KeyBinding(command, new KeyGesture(Key.F9)) { CommandParameter = CommandFunc.CompleteOrder });
  1271. keyCommands.Add(new KeyBinding(command, new KeyGesture(Key.F1)) { CommandParameter = CommandFunc.QuoteTik });
  1272. keyCommands.Add(new KeyBinding(command, new KeyGesture(Key.F2)) { CommandParameter = CommandFunc.Buy });
  1273. keyCommands.Add(new KeyBinding(command, new KeyGesture(Key.F3)) { CommandParameter = CommandFunc.Sell });
  1274. keyCommands.Add(new KeyBinding(command, new KeyGesture(Key.F4)) { CommandParameter = CommandFunc.Cancel });
  1275. keyCommands.Add(new KeyBinding(command, new KeyGesture(Key.F11)) { CommandParameter = CommandFunc.OpenTradeBoard });
  1276. keyCommands.Add(new KeyBinding(command, new KeyGesture(Key.F12)) { CommandParameter = CommandFunc.TranFloatOrder });
  1277. return keyCommands;
  1278. }
  1279. /// <summary>
  1280. /// 获取常用指标
  1281. /// </summary>
  1282. /// <param name="command">命令</param>
  1283. public List<SysMenuItem> GetIndicator()
  1284. {
  1285. var indicator = new List<SysMenuItem>()
  1286. {
  1287. new SysMenuItem(MenuNames.AnalysisIndicator_MA, MenuCommandType.MA),
  1288. new SysMenuItem(MenuNames.AnalysisIndicator_BOLL, MenuCommandType.BOLL),
  1289. new SysMenuItem(MenuNames.AnalysisIndicator_MACD, MenuCommandType.MACD),
  1290. new SysMenuItem(MenuNames.AnalysisIndicator_KDJ, MenuCommandType.KDJ),
  1291. new SysMenuItem(MenuNames.AnalysisIndicator_RSI, MenuCommandType.RSI),
  1292. new SysMenuItem(MenuNames.AnalysisIndicator_PSY, MenuCommandType.PSY),
  1293. new SysMenuItem(MenuNames.AnalysisIndicator_DMI, MenuCommandType.DMI),
  1294. new SysMenuItem(MenuNames.AnalysisIndicator_VOL, MenuCommandType.VOL),
  1295. };
  1296. return indicator;
  1297. }
  1298. }
  1299. }