using HandyControl.Controls; using LiveCharts; using Ping9719.WpfEx; using Ping9719.WpfEx.Mvvm; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Controls; using System.Windows.Input; using HandyControl.Tools.Extension; using 智能仓储WCS管理系统.Views.Controls; using 智能仓储WCS管理系统.Api; using WCS.Model; using System.Diagnostics; using System.Security.Cryptography; using WCS.Model.ApiModel.Home; namespace 智能仓储WCS管理系统.ViewModel { public class HomeViewModel : BindableBase { WarnInfoContainer WarnInfo = new WarnInfoContainer();//警告、错误等信息 public bool IsThisPageVisible = true; public HomeViewModel() { Task.Run(() => { while (true) { if (IsThisPageVisible) { RefreshUserControl(); } Thread.Sleep(2000); } }); #region 启动自检 SelfCheck(); #endregion } #region 绑定 private string textErr; /// /// 错误文本 /// public string TextErr { get => textErr; set { SetProperty(ref textErr, value); } } public ICommand ClearTextInfoCommand { get => new DelegateCommand(ClearTextInfo); } /// /// 清除信息文本 /// public void ClearTextInfo() { TextBoxLog.ClearLog("selfCheck"); } public ICommand ClearTextErrCommand { get => new DelegateCommand(ClearTextErr); } /// /// 清除全部错误文本 /// public void ClearTextErr() { WarnInfo.RemoveAll(WarnInfoType.AlwayWarn); } public WrapPanel wrapPanel; public async void RefreshUserControl() { //var dia = Dialog.Show(new TextDialog()); try { var body = new GetShelfStatusRequest() { UserName = LocalStatic.CurrentUser, DeviceType = "WCS前端", GroupNames = LocalFile.Config.GroupName, }; var Result = await ApiHelp.Post([LocalFile.Config.ApiIpHost, "home/getShelfStatus"], body); if (Result != null && Result.Data?.Count > 0) { App.Current.Dispatcher.Invoke(() => { wrapPanel.Children.Clear(); Result.Data .ForEach(t => { if (t.CurentMode == 0 || t.CurentMode == 1) { t.OrderNumber = string.Empty; } var shelf = new ShelfStatusControl(t.ShelfCode, t.CurentMode, t.OrderNumber); wrapPanel.Children.Add(shelf); }); }); } } catch (Exception ex) { } finally { } } public ICommand SelfCheckCommand { get => new DelegateCommand(SelfCheck); } public void SelfCheck() { #region 调用接口请求后台进行自检 lock (this) { try { var body = new GetShelfStatusRequest() { UserName = LocalStatic.CurrentUser, DeviceType = "WCS前端", GroupNames = LocalFile.Config.GroupName, }; var Result = ApiHelp.GetDataFromHttp(LocalFile.Config.ApiIpHost + "home/shelfCheckAll", body, "POST",true); if (Result != null && Result.Code == 200) { } else { } Thread.Sleep(20); } catch (Exception ex) { } finally { } } #endregion } #endregion #region 页面加载时任务 /// /// 页面第一次加载时执行的任务 /// public void LoadTask() { //注册警告事件 WarnInfo.WarnInfoChanged += (all, add, rem) => { TextErr = string.Join(Environment.NewLine, all.OrderBy(o => (o.WarnType, o.Source, o.Text))); if (add.Any()) Logs.Write(add.Select(o => o.ToString()), LogsType.Warning); if (rem.Any()) Logs.Write(rem.Select(o => o.ToString()), LogsType.Warning); //警告信息保存到数据库 if (WarnInfoDb.IsEnabled) { WarnInfoDb.db.Insertable(WarnInfoItemDb.GetList(add)).ExecuteCommand(); WarnInfoDb.db.Updateable(WarnInfoItemDb.GetList(rem)).ExecuteCommand(); } }; } #endregion } }