|
- using BPA.Message;
- using BPA.Message.Enum;
- using BPASmartClient.Device;
- using BPASmartClient.EventBus;
- using BPASmartClient.Helper;
- using BPASmartClient.Model;
- using Microsoft.Toolkit.Mvvm.ComponentModel;
- using Microsoft.Toolkit.Mvvm.Input;
- using Model;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
-
- namespace BPASmartClient.MilkWithTea.ViewModel
- {
- public class MainControlViewModel: ObservableObject
- {
-
-
- public ObservableCollection<LocalTeaWithMilkConfig> localTeaWithMilks { get; set; } = GLobal.MaterialRecipes;
-
- public ObservableCollection<MaterialRecipe> materialRecipes { get; set; } = new ObservableCollection<MaterialRecipe>();
-
- /// <summary>
- /// 订单状态列表
- /// </summary>
- public ObservableCollection<MorkOrder> orderStatusLists { get; set; } = new ObservableCollection<MorkOrder>();
-
- /// <summary>
- /// 等待取餐列表
- /// </summary>
- public ObservableCollection<MorkOrder> WaitTakeMeal { get; set; } = new ObservableCollection<MorkOrder>();
-
- /// <summary>
- /// 当前正在制作的奶茶
- /// </summary>
- public string CurrentGood { get { return _currentGood; } set { _currentGood = value; OnPropertyChanged(); } }
- private string _currentGood = "无";
- /// <summary>
- /// 奶茶制作百分比
- /// </summary>
- public string MakePercent { get { return _makePercent; } set { _makePercent = value; OnPropertyChanged(); } }
- private string _makePercent = "100";
-
- /// <summary>
- /// 当前正在制作的奶茶
- /// </summary>
- public bool MakeEnable { get { return GLobal.makeEnable; } set { GLobal.makeEnable = value; OnPropertyChanged(); } }
-
- /// <summary>
- /// 本地奶茶制作
- /// </summary>
- public RelayCommand MakeGoodCommand { get; set; }
-
- public MainControlViewModel()
- {
- MakeGoodCommand = new RelayCommand(new Action(() =>
- {
-
- }));
- Init();
- MorkOrderPush morkOrderPush = new MorkOrderPush() { GoodsName = "水果奶茶", SortNum = 1 };
-
- orderStatusLists.Add(new MorkOrder()
- {
- StartDate = "11",EndDate ="15",CompleteDate ="4",OrderStatus = ORDER_STATUS.COOKING,
- OrderPush = morkOrderPush
-
- });
- orderStatusLists.Add(new MorkOrder()
- {
-
- StartDate = "11",
- EndDate = "15",
- CompleteDate = "4",
- OrderStatus = ORDER_STATUS.COOKING,
- OrderPush = morkOrderPush
-
- });
- orderStatusLists.Add(new MorkOrder()
- {
-
- StartDate = "11",
- EndDate = "15",
- CompleteDate = "4",
- OrderStatus = ORDER_STATUS.COOKING,
- OrderPush = morkOrderPush
-
- });
-
-
-
- }
-
-
-
- /// <summary>
- /// MQTT 大屏取餐通知委托
- /// </summary>
- public 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);
-
- ActionManage.GetInstance.Register(new Action<object[]>((o)=>
- {
- if (o is object[] obj)
- {
- if (o.Length == 2)
- {
- CurrentGood = o[0].ToString();
- MakePercent = o[1].ToString();
- }
- }
- }), "奶茶制作进度");
-
-
-
- }
-
- private 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;
-
- }
- }
- }
- }
|