using BPASmartClient.Model.咖啡机.Enum;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BPASmartClient.KLMCoffee.Protocal
{
///
/// 咖啡配方Model,控制内容
///
public class RecipeModel
{
///
/// 饮品类型
///
public DrinkType 饮品类型 { get; set; }
///
/// 咖啡量:15-240
///
public int 咖啡量 { get; set; }
///
/// 咖啡温度:低/中/高
///
public TempEnum 咖啡温度 { get; set; }
///
/// 咖啡浓度:清淡/适中/浓郁
///
public CoffeeConcentration 咖啡浓度 { get; set; }
///
/// 热水量:25-450
///
public int 热水量 { get; set; }
///
/// 热水温度:低/中/高
///
public TempEnum 热水温度 { get; set; }
///
/// 牛奶时间:5-120/0
///
public int 牛奶时间 { get; set; }
///
/// 奶沫时间:5-120/0
///
public int 奶沫时间 { get; set; }
///
/// 预煮
///
public CancelOrOkEnum 预煮 { get; set; }
///
/// 咖啡增强
///
public CancelOrOkEnum 咖啡增强 { get; set; }
///
/// 咖啡牛奶同时出
///
public CancelOrOkEnum 咖啡牛奶同时出 { get; set; }
///
/// 出品顺序:否:先奶后咖啡 是:先咖啡后奶
///
public CancelOrOkEnum 出品顺序 { get; set; }
public RecipeModel()
{
饮品类型 = DrinkType.意式咖啡;
咖啡量 = 0;
咖啡温度 = TempEnum.低;
咖啡浓度 = CoffeeConcentration.清淡;
热水量 = 0;
热水温度 = TempEnum.低;
牛奶时间 = 0;
奶沫时间 = 0;
预煮 = CancelOrOkEnum.否;
咖啡增强 = CancelOrOkEnum.否;
咖啡牛奶同时出 = CancelOrOkEnum.否;
出品顺序 = CancelOrOkEnum.否;
}
#region 获取配方字符串命令
///
/// Int 转 16进制字符串 (保留几位)
///
public string IntToHexString(int data,int length = 2)
{
try
{
return data.ToString("X").PadLeft(length,'0');
}
catch (Exception ex)
{
return string.Empty;
}
}
///
/// 获取咖啡配方数据
///
public string GetCoffeeRecipe()
{
string retdata = string.Empty;
try
{
retdata = $"{饮品类型.GetString()}{IntToHexString(咖啡量,4)}" +
$"{咖啡温度.GetString()}{咖啡浓度.GetString()}{IntToHexString(热水量,4)}{热水温度.GetString()}" +
$"{IntToHexString(牛奶时间,2)}{IntToHexString(奶沫时间,2)}{预煮.GetString()}{咖啡增强.GetString()}" +
$"{咖啡牛奶同时出.GetString()}{出品顺序.GetString()}";
}
catch (Exception ex)
{
}
return retdata;
}
#endregion
#region 8种配方测试示例
///
/// 获取8中配方
///
///
///
public string Packe(DrinkType drink)
{
try
{
switch (drink)
{
case DrinkType.意式咖啡:
return GetItalian(60);
break;
case DrinkType.美式咖啡:
return GetAmerican(60,450);
break;
case DrinkType.热水:
return GetHotWater(194);
break;
case DrinkType.卡布奇诺:
return GetCabo(60,17);
break;
case DrinkType.玛琪雅朵:
return GetMacChiato(60,8,17);
break;
case DrinkType.拿铁咖啡:
return GetLatte(60,8,17);
break;
case DrinkType.热牛奶:
return GetHotMilk(8);
break;
case DrinkType.热奶沫:
return GetHotMilkFoam(17);
break;
}
}
catch (Exception ex)
{
return GetItalian(60);
}
return GetItalian(60);
}
#endregion
#region 8种默认配方
///
/// 意式:仅咖啡
///
/// 15-240
public string GetItalian(int _咖啡量)
{
饮品类型 = DrinkType.意式咖啡;
咖啡量 = _咖啡量;
咖啡温度 = TempEnum.中;
咖啡浓度 = CoffeeConcentration.适中;
热水量 = 0;
热水温度 = TempEnum.低;
牛奶时间 = 0;
奶沫时间 = 0;
预煮 = CancelOrOkEnum.是;
咖啡增强 = CancelOrOkEnum.否;
咖啡牛奶同时出 = CancelOrOkEnum.否;
出品顺序 = CancelOrOkEnum.是;
return GetCoffeeRecipe();
}
///
/// 美式:咖啡+热水
///
/// 15-240
/// 25-450
public string GetAmerican(int _咖啡量,int _热水量)
{
饮品类型 = DrinkType.美式咖啡;
咖啡量 = _咖啡量;
咖啡温度 = TempEnum.中;
咖啡浓度 = CoffeeConcentration.适中;
热水量 = _热水量;
热水温度 = TempEnum.高;
牛奶时间 = 0;
奶沫时间 = 0;
预煮 = CancelOrOkEnum.是;
咖啡增强 = CancelOrOkEnum.否;
咖啡牛奶同时出 = CancelOrOkEnum.否;
出品顺序 = CancelOrOkEnum.是;
return GetCoffeeRecipe();
}
///
/// 热水:仅热水
///
/// 25-450
public string GetHotWater(int _热水量)
{
饮品类型 = DrinkType.热水;
咖啡量 = 0;
咖啡温度 = TempEnum.低;
咖啡浓度 = CoffeeConcentration.清淡;
热水量 = _热水量;
热水温度 = TempEnum.高;
牛奶时间 = 0;
奶沫时间 = 0;
预煮 = CancelOrOkEnum.否;
咖啡增强 = CancelOrOkEnum.否;
咖啡牛奶同时出 = CancelOrOkEnum.否;
出品顺序 = CancelOrOkEnum.否;
return GetCoffeeRecipe();
}
///
/// 卡布:热奶沫+咖啡
///
/// 15-240
/// 5-120
public string GetCabo(int _咖啡量,int _奶沫时间)
{
饮品类型 = DrinkType.卡布奇诺;
咖啡量 = _咖啡量;
咖啡温度 = TempEnum.中;
咖啡浓度 = CoffeeConcentration.适中;
热水量 = 0;
热水温度 = TempEnum.低;
牛奶时间 = 0;
奶沫时间 = _奶沫时间;
预煮 = CancelOrOkEnum.是;
咖啡增强 = CancelOrOkEnum.是;
咖啡牛奶同时出 = CancelOrOkEnum.否;
出品顺序 = CancelOrOkEnum.是;
return GetCoffeeRecipe();
}
///
/// 玛奇朵:热牛奶+奶沫+咖啡 牛奶和奶沫不能同时为0
///
/// 15-240
/// 5-120
/// 5-120
public string GetMacChiato(int _咖啡量,int _牛奶时间,int _奶沫时间)
{
饮品类型 = DrinkType.玛琪雅朵;
咖啡量 = _咖啡量;
咖啡温度 = TempEnum.中;
咖啡浓度 = CoffeeConcentration.适中;
热水量 = 0;
热水温度 = TempEnum.低;
牛奶时间 = _牛奶时间;
奶沫时间 = _奶沫时间;
预煮 = CancelOrOkEnum.是;
咖啡增强 = CancelOrOkEnum.否;
咖啡牛奶同时出 = CancelOrOkEnum.是;
出品顺序 = CancelOrOkEnum.否;
return GetCoffeeRecipe();
}
///
/// 拿铁:热牛奶+奶沫+咖啡
///
/// 15-240
/// 5-120
/// 5-120
public string GetLatte(int _咖啡量,int _牛奶时间,int _奶沫时间)
{
饮品类型 = DrinkType.拿铁咖啡;
咖啡量 = _咖啡量;
咖啡温度 = TempEnum.中;
咖啡浓度 = CoffeeConcentration.适中;
热水量 = 0;
热水温度 = TempEnum.低;
牛奶时间 = _牛奶时间;
奶沫时间 = _奶沫时间;
预煮 = CancelOrOkEnum.是;
咖啡增强 = CancelOrOkEnum.否;
咖啡牛奶同时出 = CancelOrOkEnum.否;
出品顺序 = CancelOrOkEnum.是;
return GetCoffeeRecipe();
}
///
/// 热牛奶:仅热牛奶
///
/// 5-120
public string GetHotMilk(int _牛奶时间)
{
饮品类型 = DrinkType.热牛奶;
咖啡量 = 0;
咖啡温度 = TempEnum.低;
咖啡浓度 = CoffeeConcentration.清淡;
热水量 = 0;
热水温度 = TempEnum.低;
牛奶时间 = _牛奶时间;
奶沫时间 = 0;
预煮 = CancelOrOkEnum.否;
咖啡增强 = CancelOrOkEnum.否;
咖啡牛奶同时出 = CancelOrOkEnum.否;
出品顺序 = CancelOrOkEnum.否;
return GetCoffeeRecipe();
}
///
/// 热奶沫:仅热奶沫
///
/// 5-120
public string GetHotMilkFoam(int _奶沫时间)
{
饮品类型 = DrinkType.热奶沫;
咖啡量 = 0;
咖啡温度 = TempEnum.低;
咖啡浓度 = CoffeeConcentration.清淡;
热水量 = 0;
热水温度 = TempEnum.低;
牛奶时间 = 0;
奶沫时间 = _奶沫时间;
预煮 = CancelOrOkEnum.否;
咖啡增强 = CancelOrOkEnum.否;
咖啡牛奶同时出 = CancelOrOkEnum.否;
出品顺序 = CancelOrOkEnum.否;
return GetCoffeeRecipe();
}
#endregion
}
}