From cde56aae50adc11ff8db84e424d873843c566bfd Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期一, 24 二月 2025 23:40:41 +0800
Subject: [PATCH] 优化WCS移库逻辑

---
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_ShuttleCar.cs |   53 +++++++++++++++++++++++++++--------------------------
 1 files changed, 27 insertions(+), 26 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_ShuttleCar.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_ShuttleCar.cs"
index 6a3a4cd..218e3f7 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_ShuttleCar.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_ShuttleCar.cs"
@@ -24,7 +24,6 @@
             WebResponseContent content = new WebResponseContent().OK();
             try
             {
-                //var task = GetTaskInfo(taskNum, (int)TaskCarStatusEnum.ShuttleCar_Executing);//鍙兘鏍规嵁浠诲姟鍙锋煡璇换鍔�
                 var task = GetTaskInfo(taskNum);
                 if (task != null)
                 {
@@ -34,12 +33,15 @@
                             {
                                 if (TaskInboundTypes.Contains(task.TaskType) && task.TaskState == TaskInStatusEnum.Car_InExecuting.ObjToInt())
                                 {
-                                    //int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
-                                    task.CurrentAddress = task.NextAddress;
-                                    task.NextAddress = string.Empty;
-                                    task.TaskState = (int)TaskInStatusEnum.InFinish;
+                                    task.TaskState = TaskInStatusEnum.InFinish.ObjToInt();
                                     AddTask_Hty(task, TaskOperateTypeEnum.AutoComplete);
                                     _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"绌挎杞﹀叆搴撳畬鎴�");
+                                }
+                                else if (TaskRelocationTypes.Contains(task.TaskType) && task.TaskState == TaskRelocationStatusEnum.CarTarget_Executing.ObjToInt())
+                                {
+                                    task.TaskState = TaskRelocationStatusEnum.RelocationFinish.ObjToInt();
+                                    AddTask_Hty(task, TaskOperateTypeEnum.AutoComplete);
+                                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"绌挎杞︾Щ搴撳畬鎴�");
                                 }
                             }
                             break;
@@ -47,19 +49,21 @@
                             {
                                 if (TaskOutboundTypes.Contains(task.TaskType) && task.TaskState == TaskOutStatusEnum.Car_OutExecuting.ObjToInt())
                                 {
-                                    //int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>();
-                                    task.TaskState = (int)TaskOutStatusEnum.Car_OutFinish;
-                                    task.ModifyDate = DateTime.Now;
-                                    task.Modifier = "System";
+                                    task.TaskState = TaskOutStatusEnum.Car_OutFinish.ObjToInt();
+                                    UpdateData(task);
+                                }
+                                else if (TaskRelocationTypes.Contains(task.TaskType) && task.TaskState == TaskRelocationStatusEnum.CarSource_Executing.ObjToInt())
+                                {
+                                    task.TaskState = TaskRelocationStatusEnum.CarSource_Finish.ObjToInt();
                                     UpdateData(task);
                                 }
                             }
                             break;
                         case 10://鍏呯數瀹屾垚
                             {
-                                if (task.TaskType == TaskOtherTypeEnum.RelocationCarCharging.ObjToInt() && task.TaskState == (int)CarChargingTask.ShuttleCar_Charging)//绉昏溅鍏呯數
+                                if (task.TaskType == TaskOtherTypeEnum.RelocationCarCharging.ObjToInt() && task.TaskState == (int)CarChargingTaskEnum.ShuttleCar_Charging)//绉昏溅鍏呯數
                                 {
-                                    task.TaskState = (int)CarChargingTask.RelocationCarFinish;
+                                    task.TaskState = CarChargingTaskEnum.RelocationCarFinish.ObjToInt();
                                     AddTask_Hty(task, TaskOperateTypeEnum.AutoComplete);
                                     _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"绌挎杞﹀厖鐢靛畬鎴�");
                                 }
@@ -68,22 +72,14 @@
                         case 13://A渚у洖闆跺畬鎴�
                         case 14://B渚у洖闆跺畬鎴�
                             {
-                                if (TaskRelocationTypes.Contains(task.TaskType))//绉诲簱浠诲姟
+                                if (task.TaskType == TaskOtherTypeEnum.RelocationCar.ObjToInt() && task.TaskState == TaskCarStatusEnum.ShuttleCar_Executing.ObjToInt())//绉昏溅浠诲姟
                                 {
-                                    if (task.TaskState == TaskRelocationStatusEnum.CarSource_Executing.ObjToInt())
-                                        task.TaskState = TaskRelocationStatusEnum.CarSource_Finish.ObjToInt();
-                                    else if (task.TaskState == TaskRelocationStatusEnum.CarTarget_Executing.ObjToInt())
-                                        task.TaskState = TaskRelocationStatusEnum.RelocationFinish.ObjToInt();
+                                    task.TaskState = TaskCarStatusEnum.ShuttleCar_Finish.ObjToInt();
                                     UpdateData(task);
                                 }
-                                else if (task.TaskType == TaskOtherTypeEnum.RelocationCar.ObjToInt() && task.TaskState == TaskCarStatusEnum.ShuttleCar_Executing.ObjToInt())//绉昏溅浠诲姟
+                                else if (task.TaskType == TaskOtherTypeEnum.RelocationCarCharging.ObjToInt() && task.TaskState == CarChargingTaskEnum.ShuttleCar_Executing.ObjToInt())//绉昏溅鍏呯數
                                 {
-                                    task.TaskState = (int)TaskCarStatusEnum.ShuttleCar_Finish;
-                                    UpdateData(task);
-                                }
-                                else if (task.TaskType == TaskOtherTypeEnum.RelocationCarCharging.ObjToInt() && task.TaskState == CarChargingTask.ShuttleCar_Executing.ObjToInt())//绉昏溅鍏呯數
-                                {
-                                    task.TaskState = (int)CarChargingTask.ShuttleCar_Finish;
+                                    task.TaskState = CarChargingTaskEnum.ShuttleCar_Finish.ObjToInt();
                                     UpdateData(task);
                                 }
                             }
@@ -148,11 +144,16 @@
         public Dt_Task ShuttleCarRelocationTask(string deviceNo, string currentAddress = "")
         {
             List<Dt_Task> tasks = null;
+            Dt_Task? task = null;
             if (string.IsNullOrEmpty(currentAddress))
-                tasks = BaseDal.QueryData(x => x.ShuttleCarCode == deviceNo && (TaskRelocationTypes.Contains(x.TaskType) && (x.TaskState == (int)TaskRelocationStatusEnum.SC_RelocationFinish || x.TaskState == (int)TaskRelocationStatusEnum.RelocationNew)));
+                tasks = BaseDal.QueryData(x => x.ShuttleCarCode == deviceNo && TaskRelocationTypes.Contains(x.TaskType) && x.TaskState == (int)TaskRelocationStatusEnum.RelocationNew).OrderBy(x => x.TaskNum).ToList();
             else
-                tasks = BaseDal.QueryData(x => x.ShuttleCarCode == deviceNo && x.CurrentAddress == currentAddress && (TaskRelocationTypes.Contains(x.TaskType) && (x.TaskState == (int)TaskRelocationStatusEnum.SC_RelocationFinish || x.TaskState == (int)TaskRelocationStatusEnum.RelocationNew)));
-            return tasks.OrderBy(x=>x.TaskNum).First();
+                tasks = BaseDal.QueryData(x => x.ShuttleCarCode == deviceNo && x.CurrentAddress == currentAddress && TaskRelocationTypes.Contains(x.TaskType) && x.TaskState == (int)TaskRelocationStatusEnum.RelocationNew).OrderBy(x => x.TaskNum).ToList();
+            if (tasks != null && tasks.Count > 0)
+            {
+                task = tasks[0];
+            }
+            return task;
         }
     }
 }

--
Gitblit v1.9.3