From e5642daf4b6820d0706967e486b16e8d33a46d6d Mon Sep 17 00:00:00 2001
From: 刘磊 <1161824510@qq.com>
Date: 星期四, 26 十二月 2024 14:37:52 +0800
Subject: [PATCH] 1

---
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs |  182 +++++++++++++++++++++++++++++---------------
 1 files changed, 119 insertions(+), 63 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 748c23a..abafd03 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -1,21 +1,17 @@
-锘縰sing Autofac.Core;
-using HslCommunication;
-using Mapster;
+锘縰sing Mapster;
 using Newtonsoft.Json;
 using Quartz;
 using System.Diagnostics.CodeAnalysis;
-using System.Threading.Tasks;
+using System.Text;
 using WIDESEAWCS_BasicInfoRepository;
 using WIDESEAWCS_Common.TaskEnum;
 using WIDESEAWCS_Core.Caches;
 using WIDESEAWCS_Core.Helper;
 using WIDESEAWCS_Core.HttpContextUser;
-using WIDESEAWCS_DTO.MOM;
 using WIDESEAWCS_IProcessRepository;
 using WIDESEAWCS_ITaskInfo_HtyRepository;
 using WIDESEAWCS_ITaskInfoRepository;
 using WIDESEAWCS_ITaskInfoService;
-using WIDESEAWCS_Model;
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob;
 using WIDESEAWCS_QuartzJob.DeviceBase;
@@ -84,11 +80,31 @@
                                 StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task);
                                 if (stackerCraneTaskCommand != null)
                                 {
-                                    bool sendFlag = commonStackerCrane.SendCommand(stackerCraneTaskCommand);
-                                    if (sendFlag)
+                                    var taskNum = commonStackerCrane.GetValue<StackerCraneDBName, int>(StackerCraneDBName.TaskNum);
+                                    var taskBarCode = commonStackerCrane.GetValue<StackerCraneDBName, string>(StackerCraneDBName.Barcode);
+                                    ConsoleHelper.WriteColorLine($"銆恵commonStackerCrane.DeviceName}銆戝爢鍨涙満浠诲姟鍙凤細銆恵taskNum}銆�,鍫嗗灈鏈烘墭鐩樺彿锛氥�恵taskBarCode}銆�,浠诲姟浠诲姟鍙凤細銆恵task.TaskNum}銆戜换鍔℃墭鐩樺彿锛氥�恵task.PalletCode}銆�", ConsoleColor.DarkBlue);
+                                    if (taskNum == 0 && taskBarCode != task.PalletCode)
                                     {
-                                        commonStackerCrane.LastTaskType = task.TaskType;
-                                        _taskService.UpdateTaskStatusToNext(task.TaskNum);
+                                        ConsoleHelper.WriteColorLine($"銆恵commonStackerCrane.DeviceName}銆戜换鍔″彿涓恒�恵0}銆�,鎵樼洏鍙蜂笉涓�鑷村彲浠ヤ笅鍙戜换鍔�", ConsoleColor.DarkBlue);
+                                        bool sendFlag = commonStackerCrane.SendCommand(stackerCraneTaskCommand);
+                                        if (sendFlag)
+                                        {
+                                            StringBuilder builder = new StringBuilder();
+                                            builder.AppendLine();
+                                            builder.AppendLine($"銆恵commonStackerCrane.DeviceName}銆戝爢鍨涙満鐘舵�侊細銆恵commonStackerCrane.StackerCraneStatusDes}銆�,鏃堕棿锛氥�恵DateTime.Now}銆�");
+                                            builder.AppendLine($"銆恵commonStackerCrane.DeviceName}銆戞墜鑷姩鐘舵�侊細銆恵commonStackerCrane.StackerCraneAutoStatusDes}銆�,鏃堕棿锛氥�恵DateTime.Now}銆�");
+                                            builder.AppendLine($"銆恵commonStackerCrane.DeviceName}銆戜綔涓氱姸鎬侊細銆恵commonStackerCrane.StackerCraneWorkStatusDes}銆�,鏃堕棿锛氥�恵DateTime.Now}銆�");
+                                            builder.AppendLine($"銆恵commonStackerCrane.DeviceName}銆戜笅鍙戜换鍔℃垚鍔�,銆恵JsonConvert.SerializeObject(stackerCraneTaskCommand, Formatting.Indented)}銆�");
+                                            builder.AppendLine($"鏃堕棿锛氥�恵DateTime.Now}銆�");
+                                            builder.AppendLine();
+                                            ConsoleHelper.WriteColorLine(builder, ConsoleColor.Blue);
+                                            commonStackerCrane.LastTaskType = task.TaskType;
+                                            _taskService.UpdateTaskStatusToNext(task.TaskNum);
+                                        }
+                                    }
+                                    else
+                                    {
+                                        ConsoleHelper.WriteColorLine($"銆恵commonStackerCrane.DeviceName}銆戜换鍔″彿涓嶄负銆恵0}銆�,鎴栬�呮墭鐩樺彿涓�鑷翠笉鍙互涓嬪彂浠诲姟", ConsoleColor.DarkBlue);
                                     }
                                 }
                             }
@@ -98,28 +114,25 @@
                     #region 璋冪敤浜嬩欢鎬荤嚎閫氱煡鍓嶇
 
                     var tokenInfos = _cacheService.Get<List<UserInfo>>("Cache_UserToken");
-                    if (tokenInfos == null || !tokenInfos.Any())
+                    if (tokenInfos != null && tokenInfos.Any())
                     {
-                        //throw new Exception(commonStackerCrane.DeviceName + "缂撳瓨涓湭鎵惧埌Token缂撳瓨");
-                        return Task.CompletedTask;
-                    }
-                    var userTokenIds = tokenInfos?.Select(x => x.Token_ID).ToList();
-                    var userIds = tokenInfos?.Select(x => x.UserId).ToList();
+                        var userTokenIds = tokenInfos?.Select(x => x.Token_ID).ToList();
+                        var userIds = tokenInfos?.Select(x => x.UserId).ToList();
 
-                    object obj = new
-                    {
-                        commonStackerCrane.StackerCraneStatusDes,
-                        commonStackerCrane.StackerCraneAutoStatusDes,
-                        commonStackerCrane.StackerCraneWorkStatusDes,
-                        commonStackerCrane.DeviceCode,
-                        commonStackerCrane.DeviceName,
-                        commonStackerCrane.CurrentTaskNum,
-                        commonStackerCrane.LastTaskNum,
-                    };
-                    _noticeService.StackerData(userIds?.FirstOrDefault(), userTokenIds, new { commonStackerCrane.DeviceName, data = obj });
+                        object obj = new
+                        {
+                            commonStackerCrane.StackerCraneStatusDes,
+                            commonStackerCrane.StackerCraneAutoStatusDes,
+                            commonStackerCrane.StackerCraneWorkStatusDes,
+                            commonStackerCrane.DeviceCode,
+                            commonStackerCrane.DeviceName,
+                            commonStackerCrane.CurrentTaskNum,
+                            commonStackerCrane.LastTaskNum,
+                        };
+                        _noticeService.StackerData(userIds?.FirstOrDefault(), userTokenIds, new { commonStackerCrane.DeviceName, data = obj });
+                    }
 
                     #endregion 璋冪敤浜嬩欢鎬荤嚎閫氱煡鍓嶇
-
                 }
             }
             catch (Exception ex)
@@ -142,8 +155,7 @@
             CommonStackerCrane? commonStackerCrane = sender as CommonStackerCrane;
             if (commonStackerCrane != null)
             {
-                //var x = commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType);
-                //if (commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5)
+                if (commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5)
                 {
                     //Console.Out.WriteLine("TaskCompleted" + e.TaskNum);
                     ConsoleHelper.WriteColorLine($"銆恵commonStackerCrane.DeviceName}銆戜换鍔″畬鎴�,浠诲姟鍙凤細銆恵e.TaskNum}銆�", ConsoleColor.Blue);
@@ -291,7 +303,7 @@
                             _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒板嚭搴撶珯鍙般�恵task.TargetAddress}銆戝搴旂殑閫氳瀵硅薄锛屾棤娉曞垽鏂嚭搴撶珯鍙版槸鍚﹁鍗犵敤");
                         }
                     }
-                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.TargetAddress}銆戜俊鎭紝鏃犳硶鏍¢獙绔欏彴");
+                    //_taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.TargetAddress}銆戜俊鎭紝鏃犳硶鏍¢獙绔欏彴");
                 }
             }
             else
@@ -303,7 +315,7 @@
                     if (device != null)
                     {
                         CommonConveyorLine conveyorLine = (CommonConveyorLine)device;
-                        //if (conveyorLine.IsOccupied(router.ChildPosi))//鍑哄簱绔欏彴鏈鍗犵敤
+                        if (conveyorLine.IsOccupiedx(router.ChildPosi))//鍑哄簱绔欏彴鏈鍗犵敤
                         {
                             return task;
                         }
@@ -320,7 +332,6 @@
             }
             return null;
         }
-
 
         /// <summary>
         /// 鏌ユ壘鍏朵粬鍑哄簱浠诲姟鐨勮緟鍔╂柟娉曪紙鎺掗櫎鎸囧畾浠诲姟ID鐨勪换鍔★級
@@ -370,13 +381,21 @@
             stackerCraneTaskCommand.StartCommand = 1;
             if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//鍒ゆ柇鏄惁鏄叆搴撲换鍔�
             {
-                List<Dt_Router> routers = _routerService.QueryNextRoutes(task.CurrentAddress, task.Roadway);
-                if (routers.Count > 0)
+                if (task.SourceAddress == "1359-4" && task.Roadway.Contains("JZ"))
                 {
-                    stackerCraneTaskCommand.StartRow = Convert.ToInt16(routers.FirstOrDefault().SrmRow);
-                    stackerCraneTaskCommand.StartColumn = Convert.ToInt16(routers.FirstOrDefault().SrmColumn);
-                    stackerCraneTaskCommand.StartLayer = Convert.ToInt16(routers.FirstOrDefault().SrmLayer);
-
+                    string[] souredCodes = task.CurrentAddress.Split("-");
+                    if (souredCodes.Length == 3)
+                    {
+                        stackerCraneTaskCommand.StartRow = Convert.ToInt16(souredCodes[0]);
+                        stackerCraneTaskCommand.StartColumn = Convert.ToInt16(souredCodes[1]);
+                        stackerCraneTaskCommand.StartLayer = Convert.ToInt16(souredCodes[2]);
+                    }
+                    else
+                    {
+                        //鏁版嵁閰嶇疆閿欒
+                        _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍏ュ簱浠诲姟璧风偣閿欒锛岃捣鐐癸細銆恵task.CurrentAddress}銆�");
+                        return null;
+                    }
                     string[] targetCodes = task.NextAddress.Split("-");
                     if (targetCodes.Length == 3)
                     {
@@ -393,8 +412,32 @@
                 }
                 else
                 {
-                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鑾峰彇瀵瑰簲鐨勫爢鍨涙満鍙栬揣绔欏彴淇℃伅");
-                    return null;
+                    List<Dt_Router> routers = _routerService.QueryNextRoutes(task.CurrentAddress, task.Roadway);
+                    if (routers.Count > 0)
+                    {
+                        stackerCraneTaskCommand.StartRow = Convert.ToInt16(routers.FirstOrDefault().SrmRow);
+                        stackerCraneTaskCommand.StartColumn = Convert.ToInt16(routers.FirstOrDefault().SrmColumn);
+                        stackerCraneTaskCommand.StartLayer = Convert.ToInt16(routers.FirstOrDefault().SrmLayer);
+
+                        string[] targetCodes = task.NextAddress.Split("-");
+                        if (targetCodes.Length == 3)
+                        {
+                            stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]) % 2 != 0 ? (short)1 : (short)2;
+                            stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]);
+                            stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]);
+                        }
+                        else
+                        {
+                            //鏁版嵁閰嶇疆閿欒
+                            _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍏ュ簱浠诲姟缁堢偣閿欒锛岃捣鐐癸細銆恵task.NextAddress}銆�");
+                            return null;
+                        }
+                    }
+                    else
+                    {
+                        _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鑾峰彇瀵瑰簲鐨勫爢鍨涙満鍙栬揣绔欏彴淇℃伅");
+                        return null;
+                    }
                 }
             }
             else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
@@ -412,31 +455,45 @@
                 }
                 else
                 {
-                    List<Dt_Router> routers = _routerService.QueryNextRoutes(task.Roadway, task.TargetAddress);
-                    if (routers.Count > 0)
+                    if (task.TargetAddress == "002-021-001" && task.Roadway.Contains("JZ") && task.TaskType == (int)TaskOutboundTypeEnum.OutTray)
                     {
-                        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;
-                        }
+                        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;
+                        }
                     }
                 }
             }
@@ -471,6 +528,5 @@
             }
             return stackerCraneTaskCommand;
         }
-
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3