From c533c2db7fe90a5916987421f7a8090982e6ff7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A6=82=E6=84=8F=20=E5=BD=AD?= <2417589739@qq.com> Date: Mon, 25 Apr 2022 18:55:15 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=9C=AC=E5=9C=B0=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=EF=BC=8C=E8=AE=A2=E5=8D=95=E7=8A=B6=E6=80=81=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BPASmartClient.Business/Plugin/OrderProxy.cs | 63 +++++++- .../BPASmartClient.Model.csproj | 1 + BPASmartClient.Model/KeepDataBase.cs | 2 + BPASmartClient.Model/OrderData.cs | 45 ++++-- .../OrderListDialogViewModel.cs | 40 ++--- .../OrderStatusViewModel.cs | 42 ++--- BPASmartClient/App.config | 40 ++--- BPASmartClient/App.xaml.cs | 43 ++++- BPASmartClient/OrderListDialogView.xaml | 148 +++++++++++++++++- 9 files changed, 336 insertions(+), 88 deletions(-) diff --git a/BPASmartClient.Business/Plugin/OrderProxy.cs b/BPASmartClient.Business/Plugin/OrderProxy.cs index 215b8c55..e9ab4e49 100644 --- a/BPASmartClient.Business/Plugin/OrderProxy.cs +++ b/BPASmartClient.Business/Plugin/OrderProxy.cs @@ -1,4 +1,5 @@ using BPA.Message; +using BPA.Message.Enum; using BPASmartClient.EventBus; using BPASmartClient.Helper; using BPASmartClient.Http; @@ -8,6 +9,7 @@ using Newtonsoft.Json; using System; using System.Collections.Concurrent; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -37,10 +39,12 @@ namespace BPASmartClient.Business public void Start() { running = true; - Plugin.GetInstance().GetPlugin().SetMessageReciveHandler(delegate (IMessage orderInfo) + Plugin.GetInstance().GetPlugin().SetMessageReciveHandler(delegate (IMessage message) { - if (orderInfo == null) return; - if (orderInfo is MorkOrderPush morkOrderpush) + if (message == null) return; + + //订单消息 + if (message is MorkOrderPush morkOrderpush) { if (!orders.ContainsKey(morkOrderpush.DeviceId)) { @@ -49,6 +53,16 @@ namespace BPASmartClient.Business } orders[morkOrderpush.DeviceId].Enqueue(morkOrderpush); } + //辅料信息 + else if (message is RecipeBoms recipe) + { + + } + //物料消息 + else if (message is OrderMaterialDelivery delivery) + { + + } }); EventBus.EventBus.GetInstance().Subscribe(0, OrderStatusChangedHandle); @@ -73,12 +87,45 @@ namespace BPASmartClient.Business var orderEvent = DoOrderEvent.Make(temp); orderEvent.Id = device.DeviceId; orderEvent.Publish(); - Json.Data.orderLists.Add(new OrderData() + + #region 添加订单 + ObservableCollection observableCollection = new ObservableCollection(); + observableCollection.Add(new MorkOrder() { - IsSelected = true, - OrderPush = temp, - OrderStatus = BPA.Message.Enum.ORDER_STATUS.WAIT + OrderStatus = ORDER_STATUS.WAIT }); + var res = Json.Data.orderLists.FirstOrDefault(p => p.DeviceId == deviceId.ToString()); + if (res == null) + { + Json.Data.orderLists.Add(new OrderData() + { + DeviceId = device.ToString(), + IsAllSelect = true, + morkOrderPushes = observableCollection + }); + } + else + { + res.morkOrderPushes.Add(new MorkOrder() { OrderPush = temp }); + } + + #endregion + + + + + //Json.Data.orderLists.Add(new OrderData() + //{ + // DeviceId = device.ToString(), + // IsAllSelect = true, + // morkOrderPushes = observableCollection + //}); + //Json.Data.orderLists.Add(new OrderData() + //{ + // IsSelected = true, + // OrderPush = temp, + // OrderStatus = BPA.Message.Enum.ORDER_STATUS.WAIT + //}); } } Thread.Sleep(50); @@ -113,6 +160,6 @@ namespace BPASmartClient.Business running = false; } - + } } diff --git a/BPASmartClient.Model/BPASmartClient.Model.csproj b/BPASmartClient.Model/BPASmartClient.Model.csproj index 9d0db830..7278b59f 100644 --- a/BPASmartClient.Model/BPASmartClient.Model.csproj +++ b/BPASmartClient.Model/BPASmartClient.Model.csproj @@ -16,6 +16,7 @@ + diff --git a/BPASmartClient.Model/KeepDataBase.cs b/BPASmartClient.Model/KeepDataBase.cs index bcd37792..5cf7ef9c 100644 --- a/BPASmartClient.Model/KeepDataBase.cs +++ b/BPASmartClient.Model/KeepDataBase.cs @@ -22,6 +22,8 @@ namespace BPASmartClient.Model /// public ObservableCollection orderLists { get; set; } = new ObservableCollection(); + + /// /// 参数设置 /// diff --git a/BPASmartClient.Model/OrderData.cs b/BPASmartClient.Model/OrderData.cs index d0d004f3..76102096 100644 --- a/BPASmartClient.Model/OrderData.cs +++ b/BPASmartClient.Model/OrderData.cs @@ -5,30 +5,57 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Collections.ObjectModel; +using Microsoft.Toolkit.Mvvm.ComponentModel; namespace BPASmartClient.Model { - public class OrderData + public class OrderData : ObservableObject { - public bool IsSelected { get { return _mIsSelected; } set { _mIsSelected = value; } } - private bool _mIsSelected; + public bool IsAllSelect + { + get { return _mIsAllSelect; } + set + { + _mIsAllSelect = value; + OnPropertyChanged(); + for (int i = 0; i < morkOrderPushes.Count; i++) + { + morkOrderPushes.ElementAt(i).IsSelected = value; + } + } + } + private bool _mIsAllSelect; + + + public string DeviceId { get { return _mDeviceId; } set { _mDeviceId = value; OnPropertyChanged(); } } + private string _mDeviceId; + + public ObservableCollection morkOrderPushes { get; set; } = new ObservableCollection(); - public MorkOrderPush OrderPush { get { return _mOrderPush; } set { _mOrderPush = value; } } + } + + public class MorkOrder : ObservableObject + { + public bool IsSelected { get { return _mIsSelected; } set { _mIsSelected = value; OnPropertyChanged(); } } + private bool _mIsSelected = true; + + public MorkOrderPush OrderPush { get { return _mOrderPush; } set { _mOrderPush = value; OnPropertyChanged(); } } private MorkOrderPush _mOrderPush = new MorkOrderPush(); - public ORDER_STATUS OrderStatus { get { return _mOrderStatus; } set { _mOrderStatus = value; } } + public ORDER_STATUS OrderStatus { get { return _mOrderStatus; } set { _mOrderStatus = value; OnPropertyChanged(); } } private ORDER_STATUS _mOrderStatus; - public string StartDate { get { return _mStartDate; } set { _mStartDate = value; } } + public string StartDate { get { return _mStartDate; } set { _mStartDate = value; OnPropertyChanged(); } } private string _mStartDate = string.Empty; - public string EndDate { get { return _mEndDate; } set { _mEndDate = value; } } + public string EndDate { get { return _mEndDate; } set { _mEndDate = value; OnPropertyChanged(); } } private string _mEndDate = string.Empty; - public string CompleteDate { get { return _mCompleteDate; } set { _mCompleteDate = value; } } + public string CompleteDate { get { return _mCompleteDate; } set { _mCompleteDate = value; OnPropertyChanged(); } } private string _mCompleteDate = string.Empty; + } - } } diff --git a/BPASmartClient.ViewModel/OrderListDialogViewModel.cs b/BPASmartClient.ViewModel/OrderListDialogViewModel.cs index 5634cd73..470df5d3 100644 --- a/BPASmartClient.ViewModel/OrderListDialogViewModel.cs +++ b/BPASmartClient.ViewModel/OrderListDialogViewModel.cs @@ -2,6 +2,7 @@ using System; using System.Collections.ObjectModel; using System.Linq; using System.Threading; +using BPA.Message; using BPA.Message.Enum; using BPASmartClient.Helper; using BPASmartClient.Model; @@ -32,7 +33,6 @@ namespace BPASmartClient.ViewModel if (!IsAutoClose) WeakReferenceMessenger.Default.Send("false", "Close"); }), "ʱ˳"); } - AllSelected = true; } /// @@ -68,38 +68,32 @@ namespace BPASmartClient.ViewModel { ConfirmCommand = new RelayCommand(() => { - var res = orderStatusLists.Where(p => p.IsSelected == true).ToList(); + Json.Data.orderLists.Clear(); + //var res = orderStatusLists.Where(p => p.IsSelected == true).ToList(); + var res = orderStatusLists.Where(p => p.morkOrderPushes.Where(s => s.IsSelected == true).ToList().Count > 0).ToList(); + if (res != null) { Json.Data.orderLists.Clear(); - foreach (var item in res) + foreach (var item in orderStatusLists) { - item.OrderStatus = ORDER_STATUS.WAIT; - Json.Data.orderLists.Add(item); + ObservableCollection morkOrders = new ObservableCollection(); + foreach (var mork in item.morkOrderPushes) + { + if (mork.IsSelected) morkOrders.Add(mork); + } + Json.Data.orderLists.Add(new OrderData() + { + DeviceId = item.DeviceId, + IsAllSelect = item.IsAllSelect, + morkOrderPushes = morkOrders, + }); } } WeakReferenceMessenger.Default.Send("true", "Close"); }); } - /// - /// ȫѡ־ - /// - public bool AllSelected - { - get { return _mAllSelected; } - set - { - _mAllSelected = value; - OnPropertyChanged(); - for (int i = 0; i < orderStatusLists.Count; i++) - { - orderStatusLists.ElementAt(i).IsSelected = value; - } - } - } - private bool _mAllSelected = true; - public RelayCommand CloseCommand { get; set; } public RelayCommand CancelCommand { get; set; } diff --git a/BPASmartClient.ViewModel/OrderStatusViewModel.cs b/BPASmartClient.ViewModel/OrderStatusViewModel.cs index 3c8328cd..d28e7473 100644 --- a/BPASmartClient.ViewModel/OrderStatusViewModel.cs +++ b/BPASmartClient.ViewModel/OrderStatusViewModel.cs @@ -55,17 +55,17 @@ namespace BPASmartClient.ViewModel { System.Windows.Application.Current?.Dispatcher.BeginInvoke((Action)delegate { - var result = orderStatusLists.FirstOrDefault(p => p.OrderPush.SuborderId == morkOrderpush.SuborderId); - if (result == null) - { - orderStatusLists.Add(new OrderData() - { - OrderPush = morkOrderpush, - OrderStatus = ORDER_STATUS.WAIT, - IsSelected = true, - StartDate = DateTime.Now.ToString("HH:mm:ss") - }); - } + //var result = orderStatusLists.FirstOrDefault(p => p.OrderPush.SuborderId == morkOrderpush.SuborderId); + //if (result == null) + //{ + // orderStatusLists.Add(new OrderData() + // { + // OrderPush = morkOrderpush, + // OrderStatus = ORDER_STATUS.WAIT, + // IsSelected = true, + // StartDate = DateTime.Now.ToString("HH:mm:ss") + // }); + //} }); } }), "AddOrder"); @@ -76,23 +76,29 @@ namespace BPASmartClient.ViewModel { Application.Current?.Dispatcher.BeginInvoke((Action)delegate { - int index = Array.FindIndex(orderStatusLists.ToArray(), p => p.OrderPush.SuborderId == orderStatusChange.SuborderId); + int index = Array.FindIndex(orderStatusLists.ToArray(), p => p.morkOrderPushes.FirstOrDefault(s => s.OrderPush.SuborderId == orderStatusChange.SuborderId) != null); + int index2 = -1; + if (index >= 0 && index < orderStatusLists.Count) + { + index2 = Array.FindIndex(orderStatusLists.ElementAt(index).morkOrderPushes.ToArray(), p => p.OrderPush.SuborderId == orderStatusChange.SuborderId); + } + if (index2 < 0) return; switch (orderStatusChange.CookingStatus) { case ORDER_STATUS.COOKING: if (index >= 0 && index < orderStatusLists.Count) - orderStatusLists.ElementAt(index).OrderStatus = orderStatusChange.CookingStatus; + orderStatusLists.ElementAt(index).morkOrderPushes.ElementAt(index2).OrderStatus = orderStatusChange.CookingStatus; break; case ORDER_STATUS.COMPLETED_COOK: if (index >= 0 && index < orderStatusLists.Count) { Application.Current.Dispatcher.BeginInvoke((Action)delegate { - orderStatusLists.ElementAt(index).OrderStatus = orderStatusChange.CookingStatus; - orderStatusLists.ElementAt(index).EndDate = DateTime.Now.ToString("HH:mm:ss"); - TimeSpan timeSpan = DateTime.Now.Subtract(Convert.ToDateTime(orderStatusLists.ElementAt(index).StartDate)); - orderStatusLists.ElementAt(index).CompleteDate = $"{timeSpan.TotalSeconds.ToString("0.00")} S"; + orderStatusLists.ElementAt(index).morkOrderPushes.ElementAt(index2).OrderStatus = orderStatusChange.CookingStatus; + orderStatusLists.ElementAt(index).morkOrderPushes.ElementAt(index2).EndDate = DateTime.Now.ToString("HH:mm:ss"); + TimeSpan timeSpan = DateTime.Now.Subtract(Convert.ToDateTime(orderStatusLists.ElementAt(index).morkOrderPushes.ElementAt(index2).StartDate)); + orderStatusLists.ElementAt(index).morkOrderPushes.ElementAt(index2).CompleteDate = $"{timeSpan.TotalSeconds.ToString("0.00")} S"; WaitTakeMeal.Insert(0, orderStatusLists.ElementAt(index)); orderStatusLists.RemoveAt(index); }); @@ -100,7 +106,7 @@ namespace BPASmartClient.ViewModel break; case ORDER_STATUS.COMPLETED_TAKE: - var re = WaitTakeMeal.FirstOrDefault(p => p.OrderPush.SuborderId == orderStatusChange.SuborderId); + var re = WaitTakeMeal.FirstOrDefault(p => p.morkOrderPushes.FirstOrDefault(s => s.OrderPush.SuborderId == orderStatusChange.SuborderId) != null); if (re != null) { Application.Current.Dispatcher.BeginInvoke((Action)delegate diff --git a/BPASmartClient/App.config b/BPASmartClient/App.config index 1dfe5ec5..6f8c7af3 100644 --- a/BPASmartClient/App.config +++ b/BPASmartClient/App.config @@ -1,29 +1,29 @@  - - + + - - + + - - + + - - - - - - + + + + + + - - - - - - - + + + + + + + - + \ No newline at end of file diff --git a/BPASmartClient/App.xaml.cs b/BPASmartClient/App.xaml.cs index d22d4e2c..082e9e45 100644 --- a/BPASmartClient/App.xaml.cs +++ b/BPASmartClient/App.xaml.cs @@ -1,8 +1,11 @@ -using BPASmartClient.Helper; +using BPA.Message; +using BPA.Message.Enum; +using BPASmartClient.Helper; using BPASmartClient.Message; using BPASmartClient.Model; using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Configuration; using System.Data; using System.Drawing; @@ -67,11 +70,43 @@ namespace BPASmartClient /// private void NoCompleteOrderInit() { - if (Json.Data.orderLists.Count > 0) + + + #region 模拟数据 + for (int i = 0; i < 5; i++) { - OrderListDialogView listDialogView = new OrderListDialogView(); - listDialogView.ShowDialog(); + + ObservableCollection morkOrders = new ObservableCollection(); + for (int m = 0; m < 10; m++) + { + morkOrders.Add(new MorkOrder() + { + OrderPush = new MorkOrderPush(), + OrderStatus = ORDER_STATUS.WAIT + }); + } + + + + Json.Data.orderLists.Add(new OrderData() + { + DeviceId = Convert.ToString((i % 2) == 0 ? 1 : 2), + IsAllSelect = true, + morkOrderPushes = morkOrders + }); + + } + + OrderListDialogView listDialogView = new OrderListDialogView(); + listDialogView.ShowDialog(); + #endregion + + //if (Json.Data.orderLists.Count > 0) + //{ + // OrderListDialogView listDialogView = new OrderListDialogView(); + // listDialogView.ShowDialog(); + //} } private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) diff --git a/BPASmartClient/OrderListDialogView.xaml b/BPASmartClient/OrderListDialogView.xaml index 0623e0a9..1db71460 100644 --- a/BPASmartClient/OrderListDialogView.xaml +++ b/BPASmartClient/OrderListDialogView.xaml @@ -97,7 +97,7 @@ BorderBrush="#55ffffff" BorderThickness="0,0,0,1"> - + - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +