|
- using BPASmartClient.Helper;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Collections.ObjectModel;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using BPASmartClient.Model;
- using System.Windows.Media;
- using BPASmartClient.CustomResource.Pages.View;
-
- namespace BPASmartClient.CustomResource.Pages.Model
- {
- public class MessageNotify
- {
- private volatile static MessageNotify _Instance;
- public static MessageNotify GetInstance => _Instance ??= new MessageNotify();
-
- public static readonly object runLock = new object();
- public static readonly object userlock = new object();
- public static readonly object alarmlock = new object();
- public static readonly object recipeLogslock = new object();
- private MessageNotify() { }
-
- public Action<string> UserLog { get; set; }
-
- public Action<string> RunLog { get; set; }
-
- public Action<string> AlarmLog { get; set; }
-
- public Action<string> RecipeCompleteLogs { get; set; }
-
- public ObservableCollection<RunLog> runLogs { get; set; } = new();
-
- public ObservableCollection<UserLog> userLogs { get; set; } = new();
-
- public ObservableCollection<Alarm> alarmLogs { get; set; } = new();
-
- public ObservableCollection<RecipeCompleteLog> recipeLogs { get; set; } = new();
-
- public void LogSave()
- {
- Sqlite<UserLog>.GetInstance.Save();
- Sqlite<RunLog>.GetInstance.Save();
- Sqlite<Alarm>.GetInstance.Save();
- Sqlite<RecipeCompleteLog>.GetInstance.Save();
- }
-
- public void ShowRecipeLog(string info)
- {
- lock (recipeLogslock)
- {
- try
- {
- RecipeCompleteLog runLog = new RecipeCompleteLog()
- {
- Date = DateTime.Now.ToString("yyyy-MM-dd"),
- Time = DateTime.Now.ToString("HH:mm:ss"),
- RecipeName = info
- };
- Sqlite<RecipeCompleteLog>.GetInstance.Base.Add(runLog);
- Application.Current.Dispatcher.Invoke(new Action(() => { recipeLogs.Insert(0, runLog); }));
- RecipeCompleteLogs?.Invoke(info);
- }
- catch (Exception)
- {
-
- // throw;
- }
- }
- }
-
- public void ShowUserLog(string info)
- {
- lock (userlock)
- {
- if (!string.IsNullOrEmpty(Global.userInfo.UserName) && !string.IsNullOrEmpty(Global.userInfo.permission.ToString()) && !string.IsNullOrEmpty(info))
- {
- UserLog userLog = new UserLog()
- {
- Date = DateTime.Now.ToString("yyyy-MM-dd"),
- Time = DateTime.Now.ToString("HH:mm:ss"),
- Permission = Global.userInfo.permission.ToString(),
- UserName = Global.userInfo.UserName,
- LogInfo = info
- };
- Sqlite<UserLog>.GetInstance.Base.Add(userLog);
- Application.Current.Dispatcher.Invoke(new Action(() => { userLogs.Insert(0, userLog); }));
- UserLog?.Invoke(info);
- }
- }
- }
-
- public void ShowRunLog(string info)
- {
- lock (runLock)
- {
- try
- {
- RunLog runLog = new RunLog()
- {
- Date = DateTime.Now.ToString("yyyy-MM-dd"),
- Time = DateTime.Now.ToString("HH:mm:ss"),
- RunLogInfo = info
- };
- Sqlite<RunLog>.GetInstance.Base.Add(runLog);
- Application.Current.Dispatcher.Invoke(new Action(() => { runLogs.Insert(0, runLog); }));
- RunLog?.Invoke(info);
- }
- catch (Exception)
- {
-
- // throw;
- }
- }
- }
-
- int AlarmID;
- public void ShowAlarmLog(string info, string AlarmNumber = "_", AlarmLevel level = AlarmLevel.一般报警)
- {
- lock (alarmlock)
- {
- AlarmID++;
- Alarm alarmLog = new Alarm()
- {
- NumId = AlarmID,
- Date = DateTime.Now.ToString("yyyy-MM-dd"),
- Time = DateTime.Now.ToString("HH:mm:ss"),
- Info = info,
- Value = AlarmNumber,
- Grade = (level) + ""
- };
- Sqlite<Alarm>.GetInstance.Base.Add(alarmLog);
- Application.Current.Dispatcher.Invoke(new Action(() => { alarmLogs.Insert(0, alarmLog); }));
- AlarmLog?.Invoke(info);
- }
- }
-
- public bool ShowDialog(string info, DialogType dialogType = DialogType.Information)
- {
- bool result = false;
- Application.Current.Dispatcher.Invoke(() =>
- {
- PromptView PV = new PromptView();
- PV.TextBlockInfo = info;
- switch (dialogType)
- {
- case DialogType.Warning:
- PV.TextBlockIcon = "";
- PV.TextBlockForeground = Brushes.Yellow;
- PV.infoType.Text = "警告:";
- //PV.Cancel.Visibility = Visibility.Collapsed;
- break;
- case DialogType.Error:
- PV.TextBlockIcon = "";
- PV.TextBlockForeground = Brushes.Red;
- PV.infoType.Text = "错误:";
- //PV.Cancel.Visibility = Visibility.Collapsed;
- break;
- case DialogType.Information:
- PV.TextBlockIcon = "";
- PV.TextBlockForeground = Brushes.DeepSkyBlue;
- PV.infoType.Text = "提示:";
- //PV.Cancel.Visibility = Visibility.Visible;
- break;
- default:
- break;
- }
- PV.infoType.Foreground = PV.TextBlockForeground;
-
- var res = PV.ShowDialog();
- result = res == null ? false : (bool)res;
- });
- return result;
- }
- }
-
- public enum DialogType
- {
- Warning,
- Error,
- Information,
- }
- }
|