From 880b7feed920575c19931c214b7d624aa93c6df5 Mon Sep 17 00:00:00 2001
From: 肖洋 <cathay_xy@163.com>
Date: 星期六, 21 十二月 2024 11:30:13 +0800
Subject: [PATCH] 优化入库任务创建逻辑,调整任务状态和地址处理,改进异常处理机制

---
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs |    5 ++
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs        |    6 +-
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs                 |    7 ---
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs |   48 ++++++++++++++++++++----
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs   |   10 ++---
 5 files changed, 52 insertions(+), 24 deletions(-)

diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
index bfa2c3b..9b1276e 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -118,12 +118,7 @@
                     }
                     else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
                     {
-                        if (task.SourceAddress == "1359-4")
-                        {
-                            task.TaskState = (int)TaskInStatusEnum.InNew;
-                            task.CurrentAddress = item.SourceAddress;
-                        }
-                        else
+                        if (task.SourceAddress != "1359-4")
                         {
                             List<Dt_Router> routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress);
                             if (routers.Count > 0)
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
index 8352fc6..29da0ea 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
@@ -361,7 +361,10 @@
             {
                 if (command.Barcode == task.PalletCode && childDeviceCode == task.NextAddress)
                 {
-                    ConsoleHelper.WriteWarningLine($"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎鍏ュ簱瀹屾垚,涓嬩竴鐩爣鍦板潃銆愮瓑寰呭垎閰嶈揣浣嶃��");
+                    conveyorLine.SetValue(ConveyorLineDBName.ConveyorLineTargetAddress, "1000", childDeviceCode);
+
+                    ConsoleHelper.WriteWarningLine($"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎鍏ュ簱瀹屾垚,涓嬩竴鐩爣鍦板潃銆愮瓑寰呭垎閰嶈揣浣�,骞跺啓鍏�1000銆�");
+
                     ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
 
                     if (task.TaskType == (int)TaskInboundTypeEnum.InNG)
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
index 7fd4c81..58c8266 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
@@ -221,18 +221,16 @@
                 var task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode);
                 if (task != null)
                 {
-                    if (task.NextAddress.Contains("JZ"))
+                    if (task.TargetAddress == childDeviceCode)
                     {
-                        int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
-                        task.TaskState = nextStatus;
 
-                        ConsoleHelper.WriteWarningLine($"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵task.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵task.PalletCode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�(瀹炵洏),涓嬩竴鐩爣鍦板潃銆恵task.TargetAddress}銆�");
-                        _taskService.UpdateTaskStatusToNext(task);
+                        conveyorLine.SetValue(ConveyorLineDBName.ConveyorLineTargetAddress, "1000", childDeviceCode);
+
+                        ConsoleHelper.WriteWarningLine($"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵task.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵task.PalletCode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�(瀹炵洏),涓嬩竴鐩爣鍦板潃銆恵1000}銆�");
                         ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
                     }
                     else
                     {
-                        //var taskCommand = MapTaskCommand(task, command);
                         var next = task.NextAddress;
                         var taskCommand = MapTaskCommand(task, command);
                         task.NextAddress = next;
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 7889386..8ef6897 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -370,13 +370,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.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 +401,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)
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
index 000de4c..04de7fa 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -1323,7 +1323,7 @@
 
     #region 闈欑疆寮傚父鍙e叆搴�
 
-    public async Task<WebResponseContent> CreateAndSendInboundTask(string locationCode, string palletCode, string position)
+    public async Task<WebResponseContent> CreateAndSendInboundTask(string palletCode, string position)
     {
         WebResponseContent content = new WebResponseContent();
         try
@@ -1347,7 +1347,7 @@
                         // 鍒涘缓鏂颁换鍔″疄渚�
                         var task = new Dt_Task
                         {
-                            CurrentAddress = locationCode,
+                            CurrentAddress = station.stationLocation,
                             Grade = 1,
                             Roadway = station.Roadway,
                             TargetAddress = location.LocationCode,
@@ -1356,7 +1356,7 @@
                             NextAddress = location.LocationCode,
                             OrderNo = null,
                             PalletCode = palletCode,
-                            SourceAddress = locationCode,
+                            SourceAddress = position,
                             TaskState = (int)TaskInStatusEnum.Line_InFinish,
                             TaskType = (int)TaskInboundTypeEnum.Inbound,
                             TaskNum = await BaseDal.GetTaskNo(),

--
Gitblit v1.9.3