From 6db89a97e81e6c26bb2d2ccb3db79ed8858462a2 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期四, 17 七月 2025 20:38:16 +0800
Subject: [PATCH] 优化异常库位出库功能

---
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/GWTask/RequestInbound.cs  |    3 -
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationErrorService.cs |    3 -
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs  |    2 
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs             |    4 +-
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs    |   67 ++++++++++++++++++++-------------
 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs     |   30 ++++++++++-----
 6 files changed, 64 insertions(+), 45 deletions(-)

diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs
index f93798d..15cf98b 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs
@@ -443,9 +443,9 @@
 
                 if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                 {
-                    if (task.TaskType == (int)TaskOutboundTypeEnum.InToOut)
+                    if (task.TaskType == (int)TaskOutboundTypeEnum.InToOut && taskDTO.RoadWay.Contains("CW"))
                     {
-                        var stationinfo = _stationManagerRepository.QueryFirst(x => x.stationPLC == "1017" && x.stationType == 10&&x.Roadway==taskDTO.RoadWay);
+                        var stationinfo = _stationManagerRepository.QueryFirst(x => x.stationPLC == "1017" && x.stationType == 10 && x.Roadway == taskDTO.RoadWay);
                         task.TaskState = (int)TaskOutStatusEnum.OutNew;
                         task.CurrentAddress = taskDTO.SourceAddress;
                         task.NextAddress = stationinfo.stationChildCode;
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/GWTask/RequestInbound.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/GWTask/RequestInbound.cs
index e3cd3d6..1d5c18e 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/GWTask/RequestInbound.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/GWTask/RequestInbound.cs
@@ -257,7 +257,6 @@
                     ConsoleHelper.WriteErrorLine($"褰撳墠鎵樼洏瀛樺湪浠诲姟锛氥�恵command.ConveyorLineBarcode}銆�");
 
                     WriteInfo(conveyorLine.DeviceName, $"褰撳墠鎵樼洏瀛樺湪浠诲姟{command.ConveyorLineBarcode}");
-                    return;
                 }
 
                 var content = CreateAndSendTask(taskDTO);
@@ -268,7 +267,6 @@
                     {
                         var taskCommand = MapTaskCommand(task, command);
 
-                        //conveyorLine.SendCommand(taskCommand, childDeviceCode);
                         bool sendFlag = SendCommand(taskCommand, conveyorLine, childDeviceCode);
                         if (sendFlag)
                         {
@@ -276,7 +274,6 @@
                         }
                     }
                 }
-                //}
             }
         }
 
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 b5c54e0..5d5f6c9 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -103,16 +103,8 @@
                                             ConsoleHelper.WriteColorLine(builder, ConsoleColor.Blue);
                                             commonStackerCrane.LastTaskType = task.TaskType;
 
-                                            if(task.TaskType == (int)TaskOutboundTypeEnum.InToOut)
-                                            {
-                                                task.TaskState = (int)TaskOutStatusEnum.SC_OutExecuting;
-                                                _taskRepository.AddData(task);
-                                                _taskService.StackCraneTaskCompleted(task.TaskNum);
-                                            }
-                                            else
-                                            {
-                                                _taskService.UpdateTaskStatusToNext(task.TaskNum);
-                                            } 
+
+                                            _taskService.UpdateTaskStatusToNext(task.TaskNum);
                                         }
                                     }
                                     else
@@ -179,6 +171,24 @@
 
                     if (task == null) commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5);
 
+                    if (commonStackerCrane.DeviceCode.Contains("CW") && task.TaskType==(int)TaskOutboundTypeEnum.InToOut)
+                    {
+                        var stationinfo = _stationManagerRepository.QueryFirst(x => x.stationPLC == "1017" && x.stationType == 10 && x.Roadway == commonStackerCrane.DeviceCode);
+
+                        IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationinfo.stationPLC);
+                        if (device != null)
+                        {
+                            CommonConveyorLine_GW conveyorLine = (CommonConveyorLine_GW)device;
+                            conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTargetAddress, Convert.ToInt16(1815), stationinfo.stationChildCode);
+                            Thread.Sleep(100);
+                            conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTaskNum, 1000, stationinfo.stationChildCode);
+                        }
+                        WriteInfo(commonStackerCrane.DeviceName, $"銆愭墜鍔ㄥ嚭搴撹褰曘��");
+                    }
+
+
+
+
                     if (commonStackerCrane.DeviceCode.Contains("GW") && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                     {
                         var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.TargetAddress);
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationErrorService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationErrorService.cs
index b7f92a3..914547e 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationErrorService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationErrorService.cs
@@ -51,8 +51,7 @@
         var threeHoursAgo = now.Subtract(TimeSpan.FromHours(3));
 
         var data = BaseDal.Db.Queryable<DtLocationInfo>()
-            .Where(x => x.LocationStatus != 2 && x.LocationStatus != 0)
-            .Where(x => x.EnalbeStatus != 1)
+            .Where(x => x.LocationStatus != 2 && x.LocationStatus != 0|| x.EnalbeStatus != 1)
             .WhereIF(!wheres.IsNullOrEmpty(), wheres)
             .OrderBy(orderByModels)
             .ToPageList(options.Page, options.Rows, ref totalCount);
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs
index 4f5a1b8..d39fe99 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs
@@ -140,7 +140,7 @@
             {
                 Dt_Task task = new Dt_Task
                 {
-                    Grade = 1,
+                    Grade = 3,
                     Roadway = location.RoadwayNo,
                     TargetAddress = "001-035-001",
                     Dispatchertime = DateTime.Now,
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
index c0fedb2..22294eb 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
@@ -184,28 +184,33 @@
 
             if (!result.Success)
             {
-                //var taskNG = new Dt_Task
-                //{
-                //    CurrentAddress = input.Position,
-                //    Grade = 1,
-                //    Roadway = input.Roadways,
-                //    TargetAddress = stationManager.stationNGLocation,
-                //    Dispatchertime = DateTime.Now,
-                //    MaterialNo = "",
-                //    NextAddress = stationManager.stationNGChildCode,
-                //    OrderNo = null,
-                //    PalletCode = input.PalletCode,
-                //    SourceAddress = stationManager.stationLocation,
-                //    TaskState = (int)TaskInStatusEnum.Line_InFinish,
-                //    TaskType = (int)TaskOutboundTypeEnum.InToOut,
-                //    TaskNum = await BaseDal.GetTaskNo(),
-                //    Creater = "System",
-                //    ProductionLine = result.ProductionLine,
-                //    ProcessCode = result.ProcessCode,
-                //};
-                //return taskNG;
-                Console.WriteLine($"{result.MOMMessage}");
-                return null;
+                List<string> strings = new List<string>() { "2036","2038","2084","2086"};
+                if (input.Position.Contains(strings))
+                {
+                    Console.WriteLine($"{result.MOMMessage}");
+                    return null;
+                }
+                var taskNG = new Dt_Task
+                {
+                    CurrentAddress = input.Position,
+                    Grade = 1,
+                    Roadway = input.Roadways,
+                    TargetAddress = stationManager.stationNGLocation,
+                    Dispatchertime = DateTime.Now,
+                    MaterialNo = "",
+                    NextAddress = stationManager.stationNGChildCode,
+                    OrderNo = null,
+                    PalletCode = input.PalletCode,
+                    SourceAddress = stationManager.stationLocation,
+                    TaskState = (int)TaskInStatusEnum.Line_InFinish,
+                    TaskType = (int)TaskOutboundTypeEnum.InToOut,
+                    TaskNum = await BaseDal.GetTaskNo(),
+                    Creater = "System",
+                    ProductionLine = result.ProductionLine,
+                    ProcessCode = result.ProcessCode,
+                };
+                return taskNG;
+               
             }
 
             if (result.SerialNos.Count <= 0)
@@ -606,11 +611,17 @@
             taskHty.Creater = App.User.UserName != null ? App.User.UserName : "System";
 
             var location = _locationRepository.QueryFirst(x => x.LocationCode == task.SourceAddress && x.RoadwayNo == task.Roadway);
-            int lastStatus = location.LocationStatus;
-            location.LocationStatus = (int)LocationEnum.Free;
+
+            if(location != null)
+            {
+                int lastStatus = location.LocationStatus;
+                location.LocationStatus = (int)LocationEnum.Free; 
+                _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(location, lastStatus, (int)StatusChangeTypeEnum.AutomaticDelivery, task.TaskNum);
+            }
+
             task.TaskState = (int)TaskOutStatusEnum.OutFinish;
 
-            _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(location, lastStatus, (int)StatusChangeTypeEnum.AutomaticDelivery, task.TaskNum);
+            
             // 浜嬪姟澶勭悊
             await _unitOfWorkManage.UseTranAsync(async () =>
             {
@@ -620,8 +631,10 @@
                     await DeleteStockInfoDetailsAsync(stock.StockInfoDetails);
                     await AddStockInfoHtyAsync(stockInfo_Hty);
                 }
-
-                await UpdateLocationAsync(location);
+                if (location != null)
+                {
+                    await UpdateLocationAsync(location);
+                }
                 await DeleteTaskAsync(task.TaskId);
                 await AddTaskHtyAsync(taskHty);
             });

--
Gitblit v1.9.3