|
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using BPA.Message;
- using BPA.Message.Enum;
- using BPASmartClient.Device;
- using BPASmartClient.EventBus;
- using BPASmartClient.Helper;
- using BPASmartClient.Model;
- using Microsoft.Toolkit.Mvvm.ComponentModel;
-
- namespace BPASmartClient.ViewModel
- {
- public class OrderStatusViewModel : ObservableObject
- {
- public OrderStatusViewModel()
- {
-
- }
-
- /// <summary>
- /// 订单状态列表
- /// </summary>
- public static ObservableCollection<MorkOrder> orderStatusLists { get; set; } = new ObservableCollection<MorkOrder>();
-
- /// <summary>
- /// 等待取餐列表
- /// </summary>
- public static ObservableCollection<MorkOrder> WaitTakeMeal { get; set; } = new ObservableCollection<MorkOrder>();
-
- /// <summary>
- /// MQTT 大屏取餐通知委托
- /// </summary>
- public static void Init()
- {
- //清除订单数据
- ActionManage.GetInstance.Register(new Action(() =>
- {
- Application.Current.Dispatcher.Invoke(() =>
- {
- orderStatusLists.Clear();
- WaitTakeMeal.Clear();
- });
- }), "ClearOrders");
-
- ActionManage.GetInstance.Register(new Action<object[]>((o) =>
- {
- if (o is object[] obj)
- {
- if (o.Length == 2)
- {
- if (o[0] is MorkOrderPush morkOrderpush && o[1] is IDevice device)
- {
- ObservableCollection<MorkOrder> observableCollection = new ObservableCollection<MorkOrder>();
- MorkOrder morkOrder = new MorkOrder()
- {
- OrderPush = morkOrderpush,
- OrderStatus = ORDER_STATUS.WAIT,
- StartDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
- };
- observableCollection.Add(morkOrder);
- Application.Current?.Dispatcher.BeginInvoke((Action)delegate
- {
- int index = Array.FindIndex(Json<KeepDataBase>.Data.orderLists.ToArray(), p => p.DeviceId == device.DeviceId.ToString());
- if (index < 0)
- {
- Json<KeepDataBase>.Data.orderLists.Add(new OrderData()
- {
- DeviceId = device.DeviceId.ToString(),
- IsAllSelect = true,
- morkOrderPushes = observableCollection,
-
- });
- }
- else
- {
- Json<KeepDataBase>.Data.orderLists.ElementAt(index).morkOrderPushes.Add(morkOrder);
- }
-
- orderStatusLists.Add(new MorkOrder()
- {
- OrderPush = morkOrderpush,
- OrderStatus = ORDER_STATUS.WAIT,
- StartDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
- });
- });
-
- }
- }
- }
-
- }), "AddOrder");
-
- EventBus.EventBus.GetInstance().Subscribe<OrderStatusChangedEvent>(0, OrderStatusChangedHandle);
- }
-
- private static void OrderStatusChangedHandle(IEvent @event, EventBus.EventBus.EventCallBackHandle callBack)
- {
- OrderStatusChangedEvent orderStatusChange = @event as OrderStatusChangedEvent;
- int index = Array.FindIndex(orderStatusLists.ToArray(), p => p.OrderPush.SuborderId == orderStatusChange.SubOrderId);
- switch (orderStatusChange.Status)
- {
- case ORDER_STATUS.COOKING:
- if (index >= 0 && index < orderStatusLists.Count)
- orderStatusLists.ElementAt(index).OrderStatus = orderStatusChange.Status;
- break;
- case ORDER_STATUS.COMPLETED_COOK:
- if (index >= 0 && index < orderStatusLists.Count)
- {
- Application.Current.Dispatcher.BeginInvoke((Action)delegate
- {
- orderStatusLists.ElementAt(index).OrderStatus = orderStatusChange.Status;
- 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";
-
- //压力测试时注释,正常使用需要取消注释
- if (!BPASmartClient.Business.InternetInfo.IsEnableTest)
- {
- WaitTakeMeal.Insert(0, orderStatusLists.ElementAt(index));
- orderStatusLists.RemoveAt(index);
- }
-
- });
- }
-
- break;
- case ORDER_STATUS.COMPLETED_TAKE:
- if (BPASmartClient.Business.InternetInfo.IsEnableTest && index >= 0 && index < orderStatusLists.Count)
- orderStatusLists.ElementAt(index).OrderStatus = orderStatusChange.Status;
-
- //压力测试时注释,正常使用需要取消注释
- var re = WaitTakeMeal.FirstOrDefault(p => p.OrderPush.SuborderId == orderStatusChange.SubOrderId);
- if (re != null)
- {
- Application.Current.Dispatcher.BeginInvoke((Action)delegate
- {
- WaitTakeMeal.Remove(re);
- var removeObj = Json<KeepDataBase>.Data.orderLists.FirstOrDefault(p => p.morkOrderPushes.FirstOrDefault(s => s.OrderPush.SuborderId == re.OrderPush.SuborderId) != null);
- if (removeObj != null) Json<KeepDataBase>.Data.orderLists.Remove(removeObj);
- });
- }
- break;
- default:
- break;
-
- }
- }
- }
- }
|