CTaskEvent.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using DbCommon.BusinessCore.BaseCore;
  2. using DbCommon.Enties.DbModels;
  3. using DbCommon.Extenions;
  4. using DbCommon.Function;
  5. using Pms.DataLibrary.Models;
  6. using Pms.DataLibrary.Order;
  7. using ProjectManagementSystem.Common.Log;
  8. using ProjectManagementSystem.WebApi;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. namespace ProjectManagementSystem.TaskEvent
  15. {
  16. public class CTaskEvent : CTaskEventBase
  17. {
  18. public override void TaskStateChanged(TaskData currentTaskInfo, TaskData lastTaskInfo)
  19. {
  20. }
  21. public override void TaskFinished(TaskData taskInfo)
  22. {
  23. CLog.Instance.GetLog("Task").WriteInfo($"{taskInfo.TaskID} 任务完成");
  24. }
  25. public override void TaskCanceled(TaskData taskInfo)
  26. {
  27. CLog.Instance.GetLog("Task").WriteInfo($"{taskInfo.TaskID} 任务取消");
  28. RecoverLocationStatus(taskInfo);
  29. }
  30. public override void TaskExceptioned(TaskData taskInfo)
  31. {
  32. CLog.Instance.GetLog("Task").WriteInfo($"{taskInfo.TaskID} 任务异常");
  33. }
  34. private void RecoverLocationStatus(TaskData taskInfo)
  35. {
  36. string[] posArray = taskInfo.AllWarehouse.ToPosArray().Distinct().ToArray();
  37. for (int i = 0; i < posArray.Length; i++)
  38. {
  39. string location = posArray[i];
  40. var locationData = m_locationManager.QueryData(location);
  41. if (locationData.Status == LocationStatus.Locked)
  42. {
  43. var statusBackup = Tools.ParseStatus(locationData.StatusBackup);
  44. bool result = m_locationManager.UpdateStatus(location, statusBackup);
  45. CLog.Instance.GetLog("Task").WriteInfo($"{taskInfo.TaskID} 库位恢复状态{result.ToChineseString()}:{location} {statusBackup}");
  46. }
  47. }
  48. }
  49. }
  50. }