SystemService.cs 79 KB

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