From 1f338f3f149735523101d55f9c782836f30c1ff1 Mon Sep 17 00:00:00 2001
From: 肖洋 <cathay_xy@163.com>
Date: 星期一, 02 十二月 2024 14:26:14 +0800
Subject: [PATCH] 12

---
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs |  276 ++++++++++++++++++++-----------------------------------
 1 files changed, 101 insertions(+), 175 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 99582b3..2d8259a 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -1,4 +1,5 @@
-锘縰sing HslCommunication;
+锘縰sing Autofac.Core;
+using HslCommunication;
 using Newtonsoft.Json;
 using Quartz;
 using System.Diagnostics.CodeAnalysis;
@@ -48,9 +49,7 @@
                 CommonStackerCrane commonStackerCrane = (CommonStackerCrane)context.JobDetail.JobDataMap.Get("JobParams");
                 if (commonStackerCrane != null)
                 {
-                    //EqptRun(commonStackerCrane);
                     //EqptAlive(commonStackerCrane);
-                    //EqptStatus(commonStackerCrane);
                     //Console.Out.WriteLine(commonStackerCrane.DeviceName);
                     if (!commonStackerCrane.IsEventSubscribed)
                     {
@@ -143,19 +142,19 @@
                 {
                     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)
             {
@@ -173,25 +172,63 @@
         private Dt_Task? OutTaskStationIsOccupied([NotNull] Dt_Task task)
         {
             Dt_Router? router = _routerService.QueryNextRoutes(task.Roadway, task.NextAddress).FirstOrDefault();
-            if (router != null)
+            if (task.Roadway.Contains("GW") || task.Roadway.Contains("CW"))
             {
-                IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == router.ChildPosiDeviceCode);
-                if (device != null)
+                if (router != null)
                 {
-                    CommonConveyorLine conveyorLine = (CommonConveyorLine)device;
-                    //if (conveyorLine.IsOccupied(router.ChildPosi))//鍑哄簱绔欏彴鏈鍗犵敤
-                    //{
-                    return task;
-                    //}
+
+                    IDevice? device = null;
+                    if (task.Roadway.Contains("CW"))
+                    {
+                        device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == router.ChildPosiDeviceCode);
+                    }
+
+                    else
+                    {
+                        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}銆戝搴旂殑閫氳瀵硅薄锛屾棤娉曞垽鏂嚭搴撶珯鍙版槸鍚﹁鍗犵敤");
+                    }
                 }
                 else
                 {
-                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒板嚭搴撶珯鍙般�恵router.ChildPosiDeviceCode}銆戝搴旂殑閫氳瀵硅薄锛屾棤娉曞垽鏂嚭搴撶珯鍙版槸鍚﹁鍗犵敤");
+                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鏍¢獙绔欏彴");
                 }
             }
             else
             {
-                _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鏍¢獙绔欏彴");
+                //Dt_Router? router = _routerService.QueryNextRoutes(task.Roadway, task.NextAddress).FirstOrDefault();
+                if (router != null)
+                {
+                    IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == router.ChildPosiDeviceCode);
+                    if (device != null)
+                    {
+                        CommonConveyorLine conveyorLine = (CommonConveyorLine)device;
+                        if (conveyorLine.IsOccupied(router.ChildPosi))//鍑哄簱绔欏彴鏈鍗犵敤
+                        {
+                            return task;
+                        }
+                    }
+                    else
+                    {
+                        _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒板嚭搴撶珯鍙般�恵router.ChildPosiDeviceCode}銆戝搴旂殑閫氳瀵硅薄锛屾棤娉曞垽鏂嚭搴撶珯鍙版槸鍚﹁鍗犵敤");
+                    }
+                }
+                else
+                {
+                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鏍¢獙绔欏彴");
+                }
             }
             return null;
         }
@@ -223,7 +260,7 @@
                     string[] targetCodes = task.NextAddress.Split("-");
                     if (targetCodes.Length == 3)
                     {
-                        stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]);
+                        stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]) % 2 != 0 ? (short)1 : (short)2;
                         stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]);
                         stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]);
                     }
@@ -242,31 +279,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]) % 2 != 0 ? (short)1 : (short)2;
+                    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]) % 2 != 0 ? (short)1 : (short)2;
+                            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)
@@ -274,7 +325,7 @@
                 string[] targetCodes = task.NextAddress.Split("-");
                 if (targetCodes.Length == 3)
                 {
-                    stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]);
+                    stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]) % 2 != 0 ? (short)1 : (short)2;
                     stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]);
                     stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]);
                 }
@@ -287,7 +338,7 @@
                 string[] sourceCodes = task.CurrentAddress.Split("-");
                 if (sourceCodes.Length == 3)
                 {
-                    stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[0]);
+                    stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[0]) % 2 != 0 ? (short)1 : (short)2;
                     stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[1]);
                     stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[2]);
                 }
@@ -301,54 +352,6 @@
             return stackerCraneTaskCommand;
         }
 
-        /// <summary>
-        /// 璁惧涓嶮OM绯荤粺瀵规帴锛岃澶囦笂绾�
-        /// </summary>
-        /// <param name="commonStackerCrane"></param>
-        public async void EqptRun(CommonStackerCrane commonStackerCrane)
-        {
-            if (!commonStackerCrane.StackerOnline)
-            {
-                RequestEqptRunDto request = new RequestEqptRunDto()
-                {
-                    EmployeeNo = "T00001",
-                    EquipmentCode = commonStackerCrane.DeviceCode,
-                    RequestTime = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"),
-                    SessionId = Guid.NewGuid().ToString(),
-                    Software = commonStackerCrane.DeviceName,
-                    Password = "12345",
-                    EquipmentModel = "1"
-                };
-                var respone = await HttpHelper.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/EqptRun", request.ToJsonString());
-                if (respone != null)
-                {
-                    var result = JsonConvert.DeserializeObject<ResponseEqptRunDto>(respone);
-                    if (result != null && result.Success)
-                    {
-                        var process = _processRepository.QueryData(x => x.EquipmentName == commonStackerCrane.DeviceCode).FirstOrDefault();
-                        if (process == null)
-                        {
-                            ResponeRunDto runDto = JsonConvert.DeserializeObject<ResponeRunDto>(respone);
-                            process = new Dt_EquipmentProcess()
-                            {
-                                EquipmentName = commonStackerCrane.DeviceCode,
-                                EquipmentType = new string(commonStackerCrane.DeviceName.TakeWhile(c => !char.IsDigit(c)).ToArray()),
-                                WipOrderNo = runDto.WipOrderNo,
-                                ProductDesc = runDto.ProductDesc,
-                                ProcessValue = JsonConvert.SerializeObject(result)
-                            };
-                            var isResult = await _processRepository.AddDataAsync(process) > 0;
-                        }
-                        else
-                        {
-                            process.ProcessValue = JsonConvert.SerializeObject(result);
-                            var isResult = await _processRepository.UpdateDataAsync(process);
-                        }
-                        commonStackerCrane.StackerOnline = true;
-                    }
-                }
-            }
-        }
 
         /// <summary>
         /// 璁惧蹇冭烦
@@ -381,82 +384,5 @@
             }
         }
 
-        /// <summary>
-        /// 璁惧鐘舵��
-        /// </summary>
-        /// <param name="commonStackerCrane"></param>
-        public async void EqptStatus(CommonStackerCrane commonStackerCrane)
-        {
-            string code = string.Empty;
-            RequestAlertDto requestAlert = new RequestAlertDto()
-            {
-                EmployeeNo = "T00001",
-                EquipmentCode = commonStackerCrane.DeviceCode,
-                RequestTime = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"),
-                SessionId = Guid.NewGuid().ToString(),
-                Software = commonStackerCrane.DeviceName,
-                AlertInfo = new List<AlertInfoDto>()
-            };
-            switch (commonStackerCrane.Status)
-            {
-                case DeviceStatus.Idle:
-                    code = "Waiting";
-                    break;
-
-                case DeviceStatus.Working:
-                    code = "Running";
-                    break;
-
-                case DeviceStatus.Fault:
-                    code = "Alerting";
-                    var alert = new AlertInfoDto()
-                    {
-                        AlertCode = "1001",
-                        AlertDescription = commonStackerCrane.StackerCraneStatusDes,
-                        AlertReset = "1"
-                    };
-                    requestAlert.AlertInfo.Add(alert);
-
-                    await HttpHelper.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/EqptAlive", requestAlert.ToJsonString());
-
-                    break;
-
-                case DeviceStatus.Unkonw:
-                    code = "Down";
-                    break;
-
-                case DeviceStatus.Offline:
-                    code = "Maintenance";
-                    break;
-
-                default:
-                    break;
-            }
-            if (code != "Alerting")
-            {
-                requestAlert.AlertInfo = new List<AlertInfoDto>();
-                var alert = new AlertInfoDto()
-                {
-                    AlertCode = "1001",
-                    AlertDescription = commonStackerCrane.StackerCraneStatusDes,
-                    AlertReset = "0"
-                };
-                await HttpHelper.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/EqptAlive", requestAlert.ToJsonString());
-            }
-            RequestEqptStatusDto requestEqptStatus = new RequestEqptStatusDto()
-            {
-                EmployeeNo = "T00001",
-                EquipmentCode = commonStackerCrane.DeviceCode,
-                RequestTime = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"),
-                SessionId = Guid.NewGuid().ToString(),
-                Software = commonStackerCrane.DeviceName,
-                ChangeTime = DateTime.Now.ToString(),
-                Description = commonStackerCrane.StackerCraneStatusDes,
-                LocationID = "NA",
-                ReasonCode = "123",
-                StatusCode = code
-            };
-            var respone = await HttpHelper.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/EqptStatus", requestEqptStatus.ToJsonString());
-        }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3