CellItemRecipeTimeManager.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using Aitex.Common.Util;
  2. using Aitex.Core.Common;
  3. using Aitex.Core.RT.Log;
  4. using Aitex.Core.Util;
  5. using MECF.Framework.Common.Equipment;
  6. using MECF.Framework.Common.Utilities;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. namespace MECF.Framework.Common.ToolLayout
  13. {
  14. public class CellItemRecipeTimeManager : Singleton<CellItemRecipeTimeManager>
  15. {
  16. #region 内部变量
  17. /// <summary>
  18. /// Recipe时间字典(key-recipe ppid,value-时间总和)
  19. /// </summary>
  20. private Dictionary<string, int> _recipeTimeDictionary = new Dictionary<string, int>();
  21. #endregion
  22. /// <summary>
  23. /// 初始化
  24. /// </summary>
  25. public void Initialize()
  26. {
  27. _recipeTimeDictionary = BinarySerializer<Dictionary<string,int>>.FromStream("RecipeTimeManager");
  28. }
  29. /// <summary>
  30. /// 是否包含
  31. /// </summary>
  32. /// <param name="ppid"></param>
  33. /// <returns></returns>
  34. public bool ContainRecipe(string ppid)
  35. {
  36. return _recipeTimeDictionary.ContainsKey(ppid);
  37. }
  38. /// <summary>
  39. /// 获取recipe时间总和
  40. /// </summary>
  41. /// <param name="ppid"></param>
  42. /// <returns></returns>
  43. public int GetRecipeTotalTime(string ppid)
  44. {
  45. return _recipeTimeDictionary.ContainsKey(ppid) ? _recipeTimeDictionary[ppid] : int.MaxValue;
  46. }
  47. /// <summary>
  48. /// 更新Recipe时长
  49. /// </summary>
  50. /// <param name="ppid"></param>
  51. /// <param name="time"></param>
  52. public void UpdateRecipeTime(string ppid,int time)
  53. {
  54. _recipeTimeDictionary[ppid] = time;
  55. Serialize();
  56. }
  57. /// <summary>
  58. /// 序列化
  59. /// </summary>
  60. private async void Serialize()
  61. {
  62. await Task.Run(() =>
  63. {
  64. try
  65. {
  66. BinarySerializer<Dictionary<string,int>>.ToStream(_recipeTimeDictionary, "RecipeTimeManager");
  67. }
  68. catch (Exception ex)
  69. {
  70. LOG.WriteExeption(ex);
  71. }
  72. });
  73. }
  74. }
  75. }