From edc7293bf81729ebaa2d7cdd9a1f3aeaf567f538 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期三, 31 十二月 2025 17:32:08 +0800
Subject: [PATCH] 更新

---
 项目代码/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs   |    6 
 项目代码/WMS/WMSClient/config/buttons.js                                            |    9 
 项目代码/WMS/WMSClient/src/extension/taskinfo/extend/relocationTask.vue             |  194 +++++++++++++
 项目代码/WMS/WMSServices/WIDESEA_WMSServer/Controllers/ERP/ErpBSTController.cs      |    2 
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/原料库/StackerCraneJob_YLSC3.cs              |    2 
 项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs                  |    5 
 /dev/null                                                                       |   86 ------
 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Completed.cs           |   19 +
 项目代码/WMS/WMSServices/WIDESEA_StockService/StockInfoService.cs                   |    2 
 项目代码/WMS/WMSServices/WIDESEA_DTO/Task/WMSTaskDTO.cs                             |   34 ++
 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs             |   47 ++
 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/MesTaskService.cs                  |    2 
 项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/InvokeAGVService.cs             |  137 ---------
 项目代码/WMS/WMSServices/WIDESEA_BasicService/Service/LocationInfoService_Common.cs |    7 
 项目代码/WMS/WMSServices/WIDESEA_Common/OrderEnum/OutboundOrderMenu.cs              |    7 
 项目代码/WMS/WMSClient/src/extension/taskinfo/task.js                               |   10 
 项目代码/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs                   |    4 
 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs            |   21 +
 项目代码/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs                |   27 -
 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Reloaction.cs          |  175 +++++++++--
 20 files changed, 484 insertions(+), 312 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AGVBoxApplyPassDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AGVBoxApplyPassDTO.cs"
deleted file mode 100644
index bd3f08d..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AGVBoxApplyPassDTO.cs"
+++ /dev/null
@@ -1,40 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace WIDESEAWCS_DTO.Agv
-{
-    /// <summary>
-    /// 鏂欑鍥炶皟
-    /// </summary>
-    public class AGVBoxApplyPassDTO
-    {
-        /// <summary>
-        /// 璇锋眰缂栧彿
-        /// </summary>
-        public string ReqCode { get; set; }
-        /// <summary>
-        /// 璇锋眰鏃堕棿
-        /// </summary>
-        public string ReqTime { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string? ClientCode { get; set; }
-        /// <summary>
-        /// 浠ょ墝鍙�
-        /// </summary>
-        public string? TokenCode { get; set; }
-        /// <summary>
-        /// 浠诲姟鍗曞彿
-        /// </summary>
-        public string TaskCode { get; set; }
-        /// <summary>
-        ///  1.鍙栫敵璇烽�氳繃<br/>
-        ///  2.鏀剧敵璇烽�氳繃<br/>
-        /// </summary>
-        public string Type { get; set; }
-    }
-}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvCTUCancelDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvCTUCancelDTO.cs"
deleted file mode 100644
index e2a22bd..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvCTUCancelDTO.cs"
+++ /dev/null
@@ -1,48 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace WIDESEAWCS_DTO.Agv
-{
-    public class AgvCTUCancelDTO
-    {
-        /// <summary>
-        /// 鍙栨秷绫诲瀷
-        /// </summary>
-        public string ForceCancel { get; set; }
-        /// <summary>
-        /// 鍥炲簱鍖哄煙缂栧彿
-        /// </summary>
-        public string MatterArea { get; set; }
-        /// <summary>
-        /// 璇GV缂栧彿
-        /// </summary>
-        public string AgvCode { get; set; }
-        /// <summary>
-        /// 浠诲姟鍙�
-        /// </summary>
-        public string TaskCode { get; set; }
-        /// <summary>
-        /// 璇锋眰缂栧彿
-        /// </summary>
-        public string ReqCode { get; set; }
-        /// <summary>
-        /// 璇锋眰鏃堕棿鎴�
-        /// </summary>
-        public string ReqTime { get; set; }
-        /// <summary>
-        /// 瀹㈡埛绔紪鍙�
-        /// </summary>
-        public string ClientCode { get; set; }
-        /// <summary>
-        /// 浠ょ墝鍙�
-        /// </summary>
-        public string TokenCode { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string TokenTime { get; set; }
-    }
-}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvCallbackBoxNoDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvCallbackBoxNoDTO.cs"
deleted file mode 100644
index 7475f2e..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvCallbackBoxNoDTO.cs"
+++ /dev/null
@@ -1,20 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace WIDESEAWCS_DTO.Agv
-{
-    public class AgvCallbackBoxNoDTO
-    {
-        /// <summary>
-        /// 瀹瑰櫒鍙�
-        /// </summary>
-        public string  ContainerCode { get; set; }
-        /// <summary>
-        /// 浠诲姟鍙�
-        /// </summary>
-        public string TaskNo { get; set; }
-    }
-}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvPodBerthAndMatDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvPodBerthAndMatDTO.cs"
deleted file mode 100644
index 9c42a4e..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvPodBerthAndMatDTO.cs"
+++ /dev/null
@@ -1,48 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace WIDESEAWCS_DTO.Agv
-{
-    public class AgvPodBerthAndMatDTO
-    {
-        /// <summary>
-        /// 璇锋眰缂栧彿
-        /// </summary>
-        public string ReqCode { get; set; }
-        /// <summary>
-        /// 璇锋眰鏃堕棿鎴�
-        /// </summary>
-        public string ReqTime { get; set; }
-        /// <summary>
-        /// 瀹㈡埛绔紪鍙�
-        /// </summary>
-        public string ClientCode { get; set; }
-        /// <summary>
-        /// 浠ょ墝鍙�
-        /// </summary>
-        public string TokenCode { get; set; }
-        /// <summary>
-        /// 璐ф灦缂栧彿
-        /// </summary>
-        public string PodCode { get; set; }
-        /// <summary>
-        /// 鐗╂枡鎵规
-        /// </summary>
-        public string MaterialLot { get; set; }
-        /// <summary>
-        /// 浣嶇疆缂栧彿
-        /// </summary>
-        public string PositionCode { get; set; }
-        /// <summary>
-        /// 鍖哄煙缂栧彿
-        /// </summary>
-        public string AreaCode { get; set; }
-        /// <summary>
-        /// 鍦板浘绠�绉�
-        /// </summary>
-        public string MapShortName { get; set; }
-    }
-}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvScheduleTaskDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvScheduleTaskDTO.cs"
deleted file mode 100644
index 2185a43..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvScheduleTaskDTO.cs"
+++ /dev/null
@@ -1,43 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace WIDESEAWCS_DTO.Agv
-{
-    /// <summary>
-    /// 鎴愬搧棰勮皟搴︽帴鍙�
-    /// </summary>
-    public class AgvScheduleTaskDTO
-    {
-        /// <summary>
-        /// 棰勮皟搴︾殑浣嶇疆鎴栦粨浣�
-        /// </summary>
-        public string PositionCode { get; set; }
-        /// <summary>
-        /// 棰勮鐪熷疄浠诲姟澶氬皯绉掍笅鍙戯紝鑻ヨ揪鍒版椂闂存湭涓嬪彂浠诲姟锛岄璋冨害鐨勮溅閲婃斁
-        /// </summary>
-        public string NextTask { get; set; }
-        public string AgvTyp { get; set; }
-        public string WaitTime { get; set; }
-        public string Priority { get; set; }
-        /// <summary>
-        /// 鍗曟棰勮皟搴﹀搴斾竴涓枡绠憋紝闇�瑕佷竴涓狢TU浠撲綅
-        /// </summary>
-        public string UseableLayers { get; set; }
-        /// <summary>
-        /// 鍗曟棰勮皟搴﹀搴斾竴涓枡绠�
-        /// </summary>
-        public string CacheCount { get; set; }
-        /// <summary>
-        /// 涓嶆洿鏂板師鏈夌殑棰勮皟搴︿换鍔★紝绱姞涓�涓柊鐨勯璋冨害浠诲姟
-        /// </summary>
-        public string Update { get; set; }
-        public string PreTaskQty { get; set; }
-        public string ReqCode { get; set; }
-        public string ReqTime { get; set; }
-        public string ClientCode { get; set; }
-        public string TokenCode { get; set; }
-    }
-}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvSecureReplyDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvSecureReplyDTO.cs"
deleted file mode 100644
index a1f200a..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvSecureReplyDTO.cs"
+++ /dev/null
@@ -1,56 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace WIDESEA_DTO.Agv
-{
-    public class AgvSecureReplyDTO
-    {
-        /// <summary>
-        /// 璇锋眰缂栧彿 姣忎釜璇锋眰閮借涓�涓敮涓�缂栧彿,鍚屼竴涓姹傞噸澶嶆彁浜�,浣跨敤鍚屼竴缂栧彿
-        /// </summary>
-        public string ReqCode { get; set; }
-        /// <summary>
-        /// 璇锋眰鏃堕棿 鏍煎紡:yyyy-MM-dd HH:mm:ss
-        /// </summary>
-        public string ReqTime { get; set; }
-        /// <summary>
-        /// 瀹㈡埛绔紪鍙� 
-        /// </summary>
-        public string ClientCode { get; set; }
-        /// <summary>
-        /// 浠ょ墝鍙� 鐢辫皟搴︾郴缁熼鍙�
-        /// </summary>
-        public string TokenCode { get; set; }
-        /// <summary>
-        /// 宸ヤ綔浣� 涓嶳CS-2000绔厤缃殑浣嶇疆鍚嶇О涓�鑷�
-        /// </summary>
-        public string WbCode { get; set; }
-        /// <summary>
-        /// 杞藉叿缂栧彿
-        /// </summary>
-        public string podCode { get; set; }
-        /// <summary>
-        /// AGV缂栧彿
-        /// </summary>
-        public string agvCode { get; set; }
-        /// <summary>
-        /// 浠诲姟鍙� 
-        /// </summary>
-        public string taskCode { get; set; }
-        /// <summary>
-        /// 涓嬩竴涓瓙浠诲姟搴忓垪 鎸囧畾绗嚑涓瓙浠诲姟寮�濮嬫墽琛�,鏍¢獙瀛愪换鍔℃墽琛屾槸鍚︽纭�,涓嶅~榛樿鎵ц涓嬩竴涓瓙浠诲姟銆�
-        /// </summary>
-        public string taskSeq { get; set; }
-        /// <summary>
-        /// 涓嬩竴涓綅缃俊鎭�
-        /// positionCode:浣嶇疆缂栧彿
-        /// type:瀵硅薄绫诲瀷瀹氫箟:
-        /// 00:浠h〃 nextPositionCode鏄竴涓綅缃�
-        /// 02:浠h〃 nextPositionCode鏄竴涓瓥鐣�
-        /// </summary>
-        public object nextPositionCode { get; set; }
-    }
-}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskDTO.cs"
deleted file mode 100644
index 54084f8..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskDTO.cs"
+++ /dev/null
@@ -1,86 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace WIDESEA_DTO.Agv
-{
-    /// <summary>
-    /// AGV浠诲姟
-    /// </summary>
-    public class AgvTaskDTO
-    {
-        /// <summary>
-        /// 璇锋眰缂栧彿 姣忎釜璇锋眰閮借涓�涓敮涓�缂栧彿,鍚屼竴涓姹傞噸澶嶆彁浜�,浣跨敤鍚屼竴缂栧彿
-        /// </summary>
-        public string ReqCode { get; set; }
-        /// <summary>
-        /// 浠诲姟绫诲瀷
-        /// </summary>
-        public string TaskTyp { get; set; }
-        /// <summary>
-        /// 宸ヤ綔浣�
-        /// </summary>
-        public string WbCode { get; set; }
-        /// <summary>
-        /// 浣嶇疆璺緞
-        /// </summary>
-        public List<CodePath> PositionCodePath { get; set; }
-        /// <summary>
-        /// 鎵樼洏鍙�
-        /// </summary>
-        public string ctnrCode {  get; set; }
-        /// <summary>
-        /// 杞藉叿缂栧彿
-        /// </summary>
-        public string PodCode { get; set; }
-        /// <summary>
-        /// 杞藉叿绫诲瀷
-        /// </summary>
-        public string PodTyp { get; set; }
-        /// <summary>
-        /// 鐗╂枡鎵规
-        /// </summary>
-        public string MaterialLot { get; set; }
-        /// <summary>
-        /// 浼樺厛绾�(1~127)鏈�澶т紭鍏堢骇鏈�楂� 涓虹┖鏃�,閲囩敤浠诲姟妯℃澘鐨勪紭鍏堢骇
-        /// </summary>
-        public string Priority { get; set; }
-        /// <summary>
-        /// AGV浠诲姟鍙�
-        /// </summary>
-        public string TaskCode { get; set; }
-        /// <summary>
-        /// AGV璁惧缂栧彿 濉啓鍙寚瀹氭煇涓�缂栧彿鐨凙GV鎵ц璇ヤ换鍔�
-        /// </summary>
-        public string AgvCode { get; set; }
-        /// <summary>
-        /// AGV璁惧绫诲瀷
-        /// </summary>
-        public string AgvTyp { get; set; }
-        /// <summary>
-        /// 浠诲姟缁�
-        /// </summary>
-        public string GroupId { get; set; }
-        /// <summary>
-        /// 鍖哄煙/绛栫暐<br/>
-        /// 鎸戦�夎揣鏋朵互鍙婃牴鎹墿鏂欐壒娆℃寫閫夎揣鏋舵椂鐨勫厛杩涘厛鍑鸿鍒欙紝鏀寔浠ヤ笅4涓�硷細<br/>
-        /// 1锛氭寜鐓ц揣鏋跺埌杈惧偍浣嶇殑鏃堕棿椤哄簭锛屽厛杩涘厛鍑�<br/>
-        /// 2锛氭寜鐓ц揣鏋跺埌杈惧偍浣嶇殑鏃堕棿椤哄簭锛屽厛杩涘悗鍑�<br/>
-        /// 9锛氭寜鐓ц揣鏋剁粦瀹氱墿鏂欐壒娆$殑鏃堕棿椤哄簭锛屽厛杩涘厛鍑�<br/>
-        /// 10锛氭寜鐓ц揣鏋剁粦瀹氱墿鏂欐壒娆$殑鏃堕棿椤哄簭锛屽厛杩涘悗鍑�<br/>
-        /// </summary>
-        public string PositionSelStrategy { get; set; }
-        /// <summary>
-        /// 鑷畾涔夊瓧娈�
-        /// </summary>
-        public string Data { get; set; }
-    }
-
-    public class CodePath
-    {
-        public string type { get; set; }
-        public string positionCode { get; set; }
-    }
-}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
index 5b01ba4..6d7ed31 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
@@ -225,12 +225,6 @@
         /// <returns></returns>
         WebResponseContent AGVFinish(AgvFinishDTO agvFinishDTO);
         /// <summary>
-        /// 瀹夊叏淇″彿鍥炲 WCS-AGV
-        /// </summary>
-        /// <param name="secureModel"></param>
-        /// <returns></returns>
-        WebResponseContent AgvSecureReply(AgvSecureReplyDTO secureReplyModel, APIEnum SecureReply = APIEnum.Agv_CSJSecureReply);
-        /// <summary>
         /// AGV浠诲姟鐘舵�佸埛鏂�
         /// </summary>
         /// <param name="agvUpdateModel"></param>
@@ -248,31 +242,10 @@
         /// <param name="currentAddress">淇敼鍚庣殑褰撳墠鍦板潃</param>
         /// <param name="nextAddress">淇敼鍚庣殑涓嬩竴鍦板潃</param>
         void UpdateTask(Dt_Task task, TaskStatusEnum taskStatus, string deviceCode = "", string sourceAddress = "", string targetAddress = "", string currentAddress = "", string nextAddress = "", string roadwayNo = "", int heightType = 0);
-
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <param name="agvPodModel"></param>
-        /// <param name="PodBerthAndMat"></param>
-        /// <returns></returns>
-        WebResponseContent AgvPodBerthAndMat(AgvPodBerthAndMatDTO agvPodModel, APIEnum PodBerthAndMat = APIEnum.Agv_CSJPodBerthAndMat);
         /// <summary>
         /// //鍒ゆ柇绉诲簱璐т綅浠诲姟鏄惁宸插瓨鍦紝濡傚瓨鍦ㄥ厛鎵ц
         /// </summary>
         Dt_Task QueryStackerExistTask(string PalletCode,string locationCode);
-        /// <summary>
-        /// AGV鎴愬搧鍙栨斁璐ч�氱煡
-        /// </summary>
-        WebResponseContent AgvBoxApplyPass(AGVBoxApplyPassDTO applyPassDTO, APIEnum SecureReply = APIEnum.AGV_CPBoxApplyPass);
-        /// <summary>
-        /// CTU鍙栨秷浠诲姟
-        /// </summary>
-        /// <returns></returns>
-        WebResponseContent AgvBoxApplyPass(AgvCTUCancelDTO applyPassDTO, APIEnum SecureReply = APIEnum.AGV_CTUCancelTask);
-        /// <summary>
-        /// 棰勮皟搴︽寚浠�
-        /// </summary>
-        WebResponseContent AgvPreScheduleTask(AgvScheduleTaskDTO scheduleTaskDTO, APIEnum ScheduleTask = APIEnum.AGV_CTUScheduleTaskTask);
 
         /// <summary>
         /// 鎺ュ彈WMS鎵嬪姩瀹屾垚浠诲姟
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/InvokeAGVService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/InvokeAGVService.cs"
index 0829358..cda2c49 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/InvokeAGVService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/InvokeAGVService.cs"
@@ -70,117 +70,7 @@
             }
             return content;
         }
-        /// <summary>
-        /// 瀹夊叏淇″彿鍥炲 WCS-AGV  //AGV浠诲姟缁х画鎵ц
-        /// </summary>
-        /// <param name="secureModel"></param>
-        /// <returns></returns>
-        public WebResponseContent AgvSecureReply(AgvSecureReplyDTO secureReplyModel, APIEnum SecureReply = APIEnum.Agv_CSJSecureReply)
-        {
-            WebResponseContent content = new WebResponseContent();
-            try
-            {
-                string? apiAddress = apiInfos.FirstOrDefault(x => x.ApiCode == SecureReply.ToString())?.ApiAddress;
-                if (string.IsNullOrEmpty(apiAddress))
-                    return WebResponseContent.Instance.Error($"鏈壘鍒板彂閫丄GV浠诲姟鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
-                string response = HttpHelper.Post(apiAddress, secureReplyModel.Serialize());
-                AgvResponseContent agvContent = response.DeserializeObject<AgvResponseContent>();
-                if (agvContent.Code == "0")
-                {
-                    content.OK(agvContent.Message);
-                }
-                else
-                {
-                    content.Error(agvContent.Message);
-                }
-            }
-            catch (Exception ex)
-            {
-                content.Error(ex.Message);
-            }
-            return content;
-        }
-        /// <summary>
-        /// CTU鍙栨秷浠诲姟
-        /// </summary>
-        public WebResponseContent AgvBoxApplyPass(AgvCTUCancelDTO applyPassDTO, APIEnum SecureReply = APIEnum.AGV_CTUCancelTask)
-        {
-            WebResponseContent content = new WebResponseContent();
-            try
-            {
-                string? apiAddress = apiInfos.FirstOrDefault(x => x.ApiCode == SecureReply.ToString())?.ApiAddress;
-                if (string.IsNullOrEmpty(apiAddress))
-                    return WebResponseContent.Instance.Error($"鏈壘鍒癆GV鍙栨秷浠诲姟鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
-                string response = HttpHelper.Post(apiAddress, applyPassDTO.Serialize());
-                AgvResponseContent agvContent = response.DeserializeObject<AgvResponseContent>();
-                if (agvContent.Code == "0")
-                {
-                    content.OK(agvContent.Message);
-                }
-                else
-                {
-                    content.Error(agvContent.Message);
-                }
-            }
-            catch (Exception ex)
-            {
-                content.Error(ex.Message);
-            }
-            return content;
-        }
-        /// <summary>
-        /// AGV鎴愬搧鍙栨斁璐ч�氱煡
-        /// </summary>
-        public WebResponseContent AgvBoxApplyPass(AGVBoxApplyPassDTO applyPassDTO, APIEnum SecureReply = APIEnum.AGV_CPBoxApplyPass)
-        {
-            WebResponseContent content = new WebResponseContent();
-            try
-            {
-                string? apiAddress = apiInfos.FirstOrDefault(x => x.ApiCode == SecureReply.ToString())?.ApiAddress;
-                if (string.IsNullOrEmpty(apiAddress))
-                    return WebResponseContent.Instance.Error($"鏈壘鍒板彂閫丄GV浠诲姟鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
-                string response = HttpHelper.Post(apiAddress, applyPassDTO.Serialize());
-                AgvResponseContent agvContent = response.DeserializeObject<AgvResponseContent>();
-                if (agvContent.Code == "0")
-                {
-                    content.OK(agvContent.Message);
-                }
-                else
-                {
-                    content.Error(agvContent.Message);
-                }
-            }
-            catch (Exception ex)
-            {
-                content.Error(ex.Message);
-            }
-            return content;
-        }
-        public WebResponseContent AgvPreScheduleTask(AgvScheduleTaskDTO scheduleTaskDTO, APIEnum ScheduleTask = APIEnum.AGV_CTUScheduleTaskTask)
-        {
-            WebResponseContent content = new WebResponseContent();
-            try
-            {
-                string? apiAddress = apiInfos.FirstOrDefault(x => x.ApiCode == ScheduleTask.ToString())?.ApiAddress;
-                if (string.IsNullOrEmpty(apiAddress))
-                    return WebResponseContent.Instance.Error($"鏈壘鍒板彂閫丄GV浠诲姟鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
-                string response = HttpHelper.Post(apiAddress, scheduleTaskDTO.Serialize());
-                AgvResponseContent agvContent = response.DeserializeObject<AgvResponseContent>();
-                if (agvContent.Code == "0")
-                {
-                    content.OK(agvContent.Message);
-                }
-                else
-                {
-                    content.Error(agvContent.Message);
-                }
-            }
-            catch (Exception ex)
-            {
-                content.Error(ex.Message);
-            }
-            return content;
-        }
+        
         /// <summary>
         /// AGV浠诲姟鐘舵�佸埛鏂�/AGV浠诲姟瀹屾垚
         /// </summary>
@@ -189,31 +79,6 @@
         public AgvResponseContent AgvUpdateTask(AgvUpdateDTO agvUpdateModel)
         {
             return new AgvResponseContent();
-        }
-        public WebResponseContent AgvPodBerthAndMat(AgvPodBerthAndMatDTO agvPodModel, APIEnum PodBerthAndMat = APIEnum.Agv_CSJPodBerthAndMat)
-        {
-            WebResponseContent content = new WebResponseContent();
-            try
-            {
-                string? apiAddress = apiInfos.FirstOrDefault(x => x.ApiCode == PodBerthAndMat.ToString())?.ApiAddress;
-                if (string.IsNullOrEmpty(apiAddress))
-                    return WebResponseContent.Instance.Error($"鏈壘鍒板彂閫丄GV浠诲姟鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
-                string response = HttpHelper.Post(apiAddress, agvPodModel.Serialize());
-                AgvResponseContent agvContent = response.DeserializeObject<AgvResponseContent>();
-                if (agvContent.Code == "1")
-                {
-                    content.OK(agvContent.Message);
-                }
-                else
-                {
-                    content.Error(agvContent.Message);
-                }
-            }
-            catch (Exception ex)
-            {
-                content.Error(ex.Message);
-            }
-            return content;
         }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
index 27f36e1..5918276 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -942,6 +942,11 @@
                         nextStatus = TaskStatusEnum.SC_Executing;
                     }
                 }
+                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
+                {
+                    task.TaskState = (int)TaskStatusEnum.SC_Executing;
+                    nextStatus = TaskStatusEnum.SC_Executing;
+                }
                 else
                 {
                     throw new Exception($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵task.TaskNum}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�");
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC3.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC3.cs"
index 403de01..ff16b81 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC3.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC3.cs"
@@ -398,7 +398,7 @@
             YLStackerCraneTaskCommand stackerCraneTaskCommand = new YLStackerCraneTaskCommand();
 
             stackerCraneTaskCommand.PalletType = Convert.ToInt16(task.PalletType);
-            if (task.TaskLength>=1200 && task.TaskLength<1630)
+            if (task.TaskLength>=1160 && task.TaskLength<1630)
             {
                 stackerCraneTaskCommand.PalletType = 3;
             }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/config/buttons.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/config/buttons.js"
index 5aaefe5..d6d7bb5 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/config/buttons.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/config/buttons.js"
@@ -208,6 +208,15 @@
     type: 'success',
     onClick: function () {
     }
+},
+{
+    name: "鎵嬪姩绉诲簱",
+    icon: '',
+    class: '',
+    value: 'Relocation',
+    type: 'success',
+    onClick: function () {
+    }
 }
 ]
 
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/extension/taskinfo/extend/relocationTask.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/extension/taskinfo/extend/relocationTask.vue"
new file mode 100644
index 0000000..d63bf8a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/extension/taskinfo/extend/relocationTask.vue"
@@ -0,0 +1,194 @@
+<template>
+    <div>
+      <vol-box
+        v-model="showDetialBox"
+        :lazy="true"
+        width="600px"
+        :padding="15"
+        title="鎵嬪姩绉诲簱"
+      >
+        <div>
+          <el-form>
+            <el-form-item label="璇烽�夋嫨宸烽亾锛�">
+              <el-select
+                v-model="relocationInfo.roadWay"
+                filterable
+                placeholder="璇烽�夋嫨"
+              >
+                <el-option
+                  v-for="item in Roadways"
+                  :key="item.key"
+                  :label="item.value"
+                  :value="item.key"
+                >
+                  <span style="float: left">{{ item.value }}</span>
+                  <span style="float: right; color: #8492a6; font-size: 13px">{{
+                    item.key
+                  }}</span>
+                </el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="璇疯緭璧峰琛岋細"
+              ><el-input
+                v-model="relocationInfo.startRow"
+                style="width: 180px"
+                label="璇疯緭璧峰琛�"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="璇疯緭璧峰鍒楋細"
+              ><el-input
+                v-model="relocationInfo.startColumn"
+                style="width: 180px"
+                label="璇疯緭璧峰鍒�"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="璇疯緭璧峰灞傦細"
+              ><el-input
+                v-model="relocationInfo.startLayer"
+                style="width: 180px"
+                label="璇疯緭璧峰灞�"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="璇疯緭鐩爣琛岋細"
+              ><el-input
+                v-model="relocationInfo.targetRow"
+                style="width: 180px"
+                label="璇疯緭鐩爣琛�"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="璇疯緭鐩爣鍒楋細"
+              ><el-input
+                v-model="relocationInfo.targetColumn"
+                style="width: 180px"
+                label="璇疯緭鐩爣鍒�"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="璇疯緭鐩爣灞傦細"
+              ><el-input
+                v-model="relocationInfo.targetLayer"
+                style="width: 180px"
+                label="璇疯緭鐩爣灞�"
+              ></el-input>
+            </el-form-item>
+          </el-form>
+        </div>
+        <template #footer>
+          <el-button type="primary" size="small" @click="submit">纭</el-button>
+          <el-button type="danger" size="small" @click="close">鍏抽棴</el-button>
+        </template>
+      </vol-box>
+    </div>
+  </template>
+      
+      <script>
+  import VolBox from "@/components/basic/VolBox.vue";
+  export default {
+    components: { VolBox },
+    data() {
+      return {
+        showDetialBox: false,
+        Roadways: [
+          { key: "SC01_CP", value: "1鍙峰爢鍨涙満-鎴愬搧搴�" },
+          { key: "SC02_CP", value: "2鍙峰爢鍨涙満-鎴愬搧搴�" },
+          { key: "SC03_CP", value: "3鍙峰爢鍨涙満-鎴愬搧搴�" },
+          { key: "SC04_CP", value: "4鍙峰爢鍨涙満-鎴愬搧搴�" },
+          { key: "SC05_CP", value: "5鍙峰爢鍨涙満-鎴愬搧搴�" },
+          { key: "SC01_YL", value: "1鍙峰爢鍨涙満-鍘熸枡搴�" },
+          { key: "SC02_YL", value: "2鍙峰爢鍨涙満-鍘熸枡搴�" },
+          { key: "SC03_YLDual", value: "3鍙峰爢鍨涙満-鍘熸枡搴�" },
+          { key: "SC04_YLDual", value: "4鍙峰爢鍨涙満-鍘熸枡搴�" },
+          { key: "SC05_YLDual", value: "5鍙峰爢鍨涙満-鍘熸枡搴�" },
+        ],
+        relocationInfo: {
+          startRow: null,
+          startColumn: null,
+          startLayer: null,
+          targetRow: null,
+          targetColumn: null,
+          targetLayer: null,
+          roadWay: ""
+        },
+      };
+    },
+    methods: {
+      open() {
+        this.showDetialBox = true;
+      },
+      close() {
+        this.showDetialBox = false;
+        this.relocationInfo = {
+          startRow: null,
+          startColumn: null,
+          startLayer: null,
+          targetRow: null,
+          targetColumn: null,
+          targetLayer: null,
+          roadWay: ""
+        }
+      },
+      submit() {
+        if (this.relocationInfo.roadWay == "") return this.$message.error("璇烽�夋嫨宸烽亾");
+        if (this.relocationInfo.startRow == null) return this.$message.error("璇疯緭鍏ヨ捣濮嬭");
+        if (this.relocationInfo.startColumn == null) return this.$message.error("璇疯緭鍏ヨ捣濮嬪垪");
+        if (this.relocationInfo.startLayer == null) return this.$message.error("璇疯緭鍏ヨ捣濮嬪眰");
+        if (this.relocationInfo.targetRow == null) return this.$message.error("璇疯緭鍏ョ洰鏍囪");
+        if (this.relocationInfo.targetColumn == null) return this.$message.error("璇疯緭鍏ョ洰鏍囧垪");
+        if (this.relocationInfo.targetLayer == null) return this.$message.error("璇疯緭鍏ョ洰鏍囧眰");
+        this.http
+          .post(
+            "api/Task/Relocation",
+            this.relocationInfo,
+            "鏁版嵁澶勭悊涓�"
+          )
+          .then((x) => {
+            if (!x.status) return this.$message.error(x.message);
+            this.$message.success("鎿嶄綔鎴愬姛");
+            this.$parent.refresh();
+            this.close();
+          });
+      },
+    },
+    created() {},
+  };
+  </script>
+      
+      <style scoped>
+  .el-col {
+    border-radius: 4px;
+  }
+  
+  .grid-content {
+    border-radius: 4px;
+    min-height: 36px;
+  }
+  
+  .content-text {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+  }
+  
+  .right-text {
+    display: flex;
+    align-items: center;
+    justify-content: flex-end;
+  }
+  </style>
+      <style>
+  .el-table .warning-row {
+    background: #e6a23c;
+  }
+  
+  .el-table .success-row {
+    background: #f0f9eb;
+  }
+  
+  .el-table .error-row {
+    background: #f56c6c;
+  }
+  
+  canvas {
+    display: block;
+    margin: auto;
+  }
+  </style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/extension/taskinfo/task.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/extension/taskinfo/task.js"
index de64d48..dc4970b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/extension/taskinfo/task.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/extension/taskinfo/task.js"
@@ -1,10 +1,10 @@
 
 //姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
-
+import gridHeader from './extend/relocationTask.vue'
 let extension = {
     components: {
       //鏌ヨ鐣岄潰鎵╁睍缁勪欢
-      gridHeader: '',
+      gridHeader: gridHeader,
       gridBody: '',
       gridFooter: '',
       //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
@@ -88,6 +88,12 @@
               });
         }
       }
+      let relocationBtn = this.buttons.find(x => x.value == 'Relocation');
+      if (relocationBtn) {
+        relocationBtn.onClick = function () {
+          this.$refs.gridHeader.open();
+        }
+      }
       },
       onInited() {
         //妗嗘灦鍒濆鍖栭厤缃悗
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/Service/LocationInfoService_Common.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/Service/LocationInfoService_Common.cs"
index 408d4bf..54175ab 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/Service/LocationInfoService_Common.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/Service/LocationInfoService_Common.cs"
@@ -125,7 +125,7 @@
                         }
                         //鏌ヨ绌鸿揣浣嶄俊鎭苟鎺掗櫎5鍒嗛挓鍐呭垎閰嶇殑璐т綅,鏍规嵁灞傘�佸垪銆佹繁搴︺�佽鎺掑簭
                         List<Dt_LocationInfo> locationInfosMedium = BaseDal.QueryData(x => x.LocationType == LocationTypeEnum.MediumPallet.ObjToInt() && x.RoadwayNo == roadwayNo && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && !lockLocations.Contains(x.LocationCode), orderBy);
-                        Dt_LocationInfo locationInfo = new Dt_LocationInfo();
+                        Dt_LocationInfo? locationInfo = null;
                         foreach (var item in locationInfosMedium)
                         {
                             if (LayerLimit && (item.Layer == 7 || item.Layer == 8))
@@ -133,6 +133,11 @@
                                 locationInfo = item;
                                 break;
                             }
+                            if (!LayerLimit && item.Columns<=6 && item.Layer != 7 && item.Layer != 8)
+                            {
+                                locationInfo = item;
+                                break;
+                            }
                             //鑾峰彇鏇存敼搴撲綅
                             Dt_LocationInfo? nearLocation1;
                             Dt_LocationInfo? nearLocation2;
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/OrderEnum/OutboundOrderMenu.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/OrderEnum/OutboundOrderMenu.cs"
index 2e29148..7a3c2f1 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/OrderEnum/OutboundOrderMenu.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/OrderEnum/OutboundOrderMenu.cs"
@@ -55,6 +55,11 @@
         /// 浜屾湡MES棰嗘枡
         /// </summary>
         [Description("浜屾湡MES棰嗘枡")]
-        OutMESPick = 2
+        OutMESPick = 2,
+        /// <summary>
+        /// 浜屾湡鎴愬搧閿�鍞鏂�
+        /// </summary>
+        [Description("浜屾湡鎴愬搧閿�鍞鏂�")]
+        OutProSalePick = 3
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/Task/WMSTaskDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/Task/WMSTaskDTO.cs"
index c6e515e..6d63af9 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/Task/WMSTaskDTO.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_DTO/Task/WMSTaskDTO.cs"
@@ -95,4 +95,38 @@
         public string WorkCentreCode { get; set; }
 
     }
+    /// <summary>
+    /// 绉诲簱鎸囦护
+    /// </summary>
+    public class RelocationDTO
+    {
+        /// <summary>
+        /// 璧峰琛�
+        /// </summary>
+        public int StartRow { get; set; }
+        /// <summary>
+        /// 璧峰鍒�
+        /// </summary>
+        public int StartColumn { get; set; }
+        /// <summary>
+        /// 璧峰鍒�
+        /// </summary>
+        public int StartLayer { get; set; }
+        /// <summary>
+        /// 鐩爣琛�
+        /// </summary>
+        public int TargetRow { get; set; }
+        /// <summary>
+        /// 鐩爣鍒�
+        /// </summary>
+        public int TargetColumn { get; set; }
+        /// <summary>
+        /// 鐩爣灞�
+        /// </summary>
+        public int TargetLayer { get; set; }
+        /// <summary>
+        /// 绉诲簱宸烽亾
+        /// </summary>
+        public string RoadWay { get; set; }
+    }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs"
index 967a02c..e3ae0ba 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs"
@@ -180,13 +180,13 @@
         WebResponseContent RequestYLWMSTaskOut(YLWMSTaskOutDTO yLWMSTaskOutDTO);
 
         /// <summary>
-        /// 鍘熸枡绉诲簱
+        /// 绉诲簱
         /// </summary>
         /// <param name="startAddress"></param>
         /// <param name="endAddress"></param>
         /// <param name="roadWay"></param>
         /// <returns></returns>
-        WebResponseContent IsRelocation(string startAddress, string endAddress, string roadWay);
+        WebResponseContent IsRelocation(RelocationDTO relocationDTO);
         /// <summary>
         /// 鍘熸枡宸烽亾闂寸Щ搴撲换鍔�
         /// </summary>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_StockService/StockInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_StockService/StockInfoService.cs"
index 247c7aa..c5458b1 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_StockService/StockInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_StockService/StockInfoService.cs"
@@ -117,7 +117,7 @@
                     MaterielCode = materielInfo.MaterielCode,
                     MaterielName=materielInfo.MaterielName,
                 };
-                if (wide>1200)
+                if (wide>=1160)
                 {
                     stockInfo.PalletType = 2;
                 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/MesTaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/MesTaskService.cs"
index 182cac7..560f30f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/MesTaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/MesTaskService.cs"
@@ -282,7 +282,7 @@
                             IsPick = returnMaterial.Whether == 0 ? WhetherEnum.True.ObjToInt() : WhetherEnum.False.ObjToInt(),
                             Remark = StockStatusEmun.MES浣欐枡閫�搴�.ToString()
                         };
-                        if (stockInfo.MaterielWide > 1200)
+                        if (stockInfo.MaterielWide >= 1160)
                         {
                             stockInfo.PalletType = 2;
                         }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Completed.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Completed.cs"
index 26fdebf..b4485f9 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Completed.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Completed.cs"
@@ -13,6 +13,7 @@
 using WIDESEA_Core;
 using WIDESEA_Core.Helper;
 using WIDESEA_DTO.Task;
+using WIDESEA_External.Model;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_TaskInfoService
@@ -107,6 +108,24 @@
                     wmsTask.TaskType = task.TaskType;
                     wmsTask.TargetAddress = task.TargetAddress;
                     BaseDal.UpdateData(wmsTask);
+                    if (wmsTask.TaskType>=TaskTypeEnum.WFBYLInbound.ObjToInt() && wmsTask.TaskType <= TaskTypeEnum.PrintYLInbound.ObjToInt() && wmsTask.TaskStatus==TaskStatusEnum.AGV_TakeFinish.ObjToInt())
+                    {
+                        Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x=>x.PalletCode== wmsTask.PalletCode);
+                        string request = _invokeERPService.ERPSemiProInUp(
+                            new ERPProInUpModel()
+                            {
+                                PB_INV_PRODUCT_IN = new List<PB_INV_PRODUCT_INItem>()
+                                {
+                                    new PB_INV_PRODUCT_INItem()
+                                    {
+                                        WP_ID = 0,
+                                        INV_BARCODE = wmsTask.PalletCode,
+                                        REMARK = "鍗婃垚鍝佸叆搴�",
+                                        QTY=(int)stockInfo.StockLength
+                                    }
+                                }
+                            }) ?? throw new Exception("鍗婃垚鍝佸叆搴撴帴鍙h姹傚け璐�");
+                    }
                 }
                 return WebResponseContent.Instance.OK();
             }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
index e1b621b..0dd2c7b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
@@ -459,9 +459,9 @@
                         {
                             throw new Exception($"鏈壘鍒板叆搴撳崟鍙蜂负{inboundOrder.PurchaseOrderNo}鏉$爜{palletCode}鍗曟嵁淇℃伅");
                         }
-                        if (inboundOrderDetail.PurchaseDetailWide < 690)
+                        if (inboundOrderDetail.PurchaseDetailWide < 690 || inboundOrderDetail.PurchaseDetailWide > 2500)
                         {
-                            return content.Error("鏂板巶鐗╂枡骞呭闄愬埗涓�690-2700mm");
+                            return content.Error($"鐗╂枡骞呭闄愬埗涓�690-2500mm,褰撳墠绾稿嵎骞呭{inboundOrderDetail.PurchaseDetailWide}");
                         }
                         if (inboundOrderDetail.PurchaseDetailThickness <= 0)
                         {
@@ -509,7 +509,7 @@
                                 BatchNo = inboundOrderDetail.MaterialLot,
                                 StockLength = inboundOrderDetail.PurchaseDetailQuantity
                             };
-                            if (inboundOrderDetail.PurchaseDetailWide > 1200)
+                            if (inboundOrderDetail.PurchaseDetailWide >= 1160)
                             {
                                 stockInfo.PalletType = 2;
                             }
@@ -554,9 +554,9 @@
                         {
                             throw new Exception($"鏈壘鍒板叆搴撳崟鍙蜂负{inboundOrder.UpperOrderNo}鏉$爜{palletCode}鍗曟嵁淇℃伅");
                         }
-                        if (inboundOrderDetail.MaterialWide < 690)
+                        if (inboundOrderDetail.MaterialWide < 690 || inboundOrderDetail.MaterialWide > 2500)
                         {
-                            return content.Error("鏂板巶鐗╂枡骞呭闄愬埗涓�690-2700mm");
+                            return content.Error($"鐗╂枡骞呭闄愬埗涓�690-2500mm,褰撳墠绾稿嵎骞呭{inboundOrderDetail.MaterialWide}");
                         }
                         if (inboundOrderDetail.MaterialThick <= 0)
                         {
@@ -604,7 +604,7 @@
                                 BatchNo = inboundOrderDetail.MaterialLot,
                                 StockLength = inboundOrderDetail.OrderQuantity
                             };
-                            if (inboundOrderDetail.MaterialWide > 1200)
+                            if (inboundOrderDetail.MaterialWide >= 1160)
                             {
                                 stockInfo.PalletType = 2;
                             }
@@ -651,9 +651,11 @@
                         }
 
                         BSTStockInfoDTO bSTStockInfoDTO = bSTResponse.Data ?? throw new Exception($"涓�鏈烢RP鏈繑鍥瀧palletCode}鐨勫簱瀛樹俊鎭�");
-
+                        if (bSTStockInfoDTO.W < 690 || bSTStockInfoDTO.W > 2500)
+                        {
+                            return content.Error($"鐗╂枡骞呭闄愬埗涓�690-2500mm,褰撳墠绾稿嵎骞呭{bSTStockInfoDTO.W}");
+                        }
                         Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterialSourceId == bSTStockInfoDTO.MaterialId) ?? throw new Exception($"鏈壘鍒版潯鐮亄palletCode}鐗╂枡淇℃伅{bSTStockInfoDTO.MaterialNo}");
-
                         //鐢熸垚搴撳瓨缁勭洏淇℃伅
                         Dt_StockInfo stockInfo = new Dt_StockInfo()
                         {
@@ -675,7 +677,7 @@
                             StockLength = bSTStockInfoDTO.StockMeter,
                             MaterielId = materielInfo.MaterialSourceId
                         };
-                        if (bSTStockInfoDTO.W > 1200)
+                        if (bSTStockInfoDTO.W >= 1160)
                         {
                             stockInfo.PalletType = 2;
                         }
@@ -729,6 +731,10 @@
                         }
                         else if (yLInboundCache.BarCode != palletCode && yLInboundCache.BindStatus == WhetherEnum.True.ObjToInt())
                         {
+                            if (purchaseBSTOrderDetail.MaterialWide < 690 || purchaseBSTOrderDetail.MaterialWide > 2500)
+                            {
+                                return content.Error($"鐗╂枡骞呭闄愬埗涓�690-2500mm,褰撳墠绾稿嵎骞呭{purchaseBSTOrderDetail.MaterialWide}");
+                            }
                             yLInboundCache = _mapper.Map<Dt_YLInboundCache>(purchaseBSTOrderDetail);
                             yLInboundCache.Id = Id;
                             //鑾峰彇閲囪喘涓诲崟
@@ -756,7 +762,7 @@
                                 StockLength = purchaseBSTOrderDetail.ProcurementLength,
                                 MaterielId = purchaseBSTOrderDetail.MaterialId
                             };
-                            if (purchaseBSTOrderDetail.MaterialWide > 1200)
+                            if (purchaseBSTOrderDetail.MaterialWide >= 1160)
                             {
                                 stockInfo.PalletType = 2;
                             }
@@ -1051,6 +1057,21 @@
                     _unitOfWorkManage.CommitTran();
                     //璁板綍搴撳瓨鍙樺姩
                     _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, stockInfo.StockLength, 0, StockChangeTypeEnum.Inbound,taskNum:task.TaskNum);
+                    //涓婃姤鏂板巶ERP
+                    if (stockInfo.MaterielInvOrgId==MaterielInvOrgEnum.鏂板巶.ObjToInt() && task.TaskType == TaskTypeEnum.Inbound.ObjToInt())
+                    {
+                        string request = _invokeERPService.ERPPurchaseUp(new ERPPurchaseUpModel()
+                        {
+                            INV_BARCODE_RFID = new List<INV_BARCODE_RFIDItem>()
+                            {
+                                new INV_BARCODE_RFIDItem()
+                                {
+                                    INV_BARCODE=stockInfo.PalletCode,
+                                    RFID_BARCODE=stockInfo.RfidCode
+                                }
+                            }
+                        });
+                    }
                     //涓婃姤鑰佸巶ERP
                     if (stockInfo.MaterielInvOrgId == MaterielInvOrgEnum.鑰佸巶.ObjToInt() && task.TaskType == TaskTypeEnum.Inbound.ObjToInt())
                     {
@@ -1631,7 +1652,7 @@
                     MaterielCode = materielInfo.MaterielCode,
                     MaterielName = materielInfo.MaterielName,
                 };
-                if (wide > 1200)
+                if (wide >= 1160)
                 {
                     stockInfo.PalletType = 2;
                 }
@@ -1717,7 +1738,7 @@
                     MaterielCode = materielInfo.MaterielCode,
                     MaterielName = materielInfo.MaterielName,
                 };
-                if (wide > 1200)
+                if (wide >= 1160)
                 {
                     stockInfo.PalletType = 2;
                 }
@@ -1895,7 +1916,7 @@
                         MaterielName = materielInfo.MaterielName,
                         StockLength=item.ProQuantity
                     };
-                    if (item.Wide > 1200)
+                    if (item.Wide >= 1160)
                     {
                         stockInfo.PalletType = 2;
                     }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
index 7e82669..2fad111 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
@@ -136,12 +136,32 @@
                     if (proStockInfo != null && proStockInfo.StockStatus==StockStatusEmun.鍑哄簱閿佸畾.ObjToInt())
                     {
                         task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
+                        //鑾峰彇鎵�鏈夊嚭搴撹鎯呮暟鎹�
+                        List<Dt_OutStockLockInfo>? outStockLockInfos = _outboundRepository.OutStockLockInfoRepository.QueryData(x => x.TaskNum == task.TaskNum);
                         _unitOfWorkManage.BeginTran();
                         proStockInfo.StockStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt();
                         _stockRepository.ProStockInfoRepository.DeleteAndMoveIntoHty(proStockInfo,App.User.UserId > 0 ? OperateTypeEnum.浜哄伐瀹屾垚 : OperateTypeEnum.鑷姩瀹屾垚);
                         if (proStockInfo.proStockInfoDetails!=null && proStockInfo.proStockInfoDetails.Count>0)
                         {
                             _stockRepository.ProStockInfoDetailRepository.DeleteAndMoveIntoHty(proStockInfo.proStockInfoDetails, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐瀹屾垚 : OperateTypeEnum.鑷姩瀹屾垚);
+                        }
+                        if (outStockLockInfos != null && outStockLockInfos.Count > 0)
+                        {
+                            outStockLockInfos.ForEach(x =>
+                            {
+                                x.Status = OutLockStockStatusEnum.鍑哄簱瀹屾垚.ObjToInt();
+                            });
+                            List<Dt_OutStockLockInfo> outStockLockInfosMES = outStockLockInfos.Where(x => x.OrderType == OutOrderTypeEnum.OutMESPick.ObjToInt()).ToList();
+                            if (outStockLockInfosMES != null && outStockLockInfosMES.Count() > 0)
+                            {
+                                Dt_AGVStationInfo aGVStationInfo = _basicRepository.AGVStationInfoRepository.QueryFirst(x => x.AGVStationCode == task.TargetAddress);
+                                MESDeliveryModel mESDeliveryModel = MESDeliveryUp(outStockLockInfosMES, aGVStationInfo.MESPointCode);
+                                MESResponse response = _invokeMESService.MESDelivery(mESDeliveryModel).DeserializeObject<MESResponse>() ?? throw new Exception("鏈幏鍙栧埌杩斿洖淇℃伅");
+                                if (!response.Result)
+                                {
+                                    throw new Exception($"MES閰嶉�佸嚭鍙戞帴鍙h皟鐢ㄦ姤閿�,MES杩斿洖淇℃伅{DecodeUnicode(response.Msg)}");
+                                }
+                            }
                         }
                         _basicService.LocationInfoService.UpdateLocationStatus(locationInfoStart, proStockInfo.PalletType, LocationStatusEnum.Free, proStockInfo.WarehouseId);
                         BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐瀹屾垚 : OperateTypeEnum.鑷姩瀹屾垚);
@@ -1049,6 +1069,7 @@
             }
             catch (Exception ex)
             {
+                _unitOfWorkManage.RollbackTran();
                 content.Error(ex.Message);
             }
             return content;
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Reloaction.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Reloaction.cs"
index f018f52..5b9017b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Reloaction.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Reloaction.cs"
@@ -132,84 +132,185 @@
         //}
         public WebResponseContent RelocationTaskCompleted(Dt_Task task)
         {
+            WebResponseContent content = new WebResponseContent();
             try
             {
-                Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
-                if (stockInfo == null)
+                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == task.WarehouseId);
+                if (warehouse.WarehouseCode == WarehouseEnum.LLDCP.ToString() || warehouse.WarehouseCode == WarehouseEnum.LLDFL.ToString()) //鎴愬搧/杈呮枡瀹屾垚
                 {
-                    return WebResponseContent.Instance.Error($"鏈壘鍒板搴旇揣浣嶇殑搴撳瓨淇℃伅");
+                    Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>().Where(x => x.PalletCode == task.PalletCode && x.LocationCode == task.SourceAddress).Includes(x => x.proStockInfoDetails).First();
+                    if (proStockInfo == null)
+                    {
+                        return content.Error($"鏈壘鍒板搴旂殑搴撳瓨淇℃伅");
+                    }
+                    Dt_LocationInfo locationInfoStart = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+                    if (locationInfoStart == null)
+                    {
+                        return content.Error($"鏈壘鍒板搴旂殑璧风偣璐т綅淇℃伅");
+                    }
+                    Dt_LocationInfo locationInfoEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
+                    if (locationInfoEnd == null)
+                    {
+                        return content.Error($"鏈壘鍒板搴旂殑缁堢偣璐т綅淇℃伅");
+                    }
+                    task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
+                    _unitOfWorkManage.BeginTran();
+                    proStockInfo.LocationCode = locationInfoEnd.LocationCode;
+                    proStockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+                    _stockRepository.ProStockInfoRepository.UpdateData(proStockInfo);
+                    _basicService.LocationInfoService.UpdateLocationStatus(locationInfoStart, proStockInfo.PalletType, LocationStatusEnum.Free, proStockInfo.WarehouseId);
+                    _basicService.LocationInfoService.UpdateLocationStatus(locationInfoEnd, proStockInfo.PalletType, LocationStatusEnum.InStock, proStockInfo.WarehouseId);
+                    BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.浜哄伐瀹屾垚 : WIDESEA_Core.Enums.OperateTypeEnum.鑷姩瀹屾垚);
+                    _unitOfWorkManage.CommitTran();
                 }
+                else
+                {
+                    Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.PalletCode == task.PalletCode && x.LocationCode == task.SourceAddress);
+                    if (stockInfo == null)
+                    {
+                        return content.Error($"鏈壘鍒板搴旂殑搴撳瓨淇℃伅");
+                    }
 
-                Dt_LocationInfo locationInfoStart = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
-                if (locationInfoStart == null)
-                {
-                    return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑璧风偣璐т綅淇℃伅");
-                }
+                    Dt_LocationInfo locationInfoStart = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+                    if (locationInfoStart == null)
+                    {
+                        return content.Error($"鏈壘鍒板搴旂殑璧风偣璐т綅淇℃伅");
+                    }
 
-                Dt_LocationInfo locationInfoEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
-                if (locationInfoEnd == null)
-                {
-                    return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑缁堢偣璐т綅淇℃伅");
+                    Dt_LocationInfo locationInfoEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
+                    if (locationInfoEnd == null)
+                    {
+                        return content.Error($"鏈壘鍒板搴旂殑缁堢偣璐т綅淇℃伅");
+                    }
+                    task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
+                    _unitOfWorkManage.BeginTran();
+                    stockInfo.LocationCode = locationInfoEnd.LocationCode;
+                    stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+                    _stockService.StockInfoService.Repository.UpdateData(stockInfo);
+                    _basicService.LocationInfoService.UpdateLocationStatus(locationInfoStart, stockInfo.PalletType, LocationStatusEnum.Free, stockInfo.WarehouseId);
+                    _basicService.LocationInfoService.UpdateLocationStatus(locationInfoEnd, stockInfo.PalletType, LocationStatusEnum.InStock, stockInfo.WarehouseId);
+                    BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.浜哄伐瀹屾垚 : WIDESEA_Core.Enums.OperateTypeEnum.鑷姩瀹屾垚);
+                    _unitOfWorkManage.CommitTran();
                 }
-                task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
-                _unitOfWorkManage.BeginTran();
-                stockInfo.LocationCode = locationInfoEnd.LocationCode;
-                stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
-                _stockService.StockInfoService.Repository.UpdateData(stockInfo);
-                _basicService.LocationInfoService.UpdateLocationStatus(locationInfoStart, stockInfo.PalletType, LocationStatusEnum.Free, stockInfo.WarehouseId);
-                _basicService.LocationInfoService.UpdateLocationStatus(locationInfoEnd, stockInfo.PalletType, LocationStatusEnum.InStock, stockInfo.WarehouseId);
-                BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.浜哄伐瀹屾垚 : WIDESEA_Core.Enums.OperateTypeEnum.鑷姩瀹屾垚);
-                _unitOfWorkManage.CommitTran();
-                return WebResponseContent.Instance.OK();
+                content.OK();
             }
             catch (Exception ex)
             {
                 _unitOfWorkManage.RollbackTran();
-                return WebResponseContent.Instance.Error(ex.Message);
+                return content.Error(ex.Message);
             }
+            return content;
         }
-        public WebResponseContent IsRelocation(string startAddress,string endAddress,string roadWay)
+        /// <summary>
+        /// 绉诲簱
+        /// </summary>
+        /// <param name="startAddress"></param>
+        /// <param name="endAddress"></param>
+        /// <param name="roadWay"></param>
+        /// <returns></returns>
+        public WebResponseContent IsRelocation(RelocationDTO relocation)
         {
             WebResponseContent content = new WebResponseContent();
             try
             {
                 //鑾峰彇璐т綅
-                Dt_LocationInfo startLocationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.LocationCode == startAddress);
-                Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.LocationCode == startAddress);
-                Dt_LocationInfo endLocationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.LocationCode == endAddress);
+                Dt_LocationInfo startLocationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.Row == relocation.StartRow && x.Columns == relocation.StartColumn && x.Layer == relocation.StartLayer && x.RoadwayNo == relocation.RoadWay);
+                Dt_LocationInfo endLocationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.Row == relocation.TargetRow && x.Columns == relocation.TargetColumn && x.Layer == relocation.TargetLayer && x.RoadwayNo == relocation.RoadWay);
+                
                 //鍒ゆ柇鏉′欢
-                if (startLocationInfo != null && startLocationInfo.LocationStatus==LocationStatusEnum.InStock.ObjToInt() && endLocationInfo != null && endLocationInfo.LocationStatus==LocationStatusEnum.Free.ObjToInt() && endLocationInfo.EnableStatus==EnableStatusEnum.Normal.ObjToInt() && stockInfo!=null)
+                if (startLocationInfo != null && startLocationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt() && startLocationInfo.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && endLocationInfo != null && endLocationInfo.LocationStatus == LocationStatusEnum.Free.ObjToInt() && endLocationInfo.EnableStatus == EnableStatusEnum.Normal.ObjToInt())
                 {
+                    Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.LocationCode == startLocationInfo.LocationCode);
+                    Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.QueryFirst(x => x.LocationCode == startLocationInfo.LocationCode);
+                    bool IsCPRoadway = relocation.RoadWay.Contains("CP");
+                    bool IsYLRoadway = relocation.RoadWay.Contains("YL");
+                    if ((IsCPRoadway && proStockInfo==null) || (IsYLRoadway && stockInfo == null))
+                    {
+                        throw new Exception($"鏈壘鍒皗relocation.RoadWay}绉诲簱搴撳瓨");
+                    }
+                    Dt_StockInfo stockInfoEnd = _stockRepository.StockInfoRepository.QueryFirst(x => x.LocationCode == endLocationInfo.LocationCode);
+                    Dt_ProStockInfo proStockEnd = _stockRepository.ProStockInfoRepository.QueryFirst(x => x.LocationCode == endLocationInfo.LocationCode);
+                    if ((IsCPRoadway && proStockEnd != null) || (IsYLRoadway && stockInfoEnd != null))
+                    {
+                        throw new Exception($"{relocation.RoadWay}鐩爣搴撳瓨宸插瓨鍦�");
+                    }
+                    if (relocation.RoadWay.Contains("YLDual"))
+                    {
+                        if (startLocationInfo.LocationType != endLocationInfo.LocationType)
+                        {
+                            throw new Exception($"娣峰悎宸烽亾{relocation.RoadWay}璧峰涓庣洰鏍囪揣浣嶇被鍨嬩笉绗�,璇锋煡鐪嬭揣浣嶇姸鎬�");
+                        }
+                        if (stockInfo.PalletType != endLocationInfo.LocationType)
+                        {
+                            throw new Exception($"娣峰悎宸烽亾{relocation.RoadWay}绉诲簱搴撳瓨涓庣洰鏍囪揣浣嶇被鍨嬩笉绗�,璇锋煡鐪嬭揣浣嶇姸鎬�");
+                        }
+                        if ((relocation.TargetLayer == 7 || relocation.TargetLayer == 8) && stockInfo.CheckThickness>700)
+                        {
+                            throw new Exception($"鐩爣璐т綅闄愰珮700,绉诲簱搴撳瓨楂樺害{stockInfo.CheckThickness}瓒呭嚭");
+                        }
+
+                        if (relocation.TargetColumn >= 7 && relocation.TargetLayer != 7 && relocation.TargetLayer != 8 && endLocationInfo.LocationType==LocationTypeEnum.MediumPallet.ObjToInt())
+                        {
+                            ////鑾峰彇鏇存敼搴撲綅
+                            Dt_LocationInfo? nearLocation1;
+                            Dt_LocationInfo? nearLocation2;
+
+                            nearLocation1 = _basicRepository.LocationInfoRepository.QueryFirst(x => x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && x.Row == endLocationInfo.Row && x.Layer == endLocationInfo.Layer && x.Columns == endLocationInfo.Columns - 1);
+                            nearLocation2 = _basicRepository.LocationInfoRepository.QueryFirst(x => x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && x.Row == endLocationInfo.Row && x.Layer == endLocationInfo.Layer && x.Columns == endLocationInfo.Columns + 1);
+                            if (nearLocation1 == null || nearLocation2 == null)
+                            {
+                                throw new Exception($"鐩爣璐т綅{endLocationInfo.LocationCode}涓哄ぇ璐х被鍨�,涓や晶灏忚揣浣嶅瓨鍦ㄥ崰鐢ㄦ垨绂佺敤鐘舵��,璇锋煡鐪嬭揣浣嶇姸鎬�");
+                            }
+                        }
+                    }
+                    else if (relocation.RoadWay.Contains("YL"))
+                    {
+                        if ((endLocationInfo.Columns < 56 && startLocationInfo.Columns>=56) && stockInfo.CheckThickness > 1300)
+                        {
+                            throw new Exception($"绉诲簱璐т綅鐗╂枡楂樺害{stockInfo.CheckThickness}瓒呭嚭1300,鐩爣璐т綅瀛樻斁瑙勫垯瓒呭嚭");
+                        }
+                    }
                     //鐢熸垚浠诲姟
                     Dt_Task newTask = new Dt_Task()
                     {
-                        Roadway = roadWay,
-                        WarehouseId = stockInfo.WarehouseId,
+                        Roadway = relocation.RoadWay,
+                        WarehouseId = IsCPRoadway ? proStockInfo.WarehouseId:stockInfo.WarehouseId,
                         CurrentAddress = startLocationInfo.LocationCode,
                         Grade = 99,
                         NextAddress = endLocationInfo.LocationCode,
                         OrderNo = "",
-                        PalletCode = stockInfo.PalletCode,
-                        PalletType = stockInfo.PalletType,
+                        PalletCode = IsCPRoadway ? proStockInfo.PalletCode : stockInfo.PalletCode,
+                        PalletType = IsCPRoadway ? proStockInfo.PalletType : stockInfo.PalletType,
                         SourceAddress = startLocationInfo.LocationCode,
                         TargetAddress = endLocationInfo.LocationCode,
                         TaskNum = Repository.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
                         TaskStatus = TaskStatusEnum.SC_Execute.ObjToInt(),
                         TaskType = TaskTypeEnum.Relocation.ObjToInt()
                     };
-                    stockInfo.StockStatus = StockStatusEmun.绉诲簱閿佸畾.ObjToInt();
+                    
                     _unitOfWorkManage.BeginTran();
                     Repository.AddData(newTask);
-                    _basicService.LocationInfoService.UpdateLocationStatus(startLocationInfo, stockInfo.PalletType, LocationStatusEnum.Lock, stockInfo.WarehouseId);
-                    _basicService.LocationInfoService.UpdateLocationStatus(endLocationInfo, stockInfo.PalletType, LocationStatusEnum.Lock, stockInfo.WarehouseId);
-                    _stockService.StockInfoService.Repository.UpdateData(stockInfo);
+                    if (!IsCPRoadway)
+                    {
+                        stockInfo.StockStatus = StockStatusEmun.绉诲簱閿佸畾.ObjToInt();
+                        _basicService.LocationInfoService.UpdateLocationStatus(startLocationInfo, stockInfo.PalletType, LocationStatusEnum.Lock, stockInfo.WarehouseId);
+                        _basicService.LocationInfoService.UpdateLocationStatus(endLocationInfo, stockInfo.PalletType, LocationStatusEnum.Lock, stockInfo.WarehouseId);
+                        _stockService.StockInfoService.Repository.UpdateData(stockInfo);
+                    }
+                    else
+                    {
+                        proStockInfo.StockStatus = StockStatusEmun.绉诲簱閿佸畾.ObjToInt();
+                        _basicService.LocationInfoService.UpdateLocationStatus(startLocationInfo, proStockInfo.PalletType, LocationStatusEnum.Lock, proStockInfo.WarehouseId);
+                        _basicService.LocationInfoService.UpdateLocationStatus(endLocationInfo, proStockInfo.PalletType, LocationStatusEnum.Lock, proStockInfo.WarehouseId);
+                        _stockService.ProStockInfoService.Repository.UpdateData(proStockInfo);
+                    }
                     _unitOfWorkManage.CommitTran();
                     PushTasksToWCS(new List<Dt_Task> { newTask });
                     content.OK("鎴愬姛");
                 }
                 else
                 {
-                    content.Error("搴撳瓨璐т綅淇℃伅涓虹┖");
+                    content.Error("绉诲簱鎴栫洰鏍囪揣浣嶄笉婊¤冻绉诲簱鏉′欢,璇锋煡鐪嬩袱璐т綅鐘舵��");
                 }
             }
             catch (Exception ex)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/ERP/ErpBSTController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/ERP/ErpBSTController.cs"
index 9a53c52..d191358 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/ERP/ErpBSTController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/ERP/ErpBSTController.cs"
@@ -81,7 +81,7 @@
         /// 鎺ユ敹涓�鏈熺敓绠℃帓绋嬩俊鎭�
         /// </summary>
         /// <returns></returns>
-        [HttpPost, HttpGet, Route("ReceiveOutOrder"), AllowAnonymous]
+        [HttpPost, HttpGet, Route("ReceiveOutOrder")]
         public WebResponseContent AddOutSGOrder([FromBody] List<SGOutOrderDTO> outOrderDTOs)
         {
             return _taskService.AddOutSGOrder(outOrderDTOs);
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
index 6e7bed8..72fb24d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
@@ -251,13 +251,13 @@
         }
 
         /// <summary>
-        /// 鍘熸枡绉诲簱浠诲姟
+        /// 绉诲簱浠诲姟
         /// </summary>
         /// <returns></returns>
         [HttpPost, HttpGet, Route("Relocation"), AllowAnonymous]
-        public WebResponseContent IsRelocation(string startAddress, string endAddress, string roadWay)
+        public WebResponseContent IsRelocation([FromBody] RelocationDTO relocationDTO)
         {
-            return Service.IsRelocation(startAddress, endAddress, roadWay);
+            return Service.IsRelocation(relocationDTO);
         }
         /// <summary>
         /// 鍘熸枡宸烽亾闂寸Щ搴撲换鍔�

--
Gitblit v1.9.3