From e719f3e5d5d16ee8a9dece97d9889610507628ac Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期一, 18 八月 2025 08:15:27 +0800
Subject: [PATCH] 1

---
 项目代码/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs     |   18 -
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/StackerCraneJob_CP.cs               |    3 
 项目资料/技术协议/龙利得项目对接记录.xlsx                                                      |    0 
 项目代码/WMS/WMSClient/src/views/stock/stockInfo.vue                              |    6 
 项目代码/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs |   34 ++
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPD.cs              |   23 +
 项目代码/WCS/WCSServices/WIDESEAWCS_Server/appsettings.json                       |    6 
 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs                   |    4 
 项目代码/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_AGVStationInfo.cs          |    5 
 项目代码/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs       |   68 ++--
 项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs                |  101 -----
 项目资料/通信协议/原料库输送线通讯协议.xlsx                                                     |    0 
 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Completed.cs         |    2 
 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs           |  106 ++++++
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/AGV_CPExtend.cs                     |    4 
 项目资料/技术协议/利拓系统对龙利得二期系统的需求.docx                                                |    0 
 项目资料/通信协议/成品输送线通讯协议_20250707.xlsx                                             |    0 
 项目代码/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs                 |   19 +
 项目资料/接口协议/MES.xlsx                                                            |    0 
 项目代码/WMS/WMSServices/WIDESEA_Common/CommonEnum/AGVStationAreaEnum.cs          |   64 ++-
 项目代码/WMS/WMSClient/src/views/basic/agvStationInfo.vue                         |    1 
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/原料库/ConveyorLineJob_YL1ndFloor.cs       |   19 
 项目代码/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs               |   44 +-
 项目资料/接口协议/龙利德点位.xlsx                                                          |    0 
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/原料库/StackerCraneJob_YLSC2.cs            |   56 +-
 项目代码/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs                  |    6 
 项目资料/通信协议/龙利得软件计划表.xlsx                                                       |    0 
 项目代码/WMS/WMSServices/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs            |    5 
 项目代码/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvUpdateDTO.cs                       |    2 
 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs          |  233 ++++++++++++++
 项目代码/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs              |   14 
 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Reloaction.cs        |   82 +++-
 32 files changed, 624 insertions(+), 301 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
index f893828..aa83b00 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
@@ -29,21 +29,25 @@
         /// </summary>
         [Description("璐ㄦ鍑哄簱")]
         OutQuality = 130,
+
         /// <summary>
         /// 绌虹鍑哄簱
         /// </summary>
         [Description("绌虹鍑哄簱")]
         OutEmpty = 140,
+
         /// <summary>
         /// 璋冩嫧鍑哄簱
         /// </summary>
         [Description("璋冩嫧鍑哄簱")]
         OutAllocate = 150,
+
         /// <summary>
-        /// 鍙犵洏鍑哄簱
+        /// 鑰佸巶鍑哄簱
         /// </summary>
-        [Description("鍙犵洏鍑哄簱")]
-        StackingPlates = 160,
+        [Description("鑰佸巶鍑哄簱")]
+        OldOutbound = 160,
+
         /// <summary>
         /// MES鍑哄簱
         /// </summary>
@@ -72,7 +76,7 @@
         [Description("鎴愬搧瀵勫敭鍑哄簱")]
         OutSendProduct = 240,
         /// <summary>
-        /// 鎴愬搧MES鍑哄簱/鎻愬簱
+        /// 鎴愬搧MES鎻愬簱
         /// </summary>
         [Description("鎴愬搧MES鎻愬簱")]
         OutMesRworkProduct = 250,
@@ -110,6 +114,12 @@
         MesMatReturn = 560,
 
         /// <summary>
+        /// 璋冩嫧鍏ュ簱
+        /// </summary>
+        [Description("璋冩嫧鍏ュ簱")]
+        InAllocate = 570,
+
+        /// <summary>
         /// MES澶х┖鎵橀��鏂�
         /// </summary>
         [Description("MES澶х┖鎵橀��鏂�")]
@@ -122,27 +132,9 @@
         MesPalletSmallReturn = 585,
 
         /// <summary>
-        /// 璋冩嫧鍏ュ簱
+        /// 鎵嬪姩鍏ュ簱
         /// </summary>
-        [Description("璋冩嫧鍏ュ簱")]
-        InAllocate = 570,
-
-        /// <summary>
-        /// 绾胯竟浠撳叆搴�
-        /// </summary>
-        [Description("绾胯竟浠撳叆搴�")]
-        InboundXB = 580,
-
-        /// <summary>
-        /// 鏈哄彴鍏ュ簱
-        /// </summary>
-        [Description("鏈哄彴鍏ュ簱")]
-        InboundJT = 590,
-
-        /// <summary>
-        /// 绌虹鍏ュ簱
-        /// </summary>
-        [Description("绌虹鍏ュ簱")]
+        [Description("鎵嬪姩鍏ュ簱")]
         InEmpty = 600,
 
         /// <summary>
@@ -157,9 +149,9 @@
         [Description("鎴愬搧浣欐枡鍥炲簱")]
         InProductBack = 620,
         /// <summary>
-        /// 鎴愬搧绌烘鍥炲簱
+        /// 鎴愬搧绌烘墭鍥炲簱
         /// </summary>
-        [Description("鎴愬搧绌烘鍥炲簱")]
+        [Description("鎴愬搧绌烘墭鍥炲簱")]
         EmptyProductBack = 630,
 
         /// <summary>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvUpdateDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvUpdateDTO.cs"
index 1945e64..0f3aea6 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvUpdateDTO.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvUpdateDTO.cs"
@@ -25,6 +25,6 @@
         /// 1鍙栬揣瀹屾垚<br/>
         /// 2鏀捐揣瀹屾垚<br/>
         /// </summary>
-        public int GoodsState { get; set; }
+        public string GoodsState { 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 4aab91b..2d1bf0a 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"
@@ -91,16 +91,6 @@
         //WebResponseContent RequestWMSTask(string palletCode, string sourceAddress, string roadway);
 
         /// <summary>
-        /// 
-        /// </summary>
-        /// <param name="sourceAddress"></param>
-        /// <param name="palletCode"></param>
-        /// <param name="heightType"></param>
-        /// <param name="roadways"></param>
-        /// <returns></returns>
-        WebResponseContent RequestWMSTask(string palletCode, string sourceAddress, int heightType, List<string> roadways);
-
-        /// <summary>
         /// 鍚慦MS鐢宠鍒嗛厤璐т綅
         /// </summary>
         /// <param name="taskNum">浠诲姟鍙�</param>
@@ -275,10 +265,6 @@
         /// </summary>
         /// <returns></returns>
         WebResponseContent AgvBoxApplyPass(AgvCTUCancelDTO applyPassDTO, APIEnum SecureReply = APIEnum.AGV_CTUCancelTask);
-        /// <summary>
-        /// 鐢熸垚绌烘浠诲姟
-        /// </summary>
-        WebResponseContent AgvCarrying(int row, int startColumn, int endColumn, int layer, int targetLayer);
         /// <summary>
         /// 棰勮皟搴︽寚浠�
         /// </summary>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs"
index d4daa32..4724199 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs"
@@ -51,7 +51,7 @@
             {
                 var task = _taskRepository.QueryFirst(x => secureApplyModel.ReceiveTaskID.ObjToInt() == x.TaskNum);
                 if (task == null) throw new Exception("鏈壘鍒颁换鍔�");
-                if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt())
+                if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                 {
                     var content = TakeRequest(task.CurrentAddress);
                     if (!content.Status)
@@ -200,17 +200,18 @@
                 if (task == null) throw new Exception($"鏈壘鍒颁换鍔�,浠诲姟鍙枫�恵agvUpdateModel.ReceiveTaskID}銆�");
                 switch (agvUpdateModel.GoodsState)
                 {
-                    //case 1://鍑哄簱鏍规嵁杩欎釜淇″彿鍒ゆ柇鍙栬揣瀹屾垚
-                    //    if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt())
-                    //    {
-                    //        var content = TakeFinish(task.CurrentAddress);
-                    //        if (!content.Status) throw new Exception(content.Message);
-                    //        task.TaskState = TaskStatusEnum.AGV_Finish.ObjToInt();
-                    //        var up = _taskRepository.DeleteAndMoveIntoHty(task, OperateTypeEnum.鑷姩瀹屾垚);
-                    //        _taskService.TaskCompleted(task.TaskNum);
-                    //    }
-                    //    break;
-                    case 2://鍏ュ簱鏍规嵁杩欎釜淇″彿鍒ゆ柇鏀捐揣瀹屾垚
+                    case "1"://鍑哄簱鏍规嵁杩欎釜淇″彿鍒ゆ柇鍙栬揣瀹屾垚
+                        if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+                        {
+                            var content = TakeFinish(task.CurrentAddress);
+                            if (!content.Status) 
+                            {
+                                throw new Exception(content.Message);
+                            };
+                            return agvResponse.OK("鎴愬姛", "0");
+                        }
+                        break;
+                    case "2"://鍏ュ簱鏍规嵁杩欎釜淇″彿鍒ゆ柇鏀捐揣瀹屾垚
                         if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
                         {
                             Dt_StationManger dt_Station = _stationMangerRepository.QueryFirst(x => x.StationCode == task.NextAddress);
@@ -224,6 +225,11 @@
                             task.DeviceCode = dt_Station.StationDeviceCode;
                             var up = _taskRepository.UpdateData(task);
                             return agvResponse.OK("鎴愬姛","0");
+                        }
+                        else if(task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+                        {
+                            _taskService.TaskCompleted(task.TaskNum);
+                            return agvResponse.OK("鎴愬姛", "0");
                         }
                         break;
                     default:
@@ -321,45 +327,36 @@
         [HttpPost, HttpGet, Route("TakeRequest"), AllowAnonymous]
         public WebResponseContent TakeRequest(string code)
         {
+            WebResponseContent content = new WebResponseContent();
             try
             {
-                Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.AGVStationCode == code);
+                Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == code);
                 if (stationManger == null)
                 {
-                    return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃�");
+                    return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃畕code}");
                 }
                 IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManger.StationDeviceCode);
                 if (device == null)
                 {
-                    return WebResponseContent.Instance.Error($"鏈壘鍒板搴旇澶�");
+                    return WebResponseContent.Instance.Error($"鏈壘鍒板搴旇澶噞stationManger.StationDeviceCode}");
                 }
 
                 OtherDevice otherDevice = (OtherDevice)device;
 
-                bool canPut = otherDevice.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanTake, stationManger.StationCode);
-                if (canPut)
+                short Command = otherDevice.GetValue<R_ConveyorLineCPDB, short>(R_ConveyorLineCPDB.Command, stationManger.StationCode);
+                if (Command == 2)
                 {
-                    otherDevice.SetValue(GroundStationDBName.W_TakeRequest, true, stationManger.StationCode);
-                    return WebResponseContent.Instance.OK();
+                    content.OK("鍏佽鍙栨枡");
                 }
                 else
                 {
-                    otherDevice.SetValue(GroundStationDBName.W_TakeRequest, true, stationManger.StationCode);
-                    Thread.Sleep(1000);
-                    canPut = otherDevice.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanTake, stationManger.StationCode);
-                    if (canPut)
-                    {
-                        return WebResponseContent.Instance.OK();
-                    }
-                    else
-                    {
-                        return WebResponseContent.Instance.Error($"鍙栬揣鐢宠涓�");
-                    }
+                    return content.Error("绂佹鍙栨枡");
                 }
+                return content;
             }
             catch (Exception ex)
             {
-                return WebResponseContent.Instance.Error(ex.Message);
+                return content.Error(ex.Message);
             }
         }
 
@@ -374,7 +371,7 @@
         {
             try
             {
-                Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.AGVStationCode == code);
+                Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == code);
                 if (stationManger == null)
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃�");
@@ -386,9 +383,10 @@
                 }
 
                 OtherDevice otherDevice = (OtherDevice)device;
-                otherDevice.SetValue(GroundStationDBName.W_TakeFinish, true, stationManger.StationCode);
-                Thread.Sleep(1000);
-                otherDevice.SetValue(GroundStationDBName.W_TakeFinish, false, stationManger.StationCode);
+                if (device.DeviceCode.Contains("CP"))
+                {
+                    otherDevice.SetValue(W_ConveyorLineCPDB.W_Command, 2, stationManger.StationCode);
+                }
                 return WebResponseContent.Instance.OK();
             }
             catch (Exception ex)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
index 8e1d69a..35a9f81 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
@@ -80,11 +80,6 @@
         {
             return WebResponseContent.Instance.OK(data: _routerExtension.GetEndPoint(startPoint, routeType));
         }
-        [HttpPost, HttpGet, Route("AgvCarrying"), AllowAnonymous]
-        public WebResponseContent AgvCarrying(int row, int startColumn, int endColumn, int layer, int targetLayer)
-        {
-            return Service.AgvCarrying(row, startColumn, endColumn, layer, targetLayer);
-        }
         /// <summary>
         /// 娴嬭瘯鍫嗗灈鏈哄嚭搴�
         /// </summary>
@@ -119,19 +114,6 @@
         {
             return Service.RequestWMSTaskSimple(palletCode,sourceAddress, roadWay, taskType);
         }
-        //[HttpPost, HttpGet, Route("WebSocketPushMessage"), AllowAnonymous]
-        //public WebResponseContent WebSocketPushMessage(string message)
-        //{
-        //    try
-        //    {
-        //         _webSocketServer.PublishAllClientPayload(message);
-        //        return WebResponseContent.Instance.OK();
-        //    }
-        //    catch(Exception ex)
-        //    {
-        //        return WebResponseContent.Instance.Error(ex.Message);
-        //    }
-        //}
         [HttpPost, HttpGet, Route("RecWMSTaskCompleted"), AllowAnonymous]
         public WebResponseContent RecWMSTaskCompleted(int taskNum)
         {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/appsettings.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/appsettings.json"
index 33aa85e..ceb7f2f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/appsettings.json"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/appsettings.json"
@@ -13,10 +13,10 @@
   "DBType": "SqlServer",
   //杩炴帴瀛楃涓�
   //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=",
-  "ConnectionString": "Data Source=.;Initial Catalog=WIDESEA_WCSLLD;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
-  //"ConnectionString": "Data Source=10.30.4.92;Initial Catalog=TestWCS_TC;User ID=sa;Password=duo123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
+  "ConnectionString": "Data Source=192.168.35.3;Initial Catalog=WIDESEA_WCSLLD;User ID=sa;Password=Sa123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
+  //"ConnectionString": "Data Source=192.168.35.3;Initial Catalog=TestWCS_TC;User ID=sa;Password=Sa123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
   //"ConnectionString": "Data Source=10.30.4.92;Initial Catalog=TESTWCSCP_WCS;User ID=sa;Password=duo123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
-  "WMSConnectionStrings": "Data Source=.;Initial Catalog=WIDESEA_WMSLLD;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
+  "WMSConnectionStrings": "Data Source=192.168.35.3;Initial Catalog=WIDESEA_WMSLLD;User ID=sa;Password=Sa123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
   //"WMSConnectionStrings": "Data Source=10.30.4.92;Initial Catalog=WIDESEAWMS_HUAIAN;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
   //璺ㄥ煙
   "Cors": {
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 fbca59f..f8398a4 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"
@@ -139,53 +139,6 @@
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
-        public WebResponseContent AgvCarrying(int row,int startColumn, int endColumn, int startlayer,int targetLayer)
-        {
-            try
-            {
-                List<Dt_Task> tasks = new List<Dt_Task>();
-                for (int i = startColumn; i <= endColumn; i++)
-                {
-                    string column = i.ToString();
-                    if (i<10)
-                    {
-                        column = "0" + i.ToString();
-                    }
-                    string layer = targetLayer.ToString();
-                    if (targetLayer<10)
-                    {
-                        layer = "0"+targetLayer.ToString();
-                    }
-                    Dt_Task task = new Dt_Task()
-                    {
-                        WarehouseId = 7,
-                        TaskNum = DateTime.Now.ToString("yyMMddHHmm").ObjToInt() + i,
-                        PalletCode= DateTime.Now.ToString("yyMMddHHmm") +i,
-                        PalletType=0,
-                        DeviceCode="AGV_CP",
-                        Roadway= "AGV_CP",
-                        TaskType =999,
-                        SourceAddress=string.Format($"AGV_CP-00{row}-0{column}-00{startlayer}-01"),
-                        CurrentAddress=string.Format($"AGV_CP-00{row}-0{column}-00{startlayer}-01"),
-                        TargetAddress= string.Format($"AGV_CP-00{row}-0{column}-00{layer}-01"),
-                        NextAddress= string.Format($"AGV_CP-00{row}-0{column}-00{layer}-01"),
-                        Grade=0,
-                        WMSId=0,
-                        AgvTaskNum = "CP" + DateTime.Now.ToString("yyMMddHHmm").ObjToInt() + i,
-                        TaskState = TaskStatusEnum.New.ObjToInt(),
-                        Remark= "娴嬭瘯绌烘"
-                    };
-                    tasks.Add(task);
-                }
-                BaseDal.AddData(tasks);
-                return WebResponseContent.Instance.OK("");
-            }
-            catch (Exception ex)
-            {
-                return WebResponseContent.Instance.Error(ex.Message);
-            }
-
-        }
         /// <summary>
         /// 鎺ユ敹WMS浠诲姟淇℃伅
         /// </summary>
@@ -211,10 +164,18 @@
                     task.CurrentAddress = item.SourceAddress;
 
                     Dt_Router? router;
-
+                    if (task.TaskType==TaskTypeEnum.Relocation.ObjToInt())
+                    {
+                        task.DeviceCode = task.Roadway;
+                        task.NextAddress = task.TargetAddress;
+                        task.TaskState = TaskStatusEnum.SC_Execute.ObjToInt();
+                        tasks.Add(task);
+                        break;
+                    }
                     TaskTypeGroup taskTypeGroup = item.TaskType.GetTaskTypeGroup();
                     if (string.IsNullOrEmpty(item.AGVArea))
                     {
+                        
                         Dt_StationManger stationManger;
                         //鑾峰彇绔欏彴淇℃伅
                         if (taskTypeGroup == TaskTypeGroup.InboundGroup)
@@ -239,27 +200,30 @@
 
                         if (routers.Count == 1)
                         {
+                            //鍏ュ簱
                             if (taskTypeGroup == TaskTypeGroup.InboundGroup)
                             {
                                 task.CurrentAddress = router.StartPosi;
                                 task.NextAddress = router.NextPosi;
                                 task.DeviceCode = router.ChildPosiDeviceCode;
                             }
-                            else
+                            else //鍑哄簱
                             {
                                 task.DeviceCode = stationManger.StackerCraneCode;
                                 task.NextAddress = router.NextPosi;
+                                task.TaskState = (int)TaskStatusEnum.SC_Execute;
                             }
                         }
                         else
                         {
+                            //鎴愬搧鐮佸灈浠诲姟鐢熸垚
                             if (taskTypeGroup == TaskTypeGroup.InboundGroup && !task.Roadway.Contains("YL"))
                             {
                                 task.CurrentAddress = router.StartPosi;
                                 task.NextAddress = "";
                                 task.DeviceCode = router.ChildPosiDeviceCode;
                             }
-                            else
+                            else if(taskTypeGroup == TaskTypeGroup.InboundGroup && task.Roadway.Contains("YL")) //鍘熸枡鍏ュ簱
                             {
                                 router = routers.FirstOrDefault(x=>x.ChildPosiDeviceCode==task.Roadway);
                                 task.CurrentAddress = router.StartPosi;
@@ -270,6 +234,7 @@
                     }
                     else
                     {
+                        //鎴愬搧鍏ュ簱
                         List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == item.TaskType && x.StartPosi=="AGV" && x.ChildPosiDeviceCode==item.RoadWay);
                         router = routers.FirstOrDefault();
                         if (routers.Count == 1)
@@ -461,42 +426,6 @@
         //    return content;
         //}
 
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <param name="sourceAddress"></param>
-        /// <param name="palletCode"></param>
-        /// <param name="heightType"></param>
-        /// <param name="roadways"></param>
-        /// <returns></returns>
-        public WebResponseContent RequestWMSTask(string palletCode, string sourceAddress,  int heightType, List<string> roadways)
-        {
-            WebResponseContent content = new WebResponseContent();
-            try
-            {
-                string address = AppSettings.Get("WMSApiAddress");
-                if (string.IsNullOrEmpty(address))
-                {
-                    return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
-                }
-                string responseStr = HttpHelper.Post($"{address}/api/Task/DeviceRequestInboundTaskByRoadways?stationCode={sourceAddress}&palletCode={palletCode}&heightType={heightType}", roadways.Serialize());
-                WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
-                if (responseContent != null && responseContent.Status && responseContent.Data != null)
-                {
-                    WMSTaskDTO? taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(responseContent.Data.ToString());
-                    if (taskDTO != null)
-                    {
-                        content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
-                    }
-                }
-
-            }
-            catch (Exception ex)
-            {
-                content = WebResponseContent.Instance.Error(ex.Message);
-            }
-            return content;
-        }
 
         /// <summary>
         /// 鍒嗛厤宸烽亾
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/ConveyorLineJob_YL1ndFloor.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/ConveyorLineJob_YL1ndFloor.cs"
index e7cd405..2267256 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/ConveyorLineJob_YL1ndFloor.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/ConveyorLineJob_YL1ndFloor.cs"
@@ -126,29 +126,18 @@
                                 
                             }
                         }
-                        else if (conveyorLineInfoRead != null && item.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt() && conveyorLineInfoRead.WR_ToHode <= 0 && conveyorLineInfoRead.WR_Request == 99 && !string.IsNullOrEmpty(conveyorLineInfoRead.WR_TMID) && conveyorLineInfoRead.WR_Task <= 0) //鍑虹珯鍙板垎閰嶇洰鏍囩偣
+                        else if (conveyorLineInfoRead != null && item.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt() && conveyorLineInfoRead.WR_ToHode <= 0 && conveyorLineInfoRead.WR_Request == 99 && conveyorLineInfoRead.WR_Task <= 0) //鍑虹珯鍙板垎閰嶇洰鏍囩偣
                         {
                             Dt_Task task = _taskRepository.QueryFirst(x => x.CurrentAddress == item.StationCode && _taskService.TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Execute.ObjToInt() && x.DeviceCode == device.DeviceCode);
                             if (task != null)
                             {
-                                List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == task.TaskType && task.CurrentAddress == x.StartPosi);
-                                Dt_Router? router = routers.FirstOrDefault();
-                                if (routers == null || routers.Count == 0 || router == null)
-                                {
-                                    WriteError(item.StationName, $"鏈壘鍒板搴旇矾鐢变俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
-                                    continue;
-                                }
-                                if (routers.Count > 1)
-                                {
-                                    WriteError(item.StationName, $"璺敱淇℃伅閰嶇疆閿欒,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
-                                    continue;
-                                }
                                 //鍙戦�佺洰鏍囩偣
                                 device.SetValue(WR_CLineYLDB.WR_Task, task.TaskNum, item.StationCode);
+                                device.SetValue(WR_CLineYLDB.WR_Width, task.TaskLength, item.StationCode);
                                 device.SetValue(WR_CLineYLDB.WR_TMID, task.PalletCode, item.StationCode);
-                                device.SetValue(WR_CLineYLDB.WR_ToHode, router.NextPosi, item.StationCode);
+                                device.SetValue(WR_CLineYLDB.WR_ToHode, task.NextAddress, item.StationCode);
                                 device.SetValue(WR_CLineYLDB.WR_Reresult, 86, item.StationCode);
-                                _taskService.UpdateTask(task,TaskStatusEnum.Line_Executing,nextAddress: router.NextPosi);
+                                _taskService.UpdateTask(task,TaskStatusEnum.Line_Executing);
                             }
                         }
                         else if (conveyorLineInfoRead != null && item.StationType == StationTypeEnum.StationType_InboundAndOutbound.ObjToInt() && conveyorLineInfoRead.WR_Task > 0 && conveyorLineInfoRead.WR_Request == 98) //涓�妤艰�佸巶鍑哄簱鍙e畬鎴�
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_YLSC2.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_YLSC2.cs"
index 0d28a1b..4c1a6ca 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_YLSC2.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_YLSC2.cs"
@@ -132,16 +132,10 @@
                             return WebResponseContent.Instance.Error($"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
                         }
                         int oldStatus = task.TaskState;
-                        task.DeviceCode = stationManger.StationDeviceCode;
-                        task.TaskState = TaskStatusEnum.Line_Execute.ObjToInt();
-                        task.CurrentAddress = stationManger.StationCode;
-                        task.NextAddress = router.NextPosi;
-                        task.TargetAddress = router.NextPosi;
-                        _taskRepository.UpdateData(task);
                         //todo 鍫嗗灈鏈哄畬鎴愬畬鎴�
-                        //_taskService.UpdateTask(task, TaskStatusEnum.Line_Execute, deviceCode: stationManger.StationDeviceCode, currentAddress: stationManger.StationCode, nextAddress: router.NextPosi, targetAddress: router.NextPosi);
+                        _taskService.UpdateTask(task, TaskStatusEnum.Line_Execute, deviceCode: stationManger.StationDeviceCode, currentAddress: stationManger.StationCode, nextAddress: router.NextPosi);
                         _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"绯荤粺鑷姩娴佺▼,浠诲姟鐘舵�佷粠銆恵oldStatus}銆戣浆鍒般�恵task.TaskState}銆�");
-                        WriteInfo(deviceCode, $"鍫嗗灈鏈轰换鍔″畬鎴�,浠诲姟鍙�:{taskNum}");
+                        WriteInfo(deviceCode, $"鍫嗗灈鏈哄嚭搴撲换鍔″畬鎴�,浠诲姟鍙�:{taskNum}");
                     }
                     else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup || task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
                     {
@@ -203,28 +197,28 @@
                 }
             }
 
-            //if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
-            //{
-            //    if (OutTaskStationIsOccupied(task) == null)
-            //    {
-            //        bool flag = false;
-            //        List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress, task.TaskType).Select(x => x.ChildPosi).ToList();
-            //        List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStaionCodes);
-            //        foreach (var item in tasks)
-            //        {
-            //            if (OutTaskStationIsOccupied(task) != null)
-            //            {
-            //                flag = true;
-            //                break;
-            //            }
-            //        }
-            //        if (!flag)
-            //        {
-            //            task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
-            //        }
-            //    }
-            //}
-
+            if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+            {
+                if (OutTaskStationIsOccupied(task) == null)
+                {
+                    bool flag = false;
+                    List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress, task.TaskType).Select(x => x.ChildPosi).ToList();
+                    List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStaionCodes);
+                    foreach (var item in tasks)
+                    {
+                        if (OutTaskStationIsOccupied(task) != null)
+                        {
+                            flag = true;
+                            break;
+                        }
+                    }
+                    if (!flag)
+                    {
+                        task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
+                    }
+                }
+            }
+            task = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode);
             return task;
         }
 
@@ -242,7 +236,7 @@
                 if (device != null)
                 {
                     OtherDevice client = (OtherDevice)device;
-                    if (client.GetValue<R_ConveyorLineCPDB, short>(R_ConveyorLineCPDB.Command, stationManger.StationCode) == 3)//鍑哄簱绔欏彴鏈鍗犵敤
+                    if (client.GetValue<WR_CLineYLDB, short>(WR_CLineYLDB.WR_Request, stationManger.StationCode) != 99)//鍑哄簱绔欏彴鏈鍗犵敤
                     {
                         task.NextAddress = stationManger.StackerCraneStationCode;
                         _taskRepository.UpdateData(task);
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/AGV_CPExtend.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/AGV_CPExtend.cs"
index 85f37d2..06e8917 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/AGV_CPExtend.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/AGV_CPExtend.cs"
@@ -90,6 +90,10 @@
                             {
                                 throw new Exception("鏈壘鍒癆GV绔欑偣");
                             }
+                            if (!stationMangerStart.StationCode.Contains("PNT") && stationMangerEnd.StationCode.Contains("PNT"))
+                            {
+                                agvTaskSend.TaskCode = "DUIGAO2";
+                            }
                             //鍙戦�丄GV浠诲姟
                             WebResponseContent content = _taskService.AgvSendTask(agvTaskSend, APIEnum.AgvSendTask);
                             if (!content.Status)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPD.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPD.cs"
index 5f2809f..d36d9ec 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPD.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPD.cs"
@@ -100,12 +100,31 @@
                                 //鏇存柊浠诲姟淇℃伅
                                 task.CurrentAddress = item.StationCode;
                                 task.NextAddress = router.NextPosi;
-                                task.PalletType = 1;
-                                task.PalletCode = conveyorLineInfoRead.PalletCode;
                                 _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing);
                                 WriteInfo(item.StationName, $"浠诲姟鍙穥conveyorLineInfoRead.TaskNo}涓嬩竴姝�");
                             }
                         }
+                        else if (conveyorLineInfoRead != null && conveyorLineInfoRead.Command == 2 && conveyorLineInfoRead.TaskNo > 0)
+                        {
+                            Dt_Task task = _taskRepository.QueryFirst(x =>x.TaskNum== conveyorLineInfoRead.TaskNo &&  x.NextAddress == item.StationCode && _taskService.TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode);
+                            if (task != null)
+                            {
+                                //鍒嗛厤宸烽亾 瀛樺叆鎵樼洏鏁版嵁
+                                List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == task.TaskType && task.NextAddress == x.StartPosi);
+                                Dt_Router router = routers.FirstOrDefault();
+                                if (router == null)
+                                {
+                                    WriteError(item.StationName, $"浠诲姟鍙�:{task.TaskNum}鏈壘鍒拌矾鐢遍厤缃俊鎭�");
+                                    return Task.CompletedTask;
+                                }
+                                //鏇存柊浠诲姟淇℃伅
+                                task.CurrentAddress = router.StartPosi;
+                                task.NextAddress = task.TargetAddress;
+                                task.DeviceCode = router.NextPosi;
+                                _taskService.UpdateTask(task, TaskStatusEnum.AGV_Execute);
+                                WriteInfo(item.StationName, $"浠诲姟鍙穥conveyorLineInfoRead.TaskNo}涓嬩竴姝�");
+                            }
+                        }
                     }
                     else if (item.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt() && deviceProRead != null)
                     {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/StackerCraneJob_CP.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/StackerCraneJob_CP.cs"
index 87c5655..789ddf7 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/StackerCraneJob_CP.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/StackerCraneJob_CP.cs"
@@ -136,8 +136,7 @@
                         task.TaskState = TaskStatusEnum.Line_Execute.ObjToInt();
                         task.CurrentAddress = stationManger.StationCode;
                         task.NextAddress = router.NextPosi;
-                        task.TargetAddress = router.NextPosi;
-                        _taskRepository.UpdateData(task);
+                        _taskService.UpdateTask(task, TaskStatusEnum.Line_Execute);
                         //todo 鍫嗗灈鏈哄畬鎴愬畬鎴�
                         //_taskService.UpdateTask(task, TaskStatusEnum.Line_Execute, deviceCode: stationManger.StationDeviceCode, currentAddress: stationManger.StationCode, nextAddress: router.NextPosi, targetAddress: router.NextPosi);
                         _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"绯荤粺鑷姩娴佺▼,浠诲姟鐘舵�佷粠銆恵oldStatus}銆戣浆鍒般�恵task.TaskState}銆�");
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/basic/agvStationInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/basic/agvStationInfo.vue"
index 8c72388..6d178e4 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/basic/agvStationInfo.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/basic/agvStationInfo.vue"
@@ -84,6 +84,7 @@
                        {field:'agvStationHeight',title:'鍙栨斁楂樺害',type:'float',width:110,require:true,align:'left'},
                        {field:'agvFrontCode',title:'AGV鍓嶇疆鐐�',type:'string',width:110,require:true,align:'left'},
                        {field:'stationArea',title:'AGV鍖哄煙',type:'string',width:110,require:true,align:'left',bind: { key: "agvStationAreaEnum", data: [] }},
+                       {field:'isOccupied',title:'鏄惁鍗犵敤',type:'string',width:110,require:true,align:'left',bind: { key: "enable", data: [] }},
                        {field:'creater',title:'鍒涘缓鑰�',type:'string',width:110,require:true,align:'left'},
                        {field:'createDate',title:'鍒涘缓鏃堕棿',type:'datetime',width:150,require:true,align:'left'},
                        {field:'modifier',title:'淇敼浜�',type:'string',width:100,align:'left'},
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/stock/stockInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/stock/stockInfo.vue"
index ccc4acd..3ba97af 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/stock/stockInfo.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/stock/stockInfo.vue"
@@ -48,8 +48,10 @@
       });
       const searchFormOptions = ref([
         [
-          { title: "鎵樼洏缂栧彿", field: "palletCode" },
-          { title: "璐т綅缂栧彿", field: "locationCode" },
+          { title: "鎵樼洏缂栧彿", field: "palletCode",type:"like" },
+          { title: "璐т綅缂栧彿", field: "locationCode",type:"like" },
+          {title: "搴撳瓨缁勭粐", field:"materielInvOrgId",type:"select",dataKey:"materielInvOrgEnum",data:[]},
+          {title: "鐗╂枡缂栧彿", field:"materielCode",type:"like"},
         ],
       ]);
       const columns = ref([
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/CommonEnum/AGVStationAreaEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/CommonEnum/AGVStationAreaEnum.cs"
index 2f85b79..d68fb1c 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/CommonEnum/AGVStationAreaEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/CommonEnum/AGVStationAreaEnum.cs"
@@ -12,49 +12,73 @@
         /// <summary>
         /// 鏈堝彴鍖�
         /// </summary>
-        [Description("鏈堝彴鐮佸ご")]
-        AreaA = 0,
-
-        /// <summary>
-        /// 鎴愬搧鍖�
-        /// </summary>
-        [Description("鎴愬搧搴撳唴")]
-        AreaB = 1,
+        [Description("鏈堝彴鍖�")]
+        AreaA = 1,
 
         /// <summary>
         /// 鍏ュ簱鍖�
         /// </summary>
         [Description("鍏ュ簱鍖�")]
-        AreaC = 2,
-
-        /// <summary>
-        /// 娣嬭啘鍖�
-        /// </summary>
-        [Description("娣嬭啘鍖�")]
-        AreaD = 3,
+        AreaB = 2,
 
         /// <summary>
         /// 缁囧竷鍖�
         /// </summary>
         [Description("缁囧竷鍖�")]
-        AreaE = 4,
+        AreaC = 3,
+
+        /// <summary>
+        /// 娣嬭啘鍖�
+        /// </summary>
+        [Description("娣嬭啘鍖�")]
+        AreaD = 4,
 
         /// <summary>
         /// 鏆傚瓨鍖�
         /// </summary>
-        [Description("缁囧竷鍖�")]
-        AreaF = 5,
+        [Description("鏆傚瓨鍖�")]
+        AreaE = 5,
 
         /// <summary>
         /// 鍗板埛鍖�
         /// </summary>
         [Description("鍗板埛鍖�")]
-        AreaG = 6,
+        AreaF = 6,
 
         /// <summary>
         /// 鍐插垏鍖�
         /// </summary>
         [Description("鍐插垏鍖�")]
-        AreaH = 7
+        AreaG = 7,
+
+        /// <summary>
+        /// 鍘熸枡鍖�
+        /// </summary>
+        [Description("鍘熸枡鍖�")]
+        AreaH = 8,
+
+        /// <summary>
+        /// 绾歌鍖�
+        /// </summary>
+        [Description("绾歌鍖�")]
+        AreaI = 9,
+
+        /// <summary>
+        /// 甯冭鍖�
+        /// </summary>
+        [Description("甯冭鍖�")]
+        AreaJ = 10,
+
+        /// <summary>
+        /// 绾告澂鍖�
+        /// </summary>
+        [Description("绾告澂鍖�")]
+        AreaK = 11,
+
+        /// <summary>
+        /// 闆惧寲鍖�
+        /// </summary>
+        [Description("闆惧寲鍖�")]
+        AreaL = 12
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs"
index e672fbc..2cd97a0 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs"
@@ -43,6 +43,12 @@
         OutAllocate = 150,
 
         /// <summary>
+        /// 鑰佸巶鍑哄簱
+        /// </summary>
+        [Description("鑰佸巶鍑哄簱")]
+        OldOutbound = 160,
+
+        /// <summary>
         /// MES鍑哄簱
         /// </summary>
         [Description("MES鍑哄簱")]
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs"
index c3d90ee..ad755aa 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs"
@@ -77,6 +77,11 @@
         /// </summary>
         [Description("鎴愬搧搴�")]
         LLDCP,
+        /// <summary>
+        /// 鍘熸枡搴�
+        /// </summary>
+        [Description("鍘熸枡搴�")]
+        LLDYL,
     }
     public enum WarehouseTypEnum
     {
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 01f13f3..2043f3f 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"
@@ -72,7 +72,7 @@
         WebResponseContent RequestYLWMSTaskSimple(string stationCode, string palletCode);
 
         /// <summary>
-        /// 鍒嗛厤宸烽亾
+        /// 鍒嗛厤鍘熸枡宸烽亾
         /// </summary>
         /// <returns></returns>
         string AssignYLRoadwayNo(string palletCode);
@@ -166,5 +166,22 @@
         /// <param name="startPoint"></param>
         /// <returns></returns>
         WebResponseContent EmptyBackTask(string barCode, string startPoint);
+
+        /// <summary>
+        /// 鎴愬搧鍑哄簱
+        /// </summary>
+        /// <param name="Count"></param>
+        /// <returns></returns>
+        WebResponseContent RequestCPWMSTaskOut(int Count);
+        /// <summary>
+        /// 鍘熸枡鍑哄簱浠诲姟
+        /// </summary>
+        /// <param name="materielCode">鐗╂枡浠g爜</param>
+        /// <param name="materielWide">鐗╂枡骞呭</param>
+        /// <param name="Count">鍗锋暟</param>
+        /// <returns></returns>
+        WebResponseContent RequestYLWMSTaskOut(string materielCode, int materielWide, int Count);
+
+        WebResponseContent IsRelocation(string startAddress, string endAddress, string roadWay);
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_AGVStationInfo.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_AGVStationInfo.cs"
index 13a0859..ae1dc37 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_AGVStationInfo.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_AGVStationInfo.cs"
@@ -40,6 +40,11 @@
         [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鍖哄煙")]
         public int StationArea { get; set; }
         /// <summary>
+        /// 鏄惁鍗犵敤
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鏄惁鍗犵敤")]
+        public int IsOccupied { get; set; }
+        /// <summary>
         /// 澶囨敞
         /// </summary>
         [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "澶囨敞")]
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs"
index 50f0f44..5ddf32a 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs"
@@ -72,9 +72,9 @@
                 {nameof(Dt_Task.CreateDate),OrderByType.Asc},
             };
 
-        public List<int> TaskTypes => typeof(TaskTypeEnum).GetEnumIndexList();
+        public List<int> TaskInboundTypes => typeof(TaskTypeEnum).GetEnumIndexList().Where(x => x >= 500 && x < 900).ToList();
 
-        public List<int> TaskOutboundTypes => typeof(TaskTypeEnum).GetEnumIndexList();
+        public List<int> TaskOutboundTypes => typeof(TaskTypeEnum).GetEnumIndexList().Where(x => x >= 100 && x < 500).ToList();
 
         public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockRepository stockRepository, IBasicService basicService, IRecordService recordService, IStockService stockService, IBasicRepository basicRepository, IApiInfoRepository apiInfoRepository, IInvokeERPService invokeERPService, IPalletTypeInfoRepository palletTypeInfoRepository, IAGVStationInfoRepository agvStationInfoRepository) : base(BaseDal)
         {
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 4a6f8b5..1ddd8a0 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"
@@ -34,7 +34,7 @@
                 }
                 else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                 {
-                    return await Task.FromResult(RelocationTaskCompleted(task));
+                    return await Task.FromResult(OutboundTaskCompleted(task));
                 }
                 else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
                 {
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 bd50d60..bb167ed 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"
@@ -4,6 +4,7 @@
 using System.Collections;
 using System.Collections.Generic;
 using System.Linq;
+using System.Reflection.Metadata;
 using System.Text;
 using System.Text.RegularExpressions;
 using System.Threading.Tasks;
@@ -189,15 +190,15 @@
                 }
 
                 string roadwayNo = "";
-                if (stockInfo.MaterielWide < 2200 && stockInfo.MaterielThickness > 800)
+                if (stockInfo.MaterielThickness > 800)
                 {
-                    List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo.Contains("SC01_YL")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
-                    roadwayNo = locationCounts.OrderBy(x => x.Count).FirstOrDefault()?.RoadwayNo ?? "";
-                }
-                else if (stockInfo.MaterielWide>2200 && stockInfo.MaterielThickness>800)
-                {
-                    List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && !x.RoadwayNo.Contains("SC01_YL")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
-                    roadwayNo = locationCounts.OrderBy(x => x.Count).FirstOrDefault()?.RoadwayNo ?? "";
+                    List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo.Contains("YL")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
+                    roadwayNo = locationCounts.OrderByDescending(x => x.Count).FirstOrDefault()?.RoadwayNo ?? "";
+                    if (stockInfo.MaterielWide > 2200)
+                    {
+                        locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && !x.RoadwayNo.Contains("SC01_YL")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
+                        roadwayNo = locationCounts.OrderByDescending(x => x.Count).FirstOrDefault()?.RoadwayNo ?? "";
+                    }
                 }
                 return !string.IsNullOrEmpty(roadwayNo) ? (roadwayNo) : throw new Exception("鏈壘鍒板彲鍒嗛厤宸烽亾");
             }
@@ -207,6 +208,80 @@
                 throw new Exception(ex.Message);
             }
         }
+        /// <summary>
+        /// 鍏ュ簱瀹屾垚
+        /// </summary>
+        public WebResponseContent InboundTaskCompleted(Dt_Task task)
+        {
+            try
+            {
+                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == task.WarehouseId);
+                if (warehouse.WarehouseCode == WarehouseEnum.LLDCP.ToString()) //鎴愬搧瀹屾垚
+                {
+                    Dt_LocationInfo locationInfoEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
+                    if (locationInfoEnd == null)
+                    {
+                        return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑缁堢偣璐т綅淇℃伅");
+                    }
+                    Dt_AGVStationInfo agvstation = _agvStationInfoRepository.QueryFirst(x => x.AGVStationCode == task.SourceAddress && x.StationArea == AGVStationAreaEnum.AreaA.ObjToInt());
+                    if (agvstation != null)
+                    {
+                        agvstation.IsOccupied = WhetherEnum.False.ObjToInt();
+                    }
+                    Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.QueryFirst(x => x.PalletCode == task.PalletCode);
+                    if (proStockInfo != null && proStockInfo.StockStatus == StockStatusEmun.MES绌烘墭閫�搴�.ObjToInt())
+                    {
+                        task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
+                        _unitOfWorkManage.BeginTran();
+                        if (agvstation != null)
+                        {
+                            _agvStationInfoRepository.UpdateData(agvstation);
+                        }
+                        proStockInfo.LocationCode = locationInfoEnd.LocationCode;
+                        proStockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+                        _stockRepository.ProStockInfoRepository.UpdateData(proStockInfo);
+                        _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
+                    {
+                        return WebResponseContent.Instance.Error($"鏈壘鍒板搴斿簱瀛樹俊鎭�");
+                    }
+                }
+                else//鍘熸枡搴撳畬鎴�
+                {
+                    Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.PalletCode == task.PalletCode);
+                    if (stockInfo == null)
+                    {
+                        return WebResponseContent.Instance.Error($"鏈壘鍒板搴斿簱瀛樹俊鎭�");
+                    }
+                    Dt_LocationInfo locationInfoEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
+                    if (locationInfoEnd == null)
+                    {
+                        return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑缁堢偣璐т綅淇℃伅");
+                    }
+                    task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
+                    _unitOfWorkManage.BeginTran();
+                    stockInfo.LocationCode = locationInfoEnd.LocationCode;
+                    stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+                    _stockService.StockInfoService.Repository.UpdateData(stockInfo);
+                    _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();
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+        /// <summary>
+        /// 鍒嗛厤鎴愬搧宸烽亾
+        /// </summary>
+        /// <returns></returns>
         public string AssignCPRoadwayNo()
         {
             try
@@ -219,7 +294,20 @@
 
                 string roadwayNo = "";
                 List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo.Contains("CP")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
-                roadwayNo = locationCounts.OrderBy(x => x.Count).FirstOrDefault()?.RoadwayNo ?? "";
+
+                //鑾峰彇褰撳墠鍏ュ簱浠诲姟涓凡鍒嗛厤宸烽亾浠诲姟鏁伴噺
+                List<LocationCount> useLocationCounts = Db.Queryable<Dt_Task>().Where(x => x.WarehouseId == warehouse.WarehouseId 
+                && locationCounts.Select(j=>j.RoadwayNo).Contains(x.Roadway)
+                && TaskInboundTypes.Contains(x.TaskType)).GroupBy(x => x.Roadway).Select(x => new LocationCount { RoadwayNo = x.Roadway, Count = SqlFunc.AggregateCount(x) }).ToList();
+                foreach (var item in locationCounts)
+                {
+                    LocationCount? count = useLocationCounts.FirstOrDefault(x => x.RoadwayNo == item.RoadwayNo);
+                    if (count!=null)
+                    {
+                        item.Count -= count.Count;
+                    }
+                }
+                roadwayNo = locationCounts.OrderByDescending(x => x.Count).FirstOrDefault()?.RoadwayNo ?? "";
                 return !string.IsNullOrEmpty(roadwayNo) ? (roadwayNo) : throw new Exception("鏈壘鍒板彲鍒嗛厤宸烽亾");
             }
             catch (Exception ex)
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 ec5d9d5..fb613e5 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"
@@ -20,6 +20,8 @@
 using WIDESEA_Core.CodeConfigEnum;
 using Microsoft.AspNetCore.Mvc;
 using WIDESEA_DTO.ERP;
+using WIDESEA_Common.MaterielEnum;
+using WIDESEA_Common.WareHouseEnum;
 
 namespace WIDESEA_TaskInfoService
 {
@@ -78,6 +80,68 @@
             return content;
         }
         /// <summary>
+        /// 鍑哄簱浠诲姟瀹屾垚
+        /// </summary>
+        public WebResponseContent OutboundTaskCompleted(Dt_Task task)
+        {
+            try
+            {
+                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == task.WarehouseId);
+                if (warehouse.WarehouseCode == WarehouseEnum.LLDCP.ToString()) //鎴愬搧瀹屾垚
+                {
+                    Dt_LocationInfo locationInfoStart = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+                    if (locationInfoStart == null)
+                    {
+                        return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑璧风偣璐т綅淇℃伅");
+                    }
+                    Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.QueryFirst(x => x.PalletCode == task.PalletCode);
+                    if (proStockInfo != null && proStockInfo.StockStatus==StockStatusEmun.鍑哄簱閿佸畾.ObjToInt())
+                    {
+                        task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
+                        _unitOfWorkManage.BeginTran();
+                        proStockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+                        _stockRepository.ProStockInfoRepository.DeleteAndMoveIntoHty(proStockInfo,App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.浜哄伐瀹屾垚 : WIDESEA_Core.Enums.OperateTypeEnum.鑷姩瀹屾垚);
+                        _basicService.LocationInfoService.UpdateLocationStatus(locationInfoStart, proStockInfo.PalletType, LocationStatusEnum.Free, proStockInfo.WarehouseId);
+                        BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.浜哄伐瀹屾垚 : WIDESEA_Core.Enums.OperateTypeEnum.鑷姩瀹屾垚);
+                        _unitOfWorkManage.CommitTran();
+                    }
+                    else
+                    {
+                        return WebResponseContent.Instance.Error($"鏈壘鍒板搴斿簱瀛樹俊鎭�");
+                    }
+                }
+                else//鍘熸枡搴撳畬鎴�
+                {
+                    Dt_LocationInfo locationInfoStart = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+                    if (locationInfoStart == null)
+                    {
+                        return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑璧风偣璐т綅淇℃伅");
+                    }
+                    Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == task.PalletCode);
+                    if (stockInfo != null && stockInfo.StockStatus == StockStatusEmun.鍑哄簱閿佸畾.ObjToInt())
+                    {
+                        task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
+                        _unitOfWorkManage.BeginTran();
+                        stockInfo.StockStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt();
+                        _stockRepository.StockInfoRepository.DeleteAndMoveIntoHty(stockInfo, App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.浜哄伐瀹屾垚 : WIDESEA_Core.Enums.OperateTypeEnum.鑷姩瀹屾垚);
+                        _basicService.LocationInfoService.UpdateLocationStatus(locationInfoStart, stockInfo.PalletType, LocationStatusEnum.Free, stockInfo.WarehouseId);
+                        BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.浜哄伐瀹屾垚 : WIDESEA_Core.Enums.OperateTypeEnum.鑷姩瀹屾垚);
+                        _unitOfWorkManage.CommitTran();
+                    }
+                    else
+                    {
+                        return WebResponseContent.Instance.Error($"鏈壘鍒板搴斿簱瀛樹俊鎭�");
+                    }
+                }
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+        /// <summary>
         /// 搴撳瓨鏁版嵁杞嚭搴撲换鍔�
         /// </summary>
         /// <param name="stockInfos"></param>
@@ -111,9 +175,9 @@
                             MaterielCode = stockInfo.MaterielCode,
                             Quantity = 0,
                         };
-                        if (stockInfo.StockLength>0)
+                        if (stockInfo.MaterielWide>0)
                         {
-                            task.TaskLength = stockInfo.StockLength;
+                            task.TaskLength = (int)stockInfo.MaterielWide;
                         }
                         tasks.Add(task);
                     }
@@ -121,6 +185,171 @@
             }
             return tasks;
         }
+        public List<Dt_Task> GetTasks(List<Dt_ProStockInfo> stockInfos, TaskTypeEnum taskType)
+        {
+            List<Dt_Task> tasks = new List<Dt_Task>();
+            for (int i = 0; i < stockInfos.Count; i++)
+            {
+                Dt_ProStockInfo stockInfo = stockInfos[i];
 
+                if (stockInfo != null)
+                {
+                    Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == stockInfo.LocationCode);
+                    if (!tasks.Exists(x => x.PalletCode == stockInfo.PalletCode))
+                    {
+                        Dt_Task task = new()
+                        {
+                            CurrentAddress = stockInfo.LocationCode,
+                            Grade = 0,
+                            PalletCode = stockInfo.PalletCode,
+                            NextAddress = "",
+                            Roadway = locationInfo.RoadwayNo,
+                            SourceAddress = stockInfo.LocationCode,
+                            TargetAddress = "",
+                            TaskStatus = TaskStatusEnum.New.ObjToInt(),
+                            TaskType = taskType.ObjToInt(),
+                            TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+                            PalletType = stockInfo.PalletType,
+                            WarehouseId = stockInfo.WarehouseId,
+                            Quantity = 0,
+                        };
+                        tasks.Add(task);
+                    }
+                }
+            }
+            return tasks;
+        }
+        /// <summary>
+        /// 鎴愬搧鍑哄簱
+        /// </summary>
+        /// <param name="Count"></param>
+        /// <returns></returns>
+        public WebResponseContent RequestCPWMSTaskOut(int Count)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                List<Dt_AGVStationInfo> aGVStationInfos = _agvStationInfoRepository.QueryData(x=>x.StationArea==AGVStationAreaEnum.AreaA.ObjToInt() && x.IsOccupied==WhetherEnum.False.ObjToInt());
+                if (aGVStationInfos.Count< Count)
+                {
+                    return content.Error($"鍙敤缂撳瓨鏁颁笉瓒�");
+                }
+                List<Dt_ProStockInfo> stockInfos = _stockRepository.ProStockInfoRepository.QueryData(x => x.ProStockAttribute == ProStockAttributeEnum.绌烘墭.ObjToInt() && x.StockStatus == StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt()).OrderBy(x=>x.CreateDate).Take(Count).ToList();
+                List<Dt_LocationInfo> locationInfos = _basicRepository.LocationInfoRepository.QueryData(x => stockInfos.Select(x => x.LocationCode).Contains(x.LocationCode));
+                if (stockInfos.Count < Count)
+                {
+                    return content.Error($"搴撳瓨鏁伴噺涓嶈冻");
+                }
+                foreach (var item in stockInfos)
+                {
+                    Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.LocationCode == item.LocationCode);
+                    if (locationInfo != null && (locationInfo.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || locationInfo.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && locationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt())
+                    {
+                        item.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt();
+                    }
+                    else
+                    {
+                        return content.Error($"璐т綅鐘舵�佷笉姝g‘");
+                    }
+                }
+                List<Dt_Task> tasks = GetTasks(stockInfos, TaskTypeEnum.OutProduct);
+                if (tasks == null || tasks.Count <= 0)
+                {
+                    return content.Error($"鐢熸垚浠诲姟澶辫触");
+                }
+                for (int i = 0; i < tasks.Count; i++)
+                {
+                    aGVStationInfos[i].IsOccupied = WhetherEnum.True.ObjToInt();
+                    tasks[i].TargetAddress = aGVStationInfos[i].AGVStationCode;
+                }
+                //鍒ゆ柇鏄惁鏈夊嚭搴撳崟淇℃伅
+                _unitOfWorkManage.BeginTran();
+                //鏇存柊搴撳瓨鐘舵��
+                _stockRepository.ProStockInfoRepository.UpdateData(stockInfos);
+                _agvStationInfoRepository.UpdateData(aGVStationInfos);
+                //鏇存柊璐т綅鐘舵��
+                _basicRepository.LocationInfoRepository.UpdateLocationStatus(locationInfos, LocationStatusEnum.Lock);
+                //鍔犲叆璐т綅鍙樺姩璁板綍
+                _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos, LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation, taskNums: tasks.Select(x => x.TaskNum).ToList());
+                //鏂板缓浠诲姟
+                BaseDal.AddData(tasks);
+                _unitOfWorkManage.CommitTran();
+                PushTasksToWCS(tasks);
+                content.OK();
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+        /// <summary>
+        /// 鍘熸枡鍑哄簱浠诲姟
+        /// </summary>
+        /// <param name="materielCode">鐗╂枡浠g爜</param>
+        /// <param name="materielWide">鐗╂枡骞呭</param>
+        /// <param name="Count">鍗锋暟</param>
+        /// <returns></returns>
+        public WebResponseContent RequestYLWMSTaskOut(string materielCode, int materielWide, int Count)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                //鑾峰彇瀵瑰簲搴撳瓨
+                List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.QueryData(x=>x.MaterielCode==materielCode && x.MaterielWide== materielWide && x.StockStatus==StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt()).OrderBy(x=>x.CreateDate).Take(Count).ToList();
+                
+                if (stockInfos.Count< Count)
+                {
+                    return content.Error($"搴撳瓨{materielCode}鏁伴噺涓嶈冻");
+                }
+                //鑾峰彇璐т綅
+                List<Dt_LocationInfo> locationInfos = _basicRepository.LocationInfoRepository.QueryData(x => stockInfos.Select(x => x.LocationCode).Contains(x.LocationCode));
+                foreach (var item in stockInfos)
+                {
+                    Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x=>x.LocationCode==item.LocationCode);
+                    if (locationInfo!=null && (locationInfo.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || locationInfo.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && locationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt())
+                    {
+                        item.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt();
+                    }
+                    else
+                    {
+                        return content.Error($"璐т綅鐘舵�佷笉姝g‘");
+                    }
+                }
+                TaskTypeEnum taskTypeEnum = new();
+                if (stockInfos.FirstOrDefault()?.MaterielInvOrgId==MaterielInvOrgEnum.鑰佸巶.ObjToInt())
+                {
+                    taskTypeEnum = TaskTypeEnum.OldOutbound;
+                }
+                else
+                {
+                    taskTypeEnum = TaskTypeEnum.Outbound;
+                }
+                List<Dt_Task> tasks = GetTasks(stockInfos, taskTypeEnum);
+                if (tasks == null || tasks.Count <= 0)
+                {
+                    return content.Error($"鐢熸垚浠诲姟澶辫触");
+                }
+                //鍒ゆ柇鏄惁鏈夊嚭搴撳崟淇℃伅
+                _unitOfWorkManage.BeginTran();
+                //鏇存柊搴撳瓨鐘舵��
+                _stockRepository.StockInfoRepository.UpdateData(stockInfos);
+                //鏇存柊璐т綅鐘舵��
+                _basicRepository.LocationInfoRepository.UpdateLocationStatus(locationInfos, LocationStatusEnum.Lock);
+                //鍔犲叆璐т綅鍙樺姩璁板綍
+                _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos,  LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation,taskNums:tasks.Select(x=>x.TaskNum).ToList());
+
+                //鏂板缓浠诲姟
+                BaseDal.AddData(tasks);
+                _unitOfWorkManage.CommitTran();
+                PushTasksToWCS(tasks);
+                content.OK();
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
     }
 }
\ No newline at end of file
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 6bbdb17..7e3464f 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"
@@ -8,8 +8,10 @@
 using WIDESEA_Common.OtherEnum;
 using WIDESEA_Common.StockEnum;
 using WIDESEA_Common.TaskEnum;
+using WIDESEA_Common.WareHouseEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.Helper;
+using WIDESEA_DTO.Basic;
 using WIDESEA_DTO.Task;
 using WIDESEA_Model.Models;
 
@@ -126,37 +128,6 @@
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
-        public WebResponseContent InboundTaskCompleted(Dt_Task task)
-        {
-            try
-            {
-                Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.PalletCode == task.PalletCode);
-                if (stockInfo == null)
-                {
-                    return WebResponseContent.Instance.Error($"鏈壘鍒板搴斿簱瀛樹俊鎭�");
-                }
-                Dt_LocationInfo locationInfoEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
-                if (locationInfoEnd == null)
-                {
-                    return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑缁堢偣璐т綅淇℃伅");
-                }
-                task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
-                FeedBackWCSTaskCompleted(task.TaskNum);
-                _unitOfWorkManage.BeginTran();
-                stockInfo.LocationCode = locationInfoEnd.LocationCode;
-                stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
-                _stockService.StockInfoService.Repository.UpdateData(stockInfo);
-                _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();
-            }
-            catch (Exception ex)
-            {
-                _unitOfWorkManage.RollbackTran();
-                return WebResponseContent.Instance.Error(ex.Message);
-            }
-        }
         public WebResponseContent RelocationTaskCompleted(Dt_Task task)
         {
             try
@@ -196,5 +167,54 @@
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
+        public WebResponseContent IsRelocation(string startAddress,string endAddress,string roadWay)
+        {
+            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);
+                if (startLocationInfo != null && endLocationInfo != null && stockInfo!=null)
+                {
+                    Dt_Task newTask = new Dt_Task()
+                    {
+                        Roadway = roadWay,
+                        WarehouseId = stockInfo.WarehouseId,
+                        CurrentAddress = startLocationInfo.LocationCode,
+                        Grade = 99,
+                        NextAddress = endLocationInfo.LocationCode,
+                        OrderNo = "",
+                        PalletCode = stockInfo.PalletCode,
+                        PalletType = stockInfo.PalletType,
+                        SourceAddress = startLocationInfo.LocationCode,
+                        TargetAddress = endLocationInfo.LocationCode,
+                        TaskNum = Repository.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+                        TaskStatus = 0,
+                        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);
+                    _unitOfWorkManage.CommitTran();
+                    PushTasksToWCS(new List<Dt_Task> { newTask });
+                    content.OK("鎴愬姛");
+                }
+                else
+                {
+                    content.Error("搴撳瓨璐т綅淇℃伅涓虹┖");
+                }
+            }
+            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_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 2c8be3d..24cc3df 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"
@@ -182,5 +182,39 @@
         {
             return Service.RequestYLWMSTaskSimple(stationCode,palletCode);
         }
+
+        /// <summary>
+        /// 鎴愬搧鍑哄簱浠诲姟璇锋眰
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("RequestCPWMSTaskOut"), AllowAnonymous]
+        public WebResponseContent RequestCPWMSTaskOut(int Count)
+        {
+            return Service.RequestCPWMSTaskOut(Count);
+        }
+        /// <summary>
+        /// 鍘熸枡鍑哄簱浠诲姟
+        /// </summary>
+        /// <param name="materielCode">鐗╂枡浠g爜</param>
+        /// <param name="materielWide">鐗╂枡骞呭</param>
+        /// <param name="Count">鍗锋暟</param>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("RequestYLWMSTaskOut"), AllowAnonymous]
+        public WebResponseContent RequestYLWMSTaskOut(string materielCode,int materielWide, int Count)
+        {
+            return Service.RequestYLWMSTaskOut(materielCode, materielWide, Count);
+        }
+        /// <summary>
+        /// 鍘熸枡绉诲簱浠诲姟
+        /// </summary>
+        /// <param name="startAddress"></param>
+        /// <param name="endAddress"></param>
+        /// <param name="roadWay"></param>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("Relocation"), AllowAnonymous]
+        public WebResponseContent IsRelocation(string startAddress, string endAddress, string roadWay)
+        {
+            return Service.IsRelocation(startAddress, endAddress, roadWay);
+        }
     }
 }
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\345\210\251\346\213\223\347\263\273\347\273\237\345\257\271\351\276\231\345\210\251\345\276\227\344\272\214\346\234\237\347\263\273\347\273\237\347\232\204\351\234\200\346\261\202.docx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\345\210\251\346\213\223\347\263\273\347\273\237\345\257\271\351\276\231\345\210\251\345\276\227\344\272\214\346\234\237\347\263\273\347\273\237\347\232\204\351\234\200\346\261\202.docx"
index 73b7081..9b63aad 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\345\210\251\346\213\223\347\263\273\347\273\237\345\257\271\351\276\231\345\210\251\345\276\227\344\272\214\346\234\237\347\263\273\347\273\237\347\232\204\351\234\200\346\261\202.docx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\345\210\251\346\213\223\347\263\273\347\273\237\345\257\271\351\276\231\345\210\251\345\276\227\344\272\214\346\234\237\347\263\273\347\273\237\347\232\204\351\234\200\346\261\202.docx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\351\241\271\347\233\256\345\257\271\346\216\245\350\256\260\345\275\225.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\351\241\271\347\233\256\345\257\271\346\216\245\350\256\260\345\275\225.xlsx"
index f6ca304..f094204 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\351\241\271\347\233\256\345\257\271\346\216\245\350\256\260\345\275\225.xlsx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\351\241\271\347\233\256\345\257\271\346\216\245\350\256\260\345\275\225.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/MES.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/MES.xlsx"
new file mode 100644
index 0000000..d537c49
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/MES.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\267\347\202\271\344\275\215.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\267\347\202\271\344\275\215.xlsx"
index 77ff942..6ff358f 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\267\347\202\271\344\275\215.xlsx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\267\347\202\271\344\275\215.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\345\216\237\346\226\231\345\272\223\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\345\216\237\346\226\231\345\272\223\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256.xlsx"
index 7000985..a1adcea 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\345\216\237\346\226\231\345\272\223\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256.xlsx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\345\216\237\346\226\231\345\272\223\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\210\220\345\223\201\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256_20250707.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\210\220\345\223\201\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256_20250707.xlsx"
index e873504..a745a85 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\210\220\345\223\201\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256_20250707.xlsx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\210\220\345\223\201\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256_20250707.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\350\275\257\344\273\266\350\256\241\345\210\222\350\241\250.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\350\275\257\344\273\266\350\256\241\345\210\222\350\241\250.xlsx"
index 61acd3f..4a86236 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\350\275\257\344\273\266\350\256\241\345\210\222\350\241\250.xlsx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\350\275\257\344\273\266\350\256\241\345\210\222\350\241\250.xlsx"
Binary files differ

--
Gitblit v1.9.3