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();
}
}
}