選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

174 行
6.1 KiB

  1. using HKCardOUT.ViewModels;
  2. using Stylet;
  3. using StyletIoC;
  4. using System;
  5. using System.Windows.Threading;
  6. using System.Windows;
  7. using Microsoft.Extensions.Configuration;
  8. using HKCardOUT.Helper;
  9. using HKCardOUT.QuartzUtil.Job;
  10. using HKCardOUT.QuartzUtil;
  11. using HKCardOUT.Logic;
  12. using HKCardOUT.Logic.Service;
  13. using ImTools;
  14. using XExten.Advance.LinqFramework;
  15. using System.Threading;
  16. using HKLog;
  17. using HKLib.RabbitMQ.Config;
  18. using HKLib.RabbitMQ.Subscriber;
  19. using System.Linq;
  20. using BPA.Helper;
  21. using QuartzUtil.Job;
  22. namespace HKCardOUT
  23. {
  24. public class Bootstrapper : Bootstrapper<RootViewModel>
  25. {
  26. /// <summary>
  27. /// 程序启动
  28. /// </summary>
  29. protected override void OnStart()
  30. {
  31. ThreadManage.GetInstance().StartLong(new Action(() =>
  32. {
  33. try
  34. {
  35. bool ping = PingHelper.PingTest();
  36. //1.检测网络上下线
  37. bool network = HKHelpers.GetInstance().GetNetworkState();
  38. if (ping && network != DataBus.NetWordState)
  39. {
  40. DataBus.NetWordState = network && ping;
  41. if (DataBus.NetWordState) HandyControl.Controls.Growl.InfoGlobal("网络连接成功");
  42. else HandyControl.Controls.Growl.InfoGlobal("系统已离线,请连接网络!!!");
  43. }
  44. }
  45. catch (Exception ex)
  46. {
  47. HandyControl.Controls.Growl.InfoGlobal(ex.Message);
  48. }
  49. Thread.Sleep(3000);
  50. }), "循环状态监测线程", false);
  51. var tm = RemoteService.GetNetWorkTime();
  52. ThreadManage.GetInstance().StartLong(new Action(() =>
  53. {
  54. DataBus.TodayTime = DateTime.Now;
  55. Thread.Sleep(1000 * 60);
  56. }), "刷新时间", true);
  57. HKLogImport.Init("HKCardOUT");
  58. HKLogImport.WriteInfo("程序初始化,时间:" + DateTime.Now);
  59. }
  60. protected override void ConfigureIoC(IStyletIoCBuilder builder)
  61. {
  62. builder.Bind<HKCore>().ToSelf();
  63. }
  64. /// <summary>
  65. /// 初始化系统相关参数配置
  66. /// </summary>
  67. protected override void Configure()
  68. {
  69. #if !DEBUG
  70. var configer = (new ConfigurationBuilder()).AddJsonFile("options.json").Build();
  71. #else
  72. var configer = (new ConfigurationBuilder()).AddJsonFile("options.pro.json").Build();
  73. #endif
  74. DataBus.Entitys = new System.Collections.Concurrent.ConcurrentQueue<Logic.Model.SaleLog>();
  75. DataBus.ConnectionString = configer.GetConnectionString("Sqlite");
  76. DataBus.SaasRoute = configer["SaasRoute"];
  77. HKLib.Configer.MqAddress = configer["MQ"];
  78. DataBus.Cron = configer["Cron"];
  79. DataBus.Span = configer["Span"].AsInt();
  80. DataBus.StoreId = configer["StoreId"];
  81. DataBus.COM = configer["COM"];
  82. DataBus.TenantId = configer["TenantId"];
  83. DataBus.StartDevice = configer["StartDevice"].AsBool();
  84. DataBus.Cancel = configer["Cancel"].AsBool();
  85. DataBus.Count = configer["Count"].AsInt();
  86. DataBus.MQTT = configer["MQTT"].ToString();
  87. DataBus.Admin = configer.GetSection("Admin").GetChildren().Select(t => t.Value).ToList();
  88. HKLib.Configer.SaasRoute = DataBus.SaasRoute;
  89. RemoteService.PullShopInfo();
  90. //初始化表
  91. DbContext.InitTable();
  92. //服务器拉取数据
  93. ServiceQueryExcute.QueryExcute.ExtuteMQ<CardHandle, string>("CardStutasChanged", MQEnum.Push);
  94. ServiceQueryExcute.QueryExcute.ExtuteMQ<TimeHandle, string>("TimeChanged", MQEnum.Push);
  95. ServiceQueryExcute.QueryExcute.ExtuteMQ<FoodHandle, string>("GateFood", MQEnum.Push);
  96. ServiceQueryExcute.QueryExcute.ExtuteMQ<RangeHandle, string>("GateSet", MQEnum.Push);
  97. //服务器拉取数据
  98. RemoteService.SyncTime();
  99. DataBus.UserListDto = HKLib.Interfaces.HKLibHelper.GetUserListSync("");
  100. RemoteService.GetCardStuatas();
  101. DataBus.saleLogDtos = new System.Collections.Concurrent.ConcurrentQueue<DTO.SaleLogDto>();
  102. RemoteService.GetFoodMenus();
  103. RemoteService.GetRangeCtrl();
  104. MQTTCon.Connection();
  105. base.Configure();
  106. }
  107. /// <summary>
  108. /// 初始化VM
  109. /// </summary>
  110. protected override void Launch()
  111. {
  112. base.Launch();
  113. }
  114. /// <summary>
  115. /// 加载首页VM
  116. /// </summary>
  117. /// <param name="rootViewModel"></param>
  118. protected override void DisplayRootView(object rootViewModel)
  119. {
  120. base.DisplayRootView(rootViewModel);
  121. }
  122. /// <summary>
  123. ///VM加载完毕
  124. /// </summary>
  125. protected override void OnLaunch()
  126. {
  127. QuartzCoreFactory.QuartzCore().AddJob<CardJob>(new QuartzMap
  128. {
  129. JobDetail = "定时同步卡",
  130. JobName = "同步卡",
  131. JobGroup = "同步卡",
  132. Cron= "0 25,55 11,17 * * ?"
  133. });
  134. QuartzCoreFactory.QuartzCore().AddJob<QuartzJob>(new QuartzMap
  135. {
  136. JobDetail = "定时推送订单",
  137. Cron = DataBus.Cron,
  138. JobName = "订单",
  139. JobGroup = "订单"
  140. });
  141. base.OnLaunch();
  142. }
  143. /// <summary>
  144. /// 退出
  145. /// </summary>
  146. /// <param name="e"></param>
  147. protected override void OnExit(ExitEventArgs e)
  148. {
  149. base.OnExit(e);
  150. }
  151. /// <summary>
  152. /// 全局异常捕获
  153. /// </summary>
  154. /// <param name="e"></param>
  155. protected override void OnUnhandledException(DispatcherUnhandledExceptionEventArgs e)
  156. {
  157. HKLog.HKLogImport.WriteError(e.Exception.InnerException != null ? e.Exception.InnerException : e.Exception);
  158. GC.Collect();
  159. }
  160. }
  161. }