@@ -10,6 +10,7 @@ using BPA.Models; | |||||
using static BPASmartClient.EventBus.EventBus; | using static BPASmartClient.EventBus.EventBus; | ||||
using BPASmartClient.Model.小炒机; | using BPASmartClient.Model.小炒机; | ||||
using BPASmartClient.MorkF.Model; | using BPASmartClient.MorkF.Model; | ||||
using System.Text; | |||||
namespace BPASmartClient.MorkF | namespace BPASmartClient.MorkF | ||||
{ | { | ||||
@@ -37,7 +38,8 @@ namespace BPASmartClient.MorkF | |||||
ActionManage.GetInstance.Register(PLCInite, "InitCommand"); | ActionManage.GetInstance.Register(PLCInite, "InitCommand"); | ||||
ActionManage.GetInstance.Register(FoodPlcInite, "FoodPlcInite"); | ActionManage.GetInstance.Register(FoodPlcInite, "FoodPlcInite"); | ||||
ActionManage.GetInstance.Register(InitialData, "SimultaorOrder"); | ActionManage.GetInstance.Register(InitialData, "SimultaorOrder"); | ||||
ActionManage.GetInstance.Register(StartOrder, "StartOrder"); | |||||
ActionManage.GetInstance.Register(StartLocalOrder, "StartLocalOrder"); | |||||
#endregion | #endregion | ||||
#region 菜品库 | #region 菜品库 | ||||
@@ -72,14 +74,14 @@ namespace BPASmartClient.MorkF | |||||
ActionManage.GetInstance.Register(SetStir, "SetStir"); | ActionManage.GetInstance.Register(SetStir, "SetStir"); | ||||
#endregion | #endregion | ||||
} | } | ||||
#region 菜品库 | #region 菜品库 | ||||
public void FoodLibInit() | public void FoodLibInit() | ||||
{ | { | ||||
WriteControl("",true); | |||||
WriteControl("", true); | |||||
} | } | ||||
public void Electromagnetism(object o) | public void Electromagnetism(object o) | ||||
{ | { | ||||
@@ -108,7 +110,7 @@ namespace BPASmartClient.MorkF | |||||
public void PawTurnBack() | public void PawTurnBack() | ||||
{ | { | ||||
WriteControl("", true); | WriteControl("", true); | ||||
} | |||||
} | |||||
/// <summary> | /// <summary> | ||||
/// 设定机械臂的位置 | /// 设定机械臂的位置 | ||||
/// </summary> | /// </summary> | ||||
@@ -140,7 +142,7 @@ namespace BPASmartClient.MorkF | |||||
/// </summary> | /// </summary> | ||||
public void OutSeasonings(List<SeasoningList> seasoningLists) | public void OutSeasonings(List<SeasoningList> seasoningLists) | ||||
{ | { | ||||
foreach(SeasoningList seasoning in seasoningLists) | |||||
foreach (SeasoningList seasoning in seasoningLists) | |||||
{ | { | ||||
WriteControl(morkF.PassWayValue[seasoning.Loc], (ushort)seasoning.Qty); | WriteControl(morkF.PassWayValue[seasoning.Loc], (ushort)seasoning.Qty); | ||||
Thread.Sleep(300); | Thread.Sleep(300); | ||||
@@ -150,7 +152,7 @@ namespace BPASmartClient.MorkF | |||||
WriteControl(morkF.StartPassWay[seasoning.Loc], true); | WriteControl(morkF.StartPassWay[seasoning.Loc], true); | ||||
Thread.Sleep(300); | Thread.Sleep(300); | ||||
} | } | ||||
} | } | ||||
#region 炒锅1 | #region 炒锅1 | ||||
@@ -174,7 +176,7 @@ namespace BPASmartClient.MorkF | |||||
WriteControl("LB4", false); | WriteControl("LB4", false); | ||||
Thread.Sleep(200); | Thread.Sleep(200); | ||||
WriteControl("LB53", false); | WriteControl("LB53", false); | ||||
foreach(var item in morkF.StartPassWay.Values) | |||||
foreach (var item in morkF.StartPassWay.Values) | |||||
{ | { | ||||
Thread.Sleep(200); | Thread.Sleep(200); | ||||
WriteControl(item, false); | WriteControl(item, false); | ||||
@@ -240,16 +242,20 @@ namespace BPASmartClient.MorkF | |||||
//搅拌臂去炒制位 | //搅拌臂去炒制位 | ||||
public void StirArmGoWork() | public void StirArmGoWork() | ||||
{ | { | ||||
WriteControl("LB6", true); | |||||
MessageLog.GetInstance.Show("搅拌臂去工作位"); | |||||
while (!morkF.ArmOnWorking) | |||||
if (!morkF.ArmOnWorking) | |||||
{ | { | ||||
WriteControl("LB6", true); | |||||
MessageLog.GetInstance.Show("搅拌臂去工作位"); | |||||
while (!morkF.ArmOnWorking) | |||||
{ | |||||
Thread.Sleep(200); | |||||
} | |||||
WriteControl("LB6", false); | |||||
Thread.Sleep(200); | Thread.Sleep(200); | ||||
MessageLog.GetInstance.Show("搅拌臂到达工作位"); | |||||
} | } | ||||
WriteControl("LB6", false); | |||||
Thread.Sleep(200); | |||||
MessageLog.GetInstance.Show("搅拌臂到达工作位"); | |||||
} | } | ||||
//HBOT放盒子到位 | //HBOT放盒子到位 | ||||
public void HBOTGoWork() | public void HBOTGoWork() | ||||
@@ -268,16 +274,16 @@ namespace BPASmartClient.MorkF | |||||
//加热挡位设定 | //加热挡位设定 | ||||
public void SetFire(object o) | public void SetFire(object o) | ||||
{ | { | ||||
if(o == null) return; | |||||
if(o is List<int> ints&&ints.Count == 1) | |||||
if (o == null) return; | |||||
if (o is List<int> ints && ints.Count == 1) | |||||
{ | { | ||||
WriteControl("LW14", (ushort)ints[0]); | WriteControl("LW14", (ushort)ints[0]); | ||||
Thread.Sleep(200); | Thread.Sleep(200); | ||||
} | } | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 搅拌挡位设定 | /// 搅拌挡位设定 | ||||
/// </summary> | /// </summary> | ||||
@@ -319,8 +325,47 @@ namespace BPASmartClient.MorkF | |||||
// //resultorder.AddRange(new int[] { 1, 2, 3 }); | // //resultorder.AddRange(new int[] { 1, 2, 3 }); | ||||
//} | //} | ||||
} | |||||
/// <summary> | |||||
/// 本地菜单下单 | |||||
/// </summary> | |||||
private void StartOrder(object o) | |||||
{ | |||||
if(o==null) return; | |||||
if(o is int goodId) | |||||
{ | |||||
var res = morkF.LocalstirFryGoods?.FirstOrDefault(p => p.GoodsKey == goodId);//匹配订单对应制作流程 | |||||
if (res != null) | |||||
{ | |||||
/* morkF.listStirBom.Add(res.StirFryBomInfo);*///添加订单制作流程 | |||||
if (morkF.StirFryGoodsQuenes.Count > 0) return; | |||||
morkF.StirFryGoodsQuenes.Enqueue(new OrderLocInfo() | |||||
{ | |||||
SuborderId = Guid.NewGuid().ToString(), | |||||
StirPotActions = res.StirPotActions, | |||||
GoodName = "本地菜品" | |||||
}); | |||||
MessageLog.GetInstance.Show($"添加本地订单{res.GoodsKey}"); | |||||
} | |||||
} | |||||
} | |||||
private void StartLocalOrder() | |||||
{ | |||||
if (morkF.StirFryGoodsQuenes.Count > 0) return;//只能一个一个做 | |||||
if (Json<LocalPotStep>.Data.LocalstirFryGoods.StirPotActions.Count>0) | |||||
{ | |||||
morkF.StirFryGoodsQuenes.Enqueue(new OrderLocInfo() | |||||
{ | |||||
SuborderId = Guid.NewGuid().ToString(), | |||||
StirPotActions = Json<LocalPotStep>.Data.LocalstirFryGoods.StirPotActions, | |||||
GoodName = "本地菜品" | |||||
}); | |||||
MessageLog.GetInstance.Show($"添加本地模拟的订单{Json<LocalPotStep>.Data.LocalstirFryGoods.GoodsKey}"); | |||||
} | |||||
} | } | ||||
#endregion | #endregion | ||||
@@ -397,88 +442,103 @@ namespace BPASmartClient.MorkF | |||||
if (@event == null) return; | if (@event == null) return; | ||||
if (@event is StirFryGoodsEvent stirFry) | if (@event is StirFryGoodsEvent stirFry) | ||||
{ | { | ||||
morkF.LocalstirFryGoods = stirFry.stirFrymessage.stirFryGoods; | |||||
if (stirFry.stirFrymessage.stirFryGoods.Count > 0) | |||||
{ | |||||
foreach (var item in stirFry.stirFrymessage.stirFryGoods) | |||||
{ | |||||
morkF.LocalstirFryGoods.Add(new StirFryGoods | |||||
{ | |||||
GoodsKey = item.GoodsKey, | |||||
StirPotActions = OrderSort(item.StirPotActions), | |||||
}); | |||||
} | |||||
} | |||||
MessageLog.GetInstance.Show("接收到小炒流程信息"); | MessageLog.GetInstance.Show("接收到小炒流程信息"); | ||||
//流程解析 | //流程解析 | ||||
foreach (var item in morkF.LocalstirFryGoods) | foreach (var item in morkF.LocalstirFryGoods) | ||||
{ | { | ||||
MessageLog.GetInstance.Show($"添加菜谱{item.GoodsKey}"); | MessageLog.GetInstance.Show($"添加菜谱{item.GoodsKey}"); | ||||
// morkF.listStirBom.Add(item.StirFryBomInfo);//添加订单制作流程 | // morkF.listStirBom.Add(item.StirFryBomInfo);//添加订单制作流程 | ||||
string MenuStep = "菜单步骤:"; | |||||
foreach (var items in item.StirPotActions) | foreach (var items in item.StirPotActions) | ||||
{ | { | ||||
switch (items.Actions) | switch (items.Actions) | ||||
{ | { | ||||
case "加热开启": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.加热开启): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "设置加热挡位1": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.设置加热挡位1): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "设置加热挡位2": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.设置加热挡位2): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "设置加热挡位3": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.设置加热挡位3): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "设置加热挡位4": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.设置加热挡位4): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "设置加热挡位5": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.设置加热挡位5): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "设置加热挡位6": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.设置加热挡位6): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "设置加热挡位7": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.设置加热挡位7): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "设置加热挡位8": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.设置加热挡位8): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "设置加热挡位9": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.设置加热挡位9): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "设置加热挡位10": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.设置加热挡位10): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "停止加热": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.停止加热): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "加调料": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.加调料): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "取原料": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.取原料): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "开启搅拌": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.开启搅拌): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "设置搅拌挡位1": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.设置搅拌挡位1): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "设置搅拌挡位2": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.设置搅拌挡位2): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "设置搅拌挡位3": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.设置搅拌挡位3): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "关闭搅拌": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.关闭搅拌): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "出餐启动": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.出餐启动): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "倒菜品": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.道菜启动): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "搅拌臂原点位": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.炒制菜品): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "搅拌臂炒制位": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.搅拌臂原点位): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
case "洗锅": | |||||
MessageLog.GetInstance.Show(items.Actions); | |||||
case nameof(StirFryPotActionEnum.搅拌臂炒制位): | |||||
MenuStep += items.Actions + ","; | |||||
break; | |||||
case nameof(StirFryPotActionEnum.洗锅): | |||||
MenuStep += items.Actions + ","; | |||||
break; | break; | ||||
default: | default: | ||||
break; | break; | ||||
@@ -487,12 +547,33 @@ namespace BPASmartClient.MorkF | |||||
} | } | ||||
MessageLog.GetInstance.Show(MenuStep); | |||||
} | } | ||||
} | } | ||||
}); | }); | ||||
} | } | ||||
private List<PotActions> OrderSort(List<PotActions> potActions) | |||||
{ | |||||
if (potActions.Count > 1) | |||||
{ | |||||
potActions.Sort( | |||||
delegate (PotActions st1, PotActions st2) | |||||
{ | |||||
//降序排列 | |||||
//return st2.FryTime.CompareTo(st1.FryTime); | |||||
//升序版(颠倒 st1 和 st2 即可) | |||||
return st1.FryTime.CompareTo(st2.FryTime); | |||||
}); | |||||
} | |||||
return potActions; | |||||
} | |||||
/// <summary> | /// <summary> | ||||
/// 订单状态发布 | /// 订单状态发布 | ||||
/// </summary> | /// </summary> | ||||
@@ -518,6 +599,7 @@ namespace BPASmartClient.MorkF | |||||
if (order.MorkOrder.GoodBatchings == null) return; | if (order.MorkOrder.GoodBatchings == null) return; | ||||
OrderCount++; | OrderCount++; | ||||
DeviceProcessLogShow($"接收到{OrderCount}次订单"); | DeviceProcessLogShow($"接收到{OrderCount}次订单"); | ||||
Enum.GetNames(typeof(StirFryPotActionEnum)); | |||||
var res = morkF.LocalstirFryGoods?.FirstOrDefault(p => p.GoodsKey == order.MorkOrder.RecipeId);//匹配订单对应制作流程 | var res = morkF.LocalstirFryGoods?.FirstOrDefault(p => p.GoodsKey == order.MorkOrder.RecipeId);//匹配订单对应制作流程 | ||||
if (res != null) | if (res != null) | ||||
@@ -561,99 +643,99 @@ namespace BPASmartClient.MorkF | |||||
{ | { | ||||
switch (item.Actions) | switch (item.Actions) | ||||
{ | { | ||||
case "加热开启": | |||||
case nameof(StirFryPotActionEnum.加热开启): | |||||
StartFire(); | StartFire(); | ||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "设置加热挡位1": | |||||
case nameof(StirFryPotActionEnum.设置加热挡位1): | |||||
SetFire(new List<int> { 1 }); | SetFire(new List<int> { 1 }); | ||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "设置加热挡位2": | |||||
case nameof(StirFryPotActionEnum.设置加热挡位2): | |||||
SetFire(new List<int> { 2 }); | SetFire(new List<int> { 2 }); | ||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "设置加热挡位3": | |||||
case nameof(StirFryPotActionEnum.设置加热挡位3): | |||||
SetFire(new List<int> { 3 }); | SetFire(new List<int> { 3 }); | ||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "设置加热挡位4": | |||||
case nameof(StirFryPotActionEnum.设置加热挡位4): | |||||
SetFire(new List<int> { 4 }); | SetFire(new List<int> { 4 }); | ||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "设置加热挡位5": | |||||
case nameof(StirFryPotActionEnum.设置加热挡位5): | |||||
SetFire(new List<int> { 5 }); | SetFire(new List<int> { 5 }); | ||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "设置加热挡位6": | |||||
case nameof(StirFryPotActionEnum.设置加热挡位6): | |||||
SetFire(new List<int> { 6 }); | SetFire(new List<int> { 6 }); | ||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "设置加热挡位7": | |||||
case nameof(StirFryPotActionEnum.设置加热挡位7): | |||||
SetFire(new List<int> { 7 }); | SetFire(new List<int> { 7 }); | ||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "设置加热挡位8": | |||||
case nameof(StirFryPotActionEnum.设置加热挡位8): | |||||
SetFire(new List<int> { 8 }); | SetFire(new List<int> { 8 }); | ||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "设置加热挡位9": | |||||
case nameof(StirFryPotActionEnum.设置加热挡位9): | |||||
SetFire(new List<int> { 9 }); | SetFire(new List<int> { 9 }); | ||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "设置加热挡位10": | |||||
case nameof(StirFryPotActionEnum.设置加热挡位10): | |||||
SetFire(new List<int> { 10 }); | SetFire(new List<int> { 10 }); | ||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "停止加热": | |||||
case nameof(StirFryPotActionEnum.停止加热): | |||||
StopFire(); | StopFire(); | ||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "加调料": | |||||
case nameof(StirFryPotActionEnum.加调料): | |||||
OutSeasonings(item.SeasoningLists); | OutSeasonings(item.SeasoningLists); | ||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "取原料": | |||||
case nameof(StirFryPotActionEnum.取原料): | |||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "开启搅拌": | |||||
case nameof(StirFryPotActionEnum.开启搅拌): | |||||
StartStir(); | StartStir(); | ||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "设置搅拌挡位1": | |||||
case nameof(StirFryPotActionEnum.设置搅拌挡位1): | |||||
SetStir(new List<int> { 1 }); | SetStir(new List<int> { 1 }); | ||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "设置搅拌挡位2": | |||||
case nameof(StirFryPotActionEnum.设置搅拌挡位2): | |||||
SetStir(new List<int> { 2 }); | SetStir(new List<int> { 2 }); | ||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "设置搅拌挡位3": | |||||
case nameof(StirFryPotActionEnum.设置搅拌挡位3): | |||||
SetStir(new List<int> { 3 }); | SetStir(new List<int> { 3 }); | ||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "关闭搅拌": | |||||
case nameof(StirFryPotActionEnum.关闭搅拌): | |||||
StopStir(); | StopStir(); | ||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "出餐启动": | |||||
case nameof(StirFryPotActionEnum.出餐启动): | |||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "倒菜品": | |||||
case nameof(StirFryPotActionEnum.道菜启动): | |||||
OutFood(); | OutFood(); | ||||
break; | break; | ||||
case "炒制菜品": | |||||
Thread.Sleep(item.FryTime * 1000); | |||||
case nameof(StirFryPotActionEnum.炒制菜品): | |||||
Thread.Sleep(item.During * 1000); | |||||
break; | break; | ||||
case "搅拌臂原点位": | |||||
case nameof(StirFryPotActionEnum.搅拌臂原点位): | |||||
StirArmGoOrigin(); | StirArmGoOrigin(); | ||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "搅拌臂炒制位": | |||||
case nameof(StirFryPotActionEnum.搅拌臂炒制位): | |||||
StirArmGoWork(); | StirArmGoWork(); | ||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
case "洗锅": | |||||
case nameof(StirFryPotActionEnum.洗锅): | |||||
MessageLog.GetInstance.Show(item.Actions); | MessageLog.GetInstance.Show(item.Actions); | ||||
break; | break; | ||||
default: | default: | ||||
@@ -0,0 +1,14 @@ | |||||
using BPA.Models; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.MorkF.Model | |||||
{ | |||||
public class LocalPotStep | |||||
{ | |||||
public StirFryGoods LocalstirFryGoods { get; set; } = new StirFryGoods(); | |||||
} | |||||
} |
@@ -33,9 +33,13 @@ | |||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<WrapPanel Orientation="Horizontal"> | <WrapPanel Orientation="Horizontal"> | ||||
<Button Content="炒锅初始化" Command="{Binding PlcInite}" Cursor="Hand"/> | |||||
<Button Content="炒锅1复位" Command="{Binding Plc1Reset}" Cursor="Hand"/> | |||||
<Button Content="炒锅初始化" Command="{Binding PlcInite}" Cursor="Hand" Margin="10,0"/> | |||||
<Button Content="炒锅1复位" Command="{Binding Plc1Reset}" Cursor="Hand" Margin="10,0"/> | |||||
<TextBlock Text="菜单编号;" Margin="10,0"/> | |||||
<TextBox Text="{Binding FoodMenuID}" Width="100"/> | |||||
<Button Content="下单" Margin="10,0" Command="{Binding StartOrder}" Cursor="Hand"/> | |||||
<Button Content="本地模拟流程配置" Click="Button_Click"/> | |||||
<Button Content="本地模拟流程下单" Margin="10,0" Command="{Binding StartLocalOrder}"/> | |||||
</WrapPanel> | </WrapPanel> | ||||
<WrapPanel Grid.Row="1" Orientation="Horizontal" Margin="0,0,0,-37" RenderTransformOrigin="0.503,0.715"> | <WrapPanel Grid.Row="1" Orientation="Horizontal" Margin="0,0,0,-37" RenderTransformOrigin="0.503,0.715"> | ||||
<Button x:Name="checkValue" Content="炒锅1模拟" Command="{Binding Pot1SimOrder}" Margin="10,0"/> | <Button x:Name="checkValue" Content="炒锅1模拟" Command="{Binding Pot1SimOrder}" Margin="10,0"/> | ||||
@@ -1,4 +1,6 @@ | |||||
using BPASmartClient.MorkF.ViewModel; | |||||
using BPASmartClient.Helper; | |||||
using BPASmartClient.MorkF.Model; | |||||
using BPASmartClient.MorkF.ViewModel; | |||||
using System; | using System; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Linq; | using System.Linq; | ||||
@@ -24,8 +26,14 @@ namespace BPASmartClient.MorkF.View | |||||
public DebugView() | public DebugView() | ||||
{ | { | ||||
InitializeComponent(); | InitializeComponent(); | ||||
Json<LocalPotStep>.Read(); | |||||
} | |||||
private void Button_Click(object sender, RoutedEventArgs e) | |||||
{ | |||||
LocalMenu localMenu = new LocalMenu(); | |||||
localMenu.ShowDialog(); | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -0,0 +1,80 @@ | |||||
<Window x:Class="BPASmartClient.MorkF.View.LocalMenu" | |||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" | |||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | |||||
xmlns:local="clr-namespace:BPASmartClient.MorkF.View" | |||||
xmlns:vm="clr-namespace:BPASmartClient.MorkF.ViewModel" | |||||
mc:Ignorable="d" | |||||
Title="LocalMenu" Height="800" Width="800" WindowStartupLocation="CenterScreen" WindowStyle="None" AllowsTransparency="True" MouseLeftButtonDown="Window_MouseLeftButtonDown"> | |||||
<Window.DataContext> | |||||
<vm:LocalMenuViewModel/> | |||||
</Window.DataContext> | |||||
<Window.Resources> | |||||
<Style TargetType="ListBoxItem" > | |||||
<Setter Property="Template"> | |||||
<Setter.Value> | |||||
<ControlTemplate TargetType="{x:Type ListBoxItem}"> | |||||
<Border BorderBrush="Black" BorderThickness="0" Background="White"> | |||||
<Grid Width="600" HorizontalAlignment="Center" VerticalAlignment="Center" > | |||||
<Grid.ColumnDefinitions> | |||||
<ColumnDefinition/> | |||||
<ColumnDefinition/> | |||||
<ColumnDefinition Width="2*"/> | |||||
<ColumnDefinition/> | |||||
<ColumnDefinition/> | |||||
<ColumnDefinition/> | |||||
</Grid.ColumnDefinitions> | |||||
<TextBox Grid.Column="0" Text="{Binding FryTime,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Center" VerticalAlignment="Center" /> | |||||
<TextBox Grid.Column="1" Text="{Binding During}" Margin="10,0"/> | |||||
<ComboBox Grid.Column="2" Width="120" ItemsSource="{Binding DataContext.strPotActions , RelativeSource={RelativeSource AncestorType=Window,Mode=FindAncestor}}" | |||||
SelectedValue="{Binding Actions}" Margin="10,0"/> | |||||
<TextBox Grid.Column="3" Text="{Binding SeasoningLists[0].Loc}" Margin="10,0"/> | |||||
<TextBox Grid.Column="4" Text="{Binding SeasoningLists[0].Qty}" Margin="10,0"/> | |||||
<Button Grid.Column="5" Content="删除" Margin="10,0" HorizontalAlignment="Center" | |||||
Command="{Binding DataContext.Delete, RelativeSource={RelativeSource AncestorType=Window,Mode=FindAncestor}}" | |||||
CommandParameter="{Binding DataContext, RelativeSource={RelativeSource AncestorType=ListBoxItem,Mode=FindAncestor}}"/> | |||||
</Grid> | |||||
</Border> | |||||
</ControlTemplate> | |||||
</Setter.Value> | |||||
</Setter> | |||||
</Style> | |||||
</Window.Resources> | |||||
<Grid> | |||||
<Grid.RowDefinitions> | |||||
<RowDefinition Height="50"/> | |||||
<RowDefinition Height="50"/> | |||||
<RowDefinition Height="*"/> | |||||
</Grid.RowDefinitions> | |||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> | |||||
<Button Content="增加步骤" Command="{Binding AddFryTime}" Width="120" Height="40" Margin="10,0"/> | |||||
<Button Content="保存" Command="{Binding Save}" Width="120" Height="40" Margin="10,0"/> | |||||
<Button Content="退出" Click="Button_Click" Width="120" Height="40" Margin="10,0"/> | |||||
</StackPanel> | |||||
<Grid Grid.Row="1" Width="600" HorizontalAlignment="Center" VerticalAlignment="Center"> | |||||
<Grid.ColumnDefinitions> | |||||
<ColumnDefinition/> | |||||
<ColumnDefinition/> | |||||
<ColumnDefinition Width="2*"/> | |||||
<ColumnDefinition/> | |||||
<ColumnDefinition/> | |||||
<ColumnDefinition/> | |||||
</Grid.ColumnDefinitions> | |||||
<TextBlock Grid.Column="0" Text="步骤" HorizontalAlignment="Center"/> | |||||
<TextBlock Grid.Column="1" Text="时间" HorizontalAlignment="Center"/> | |||||
<TextBlock Grid.Column="2" Text="动作" HorizontalAlignment="Center"/> | |||||
<TextBlock Grid.Column="3" Text="调料位置" HorizontalAlignment="Center"/> | |||||
<TextBlock Grid.Column="4" Text="调料重量" HorizontalAlignment="Center"/> | |||||
<TextBlock Grid.Column="5" Text="删除" HorizontalAlignment="Center"/> | |||||
</Grid> | |||||
<ListBox x:Name="listview1" Grid.Row="2" BorderBrush="Black" BorderThickness="0" HorizontalAlignment="Center" AllowDrop="True" | |||||
ScrollViewer.HorizontalScrollBarVisibility="Disabled" ItemsSource="{Binding PotActionStep}" Margin=" 10" Background="Transparent" | |||||
PreviewMouseMove="listview1_MouseMove" Drop="listview1_Drop" PreviewMouseUp="listview1_MouseLeftButtonUp" | |||||
> | |||||
</ListBox> | |||||
</Grid> | |||||
</Window> |
@@ -0,0 +1,333 @@ | |||||
using BPA.Models; | |||||
using BPASmartClient.Helper; | |||||
using BPASmartClient.MorkF.ViewModel; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
using System.Windows; | |||||
using System.Windows.Controls; | |||||
using System.Windows.Controls.Primitives; | |||||
using System.Windows.Data; | |||||
using System.Windows.Documents; | |||||
using System.Windows.Input; | |||||
using System.Windows.Media; | |||||
using System.Windows.Media.Imaging; | |||||
using System.Windows.Shapes; | |||||
namespace BPASmartClient.MorkF.View | |||||
{ | |||||
/// <summary> | |||||
/// LocalMenu.xaml 的交互逻辑 | |||||
/// </summary> | |||||
public partial class LocalMenu : Window | |||||
{ | |||||
double X, Y; | |||||
Border ultUE; | |||||
Popup mypopup; | |||||
ListBoxItem OldItem; | |||||
ListBoxItem new_Item; | |||||
bool isDown = false; | |||||
int lao_index; | |||||
int new_index; | |||||
/// <summary> | |||||
/// 当前拖拽子控件Item | |||||
/// </summary> | |||||
private ListBoxItem ChildListBoxItem; | |||||
public LocalMenu() | |||||
{ | |||||
InitializeComponent(); | |||||
} | |||||
private void Button_Click(object sender, RoutedEventArgs e) | |||||
{ | |||||
this.Close(); | |||||
} | |||||
private int GetCurrentIndex(GetPositionDelegate getPosition) | |||||
{ | |||||
int index = -1; | |||||
for (int i = 0; i < listview1.Items.Count; ++i) | |||||
{ | |||||
ListBoxItem item = GetListViewItem(i); | |||||
if (item != null && this.IsMouseOverTarget(item, getPosition)) | |||||
{ | |||||
index = i; | |||||
break; | |||||
} | |||||
} | |||||
return index; | |||||
} | |||||
private bool IsMouseOverTarget(Visual target, GetPositionDelegate getPosition) | |||||
{ | |||||
Rect bounds = VisualTreeHelper.GetDescendantBounds(target); | |||||
Point mousePos = getPosition((IInputElement)target); | |||||
return bounds.Contains(mousePos); | |||||
} | |||||
delegate Point GetPositionDelegate(IInputElement element); | |||||
ListBoxItem GetListViewItem(int index) | |||||
{ | |||||
if (listview1.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated) | |||||
return null; | |||||
return listview1.ItemContainerGenerator.ContainerFromIndex(index) as ListBoxItem; | |||||
} | |||||
private void CloneVisual(Border border, MouseButtonEventArgs e) | |||||
{ | |||||
ListBoxItem listBoxItem = new ListBoxItem(); | |||||
Point ptLeftUp = new Point(0, 0); | |||||
ptLeftUp = listview1.PointToScreen(ptLeftUp); | |||||
mypopup = new Popup(); | |||||
double y = e.GetPosition(listview1).Y; | |||||
double x = e.GetPosition(listview1).X; | |||||
VisualBrush brush = new VisualBrush(border); | |||||
Rectangle rect = new Rectangle(); | |||||
rect.Width = border.ActualWidth; | |||||
rect.Height = border.ActualHeight; | |||||
rect.Fill = brush; | |||||
rect.Opacity = border.Opacity; | |||||
border.Opacity = 0.8; | |||||
mypopup.Child = rect; | |||||
mypopup.AllowsTransparency = true; | |||||
mypopup.HorizontalOffset = ptLeftUp.X + x - ((FrameworkElement)ultUE).ActualWidth / 2; | |||||
mypopup.VerticalOffset = ptLeftUp.Y + y - ((FrameworkElement)ultUE).ActualHeight / 2; | |||||
mypopup.IsOpen = true; | |||||
} | |||||
private void listview1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) | |||||
{ | |||||
try | |||||
{ | |||||
if (isDown) | |||||
{ | |||||
isDown = false; | |||||
return; | |||||
} | |||||
var pos = e.GetPosition(listview1); | |||||
HitTestResult result = VisualTreeHelper.HitTest(listview1, pos); | |||||
if (result == null) return; | |||||
OldItem = Utils.FindVisualParent<ListBoxItem>(result.VisualHit); | |||||
if (OldItem != null) | |||||
{ | |||||
if (e.Source is Border) | |||||
{ | |||||
ultUE = (Border)e.Source; | |||||
ultUE.CaptureMouse(); | |||||
ChildListBoxItem = Utils.FindVisualParent<ListBoxItem>(VisualTreeHelper.HitTest(ultUE, e.GetPosition(ultUE)).VisualHit); | |||||
CloneVisual(ultUE, e); | |||||
isDown = true; | |||||
} | |||||
} | |||||
} | |||||
catch (Exception) | |||||
{ | |||||
throw; | |||||
} | |||||
} | |||||
private void listview1_MouseMove(object sender, MouseEventArgs e) | |||||
{ | |||||
if (sender is ListBox listview&& e.LeftButton == MouseButtonState.Pressed&& listview.SelectedItem != null) | |||||
{ | |||||
var pos = e.GetPosition(listview1); | |||||
HitTestResult result = VisualTreeHelper.HitTest(listview1, pos); | |||||
if (result == null) | |||||
{ | |||||
return; | |||||
} | |||||
var listBoxItem = Utils.FindVisualParent<ListBoxItem>(result.VisualHit); | |||||
if (listBoxItem == null || listBoxItem.Content != listview1.SelectedItem) | |||||
{ | |||||
return; | |||||
} | |||||
DataObject dataObj = new DataObject(listBoxItem.Content as PotActions); | |||||
DragDrop.DoDragDrop(listview1, dataObj, DragDropEffects.Move); | |||||
ActionManage.GetInstance.Send("SortFryTime"); | |||||
} | |||||
} | |||||
private void listview1_Drop(object sender, DragEventArgs e) | |||||
{ | |||||
var pos = e.GetPosition(listview1); | |||||
var result = VisualTreeHelper.HitTest(listview1, pos); | |||||
if (result == null) | |||||
{ | |||||
return; | |||||
} | |||||
//查找元数据 | |||||
var sourcePerson = e.Data.GetData(typeof(PotActions)) as PotActions; | |||||
if (sourcePerson == null) | |||||
{ | |||||
return; | |||||
} | |||||
//查找目标数据 | |||||
var listBoxItem = Utils.FindVisualParent<ListBoxItem>(result.VisualHit); | |||||
if (listBoxItem == null) | |||||
{ | |||||
return; | |||||
} | |||||
var targetPerson = listBoxItem.Content as PotActions; | |||||
if (ReferenceEquals(targetPerson, sourcePerson)) | |||||
{ | |||||
return; | |||||
} | |||||
int i = listview1.Items.IndexOf(sourcePerson); | |||||
int j = listview1.Items.IndexOf(targetPerson); | |||||
ActionManage.GetInstance.Send("PotActionStep", new int[] { i, j }); | |||||
//LocalMenuViewModel.PotActionStep.RemoveAt(listview1.Items.IndexOf(sourcePerson)); | |||||
//LocalMenuViewModel.PotActionStep.Insert(listview1.Items.IndexOf(targetPerson)+1, sourcePerson); | |||||
//targetPerson.FryTime = listview1.Items.IndexOf(targetPerson) -1; | |||||
//LocalMenuViewModel.PotActionStep.Move(listview1.Items.IndexOf(sourcePerson), listview1.Items.IndexOf(targetPerson)); | |||||
} | |||||
private void listview1_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) | |||||
{ | |||||
////鼠标未按下返回 | |||||
//if (!isDown) return; | |||||
//isDown = false; | |||||
//var pos = e.GetPosition(listview1); | |||||
//HitTestResult result = VisualTreeHelper.HitTest(listview1, pos); | |||||
//if (result == null) return; | |||||
//new_Item = Utils.FindVisualParent<ListBoxItem>(result.VisualHit); | |||||
//if (mypopup != null) | |||||
//{ | |||||
// mypopup.IsOpen = false; | |||||
// mypopup = null; | |||||
//} | |||||
//MoveListBoxStyle(e, false); | |||||
} | |||||
private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) | |||||
{ | |||||
this.DragMove(); | |||||
} | |||||
/// <summary> | |||||
/// 移动效果 | |||||
/// </summary> | |||||
/// <param name="boxItem"></param> | |||||
private void MoveListBoxStyle(MouseEventArgs e, bool isBool) | |||||
{ | |||||
try | |||||
{ | |||||
if (isBool)//为真,根据鼠标位置设置行透明度和显示状态 | |||||
{ | |||||
//移动到某行减轻某行 暗黑 | |||||
//foreach (ListBoxItem item in Utils.FindVisualChildren<ListBoxItem>(listview1)) | |||||
//{ | |||||
// if (item != ChildListBoxItem)//这就是其他控件 | |||||
// { | |||||
// double item_width = item.ActualWidth; //当前行宽 | |||||
// double item_height = item.ActualHeight; //当前行高 | |||||
// double item_x = e.GetPosition(item).X; //鼠标相对当前行X位移 | |||||
// double item_y = e.GetPosition(item).Y; //鼠标相对当前行Y位移 | |||||
// if (item_y <= item_height && item_y > 0 && item_x > 0 && item_x <= item_width)//鼠标进入哪一行,则将那一行变灰 | |||||
// { | |||||
// item.Opacity = 0.5; | |||||
// item.Background = Brushes.AliceBlue; | |||||
// lao_index = LocalMenuViewModel.PotActionStep.IndexOf(item.Content as PotActions); | |||||
// new_index = LocalMenuViewModel.PotActionStep.IndexOf(ChildListBoxItem.Content as PotActions); | |||||
// //LocalMenuViewModel.PotActionStep.Move(lao_index, new_index); | |||||
// } | |||||
// else //鼠标没在哪一行,则保持原状 | |||||
// { | |||||
// item.Opacity = 1; | |||||
// } | |||||
// } | |||||
// else | |||||
// { | |||||
// item.Visibility = Visibility.Hidden; | |||||
// } | |||||
//} | |||||
} | |||||
else//为假 恢复所有行透明度和显示状态 | |||||
{ | |||||
//LocalMenuViewModel.PotActionStep.Move(lao_index, new_index); | |||||
//移动到某行减轻某行 暗黑 | |||||
foreach (ListBoxItem item in Utils.FindVisualChildren<ListBoxItem>(listview1)) | |||||
{ | |||||
item.Background = Brushes.Transparent; | |||||
item.Opacity = 1; | |||||
item.Visibility = Visibility.Visible; | |||||
} | |||||
} | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
} | |||||
} | |||||
} | |||||
internal static class Utils | |||||
{ | |||||
//根据子元素查找父元素 | |||||
public static T FindVisualParent<T>(DependencyObject obj) where T : class | |||||
{ | |||||
while (obj != null) | |||||
{ | |||||
if (obj is T) | |||||
return obj as T; | |||||
obj = VisualTreeHelper.GetParent(obj); | |||||
} | |||||
return null; | |||||
} | |||||
/// <summary> | |||||
/// 查询子控件 | |||||
/// </summary> | |||||
/// <typeparam name="T"></typeparam> | |||||
/// <param name="obj"></param> | |||||
/// <returns></returns> | |||||
public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject | |||||
{ | |||||
if (depObj != null) | |||||
{ | |||||
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++) | |||||
{ | |||||
DependencyObject child = VisualTreeHelper.GetChild(depObj, i); | |||||
if (child != null && child is T) | |||||
{ | |||||
yield return (T)child; | |||||
} | |||||
foreach (T childOfChild in FindVisualChildren<T>(child)) | |||||
{ | |||||
yield return childOfChild; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -27,13 +27,17 @@ namespace BPASmartClient.MorkF.ViewModel | |||||
public int DeviceId { get; set; } | public int DeviceId { get; set; } | ||||
#region 设备控制 | #region 设备控制 | ||||
public int FoodMenuID { get { return _foodMenuID; } set { _foodMenuID = value; OnPropertyChanged(); } } | |||||
private int _foodMenuID; | |||||
public RelayCommand PlcInite { get; set; } | public RelayCommand PlcInite { get; set; } | ||||
public RelayCommand FoodPlcInite { get; set; } | public RelayCommand FoodPlcInite { get; set; } | ||||
public RelayCommand Plc1Reset { get; set; } | public RelayCommand Plc1Reset { get; set; } | ||||
public RelayCommand StartOrder { get; set; } | |||||
public RelayCommand StartLocalOrder { get; set; } | |||||
#endregion | |||||
#endregion | |||||
#region 菜品控制 | #region 菜品控制 | ||||
public string RealX { get { return _realX; } set { _realX = value; OnPropertyChanged(); } } | public string RealX { get { return _realX; } set { _realX = value; OnPropertyChanged(); } } | ||||
@@ -168,6 +172,8 @@ namespace BPASmartClient.MorkF.ViewModel | |||||
PlcInite = new RelayCommand(() => { ActionManage.GetInstance.Send("InitCommand"); }); | PlcInite = new RelayCommand(() => { ActionManage.GetInstance.Send("InitCommand"); }); | ||||
FoodPlcInite = new RelayCommand(() => { ActionManage.GetInstance.Send("FoodPlcInite"); }); | FoodPlcInite = new RelayCommand(() => { ActionManage.GetInstance.Send("FoodPlcInite"); }); | ||||
Plc1Reset = new RelayCommand(() => { ActionManage.GetInstance.Send("Plc1Reset"); }); | Plc1Reset = new RelayCommand(() => { ActionManage.GetInstance.Send("Plc1Reset"); }); | ||||
StartOrder = new RelayCommand(() => { ActionManage.GetInstance.Send("StartOrder", FoodMenuID); }); | |||||
StartLocalOrder = new RelayCommand(() => { ActionManage.GetInstance.Send("StartLocalOrder"); }); | |||||
#endregion | #endregion | ||||
#region 菜品控制 | #region 菜品控制 | ||||
@@ -0,0 +1,99 @@ | |||||
using BPA.Models; | |||||
using BPASmartClient.Helper; | |||||
using BPASmartClient.MorkF.Model; | |||||
using Microsoft.Toolkit.Mvvm.ComponentModel; | |||||
using Microsoft.Toolkit.Mvvm.Input; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Collections.ObjectModel; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.MorkF.ViewModel | |||||
{ | |||||
partial class LocalMenuViewModel:ObservableObject | |||||
{ | |||||
public ObservableCollection<PotActions> PotActionStep { get; set; } = new ObservableCollection<PotActions>(); | |||||
public ObservableCollection<string> strPotActions { get; set; } = new ObservableCollection<string>(); | |||||
public RelayCommand<object> Delete { get; set; } | |||||
public RelayCommand AddFryTime { get; set; } | |||||
public RelayCommand Save { get; set; } | |||||
private void Deleted(object o) | |||||
{ | |||||
if (o == null) return; | |||||
if(o is PotActions p) | |||||
{ | |||||
PotActionStep.Remove(p); | |||||
} | |||||
} | |||||
public LocalMenuViewModel() | |||||
{ | |||||
if(Json<LocalPotStep>.Data.LocalstirFryGoods.StirPotActions.Count > 0) | |||||
{ | |||||
PotActionStep.Clear(); | |||||
PotActionStep = new ObservableCollection<PotActions>(Json<LocalPotStep>.Data.LocalstirFryGoods.StirPotActions); | |||||
} | |||||
Delete = new RelayCommand<object>(Deleted); | |||||
AddFryTime = new RelayCommand(() => | |||||
{ | |||||
List<SeasoningList> seasoningLists = new List<SeasoningList>(); | |||||
seasoningLists.Add(new SeasoningList { Loc = 0,Qty = 0}); | |||||
PotActionStep.Add(new BPA.Models.PotActions | |||||
{ | |||||
FryTime = PotActionStep.Count +1, | |||||
During =0, | |||||
SeasoningLists = seasoningLists, | |||||
}); | |||||
}); | |||||
Save = new RelayCommand(new Action(() => | |||||
{ | |||||
Json<LocalPotStep>.Data.LocalstirFryGoods.GoodsKey = 11; | |||||
Json<LocalPotStep>.Data.LocalstirFryGoods.StirPotActions = new List<PotActions>(PotActionStep); | |||||
Json<LocalPotStep>.Save(); | |||||
})); | |||||
foreach(var pot in Enum.GetNames(typeof(StirFryPotActionEnum))) | |||||
{ | |||||
strPotActions.Add(pot); | |||||
} | |||||
ActionManage.GetInstance.Register(new Action(()=> | |||||
{ | |||||
for (int i = 0; i < Json<LocalPotStep>.Data.LocalstirFryGoods.StirPotActions.Count; i++) | |||||
{ | |||||
Json<LocalPotStep>.Data.LocalstirFryGoods.StirPotActions[i].FryTime = i + 1; | |||||
} | |||||
}), "SortFryTime"); | |||||
ActionManage.GetInstance.Register(new Action<object>((o) => | |||||
{ | |||||
if (o == null) return ; | |||||
if(o is int[] ints) | |||||
{ | |||||
Json<LocalPotStep>.Data.LocalstirFryGoods.StirPotActions[ints[0]].FryTime = ints[1]+1; | |||||
Json<LocalPotStep>.Data.LocalstirFryGoods.StirPotActions[ints[1]].FryTime = ints[0]+1; | |||||
var res = Json<LocalPotStep>.Data.LocalstirFryGoods.StirPotActions[ints[0]]; | |||||
Json<LocalPotStep>.Data.LocalstirFryGoods.StirPotActions.Remove(res); | |||||
Json<LocalPotStep>.Data.LocalstirFryGoods.StirPotActions.Insert(ints[1],res); | |||||
} | |||||
}), "PotActionStep"); | |||||
} | |||||
} | |||||
} |
@@ -9,7 +9,7 @@ | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="BPA.Models" Version="1.0.31" /> | |||||
<PackageReference Include="BPA.Models" Version="1.0.34" /> | |||||
<PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.2" /> | <PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.2" /> | ||||
<PackageReference Include="System.Speech" Version="6.0.0" /> | <PackageReference Include="System.Speech" Version="6.0.0" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
@@ -9,7 +9,7 @@ | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="BPA.Models" Version="1.0.31" /> | |||||
<PackageReference Include="BPA.Models" Version="1.0.34" /> | |||||
<PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.2" /> | <PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.2" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
@@ -17,7 +17,7 @@ | |||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="BPA.Helper" Version="1.0.19" /> | <PackageReference Include="BPA.Helper" Version="1.0.19" /> | ||||
<PackageReference Include="BPA.Message" Version="1.0.46" /> | |||||
<PackageReference Include="BPA.Message" Version="1.0.66" /> | |||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" /> | <PackageReference Include="Newtonsoft.Json" Version="13.0.1" /> | ||||
</ItemGroup> | </ItemGroup> | ||||