From 84ebbaf5bcb24a7b283c7aee38879b16f262b7c6 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期五, 05 十二月 2025 10:14:31 +0800
Subject: [PATCH] 更新

---
 项目代码/WCSServices/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs          |    4 
 项目代码/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs            |  195 +++++++++++---
 项目代码/WCSClient/src/views/taskinfo/task.vue                            |    2 
 项目代码/WCSServices/WIDESEAWCS_BasicInfoService/LocationInfoService.cs   |   55 ++++
 项目代码/WCSServices/WIDESEAWCS_Model/Models/BasicInfo/Dt_LocationInfo.cs |   29 ++
 项目资料/接口汇总文件/WMS接口对接文档20251202_V1.1.3.docx                             |    0 
 项目代码/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs          |   16 +
 项目资料/接口汇总文件/WMS接口.docx                                                |    0 
 项目资料/一期对接相关资料/播种墙报文.docx                                              |    0 
 项目代码/WCSServices/WIDESEAWCS_Common/APIEnum/APIEnum.cs                 |   21 +
 项目代码/WCSServices/WIDESEAWCS_Tasks/AGV/AGVExtend.cs                    |    4 
 项目代码/WCSServices/WIDESEAWCS_DTO/EPLightContent.cs                     |   39 +++
 项目代码/WCSServices/WIDESEAWCS_DTO/EPLightBackDTO.cs                     |   32 ++
 项目资料/接口汇总文件/EPLight Web API 接口文档1.1.docx                              |    0 
 项目代码/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs |   15 +
 项目代码/WCSServices/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs                |   31 ++
 项目代码/WCSServices/WIDESEAWCS_Server/Filter/CustomProfile.cs            |    2 
 项目代码/WCSServices/WIDESEAWCS_Server/Controllers/WebAPIController.cs    |  129 +++++++++
 项目代码/WCSServices/WIDESEAWCS_Tasks/一期线体/ConveyorLineJob1.cs            |   85 ++++++
 项目资料/一期对接相关资料/哈尔滨一期输送线对接协议modbusTcp协议V1.1.xlsx                        |    0 
 项目代码/WCSServices/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs      |   13 
 项目代码/WCSServices/WIDESEAWCS_Tasks/二期线体/ConveyorLineJob2.cs            |   14 
 项目代码/WCSServices/WIDESEAWCS_DTO/EPLightSendDTO.cs                     |   41 +++
 项目代码/WCSServices/WIDESEAWCS_DTO/TaskInfo/ContainerDTO.cs              |   14 
 项目代码/WCSClient/src/views/basicinfo/locationInfo.vue                   |    2 
 25 files changed, 672 insertions(+), 71 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSClient/src/views/basicinfo/locationInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSClient/src/views/basicinfo/locationInfo.vue"
index 33c4e0a..74915ed 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSClient/src/views/basicinfo/locationInfo.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSClient/src/views/basicinfo/locationInfo.vue"
@@ -49,7 +49,7 @@
         { title: "璐т綅缂栧彿", field: "locationCode", type: "like"},
         { title: "鏂欑缂栧彿", field: "palletCode", type: "like"},
         { title: "绂佺敤鐘舵��", field: "enableStatus" ,type: "select",dataKey: "",data: [{key: "0",value: "鍚敤"},{key: "3",value: "绂佺敤"}]},
-        { title: "璐т綅鐘舵��", field: "locationStatus" ,type: "selectList",dataKey: "locationStatusEnum",data: []},
+        { title: "璐т綅鐘舵��", field: "locationStatus" ,type: "selectList",dataKey: "",data: [{key: "0",value: "绌洪棽"},{key: "1",value: "閿佸畾"},{key: "100",value: "鏈夎揣"}]},
       ],
       [
         { title: "琛�", field: "row" ,type: "int"},
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSClient/src/views/taskinfo/task.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSClient/src/views/taskinfo/task.vue"
index b0c8fd7..87869f7 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSClient/src/views/taskinfo/task.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSClient/src/views/taskinfo/task.vue"
@@ -24,7 +24,7 @@
       cnName: "浠诲姟淇℃伅",
       name: "task",
       url: "/Task/",
-      sortName: "CreateDate",
+      sortName: "taskNum",
     });
     const editFormFields = ref({});
     const editFormOptions = ref([]);
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_BasicInfoService/LocationInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_BasicInfoService/LocationInfoService.cs"
index d26efaa..0434f5d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_BasicInfoService/LocationInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_BasicInfoService/LocationInfoService.cs"
@@ -1,4 +1,8 @@
 锘縰sing HslCommunication.WebSocket;
+using Magicodes.ExporterAndImporter.Core;
+using Magicodes.ExporterAndImporter.Excel;
+using MathNet.Numerics.Statistics.Mcmc;
+using NPOI.Util.Collections;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
 using SqlSugar;
@@ -188,5 +192,56 @@
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
+        public override WebResponseContent Export(PageDataOptions options)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                string savePath = AppDomain.CurrentDomain.BaseDirectory + $"ExcelExport";
+                IExporter exporter = new ExcelExporter();
+                options.Page = 1;
+                options.Rows = 30;
+                options.Order = "asc";
+                options.Sort = "id";
+
+                string where = string.Empty;
+                ISugarQueryable<Dt_LocationInfo> sugarQueryable = BaseDal.Db.Queryable<Dt_LocationInfo>();
+                if (!string.IsNullOrEmpty(options.Wheres))
+                {
+                    try
+                    {
+                        List<SearchParameters> searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
+                        if (searchParametersList?.Any() == true)
+                        {
+                            foreach (var param in searchParametersList)
+                            {
+                                switch (param.Name)
+                                {
+                                    
+                                }
+                            }
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                    }
+                }
+
+                
+
+                byte[] data = exporter.ExportAsByteArray(sugarQueryable.ToList()).Result;
+
+                string fileName = "搴撲綅淇℃伅.xlsx";
+
+                FileHelper.WriteFile(savePath, fileName, data);
+
+                content = WebResponseContent.Instance.OK(data: savePath + "\\" + fileName);
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/APIEnum/APIEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/APIEnum/APIEnum.cs"
index ea9119a..5c487af 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/APIEnum/APIEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Common/APIEnum/APIEnum.cs"
@@ -20,14 +20,29 @@
         [Description("AGV浠诲姟鏀捐鎺ュ彛")]
         AgvTaskFlow,
         /// <summary>
-        /// WMS鍏ュ簱鍙嶉瀹屾垚
+        /// WMS鍑哄叆搴撳弽棣堝畬鎴�
         /// </summary>
-        [Description("WMS鍏ュ簱鍙嶉瀹屾垚")]
-        WMSInBoundBack,
+        [Description("WMS鍑哄叆搴撳弽棣堝畬鎴�")]
+        WMSInOutBoundBack,
         /// <summary>
         /// WMS鏂欑鍒拌揪鎷i�変綅涓婃姤
         /// </summary>
         [Description("WMS鏂欑鍒拌揪鎷i�変綅涓婃姤")]
         WMSPickArrivedUp,
+        /// <summary>
+        /// 浜屾湡鎾澧欏垵濮嬪寲
+        /// </summary>
+        [Description("浜屾湡鎾澧欏垵濮嬪寲")]
+        INITIALIZATION,
+        /// <summary>
+        /// 浜屾湡鎾澧欑粨鏉熶綔涓�
+        /// </summary>
+        [Description("浜屾湡鎾澧欑粨鏉熶綔涓�")]
+        ENDWORK,
+        /// <summary>
+        /// 浜屾湡鎾澧欎笅鍙�
+        /// </summary>
+        [Description("浜屾湡鎾澧欎笅鍙�")]
+        PickOrderInfoRequest,
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/EPLightBackDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/EPLightBackDTO.cs"
new file mode 100644
index 0000000..0e5c659
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/EPLightBackDTO.cs"
@@ -0,0 +1,32 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_DTO
+{
+    public class EPLightBackDTO
+    {
+        /// <summary>
+        /// 璁㈠崟鍙�
+        /// </summary>
+        public string DOCNO { get; set; }
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string TASKNO { get; set; }
+        /// <summary>
+        /// 璐т綅鍙�
+        /// </summary>
+        public string LOCATION { get; set; }
+        /// <summary>
+        /// 瀹為檯鎷嶇伅鏁伴噺
+        /// </summary>
+        public int QUANTITY { get; set; }
+        /// <summary>
+        /// 鎷嶇伅鏃堕棿
+        /// </summary>
+        public string RETURNTIME { get; set; }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/EPLightContent.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/EPLightContent.cs"
new file mode 100644
index 0000000..9d06305
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/EPLightContent.cs"
@@ -0,0 +1,39 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+
+namespace WIDESEAWCS_DTO
+{
+    public class EPLightContent
+    {
+        /// <summary>
+        /// 杩斿洖缁撴灉 0:鎴愬姛;-1:澶辫触
+        /// </summary>
+        public string Result { get; set; }
+        /// <summary>
+        /// 杩斿洖淇℃伅
+        /// </summary>
+        public string Msg { get; set; }
+
+        public EPLightContent()
+        {
+        }
+
+        public EPLightContent OK(string message = "")
+        {
+            Result = "0";
+            Msg = message;
+            return this;
+        }
+
+        public EPLightContent Error(string message = "")
+        {
+            Result = "-1";
+            Msg = message;
+            return this;
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/EPLightSendDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/EPLightSendDTO.cs"
new file mode 100644
index 0000000..88ff6ed
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/EPLightSendDTO.cs"
@@ -0,0 +1,41 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_DTO
+{
+    public class EPLightSendDTO
+    {
+        /// <summary>
+        /// 璁㈠崟鍙�
+        /// </summary>
+        public string DOCNO { get; set; }
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string TASKNO { get; set; }
+        /// <summary>
+        /// 璐т綅鍙�
+        /// </summary>
+        public string LOCATION { get; set; }
+        /// <summary>
+        /// 浜伅鏁伴噺
+        /// </summary>
+        public int QUANTITY { get; set; }
+        /// <summary>
+        /// 浜伅棰滆壊
+        /// </summary>
+        public string LIGHTCOLOR { get; set; }
+        /// <summary>
+        /// 浜伅鐘舵�侊細1锛氫寒锛�2鐏�
+        /// </summary>
+        public string ORDERTYPE { get; set; }
+        /// <summary>
+        /// 涓氬姟绫诲瀷 1锛氬叆搴撲寒鐏� 2锛氬嚭搴撲寒鐏�
+        /// </summary>
+        public string LIGHTTYPE { get; set; }
+    }
+
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/TaskInfo/ContainerDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/TaskInfo/ContainerDTO.cs"
index 6c8d625..d072c58 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/TaskInfo/ContainerDTO.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/TaskInfo/ContainerDTO.cs"
@@ -41,7 +41,7 @@
         public string Direction { get; set; }
     }
     /// <summary>
-    /// 鏂欑鍏ュ簱瀹屾垚涓婃姤
+    /// 鏂欑鍑哄叆搴撳畬鎴愪笂鎶�
     /// </summary>
     public class ContainerInFinishDTO
     {
@@ -54,12 +54,16 @@
         /// </summary>
         public string ContainerCode { get; set; }
         /// <summary>
-        /// 璧峰绔欏彴
+        /// 绔欏彴
         /// </summary>
-        public string FromStationCode { get; set; }
+        public string StationCode { get; set; }
         /// <summary>
-        /// 鐩爣璐т綅
+        /// 璐т綅
         /// </summary>
-        public string ToLocationCode { get; set; }
+        public string LocationCode { get; set; }
+        /// <summary>
+        /// 1鍑哄簱瀹屾垚锛�2鍏ュ簱瀹屾垚
+        /// </summary>
+        public int CompleteType { get; set; }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs"
index 0377d7b..cceb9a4 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs"
@@ -15,10 +15,23 @@
         /// 浠诲姟鍙�
         /// </summary>
         public string TaskCode { get; set; }
+
         /// <summary>
         /// 浠诲姟浼樺厛绾�
         /// </summary>
         public int TaskPriority { get; set; }
+
+        /// <summary>
+        /// 浠诲姟淇℃伅
+        /// </summary>
+        public TaskDescribe TaskDescribe { get; set; }
+
+    }
+    /// <summary>
+    /// 浠诲姟淇℃伅
+    /// </summary>
+    public class TaskDescribe
+    {
         /// <summary>
         /// 鏂欑鍙�
         /// </summary>
@@ -44,7 +57,9 @@
         /// </summary>
         public string ToLocationCode { get; set; }
     }
-
+    /// <summary>
+    /// 鎺ユ敹浠诲姟
+    /// </summary>
     public class WMSTaskDTO
     {
         /// <summary>
@@ -64,4 +79,18 @@
         /// </summary>
         public List<TasksItem> Tasks { get; set; }
     }
+    /// <summary>
+    /// 鍙栨秷浠诲姟
+    /// </summary>
+    public class TaskCancel
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string TaskCode { get; set; }
+        /// <summary>
+        /// 鏂欑缂栧彿
+        /// </summary>
+        public string ContainerCode { get; set; }
+    }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
index c7c0852..6caa9f4 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
@@ -136,5 +136,21 @@
         /// </summary>
         /// <returns></returns>
         WebResponseContent TaskCompleted(int taskNum);
+        /// <summary>
+        /// 浜屾湡鎾澧欎笅鍙�
+        /// </summary>
+        /// <param name="lightSendDTOs"></param>
+        /// <returns></returns>
+        EPLightContent PickOrderInfoRequest(List<EPLightSendDTO> lightSendDTOs);
+        /// <summary>
+        /// 浜屾湡鎾澧欏垵濮嬪寲
+        /// </summary>
+        /// <returns></returns>
+        EPLightContent INITIALIZATION();
+        /// <summary>
+        /// 浜屾湡鎾澧欑粨鏉熷乏鍙�
+        /// </summary>
+        /// <returns></returns>
+        EPLightContent ENDWORK();
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/BasicInfo/Dt_LocationInfo.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/BasicInfo/Dt_LocationInfo.cs"
index 615e8ee..fbf51af 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/BasicInfo/Dt_LocationInfo.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/BasicInfo/Dt_LocationInfo.cs"
@@ -1,4 +1,5 @@
-锘縰sing SqlSugar;
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -17,78 +18,104 @@
         /// <summary>
         /// 涓婚敭
         /// </summary>
+        [ImporterHeader(Name = "涓婚敭")]
+        [ExporterHeader(DisplayName = "涓婚敭")]
         [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
         public int Id { get; set; }
 
         /// <summary>
         /// 搴撳尯缂栧彿
         /// </summary>
+        [ImporterHeader(IsIgnore = true)]
+        [ExporterHeader(IsIgnore = true)]
         [SugarColumn(IsNullable = false, ColumnDescription = "搴撳尯缂栧彿")]
         public int WarehouseId { get; set; }
 
         /// <summary>
         /// 鏂欑缂栧彿
         /// </summary>
+        [ImporterHeader(Name = "鏂欑缂栧彿")]
+        [ExporterHeader(DisplayName = "鏂欑缂栧彿")]
         [SugarColumn(IsNullable = false, ColumnDescription = "鏂欑缂栧彿")]
         public string PalletCode { get; set; }
 
         /// <summary>
         /// 璐т綅缂栧彿
         /// </summary>
+        [ImporterHeader(Name = "璐т綅缂栧彿")]
+        [ExporterHeader(DisplayName = "璐т綅缂栧彿")]
         [SugarColumn(IsNullable = true, Length = 30, ColumnDescription = "璐т綅缂栧彿")]
         public string LocationCode {  get; set; }
 
         /// <summary>
         /// 璐т綅鍚嶇О
         /// </summary>
+        [ImporterHeader(Name = "璐т綅鍚嶇О")]
+        [ExporterHeader(DisplayName = "璐т綅鍚嶇О")]
         [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "璐т綅鍚嶇О")]
         public string LocationName { get; set; }
 
         /// <summary>
         /// 宸烽亾缂栧彿
         /// </summary>
+        [ImporterHeader(Name = "宸烽亾缂栧彿")]
+        [ExporterHeader(DisplayName = "宸烽亾缂栧彿")]
         [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "宸烽亾缂栧彿")]
         public string RoadwayNo {  get; set; }
 
         /// <summary>
         /// 璐т綅琛�
         /// </summary>
+        [ImporterHeader(Name = "璐т綅琛�")]
+        [ExporterHeader(DisplayName = "璐т綅琛�")]
         [SugarColumn(IsNullable = true, ColumnDescription = "璐т綅琛�")]
         public int Row {  get; set; }
 
         /// <summary>
         /// 璐т綅鍒�
         /// </summary>
+        [ImporterHeader(Name = "璐т綅鍒�")]
+        [ExporterHeader(DisplayName = "璐т綅鍒�")]
         [SugarColumn(IsNullable = true, ColumnDescription = "璐т綅鍒�")]
         public int Columns { get; set; }
 
         /// <summary>
         /// 璐т綅灞�
         /// </summary>
+        [ImporterHeader(Name = "璐т綅灞�")]
+        [ExporterHeader(DisplayName = "璐т綅灞�")]
         [SugarColumn(IsNullable = true, ColumnDescription = "璐т綅灞�")]
         public int Layer {  get; set; }
 
         /// <summary>
         /// AGV鍙栬揣鐐�
         /// </summary>
+        [ImporterHeader(Name = "AGV鍙栬揣鐐�")]
+        [ExporterHeader(DisplayName = "AGV鍙栬揣鐐�")]
         [SugarColumn(IsNullable = true, ColumnDescription = "AGV鍙栬揣鐐�")]
         public string AgvPoint { get; set; }
 
         /// <summary>
         /// 璐т綅鐘舵��
         /// </summary>
+        [ImporterHeader(Name = "璐т綅鐘舵��")]
+        [ExporterHeader(DisplayName = "璐т綅鐘舵��")]
         [SugarColumn(IsNullable = true, DefaultValue = "0", ColumnDescription = "璐т綅鐘舵��")]
         public int LocationStatus {  get; set; }
 
         /// <summary>
         /// 绂佺敤鐘舵��
         /// </summary>
+        [ImporterHeader(Name = "绂佺敤鐘舵��")]
+        [ExporterHeader(DisplayName = "绂佺敤鐘舵��")]
         [SugarColumn(IsNullable = true, DefaultValue = "0", ColumnDescription = "绂佺敤鐘舵��")]
         public int EnableStatus { get; set; }
 
         /// <summary>
         /// 澶囨敞
         /// </summary>
+        [ImporterHeader(Name = "澶囨敞")]
+        [ExporterHeader(DisplayName = "澶囨敞")]
         [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "澶囨敞")]
         public string Remark {  get; set; }
     }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
index 21434a4..e1c855b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
@@ -66,12 +66,16 @@
         /// <summary>
         /// 鎵樼洏绫诲瀷
         /// </summary>
+        [ImporterHeader(Name = "鎵樼洏绫诲瀷")]
+        [ExporterHeader(IsIgnore =true)]
         [SugarColumn(IsNullable = false, ColumnDescription = "鎵樼洏绫诲瀷")]
         public int PalletType { get; set; }
 
         /// <summary>
         /// 璁惧缂栧彿
         /// </summary>
+        [ImporterHeader(Name = "璁惧缂栧彿")]
+        [ExporterHeader(IsIgnore = true)]
         [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "璁惧缂栧彿")]
         public string DeviceCode { get; set; }
 
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs"
index afff1ad..b412210 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs"
@@ -1,4 +1,7 @@
-锘縰sing System;
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using Org.BouncyCastle.Crypto;
+using SqlSugar;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
@@ -9,10 +12,14 @@
 {
     public class Dt_Task_Hty : Dt_Task, IBaseHistoryEntity
     {
+        [ImporterHeader(Name = "鏉ユ簮ID")]
+        [ExporterHeader(DisplayName = "鏉ユ簮ID")]
         public int SourceId { get; set; }
-
+        [ImporterHeader(Name = "鎿嶄綔绫诲瀷")]
+        [ExporterHeader(DisplayName = "鎿嶄綔绫诲瀷")]
         public string OperateType { get; set; }
-
+        [ImporterHeader(Name = "鍔犲叆鏃堕棿")]
+        [ExporterHeader(DisplayName = "鍔犲叆鏃堕棿")]
         public DateTime InsertTime { get; set; }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
index 72a97af..64f2b29 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
@@ -107,10 +107,21 @@
         /// </summary>
         /// <param name="taskNum"></param>
         /// <returns></returns>
-        [HttpPost, HttpGet, Route("RecWMSTaskCompleted"), AllowAnonymous]
-        public WebResponseContent RecWMSTaskCompleted(int taskNum)
+        [HttpPost, HttpGet, Route("RecTaskCompleted"), AllowAnonymous]
+        public WebResponseContent RecTaskCompleted(int taskNum)
         {
             return Service.TaskCompleted(taskNum);
         }
+
+        /// <summary>
+        /// WMS浠诲姟鍙栨秷鍚屾
+        /// </summary>
+        /// <param name="taskNum"></param>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("CancelTask"), AllowAnonymous]
+        public WebResponseContent CancelTask(List<TaskCancel> taskCancels)
+        {
+            return WebResponseContent.Instance.Error();
+        }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/WebAPIController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/WebAPIController.cs"
new file mode 100644
index 0000000..40a56db
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/WebAPIController.cs"
@@ -0,0 +1,129 @@
+锘縰sing Autofac.Core;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using System.Text;
+using System.Text.RegularExpressions;
+using WIDESEA_DTO.Agv;
+using WIDESEA_External.Model;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Common.APIEnum;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_Core.LogHelper;
+using WIDESEAWCS_DTO;
+using WIDESEAWCS_DTO.Agv;
+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_Tasks;
+using WIDESEAWCS_Tasks.DBNames;
+using static Dm.net.buffer.ByteArrayBuffer;
+
+namespace WIDESEAWCS_Server.Controllers
+{
+    [Route("api/[controller]")]
+    [ApiController]
+    public class WebAPIController : ControllerBase
+    {
+        private readonly IStationMangerRepository _stationMangerRepository;
+        private readonly ITaskService _taskService;
+        private readonly ITaskRepository _taskRepository;
+        private readonly IRouterRepository _routerRepository;
+
+        public WebAPIController(IStationMangerRepository stationMangerRepository, ITaskService taskService, ITaskRepository taskRepository, IRouterRepository routerRepository)
+        {
+            _stationMangerRepository = stationMangerRepository;
+            _taskService = taskService;
+            _taskRepository = taskRepository;
+            _routerRepository = routerRepository;
+        }
+        /// <summary>
+        /// 鍥炶皟涓婁紶
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("PickOrderCallBack"), AllowAnonymous]
+        public EPLightContent? PickOrderCallBack([FromBody] List<EPLightBackDTO> lightBackDTOs)
+        {
+            EPLightContent content = new EPLightContent();
+            try
+            {
+                if (lightBackDTOs==null)
+                {
+                    return content.Error("浼犲叆涓嶈兘涓虹┖");
+                }
+                content.OK("鎺ユ敹鎴愬姛");
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+        /// <summary>
+        /// 鎾澧欎笅鍙�(浜屾湡)
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("PickOrderInfoRequest"), AllowAnonymous]
+        public EPLightContent PickOrderInfoRequest([FromBody] List<EPLightSendDTO> lightSendDTOs)
+        {
+            EPLightContent content = new EPLightContent();
+            try
+            {
+                if (lightSendDTOs == null)
+                {
+                    return content.Error("浼犲叆涓嶈兘涓虹┖");
+                }
+                content = _taskService.PickOrderInfoRequest(lightSendDTOs);
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+        /// <summary>
+        /// 鎾澧欏垵濮嬪寲(浜屾湡)
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("INITIALIZATION"), AllowAnonymous]
+        public EPLightContent INITIALIZATION()
+        {
+            EPLightContent content = new EPLightContent();
+            try
+            {
+                content = _taskService.INITIALIZATION();
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+        /// <summary>
+        /// 鎾澧欑粨鏉熶綔涓�(浜屾湡)
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("ENDWORK"), AllowAnonymous]
+        public EPLightContent ENDWORK()
+        {
+            EPLightContent content = new EPLightContent();
+            try
+            {
+                content = _taskService.ENDWORK();
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Filter/CustomProfile.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Filter/CustomProfile.cs"
index 95034e0..b57a18b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Filter/CustomProfile.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Filter/CustomProfile.cs"
@@ -21,7 +21,7 @@
         {
             CreateMap<Sys_Menu, MenuDTO>();
             CreateMap<Dt_DeviceInfo,DeviceInfoDTO>();
-            CreateMap<TasksItem, Dt_Task>().ForMember(a => a.WMSId, b => b.MapFrom(b => b.TaskCode)).ForMember(a => a.PalletCode, b => b.MapFrom(b => b.ContainerCode)).ForMember(a => a.Grade, b => b.MapFrom(b => b.TaskPriority));
+            CreateMap<TasksItem, Dt_Task>().ForMember(a => a.WMSId, b => b.MapFrom(b => b.TaskCode)).ForMember(a => a.PalletCode, b => b.MapFrom(b => b.TaskDescribe.ContainerCode)).ForMember(a => a.Grade, b => b.MapFrom(b => b.TaskPriority));
         }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
index d7eea4a..b640cce 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -21,6 +21,7 @@
 using SqlSugar;
 using System.Diagnostics.CodeAnalysis;
 using System.DirectoryServices.Protocols;
+using System.Linq;
 using System.Net.Http.Headers;
 using System.Security.Policy;
 using WIDESEA_DTO.Agv;
@@ -102,27 +103,38 @@
         public WebResponseContent ReceiveWMSTask([NotNull] WMSTaskDTO taskDTO)
         {
             WebResponseContent content = new WebResponseContent();
+            string errorMsg = "";
             try
             {
                 lock (lock_taskReceive)
                 {
                     List<Dt_Task> tasks = new List<Dt_Task>();
-                    List<Dt_LocationInfo> locationInfos = _locationInfoRepository.GetCanOut(taskDTO.Tasks.Select(x=>x.ContainerCode).ToList());
-                    TasksItem? tasksItem = taskDTO.Tasks.FirstOrDefault(x => !locationInfos.Select(t => t.PalletCode).Contains(x.ContainerCode));
-                    if (tasksItem != null) throw new Exception($"浠诲姟{tasksItem.TaskCode}鏂欑鍙穥tasksItem.ContainerCode}涓嶅瓨鍦�");
+                    Dt_Task taskOld = BaseDal.QueryFirst(x=> taskDTO.Tasks.Select(x => x.TaskDescribe.ContainerCode).Contains(x.PalletCode));
+                    if (taskOld != null) throw new Exception($"鏂欑{taskOld.PalletCode}"+(taskOld.TaskType == TaskTypeEnum.Inbound.ObjToInt() ? "鍏ュ簱浠诲姟宸插瓨鍦�" : "鍑哄簱浠诲姟宸插瓨鍦�"));
+                    List<Dt_LocationInfo> locationInfos = _locationInfoRepository.GetCanOut(taskDTO.Tasks.Select(x=>x.TaskDescribe.ContainerCode).ToList());
+                    
                     Dt_LocationInfo? noOutLocation = locationInfos.FirstOrDefault(x=>x.LocationStatus != LocationStatusEnum.InStock.ObjToInt() || x.EnableStatus != EnableStatusEnum.Normal.ObjToInt());
+
                     if (noOutLocation != null) throw new Exception($"鏂欑{noOutLocation.PalletCode}璐т綅{noOutLocation.LocationCode}鐘舵�佷笉鍙嚭搴�");
                     List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData();
                     //涓嬪彂浠诲姟缁�
                     string taskGroup= taskDTO.TaskGroupCode.IsNullOrEmpty() ? Guid.NewGuid().ToString().Replace("-","") : taskDTO.TaskGroupCode;
-                    foreach (var item in taskDTO.Tasks.OrderBy(x=>x.ToStationCode))
+                    foreach (var item in taskDTO.Tasks.OrderBy(x=>x.TaskDescribe.ToStationCode))
                     {
-                        if (item.ToStationCode.IsNullOrEmpty()) throw new Exception($"浠诲姟{item.TaskCode}鍑哄簱鐩爣鎿嶄綔鍙颁笉鑳戒负绌�");
+                        if (item.TaskDescribe.ToStationCode.IsNullOrEmpty()) throw new Exception($"浠诲姟{item.TaskCode}鍑哄簱鐩爣鎿嶄綔鍙颁笉鑳戒负绌�");
                         //鑾峰彇鎿嶄綔鍙�
-                        Dt_StationManger? stationManger = stationMangers.FirstOrDefault(x => x.PickStationCode == item.ToStationCode);
-                        if (stationManger == null) throw new Exception($"浠诲姟{item.TaskCode}鍑哄簱鐩爣鎿嶄綔鍙皗item.ToStationCode}涓嶅瓨鍦�");
+                        Dt_StationManger? stationManger = stationMangers.FirstOrDefault(x => x.PickStationCode == item.TaskDescribe.ToStationCode);
+                        if (stationManger == null) throw new Exception($"浠诲姟{item.TaskCode}鍑哄簱鐩爣鎿嶄綔鍙皗item.TaskDescribe.ToStationCode}涓嶅瓨鍦�");
+
+                        Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.PalletCode == item.TaskDescribe.ContainerCode);
+                        if (locationInfo == null)
+                        {
+                            errorMsg += $"鏂欑{item.TaskDescribe.ContainerCode}涓嶅瓨鍦�;";
+                            continue;
+                        };
+
                         Dt_Task task = _mapper.Map<Dt_Task>(item);
-                        Dt_LocationInfo locationInfo = locationInfos.FirstOrDefault(x=>x.PalletCode==item.ContainerCode);
+                        
                         task.SourceAddress = locationInfo.LocationCode;
                         task.CurrentAddress = locationInfo.LocationCode;
                         task.NextAddress = stationManger.PickStationCode;
@@ -147,7 +159,7 @@
 
                     _taskExecuteDetailService.AddTaskExecuteDetail(tasks.Select(x => x.TaskNum).ToList(), "鎺ユ敹WMS浠诲姟");
 
-                    content = tasks.Count > 0 ? content.OK("鎴愬姛") : content.Error("澶辫触");
+                    content = tasks.Count > 0 ? content.OK("鎴愬姛!"+(errorMsg.IsNullOrEmpty()? "": errorMsg)) : content.Error("澶辫触");
                 }
             }
             catch (Exception ex)
@@ -170,12 +182,12 @@
                 {
                     List<Dt_LocationInfo> locationInfos = _locationInfoRepository.QueryData();
                     Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x=>x.PalletCode== containerFlowDTO.ContainerCode);
-                    if (locationInfo != null) throw new Exception($"鏂欑鍙穥containerFlowDTO.ContainerCode}宸插瓨鍦�");
+                    if (locationInfo != null) throw new Exception($"搴撲綅鏂欑鍙穥containerFlowDTO.ContainerCode}宸插瓨鍦�");
                     if (BaseDal.QueryFirst(x=>x.PalletCode==containerFlowDTO.ContainerCode)!=null) throw new Exception($"鏂欑鍙穥containerFlowDTO.ContainerCode}浠诲姟宸插瓨鍦�");
                     Dt_LocationInfo? noInLocation = locationInfos.FirstOrDefault(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt());
                     if (noInLocation == null) throw new Exception($"鍙敤璐т綅涓嶈冻!");
                     Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt() && x.StationDeviceCode == deviceCode);
-                    //涓嬪彂浠诲姟缁�
+                    //鍒涘缓浠诲姟
                     Dt_Task task = new Dt_Task();
                     task.PalletCode = containerFlowDTO.ContainerCode;
                     task.SourceAddress = containerFlowDTO.SlotCode;
@@ -245,23 +257,11 @@
             DateTime beginDate = DateTime.Now;
             try
             {
-                using (HttpContent httpContent = new StringContent(requestJson))
+                using (HttpContent httpContent = new StringContent(string.Empty))
                 {
                     httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
-
                     using HttpClient httpClient = new HttpClient();
                     httpClient.Timeout = new TimeSpan(0, 0, 30);
-                    string LoginToken = AppSettings.Get("MESLoginToken");
-                    headers = new Dictionary<string, string>
-                    {
-                        //姝e紡
-                        { "LoginToken", LoginToken }
-                    };
-                    if (headers != null)
-                    {
-                        foreach (var header in headers)
-                            httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
-                    }
                     HttpResponseMessage responseMessage = httpClient.PostAsync(serviceAddress, httpContent).Result;
                     result = responseMessage.Content.ReadAsStringAsync().Result;
                 }
@@ -478,7 +478,7 @@
             try
             {
                 Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
-                if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)//鍑哄簱浠诲姟閫昏緫
+                if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)//鍑哄簱浠诲姟瀹屾垚閫昏緫
                 {
                     Dt_LocationInfo locationInfo = _locationInfoRepository.QueryFirst(x=>x.PalletCode==task.PalletCode);
                     if (locationInfo.LocationStatus != LocationStatusEnum.Lock.ObjToInt())
@@ -488,32 +488,54 @@
                     task.TaskState = TaskStatusEnum.Finish.ObjToInt();
                     locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
                     locationInfo.PalletCode = "";
+                    //鏂欑鍑哄簱瀹屾垚涓婃姤缁橶MS
+                    string? url = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.WMSInOutBoundBack.ToString())?.ApiAddress;
+                    if (string.IsNullOrEmpty(url))
+                    {
+                        _taskExecuteDetailService.AddTaskExecuteDetail(task, $"鏈壘鍒癢MS鍑哄簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+                        UpdateTaskExceptionMessage(taskNum, $"鏈壘鍒癢MS鍑哄簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+                        return content.Error($"{taskNum},鏈壘鍒癢MS鍑哄簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+                    }
+                    ContainerInFinishDTO containerInFinishDTO = new ContainerInFinishDTO()
+                    {
+                        TaskCode = task.TaskNum.ToString(),
+                        ContainerCode = task.PalletCode,
+                        StationCode = task.TargetAddress,
+                        LocationCode = task.SourceAddress,
+                        CompleteType = 1
+                    };
+                    string request = JsonConvert.SerializeObject(containerInFinishDTO, settings);
+                    //璋冪敤鎺ュ彛
+                    string response = HttpHelper.Post(url, request);
+                    WMSResponseContent wMSResponse = JsonConvert.DeserializeObject<WMSResponseContent>(response) ?? throw new Exception($"{taskNum},鏈帴鏀跺埌WMS鍑哄簱涓婃姤杩斿洖鍊�");
+                    if (wMSResponse.Code != "0") throw new Exception($"鍑哄簱浠诲姟{task.TaskNum}WMS鍑哄簱涓婃姤閿欒,淇℃伅:{wMSResponse.Msg}");
                     _unitOfWorkManage.BeginTran();
                     _locationInfoRepository.UpdateData(locationInfo);
                     BaseDal.DeleteAndMoveIntoHty(task, App.User?.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
                     _unitOfWorkManage.CommitTran();
                 }
-                else if(task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//鍏ュ簱浠诲姟閫昏緫
+                else if(task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//鍏ュ簱浠诲姟瀹屾垚閫昏緫
                 {
-                    //string? url = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.WMSInBoundBack.ToString())?.ApiAddress;
-                    //if (string.IsNullOrEmpty(url))
-                    //{
-                    //    _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"鏈壘鍒癢MS鍏ュ簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
-                    //    UpdateTaskExceptionMessage(taskNum, $"鏈壘鍒癢MS鍏ュ簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
-                    //    return content.Error($"{taskNum},鏈壘鍒癢MS鍏ュ簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
-                    //}
-                    //ContainerInFinishDTO containerInFinishDTO = new ContainerInFinishDTO()
-                    //{
-                    //    TaskCode= task.TaskNum.ToString(),
-                    //    ContainerCode = task.PalletCode,
-                    //    FromStationCode = task.SourceAddress,
-                    //    ToLocationCode = task.TargetAddress
-                    //};
-                    //string request = JsonConvert.SerializeObject(containerInFinishDTO, settings);
-                    ////璋冪敤鎺ュ彛
-                    //string response = HttpHelper.Post(url, request);
-                    //WMSResponseContent wMSResponse = JsonConvert.DeserializeObject<WMSResponseContent>(response) ??throw new Exception($"{taskNum},鏈帴鏀跺埌WMS鍏ュ簱涓婃姤杩斿洖鍊�");
-                    //if (wMSResponse.Code!="0") throw new Exception($"鍏ュ簱浠诲姟{task.TaskNum}WMS鍏ュ簱涓婃姤閿欒,淇℃伅:{wMSResponse.Msg}");
+                    string? url = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.WMSInOutBoundBack.ToString())?.ApiAddress;
+                    if (string.IsNullOrEmpty(url))
+                    {
+                        _taskExecuteDetailService.AddTaskExecuteDetail(task, $"鏈壘鍒癢MS鍏ュ簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+                        UpdateTaskExceptionMessage(taskNum, $"鏈壘鍒癢MS鍏ュ簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+                        return content.Error($"{taskNum},鏈壘鍒癢MS鍏ュ簱涓婃姤鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+                    }
+                    ContainerInFinishDTO containerInFinishDTO = new ContainerInFinishDTO()
+                    {
+                        TaskCode = task.TaskNum.ToString(),
+                        ContainerCode = task.PalletCode,
+                        StationCode = task.SourceAddress,
+                        LocationCode = task.TargetAddress,
+                        CompleteType = 2
+                    };
+                    string request = JsonConvert.SerializeObject(containerInFinishDTO, settings);
+                    //璋冪敤鎺ュ彛
+                    string response = HttpHelper.Post(url, request);
+                    WMSResponseContent wMSResponse = JsonConvert.DeserializeObject<WMSResponseContent>(response) ?? throw new Exception($"{taskNum},鏈帴鏀跺埌WMS鍏ュ簱涓婃姤杩斿洖鍊�");
+                    if (wMSResponse.Code != "0") throw new Exception($"鍏ュ簱浠诲姟{task.TaskNum}WMS鍏ュ簱涓婃姤閿欒,淇℃伅:{wMSResponse.Msg}");
                     Dt_LocationInfo locationInfo = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.TargetAddress);
                     if (locationInfo.LocationStatus != LocationStatusEnum.Lock.ObjToInt())
                     {
@@ -536,5 +558,88 @@
             }
             return content;
         }
+
+        /// <summary>
+        /// 浜屾湡鎾澧欎笅鍙�
+        /// </summary>
+        /// <param name="taskNum"></param>
+        /// <returns></returns>
+        public EPLightContent PickOrderInfoRequest(List<EPLightSendDTO> lightSendDTOs)
+        {
+            EPLightContent content = new EPLightContent();
+            try
+            {
+                string? url = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.PickOrderInfoRequest.ToString())?.ApiAddress;
+                if (string.IsNullOrEmpty(url))
+                {
+                    return content.Error($"鏈壘鍒版挱绉嶅涓嬪彂鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+                }
+                string request = JsonConvert.SerializeObject(lightSendDTOs, settings);
+                //璋冪敤鎺ュ彛
+                string response = HttpHelper.Post(url, request);
+                EPLightContent lightContent = JsonConvert.DeserializeObject<EPLightContent>(response) ?? throw new Exception($"鏈帴鏀跺埌鎾澧欎笅鍙戜笂鎶ヨ繑鍥炲��");
+                if (lightContent.Result != "0") throw new Exception($"鎾澧欎笅鍙戦敊璇�,淇℃伅:{lightContent.Msg}");
+                content.OK("鎴愬姛");
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+        /// <summary>
+        /// 浜屾湡鎾澧欏垵濮嬪寲
+        /// </summary>
+        /// <param name="taskNum"></param>
+        /// <returns></returns>
+        public EPLightContent INITIALIZATION()
+        {
+            EPLightContent content = new EPLightContent();
+            try
+            {
+                string? url = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.INITIALIZATION.ToString())?.ApiAddress;
+                if (string.IsNullOrEmpty(url))
+                {
+                    return content.Error($"鏈壘鍒版挱绉嶅鍒濆鍖栨帴鍙�,璇锋鏌ユ帴鍙i厤缃�");
+                }
+                //璋冪敤鎺ュ彛
+                string response = Post(url);
+                EPLightContent lightContent = JsonConvert.DeserializeObject<EPLightContent>(response) ?? throw new Exception($"鏈帴鏀跺埌鎾澧欏垵濮嬪寲涓婃姤杩斿洖鍊�");
+                if (lightContent.Result != "0") throw new Exception($"鎾澧欏垵濮嬪寲閿欒,淇℃伅:{lightContent.Msg}");
+                content.OK("鎴愬姛");
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+        /// <summary>
+        /// 浜屾湡鎾澧欑粨鏉熶綔涓�
+        /// </summary>
+        /// <param name="taskNum"></param>
+        /// <returns></returns>
+        public EPLightContent ENDWORK()
+        {
+            EPLightContent content = new EPLightContent();
+            try
+            {
+                string? url = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.ENDWORK.ToString())?.ApiAddress;
+                if (string.IsNullOrEmpty(url))
+                {
+                    return content.Error($"鏈壘鍒版挱绉嶅缁撴潫浣滀笟鎺ュ彛,璇锋鏌ユ帴鍙i厤缃�");
+                }
+                //璋冪敤鎺ュ彛
+                string response = Post(url);
+                EPLightContent lightContent = JsonConvert.DeserializeObject<EPLightContent>(response) ?? throw new Exception($"鏈帴鏀跺埌鎾澧欑粨鏉熶綔涓氫笂鎶ヨ繑鍥炲��");
+                if (lightContent.Result != "0") throw new Exception($"鎾澧欑粨鏉熶綔涓氶敊璇�,淇℃伅:{lightContent.Msg}");
+                content.OK("鎴愬姛");
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/AGV/AGVExtend.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/AGV/AGVExtend.cs"
index 7055ef8..6ed4caa 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/AGV/AGVExtend.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/AGV/AGVExtend.cs"
@@ -22,8 +22,8 @@
         {
             try
             {
-                var newTasksOut = _taskService.Db.Queryable<Dt_Task>().Where(x => (x.TaskState == TaskStatusEnum.AGV_Execute.ObjToInt()) && x.TaskType==TaskTypeEnum.Outbound.ObjToInt() && x.DeviceCode == "AGV").ToList().OrderBy(x => x.Grade).ThenBy(x => x.CreateDate).ToList();
-                var newTasksIn = _taskService.Db.Queryable<Dt_Task>().Where(x => (x.TaskState == TaskStatusEnum.AGV_Execute.ObjToInt()) && x.TaskType == TaskTypeEnum.Inbound.ObjToInt() && x.DeviceCode == "AGV").ToList().OrderBy(x => x.Grade).ThenBy(x => x.CreateDate).ToList();
+                var newTasksOut = _taskService.Db.Queryable<Dt_Task>().Where(x => (x.TaskState == TaskStatusEnum.AGV_Execute.ObjToInt()) && x.TaskType==TaskTypeEnum.Outbound.ObjToInt() && x.DeviceCode == "AGV").ToList().OrderBy(x => x.Grade).ThenBy(x => x.TaskNum).ToList();
+                var newTasksIn = _taskService.Db.Queryable<Dt_Task>().Where(x => (x.TaskState == TaskStatusEnum.AGV_Execute.ObjToInt()) && x.TaskType == TaskTypeEnum.Inbound.ObjToInt() && x.DeviceCode == "AGV").ToList().OrderBy(x => x.Grade).ThenBy(x => x.TaskNum).ToList();
                 #region 鍑哄簱浠诲姟涓嬪彂
                 if (newTasksOut.Count>0)
                 {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/\344\270\200\346\234\237\347\272\277\344\275\223/ConveyorLineJob1.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/\344\270\200\346\234\237\347\272\277\344\275\223/ConveyorLineJob1.cs"
new file mode 100644
index 0000000..35a4301
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/\344\270\200\346\234\237\347\272\277\344\275\223/ConveyorLineJob1.cs"
@@ -0,0 +1,85 @@
+锘縰sing Autofac.Core;
+using Microsoft.AspNetCore.Components.Routing;
+using Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
+using Quartz;
+using System;
+using System.Collections.Generic;
+using System.IdentityModel.Tokens.Jwt;
+using System.Linq;
+using System.Reflection.Metadata;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Common.Helper;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Communicator;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_IBasicInfoRepository;
+using WIDESEAWCS_ITaskInfoRepository;
+using WIDESEAWCS_ITaskInfoService;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.ConveyorLine.Enum;
+using WIDESEAWCS_QuartzJob.DTO;
+using WIDESEAWCS_QuartzJob.Models;
+using WIDESEAWCS_QuartzJob.Repository;
+using WIDESEAWCS_QuartzJob.Service;
+using WIDESEAWCS_Tasks.DBNames;
+using ICacheService = WIDESEAWCS_Core.Caches.ICacheService;
+
+namespace WIDESEAWCS_Tasks
+{
+    [DisallowConcurrentExecution]
+    public class ConveyorLineJob1 : 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;
+
+        public ConveyorLineJob1(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;
+        }
+
+        public Task Execute(IJobExecutionContext context)
+        {
+            try
+            {
+                bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
+                if (flag && value != null)
+                {
+                    OtherDevice device = (OtherDevice)value;
+                    List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode);
+                    
+                    foreach (var item in stationMangers)
+                    {
+                        byte[] bytesPut = device.Communicator.Read("22", 1);
+                       ;
+                        device.Communicator.Write("22", new byte[] { 2, 0 });
+                        byte[] bytesPuted = device.Communicator.Read("22",1);
+                        device.Communicator.Write("22", new byte[] { 0, 0 });
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                WriteError(nameof(ConveyorLineJob1), ex.Message);
+            }
+            return Task.CompletedTask;
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/\344\272\214\346\234\237\347\272\277\344\275\223/ConveyorLineJob2.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/\344\272\214\346\234\237\347\272\277\344\275\223/ConveyorLineJob2.cs"
index 2cd34b8..8b3e751 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/\344\272\214\346\234\237\347\272\277\344\275\223/ConveyorLineJob2.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/\344\272\214\346\234\237\347\272\277\344\275\223/ConveyorLineJob2.cs"
@@ -60,21 +60,22 @@
                                 //涓婃姤WMS鏂欑鍒拌揪
                                 if (PickBarCode.IsNotEmptyOrNull())
                                 {
-                                    //WebResponseContent content = _taskService.WMSPickUp(station.PickStationCode, PickBarCode);
-                                    WebResponseContent content = WebResponseContent.Instance.OK();
+                                    WebResponseContent content = _taskService.WMSPickUp(station.PickStationCode, PickBarCode);
+                                    //WebResponseContent content = WebResponseContent.Instance.OK();
                                     if (content.Status)
                                     {
                                         //鍐欏叆鎷i�夌‘璁�
                                         conveyorLine.SetValue(ConveyorLineDBName.W_PickToHode, (short)300, station.StationCode);
+                                        WriteInfo(conveyorLine.DeviceCode, $"{station.PickStationCode}鎷i�夌敵璇蜂笂鎶ユ垚鍔焮PickBarCode}");
                                     }
                                     else
                                     {
-                                        WriteError(nameof(conveyorLine.DeviceCode), $"{station.PickStationCode}鎷i�夌敵璇蜂笂鎶MS閿欒锛屼俊鎭瘂content.Message}");
+                                        WriteError(conveyorLine.DeviceCode, $"{station.PickStationCode}鎷i�夌敵璇蜂笂鎶MS閿欒{PickBarCode}锛屼俊鎭瘂content.Message}");
                                     }
                                 }
                                 else
                                 {
-                                    WriteError(nameof(conveyorLine.DeviceCode), $"{station.PickStationCode}鎷i�夌敵璇蜂负{PickRequest}鏉$爜涓虹┖鍊�");
+                                    WriteError(conveyorLine.DeviceCode, $"{station.PickStationCode}鎷i�夌敵璇蜂负{PickRequest}鏉$爜涓虹┖鍊�");
                                 }
                             }
                             
@@ -97,15 +98,16 @@
                                     {
                                         //鍐欏叆鍏ュ簱纭
                                         conveyorLine.SetValue(ConveyorLineDBName.W_InResponse, true, station.StationCode);
+                                        WriteInfo(conveyorLine.DeviceCode, $"绔欏彴{station.StationCode}鏂欑{InBarCode}鐢宠鍏ュ簱鎴愬姛");
                                     }
                                     else
                                     {
-                                        WriteError(nameof(conveyorLine.DeviceCode), $"绔欏彴{station.StationCode}鏂欑{InBarCode}鐢宠鍏ュ簱浠诲姟閿欒锛屼俊鎭瘂content.Message}");
+                                        WriteError(conveyorLine.DeviceCode, $"绔欏彴{station.StationCode}鏂欑{InBarCode}鐢宠鍏ュ簱浠诲姟閿欒锛屼俊鎭瘂content.Message}");
                                     }
                                 }
                                 else
                                 {
-                                    WriteError(nameof(conveyorLine.DeviceCode), $"绔欏彴{station.StationCode}鍏ュ簱鐢宠涓簕InRequest}鏉$爜涓虹┖鍊�");
+                                    WriteError(conveyorLine.DeviceCode, $"绔欏彴{station.StationCode}鍏ュ簱鐢宠涓簕InRequest}鏉$爜涓虹┖鍊�");
                                 }
                             }
                         }
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\344\270\200\346\234\237\345\257\271\346\216\245\347\233\270\345\205\263\350\265\204\346\226\231/\345\223\210\345\260\224\346\273\250\344\270\200\346\234\237\350\276\223\351\200\201\347\272\277\345\257\271\346\216\245\345\215\217\350\256\256modbusTcp\345\215\217\350\256\256V1.1.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\344\270\200\346\234\237\345\257\271\346\216\245\347\233\270\345\205\263\350\265\204\346\226\231/\345\223\210\345\260\224\346\273\250\344\270\200\346\234\237\350\276\223\351\200\201\347\272\277\345\257\271\346\216\245\345\215\217\350\256\256modbusTcp\345\215\217\350\256\256V1.1.xlsx"
index d94e44c..910f2e3 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\344\270\200\346\234\237\345\257\271\346\216\245\347\233\270\345\205\263\350\265\204\346\226\231/\345\223\210\345\260\224\346\273\250\344\270\200\346\234\237\350\276\223\351\200\201\347\272\277\345\257\271\346\216\245\345\215\217\350\256\256modbusTcp\345\215\217\350\256\256V1.1.xlsx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\344\270\200\346\234\237\345\257\271\346\216\245\347\233\270\345\205\263\350\265\204\346\226\231/\345\223\210\345\260\224\346\273\250\344\270\200\346\234\237\350\276\223\351\200\201\347\272\277\345\257\271\346\216\245\345\215\217\350\256\256modbusTcp\345\215\217\350\256\256V1.1.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\344\270\200\346\234\237\345\257\271\346\216\245\347\233\270\345\205\263\350\265\204\346\226\231/\346\222\255\347\247\215\345\242\231\346\212\245\346\226\207.docx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\344\270\200\346\234\237\345\257\271\346\216\245\347\233\270\345\205\263\350\265\204\346\226\231/\346\222\255\347\247\215\345\242\231\346\212\245\346\226\207.docx"
new file mode 100644
index 0000000..3add183
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\344\270\200\346\234\237\345\257\271\346\216\245\347\233\270\345\205\263\350\265\204\346\226\231/\346\222\255\347\247\215\345\242\231\346\212\245\346\226\207.docx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\346\261\207\346\200\273\346\226\207\344\273\266/EPLight Web API \346\216\245\345\217\243\346\226\207\346\241\2431.1.docx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\346\261\207\346\200\273\346\226\207\344\273\266/EPLight Web API \346\216\245\345\217\243\346\226\207\346\241\2431.1.docx"
new file mode 100644
index 0000000..b041b56
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\346\261\207\346\200\273\346\226\207\344\273\266/EPLight Web API \346\216\245\345\217\243\346\226\207\346\241\2431.1.docx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\346\261\207\346\200\273\346\226\207\344\273\266/WMS\346\216\245\345\217\243.docx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\346\261\207\346\200\273\346\226\207\344\273\266/WMS\346\216\245\345\217\243.docx"
new file mode 100644
index 0000000..cfaebaf
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\346\261\207\346\200\273\346\226\207\344\273\266/WMS\346\216\245\345\217\243.docx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\346\261\207\346\200\273\346\226\207\344\273\266/WMS\346\216\245\345\217\243\345\257\271\346\216\245\346\226\207\346\241\24320251202_V1.1.3.docx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\346\261\207\346\200\273\346\226\207\344\273\266/WMS\346\216\245\345\217\243\345\257\271\346\216\245\346\226\207\346\241\24320251202_V1.1.3.docx"
new file mode 100644
index 0000000..aa93369
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\346\261\207\346\200\273\346\226\207\344\273\266/WMS\346\216\245\345\217\243\345\257\271\346\216\245\346\226\207\346\241\24320251202_V1.1.3.docx"
Binary files differ

--
Gitblit v1.9.3