From a6df2a29e7424ce327776fd3880ae514d8ca8c9f Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期一, 07 七月 2025 06:32:24 +0800
Subject: [PATCH] 更新

---
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineCPDBName.cs  |   32 
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/StackerCraneJob_CP.cs                  |    8 
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_RgvCPDBName.cs           |   47 ++
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_RgvCPDBName.cs           |   69 +++
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPD.cs                 |   79 +++
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPC.cs                 |  108 ++++
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs |  295 +-----------
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPA.cs                 |  109 ++++
 项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs                   |   63 +-
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPB.cs                 |  127 +++++
 /dev/null                                                                        |  207 ---------
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineCPDBName.cs  |   30 
 项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService_Operate.cs           |   10 
 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/RGVJob_CP.cs                           |  129 +++++
 项目代码/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs                |   48 +
 15 files changed, 803 insertions(+), 558 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
index 64921db..ccd5df8 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
@@ -43,24 +43,6 @@
         SC_Finish = 220,
 
         /// <summary>
-        /// 杈撻�佺嚎寰呮墽琛�
-        /// </summary>
-        [Description("杈撻�佺嚎寰呮墽琛�")]
-        Line_Execute = 400,
-
-        /// <summary>
-        /// 杈撻�佺嚎鎵ц涓�
-        /// </summary>
-        [Description("杈撻�佺嚎鎵ц涓�")]
-        Line_Executing = 410,
-
-        /// <summary>
-        /// 杈撻�佺嚎瀹屾垚
-        /// </summary>
-        [Description("杈撻�佺嚎瀹屾垚")]
-        Line_Finish = 420,
-
-        /// <summary>
         /// AGV寰呮墽琛�
         /// </summary>
         [Description("AGV寰呮墽琛�")]
@@ -69,7 +51,7 @@
         /// AGV鍙栬揣涓�
         /// </summary>
         [Description("AGV鍙栬揣涓�")]
-        AGV_Takeing =305,
+        AGV_Takeing = 305,
         /// <summary>
         /// AGV鎵ц涓�
         /// </summary>
@@ -92,6 +74,34 @@
         /// </summary>
         [Description("AGV瀹屾垚")]
         AGV_Finish = 330,
+        /// <summary>
+        /// 杈撻�佺嚎寰呮墽琛�
+        /// </summary>
+        [Description("杈撻�佺嚎寰呮墽琛�")]
+        Line_Execute = 400,
+
+        /// <summary>
+        /// 杈撻�佺嚎鎵ц涓�
+        /// </summary>
+        [Description("杈撻�佺嚎鎵ц涓�")]
+        Line_Executing = 410,
+
+        /// <summary>
+        /// 杈撻�佺嚎瀹屾垚
+        /// </summary>
+        [Description("杈撻�佺嚎瀹屾垚")]
+        Line_Finish = 420,
+
+        /// <summary>
+        /// RGV寰呮墽琛�
+        /// </summary>
+        [Description("RGV寰呮墽琛�")]
+        RGV_Execute = 500,
+        /// <summary>
+        /// RGV鎵ц涓�
+        /// </summary>
+        [Description("RGV鎵ц涓�")]
+        RGV_Executing = 510,
 
         /// <summary>
         /// 浠诲姟瀹屾垚
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 5a885e6..d2bb2c1 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"
@@ -23,6 +23,7 @@
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.Diagnostics;
 using System.Diagnostics.CodeAnalysis;
 using System.Linq;
 using System.Reflection;
@@ -217,14 +218,14 @@
                         if (taskTypeGroup == TaskTypeGroup.InboundGroup)
                         {
                             stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == item.SourceAddress || x.StationDeviceCode == item.SourceAddress);
-                            if (stationManger==null && task.TaskType==TaskTypeEnum.InProduct.ObjToInt())
-                            {
-                                stationManger = _stationMangerRepository.QueryFirst(x => x.StackerCraneCode==task.SourceAddress);
-                                //杞崲鎴愬搧浠撹捣鐐圭珯鍙�
-                                item.SourceAddress = stationManger.StationCode;
-                                task.CurrentAddress = stationManger.StationCode;
-                                task.SourceAddress = stationManger.StationCode;
-                            }
+                            //if (stationManger==null && task.TaskType==TaskTypeEnum.InProduct.ObjToInt())
+                            //{
+                            //    stationManger = _stationMangerRepository.QueryFirst(x => x.StackerCraneCode==task.SourceAddress);
+                            //    //杞崲鎴愬搧浠撹捣鐐圭珯鍙�
+                            //    item.SourceAddress = stationManger.StationCode;
+                            //    task.CurrentAddress = stationManger.StationCode;
+                            //    task.SourceAddress = stationManger.StationCode;
+                            //}
                         }
                         else
                         {
@@ -244,10 +245,11 @@
 
                         if (routers.Count == 1)
                         {
-                            if (taskTypeGroup == TaskTypeGroup.InboundGroup && item.TargetAddress == stationManger.StackerCraneCode)
+                            if (taskTypeGroup == TaskTypeGroup.InboundGroup)
                             {
+                                task.CurrentAddress = router.StartPosi;
                                 task.NextAddress = router.NextPosi;
-                                task.DeviceCode = stationManger.StationDeviceCode;
+                                task.DeviceCode = router.ChildPosiDeviceCode;
                             }
                             else if (item.TaskType == TaskTypeEnum.MesMatReturn.ObjToInt() && !router.IsEnd)
                             {
@@ -439,21 +441,34 @@
             WebResponseContent content = new WebResponseContent();
             try
             {
-                string address = AppSettings.Get("WMSApiAddress");
-                if (string.IsNullOrEmpty(address))
+                //string address = AppSettings.Get("WMSApiAddress");
+                //if (string.IsNullOrEmpty(address))
+                //{
+                //    return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
+                //}
+                //string responseStr = HttpHelper.Get($"{address}/api/Task/DeviceRequestInboundTaskSimple?stationCode={sourceAddress}&palletCode={palletCode}");
+                //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)
+                //    {
+                WMSTaskDTO? taskDTO = new WMSTaskDTO()
                 {
-                    return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
-                }
-                string responseStr = HttpHelper.Get($"{address}/api/Task/DeviceRequestInboundTaskSimple?stationCode={sourceAddress}&palletCode={palletCode}");
-                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 });
-                    }
-                }
+                    Id = 1,
+                    TaskNum = DateTime.Now.ToString("mmss").ObjToInt(),
+                    PalletCode="",
+                    RoadWay="",
+                    TaskType=TaskTypeEnum.InProduct.ObjToInt(),
+                    TaskStatus=TaskStatusEnum.New.ObjToInt(),
+                    SourceAddress= sourceAddress,
+                    TargetAddress="",
+                    WarehouseId=1,
+                    Grade=0,
+                };
+                content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
+                //    }
+                //}
 
             }
             catch (Exception ex)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService_Operate.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService_Operate.cs"
index dce33cd..5b813a4 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService_Operate.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService_Operate.cs"
@@ -99,11 +99,11 @@
 
             BaseDal.UpdateData(task);
 
-            string address = AppSettings.Get("WMSApiAddress");
-            if (!string.IsNullOrEmpty(address))
-            {
-                HttpHelper.Post($"{address}/api/Task/UpdateTaskInfo", task.Serialize());
-            }
+            //string address = AppSettings.Get("WMSApiAddress");
+            //if (!string.IsNullOrEmpty(address))
+            //{
+            //    HttpHelper.Post($"{address}/api/Task/UpdateTaskInfo", task.Serialize());
+            //}
             _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, stringBuilder.ToString());
         }
     }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs"
index ac89d7e..39ef4bd 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs"
@@ -36,290 +36,71 @@
 
         public int TaskNum { get; set; }
     }
-
-
-    public class R_ConveyorLineInfo : DeviceCommand
-    {
-        /// <summary>
-        /// 绔欏彴缂栧彿
-        /// </summary>
-        public short ConveyorNo { get; set; }
-
-        /// <summary>
-        /// 鐘舵��
-        /// </summary>
-        public byte Status { get; set; }
-
-        /// <summary>
-        /// 棰勭暀
-        /// </summary>
-        public byte Undefined { get; set; }
-
-        /// <summary>
-        /// 浠诲姟鍙�
-        /// </summary>
-        public int TaskNum { get; set; }
-
-        /// <summary>
-        /// 璧峰鍦板潃
-        /// </summary>
-        public short StartPos { get; set; }
-
-        /// <summary>
-        /// 鐩爣鍦板潃
-        /// </summary>
-        public short EndPos { get; set; }
-
-        /// <summary>
-        /// 閲嶉噺
-        /// </summary>
-        public short GoodsWeight { get; set; }
-
-        /// <summary>
-        /// 璐х墿绫诲瀷
-        /// </summary>
-        public short GoodsType { get; set; }
-
-        /// <summary>
-        /// 0闈欐1鍓嶈繘2鍚庨��3涓婂崌/椤烘椂閽堟棆杞�4涓嬮檷/閫嗘椂閽堟棆杞�
-        /// </summary>
-        public short RunStatus { get; set; }
-
-        private string _barcode;
-        /// <summary>
-        /// 鏉$爜
-        /// </summary>
-        [DataLength(20)]
-        public string Barcode
-        {
-            get { return _barcode; }
-            set { _barcode = value.Replace("\0", "").Replace("\\0", ""); }
-        }
-
-        /// <summary>
-        /// 棰勭暀
-        /// </summary>
-        public short Spare1 { get; set; }
-
-        /// <summary>
-        /// 棰勭暀
-        /// </summary>
-        public short Spare2 { get; set; }
-
-        /// <summary>
-        /// 浜や簰淇″彿
-        /// </summary>
-        public byte Signal { get; set; }
-
-
-        /// <summary>
-        /// 棰勭暀
-        /// </summary>
-        public byte Undefined2 { get; set; }
-    }
     public class R_ConveyorLineCPInfo : DeviceCommand
     {
         /// <summary>
-        /// 鍒颁綅鎸囦护
+        /// 蹇冭烦
         /// </summary>
-        public short ConveyArrivaled { get; set; }
-
+        public short Heart { get; set; }
         /// <summary>
-        /// 璧峰鍦板潃
+        /// 棰勭暀
         /// </summary>
-        public short StartPos { get; set; }
-
+        public short Reserve { get; set; }
         /// <summary>
-        /// 缁堢偣鍦板潃
+        /// 鐘舵��
         /// </summary>
-        public short EndPos { get; set; }
-
+        public short StatusPV { get; set; }
+        /// <summary>
+        /// 鍛戒护
+        /// </summary>
+        public short Command { get; set; }
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public int TaskNo { get; set; }
         /// <summary>
         /// 鎵樼洏鍙�
         /// </summary>
         /// <summary>
-        
-        [DataLength(20)]
-        public string Barcode { get; set; }
-
-        /// <summary>
-        /// 浠诲姟鍙�
-        /// </summary>
-        [DataLength(20)]
-        public string TaskNum { get; set; }
-
-        /// <summary>
-        /// 绫诲瀷
-        /// </summary>
-        public short WorkType { get; set; }
-
-        /// <summary>
-        /// 妯″紡
-        /// </summary>
-        public short WorkMode { get; set; }
-
-        /// <summary>
-        /// 鏍¢獙浣�
-        /// </summary>
-        public short CheckPos { get; set; }
+        [DataLength(10)]
+        public string PalletCode { get; set; }
     }
-    public class R_ConveyorLineGMInfo : DeviceCommand
+    public class R_RGVCPInfo : DeviceCommand
     {
         /// <summary>
-        /// 绠卞彿
+        /// 妯″紡<br/>
+        /// 1鎵嬪姩<br/>
+        /// 2缁翠慨<br/>
+        /// 3鍗婅嚜鍔�<br/>
+        /// 4鑷姩<br/>
+        /// 5鑱旀満鑷姩<br/>
         /// </summary>
+        public short Mode { get; set; }
         /// <summary>
-        [DataLength(120)]
-        public string Boxcode { get; set; }
-    }
-    public class R_ConveyorLineFLInfo : DeviceCommand
-    {
-        /// <summary>
-        /// 鎵樼洏鍙�
+        /// 鐘舵��<br/>
+        /// 0绌洪棽<br/>
+        /// 1鏈変换鍔�<br/>
         /// </summary>
+        public short State { get; set; }
         /// <summary>
-
-        [DataLength(20)]
-        public string Barcode { get; set; }
-
-        /// <summary>
-        /// 浠诲姟鍙�
+        /// RGV鎺ユ敹浠诲姟鍙�<br/>
         /// </summary>
-        [DataLength(20)]
-        public string TaskNum { get; set; }
-    }
-    public class R_ConveyorLineStatus
-    {
+        public short RgvTask { get; set; }
         /// <summary>
-        /// 鎻℃墜淇″彿
+        /// RGV缁撴潫浠诲姟鍙�<br/>
         /// </summary>
-        [BoolIndex(0)]
-        public bool HandShake { get; set; }
-
+        public short RgvEndTask { get; set; }
         /// <summary>
-        /// 1鑱旀満 0鑴辨満
+        /// RGV涓婃浠诲姟鍙�<br/>
         /// </summary>
-        [BoolIndex(1)]
-        public bool Online { get; set; }
-
+        public short RgvLastTask { get; set; }
         /// <summary>
-        /// 1绌洪棽 0绻佸繖
+        /// 浠诲姟鐘舵�佸弽棣�<br/>
         /// </summary>
-        [BoolIndex(2)]
-        public bool Free { get; set; }
-
+        public short TaskDone { get; set; }
         /// <summary>
-        /// 1鏈夎揣 0鏃犺揣
+        /// 蹇冭烦<br/>
         /// </summary>
-        [BoolIndex(3)]
-        public bool Goods { get; set; }
-
-        /// <summary>
-        /// 1鏁呴殰 0姝e父
-        /// </summary>
-        [BoolIndex(4)]
-        public bool Alarm { get; set; }
-
-        /// <summary>
-        /// 1璇锋眰琛ョ洏 0鏃�
-        /// </summary>
-        [BoolIndex(5)]
-        public bool RequestPakcPallet { get; set; }
-
-        /// <summary>
-        /// 1璇锋眰鎷嗙洏 0鏃�
-        /// </summary>
-        [BoolIndex(6)]
-        public bool RequestUnpackPellet { get; set; }
-    }
-
-    public class ConveyorLineSignal
-    {
-        /// <summary>
-        /// 璇锋眰淇″彿
-        /// </summary>
-        [BoolIndex(0)]
-        public bool STB { get; set; }
-
-        /// <summary>
-        /// 鍝嶅簲淇″彿
-        /// </summary>
-        [BoolIndex(1)]
-        public bool ACK { get; set; }
-    }
-
-    public class W_ConveyorLineInfo : DeviceCommand
-    {
-
-        /// <summary>
-        /// 绔欏彴缂栧彿
-        /// </summary>
-        public short ConveyorNo { get; set; }
-
-        public byte Operate { get; set; }
-
-        public byte Undefined { get; set; }
-
-        /// <summary>
-        /// 浠诲姟鍙�
-        /// </summary>
-        public int TaskNum { get; set; }
-
-        /// <summary>
-        /// 璧峰鍦板潃
-        /// </summary>
-        public short StartPos { get; set; }
-
-        /// <summary>
-        /// 鐩爣鍦板潃
-        /// </summary>
-        public short EndPos { get; set; }
-
-        /// <summary>
-        /// 璐х墿绫诲瀷
-        /// </summary>
-        public short GoodsType { get; set; }
-
-        /// <summary>
-        /// 棰勭暀
-        /// </summary>
-        public short Spare1 { get; set; }
-
-        /// <summary>
-        /// 棰勭暀
-        /// </summary>
-        public short Spare2 { get; set; }
-
-        /// <summary>
-        /// 浜や簰淇″彿
-        /// </summary>
-        public byte Signal { get; set; }
-
-
-        /// <summary>
-        /// 棰勭暀
-        /// </summary>
-        public byte Undefined2 { get; set; }
-    }
-
-    public class W_ConveyorLineOperate
-    {
-        /// <summary>
-        /// 鎻℃墜淇″彿
-        /// </summary>
-        [BoolIndex(0)]
-        public bool HandShake { get; set; }
-
-        /// <summary>
-        /// 澶嶄綅鎶ヨ
-        /// </summary>
-        [BoolIndex(1)]
-        public bool ClearAlarm { get; set; }
-
-        /// <summary>
-        /// 閫�鍥�
-        /// </summary>
-        [BoolIndex(2)]
-        public bool Return { get; set; }
+        public short HeartBeat { get; set; }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineCPDBName.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineCPDBName.cs"
index a2c4f64..79211c1 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineCPDBName.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineCPDBName.cs"
@@ -9,38 +9,28 @@
     public enum R_ConveyorLineCPDB
     {
         /// <summary>
-        /// 鍒颁綅鎸囦护
+        /// 鍛戒护
         /// </summary>
-        ConveyArrivaled,
+        Command,
         /// <summary>
-        /// 璧峰鍦板潃
+        /// 鐩爣鍦板潃
         /// </summary>
-        StartPos,
-        /// <summary>
-        /// 缁堢偣鍦板潃
-        /// </summary>
-        EndPos,
-        /// <summary>
-        /// 鎵樼洏鍙�
-        /// </summary>
-        Barcode,
+        StatusPV,
         /// <summary>
         /// 浠诲姟鍙�
         /// </summary>
-        TaskNum,
+        TaskNo,
         /// <summary>
-        /// 绫诲瀷
+        /// 棰勭暀
         /// </summary>
-        WorkType,
+        Reserve,
         /// <summary>
-        /// 妯″紡
-        /// 1鍏ュ簱妯″紡
-        /// 2鐢熶骇妯″紡
+        /// 蹇冭烦
         /// </summary>
-        WorkMode,
+        Heart,
         /// <summary>
-        /// 鏍¢獙浣�
+        /// 鎵樼洏鏉$爜
         /// </summary>
-        CheckPos
+        PalletCode
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineDBName.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineDBName.cs"
deleted file mode 100644
index 81453e9..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineDBName.cs"
+++ /dev/null
@@ -1,132 +0,0 @@
-锘�#region << 鐗� 鏈� 娉� 閲� >>
-/*----------------------------------------------------------------
- * 鍛藉悕绌洪棿锛歐IDESEAWCS_Tasks.ConveyorLineJob
- * 鍒涘缓鑰咃細鑳$搴�
- * 鍒涘缓鏃堕棿锛�2024/8/2 16:13:36
- * 鐗堟湰锛歏1.0.0
- * 鎻忚堪锛�
- *
- * ----------------------------------------------------------------
- * 淇敼浜猴細
- * 淇敼鏃堕棿锛�
- * 鐗堟湰锛歏1.0.1
- * 淇敼璇存槑锛�
- * 
- *----------------------------------------------------------------*/
-#endregion << 鐗� 鏈� 娉� 閲� >>
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace WIDESEAWCS_Tasks.ConveyorLineJob
-{
-    public enum R_ConveyorLineDB
-    {
-        /// <summary>
-        /// 绔欏彴缂栧彿
-        /// </summary>
-        ConveyorNo,
-
-        /// <summary>
-        /// 鎻℃墜淇″彿
-        /// </summary>
-        HandShake,
-
-        /// <summary>
-        /// 1鑱旀満 0鑴辨満
-        /// </summary>
-        Online,
-
-        /// <summary>
-        /// 1绌洪棽 0绻佸繖
-        /// </summary>
-        Free,
-
-        /// <summary>
-        /// 1鏈夎揣 0鏃犺揣
-        /// </summary>
-        Goods,
-
-        /// <summary>
-        /// 1鏁呴殰 0姝e父
-        /// </summary>
-        Alarm,
-
-        /// <summary>
-        /// 1璇锋眰琛ョ洏 0鏃�
-        /// </summary>
-        RequestPakcPallet,
-
-        /// <summary>
-        /// 1璇锋眰鎷嗙洏 0鏃�
-        /// </summary>
-        RequestUnpackPellet,
-
-        /// <summary>
-        /// 浠诲姟鍙�
-        /// </summary>
-        TaskNum,
-
-        /// <summary>
-        /// 璧峰鍦板潃
-        /// </summary>
-        StartPos,
-
-        /// <summary>
-        /// 鐩爣鍦板潃
-        /// </summary>
-        EndPos,
-
-        /// <summary>
-        /// 閲嶉噺
-        /// </summary>
-        GoodsWeight,
-
-        /// <summary>
-        /// 璐х墿绫诲瀷
-        /// </summary>
-        GoodsType,
-
-        /// <summary>
-        /// 0闈欐1鍓嶈繘2鍚庨��3涓婂崌/椤烘椂閽堟棆杞�4涓嬮檷/閫嗘椂閽堟棆杞�
-        /// </summary>
-        RunStatus,
-
-        /// <summary>
-        /// 鏉$爜
-        /// </summary>
-        Barcode,
-
-        /// <summary>
-        /// 棰勭暀
-        /// </summary>
-        Sapre1,
-
-        /// <summary>
-        /// 棰勭暀
-        /// </summary>
-        Sapre2,
-
-        /// <summary>
-        /// 璇锋眰淇″彿
-        /// </summary>
-        STB,
-
-        /// <summary>
-        /// 鍝嶅簲淇″彿
-        /// </summary>
-        ACK,
-        /// <summary>
-        /// 鏉$爜
-        /// </summary>
-        Boxcode
-    }
-
-    public enum R_ConveyorLineWorkType
-    {
-        ConveyorLineWorkType
-    }
-}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineFLDB.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineFLDB.cs"
deleted file mode 100644
index e2df51e..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineFLDB.cs"
+++ /dev/null
@@ -1,24 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace WIDESEAWCS_Tasks.ConveyorLineJob
-{
-    public enum R_ConveyorLineFLDB
-    {
-        /// <summary>
-        /// 鍒颁綅淇″彿
-        /// </summary>
-        ConveyArrivaled,
-        /// <summary>
-        /// 鎵樼洏鍙�
-        /// </summary>
-        Barcode,
-        /// <summary>
-        /// 浠诲姟鍙�
-        /// </summary>
-        TaskNum
-    }
-}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_RgvCPDBName.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_RgvCPDBName.cs"
new file mode 100644
index 0000000..00ecdab
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_RgvCPDBName.cs"
@@ -0,0 +1,47 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Tasks.ConveyorLineJob
+{
+    public enum R_RgvCPDB
+    {
+        /// <summary>
+        /// 妯″紡<br/>
+        /// 1鎵嬪姩<br/>
+        /// 2缁翠慨<br/>
+        /// 3鍗婅嚜鍔�<br/>
+        /// 4鑷姩<br/>
+        /// 5鑱旀満鑷姩<br/>
+        /// </summary>
+        Mode,
+        /// <summary>
+        /// 鐘舵��<br/>
+        /// 0绌洪棽<br/>
+        /// 1鏈変换鍔�<br/>
+        /// </summary>
+        State,
+        /// <summary>
+        /// RGV鎺ユ敹浠诲姟鍙�<br/>
+        /// </summary>
+        RgvTask,
+        /// <summary>
+        /// RGV缁撴潫浠诲姟鍙�<br/>
+        /// </summary>
+        RgvEndTask,
+        /// <summary>
+        /// RGV涓婃浠诲姟鍙�<br/>
+        /// </summary>
+        RgvLastTask,
+        /// <summary>
+        /// 浠诲姟鐘舵�佸弽棣�<br/>
+        /// </summary>
+        TaskDone,
+        /// <summary>
+        /// 蹇冭烦<br/>
+        /// </summary>
+        HeartBeat
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineCPDBName.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineCPDBName.cs"
index 32a5554..ec9be2f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineCPDBName.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineCPDBName.cs"
@@ -9,36 +9,24 @@
     public enum W_ConveyorLineCPDB
     {
         /// <summary>
-        /// 绉诲姩鎸囦护
+        /// 鍛戒护
         /// </summary>
-        ConveyArrival,
+        Command,
         /// <summary>
-        /// 璧峰鍦板潃
+        /// 鐩爣鍦板潃
         /// </summary>
-        StartPos,
-        /// <summary>
-        /// 缁堢偣鍦板潃
-        /// </summary>
-        EndPos,
-        /// <summary>
-        /// 鎵樼洏鍙�
-        /// </summary>
-        Barcode,
+        TargetAddress,
         /// <summary>
         /// 浠诲姟鍙�
         /// </summary>
-        TaskNum,
+        TaskNo,
         /// <summary>
-        /// 绫诲瀷
+        /// 棰勭暀
         /// </summary>
-        WorkType,
+        Reserve,
         /// <summary>
-        /// 瀛愭墭绫诲瀷
+        /// 蹇冭烦
         /// </summary>
-        WorkMode,
-        /// <summary>
-        /// 鏍¢獙浣�
-        /// </summary>
-        CheckPos
+        Heart
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineDBName.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineDBName.cs"
deleted file mode 100644
index 890fd0e..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineDBName.cs"
+++ /dev/null
@@ -1,72 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace WIDESEAWCS_Tasks.ConveyorLineJob
-{
-    public enum W_ConveyorLineDB
-    {
-        /// <summary>
-        /// 绔欏彴缂栧彿
-        /// </summary>
-        ConveyorNo,
-
-        /// <summary>
-        /// 鎻℃墜淇″彿
-        /// </summary>
-        HandShake,
-
-        /// <summary>
-        /// 澶嶄綅鎶ヨ
-        /// </summary>
-        ClearAlarm,
-
-        /// <summary>
-        /// 閫�鍥�
-        /// </summary>
-        Return,
-
-        /// <summary>
-        /// 浠诲姟鍙�
-        /// </summary>
-        TaskNum,
-
-        /// <summary>
-        /// 璧峰鍦板潃
-        /// </summary>
-        StartPos,
-
-        /// <summary>
-        /// 鐩爣鍦板潃
-        /// </summary>
-        EndPos,
-
-        /// <summary>
-        /// 璐х墿绫诲瀷
-        /// </summary>
-        GoodsType,
-
-        /// <summary>
-        /// 棰勭暀1
-        /// </summary>
-        Spare1,
-
-        /// <summary>
-        /// 棰勭暀2
-        /// </summary>
-        Spare2,
-
-        /// <summary>
-        /// 璇锋眰淇″彿
-        /// </summary>
-        STB,
-
-        /// <summary>
-        /// 鍝嶅簲淇″彿
-        /// </summary>
-        ACK
-
-    }
-}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineFLDB.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineFLDB.cs"
deleted file mode 100644
index f54f660..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineFLDB.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_Tasks.ConveyorLineJob
-{
-    public enum W_ConveyorLineFLDB
-    {
-        /// <summary>
-        /// 鎵樼洏鍙�
-        /// </summary>
-        Barcode,
-        /// <summary>
-        /// 浠诲姟鍙�
-        /// </summary>
-        TaskNum
-    }
-}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_RgvCPDBName.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_RgvCPDBName.cs"
new file mode 100644
index 0000000..4ae561a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_RgvCPDBName.cs"
@@ -0,0 +1,69 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Tasks.ConveyorLineJob
+{
+    public enum W_RgvCPDB
+    {
+        /// <summary>
+        /// 浠诲姟鍙�<br/>
+        /// </summary>
+        WcsTask,
+        /// <summary>
+        /// 浠诲姟绫诲瀷<br/>
+        /// 1瀹氫綅<br/>
+        /// 2鍙栬揣<br/>
+        /// 3鏀捐揣<br/>
+        /// 4鍙栨斁璐�<br/>
+        /// </summary>
+        TaskType,
+        /// <summary>
+        /// 鎵ц宸ヤ綅<br/>
+        /// 1:1宸ヤ綅<br/>
+        /// 2:2宸ヤ綅<br/>
+        /// 3:3宸ヤ綅<br/>
+        /// 4:12宸ヤ綅<br/>
+        /// 5:13宸ヤ綅<br/>
+        /// 6:23宸ヤ綅<br/>
+        /// 7:123宸ヤ綅<br/>
+        /// </summary>
+        WorkStation,
+        /// <summary>
+        /// 鍙栬揣鍦板潃1<br/>
+        /// </summary>
+        Qu1,
+        /// <summary>
+        /// 鍙栬揣鍦板潃2<br/>
+        /// </summary>
+        Qu2,
+        /// <summary>
+        /// 鍙栬揣鍦板潃2<br/>
+        /// </summary>
+        Qu3,
+        /// <summary>
+        /// 鏀捐揣鍦板潃1<br/>
+        /// </summary>
+        Fang1,
+        /// <summary>
+        /// 鏀捐揣鍦板潃2<br/>
+        /// </summary>
+        Fang2,
+        /// <summary>
+        /// 鏀捐揣鍦板潃3<br/>
+        /// </summary>
+        Fang3,
+        /// <summary>
+        /// 蹇冭烦<br/>
+        /// </summary>
+        HearBeat,
+        /// <summary>
+        /// 涓嬪彂/瀹屾垚浠诲姟鏍囪瘑<br/>
+        /// 1纭浠诲姟涓嬪彂<br/>
+        /// 2纭浠诲姟瀹屾垚<br/>
+        /// </summary>
+        TaskReceivedDone,
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneAutoStatusEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneAutoStatusEnum.cs"
deleted file mode 100644
index a20543e..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneAutoStatusEnum.cs"
+++ /dev/null
@@ -1,41 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace WIDESEAWCS_Tasks.StackerCraneJob
-{
-    /// <summary>
-    /// 鍫嗗灈鏈哄伐浣滄ā寮�
-    /// </summary>
-    public enum StackerCraneAutoStatusEnum
-    {
-        /// <summary>
-        /// 鍗婅嚜鍔�
-        /// </summary>
-        [Description("鍗婅嚜鍔�")]
-        SemiAutomatic = 1,
-        /// <summary>
-        /// 鍗曟
-        /// </summary>
-        [Description("鍗曟")]
-        OnlineAutomatic = 2,
-        /// <summary>
-        /// 鑷姩
-        /// </summary>
-        [Description("鑷姩")]
-        Automatic = 3,
-        /// <summary>
-        /// 鎵嬪姩
-        /// </summary>
-        [Description("鎵嬪姩")]
-        Manual = 4,
-        /// <summary>
-        /// 鑴辨満
-        /// </summary>
-        [Description("鑴辨満")]
-        OffLline = 5
-    }
-}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneStatusEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneStatusEnum.cs"
deleted file mode 100644
index 9059af0..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneStatusEnum.cs"
+++ /dev/null
@@ -1,27 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEAWCS_QuartzJob.StackerCrane.Enum;
-
-namespace WIDESEAWCS_Tasks.StackerCraneJob
-{
-    /// <summary>
-    /// 鍫嗗灈鏈鸿澶囩姸鎬�
-    /// </summary>
-    public enum StackerCraneStatusEnum
-    {
-        /// <summary>
-        /// 涓嶅湪绾�
-        /// </summary>
-        [Description("涓嶅湪绾�")]
-        Fault,
-        /// <summary>
-        /// 鍦ㄧ嚎
-        /// </summary>
-        [Description("鍦ㄧ嚎")]
-        Normal
-    }
-}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneWorkStatusEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneWorkStatusEnum.cs"
deleted file mode 100644
index 1f7f8d8..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneWorkStatusEnum.cs"
+++ /dev/null
@@ -1,46 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace WIDESEAWCS_Tasks.StackerCraneJob
-{
-    /// <summary>
-    /// 鍫嗗灈鏈轰綔涓氱姸鎬�
-    /// </summary>
-    public enum StackerCraneWorkStatusEnum
-    {
-        /// <summary>
-        /// 鏃犺揣寰呮満
-        /// </summary>
-        [Description("鏃犺揣寰呮満")]
-        Standby = 1,
-        /// <summary>
-        /// 鍙栬揣瀹屾垚
-        /// </summary>
-        [Description("鍙栬揣瀹屾垚")]
-        PickUpCompleted = 2,
-        /// <summary>
-        /// 绉诲姩浠诲姟
-        /// </summary>
-        [Description("绉诲姩浠诲姟")]
-        MobileTask = 3,
-        /// <summary>
-        /// 鍙栬揣涓�
-        /// </summary>
-        [Description("鍙栬揣涓�")]
-        PickUp = 4,
-        /// <summary>
-        /// 鏀捐揣涓�
-        /// </summary>
-        [Description("鏀捐揣涓�")]
-        Putting = 5,
-        /// <summary>
-        /// 浠诲姟瀹屾垚寰呭懡
-        /// </summary>
-        [Description("浠诲姟瀹屾垚寰呭懡")]
-        WorkCompleted = 9
-    }
-}
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/ConveyorLineEmptyBack_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/ConveyorLineEmptyBack_CP.cs"
deleted file mode 100644
index 604b772..0000000
--- "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/ConveyorLineEmptyBack_CP.cs"
+++ /dev/null
@@ -1,119 +0,0 @@
-锘縰sing Microsoft.AspNetCore.Components.Routing;
-using Newtonsoft.Json;
-using Quartz;
-using SqlSugar.Extensions;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEAWCS_Common;
-using WIDESEAWCS_Common.TaskEnum;
-using WIDESEAWCS_IBasicInfoRepository;
-using WIDESEAWCS_ITaskInfoRepository;
-using WIDESEAWCS_ITaskInfoService;
-using WIDESEAWCS_Model.Models;
-using WIDESEAWCS_QuartzJob;
-using WIDESEAWCS_QuartzJob.DTO;
-using WIDESEAWCS_QuartzJob.Models;
-using WIDESEAWCS_QuartzJob.Repository;
-using WIDESEAWCS_QuartzJob.Service;
-using WIDESEAWCS_Tasks.ConveyorLineJob;
-using ICacheService = WIDESEAWCS_Core.Caches.ICacheService;
-
-namespace WIDESEAWCS_Tasks
-{
-    [DisallowConcurrentExecution]
-    public class ConveyorLineEmptyBack_CP : JobBase, IJob
-    {
-        private readonly ICacheService _cacheService;
-        private readonly ITaskService _taskService;
-        private readonly ITaskExecuteDetailService _taskExecuteDetailService;
-        private readonly ITaskRepository _taskRepository;
-        private readonly IStationMangerRepository _stationMangerRepository;
-        private readonly IRouterRepository _routerRepository;
-        private readonly IRouterService _routerService;
-        private readonly IRouterExtension _routerExtension;
-        private readonly List<Dt_WarehouseDevice> warehouseDevices;
-
-        public ConveyorLineEmptyBack_CP(ICacheService cacheService, ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IRouterService routerService, IRouterExtension routerExtension)
-        {
-            _cacheService = cacheService;
-            _taskService = taskService;
-            _taskExecuteDetailService = taskExecuteDetailService;
-            _taskRepository = taskRepository;
-            _stationMangerRepository = stationMangerRepository;
-            _routerRepository = routerRepository;
-            _routerService = routerService;
-            _routerExtension = routerExtension;
-
-            string? warehouseDevicesStr = _cacheService.Get<string>(nameof(Dt_WarehouseDevice));
-            if (!string.IsNullOrEmpty(warehouseDevicesStr))
-            {
-                warehouseDevices = JsonConvert.DeserializeObject<List<Dt_WarehouseDevice>>(warehouseDevicesStr) ?? new List<Dt_WarehouseDevice>();
-            }
-            else
-            {
-                warehouseDevices = new List<Dt_WarehouseDevice>();
-            }
-        }
-
-        public Task Execute(IJobExecutionContext context)
-        {
-            bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
-            if (flag && value != null)
-            {
-                OtherDevice device = (OtherDevice)value;
-                Dt_WarehouseDevice? warehouseDevice = warehouseDevices.FirstOrDefault(x => x.DeviceCode == device.DeviceCode);
-                if (warehouseDevice == null)
-                {
-                    WriteError(device.DeviceName, $"璇烽厤缃粨搴撹澶囦俊鎭�");
-                    return Task.CompletedTask;
-                }
-                List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode);
-                Dt_StationManger? dt_StationManger = stationMangers.FirstOrDefault(x => x.StationType == StationTypeEnum.StationType_ProductBackTake.ObjToInt());
-                if (dt_StationManger != null)
-                {
-                    List<Dt_StationManger> ProductBackStations = stationMangers.Where(x => x.StationType == StationTypeEnum.StationType_ProductBack.ObjToInt()).OrderBy(x=>x.Id).ToList();
-                    for (int i = 0; i < ProductBackStations.Count(); i++)
-                    {
-                        short isCanTake = device.GetValue<GroundStationDBName, short>(GroundStationDBName.R_IsCanTake, dt_StationManger.StationCode);
-                        Dt_StationManger stationManger = ProductBackStations[i];
-                        string startDb = "DB29.";
-                        short stationCurrentStatus = device.Communicator.Read<short>(startDb + stationManger.Remark.ToString());
-                        short stationEndStatus = device.Communicator.Read<short>(startDb + (stationManger.Remark.ObjToInt() + 2).ToString());
-                        bool endStatus = true;
-                        if ((i != 2 && i != 5 && i != 8))
-                        {
-                            endStatus = (stationEndStatus == 1);
-                        }
-                        //璇诲彇绾夸綋娈电姸鎬�
-                        if (isCanTake == 1 && stationCurrentStatus == 1 && stationManger.IsOccupied == 0 && endStatus)
-                        {
-                            device.SetValue(W_ConveyorLineCPDB.StartPos, dt_StationManger.StationCode, dt_StationManger.StationCode);
-                            device.SetValue(W_ConveyorLineCPDB.EndPos, stationManger.AGVStationCode, dt_StationManger.StationCode);
-                            device.SetValue(W_ConveyorLineCPDB.Barcode, "C00001", dt_StationManger.StationCode);
-                            device.SetValue(W_ConveyorLineCPDB.TaskNum, DateTime.Now.ToString("yyMMddHHmmss"), dt_StationManger.StationCode);
-                            device.SetValue(W_ConveyorLineCPDB.WorkType, 1, dt_StationManger.StationCode);
-                            device.SetValue(W_ConveyorLineCPDB.WorkMode, 1, dt_StationManger.StationCode);
-                            device.SetValue(W_ConveyorLineCPDB.CheckPos, 1, dt_StationManger.StationCode);
-                            //鍚姩鎸囦护
-                            device.SetValue(W_ConveyorLineCPDB.ConveyArrival, 1, dt_StationManger.StationCode);
-                            stationManger.IsOccupied = 1;
-                            _stationMangerRepository.UpdateData(stationManger);
-                            Thread.Sleep(2000);
-                            return Task.CompletedTask;
-                        }
-                        else if (stationManger.IsOccupied == 1 && (stationCurrentStatus == 3))
-                        {
-                            stationManger.IsOccupied = 0;
-                            _stationMangerRepository.UpdateData(stationManger);
-                        }
-                    }
-                }
-
-            }
-            return Task.CompletedTask;
-        }
-    }
-}
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_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/ConveyorLineJob_CP.cs"
deleted file mode 100644
index 3da2ad1..0000000
--- "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_CP.cs"
+++ /dev/null
@@ -1,207 +0,0 @@
-锘縰sing Microsoft.AspNetCore.Components.Routing;
-using Newtonsoft.Json;
-using Quartz;
-using SqlSugar.Extensions;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEAWCS_Common;
-using WIDESEAWCS_Common.TaskEnum;
-using WIDESEAWCS_Communicator;
-using WIDESEAWCS_IBasicInfoRepository;
-using WIDESEAWCS_ITaskInfoRepository;
-using WIDESEAWCS_ITaskInfoService;
-using WIDESEAWCS_Model.Models;
-using WIDESEAWCS_QuartzJob;
-using WIDESEAWCS_QuartzJob.DTO;
-using WIDESEAWCS_QuartzJob.Models;
-using WIDESEAWCS_QuartzJob.Repository;
-using WIDESEAWCS_QuartzJob.Service;
-using WIDESEAWCS_Tasks.ConveyorLineJob;
-using ICacheService = WIDESEAWCS_Core.Caches.ICacheService;
-
-namespace WIDESEAWCS_Tasks
-{
-    [DisallowConcurrentExecution]
-    public class ConveyorLineJob_CP : JobBase, IJob
-    {
-        private readonly ICacheService _cacheService;
-        private readonly ITaskService _taskService;
-        private readonly ITaskExecuteDetailService _taskExecuteDetailService;
-        private readonly ITaskRepository _taskRepository;
-        private readonly IStationMangerRepository _stationMangerRepository;
-        private readonly IRouterRepository _routerRepository;
-        private readonly IRouterService _routerService;
-        private readonly IRouterExtension _routerExtension;
-        private readonly List<Dt_WarehouseDevice> warehouseDevices;
-
-        public ConveyorLineJob_CP(ICacheService cacheService, ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IRouterService routerService, IRouterExtension routerExtension)
-        {
-            _cacheService = cacheService;
-            _taskService = taskService;
-            _taskExecuteDetailService = taskExecuteDetailService;
-            _taskRepository = taskRepository;
-            _stationMangerRepository = stationMangerRepository;
-            _routerRepository = routerRepository;
-            _routerService = routerService;
-            _routerExtension = routerExtension;
-
-            string? warehouseDevicesStr = _cacheService.Get<string>(nameof(Dt_WarehouseDevice));
-            if (!string.IsNullOrEmpty(warehouseDevicesStr))
-            {
-                warehouseDevices = JsonConvert.DeserializeObject<List<Dt_WarehouseDevice>>(warehouseDevicesStr) ?? new List<Dt_WarehouseDevice>();
-            }
-            else
-            {
-                warehouseDevices = new List<Dt_WarehouseDevice>();
-            }
-        }
-
-        public Task Execute(IJobExecutionContext context)
-        {
-            bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
-            if (flag && value != null)
-            {
-                OtherDevice device = (OtherDevice)value;
-                Dt_WarehouseDevice? warehouseDevice = warehouseDevices.FirstOrDefault(x => x.DeviceCode == device.DeviceCode);
-                if (warehouseDevice == null)
-                {
-                    WriteError(device.DeviceName, $"璇烽厤缃粨搴撹澶囦俊鎭�");
-                    return Task.CompletedTask;
-                }
-                List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).ToList();
-                List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode);
-                foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode)))
-                {
-                    DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
-                    DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(W_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
-                    if (item.StationType==StationTypeEnum.StationType_OnlyInbound.ObjToInt() && deviceProWrite!=null)
-                    {
-                        Dt_Task task = _taskRepository.QueryFirst(x => x.CurrentAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && (x.TaskState == TaskStatusEnum.New.ObjToInt()) && x.DeviceCode == device.DeviceCode);
-                        if (task!=null)
-                        {
-                            //鑾峰彇绔欏彴
-                            Dt_StationManger? stationManger = stationMangers.FirstOrDefault(x => x.StationCode == item.StationCode);
-                            if (stationManger == null)
-                            {
-                                WriteError(item.StationName, $"鏈壘鍒板搴旂珯鍙颁俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
-                                continue;
-                            }
-                            //鏌ヨ璺敱
-                            Dt_Router router = _routerRepository.QueryFirst(x => x.InOutType == task.TaskType && x.StartPosi == task.CurrentAddress);
-                            if (router == null)
-                            {
-                                WriteError(item.StationName, $"鏈壘鍒拌矾鐢遍厤缃俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
-                                continue;
-                            }
-                            //string? locationCode = _taskService.RequestAssignLocation(task.TaskNum, "AGV_CP");
-                            //if (string.IsNullOrEmpty(locationCode) && task.TaskType != TaskTypeEnum.EmptyProductBack.ObjToInt())
-                            //{
-                            //    WriteError(item.StationName, $"璇锋眰鍒嗛厤璐т綅杩斿洖淇℃伅閿欒,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
-                            //    continue;
-                            //}
-                            device.SetValue(W_ConveyorLineCPDB.StartPos, router.StartPosi, item.StationCode);
-                            device.SetValue(W_ConveyorLineCPDB.EndPos, router.NextPosi, item.StationCode);
-                            device.SetValue(W_ConveyorLineCPDB.Barcode, task.PalletCode, item.StationCode);
-                            device.SetValue(W_ConveyorLineCPDB.TaskNum, task.TaskNum, item.StationCode);
-                            device.SetValue(W_ConveyorLineCPDB.WorkType, task.PalletType, item.StationCode);
-                            device.SetValue(W_ConveyorLineCPDB.WorkMode, 1, item.StationCode);
-                            device.SetValue(W_ConveyorLineCPDB.CheckPos, 1, item.StationCode);
-                            //鍚姩鎸囦护
-                            device.SetValue(W_ConveyorLineCPDB.ConveyArrival, 1, item.StationCode);
-                            _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing, nextAddress: router.NextPosi, targetAddress: router.NextPosi);
-                            if (task.TaskType==TaskTypeEnum.EmptyProductBack.ObjToInt())
-                            {
-                                _taskService.TaskCompleted(task.TaskNum);
-                            }
-                        }
-                    }
-                    else if (item.StationType == StationTypeEnum.StationType_InStartAndOutEnd.ObjToInt() && deviceProRead != null)
-                    {
-                        R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress);
-                        if (conveyorLineInfoRead != null && conveyorLineInfoRead.EndPos.ToString() == item.StationCode)
-                        {
-                            short isCanTake = device.GetValue<GroundStationDBName, short>(GroundStationDBName.R_IsCanTake, item.StationCode);
-                            if (conveyorLineInfoRead.ConveyArrivaled == 1 && isCanTake == 1)
-                            {
-                                //鑾峰彇浠诲姟
-                                Dt_Task task = _taskRepository.QueryFirst(x => x.NextAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && (x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt()) && x.DeviceCode == device.DeviceCode && x.TaskNum == conveyorLineInfoRead.TaskNum.ObjToInt());
-                                //鑾峰彇绔欏彴
-                                if (task != null)
-                                {
-                                    Dt_StationManger? stationManger = stationMangers.FirstOrDefault(x => x.StationCode == item.StationCode);
-                                    if (stationManger == null)
-                                    {
-                                        WriteError(item.StationName, $"鏈壘鍒板搴旂珯鍙颁俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
-                                        continue;
-                                    }
-                                    //鏌ヨ璺敱
-                                    Dt_Router router = _routerRepository.QueryFirst(x => x.InOutType == task.TaskType && x.StartPosi == task.NextAddress);
-                                    if (router == null)
-                                    {
-                                        WriteError(item.StationName, $"鏈壘鍒拌矾鐢遍厤缃俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
-                                        continue;
-                                    }
-                                    string? locationCode = _taskService.RequestAssignLocation(task.TaskNum, stationManger.StackerCraneCode);
-                                    if (string.IsNullOrEmpty(locationCode))
-                                    {
-                                        WriteError(item.StationName, $"璇锋眰鍒嗛厤璐т綅杩斿洖淇℃伅閿欒,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
-                                        continue;
-                                    }
-                                    _taskService.UpdateTask(task, TaskStatusEnum.AGV_Execute, deviceCode: router.ChildPosiDeviceCode, currentAddress: router.StartPosi, nextAddress: locationCode, targetAddress: locationCode);
-                                }
-                            }
-
-                        }
-
-                    }
-                }
-                //Dt_StationManger? dt_StationManger = stationMangers.FirstOrDefault(x => x.StationType == StationTypeEnum.StationType_ProductBackTake.ObjToInt());
-                //if (dt_StationManger != null)
-                //{
-                //    DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == dt_StationManger.StationCode && x.DeviceProParamType == nameof(W_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
-                //    List<Dt_StationManger> ProductBackStations = stationMangers.Where(x => x.StationType == StationTypeEnum.StationType_ProductBack.ObjToInt()).ToList();
-                //    for (int i = 0; i < ProductBackStations.Count(); i++)
-                //    {
-                //        short isCanTake = device.GetValue<GroundStationDBName, short>(GroundStationDBName.R_IsCanTake, dt_StationManger.StationCode);
-                //        Dt_StationManger stationManger = ProductBackStations[i];
-                //        string startDb = "DB29.";
-                //        short stationCurrentStatus = device.Communicator.Read<short>(startDb + stationManger.Remark.ToString());
-                //        short stationEndStatus = device.Communicator.Read<short>(startDb + (stationManger.Remark.ObjToInt() + 2).ToString());
-                //        bool endStatus = true;
-                //        if ((i != 2 && i != 5 && i != 8))
-                //        {
-                //            endStatus = (stationEndStatus == 1);
-                //        }
-                //        //璇诲彇绾夸綋娈电姸鎬�
-                //        if (isCanTake == 1 && stationCurrentStatus == 1 && stationManger.IsOccupied==0 && endStatus)
-                //        {
-                //            device.SetValue(W_ConveyorLineCPDB.StartPos, dt_StationManger.StationCode, dt_StationManger.StationCode);
-                //            device.SetValue(W_ConveyorLineCPDB.EndPos, stationManger.AGVStationCode, dt_StationManger.StationCode);
-                //            device.SetValue(W_ConveyorLineCPDB.Barcode, "C00001", dt_StationManger.StationCode);
-                //            device.SetValue(W_ConveyorLineCPDB.TaskNum, DateTime.Now.ToString("yyMMddHHmmss"), dt_StationManger.StationCode);
-                //            device.SetValue(W_ConveyorLineCPDB.WorkType, 1, dt_StationManger.StationCode);
-                //            device.SetValue(W_ConveyorLineCPDB.WorkMode, 1, dt_StationManger.StationCode);
-                //            device.SetValue(W_ConveyorLineCPDB.CheckPos, 1, dt_StationManger.StationCode);
-                //            //鍚姩鎸囦护
-                //            device.SetValue(W_ConveyorLineCPDB.ConveyArrival, 1, dt_StationManger.StationCode);
-                //            stationManger.IsOccupied = 1;
-                //            _stationMangerRepository.UpdateData(stationManger);
-                //            Thread.Sleep(2000);
-                //            return Task.CompletedTask;
-                //        }
-                //        else if(stationManger.IsOccupied == 1 && (stationCurrentStatus == 3))
-                //        {
-                //            stationManger.IsOccupied = 0;
-                //            _stationMangerRepository.UpdateData(stationManger);
-                //        }
-                //    }
-                //}
-                
-            }
-            return Task.CompletedTask;
-        }
-    }
-}
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_CPA.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_CPA.cs"
new file mode 100644
index 0000000..a541310
--- /dev/null
+++ "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_CPA.cs"
@@ -0,0 +1,109 @@
+锘縰sing Microsoft.AspNetCore.Components.Routing;
+using Newtonsoft.Json;
+using Quartz;
+using SqlSugar.Extensions;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Communicator;
+using WIDESEAWCS_IBasicInfoRepository;
+using WIDESEAWCS_ITaskInfoRepository;
+using WIDESEAWCS_ITaskInfoService;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.DTO;
+using WIDESEAWCS_QuartzJob.Models;
+using WIDESEAWCS_QuartzJob.Repository;
+using WIDESEAWCS_QuartzJob.Service;
+using WIDESEAWCS_Tasks.ConveyorLineJob;
+using ICacheService = WIDESEAWCS_Core.Caches.ICacheService;
+
+namespace WIDESEAWCS_Tasks
+{
+    [DisallowConcurrentExecution]
+    public class ConveyorLineJob_CPA : JobBase, IJob
+    {
+        private readonly ICacheService _cacheService;
+        private readonly ITaskService _taskService;
+        private readonly ITaskExecuteDetailService _taskExecuteDetailService;
+        private readonly ITaskRepository _taskRepository;
+        private readonly IStationMangerRepository _stationMangerRepository;
+        private readonly IRouterRepository _routerRepository;
+        private readonly IRouterService _routerService;
+        private readonly IRouterExtension _routerExtension;
+        private readonly List<Dt_WarehouseDevice> warehouseDevices;
+
+        public ConveyorLineJob_CPA(ICacheService cacheService, ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IRouterService routerService, IRouterExtension routerExtension)
+        {
+            _cacheService = cacheService;
+            _taskService = taskService;
+            _taskExecuteDetailService = taskExecuteDetailService;
+            _taskRepository = taskRepository;
+            _stationMangerRepository = stationMangerRepository;
+            _routerRepository = routerRepository;
+            _routerService = routerService;
+            _routerExtension = routerExtension;
+
+            string? warehouseDevicesStr = _cacheService.Get<string>(nameof(Dt_WarehouseDevice));
+            if (!string.IsNullOrEmpty(warehouseDevicesStr))
+            {
+                warehouseDevices = JsonConvert.DeserializeObject<List<Dt_WarehouseDevice>>(warehouseDevicesStr) ?? new List<Dt_WarehouseDevice>();
+            }
+            else
+            {
+                warehouseDevices = new List<Dt_WarehouseDevice>();
+            }
+        }
+
+        public Task Execute(IJobExecutionContext context)
+        {
+            bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
+            if (flag && value != null)
+            {
+                OtherDevice device = (OtherDevice)value;
+                List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).ToList();
+                List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode);
+                foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode)))
+                {
+                    DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+                    DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(W_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+                    if (deviceProRead != null)
+                    {
+                        R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress);
+                        if (conveyorLineInfoRead.Command == 2 && conveyorLineInfoRead.TaskNo > 0)
+                        {
+                            Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == conveyorLineInfoRead.TaskNo && x.NextAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode);
+                            if (task != null)
+                            {
+                                //鍒嗛厤璐т綅
+                                string local = "SC01_CP-001-064-001-01";
+                                task.CurrentAddress = item.StackerCraneStationCode;
+                                task.TargetAddress= local;
+                                task.NextAddress = local;
+                                task.DeviceCode = item.StackerCraneCode;
+                                _taskService.UpdateTask(task, TaskStatusEnum.SC_Execute);
+                                WriteError(item.StationName, $"浠诲姟鍙�:{task.TaskNum}杩涜鍫嗗灈鏈哄叆搴�");
+                                //string? locationCode = _taskService.RequestAssignLocation(task.TaskNum, "AGV_CP");
+                                //if (string.IsNullOrEmpty(locationCode) && task.TaskType != TaskTypeEnum.EmptyProductBack.ObjToInt())
+                                //{
+                                //    WriteError(item.StationName, $"璇锋眰鍒嗛厤璐т綅杩斿洖淇℃伅閿欒,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
+                                //    continue;
+                                //}
+
+                            }
+                        }
+                    }
+                    else
+                    {
+                        WriteError(item.StationName, $"鏈壘鍒拌澶囧瓙缂栧彿{item.StationCode}鐨勫崗璁俊鎭�");
+                    }
+                }
+            }
+            return Task.CompletedTask;
+        }
+    }
+}
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_CPB.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_CPB.cs"
new file mode 100644
index 0000000..91ec5eb
--- /dev/null
+++ "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_CPB.cs"
@@ -0,0 +1,127 @@
+锘縰sing Microsoft.AspNetCore.Components.Routing;
+using Newtonsoft.Json;
+using Quartz;
+using SqlSugar.Extensions;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Communicator;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_IBasicInfoRepository;
+using WIDESEAWCS_ITaskInfoRepository;
+using WIDESEAWCS_ITaskInfoService;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.DTO;
+using WIDESEAWCS_QuartzJob.Models;
+using WIDESEAWCS_QuartzJob.Repository;
+using WIDESEAWCS_QuartzJob.Service;
+using WIDESEAWCS_Tasks.ConveyorLineJob;
+using ICacheService = WIDESEAWCS_Core.Caches.ICacheService;
+
+namespace WIDESEAWCS_Tasks
+{
+    [DisallowConcurrentExecution]
+    public class ConveyorLineJob_CPB : JobBase, IJob
+    {
+        private readonly ICacheService _cacheService;
+        private readonly ITaskService _taskService;
+        private readonly ITaskExecuteDetailService _taskExecuteDetailService;
+        private readonly ITaskRepository _taskRepository;
+        private readonly IStationMangerRepository _stationMangerRepository;
+        private readonly IRouterRepository _routerRepository;
+        private readonly IRouterService _routerService;
+        private readonly IRouterExtension _routerExtension;
+        private readonly List<Dt_WarehouseDevice> warehouseDevices;
+
+        public ConveyorLineJob_CPB(ICacheService cacheService, ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IRouterService routerService, IRouterExtension routerExtension)
+        {
+            _cacheService = cacheService;
+            _taskService = taskService;
+            _taskExecuteDetailService = taskExecuteDetailService;
+            _taskRepository = taskRepository;
+            _stationMangerRepository = stationMangerRepository;
+            _routerRepository = routerRepository;
+            _routerService = routerService;
+            _routerExtension = routerExtension;
+
+            string? warehouseDevicesStr = _cacheService.Get<string>(nameof(Dt_WarehouseDevice));
+            if (!string.IsNullOrEmpty(warehouseDevicesStr))
+            {
+                warehouseDevices = JsonConvert.DeserializeObject<List<Dt_WarehouseDevice>>(warehouseDevicesStr) ?? new List<Dt_WarehouseDevice>();
+            }
+            else
+            {
+                warehouseDevices = new List<Dt_WarehouseDevice>();
+            }
+        }
+
+        public Task Execute(IJobExecutionContext context)
+        {
+            bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
+            if (flag && value != null)
+            {
+                OtherDevice device = (OtherDevice)value;
+                List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).Distinct().ToList();
+                List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode);
+                foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode)))
+                {
+                    DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+                    DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(W_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+                    if (deviceProRead != null && deviceProWrite!=null)
+                    {
+                        R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress);
+                        if (conveyorLineInfoRead.Command == 6 && conveyorLineInfoRead.TaskNo>0 && !string.IsNullOrEmpty(conveyorLineInfoRead.PalletCode))
+                        {
+                            Dt_Task task = _taskRepository.QueryFirst(x =>x.TaskNum== conveyorLineInfoRead.TaskNo && x.CurrentAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Execute.ObjToInt() && x.DeviceCode==device.DeviceCode);
+                            if (task != null)
+                            {
+                                //鍒嗛厤宸烽亾 瀛樺叆鎵樼洏鏁版嵁
+                                
+                                List<Dt_Router> routers = _routerService.QueryNextRoutes(item.StationCode, "SC01_CP", task.TaskType);
+                                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(W_ConveyorLineCPDB.TargetAddress, router.NextPosi, item.StationCode);
+                                device.SetValue(W_ConveyorLineCPDB.TaskNo, task.TaskNum, item.StationCode);
+                                device.SetValue(W_ConveyorLineCPDB.Command, 1, item.StationCode);
+                                task.NextAddress=router.NextPosi;
+                                task.PalletType = 1;
+                                task.PalletCode = conveyorLineInfoRead.PalletCode;
+                                task.Roadway = "SC01_CP";
+                                task.DeviceCode = router.ChildPosiDeviceCode;
+                                _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing);
+                                WriteError(item.StationName, $"浠诲姟鍙穥conveyorLineInfoRead.TaskNo}涓嬩竴姝�");
+                                //string? locationCode = _taskService.RequestAssignLocation(task.TaskNum, "AGV_CP");
+                                //if (string.IsNullOrEmpty(locationCode) && task.TaskType != TaskTypeEnum.EmptyProductBack.ObjToInt())
+                                //{
+                                //    WriteError(item.StationName, $"璇锋眰鍒嗛厤璐т綅杩斿洖淇℃伅閿欒,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
+                                //    continue;
+                                //}
+
+                            }
+                        }
+                    }
+                    else
+                    {
+                        WriteError(item.StationName, $"鏈壘鍒拌澶囧瓙缂栧彿{item.StationCode}鐨勫崗璁俊鎭�");
+                    }
+                }
+            }
+            return Task.CompletedTask;
+        }
+    }
+}
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_CPC.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_CPC.cs"
new file mode 100644
index 0000000..68b33fc
--- /dev/null
+++ "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_CPC.cs"
@@ -0,0 +1,108 @@
+锘縰sing Microsoft.AspNetCore.Components.Routing;
+using Newtonsoft.Json;
+using Quartz;
+using SqlSugar.Extensions;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Communicator;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_IBasicInfoRepository;
+using WIDESEAWCS_ITaskInfoRepository;
+using WIDESEAWCS_ITaskInfoService;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.DTO;
+using WIDESEAWCS_QuartzJob.Models;
+using WIDESEAWCS_QuartzJob.Repository;
+using WIDESEAWCS_QuartzJob.Service;
+using WIDESEAWCS_Tasks.ConveyorLineJob;
+using ICacheService = WIDESEAWCS_Core.Caches.ICacheService;
+
+namespace WIDESEAWCS_Tasks
+{
+    [DisallowConcurrentExecution]
+    public class ConveyorLineJob_CPC : JobBase, IJob
+    {
+        private readonly ICacheService _cacheService;
+        private readonly ITaskService _taskService;
+        private readonly ITaskExecuteDetailService _taskExecuteDetailService;
+        private readonly ITaskRepository _taskRepository;
+        private readonly IStationMangerRepository _stationMangerRepository;
+        private readonly IRouterRepository _routerRepository;
+        private readonly IRouterService _routerService;
+        private readonly IRouterExtension _routerExtension;
+        private readonly List<Dt_WarehouseDevice> warehouseDevices;
+
+        public ConveyorLineJob_CPC(ICacheService cacheService, ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IRouterService routerService, IRouterExtension routerExtension)
+        {
+            _cacheService = cacheService;
+            _taskService = taskService;
+            _taskExecuteDetailService = taskExecuteDetailService;
+            _taskRepository = taskRepository;
+            _stationMangerRepository = stationMangerRepository;
+            _routerRepository = routerRepository;
+            _routerService = routerService;
+            _routerExtension = routerExtension;
+
+            string? warehouseDevicesStr = _cacheService.Get<string>(nameof(Dt_WarehouseDevice));
+            if (!string.IsNullOrEmpty(warehouseDevicesStr))
+            {
+                warehouseDevices = JsonConvert.DeserializeObject<List<Dt_WarehouseDevice>>(warehouseDevicesStr) ?? new List<Dt_WarehouseDevice>();
+            }
+            else
+            {
+                warehouseDevices = new List<Dt_WarehouseDevice>();
+            }
+        }
+
+        public Task Execute(IJobExecutionContext context)
+        {
+            bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
+            if (flag && value != null)
+            {
+                OtherDevice device = (OtherDevice)value;
+                List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).Distinct().ToList();
+                List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode);
+                foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode)))
+                {
+                    DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+                    DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(W_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+                    if (item.StationType == StationTypeEnum.StationType_InStartAndOutEnd.ObjToInt() && deviceProRead != null)
+                    {
+                        R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress);
+                        if (conveyorLineInfoRead.StatusPV == 3 && conveyorLineInfoRead.Command == 11)
+                        {
+                            Dt_Task task = _taskRepository.QueryFirst(x => x.SourceAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && (x.TaskState == TaskStatusEnum.RGV_Execute.ObjToInt() || x.TaskState == TaskStatusEnum.RGV_Executing.ObjToInt() || x.TaskState == TaskStatusEnum.New.ObjToInt()));
+                            if (task == null)
+                            {
+                                //鑾峰彇绔欏彴
+                                WebResponseContent content = _taskService.RequestWMSTaskSimple("", item.StationCode);
+                                //string? locationCode = _taskService.RequestAssignLocation(task.TaskNum, "AGV_CP");
+                                //if (string.IsNullOrEmpty(locationCode) && task.TaskType != TaskTypeEnum.EmptyProductBack.ObjToInt())
+                                //{
+                                //    WriteError(item.StationName, $"璇锋眰鍒嗛厤璐т綅杩斿洖淇℃伅閿欒,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
+                                //    continue;
+                                //}
+                                if (content.Status)
+                                {
+                                    Dt_Task taskNew = _taskRepository.QueryFirst(x => x.SourceAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && (x.TaskState == TaskStatusEnum.New.ObjToInt()));
+                                    if (taskNew != null)
+                                    {
+                                        _taskService.UpdateTask(taskNew, TaskStatusEnum.RGV_Execute);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    
+                }
+            }
+            return Task.CompletedTask;
+        }
+    }
+}
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"
new file mode 100644
index 0000000..1328a57
--- /dev/null
+++ "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"
@@ -0,0 +1,79 @@
+锘縰sing Microsoft.AspNetCore.Components.Routing;
+using Newtonsoft.Json;
+using Quartz;
+using SqlSugar.Extensions;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Communicator;
+using WIDESEAWCS_IBasicInfoRepository;
+using WIDESEAWCS_ITaskInfoRepository;
+using WIDESEAWCS_ITaskInfoService;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.DTO;
+using WIDESEAWCS_QuartzJob.Models;
+using WIDESEAWCS_QuartzJob.Repository;
+using WIDESEAWCS_QuartzJob.Service;
+using WIDESEAWCS_Tasks.ConveyorLineJob;
+using ICacheService = WIDESEAWCS_Core.Caches.ICacheService;
+
+namespace WIDESEAWCS_Tasks
+{
+    [DisallowConcurrentExecution]
+    public class ConveyorLineJob_CPD : JobBase, IJob
+    {
+        private readonly ICacheService _cacheService;
+        private readonly ITaskService _taskService;
+        private readonly ITaskExecuteDetailService _taskExecuteDetailService;
+        private readonly ITaskRepository _taskRepository;
+        private readonly IStationMangerRepository _stationMangerRepository;
+        private readonly IRouterRepository _routerRepository;
+        private readonly IRouterService _routerService;
+        private readonly IRouterExtension _routerExtension;
+        private readonly List<Dt_WarehouseDevice> warehouseDevices;
+
+        public ConveyorLineJob_CPD(ICacheService cacheService, ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IRouterService routerService, IRouterExtension routerExtension)
+        {
+            _cacheService = cacheService;
+            _taskService = taskService;
+            _taskExecuteDetailService = taskExecuteDetailService;
+            _taskRepository = taskRepository;
+            _stationMangerRepository = stationMangerRepository;
+            _routerRepository = routerRepository;
+            _routerService = routerService;
+            _routerExtension = routerExtension;
+
+            string? warehouseDevicesStr = _cacheService.Get<string>(nameof(Dt_WarehouseDevice));
+            if (!string.IsNullOrEmpty(warehouseDevicesStr))
+            {
+                warehouseDevices = JsonConvert.DeserializeObject<List<Dt_WarehouseDevice>>(warehouseDevicesStr) ?? new List<Dt_WarehouseDevice>();
+            }
+            else
+            {
+                warehouseDevices = new List<Dt_WarehouseDevice>();
+            }
+        }
+
+        public Task Execute(IJobExecutionContext context)
+        {
+            bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
+            if (flag && value != null)
+            {
+                OtherDevice device = (OtherDevice)value;
+                List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).ToList();
+                List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode);
+                foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode)))
+                {
+                    DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+                    DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(W_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+                }
+            }
+            return Task.CompletedTask;
+        }
+    }
+}
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/RGVJob_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/RGVJob_CP.cs"
new file mode 100644
index 0000000..64903f2
--- /dev/null
+++ "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/RGVJob_CP.cs"
@@ -0,0 +1,129 @@
+锘縰sing Microsoft.AspNetCore.Components.Routing;
+using Microsoft.IdentityModel.Tokens;
+using Newtonsoft.Json;
+using Quartz;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Common.Helper;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.Caches;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_IBasicInfoRepository;
+using WIDESEAWCS_ITaskInfoRepository;
+using WIDESEAWCS_ITaskInfoService;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.DTO;
+using WIDESEAWCS_QuartzJob.Models;
+using WIDESEAWCS_QuartzJob.Repository;
+using WIDESEAWCS_QuartzJob.Service;
+using WIDESEAWCS_Tasks.ConveyorLineJob;
+
+namespace WIDESEAWCS_Tasks
+{
+    [DisallowConcurrentExecution]
+    public class RGVJob_CP : JobBase, IJob
+    {
+        private readonly ICacheService _cacheService;
+        private readonly ITaskService _taskService;
+        private readonly ITaskExecuteDetailService _taskExecuteDetailService;
+        private readonly ITaskRepository _taskRepository;
+        private readonly IStationMangerRepository _stationMangerRepository;
+        private readonly IRouterRepository _routerRepository;
+        private readonly IRouterService _routerService;
+        private readonly IRouterExtension _routerExtension;
+        private readonly List<Dt_WarehouseDevice> warehouseDevices;
+
+        public RGVJob_CP(ICacheService cacheService, ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IRouterService routerService, IRouterExtension routerExtension)
+        {
+            _cacheService = cacheService;
+            _taskService = taskService;
+            _taskExecuteDetailService = taskExecuteDetailService;
+            _taskRepository = taskRepository;
+            _stationMangerRepository = stationMangerRepository;
+            _routerRepository = routerRepository;
+            _routerService = routerService;
+            _routerExtension = routerExtension;
+
+            string? warehouseDevicesStr = _cacheService.Get<string>(nameof(Dt_WarehouseDevice));
+            if (!string.IsNullOrEmpty(warehouseDevicesStr))
+            {
+                warehouseDevices = JsonConvert.DeserializeObject<List<Dt_WarehouseDevice>>(warehouseDevicesStr) ?? new List<Dt_WarehouseDevice>();
+            }
+            else
+            {
+                warehouseDevices = new List<Dt_WarehouseDevice>();
+            }
+        }
+
+        public Task Execute(IJobExecutionContext context)
+        {
+            bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
+            if (flag && value != null)
+            {
+                OtherDevice device = (OtherDevice)value;
+
+                DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == device.DeviceCode && x.DeviceProParamType == nameof(R_RgvCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+
+                DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == device.DeviceCode && x.DeviceProParamType == nameof(W_RgvCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+                Console.WriteLine(DateTime.Now.ToString("yyyy-mm-ddd HH:mm:ss"));
+                if (deviceProRead != null && deviceProWrite != null)
+                {
+                    R_RGVCPInfo rgvInfoRead = device.Communicator.ReadCustomer<R_RGVCPInfo>(deviceProRead.DeviceProAddress);
+                    if (rgvInfoRead.Mode==4  && rgvInfoRead.State == 0 && rgvInfoRead.TaskDone==1)
+                    {
+                        //鑾峰彇浠诲姟
+                        Dt_Task task = _taskRepository.QueryFirst(x => _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.RGV_Execute.ObjToInt() && x.DeviceCode==device.DeviceCode);
+                        if (task != null)
+                        {
+                            device.SetValue(W_RgvCPDB.WcsTask, task.TaskNum);
+                            device.SetValue(W_RgvCPDB.TaskType, 4);
+                            device.SetValue(W_RgvCPDB.WorkStation, 1);
+                            device.SetValue(W_RgvCPDB.Qu1, task.CurrentAddress);
+                            device.SetValue(W_RgvCPDB.Fang1, task.NextAddress);
+                            device.SetValue(W_RgvCPDB.TaskReceivedDone, 1);
+                            Thread.Sleep(1000);
+                            //澶嶄綅淇″彿
+                            device.SetValue(W_RgvCPDB.TaskReceivedDone, 0);
+                            _taskService.UpdateTask(task, TaskStatusEnum.RGV_Executing);
+                        }
+                    }
+                    else if(rgvInfoRead.Mode == 4 && rgvInfoRead.State == 1 && rgvInfoRead.TaskDone == 3)
+                    {
+                        //鑾峰彇浠诲姟
+                        Dt_Task task = _taskRepository.QueryFirst(x =>x.TaskNum==rgvInfoRead.RgvEndTask &&  _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.RGV_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode);
+                        if (task != null)
+                        {
+                            //鑾峰彇涓嬩竴涓妭鐐圭殑璺敱
+                            Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == task.NextAddress);
+                            task.CurrentAddress = task.NextAddress;
+                            task.NextAddress = "";
+                            task.DeviceCode = stationManger.StationDeviceCode;
+                            device.SetValue(W_RgvCPDB.TaskReceivedDone, 2);
+                            Thread.Sleep(1000);
+                            //澶嶄綅淇″彿
+                            device.SetValue(W_RgvCPDB.TaskReceivedDone, 0);
+                            _taskService.UpdateTask(task, TaskStatusEnum.Line_Execute);
+                            WriteError(device.DeviceName, $"RGV浠诲姟瀹屾垚,浠诲姟鍙穥rgvInfoRead.RgvEndTask}");
+                        }
+                        else
+                        {
+                            WriteError(device.DeviceName, $"鏈壘鍒癛GV瀵瑰簲鐨勭粨鏉熶换鍔rgvInfoRead.RgvEndTask}");
+                        }
+                    }
+                }
+                else
+                {
+                    WriteError(device.DeviceName, $"鏈壘鍒拌澶囧瓙缂栧彿{device.DeviceCode}鐨勫崗璁俊鎭�");
+                }
+            }
+
+            return Task.CompletedTask;
+        }
+    }
+}
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_CP1.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"
similarity index 96%
rename from "\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_CP1.cs"
rename to "\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 73edfba..067c53d 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_CP1.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"
@@ -26,7 +26,7 @@
 namespace WIDESEAWCS_Tasks
 {
     [DisallowConcurrentExecution]
-    public class StackerCraneJob_CP1 : JobBase, IJob
+    public class StackerCraneJob_CP : JobBase, IJob
     {
         private readonly ITaskService _taskService;
         private readonly ITaskExecuteDetailService _taskExecuteDetailService;
@@ -34,7 +34,7 @@
         private readonly IRouterService _routerService;
         private readonly IStationMangerRepository _stationMangerRepository;
 
-        public StackerCraneJob_CP1(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository)
+        public StackerCraneJob_CP(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository)
         {
             _taskService = taskService;
             _taskExecuteDetailService = taskExecuteDetailService;
@@ -81,7 +81,7 @@
             }
             catch (Exception ex)
             {
-                WriteError(nameof(StackerCraneJob_CP1), ex.Message, ex);
+                WriteError(nameof(StackerCraneJob_CP), ex.Message, ex);
             }
             return Task.CompletedTask;
         }
@@ -228,7 +228,7 @@
                 if (device != null)
                 {
                     OtherDevice client = (OtherDevice)device;
-                    if (!client.GetValue<R_ConveyorLineDB, bool>(R_ConveyorLineDB.Goods, stationManger.StationCode))//鍑哄簱绔欏彴鏈鍗犵敤
+                    if (client.GetValue<R_ConveyorLineCPDB, short>(R_ConveyorLineCPDB.Command, stationManger.StationCode)==3)//鍑哄簱绔欏彴鏈鍗犵敤
                     {
                         task.NextAddress = stationManger.StackerCraneStationCode;
                         _taskRepository.UpdateData(task);

--
Gitblit v1.9.3