From 13fac67a21f8679e284635802fd259e9fced5c60 Mon Sep 17 00:00:00 2001
From: hutongqing <hutongqing@hnkhzn.com>
Date: 星期二, 17 十二月 2024 11:35:37 +0800
Subject: [PATCH] 2024121701

---
 代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/456f23a3-e9db-4baa-b211-0debbf6a9766.vsidx |    0 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server.sln                                                             |   18 
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/4b9d13b5-464a-47d4-8dae-9937d5273cc6.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Attributes/ModelValidateAttribute.cs                                 |    2 
 代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/672f95bc-ead2-44f0-a24c-957a3a267788.vsidx |    0 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs                                       |    6 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/StationMangerRepository.cs                         |   18 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/阻焊仓/GroundStationDBName.cs                                       |   51 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/MaterielInfoDTO.cs                                                |  174 ++++++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/MaterielInfoService.cs                               |   13 
 代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/77d1070c-616d-4033-b739-10b3890a2871.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpOutOrderDTO.cs                                                 |   83 ++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielInfo.cs                                     |    7 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManger.cs                             |   62 ++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpResponseContent.cs                                             |   18 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/IStationMangerRepository.cs                       |   14 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/MaterielInfoService.cs                                  |    5 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGVController.cs                                    |  166 ++++++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs                                              |    8 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Filter/CustomProfile.cs                                         |    4 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj                                          |    6 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IBasicService.cs                                            |   13 
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5023b4f8-50f2-4301-b3ca-8d83fa478bdc.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/bb9c5c98-5de4-43c8-8a36-34ad166b9c7a.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d6701bb1-0090-4502-a2ca-a4e0726e92d8.vsidx |    0 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs                                |   12 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/WIDESEAWCS_IBasicInfoService.csproj                  |    4 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/SupplierDTO.cs                                                  |   65 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/Root.cs                                                           |   27 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs                               |    6 
 /dev/null                                                                                                    |  137 -----
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielInfoService.cs                                     |    1 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/PurchaseOrderModel.cs                                             |   18 
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Attributes/MethodParamsValidateAttribute.cs                          |    1 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/阻焊仓/StackerCraneJob_ZH.cs                                        |  309 +++++++++++
 代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/3ea8b77f-1ded-4afe-bbbb-d42ee2627f62.vsidx |    0 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json                                                |    2 
 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/测试架仓/StackerCraneJob_CSJ.cs                                      |  303 +++++++++++
 代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/8f970bf6-017d-4af8-aaf8-8f1412be4898.vsidx |    0 
 39 files changed, 1,329 insertions(+), 224 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/0f60b943-ef81-4dea-85d5-c72f1e023d53.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/0f60b943-ef81-4dea-85d5-c72f1e023d53.vsidx"
deleted file mode 100644
index 25867a8..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/0f60b943-ef81-4dea-85d5-c72f1e023d53.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/21553faa-f482-4cad-bdea-7867d42f4bac.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/21553faa-f482-4cad-bdea-7867d42f4bac.vsidx"
deleted file mode 100644
index 87ee376..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/21553faa-f482-4cad-bdea-7867d42f4bac.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/3ea8b77f-1ded-4afe-bbbb-d42ee2627f62.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/3ea8b77f-1ded-4afe-bbbb-d42ee2627f62.vsidx"
new file mode 100644
index 0000000..f3f5325
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/3ea8b77f-1ded-4afe-bbbb-d42ee2627f62.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/456f23a3-e9db-4baa-b211-0debbf6a9766.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/456f23a3-e9db-4baa-b211-0debbf6a9766.vsidx"
new file mode 100644
index 0000000..79d16d1
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/456f23a3-e9db-4baa-b211-0debbf6a9766.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/48209466-174f-415e-a834-4bc50f2d98fd.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/48209466-174f-415e-a834-4bc50f2d98fd.vsidx"
deleted file mode 100644
index 4b7898f..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/48209466-174f-415e-a834-4bc50f2d98fd.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/672f95bc-ead2-44f0-a24c-957a3a267788.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/672f95bc-ead2-44f0-a24c-957a3a267788.vsidx"
new file mode 100644
index 0000000..fb37439
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/672f95bc-ead2-44f0-a24c-957a3a267788.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/77d1070c-616d-4033-b739-10b3890a2871.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/77d1070c-616d-4033-b739-10b3890a2871.vsidx"
new file mode 100644
index 0000000..3d58d18
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/77d1070c-616d-4033-b739-10b3890a2871.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/7ef307ad-ea94-4ff6-9f94-954e08ae3914.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/7ef307ad-ea94-4ff6-9f94-954e08ae3914.vsidx"
deleted file mode 100644
index ebb100d..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/7ef307ad-ea94-4ff6-9f94-954e08ae3914.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/8f970bf6-017d-4af8-aaf8-8f1412be4898.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/8f970bf6-017d-4af8-aaf8-8f1412be4898.vsidx"
new file mode 100644
index 0000000..344aa06
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/8f970bf6-017d-4af8-aaf8-8f1412be4898.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/e0712c6d-3f7b-4769-b7a3-cc59cff4d10a.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/e0712c6d-3f7b-4769-b7a3-cc59cff4d10a.vsidx"
deleted file mode 100644
index cddcdb8..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/e0712c6d-3f7b-4769-b7a3-cc59cff4d10a.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f7a5ecd7-5ca5-4e04-904a-54fa34104eb6.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f7a5ecd7-5ca5-4e04-904a-54fa34104eb6.vsidx"
deleted file mode 100644
index 1dcc9dc..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/f7a5ecd7-5ca5-4e04-904a-54fa34104eb6.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/StationMangerRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/StationMangerRepository.cs"
new file mode 100644
index 0000000..6691f1c
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/StationMangerRepository.cs"
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_IBasicInfoRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_BasicInfoRepository
+{
+    public class StationMangerRepository : RepositoryBase<Dt_StationManger>, IStationMangerRepository
+    {
+        public StationMangerRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/IStationMangerRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/IStationMangerRepository.cs"
new file mode 100644
index 0000000..3dc1a90
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/IStationMangerRepository.cs"
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IBasicInfoRepository
+{
+    public interface IStationMangerRepository : IRepository<Dt_StationManger>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/WIDESEAWCS_IBasicInfoService.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/WIDESEAWCS_IBasicInfoService.csproj"
index 132c02c..ebf0d65 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/WIDESEAWCS_IBasicInfoService.csproj"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/WIDESEAWCS_IBasicInfoService.csproj"
@@ -6,4 +6,8 @@
     <Nullable>enable</Nullable>
   </PropertyGroup>
 
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEAWCS_BasicInfoRepository\WIDESEAWCS_BasicInfoRepository.csproj" />
+  </ItemGroup>
+
 </Project>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManger.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManger.cs"
new file mode 100644
index 0000000..c432c1e
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManger.cs"
@@ -0,0 +1,62 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.DB.Models;
+
+namespace WIDESEAWCS_Model.Models
+{
+    [SugarTable(nameof(Dt_StationManger), "绔欏彴琛�")]
+    public class Dt_StationManger : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 绔欏彴缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "绔欏彴缂栧彿")]
+        public string StationCode { get; set; }
+
+        /// <summary>
+        /// 绔欏彴鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "绔欏彴鍚嶇О")]
+        public string StationName { get; set; }
+
+        /// <summary>
+        /// 瀵瑰簲鍫嗗灈鏈烘帓-鍒�-灞�
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "瀵瑰簲鍫嗗灈鏈烘帓-鍒�-灞�")]
+        public string StackerCraneStationCode { get; set; }
+
+        /// <summary>
+        /// 绔欏彴璁惧缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "绔欏彴璁惧缂栧彿")]
+        public string StationDeviceCode { get; set; }
+
+        /// <summary>
+        /// 鍫嗗灈鏈虹紪鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鍫嗗灈鏈虹紪鍙�")]
+        public string StackerCraneCode { get; set; }
+
+        /// <summary>
+        /// AGV绔欏彴缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "AGV绔欏彴缂栧彿")]
+        public string AGVStationCode { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
index b342e89..f52d6c9 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs"
@@ -55,6 +55,12 @@
         public string PalletCode { get; set; }
 
         /// <summary>
+        /// 鎵樼洏绫诲瀷
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鎵樼洏绫诲瀷")]
+        public int PalletType { get; set; }
+
+        /// <summary>
         /// 宸烽亾鍙�
         /// </summary>
         [ImporterHeader(Name = "宸烽亾鍙�")]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj"
index be46766..027e104 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj"
@@ -1,4 +1,4 @@
-<Project Sdk="Microsoft.NET.Sdk">
+锘�<Project Sdk="Microsoft.NET.Sdk">
 
 	<PropertyGroup>
 		<TargetFramework>net6.0</TargetFramework>
@@ -13,10 +13,6 @@
 
 	<ItemGroup>
 		<ProjectReference Include="..\WIDESEAWCS_Common\WIDESEAWCS_Common.csproj" />
-	</ItemGroup>
-
-	<ItemGroup>
-		<Folder Include="Models\BasicInfo\" />
 	</ItemGroup>
 
 </Project>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server.sln" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server.sln"
index 7be6dcb..48991d3 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server.sln"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server.sln"
@@ -50,9 +50,13 @@
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_BasicInfoService", "WIDESEAWCS_BasicInfoService\WIDESEAWCS_BasicInfoService.csproj", "{FFAB2C76-1C9E-4006-95C8-A0B2AA53139D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEAWCS_Model", "WIDESEAWCS_Model\WIDESEAWCS_Model.csproj", "{9D2AC22C-9A86-41AE-AA02-553554A7B1D7}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_Model", "WIDESEAWCS_Model\WIDESEAWCS_Model.csproj", "{9D2AC22C-9A86-41AE-AA02-553554A7B1D7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEAWCS_ISystemRepository", "WIDESEAWCS_ISystemRepository\WIDESEAWCS_ISystemRepository.csproj", "{B778DFFD-A5BA-4CAF-805E-2630CF080CDC}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEAWCS_ISystemRepository", "WIDESEAWCS_ISystemRepository\WIDESEAWCS_ISystemRepository.csproj", "{B778DFFD-A5BA-4CAF-805E-2630CF080CDC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEAWCS_IBasicInfoRepository", "WIDESEAWCS_IBasicInfoRepository\WIDESEAWCS_IBasicInfoRepository.csproj", "{3B954A6E-CE88-4B33-BEAC-757BE4BE1204}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEAWCS_BasicInfoRepository", "WIDESEAWCS_BasicInfoRepository\WIDESEAWCS_BasicInfoRepository.csproj", "{D0CC28FA-6426-4FDE-A5B9-24CF06787863}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -120,6 +124,14 @@
 		{B778DFFD-A5BA-4CAF-805E-2630CF080CDC}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{B778DFFD-A5BA-4CAF-805E-2630CF080CDC}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{B778DFFD-A5BA-4CAF-805E-2630CF080CDC}.Release|Any CPU.Build.0 = Release|Any CPU
+		{3B954A6E-CE88-4B33-BEAC-757BE4BE1204}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{3B954A6E-CE88-4B33-BEAC-757BE4BE1204}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3B954A6E-CE88-4B33-BEAC-757BE4BE1204}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{3B954A6E-CE88-4B33-BEAC-757BE4BE1204}.Release|Any CPU.Build.0 = Release|Any CPU
+		{D0CC28FA-6426-4FDE-A5B9-24CF06787863}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D0CC28FA-6426-4FDE-A5B9-24CF06787863}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D0CC28FA-6426-4FDE-A5B9-24CF06787863}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D0CC28FA-6426-4FDE-A5B9-24CF06787863}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -141,6 +153,8 @@
 		{8C2CC25B-DE5D-433E-A550-63864C7A716D} = {9CB2F821-BB23-48E5-88E8-C326477733C0}
 		{FFAB2C76-1C9E-4006-95C8-A0B2AA53139D} = {9CB2F821-BB23-48E5-88E8-C326477733C0}
 		{B778DFFD-A5BA-4CAF-805E-2630CF080CDC} = {93EFF637-042E-4DD0-A74B-7F0CF998CF96}
+		{3B954A6E-CE88-4B33-BEAC-757BE4BE1204} = {5CC8AEFF-2F75-4053-9569-73419839875A}
+		{D0CC28FA-6426-4FDE-A5B9-24CF06787863} = {5CC8AEFF-2F75-4053-9569-73419839875A}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {C9A356D5-D4FE-414B-B982-6C97792BE6C6}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGVController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGVController.cs"
new file mode 100644
index 0000000..683857f
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGVController.cs"
@@ -0,0 +1,166 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_IBasicInfoRepository;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_Tasks.闃荤剨浠�;
+
+namespace WIDESEAWCS_Server.Controllers
+{
+    [Route("api/[controller]")]
+    [ApiController]
+    public class AGVController : ControllerBase
+    {
+        private readonly IStationMangerRepository _stationMangerRepository;
+
+        public AGVController(IStationMangerRepository stationMangerRepository)
+        {
+            _stationMangerRepository = stationMangerRepository;
+        }
+
+        [HttpPost, HttpGet, Route("PutRequest"), AllowAnonymous]
+        public WebResponseContent PutRequest(string code, int palletType)
+        {
+            try
+            {
+                Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.AGVStationCode == code);
+                if (stationManger == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃�");
+                }
+                IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManger.StationDeviceCode);
+                if (device == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒板搴旇澶�");
+                }
+
+                OtherDevice otherDevice = (OtherDevice)device;
+
+                bool canPut = otherDevice.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanPut, stationManger.StationCode);
+                if (canPut)
+                {
+                    return WebResponseContent.Instance.OK();
+                }
+                else
+                {
+                    otherDevice.SetValue(GroundStationDBName.W_PutRequest, true, stationManger.StationCode);
+                    otherDevice.SetValue(GroundStationDBName.W_PutPalletType, (short)palletType, stationManger.StationCode);
+                    Thread.Sleep(1000);
+                    canPut = otherDevice.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanPut, stationManger.StationCode);
+                    if (canPut)
+                    {
+                        return WebResponseContent.Instance.OK();
+                    }
+                    else
+                    {
+                        return WebResponseContent.Instance.Error($"鏀捐揣鐢宠涓�");
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        [HttpPost, HttpGet, Route("PutFinish"), AllowAnonymous]
+        public WebResponseContent PutFinish(string code)
+        {
+            try
+            {
+                Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.AGVStationCode == code);
+                if (stationManger == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃�");
+                }
+                IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManger.StationDeviceCode);
+                if (device == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒板搴旇澶�");
+                }
+
+                OtherDevice otherDevice = (OtherDevice)device;
+                otherDevice.SetValue(GroundStationDBName.W_PutFinish, true, stationManger.StationCode);
+
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        [HttpPost, HttpGet, Route("TakeRequest"), AllowAnonymous]
+        public WebResponseContent TakeRequest(string code)
+        {
+            try
+            {
+                Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.AGVStationCode == code);
+                if (stationManger == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃�");
+                }
+                IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManger.StationDeviceCode);
+                if (device == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒板搴旇澶�");
+                }
+
+                OtherDevice otherDevice = (OtherDevice)device;
+
+                bool canPut = otherDevice.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanTake, stationManger.StationCode);
+                if (canPut)
+                {
+                    return WebResponseContent.Instance.OK();
+                }
+                else
+                {
+                    otherDevice.SetValue(GroundStationDBName.W_TakeRequest, true, stationManger.StationCode);
+                    Thread.Sleep(1000);
+                    canPut = otherDevice.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanTake, stationManger.StationCode);
+                    if (canPut)
+                    {
+                        return WebResponseContent.Instance.OK();
+                    }
+                    else
+                    {
+                        return WebResponseContent.Instance.Error($"鍙栬揣鐢宠涓�");
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        [HttpPost, HttpGet, Route("TakeFinish"), AllowAnonymous]
+        public WebResponseContent TakeFinish(string code)
+        {
+            try
+            {
+                Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.AGVStationCode == code);
+                if (stationManger == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃�");
+                }
+                IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManger.StationDeviceCode);
+                if (device == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒板搴旇澶�");
+                }
+
+                OtherDevice otherDevice = (OtherDevice)device;
+                otherDevice.SetValue(GroundStationDBName.W_TakeFinish, true, stationManger.StationCode);
+
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Filter/CustomProfile.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Filter/CustomProfile.cs"
index a76f5cd..c831390 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Filter/CustomProfile.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Filter/CustomProfile.cs"
@@ -4,6 +4,7 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_DTO.System;
 using WIDESEAWCS_DTO.TaskInfo;
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob.DTO;
@@ -17,8 +18,9 @@
         /// <summary>
         /// 閰嶇疆鏋勯�犲嚱鏁帮紝鐢ㄦ潵鍒涘缓鍏崇郴鏄犲皠
         /// </summary>
-        public CustomProfile() 
+        public CustomProfile()
         {
+            CreateMap<Sys_Menu, MenuDTO>();
             CreateMap<Dt_DeviceInfo,DeviceInfoDTO>();
             CreateMap<WMSTaskDTO, Dt_Task>().ForMember(a => a.WMSId, b => b.MapFrom(b => b.Id));
             CreateMap<Dt_Task, ConveyorLineTaskCommand>().ForMember(a => a.TargetAddress, b => b.MapFrom(b => b.NextAddress)).ForMember(a => a.Barcode, b => b.MapFrom(b => b.PalletCode)).ForMember(a => a.TaskNum, b => b.MapFrom(b => b.TaskNum));
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json"
index b1df480..420f35d 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json"
@@ -12,7 +12,7 @@
   "MainDB": "DB_WIDESEA", //褰撳墠椤圭洰鐨勪富搴擄紝鎵�瀵瑰簲鐨勮繛鎺ュ瓧绗︿覆鐨凟nabled蹇呴』涓簍rue
   //杩炴帴瀛楃涓�
   //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=",
-  "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWCS__HUAIAN;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
+  "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWCS_HUAIAN;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
   //璺ㄥ煙
   "Cors": {
     "PolicyName": "CorsIpAccess", //绛栫暐鍚嶇О
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\265\213\350\257\225\346\236\266\344\273\223/StackerCraneJob_CSJ.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\265\213\350\257\225\346\236\266\344\273\223/StackerCraneJob_CSJ.cs"
new file mode 100644
index 0000000..0b4fd5a
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\346\265\213\350\257\225\346\236\266\344\273\223/StackerCraneJob_CSJ.cs"
@@ -0,0 +1,303 @@
+锘縰sing Microsoft.AspNetCore.Components.Routing;
+using Quartz;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_IBasicInfoRepository;
+using WIDESEAWCS_ITaskInfoRepository;
+using WIDESEAWCS_ITaskInfoService;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.DeviceBase;
+using WIDESEAWCS_QuartzJob.Models;
+using WIDESEAWCS_QuartzJob.Service;
+using WIDESEAWCS_QuartzJob.StackerCrane.Enum;
+using WIDESEAWCS_Tasks.HoisterJob;
+using WIDESEAWCS_Tasks.StackerCraneJob;
+using WIDESEAWCS_Tasks.闃荤剨浠�;
+
+namespace WIDESEAWCS_Tasks
+{
+    [DisallowConcurrentExecution]
+    public class StackerCraneJob_CSJ : JobBase, IJob
+    {
+        private readonly ITaskService _taskService;
+        private readonly ITaskExecuteDetailService _taskExecuteDetailService;
+        private readonly ITaskRepository _taskRepository;
+        private readonly IRouterService _routerService;
+        private readonly IStationMangerRepository _stationMangerRepository;
+
+        public StackerCraneJob_CSJ(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository)
+        {
+            _taskService = taskService;
+            _taskExecuteDetailService = taskExecuteDetailService;
+            _taskRepository = taskRepository;
+            _routerService = routerService;
+            _stationMangerRepository = stationMangerRepository;
+        }
+
+        public Task Execute(IJobExecutionContext context)
+        {
+            try
+            {
+                CommonStackerCrane commonStackerCrane = (CommonStackerCrane)context.JobDetail.JobDataMap.Get("JobParams");
+                if (commonStackerCrane != null)
+                {
+                    if (!commonStackerCrane.IsEventSubscribed)
+                    {
+                        commonStackerCrane.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;//璁㈤槄浠诲姟瀹屾垚浜嬩欢
+                    }
+
+                    if (commonStackerCrane.StackerCraneAutoStatusValue == StackerCraneAutoStatus.Automatic && commonStackerCrane.StackerCraneStatusValue == StackerCraneStatus.Normal)
+                    {
+                        commonStackerCrane.CheckStackerCraneTaskCompleted();//闃叉浠诲姟瀹屾垚浜嬩欢鐩戞祴瓒呮椂锛屽啀鎵嬪姩瑙﹀彂涓�娆�
+
+                        if (commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.Standby)
+                        {
+                            Dt_Task? task = GetTask(commonStackerCrane);
+                            if (task != null)
+                            {
+                                StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task);
+                                if (stackerCraneTaskCommand != null)
+                                {
+                                    bool sendFlag = commonStackerCrane.SendCommand(stackerCraneTaskCommand);
+                                    if (sendFlag)
+                                    {
+                                        commonStackerCrane.LastTaskType = task.TaskType;
+                                        _taskService.UpdateTaskStatusToNext(task.TaskNum);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                WriteError(nameof(CommonStackerCraneJob), ex.Message, ex);
+            }
+            return Task.CompletedTask;
+        }
+
+        /// <summary>
+        /// 浠诲姟瀹屾垚浜嬩欢璁㈤槄鐨勬柟娉�
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void CommonStackerCrane_StackerCraneTaskCompletedEventHandler(object? sender, WIDESEAWCS_QuartzJob.StackerCrane.StackerCraneTaskCompletedEventArgs e)
+        {
+            CommonStackerCrane? commonStackerCrane = sender as CommonStackerCrane;
+            if (commonStackerCrane != null)
+            {
+                if (commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5)
+                {
+                    Console.Out.WriteLine("TaskCompleted" + e.TaskNum);
+                    _taskService.StackCraneTaskCompleted(e.TaskNum);
+                    commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5);
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鑾峰彇浠诲姟
+        /// </summary>
+        /// <param name="commonStackerCrane">鍫嗗灈鏈哄璞�</param>
+        /// <returns></returns>
+        private Dt_Task? GetTask(CommonStackerCrane commonStackerCrane)
+        {
+            Dt_Task task;
+            if (commonStackerCrane.LastTaskType == null)
+            {
+                task = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode);
+            }
+            else
+            {
+                if (commonStackerCrane.LastTaskType.GetValueOrDefault().GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+                {
+                    task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
+                    if (task == null)
+                    {
+                        task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode);
+                    }
+                }
+                else
+                {
+                    task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode);
+                    if (task == null)
+                    {
+                        task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
+                    }
+                }
+            }
+
+            if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+            {
+                if (OutTaskStationIsOccupied(task) != null || true)
+                {
+                    return task;
+                }
+                else
+                {
+                    List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress).Select(x => x.ChildPosi).ToList();
+                    List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStaionCodes);
+                    foreach (var item in tasks)
+                    {
+                        if (OutTaskStationIsOccupied(task) != null)
+                        {
+                            return task;
+                        }
+                    }
+                    task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
+                }
+            }
+
+            return task;
+        }
+
+        /// <summary>
+        /// 鍑哄簱浠诲姟鍒ゆ柇鍑哄簱绔欏彴鏄惁琚崰鐢�
+        /// </summary>
+        /// <param name="task">浠诲姟瀹炰綋</param>
+        /// <returns>濡傛灉鏈鍗犵敤锛岃繑鍥炰紶鍏ョ殑浠诲姟淇℃伅锛屽惁鍒欙紝杩斿洖null</returns>
+        private Dt_Task? OutTaskStationIsOccupied([NotNull] Dt_Task task)
+        {
+            Dt_StationManger? stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == task.TargetAddress && x.StackerCraneCode == task.Roadway);
+            if (stationManger != null)
+            {
+                IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManger.StationDeviceCode);
+                if (device != null)
+                {
+                    OtherDevice client = (OtherDevice)device;
+                    if (client.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanPut, stationManger.StationCode))//鍑哄簱绔欏彴鏈鍗犵敤
+                    {
+                        task.TargetAddress = stationManger.StackerCraneStationCode;
+                        _taskRepository.UpdateData(task);
+                        return task;
+                    }
+                }
+                else
+                {
+                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒板嚭搴撶珯鍙般�恵stationManger.StationDeviceCode}銆戝搴旂殑閫氳瀵硅薄锛屾棤娉曞垽鏂嚭搴撶珯鍙版槸鍚﹁鍗犵敤");
+                }
+            }
+            else
+            {
+                _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鏍¢獙绔欏彴");
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// 浠诲姟瀹炰綋杞崲鎴愬懡浠odel
+        /// </summary>
+        /// <param name="task">浠诲姟瀹炰綋</param>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
+        public StackerCraneTaskCommand? ConvertToStackerCraneTaskCommand([NotNull] Dt_Task task)
+        {
+            StackerCraneTaskCommand stackerCraneTaskCommand = new StackerCraneTaskCommand();
+
+            stackerCraneTaskCommand.Barcode = task.PalletCode;
+            stackerCraneTaskCommand.TaskNum = task.TaskNum;
+            stackerCraneTaskCommand.WorkType = 1;
+            stackerCraneTaskCommand.TrayType = 1;
+            if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//鍒ゆ柇鏄惁鏄叆搴撲换鍔�
+            {
+                //List<Dt_Router> routers = _routerService.QueryNextRoutes(task.CurrentAddress, task.Roadway);
+                //if (routers.Count > 0)
+                //{
+                string[] startCodes = task.CurrentAddress.Split("-");
+
+                stackerCraneTaskCommand.StartRow = Convert.ToInt16(startCodes[0]);
+                stackerCraneTaskCommand.StartColumn = Convert.ToInt16(startCodes[1]);
+                stackerCraneTaskCommand.StartLayer = Convert.ToInt16(startCodes[2]);
+
+                string[] targetCodes = task.NextAddress.Split("-");
+                if (targetCodes.Length == 3)
+                {
+                    stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]);
+                    stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]);
+                    stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]);
+                }
+                else
+                {
+                    //鏁版嵁閰嶇疆閿欒
+                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍏ュ簱浠诲姟缁堢偣閿欒锛岃捣鐐癸細銆恵task.NextAddress}銆�");
+                    return null;
+                }
+                //}
+                //else
+                //{
+                //    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鑾峰彇瀵瑰簲鐨勫爢鍨涙満鍙栬揣绔欏彴淇℃伅");
+                //    return null;
+                //}
+            }
+            else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+            {
+                //List<Dt_Router> routers = _routerService.QueryNextRoutes(task.Roadway, task.TargetAddress);
+                //if (routers.Count > 0)
+                {
+                    string[] targetCodes = task.NextAddress.Split("-");
+
+                    stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]);
+                    stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]);
+                    stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]);
+
+                    string[] sourceCodes = task.CurrentAddress.Split("-");
+                    if (sourceCodes.Length == 3)
+                    {
+                        stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[0]);
+                        stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[1]);
+                        stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[2]);
+                    }
+                    else
+                    {
+                        //鏁版嵁閰嶇疆閿欒
+                        _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍑哄簱浠诲姟璧风偣閿欒锛岃捣鐐癸細銆恵task.CurrentAddress}銆�");
+                        return null;
+                    }
+                }
+                //else
+                //{
+                //    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鑾峰彇瀵瑰簲鐨勫爢鍨涙満鏀捐揣绔欏彴淇℃伅");
+                //    return null;
+                //}
+            }
+            else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
+            {
+                string[] targetCodes = task.NextAddress.Split("-");
+                if (targetCodes.Length == 3)
+                {
+                    stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]);
+                    stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]);
+                    stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]);
+                }
+                else
+                {
+                    //鏁版嵁閰嶇疆閿欒
+                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"绉诲簱浠诲姟缁堢偣閿欒锛岃捣鐐癸細銆恵task.NextAddress}銆�");
+                    return null;
+                }
+                string[] sourceCodes = task.CurrentAddress.Split("-");
+                if (sourceCodes.Length == 3)
+                {
+                    stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[0]);
+                    stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[1]);
+                    stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[2]);
+                }
+                else
+                {
+                    //鏁版嵁閰嶇疆閿欒
+                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"绉诲簱浠诲姟璧风偣閿欒锛岃捣鐐癸細銆恵task.CurrentAddress}銆�");
+                    return null;
+                }
+            }
+            return stackerCraneTaskCommand;
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\351\230\273\347\204\212\344\273\223/GroundStationDBName.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\351\230\273\347\204\212\344\273\223/GroundStationDBName.cs"
new file mode 100644
index 0000000..a310009
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\351\230\273\347\204\212\344\273\223/GroundStationDBName.cs"
@@ -0,0 +1,51 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Tasks.闃荤剨浠�
+{
+    public enum GroundStationDBName
+    {
+        /// <summary>
+        /// 鏄惁鍏佽鏀捐揣(璇�)
+        /// </summary>
+        R_IsCanPut,
+
+        /// <summary>
+        /// 鏄惁鍏佽鍙栬揣(璇�)
+        /// </summary>
+        R_IsCanTake,
+
+        /// <summary>
+        /// 鍙栬揣鎵樼洏绫诲瀷(璇�)
+        /// </summary>
+        R_TakePalletType,
+
+        /// <summary>
+        /// 鏀捐揣鎵樼洏绫诲瀷(鍐�)
+        /// </summary>
+        W_PutPalletType,
+
+        /// <summary>
+        /// 鏀捐揣璇锋眰(鍐�)
+        /// </summary>
+        W_PutRequest,
+
+        /// <summary>
+        /// 鏀捐揣瀹屾垚(鍐�)
+        /// </summary>
+        W_PutFinish,
+
+        /// <summary>
+        /// 鍙栬揣璇锋眰(鍐�)
+        /// </summary>
+        W_TakeRequest,
+
+        /// <summary>
+        /// 鍙栬揣瀹屾垚(鍐�)
+        /// </summary>
+        W_TakeFinish
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\351\230\273\347\204\212\344\273\223/StackerCraneJob_ZH.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\351\230\273\347\204\212\344\273\223/StackerCraneJob_ZH.cs"
new file mode 100644
index 0000000..1a0f5f3
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\351\230\273\347\204\212\344\273\223/StackerCraneJob_ZH.cs"
@@ -0,0 +1,309 @@
+锘縰sing Microsoft.AspNetCore.Components.Routing;
+using Quartz;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_IBasicInfoRepository;
+using WIDESEAWCS_ITaskInfoRepository;
+using WIDESEAWCS_ITaskInfoService;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.DeviceBase;
+using WIDESEAWCS_QuartzJob.Models;
+using WIDESEAWCS_QuartzJob.Service;
+using WIDESEAWCS_QuartzJob.StackerCrane.Enum;
+using WIDESEAWCS_Tasks.HoisterJob;
+using WIDESEAWCS_Tasks.StackerCraneJob;
+using WIDESEAWCS_Tasks.闃荤剨浠�;
+
+namespace WIDESEAWCS_Tasks
+{
+    [DisallowConcurrentExecution]
+    public class StackerCraneJob_ZH : JobBase, IJob
+    {
+        private readonly ITaskService _taskService;
+        private readonly ITaskExecuteDetailService _taskExecuteDetailService;
+        private readonly ITaskRepository _taskRepository;
+        private readonly IRouterService _routerService;
+        private readonly IStationMangerRepository _stationMangerRepository;
+
+        public StackerCraneJob_ZH(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository)
+        {
+            _taskService = taskService;
+            _taskExecuteDetailService = taskExecuteDetailService;
+            _taskRepository = taskRepository;
+            _routerService = routerService;
+            _stationMangerRepository = stationMangerRepository;
+        }
+
+        public Task Execute(IJobExecutionContext context)
+        {
+            try
+            {
+                CommonStackerCrane commonStackerCrane = (CommonStackerCrane)context.JobDetail.JobDataMap.Get("JobParams");
+                if (commonStackerCrane != null)
+                {
+                    if (!commonStackerCrane.IsEventSubscribed)
+                    {
+                        commonStackerCrane.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;//璁㈤槄浠诲姟瀹屾垚浜嬩欢
+                    }
+
+                    if (commonStackerCrane.StackerCraneAutoStatusValue == StackerCraneAutoStatus.Automatic && commonStackerCrane.StackerCraneStatusValue == StackerCraneStatus.Normal)
+                    {
+                        commonStackerCrane.CheckStackerCraneTaskCompleted();//闃叉浠诲姟瀹屾垚浜嬩欢鐩戞祴瓒呮椂锛屽啀鎵嬪姩瑙﹀彂涓�娆�
+
+                        if (commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.Standby)
+                        {
+                            Dt_Task? task = GetTask(commonStackerCrane);
+                            if (task != null)
+                            {
+                                StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task);
+                                if (stackerCraneTaskCommand != null)
+                                {
+                                    bool sendFlag = commonStackerCrane.SendCommand(stackerCraneTaskCommand);
+                                    if (sendFlag)
+                                    {
+                                        commonStackerCrane.LastTaskType = task.TaskType;
+                                        _taskService.UpdateTaskStatusToNext(task.TaskNum);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                WriteError(nameof(StackerCraneJob_ZH), ex.Message, ex);
+            }
+            return Task.CompletedTask;
+        }
+
+        /// <summary>
+        /// 浠诲姟瀹屾垚浜嬩欢璁㈤槄鐨勬柟娉�
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void CommonStackerCrane_StackerCraneTaskCompletedEventHandler(object? sender, WIDESEAWCS_QuartzJob.StackerCrane.StackerCraneTaskCompletedEventArgs e)
+        {
+            CommonStackerCrane? commonStackerCrane = sender as CommonStackerCrane;
+            if (commonStackerCrane != null)
+            {
+                if (commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5)
+                {
+                    Console.Out.WriteLine("TaskCompleted" + e.TaskNum);
+                    _taskService.StackCraneTaskCompleted(e.TaskNum);
+                    commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5);
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鑾峰彇浠诲姟
+        /// </summary>
+        /// <param name="commonStackerCrane">鍫嗗灈鏈哄璞�</param>
+        /// <returns></returns>
+        private Dt_Task? GetTask(CommonStackerCrane commonStackerCrane)
+        {
+            Dt_Task task;
+            if (commonStackerCrane.LastTaskType == null)
+            {
+                task = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode);
+            }
+            else
+            {
+                if (commonStackerCrane.LastTaskType.GetValueOrDefault().GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+                {
+                    task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
+                    if (task == null)
+                    {
+                        task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode);
+                    }
+                }
+                else
+                {
+                    task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode);
+                    if (task == null)
+                    {
+                        task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
+                    }
+                }
+            }
+
+            if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+            {
+                if (OutTaskStationIsOccupied(task) != null || true)
+                {
+                    return task;
+                }
+                else
+                {
+                    List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress).Select(x => x.ChildPosi).ToList();
+                    List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStaionCodes);
+                    foreach (var item in tasks)
+                    {
+                        if (OutTaskStationIsOccupied(task) != null)
+                        {
+                            return task;
+                        }
+                    }
+                    task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
+                }
+            }
+
+            return task;
+        }
+
+        /// <summary>
+        /// 鍑哄簱浠诲姟鍒ゆ柇鍑哄簱绔欏彴鏄惁琚崰鐢�
+        /// </summary>
+        /// <param name="task">浠诲姟瀹炰綋</param>
+        /// <returns>濡傛灉鏈鍗犵敤锛岃繑鍥炰紶鍏ョ殑浠诲姟淇℃伅锛屽惁鍒欙紝杩斿洖null</returns>
+        private Dt_Task? OutTaskStationIsOccupied([NotNull] Dt_Task task)
+        {
+            Dt_StationManger? stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == task.TargetAddress && x.StackerCraneCode == task.Roadway);
+            if (stationManger != null)
+            {
+                IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManger.StationDeviceCode);
+                if (device != null)
+                {
+                    OtherDevice client = (OtherDevice)device;
+                    if (client.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanPut, stationManger.StationCode))//鍑哄簱绔欏彴鏈鍗犵敤
+                    {
+                        task.TargetAddress = stationManger.StackerCraneStationCode;
+                        _taskRepository.UpdateData(task);
+                        return task;
+                    }
+                }
+                else
+                {
+                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒板嚭搴撶珯鍙般�恵stationManger.StationDeviceCode}銆戝搴旂殑閫氳瀵硅薄锛屾棤娉曞垽鏂嚭搴撶珯鍙版槸鍚﹁鍗犵敤");
+                    WriteInfo(nameof(StackerCraneJob_ZH), $"鏈壘鍒板嚭搴撶珯鍙般�恵stationManger.StationDeviceCode}銆戝搴旂殑閫氳瀵硅薄锛屾棤娉曞垽鏂嚭搴撶珯鍙版槸鍚﹁鍗犵敤");
+                }
+            }
+            else
+            {
+                _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鏍¢獙绔欏彴");
+                WriteInfo(nameof(StackerCraneJob_ZH), $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鏍¢獙绔欏彴");
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// 浠诲姟瀹炰綋杞崲鎴愬懡浠odel
+        /// </summary>
+        /// <param name="task">浠诲姟瀹炰綋</param>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
+        public StackerCraneTaskCommand? ConvertToStackerCraneTaskCommand([NotNull] Dt_Task task)
+        {
+            StackerCraneTaskCommand stackerCraneTaskCommand = new StackerCraneTaskCommand();
+
+            stackerCraneTaskCommand.Barcode = task.PalletCode;
+            stackerCraneTaskCommand.TaskNum = task.TaskNum;
+            stackerCraneTaskCommand.WorkType = 1;
+            stackerCraneTaskCommand.TrayType = 1;
+            if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//鍒ゆ柇鏄惁鏄叆搴撲换鍔�
+            {
+                //List<Dt_Router> routers = _routerService.QueryNextRoutes(task.CurrentAddress, task.Roadway);
+                //if (routers.Count > 0)
+                //{
+                string[] startCodes = task.CurrentAddress.Split("-");
+
+                stackerCraneTaskCommand.StartRow = Convert.ToInt16(startCodes[0]);
+                stackerCraneTaskCommand.StartColumn = Convert.ToInt16(startCodes[1]);
+                stackerCraneTaskCommand.StartLayer = Convert.ToInt16(startCodes[2]);
+
+                string[] targetCodes = task.NextAddress.Split("-");
+                if (targetCodes.Length == 3)
+                {
+                    stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]);
+                    stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]);
+                    stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]);
+                }
+                else
+                {
+                    //鏁版嵁閰嶇疆閿欒
+                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍏ュ簱浠诲姟缁堢偣閿欒锛岃捣鐐癸細銆恵task.NextAddress}銆�");
+                    return null;
+                }
+                //}
+                //else
+                //{
+                //    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鑾峰彇瀵瑰簲鐨勫爢鍨涙満鍙栬揣绔欏彴淇℃伅");
+                //    return null;
+                //}
+            }
+            else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+            {
+                //List<Dt_Router> routers = _routerService.QueryNextRoutes(task.Roadway, task.TargetAddress);
+                //if (routers.Count > 0)
+                {
+                    string[] targetCodes = task.NextAddress.Split("-");
+
+                    stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]);
+                    stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]);
+                    stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]);
+
+                    string[] sourceCodes = task.CurrentAddress.Split("-");
+                    if (sourceCodes.Length == 3)
+                    {
+                        stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[0]);
+                        stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[1]);
+                        stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[2]);
+                    }
+                    else
+                    {
+                        //鏁版嵁閰嶇疆閿欒
+                        _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍑哄簱浠诲姟璧风偣閿欒锛岃捣鐐癸細銆恵task.CurrentAddress}銆�");
+                        WriteInfo(nameof(StackerCraneJob_ZH), $"鍑哄簱浠诲姟璧风偣閿欒锛岃捣鐐癸細銆恵task.CurrentAddress}銆�");
+                        return null;
+                    }
+                }
+                //else
+                //{
+                //    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鑾峰彇瀵瑰簲鐨勫爢鍨涙満鏀捐揣绔欏彴淇℃伅");
+                //    return null;
+                //}
+            }
+            else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
+            {
+                string[] targetCodes = task.NextAddress.Split("-");
+                if (targetCodes.Length == 3)
+                {
+                    stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]);
+                    stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]);
+                    stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]);
+                }
+                else
+                {
+                    //鏁版嵁閰嶇疆閿欒
+                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"绉诲簱浠诲姟缁堢偣閿欒锛岃捣鐐癸細銆恵task.NextAddress}銆�");
+                    WriteInfo(nameof(StackerCraneJob_ZH), $"绉诲簱浠诲姟缁堢偣閿欒锛岃捣鐐癸細銆恵task.NextAddress}銆�");
+                    return null;
+                }
+                string[] sourceCodes = task.CurrentAddress.Split("-");
+                if (sourceCodes.Length == 3)
+                {
+                    stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[0]);
+                    stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[1]);
+                    stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[2]);
+                }
+                else
+                {
+                    //鏁版嵁閰嶇疆閿欒
+                    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"绉诲簱浠诲姟璧风偣閿欒锛岃捣鐐癸細銆恵task.CurrentAddress}銆�");
+
+                    WriteInfo(nameof(StackerCraneJob_ZH), $"绉诲簱浠诲姟璧风偣閿欒锛岃捣鐐癸細銆恵task.CurrentAddress}銆�");
+                    return null;
+                }
+            }
+            return stackerCraneTaskCommand;
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/2890c663-d711-4602-bdad-56852b6a51bc.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/2890c663-d711-4602-bdad-56852b6a51bc.vsidx"
deleted file mode 100644
index d78ab29..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/2890c663-d711-4602-bdad-56852b6a51bc.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/433da193-e6b4-48ed-bdc6-2332b099c9c2.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/433da193-e6b4-48ed-bdc6-2332b099c9c2.vsidx"
deleted file mode 100644
index d76b5c6..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/433da193-e6b4-48ed-bdc6-2332b099c9c2.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/4b9d13b5-464a-47d4-8dae-9937d5273cc6.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/4b9d13b5-464a-47d4-8dae-9937d5273cc6.vsidx"
new file mode 100644
index 0000000..b4217cb
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/4b9d13b5-464a-47d4-8dae-9937d5273cc6.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5023b4f8-50f2-4301-b3ca-8d83fa478bdc.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5023b4f8-50f2-4301-b3ca-8d83fa478bdc.vsidx"
new file mode 100644
index 0000000..6878405
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5023b4f8-50f2-4301-b3ca-8d83fa478bdc.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5e0bd2ed-63f0-464e-b65d-6e328058f9ca.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5e0bd2ed-63f0-464e-b65d-6e328058f9ca.vsidx"
deleted file mode 100644
index a2ea337..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/5e0bd2ed-63f0-464e-b65d-6e328058f9ca.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/776b31ca-b3d0-487d-8a56-85a65dead3f1.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/776b31ca-b3d0-487d-8a56-85a65dead3f1.vsidx"
deleted file mode 100644
index b538cb6..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/776b31ca-b3d0-487d-8a56-85a65dead3f1.vsidx"
+++ /dev/null
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/bb9c5c98-5de4-43c8-8a36-34ad166b9c7a.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/bb9c5c98-5de4-43c8-8a36-34ad166b9c7a.vsidx"
new file mode 100644
index 0000000..f1f7a5f
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/bb9c5c98-5de4-43c8-8a36-34ad166b9c7a.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d6701bb1-0090-4502-a2ca-a4e0726e92d8.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d6701bb1-0090-4502-a2ca-a4e0726e92d8.vsidx"
new file mode 100644
index 0000000..6256f40
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d6701bb1-0090-4502-a2ca-a4e0726e92d8.vsidx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/MaterielInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/MaterielInfoService.cs"
index f8b4441..6f95a6e 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/MaterielInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Base/MaterielInfoService.cs"
@@ -13,8 +13,11 @@
 {
     public partial class MaterielInfoService : ServiceBase<Dt_MaterielInfo, IMaterielInfoRepository>, IMaterielInfoService
     {
-        public MaterielInfoService(IMaterielInfoRepository BaseDal) : base(BaseDal)
+        private readonly IBasicRepository _basicRepository;
+
+        public MaterielInfoService(IMaterielInfoRepository BaseDal, IBasicRepository basicRepository) : base(BaseDal)
         {
+            _basicRepository = basicRepository;
         }
 
         public IMaterielInfoRepository Repository => BaseDal;
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs"
index 0720420..bbe6eee 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs"
@@ -14,20 +14,20 @@
 {
     public class BasicService : IBasicService
     {
-        /// <summary>
-        /// 
-        /// </summary>
         public ILocationInfoService LocationInfoService { get; }
 
         public IMaterielInfoService MaterielInfoService { get; }
 
         public IWarehouseService WarehouseService { get; }
 
-        public BasicService(ILocationInfoService locationInfoService, IMaterielInfoService materielInfoService, IWarehouseService warehouseService)
+        public ISupplierInfoService SupplierInfoService { get; }
+
+        public BasicService(ILocationInfoService locationInfoService, IMaterielInfoService materielInfoService, IWarehouseService warehouseService, ISupplierInfoService supplierInfoService)
         {
             LocationInfoService = locationInfoService;
             MaterielInfoService = materielInfoService;
             WarehouseService = warehouseService;
+            SupplierInfoService = supplierInfoService;
         }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/MaterielInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/MaterielInfoService.cs"
index e419149..17c4dbe 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/MaterielInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/MaterielInfoService.cs"
@@ -9,6 +9,7 @@
 using WIDESEA_Core;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_DTO.Basic;
+using WIDESEA_DTO.ERP;
 using WIDESEA_IBasicRepository;
 using WIDESEA_IBasicService;
 using WIDESEA_Model.Models;
@@ -66,6 +67,12 @@
         {
             try
             {
+                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == model.WaId);
+                if (warehouse == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒颁粨搴撲俊鎭�");
+                }
+
                 if (model.OperateType == 0)
                 {
                     Dt_MaterielInfo materielInfo = new Dt_MaterielInfo()
@@ -78,14 +85,14 @@
                         MaterielName = model.Name,
                         MaterielSize = model.Size,
                         MaterielSourceType = (MaterielSourceTypeEnum)model.ItemSourceType,
-                        MaterielSpec = "model.",
+                        MaterielSpec = model.StandType,
                         MaterielState = (EnableEnum)model.State,
                         MaterielThickness = model.Thickness,
                         MaterielType = (MaterielTypeEnum)model.ItemType,
                         MaterielUnit = model.Unit,
                         MaterielVersion = model.MaterialVersion,
                         MaterielWide = model.Wide,
-                        WarehouseId = model.WaId,
+                        WarehouseId = warehouse.WarehouseId,
                     };
                     BaseDal.AddData(materielInfo);
                 }
@@ -112,7 +119,7 @@
                     materielInfo.MaterielUnit = model.Unit;
                     materielInfo.MaterielVersion = model.MaterialVersion;
                     materielInfo.MaterielWide = model.Wide;
-                    materielInfo.WarehouseId = model.WaId;
+                    materielInfo.WarehouseId = warehouse.WarehouseId;
                     BaseDal.UpdateData(materielInfo);
                 }
                 else if (model.OperateType == 2)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Attributes/MethodParamsValidateAttribute.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Attributes/MethodParamsValidateAttribute.cs"
index 52b5807..e36ddf8 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Attributes/MethodParamsValidateAttribute.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Attributes/MethodParamsValidateAttribute.cs"
@@ -9,5 +9,6 @@
     [AttributeUsage(AttributeTargets.Method)]
     public class MethodParamsValidateAttribute : Attribute
     {
+        
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Attributes/ModelValidateAttribute.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Attributes/ModelValidateAttribute.cs"
index d32fa8d..0f8b12b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Attributes/ModelValidateAttribute.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Attributes/ModelValidateAttribute.cs"
@@ -88,6 +88,8 @@
 
         public Func<object, (bool, string, object?)> CustomValidateMethod { get; set; }
 
+        public object ErrorResponse { get; set; }
+
         public ModelValidateAttribute()
         {
         }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/MaterielInfoDTO.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/MaterielInfoDTO.cs"
deleted file mode 100644
index b6c683e..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/MaterielInfoDTO.cs"
+++ /dev/null
@@ -1,144 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core.Attributes;
-using static WIDESEA_DTO.ErpResponseContent;
-
-namespace WIDESEA_DTO.Basic
-{
-    [ModelValidate]
-    public class MaterielInfo
-    {
-        /// <summary>
-        /// 
-        /// </summary>
-        public string message { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string From { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string DateTime { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        [PropertyValidate("鐗╂枡鍒楄〃", NotNullAndEmpty = true)]
-        public MaterielInfoDTO Content { get; set; }
-    }
-    [ModelValidate]
-    public class MaterielInfoDTO
-    {
-        /// <summary>
-        /// 
-        /// </summary>
-        public string Code { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string Name { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string StandType { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public int ItemType { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string Type { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public int ItemSourceType { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string Unit { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string MaterialVersion { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public int Size { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public int Length { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public int Thickness { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public int Wide { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string Model { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string Color { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string MaterialTG { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string Spare1 { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string Spare2 { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string Spare3 { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string Spare4 { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string Spare5 { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public int State { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string InvOrgId { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public int OperateType { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string UserDef01 { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string UserDef04 { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public int IsCheck { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string WaId { get; set; }
-    }
-}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/SupplierDTO.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/SupplierDTO.cs"
index 6f11d3a..f5d96aa 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/SupplierDTO.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/SupplierDTO.cs"
@@ -8,45 +8,72 @@
 namespace WIDESEA_DTO.Basic
 {
     [ModelValidate]
-    public class Supplier
-    {
-        /// <summary>
-        /// 
-        /// </summary>
-        public string From { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string DateTime { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        [PropertyValidate("鐗╂枡鍒楄〃", NotNullAndEmpty = true)]
-        public SupplierDTO Content { get; set; }
-    }
-    [ModelValidate]
     public class SupplierDTO
     {
+        /// <summary>
+        /// 渚涘簲鍟嗙紪鐮�
+        /// </summary>
+        [PropertyValidate("渚涘簲鍟嗙紪鐮�", NotNullAndEmpty = true)]
         public string Code { get; set; }
 
+        /// <summary>
+        /// 渚涘簲鍟嗗叏绉�
+        /// </summary>
+        [PropertyValidate("渚涘簲鍟嗗叏绉�", NotNullAndEmpty = true)]
         public string Name { get; set; }
 
+        /// <summary>
+        /// 渚涘簲鍟嗙畝绉�
+        /// </summary>
+        [PropertyValidate("渚涘簲鍟嗙畝绉�", NotNullAndEmpty = true)]
         public string ShortName { get; set; }
 
+        /// <summary>
+        /// 鑱旂郴浜�
+        /// </summary>
+        [PropertyValidate("鑱旂郴浜�", NotNullAndEmpty = true)]
         public string Contacts { get; set; }
 
+        /// <summary>
+        /// 鑱旂郴鐢佃瘽
+        /// </summary>
+        [PropertyValidate("鑱旂郴鐢佃瘽", NotNullAndEmpty = true)]
         public string ContactNumber { get; set; }
 
+        /// <summary>
+        /// 鑱旂郴鍦板潃
+        /// </summary>
+        [PropertyValidate("鑱旂郴鍦板潃", NotNullAndEmpty = true)]
         public string ContactAddress { get; set; }
 
+        /// <summary>
+        /// 鐢靛瓙閭
+        /// </summary>
+        [PropertyValidate("鐢靛瓙閭", NotNullAndEmpty = true)]
         public string Email { get; set; }
 
+        /// <summary>
+        /// 鎻忚堪
+        /// </summary>
+        [PropertyValidate("鎻忚堪", NotNullAndEmpty = true)]
         public string Description { get; set; }
 
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        [PropertyValidate("鐘舵��", NotNullAndEmpty = true)]
         public int State { get; set; }
 
-        public string InvOrgId { get; set; }
+        /// <summary>
+        /// 搴撳瓨缁勭粐
+        /// </summary>
+        [PropertyValidate("搴撳瓨缁勭粐", NotNullAndEmpty = true)]
+        public string InvOrgId { get; set; } = "娣畨鐗瑰垱浜屽巶";
 
-        public string OperateType {  get; set; }
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷
+        /// </summary>
+        [PropertyValidate("鎿嶄綔绫诲瀷", NotNullAndEmpty = true,Check = new object[] { 0, 1, 2 })]
+        public string OperateType { get; set; }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpOutOrderDTO.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpOutOrderDTO.cs"
index cdcad93..dc8bd94 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpOutOrderDTO.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpOutOrderDTO.cs"
@@ -8,50 +8,99 @@
 
 namespace WIDESEA_DTO.ERP
 {
-    [ModelValidate]
-    public class ErpOutOrder
-    {
-        /// <summary>
-        /// 
-        /// </summary>
-        public string From { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string DateTime { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        [PropertyValidate("鐗╂枡鍒楄〃", NotNullAndEmpty = true)]
-        public ErpOutOrderDTO Content { get; set; }
-    }
+    /// <summary>
+    /// 鍑哄簱鍗�
+    /// </summary>
     [ModelValidate]
     public class ErpOutOrderDTO
     {
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷<br/>
+        /// 1锛氭柊澧�<br/>
+        /// 2锛氫慨鏀�<br/>
+        /// 3锛氬垹闄�(鍒犻櫎鍙鏄庣粏琛屽彿鍜岄鏂欏崟鍙�)
+        /// </summary>
+        [PropertyValidate("鎿嶄綔绫诲瀷", NotNullAndEmpty = true, Check = new object[] { 1, 2, 3 })]
         public int Way { get; set; }
 
+        /// <summary>
+        /// 鏄庣粏琛屽彿
+        /// </summary>
+        [PropertyValidate("鏄庣粏琛屽彿", NotNullAndEmpty = true)]
         public string RowNo { get; set; }
 
+        /// <summary>
+        /// 棰嗘枡璁㈠崟鍙�
+        /// </summary>
+        [PropertyValidate("棰嗘枡璁㈠崟鍙�", NotNullAndEmpty = true)]
         public string OrderNo { get; set; }
 
+        /// <summary>
+        /// 浠撳簱缂栧彿
+        /// </summary>
+        [PropertyValidate("浠撳簱缂栧彿", NotNullAndEmpty = true)]
         public string WaId { get; set; }
 
+        /// <summary>
+        /// 璁㈠崟绫诲瀷<br/>
+        /// 1锛氭爣鍑嗙敓浜ч鏂�<br/>
+        /// 2锛氭爣鍑嗛儴闂ㄩ鏂�<br/>
+        /// 3锛氱爺鍙戦」鐩鏂�<br/>
+        /// 4锛氱墿鏂欓�佹鍑轰粨<br/>
+        /// 5锛氱墿鏂欒皟鍑�<br/>
+        /// 6锛氱淮淇彂鏂�<br/>
+        /// 7锛氶攢鍞锤鏄�<br/>
+        /// 8锛氶��璐х鐞�
+        /// </summary>
+        [PropertyValidate("璁㈠崟绫诲瀷", NotNullAndEmpty = true, Check = new object[] { 1, 2, 3, 4, 5, 6, 7, 8 })]
         public int OType { get; set; }
 
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        [PropertyValidate("鐗╂枡缂栫爜", NotNullAndEmpty = true)]
         public string MCode { get; set; }
 
+        /// <summary>
+        /// 鐗╂枡鎵规
+        /// </summary>
+        [PropertyValidate("鐗╂枡鎵规")]
         public string MLot { get; set; }
 
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        [PropertyValidate("鏁伴噺", NotNullAndEmpty = true, MinValue = 0, IsContainMinValue = false)]
         public float Qty { get; set; }
 
+        /// <summary>
+        /// 鍗曚綅
+        /// </summary>
+        [PropertyValidate("鍗曚綅", NotNullAndEmpty = true)]
         public string Unit { get; set; }
 
+        /// <summary>
+        /// 涓嬪崟鏃ユ湡
+        /// </summary>
+        [PropertyValidate("涓嬪崟鏃ユ湡", NotNullAndEmpty = true)]
         public string OrderData { get; set; }
 
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [PropertyValidate("澶囨敞")]
         public string Node { get; set; }
 
+        /// <summary>
+        /// 閮ㄩ棬缂栧彿
+        /// </summary>
+        [PropertyValidate("閮ㄩ棬缂栧彿")]
         public string DepartmentCode { get; set; }
 
+        /// <summary>
+        /// 閮ㄩ棬鍚嶇О
+        /// </summary>
+        [PropertyValidate("閮ㄩ棬鍚嶇О")]
         public string DepartmentName { get; set; }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpResponseContent.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpResponseContent.cs"
index 3ae8a32..4b7860b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpResponseContent.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ErpResponseContent.cs"
@@ -32,15 +32,15 @@
         /// <summary>
         /// 
         /// </summary>
-        public bool bSucc { get; set; } = true;
+        public bool BSucc { get; set; } = true;
         /// <summary>
         /// 
         /// </summary>
-        public string strCode { get; set; } = "0000";
+        public string StrCode { get; set; } = "0000";
         /// <summary>
         /// 鎵ц鎴愬姛
         /// </summary>
-        public string strMsg { get; set; } = "鎵ц鎴愬姛";
+        public string StrMsg { get; set; } = "鎵ц鎴愬姛";
         /// <summary>
         /// 
         /// </summary>
@@ -56,17 +56,17 @@
         }
         public ErpResponseContent OK(string message = null)
         {
-            bSucc = true;
-            strCode = "0000";
-            strMsg = message == null ? "鎵ц鎴愬姛" : message;
+            BSucc = true;
+            StrCode = "0000";
+            StrMsg = message == null ? "鎵ц鎴愬姛" : message;
             return this;
         }
 
         public ErpResponseContent Error(string message = null)
         {
-            bSucc = false;
-            strCode = "404";
-            strMsg = message == null ? "鎵ц澶辫触" : message;
+            BSucc = false;
+            StrCode = "404";
+            StrMsg = message == null ? "鎵ц澶辫触" : message;
             return this;
         }
     }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/MaterielInfoDTO.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/MaterielInfoDTO.cs"
new file mode 100644
index 0000000..2568e47
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/MaterielInfoDTO.cs"
@@ -0,0 +1,174 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+
+namespace WIDESEA_DTO.ERP
+{
+    [ModelValidate()]
+    public class MaterielInfoDTO
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public string StandType { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public int ItemType { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public string Type { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public int ItemSourceType { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public string MaterialVersion { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public int Size { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public int Length { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public int Thickness { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public int Wide { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public string Model { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public string Color { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public string MaterialTG { get; set; }
+
+        ///// <summary>
+        ///// 
+        ///// </summary>
+        //[PropertyValidate("", NotNullAndEmpty = true)]
+        //public string Spare1 { get; set; }
+
+        ///// <summary>
+        ///// 
+        ///// </summary>
+        //[PropertyValidate("", NotNullAndEmpty = true)]
+        //public string Spare2 { get; set; }
+
+        ///// <summary>
+        ///// 
+        ///// </summary>
+        //[PropertyValidate("", NotNullAndEmpty = true)]
+        //public string Spare3 { get; set; }
+
+        ///// <summary>
+        ///// 
+        ///// </summary>
+        //[PropertyValidate("", NotNullAndEmpty = true)]
+        //public string Spare4 { get; set; }
+
+        ///// <summary>
+        ///// 
+        ///// </summary>
+        //[PropertyValidate("", NotNullAndEmpty = true)]
+        //public string Spare5 { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public int State { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public string InvOrgId { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public int OperateType { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public string UserDef01 { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public string UserDef04 { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public int IsCheck { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("", NotNullAndEmpty = true)]
+        public string WaId { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/PurchaseOrderModel.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/PurchaseOrderModel.cs"
index f7789c8..be24ab9 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/PurchaseOrderModel.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/PurchaseOrderModel.cs"
@@ -11,23 +11,7 @@
 
 namespace WIDESEA_DTO
 {
-    [ModelValidate]
-    public class Root
-    {
-        /// <summary>
-        /// 
-        /// </summary>
-        public string From { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        public string DateTime { get; set; }
-        /// <summary>
-        /// 
-        /// </summary>
-        [PropertyValidate("鐗╂枡鍒楄〃", NotNullAndEmpty = true)]
-        public PurchaseOrderModel Content { get; set; }
-    }
+    
     /// <summary>
     /// 閲囪喘鍗曟ā鍨�
     /// </summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ReceiveOrderModel.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ReceiveOrderModel.cs"
deleted file mode 100644
index dc93238..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/ReceiveOrderModel.cs"
+++ /dev/null
@@ -1,137 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace WIDESEA_DTO
-{
-    /// <summary>
-    /// 
-    /// </summary>
-    public class ReceiveOrderModel
-    {
-        /// <summary>
-        /// 鎿嶄綔绫诲瀷
-        /// </summary>
-        public int Way { get; set; }
-
-        /// <summary>
-        /// WMS涓诲仴鍊�
-        /// </summary>
-        public string UniqueTag { get; set; }
-
-        /// <summary>
-        /// 鏀惰揣鍗曞彿
-        /// </summary>
-        public string Code { get; set; }
-
-        /// <summary>
-        /// 鍗曟嵁绫诲瀷
-        /// </summary>
-        public string Type { get; set; }
-
-        /// <summary>
-        /// 鍏徃浠e彿
-        /// </summary>
-        public string CompanyId { get; set; } = "CompanyId";
-
-        /// <summary>
-        /// 宸ュ巶浠e彿
-        /// </summary>
-        public string PlantsId { get; set; } = "PlantsId";
-
-        /// <summary>
-        /// 瀹㈡埛浠e彿
-        /// </summary>
-        public string CustomerId { get; set; } = "";
-
-        /// <summary>
-        /// 渚涘簲鍟嗕唬鍙�
-        /// </summary>
-        public string SuppliersId { get; set; } = "";
-
-        /// <summary>
-        /// 鏀惰揣鏃ユ湡
-        /// </summary>
-        public DateTime ReceiveDate { get; set; }
-
-        /// <summary>
-        /// 閫佽揣鍗曞彿
-        /// </summary>
-        public string DeliveryCode { get; set; } = "/";
-
-        /// <summary>
-        /// 浠撳簱浠e彿
-        /// </summary>
-        public string WarehouseCode { get; set; } = "";
-
-        /// <summary>
-        /// 鍒涘缓浜轰唬鍙�
-        /// </summary>
-        public string CreatorId { get; set; } = "";
-
-        /// <summary>
-        /// 鍒涘缓鏃堕棿
-        /// </summary>
-        public DateTime EndDate { get; set; }
-    }
-
-    public class RecevieOrderDetailModel
-    {
-        /// <summary>
-        /// 閲囪喘鍗曞彿
-        /// </summary>
-        public string PurchaseOrderCode { get; set; }
-
-        /// <summary>
-        /// 閲囪喘鏄庣粏琛屽彿
-        /// </summary>
-        public int PurchaseOrderSerno { get; set; }
-
-        /// <summary>
-        /// 鏀惰揣鏄庣粏琛屽彿
-        /// </summary>
-        public int Serno { get; set; }
-
-        /// <summary>
-        /// 鏉愭枡缂栫爜
-        /// </summary>
-        public string MaterialsId { get; set; }
-
-        /// <summary>
-        /// 鏀惰揣鏁伴噺
-        /// </summary>
-        public float QtyReceived { get; set; }
-
-        /// <summary>
-        /// 鏀惰揣鎵规
-        /// </summary>
-        public string Lotno { get; set; }
-
-        /// <summary>
-        /// 渚涘簲鍟嗘壒娆�
-        /// </summary>
-        public string Supplotno { get; set; }
-
-        /// <summary>
-        /// 鏄惁瑕佹楠�
-        /// </summary>
-        public int IfInspection { get; set; }
-
-        /// <summary>
-        /// 鍚◣浠锋牸
-        /// </summary>
-        public double PriceInTax { get; set; } = 0;
-
-        /// <summary>
-        /// 绋庣巼
-        /// </summary>
-        public string Taxrate { get; set; } = "";
-
-        /// <summary>
-        /// 甯佸埆缂栫爜
-        /// </summary>
-        public string Currcode { get; set; } = "";
-    }
-}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/Root.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/Root.cs"
new file mode 100644
index 0000000..6307243
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/ERP/Root.cs"
@@ -0,0 +1,27 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+
+namespace WIDESEA_DTO.ERP
+{
+    [ModelValidate]
+    public class Root<T>
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string From { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        public string DateTime { get; set; }
+        /// <summary>
+        /// 
+        /// </summary>
+        [PropertyValidate("鍐呭", NotNullAndEmpty = true)]
+        public T Content { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IBasicService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IBasicService.cs"
index e26c28c..3bdd8dc 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IBasicService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IBasicService.cs"
@@ -9,11 +9,24 @@
 {
     public interface IBasicService: IDependency
     {
+        /// <summary>
+        /// 璐т綅涓氬姟灞�
+        /// </summary>
         ILocationInfoService LocationInfoService { get; }
 
+        /// <summary>
+        /// 鐗╂枡涓氬姟灞�
+        /// </summary>
         IMaterielInfoService MaterielInfoService { get; }
 
+        /// <summary>
+        /// 浠撳簱涓氬姟灞�
+        /// </summary>
         IWarehouseService WarehouseService { get; }
 
+        /// <summary>
+        /// 渚涘簲鍟嗕笟鍔″眰
+        /// </summary>
+        ISupplierInfoService SupplierInfoService { get; }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielInfoService.cs"
index 222b217..8ac58bb 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielInfoService.cs"
@@ -6,6 +6,7 @@
 using WIDESEA_Core;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_DTO.Basic;
+using WIDESEA_DTO.ERP;
 using WIDESEA_IBasicRepository;
 using WIDESEA_Model.Models;
 
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs"
index 71cd415..e60bbc5 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs"
@@ -39,6 +39,12 @@
         }
 
         private static object _rowNoLocker = new object();
+        /// <summary>
+        /// 鎵爜娣诲姞鏀惰揣鍗曟槑缁嗭紙鍗曚釜锛�
+        /// </summary>
+        /// <param name="serNum">鐗╂枡鐮�</param>
+        /// <param name="orderNo">鏀惰揣鍗曞彿</param>
+        /// <returns></returns>
         public WebResponseContent AddReceiveOrderDetail(string serNum, string orderNo)
         {
             try
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielInfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielInfo.cs"
index 3d1c42b..3a890ea 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielInfo.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielInfo.cs"
@@ -116,7 +116,10 @@
         [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "澶囨敞")]
         public string Remark { get; set; }
 
-        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "浠撳簱缂栧彿")]
-        public string WarehouseId { get; set; }
+        /// <summary>
+        /// 浠撳簱缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱缂栧彿")]
+        public int WarehouseId { get; set; }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs"
index 48ed393..4fd4a00 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs"
@@ -47,7 +47,7 @@
         /// <param name="model"></param>
         /// <returns></returns>
         [HttpPost, Route("ReceivePurchaseOrderSingle"), AllowAnonymous, MethodParamsValidate]
-        public ErpResponseContent ReceivePurchaseOrder([FromBody] Root model)
+        public ErpResponseContent ReceivePurchaseOrder([FromBody] Root<PurchaseOrderModel> model)
         {
             WebResponseContent content = _purchaseOrderService.ReceivePurchaseOrder(model.Content);
             if (content.Status) return Instance.OK();
@@ -60,7 +60,7 @@
         /// <param name="model"></param>
         /// <returns></returns>
         [HttpPost, Route("ReceiveSupplier"), AllowAnonymous, MethodParamsValidate]
-        public ErpResponseContent ReceiveSupplier([FromBody] Supplier model)
+        public ErpResponseContent ReceiveSupplier([FromBody] Root<SupplierDTO> model)
         {
             WebResponseContent content = _supplierInfoService.ReceiveSupplier(model.Content);
             if (content.Status) return Instance.OK();
@@ -73,9 +73,9 @@
         /// <param name="model"></param>
         /// <returns></returns>
         [HttpPost, Route("ReceiveMaterial"), AllowAnonymous, MethodParamsValidate]
-        public ErpResponseContent ReceiveMaterial([FromBody] MaterielInfo model)
+        public ErpResponseContent ReceiveMaterial([FromBody] Root<MaterielInfoDTO> model)
         {
-             WebResponseContent content = _materielInfoService.ReceiveMaterial(model.Content);
+            WebResponseContent content = _materielInfoService.ReceiveMaterial(model.Content);
             if (content.Status) return Instance.OK();
             else return Instance.Error(content.Message);
         }
@@ -86,9 +86,9 @@
         /// <param name="erpOutOrder"></param>
         /// <returns></returns>
         [HttpPost, Route("ReceiveOutOrder"), AllowAnonymous, MethodParamsValidate]
-        public ErpResponseContent ReceiveOutOrder([FromBody] ErpOutOrder erpOutOrder)
+        public ErpResponseContent ReceiveOutOrder([FromBody] Root<ErpOutOrderDTO> erpOutOrder)
         {
-             WebResponseContent content = _outboundOrderService.ReceiveOutOrder(erpOutOrder.Content);
+            WebResponseContent content = _outboundOrderService.ReceiveOutOrder(erpOutOrder.Content);
             if (content.Status) return Instance.OK();
             else return Instance.Error(content.Message);
         }

--
Gitblit v1.9.3