终端一体化运控平台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

331 lines
11 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace BPASmartClient.KLMCoffee.Protocal
  7. {
  8. /// <summary>
  9. /// 咖啡配方Model,控制内容
  10. /// </summary>
  11. public class RecipeModel
  12. {
  13. /// <summary>
  14. /// 饮品类型
  15. /// </summary>
  16. public DrinkType 饮品类型 { get; set; }
  17. /// <summary>
  18. /// 咖啡量:15-240
  19. /// </summary>
  20. public int 咖啡量 { get; set; }
  21. /// <summary>
  22. /// 咖啡温度:低/中/高
  23. /// </summary>
  24. public TempEnum 咖啡温度 { get; set; }
  25. /// <summary>
  26. /// 咖啡浓度:清淡/适中/浓郁
  27. /// </summary>
  28. public CoffeeConcentration 咖啡浓度 { get; set; }
  29. /// <summary>
  30. /// 热水量:25-450
  31. /// </summary>
  32. public int 热水量 { get; set; }
  33. /// <summary>
  34. /// 热水温度:低/中/高
  35. /// </summary>
  36. public TempEnum 热水温度 { get; set; }
  37. /// <summary>
  38. /// 牛奶时间:5-120/0
  39. /// </summary>
  40. public int 牛奶时间 { get; set; }
  41. /// <summary>
  42. /// 奶沫时间:5-120/0
  43. /// </summary>
  44. public int 奶沫时间 { get; set; }
  45. /// <summary>
  46. /// 预煮
  47. /// </summary>
  48. public CancelOrOkEnum 预煮 { get; set; }
  49. /// <summary>
  50. /// 咖啡增强
  51. /// </summary>
  52. public CancelOrOkEnum 咖啡增强 { get; set; }
  53. /// <summary>
  54. /// 咖啡牛奶同时出
  55. /// </summary>
  56. public CancelOrOkEnum 咖啡牛奶同时出 { get; set; }
  57. /// <summary>
  58. /// 出品顺序:否:先奶后咖啡 是:先咖啡后奶
  59. /// </summary>
  60. public CancelOrOkEnum 出品顺序 { get; set; }
  61. public RecipeModel()
  62. {
  63. 饮品类型 = DrinkType.意式;
  64. 咖啡量 = 0;
  65. 咖啡温度 = TempEnum.低;
  66. 咖啡浓度 = CoffeeConcentration.清淡;
  67. 热水量 = 0;
  68. 热水温度 = TempEnum.低;
  69. 牛奶时间 = 0;
  70. 奶沫时间 = 0;
  71. 预煮 = CancelOrOkEnum.否;
  72. 咖啡增强 = CancelOrOkEnum.否;
  73. 咖啡牛奶同时出 = CancelOrOkEnum.否;
  74. 出品顺序 = CancelOrOkEnum.否;
  75. }
  76. #region 获取配方字符串命令
  77. /// <summary>
  78. /// Int 转 16进制字符串 (保留几位)
  79. /// </summary>
  80. public string IntToHexString(int data,int length = 2)
  81. {
  82. try
  83. {
  84. return data.ToString("X").PadLeft(length,'0');
  85. }
  86. catch (Exception ex)
  87. {
  88. return string.Empty;
  89. }
  90. }
  91. /// <summary>
  92. /// 获取咖啡配方数据
  93. /// </summary>
  94. public string GetCoffeeRecipe()
  95. {
  96. string retdata = string.Empty;
  97. try
  98. {
  99. retdata = $"{饮品类型.GetString()}{IntToHexString(咖啡量,4)}" +
  100. $"{咖啡温度.GetString()}{咖啡浓度.GetString()}{IntToHexString(热水量,4)}{热水温度.GetString()}" +
  101. $"{IntToHexString(牛奶时间,2)}{IntToHexString(奶沫时间,2)}{预煮.GetString()}{咖啡增强.GetString()}" +
  102. $"{咖啡牛奶同时出.GetString()}{出品顺序.GetString()}";
  103. }
  104. catch (Exception ex)
  105. {
  106. }
  107. return retdata;
  108. }
  109. #endregion
  110. #region 8种配方测试示例
  111. /// <summary>
  112. /// 获取8中配方
  113. /// </summary>
  114. /// <param name="drink"></param>
  115. /// <returns></returns>
  116. public string Packe(DrinkType drink)
  117. {
  118. try
  119. {
  120. switch (drink)
  121. {
  122. case DrinkType.意式:
  123. return GetItalian(60);
  124. break;
  125. case DrinkType.美式:
  126. return GetAmerican(60,450);
  127. break;
  128. case DrinkType.热水:
  129. return GetHotWater(194);
  130. break;
  131. case DrinkType.卡布:
  132. return GetCabo(60,17);
  133. break;
  134. case DrinkType.玛奇朵:
  135. return GetMacChiato(60,8,17);
  136. break;
  137. case DrinkType.拿铁:
  138. return GetLatte(60,8,17);
  139. break;
  140. case DrinkType.热牛奶:
  141. return GetHotMilk(8);
  142. break;
  143. case DrinkType.热奶沫:
  144. return GetHotMilkFoam(17);
  145. break;
  146. }
  147. }
  148. catch (Exception ex)
  149. {
  150. return GetItalian(60);
  151. }
  152. return GetItalian(60);
  153. }
  154. #endregion
  155. #region 8种默认配方
  156. /// <summary>
  157. /// 意式:仅咖啡
  158. /// </summary>
  159. /// <param name="_咖啡量">15-240</param>
  160. public string GetItalian(int _咖啡量)
  161. {
  162. 饮品类型 = DrinkType.意式;
  163. 咖啡量 = _咖啡量;
  164. 咖啡温度 = TempEnum.中;
  165. 咖啡浓度 = CoffeeConcentration.适中;
  166. 热水量 = 0;
  167. 热水温度 = TempEnum.低;
  168. 牛奶时间 = 0;
  169. 奶沫时间 = 0;
  170. 预煮 = CancelOrOkEnum.是;
  171. 咖啡增强 = CancelOrOkEnum.否;
  172. 咖啡牛奶同时出 = CancelOrOkEnum.否;
  173. 出品顺序 = CancelOrOkEnum.是;
  174. return GetCoffeeRecipe();
  175. }
  176. /// <summary>
  177. /// 美式:咖啡+热水
  178. /// </summary>
  179. /// <param name="_咖啡量">15-240</param>
  180. /// <param name="_热水量">25-450</param>
  181. public string GetAmerican(int _咖啡量,int _热水量)
  182. {
  183. 饮品类型 = DrinkType.美式;
  184. 咖啡量 = _咖啡量;
  185. 咖啡温度 = TempEnum.中;
  186. 咖啡浓度 = CoffeeConcentration.适中;
  187. 热水量 = _热水量;
  188. 热水温度 = TempEnum.高;
  189. 牛奶时间 = 0;
  190. 奶沫时间 = 0;
  191. 预煮 = CancelOrOkEnum.是;
  192. 咖啡增强 = CancelOrOkEnum.否;
  193. 咖啡牛奶同时出 = CancelOrOkEnum.否;
  194. 出品顺序 = CancelOrOkEnum.是;
  195. return GetCoffeeRecipe();
  196. }
  197. /// <summary>
  198. /// 热水:仅热水
  199. /// </summary>
  200. /// <param name="_热水量">25-450</param>
  201. public string GetHotWater(int _热水量)
  202. {
  203. 饮品类型 = DrinkType.热水;
  204. 咖啡量 = 0;
  205. 咖啡温度 = TempEnum.低;
  206. 咖啡浓度 = CoffeeConcentration.清淡;
  207. 热水量 = _热水量;
  208. 热水温度 = TempEnum.高;
  209. 牛奶时间 = 0;
  210. 奶沫时间 = 0;
  211. 预煮 = CancelOrOkEnum.否;
  212. 咖啡增强 = CancelOrOkEnum.否;
  213. 咖啡牛奶同时出 = CancelOrOkEnum.否;
  214. 出品顺序 = CancelOrOkEnum.否;
  215. return GetCoffeeRecipe();
  216. }
  217. /// <summary>
  218. /// 卡布:热奶沫+咖啡
  219. /// </summary>
  220. /// <param name="_咖啡量">15-240</param>
  221. /// <param name="_奶沫时间">5-120</param>
  222. public string GetCabo(int _咖啡量,int _奶沫时间)
  223. {
  224. 饮品类型 = DrinkType.卡布;
  225. 咖啡量 = _咖啡量;
  226. 咖啡温度 = TempEnum.中;
  227. 咖啡浓度 = CoffeeConcentration.适中;
  228. 热水量 = 0;
  229. 热水温度 = TempEnum.低;
  230. 牛奶时间 = 0;
  231. 奶沫时间 = _奶沫时间;
  232. 预煮 = CancelOrOkEnum.是;
  233. 咖啡增强 = CancelOrOkEnum.是;
  234. 咖啡牛奶同时出 = CancelOrOkEnum.否;
  235. 出品顺序 = CancelOrOkEnum.是;
  236. return GetCoffeeRecipe();
  237. }
  238. /// <summary>
  239. /// 玛奇朵:热牛奶+奶沫+咖啡 牛奶和奶沫不能同时为0
  240. /// </summary>
  241. /// <param name="_咖啡量">15-240</param>
  242. /// <param name="_牛奶时间">5-120</param>
  243. /// <param name="_奶沫时间">5-120</param>
  244. public string GetMacChiato(int _咖啡量,int _牛奶时间,int _奶沫时间)
  245. {
  246. 饮品类型 = DrinkType.玛奇朵;
  247. 咖啡量 = _咖啡量;
  248. 咖啡温度 = TempEnum.中;
  249. 咖啡浓度 = CoffeeConcentration.适中;
  250. 热水量 = 0;
  251. 热水温度 = TempEnum.低;
  252. 牛奶时间 = _牛奶时间;
  253. 奶沫时间 = _奶沫时间;
  254. 预煮 = CancelOrOkEnum.是;
  255. 咖啡增强 = CancelOrOkEnum.否;
  256. 咖啡牛奶同时出 = CancelOrOkEnum.是;
  257. 出品顺序 = CancelOrOkEnum.否;
  258. return GetCoffeeRecipe();
  259. }
  260. /// <summary>
  261. /// 拿铁:热牛奶+奶沫+咖啡
  262. /// </summary>
  263. /// <param name="_咖啡量">15-240</param>
  264. /// <param name="_牛奶时间">5-120</param>
  265. /// <param name="_奶沫时间">5-120</param>
  266. public string GetLatte(int _咖啡量,int _牛奶时间,int _奶沫时间)
  267. {
  268. 饮品类型 = DrinkType.拿铁;
  269. 咖啡量 = _咖啡量;
  270. 咖啡温度 = TempEnum.中;
  271. 咖啡浓度 = CoffeeConcentration.适中;
  272. 热水量 = 0;
  273. 热水温度 = TempEnum.低;
  274. 牛奶时间 = _牛奶时间;
  275. 奶沫时间 = _奶沫时间;
  276. 预煮 = CancelOrOkEnum.是;
  277. 咖啡增强 = CancelOrOkEnum.否;
  278. 咖啡牛奶同时出 = CancelOrOkEnum.否;
  279. 出品顺序 = CancelOrOkEnum.是;
  280. return GetCoffeeRecipe();
  281. }
  282. /// <summary>
  283. /// 热牛奶:仅热牛奶
  284. /// </summary>
  285. /// <param name="_牛奶时间">5-120</param>
  286. public string GetHotMilk(int _牛奶时间)
  287. {
  288. 饮品类型 = DrinkType.热牛奶;
  289. 咖啡量 = 0;
  290. 咖啡温度 = TempEnum.低;
  291. 咖啡浓度 = CoffeeConcentration.清淡;
  292. 热水量 = 0;
  293. 热水温度 = TempEnum.低;
  294. 牛奶时间 = _牛奶时间;
  295. 奶沫时间 = 0;
  296. 预煮 = CancelOrOkEnum.否;
  297. 咖啡增强 = CancelOrOkEnum.否;
  298. 咖啡牛奶同时出 = CancelOrOkEnum.否;
  299. 出品顺序 = CancelOrOkEnum.否;
  300. return GetCoffeeRecipe();
  301. }
  302. /// <summary>
  303. /// 热奶沫:仅热奶沫
  304. /// </summary>
  305. /// <param name="_奶沫时间">5-120</param>
  306. public string GetHotMilkFoam(int _奶沫时间)
  307. {
  308. 饮品类型 = DrinkType.热奶沫;
  309. 咖啡量 = 0;
  310. 咖啡温度 = TempEnum.低;
  311. 咖啡浓度 = CoffeeConcentration.清淡;
  312. 热水量 = 0;
  313. 热水温度 = TempEnum.低;
  314. 牛奶时间 = 0;
  315. 奶沫时间 = _奶沫时间;
  316. 预煮 = CancelOrOkEnum.否;
  317. 咖啡增强 = CancelOrOkEnum.否;
  318. 咖啡牛奶同时出 = CancelOrOkEnum.否;
  319. 出品顺序 = CancelOrOkEnum.否;
  320. return GetCoffeeRecipe();
  321. }
  322. #endregion
  323. }
  324. }