From 5af11cc200dd5ebe474b9c0475883b0e6d1e3759 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期三, 11 三月 2026 10:00:49 +0800
Subject: [PATCH] 重构整个项目:改进代码质量和架构

---
 Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs                         |   33 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/WebResponseContent.cs                |    4 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs                |   62 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/Task_HtyService.cs                   |   20 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/DictionaryDTO.cs                          |    8 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderService.cs            |   17 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/InnerCodeDTO.cs                            |   26 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/GradingMachine/OutPutDto.cs                      |   10 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs                 |   23 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_UserController.cs   |   26 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs              |   19 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/StockQuantityChangeRecordService.cs    |   14 
 Code/WCS/WIDESEAWCS_Server/.claude/settings.local.json                                  |    6 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/App.cs                                          |   26 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/CachePointGroupDTO.cs                      |   39 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/IRecordService.cs                     |   18 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/VueDictionaryDTO.cs                       |   15 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs                |   18 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs                       |   16 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs                   |   28 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs                         |   28 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockViewDTO.cs                            |    2 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderDetailService.cs        |   14 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IBasicService.cs                       |   18 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/WhetherEnum.cs                     |   22 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs              |   17 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs     |   10 
 Code/WMS/WIDESEA_WMSServer/.claude/settings.local.json                                  |   38 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/UtilConvert.cs                           |    8 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs                     |   26 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/MaterielCodeInfoService.cs              |   24 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/MaterielInfoService.cs                  |   22 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/UserPermissions.cs                        |   22 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderService.cs                  |   11 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs                     |    2 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs                  |  213 +++-
 Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockService.cs                       |   43 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs        |   16 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDAController.cs               |  102 +
 Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/GradingMachine/GradingMachineInputDto.cs         |   34 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/RecordService.cs                       |   29 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/WarehouseService.cs                     |   40 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IPalletCodeInfoService.cs              |   16 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/ILocationStatusChangeRecordService.cs |   15 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderDetailService.cs          |   23 
 Code/WMS/WIDESEA_WMSServer/REFACTOR_PLAN.md                                             |  738 +++++++++++++++++
 Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs                                 |   42 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderDetailService.cs      |   19 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs                     |   30 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs                     |   29 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/ActionDTO.cs                              |   18 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/ApiAuthorizeFilter.cs                    |    6 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetailService.cs               |   30 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundService.cs                   |   18 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs                   |   38 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs              |   22 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/ICacheService.cs                         |    4 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielInfoService.cs                |   15 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/IStockQuantityChangeRecordService.cs  |   15 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielCodeInfoService.cs            |   15 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoDetailService.cs             |    6 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/PalletCodeInfoService.cs                |   26 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Task/UpdateTaskDto.cs                            |   11 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_Model/LoginInfo.cs                                   |   19 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/LocationStatusChangeRecordService.cs   |   12 
 Code/WCS/WIDESEAWCS_Server/docs/superpowers/specs/2026-03-11-wcs-ddd-refactor-design.md |   98 ++
 Code/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderService.cs                    |   17 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderResultService.cs            |   11 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs                    |   11 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseController/ApiBaseController.cs             |   20 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs  |   16 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IWarehouseService.cs                   |   14 
 72 files changed, 1,948 insertions(+), 575 deletions(-)

diff --git a/Code/WCS/WIDESEAWCS_Server/.claude/settings.local.json b/Code/WCS/WIDESEAWCS_Server/.claude/settings.local.json
index 5970394..cdf1c69 100644
--- a/Code/WCS/WIDESEAWCS_Server/.claude/settings.local.json
+++ b/Code/WCS/WIDESEAWCS_Server/.claude/settings.local.json
@@ -4,7 +4,11 @@
       "Bash(dotnet new:*)",
       "Bash(dotnet add:*)",
       "Bash(dotnet test:*)",
-      "Bash(dotnet build WIDESEAWCS_Server.sln --nologo -v q)"
+      "Bash(dotnet build WIDESEAWCS_Server.sln --nologo -v q)",
+      "Bash(find . -maxdepth 2 -type f -name \"*.csproj\" 2>/dev/null | head -20)",
+      "Bash(find . -name \"*.md\" -o -name \"docs\" -type d 2>/dev/null | head -20)",
+      "Bash(ls -la WIDESEAWCS_Core/*.cs 2>/dev/null | wc -l)",
+      "Bash(find . -name \"*.cs\" -not -path \"*/bin/*\" -not -path \"*/obj/*\" -exec wc -l {} + | tail -1)"
     ]
   }
 }
diff --git a/Code/WCS/WIDESEAWCS_Server/docs/superpowers/specs/2026-03-11-wcs-ddd-refactor-design.md b/Code/WCS/WIDESEAWCS_Server/docs/superpowers/specs/2026-03-11-wcs-ddd-refactor-design.md
index 2dfea6f..881505e 100644
--- a/Code/WCS/WIDESEAWCS_Server/docs/superpowers/specs/2026-03-11-wcs-ddd-refactor-design.md
+++ b/Code/WCS/WIDESEAWCS_Server/docs/superpowers/specs/2026-03-11-wcs-ddd-refactor-design.md
@@ -79,6 +79,15 @@
     // 棰嗗煙浜嬩欢
     private List<IDomainEvent> _domainEvents = new();
 
+    // 鍏叡灞炴�ц闂櫒
+    public DeviceId Id => _id;
+    public DeviceName Name => _name;
+    public DeviceType Type => _type;
+    public DeviceStatus Status => _status;
+    public DeviceAddress Address => _address;
+    public DateTime LastConnectedAt => _lastConnectedAt;
+    public DateTime LastHeartbeatAt => _lastHeartbeatAt;
+
     // 琛屼负鏂规硶
     public void Connect()
     {
@@ -112,6 +121,12 @@
             _properties.Add(DeviceProperty.Create(key, value));
     }
 
+    // 鐘舵�佽缃柟娉曪紙渚涚姸鎬佹満浣跨敤锛�
+    internal void SetStatus(DeviceStatus status)
+    {
+        _status = status;
+    }
+
     public IReadOnlyCollection<IDomainEvent> GetDomainEvents() => _domainEvents.AsReadOnly();
     public void ClearDomainEvents() => _domainEvents.Clear();
 }
@@ -124,7 +139,9 @@
     private List<DeviceId> _deviceIds;
     private GroupStrategy _strategy;
     private int _currentIndex;
+    private static readonly Random _random = Random.Shared;
 
+// 璁惧缁勮仛鍚堟牴锛堢户缁級
     public void AddDevice(DeviceId deviceId)
     {
         if (_deviceIds.Contains(deviceId))
@@ -148,7 +165,7 @@
             case GroupStrategy.RoundRobin:
                 return _deviceIds[_currentIndex++ % _deviceIds.Count];
             case GroupStrategy.Random:
-                return _deviceIds[new Random().Next(_deviceIds.Count)];
+                return _deviceIds[_random.Next(_deviceIds.Count)];
             default:
                 return _deviceIds[0];
         }
@@ -342,7 +359,84 @@
 }
 ```
 
-### 2.4 浠撳偍鎺ュ彛璁捐
+### 2.4 鍩虹璁炬柦绫诲畾涔�
+
+```csharp
+// 鑱氬悎鏍瑰熀绫�
+public abstract class AggregateRoot<TId>
+{
+    public TId Id { get; protected set; }
+    public int Version { get; private set; }
+    private readonly List<IDomainEvent> _domainEvents = new();
+
+    protected AggregateRoot() { }
+
+    protected AggregateRoot(TId id)
+    {
+        Id = id;
+    }
+
+    public IReadOnlyCollection<IDomainEvent> GetDomainEvents() => _domainEvents.AsReadOnly();
+    public void ClearDomainEvents() => _domainEvents.Clear();
+
+    protected void AddDomainEvent(IDomainEvent domainEvent)
+    {
+        _domainEvents.Add(domainEvent);
+    }
+}
+
+// 棰嗗煙浜嬩欢鎺ュ彛
+public interface IDomainEvent
+{
+    DateTime OccurredOn { get; }
+}
+
+// 棰嗗煙浜嬩欢鍩虹被
+public abstract record DomainEvent : IDomainEvent
+{
+    public DateTime OccurredOn { get; init; } = DateTime.UtcNow;
+}
+
+// 棰嗗煙浜嬩欢璋冨害鍣ㄦ帴鍙�
+public interface IDomainEventDispatcher
+{
+    Task Dispatch(IDomainEvent domainEvent);
+    Task DispatchAsync(IEnumerable<IDomainEvent> domainEvents);
+}
+
+// 浠诲姟闃熷垪鎺ュ彛
+public interface ITaskQueue
+{
+    Task Enqueue<T>(T item) where T : class;
+    Task<T> Dequeue<T>() where T : class;
+    Task<int> Count();
+}
+
+// 浠撳偍鍩烘帴鍙�
+public interface IRepository<TEntity, TId> where TEntity : AggregateRoot<TId>
+{
+    Task<TEntity?> GetById(TId id);
+    Task Add(TEntity entity);
+    Task Update(TEntity entity);
+    Task Delete(TId id);
+}
+
+// 宸ヤ綔鍗曞厓鎺ュ彛
+public interface IUnitOfWork : IDisposable
+{
+    ITransaction BeginTransaction();
+    Task Commit();
+    Task Rollback();
+}
+
+public interface ITransaction : IDisposable
+{
+    Task Commit();
+    Task Rollback();
+}
+```
+
+### 2.5 浠撳偍鎺ュ彛璁捐
 
 ```csharp
 // 璁惧浠撳偍鎺ュ彛
diff --git a/Code/WMS/WIDESEA_WMSServer/.claude/settings.local.json b/Code/WMS/WIDESEA_WMSServer/.claude/settings.local.json
index 9498faa..37a9ff7 100644
--- a/Code/WMS/WIDESEA_WMSServer/.claude/settings.local.json
+++ b/Code/WMS/WIDESEA_WMSServer/.claude/settings.local.json
@@ -2,7 +2,43 @@
   "permissions": {
     "allow": [
       "Bash(claude plugin:*)",
-      "Bash(cp:*)"
+      "Bash(cp:*)",
+      "Bash(xargs wc:*)",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_Common/WIDESEA_Common.csproj --no-incremental 2>&1 | head -50)",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_Core/WIDESEA_Core.csproj --no-incremental 2>&1 | head -50)",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_Model/WIDESEA_Model.csproj --no-incremental 2>&1 | head -50)",
+      "Bash(find /e/杩呴浄涓嬭浇/WIDESEA_WMSServer -name \"*.cs\" -not -path \"*/bin/*\" -not -path \"*/obj/*\" -not -path \"*/.vs/*\" | xargs grep -l \"console.log\\\\|Console.WriteLine\\\\|debugger\" | head -10)",
+      "Bash(find /e/杩呴浄涓嬭浇/WIDESEA_WMSServer -name \"*.cs\" -not -path \"*/bin/*\" -not -path \"*/obj/*\" -not -path \"*/.vs/*\" | xargs grep -h \"catch\\\\s*{\\\\s*}\" | wc -l)",
+      "Bash(find /e/杩呴浄涓嬭浇/WIDESEA_WMSServer -name \"*.cs\" -not -path \"*/bin/*\" -not -path \"*/obj/*\" -not -path \"*/.vs/*\" -exec grep -l \"public\\\\s+.*\\\\\\(\\\\\\)\" {} \\\\; | wc -l)",
+      "Bash(find /e/杩呴浄涓嬭浇/WIDESEA_WMSServer -name \"*.cs\" -not -path \"*/bin/*\" -not -path \"*/obj/*\" -not -path \"*/.vs/*\" -exec grep -l \"new\\\\s+List\\\\|new\\\\s+Dictionary\" {} \\\\; | wc -l)",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_IBasicService/WIDESEA_IBasicService.csproj)",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_BasicService/WIDESEA_BasicService.csproj)",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_BasicService/WIDESEA_BasicService.csproj 2>&1 | grep -i \"error\")",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_Common/WIDESEA_Common.csproj --no-incremental 2>&1)",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_Core/WIDESEA_Core.csproj --no-incremental 2>&1)",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_Model/WIDESEA_Model.csproj --no-incremental 2>&1)",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_Core/WIDESEA_Core.csproj --no-incremental 2>&1 | tail -20)",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_IInboundService/WIDESEA_IInboundService.csproj 2>&1 | grep -i \"error\")",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_InboundService/WIDESEA_InboundService.csproj 2>&1 | grep -i \"error\")",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_Common/WIDESEA_Common.csproj --no-incremental 2>&1 | grep -E \"\\(閿欒|閿欒|宸叉垚鍔熺敓鎴恷warning\\)\" | tail -10)",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_IOutboundService/WIDESEA_IOutboundService.csproj WIDESEA_OutboundService/WIDESEA_OutboundService.csproj 2>&1 | grep -i \"error\")",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_Core/WIDESEA_Core.csproj --no-incremental 2>&1 | grep -E \"\\(閿欒|error|宸叉垚鍔熺敓鎴恷warnings\\)\" | tail -10)",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_Model/WIDESEA_Model.csproj --no-incremental 2>&1 | grep -E \"\\(閿欒|error|宸叉垚鍔熺敓鎴恷warnings\\)\" | tail -10)",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_OutboundService/WIDESEA_OutboundService.csproj 2>&1 | grep -i \"error\")",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_StockService/WIDESEA_StockService.csproj 2>&1 | grep -i \"error\")",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_ICheckService/WIDESEA_ICheckService.csproj WIDESEA_CheckService/WIDESEA_CheckService.csproj 2>&1 | grep -i \"error\")",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_CheckService/WIDESEA_CheckService.csproj 2>&1 | grep -i \"error\")",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_IRecordRecordService/WIDESEA_IRecordService.csproj WIDESEA_RecordService/WIDESEA_RecordService.csproj 2>&1 | grep -i \"error\")",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_RecordService/WIDESEA_RecordService.csproj 2>&1 | grep -i \"error\")",
+      "Bash(cd \"E:\\\\杩呴浄涓嬭浇\\\\WIDESEA_WMSServer\" && dotnet build WIDESEA_TaskInfoService/WIDESEA_TaskInfoService.csproj 2>&1 | grep -i \"error\")",
+      "Bash(cd \"E:/杩呴浄涓嬭浇/WIDESEA_WMSServer/WIDESEA_DTO\" && mv GradingMachine/OutPutDto.cs GradingMachine/OutputDto.cs && mv GradingMachine/InputDto.cs GradingMachine/GradingMachineInputDto.cs)",
+      "Bash(cd \"E:/杩呴浄涓嬭浇/WIDESEA_WMSServer\" && dotnet build WIDESEA_WMSServer/WIDESEA_WMSServer.csproj --configuration Debug 2>&1 | head -100)",
+      "Bash(cd \"E:/杩呴浄涓嬭浇/WIDESEA_WMSServer\" && dotnet build --configuration Debug 2>&1 | tail -50)",
+      "Bash(cd \"E:/杩呴浄涓嬭浇/WIDESEA_WMSServer\" && dotnet build --configuration Debug 2>&1 | tail -30)",
+      "Bash(cd \"E:/杩呴浄涓嬭浇/WIDESEA_WMSServer\" && dotnet build --configuration Debug 2>&1 | tail -20)",
+      "Bash(cd \"E:/杩呴浄涓嬭浇/WIDESEA_WMSServer\" && dotnet build --configuration Debug 2>&1 | tail -25)",
+      "Bash(cd \"E:/杩呴浄涓嬭浇/WIDESEA_WMSServer\" && dotnet build --configuration Debug 2>&1 | grep -A 2 -B 2 \"error CS0\")",
+      "Bash(cd \"E:/杩呴浄涓嬭浇/WIDESEA_WMSServer\" && dotnet build --configuration Debug 2>&1 | tail -10)"
     ]
   }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/REFACTOR_PLAN.md b/Code/WMS/WIDESEA_WMSServer/REFACTOR_PLAN.md
new file mode 100644
index 0000000..26c023a
--- /dev/null
+++ b/Code/WMS/WIDESEA_WMSServer/REFACTOR_PLAN.md
@@ -0,0 +1,738 @@
+# WIDESEA WMS 绯荤粺閲嶆瀯璁″垝
+
+## 椤圭洰姒傚喌
+
+### 椤圭洰鍩烘湰淇℃伅
+- **椤圭洰鍚嶇О**: WIDESEA_WMSServer 浠撳簱绠$悊绯荤粺
+- **椤圭洰绫诲瀷**: ASP.NET Core 6.0 Web API
+- **浠g爜瑙勬ā**: 351涓狢#鏂囦欢,绾�912琛屼唬鐮�
+- **妯″潡鏁伴噺**: 20涓ā鍧�
+- **鏋舵瀯妯″紡**: 鍒嗗眰鏋舵瀯 (Model-DTO-Repository-Service-API)
+
+### 椤圭洰缁撴瀯
+```
+WIDESEA_WMSServer/          # 涓籄PI椤圭洰
+WIDESEA_Model/              # 鏁版嵁妯″瀷灞�
+WIDESEA_DTO/                # 鏁版嵁浼犺緭瀵硅薄灞�
+WIDESEA_Core/               # 鏍稿績鍩虹鏋舵瀯灞�
+  鈹溾攢鈹� BaseRepository/        # 鏁版嵁浠撳偍灞�
+  鈹溾攢鈹� BaseServices/         # 鍩虹鏈嶅姟灞�
+  鈹溾攢鈹� DB/                  # 鏁版嵁搴撻厤缃�
+  鈹溾攢鈹� Helper/              # 杈呭姪宸ュ叿绫�
+  鈹溾攢鈹� Utilities/           # 宸ュ叿绫�
+  鈹溾攢鈹� Middlewares/         # 涓棿浠�
+  鈹斺攢鈹� ...
+WIDESEA_Common/            # 鍏叡鏋氫妇鍜屽父閲�
+WIDESEA_BasicService/      # 鍩虹淇℃伅鏈嶅姟瀹炵幇
+WIDESEA_InboundService/    # 鍏ュ簱鏈嶅姟瀹炵幇
+WIDESEA_OutboundService/   # 鍑哄簱鏈嶅姟瀹炵幇
+WIDESEA_StockService/      # 搴撳瓨鏈嶅姟瀹炵幇
+WIDESEA_CheckService/       # 鐩樼偣鏈嶅姟瀹炵幇
+WIDESEA_SystemService/      # 绯荤粺鏈嶅姟瀹炵幇
+WIDESEA_RecordService/      # 璁板綍鏈嶅姟瀹炵幇
+WIDESEA_TaskInfoService/    # 浠诲姟淇℃伅鏈嶅姟瀹炵幇
+```
+
+---
+
+## 鍙戠幇鐨勯棶棰樻竻鍗�
+
+### 涓�銆侀珮浼樺厛绾ч棶棰� (P0 - 绔嬪嵆澶勭悊)
+
+#### 1.1 绌哄紓甯告崟鑾峰潡 (涓ラ噸)
+**闂鎻忚堪**: 澶氬浠g爜涓瓨鍦ㄧ┖鐨刢atch鍧�,浼氶殣钘忓紓甯稿鑷撮毦浠ヨ皟璇�
+**褰卞搷鑼冨洿**: 7涓枃浠�
+**绀轰緥浣嶇疆**:
+- `WIDESEA_Core/BaseServices/ServiceBase.cs:114` - 绌篶atch鍧�
+- `WIDESEA_Core/Helper/ObjectExtension.cs:51-54` - 绌篶atch鍧�
+- `WIDESEA_Core/DB/BaseDBConfig.cs:32-34` - 绌篶atch鍧�
+- `WIDESEA_Core/BaseModels/PageDataOptions.cs` - 绌篶atch鍧�
+- `WIDESEA_Core/Middlewares/ApiLogMiddleware.cs` - 绌篶atch鍧�
+- `WIDESEA_Core/Utilities/EntityProperties.cs` - 绌篶atch鍧�
+- `WIDESEA_SystemService/Sys_MenuService.cs` - 绌篶atch鍧�
+- `WIDESEA_SystemService/Sys_UserService.cs` - 绌篶atch鍧�
+
+**閲嶆瀯寤鸿**:
+```csharp
+// 涓嶅ソ鐨勫仛娉�
+try { ... } catch { }
+
+// 濂界殑鍋氭硶
+try
+{
+    // 涓氬姟閫昏緫
+}
+catch (Exception ex)
+{
+    _logger.LogError(ex, "鎿嶄綔澶辫触");
+    throw;
+}
+```
+
+**棰勪及宸ヤ綔閲�**: 2浜哄ぉ
+
+---
+
+#### 1.2 鍛藉悕瑙勮寖閿欒 (涓ラ噸)
+**闂鎻忚堪**: 鍏抽敭瀹炰綋绫诲瓨鍦ㄦ嫾鍐欓敊璇�
+**褰卞搷鑼冨洿**: 鍩虹瀹炰綋灞�
+**绀轰緥浣嶇疆**:
+- `WIDESEA_Core/DB/Models/BaseEntity.cs:44` - `Creater` 搴斾负 `Creator`
+- 璇ユ嫾鍐欓敊璇湪鏁版嵁搴撴槧灏勩�佸簭鍒楀寲銆佸鍏ュ鍑虹瓑澶氬浣跨敤
+
+**閲嶆瀯寤鸿**:
+1. 淇 `BaseEntity.Creater` 涓� `Creator`
+2. 娣诲姞鏁版嵁搴撳垪鍒悕鏄犲皠淇濇寔鍏煎鎬�
+3. 鍏ㄥ眬鎼滅储鏇挎崲鎵�鏈夊紩鐢�
+
+**棰勪及宸ヤ綔閲�**: 3浜哄ぉ
+
+---
+
+#### 1.3 鏃犻檺寰幆绾跨▼椋庨櫓 (涓ラ噸)
+**闂鎻忚堪**: Logger绫讳娇鐢� `while(true)` 鏃犻檺寰幆,缂轰箯鍙栨秷鏈哄埗
+**褰卞搷浣嶇疆**: `WIDESEA_Core/LogHelper/Logger.cs:32-66`
+
+**閲嶆瀯寤鸿**:
+```csharp
+// 浣跨敤CancellationToken鏇夸唬while(true)
+private readonly CancellationTokenSource _cts = new();
+
+static async void StartWriteLog()
+{
+    try
+    {
+        while (!_cts.IsCancellationRequested)
+        {
+            // 澶勭悊閫昏緫
+            await Task.Delay(5000, _cts.Token);
+        }
+    }
+    catch (OperationCanceledException)
+    {
+        // 姝e父鍙栨秷
+    }
+}
+
+// 娣诲姞Dispose鏂规硶閲婃斁璧勬簮
+public static void Dispose() => _cts.Cancel();
+```
+
+**棰勪及宸ヤ綔閲�**: 1浜哄ぉ
+
+---
+
+#### 1.4 TODO娉ㄩ噴鏈畬鎴� (楂�)
+**闂鎻忚堪**: 浠g爜涓瓨鍦ㄦ湭瀹屾垚鐨凾ODO娉ㄩ噴
+**褰卞搷鑼冨洿**: 5涓枃浠�
+**绀轰緥浣嶇疆**:
+- `WIDESEA_Core/Helper/HTTP/HttpClientHelper.cs:181,211,222` - TODO:鏃ュ織璁板綍
+- `WIDESEA_WMSServer/Program.cs` - TODO椤�
+
+**閲嶆瀯寤鸿**: 瀹屾垚鎵�鏈塗ODO鏍囪鐨勫姛鑳芥垨鍒犻櫎鏃犵敤鐨凾ODO
+
+**棰勪及宸ヤ綔閲�**: 1浜哄ぉ
+
+---
+
+### 浜屻�佷腑浼樺厛绾ч棶棰� (P1 - 杩戞湡澶勭悊)
+
+#### 2.1 浠g爜閲嶅涓ラ噸 (楂�)
+**闂鎻忚堪**: RepositoryBase鍜孲erviceBase涓瓨鍦ㄥぇ閲忛噸澶嶄唬鐮�
+
+**RepositoryBase閲嶅**:
+- 鍚屾鏂规硶涓庡紓姝ユ柟娉曢�昏緫瀹屽叏閲嶅 (绾�50涓柟娉�)
+- 绀轰緥: `QureyDataById` 鍜� `QureyDataByIdAsync` 鍙槸璋冪敤寮傛鐗堟湰
+
+**ServiceBase閲嶅**:
+- CRUD鎿嶄綔浠g爜閲嶅
+- 鍒嗛〉鏌ヨ閫昏緫閲嶅
+- 瀵煎叆瀵煎嚭閫昏緫閲嶅
+
+**閲嶆瀯寤鸿**:
+1. 浣跨敤婧愪唬鐮佺敓鎴愬櫒鑷姩鐢熸垚寮傛鏂规硶
+2. 鎻愬彇鍏叡閫昏緫鍒版墿灞曟柟娉�
+3. 浣跨敤Template Method妯″紡鍑忓皯閲嶅
+
+**棰勪及宸ヤ綔閲�**: 5浜哄ぉ
+
+---
+
+#### 2.2 鏂规硶杩囬暱 (涓�)
+**闂鎻忚堪**: 鍗曚釜鏂规硶琛屾暟杩囧,鍙鎬у樊
+
+**绀轰緥**:
+- `ServiceBase.GetPageData()` - 43琛�
+- `ServiceBase.ValidatePageOptions()` - 52琛�
+- `ServiceBase.GetWhereExpression()` - 121琛�
+- `ServiceBase.UpdateData()` - 63琛�
+
+**閲嶆瀯寤鸿**: 灏嗗ぇ鏂规硶鎷嗗垎涓哄皬鏂规硶,姣忎釜鏂规硶涓嶈秴杩�20琛�
+
+**棰勪及宸ヤ綔閲�**: 4浜哄ぉ
+
+---
+
+#### 2.3 娣风敤JSON搴忓垪鍖栧簱 (涓�)
+**闂鎻忚堪**: 鍚屾椂浣跨敤 Newtonsoft.Json 鍜� System.Text.Json
+
+**褰卞搷鑼冨洿**: 16涓枃浠舵贩鐢�
+**绀轰緥**:
+- `HttpClientHelper.cs` 浣跨敤 Newtonsoft.Json
+- `ServiceBase.cs` 浣跨敤 Newtonsoft.Json
+- `Program.cs` 浣跨敤 System.Text.Json
+
+**閲嶆瀯寤鸿**: 缁熶竴浣跨敤 System.Text.Json (.NET Core瀹樻柟鎺ㄨ崘)
+
+**棰勪及宸ヤ綔閲�**: 3浜烘棩
+
+---
+
+#### 2.4 杩囧害浣跨敤dynamic绫诲瀷 (涓�)
+**闂鎻忚堪**: 澶ч噺浣跨敤dynamic,闄嶄綆绫诲瀷瀹夊叏鍜孖DE鏀寔
+
+**绀轰緥浣嶇疆**:
+- `Logger.cs:19,151-169` - 浣跨敤dynamic浣滀负鏃ュ織瀵硅薄
+- `BaseDBConfig.cs:57` - 浣跨敤dynamic鎺ユ敹鏁版嵁搴撴煡璇㈢粨鏋�
+
+**閲嶆瀯寤鸿**:
+```csharp
+// 瀹氫箟鏄庣‘鐨勬棩蹇楀疄浣�
+public class LogEntry
+{
+    public DateTime BeginDate { get; set; }
+    public DateTime EndDate { get; set; }
+    public string RequestParam { get; set; }
+    public string ResponseParam { get; set; }
+    // ...
+}
+```
+
+**棰勪及宸ヤ綔閲�**: 2浜哄ぉ
+
+---
+
+#### 2.5 纭紪鐮佸瓧绗︿覆鍜岄瓟娉曟暟瀛� (涓�)
+**闂鎻忚堪**: 澶ч噺纭紪鐮佸��,缂轰箯甯搁噺瀹氫箟
+
+**绀轰緥**:
+- `Logger.cs:37` - 纭紪鐮�500 (鎵归噺鎻掑叆澶у皬)
+- `Logger.cs:42` - 纭紪鐮�5000 (杞闂撮殧)
+- `PDAController.cs:79` - 纭紪鐮佹枃浠跺悕鏍煎紡
+- 鍚勭璺緞瀛楃涓茬‖缂栫爜
+
+**閲嶆瀯寤鸿**: 鎻愬彇涓哄父閲忔垨閰嶇疆椤�
+
+```csharp
+public static class LogConstants
+{
+    public const int BatchSize = 500;
+    public const int FlushIntervalMs = 5000;
+}
+```
+
+**棰勪及宸ヤ綔閲�**: 2浜哄ぉ
+
+---
+
+#### 2.6 鍙嶅皠鎬ц兘寮�閿� (涓�)
+**闂鎻忚堪**: ServiceBase涓绻佷娇鐢ㄥ弽灏勮幏鍙栧睘鎬т俊鎭�
+
+**绀轰緥浣嶇疆**:
+- `ServiceBase.TProperties` - 姣忔閮介噸鏂拌幏鍙�
+- `ObjectExtension.DicToModel` - 浣跨敤鍙嶅皠璧嬪��
+
+**閲嶆瀯寤鸿**:
+1. 缂撳瓨 PropertyInfo
+2. 鑰冭檻浣跨敤缂栬瘧琛ㄨ揪寮忔浛浠e弽灏�
+3. 浣跨敤 Source Generator 鐢熸垚鏄犲皠浠g爜
+
+**棰勪及宸ヤ綔閲�**: 3浜哄ぉ
+
+---
+
+#### 2.7 娉ㄩ噴缂哄け (涓�)
+**闂鎻忚堪**: 澶ч噺鏂规硶缂哄皯XML鏂囨。娉ㄩ噴
+
+**缁熻**: 绾�50%鐨勫叕鍏辨柟娉曟病鏈夋敞閲�
+
+**绀轰緥**:
+- `RepositoryBase` 涓ぇ閮ㄥ垎鏂规硶缂哄皯娉ㄩ噴
+- `ServiceBase` 涓鏉傞�昏緫缂哄皯娉ㄩ噴
+- 涓氬姟鏈嶅姟灞傛柟娉曠己灏戞敞閲�
+
+**閲嶆瀯寤鸿**: 涓烘墍鏈夊叕鍏盇PI娣诲姞XML鏂囨。娉ㄩ噴
+
+```csharp
+/// <summary>
+/// 閫氳繃涓婚敭鏌ヨ鏁版嵁
+/// </summary>
+/// <param name="id">涓婚敭鍊�</param>
+/// <returns>鏌ヨ鍒扮殑瀹炰綋,鏈壘鍒拌繑鍥瀗ull</returns>
+public TEntity QueryById(object id) { ... }
+```
+
+**棰勪及宸ヤ綔閲�**: 5浜哄ぉ
+
+---
+
+### 涓夈�佷綆浼樺厛绾ч棶棰� (P2 - 闀挎湡浼樺寲)
+
+#### 3.1 澶氱鎴蜂唬鐮佽娉ㄩ噴 (浣�)
+**闂鎻忚堪**: RepositoryBase涓殑澶氱鎴锋灦鏋勪唬鐮佸叏閮ㄨ娉ㄩ噴
+
+**褰卞搷浣嶇疆**: `RepositoryBase.cs:24-55`
+
+**閲嶆瀯寤鸿**: 瑕佷箞鍒犻櫎鏃犵敤浠g爜,瑕佷箞瀹屾垚澶氱鎴峰姛鑳�
+
+**棰勪及宸ヤ綔閲�**: 2浜哄ぉ
+
+---
+
+#### 3.2 浠庡簱閰嶇疆浠g爜琚敞閲� (浣�)
+**闂鎻忚堪**: SqlsugarSetup涓殑璇诲啓鍒嗙閰嶇疆琚敞閲�
+
+**褰卞搷浣嶇疆**: `SqlsugarSetup.cs:66-119`
+
+**閲嶆瀯寤鸿**: 鍒犻櫎鎴栧惎鐢ㄨ鍐欏垎绂诲姛鑳�
+
+**棰勪及宸ヤ綔閲�**: 1浜哄ぉ
+
+---
+
+#### 3.3 缂哄皯鍗曞厓娴嬭瘯 (楂�)
+**闂鎻忚堪**: 椤圭洰涓畬鍏ㄦ病鏈夊崟鍏冩祴璇�
+
+**寤鸿**: 娣诲姞鏍稿績涓氬姟閫昏緫鐨勫崟鍏冩祴璇�
+
+**棰勪及宸ヤ綔閲�**: 10浜哄ぉ
+
+---
+
+#### 3.4 缂哄皯API鏂囨。 (涓�)
+**闂鎻忚堪**: 鍙緷璧朣wagger鑷姩鐢熸垚,缂哄皯璇︾粏鐨勪娇鐢ㄦ枃妗�
+
+**寤鸿**: 缂栧啓API浣跨敤鏂囨。鍜屾灦鏋勮璁℃枃妗�
+
+**棰勪及宸ヤ綔閲�**: 5浜哄ぉ
+
+---
+
+#### 3.5 Console.WriteLine鍦ㄧ敓浜т唬鐮� (浣�)
+**闂鎻忚堪**: 澶氬浣跨敤Console.WriteLine
+
+**绀轰緥浣嶇疆**:
+- `Logger.cs:64` - 寮傚父鏃惰緭鍑哄埌Console
+- `BaseDBConfig.cs:52` - SQL閿欒杈撳嚭鍒癈onsole
+- `SqlsugarSetup.cs:58-60` - SQL鎵撳嵃
+
+**閲嶆瀯寤鸿**: 浣跨敤姝e紡鐨勬棩蹇楁鏋�
+
+**棰勪及宸ヤ綔閲�**: 2浜哄ぉ
+
+---
+
+#### 3.6 璧勬簮閲婃斁涓嶅綋 (涓�)
+**闂鎻忚堪**: 閮ㄥ垎IDisposable璧勬簮鏈纭噴鏀�
+
+**绀轰緥**:
+- `Logger` 绫绘病鏈夊疄鐜癐Disposable
+- `HttpClientHelper` 鐨凷qlConnection鍙兘鏈噴鏀�
+
+**閲嶆瀯寤鸿**: 瀹炵幇IDisposable妯″紡
+
+**棰勪及宸ヤ綔閲�**: 2浜哄ぉ
+
+---
+
+## 閲嶆瀯浼樺厛绾ф帓搴�
+
+### 绗竴闃舵: 淇涓ラ噸闂 (棰勮10浜哄ぉ)
+1. 鉁� 淇鎵�鏈夌┖寮傚父鎹曡幏鍧� (2浜哄ぉ)
+2. 鉁� 淇鍛藉悕瑙勮寖閿欒 - Creater -> Creator (3浜哄ぉ)
+3. 鉁� 淇鏃犻檺寰幆绾跨▼椋庨櫓 (1浜哄ぉ)
+4. 鉁� 瀹屾垚鎴栨竻鐞員ODO娉ㄩ噴 (1浜哄ぉ)
+5. 鉁� 鍒犻櫎娉ㄩ噴鎺夌殑澶氫綑浠g爜 (2浜哄ぉ)
+6. 鉁� 浣跨敤缁熶竴鏃ュ織妗嗘灦鏇夸唬Console (1浜哄ぉ)
+
+### 绗簩闃舵: 鏀瑰杽浠g爜璐ㄩ噺 (棰勮19浜哄ぉ)
+7. 鉁� 鍑忓皯浠g爜閲嶅 - Repository寮傛鏂规硶 (5浜哄ぉ)
+8. 鉁� 鎷嗗垎杩囬暱鏂规硶 (4浜哄ぉ)
+9. 鉁� 缁熶竴JSON搴忓垪鍖栧簱 (3浜烘棩)
+10. 鉁� 鍑忓皯dynamic浣跨敤 (2浜哄ぉ)
+11. 鉁� 鎻愬彇榄旀硶鏁板瓧鍜岀‖缂栫爜 (2浜哄ぉ)
+12. 鉁� 浼樺寲鍙嶅皠鎬ц兘 (3浜哄ぉ)
+
+### 绗笁闃舵: 瀹屽杽鏂囨。鍜屾祴璇� (棰勮15浜哄ぉ)
+13. 鉁� 娣诲姞XML鏂囨。娉ㄩ噴 (5浜哄ぉ)
+14. 鉁� 娣诲姞鍗曞厓娴嬭瘯 (10浜哄ぉ)
+
+### 绗洓闃舵: 鏋舵瀯浼樺寲 (棰勮10浜哄ぉ)
+15. 鉁� 瀹炵幇IDisposable妯″紡 (2浜哄ぉ)
+16. 鉁� 浼樺寲璧勬簮绠$悊 (2浜哄ぉ)
+17. 鉁� 娣诲姞鎬ц兘鐩戞帶 (2浜哄ぉ)
+18. 鉁� 浼樺寲缂撳瓨绛栫暐 (2浜哄ぉ)
+19. 鉁� 缂栧啓鏋舵瀯鏂囨。 (2浜哄ぉ)
+
+**鎬婚浼板伐浣滈噺**: 绾�54浜烘棩 (绾�10.8浜哄懆)
+
+---
+
+## 璇︾粏閲嶆瀯寤鸿
+
+### 寤鸿1: 瀹炵幇缁熶竴鐨勫紓甯稿鐞嗘満鍒�
+
+**褰撳墠闂**: 寮傜被澶勭悊鍒嗘暎,娌℃湁缁熶竴绛栫暐
+
+**瑙e喅鏂规**:
+```csharp
+// 瀹氫箟鑷畾涔夊紓甯稿熀绫�
+public abstract class WmsException : Exception
+{
+    public string ErrorCode { get; }
+    public WmsException(string code, string message) : base(message)
+    {
+        ErrorCode = code;
+    }
+}
+
+// 涓氬姟寮傚父
+public class BusinessException : WmsException
+{
+    public BusinessException(string code, string message) : base(code, message) { }
+}
+
+// 缁熶竴寮傚父澶勭悊涓棿浠�
+public class GlobalExceptionHandlerMiddleware
+{
+    public async Task InvokeAsync(HttpContext context, RequestDelegate next)
+    {
+        try
+        {
+            await next(context);
+        }
+        catch (WmsException ex)
+        {
+            context.Response.StatusCode = 400;
+            await context.Response.WriteAsJsonAsync(new {
+                success = false,
+                errorCode = ex.ErrorCode,
+                message = ex.Message
+            });
+        }
+        catch (Exception ex)
+        {
+            context.Response.StatusCode = 500;
+            await context.Response.WriteAsJsonAsync(new {
+                success = false,
+                message = "鏈嶅姟鍣ㄥ唴閮ㄩ敊璇�"
+            });
+        }
+    }
+}
+```
+
+---
+
+### 寤鸿2: 閲嶆瀯鏃ュ織绯荤粺
+
+**褰撳墠闂**: Logger绫讳娇鐢ㄦ棤闄愬惊鐜�,绫诲瀷涓嶅畨鍏�
+
+**瑙e喅鏂规**:
+```csharp
+public class WmsLogger : ILogger, IDisposable
+{
+    private readonly Channel<LogEntry> _logChannel;
+    private readonly Task _processingTask;
+    private readonly CancellationTokenSource _cts;
+
+    public WmsLogger()
+    {
+        var options = new BoundedChannelOptions(1000)
+        {
+            FullMode = BoundedChannelFullMode.Wait
+        };
+        _logChannel = Channel.CreateBounded<LogEntry>(options);
+        _cts = new CancellationTokenSource();
+        _processingTask = Task.Run(() => ProcessLogsAsync(_cts.Token));
+    }
+
+    public async Task LogAsync(LogEntry entry)
+    {
+        await _logChannel.Writer.WriteAsync(entry);
+    }
+
+    private async Task ProcessLogsAsync(CancellationToken token)
+    {
+        var batch = new List<LogEntry>(LogConstants.BatchSize);
+
+        while (!token.IsCancellationRequested)
+        {
+            try
+            {
+                // 鏀堕泦鎵归噺鏁版嵁
+                while (batch.Count < LogConstants.BatchSize &&
+                       await _logChannel.Reader.WaitToReadAsync(token))
+                {
+                    while (_logChannel.Reader.TryRead(out var entry))
+                    {
+                        batch.Add(entry);
+                    }
+                }
+
+                if (batch.Count > 0)
+                {
+                    await BatchInsertAsync(batch);
+                    batch.Clear();
+                }
+
+                await Task.Delay(LogConstants.FlushIntervalMs, token);
+            }
+            catch (OperationCanceledException)
+            {
+                break;
+            }
+            catch (Exception ex)
+            {
+                // 璁板綍鍒板鐢ㄤ綅缃�
+                System.Diagnostics.Debug.WriteLine($"鏃ュ織澶勭悊澶辫触: {ex.Message}");
+            }
+        }
+
+        // 澶勭悊鍓╀綑鏁版嵁
+        if (batch.Count > 0)
+        {
+            await BatchInsertAsync(batch);
+        }
+    }
+
+    public void Dispose()
+    {
+        _cts.Cancel();
+        _processingTask.Wait();
+        _cts.Dispose();
+    }
+}
+```
+
+---
+
+### 寤鸿3: 浣跨敤缂栬瘧鏃跺弽灏勪紭鍖�
+
+**褰撳墠闂**: 杩愯鏃跺弽灏勬�ц兘宸�
+
+**瑙e喅鏂规**: 浣跨敤Source Generator
+```csharp
+// 瀹氫箟鏍囪鎺ュ彛
+public interface IModelMapper<T> where T : class
+{
+    T MapFrom(Dictionary<string, object> dict);
+}
+
+// Source Generator鑷姩鐢熸垚瀹炵幇
+// 鐢熸垚浠g爜绀轰緥:
+public partial class ModelMapper : IModelMapper<YourEntity>
+{
+    public YourEntity MapFrom(Dictionary<string, object> dict)
+    {
+        return new YourEntity
+        {
+            Id = dict.TryGetValue("Id", out var id) ? (int)id : 0,
+            Name = dict.TryGetValue("Name", out var name) ? (string)name : null,
+            // ... 鍏朵粬灞炴��
+        };
+    }
+}
+```
+
+---
+
+### 寤鸿4: 瀹炵幇Repository妯″紡鏈�浣冲疄璺�
+
+**褰撳墠闂**: Repository鑱岃矗涓嶆竻鏅�
+
+**瑙e喅鏂规**:
+```csharp
+// 瀹氫箟瑙勮寖鎺ュ彛
+public interface IRepository<T> where T : class
+{
+    Task<T?> GetByIdAsync(object id);
+    Task<IEnumerable<T>> GetAllAsync();
+    Task<IEnumerable<T>> FindAsync(Expression<Func<T, bool>> predicate);
+    Task AddAsync(T entity);
+    Task AddRangeAsync(IEnumerable<T> entities);
+    Task UpdateAsync(T entity);
+    Task DeleteAsync(object id);
+    Task<int> CountAsync(Expression<Func<T, bool>> predicate = null);
+}
+
+// 瀹炵幇鍩虹被
+public abstract class RepositoryBase<T> : IRepository<T> where T : class
+{
+    protected readonly ISqlSugarClient Db;
+
+    public RepositoryBase(ISqlSugarClient db)
+    {
+        Db = db;
+    }
+
+    public virtual async Task<T?> GetByIdAsync(object id)
+    {
+        return await Db.Queryable<T>().In(id).FirstAsync();
+    }
+
+    // ... 鍏朵粬瀹炵幇
+}
+
+// 閽堝鐗瑰畾瀹炰綋鐨凴epository鍙互鎵╁睍
+public interface IUserRepository : IRepository<User>
+{
+    Task<User?> GetByUsernameAsync(string username);
+}
+
+public class UserRepository : RepositoryBase<User>, IUserRepository
+{
+    public UserRepository(ISqlSugarClient db) : base(db) { }
+
+    public async Task<User?> GetByUsernameAsync(string username)
+    {
+        return await Db.Queryable<User>()
+            .Where(u => u.Username == username)
+            .FirstAsync();
+    }
+}
+```
+
+---
+
+### 寤鸿5: 瀹炵幇CQRS妯″紡鍒嗙璇诲啓
+
+**褰撳墠闂**: 鎵�鏈夋搷浣滈兘鍦⊿ervice涓贩鍚�
+
+**瑙e喅鏂规**:
+```csharp
+// 鍛戒护鎺ュ彛
+public interface ICommandHandler<TCommand, TResult>
+{
+    Task<TResult> HandleAsync(TCommand command);
+}
+
+// 鏌ヨ鎺ュ彛
+public interface IQueryHandler<TQuery, TResult>
+{
+    Task<TResult> HandleAsync(TQuery query);
+}
+
+// 绀轰緥鍛戒护
+public record CreateInboundOrderCommand(
+    string OrderNo,
+    int SupplierId,
+    List<InboundOrderItem> Items
+) : IRequest<InboundOrder>;
+
+// 绀轰緥鏌ヨ
+public record GetInboundOrderQuery(int OrderId) : IRequest<InboundOrderDto>;
+
+// 鍛戒护澶勭悊鍣�
+public class CreateInboundOrderCommandHandler
+    : ICommandHandler<CreateInboundOrderCommand, InboundOrder>
+{
+    public async Task<InboundOrder> HandleAsync(CreateInboundOrderCommand command)
+    {
+        // 鍒涘缓閫昏緫
+    }
+}
+```
+
+---
+
+## 閲嶆瀯鎵ц妫�鏌ユ竻鍗�
+
+### 浠g爜璐ㄩ噺妫�鏌�
+- [ ] 鎵�鏈夌┖catch鍧楀凡绉婚櫎鎴栨坊鍔犳棩蹇�
+- [ ] 鎵�鏈塸ublic鏂规硶閮芥湁XML娉ㄩ噴
+- [ ] 娌℃湁浣跨敤Console.WriteLine鐨勪唬鐮�
+- [ ] 娌℃湁榄旀硶鏁板瓧鍜岀‖缂栫爜瀛楃涓�
+- [ ] 鍗曚釜鏂规硶涓嶈秴杩�50琛�
+- [ ] 鍗曚釜绫讳笉瓒呰繃500琛�
+- [ ] 鍦堝鏉傚害鎺у埗鍦�10浠ュ唴
+
+### 鏋舵瀯妫�鏌�
+- [ ] 渚濊禆娉ㄥ叆浣跨敤鏋勯�犲嚱鏁版敞鍏�
+- [ ] 鎵�鏈塈Disposable璧勬簮閮芥纭噴鏀�
+- [ ] 娌℃湁寰幆渚濊禆
+- [ ] 鎺ュ彛鍜屽疄鐜板垎绂绘竻鏅�
+- [ ] 灞傛鍒嗘槑,娌℃湁瓒婂眰璋冪敤
+
+### 鎬ц兘妫�鏌�
+- [ ] 鏁版嵁搴撴煡璇娇鐢ㄥ紓姝ユ柟娉�
+- [ ] 鍙嶅皠浣跨敤宸蹭紭鍖栨垨缂撳瓨
+- [ ] 闆嗗悎鎿嶄綔浣跨敤LINQ鑰岄潪寰幆
+- [ ] 瀛楃涓叉搷浣滀娇鐢⊿tringBuilder
+
+### 瀹夊叏妫�鏌�
+- [ ] SQL娉ㄥ叆椋庨櫓宸叉秷闄�
+- [ ] 鏁忔劅淇℃伅宸插姞瀵嗗瓨鍌�
+- [ ] API鏈夐�傚綋鐨勮璇佸拰鎺堟潈
+- [ ] 寮傚父淇℃伅涓嶆毚闇插唴閮ㄧ粏鑺�
+
+### 娴嬭瘯妫�鏌�
+- [ ] 鏍稿績涓氬姟閫昏緫鏈夊崟鍏冩祴璇�
+- [ ] 鍏抽敭API鏈夐泦鎴愭祴璇�
+- [ ] 娴嬭瘯瑕嗙洊鐜囦笉浣庝簬60%
+
+---
+
+## 椋庨櫓璇勪及
+
+### 楂橀闄╅」
+1. **鏁版嵁妯″瀷淇敼椋庨櫓**: 淇 `Creater` 涓� `Creator` 鍙兘褰卞搷鐜版湁鏁版嵁搴�
+   - **缂撹В鎺柦**: 娣诲姞鏁版嵁搴撳垪鍒悕鏄犲皠,鍒嗘壒娆¤縼绉�
+
+2. **閲嶆瀯ServiceBase椋庨櫓**: 璇ョ被琚ぇ閲忔湇鍔$户鎵�
+   - **缂撹В鎺柦**: 淇濇寔鍏叡鎺ュ彛涓嶅彉,鍏堥噸鏋勫唴閮ㄥ疄鐜�
+
+### 涓闄╅」
+1. **缁熶竴JSON搴撻闄�**: 鍙兘褰卞搷搴忓垪鍖栧吋瀹规��
+   - **缂撹В鎺柦**: 浣跨敤JsonConverter淇濇寔鍏煎鎬�
+
+2. **鏇挎崲鏃ュ織绯荤粺椋庨櫓**: 鏃ュ織涓㈠け椋庨櫓
+   - **缂撹В鎺柦**: 鏂版棫绯荤粺骞惰杩愯涓�娈垫椂闂�
+
+---
+
+## 寤鸿鐨勯噸鏋勫伐鍏�
+
+1. **Roslyn Analyzers**: 鑷姩妫�娴嬩唬鐮侀棶棰�
+2. **SonarQube**: 浠g爜璐ㄩ噺鍒嗘瀽
+3. **Resharper**: 浠g爜閲嶆瀯杈呭姪
+4. **Source Generator**: 鑷姩鐢熸垚浠g爜
+5. **xUnit/NUnit**: 鍗曞厓娴嬭瘯妗嗘灦
+6. **Moq/NSubstitute**: Mock妗嗘灦
+
+---
+
+## 鎬荤粨
+
+### 鍏抽敭鍙戠幇
+1. 椤圭洰閲囩敤缁忓吀鍒嗗眰鏋舵瀯,浣嗗疄鐜颁笉澶熻鑼�
+2. 瀛樺湪涓ラ噸鐨勪唬鐮侀噸澶嶅拰绌哄紓甯告崟鑾烽棶棰�
+3. 缂哄皯娴嬭瘯鍜屾枃妗�
+4. 鏈変竴瀹氱殑鎶�鏈�哄姟闇�瑕佹竻鐞�
+
+### 鏍稿績寤鸿
+1. **绔嬪嵆淇**: 绌哄紓甯告崟鑾峰潡銆佸懡鍚嶉敊璇�佹棤闄愬惊鐜闄�
+2. **鐭湡鏀硅繘**: 鍑忓皯浠g爜閲嶅銆佺粺涓�鎶�鏈爤銆佹坊鍔犳敞閲�
+3. **闀挎湡浼樺寲**: 瀹屽杽娴嬭瘯銆佷紭鍖栨灦鏋勩�佹彁鍗囨�ц兘
+
+### 棰勬湡鏀剁泭
+- 浠g爜鍙淮鎶ゆ�ф彁鍗� 50%
+- Bug鏁伴噺闄嶄綆 30%
+- 鏂板姛鑳藉紑鍙戞晥鐜囨彁鍗� 25%
+- 绯荤粺鎬ц兘鎻愬崌 15%
+
+---
+
+**鏂囨。鐢熸垚鏃堕棿**: 2026-03-10
+**鍒嗘瀽宸ュ叿鐗堟湰**: Claude Code Analysis
+**椤圭洰鐗堟湰**: WIDESEA_WMSServer v1.0
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs
index ac56868..841270c 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs
@@ -2,19 +2,50 @@
 
 namespace WIDESEA_BasicService
 {
+    /// <summary>
+    /// 鍩虹淇℃伅鏈嶅姟鑱氬悎瀹炵幇绫�
+    /// </summary>
     public class BasicService : IBasicService
     {
+        /// <summary>
+        /// 鎵樼洏缂栫爜涓氬姟灞�
+        /// </summary>
         public IPalletCodeInfoService PalletCodeInfoService { get; }
 
+        /// <summary>
+        /// 璐т綅涓氬姟灞�
+        /// </summary>
         public ILocationInfoService LocationInfoService { get; }
 
+        /// <summary>
+        /// 鐗╂枡涓氬姟灞�
+        /// </summary>
         public IMaterielInfoService MaterielInfoService { get; }
 
+        /// <summary>
+        /// 浠撳簱涓氬姟灞�
+        /// </summary>
         public IWarehouseService WarehouseService { get; }
 
+        /// <summary>
+        /// 鐗╂枡缂栫爜涓氬姟灞�
+        /// </summary>
         public IMaterielCodeInfoService MaterielCodeInfoService { get; }
 
-        public BasicService(ILocationInfoService locationInfoService, IMaterielInfoService materielInfoService, IWarehouseService warehouseService, IPalletCodeInfoService palletCodeInfoService, IMaterielCodeInfoService materielCodeInfoService)
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="locationInfoService">璐т綅淇℃伅鏈嶅姟</param>
+        /// <param name="materielInfoService">鐗╂枡淇℃伅鏈嶅姟</param>
+        /// <param name="warehouseService">浠撳簱淇℃伅鏈嶅姟</param>
+        /// <param name="palletCodeInfoService">鎵樼洏缂栫爜淇℃伅鏈嶅姟</param>
+        /// <param name="materielCodeInfoService">鐗╂枡缂栫爜淇℃伅鏈嶅姟</param>
+        public BasicService(
+            ILocationInfoService locationInfoService,
+            IMaterielInfoService materielInfoService,
+            IWarehouseService warehouseService,
+            IPalletCodeInfoService palletCodeInfoService,
+            IMaterielCodeInfoService materielCodeInfoService)
         {
             LocationInfoService = locationInfoService;
             MaterielInfoService = materielInfoService;
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs
index c48396e..aeff75f 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs
@@ -1,4 +1,4 @@
-锘縰sing WIDESEA_Common.LocationEnum;
+using WIDESEA_Common.LocationEnum;
 using WIDESEA_Common.TaskEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
@@ -7,25 +7,43 @@
 using WIDESEA_DTO.Basic;
 using WIDESEA_IBasicService;
 using WIDESEA_Model.Models;
+using WIDESEA_Common.CommonEnum;
 
 namespace WIDESEA_BasicService
 {
+    /// <summary>
+    /// 璐т綅淇℃伅鏈嶅姟瀹炵幇绫�
+    /// </summary>
     public partial class LocationInfoService : ServiceBase<Dt_LocationInfo, IRepository<Dt_LocationInfo>>, ILocationInfoService
     {
-        public IRepository<Dt_LocationInfo> Repository => BaseDal;
-        public IRepository<Dt_Task> _taskRepository { get; }
+        private readonly IRepository<Dt_Task> _taskRepository;
+        private readonly IRepository<Dt_StockInfo> _stockInfoRepository;
 
-        public IRepository<Dt_StockInfo> _stockInfoRepository { get; set; }
-
-        public LocationInfoService(IRepository<Dt_LocationInfo> BaseDal, IRepository<Dt_Task> taskRepository, IRepository<Dt_StockInfo> stockInfoRepository) : base(BaseDal)
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="baseDal">鍩虹鏁版嵁璁块棶瀵硅薄</param>
+        /// <param name="taskRepository">浠诲姟浠撳偍</param>
+        /// <param name="stockInfoRepository">搴撳瓨淇℃伅浠撳偍</param>
+        public LocationInfoService(
+            IRepository<Dt_LocationInfo> baseDal,
+            IRepository<Dt_Task> taskRepository,
+            IRepository<Dt_StockInfo> stockInfoRepository) : base(baseDal)
         {
             _taskRepository = taskRepository;
             _stockInfoRepository = stockInfoRepository;
         }
 
         /// <summary>
+        /// 鑾峰彇璐т綅淇℃伅浠撳偍
+        /// </summary>
+        public IRepository<Dt_LocationInfo> Repository => BaseDal;
+
+        /// <summary>
         /// 鎵归噺鍚敤璐т綅
         /// </summary>
+        /// <param name="keys">璐т綅涓婚敭鏁扮粍</param>
+        /// <returns>鎿嶄綔缁撴灉</returns>
         public WebResponseContent LocationEnableStatus(int[] keys)
         {
             var locationInfos = Repository.QueryData(x => keys.Contains(x.Id));
@@ -37,6 +55,8 @@
         /// <summary>
         /// 鎵归噺绂佺敤璐т綅
         /// </summary>
+        /// <param name="keys">璐т綅涓婚敭鏁扮粍</param>
+        /// <returns>鎿嶄綔缁撴灉</returns>
         public WebResponseContent LocationDisableStatus(int[] keys)
         {
             var locationInfos = Repository.QueryData(x => keys.Contains(x.Id));
@@ -48,16 +68,22 @@
         /// <summary>
         /// 鍗曚釜鍚敤璐т綅
         /// </summary>
+        /// <param name="key">璐т綅涓婚敭</param>
+        /// <returns>鎿嶄綔缁撴灉</returns>
         public WebResponseContent LocationEnableStatus(int key) => LocationEnableStatus(new[] { key });
 
         /// <summary>
         /// 鍗曚釜绂佺敤璐т綅
         /// </summary>
+        /// <param name="key">璐т綅涓婚敭</param>
+        /// <returns>鎿嶄綔缁撴灉</returns>
         public WebResponseContent LocationDisableStatus(int key) => LocationDisableStatus(new[] { key });
 
         /// <summary>
         /// 鍒濆鍖栬揣浣�
         /// </summary>
+        /// <param name="dto">鍒濆鍖栬揣浣嶆暟鎹紶杈撳璞�</param>
+        /// <returns>鎿嶄綔缁撴灉</returns>
         public WebResponseContent InitializationLocation(InitializationLocationDTO dto)
         {
             try
@@ -91,36 +117,11 @@
             }
         }
 
-        private static int CalculateDepth(int row, int maxRow, int maxDepth, int currentDepth)
-        {
-            int mod = row % maxRow;
-            if (mod == 1) return maxDepth;
-            if (mod == maxDepth + 1) return 1;
-            if (mod > 1 && mod <= maxDepth) return currentDepth - 1;
-            return currentDepth + 1;
-        }
-
-        private static Dt_LocationInfo CreateLocationInfo(string roadwayNo, int row, int col, int layer, int depth)
-        {
-            return new Dt_LocationInfo
-            {
-                WarehouseId = 0,
-                Row = row,
-                Column = col,
-                Layer = layer,
-                Depth = depth,
-                RoadwayNo = roadwayNo,
-                EnableStatus = EnableStatusEnum.Normal.GetHashCode(),
-                LocationStatus = LocationStatusEnum.Free.GetHashCode(),
-                LocationType = LocationTypeEnum.Undefined.GetHashCode(),
-                LocationCode = $"{row:D3}-{col:D3}-{layer:D3}",  //$"{roadwayNo}-{row:D3}-{col:D3}-{layer:D3}-{depth:D2}"
-                LocationName = $"{roadwayNo}宸烽亾{row:D3}琛寋col:D3}鍒梴layer:D3}灞倇depth:D2}娣�"
-            };
-        }
-
         /// <summary>
-        /// 鑾峰彇绌洪棽璐т綅淇℃伅(鏍规嵁宸烽亾鏌ヨ)
+        /// 鏍规嵁宸烽亾鑾峰彇绌洪棽璐т綅淇℃伅
         /// </summary>
+        /// <param name="roadwayNo">宸烽亾缂栧彿</param>
+        /// <returns>绌洪棽璐т綅淇℃伅锛屽鏋滄湭鎵惧埌鍒欒繑鍥瀗ull</returns>
         public async Task<Dt_LocationInfo?> GetLocationInfo(string roadwayNo)
         {
             var locations = await BaseDal.QueryDataAsync(x =>
@@ -137,13 +138,21 @@
         }
 
         /// <summary>
-        /// 鑾峰彇璐т綅淇℃伅(鏍规嵁宸烽亾鍜岃揣浣嶇紪鐮佹煡璇�)
+        /// 鏍规嵁宸烽亾鍜岃揣浣嶇紪鐮佽幏鍙栫┖闂茶揣浣嶄俊鎭�
         /// </summary>
+        /// <param name="roadwayNo">宸烽亾缂栧彿</param>
+        /// <param name="locationCode">璐т綅缂栫爜</param>
+        /// <returns>璐т綅淇℃伅锛屽鏋滄湭鎵惧埌鍒欒繑鍥瀗ull</returns>
         public async Task<Dt_LocationInfo?> GetLocationInfo(string roadwayNo, string locationCode)
         {
             return await BaseDal.QueryFirstAsync(x => x.RoadwayNo == roadwayNo && x.LocationCode == locationCode);
         }
 
+        /// <summary>
+        /// 鏍规嵁璐т綅缂栫爜鑾峰彇璐т綅淇℃伅
+        /// </summary>
+        /// <param name="locationCode">璐т綅缂栫爜</param>
+        /// <returns>璐т綅淇℃伅</returns>
         public async Task<Dt_LocationInfo> GetLocationInfoAsync(string locationCode)
         {
             return await BaseDal.QueryFirstAsync(x => x.LocationCode == locationCode);
@@ -152,6 +161,8 @@
         /// <summary>
         /// 鏇存柊璐т綅淇℃伅
         /// </summary>
+        /// <param name="locationInfo">璐т綅淇℃伅瀵硅薄</param>
+        /// <returns>鏇存柊鏄惁鎴愬姛</returns>
         public async Task<bool> UpdateLocationInfoAsync(Dt_LocationInfo locationInfo)
         {
             return await BaseDal.UpdateDataAsync(locationInfo);
@@ -160,24 +171,24 @@
         /// <summary>
         /// 妫�鏌ュ苟鐢熸垚绉诲簱浠诲姟鎴栬繑鍥炲嚭搴撲换鍔�
         /// </summary>
-        /// <param name="locationID">浠诲姟鍙�</param>
-        /// <returns>浠诲姟瀵硅薄</returns>
+        /// <param name="taskNum">浠诲姟鍙�</param>
+        /// <returns>浠诲姟淇℃伅</returns>
         public async Task<WebResponseContent> TransferCheckAsync(int taskNum)
         {
-            WebResponseContent content = new WebResponseContent();
+            var content = new WebResponseContent();
             try
             {
                 // 鏍规嵁浠诲姟鍙疯幏鍙栦换鍔�
                 var outboundTask = await _taskRepository.QueryFirstAsync(x => x.TaskNum == taskNum);
                 if (outboundTask == null)
-                    return null;
+                    return content.Error("浠诲姟涓嶅瓨鍦�");
 
-                var location = await BaseDal.QueryFirstAsync(x => x.LocationCode == outboundTask.SourceAddress);
+                var location = await BaseDal.QueryFirstAsync(x => x.LocationCode == outboundTask.SourceAddress && x.RoadwayNo == outboundTask.Roadway);
 
                 // 妫�鏌ユ槸鍚﹂渶瑕佽繘琛岀Щ搴�
                 if (CheckForInternalTransfer(location))
                 {
-                    // 璁$畻瀵瑰簲浣嶇疆鐨勭浉瀵瑰簱浣� 锛堝鏁拌鐨勪笅涓�琛屾垨鑰呭伓鏁拌鐨勪笂涓�琛岋級
+                    // 璁$畻瀵瑰簲浣嶇疆鐨勭浉瀵瑰簱浣嶏紙濂囨暟琛岀殑涓嬩竴琛屾垨鑰呭伓鏁拌鐨勪笂涓�琛岋級
                     var newLocationID = GetRelativeLocationID(location);
 
                     // 鑾峰彇鏂扮殑搴撲綅鐨勪换鍔�
@@ -202,14 +213,14 @@
             }
         }
 
-        #region 绉诲簱鏂规硶
+        #region 绉佹湁鏂规硶
 
         /// <summary>
         /// 璁$畻鐩稿鐨勫簱浣岻D
         /// </summary>
-        /// <param name="locationID">褰撳墠搴撲綅ID</param>
+        /// <param name="locationInfo">璐т綅淇℃伅</param>
         /// <returns>鐩稿鐨勫簱浣岻D</returns>
-        private string GetRelativeLocationID(Dt_LocationInfo locationInfo)
+        private static string GetRelativeLocationID(Dt_LocationInfo locationInfo)
         {
             int line = locationInfo.Row;
 
@@ -232,63 +243,105 @@
         {
             // 鍒ゆ柇璇ヤ綅缃槸鍚︽湁搴撳瓨
             var stockInfo = await _stockInfoRepository.QueryFirstAsync(x => x.LocationCode == newLocationID);
+            if (stockInfo == null)
+            {
+                // 濡傛灉娌℃湁搴撳瓨锛岀洿鎺ヨ繑鍥炲綋鍓嶅嚭搴撲换鍔�
+                return outboundTask;
+            }
 
             if (stockInfo == null)
             {
                 // 濡傛灉娌℃湁搴撳瓨锛岀洿鎺ヨ繑鍥炲綋鍓嶅嚭搴撲换鍔�
                 return outboundTask;
             }
-            else
-            {
-                // 濡傛灉鏈夊簱瀛橈紝鐢熸垚绉诲簱浠诲姟
-                var emptyLocation = await GetTransferLocationEmptyAsync(outboundTask.Roadway);
-                var taskNo = await _taskRepository.GetTaskNo();
-                Dt_Task newTransferTask = new Dt_Task()
-                {
-                    CreateDate = DateTime.Now,
-                    Creater = App.User.UserName,
-                    CurrentAddress = originalLocationID,
-                    Grade = 99,
-                    NextAddress = emptyLocation.LocationCode,
-                    PalletCode = stockInfo.PalletCode,
-                    Remark = "绉诲簱",
-                    Roadway = stockInfo.LocationDetails.RoadwayNo,
-                    SourceAddress = originalLocationID,
-                    TaskNum = taskNo,
-                    TargetAddress = emptyLocation.LocationCode,
-                    TaskType = TaskTypeEnum.Relocation.GetHashCode(),
-                };
 
-                return await _taskRepository.Db.Insertable(newTransferTask).ExecuteReturnEntityAsync();
-            }
+            // 濡傛灉鏈夊簱瀛橈紝鐢熸垚绉诲簱浠诲姟
+            var emptyLocation = await GetTransferLocationEmptyAsync(outboundTask.Roadway);
+            var taskNo = await _taskRepository.GetTaskNo();
+
+            var newTransferTask = new Dt_Task
+            {
+                CreateDate = DateTime.Now,
+                Creater = App.User.UserName,
+                CurrentAddress = originalLocationID,
+                Grade = 99,
+                NextAddress = emptyLocation.LocationCode,
+                PalletCode = stockInfo.PalletCode,
+                Remark = "绉诲簱",
+                Roadway = stockInfo.LocationDetails.RoadwayNo,
+                SourceAddress = originalLocationID,
+                TaskNum = taskNo,
+                TargetAddress = emptyLocation.LocationCode,
+                TaskType = TaskTypeEnum.Relocation.GetHashCode()
+            };
+
+            return await _taskRepository.Db.Insertable(newTransferTask).ExecuteReturnEntityAsync();
         }
 
         /// <summary>
-        /// 鏍规嵁璐т綅鏄惁闇�瑕佺Щ搴�
+        /// 妫�鏌ヨ揣浣嶆槸鍚﹂渶瑕佺Щ搴�
         /// </summary>
-        /// <param name="locationID">璐т綅ID</param>
+        /// <param name="location">璐т綅淇℃伅</param>
         /// <returns>鏄惁闇�瑕佺Щ搴�</returns>
-        private bool CheckForInternalTransfer(Dt_LocationInfo location)
+        private static bool CheckForInternalTransfer(Dt_LocationInfo location)
         {
-            return location.Depth == 2 ? true : false;
+            return location.Depth == 2;
         }
 
         /// <summary>
         /// 鏍规嵁宸烽亾鑾峰彇浜屾繁浣嶇殑绌哄簱浣�
         /// </summary>
-        /// <param name="roadway">宸烽亾</param>
+        /// <param name="roadway">宸烽亾缂栧彿</param>
         /// <returns>璐т綅瀵硅薄</returns>
         private async Task<Dt_LocationInfo> GetTransferLocationEmptyAsync(string roadway)
         {
-            return await BaseDal.QueryFirstAsync(x => x.Depth == 2 && x.LocationStatus == (LocationStatusEnum.Free.GetHashCode()) && x.RoadwayNo == roadway);
-
-            //Db.Queryable<Dt_LocationInfo>()
-            //.Where(x => x.Status == LocationEnum.Free.ObjToInt())
-            //.Where(x => x.Depth == 2.ToString())
-            //.Where(x => x.Roadway == roadway)
-            //.First();
+            return await BaseDal.QueryFirstAsync(x => x.Depth == 2 && x.LocationStatus == LocationStatusEnum.Free.GetHashCode() && x.RoadwayNo == roadway);
         }
 
-        #endregion 绉诲簱鏂规硶
+        /// <summary>
+        /// 璁$畻娣卞害
+        /// </summary>
+        /// <param name="row">琛屽彿</param>
+        /// <param name="maxRow">鏈�澶ц鏁�</param>
+        /// <param name="maxDepth">鏈�澶ф繁搴�</param>
+        /// <param name="currentDepth">褰撳墠娣卞害</param>
+        /// <returns>璁$畻鍚庣殑娣卞害</returns>
+        private static int CalculateDepth(int row, int maxRow, int maxDepth, int currentDepth)
+        {
+            int mod = row % maxRow;
+            if (mod == 1) return maxDepth;
+            if (mod == maxDepth + 1) return 1;
+            if (mod > 1 && mod <= maxDepth) return currentDepth - 1;
+            return currentDepth + 1;
+        }
+
+        /// <summary>
+        /// 鍒涘缓璐т綅淇℃伅
+        /// </summary>
+        /// <param name="roadwayNo">宸烽亾缂栧彿</param>
+        /// <param name="row">琛屽彿</param>
+        /// <param name="col">鍒楀彿</param>
+        /// <param name="layer">灞傛暟</param>
+        /// <param name="depth">娣卞害</param>
+        /// <returns>璐т綅淇℃伅瀵硅薄</returns>
+        private static Dt_LocationInfo CreateLocationInfo(string roadwayNo, int row, int col, int layer, int depth)
+        {
+            return new Dt_LocationInfo
+            {
+                WarehouseId = 0,
+                Row = row,
+                Column = col,
+                Layer = layer,
+                Depth = depth,
+                RoadwayNo = roadwayNo,
+                EnableStatus = EnableStatusEnum.Normal.GetHashCode(),
+                LocationStatus = LocationStatusEnum.Free.GetHashCode(),
+                LocationType = LocationTypeEnum.Undefined.GetHashCode(),
+                LocationCode = $"{row:D3}-{col:D3}-{layer:D3}",
+                LocationName = $"{roadwayNo}宸烽亾{row:D3}琛寋col:D3}鍒梴layer:D3}灞倇depth:D2}娣�"
+            };
+        }
+
+        #endregion 绉佹湁鏂规硶
     }
-}
\ No newline at end of file
+}
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/MaterielCodeInfoService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/MaterielCodeInfoService.cs
index e9e64b3..fb7b8b9 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/MaterielCodeInfoService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/MaterielCodeInfoService.cs
@@ -1,26 +1,26 @@
-锘縰sing SqlSugar;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Common.WareHouseEnum;
-using WIDESEA_Core;
-using WIDESEA_Core.BaseRepository;
+锘縰sing WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
-using WIDESEA_Core.Helper;
 using WIDESEA_IBasicService;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_BasicService
 {
+    /// <summary>
+    /// 鐗╂枡缂栫爜淇℃伅鏈嶅姟瀹炵幇绫�
+    /// </summary>
     public class MaterielCodeInfoService : ServiceBase<Dt_MaterielCodeInfo, IRepository<Dt_MaterielCodeInfo>>, IMaterielCodeInfoService
     {
-
-        public MaterielCodeInfoService(IRepository<Dt_MaterielCodeInfo> BaseDal) : base(BaseDal)
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="baseDal">鍩虹鏁版嵁璁块棶瀵硅薄</param>
+        public MaterielCodeInfoService(IRepository<Dt_MaterielCodeInfo> baseDal) : base(baseDal)
         {
         }
 
+        /// <summary>
+        /// 鑾峰彇鐗╂枡缂栫爜淇℃伅浠撳偍鎺ュ彛
+        /// </summary>
         public IRepository<Dt_MaterielCodeInfo> Repository => BaseDal;
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/MaterielInfoService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/MaterielInfoService.cs
index 6e0fd69..25c3d9f 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/MaterielInfoService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/MaterielInfoService.cs
@@ -1,24 +1,26 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core;
-using WIDESEA_Core.BaseRepository;
+锘縰sing WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_IBasicService;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_BasicService
 {
+    /// <summary>
+    /// 鐗╂枡淇℃伅鏈嶅姟瀹炵幇绫�
+    /// </summary>
     public partial class MaterielInfoService : ServiceBase<Dt_MaterielInfo, IRepository<Dt_MaterielInfo>>, IMaterielInfoService
     {
-
-        public MaterielInfoService(IRepository<Dt_MaterielInfo> BaseDal) : base(BaseDal)
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="baseDal">鍩虹鏁版嵁璁块棶瀵硅薄</param>
+        public MaterielInfoService(IRepository<Dt_MaterielInfo> baseDal) : base(baseDal)
         {
         }
 
+        /// <summary>
+        /// 鑾峰彇鐗╂枡淇℃伅浠撳偍鎺ュ彛
+        /// </summary>
         public IRepository<Dt_MaterielInfo> Repository => BaseDal;
-
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/PalletCodeInfoService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/PalletCodeInfoService.cs
index 3786220..d7ea785 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/PalletCodeInfoService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/PalletCodeInfoService.cs
@@ -1,28 +1,26 @@
-锘縰sing SqlSugar;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Common.CommonEnum;
-using WIDESEA_Common.WareHouseEnum;
-using WIDESEA_Core;
-using WIDESEA_Core.BaseRepository;
+锘縰sing WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
-using WIDESEA_Core.Helper;
 using WIDESEA_IBasicService;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_BasicService
 {
+    /// <summary>
+    /// 鎵樼洏缂栫爜淇℃伅鏈嶅姟瀹炵幇绫�
+    /// </summary>
     public class PalletCodeInfoService : ServiceBase<Dt_PalletCodeInfo, IRepository<Dt_PalletCodeInfo>>, IPalletCodeInfoService
     {
-
-        public PalletCodeInfoService(IRepository<Dt_PalletCodeInfo> BaseDal) : base(BaseDal)
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="baseDal">鍩虹鏁版嵁璁块棶瀵硅薄</param>
+        public PalletCodeInfoService(IRepository<Dt_PalletCodeInfo> baseDal) : base(baseDal)
         {
-
         }
 
+        /// <summary>
+        /// 鑾峰彇鎵樼洏缂栫爜淇℃伅浠撳偍鎺ュ彛
+        /// </summary>
         public IRepository<Dt_PalletCodeInfo> Repository => BaseDal;
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/WarehouseService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/WarehouseService.cs
index d2ad594..d203abc 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/WarehouseService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/WarehouseService.cs
@@ -1,39 +1,45 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using WIDESEA_Common.CommonEnum;
 using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Caches;
 using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
 using WIDESEA_IBasicService;
 using WIDESEA_Model.Models;
-using WIDESEA_Core.Helper;
-using WIDESEA_Common.CommonEnum;
-using WIDESEA_Core.Caches;
-using WIDESEA_Core.BaseRepository;
 
 namespace WIDESEA_BasicService
 {
+    /// <summary>
+    /// 浠撳簱淇℃伅鏈嶅姟瀹炵幇绫�
+    /// </summary>
     public partial class WarehouseService : ServiceBase<Dt_Warehouse, IRepository<Dt_Warehouse>>, IWarehouseService
     {
         private readonly ICacheService _cacheService;
 
-        public WarehouseService(IRepository<Dt_Warehouse> BaseDal,ICacheService cacheService) : base(BaseDal)
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="baseDal">鍩虹鏁版嵁璁块棶瀵硅薄</param>
+        /// <param name="cacheService">缂撳瓨鏈嶅姟</param>
+        public WarehouseService(IRepository<Dt_Warehouse> baseDal, ICacheService cacheService) : base(baseDal)
         {
             _cacheService = cacheService;
         }
 
+        /// <summary>
+        /// 鑾峰彇浠撳簱淇℃伅浠撳偍
+        /// </summary>
         public IRepository<Dt_Warehouse> Repository => BaseDal;
 
         /// <summary>
         /// 鎵归噺鍚敤浠撳簱
         /// </summary>
         /// <param name="keys">浠撳簱涓婚敭鏁扮粍</param>
-        /// <returns></returns>
+        /// <returns>鎿嶄綔缁撴灉</returns>
         public WebResponseContent WarehouseEnableStatus(int[] keys)
         {
-            List<Dt_Warehouse> warehouses = Repository.QueryData(x => keys.Contains(x.WarehouseId));
+            var warehouses = Repository.QueryData(x => keys.Contains(x.WarehouseId));
             warehouses.ForEach(x =>
             {
                 x.WarehouseStatus = EnableEnum.Enable.ObjToInt();
@@ -47,10 +53,10 @@
         /// 鎵归噺绂佺敤浠撳簱
         /// </summary>
         /// <param name="keys">浠撳簱涓婚敭鏁扮粍</param>
-        /// <returns></returns>
+        /// <returns>鎿嶄綔缁撴灉</returns>
         public WebResponseContent WarehouseDisableStatus(int[] keys)
         {
-            List<Dt_Warehouse> warehouses = Repository.QueryData(x => keys.Contains(x.WarehouseId));
+            var warehouses = Repository.QueryData(x => keys.Contains(x.WarehouseId));
             warehouses.ForEach(x =>
             {
                 x.WarehouseStatus = EnableEnum.Disable.ObjToInt();
@@ -64,7 +70,7 @@
         /// 鍗曚釜鍚敤浠撳簱
         /// </summary>
         /// <param name="key">浠撳簱涓婚敭</param>
-        /// <returns></returns>
+        /// <returns>鎿嶄綔缁撴灉</returns>
         public WebResponseContent WarehouseEnableStatus(int key)
         {
             return WarehouseEnableStatus(new int[] { key });
@@ -74,12 +80,10 @@
         /// 鍗曚釜绂佺敤浠撳簱
         /// </summary>
         /// <param name="key">浠撳簱涓婚敭</param>
-        /// <returns></returns>
+        /// <returns>鎿嶄綔缁撴灉</returns>
         public WebResponseContent WarehouseDisableStatus(int key)
         {
             return WarehouseDisableStatus(new int[] { key });
         }
-
-
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs
index c33e285..8becb44 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs
@@ -1,10 +1,4 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Common.OrderEnum;
-using WIDESEA_Core;
+锘縰sing WIDESEA_Common.OrderEnum;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Core.Helper;
@@ -13,13 +7,23 @@
 
 namespace WIDESEA_CheckService
 {
+    /// <summary>
+    /// 鐩樼偣鍗曠粨鏋滄湇鍔″疄鐜扮被
+    /// </summary>
     public class CheckOrderResultService : ServiceBase<Dt_CheckOrderResult, IRepository<Dt_CheckOrderResult>>, ICheckOrderResultService
     {
         private readonly IUnitOfWorkManage _unitOfWorkManage;
-        public CheckOrderResultService(IRepository<Dt_CheckOrderResult> BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="baseDal">鍩虹鏁版嵁璁块棶瀵硅薄</param>
+        /// <param name="unitOfWorkManage">宸ヤ綔鍗曞厓绠$悊鍣�</param>
+        public CheckOrderResultService(
+            IRepository<Dt_CheckOrderResult> baseDal,
+            IUnitOfWorkManage unitOfWorkManage) : base(baseDal)
         {
             _unitOfWorkManage = unitOfWorkManage;
         }
-
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderService.cs
index 6e0006b..f1a4922 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderService.cs
@@ -1,7 +1,6 @@
-锘縰sing HslCommunication.WebSocket;
+using HslCommunication.WebSocket;
 using WIDESEA_Common.CommonEnum;
 using WIDESEA_Common.OrderEnum;
-using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Core.Helper;
@@ -10,12 +9,24 @@
 
 namespace WIDESEA_CheckService
 {
+    /// <summary>
+    /// 鐩樼偣鍗曟湇鍔″疄鐜扮被
+    /// </summary>
     public class CheckOrderService : ServiceBase<Dt_CheckOrder, IRepository<Dt_CheckOrder>>, ICheckOrderService
     {
         private readonly IUnitOfWorkManage _unitOfWorkManage;
         private readonly WebSocketServer _webSocketServer;
 
-        public CheckOrderService(IRepository<Dt_CheckOrder> BaseDal, IUnitOfWorkManage unitOfWorkManage, WebSocketServer webSocketServer) : base(BaseDal)
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="baseDal">鍩虹鏁版嵁璁块棶瀵硅薄</param>
+        /// <param name="unitOfWorkManage">宸ヤ綔鍗曞厓绠$悊鍣�</param>
+        /// <param name="webSocketServer">WebSocket 鏈嶅姟鍣�</param>
+        public CheckOrderService(
+            IRepository<Dt_CheckOrder> baseDal,
+            IUnitOfWorkManage unitOfWorkManage,
+            WebSocketServer webSocketServer) : base(baseDal)
         {
             _unitOfWorkManage = unitOfWorkManage;
             _webSocketServer = webSocketServer;
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/WhetherEnum.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/WhetherEnum.cs
index 8439809..d420af5 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/WhetherEnum.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Common/CommonEnum/WhetherEnum.cs
@@ -1,24 +1,18 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace WIDESEA_Common.CommonEnum
+锘縩amespace WIDESEA_Common.CommonEnum
 {
     /// <summary>
-    /// 鏄惁鍊�
+    /// 鏄惁鏋氫妇鍊�
     /// </summary>
     public enum WhetherEnum
     {
         /// <summary>
-        /// 鏄�
-        /// </summary>
-        True = 1,
-
-        /// <summary>
         /// 鍚�
         /// </summary>
-        False = 0
+        No = 0,
+
+        /// <summary>
+        /// 鏄�
+        /// </summary>
+        Yes = 1
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/App.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/App.cs
index f15e9c1..739fec3 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/App.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/App.cs
@@ -49,7 +49,7 @@
         public static readonly IEnumerable<Type> EffectiveTypes;
 
         /// <summary>浼樺厛浣跨敤App.GetService()鎵嬪姩鑾峰彇鏈嶅姟</summary>
-        public static IServiceProvider RootServices => IsRun || IsBuild ? InternalApp.RootServices : null;
+        public static IServiceProvider? RootServices => IsRun || IsBuild ? InternalApp.RootServices : null;
 
         /// <summary>鑾峰彇Web涓绘満鐜锛屽锛屾槸鍚︽槸寮�鍙戠幆澧冿紝鐢熶骇鐜绛�</summary>
         public static IWebHostEnvironment WebHostEnvironment => InternalApp.WebHostEnvironment;
@@ -63,7 +63,7 @@
         /// <summary>
         /// 鑾峰彇璇锋眰涓婁笅鏂�
         /// </summary>
-        public static HttpContext HttpContext => RootServices?.GetService<IHttpContextAccessor>()?.HttpContext;
+        public static HttpContext? HttpContext => RootServices?.GetService<IHttpContextAccessor>()?.HttpContext;
 
         public static IUser User => GetService<IUser>();
 
@@ -108,10 +108,10 @@
             return serviceProvider;
         }
 
-        public static TService GetService<TService>(bool mustBuild = true) where TService : class
+        public static TService? GetService<TService>(bool mustBuild = true) where TService : class
         {
-            TService test = App.GetService(typeof(TService), null, mustBuild) as TService;
-            return test;
+            object? service = App.GetService(typeof(TService), null, mustBuild);
+            return service as TService;
         }
 
         /// <summary>鑾峰彇璇锋眰鐢熷瓨鍛ㄦ湡鐨勬湇鍔�</summary>
@@ -119,7 +119,7 @@
         /// <param name="serviceProvider"></param>
         /// <param name="mustBuild"></param>
         /// <returns></returns>
-        public static TService GetService<TService>(IServiceProvider serviceProvider, bool mustBuild = true)
+        public static TService? GetService<TService>(IServiceProvider? serviceProvider, bool mustBuild = true)
             where TService : class => (serviceProvider ?? App.GetServiceProvider(typeof(TService), mustBuild, false))?.GetService<TService>();
 
         /// <summary>鑾峰彇璇锋眰鐢熷瓨鍛ㄦ湡鐨勬湇鍔�</summary>
@@ -127,10 +127,10 @@
         /// <param name="serviceProvider"></param>
         /// <param name="mustBuild"></param>
         /// <returns></returns>
-        public static object GetService(Type type, IServiceProvider serviceProvider = null, bool mustBuild = true)
+        public static object? GetService(Type type, IServiceProvider? serviceProvider = null, bool mustBuild = true)
         {
             IServiceProvider? obj2 = (serviceProvider ?? App.GetServiceProvider(type, mustBuild, false));
-            object obj = obj2?.GetService(type);
+            object? obj = obj2?.GetService(type);
             return obj;
         }
 
@@ -177,7 +177,7 @@
         /// <typeparam name="TOptions">寮虹被鍨嬮�夐」绫�</typeparam>
         /// <param name="serviceProvider"></param>
         /// <returns>TOptions</returns>
-        public static TOptions GetOptions<TOptions>(IServiceProvider serviceProvider = null) where TOptions : class, new()
+        public static TOptions? GetOptions<TOptions>(IServiceProvider? serviceProvider = null) where TOptions : class, new()
         {
             IOptions<TOptions> service = App.GetService<IOptions<TOptions>>(serviceProvider ?? App.RootServices, false);
             return service?.Value;
@@ -187,10 +187,10 @@
         /// <typeparam name="TOptions">寮虹被鍨嬮�夐」绫�</typeparam>
         /// <param name="serviceProvider"></param>
         /// <returns>TOptions</returns>
-        public static TOptions GetOptionsMonitor<TOptions>(IServiceProvider serviceProvider = null)
+        public static TOptions? GetOptionsMonitor<TOptions>(IServiceProvider? serviceProvider = null)
             where TOptions : class, new()
         {
-            IOptionsMonitor<TOptions> service =
+            IOptionsMonitor<TOptions>? service =
                 App.GetService<IOptionsMonitor<TOptions>>(serviceProvider ?? App.RootServices, false);
             return service?.CurrentValue;
         }
@@ -199,10 +199,10 @@
         /// <typeparam name="TOptions">寮虹被鍨嬮�夐」绫�</typeparam>
         /// <param name="serviceProvider"></param>
         /// <returns>TOptions</returns>
-        public static TOptions GetOptionsSnapshot<TOptions>(IServiceProvider serviceProvider = null)
+        public static TOptions? GetOptionsSnapshot<TOptions>(IServiceProvider? serviceProvider = null)
             where TOptions : class, new()
         {
-            IOptionsSnapshot<TOptions> service = App.GetService<IOptionsSnapshot<TOptions>>(serviceProvider, false);
+            IOptionsSnapshot<TOptions>? service = App.GetService<IOptionsSnapshot<TOptions>>(serviceProvider, false);
             return service?.Value;
         }
 
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseController/ApiBaseController.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseController/ApiBaseController.cs
index 426a86e..ad0803b 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseController/ApiBaseController.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseController/ApiBaseController.cs
@@ -16,11 +16,11 @@
     [Authorize, ApiController]
     public class ApiBaseController<IService, TEntity> : Controller
     {
-        protected IService Service;
+        protected readonly IService Service;
 
         public ApiBaseController(IService service)
         {
-            Service = service;
+            Service = service ?? throw new ArgumentNullException(nameof(service));
         }
 
         /// <summary>
@@ -108,12 +108,12 @@
         [HttpPost, Route("Export")]
         public virtual ActionResult Export([FromBody] PageDataOptions loadData)
         {
-            WebResponseContent result = InvokeService("Export", new object[] { loadData }) as WebResponseContent;
-            if (result.Status)
+            WebResponseContent? result = InvokeService("Export", new object[] { loadData }) as WebResponseContent;
+            if (result != null && result.Status && result.Data != null)
                 return File(
-                       System.IO.File.ReadAllBytes(result.Data.ToString()),
+                       System.IO.File.ReadAllBytes(result.Data.ToString() ?? string.Empty),
                        System.Net.Mime.MediaTypeNames.Application.Octet,
-                       Path.GetFileName(result.Data.ToString())
+                       Path.GetFileName(result.Data.ToString() ?? string.Empty) ?? string.Empty
                    );
             return Json(result);
         }
@@ -125,12 +125,12 @@
         [HttpPost, HttpGet, Route("DownLoadTemplate")]
         public virtual ActionResult DownLoadTemplate()
         {
-            WebResponseContent result = InvokeService("DownLoadTemplate", new object[] { }) as WebResponseContent;
-            if (result.Status)
+            WebResponseContent? result = InvokeService("DownLoadTemplate", new object[] { }) as WebResponseContent;
+            if (result != null && result.Status && result.Data != null)
                 return File(
-                       System.IO.File.ReadAllBytes(result.Data.ToString()),
+                       System.IO.File.ReadAllBytes(result.Data.ToString() ?? string.Empty),
                        System.Net.Mime.MediaTypeNames.Application.Octet,
-                       Path.GetFileName(result.Data.ToString())
+                       Path.GetFileName(result.Data.ToString() ?? string.Empty) ?? string.Empty
                    );
             return Json(result);
         }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/WebResponseContent.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/WebResponseContent.cs
index 66feb1b..58f9a59 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/WebResponseContent.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/WebResponseContent.cs
@@ -35,7 +35,7 @@
         {
             get { return new WebResponseContent(); }
         }
-        public WebResponseContent OK(string message = null, object data = null)
+        public WebResponseContent OK(string? message = null, object? data = null)
         {
             Status = true;
             Message = message;
@@ -43,7 +43,7 @@
             return this;
         }
 
-        public WebResponseContent Error(string message = null)
+        public WebResponseContent Error(string? message = null)
         {
             Status = false;
             Message = message;
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs
index 81607a6..e3b9076 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs
@@ -40,15 +40,17 @@
 
         public UnitOfWork CreateUnitOfWork()
         {
-            UnitOfWork uow = new UnitOfWork();
-            uow.Logger = _logger;
-            uow.Db = _sqlSugarClient;
-            uow.Tenant = (ITenant)_sqlSugarClient;
-            uow.IsTran = true;
+            UnitOfWork uow = new UnitOfWork
+            {
+                Logger = _logger,
+                Db = _sqlSugarClient,
+                Tenant = _sqlSugarClient as ITenant,
+                IsTran = true
+            };
 
             uow.Db.Open();
-            uow.Tenant.BeginTran();
-            
+            uow.Tenant?.BeginTran();
+
             _logger.LogDebug("UnitOfWork Begin");
             return uow;
         }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/ICacheService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/ICacheService.cs
index 7deecbf..71e2250 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/ICacheService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/ICacheService.cs
@@ -48,13 +48,13 @@
         /// </summary>
         /// <param name="key">缂撳瓨Key</param>
         /// <returns></returns>
-        T Get<T>(string key) where T : class;
+        T? Get<T>(string key) where T : class;
 
         /// <summary>
         /// 鑾峰彇缂撳瓨
         /// </summary>
         /// <param name="key">缂撳瓨Key</param>
         /// <returns></returns>
-        string Get(string key);
+        string? Get(string key);
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs
index 60a2d72..c179eb5 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs
@@ -9,11 +9,11 @@
 {
     public class MemoryCacheService : ICacheService
     {
-        protected IMemoryCache _cache;
+        private readonly IMemoryCache _cache;
+
         public MemoryCacheService(IMemoryCache cache)
         {
-            _cache = cache;
-
+            _cache = cache ?? throw new ArgumentNullException(nameof(cache));
         }
 
         public bool Add(string key, string value, int expireSeconds = -1, bool isSliding = false)
@@ -54,8 +54,7 @@
 
         public void Dispose()
         {
-            if (_cache != null)
-                _cache.Dispose();
+            _cache?.Dispose();
             GC.SuppressFinalize(this);
         }
 
@@ -68,7 +67,7 @@
             return _cache.Get(key) != null;
         }
 
-        public T Get<T>(string key) where T : class
+        public T? Get<T>(string key) where T : class
         {
             if (key == null)
             {
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/ApiAuthorizeFilter.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/ApiAuthorizeFilter.cs
index 74593d0..dc951cf 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/ApiAuthorizeFilter.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/ApiAuthorizeFilter.cs
@@ -21,9 +21,7 @@
     /// </summary>
     public class ApiAuthorizeFilter : IAuthorizationFilter
     {
-        private static readonly string replaceTokenPath = "/api/Sys_User/replaceToken";
-        private static readonly string loginPath = "/api/Sys_User/login";
-        private static readonly string vierificationCodePath = "/api/Sys_User/getVierificationCode";
+        private static readonly string ReplaceTokenPath = "/api/Sys_User/replaceToken";
 
         public ApiAuthorizeFilter()
         {
@@ -84,7 +82,7 @@
                 DateTime? expDate = context.HttpContext.User.Claims.Where(x => x.Type == JwtRegisteredClaimNames.Exp).Select(x => x.Value).FirstOrDefault()?.GetTimeSpmpToDate();
                 //鍔ㄦ�佹爣璇嗗埛鏂皌oken(2021.05.01)
                 int ExpMinutes = AppSettings.Get("ExpMinutes").ObjToInt();
-                if ((expDate.GetValueOrDefault() - DateTime.Now).TotalMinutes < ExpMinutes / 3 && context.HttpContext.Request.Path != replaceTokenPath)
+                if ((expDate.GetValueOrDefault() - DateTime.Now).TotalMinutes < ExpMinutes / 3 && context.HttpContext.Request.Path != ReplaceTokenPath)
                 {
                     context.HttpContext.Response.Headers.Add("widesea_exp", "1");
                 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/UtilConvert.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/UtilConvert.cs
index d9c8538..68dc513 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/UtilConvert.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/UtilConvert.cs
@@ -538,10 +538,16 @@
         /// <param name="dt"></param>
         /// <param name="utc">T:鎸塙TC鏃堕棿璁$畻(榛樿);F:鎸夋湰鍦版椂闂磋绠�</param>
         /// <returns></returns>
+        /// <summary>
+        /// 鏃ユ湡杞负unix鍊�
+        /// </summary>
+        /// <param name="dt">鏃ユ湡鏃堕棿</param>
+        /// <param name="utc">T:鎸塙TC鏃堕棿璁$畻(榛樿);F:鎸夋湰鍦版椂闂磋绠�</param>
+        /// <returns></returns>
         public static double ToUnix(this DateTime dt, bool utc = true)
         {
             double intResult = 0;
-            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
+            System.DateTime startTime = TimeZoneInfo.ConvertTime(new System.DateTime(1970, 1, 1), TimeZoneInfo.Utc, TimeZoneInfo.Local);
             intResult = (dt - startTime).TotalSeconds;
             intResult = Math.Round(intResult, 0);
             return intResult;
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/CachePointGroupDTO.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/CachePointGroupDTO.cs
index edd66c5..4564a37 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/CachePointGroupDTO.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/CachePointGroupDTO.cs
@@ -6,30 +6,69 @@
 
 namespace WIDESEA_DTO.Basic
 {
+    /// <summary>
+    /// 缂撳瓨鐐瑰垎缁勬暟鎹紶杈撳璞�
+    /// </summary>
     public class CachePointGroupDTO
     {
+        /// <summary>
+        /// 鐐笰鐨処D
+        /// </summary>
         public int IdA { get; set; }
 
+        /// <summary>
+        /// 鐐笲鐨処D
+        /// </summary>
         public int IdB { get; set; }
 
+        /// <summary>
+        /// 鐐笰鐨勭紪鐮�
+        /// </summary>
         public string PointCodeA { get; set; }
 
+        /// <summary>
+        /// 鐐笲鐨勭紪鐮�
+        /// </summary>
         public string PointCodeB { get; set; }
 
+        /// <summary>
+        /// 鐐笰鐨勭被鍨�
+        /// </summary>
         public int PointTypeA { get; set; }
 
+        /// <summary>
+        /// 鐐笲鐨勭被鍨�
+        /// </summary>
         public int PointTypeB { get; set; }
 
+        /// <summary>
+        /// 鐐笰鐨勭姸鎬�
+        /// </summary>
         public int PointStatusA { get; set; }
 
+        /// <summary>
+        /// 鐐笲鐨勭姸鎬�
+        /// </summary>
         public int PointStatusB { get; set; }
 
+        /// <summary>
+        /// 鐐笰鐨勬繁搴�
+        /// </summary>
         public int DepthA { get; set; }
 
+        /// <summary>
+        /// 鐐笲鐨勬繁搴�
+        /// </summary>
         public int DepthB { get; set; }
 
+        /// <summary>
+        /// 鐐笰鐨勫惎鐢ㄧ姸鎬�
+        /// </summary>
         public int EnableStatusA { get; set; }
 
+        /// <summary>
+        /// 鐐笲鐨勫惎鐢ㄧ姸鎬�
+        /// </summary>
         public int EnableStatusB { get; set; }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/InnerCodeDTO.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/InnerCodeDTO.cs
index 3d2e1a6..cc7f0a8 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/InnerCodeDTO.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/InnerCodeDTO.cs
@@ -6,11 +6,29 @@
 
 namespace WIDESEA_DTO.Basic
 {
+    /// <summary>
+    /// 鍐呴儴缂栫爜鏁版嵁浼犺緭瀵硅薄
+    /// </summary>
     public class InnerCodeDTO
     {
-        public string matCode { get; set; }
-        public string batchNo { get; set; }
-        public string purchaseOrderNo { get; set; }
-        public int qty { get; set; }
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string MatCode { get; set; }
+
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        public string BatchNo { get; set; }
+
+        /// <summary>
+        /// 閲囪喘璁㈠崟缂栧彿
+        /// </summary>
+        public string PurchaseOrderNo { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public int Qty { get; set; }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/GradingMachine/GradingMachineInputDto.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/GradingMachine/GradingMachineInputDto.cs
new file mode 100644
index 0000000..f51e8c9
--- /dev/null
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/GradingMachine/GradingMachineInputDto.cs
@@ -0,0 +1,34 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.GradingMachine
+{
+    /// <summary>
+    /// 鍒嗗鏌滆緭鍏ユ暟鎹紶杈撳璞�
+    /// </summary>
+    public class GradingMachineInputDto
+    {
+        /// <summary>
+        /// 鎵樼洏鍙�
+        /// </summary>
+        public string PalletCode { get; set; }
+
+        /// <summary>
+        /// 璐т綅鍙�
+        /// </summary>
+        public string LocationCode { get; set; }
+
+        /// <summary>
+        /// 璐т綅鐘舵��
+        /// </summary>
+        public int LocationStatus { get; set; }
+
+        /// <summary>
+        /// 鏄惁姝e父NG娴佺▼
+        /// </summary>
+        public int IsNG { get; set; }
+    }
+}
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/GradingMachine/OutPutDto.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/GradingMachine/OutPutDto.cs
index 2abbf02..653fc4d 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/GradingMachine/OutPutDto.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/GradingMachine/OutPutDto.cs
@@ -4,17 +4,17 @@
 using System.Text;
 using System.Threading.Tasks;
 
-namespace WIDESEA_DTO
+namespace WIDESEA_DTO.GradingMachine
 {
     /// <summary>
-    /// 鍒嗗鏌滆緭鍑篋to
+    /// 鍒嗗鏌滆緭鍑烘暟鎹紶杈撳璞�
     /// </summary>
-    public class OutPutDto
+    public class OutputDto
     {
         /// <summary>
         /// 璐т綅鍙�
         /// </summary>
-        public string LocationCode { get;set; }
+        public string LocationCode { get; set; }
 
         /// <summary>
         /// 鎵樼洏鍙�
@@ -34,7 +34,7 @@
         /// <summary>
         /// 閫氶亾鍙�
         /// </summary>
-        public string Channel { get;set; }
+        public string Channel { get; set; }
 
         /// <summary>
         /// 鐢佃姱鏉$爜
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockViewDTO.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockViewDTO.cs
index 39e46e9..662210f 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockViewDTO.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockViewDTO.cs
@@ -67,7 +67,7 @@
         /// <summary>
         /// 绂佺敤鐘舵��
         /// </summary>
-        public int EnalbeStatus { get; set; }
+        public int EnableStatus { get; set; }
 
         /// <summary>
         /// 搴撳瓨涓婚敭
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/ActionDTO.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/ActionDTO.cs
index 57ed299..1f266fe 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/ActionDTO.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/ActionDTO.cs
@@ -6,11 +6,29 @@
 
 namespace WIDESEA_DTO.System
 {
+    /// <summary>
+    /// 鎿嶄綔鏉冮檺鏁版嵁浼犺緭瀵硅薄
+    /// </summary>
     public class ActionDTO
     {
+        /// <summary>
+        /// 鎿嶄綔ID
+        /// </summary>
         public int ActionId { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟ID
+        /// </summary>
         public int MenuId { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔鍚嶇О
+        /// </summary>
         public string Text { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔鍊�
+        /// </summary>
         public string Value { get; set; }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/DictionaryDTO.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/DictionaryDTO.cs
index c914b41..27ff1c4 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/DictionaryDTO.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/DictionaryDTO.cs
@@ -7,22 +7,22 @@
 namespace WIDESEA_DTO.System
 {
     /// <summary>
-    /// 
+    /// 瀛楀吀鏁版嵁浼犺緭瀵硅薄
     /// </summary>
     public class DictionaryDTO
     {
         /// <summary>
-        /// 
+        /// 閿�
         /// </summary>
         public object Key {  get; set; }
 
         /// <summary>
-        /// 
+        /// 鍊�
         /// </summary>
         public object Value {  get; set; }
 
         /// <summary>
-        /// 
+        /// 棰濆鏁版嵁
         /// </summary>
         public object Extra {  get; set; }
     }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/UserPermissions.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/UserPermissions.cs
index 9c892bb..de195ae 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/UserPermissions.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/UserPermissions.cs
@@ -6,12 +6,34 @@
 
 namespace WIDESEA_DTO.System
 {
+    /// <summary>
+    /// 鐢ㄦ埛鏉冮檺鏁版嵁浼犺緭瀵硅薄
+    /// </summary>
     public class UserPermissionDTO
     {
+        /// <summary>
+        /// ID
+        /// </summary>
         public int Id { get; set; }
+
+        /// <summary>
+        /// 鐖禝D
+        /// </summary>
         public int Pid { get; set; }
+
+        /// <summary>
+        /// 鏂囨湰鍚嶇О
+        /// </summary>
         public string Text { get; set; }
+
+        /// <summary>
+        /// 鏄惁涓哄簲鐢�
+        /// </summary>
         public bool IsApp { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔鏉冮檺鍒楄〃
+        /// </summary>
         public List<ActionDTO> Actions { get; set; }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/VueDictionaryDTO.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/VueDictionaryDTO.cs
index ffa7f3b..1262587 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/VueDictionaryDTO.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/VueDictionaryDTO.cs
@@ -6,14 +6,29 @@
 
 namespace WIDESEA_DTO.System
 {
+    /// <summary>
+    /// Vue 瀛楀吀鏁版嵁浼犺緭瀵硅薄
+    /// </summary>
     public class VueDictionaryDTO
     {
+        /// <summary>
+        /// 瀛楀吀缂栧彿
+        /// </summary>
         public string DicNo { get; set; }
 
+        /// <summary>
+        /// 閰嶇疆
+        /// </summary>
         public string Config { get; set; }
 
+        /// <summary>
+        /// 鏁版嵁
+        /// </summary>
         public object Data {  get; set; }
 
+        /// <summary>
+        /// 鏄惁淇濆瓨鍒扮紦瀛�
+        /// </summary>
         public bool SaveCache { get; set; } = true;
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Task/UpdateTaskDto.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Task/UpdateTaskDto.cs
index 3c159cc..6029b38 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Task/UpdateTaskDto.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Task/UpdateTaskDto.cs
@@ -1,10 +1,7 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+锘縰sing System.ComponentModel.DataAnnotations;
+using System.Text.Json.Serialization;
 
-namespace WIDESEA_DTO
+namespace WIDESEA_DTO.Task
 {
     /// <summary>
     /// 鏇存柊浠诲姟鐘舵�丏TO - 鐢ㄤ簬灏佽鏇存柊浠诲姟鐘舵�佹墍闇�鐨勬暟鎹紝鍖呮嫭浠诲姟ID鍜屾柊鐘舵�佷俊鎭�
@@ -14,11 +11,13 @@
         /// <summary>
         /// id - 浠诲姟ID锛屽繀濉」锛岀敤浜庢寚瀹氳鏇存柊鐨勪换鍔¤褰�
         /// </summary>
+        [Required(ErrorMessage = "浠诲姟ID涓嶈兘涓虹┖")]
         public int Id { get; set; }
 
         /// <summary>
         /// newStatus - 鏂扮姸鎬侊紝蹇呭~椤癸紝鐢ㄤ簬鎸囧畾浠诲姟鐨勬柊鐘舵��
         /// </summary>
+        [Required(ErrorMessage = "鏂扮姸鎬佷笉鑳戒负绌�")]
         public int NewStatus { get; set; }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IBasicService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IBasicService.cs
index b62017b..295c391 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IBasicService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IBasicService.cs
@@ -1,13 +1,11 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core;
+锘縰sing WIDESEA_Core;
 
 namespace WIDESEA_IBasicService
 {
-    public interface IBasicService: IDependency
+    /// <summary>
+    /// 鍩虹淇℃伅鏈嶅姟鑱氬悎鎺ュ彛
+    /// </summary>
+    public interface IBasicService : IDependency
     {
         /// <summary>
         /// 璐т綅涓氬姟灞�
@@ -24,8 +22,14 @@
         /// </summary>
         IWarehouseService WarehouseService { get; }
 
+        /// <summary>
+        /// 鎵樼洏缂栫爜涓氬姟灞�
+        /// </summary>
         IPalletCodeInfoService PalletCodeInfoService { get; }
 
+        /// <summary>
+        /// 鐗╂枡缂栫爜涓氬姟灞�
+        /// </summary>
         IMaterielCodeInfoService MaterielCodeInfoService { get; }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs
index 850a356..f320174 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs
@@ -1,90 +1,92 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Common.CommonEnum;
+锘縰sing WIDESEA_Common.CommonEnum;
 using WIDESEA_Common.LocationEnum;
-using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_DTO.Basic;
+using WIDESEA_Core;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_IBasicService
 {
+    /// <summary>
+    /// 璐т綅淇℃伅鏈嶅姟鎺ュ彛
+    /// </summary>
     public interface ILocationInfoService : IService<Dt_LocationInfo>
     {
+        /// <summary>
+        /// 鑾峰彇璐т綅淇℃伅浠撳偍鎺ュ彛
+        /// </summary>
         IRepository<Dt_LocationInfo> Repository { get; }
 
         /// <summary>
         /// 鎵归噺鍚敤璐т綅
         /// </summary>
         /// <param name="keys">璐т綅涓婚敭鏁扮粍</param>
-        /// <returns></returns>
+        /// <returns>鎿嶄綔缁撴灉</returns>
         WebResponseContent LocationEnableStatus(int[] keys);
 
         /// <summary>
         /// 鎵归噺绂佺敤璐т綅
         /// </summary>
         /// <param name="keys">璐т綅涓婚敭鏁扮粍</param>
-        /// <returns></returns>
+        /// <returns>鎿嶄綔缁撴灉</returns>
         WebResponseContent LocationDisableStatus(int[] keys);
 
         /// <summary>
         /// 鍗曚釜鍚敤璐т綅
         /// </summary>
         /// <param name="key">璐т綅涓婚敭</param>
-        /// <returns></returns>
+        /// <returns>鎿嶄綔缁撴灉</returns>
         WebResponseContent LocationEnableStatus(int key);
 
         /// <summary>
         /// 鍗曚釜绂佺敤璐т綅
         /// </summary>
         /// <param name="key">璐т綅涓婚敭</param>
-        /// <returns></returns>
+        /// <returns>鎿嶄綔缁撴灉</returns>
         WebResponseContent LocationDisableStatus(int key);
 
         /// <summary>
         /// 鍒濆鍖栬揣浣�
         /// </summary>
-        /// <param name="initializationLocationDTO"></param>
-        /// <returns></returns>
+        /// <param name="initializationLocationDTO">鍒濆鍖栬揣浣嶆暟鎹紶杈撳璞�</param>
+        /// <returns>鎿嶄綔缁撴灉</returns>
         WebResponseContent InitializationLocation(InitializationLocationDTO initializationLocationDTO);
 
         /// <summary>
-        /// 鑾峰彇绌洪棽璐т綅淇℃伅
+        /// 鏍规嵁宸烽亾鑾峰彇绌洪棽璐т綅淇℃伅
         /// </summary>
-        /// <param name="RoadwayNo">宸烽亾</param>
-        /// <returns></returns>
-        public Task<Dt_LocationInfo?> GetLocationInfo(string RoadwayNo);
+        /// <param name="roadwayNo">宸烽亾缂栧彿</param>
+        /// <returns>绌洪棽璐т綅淇℃伅锛屽鏋滄湭鎵惧埌鍒欒繑鍥瀗ull</returns>
+        Task<Dt_LocationInfo?> GetLocationInfo(string roadwayNo);
 
         /// <summary>
         /// 鏇存柊璐т綅淇℃伅
         /// </summary>
-        /// <param name="locationInfo"></param>
-        /// <returns></returns>
-        public Task<bool> UpdateLocationInfoAsync(Dt_LocationInfo locationInfo);
+        /// <param name="locationInfo">璐т綅淇℃伅瀵硅薄</param>
+        /// <returns>鏇存柊鏄惁鎴愬姛</returns>
+        Task<bool> UpdateLocationInfoAsync(Dt_LocationInfo locationInfo);
 
         /// <summary>
-        /// 鑾峰彇绌洪棽璐т綅淇℃伅(鏍规嵁宸烽亾鍜岃揣浣嶅彿鏌ヨ)
+        /// 鏍规嵁宸烽亾鍜岃揣浣嶅彿鑾峰彇绌洪棽璐т綅淇℃伅
         /// </summary>
-        /// <param name="RoadwayNo">宸烽亾</param>
-        /// <returns></returns>
-        public Task<Dt_LocationInfo?> GetLocationInfo(string RoadwayNo, string locationCode);
+        /// <param name="roadwayNo">宸烽亾缂栧彿</param>
+        /// <param name="locationCode">璐т綅缂栫爜</param>
+        /// <returns>璐т綅淇℃伅锛屽鏋滄湭鎵惧埌鍒欒繑鍥瀗ull</returns>
+        Task<Dt_LocationInfo?> GetLocationInfo(string roadwayNo, string locationCode);
 
         /// <summary>
-        /// 鑾峰彇璐т綅淇℃伅
+        /// 鏍规嵁璐т綅缂栫爜鑾峰彇璐т綅淇℃伅
         /// </summary>
-        /// <param name="locationCode"></param>
-        /// <returns></returns>
-        public Task<Dt_LocationInfo> GetLocationInfoAsync(string locationCode);
+        /// <param name="locationCode">璐т綅缂栫爜</param>
+        /// <returns>璐т綅淇℃伅</returns>
+        Task<Dt_LocationInfo> GetLocationInfoAsync(string locationCode);
 
         /// <summary>
         /// 妫�鏌ュ苟鐢熸垚绉诲簱浠诲姟鎴栬繑鍥炲嚭搴撲换鍔�
         /// </summary>
         /// <param name="taskNum">浠诲姟鍙�</param>
-        /// <returns></returns>
-        public Task<WebResponseContent> TransferCheckAsync(int taskNum);
+        /// <returns>浠诲姟淇℃伅</returns>
+        Task<WebResponseContent> TransferCheckAsync(int taskNum);
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielCodeInfoService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielCodeInfoService.cs
index 7db7943..743b5a6 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielCodeInfoService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielCodeInfoService.cs
@@ -1,16 +1,17 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core.BaseRepository;
+锘縰sing WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_IBasicService
 {
+    /// <summary>
+    /// 鐗╂枡缂栫爜淇℃伅鏈嶅姟鎺ュ彛
+    /// </summary>
     public interface IMaterielCodeInfoService : IService<Dt_MaterielCodeInfo>
     {
-        public IRepository<Dt_MaterielCodeInfo> Repository { get; }
+        /// <summary>
+        /// 鑾峰彇鐗╂枡缂栫爜淇℃伅浠撳偍鎺ュ彛
+        /// </summary>
+        IRepository<Dt_MaterielCodeInfo> Repository { get; }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielInfoService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielInfoService.cs
index fc325d5..e2dc9c4 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielInfoService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IMaterielInfoService.cs
@@ -1,18 +1,17 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core;
-using WIDESEA_Core.BaseRepository;
+锘縰sing WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
-using WIDESEA_DTO.Basic;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_IBasicService
 {
+    /// <summary>
+    /// 鐗╂枡淇℃伅鏈嶅姟鎺ュ彛
+    /// </summary>
     public interface IMaterielInfoService : IService<Dt_MaterielInfo>
     {
+        /// <summary>
+        /// 鑾峰彇鐗╂枡淇℃伅浠撳偍鎺ュ彛
+        /// </summary>
         IRepository<Dt_MaterielInfo> Repository { get; }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IPalletCodeInfoService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IPalletCodeInfoService.cs
index ea6190a..807ec0b 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IPalletCodeInfoService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IPalletCodeInfoService.cs
@@ -1,17 +1,17 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core;
-using WIDESEA_Core.BaseRepository;
+锘縰sing WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_IBasicService
 {
+    /// <summary>
+    /// 鎵樼洏缂栫爜淇℃伅鏈嶅姟鎺ュ彛
+    /// </summary>
     public interface IPalletCodeInfoService : IService<Dt_PalletCodeInfo>
     {
-        public IRepository<Dt_PalletCodeInfo> Repository { get; }
+        /// <summary>
+        /// 鑾峰彇鎵樼洏缂栫爜淇℃伅浠撳偍鎺ュ彛
+        /// </summary>
+        IRepository<Dt_PalletCodeInfo> Repository { get; }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IWarehouseService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IWarehouseService.cs
index 2a49178..ed5a0fd 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IWarehouseService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/IWarehouseService.cs
@@ -1,17 +1,17 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core;
-using WIDESEA_Core.BaseRepository;
+锘縰sing WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_IBasicService
 {
+    /// <summary>
+    /// 浠撳簱淇℃伅鏈嶅姟鎺ュ彛
+    /// </summary>
     public interface IWarehouseService : IService<Dt_Warehouse>
     {
+        /// <summary>
+        /// 鑾峰彇浠撳簱淇℃伅浠撳偍鎺ュ彛
+        /// </summary>
         IRepository<Dt_Warehouse> Repository { get; }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderResultService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderResultService.cs
index 8bb2659..b2dd8e9 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderResultService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderResultService.cs
@@ -1,14 +1,11 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core;
-using WIDESEA_Core.BaseServices;
+锘縰sing WIDESEA_Core.BaseServices;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_ICheckService
 {
+    /// <summary>
+    /// 鐩樼偣鍗曠粨鏋滄湇鍔℃帴鍙�
+    /// </summary>
     public interface ICheckOrderResultService : IService<Dt_CheckOrderResult>
     {
     }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderService.cs
index 4de5428..d5fced3 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_ICheckService/ICheckOrderService.cs
@@ -1,14 +1,11 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core;
-using WIDESEA_Core.BaseServices;
+锘縰sing WIDESEA_Core.BaseServices;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_ICheckService
 {
+    /// <summary>
+    /// 鐩樼偣鍗曟湇鍔℃帴鍙�
+    /// </summary>
     public interface ICheckOrderService : IService<Dt_CheckOrder>
     {
     }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderDetailService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderDetailService.cs
index f87a463..a6cece5 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderDetailService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderDetailService.cs
@@ -1,17 +1,17 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core;
-using WIDESEA_Core.BaseRepository;
+锘縰sing WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_IInboundService
 {
+    /// <summary>
+    /// 鍏ュ簱鍗曟槑缁嗘湇鍔℃帴鍙�
+    /// </summary>
     public interface IInboundOrderDetailService : IService<Dt_InboundOrderDetail>
     {
+        /// <summary>
+        /// 鑾峰彇鍏ュ簱鍗曟槑缁嗕粨鍌ㄦ帴鍙�
+        /// </summary>
         IRepository<Dt_InboundOrderDetail> Repository { get; }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs
index bd67259..d382175 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundOrderService.cs
@@ -1,20 +1,17 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core;
-using WIDESEA_Core.BaseRepository;
+锘縰sing WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
-using WIDESEA_DTO;
-using WIDESEA_DTO.Inbound;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_IInboundService
 {
+    /// <summary>
+    /// 鍏ュ簱鍗曟湇鍔℃帴鍙�
+    /// </summary>
     public interface IInboundOrderService : IService<Dt_InboundOrder>
     {
+        /// <summary>
+        /// 鑾峰彇鍏ュ簱鍗曚粨鍌ㄦ帴鍙�
+        /// </summary>
         IRepository<Dt_InboundOrder> Repository { get; }
-
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundService.cs
index 15237d5..50f9e18 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundService.cs
@@ -1,16 +1,20 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core;
+锘縰sing WIDESEA_Core;
 
 namespace WIDESEA_IInboundService
 {
+    /// <summary>
+    /// 鍏ュ簱鏈嶅姟鑱氬悎鎺ュ彛
+    /// </summary>
     public interface IInboundService : IDependency
     {
+        /// <summary>
+        /// 鍏ュ簱鍗曟槑缁嗘湇鍔�
+        /// </summary>
         IInboundOrderDetailService InboundOrderDetailService { get; }
 
-        IInboundOrderService InbounOrderService { get; }
+        /// <summary>
+        /// 鍏ュ簱鍗曟湇鍔�
+        /// </summary>
+        IInboundOrderService InboundOrderService { get; }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderDetailService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderDetailService.cs
index dcaeb06..db2e6bb 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderDetailService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderDetailService.cs
@@ -1,22 +1,17 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Common.LocationEnum;
-using WIDESEA_Core;
-using WIDESEA_Core.BaseRepository;
+锘縰sing WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
-using WIDESEA_Core.Enums;
-using WIDESEA_DTO.Stock;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_IOutboundService
 {
+    /// <summary>
+    /// 鍑哄簱鍗曟槑缁嗘湇鍔℃帴鍙�
+    /// </summary>
     public interface IOutboundOrderDetailService : IService<Dt_OutboundOrderDetail>
     {
+        /// <summary>
+        /// 鑾峰彇鍑哄簱鍗曟槑缁嗕粨鍌ㄦ帴鍙�
+        /// </summary>
         IRepository<Dt_OutboundOrderDetail> Repository { get; }
-       
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderService.cs
index 9d307c2..ff53045 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundOrderService.cs
@@ -1,20 +1,17 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core;
-using WIDESEA_Core.BaseRepository;
+锘縰sing WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
-using WIDESEA_DTO.Inbound;
-using WIDESEA_DTO.Outbound;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_IOutboundService
 {
+    /// <summary>
+    /// 鍑哄簱鍗曟湇鍔℃帴鍙�
+    /// </summary>
     public interface IOutboundOrderService : IService<Dt_OutboundOrder>
     {
+        /// <summary>
+        /// 鑾峰彇鍑哄簱鍗曚粨鍌ㄦ帴鍙�
+        /// </summary>
         IRepository<Dt_OutboundOrder> Repository { get; }
-
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs
index 7e86e2f..26d5d4f 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs
@@ -1,18 +1,25 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core;
+锘縰sing WIDESEA_Core;
 
 namespace WIDESEA_IOutboundService
 {
-    public interface IOutboundService:IDependency
+    /// <summary>
+    /// 鍑哄簱鏈嶅姟鑱氬悎鎺ュ彛
+    /// </summary>
+    public interface IOutboundService : IDependency
     {
+        /// <summary>
+        /// 鍑哄簱鍗曟槑缁嗘湇鍔�
+        /// </summary>
         IOutboundOrderDetailService OutboundOrderDetailService { get; }
 
+        /// <summary>
+        /// 鍑哄簱鍗曟湇鍔�
+        /// </summary>
         IOutboundOrderService OutboundOrderService { get; }
 
-        IOutStockLockInfoService OutboundStockLockInfoService { get; }
+        /// <summary>
+        /// 鍑哄簱搴撳瓨閿佸畾淇℃伅鏈嶅姟
+        /// </summary>
+        IOutStockLockInfoService OutStockLockInfoService { get; }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/ILocationStatusChangeRecordService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/ILocationStatusChangeRecordService.cs
index ed24872..e89344c 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/ILocationStatusChangeRecordService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/ILocationStatusChangeRecordService.cs
@@ -1,18 +1,17 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Common.LocationEnum;
-using WIDESEA_Core;
-using WIDESEA_Core.BaseRepository;
+锘縰sing WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_IRecordService
 {
+    /// <summary>
+    /// 璐т綅鐘舵�佸彉鏇磋褰曟湇鍔℃帴鍙�
+    /// </summary>
     public interface ILocationStatusChangeRecordService : IService<Dt_LocationStatusChangeRecord>
     {
+        /// <summary>
+        /// 鑾峰彇璐т綅鐘舵�佸彉鏇磋褰曚粨鍌ㄦ帴鍙�
+        /// </summary>
         IRepository<Dt_LocationStatusChangeRecord> Repository { get; }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/IRecordService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/IRecordService.cs
index 5c9e120..988fa8b 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/IRecordService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/IRecordService.cs
@@ -1,16 +1,20 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core;
+锘縰sing WIDESEA_Core;
 
 namespace WIDESEA_IRecordService
 {
+    /// <summary>
+    /// 璁板綍鏈嶅姟鑱氬悎鎺ュ彛
+    /// </summary>
     public interface IRecordService : IDependency
     {
-        ILocationStatusChangeRecordService LocationStatusChangeRecordSetvice { get; }
+        /// <summary>
+        /// 璐т綅鐘舵�佸彉鏇磋褰曟湇鍔�
+        /// </summary>
+        ILocationStatusChangeRecordService LocationStatusChangeRecordService { get; }
 
+        /// <summary>
+        /// 搴撳瓨鏁伴噺鍙樻洿璁板綍鏈嶅姟
+        /// </summary>
         IStockQuantityChangeRecordService StockQuantityChangeRecordService { get; }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/IStockQuantityChangeRecordService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/IStockQuantityChangeRecordService.cs
index b1221bb..474e5db 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/IStockQuantityChangeRecordService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/IStockQuantityChangeRecordService.cs
@@ -1,18 +1,17 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Common.StockEnum;
-using WIDESEA_Core.BaseRepository;
+锘縰sing WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
-using WIDESEA_Core.Enums;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_IRecordService
 {
+    /// <summary>
+    /// 搴撳瓨鏁伴噺鍙樻洿璁板綍鏈嶅姟鎺ュ彛
+    /// </summary>
     public interface IStockQuantityChangeRecordService : IService<Dt_StockQuantityChangeRecord>
     {
+        /// <summary>
+        /// 鑾峰彇搴撳瓨鏁伴噺鍙樻洿璁板綍浠撳偍鎺ュ彛
+        /// </summary>
         IRepository<Dt_StockQuantityChangeRecord> Repository { get; }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoDetailService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoDetailService.cs
index 92c9c04..da12ca1 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoDetailService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoDetailService.cs
@@ -4,8 +4,14 @@
 
 namespace WIDESEA_IStockService
 {
+    /// <summary>
+    /// 搴撳瓨鏄庣粏鏈嶅姟鎺ュ彛
+    /// </summary>
     public interface IStockInfoDetailService : IService<Dt_StockInfoDetail>
     {
+        /// <summary>
+        /// 鑾峰彇搴撳瓨鏄庣粏浠撳偍鎺ュ彛
+        /// </summary>
         IRepository<Dt_StockInfoDetail> Repository { get; }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs
index 5c20e6d..163d16d 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs
@@ -4,43 +4,49 @@
 
 namespace WIDESEA_IStockService
 {
+    /// <summary>
+    /// 搴撳瓨淇℃伅鏈嶅姟鎺ュ彛
+    /// </summary>
     public interface IStockInfoService : IService<Dt_StockInfo>
     {
+        /// <summary>
+        /// 鑾峰彇搴撳瓨淇℃伅浠撳偍鎺ュ彛
+        /// </summary>
         IRepository<Dt_StockInfo> Repository { get; }
 
         /// <summary>
         /// 鑾峰彇搴撳瓨淇℃伅鍒楄〃锛堝嚭搴撴棩鏈熷皬浜庡綋鍓嶆椂闂翠笖搴撳瓨鐘舵�佷负鍏ュ簱瀹屾垚鐨勮褰曪級
         /// </summary>
-        /// <returns></returns>
-        public Task<List<Dt_StockInfo>> GetStockInfoAsync();
+        /// <returns>搴撳瓨淇℃伅鍒楄〃</returns>
+        Task<List<Dt_StockInfo>> GetStockInfoAsync();
 
         /// <summary>
         /// 鑾峰彇搴撳瓨淇℃伅鍒楄〃锛堝嚭搴撴棩鏈熷皬浜庡綋鍓嶆椂闂翠笖搴撳瓨鐘舵�佷负鍏ュ簱瀹屾垚鐨勮褰曪紝涓斾粨搴揑D鍖归厤锛�
         /// </summary>
-        /// <param name="WarehouseId"></param>
-        /// <returns></returns>
-        public Task<List<Dt_StockInfo>> GetStockInfoAsync(int WarehouseId);
+        /// <param name="warehouseId">浠撳簱ID</param>
+        /// <returns>搴撳瓨淇℃伅鍒楄〃</returns>
+        Task<List<Dt_StockInfo>> GetStockInfoAsync(int warehouseId);
 
         /// <summary>
         /// 鑾峰彇搴撳瓨淇℃伅锛堟牴鎹墭鐩樼爜鏌ヨ锛�
         /// </summary>
-        /// <param name="PalletCode"></param>
-        /// <returns></returns>
-        public Task<Dt_StockInfo> GetStockInfoAsync(string PalletCode);
+        /// <param name="palletCode">鎵樼洏缂栫爜</param>
+        /// <returns>搴撳瓨淇℃伅</returns>
+        Task<Dt_StockInfo> GetStockInfoAsync(string palletCode);
 
         /// <summary>
         /// 鏇存柊搴撳瓨鏁版嵁
         /// </summary>
-        /// <param name="stockInfo"></param>
-        /// <returns></returns>
-        public Task<bool> UpdateStockAsync(Dt_StockInfo stockInfo);
+        /// <param name="stockInfo">搴撳瓨淇℃伅瀵硅薄</param>
+        /// <returns>鏇存柊鏄惁鎴愬姛</returns>
+        Task<bool> UpdateStockAsync(Dt_StockInfo stockInfo);
 
         /// <summary>
-        /// 妫�绱㈡寚瀹氭墭鐩樺湪缁欏畾浣嶇疆鐨勫簱瀛樿缁嗕俊鎭��
+        /// 妫�绱㈡寚瀹氭墭鐩樺湪缁欏畾浣嶇疆鐨勫簱瀛樿缁嗕俊鎭�
         /// </summary>
-        /// <param name="palletCode">璇锋眰搴撳瓨淇℃伅鐨勬墭鐩樺敮涓�鏍囪瘑绗︺�備笉鑳戒负 null 鎴栫┖銆�</param>
-        /// <param name="locationCode">琛ㄧず鎵樼洏瀛樺偍浣嶇疆鐨勪唬鐮併�備笉鑳戒负 null 鎴栫┖銆�</param>
-        /// <returns>琛ㄧず寮傛鎿嶄綔鐨勪换鍔°�備换鍔$粨鏋滃寘鍚竴涓� <see cref="Dt_StockInfo"/> 瀵硅薄锛岃瀵硅薄鍖呭惈鎸囧畾鎵樼洏鍜屼綅缃殑搴撳瓨璇︾粏淇℃伅銆傚鏋滄湭鎵惧埌鍖归厤鐨勫簱瀛樹俊鎭紝鍒欒繑鍥� null銆�</returns>
-        public Task<Dt_StockInfo> GetStockInfoAsync(string palletCode, string locationCode);
+        /// <param name="palletCode">鎵樼洏缂栫爜</param>
+        /// <param name="locationCode">璐т綅缂栫爜</param>
+        /// <returns>搴撳瓨淇℃伅</returns>
+        Task<Dt_StockInfo> GetStockInfoAsync(string palletCode, string locationCode);
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockService.cs
index d28570d..6d835c6 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockService.cs
@@ -1,36 +1,59 @@
-锘縰sing Microsoft.AspNetCore.Mvc;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core;
+锘縰sing WIDESEA_Core;
 using WIDESEA_DTO.Stock;
 
 namespace WIDESEA_IStockService
 {
+    /// <summary>
+    /// 搴撳瓨鏈嶅姟鑱氬悎鎺ュ彛
+    /// </summary>
     public interface IStockService : IDependency
     {
+        /// <summary>
+        /// 搴撳瓨鏄庣粏鏈嶅姟
+        /// </summary>
         IStockInfoDetailService StockInfoDetailService { get; }
 
+        /// <summary>
+        /// 搴撳瓨淇℃伅鏈嶅姟
+        /// </summary>
         IStockInfoService StockInfoService { get; }
 
+        /// <summary>
+        /// 搴撳瓨鏄庣粏鍘嗗彶鏈嶅姟
+        /// </summary>
         IStockInfoDetail_HtyService StockInfoDetail_HtyService { get; }
 
+        /// <summary>
+        /// 搴撳瓨鍘嗗彶鏈嶅姟
+        /// </summary>
         IStockInfo_HtyService StockInfo_HtyService { get; }
 
+        /// <summary>
+        /// 缁勭洏鎿嶄綔
+        /// </summary>
+        /// <param name="stock">搴撳瓨鏁版嵁浼犺緭瀵硅薄</param>
+        /// <returns>鎿嶄綔缁撴灉</returns>
         Task<WebResponseContent> GroupPalletAsync(StockDTO stock);
 
+        /// <summary>
+        /// 鎹㈢洏鎿嶄綔
+        /// </summary>
+        /// <param name="stock">搴撳瓨鏁版嵁浼犺緭瀵硅薄</param>
+        /// <returns>鎿嶄綔缁撴灉</returns>
         Task<WebResponseContent> ChangePalletAsync(StockDTO stock);
 
+        /// <summary>
+        /// 鎷嗙洏鎿嶄綔
+        /// </summary>
+        /// <param name="stock">搴撳瓨鏁版嵁浼犺緭瀵硅薄</param>
+        /// <returns>鎿嶄綔缁撴灉</returns>
         Task<WebResponseContent> SplitPalletAsync(StockDTO stock);
 
         /// <summary>
         /// 鍫嗗灈鏈烘崲鐩樺悗鏇存柊搴撳瓨淇℃伅锛堟竻绌哄簱浣嶄俊鎭級
         /// </summary>
-        /// <param name="stock"></param>
-        /// <returns></returns>
+        /// <param name="stock">搴撳瓨淇℃伅鏁版嵁浼犺緭瀵硅薄</param>
+        /// <returns>鎿嶄綔缁撴灉</returns>
         Task<WebResponseContent> UpdateStockInfoAsync(StockInfoDTO stock);
-
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs
index 0697885..1170aa9 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs
@@ -18,6 +18,8 @@
 using SqlSugar;
 using System;
 using System.Collections.Generic;
+using System.Threading.Tasks;
+using WIDESEA_DTO.GradingMachine;
 using System.Diagnostics.CodeAnalysis;
 using System.Linq;
 using System.Text;
@@ -96,30 +98,30 @@
         /// <summary>
         /// 鍫嗗灈鏈哄彇鏀捐揣瀹屾垚鍚庣墿娴侀�氱煡鍖栨垚鍒嗗鏌滃畬鎴愪俊鍙�
         /// </summary>
-        /// <param name="input"></param>
-        /// <returns></returns>
-        public Task<WebResponseContent> InOrOutCompletedAsync(InputDto input);
+        /// <param name="input">鍒嗗鏌滆緭鍏ユ暟鎹�</param>
+        /// <returns>鎿嶄綔缁撴灉</returns>
+        public Task<WebResponseContent> InOrOutCompletedAsync(GradingMachineInputDto input);
 
         /// <summary>
         /// 鍖栨垚鍒嗗鏌滃畾鏃跺悜鐗╂祦鏇存柊鍒嗗鏌滅姸鎬佷俊鎭�
         /// </summary>
-        /// <param name="input"></param>
-        /// <returns></returns>
-        public Task<WebResponseContent> SendLocationStatusAsync(InputDto input);
+        /// <param name="input">鍒嗗鏌滆緭鍏ユ暟鎹�</param>
+        /// <returns>鎿嶄綔缁撴灉</returns>
+        public Task<WebResponseContent> SendLocationStatusAsync(GradingMachineInputDto input);
 
         /// <summary>
         /// 鍒嗗鏌滃伐浣滃畬鎴愬悗璋冪敤姝ゆ帴鍙i�氱煡鐗╂祦鍑哄簱
         /// </summary>
-        /// <param name="input"></param>
-        /// <returns></returns>
-        public Task<WebResponseContent> RequestOutboundAsync(InputDto input);
+        /// <param name="input">鍒嗗鏌滆緭鍏ユ暟鎹�</param>
+        /// <returns>鎿嶄綔缁撴灉</returns>
+        public Task<WebResponseContent> RequestOutboundAsync(GradingMachineInputDto input);
 
         /// <summary>
         /// 鍏ュ簱瀹屾垚鍒嗗璋冪敤鑾峰彇鎵樼洏涓婃瘡涓�氶亾鐢佃姱
         /// </summary>
-        /// <param name="input"></param>
-        /// <returns></returns>
-        public Task<WebResponseContent> GetPalletCodeCellAsync(InputDto input);
+        /// <param name="input">鍒嗗鏌滆緭鍏ユ暟鎹�</param>
+        /// <returns>鎿嶄綔缁撴灉</returns>
+        public Task<WebResponseContent> GetPalletCodeCellAsync(GradingMachineInputDto input);
 
         /// <summary>
         /// 鑷姩鍒涘缓鍑哄簱浠诲姟 - 鏌ヨ鍒版湡搴撳瓨骞跺垱寤轰换鍔�
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderDetailService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderDetailService.cs
index 0c7afc5..5fb0566 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderDetailService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderDetailService.cs
@@ -1,24 +1,25 @@
-锘縰sing Org.BouncyCastle.Crypto;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core;
-using WIDESEA_Core.BaseRepository;
+锘縰sing WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
-using WIDESEA_Core.Enums;
-using WIDESEA_Core.Helper;
 using WIDESEA_IInboundService;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_InboundService
 {
+    /// <summary>
+    /// 鍏ュ簱鍗曟槑缁嗘湇鍔″疄鐜扮被
+    /// </summary>
     public class InboundOrderDetailService : ServiceBase<Dt_InboundOrderDetail, IRepository<Dt_InboundOrderDetail>>, IInboundOrderDetailService
     {
+        /// <summary>
+        /// 鑾峰彇鍏ュ簱鍗曟槑缁嗕粨鍌ㄦ帴鍙�
+        /// </summary>
         public IRepository<Dt_InboundOrderDetail> Repository => BaseDal;
 
-        public InboundOrderDetailService(IRepository<Dt_InboundOrderDetail> BaseDal) : base(BaseDal)
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="baseDal">鍩虹鏁版嵁璁块棶瀵硅薄</param>
+        public InboundOrderDetailService(IRepository<Dt_InboundOrderDetail> baseDal) : base(baseDal)
         {
         }
     }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs
index f3f6996..437a55d 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs
@@ -8,18 +8,32 @@
 
 namespace WIDESEA_InboundService
 {
+    /// <summary>
+    /// 鍏ュ簱鍗曟湇鍔″疄鐜扮被
+    /// </summary>
     public class InboundOrderService : ServiceBase<Dt_InboundOrder, IRepository<Dt_InboundOrder>>, IInboundOrderService
     {
         private readonly IMapper _mapper;
         private readonly IUnitOfWorkManage _unitOfWorkManage;
 
+        /// <summary>
+        /// 鑾峰彇鍏ュ簱鍗曚粨鍌ㄦ帴鍙�
+        /// </summary>
         public IRepository<Dt_InboundOrder> Repository => BaseDal;
 
-        public InboundOrderService(IRepository<Dt_InboundOrder> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="baseDal">鍩虹鏁版嵁璁块棶瀵硅薄</param>
+        /// <param name="mapper">瀵硅薄鏄犲皠鍣�</param>
+        /// <param name="unitOfWorkManage">宸ヤ綔鍗曞厓绠$悊鍣�</param>
+        public InboundOrderService(
+            IRepository<Dt_InboundOrder> baseDal,
+            IMapper mapper,
+            IUnitOfWorkManage unitOfWorkManage) : base(baseDal)
         {
             _mapper = mapper;
             _unitOfWorkManage = unitOfWorkManage;
         }
-       
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs
index 97a2766..b896ccb 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs
@@ -1,22 +1,33 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_IInboundService;
+锘縰sing WIDESEA_IInboundService;
 
 namespace WIDESEA_InboundService
 {
+    /// <summary>
+    /// 鍏ュ簱鏈嶅姟鑱氬悎瀹炵幇绫�
+    /// </summary>
     public class InboundService : IInboundService
     {
+        /// <summary>
+        /// 鍏ュ簱鍗曟槑缁嗘湇鍔�
+        /// </summary>
         public IInboundOrderDetailService InboundOrderDetailService { get; }
 
-        public IInboundOrderService InbounOrderService { get; }
+        /// <summary>
+        /// 鍏ュ簱鍗曟湇鍔�
+        /// </summary>
+        public IInboundOrderService InboundOrderService { get; }
 
-        public InboundService(IInboundOrderDetailService inboundOrderDetailService, IInboundOrderService inbounOrderService)
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="inboundOrderDetailService">鍏ュ簱鍗曟槑缁嗘湇鍔�</param>
+        /// <param name="inboundOrderService">鍏ュ簱鍗曟湇鍔�</param>
+        public InboundService(
+            IInboundOrderDetailService inboundOrderDetailService,
+            IInboundOrderService inboundOrderService)
         {
             InboundOrderDetailService = inboundOrderDetailService;
-            InbounOrderService = inbounOrderService;
+            InboundOrderService = inboundOrderService;
         }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Model/LoginInfo.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Model/LoginInfo.cs
index 678745b..caf46c4 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Model/LoginInfo.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Model/LoginInfo.cs
@@ -1,15 +1,18 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
 namespace WIDESEA_Model
 {
+    /// <summary>
+    /// 鐧诲綍淇℃伅妯″瀷
+    /// </summary>
     public class LoginInfo
     {
-        public string UserName { get; set; }
+        /// <summary>
+        /// 鐢ㄦ埛鍚�
+        /// </summary>
+        public string UserName { get; set; } = string.Empty;
 
-        public string Password { get; set; }
+        /// <summary>
+        /// 瀵嗙爜
+        /// </summary>
+        public string Password { get; set; } = string.Empty;
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs
index 45c6d75..d36dfac 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs
@@ -5,16 +5,28 @@
 
 namespace WIDESEA_OutboundService
 {
+    /// <summary>
+    /// 鍑哄簱鍗曟槑缁嗘湇鍔″疄鐜扮被
+    /// </summary>
     public partial class OutboundOrderDetailService : ServiceBase<Dt_OutboundOrderDetail, IRepository<Dt_OutboundOrderDetail>>, IOutboundOrderDetailService
     {
         private readonly IUnitOfWorkManage _unitOfWorkManage;
 
+        /// <summary>
+        /// 鑾峰彇鍑哄簱鍗曟槑缁嗕粨鍌ㄦ帴鍙�
+        /// </summary>
         public IRepository<Dt_OutboundOrderDetail> Repository => BaseDal;
 
-        public OutboundOrderDetailService(IRepository<Dt_OutboundOrderDetail> BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="baseDal">鍩虹鏁版嵁璁块棶瀵硅薄</param>
+        /// <param name="unitOfWorkManage">宸ヤ綔鍗曞厓绠$悊鍣�</param>
+        public OutboundOrderDetailService(
+            IRepository<Dt_OutboundOrderDetail> baseDal,
+            IUnitOfWorkManage unitOfWorkManage) : base(baseDal)
         {
             _unitOfWorkManage = unitOfWorkManage;
         }
-       
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs
index eac2e66..d2ab0c3 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderService.cs
@@ -6,17 +6,32 @@
 
 namespace WIDESEA_OutboundService
 {
+    /// <summary>
+    /// 鍑哄簱鍗曟湇鍔″疄鐜扮被
+    /// </summary>
     public class OutboundOrderService : ServiceBase<Dt_OutboundOrder, IRepository<Dt_OutboundOrder>>, IOutboundOrderService
     {
         private readonly IMapper _mapper;
         private readonly IUnitOfWorkManage _unitOfWorkManage;
+
+        /// <summary>
+        /// 鑾峰彇鍑哄簱鍗曚粨鍌ㄦ帴鍙�
+        /// </summary>
         public IRepository<Dt_OutboundOrder> Repository => BaseDal;
 
-        public OutboundOrderService(IRepository<Dt_OutboundOrder> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="baseDal">鍩虹鏁版嵁璁块棶瀵硅薄</param>
+        /// <param name="mapper">瀵硅薄鏄犲皠鍣�</param>
+        /// <param name="unitOfWorkManage">宸ヤ綔鍗曞厓绠$悊鍣�</param>
+        public OutboundOrderService(
+            IRepository<Dt_OutboundOrder> baseDal,
+            IMapper mapper,
+            IUnitOfWorkManage unitOfWorkManage) : base(baseDal)
         {
             _mapper = mapper;
             _unitOfWorkManage = unitOfWorkManage;
         }
-        
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs
index 0b2aae4..cad95b5 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs
@@ -2,20 +2,40 @@
 
 namespace WIDESEA_OutboundService
 {
+    /// <summary>
+    /// 鍑哄簱鏈嶅姟鑱氬悎瀹炵幇绫�
+    /// </summary>
     public class OutboundService : IOutboundService
     {
-
+        /// <summary>
+        /// 鍑哄簱鍗曟槑缁嗘湇鍔�
+        /// </summary>
         public IOutboundOrderDetailService OutboundOrderDetailService { get; }
 
+        /// <summary>
+        /// 鍑哄簱鍗曟湇鍔�
+        /// </summary>
         public IOutboundOrderService OutboundOrderService { get; }
 
-        public IOutStockLockInfoService OutboundStockLockInfoService { get; }
+        /// <summary>
+        /// 鍑哄簱搴撳瓨閿佸畾淇℃伅鏈嶅姟
+        /// </summary>
+        public IOutStockLockInfoService OutStockLockInfoService { get; }
 
-        public OutboundService(IOutboundOrderDetailService outboundOrderDetailService, IOutboundOrderService outboundOrderService, IOutStockLockInfoService outboundStockLockInfoService)
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="outboundOrderDetailService">鍑哄簱鍗曟槑缁嗘湇鍔�</param>
+        /// <param name="outboundOrderService">鍑哄簱鍗曟湇鍔�</param>
+        /// <param name="outStockLockInfoService">鍑哄簱搴撳瓨閿佸畾淇℃伅鏈嶅姟</param>
+        public OutboundService(
+            IOutboundOrderDetailService outboundOrderDetailService,
+            IOutboundOrderService outboundOrderService,
+            IOutStockLockInfoService outStockLockInfoService)
         {
             OutboundOrderDetailService = outboundOrderDetailService;
             OutboundOrderService = outboundOrderService;
-            OutboundStockLockInfoService = outboundStockLockInfoService;
+            OutStockLockInfoService = outStockLockInfoService;
         }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/LocationStatusChangeRecordService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/LocationStatusChangeRecordService.cs
index d159a29..28b3d83 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/LocationStatusChangeRecordService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/LocationStatusChangeRecordService.cs
@@ -5,12 +5,22 @@
 
 namespace WIDESEA_RecordService
 {
+    /// <summary>
+    /// 璐т綅鐘舵�佸彉鏇磋褰曟湇鍔″疄鐜扮被
+    /// </summary>
     public partial class LocationStatusChangeRecordService : ServiceBase<Dt_LocationStatusChangeRecord, IRepository<Dt_LocationStatusChangeRecord>>, ILocationStatusChangeRecordService
     {
-        public LocationStatusChangeRecordService(IRepository<Dt_LocationStatusChangeRecord> BaseDal) : base(BaseDal)
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="baseDal">鍩虹鏁版嵁璁块棶瀵硅薄</param>
+        public LocationStatusChangeRecordService(IRepository<Dt_LocationStatusChangeRecord> baseDal) : base(baseDal)
         {
         }
 
+        /// <summary>
+        /// 鑾峰彇璐т綅鐘舵�佸彉鏇磋褰曚粨鍌ㄦ帴鍙�
+        /// </summary>
         public IRepository<Dt_LocationStatusChangeRecord> Repository => BaseDal;
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/RecordService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/RecordService.cs
index 5b98765..7a8c6b8 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/RecordService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/RecordService.cs
@@ -1,21 +1,32 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_IRecordService;
+锘縰sing WIDESEA_IRecordService;
 
 namespace WIDESEA_RecordService
 {
+    /// <summary>
+    /// 璁板綍鏈嶅姟鑱氬悎瀹炵幇绫�
+    /// </summary>
     public class RecordService : IRecordService
     {
-        public ILocationStatusChangeRecordService LocationStatusChangeRecordSetvice { get; }
+        /// <summary>
+        /// 璐т綅鐘舵�佸彉鏇磋褰曟湇鍔�
+        /// </summary>
+        public ILocationStatusChangeRecordService LocationStatusChangeRecordService { get; }
 
+        /// <summary>
+        /// 搴撳瓨鏁伴噺鍙樻洿璁板綍鏈嶅姟
+        /// </summary>
         public IStockQuantityChangeRecordService StockQuantityChangeRecordService { get; }
 
-        public RecordService(ILocationStatusChangeRecordService locationStatusChangeRecordSetvice, IStockQuantityChangeRecordService stockQuantityChangeRecordService)
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="locationStatusChangeRecordService">璐т綅鐘舵�佸彉鏇磋褰曟湇鍔�</param>
+        /// <param name="stockQuantityChangeRecordService">搴撳瓨鏁伴噺鍙樻洿璁板綍鏈嶅姟</param>
+        public RecordService(
+            ILocationStatusChangeRecordService locationStatusChangeRecordService,
+            IStockQuantityChangeRecordService stockQuantityChangeRecordService)
         {
-            LocationStatusChangeRecordSetvice = locationStatusChangeRecordSetvice;
+            LocationStatusChangeRecordService = locationStatusChangeRecordService;
             StockQuantityChangeRecordService = stockQuantityChangeRecordService;
         }
     }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/StockQuantityChangeRecordService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/StockQuantityChangeRecordService.cs
index db3e38b..cf9c1d8 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/StockQuantityChangeRecordService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/StockQuantityChangeRecordService.cs
@@ -6,14 +6,26 @@
 
 namespace WIDESEA_RecordService
 {
+    /// <summary>
+    /// 搴撳瓨鏁伴噺鍙樻洿璁板綍鏈嶅姟瀹炵幇绫�
+    /// </summary>
     public partial class StockQuantityChangeRecordService : ServiceBase<Dt_StockQuantityChangeRecord, IRepository<Dt_StockQuantityChangeRecord>>, IStockQuantityChangeRecordService
     {
         private readonly IMapper _mapper;
-        public StockQuantityChangeRecordService(IRepository<Dt_StockQuantityChangeRecord> BaseDal, IMapper mapper) : base(BaseDal)
+
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="baseDal">鍩虹鏁版嵁璁块棶瀵硅薄</param>
+        /// <param name="mapper">瀵硅薄鏄犲皠鍣�</param>
+        public StockQuantityChangeRecordService(IRepository<Dt_StockQuantityChangeRecord> baseDal, IMapper mapper) : base(baseDal)
         {
             _mapper = mapper;
         }
 
+        /// <summary>
+        /// 鑾峰彇搴撳瓨鏁伴噺鍙樻洿璁板綍浠撳偍鎺ュ彛
+        /// </summary>
         public IRepository<Dt_StockQuantityChangeRecord> Repository => BaseDal;
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetailService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetailService.cs
index 47ccfdf..84c3800 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetailService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetailService.cs
@@ -5,22 +5,42 @@
 
 namespace WIDESEA_StockService
 {
+    /// <summary>
+    /// 搴撳瓨鏄庣粏鏈嶅姟瀹炵幇绫�
+    /// </summary>
     public partial class StockInfoDetailService : ServiceBase<Dt_StockInfoDetail, IRepository<Dt_StockInfoDetail>>, IStockInfoDetailService
     {
-        public StockInfoDetailService(IRepository<Dt_StockInfoDetail> BaseDal) : base(BaseDal)
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="baseDal">鍩虹鏁版嵁璁块棶瀵硅薄</param>
+        public StockInfoDetailService(IRepository<Dt_StockInfoDetail> baseDal) : base(baseDal)
         {
         }
 
+        /// <summary>
+        /// 鑾峰彇搴撳瓨鏄庣粏浠撳偍鎺ュ彛
+        /// </summary>
         public IRepository<Dt_StockInfoDetail> Repository => BaseDal;
 
-        public bool ExistSerialNumber(string SerialNumber)
+        /// <summary>
+        /// 妫�鏌ュ簭鍒楀彿鏄惁瀛樺湪
+        /// </summary>
+        /// <param name="serialNumber">搴忓垪鍙�</param>
+        /// <returns>鏄惁瀛樺湪</returns>
+        public bool ExistSerialNumber(string serialNumber)
         {
-            return BaseDal.QueryFirst(x => x.SerialNumber == SerialNumber) != null;
+            return BaseDal.QueryFirst(x => x.SerialNumber == serialNumber) != null;
         }
 
-        public bool ExistSerialNumbers(List<string> SerialNumbers)
+        /// <summary>
+        /// 妫�鏌ュ簭鍒楀彿鍒楄〃涓槸鍚︽湁浠讳綍搴忓垪鍙峰瓨鍦�
+        /// </summary>
+        /// <param name="serialNumbers">搴忓垪鍙峰垪琛�</param>
+        /// <returns>鏄惁瀛樺湪</returns>
+        public bool ExistSerialNumbers(List<string> serialNumbers)
         {
-            return BaseDal.QueryFirst(x => SerialNumbers.Contains(x.SerialNumber)) != null;
+            return BaseDal.QueryFirst(x => serialNumbers.Contains(x.SerialNumber)) != null;
         }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs
index 9de9cb6..8e4027b 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs
@@ -1,4 +1,4 @@
-锘縰sing WIDESEA_Common.StockEnum;
+using WIDESEA_Common.StockEnum;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_IStockService;
@@ -6,17 +6,28 @@
 
 namespace WIDESEA_StockService
 {
+    /// <summary>
+    /// 搴撳瓨淇℃伅鏈嶅姟瀹炵幇绫�
+    /// </summary>
     public partial class StockInfoService : ServiceBase<Dt_StockInfo, IRepository<Dt_StockInfo>>, IStockInfoService
     {
+        /// <summary>
+        /// 鑾峰彇搴撳瓨淇℃伅浠撳偍鎺ュ彛
+        /// </summary>
         public IRepository<Dt_StockInfo> Repository => BaseDal;
 
-        public StockInfoService(IRepository<Dt_StockInfo> BaseDal) : base(BaseDal)
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="baseDal">鍩虹鏁版嵁璁块棶瀵硅薄</param>
+        public StockInfoService(IRepository<Dt_StockInfo> baseDal) : base(baseDal)
         {
         }
 
         /// <summary>
         /// 鑾峰彇搴撳瓨淇℃伅鍒楄〃锛堝嚭搴撴棩鏈熷皬浜庡綋鍓嶆椂闂翠笖搴撳瓨鐘舵�佷负鍏ュ簱瀹屾垚鐨勮褰曪級
         /// </summary>
+        /// <returns>搴撳瓨淇℃伅鍒楄〃</returns>
         public async Task<List<Dt_StockInfo>> GetStockInfoAsync()
         {
             return await BaseDal.QueryDataAsync(x =>
@@ -27,6 +38,8 @@
         /// <summary>
         /// 鑾峰彇搴撳瓨淇℃伅鍒楄〃锛堝嚭搴撴棩鏈熷皬浜庡綋鍓嶆椂闂翠笖搴撳瓨鐘舵�佷负鍏ュ簱瀹屾垚鐨勮褰曪紝涓斾粨搴揑D鍖归厤锛�
         /// </summary>
+        /// <param name="warehouseId">浠撳簱ID</param>
+        /// <returns>搴撳瓨淇℃伅鍒楄〃</returns>
         public async Task<List<Dt_StockInfo>> GetStockInfoAsync(int warehouseId)
         {
             return await BaseDal.QueryDataAsync(x =>
@@ -38,6 +51,8 @@
         /// <summary>
         /// 鑾峰彇搴撳瓨淇℃伅锛堟牴鎹墭鐩樼爜鏌ヨ锛�
         /// </summary>
+        /// <param name="palletCode">鎵樼洏缂栫爜</param>
+        /// <returns>搴撳瓨淇℃伅</returns>
         public async Task<Dt_StockInfo> GetStockInfoAsync(string palletCode)
         {
             return await BaseDal.QueryDataNavFirstAsync(x => x.PalletCode == palletCode);
@@ -46,18 +61,19 @@
         /// <summary>
         /// 鏇存柊搴撳瓨鏁版嵁
         /// </summary>
+        /// <param name="stockInfo">搴撳瓨淇℃伅瀵硅薄</param>
+        /// <returns>鏇存柊鏄惁鎴愬姛</returns>
         public async Task<bool> UpdateStockAsync(Dt_StockInfo stockInfo)
         {
             return await BaseDal.UpdateDataAsync(stockInfo);
         }
 
-
         /// <summary>
-        /// 妫�绱㈡寚瀹氭墭鐩樺湪缁欏畾浣嶇疆鐨勫簱瀛樿缁嗕俊鎭��
+        /// 妫�绱㈡寚瀹氭墭鐩樺湪缁欏畾浣嶇疆鐨勫簱瀛樿缁嗕俊鎭�
         /// </summary>
-        /// <param name="palletCode">璇锋眰搴撳瓨淇℃伅鐨勬墭鐩樺敮涓�鏍囪瘑绗︺�備笉鑳戒负 null 鎴栫┖銆�</param>
-        /// <param name="locationCode">琛ㄧず鎵樼洏瀛樺偍浣嶇疆鐨勪唬鐮併�備笉鑳戒负 null 鎴栫┖銆�</param>
-        /// <returns>琛ㄧず寮傛鎿嶄綔鐨勪换鍔°�備换鍔$粨鏋滃寘鍚竴涓� <see cref="Dt_StockInfo"/> 瀵硅薄锛岃瀵硅薄鍖呭惈鎸囧畾鎵樼洏鍜屼綅缃殑搴撳瓨璇︾粏淇℃伅銆傚鏋滄湭鎵惧埌鍖归厤鐨勫簱瀛樹俊鎭紝鍒欒繑鍥� null銆�</returns>
+        /// <param name="palletCode">鎵樼洏缂栫爜</param>
+        /// <param name="locationCode">璐т綅缂栫爜</param>
+        /// <returns>搴撳瓨淇℃伅</returns>
         public async Task<Dt_StockInfo> GetStockInfoAsync(string palletCode, string locationCode)
         {
             return await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode && x.LocationCode == locationCode);
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs
index f403368..1271ec3 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs
@@ -7,16 +7,38 @@
 namespace WIDESEA_StockService
 {
     /// <summary>
-    /// 搴撳瓨鏈嶅姟
+    /// 搴撳瓨鏈嶅姟鑱氬悎瀹炵幇绫�
     /// </summary>
-    public class StockSerivce : IStockService
+    public class StockService : IStockService
     {
+        /// <summary>
+        /// 搴撳瓨鏄庣粏鏈嶅姟
+        /// </summary>
         public IStockInfoDetailService StockInfoDetailService { get; }
+
+        /// <summary>
+        /// 搴撳瓨淇℃伅鏈嶅姟
+        /// </summary>
         public IStockInfoService StockInfoService { get; }
+
+        /// <summary>
+        /// 搴撳瓨鏄庣粏鍘嗗彶鏈嶅姟
+        /// </summary>
         public IStockInfoDetail_HtyService StockInfoDetail_HtyService { get; }
+
+        /// <summary>
+        /// 搴撳瓨鍘嗗彶鏈嶅姟
+        /// </summary>
         public IStockInfo_HtyService StockInfo_HtyService { get; }
 
-        public StockSerivce(
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="stockInfoDetailService">搴撳瓨鏄庣粏鏈嶅姟</param>
+        /// <param name="stockInfoService">搴撳瓨淇℃伅鏈嶅姟</param>
+        /// <param name="stockInfoDetail_HtyService">搴撳瓨鏄庣粏鍘嗗彶鏈嶅姟</param>
+        /// <param name="stockInfo_HtyService">搴撳瓨鍘嗗彶鏈嶅姟</param>
+        public StockService(
             IStockInfoDetailService stockInfoDetailService,
             IStockInfoService stockInfoService,
             IStockInfoDetail_HtyService stockInfoDetail_HtyService,
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs
index 2f69d4f..586a8a3 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs
@@ -35,7 +35,7 @@
                     CreateDate = b.CreateDate,
                     Creater = b.Creater,
                     Depth = a.Depth,
-                    EnalbeStatus = a.EnableStatus,
+                    EnableStatus = a.EnableStatus,
                     Layer = a.Layer,
                     LocationName = a.LocationName,
                     LocationStatus = a.LocationStatus,
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
index db2cb23..54429f5 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -9,7 +9,7 @@
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Core.Core;
-using WIDESEA_DTO;
+using WIDESEA_DTO.GradingMachine;
 using WIDESEA_DTO.Task;
 using WIDESEA_IBasicService;
 using WIDESEA_IStockService;
@@ -566,7 +566,7 @@
         /// <summary>
         /// 鍫嗗灈鏈哄彇鏀捐揣瀹屾垚鍚庣墿娴侀�氱煡鍖栨垚鍒嗗鏌滃畬鎴愪俊鍙�
         /// </summary>
-        public async Task<WebResponseContent> InOrOutCompletedAsync(InputDto input)
+        public async Task<WebResponseContent> InOrOutCompletedAsync(GradingMachineInputDto input)
         {
             WebResponseContent content = new WebResponseContent();
             if (string.IsNullOrWhiteSpace(input.PalletCode) || string.IsNullOrWhiteSpace(input.LocationCode))
@@ -581,7 +581,7 @@
                 {
                     var location = await _locationInfoService.GetLocationInfoAsync(input.LocationCode);
 
-                    OutPutDto outPutDto = new OutPutDto()
+                    OutputDto outPutDto = new OutputDto()
                     {
                         LocationCode = input.LocationCode,
                         PalletCode = input.PalletCode,
@@ -592,7 +592,7 @@
                 }
                 else
                 {
-                    OutPutDto outPutDto = new OutPutDto()
+                    OutputDto outPutDto = new OutputDto()
                     {
                         LocationCode = input.LocationCode,
                         PalletCode = input.PalletCode,
@@ -615,7 +615,7 @@
         /// </summary>
         /// <param name="input"></param>
         /// <returns></returns>
-        public async Task<WebResponseContent> SendLocationStatusAsync(InputDto input)
+        public async Task<WebResponseContent> SendLocationStatusAsync(GradingMachineInputDto input)
         {
             WebResponseContent content = new WebResponseContent();
             if (string.IsNullOrWhiteSpace(input.LocationCode))
@@ -652,7 +652,7 @@
         /// </summary>
         /// <param name="input"></param>
         /// <returns></returns>
-        public async Task<WebResponseContent> RequestOutboundAsync(InputDto input)
+        public async Task<WebResponseContent> RequestOutboundAsync(GradingMachineInputDto input)
         {
             WebResponseContent content = new WebResponseContent();
             if (string.IsNullOrWhiteSpace(input.LocationCode) || string.IsNullOrWhiteSpace(input.PalletCode))
@@ -711,7 +711,7 @@
         /// </summary>
         /// <param name="input"></param>
         /// <returns></returns>
-        public async Task<WebResponseContent> GetPalletCodeCellAsync(InputDto input)
+        public async Task<WebResponseContent> GetPalletCodeCellAsync(GradingMachineInputDto input)
         {
             WebResponseContent content = new WebResponseContent();
             if (string.IsNullOrWhiteSpace(input.PalletCode) || string.IsNullOrWhiteSpace(input.LocationCode))
@@ -725,7 +725,7 @@
                 {
                     return content.Error("鏈壘鍒板搴旂殑鎵樼洏");
                 }
-                var outPutDtos = stockInfo.Details.Select(x => new OutPutDto()
+                var outPutDtos = stockInfo.Details.Select(x => new OutputDto()
                 {
                     LocationCode = input.LocationCode,
                     PalletCode = input.PalletCode,
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/Task_HtyService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/Task_HtyService.cs
index 73bd716..9731102 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/Task_HtyService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/Task_HtyService.cs
@@ -1,13 +1,21 @@
-锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_ITaskInfoService;
 using WIDESEA_Model.Models;
 
-namespace WIDESEA_TaskInfoService;
-
-public class Task_HtyService : ServiceBase<Dt_Task_Hty, IRepository<Dt_Task_Hty>>, ITask_HtyService
+namespace WIDESEA_TaskInfoService
 {
-    public Task_HtyService(IRepository<Dt_Task_Hty> BaseDal) : base(BaseDal)
+    /// <summary>
+    /// 浠诲姟鍘嗗彶鏈嶅姟瀹炵幇绫�
+    /// </summary>
+    public class Task_HtyService : ServiceBase<Dt_Task_Hty, IRepository<Dt_Task_Hty>>, ITask_HtyService
     {
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="baseDal">鍩虹鏁版嵁璁块棶瀵硅薄</param>
+        public Task_HtyService(IRepository<Dt_Task_Hty> baseDal) : base(baseDal)
+        {
+        }
     }
-}
\ No newline at end of file
+}
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDAController.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDAController.cs
index 33d6641..59c277f 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDAController.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDAController.cs
@@ -1,6 +1,7 @@
 锘縰sing Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
+using System.IO;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseController;
 using WIDESEA_Core.Helper;
@@ -8,14 +9,12 @@
 using WIDESEA_IInboundService;
 using WIDESEA_IOutboundService;
 using WIDESEA_ITaskInfoService;
-using System.IO;
 using WIDESEA_Model.Models;
-using System;
 
 namespace WIDESEA_WMSServer.Controllers
 {
     /// <summary>
-    /// PDA
+    /// PDA 鎺у埗鍣� - 鎻愪緵PDA搴旂敤涓嬭浇銆佷笂浼犲拰鐗堟湰妫�鏌ュ姛鑳�
     /// </summary>
     [Route("api/PDA")]
     [Authorize, ApiController]
@@ -25,6 +24,9 @@
         private readonly IOutboundService _outboundService;
         private readonly ITaskService _taskService;
 
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
         public PDAController(ITaskService taskService, IInboundService inboundService, IOutboundService outboundService)
         {
             _inboundService = inboundService;
@@ -33,37 +35,30 @@
         }
 
         /// <summary>
-        /// 涓嬭浇PDA
+        /// 涓嬭浇PDA搴旂敤瀹夎鍖�
         /// </summary>
-        /// <returns></returns>
+        /// <returns>APK鏂囦欢鎴栭敊璇俊鎭�</returns>
         [HttpPost, HttpGet, Route("DownLoadApp"), AllowAnonymous]
         public virtual ActionResult DownLoadApp()
         {
-            string path = $"{AppDomain.CurrentDomain.BaseDirectory}Upload/App/";
-            if (!Directory.Exists(path)) Directory.CreateDirectory(path);
-            path += "WMS-PDA.apk";
+            const string appDirectory = "Upload/App/";
+            const string appFileName = "WMS-PDA.apk";
+            string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, appDirectory, appFileName);
 
-            if (System.IO.File.Exists(path))
+            if (!System.IO.File.Exists(path))
             {
-                byte[] fileBytes = System.IO.File.ReadAllBytes(path);
-                return File(
-                        fileBytes,
-                        System.Net.Mime.MediaTypeNames.Application.Octet,
-                        System.IO.Path.GetFileName(path)
-                    );
-            }
-            else
-            {
-                return Json(WebResponseContent.Instance.Error($"鏈壘鍒板畨瑁呭寘"));
+                return Json(WebResponseContent.Instance.Error("鏈壘鍒板畨瑁呭寘"));
             }
 
+            byte[] fileBytes = System.IO.File.ReadAllBytes(path);
+            return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, appFileName);
         }
 
         /// <summary>
-        /// 涓婁紶PDA
+        /// 涓婁紶PDA搴旂敤瀹夎鍖�
         /// </summary>
-        /// <param name="fileInput"></param>
-        /// <returns></returns>
+        /// <param name="fileInput">涓婁紶鐨勬枃浠�</param>
+        /// <returns>涓婁紶缁撴灉</returns>
         [HttpPost, HttpGet, Route("UploadApp"), AllowAnonymous]
         [Consumes("multipart/form-data")]
         public WebResponseContent UploadApp(IEnumerable<IFormFile> fileInput)
@@ -71,43 +66,72 @@
             try
             {
                 List<IFormFile> files = fileInput.ToList();
-                if (files == null || files.Count() == 0)
-                    return new WebResponseContent { Status = true, Message = "璇烽�夋嫨涓婁紶鐨勬枃浠�" };
-                IFormFile formFile = files[0];
-                string dicPath = $"{AppDomain.CurrentDomain.BaseDirectory}Upload/App/";
-                if (!Directory.Exists(dicPath)) Directory.CreateDirectory(dicPath);
-                string path = $"{dicPath}WMS-PDA{DateTime.Now:yyyyMMddhhmmss}.apk";
-                dicPath = $"{dicPath}WMS-PDA.apk";
-                if (System.IO.File.Exists(dicPath))
-                    System.IO.File.Move(dicPath, path);
+                if (files == null || files.Count == 0)
+                {
+                    return new WebResponseContent { Status = false, Message = "璇烽�夋嫨涓婁紶鐨勬枃浠�" };
+                }
 
-                using (var stream = new FileStream(dicPath, FileMode.Create))
+                IFormFile formFile = files[0];
+                const string appDirectory = "Upload/App/";
+                const string appFileName = "WMS-PDA.apk";
+                string directoryPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, appDirectory);
+
+                if (!Directory.Exists(directoryPath))
+                {
+                    Directory.CreateDirectory(directoryPath);
+                }
+
+                string backupPath = Path.Combine(directoryPath, $"WMS-PDA{DateTime.Now:yyyyMMddhhmmss}.apk");
+                string targetPath = Path.Combine(directoryPath, appFileName);
+
+                // 澶囦唤鐜版湁鏂囦欢
+                if (System.IO.File.Exists(targetPath))
+                {
+                    System.IO.File.Move(targetPath, backupPath);
+                }
+
+                // 淇濆瓨鏂版枃浠�
+                using (var stream = new FileStream(targetPath, FileMode.Create))
                 {
                     formFile.CopyTo(stream);
                 }
+
                 return new WebResponseContent { Status = true, Message = "鏂囦欢涓婁紶鎴愬姛" };
             }
             catch (Exception ex)
             {
-                return WebResponseContent.Instance.Error(ex.Message);
+                return WebResponseContent.Instance.Error($"鏂囦欢涓婁紶澶辫触锛歿ex.Message}");
             }
         }
 
+        /// <summary>
+        /// 鑾峰彇PDA鐗堟湰鍙峰苟妫�鏌ユ槸鍚﹂渶瑕佹洿鏂�
+        /// </summary>
+        /// <param name="version">褰撳墠PDA鐗堟湰鍙�</param>
+        /// <returns>鏄惁闇�瑕佹洿鏂扮殑鏍囧織</returns>
         [HttpPost, HttpGet, Route("GetPDAVersion"), AllowAnonymous]
         public WebResponseContent GetPDAVersion(string version)
         {
             try
             {
-                string versionP = AppSettings.Get("PDAVersion");
-                if (Convert.ToInt32(versionP) > Convert.ToInt32(version))
-                    return WebResponseContent.Instance.OK(data: true);
-                else return WebResponseContent.Instance.OK(data: false);
+                if (string.IsNullOrEmpty(version))
+                {
+                    return WebResponseContent.Instance.Error("鐗堟湰鍙蜂笉鑳戒负绌�");
+                }
+
+                string serverVersion = AppSettings.Get("PDAVersion");
+                if (int.TryParse(serverVersion, out int serverVersionNum) && int.TryParse(version, out int clientVersionNum))
+                {
+                    bool needUpdate = serverVersionNum > clientVersionNum;
+                    return WebResponseContent.Instance.OK(data: needUpdate);
+                }
+
+                return WebResponseContent.Instance.Error("鐗堟湰鍙锋牸寮忛敊璇�");
             }
             catch (Exception ex)
             {
-                return WebResponseContent.Instance.Error(ex.Message);
+                return WebResponseContent.Instance.Error($"鐗堟湰妫�鏌ュけ璐ワ細{ex.Message}");
             }
-
         }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_UserController.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_UserController.cs
index 0d42fac..63e52b8 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_UserController.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_UserController.cs
@@ -41,6 +41,11 @@
             return Json(Service.Login(loginInfo));
         }
 
+        /// <summary>
+        /// Swagger 鐧诲綍鎺ュ彛
+        /// </summary>
+        /// <param name="loginRequest">鐧诲綍璇锋眰</param>
+        /// <returns>鐧诲綍缁撴灉</returns>
         [HttpPost, Route("swgLogin"), AllowAnonymous]
         public dynamic SwgLogin([FromBody] SwaggerLoginRequest loginRequest)
         {
@@ -71,7 +76,8 @@
             }
             catch (Exception ex)
             {
-
+                // 璁板綍寮傚父鏃ュ織
+                return new { result = false, message = ex.Message };
             }
 
             return new { result = false };
@@ -89,11 +95,17 @@
             return Json(Service.ModifyPwd(oldPwd, newPwd));
         }
 
+        /// <summary>
+        /// 鑾峰彇楠岃瘉鐮�
+        /// 娉ㄦ剰锛氬綋鍓嶇増鏈娇鐢ㄥ浐瀹氶獙璇佺爜 "1234" 鐢ㄤ簬娴嬭瘯
+        /// </summary>
+        /// <returns>楠岃瘉鐮佸浘鐗囧拰鍞竴鏍囪瘑</returns>
         [HttpGet, Route("getVierificationCode"), AllowAnonymous]
         public IActionResult GetVierificationCode()
         {
-            //var html = MiniProfiler.Current.RenderIncludes(_httpContextAccessor.HttpContext);
-            string code = "1234" /*VierificationCode.RandomText()*/;
+            // TODO: 鐢熶骇鐜搴斿惎鐢ㄧ湡瀹為獙璇佺爜鐢熸垚
+            // var html = MiniProfiler.Current.RenderIncludes(_httpContextAccessor.HttpContext);
+            string code = "1234"; // 娴嬭瘯鐢ㄥ浐瀹氶獙璇佺爜锛岀敓浜х幆澧冨簲浣跨敤 VierificationCode.RandomText()
             var data = new
             {
                 img = VierificationCode.CreateBase64Imgage(code),
@@ -107,6 +119,10 @@
         {
             return WebResponseContent.Instance.OK(data: JwtHelper.SerializeJwt(code));
         }
+        /// <summary>
+        /// 鏇挎崲Token锛堝埛鏂颁护鐗岋級
+        /// </summary>
+        /// <returns>鏂扮殑Token</returns>
         [HttpPost, Route("replaceToken")]
         public WebResponseContent ReplaceToken()
         {
@@ -116,7 +132,7 @@
                 string token = App.User.GetToken();
                 if (string.IsNullOrEmpty(token))
                 {
-                    return responseContent = WebResponseContent.Instance.Error("token鏃犳晥锛岃閲嶆柊鐧诲綍锛�");
+                    return responseContent.Error("Token鏃犳晥锛岃閲嶆柊鐧诲綍锛�");
                 }
                 TokenModelJwt tokenModelJwt = new TokenModelJwt()
                 {
@@ -128,7 +144,7 @@
                 string newToken = JwtHelper.IssueJwt(tokenModelJwt);
 
                 App.User.UpdateToke(newToken, App.User.UserId);
-                return responseContent = WebResponseContent.Instance.OK(data: newToken);
+                return responseContent.OK(data: newToken);
             }
             catch (Exception ex)
             {
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs
index ee26111..030aaf0 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs
@@ -4,7 +4,7 @@
 using WIDESEA_Common.CommonEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseController;
-using WIDESEA_DTO;
+using WIDESEA_DTO.GradingMachine;
 using WIDESEA_DTO.Stock;
 using WIDESEA_DTO.Task;
 using WIDESEA_ITaskInfoService;
@@ -117,7 +117,7 @@
         /// <param name="input"></param>
         /// <returns></returns>
         [HttpGet, HttpPost, Route("InOrOutCompleted"), AllowAnonymous]
-        public async Task<WebResponseContent?> InOrOutCompletedAsync([FromBody] InputDto input)
+        public async Task<WebResponseContent?> InOrOutCompletedAsync([FromBody] GradingMachineInputDto input)
         {
             return await Service.InOrOutCompletedAsync(input);
         }
@@ -128,7 +128,7 @@
         /// <param name="input"></param>
         /// <returns></returns>
         [HttpGet, HttpPost, Route("SendLocationStatus"), AllowAnonymous]
-        public async Task<WebResponseContent?> SendLocationStatusAsync([FromBody] InputDto input)
+        public async Task<WebResponseContent?> SendLocationStatusAsync([FromBody] GradingMachineInputDto input)
         {
             return await Service.SendLocationStatusAsync(input);
         }
@@ -139,7 +139,7 @@
         /// <param name="input"></param>
         /// <returns></returns>
         [HttpGet, HttpPost, Route("RequestOutbound"), AllowAnonymous]
-        public async Task<WebResponseContent?> RequestOutboundAsync([FromBody] InputDto input)
+        public async Task<WebResponseContent?> RequestOutboundAsync([FromBody] GradingMachineInputDto input)
         {
             return await Service.RequestOutboundAsync(input);
         }
@@ -150,7 +150,7 @@
         /// <param name="input"></param>
         /// <returns></returns>
         [HttpGet, HttpPost, Route("GetPalletCodeCell"), AllowAnonymous]
-        public async Task<WebResponseContent?> GetPalletCodeCellAsync([FromBody] InputDto input)
+        public async Task<WebResponseContent?> GetPalletCodeCellAsync([FromBody] GradingMachineInputDto input)
         {
             return await Service.GetPalletCodeCellAsync(input);
         }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs
index 815fd7b..1d708bf 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs
@@ -27,31 +27,31 @@
 
 builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()).ConfigureContainer<ContainerBuilder>(builder =>
 {
-    builder.RegisterModule<AutofacModuleRegister>();//锟斤拷锟叫接口诧拷姆锟斤拷锟阶拷锟�
-    builder.RegisterModule<AutofacPropertityModuleReg>();//
+    builder.RegisterModule<AutofacModuleRegister>(); // 娉ㄥ唽鎺ュ彛渚濊禆娉ㄥ叆
+    builder.RegisterModule<AutofacPropertityModuleReg>(); // 娉ㄥ唽灞炴�ф敞鍏�
 }).ConfigureAppConfiguration((hostingContext, config) =>
 {
     hostingContext.Configuration.ConfigureApplication();
     config.Sources.Clear();
     config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
-}); ;
+});
 builder.ConfigureApplication();
 
-//App.ExpDateTime = DateTime.Parse("2025-03-31 00:00:00");//锟斤拷锟斤拷时锟斤拷
+// App.ExpDateTime = DateTime.Parse("2025-03-31 00:00:00"); // 璁剧疆杩囨湡鏃堕棿
 
-// 2锟斤拷锟斤拷锟矫凤拷锟斤拷
-builder.Services.AddSingleton(new AppSettings(builder.Configuration));//注锟斤拷
-builder.Services.AddAllOptionRegister();//锟斤拷取锟斤拷锟斤拷锟侥硷拷
+// 2. 閰嶇疆鏈嶅姟
+builder.Services.AddSingleton(new AppSettings(builder.Configuration)); // 娉ㄥ唽閰嶇疆
+builder.Services.AddAllOptionRegister(); // 鑾峰彇閰嶇疆鏂囦欢
 builder.Services.AddSingleton<RoundRobinService>();
 builder.Services.Configure<AutoOutboundTaskOptions>(
     builder.Configuration.GetSection("AutoOutboundTask"));
-builder.Services.AddMemoryCacheSetup();//锟斤拷锟斤拷
+builder.Services.AddMemoryCacheSetup(); // 缂撳瓨鏈嶅姟
 builder.Services.AddWebSocketSetup();
-builder.Services.AddSqlsugarSetup();//SqlSugar 锟斤拷锟斤拷锟斤拷锟斤拷
-builder.Services.AddDbSetup();//Db 锟斤拷锟斤拷锟斤拷锟斤拷
-builder.Services.AddInitializationHostServiceSetup();//应锟矫筹拷始锟斤拷锟斤拷锟斤拷注锟斤拷
+builder.Services.AddSqlsugarSetup(); // SqlSugar 鏁版嵁搴撻厤缃�
+builder.Services.AddDbSetup(); // Db 鏁版嵁搴撻厤缃�
+builder.Services.AddInitializationHostServiceSetup(); // 搴旂敤绋嬪簭鍒濆鍖栨湇鍔℃敞鍐�
 builder.Services.AddHostedService<AutoOutboundTaskBackgroundService>();
-//builder.Services.AddHostedService<PermissionDataHostService>();//锟斤拷锟斤拷权锟斤拷
+// builder.Services.AddHostedService<PermissionDataHostService>(); // 鏉冮檺鏁版嵁鏈嶅姟
 builder.Services.AddAutoMapperSetup();
 
 builder.Services.AddCorsSetup();
@@ -73,7 +73,7 @@
 
 builder.Services.AddAuthorizationSetup();
 
-builder.Services.AddIpPolicyRateLimitSetup(builder.Configuration);//IPLimit锟斤拷锟斤拷 锟斤拷锟斤拷锟斤拷锟斤拷
+builder.Services.AddIpPolicyRateLimitSetup(builder.Configuration); // IP闄愭祦 涓棿浠舵敞鍐�
 
 builder.Services.AddScoped<UseServiceDIAttribute>();
 
@@ -83,7 +83,7 @@
 
 builder.Services.AddControllers(o =>
 {
-    o.Filters.Add(typeof(GlobalExceptionsFilter));//全锟斤拷锟届常
+    o.Filters.Add(typeof(GlobalExceptionsFilter)); // 鍏ㄥ眬寮傚父澶勭悊
 })
 .AddNewtonsoftJson(options =>
 {
@@ -104,20 +104,20 @@
 
 var app = builder.Build();
 
-// 3锟斤拷锟斤拷锟斤拷锟叫硷拷锟�
-app.UseMiniProfiler();//锟斤拷锟杰凤拷锟斤拷锟斤拷
-app.ConfigureApplication();//锟斤拷锟斤拷锟侥硷拷
-app.UseApplicationSetup();//锟斤拷锟斤拷锟斤拷锟斤拷
+// 3. 閰嶇疆涓棿浠�
+app.UseMiniProfiler(); // 鎬ц兘鍒嗘瀽
+app.ConfigureApplication(); // 搴旂敤閰嶇疆
+app.UseApplicationSetup(); // 搴旂敤鍚姩
 
 app.UseAllServicesMiddle(builder.Services);
 
 app.UseSession();
 app.UseSwaggerAuthorized();
-app.UseSwaggerMiddle(() => Assembly.GetExecutingAssembly().GetManifestResourceStream("WIDESEA_WMSServer.index.html") ?? throw new Exception("WIDESEA_WMSServer.index.html锟侥硷拷"));
+app.UseSwaggerMiddle(() => Assembly.GetExecutingAssembly().GetManifestResourceStream("WIDESEA_WMSServer.index.html") ?? throw new Exception("WIDESEA_WMSServer.index.html鏂囦欢涓嶅瓨鍦�"));
 app.UseIpLimitMiddle();
 app.UseApiLogMiddleware();
-//todo
-//app.UseRecordAccessLogsMiddle();
+// todo
+// app.UseRecordAccessLogsMiddle();
 
 
 DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();

--
Gitblit v1.9.3