ProcessTrafficLight.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using Pms.DataLibrary.Order;
  2. using ProjectManagementSystem.Common.Config;
  3. using ProjectManagementSystem.Common.Core;
  4. using ProjectManagementSystem.Common.Logger;
  5. using ProjectManagementSystem.Common.WebApi;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace ProjectManagementSystem.TaskEvent
  12. {
  13. public class ProcessTrafficLight : ICustomProcess
  14. {
  15. private bool firstStart = true;
  16. public void CustomProcess(List<TaskData> taskDataList)
  17. {
  18. var agvDataList = PmsApi.GetAllCarrier();
  19. if (agvDataList == null) return;
  20. var configList = ExcelConfig.Instance.AreaConfigList;
  21. for (int i = 0; i < configList.Count; i++)
  22. {
  23. var data = configList[i];
  24. if (data.TrafficLightId <= 0) continue;
  25. var agvData = agvDataList.FirstOrDefault(d => d.Online &&
  26. (d.GraphEdge > 0 && data.GraphEdges.Length > 0 && data.GraphEdges.Contains(d.GraphEdge)) ||
  27. (d.GraphVertex > 0 && data.GraphVertexs.Length > 0 && data.GraphVertexs.Contains(d.GraphVertex)));
  28. var result = agvData != null;
  29. if (data.AgvInArea != result || firstStart || data.ReSetTrafficLight)
  30. {
  31. data.SetTrafficLightTime = DateTime.Now;
  32. data.AgvInArea = result;
  33. DeviceControl.Instance.SetAlarmLight(data.TrafficLightId, data.AgvInArea ? 1 : 0);
  34. //CLog.Instance.TaskLog.WriteInfo($"交通灯{data.TrafficLightId} {data.AgvInArea}");
  35. }
  36. }
  37. firstStart = false;
  38. }
  39. }
  40. }