From 7195016afc472307e4db0b415e45c9d4275bdb02 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期四, 30 十月 2025 17:27:32 +0800
Subject: [PATCH] 1

---
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs |  739 ++++++++++++++++++++++++++++++--------------------------
 1 files changed, 396 insertions(+), 343 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
index d76dc75..b7f0721 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -26,6 +26,7 @@
 using WIDESEAWCS_QuartzJob.Models;
 using WIDESEAWCS_QuartzJob.Repository;
 using WIDESEAWCS_QuartzJob.Service;
+using WIDESEAWCS_TaskInfoRepository;
 
 namespace WIDESEAWCS_TaskInfoService
 {
@@ -43,16 +44,32 @@
 
         private Dictionary<string, OrderByType> _taskOrderBy = new()
         {
-            {nameof(Dt_Task.Grade), OrderByType.Desc },
+            {nameof(Dt_Task.Grade), OrderByType.Asc },
             {nameof(Dt_Task.CreateDate), OrderByType.Asc},
         };
+
 
         public Dictionary<string, OrderByType> TaskOrderBy
         { get { return _taskOrderBy; } set { _taskOrderBy = value; } }
 
+
+        #region 鑾峰彇鎵�鏈変换鍔$被鍨嬨�佺姸鎬�
         public List<int> TaskInboundTypes => typeof(TaskInboundTypeEnum).GetEnumIndexList();
 
         public List<int> TaskOutboundTypes => typeof(TaskOutboundTypeEnum).GetEnumIndexList();
+        public List<int> TaskRelocationboundTypes => typeof(TaskRelocationTypeEnum).GetEnumIndexList();
+        public List<int> TaskAGVCarryboundTypes => typeof(TaskAGVCarryTypeEnum).GetEnumIndexList();
+        public List<int> TaskAcrossFloorboundTypes => typeof(TaskAcrossFloorTypeEnum).GetEnumIndexList();
+
+        public List<int> TaskInboundStates => typeof(TaskInStatusEnum).GetEnumIndexList();
+
+        public List<int> TaskOutboundStates => typeof(TaskOutStatusEnum).GetEnumIndexList();
+        public List<int> TaskRelocationboundStates => typeof(TaskRelocationStatusEnum).GetEnumIndexList();
+        public List<int> TaskAGVCarryboundStates => typeof(TaskAGVCarryStatusEnum).GetEnumIndexList();
+        public List<int> TaskAcrossFloorboundStates => typeof(TaskAcrossFloorStatusEnum).GetEnumIndexList();
+
+        #endregion 鑾峰彇鎵�鏈変换鍔$被鍨嬨�佺姸鎬�
+
 
         public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ISys_ConfigService sys_ConfigService, IDt_StationManagerService stationManagerService, IDt_StationManagerRepository stationManagerRepository, IRouterRepository routerRepository, ITask_HtyRepository htyRepository) : base(BaseDal)
         {
@@ -92,62 +109,183 @@
                     Dt_Task task = _mapper.Map<Dt_Task>(item);
                     // 璁剧疆浠诲姟鐨勫垱寤鸿�呬负"WMS"
                     task.Creater = "WMS";
+                    task.Remark = item.Remark;
                     // 鍒ゆ柇浠诲姟绫诲瀷鏄惁涓哄嚭搴撲换鍔�
                     if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                     {
-                        // 鍒ゆ柇浠诲姟鐩爣鍦板潃鍜岃矾寰勬槸鍚︽弧瓒崇壒瀹氭潯浠�
-                        if (((task.TargetAddress == "002-021-001" || task.TargetAddress == "001-021-001") && task.Roadway.Contains("JZ")) || task.TaskType == (int)TaskOutboundTypeEnum.OutFireAlarm)
+                        if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.OutbondGroup)
                         {
-                            // 璁剧疆浠诲姟鐘舵�佷负鍑哄簱鏂板缓
+                            var station = _stationManagerRepository.QueryFirst(x => x.stationType == 1 && x.Roadway == "SC1");
+
                             task.TaskState = (int)TaskOutStatusEnum.OutNew;
-                            // 璁剧疆褰撳墠鍦板潃涓烘簮鍦板潃
+
                             task.CurrentAddress = item.SourceAddress;
-                            // 璁剧疆涓嬩竴涓湴鍧�涓虹洰鏍囧湴鍧�
-                            task.NextAddress = item.TargetAddress;
+
+                            task.NextAddress = station.stationChildCode;
+
+                            task.Floor = "1F";
+
+                            task.AGVSign = "";
                         }
-                        else
+                        else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.AcrossFloorGroup)
                         {
-                            // 鏌ヨ涓嬩竴涓矾鐢�
-                            List<Dt_Router> routers = _routerService.QueryNextRoutes(item.RoadWay, item.TargetAddress);
-                            if (routers.Count > 0)
+                            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
+
+                            if (station != null)
                             {
-                                // 璁剧疆浠诲姟鐘舵�佷负鍑哄簱鏂板缓
-                                task.TaskState = (int)TaskOutStatusEnum.OutNew;
-                                // 璁剧疆褰撳墠鍦板潃涓烘簮鍦板潃
+                                var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == station.stationFloor);
+
+                                task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew;
+
                                 task.CurrentAddress = item.SourceAddress;
-                                // 璁剧疆涓嬩竴涓湴鍧�涓虹涓�涓瓙浣嶇疆
-                                task.NextAddress = routers.FirstOrDefault().ChildPosi;
+
+                                task.NextAddress = next.stationChildCode;
+
+                                task.Floor = station.stationFloor;
+
+                                task.AGVSign = "";
                             }
-                            else
-                            {
-                                // 鏌ヨ浠庢簮鍦板潃鍒扮洰鏍囧湴鍧�鐨勮矾鐢�
-                                routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress);
-                                if (routers.Count > 0)
-                                {
-                                    // 璁剧疆浠诲姟鐘舵�佷负鍑哄簱瀹屾垚
-                                    task.TaskState = (int)TaskOutStatusEnum.SC_OutFinish;
-                                    // 璁剧疆褰撳墠鍦板潃涓烘簮鍦板潃
-                                    task.CurrentAddress = item.SourceAddress;
-                                    // 璁剧疆涓嬩竴涓湴鍧�涓虹涓�涓瓙浣嶇疆
-                                    task.NextAddress = routers.FirstOrDefault().ChildPosi;
-                                }
-                            }
+                        }
+                        else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.CarryGroup)
+                        {
+                            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.TargetAddress);
+
+                            task.TaskState = (int)TaskAGVCarryStatusEnum.CarryNew;
+
+                            task.CurrentAddress = item.SourceAddress;
+
+                            task.NextAddress = task.TargetAddress;
+
+                            task.Floor = station.stationFloor;
+
+                            task.AGVSign = "";
                         }
                     }
                     // 鍒ゆ柇浠诲姟绫诲瀷鏄惁涓哄叆搴撲换鍔�
                     else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
                     {
+                        if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.InboundGroup)
+                        {
+                            var station = _stationManagerRepository.QueryFirst(x => x.stationType == 1 && x.Roadway == "SC1");
 
-                        task.CurrentAddress = string.Empty;
-                        if (task.SourceAddress == "1325-6")
-                            // 璁剧疆褰撳墠鍦板潃涓�"001-021-001"
-                            task.CurrentAddress = "001-021-001";
-                        else
-                            // 璁剧疆褰撳墠鍦板潃涓�"002-021-001"
-                            task.CurrentAddress = "002-021-001";
-                        // 璁剧疆涓嬩竴涓湴鍧�涓虹洰鏍囧湴鍧�
-                        task.NextAddress = item.TargetAddress;
+                            task.TaskState = (int)TaskInStatusEnum.InNew;
+
+                            task.CurrentAddress = item.SourceAddress;
+
+                            task.NextAddress = station.stationChildCode;
+
+                            task.Floor = "1F";
+
+                            task.AGVSign = "";
+                        }
+                        else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.AcrossFloorGroup)
+                        {
+                            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
+
+                            if (station != null)
+                            {
+                                var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == station.stationFloor);
+
+                                task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew;
+
+                                task.CurrentAddress = item.SourceAddress;
+
+                                task.NextAddress = next.stationChildCode;
+
+                                task.Floor = station.stationFloor;
+
+                                task.AGVSign = "";
+                            }
+                        }
+                        else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.CarryGroup)
+                        {
+                            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
+
+                            task.TaskState = (int)TaskAGVCarryStatusEnum.CarryNew;
+
+                            task.CurrentAddress = item.SourceAddress;
+
+                            task.NextAddress = task.TargetAddress;
+
+                            task.Floor = station.stationFloor;
+
+                            task.AGVSign = "";
+                        }
+
                     }
+                    // 鍒ゆ柇浠诲姟绫诲瀷鏄惁涓虹Щ搴撲换鍔�
+                    else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
+                    {
+                        if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.RelocationGroup)
+                        {
+                            task.TaskState = (int)TaskRelocationStatusEnum.RelocationNew;
+
+                            task.CurrentAddress = item.SourceAddress;
+
+                            task.NextAddress = task.TargetAddress;
+
+                            task.Floor = "1F";
+
+                            task.AGVSign = "";
+                        }
+                        else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.AcrossFloorGroup)
+                        {
+                            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
+
+                            if (station != null)
+                            {
+                                var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == station.stationFloor);
+
+                                task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew;
+
+                                task.CurrentAddress = item.SourceAddress;
+
+                                task.NextAddress = next.stationChildCode;
+
+                                task.Floor = station.stationFloor;
+
+                                task.AGVSign = "";
+                            }
+                        }
+                        else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.CarryGroup)
+                        {
+                            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
+
+                            task.TaskState = (int)TaskAGVCarryStatusEnum.CarryNew;
+
+                            task.CurrentAddress = item.SourceAddress;
+
+                            task.NextAddress = task.TargetAddress;
+
+                            task.Floor = station.stationFloor;
+
+                            task.AGVSign = "";
+                        }
+                    }
+                    //鍒ゆ柇浠诲姟绫诲瀷鏄惁涓鸿法妤煎眰鎼繍浠诲姟
+                    else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.AcrossFloorGroup)
+                    {
+                        if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.AcrossFloorGroup)
+                        {
+                            var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == item.SourceAddress);
+
+                            if (station != null)
+                            {
+                                var next = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == station.stationFloor);
+
+                                task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryNew;
+
+                                task.CurrentAddress = item.SourceAddress;
+
+                                task.NextAddress = next.stationChildCode;
+
+                                task.Floor = station.stationFloor;
+
+                                task.AGVSign = "";
+                            }
+                        }
+                    }
+
                     // 灏嗚浆鎹㈠悗鐨勪换鍔℃坊鍔犲埌浠诲姟鍒楄〃涓�
                     tasks.Add(task);
                 }
@@ -169,144 +307,7 @@
             return content;
         }
 
-        /// <summary>
-        /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎鏈墽琛岀殑浠诲姟
-        /// </summary>
-        /// <param name="deviceNo">璁惧缂栧彿</param>
-        /// <param name="currentAddress">褰撳墠鍦板潃</param>
-        /// <returns></returns>
-        public Dt_Task QueryConveyorLineTask(string deviceNo, string currentAddress)
-        {
-            return BaseDal.QueryFirst(x => ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish)) && x.CurrentAddress == currentAddress, TaskOrderBy);
-        }
-
-        /// <summary>
-        /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎鏈墽琛岀殑浠诲姟
-        /// </summary>
-        /// <param name="deviceNo">璁惧缂栧彿</param>
-        /// <param name="currentAddress">褰撳墠鍦板潃</param>
-        /// <returns></returns>
-        public Dt_Task QueryConveyorLineTask(string deviceNo, string currentAddress, string Barcode)
-        {
-            return BaseDal.QueryFirst(x => ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish)) && x.CurrentAddress == currentAddress && x.PalletCode == Barcode, TaskOrderBy);
-        }
-
-        /// <summary>
-        /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎鏈墽琛岀殑浠诲姟
-        /// </summary>
-        /// <param name="deviceNo">璁惧缂栧彿</param>
-        /// <param name="currentAddress">褰撳墠鍦板潃</param>
-        /// <returns></returns>
-        public Dt_Task QueryNextConveyorLineTask(string deviceNo, string currentAddress)
-        {
-            return BaseDal.QueryFirst(x => ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish)) && x.NextAddress == currentAddress, TaskOrderBy);
-        }
-
-        /// <summary>
-        /// 鏍规嵁鎵樼洏鍙枫�佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎鏈墽琛岀殑浠诲姟
-        /// </summary>
-        /// <param name="Barcode">鎵樼洏鍙�</param>
-        /// <param name="currentAddress">褰撳墠鍦板潃</param>
-        /// <returns></returns>
-        public Dt_Task QueryBarCodeConveyorLineTask(string Barcode, string currentAddress)
-        {
-            return BaseDal.QueryFirst(x => ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish)) && x.CurrentAddress == currentAddress && x.PalletCode == Barcode, TaskOrderBy);
-        }
-
-        /// <summary>
-        /// 鏍规嵁浠诲姟鍙枫�佷笅涓�鍦板潃鏌ヨ杈撻�佺嚎鎵ц涓殑浠诲姟
-        /// </summary>
-        /// <param name="taskNum">浠诲姟鍙�</param>
-        /// <param name="nextAddress">涓嬩竴鍦板潃</param>
-        /// <returns></returns>
-        public Dt_Task QueryExecutingConveyorLineTask(int taskNum, string nextAddress)
-        {
-            return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.NextAddress == nextAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting), TaskOrderBy);
-        }
-
-        /// <summary>
-        /// 鏍规嵁浠诲姟鍙枫�佷笅涓�鍦板潃鏌ヨ杈撻�佺嚎鎵ц涓殑浠诲姟
-        /// </summary>
-        /// <param name="taskNum">浠诲姟鍙�</param>
-        /// <param name="Barcode">涓嬩竴鍦板潃</param>
-        /// <param name="currentAddress">涓嬩竴鍦板潃</param>
-        /// <returns></returns>
-        public Dt_Task QueryExecutingCurrentConveyorLineTask(int taskNum, string Barcode, string currentAddress)
-        {
-            return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.PalletCode == Barcode && x.CurrentAddress == currentAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting), TaskOrderBy);
-        }
-
-        /// <summary>
-        /// 鏍规嵁浠诲姟鍙枫�佷笅涓�鍦板潃鏌ヨ杈撻�佺嚎鎵ц涓殑浠诲姟
-        /// </summary>
-        /// <param name="taskNum">浠诲姟鍙�</param>
-        /// <param name="nextAddress">涓嬩竴鍦板潃</param>
-        /// <returns></returns>
-        public Dt_Task QueryExecutingConveyorLineTask(int taskNum, string nextAddress, string Barcode)
-        {
-            return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.NextAddress == nextAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting), TaskOrderBy);
-        }
-
-        /// <summary>
-        /// 鏍规嵁鎵樼洏鍙枫�佷笅涓�鍦板潃鏌ヨ杈撻�佺嚎鎵ц涓殑浠诲姟
-        /// </summary>
-        /// <param name="taskNum">浠诲姟鍙�</param>
-        /// <param name="nextAddress">涓嬩竴鍦板潃</param>
-        /// <returns></returns>
-        public Dt_Task QueryExecutingConveyorLineTask(string nextAddress, string Barcode)
-        {
-            return BaseDal.QueryFirst(x => (x.NextAddress == nextAddress || x.TargetAddress == nextAddress) && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting), TaskOrderBy);
-        }
-
-        /// <summary>
-        /// 鏍规嵁浠诲姟鍙枫�佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎瀹屾垚鐨勪换鍔�
-        /// </summary>
-        /// <param name="taskNum">浠诲姟鍙�</param>
-        /// <param name="currentAddress">褰撳墠鍦板潃</param>
-        /// <returns></returns>
-        public Dt_Task QueryCompletedConveyorLineTask(int taskNum, string currentAddress)
-        {
-            return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.CurrentAddress == currentAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InFinish || x.TaskState == (int)TaskOutStatusEnum.Line_OutFinish), TaskOrderBy);
-        }
-
-        /// <summary>
-        /// 鏍规嵁鎵樼洏鍙枫�佸綋鍓嶅湴鍧�鏌ヨ浠诲姟
-        /// </summary>
-        /// <param name="taskNum">浠诲姟鍙�</param>
-        /// <param name="currentAddress">褰撳墠鍦板潃</param>
-        /// <returns></returns>
-        public Dt_Task QueryBarcodeTask(string barcode, string currentAddress)
-        {
-            return BaseDal.QueryFirst(x => x.PalletCode == barcode && x.CurrentAddress == currentAddress, TaskOrderBy);
-        }
-
-        /// <summary>
-        /// 鏍规嵁浠诲姟鍙枫�佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎鏂板缓鐨勪换鍔�
-        /// </summary>
-        /// <param name="taskNum">浠诲姟鍙�</param>
-        /// <param name="currentAddress">褰撳墠鍦板潃</param>
-        /// <returns></returns>
-        public Dt_Task QueryCraneConveyorLineTask(int taskNum, string currentAddress)
-        {
-            return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.CurrentAddress == currentAddress && (x.TaskState == (int)TaskInStatusEnum.InNew || x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy);
-        }
-
-        /// <summary>
-        /// 鏍规嵁璁惧缂栧彿銆佷换鍔$被鍨嬪垎缁�(鍙��)鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鏂板鐨勪换鍔�
-        /// </summary>
-        /// <param name="deviceNo">璁惧缂栧彿</param>
-        /// <param name="taskTypeGroup">浠诲姟绫诲瀷鍒嗙粍(鍙��)</param>
-        /// <returns></returns>
-        public Dt_Task? QuertStackerCraneTask(string deviceNo, TaskTypeGroup? taskTypeGroup = null)
-        {
-            if (taskTypeGroup == null)
-                return BaseDal.QueryFirst(x => x.Roadway == deviceNo && ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew)), TaskOrderBy);
-            if (taskTypeGroup.Value == TaskTypeGroup.InboundGroup)
-                return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish, TaskOrderBy);
-            if (taskTypeGroup.Value == TaskTypeGroup.OutbondGroup)
-                return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy);
-            return null;
-        }
+        #region 鍫嗗灈鏈轰换鍔℃煡璇�
 
         /// <summary>
         /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鏂板鐨勪换鍔�
@@ -365,16 +366,32 @@
                 return BaseDal.QueryData(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew && x.CurrentAddress == currentAddress, TaskOrderBy);
         }
 
+        #endregion
+
+        #region AGV璇锋眰璁惧淇″彿浠诲姟鏌ヨ
+
         /// <summary>
-        /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鍑哄簱绫诲瀷鐨勬柊澧炵殑浠诲姟
+        /// 璇锋眰杈撻�佺嚎
         /// </summary>
-        /// <param name="deviceNo">璁惧缂栧彿</param>
-        /// <param name="currentAddress">褰撳墠鍦板潃</param>
-        /// <returns>杩斿洖浠诲姟瀹炰綋瀵硅薄闆嗗悎锛屽彲鑳戒负null</returns>
-        public List<Dt_Task> QueryStackerCraneOutTasks(string deviceNo, List<string> outStationCodes)
+        /// <param name="deviceNo"></param>
+        /// <param name="agvSign"></param>
+        /// <returns></returns>
+        public Dt_Task QueryRequestConveyorLineSignalTask()
         {
-            return BaseDal.QueryData(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew && outStationCodes.Contains(x.CurrentAddress), TaskOrderBy);
+            return BaseDal.QueryFirst(x => (x.AGVSign == "RequestPickUp" || x.AGVSign == "RequestPut")&&((TaskInboundTypes.Contains(x.TaskType) && x.TaskState > (int)TaskInStatusEnum.InNew) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState > (int)TaskOutStatusEnum.SC_OutFinish)));
         }
+
+        /// <summary>
+        /// 璇锋眰鎻愬崌鏈�
+        /// </summary>
+        /// <returns></returns>
+        public Dt_Task QueryRequestTSJSignalTask()
+        {
+            return BaseDal.QueryFirst(x =>  x.TaskState > (int)TaskAcrossFloorStatusEnum.CarryNew && (x.AGVSign == "RequestPickUp" || x.AGVSign == "RequestPut"));
+        }
+
+        #endregion
+
 
         /// <summary>
         /// 鏇存柊浠诲姟寮傚父淇℃伅鏄剧ず
@@ -411,19 +428,6 @@
             return content;
         }
 
-        /// <summary>
-        /// 鏇存柊浠诲姟鐘舵�佷俊鎭紝骞跺悓姝ヨ嚦WMS
-        /// </summary>
-        /// <param name="taskNum">浠诲姟鍙�</param>
-        /// <param name="status">浠诲姟鐘舵��</param>
-        public void UpdateTaskStatus(int taskNum, int status)
-        {
-            var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
-            if (task == null) return;
-            task.TaskState = status;
-            task.ModifyDate = DateTime.Now;
-            BaseDal.UpdateData(task);
-        }
 
         /// <summary>
         /// 灏嗕换鍔$姸鎬佷慨鏀逛负涓嬩竴涓姸鎬�
@@ -452,18 +456,20 @@
         /// <returns></returns>
         public WebResponseContent UpdateTaskStatusToNext([NotNull] Dt_Task task)
         {
-            WebResponseContent content = new WebResponseContent();
+            WebResponseContent? content = new WebResponseContent();
             try
             {
                 int oldState = task.TaskState;
-                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+                if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.OutbondGroup)
                 {
                     int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>();
 
                     task.TaskState = nextStatus;
 
-                    if (task.TaskState == (int)TaskOutStatusEnum.Line_OutFinish)
+                    if (task.TaskState == (int)TaskOutStatusEnum.AGV_OutFinish)
                     {
+                        CompletedTask(task.TaskNum);
+
                         task.ModifyDate = DateTime.Now;
                         task.Modifier = "System";
 
@@ -479,8 +485,14 @@
                         content = StackCraneTaskCompleted(task.TaskNum);
                         return content;
                     }
+                    if (task.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting)
+                    {
+                        var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.TargetAddress);
+                        SendAgvTask(station.stationRemark, task.TaskNum);
+                    }
+
                 }
-                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
+                else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.InboundGroup)
                 {
                     int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
                     task.TaskState = nextStatus;
@@ -489,46 +501,42 @@
                     {
                         #region 鍏ュ簱璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃
 
-                        // TODO: 璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃
-                        // 鍒涘缓璇锋眰瀵硅薄
-                        var taskDto = new RequestTaskDto()
-                        {
-                            Position = task.NextAddress,
-                            PalletCode = task.PalletCode,
-                        };
+                        //var taskDto = new RequestTaskDto()
+                        //{
+                        //    Position = task.NextAddress,
+                        //    PalletCode = task.PalletCode,
+                        //};
 
-                        // 鑾峰彇WMSip鍦板潃
-                        var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
-                        var wmsBasez = configz.Where(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE).FirstOrDefault()?.ConfigValue;
-                        var requestLocation = configz.Where(x => x.ConfigKey == SysConfigKeyConst.RequestLocation).FirstOrDefault()?.ConfigValue;
-                        if (wmsBasez == null || requestLocation == null)
-                        {
-                            throw new InvalidOperationException("WMS IP 鏈厤缃�");
-                        }
-                        var wmsIpAddrss = wmsBasez + requestLocation;
+                        //// 鑾峰彇WMSip鍦板潃
+                        //var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+                        //var wmsBasez = configz.Where(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE).FirstOrDefault()?.ConfigValue;
+                        //var requestLocation = configz.Where(x => x.ConfigKey == SysConfigKeyConst.RequestLocation).FirstOrDefault()?.ConfigValue;
+                        //if (wmsBasez == null || requestLocation == null)
+                        //{
+                        //    throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                        //}
+                        //var wmsIpAddrss = wmsBasez + requestLocation;
 
-                        // 鍙戦�佽姹傚苟绛夊緟鍝嶅簲
-                        var abc = HttpHelper.PostAsync(wmsIpAddrss, taskDto.ToJsonString()).Result;
-                        if (abc == null)
-                            return content.Error();
-                        // 鍙嶅簭鍒楀寲鍝嶅簲鍐呭
-                        content = JsonConvert.DeserializeObject<WebResponseContent>(abc);
+                        //// 鍙戦�佽姹傚苟绛夊緟鍝嶅簲
+                        //var abc = HttpHelper.PostAsync(wmsIpAddrss, taskDto.ToJsonString()).Result;
+                        //if (abc == null)
+                        //    return content.Error();
+                        //// 鍙嶅簭鍒楀寲鍝嶅簲鍐呭
+                        //content = JsonConvert.DeserializeObject<WebResponseContent>(abc);
 
+                        //LogFactory.WriteError($"鑾峰彇璐т綅", $"鑾峰彇璐т綅,浠诲姟鍙�:銆恵task.TaskNum}銆�,鎵樼洏鍙凤細銆恵task.PalletCode}銆戣繑鍥炲弬鏁般�恵JsonConvert.SerializeObject(content)}銆�");
 
-                        QuartzLogger.WriteLogToFile($"Info_鑾峰彇璐т綅", $"鑾峰彇璐т綅,浠诲姟鍙�:銆恵task.TaskNum}銆�,鎵樼洏鍙凤細銆恵task.PalletCode}銆戣繑鍥炲弬鏁般�恵JsonConvert.SerializeObject(content)}銆憑Environment.NewLine}{Environment.NewLine}");
+                        //// 妫�鏌ョ姸鎬佸苟杩斿洖
+                        //if (!content.Status)
+                        //{
+                        //    return content;
+                        //}
 
-
-                        // 妫�鏌ョ姸鎬佸苟杩斿洖
-                        if (!content.Status)
-                        {
-                            return content;
-                        }
-
-                        // 鍙嶅簭鍒楀寲浠诲姟鏁版嵁
-                        var taskResult = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
+                        //// 鍙嶅簭鍒楀寲浠诲姟鏁版嵁
+                        //var taskResult = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
 
                         task.CurrentAddress = task.NextAddress;
-                        task.NextAddress = taskResult.TargetAddress;
+                        task.NextAddress = task.TargetAddress;
                         task.TargetAddress = task.NextAddress;
 
                         #endregion 鍏ュ簱璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃
@@ -538,7 +546,6 @@
                         if (App.User.UserId > 0)
                         {
                             content = StackCraneTaskCompleted(task.TaskNum);
-                            return content;
                         }
 
                         task.ModifyDate = DateTime.Now;
@@ -549,6 +556,118 @@
 
                         BaseDal.DeleteData(task);
                         _taskHtyRepository.AddData(task_Hty);
+                    }
+                }
+                else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.CarryGroup)
+                {
+                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskAGVCarryStatusEnum>();
+
+                    task.TaskState = nextStatus;
+
+                    if (task.TaskState == (int)TaskAGVCarryStatusEnum.AGV_CarryFinish)
+                    {
+                        CompletedTask(task.TaskNum);
+
+                        task.ModifyDate = DateTime.Now;
+                        task.Modifier = "System";
+
+                        Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
+                        task_Hty.TaskId = 0;
+
+                        BaseDal.DeleteData(task);
+                        _taskHtyRepository.AddData(task_Hty);
+                    }
+                }
+                else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.AcrossFloorGroup)
+                {
+                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskAcrossFloorStatusEnum>();
+
+                    task.TaskState = nextStatus;
+
+                    if (task.TaskState == (int)TaskAcrossFloorStatusEnum.SecondCarryFinish)
+                    {
+                        CompletedTask(task.TaskNum);
+
+                        task.TaskState = (int)TaskAcrossFloorStatusEnum.SecondCarryFinish;
+                        task.ModifyDate = DateTime.Now;
+                        task.Modifier = "System";
+
+                        Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
+                        task_Hty.TaskId = 0;
+
+                        BaseDal.DeleteData(task);
+                        _taskHtyRepository.AddData(task_Hty);
+                    }
+
+                    if (task.TaskState == (int)TaskAcrossFloorStatusEnum.FirstCarryFinish)
+                    {
+                        Dt_StationManager stationManager = new Dt_StationManager();
+                        string TaskTemplate = string.Empty;
+                        if (task.Floor == "1F")
+                        {
+                            stationManager = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == "2F");
+                            TaskTemplate = "BBB";
+                        }
+                        else
+                        {
+                            stationManager = _stationManagerRepository.QueryFirst(x => x.stationType == 5 && x.stationFloor == "1F");
+                            TaskTemplate = "CCC";
+                        }
+
+                        var taskDto = new RequestAcrossFloorTaskDto()
+                        {
+                            NextAddress = task.NextAddress,
+                            PalletCode = task.PalletCode,
+                            TaskNum = task.TaskNum
+                        };
+
+                        // 鑾峰彇WMSip鍦板潃
+                        var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+                        var wmsBasez = configz.Where(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE).FirstOrDefault()?.ConfigValue;
+                        var requestLocation = configz.Where(x => x.ConfigKey == SysConfigKeyConst.AcrossFloorTask).FirstOrDefault()?.ConfigValue;
+                        if (wmsBasez == null || requestLocation == null)
+                        {
+                            throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                        }
+                        var wmsIpAddrss = wmsBasez + requestLocation;
+
+                        var abc = HttpHelper.PostAsync(wmsIpAddrss, taskDto.ToJsonString()).Result;
+                        if (abc == null)
+                            return content.Error();
+                        content = JsonConvert.DeserializeObject<WebResponseContent>(abc);
+
+                        if (!content.Status)
+                        {
+                            return content;
+                        }
+
+                        // 鍙嶅簭鍒楀寲浠诲姟鏁版嵁
+                        var taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
+
+                        Dt_Task taskNew = _mapper.Map<Dt_Task>(taskDTO);
+                        task.Creater = "WMS";
+
+                        taskNew.CurrentAddress = stationManager.stationChildCode;
+
+                        taskNew.NextAddress = task.TargetAddress;
+
+                        taskNew.Floor = stationManager.stationFloor;
+
+                        taskNew.AGVSign = "";
+
+                        task.TaskState = (int)TaskAcrossFloorStatusEnum.FirstCarryFinish;
+                        task.ModifyDate = DateTime.Now;
+                        task.Modifier = "System";
+
+                        Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
+                        task_Hty.TaskId = 0;
+
+                        BaseDal.DeleteData(task);
+                        _taskHtyRepository.AddData(task_Hty);
+
+                        BaseDal.AddData(taskNew);
+
+                        SendAgvTask(TaskTemplate, taskNew.TaskNum);
                     }
                 }
                 else
@@ -572,7 +691,7 @@
                 // 鑾峰彇WMSip鍦板潃
                 var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                 var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
-                var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTask)?.ConfigValue;
+                var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTaskStatus)?.ConfigValue;
                 if (wmsBase == null || updateTask == null)
                 {
                     throw new InvalidOperationException("WMS IP 鏈厤缃�");
@@ -593,39 +712,27 @@
             return content;
         }
 
-        /// <summary>
-        /// 鏍规嵁浠诲姟鍙枫�佸綋鍓嶅湴鍧�鏇存柊浠诲姟浣嶇疆淇℃伅
-        /// </summary>
-        /// <param name="taskNum">浠诲姟鍙�</param>
-        /// <param name="currentAddress">褰撳墠鍦板潃</param>
-        /// <returns></returns>
-        public Dt_Task? UpdatePosition(int taskNum, string currentAddress)
+        public void CompletedTask(int taskNum)
         {
-            try
+            #region WMS鍚屾浠诲姟瀹屾垚
+
+            var keys = new Dictionary<string, object>()
             {
-                var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.CurrentAddress == currentAddress);
-                if (task == null) throw new Exception($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
-
-                string oldCurrentPos = task.CurrentAddress;
-                string oldNextPos = task.NextAddress;
-
-                var routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress);
-                if (!routers.Any()) throw new Exception($"鏈壘鍒拌澶囪矾鐢变俊鎭�");
-
-                task.CurrentAddress = task.NextAddress;
-                task.NextAddress = routers.FirstOrDefault().ChildPosi;
-
-                task.ModifyDate = DateTime.Now;
-                task.Modifier = "System";
-
-
-                _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"绯荤粺鑷姩娴佺▼锛屾洿鏂板綋鍓嶄綅缃�恵oldCurrentPos} ----> {task.CurrentAddress}銆戝拰涓嬩竴浣嶇疆銆恵oldNextPos} ----> {task.NextAddress}銆�");
-                return task;
-            }
-            catch (Exception ex)
+                {"taskNum", taskNum}
+            };
+            // 鑾峰彇WMSip鍦板潃
+            var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+            var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
+            var completeTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.ConfigValue;
+            if (wmsBase == null || completeTask == null)
             {
+                throw new InvalidOperationException("WMS IP 鏈厤缃�");
             }
-            return null;
+            var wmsIpAddress = wmsBase + completeTask;
+
+            var result = HttpHelper.GetAsync(wmsIpAddress, keys).Result;
+
+            #endregion WMS鍚屾浠诲姟瀹屾垚
         }
 
         /// <summary>
@@ -641,84 +748,26 @@
                 var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
                 if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
 
-                #region WMS鍚屾浠诲姟瀹屾垚
-
-                var keys = new Dictionary<string, object>()
-                {
-                    {"taskNum", taskNum}
-                };
-                // 鑾峰彇WMSip鍦板潃
-                var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
-                var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
-                var completeTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.ConfigValue;
-                if (wmsBase == null || completeTask == null)
-                {
-                    throw new InvalidOperationException("WMS IP 鏈厤缃�");
-                }
-                var wmsIpAddress = wmsBase + completeTask;
-
-                var result = HttpHelper.GetAsync(wmsIpAddress, keys).Result;
-
-                QuartzLogger.WriteLogToFile($"Info_浠诲姟瀹屾垚", $"浠诲姟瀹屾垚,浠诲姟鍙�:銆恵taskNum}銆戣繑鍥炲弬鏁般�恵JsonConvert.SerializeObject(result)}銆憑Environment.NewLine}{Environment.NewLine}");
-                if (result != null)
-                {
-
-                    content = JsonConvert.DeserializeObject<WebResponseContent>(result);
-                    if (!content.Data.IsNullOrEmpty())
-                    {
-                        if (content.Data.ToString() == "NG")
-                        {
-                            task.Remark = "NG";
-                            //BaseDal.UpdateData(task);
-                            //_taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴愶紝MOM杩斿洖NG");
-                        }
-                    }
-                    task.ExceptionMessage += "   " + content.Message;
-
-                }
-                #endregion WMS鍚屾浠诲姟瀹屾垚
 
                 if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
                 {
-                    if (!task.Roadway.Contains("GW") && task.TaskType != (int)TaskOutboundTypeEnum.InToOut)
-                    {
-                        var routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress);
-                        if (!routers.Any()) return WebResponseContent.Instance.Error($"鏈壘鍒拌澶囪矾鐢变俊鎭�");
+                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>();
+                    task.TaskState = nextStatus;
 
-                        int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>();
-                        task.TaskState = nextStatus;
-                        task.CurrentAddress = task.NextAddress;
-                        task.NextAddress = routers.FirstOrDefault().ChildPosi;
-                        task.ModifyDate = DateTime.Now;
-                        task.Modifier = "System";
-                        BaseDal.UpdateData(task);
+                    task.CurrentAddress = task.NextAddress;
+                    task.NextAddress = task.TargetAddress;
+                    task.ModifyDate = DateTime.Now;
+                    task.Modifier = "System";
+                    BaseDal.UpdateData(task);
 
-                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
-                    }
-                    else
-                    {
-                        task.TaskState = (int)TaskOutStatusEnum.OutFinish;
-                        //濡傞珮娓╁嚭搴撳悗 NG 鍒欏皢浠诲姟鏍囪涓篘G 骞跺湪鍑哄簱鐢宠鍚庡皢浠诲姟鍑鸿嚦NG鍙�
-                        if (task.Remark == "NG")
-                        {
-                            BaseDal.UpdateData(task);
-                        }
-                        else
-                        {
-                            BaseDal.DeleteData(task);
-                            ConsoleHelper.WriteWarningLine($"楂樻俯鍑哄簱鐩殑鍦板潃{task.TargetAddress}");
-                        }
+                    content.OK(data: task);
 
-                        var taskHty = task.Adapt<Dt_Task_Hty>();
-                        _taskHtyRepository.AddData(taskHty);
-                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
-                    }
-
-                    //鏆備笉鑰冭檻澶氫釜鍑哄簱鍙�
+                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
                 }
                 else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting)
                 {
-                    //todo 鍚屾鍒癢MS
+                    CompletedTask(task.TaskNum);
+
                     int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
                     task.TaskState = nextStatus;
                     task.ModifyDate = DateTime.Now;
@@ -731,9 +780,21 @@
                     _taskHtyRepository.AddData(task_Hty);
                     _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄叆搴撳畬鎴�");
                 }
-                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
+                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup && task.TaskState == (int)TaskRelocationStatusEnum.SC_RelocationExecuting)
                 {
-                    //todo 璋冪敤WMS绉诲簱瀹屾垚
+                    CompletedTask(task.TaskNum);
+
+                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskRelocationStatusEnum>();
+                    task.TaskState = nextStatus;
+                    task.ModifyDate = DateTime.Now;
+                    task.Modifier = "System";
+
+                    Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
+                    task_Hty.TaskId = 0;
+
+                    BaseDal.DeleteData(task);
+                    _taskHtyRepository.AddData(task_Hty);
+                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈虹Щ搴撳畬鎴�");
                 }
                 else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OtherGroup)
                 {
@@ -846,15 +907,7 @@
         {
             return BaseDal.QueryFirst(x => x.Roadway == deviceNo && x.TaskType == (int)TaskRelocationTypeEnum.Relocation && x.TaskState == (int)TaskRelocationStatusEnum.RelocationNew);
         }
-        public Dt_Task QueryOutFireAlarmTask(string deviceNo)
-        {
-            return BaseDal.QueryFirst(x => x.Roadway == deviceNo && x.TaskType == (int)TaskOutboundTypeEnum.OutFireAlarm && x.TaskState == (int)TaskOutStatusEnum.OutNew);
-        }
 
-        public Dt_Task QueryExecutingTaskByBarcode(string barcode, string nextAddress)
-        {
-            return BaseDal.QueryFirst(x => x.PalletCode == barcode && x.NextAddress == nextAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting), TaskOrderBy);
-        }
 
         private string GetIpAddress(string baseIp, string name)
         {

--
Gitblit v1.9.3