Files
wcs/货架标准上位机/ViewModels/HomeViewModel.cs
2024-10-31 13:57:24 +08:00

177 lines
5.4 KiB
C#

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;
/// <summary>
/// 错误文本
/// </summary>
public string TextErr { get => textErr; set { SetProperty(ref textErr, value); } }
public ICommand ClearTextInfoCommand { get => new DelegateCommand(ClearTextInfo); }
/// <summary>
/// 清除信息文本
/// </summary>
public void ClearTextInfo()
{
TextBoxLog.ClearLog("selfCheck");
}
public ICommand ClearTextErrCommand { get => new DelegateCommand(ClearTextErr); }
/// <summary>
/// 清除全部错误文本
/// </summary>
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<GetShelfStatusResponse>([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<ResponseBase>(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
/// <summary>
/// 页面第一次加载时执行的任务
/// </summary>
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
}
}