From 3f67529e0f492f30851f091fea7f97a01cb502e5 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期二, 03 二月 2026 11:05:23 +0800
Subject: [PATCH] 添加机器人/套接字任务支持;更新枚举与 .gitignore 文件

---
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs |   39 ++++++++++++++++++++++++++++++++++-----
 1 files changed, 34 insertions(+), 5 deletions(-)

diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
index 5f9e946..472fba7 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -1,4 +1,5 @@
 锘�#region << 鐗� 鏈� 娉� 閲� >>
+
 /*----------------------------------------------------------------
  * 鍛藉悕绌洪棿锛歐IDESEAWCS_TaskInfoService
  * 鍒涘缓鑰咃細鑳$搴�
@@ -11,8 +12,9 @@
  * 淇敼鏃堕棿锛�
  * 鐗堟湰锛歏1.0.1
  * 淇敼璇存槑锛�
- * 
+ *
  *----------------------------------------------------------------*/
+
 #endregion << 鐗� 鏈� 娉� 閲� >>
 
 using AutoMapper;
@@ -44,11 +46,14 @@
                 {nameof(Dt_Task.CreateDate),OrderByType.Asc},
             };
 
-        public Dictionary<string, OrderByType> TaskOrderBy { get { return _taskOrderBy; } set { _taskOrderBy = value; } }
+        public Dictionary<string, OrderByType> TaskOrderBy
+        { get { return _taskOrderBy; } set { _taskOrderBy = value; } }
 
         public List<int> TaskInboundTypes => typeof(TaskInboundTypeEnum).GetEnumIndexList();
 
         public List<int> TaskOutboundTypes => typeof(TaskOutboundTypeEnum).GetEnumIndexList();
+
+        public List<int> TaskRobotTypes => typeof(TaskOtherTypeEnum).GetEnumIndexList();
 
         public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper) : base(BaseDal)
         {
@@ -359,6 +364,17 @@
                         task.TargetAddress = task.NextAddress;
                     }
                 }
+                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OtherGroup)
+                {
+                    if (task.TaskState >= (int)TaskRobotStatusEnum.RobotNew)
+                    {
+                        return content = WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佷笉鍙烦杞埌涓嬩竴姝�,浠诲姟鍙�:銆恵task.TaskNum}銆�,浠诲姟鐘舵��:銆恵task.TaskState}銆�");
+                    }
+
+                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskRobotStatusEnum>();
+
+                    task.TaskState = nextStatus;
+                }
                 else
                 {
                     throw new Exception($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵task.TaskNum}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�");
@@ -452,7 +468,7 @@
                 }
                 else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting)
                 {
-                    //todo 
+                    //todo
                     int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
                     task.TaskState = nextStatus;
                     task.ModifyDate = DateTime.Now;
@@ -481,7 +497,6 @@
                 }
                 else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OtherGroup)
                 {
-
                 }
                 else
                 {
@@ -598,5 +613,19 @@
             BaseDal.DeleteAndMoveIntoHty(tasks, OperateTypeEnum.浜哄伐鍒犻櫎);
             return WebResponseContent.Instance.OK($"鎴愬姛鍒犻櫎{tasks.Count}鏉℃暟鎹�");
         }
+
+        /// <summary>
+        /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鏂板鐨勪换鍔�
+        /// </summary>
+        /// <param name="deviceNo">璁惧缂栧彿</param>
+        /// <param name="currentAddress">褰撳墠鍦板潃</param>
+        /// <returns>杩斿洖浠诲姟瀹炰綋瀵硅薄锛屽彲鑳戒负null</returns>
+        public Dt_Task QueryRobotCraneTask(string deviceNo, string currentAddress = "")
+        {
+            if (string.IsNullOrEmpty(currentAddress))
+                return BaseDal.QueryFirst(x => x.Roadway == deviceNo && (TaskRobotTypes.Contains(x.TaskType) && x.TaskState <= (int)TaskRobotStatusEnum.RobotExecuting), TaskOrderBy);
+            else
+                return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskRobotTypes.Contains(x.TaskType) && x.CurrentAddress == currentAddress && x.TaskState <= (int)TaskRobotStatusEnum.RobotExecuting, TaskOrderBy);
+        }
     }
-}
+}
\ No newline at end of file

--
Gitblit v1.9.3