From 663d9d2e658ab99a0c3598becd23b00b34b3e3d9 Mon Sep 17 00:00:00 2001
From: 肖洋 <cathay_xy@163.com>
Date: 星期五, 29 十一月 2024 13:55:22 +0800
Subject: [PATCH] 高常温逻辑

---
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs |  159 ++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 114 insertions(+), 45 deletions(-)

diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
index 6d107ed..262eaa4 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -1,15 +1,14 @@
-锘縰sing Microsoft.AspNetCore.Components.Routing;
+锘縰sing HslCommunication;
+using Newtonsoft.Json;
 using Quartz;
-using System;
-using System.Collections.Generic;
 using System.Diagnostics.CodeAnalysis;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
 using WIDESEAWCS_Common.TaskEnum;
-using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_DTO.MOM;
+using WIDESEAWCS_IProcessRepository;
 using WIDESEAWCS_ITaskInfoRepository;
 using WIDESEAWCS_ITaskInfoService;
+using WIDESEAWCS_Model;
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob;
 using WIDESEAWCS_QuartzJob.DeviceBase;
@@ -27,20 +26,21 @@
         private readonly ITaskExecuteDetailService _taskExecuteDetailService;
         private readonly ITaskRepository _taskRepository;
         private readonly IRouterService _routerService;
+        private readonly IProcessRepository _processRepository;
 
-        public CommonStackerCraneJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService)
+        public CommonStackerCraneJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IProcessRepository processRepository)
         {
             _taskService = taskService;
             _taskExecuteDetailService = taskExecuteDetailService;
             _taskRepository = taskRepository;
             _routerService = routerService;
+            _processRepository = processRepository;
         }
 
         public Task Execute(IJobExecutionContext context)
         {
             try
             {
-
                 // speStackerCrane.GetStackerCraneStatus<StackerCraneAutoStatus>();
                 // speStackerCrane.GetStackerCraneStatus<StackerCraneWorkStatus>();
                 // speStackerCrane.GetStackerCraneStatus<StackerCraneStatus>();
@@ -48,7 +48,8 @@
                 CommonStackerCrane commonStackerCrane = (CommonStackerCrane)context.JobDetail.JobDataMap.Get("JobParams");
                 if (commonStackerCrane != null)
                 {
-                    Console.Out.WriteLine(commonStackerCrane.DeviceName);
+                    //EqptAlive(commonStackerCrane);
+                    //Console.Out.WriteLine(commonStackerCrane.DeviceName);
                     if (!commonStackerCrane.IsEventSubscribed)
                     {
                         commonStackerCrane.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;//璁㈤槄浠诲姟瀹屾垚浜嬩欢
@@ -140,19 +141,23 @@
                 {
                     return task;
                 }
-                else
-                {
-                    List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress).Select(x => x.ChildPosi).ToList();
-                    List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStaionCodes);
-                    foreach (var item in tasks)
-                    {
-                        if (OutTaskStationIsOccupied(task) != null)
-                        {
-                            return task;
-                        }
-                    }
-                    task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
-                }
+                //else
+                //{
+                //    List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress).Select(x => x.ChildPosi).ToList();
+                //    List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStaionCodes);
+                //    foreach (var item in tasks)
+                //    {
+                //        if (OutTaskStationIsOccupied(task) != null)
+                //        {
+                //            return task;
+                //        }
+                //    }
+                //    task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
+                //}
+            }
+            else if (task == null)
+            {
+                task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
             }
 
             return task;
@@ -165,6 +170,22 @@
         /// <returns>濡傛灉鏈鍗犵敤锛岃繑鍥炰紶鍏ョ殑浠诲姟淇℃伅锛屽惁鍒欙紝杩斿洖null</returns>
         private Dt_Task? OutTaskStationIsOccupied([NotNull] Dt_Task task)
         {
+            if (task.Roadway.Contains("GW"))
+            {
+                IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "1015");
+                if (device != null)
+                {
+                    CommonConveyorLine_GW conveyorLine = (CommonConveyorLine_GW)device;
+                    if (conveyorLine.IsOccupied(task.TargetAddress))//鍑哄簱绔欏彴鏈鍗犵敤
+                    {
+                        return task;
+                    }
+                }
+                else
+                {
+                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒板嚭搴撶珯鍙般�恵task.TargetAddress}銆戝搴旂殑閫氳瀵硅薄锛屾棤娉曞垽鏂嚭搴撶珯鍙版槸鍚﹁鍗犵敤");
+                }
+            }
             Dt_Router? router = _routerService.QueryNextRoutes(task.Roadway, task.NextAddress).FirstOrDefault();
             if (router != null)
             {
@@ -203,6 +224,7 @@
             stackerCraneTaskCommand.TaskNum = task.TaskNum;
             stackerCraneTaskCommand.WorkType = 1;
             stackerCraneTaskCommand.TrayType = 0;
+            stackerCraneTaskCommand.StartCommand = 1;
             if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//鍒ゆ柇鏄惁鏄叆搴撲换鍔�
             {
                 List<Dt_Router> routers = _routerService.QueryNextRoutes(task.CurrentAddress, task.Roadway);
@@ -234,31 +256,45 @@
             }
             else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
             {
-                List<Dt_Router> routers = _routerService.QueryNextRoutes(task.Roadway, task.TargetAddress);
-                if (routers.Count > 0)
+                if (task.Roadway.Contains("GW"))
                 {
-                    stackerCraneTaskCommand.EndRow = Convert.ToInt16(routers.FirstOrDefault().SrmRow);
-                    stackerCraneTaskCommand.EndColumn = Convert.ToInt16(routers.FirstOrDefault().SrmColumn);
-                    stackerCraneTaskCommand.EndLayer = Convert.ToInt16(routers.FirstOrDefault().SrmLayer);
-
-                    string[] sourceCodes = task.CurrentAddress.Split("-");
-                    if (sourceCodes.Length == 3)
-                    {
-                        stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[0]);
-                        stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[1]);
-                        stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[2]);
-                    }
-                    else
-                    {
-                        //鏁版嵁閰嶇疆閿欒
-                        _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍑哄簱浠诲姟璧风偣閿欒锛岃捣鐐癸細銆恵task.CurrentAddress}銆�");
-                        return null;
-                    }
+                    string[] endCodes = task.NextAddress.Split("-");
+                    stackerCraneTaskCommand.EndRow = Convert.ToInt16(endCodes[0]);
+                    stackerCraneTaskCommand.EndColumn = Convert.ToInt16(endCodes[1]);
+                    stackerCraneTaskCommand.EndLayer = Convert.ToInt16(endCodes[2]);
+                    string[] sourceCodes = task.SourceAddress.Split("-");
+                    stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[0]);
+                    stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[1]);
+                    stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[2]);
                 }
                 else
                 {
-                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鑾峰彇瀵瑰簲鐨勫爢鍨涙満鏀捐揣绔欏彴淇℃伅");
-                    return null;
+                    List<Dt_Router> routers = _routerService.QueryNextRoutes(task.Roadway, task.TargetAddress);
+                    if (routers.Count > 0)
+                    {
+                        stackerCraneTaskCommand.EndRow = Convert.ToInt16(routers.FirstOrDefault().SrmRow);
+                        stackerCraneTaskCommand.EndColumn = Convert.ToInt16(routers.FirstOrDefault().SrmColumn);
+                        stackerCraneTaskCommand.EndLayer = Convert.ToInt16(routers.FirstOrDefault().SrmLayer);
+
+                        string[] sourceCodes = task.CurrentAddress.Split("-");
+                        if (sourceCodes.Length == 3)
+                        {
+                            stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[0]);
+                            stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[1]);
+                            stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[2]);
+                        }
+                        else
+                        {
+                            //鏁版嵁閰嶇疆閿欒
+                            _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍑哄簱浠诲姟璧风偣閿欒锛岃捣鐐癸細銆恵task.CurrentAddress}銆�");
+                            return null;
+                        }
+                    }
+                    else
+                    {
+                        _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鑾峰彇瀵瑰簲鐨勫爢鍨涙満鏀捐揣绔欏彴淇℃伅");
+                        return null;
+                    }
                 }
             }
             else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
@@ -292,5 +328,38 @@
             }
             return stackerCraneTaskCommand;
         }
+
+
+        /// <summary>
+        /// 璁惧蹇冭烦
+        /// </summary>
+        /// <param name="commonStackerCrane"></param>
+        public async void EqptAlive(CommonStackerCrane commonStackerCrane)
+        {
+            if (commonStackerCrane.StackerOnline)
+            {
+                BasicDto dto = new BasicDto
+                {
+                    EmployeeNo = "T00001",
+                    EquipmentCode = commonStackerCrane.DeviceCode,
+                    RequestTime = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"),
+                    SessionId = Guid.NewGuid().ToString(),
+                    Software = commonStackerCrane.DeviceName,
+                };
+                var respone = await HttpHelper.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/EqptAlive", dto.ToJsonString());
+                if (respone != null)
+                {
+                    var result = JsonConvert.DeserializeObject<ResponseEqptAliveDto>(respone);
+                    if (result != null && result.Success)
+                    {
+                        if (result.KeyFlag == "99")
+                            commonStackerCrane.StackerOnline = true;
+                        else if (result.KeyFlag == "98")
+                            commonStackerCrane.StackerOnline = false;
+                    }
+                }
+            }
+        }
+
     }
-}
+}
\ No newline at end of file

--
Gitblit v1.9.3