using FryPot_DosingSystem.AGV;
using Microsoft.Toolkit.Mvvm.ComponentModel;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
namespace FryPot_DosingSystem.ViewModel
{
///
/// AGV 视图
///
public class AgvViewModel : ObservableObject
{
#region 单例模式
private volatile static AgvViewModel _Instance;
public static AgvViewModel GetInstance() => _Instance ?? (_Instance = new AgvViewModel());
public int RollerNum { get { return _rollerNum; } set { _rollerNum = value;OnPropertyChanged(); } }
private int _rollerNum;
public AgvViewModel()
{
Init();
}
#endregion
#region 私有函数
public void Init()
{
//初始化车辆控制
cartModel_1 = new CartModel();
cartModel_2 = new CartModel();
cartModel_3 = new CartModel();
cartModel_4 = new CartModel();
//初始化滚筒线
RollerLines_1 = new RollerLinesModel();
RollerLines_2 = new RollerLinesModel();
RollerLines_3 = new RollerLinesModel();
RollerLines_4 = new RollerLinesModel();
//初始化停车桩
ParkingPileModel_1 = new ParkingPileModel { isBool = IsBool.Yes };
ParkingPileModel_2 = new ParkingPileModel { isBool = IsBool.Yes };
ParkingPileModel_3 = new ParkingPileModel { isBool = IsBool.Yes };
ParkingPileModel_4 = new ParkingPileModel { isBool = IsBool.Yes };
ParkingPileModel_5 = new ParkingPileModel { isBool = IsBool.No };
ParkingPileModel_6 = new ParkingPileModel { isBool = IsBool.No };
//初始化炒锅
wokModel_1 = new WokModel();
wokModel_2 = new WokModel();
wokModel_3 = new WokModel();
wokModel_4 = new WokModel();
wokModel_5 = new WokModel();
// Test();
}
#endregion
#region 公共调用函数
public void Test()
{
RollerLines_2.DishesNum = "3";
wokModel_1.goodsName = "番茄炒蛋";
wokModel_1.workflows = new ObservableCollection
{
new WorkflowModel {id=1,Name="取番茄",isBool= IsBool.Yes},
new WorkflowModel {id=2,Name="取蛋" } };
}
public void SetCleanRollerNum(int num)
{
RollerNum = num;
}
///
/// 设置停车桩或充电桩
///
/// 设置哪一个停车桩:1 2 3(5 6 为充电桩)
/// 是否有小车
public void Set停车桩(int id, IsBool isBool)
{
try
{
switch (id)
{
case 1:
ParkingPileModel_1.isBool = isBool;
break;
case 2:
ParkingPileModel_2.isBool = isBool;
break;
case 3:
ParkingPileModel_3.isBool = isBool;
break;
case 4:
ParkingPileModel_4.isBool = isBool;
break;
case 5:
ParkingPileModel_5.isBool = isBool;
break;
case 6:
ParkingPileModel_6.isBool = isBool;
break;
}
}
catch (Exception ex)
{
}
}
///
/// 小车停止
///
/// 默认:1 2 3 4,代表四辆车
public void Set小车停止(int id)
{
try
{
switch (id)
{
case 1:
cartModel_1.cartMotionTrajectory = CartMotionTrajectory.Stop;
break;
case 2:
cartModel_2.cartMotionTrajectory = CartMotionTrajectory.Stop;
break;
case 3:
cartModel_3.cartMotionTrajectory = CartMotionTrajectory.Stop;
break;
case 4:
cartModel_4.cartMotionTrajectory = CartMotionTrajectory.Stop;
break;
}
}
catch (Exception ex)
{
}
}
///
/// 控制小车运行
///
/// 默认:1 2 3 4,代表四辆车
///
public void Set小车运动(int id, CartMotionTrajectory cart)
{
try
{
switch (id)
{
case 1:
cartModel_1.cartMotionTrajectory = CartMotionTrajectory.Stop;
Thread.Sleep(10);
cartModel_1.cartMotionTrajectory = cart;
break;
case 2:
cartModel_2.cartMotionTrajectory = CartMotionTrajectory.Stop;
Thread.Sleep(10);
cartModel_2.cartMotionTrajectory = cart;
break;
case 3:
cartModel_3.cartMotionTrajectory = CartMotionTrajectory.Stop;
Thread.Sleep(10);
cartModel_3.cartMotionTrajectory = cart;
break;
case 4:
cartModel_4.cartMotionTrajectory = CartMotionTrajectory.Stop;
Thread.Sleep(10);
cartModel_4.cartMotionTrajectory = cart;
break;
}
}
catch (Exception ex)
{
}
}
///
/// 小车是否承载物品
///
/// 默认:1 2 3 4,代表四辆车
///
public void Set小车是否承载物品(int id, IsBool cart)
{
try
{
switch (id)
{
case 1:
cartModel_1.isBool = cart;
break;
case 2:
cartModel_2.isBool = cart;
break;
case 3:
cartModel_3.isBool = cart;
break;
case 4:
cartModel_4.isBool = cart;
break;
}
}
catch (Exception ex)
{
}
}
///
/// 滚筒线状态
///
/// 默认:1 2 3 4,代表四条滚筒线,(4 代表空桶线)
///
public void Set滚筒线状态(int id, IsRun cart)
{
try
{
switch (id)
{
case 1:
RollerLines_1.isRun = cart;
break;
case 2:
RollerLines_2.isRun = cart;
break;
case 3:
RollerLines_3.isRun = cart;
break;
case 4:
RollerLines_4.isRun = cart;
break;
}
}
catch (Exception ex)
{
}
}
///
/// 滚筒线上数量
///
/// 默认:1 2 3 4,代表四条滚筒线,(4 代表空桶线)
/// 默认: 1 - 8,最多承载 8个菜品或者8个空碗
public void Set滚筒线上数量(int id, string cart)
{
try
{
switch (id)
{
case 1:
RollerLines_1.DishesNum = cart;
break;
case 2:
RollerLines_2.DishesNum = cart;
break;
case 3:
RollerLines_3.DishesNum = cart;
break;
case 4:
RollerLines_4.DishesNum = cart;
break;
}
}
catch (Exception ex)
{
}
}
///
/// 设置炒锅显示流程
///
/// 默认:1 2 3 4 5,代表五个炒锅
///
public void Set炒锅显示流程(int id, WokModel mode)
{
try
{
switch (id)
{
case 1:
wokModel_1=mode;
break;
case 2:
wokModel_2 = mode;
break;
case 3:
wokModel_3 = mode;
break;
case 4:
wokModel_4 = mode;
break;
case 5:
wokModel_5 = mode;
break;
}
}
catch (Exception ex)
{
}
}
///
/// 启动或停止炒锅
///
/// 默认:1 2 3 4 5,代表五个炒锅
///
public void Set启动或停止炒锅(int id, IsRun mode)
{
try
{
switch (id)
{
case 1:
wokModel_1.isRun= mode;
break;
case 2:
wokModel_2.isRun = mode;
break;
case 3:
wokModel_3.isRun = mode;
break;
case 4:
wokModel_4.isRun = mode;
break;
case 5:
wokModel_5.isRun = mode;
break;
}
}
catch (Exception ex)
{
}
}
#endregion
#region 其他函数
///
/// 获取所有命令
///
public List GetCommand()
{
List vs = new List();
try
{
vs = System.Enum.GetNames(typeof(CartMotionTrajectory))?.ToList();
}
catch (Exception ex)
{
return vs;
}
return vs;
}
///
/// 根据命令获取值
///
public CartMotionTrajectory GetCommandValue(string name)
{
return ToEnumValue(name);
}
///
/// 根据枚举名称获取枚举值
///
public T ToEnumValue(string name)
{
return (T)Enum.Parse(typeof(T), name);
}
#endregion
#region 4个滚筒线控制
///
/// 一号滚筒线
///
private RollerLinesModel _RollerLines_1;
public RollerLinesModel RollerLines_1
{
get
{
return _RollerLines_1;
}
set
{
if (_RollerLines_1 == value)
return;
_RollerLines_1 = value;
OnPropertyChanged("RollerLines_1");
}
}
///
/// 二号滚筒线
///
private RollerLinesModel _RollerLines_2;
public RollerLinesModel RollerLines_2
{
get
{
return _RollerLines_2;
}
set
{
if (_RollerLines_2 == value)
return;
_RollerLines_2 = value;
OnPropertyChanged("RollerLines_2");
}
}
///
/// 三号滚筒线
///
private RollerLinesModel _RollerLines_3;
public RollerLinesModel RollerLines_3
{
get
{
return _RollerLines_3;
}
set
{
if (_RollerLines_3 == value)
return;
_RollerLines_3 = value;
OnPropertyChanged("RollerLines_3");
}
}
///
/// 四号滚筒线
///
private RollerLinesModel _RollerLines_4;
public RollerLinesModel RollerLines_4
{
get
{
return _RollerLines_4;
}
set
{
if (_RollerLines_4 == value)
return;
_RollerLines_4 = value;
OnPropertyChanged("RollerLines_4");
}
}
#endregion
#region 4个运动小车控制
///
/// 一号车控制
///
private CartModel _cartModel_1;
public CartModel cartModel_1
{
get
{
return _cartModel_1;
}
set
{
if (_cartModel_1 == value)
return;
_cartModel_1 = value;
OnPropertyChanged("cartModel_1");
}
}
///
/// 二号车控制
///
private CartModel _cartModel_2;
public CartModel cartModel_2
{
get
{
return _cartModel_2;
}
set
{
if (_cartModel_2 == value)
return;
_cartModel_2 = value;
OnPropertyChanged("cartModel_2");
}
}
///
/// 三号车控制
///
private CartModel _cartModel_3;
public CartModel cartModel_3
{
get
{
return _cartModel_3;
}
set
{
if (_cartModel_3 == value)
return;
_cartModel_3 = value;
OnPropertyChanged("cartModel_3");
}
}
///
/// 四号车控制
///
private CartModel _cartModel_4;
public CartModel cartModel_4
{
get
{
return _cartModel_4;
}
set
{
if (_cartModel_4 == value)
return;
_cartModel_4 = value;
OnPropertyChanged("cartModel_4");
}
}
#endregion
#region 6个停车桩控制
///
/// 一号停车装
///
private ParkingPileModel _ParkingPileModel_1;
public ParkingPileModel ParkingPileModel_1
{
get
{
return _ParkingPileModel_1;
}
set
{
if (_ParkingPileModel_1 == value)
return;
_ParkingPileModel_1 = value;
OnPropertyChanged("ParkingPileModel_1");
}
}
///
/// 二号停车装
///
private ParkingPileModel _ParkingPileModel_2;
public ParkingPileModel ParkingPileModel_2
{
get
{
return _ParkingPileModel_2;
}
set
{
if (_ParkingPileModel_2 == value)
return;
_ParkingPileModel_2 = value;
OnPropertyChanged("ParkingPileModel_2");
}
}
///
/// 三号停车装
///
private ParkingPileModel _ParkingPileModel_3;
public ParkingPileModel ParkingPileModel_3
{
get
{
return _ParkingPileModel_3;
}
set
{
if (_ParkingPileModel_3 == value)
return;
_ParkingPileModel_3 = value;
OnPropertyChanged("ParkingPileModel_3");
}
}
///
/// 四号停车装
///
private ParkingPileModel _ParkingPileModel_4;
public ParkingPileModel ParkingPileModel_4
{
get
{
return _ParkingPileModel_4;
}
set
{
if (_ParkingPileModel_4 == value)
return;
_ParkingPileModel_4 = value;
OnPropertyChanged("ParkingPileModel_4");
}
}
///
/// 五号停车装
///
private ParkingPileModel _ParkingPileModel_5;
public ParkingPileModel ParkingPileModel_5
{
get
{
return _ParkingPileModel_5;
}
set
{
if (_ParkingPileModel_5 == value)
return;
_ParkingPileModel_5 = value;
OnPropertyChanged("ParkingPileModel_5");
}
}
///
/// 六号停车装
///
private ParkingPileModel _ParkingPileModel_6;
public ParkingPileModel ParkingPileModel_6
{
get
{
return _ParkingPileModel_6;
}
set
{
if (_ParkingPileModel_6 == value)
return;
_ParkingPileModel_6 = value;
OnPropertyChanged("ParkingPileModel_6");
}
}
#endregion
#region 5个炒锅流程控制
///
/// 一号炒锅工作流程
///
private WokModel _wokModel_1;
public WokModel wokModel_1
{
get
{
if (_wokModel_1 == null)
{
_wokModel_1 = new WokModel();
}
return _wokModel_1;
}
set
{
if (_wokModel_1 == value)
return;
_wokModel_1 = value;
OnPropertyChanged("wokModel_1");
}
}
///
/// 二号炒锅工作流程
///
private WokModel _wokModel_2;
public WokModel wokModel_2
{
get
{
return _wokModel_2;
}
set
{
if (_wokModel_2 == value)
return;
_wokModel_2 = value;
OnPropertyChanged("wokModel_2");
}
}
///
/// 三号炒锅工作流程
///
private WokModel _wokModel_3;
public WokModel wokModel_3
{
get
{
return _wokModel_3;
}
set
{
if (_wokModel_3 == value)
return;
_wokModel_3 = value;
OnPropertyChanged("wokModel_3");
}
}
///
/// 四号炒锅工作流程
///
private WokModel _wokModel_4;
public WokModel wokModel_4
{
get
{
return _wokModel_4;
}
set
{
if (_wokModel_4 == value)
return;
_wokModel_4 = value;
OnPropertyChanged("wokModel_4");
}
}
///
/// 五号炒锅工作流程
///
private WokModel _wokModel_5;
public WokModel wokModel_5
{
get
{
return _wokModel_5;
}
set
{
if (_wokModel_5 == value)
return;
_wokModel_5 = value;
OnPropertyChanged("wokModel_5");
}
}
#endregion
}
///
/// 小车控制Model
///
public class CartModel : ObservableObject
{
///
/// 车上是否有物品
///
private IsBool _isBool = IsBool.No;
public IsBool isBool
{
get
{
return _isBool;
}
set
{
_isBool = value;
Text = _isBool.ToString();
OnPropertyChanged("isBool");
}
}
///
/// 车运动轨迹方式
///
private CartMotionTrajectory _cartMotionTrajectory = CartMotionTrajectory.Stop;
public CartMotionTrajectory cartMotionTrajectory
{
get
{
return _cartMotionTrajectory;
}
set
{
_cartMotionTrajectory = value;
Tag = _cartMotionTrajectory.ToString();
OnPropertyChanged("cartMotionTrajectory");
}
}
private string _Text = IsBool.No.ToString();
public string Text
{
get
{
return _Text;
}
set
{
_Text = value;
OnPropertyChanged("Text");
}
}
private string _Tag = CartMotionTrajectory.Stop.ToString();
public string Tag
{
get
{
return _Tag;
}
set
{
_Tag = value;
OnPropertyChanged("Tag");
}
}
}
///
/// 停车装控制
///
public class ParkingPileModel : ObservableObject
{
///
/// 是否有小车
///
private IsBool _isBool = IsBool.No;
public IsBool isBool
{
get
{
return _isBool;
}
set
{
_isBool = value;
Text = _isBool.ToString();
OnPropertyChanged("isBool");
}
}
private string _Text = IsBool.No.ToString();
public string Text
{
get
{
return _Text;
}
set
{
_Text = value;
OnPropertyChanged("Text");
}
}
}
///
/// 滚筒线控制
///
public class RollerLinesModel : ObservableObject
{
///
/// 是否运行
///
private IsRun _isRun = IsRun.Stop;
public IsRun isRun
{
get
{
return _isRun;
}
set
{
_isRun = value;
Text = _isRun.ToString();
OnPropertyChanged("isBool");
}
}
///
/// 滚筒线上面的数量
///
private string _DishesNum = "8";
public string DishesNum
{
get
{
return _DishesNum;
}
set
{
_DishesNum = value;
if (!string.IsNullOrEmpty(_DishesNum))
{
int count = 1;
try
{
count = int.Parse(_DishesNum);
if (count >= 0 && count <= 8)
{
_DishesNum = count.ToString();
}
else
_DishesNum = 8.ToString();
}
catch (Exception ex)
{
_DishesNum = 8.ToString();
}
}
OnPropertyChanged("DishesNum");
}
}
private string _Text = IsRun.Stop.ToString();
public string Text
{
get
{
return _Text;
}
set
{
_Text = value;
OnPropertyChanged("Text");
}
}
}
///
/// 炒锅 流程控制
///
public class WokModel : ObservableObject
{
///
/// id
///
private string _id;
public string id
{
get
{
return _id;
}
set
{
_id = value;
OnPropertyChanged("id");
}
}
///
/// 订单id
///
private string _orderID;
public string orderID
{
get
{
return _orderID;
}
set
{
_orderID = value;
OnPropertyChanged("orderID");
}
}
///
/// 商品名称
///
private string _goodsName;
public string goodsName
{
get
{
return _goodsName;
}
set
{
_goodsName = value;
OnPropertyChanged("goodsName");
}
}
///
/// 其他信息
///
private string _other;
public string other
{
get
{
return _other;
}
set
{
_other = value;
OnPropertyChanged("other");
}
}
///
/// 是否运行
///
private IsRun _isRun = IsRun.Stop;
public IsRun isRun
{
get
{
return _isRun;
}
set
{
_isRun = value;
Text = _isRun.ToString();
OnPropertyChanged("isBool");
}
}
private string _Text = IsRun.Stop.ToString();
public string Text
{
get
{
return _Text;
}
set
{
_Text = value;
OnPropertyChanged("Text");
}
}
///
/// 工作流程
///
private ObservableCollection _workflows = new ObservableCollection();
public ObservableCollection workflows
{
get
{
return _workflows;
}
set
{
_workflows = value;
OnPropertyChanged("workflows");
}
}
public WokModel()
{
id = Guid.NewGuid().ToString();
workflows = new ObservableCollection();
}
}
///
/// 工作流程
///
public class WorkflowModel : ObservableObject
{
///
/// 序号默认:1-10
///
private int _id=1;
public int id
{
get
{
return _id;
}
set
{
_id = value;
xh = GetXH.ID(_id);
OnPropertyChanged("id");
}
}
///
/// 名称
///
private string _Name;
public string Name
{
get
{
return _Name;
}
set
{
_Name = value;
OnPropertyChanged("Name");
}
}
///
/// 是否已完成当前步骤
///
private IsBool _isBool = IsBool.No;
public IsBool isBool
{
get
{
return _isBool;
}
set
{
_isBool = value;
if (_isBool == IsBool.Yes)
{
visibility = Visibility.Visible;
}
else
{
visibility = Visibility.Collapsed;
}
OnPropertyChanged("isBool");
}
}
private Visibility _visibility = Visibility.Collapsed;
public Visibility visibility
{
get
{
return _visibility;
}
set
{
_visibility = value;
OnPropertyChanged("visibility");
}
}
private string _xh;
public string xh
{
get
{
return _xh;
}
set
{
_xh = value;
OnPropertyChanged("xh");
}
}
}
///
/// 获取序号
///
static class GetXH
{
//①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿
public static string ID(int i)
{
string strbu = "① ";
string str = "①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿";
if (i <= 50)
{
strbu= str.Substring(i-1, 1)+" ";
}
return strbu;
}
}
}