using Admin.Core.Model; using Aucma.Scada.UI.Common; using Aucma.Scada.UI; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using log4net; using System; using System.Collections; using System.Collections.ObjectModel; using System.Linq; using System.Windows; namespace Aucma.Scada.UI.ViewModel.OutStoreInfo { public partial class OutStoreInfoViewModel : ObservableObject { private static readonly log4net.ILog logHelper = LogManager.GetLogger(typeof(OutStoreInfoViewModel)); private ObservableCollection listItems = new ObservableCollection(); private ObservableCollection taskItems = new ObservableCollection(); private OutStoreBusiness outStoreBusiness = new OutStoreBusiness();// OutStoreBusiness.Instance; private AppConfig appConfig = new AppConfig();//AppConfig.Instance; public OutStoreInfoViewModel() { outStoreBusiness.RefreshOutStoreTaskEvent += RefreshOutStoreTask; outStoreBusiness.RefreshScanMateriaCodeEvent += RefreshScanInfo; outStoreBusiness.RefreshLogMessageEvent += PrintMessageToListBox; this.Query(); } #region 参数定义 /// /// 箱壳物料条码 /// private string shellMaterialCode = string.Empty; public string ShellMaterialCode { get => shellMaterialCode; set => SetProperty(ref shellMaterialCode, value); } /// /// 箱壳物料名称 /// private string shellMaterialName = string.Empty; public string ShellMaterialName { get => shellMaterialName; set => SetProperty(ref shellMaterialName, value); } /// /// 箱壳入库货道 /// private string shellSpaceName = string.Empty; public string ShellSpaceName { get => shellSpaceName; set => SetProperty(ref shellSpaceName, value); } /// /// 内胆物料条码 /// private string linerMaterialCode = string.Empty; public string LinerMaterialCode { get => linerMaterialCode; set => SetProperty(ref linerMaterialCode, value); } /// /// 内胆物料名称 /// private string linerMaterialName = string.Empty; public string LinerMaterialName { get => linerMaterialCode; set => SetProperty(ref linerMaterialCode, value); } /// /// 内胆入库货道 /// private string linerSpaceName = string.Empty; public string LinerSpaceName { get => linerMaterialCode; set => SetProperty(ref linerMaterialCode, value); } /// /// LisBox数据模板 /// private IEnumerable logInfoListBox; public IEnumerable LogInfoListBox { get => logInfoListBox; set => SetProperty(ref logInfoListBox, value); } /// /// 出库任务DataGrid /// private IEnumerable outstoreTask; public IEnumerable OutstoreTask { get => outstoreTask; set => SetProperty(ref outstoreTask, value); } /// /// 查询条件-任务编号 /// private string taskCodeSearch = string.Empty; public string TaskCodeSearch { get => taskCodeSearch; set => SetProperty(ref taskCodeSearch, value); } private string materialCodeSearch = string.Empty; /// /// 查询条件-物料编号 /// public string MaterialCodeSearch { get => materialCodeSearch; set => SetProperty(ref materialCodeSearch, value); } /// /// 查询条件-计划编号 /// private string planCodeSearch = string.Empty; public string PlanCodeSearch { get => planCodeSearch; set => SetProperty(ref planCodeSearch, value); } #endregion /// /// listBox绑定日志 /// /// private void PrintMessageToListBox(string message) { try { listItems.Add($"{DateTime.Now.ToString("HH:mm:ss.ss")}==>{message}"); LogInfoListBox = listItems.OrderByDescending(x => x); } catch (Exception ex) { logHelper.Error("日志数据绑定异常", ex); } } /// /// 刷新出库任务列表 /// /// private void RefreshOutStoreTask(RealTaskInfo taskInfo) { try { App.Current.Dispatcher.Invoke((Action)(async () => { taskInfo.MaterialType =await outStoreBusiness.GetMaterialName(taskInfo.MaterialType); taskItems.Add(taskInfo); OutstoreTask = taskItems; })); } catch (Exception ex) { logHelper.Error("入库任务列表刷新异常", ex); } } /// /// 刷新扫码信息 /// /// /// /// /// private void RefreshScanInfo(string materialCode, string materialName, string spaceName, string storeCode) { if (storeCode == appConfig.shellStoreCode) { ShellMaterialCode = materialCode; ShellMaterialName = materialName; ShellSpaceName = spaceName; } else if (storeCode == appConfig.linerStoreCode) { LinerMaterialCode = materialCode; LinerMaterialName = materialName; LinerSpaceName = spaceName; } Query(); } /// /// 初始化 /// [RelayCommand] private async void Query() { try { var info =await outStoreBusiness.GetOutStoreTask(); if (info != null) { if (!string.IsNullOrEmpty(taskCodeSearch)) { info = info.Where(x => x.TaskCode.Contains(taskCodeSearch)).ToList(); } else if (!string.IsNullOrEmpty(materialCodeSearch)) { info = info.Where(x => x.MaterialCode.Contains(materialCodeSearch)).ToList(); } else if (!string.IsNullOrEmpty(planCodeSearch)) { info = info.Where(x => x.PlanCode.Contains(planCodeSearch)).ToList(); } App.Current.Dispatcher.Invoke((Action)(async () => { taskItems = new ObservableCollection(); foreach (var item in info) { item.MaterialType =await outStoreBusiness.GetMaterialName(item.MaterialType); taskItems.Add(item); } OutstoreTask = taskItems.OrderBy(x => x.CreateTime); })); } } catch (Exception ex) { logHelper.Error("OutStoreViewModel初始化异常", ex); } } /// /// 重置 /// [RelayCommand] private void Reset() { this.TaskCodeSearch = string.Empty; this.MaterialCodeSearch = string.Empty; this.PlanCodeSearch = string.Empty; this.Query(); } /// /// 删除任务 /// /// [RelayCommand] private async void DeleteTaskInfo(object obj) { string taskCode = obj as string; var r = await outStoreBusiness.DeleteTaskInfoByTaskCode(taskCode); if (r) { MessageBox.Show("任务删除成功", "提示", MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK, MessageBoxOptions.DefaultDesktopOnly); Query(); } else { MessageBox.Show("任务删除失败", "提示", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK, MessageBoxOptions.DefaultDesktopOnly); } } } }