From 51af2794f47d5b68496edbc09d0ccb168347f02b Mon Sep 17 00:00:00 2001
From: HuBingJie <3146306518@qq.com>
Date: 星期六, 22 十一月 2025 10:19:05 +0800
Subject: [PATCH] 1

---
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs |  375 +++++++++++++++++++++++++++++------------------------
 1 files changed, 207 insertions(+), 168 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs"
index ca9c58d..53bb9e4 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs"
@@ -45,8 +45,10 @@
         private readonly ICacheService _cacheService; private readonly IRepository<Dt_Router> _routerRepository;
         private readonly IRepository<Dt_StationManger> _stationMangerRepository;
         private readonly IRepository<Dt_Task> _taskRepository;
+        private readonly CommonConveyorLineJob _lineJob;
+        //bool SCres = false;
 
-        public CommonStackerCraneJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, ICacheService cacheService, IRepository<Dt_Router> routerRepository, IRepository<Dt_StationManger> stationMangerRepository, IRepository<Dt_Task> taskRepository)
+        public CommonStackerCraneJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, ICacheService cacheService, IRepository<Dt_Router> routerRepository, IRepository<Dt_StationManger> stationMangerRepository, IRepository<Dt_Task> taskRepository, CommonConveyorLineJob lineJob)
         {
             _taskService = taskService;
             _routerService = routerService;
@@ -54,59 +56,62 @@
             _routerService = routerService;
             _stationMangerRepository = stationMangerRepository;
             _taskRepository = taskRepository;
+            _lineJob = lineJob;
         }
 
         public Task Execute(IJobExecutionContext context)
-        {
-            try
-            {
-                SpeStackerCrane speStackerCrane = (SpeStackerCrane)context.JobDetail.JobDataMap.Get("JobParams");
-                if (speStackerCrane != null)
-                {
-                    GetStackerObject getStackerObject = new GetStackerObject(speStackerCrane);
-                    if (!getStackerObject.IsEventSubscribed)
-                    {
-                        getStackerObject.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;
-                    }
-                    getStackerObject.CheckStackerCraneTaskCompleted();
-                    if (getStackerObject.StackerCraneStatusValue == StackerCraneStatus.Normal)
-                    {
-                        var a = speStackerCrane.GetValue<StackerCraneDBName, Int32>(StackerCraneDBName.CurrentTaskNum);
-                        Dt_Task? task = GetTasks(speStackerCrane);
-                        if (task != null)
-                        {
-                            WriteInfo("鏌ユ壘鍫嗗灈鏈轰换鍔″彿", $"浠诲姟淇℃伅,浠诲姟鍙�:{task.TaskNum}锛屽爢鍨涙満缂栧彿{speStackerCrane.DeviceCode}");
-                            bool sendFlag = true;
-                            if (sendFlag)
-                            {
-                                StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task);
-                                if (stackerCraneTaskCommand != null)
-                                {
-                                    sendFlag = getStackerObject.SendCommand(stackerCraneTaskCommand);
-                                    if (sendFlag)
-                                    {
-                                        speStackerCrane.SetValue(StackerCraneDBName.CommandSend, 1);//鍚姩鍛戒护
-                                        speStackerCrane.LastTaskType = task.TaskType;
-                                        task.Dispatchertime = DateTime.Now;
-                                        task.ExceptionMessage = "";
-                                        _taskService.UpdateTask(task, TaskStatusEnum.SC_Executing);
-                                        //寤舵椂1s
-                                        Thread.Sleep(1000);
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-            catch (Exception)
-            {
+         {
+             try
+             {
 
-                throw;
-            }
-            return Task.CompletedTask;
-        }
+                 SpeStackerCrane speStackerCrane = (SpeStackerCrane)context.JobDetail.JobDataMap.Get("JobParams");
+                 if (speStackerCrane != null)
+                 {
+                     GetStackerObject getStackerObject = new GetStackerObject(speStackerCrane);
+                     if (!getStackerObject.IsEventSubscribed)
+                     {
+                         getStackerObject.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;
+                     }
+                     getStackerObject.CheckStackerCraneTaskCompleted();
+                     if (getStackerObject.StackerCraneStatusValue == StackerCraneStatus.Normal)
+                     {
+                         //var a = speStackerCrane.GetValue<StackerCraneDBName, Int32>(StackerCraneDBName.CurrentTaskNum);
+                         Dt_Task? task = GetTasks(speStackerCrane);
+                         if (task != null)
+                         {
+                             WriteInfo("鏌ユ壘鍫嗗灈鏈轰换鍔″彿", $"浠诲姟淇℃伅,浠诲姟鍙�:{task.TaskNum}锛屽爢鍨涙満缂栧彿{speStackerCrane.DeviceCode}");
+                             bool sendFlag = true;
+                             if (sendFlag)
+                             {
+                                 StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task); //杞崲涓哄爢鍨涙満浠诲姟
+                                 if (stackerCraneTaskCommand != null)
+                                 {
+                                     sendFlag = getStackerObject.SendCommand(stackerCraneTaskCommand); //鍙戦�佸爢鍨涙満浠诲姟
+                                     if (sendFlag)
+                                     {
+                                         speStackerCrane.SetValue(StackerCraneDBName.CommandSend, 1);//鍚姩鍛戒护
+                                         speStackerCrane.LastTaskType = task.TaskType;
+                                         task.Dispatchertime = DateTime.Now;
+                                         task.ExceptionMessage = "";
 
+                                         WebResponseContent webResponseContent = _taskService.UpdateTaskStatusToNext(task.TaskNum);
+                                         //寤舵椂1s
+                                         Thread.Sleep(1000);
+                                     }
+                                 }
+                             }
+                         }
+                     }
+                 }
+             }
+             catch (Exception)
+             {
+
+                 throw;
+             }
+             return Task.CompletedTask;
+         }
+       
 
         private void CommonStackerCrane_StackerCraneTaskCompletedEventHandler(object? sender, StackerCraneTaskCompletedEventArgs e)
         {
@@ -117,75 +122,19 @@
                 {
                     var TaskNum = speStackerCrane.GetValue<StackerCraneDBName, Int32>(StackerCraneDBName.CurrentTaskNum);
                     WriteInfo("鍫嗗灈鏈轰换鍔″畬鎴�", $"浠诲姟鍙�:{TaskNum}");
-                    StackerCraneTaskCompleted(e.TaskNum, speStackerCrane.DeviceCode);
+                   bool res =  _taskService.StackCraneTaskCompleted(e.TaskNum);
+                    if(res == true)
+                    {
+                        speStackerCrane.SetValue(StackerCraneDBName.WorkType, 5);
+
+                    }
                     WriteInfo("鍫嗗灈鏈轰换鍔″畬鎴愬弽棣堜换鍔″彿", $"浠诲姟淇℃伅,浠诲姟鍙�:{e.TaskNum}");
-                    speStackerCrane.SetValue(StackerCraneDBName.WorkType, 5);
+                    return;
+                    //SCres=true;
                 }
             }
         }
-        public WebResponseContent StackerCraneTaskCompleted(int taskNum, string deviceCode)
-        {
-            try
-            {
-                Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == taskNum);
-                if (task != null)
-                {
-                    if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
-                    {
-                        Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StackerCraneStationCode == task.NextAddress && x.StackerCraneCode == deviceCode);
-                        if (stationManger == null)
-                        {
-                            //_taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"杈撻�佺嚎鍑哄簱绔欑偣鏈厤缃�,{task.NextAddress}");
-                            _taskService.UpdateTaskExceptionMessage(taskNum, $"杈撻�佺嚎鍑哄簱绔欑偣鏈厤缃�,{task.NextAddress}");
-                            WriteError(deviceCode, $"杈撻�佺嚎鍑哄簱绔欑偣鏈厤缃�,{task.NextAddress}");
-                            return WebResponseContent.Instance.Error($"杈撻�佺嚎鍑哄簱绔欑偣鏈厤缃�,{task.NextAddress}");
-                        }
-                        Dt_Router router = _routerRepository.QueryFirst(x => x.InOutType == task.TaskType && x.StartPosi == stationManger.StationCode);
-                        if (router == null)
-                        {
-                            router = _routerRepository.QueryFirst(x => x.ChildPosi == deviceCode && x.ChildPosiDeviceCode == stationManger.StationDeviceCode && x.NextPosi == stationManger.StationCode && x.InOutType == task.TaskType && x.IsEnd);
-                            if (router != null && router.IsEnd)
-                            {
-                                _taskService.TaskCompleted(taskNum);
-                            }
-                            else
-                            {
-                                _taskService.UpdateTaskExceptionMessage(taskNum, $"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
-                                WriteError(deviceCode, $"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
-                                return WebResponseContent.Instance.Error($"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
-                            }
-                        }
-                        if (task.TargetAddress.Contains("1030") || task.TargetAddress.Contains("1026")) //鑷姩涓�绾�
-                        {
-                            _taskService.UpdateTask(task, TaskStatusEnum.Line_Execute, deviceCode: stationManger.StationDeviceCode, currentAddress: router.NextPosi);
-                        }
-
-                    }
-                    else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup || task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
-                    {
-                        _taskService.TaskCompleted(taskNum);
-                    }
-                    else
-                    {
-                        WriteError(deviceCode, $"鏈壘鍒拌浠诲姟绫诲瀷鍥炶皟WMS浠诲姟瀹屾垚鎺ュ彛,{task.TaskType}");
-                        _taskService.UpdateTaskExceptionMessage(taskNum, $"鏈壘鍒拌浠诲姟绫诲瀷鍥炶皟WMS浠诲姟瀹屾垚鎺ュ彛,{task.TaskType}");
-                    }
-
-                }
-                else
-                {
-                    WriteError(deviceCode, $"鏈壘鍒颁换鍔′俊鎭�,浠诲姟鍙�:{taskNum}");
-                    return WebResponseContent.Instance.Error($"鏈壘鍒颁换鍔′俊鎭�,浠诲姟鍙�:{taskNum}");
-                }
-
-                return WebResponseContent.Instance.OK();
-            }
-            catch (Exception ex)
-            {
-                WriteError(deviceCode, $"浠诲姟瀹屾垚閿欒", ex);
-                return WebResponseContent.Instance.Error(ex.Message);
-            }
-        }
+       
         /// <summary>
         /// 鑾峰彇浠诲姟
         /// </summary>
@@ -194,52 +143,116 @@
         private Dt_Task? GetTasks(SpeStackerCrane commonStackerCrane)
         {
             Dt_Task? task;
+            // PLC鐘舵�佹鏌ワ細WorkType蹇呴』涓�0锛堢┖闂茬姸鎬侊級
+            var workType = commonStackerCrane.GetValue<StackerCraneDBName, byte>(StackerCraneDBName.StackerCraneWorkStatus);
+            //var workType = commonStackerCrane.GetValue<StackerCraneDBName, byte>(StackerCraneDBName.StackerCraneWorkStatus);
+            if (workType != 0)
+            {
+                return null;
+            }
 
+            //鍫嗗灈鏈烘墽琛屼腑
             if (_taskRepository.QueryFirst(x => x.DeviceCode == commonStackerCrane.DeviceCode && x.TaskState == TaskStatusEnum.SC_Executing.ObjToInt()) != null)
             {
                 return null;
             }
-            if (commonStackerCrane.LastTaskType.GetValueOrDefault().GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+
+            task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);         //鑾峰彇鍏ュ簱浠诲姟
+            List<Dt_Task> YKtasks = _taskService.QueryStackerCraneYKTasks(commonStackerCrane.DeviceCode);
+
+
+            if (task != null)
             {
-                task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
-                if (task == null)
+
+                if (task.Roadway == "SC02") return task;    //濡傛灉鏈変换鍔″垯鐩存帴涓嬪彂缁欏爢鍨涙満
+                if (task.Depth == 1) return task;
+                //2娣变綅杩涜鍒ゆ柇鏄惁瑕佺Щ搴�
+                Dt_Task dt_Task = _taskService.RequestWMSTaskMovelibrary(task);
+                if (dt_Task != null) return dt_Task;
+            }
+            else if (YKtasks.Count > 0) //搴撲綅璋冩嫧
+            {
+                foreach (var item in YKtasks)
                 {
-                    task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode);
+                    if (item.Roadway == "SC01")
+                    {
+                        if (item.Depth == 1) return item;
+                        //璋冨彇WMS鎺ュ彛杩涜鍒ゆ柇鏄惁闇�瑕佽繘琛岀Щ搴�
+                        Dt_Task dt_Task = OutTaskMovelibrary(item);
+                        if (dt_Task != null) return dt_Task;
+
+                        else
+                        {
+                            return item;
+                        }
+                    }
                 }
+
             }
             else
             {
-                task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode);
-                if (task == null)
-                {
-                    task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
-                }
-            }
+                //杩涜鑾峰彇鍫嗗灈鏈哄嚭搴撲换鍔�
+                List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode);
 
-
-            if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
-            {
-                if (OutTaskStationIsOccupied(task) != null || true)
-                {
-                    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)
+                    //if (item.TargetAddress == "2021"||item.TargetAddress == "2020")
+                    //{
+                    //    ////bool IsOccupied = _lineJob.GetPick();
+
+                    //    //if (!IsOccupied)
+                    //    //{
+                    //    //    return null;
+                    //    //}
+                    //}
+                    if (OutTaskStationIsOccupied(item) != null)
                         {
-                            return task;
+                            if (item.Roadway == "SC01")
+                            {
+                                if (item.Depth == 1) return item;
+                                //璋冨彇WMS鎺ュ彛杩涜鍒ゆ柇鏄惁闇�瑕佽繘琛岀Щ搴�
+                                Dt_Task dt_Task = OutTaskMovelibrary(item);
+                                if (dt_Task != null) return dt_Task;
+
+                            }
+                            else
+                            {
+                                return item;
+                            }
                         }
-                    }
-                    task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
+                    
                 }
             }
+
 
             return task;
         }
+
+        private Dt_Task? OutTaskMovelibrary([NotNull] Dt_Task task)
+        {
+            string[] targetCodes = task.SourceAddress.Split("-");
+            if (targetCodes[1] == "001")
+            {
+                targetCodes[1] = "002";
+
+            }
+            else if (targetCodes[1] == "004")
+            {
+                targetCodes[1] = "003";
+            }
+            targetCodes[4] = "01";
+            string SourceAddress = string.Join("-", targetCodes); //缁勮娴呭簱浣嶅湴鍧�
+            Dt_Task? tasks = _taskService.QueryStationIsOccupiedOutTasks(task.Roadway, SourceAddress); //鎵炬祬搴撲綅鏄惁鏈変换鍔�
+            if (tasks != null) return tasks;
+            //鍚憌ms鐢宠鍒ゆ柇娴呭簱浣嶆槸鍚︽湁璐э紝鏄惁闇�瑕佽繘琛岀Щ搴�
+            Dt_Task? taskst = _taskService.RequestWMSTaskMovelibrary(task);
+            if (taskst != null) return taskst;
+            return null;
+        }
+
+
+
+
         /// <summary>
         /// 鍑哄簱浠诲姟鍒ゆ柇鍑哄簱绔欏彴鏄惁琚崰鐢�
         /// </summary>
@@ -247,26 +260,48 @@
         /// <returns>濡傛灉鏈鍗犵敤锛岃繑鍥炰紶鍏ョ殑浠诲姟淇℃伅锛屽惁鍒欙紝杩斿洖null</returns>
         private Dt_Task? OutTaskStationIsOccupied([NotNull] Dt_Task task)
         {
-            Dt_Router? router = _routerService.QueryNextRoutes(task.Roadway, task.NextAddress).FirstOrDefault();
-            if (router != null)
+            try
             {
-                IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == router.ChildPosiDeviceCode);
+                IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "CL01");
                 if (device != null)
                 {
-                    CommonConveyorLine conveyorLine = (CommonConveyorLine)device;
-                    if (conveyorLine.IsOccupied(router.ChildPosi))//鍑哄簱绔欏彴鏈鍗犵敤
+                    OtherDevice conveyorLine = (OtherDevice)device;
+                    DeviceProDTO? deviceProDTO = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == task.NextAddress && x.DeviceProParamName == "IsOccupied");    //鏍规嵁鍫嗗灈鏈哄湴鍧�锛屽湴鍧�鍚嶇О鎵惧崗璁�
+                    if (deviceProDTO != null)
                     {
-                        return task;
+                        bool B_Event_Test = conveyorLine.Communicator.Read<bool>(deviceProDTO.DeviceProAddress);        //鍒ゆ柇杈撻�佺嚎鏄惁鍏佽鏀捐揣淇″彿
+                        if (!B_Event_Test)
+                        {
+                            return task;
+                        }
                     }
-                }
-                else
-                {
-                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒板嚭搴撶珯鍙般�恵router.ChildPosiDeviceCode}銆戝搴旂殑閫氳瀵硅薄锛屾棤娉曞垽鏂嚭搴撶珯鍙版槸鍚﹁鍗犵敤");
+                    //if (task.NextAddress == "2021" || task.NextAddress == "2020")
+                    //{
+                    //    DeviceProDTO? deviceProDTO1 = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == "2008" || x.DeviceChildCode == "2009" || x.DeviceChildCode == "2015" || x.DeviceChildCode == "2016" && x.DeviceProParamName == "IsOccupied");    //鏍规嵁鍫嗗灈鏈哄湴鍧�锛屽湴鍧�鍚嶇О鎵惧崗璁�
+                    //    if (deviceProDTO != null)
+                    //    {
+                    //        bool IsOccupied2008 = conveyorLine.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2008");
+                    //        bool IsOccupied2009 = conveyorLine.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2009");
+                    //        bool IsOccupied2015 = conveyorLine.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2015");
+                    //        bool IsOccupied2016 = conveyorLine.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2016");
+
+                    //        //鍒ゆ柇鏄惁鎴愮珛
+                    //        if (IsOccupied2008 && IsOccupied2009 && IsOccupied2015 && IsOccupied2016)
+                    //        {
+                    //            return null;
+                    //        }
+                    //        else
+                    //        {
+                    //            return task;
+                    //        }
+                    //    }
+                    //}
                 }
             }
-            else
+            catch (Exception ex)
             {
-                _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鏍¢獙绔欏彴");
+
+                throw;
             }
             return null;
         }
@@ -285,10 +320,13 @@
             stackerCraneTaskCommand.TaskNum = task.TaskNum;
             stackerCraneTaskCommand.WorkType = 1;
             stackerCraneTaskCommand.TrayType = 1;
-            if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//鍒ゆ柇鏄惁鏄叆搴撲换鍔�
+            if (task.TaskType == (int)TaskInboundTypeEnum.Inbound)//鍒ゆ柇鏄惁鏄叆搴撲换鍔�
             {
 
-                string[] startCodes = task.SourceAddress.Split("-");
+                Dt_StationManger dt_StationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == task.SourceAddress);
+
+
+                string[] startCodes = dt_StationManger.StackerCraneStationCode.Split("-");
                 if (startCodes.Length == 3)
                 {
                     stackerCraneTaskCommand.StartRow = Convert.ToInt16(startCodes[0]);
@@ -312,21 +350,22 @@
                 }
 
             }
-            else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+            else if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
             {
+                Dt_StationManger dt_StationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == task.TargetAddress);
 
-                string[] targetCodes = task.TargetAddress.Split("-");
+                string[] targetCodes = dt_StationManger.StackerCraneStationCode.Split("-");
 
                 stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]);
                 stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]);
                 stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]);
 
                 string[] sourceCodes = task.SourceAddress.Split("-");
-                if (sourceCodes.Length == 3)
+                if (sourceCodes.Length == 5)
                 {
-                    stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[0]);
-                    stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[1]);
-                    stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[2]);
+                    stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[1]);
+                    stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[2]);
+                    stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[3]);
                 }
                 else
                 {
@@ -336,14 +375,14 @@
                 }
 
             }
-            else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
+            else if (task.TaskType == (int)TaskRelocationTypeEnum.Relocation)   //鍒ゆ柇绉诲簱浠诲姟
             {
                 string[] targetCodes = task.NextAddress.Split("-");
-                if (targetCodes.Length == 3)
+                if (targetCodes.Length == 5)
                 {
-                    stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]);
-                    stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]);
-                    stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]);
+                    stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[1]);
+                    stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[2]);
+                    stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[3]);
                 }
                 else
                 {
@@ -352,11 +391,11 @@
                     return null;
                 }
                 string[] sourceCodes = task.CurrentAddress.Split("-");
-                if (sourceCodes.Length == 3)
+                if (sourceCodes.Length == 5)
                 {
-                    stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[0]);
-                    stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[1]);
-                    stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[2]);
+                    stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[1]);
+                    stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[2]);
+                    stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[3]);
                 }
                 else
                 {

--
Gitblit v1.9.3