using BPA.Helper; using BPASmartClient.CustomResource.Pages.Enums; using BPASmartClient.CustomResource.Pages.Model; using BPASmartClient.CustomResource.Pages.View; using BPASmartClient.CustomResource.Pages.ViewModel; using BPASmartClient.DosingSystem.Converter; using BPASmartClient.DosingSystem.Model; using BPASmartClient.DosingSystem.Model.MQTT; using BPASmartClient.DosingSystem.Service; using Google.Protobuf.WellKnownTypes; using System; using System.Collections.ObjectModel; using System.Collections.Specialized; using System.Configuration; using System.Diagnostics; using System.Linq; using System.Threading; using System.Threading.Tasks; using System.Windows; using Enum = System.Enum; namespace BPASmartClient.DosingSystem { /// /// Interaction logic for App.xaml /// public partial class App : Application { public static Window MainWindow; public ExcuteControl excute; public EventWaitHandle ProgramStarted { get; set; } protected override async void OnStartup(StartupEventArgs e) { bool createNew; try { MessageLog.GetInstance.NotifyShow = new Action(o => { DebugLogViewModel.MessageModels.Add(new MessageModel() { LogInfo = o, Forground = System.Windows.Media.Brushes.DeepSkyBlue }); }); MessageLog.GetInstance.NotifyShowEx = new Action(o => { DebugLogViewModel.MessageModels.Add(new MessageModel() { LogInfo = o, Forground = System.Windows.Media.Brushes.Red }); }); } catch (Exception) { } ProgramStarted = new EventWaitHandle(false, EventResetMode.AutoReset, "DosingSystem", out createNew); if (!createNew) { MessageBox.Show("程序已启动"); App.Current.Shutdown(); Environment.Exit(0); } base.OnStartup(e); SystemHelper.GetInstance.CreateDesktopShortcut(); DataInit(); await Task.Run(() => { excute = ExcuteControl.GetInstance; }); MenuInit(); //SiemensTest.GetInstance.Init(); DeviceInquire.GetInstance.Init();//配料机设备上线监听,设备列表初始化 MainView mv = new MainView(); mv.TitleName = $"味魔方管理系统软件[简称:味魔方] V1.0.1"; LoginView lv = new LoginView(); var res = lv.ShowDialog(); if (res != null && res == true) { #region 更新测试 //string directory = $"{AppDomain.CurrentDomain.BaseDirectory}AccessFile\\JSON\\UpdateModel.json"; //if (File.Exists(directory)) // mv.TitleName = $"味魔方管理系统软件[简称:味魔方] {Json.Data.UpgradeVersion}"; //else //{ // mv.TitleName = $"味魔方管理系统软件[简称:味魔方] V1.0.1"; // Task.Run(() => // { // Thread.Sleep(3000); // var tt = MessageNotify.GetInstance.ShowDialog("检测到新版本,请问是否现在更新?", DialogType.Information); // if (tt) // { // string directory = AppDomain.CurrentDomain.BaseDirectory; // Process.Start($"{directory}BPASmartClient.Update.exe"); // App.Current.Dispatcher.Invoke(() => { mv.Close(); }); // } // }); //} #endregion BPASmartClient.CustomResource.Pages.Model.MessageNotify.GetInstance.ShowUserLog("用户登录"); mv.Show(); } else mv.Close(); /*if (Json.Data.deviceParModels.Count == 0) { for (int i = 0; i < Json.Data.BaseParModel.StockCount; i++) { DeviceParModel devicePar = new DeviceParModel(); devicePar.MaterialName = $"{i+1}"; devicePar.SlowlyAddWeight = 50; devicePar.PreCloseValveWeight = 3; devicePar.RapidAcceleration = 20000; devicePar.SlowAcceleration = 0; devicePar.ServoManualSpeed = 20000; devicePar.SiloUpperLimitWeight = 0; devicePar.LowerLimitWeightOfSilo = 0; devicePar.StirringSpeed = 0; Json.Data.deviceParModels.Add(devicePar); } } Json.Save();*/ //ServerFactory.GetInstance.Set(new APIServer()); //MqttServer.GetInstance.Init(); MainWindow = mv; } protected override void OnExit(ExitEventArgs e) { base.OnExit(e); excute.ShutDown(); //excute?.MqttDisConnect(); Json.Save(); Json.Save(); Json.Save(); Json.Save(); BPASmartClient.CustomResource.Pages.Model.MessageNotify.GetInstance.LogSave(); TaskManage.GetInstance.Dispose(); //Process.GetCurrentProcess().Kill(); } private void MenuInit() { /* NfcServer.GetInstance.Init();*/ #region 配方管理菜单 ObservableCollection RecipeManage = new ObservableCollection(); RecipeManage.Add(new SubMenumodel() { SubMenuName = "配方管理", SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, AssemblyName = "BPASmartClient.DosingSystem", ToggleWindowPath = "View.RecipeSettingsView" }); RecipeManage.Add(new SubMenumodel() { SubMenuName = "配方下发", SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, AssemblyName = "BPASmartClient.DosingSystem", ToggleWindowPath = "View.RecipeControlView" }); RecipeManage.Add(new SubMenumodel() { SubMenuName = "配方记录查询", SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, AssemblyName = "BPASmartClient.DosingSystem", ToggleWindowPath = "View.MaterialDosageView" }); MenuManage.GetInstance.menuModels.Add(new MenuModel() { MainMenuIcon = "", MainMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, MainMenuName = "配方管理", Alias = "Recipe Management", subMenumodels = RecipeManage, }); #endregion #region 参数设置 ObservableCollection ParSet = new ObservableCollection(); ParSet.Add(new SubMenumodel() { SubMenuName = "原料参数设置", SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, AssemblyName = "BPASmartClient.DosingSystem", ToggleWindowPath = "View.DeviceMaterialParView" }); ParSet.Add(new SubMenumodel() { SubMenuName = "设备参数设置", SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, AssemblyName = "BPASmartClient.DosingSystem", ToggleWindowPath = "View.CommParSetView" }); //ParSet.Add(new SubMenumodel() //{ // SubMenuName = "测试", // SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, // AssemblyName = "BPASmartClient.DosingSystem", // ToggleWindowPath = "View.SendCtrlView" //}); //ParSet.Add(new SubMenumodel() //{ // SubMenuName = "出料口管理设置", // SubMenuPermission = new Permission[] { Permission.管理员 }, // AssemblyName = "BPASmartClient.DosingSystem", // ToggleWindowPath = "View.OutletManagementView" //}); MenuManage.GetInstance.menuModels.Add(new MenuModel() { MainMenuIcon = "", MainMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, MainMenuName = "参数设置", Alias = "Parameter Set", subMenumodels = ParSet, }); #endregion #region 手动控制 ObservableCollection ManualControl = new ObservableCollection(); ManualControl.Add(new SubMenumodel() { SubMenuName = "气缸手动控制", SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, AssemblyName = "BPASmartClient.DosingSystem", ToggleWindowPath = "View.ManualControlView" }); ManualControl.Add(new SubMenumodel() { SubMenuName = "输送带手动控制", SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, AssemblyName = "BPASmartClient.DosingSystem", ToggleWindowPath = "View.ConveyerBeltManualView" }); //ManualControl.Add(new SubMenumodel() //{ // SubMenuName = "配料输送带控制", // SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, // AssemblyName = "BPASmartClient.DosingSystem", // ToggleWindowPath = "View.TempManageControlView" //}); //ManualControl.Add(new SubMenumodel() //{ // SubMenuName = "料仓控制", // SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.技术员 }, // AssemblyName = "BPASmartClient.DosingSystem", // ToggleWindowPath = "View.StockControlView" //}); //MenuManage.GetInstance.menuModels.Add(new MenuModel() //{ // MainMenuIcon = "", // MainMenuName = "手动控制", // MainMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, // Alias = "Parameter Set", // subMenumodels = ManualControl, //}); #endregion #region 消息日志 ObservableCollection InfoLog = new ObservableCollection(); InfoLog.Add(new SubMenumodel() { SubMenuName = "操作日志", SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, AssemblyName = "BPASmartClient.CustomResource", ToggleWindowPath = "Pages.View.UserLogView" }); InfoLog.Add(new SubMenumodel() { SubMenuName = "运行日志", SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, AssemblyName = "BPASmartClient.CustomResource", ToggleWindowPath = "Pages.View.RunLogView" }); InfoLog.Add(new SubMenumodel() { SubMenuName = "报警记录", SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, AssemblyName = "BPASmartClient.CustomResource", ToggleWindowPath = "Pages.View.AlarmView" }); InfoLog.Add(new SubMenumodel() { SubMenuName = "调试日志", SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, AssemblyName = "BPASmartClient.CustomResource", ToggleWindowPath = "Pages.View.DebugLogView" }); //InfoLog.Add(new SubMenumodel() //{ // SubMenuName = "报表数据", // SubMenuPermission = new Permission[] { Permission.操作员, Permission.管理员, Permission.技术员, Permission.技术员 }, // AssemblyName = "BPASmartClient.CustomResource", // ToggleWindowPath = "Pages.View.ReportView" //}); MenuManage.GetInstance.menuModels.Add(new MenuModel() { MainMenuIcon = "", MainMenuName = "消息日志", MainMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, Alias = "Message Log", subMenumodels = InfoLog, }); #endregion #region 硬件设备监控 ObservableCollection DeviceMonitor = new ObservableCollection(); DeviceMonitor.Add(new SubMenumodel() { SubMenuName = "原料设备列表", SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, AssemblyName = "BPASmartClient.DosingSystem", ToggleWindowPath = "View.DeviceListView" }); //2023/6/29修改 if (!String.IsNullOrWhiteSpace(Json.Data.BaseParModel.ConveryType) && (ConveryType)Enum.Parse(typeof(ConveryType), Json.Data.BaseParModel.ConveryType) == ConveryType.U型) { DeviceMonitor.Add(new SubMenumodel() { SubMenuName = "设备状态", SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, AssemblyName = "BPASmartClient.DosingSystem", ToggleWindowPath = "View.UHardwareStatusView" }); } else { DeviceMonitor.Add(new SubMenumodel() { SubMenuName = "设备状态", SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, AssemblyName = "BPASmartClient.DosingSystem", ToggleWindowPath = "View.HardwareStatusView" }); } MenuManage.GetInstance.menuModels.Add(new MenuModel() { MainMenuIcon = "", MainMenuName = "设备监控", MainMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, Alias = "Device Monitor", subMenumodels = DeviceMonitor, }); #endregion #region 用户管理 ObservableCollection UserManager = new ObservableCollection(); UserManager.Add(new SubMenumodel() { SubMenuName = "用户登录", SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, AssemblyName = "BPASmartClient.CustomResource", ToggleWindowPath = "Pages.View.SubPagLoginView" }); UserManager.Add(new SubMenumodel() { SubMenuName = "密码修改", SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, AssemblyName = "BPASmartClient.CustomResource", ToggleWindowPath = "Pages.View.PasswordChangeView" }); UserManager.Add(new SubMenumodel() { SubMenuName = "用户管理", SubMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, AssemblyName = "BPASmartClient.CustomResource", ToggleWindowPath = "Pages.View.UserManagerView" }); MenuManage.GetInstance.menuModels.Add(new MenuModel() { MainMenuIcon = "", MainMenuName = "用户管理", MainMenuPermission = new Permission[] { Permission.管理员, Permission.操作员, Permission.观察员, Permission.技术员 }, Alias = "User Management", subMenumodels = UserManager, }); #endregion } private void DataInit() { Json.Read(); Json.Read(); Json.Read(); Json.Data.Recipes.AddRange(Json.Data.Recipes); Json.Data.Recipes.Clear(); Json.Save(); Json.Save(); Json.Read(); Json.Read(); } } }