From 627371d0ffdf50239313f2c86d022a0c5c69550d Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期二, 21 四月 2026 19:43:46 +0800
Subject: [PATCH] refactor(logging): 重构日志记录模块,统一使用Serilog和QuartzLogHelper

---
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotPrefixCommandHandler.cs               |   16 
 Code/.omc/state/mission-state.json                                                                       |  170 +++++++++++
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RobotTaskService.cs                                |   30 +
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs                   |   55 +++
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/LogHelper/QuartzLogHelper.cs                                  |   24 +
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotMessageHandler.cs                              |   20 
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ManualInbound/ManualInboundTaskHandler.cs |   18 
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotJob.cs                                         |   24 -
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs               |   53 +--
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotTaskProcessor.cs                               |  116 +++++--
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotStateManager.cs                                |   11 
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Storage.cs                                               |   20 -
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotClientManager.cs                               |   20 
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json                                            |   17 
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/InboundTaskFlowService.cs                    |   33 +
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/CommonConveyorLineNewJob.cs               |   16 
 Code/.omc/state/last-tool-error.json                                                                     |    6 
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs                     |   13 
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotSimpleCommandHandler.cs               |   42 +-
 Code/.omc/state/subagent-tracking.json                                                                   |   87 +++++
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/RelocationTaskFlowService.cs                 |   44 ++
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Status.cs                  |   10 
 22 files changed, 610 insertions(+), 235 deletions(-)

diff --git a/Code/.omc/state/last-tool-error.json b/Code/.omc/state/last-tool-error.json
index 778c26d..5f72dd0 100644
--- a/Code/.omc/state/last-tool-error.json
+++ b/Code/.omc/state/last-tool-error.json
@@ -1,7 +1,7 @@
 {
   "tool_name": "Bash",
-  "tool_input_preview": "{\"command\":\"cd \\\"D:/Git/ShanMeiXinNengYuan/Code\\\" && dotnet build WMS/WIDESEA_WMSServer/WIDESEA_WMSServer.sln 2>&1\",\"timeout\":120000,\"description\":\"Build WMS solution to verify changes\"}",
-  "error": "Exit code 1\n  姝e湪纭畾瑕佽繕鍘熺殑椤圭洰鈥r\n  鎵�鏈夐」鐩潎鏄渶鏂扮殑锛屾棤娉曡繕鍘熴�俓r\nD:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\AOP\\LogAOP.cs(169,123): warning CS8625: 鏃犳硶灏� null 瀛楅潰閲忚浆鎹负闈� null 鐨勫紩鐢ㄧ被鍨嬨�� [D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\WIDESEA_Core.csproj]\r\nD:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Authorization\\AuthorizationResponse.cs(21,30): warning CS8625: 鏃犳硶灏� null 瀛楅潰閲忚浆鎹负闈� null 鐨勫紩鐢ㄧ被鍨嬨�� [D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\WIDES...",
-  "timestamp": "2026-04-20T16:56:32.862Z",
+  "tool_input_preview": "{\"command\":\"cd \\\"D:/Git/ShanMeiXinNengYuan/Code\\\" && dotnet build WCS/WIDESEAWCS_Server/WIDESEAWCS_Server.sln 2>&1\",\"timeout\":120000,\"description\":\"Build WCS solution to verify compilation\"}",
+  "error": "Exit code 1\n  姝e湪纭畾瑕佽繕鍘熺殑椤圭洰鈥r\n  鎵�鏈夐」鐩潎鏄渶鏂扮殑锛屾棤娉曡繕鍘熴�俓r\n  WIDESEAWCS_Common -> D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\bin\\Debug\\net8.0\\WIDESEAWCS_Common.dll\r\n  WIDESEAWCS_Communicator -> D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Communicator\\bin\\Debug\\net8.0\\WIDESEAWCS_Communicator.dll\r\n  WIDESEAWCS_Core -> D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\bin\\Debug\\net8.0\\WIDESEAWCS_Core.dll\r\n  WIDESEAWCS_Model -> D:\\Git\\ShanMeiXinN...",
+  "timestamp": "2026-04-21T09:39:52.122Z",
   "retry_count": 1
 }
\ No newline at end of file
diff --git a/Code/.omc/state/mission-state.json b/Code/.omc/state/mission-state.json
index 5fe9719..1228a50 100644
--- a/Code/.omc/state/mission-state.json
+++ b/Code/.omc/state/mission-state.json
@@ -1,5 +1,5 @@
 {
-  "updatedAt": "2026-04-20T17:02:18.624Z",
+  "updatedAt": "2026-04-21T11:39:09.598Z",
   "missions": [
     {
       "id": "session:9007b9ea-1eb6-4d24-8fe7-2c3a949eac88:none",
@@ -2350,6 +2350,174 @@
           "sourceKey": "session-stop:a82856d42f4ef095b"
         }
       ]
+    },
+    {
+      "id": "session:4b203ec2-4358-4df5-9d57-f3bf8801fd43:none",
+      "source": "session",
+      "name": "none",
+      "objective": "Session mission",
+      "createdAt": "2026-04-21T08:05:57.739Z",
+      "updatedAt": "2026-04-21T11:39:09.598Z",
+      "status": "done",
+      "workerCount": 9,
+      "taskCounts": {
+        "total": 9,
+        "pending": 0,
+        "blocked": 0,
+        "inProgress": 0,
+        "completed": 9,
+        "failed": 0
+      },
+      "agents": [
+        {
+          "name": "general-purpose:adfd244",
+          "role": "general-purpose",
+          "ownership": "adfd244986e678c43",
+          "status": "done",
+          "currentStep": null,
+          "latestUpdate": "completed",
+          "completedSummary": null,
+          "updatedAt": "2026-04-21T11:39:09.598Z"
+        },
+        {
+          "name": "general-purpose:afe58ad",
+          "role": "general-purpose",
+          "ownership": "afe58add5c15b5456",
+          "status": "done",
+          "currentStep": null,
+          "latestUpdate": "completed",
+          "completedSummary": null,
+          "updatedAt": "2026-04-21T08:10:25.852Z"
+        },
+        {
+          "name": "code-reviewer:a5f227d",
+          "role": "code-reviewer",
+          "ownership": "a5f227d0165c2b9d7",
+          "status": "done",
+          "currentStep": null,
+          "latestUpdate": "completed",
+          "completedSummary": null,
+          "updatedAt": "2026-04-21T08:15:02.522Z"
+        },
+        {
+          "name": "general-purpose:a9be028",
+          "role": "general-purpose",
+          "ownership": "a9be028ac5ebd371e",
+          "status": "done",
+          "currentStep": null,
+          "latestUpdate": "completed",
+          "completedSummary": null,
+          "updatedAt": "2026-04-21T08:16:40.974Z"
+        },
+        {
+          "name": "general-purpose:a1284f6",
+          "role": "general-purpose",
+          "ownership": "a1284f6498da348c8",
+          "status": "done",
+          "currentStep": null,
+          "latestUpdate": "completed",
+          "completedSummary": null,
+          "updatedAt": "2026-04-21T08:17:29.877Z"
+        },
+        {
+          "name": "code-reviewer:a4003ef",
+          "role": "code-reviewer",
+          "ownership": "a4003ef7b99171bad",
+          "status": "done",
+          "currentStep": null,
+          "latestUpdate": "completed",
+          "completedSummary": null,
+          "updatedAt": "2026-04-21T08:20:36.471Z"
+        },
+        {
+          "name": "general-purpose:a05860c",
+          "role": "general-purpose",
+          "ownership": "a05860ca07c208160",
+          "status": "done",
+          "currentStep": null,
+          "latestUpdate": "completed",
+          "completedSummary": null,
+          "updatedAt": "2026-04-21T09:36:30.257Z"
+        },
+        {
+          "name": "general-purpose:afb9663",
+          "role": "general-purpose",
+          "ownership": "afb9663c306b7ffb2",
+          "status": "done",
+          "currentStep": null,
+          "latestUpdate": "completed",
+          "completedSummary": null,
+          "updatedAt": "2026-04-21T09:37:29.377Z"
+        },
+        {
+          "name": "code-reviewer:a5387bf",
+          "role": "code-reviewer",
+          "ownership": "a5387bf0397247d5c",
+          "status": "done",
+          "currentStep": null,
+          "latestUpdate": "completed",
+          "completedSummary": null,
+          "updatedAt": "2026-04-21T09:39:25.226Z"
+        }
+      ],
+      "timeline": [
+        {
+          "id": "session-start:afb9663c306b7ffb2:2026-04-21T09:36:45.991Z",
+          "at": "2026-04-21T09:36:45.991Z",
+          "kind": "update",
+          "agent": "general-purpose:afb9663",
+          "detail": "started general-purpose:afb9663",
+          "sourceKey": "session-start:afb9663c306b7ffb2"
+        },
+        {
+          "id": "session-stop:afb9663c306b7ffb2:2026-04-21T09:37:29.377Z",
+          "at": "2026-04-21T09:37:29.377Z",
+          "kind": "completion",
+          "agent": "general-purpose:afb9663",
+          "detail": "completed",
+          "sourceKey": "session-stop:afb9663c306b7ffb2"
+        },
+        {
+          "id": "session-start:a5387bf0397247d5c:2026-04-21T09:37:41.613Z",
+          "at": "2026-04-21T09:37:41.613Z",
+          "kind": "update",
+          "agent": "code-reviewer:a5387bf",
+          "detail": "started code-reviewer:a5387bf",
+          "sourceKey": "session-start:a5387bf0397247d5c"
+        },
+        {
+          "id": "session-stop:a5387bf0397247d5c:2026-04-21T09:39:25.226Z",
+          "at": "2026-04-21T09:39:25.226Z",
+          "kind": "completion",
+          "agent": "code-reviewer:a5387bf",
+          "detail": "completed",
+          "sourceKey": "session-stop:a5387bf0397247d5c"
+        },
+        {
+          "id": "session-stop:a93c9aa6de8251ecb:2026-04-21T09:43:18.886Z",
+          "at": "2026-04-21T09:43:18.886Z",
+          "kind": "completion",
+          "agent": "general-purpose:adfd244",
+          "detail": "completed",
+          "sourceKey": "session-stop:a93c9aa6de8251ecb"
+        },
+        {
+          "id": "session-stop:a34767c74aa84d9d8:2026-04-21T11:30:52.701Z",
+          "at": "2026-04-21T11:30:52.701Z",
+          "kind": "completion",
+          "agent": "general-purpose:adfd244",
+          "detail": "completed",
+          "sourceKey": "session-stop:a34767c74aa84d9d8"
+        },
+        {
+          "id": "session-stop:aecf873500f38d936:2026-04-21T11:39:09.598Z",
+          "at": "2026-04-21T11:39:09.598Z",
+          "kind": "completion",
+          "agent": "general-purpose:adfd244",
+          "detail": "completed",
+          "sourceKey": "session-stop:aecf873500f38d936"
+        }
+      ]
     }
   ]
 }
\ No newline at end of file
diff --git a/Code/.omc/state/subagent-tracking.json b/Code/.omc/state/subagent-tracking.json
index 585696f..beafb92 100644
--- a/Code/.omc/state/subagent-tracking.json
+++ b/Code/.omc/state/subagent-tracking.json
@@ -1454,10 +1454,91 @@
       "status": "completed",
       "completed_at": "2026-04-20T16:32:32.484Z",
       "duration_ms": 67195
+    },
+    {
+      "agent_id": "adfd244986e678c43",
+      "agent_type": "general-purpose",
+      "started_at": "2026-04-21T08:05:57.739Z",
+      "parent_mode": "none",
+      "status": "completed",
+      "completed_at": "2026-04-21T08:08:07.653Z",
+      "duration_ms": 129914
+    },
+    {
+      "agent_id": "afe58add5c15b5456",
+      "agent_type": "general-purpose",
+      "started_at": "2026-04-21T08:08:38.524Z",
+      "parent_mode": "none",
+      "status": "completed",
+      "completed_at": "2026-04-21T08:10:25.851Z",
+      "duration_ms": 107327
+    },
+    {
+      "agent_id": "a5f227d0165c2b9d7",
+      "agent_type": "oh-my-claudecode:code-reviewer",
+      "started_at": "2026-04-21T08:11:16.482Z",
+      "parent_mode": "none",
+      "status": "completed",
+      "completed_at": "2026-04-21T08:15:02.520Z",
+      "duration_ms": 226038
+    },
+    {
+      "agent_id": "a9be028ac5ebd371e",
+      "agent_type": "general-purpose",
+      "started_at": "2026-04-21T08:15:35.687Z",
+      "parent_mode": "none",
+      "status": "completed",
+      "completed_at": "2026-04-21T08:16:40.972Z",
+      "duration_ms": 65285
+    },
+    {
+      "agent_id": "a1284f6498da348c8",
+      "agent_type": "general-purpose",
+      "started_at": "2026-04-21T08:16:53.264Z",
+      "parent_mode": "none",
+      "status": "completed",
+      "completed_at": "2026-04-21T08:17:29.876Z",
+      "duration_ms": 36612
+    },
+    {
+      "agent_id": "a4003ef7b99171bad",
+      "agent_type": "oh-my-claudecode:code-reviewer",
+      "started_at": "2026-04-21T08:17:42.837Z",
+      "parent_mode": "none",
+      "status": "completed",
+      "completed_at": "2026-04-21T08:20:36.470Z",
+      "duration_ms": 173633
+    },
+    {
+      "agent_id": "a05860ca07c208160",
+      "agent_type": "general-purpose",
+      "started_at": "2026-04-21T09:35:41.894Z",
+      "parent_mode": "none",
+      "status": "completed",
+      "completed_at": "2026-04-21T09:36:30.255Z",
+      "duration_ms": 48361
+    },
+    {
+      "agent_id": "afb9663c306b7ffb2",
+      "agent_type": "general-purpose",
+      "started_at": "2026-04-21T09:36:45.991Z",
+      "parent_mode": "none",
+      "status": "completed",
+      "completed_at": "2026-04-21T09:37:29.375Z",
+      "duration_ms": 43384
+    },
+    {
+      "agent_id": "a5387bf0397247d5c",
+      "agent_type": "oh-my-claudecode:code-reviewer",
+      "started_at": "2026-04-21T09:37:41.613Z",
+      "parent_mode": "none",
+      "status": "completed",
+      "completed_at": "2026-04-21T09:39:25.224Z",
+      "duration_ms": 103611
     }
   ],
-  "total_spawned": 135,
-  "total_completed": 157,
+  "total_spawned": 144,
+  "total_completed": 166,
   "total_failed": 0,
-  "last_updated": "2026-04-21T06:46:41.255Z"
+  "last_updated": "2026-04-21T11:39:09.704Z"
 }
\ No newline at end of file
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/QuartzLogHelper.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/LogHelper/QuartzLogHelper.cs
similarity index 83%
rename from Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/QuartzLogHelper.cs
rename to Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/LogHelper/QuartzLogHelper.cs
index cc0c9a5..d9bd5d9 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/QuartzLogHelper.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/LogHelper/QuartzLogHelper.cs
@@ -42,6 +42,18 @@
     }
 
     /// <summary>
+    /// 璁板綍閿欒鏃ュ織锛堜笉甯﹀紓甯稿璞★級
+    /// </summary>
+    /// <param name="logger">ILogger 瀹炰緥</param>
+    /// <param name="loggerMessage">ILogger 鐨勭粨鏋勫寲鏃ュ織妯℃澘锛堟敮鎸佸崰浣嶇锛�</param>
+    /// <param name="deviceCode">璁惧缂栫爜</param>
+    public static void LogError(ILogger logger, string loggerMessage, string deviceCode)
+    {
+        logger.Error(loggerMessage);
+        QuartzLogger.Error(loggerMessage, deviceCode);
+    }
+
+    /// <summary>
     /// 璁板綍淇℃伅鏃ュ織
     /// </summary>
     /// <param name="logger">ILogger 瀹炰緥</param>
@@ -83,6 +95,18 @@
     }
 
     /// <summary>
+    /// 璁板綍璀﹀憡鏃ュ織
+    /// </summary>
+    /// <param name="logger">ILogger 瀹炰緥</param>
+    /// <param name="loggerMessage">ILogger 鐨勭粨鏋勫寲鏃ュ織妯℃澘锛堟敮鎸佸崰浣嶇锛�</param>
+    /// <param name="deviceCode">璁惧缂栫爜</param>
+    public static void LogWarn(ILogger logger, string loggerMessage,string deviceCode)
+    {
+        logger.Warning(loggerMessage);
+        QuartzLogger.Warn(loggerMessage, deviceCode);
+    }
+
+    /// <summary>
     /// 璁板綍璋冭瘯鏃ュ織
     /// </summary>
     /// <param name="logger">ILogger 瀹炰緥</param>
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Storage.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Storage.cs
index 15c9114..dbf23e7 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Storage.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Storage.cs
@@ -1,21 +1,5 @@
-锘縰sing Newtonsoft.Json;
-using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
-using Quartz;
-using SqlSugar;
-using System;
+锘縰sing SqlSugar;
 using System.Collections.Concurrent;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Linq;
-using System.Reflection;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEAWCS_Communicator;
-using WIDESEAWCS_Core.Enums;
-using WIDESEAWCS_Core.Helper;
-using WIDESEAWCS_QuartzJob.DeviceBase;
-using WIDESEAWCS_QuartzJob.DeviceEnum;
 
 namespace WIDESEAWCS_QuartzJob
 {
@@ -62,4 +46,4 @@
             return Pro_Devices.Where(x => deviceCodes.Contains(x.DeviceCode)).ToList();
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json
index 9d1eeae..6468d80 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json
@@ -5,19 +5,20 @@
       "Default": "Information",
       "Override": {
         "Microsoft": "Information",
-        "Microsoft.AspNetCore": "Warning",
-        "Microsoft.AspNetCore.Routing": "Warning",
-        "Microsoft.AspNetCore.Mvc": "Warning",
-        "Microsoft.AspNetCore.Mvc.Infrastructure": "Warning",
-        "Microsoft.AspNetCore.Mvc.Filters": "Warning",
-        "Microsoft.AspNetCore.Mvc.ModelBinding": "Warning",
-        "Microsoft.EntityFrameworkCore": "Warning"
+        "Microsoft.AspNetCore": "Information",
+        "Microsoft.AspNetCore.Routing": "Information",
+        "Microsoft.AspNetCore.Mvc": "Information",
+        "Microsoft.AspNetCore.Mvc.Infrastructure": "Information",
+        "Microsoft.AspNetCore.Mvc.Filters": "Information",
+        "Microsoft.AspNetCore.Mvc.ModelBinding": "Information",
+        "Microsoft.EntityFrameworkCore": "Information",
+        "Quartz": "Debug"
       }
     }
   },
   "Logging": {
     "LogLevel": {
-      "Default": "Information",
+      "Default": "Debug",
       "Microsoft.AspNetCore": "Warning",
       "Quartz": "Debug"
     }
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/InboundTaskFlowService.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/InboundTaskFlowService.cs
index 69c8796..d2468b3 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/InboundTaskFlowService.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/InboundTaskFlowService.cs
@@ -1,4 +1,5 @@
 锘縰sing System.Diagnostics.CodeAnalysis;
+using Serilog;
 using WIDESEAWCS_Common.HttpEnum;
 using WIDESEAWCS_Common.TaskEnum;
 using WIDESEA_Core;
@@ -10,6 +11,7 @@
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob.Models;
 using WIDESEAWCS_QuartzJob.Service;
+using WIDESEAWCS_Tasks;
 
 namespace WIDESEAWCS_TaskInfoService.Flows
 {
@@ -21,16 +23,18 @@
     {
         private readonly IRouterService _routerService;
         private readonly HttpClientHelper _httpClientHelper;
+        private readonly ILogger _logger;
 
         /// <summary>
         /// 鍒濆鍖栧叆搴撲换鍔℃祦绋嬫湇鍔°��
         /// </summary>
         /// <param name="routerService">璺敱鏈嶅姟銆�</param>
         /// <param name="httpClientHelper">WMS鎺ュ彛璋冪敤甯姪绫汇��</param>
-        public InboundTaskFlowService(IRouterService routerService, HttpClientHelper httpClientHelper)
+        public InboundTaskFlowService(IRouterService routerService, HttpClientHelper httpClientHelper, ILogger logger)
         {
             _routerService = routerService;
             _httpClientHelper = httpClientHelper;
+            _logger = logger;
         }
 
         /// <summary>
@@ -100,9 +104,11 @@
 
             if (!result.IsSuccess || !result.Data.Status)
             {
+                QuartzLogHelper.LogError(_logger, $"璋冪敤WMS鎺ュ彛澶辫触,鎺ュ彛:銆怚nboundFinishTaskAsync銆�,璇锋眰鍙傛暟:銆恵task.PalletCode}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�", "InboundTaskFlowService");
                 return content.Error($"閫氱煡WMS绯荤粺鍫嗗灈鏈哄叆搴撳畬鎴愬け璐�,浠诲姟鍙�:銆恵task.TaskNum}銆�,鎵樼洏鍙�:銆恵task.PalletCode}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�");
             }
 
+            QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鎺ュ彛鎴愬姛,鎺ュ彛:銆怚nboundFinishTaskAsync銆�,鍝嶅簲鏁版嵁:銆恵result.Data?.Data}銆�,鑰楁椂:0ms", "InboundTaskFlowService");
             return content.OK($"閫氱煡WMS绯荤粺鍫嗗灈鏈哄叆搴撳畬鎴愭垚鍔�,浠诲姟鍙�:銆恵task.TaskNum}銆�,鎵樼洏鍙�:銆恵task.PalletCode}銆�");
         }
 
@@ -113,12 +119,21 @@
         /// <returns>璋冪敤缁撴灉銆�</returns>
         private WebResponseContent GetWMSInboundLocation(Dt_Task task)
         {
+            string configKey = nameof(ConfigKey.GetTasksLocation);
+            string requestParam = new CreateTaskDto { PalletCode = task.PalletCode }.ToJson();
+            DateTime startTime = DateTime.Now;
+
             var result = _httpClientHelper.Post<WebResponseContent>(
-                nameof(ConfigKey.GetTasksLocation),
-                new CreateTaskDto { PalletCode = task.PalletCode }.ToJson());
+                configKey,
+                requestParam);
 
             if (!result.IsSuccess || !result.Data.Status)
+            {
+                QuartzLogHelper.LogError(_logger, $"璋冪敤WMS鎺ュ彛澶辫触,鎺ュ彛:銆恵configKey}銆�,璇锋眰鍙傛暟:銆恵requestParam}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�", "InboundTaskFlowService");
                 return WebResponseContent.Instance.Error($"璋冪敤WMS鎺ュ彛鑾峰彇浠诲姟鐩爣鍦板潃澶辫触,浠诲姟鍙�:銆恵task.TaskNum}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�");
+            }
+
+            QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鎺ュ彛鎴愬姛,鎺ュ彛:銆恵configKey}銆�,鍝嶅簲鏁版嵁:銆恵result.Data?.Data}銆�,鑰楁椂:{(DateTime.Now - startTime).TotalMilliseconds}ms", "InboundTaskFlowService");
 
             string? nextAddress = result.Data.Data?.ToString();
             if (string.IsNullOrEmpty(nextAddress))
@@ -138,13 +153,21 @@
         /// <returns>鍚屾缁撴灉銆�</returns>
         private WebResponseContent UpdateWMSTaskStatus(Dt_Task task)
         {
+            string configKey = nameof(ConfigKey.UpdateTaskByStatus);
+            string requestParam = new UpdateTaskDto { Id = task.TaskNum, NewStatus = task.TaskStatus, NextAddress = task.NextAddress, CurrentAddress = task.CurrentAddress }.ToJson();
+            DateTime startTime = DateTime.Now;
+
             var result = _httpClientHelper.Post<WebResponseContent>(
-                nameof(ConfigKey.UpdateTaskByStatus),
-                new UpdateTaskDto { Id = task.TaskNum, NewStatus = task.TaskStatus, NextAddress = task.NextAddress, CurrentAddress = task.CurrentAddress }.ToJson());
+                configKey,
+                requestParam);
 
             if (!result.IsSuccess || !result.Data.Status)
+            {
+                QuartzLogHelper.LogError(_logger, $"璋冪敤WMS鎺ュ彛澶辫触,鎺ュ彛:銆恵configKey}銆�,璇锋眰鍙傛暟:銆恵requestParam}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�", "InboundTaskFlowService");
                 return WebResponseContent.Instance.Error($"璋冪敤WMS鎺ュ彛鏇存柊浠诲姟鐘舵�佸け璐�,浠诲姟鍙�:銆恵task.TaskNum}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�");
+            }
 
+            QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鎺ュ彛鎴愬姛,鎺ュ彛:銆恵configKey}銆�,鍝嶅簲鏁版嵁:銆恵result.Data?.Data}銆�,鑰楁椂:{(DateTime.Now - startTime).TotalMilliseconds}ms", "InboundTaskFlowService");
             return WebResponseContent.Instance.OK();
         }
     }
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs
index c1f3ba9..dbe7256 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/OutboundTaskFlowService.cs
@@ -1,5 +1,6 @@
 锘縰sing Autofac;
 using Newtonsoft.Json;
+using Serilog;
 using System.Diagnostics.CodeAnalysis;
 using WIDESEA_Core;
 using WIDESEAWCS_Common.HttpEnum;
@@ -15,6 +16,7 @@
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob.Models;
 using WIDESEAWCS_QuartzJob.Service;
+using WIDESEAWCS_Tasks;
 
 namespace WIDESEAWCS_TaskInfoService.Flows
 {
@@ -29,6 +31,7 @@
         private readonly IRobotTaskService _robotTaskService;
         private readonly IComponentContext _componentContext;
         private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly ILogger _logger;
 
         /// <summary>
         /// 鍒濆鍖栧嚭搴撲换鍔℃祦绋嬫湇鍔°��
@@ -37,13 +40,14 @@
         /// <param name="httpClientHelper">WMS鎺ュ彛璋冪敤甯姪绫汇��</param>
         /// <param name="robotTaskService">鏈烘鎵嬩换鍔℃湇鍔°��</param>
         /// <param name="componentContext">Autofac缁勪欢涓婁笅鏂囷紙鐢ㄤ簬寤惰繜瑙f瀽ITaskService浠ラ伩鍏嶅惊鐜緷璧栵級銆�</param>
-        public OutboundTaskFlowService(IRouterService routerService, HttpClientHelper httpClientHelper, IRobotTaskService robotTaskService, IComponentContext componentContext, IUnitOfWorkManage unitOfWorkManage)
+        public OutboundTaskFlowService(IRouterService routerService, HttpClientHelper httpClientHelper, IRobotTaskService robotTaskService, IComponentContext componentContext, IUnitOfWorkManage unitOfWorkManage, ILogger logger)
         {
             _routerService = routerService;
             _httpClientHelper = httpClientHelper;
             _robotTaskService = robotTaskService;
             _componentContext = componentContext;
             _unitOfWorkManage = unitOfWorkManage;
+            _logger = logger;
         }
 
         /// <summary>
@@ -148,14 +152,21 @@
         private WebResponseContent NotifyWMSOutboundFinish(Dt_Task task)
         {
             WebResponseContent content = new WebResponseContent();
+            string configKey = nameof(ConfigKey.OutboundFinishTaskAsync);
+            string requestParam = new StockInfoDTO { PalletCode = task.PalletCode, TaskNum = task.TaskNum }.ToJson();
+            DateTime startTime = DateTime.Now;
 
-            // 閫氱煡WMS鍑哄簱瀹屾垚骞惰幏鍙栬繑鍥炵粨鏋�
             var result = _httpClientHelper.Post<WebResponseContent>(
-                nameof(ConfigKey.OutboundFinishTaskAsync),
-                new StockInfoDTO { PalletCode = task.PalletCode, TaskNum = task.TaskNum }.ToJson());
+                configKey,
+                requestParam);
 
             if (!result.IsSuccess || !result.Data.Status)
+            {
+                QuartzLogHelper.LogError(_logger, $"璋冪敤WMS鎺ュ彛澶辫触,鎺ュ彛:銆恵configKey}銆�,璇锋眰鍙傛暟:銆恵requestParam}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�", "OutboundTaskFlowService");
                 return content.Error($"閫氱煡WMS绯荤粺鍫嗗灈鏈哄嚭搴撳畬鎴愬け璐�,浠诲姟鍙�:銆恵task.TaskNum}銆�,鎵樼洏鍙�:銆恵task.PalletCode}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�");
+            }
+
+            QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鎺ュ彛鎴愬姛,鎺ュ彛:銆恵configKey}銆�,鍝嶅簲鏁版嵁:銆恵result.Data?.Data}銆�,鑰楁椂:{(DateTime.Now - startTime).TotalMilliseconds}ms", "OutboundTaskFlowService");
             // 澶勭悊WMS杩斿洖鐨勫叆搴撲换鍔★紙濡傛灉鏈夛級
             if (result.Data?.Data != null)
             {
@@ -195,13 +206,21 @@
         {
             int warehouseId = _robotTaskService.MapWarehouseIdConfigKey(task.TargetAddress);
             string sourceLineNo = _robotTaskService.ResolveRobotRuleValue(task.TargetAddress, "AddressSourceLineNoMap", task.TargetAddress);
+            string configKey = nameof(ConfigKey.GetOutBoundTrayTaskAsync);
+            string requestParam = new CreateTaskDto { WarehouseId = warehouseId, TargetAddress = sourceLineNo }.ToJson();
+            DateTime startTime = DateTime.Now;
 
             var result = _httpClientHelper.Post<WebResponseContent>(
-                nameof(ConfigKey.GetOutBoundTrayTaskAsync),
-                new CreateTaskDto { WarehouseId = warehouseId, TargetAddress = sourceLineNo }.ToJson());
+                configKey,
+                requestParam);
 
             if (!result.IsSuccess || !result.Data.Status)
+            {
+                QuartzLogHelper.LogError(_logger, $"璋冪敤WMS鎺ュ彛澶辫触,鎺ュ彛:銆恵configKey}銆�,璇锋眰鍙傛暟:銆恵requestParam}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�", "OutboundTaskFlowService");
                 return WebResponseContent.Instance.Error($"鑾峰彇WMS绯荤粺绌烘墭鐩樺嚭搴撲换鍔″け璐�,浠诲姟鍙�:銆恵task.TaskNum}銆�,鎵樼洏鍙�:銆恵task.PalletCode}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�");
+            }
+
+            QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鎺ュ彛鎴愬姛,鎺ュ彛:銆恵configKey}銆�,鍝嶅簲鏁版嵁:銆恵result.Data?.Data}銆�,鑰楁椂:{(DateTime.Now - startTime).TotalMilliseconds}ms", "OutboundTaskFlowService");
 
             WMSTaskDTO? wMSTask = JsonConvert.DeserializeObject<WMSTaskDTO>(result.Data.Data?.ToString() ?? string.Empty);
             if (wMSTask == null)
@@ -217,13 +236,21 @@
         /// <returns>鍚屾缁撴灉銆�</returns>
         private WebResponseContent UpdateWMSTaskStatus(Dt_Task task)
         {
+            string configKey = nameof(ConfigKey.UpdateTaskByStatus);
+            string requestParam = new UpdateTaskDto { Id = task.TaskNum, NewStatus = task.TaskStatus, NextAddress = task.NextAddress, CurrentAddress = task.CurrentAddress }.ToJson();
+            DateTime startTime = DateTime.Now;
+
             var result = _httpClientHelper.Post<WebResponseContent>(
-                nameof(ConfigKey.UpdateTaskByStatus),
-                new UpdateTaskDto { Id = task.TaskNum, NewStatus = task.TaskStatus, NextAddress = task.NextAddress, CurrentAddress = task.CurrentAddress }.ToJson());
+                configKey,
+                requestParam);
 
             if (!result.IsSuccess || !result.Data.Status)
+            {
+                QuartzLogHelper.LogError(_logger, $"璋冪敤WMS鎺ュ彛澶辫触,鎺ュ彛:銆恵configKey}銆�,璇锋眰鍙傛暟:銆恵requestParam}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�", "OutboundTaskFlowService");
                 return WebResponseContent.Instance.Error($"璋冪敤WMS鎺ュ彛鏇存柊浠诲姟鐘舵�佸け璐�,浠诲姟鍙�:銆恵task.TaskNum}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�");
+            }
 
+            QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鎺ュ彛鎴愬姛,鎺ュ彛:銆恵configKey}銆�,鍝嶅簲鏁版嵁:銆恵result.Data?.Data}銆�,鑰楁椂:{(DateTime.Now - startTime).TotalMilliseconds}ms", "OutboundTaskFlowService");
             return WebResponseContent.Instance.OK();
         }
 
@@ -234,13 +261,21 @@
         /// <returns>鍚屾缁撴灉銆�</returns>
         private WebResponseContent OutboundFinishTaskTray(Dt_Task task)
         {
+            string configKey = nameof(ConfigKey.OutboundFinishTaskTray);
+            string requestParam = new CreateTaskDto { PalletCode = task.PalletCode, SourceAddress = task.SourceAddress }.ToJson();
+            DateTime startTime = DateTime.Now;
+
             var result = _httpClientHelper.Post<WebResponseContent>(
-                nameof(ConfigKey.OutboundFinishTaskTray),
-                new CreateTaskDto { PalletCode = task.PalletCode, SourceAddress = task.SourceAddress }.ToJson());
+                configKey,
+                requestParam);
 
             if (!result.IsSuccess || !result.Data.Status)
+            {
+                QuartzLogHelper.LogError(_logger, $"璋冪敤WMS鎺ュ彛澶辫触,鎺ュ彛:銆恵configKey}銆�,璇锋眰鍙傛暟:銆恵requestParam}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�", "OutboundTaskFlowService");
                 return WebResponseContent.Instance.Error($"璋冪敤WMS鎺ュ彛鏇存柊浠诲姟鐘舵�佸け璐�,浠诲姟鍙�:銆恵task.TaskNum}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�");
+            }
 
+            QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鎺ュ彛鎴愬姛,鎺ュ彛:銆恵configKey}銆�,鍝嶅簲鏁版嵁:銆恵result.Data?.Data}銆�,鑰楁椂:{(DateTime.Now - startTime).TotalMilliseconds}ms", "OutboundTaskFlowService");
             return WebResponseContent.Instance.OK();
         }
     }
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/RelocationTaskFlowService.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/RelocationTaskFlowService.cs
index 0556392..3f74943 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/RelocationTaskFlowService.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Flows/RelocationTaskFlowService.cs
@@ -1,4 +1,5 @@
 锘縰sing System.Diagnostics.CodeAnalysis;
+using Serilog;
 using WIDESEAWCS_Common.HttpEnum;
 using WIDESEAWCS_Common.TaskEnum;
 using WIDESEA_Core;
@@ -8,6 +9,7 @@
 using WIDESEAWCS_DTO.TaskInfo;
 using WIDESEAWCS_ITaskInfoService;
 using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_Tasks;
 
 namespace WIDESEAWCS_TaskInfoService.Flows
 {
@@ -18,14 +20,16 @@
     public class RelocationTaskFlowService : IRelocationTaskFlowService
     {
         private readonly HttpClientHelper _httpClientHelper;
+        private readonly ILogger _logger;
 
         /// <summary>
         /// 鍒濆鍖栫Щ搴撲换鍔℃祦绋嬫湇鍔°��
         /// </summary>
         /// <param name="httpClientHelper">WMS鎺ュ彛璋冪敤甯姪绫汇��</param>
-        public RelocationTaskFlowService(HttpClientHelper httpClientHelper)
+        public RelocationTaskFlowService(HttpClientHelper httpClientHelper, ILogger logger)
         {
             _httpClientHelper = httpClientHelper;
+            _logger = logger;
         }
 
         /// <summary>
@@ -101,13 +105,21 @@
         /// <returns>鍚屾缁撴灉銆�</returns>
         private WebResponseContent UpdateWMSTaskStatus(Dt_Task task)
         {
+            string configKey = nameof(ConfigKey.UpdateTaskByStatus);
+            string requestParam = new UpdateTaskDto { Id = task.TaskNum, NewStatus = task.TaskStatus, NextAddress = task.NextAddress, CurrentAddress = task.CurrentAddress }.ToJson();
+            DateTime startTime = DateTime.Now;
+
             var result = _httpClientHelper.Post<WebResponseContent>(
-                nameof(ConfigKey.UpdateTaskByStatus),
-                new UpdateTaskDto { Id = task.TaskNum, NewStatus = task.TaskStatus, NextAddress = task.NextAddress, CurrentAddress = task.CurrentAddress }.ToJson());
+                configKey,
+                requestParam);
 
             if (!result.IsSuccess || !result.Data.Status)
+            {
+                QuartzLogHelper.LogError(_logger, $"璋冪敤WMS鎺ュ彛澶辫触,鎺ュ彛:銆恵configKey}銆�,璇锋眰鍙傛暟:銆恵requestParam}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�", "RelocationTaskFlowService");
                 return WebResponseContent.Instance.Error($"璋冪敤WMS鎺ュ彛鏇存柊浠诲姟鐘舵�佸け璐�,浠诲姟鍙�:銆恵task.TaskNum}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�");
+            }
 
+            QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鎺ュ彛鎴愬姛,鎺ュ彛:銆恵configKey}銆�,鍝嶅簲鏁版嵁:銆恵result.Data?.Data}銆�,鑰楁椂:{(DateTime.Now - startTime).TotalMilliseconds}ms", "RelocationTaskFlowService");
             return WebResponseContent.Instance.OK();
         }
 
@@ -118,20 +130,28 @@
         /// <returns>閫氱煡缁撴灉銆�</returns>
         private WebResponseContent NotifyWMSRelocationFinish(Dt_Task task)
         {
+            string configKey = nameof(ConfigKey.RelocationFinishTask);
+            string requestParam = new CreateTaskDto
+            {
+                PalletCode = task.PalletCode,
+                SourceAddress = task.CurrentAddress,
+                TargetAddress = task.TargetAddress,
+                Roadway = task.Roadway,
+                TaskType = task.TaskType
+            }.ToJson();
+            DateTime startTime = DateTime.Now;
+
             var result = _httpClientHelper.Post<WebResponseContent>(
-                nameof(ConfigKey.RelocationFinishTask),
-                new CreateTaskDto
-                {
-                    PalletCode = task.PalletCode,
-                    SourceAddress = task.CurrentAddress,
-                    TargetAddress = task.TargetAddress,
-                    Roadway = task.Roadway,
-                    TaskType = task.TaskType
-                }.ToJson());
+                configKey,
+                requestParam);
 
             if (!result.IsSuccess || !result.Data.Status)
+            {
+                QuartzLogHelper.LogError(_logger, $"璋冪敤WMS鎺ュ彛澶辫触,鎺ュ彛:銆恵configKey}銆�,璇锋眰鍙傛暟:銆恵requestParam}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�", "RelocationTaskFlowService");
                 return WebResponseContent.Instance.Error($"閫氱煡WMS绯荤粺绉诲簱瀹屾垚澶辫触,浠诲姟鍙�:銆恵task.TaskNum}銆�,鎵樼洏鍙�:銆恵task.PalletCode}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�");
+            }
 
+            QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鎺ュ彛鎴愬姛,鎺ュ彛:銆恵configKey}銆�,鍝嶅簲鏁版嵁:銆恵result.Data?.Data}銆�,鑰楁椂:{(DateTime.Now - startTime).TotalMilliseconds}ms", "RelocationTaskFlowService");
             return WebResponseContent.Instance.OK();
         }
     }
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RobotTaskService.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RobotTaskService.cs
index 494541e..1e60a39 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RobotTaskService.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RobotTaskService.cs
@@ -20,7 +20,9 @@
 using MapsterMapper;
 using Microsoft.Extensions.Configuration;
 using Newtonsoft.Json;
+using Serilog;
 using SqlSugar;
+using System.Diagnostics;
 using System.Diagnostics.CodeAnalysis;
 using WIDESEA_Core;
 using WIDESEAWCS_Common.HttpEnum;
@@ -36,6 +38,7 @@
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob;
 using WIDESEAWCS_QuartzJob.DTO;
+using WIDESEAWCS_Tasks;
 
 namespace WIDESEAWCS_TaskInfoService
 {
@@ -44,6 +47,7 @@
         private readonly IMapper _mapper;
         private readonly HttpClientHelper _httpClientHelper;
         private readonly ITaskExecuteDetailService _taskExecuteDetailService;
+        private readonly ILogger _logger;
 
         private Dictionary<string, OrderByType> _taskOrderBy = new()
             {
@@ -60,11 +64,12 @@
 
         public List<int> TaskRobotTypes => typeof(TaskOtherTypeEnum).GetEnumIndexList();
 
-        public RobotTaskService(IRobotTaskRepository BaseDal, IMapper mapper, HttpClientHelper httpClientHelper, ITaskExecuteDetailService taskExecuteDetailService) : base(BaseDal)
+        public RobotTaskService(IRobotTaskRepository BaseDal, IMapper mapper, HttpClientHelper httpClientHelper, ITaskExecuteDetailService taskExecuteDetailService, ILogger logger) : base(BaseDal)
         {
             _mapper = mapper;
             _httpClientHelper = httpClientHelper;
             _taskExecuteDetailService = taskExecuteDetailService;
+            _logger = logger;
         }
 
         public WebResponseContent ReceiveWMSTask([NotNull] WMSTaskDTO taskDTO, StockDTO stockDTO)
@@ -80,13 +85,13 @@
                 Dt_RobotTask task = new Dt_RobotTask
                 {
                     RobotTaskNum = taskDTO.TaskNum,
-                    RobotSourceAddressLineCode = stockDTO.SourceLineNo,
-                    RobotTargetAddressLineCode = stockDTO.TargetLineNo,
-                    RobotRoadway = stockDTO.Roadway,
+                    RobotSourceAddressLineCode = stockDTO?.SourceLineNo ?? string.Empty,
+                    RobotTargetAddressLineCode = stockDTO?.TargetLineNo ?? string.Empty,
+                    RobotRoadway = stockDTO?.Roadway ?? string.Empty,
                     RobotSourceAddress = taskDTO.SourceAddress,
                     RobotTargetAddress = taskDTO.TargetAddress,
-                    RobotSourceAddressPalletCode = stockDTO.SourcePalletNo,
-                    RobotTargetAddressPalletCode = stockDTO.TargetPalletNo,
+                    RobotSourceAddressPalletCode = stockDTO?.SourcePalletNo ?? string.Empty,
+                    RobotTargetAddressPalletCode = stockDTO?.TargetPalletNo ?? string.Empty,
                     RobotTaskType = taskDTO.TaskType,
                     RobotTaskState = taskDTO.TaskStatus,
                     RobotGrade = taskDTO.Grade,
@@ -131,13 +136,20 @@
         {
             string configKey = ResolveRobotTaskConfigKey(task.TargetAddress);
             StockDTO stock = BuildRobotTaskStock(task, configKey);
+            string requestParam = stock.ToJson();
+            var stopwatch = Stopwatch.StartNew();
 
-            var result = _httpClientHelper.Post<WebResponseContent>(configKey, stock.ToJson());
-
+            var result = _httpClientHelper.Post<WebResponseContent>(configKey, requestParam);
+            stopwatch.Stop();
             if (!result.IsSuccess || !result.Data.Status)
+            {
+                QuartzLogHelper.LogError(_logger, $"璋冪敤WMS鎺ュ彛澶辫触,鎺ュ彛:銆恵configKey}銆�,璇锋眰鍙傛暟:銆恵requestParam}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�", "RobotTaskService");
                 return WebResponseContent.Instance.Error($"鑾峰彇WMS绯荤粺鏈烘鎵嬩换鍔″け璐�,浠诲姟鍙�:銆恵task.TaskNum}銆�,鎵樼洏鍙�:銆恵task.PalletCode}銆�,鐩爣鍦板潃:銆恵task.TargetAddress}銆�,鎺ュ彛:銆恵configKey}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�");
+            }
 
-            var wMSTask = JsonConvert.DeserializeObject<WMSTaskDTO>(result.Data.Data?.ToString() ?? string.Empty);
+            QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鎺ュ彛鎴愬姛,鎺ュ彛:銆恵configKey}銆�,鍝嶅簲鏁版嵁:銆恵result.Data?.Data}銆�,鑰楁椂:{stopwatch.ElapsedMilliseconds}ms", "RobotTaskService");
+
+            var wMSTask = JsonConvert.DeserializeObject<WMSTaskDTO>(result?.Data?.Data?.ToString() ?? string.Empty);
             if (wMSTask == null)
                 return WebResponseContent.Instance.Error($"鑾峰彇WMS绯荤粺鏈烘鎵嬩换鍔″け璐�,浠诲姟鍙�:銆恵task.TaskNum}銆�,鎵樼洏鍙�:銆恵task.PalletCode}銆�,閿欒淇℃伅:銆怶MS鏈繑鍥炴湁鏁堜换鍔℃暟鎹��");
 
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Status.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Status.cs
index f466db3..c4cc9d3 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Status.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Status.cs
@@ -2,18 +2,9 @@
 using WIDESEAWCS_Common.TaskEnum;
 using WIDESEAWCS_Core;
 using WIDESEAWCS_Core.Enums;
-using WIDESEAWCS_DTO;
 using WIDESEAWCS_DTO.TaskInfo;
 using WIDESEAWCS_Model.Models;
-using WIDESEAWCS_QuartzJob;
 using WIDESEAWCS_QuartzJob.Models;
-using WIDESEAWCS_QuartzJob.Service;
-using WIDESEAWCS_Core;
-using WIDESEAWCS_Core.Enums;
-using WIDESEAWCS_Model.Models;
-using WIDESEAWCS_QuartzJob;
-using WIDESEAWCS_QuartzJob.Models;
-using WIDESEAWCS_QuartzJob.Service;
 
 namespace WIDESEAWCS_TaskInfoService;
 
@@ -164,7 +155,6 @@
 
             string oldCurrentPos = task.CurrentAddress;
             string oldNextPos = task.NextAddress;
-
 
             Dt_Router routers = _routerService.QueryNextRoute(oldNextPos, task.TargetAddress);
             if (routers == null) throw new Exception($"鏈壘鍒拌澶囪矾鐢变俊鎭�");
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/CommonConveyorLineNewJob.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/CommonConveyorLineNewJob.cs
index 79096d3..07fb90d 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/CommonConveyorLineNewJob.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/CommonConveyorLineNewJob.cs
@@ -198,23 +198,31 @@
                                     {
                                         // 娌℃湁浠诲姟锛屽悜 WMS 璇锋眰鍑哄簱鎵樼洏浠诲姟
                                         var position = checkPalletPositions.FirstOrDefault(x => x.Code == childDeviceCode);
-                                        //QuartzLogHelper.LogInfo(_logger, "Execute锛氭鏌ユ墭鐩樹綅缃� {ChildDeviceCode}锛岃姹俉MS鍑哄簱鎵樼洏浠诲姟", $"妫�鏌ユ墭鐩樹綅缃� {childDeviceCode}锛岃姹俉MS鍑哄簱鎵樼洏浠诲姟", conveyorLine.DeviceCode, childDeviceCode);
 
-                                        var responseResult = _httpClientHelper.Post<WebResponseContent>("GetOutBoundTrayTaskAsync", new CreateTaskDto()
+                                        string configKey = "GetOutBoundTrayTaskAsync";
+                                        string requestParam = new CreateTaskDto()
                                         {
                                             WarehouseId = position.WarehouseId,
                                             TargetAddress = childDeviceCode
-                                        }.Serialize());
+                                        }.Serialize();
+                                        DateTime startTime = DateTime.Now;
+
+                                        var responseResult = _httpClientHelper.Post<WebResponseContent>(configKey, requestParam);
 
                                         _lastPalletCheckTime[childDeviceCode] = DateTime.Now;
 
                                         // 濡傛灉璇锋眰鎴愬姛锛屾帴鏀� WMS 杩斿洖鐨勪换鍔�
                                         if (responseResult.IsSuccess && responseResult.Data.Status)
                                         {
+                                            QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鎺ュ彛鎴愬姛,鎺ュ彛:銆恵configKey}銆�,璇锋眰鍙傛暟:銆恵requestParam}銆�,鍝嶅簲鏁版嵁:銆恵responseResult.Data?.Data}銆�,鑰楁椂:{(DateTime.Now - startTime).TotalMilliseconds}ms", conveyorLine.DeviceCode);
                                             var wmsTask = JsonConvert.DeserializeObject<WMSTaskDTO>(responseResult.Data.Data.ToString());
                                             List<WMSTaskDTO> taskDTOs = new List<WMSTaskDTO> { wmsTask };
                                             if (wmsTask != null)
                                                 _taskService.ReceiveWMSTask(taskDTOs);
+                                        }
+                                        else
+                                        {
+                                            QuartzLogHelper.LogError(_logger, $"璋冪敤WMS鎺ュ彛澶辫触,鎺ュ彛:銆恵configKey}銆�,璇锋眰鍙傛暟:銆恵requestParam}銆�,閿欒淇℃伅:銆恵responseResult.Data?.Message}銆�", conveyorLine.DeviceCode);
                                         }
                                     }
                                 }
@@ -236,7 +244,7 @@
                                     var task = _taskService.QueryManualInboundTask(childDeviceCode);
                                     if (task != null)
                                     {
-                                        var handler = new ManualInboundTaskHandler(_taskService);
+                                        var handler = new ManualInboundTaskHandler(_taskService, _logger);
                                         handler.WriteTaskToPlc(conveyorLine, childDeviceCode, task);
                                     }
                                 }
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ManualInbound/ManualInboundTaskHandler.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ManualInbound/ManualInboundTaskHandler.cs
index f97e8bf..4b8b7fe 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ManualInbound/ManualInboundTaskHandler.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ManualInbound/ManualInboundTaskHandler.cs
@@ -1,3 +1,4 @@
+using Serilog;
 using WIDESEAWCS_Core.LogHelper;
 using WIDESEAWCS_ITaskInfoService;
 using WIDESEAWCS_Model.Models;
@@ -20,12 +21,19 @@
         private readonly ITaskService _taskService;
 
         /// <summary>
+        /// 鏃ュ織璁板綍鍣�
+        /// </summary>
+        private readonly ILogger _logger;
+
+        /// <summary>
         /// 鏋勯�犲嚱鏁�
         /// </summary>
         /// <param name="taskService">浠诲姟鏈嶅姟</param>
-        public ManualInboundTaskHandler(ITaskService taskService)
+        /// <param name="logger">鏃ュ織璁板綍鍣�</param>
+        public ManualInboundTaskHandler(ITaskService taskService, ILogger logger)
         {
             _taskService = taskService;
+            _logger = logger;
         }
 
         /// <summary>
@@ -38,7 +46,7 @@
         {
             if (conveyorLine == null || string.IsNullOrEmpty(childDeviceCode) || task == null)
             {
-                QuartzLogger.Error("ManualInboundTaskHandler.WriteTaskToPlc: 鍙傛暟涓虹┖", "ManualInbound");
+                QuartzLogHelper.LogError(_logger, "ManualInboundTaskHandler.WriteTaskToPlc: 鍙傛暟涓虹┖", "ManualInbound");
                 return;
             }
 
@@ -57,18 +65,18 @@
                 var updateResult = _taskService.UpdateTaskStatusToNext(task);
                 if (!updateResult.Status)
                 {
-                    QuartzLogger.Error($"ManualInboundTaskHandler: 鏇存柊浠诲姟鐘舵�佸け璐ワ紝浠诲姟鍙枫�恵task.TaskNum}銆戯紝閿欒淇℃伅:{updateResult.Message}", conveyorLine.DeviceCode);
+                    QuartzLogHelper.LogError(_logger, $"ManualInboundTaskHandler: 鏇存柊浠诲姟鐘舵�佸け璐ワ紝浠诲姟鍙枫�恵task.TaskNum}銆戯紝閿欒淇℃伅:{updateResult.Message}", conveyorLine.DeviceCode);
                     return;
                 }
 
                 // 鍐欏叆ACK鏍囧織
                 conveyorLine.SetValue(ConveyorLineDBNameNew.WCS_ACK, (short)1, childDeviceCode);
 
-                QuartzLogger.Info($"ManualInboundTaskHandler: 鎵嬪姩浠诲姟鍐欏叆PLC鎴愬姛锛屼换鍔″彿銆恵task.TaskNum}銆戯紝婧愬湴鍧�銆恵task.SourceAddress}銆�", conveyorLine.DeviceCode);
+                QuartzLogHelper.LogInfo(_logger, $"ManualInboundTaskHandler: 鎵嬪姩浠诲姟鍐欏叆PLC鎴愬姛锛屼换鍔″彿銆恵task.TaskNum}銆戯紝婧愬湴鍧�銆恵task.SourceAddress}銆�", conveyorLine.DeviceCode);
             }
             catch (Exception ex)
             {
-                QuartzLogger.Error($"ManualInboundTaskHandler: 鍐欏叆杈撻�佺嚎浠诲姟寮傚父锛岄敊璇俊鎭�:{ex.Message}", "ManualInbound");
+                QuartzLogHelper.LogError(_logger, ex, $"ManualInboundTaskHandler: 鍐欏叆杈撻�佺嚎浠诲姟寮傚父", $"ManualInboundTaskHandler: 鍐欏叆杈撻�佺嚎浠诲姟寮傚父锛岄敊璇俊鎭�:{ex.Message}", "ManualInbound");
             }
         }
     }
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotClientManager.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotClientManager.cs
index 1d952e3..c021204 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotClientManager.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotClientManager.cs
@@ -1,6 +1,6 @@
+using Serilog;
 using System.Collections.Concurrent;
 using System.Net.Sockets;
-using Microsoft.Extensions.Logging;
 using WIDESEAWCS_Core.LogHelper;
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob;
@@ -101,8 +101,7 @@
                 // 娓呯悊璇ュ鎴风鐨� HandleClientAsync 鍚姩鏍囧織
                 // 浠ヤ究涓嬫閲嶈繛鏃跺彲浠ラ噸鏂板惎鍔ㄥ鐞�
                 _handleClientStarted.TryRemove(ipAddress, out _);
-                _logger.LogDebug("瀹㈡埛绔湭杩炴帴锛孖P: {IpAddress}", ipAddress);
-                QuartzLogger.Debug($"瀹㈡埛绔湭杩炴帴锛孖P: {ipAddress}", robotCrane.DeviceName);
+                QuartzLogHelper.LogDebug(_logger, $"瀹㈡埛绔湭杩炴帴锛孖P: {ipAddress}", robotCrane.DeviceName);
                 return false;
             }
 
@@ -113,8 +112,7 @@
                 // 缁戝畾瀹㈡埛绔柇寮�杩炴帴鐨勪簨浠跺鐞�
                 _tcpSocket.RobotReceived += OnRobotReceived;
                 // 璁板綍鏃ュ織锛氫簨浠惰闃呮垚鍔�
-                _logger.LogInformation("鏈烘鎵婽CP娑堟伅浜嬩欢宸茶闃咃紝璁惧: {DeviceName}", robotCrane.DeviceName);
-                QuartzLogger.Info($"鏈烘鎵婽CP娑堟伅浜嬩欢宸茶闃�", robotCrane.DeviceName);
+                QuartzLogHelper.LogInfo(_logger, $"鏈烘鎵婽CP娑堟伅浜嬩欢宸茶闃�", robotCrane.DeviceName);
             }
 
             // 浠� TCP 鏈嶅姟鍣ㄧ殑瀹㈡埛绔瓧鍏镐腑鑾峰彇 TcpClient 瀵硅薄
@@ -126,8 +124,7 @@
             {
                 // 绉婚櫎鍚姩鏍囧織锛岃繑鍥� false 琛ㄧず瀹㈡埛绔笉鍙敤
                 _handleClientStarted.TryRemove(ipAddress, out _);
-                _logger.LogWarning("鑾峰彇TcpClient澶辫触锛孖P: {IpAddress}", ipAddress);
-                QuartzLogger.Warn($"鑾峰彇TcpClient澶辫触锛孖P: {ipAddress}", robotCrane.DeviceName);
+                QuartzLogHelper.LogWarn(_logger, $"鑾峰彇TcpClient澶辫触锛孖P: {ipAddress}", robotCrane.DeviceName);
                 return false;
             }
 
@@ -138,8 +135,7 @@
             if (!alreadyStarted)
             {
                 // 璁板綍鏃ュ織锛氬惎鍔ㄦ秷鎭鐞�
-                _logger.LogInformation("鍚姩瀹㈡埛绔秷鎭鐞嗭紝IP: {IpAddress}", ipAddress);
-                QuartzLogger.Info($"鍚姩瀹㈡埛绔秷鎭鐞�", robotCrane.DeviceName);
+                QuartzLogHelper.LogInfo(_logger, $"鍚姩瀹㈡埛绔秷鎭鐞嗭紝IP: {ipAddress}", robotCrane.DeviceName);
 
                 // 鑾峰彇鏈�鏂扮殑鐘舵�佸璞�
                 var latestStateForSubscribe = _stateManager.GetState(ipAddress);
@@ -157,8 +153,7 @@
                             if (t.IsFaulted)
                             {
                                 // 璁板綍閿欒鏃ュ織
-                                _logger.LogError(t.Exception, "鐩戝惉瀹㈡埛绔秷鎭簨浠跺紓甯革紝IP: {IpAddress}", ipAddress);
-                                QuartzLogger.Error($"鐩戝惉瀹㈡埛绔秷鎭簨浠跺紓甯�", robotCrane.DeviceName, t.Exception);
+                                QuartzLogHelper.LogError(_logger, t.Exception, $"鐩戝惉瀹㈡埛绔秷鎭簨浠跺紓甯革紝IP: {ipAddress}", $"鐩戝惉瀹㈡埛绔秷鎭簨浠跺紓甯革紝IP: {ipAddress}", robotCrane.DeviceName);
                                 // 鍙戠敓閿欒鏃讹紝绉婚櫎鍚姩鏍囧織锛屽厑璁镐笅娆¢噸璇�
                                 _handleClientStarted.TryRemove(ipAddress, out _);
                             }
@@ -195,8 +190,7 @@
             _handleClientStarted.TryRemove(clientId, out _);
 
             // 璁板綍鏃ュ織锛氬鎴风鏂紑杩炴帴
-            _logger.LogInformation("瀹㈡埛绔柇寮�杩炴帴锛孖P: {ClientId}", clientId);
-            QuartzLogger.Info($"瀹㈡埛绔柇寮�杩炴帴", clientId);
+            QuartzLogHelper.LogInfo(_logger, $"瀹㈡埛绔柇寮�杩炴帴锛孖P: {clientId}", clientId);
 
             // 閲嶇疆璇ュ鎴风鐨勭姸鎬佷俊鎭�
             _stateManager.TryUpdateStateSafely(clientId, state =>
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotJob.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotJob.cs
index ead2ab1..8daf967 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotJob.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotJob.cs
@@ -1,13 +1,10 @@
-using Microsoft.Extensions.Logging;
 using Quartz;
+using Serilog;
 using WIDESEA_Core;
 using WIDESEAWCS_Common;
-using WIDESEAWCS_Core.Caches;
 using WIDESEAWCS_Core.Helper;
-using WIDESEAWCS_Core.LogHelper;
-using WIDESEAWCS_ITaskInfoService;
-using WIDESEAWCS_QuartzJob;
 using WIDESEAWCS_ITaskInfoRepository;
+using WIDESEAWCS_ITaskInfoService;
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_Tasks.SocketServer;
 using WIDESEAWCS_Tasks.Workflow;
@@ -85,7 +82,7 @@
         /// <summary>
         /// 鏃ュ織璁板綍鍣�
         /// </summary>
-        private readonly ILogger<RobotJob> _logger;
+        private readonly ILogger _logger;
 
         /// <summary>
         /// 鏋勯�犲嚱鏁�
@@ -106,7 +103,7 @@
             ITaskService taskService,
             IRobotStateRepository robotStateRepository,
             HttpClientHelper httpClientHelper,
-            ILogger<RobotJob> logger,
+            ILogger logger,
             IFakeBatteryPositionService fakeBatteryPositionService)
         {
             // 鍒濆鍖栫姸鎬佺鐞嗗櫒锛屼紶鍏ヤ粨鍌ㄦ湇鍔�
@@ -125,9 +122,9 @@
 
             // 鍒濆鍖栧懡浠ゅ鐞嗗櫒
             // 绠�鍗曞懡浠ゅ鐞嗗櫒锛氬鐞嗙姸鎬佹洿鏂扮瓑绠�鍗曞懡浠�
-            var simpleCommandHandler = new RobotSimpleCommandHandler(_taskProcessor, socketGateway);
+            var simpleCommandHandler = new RobotSimpleCommandHandler(_taskProcessor, socketGateway, _logger);
             // 鍓嶇紑鍛戒护澶勭悊鍣細澶勭悊 pickfinished銆乸utfinished 绛夊甫鍙傛暟鐨勫懡浠�
-            var prefixCommandHandler = new RobotPrefixCommandHandler(robotTaskService, _taskProcessor, _stateManager, socketGateway, fakeBatteryPositionService);
+            var prefixCommandHandler = new RobotPrefixCommandHandler(robotTaskService, _taskProcessor, _stateManager, socketGateway, fakeBatteryPositionService, _logger);
 
             // 鍒濆鍖栨秷鎭矾鐢卞櫒
             _messageRouter = new RobotMessageHandler(socketGateway, _stateManager, simpleCommandHandler, prefixCommandHandler, logger);
@@ -144,8 +141,7 @@
             {
                 // 灏嗘秷鎭矾鐢卞櫒鐨勫鐞嗘柟娉曠粦瀹氬埌 TCP 鏈嶅姟鍣ㄧ殑娑堟伅鎺ユ敹浜嬩欢
                 tcpSocket.MessageReceived += _messageRouter.HandleMessageReceivedAsync;
-                _logger.LogError("鏈哄櫒鎵婽CP娑堟伅浜嬩欢宸茶闃�");
-                QuartzLogger.Error($"鏈哄櫒鎵婽CP娑堟伅浜嬩欢宸茶闃�");
+                QuartzLogHelper.LogError(_logger, $"鏈哄櫒鎵婽CP娑堟伅浜嬩欢宸茶闃�", "Unknown");
             }
         }
 
@@ -159,8 +155,7 @@
         /// <param name="state">鏂紑杩炴帴鐨勬満姊版墜鐘舵��</param>
         private void OnClientDisconnected(object? sender, RobotSocketState state)
         {
-            _logger.LogError("瀹㈡埛绔凡鏂紑杩炴帴");
-            QuartzLogger.Error($"瀹㈡埛绔凡鏂紑杩炴帴", state.RobotCrane.DeviceName);
+            QuartzLogHelper.LogError(_logger, $"瀹㈡埛绔凡鏂紑杩炴帴", state.RobotCrane.DeviceName);
         }
 
         /// <summary>
@@ -246,8 +241,7 @@
             {
                 // 寮傚父澶勭悊宸插湪缁勪欢鍐呴儴杩涜锛孞ob 灞備繚鎸佸厹搴曡涔�
                 // 璁板綍寮傚父鑰屼笉鏄潤榛樺悶鎺夛紝渚夸簬鎺掓煡闂
-                _logger?.LogError(ex, "RobotJob鎵ц寮傚父锛孖P: {IpAddress}", ipAddress);
-                QuartzLogger.Error($"RobotJob鎵ц寮傚父锛孖P: {ipAddress}", state.RobotCrane.DeviceName, ex);
+                QuartzLogHelper.LogError(_logger, ex, $"RobotJob鎵ц寮傚父锛孖P: {ipAddress}", $"RobotJob鎵ц寮傚父锛孖P: {ipAddress}", state.RobotCrane.DeviceName);
             }
         }
     }
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotMessageHandler.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotMessageHandler.cs
index e67abf1..62ea8ee 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotMessageHandler.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotMessageHandler.cs
@@ -1,8 +1,6 @@
-using Microsoft.Extensions.Logging;
+using Serilog;
 using System.Net.Sockets;
 using WIDESEAWCS_Common;
-using WIDESEAWCS_Core.LogHelper;
-using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_Tasks.Workflow.Abstractions;
 
 namespace WIDESEAWCS_Tasks
@@ -45,7 +43,7 @@
         /// <summary>
         /// 鏃ュ織璁板綍鍣�
         /// </summary>
-        private readonly ILogger<RobotJob> _logger;
+        private readonly ILogger _logger;
 
         /// <summary>
         /// 鏋勯�犲嚱鏁�
@@ -60,7 +58,7 @@
             RobotStateManager stateManager,
             IRobotSimpleCommandHandler simpleCommandHandler,
             IRobotPrefixCommandHandler prefixCommandHandler,
-            ILogger<RobotJob> logger)
+            ILogger logger)
         {
             _socketClientGateway = socketClientGateway;
             _stateManager = stateManager;
@@ -91,20 +89,18 @@
         public async Task<string?> HandleMessageReceivedAsync(string message, bool isJson, TcpClient client)
         {
             var state = _stateManager.GetState(client.Client.RemoteEndPoint.ToString());
-            if(state.OperStatus == message)
+            if (state.OperStatus == message)
             {
                 // 澶勭悊鎴愬姛鍚庯紝灏嗗師娑堟伅鍥炲啓鍒板鎴风锛堜繚鎸佸師鏈夎涓猴級
                 await _socketClientGateway.SendMessageAsync(client, message);
             }
             // 璁板綍鎺ユ敹鍒扮殑娑堟伅鏃ュ織
-            _logger.LogInformation($"鎺ユ敹鍒板鎴风銆恵state.RobotCrane?.DeviceName}銆戝彂閫佹秷鎭�恵message}銆�");
-            QuartzLogger.Info($"鎺ユ敹鍒板鎴风娑堟伅銆恵message}銆�", state.RobotCrane?.DeviceName);
+            QuartzLogHelper.LogInfo(_logger, $"鎺ユ敹鍒板鎴风銆恵state.RobotCrane?.DeviceName}銆戝彂閫佹秷鎭�恵message}銆�", state.RobotCrane?.DeviceName);
 
             // 妫�鏌ヤ换鍔℃�绘暟鏄惁鏈揪鍒颁笂闄�
             if (state.RobotTaskTotalNum > RobotConst.MaxTaskTotalNum)
             {
-                _logger.LogInformation($"鎺ユ敹鍒板鎴风銆恵state.RobotCrane?.DeviceName}銆戝彂閫佹秷鎭�恵message}銆�");
-                QuartzLogger.Info($"鎺ユ敹鍒板鎴风娑堟伅銆恵message}銆�", state.RobotCrane?.DeviceName);
+                QuartzLogHelper.LogInfo(_logger, $"鎺ユ敹鍒板鎴风銆恵state.RobotCrane?.DeviceName}銆戝彂閫佹秷鎭�恵message}銆�", state.RobotCrane?.DeviceName);
                 await _socketClientGateway.SendMessageAsync(client, message);
                 return null;
             }
@@ -116,11 +112,11 @@
             // 绠�鍗曞懡浠ゅ寘鎷細homing銆乭omed銆乺unning銆乸ausing銆乺unmode銆乧ontrolmode 绛�
             if (await _simpleCommandHandler.HandleAsync(messageLower, state))
             {
-                if(messageLower != "batteryarrived")
+                if (messageLower != "batteryarrived")
                 {
                     // 澶勭悊鎴愬姛鍚庯紝灏嗗師娑堟伅鍥炲啓鍒板鎴风锛堜繚鎸佸師鏈夎涓猴級
                     await _socketClientGateway.SendMessageAsync(client, message);
-                    QuartzLogger.Info($"鍙戦�佹秷鎭細銆恵message}銆�", state.RobotCrane?.DeviceName);
+                    QuartzLogHelper.LogInfo(_logger, $"鍙戦�佹秷鎭細銆恵message}銆�", state.RobotCrane?.DeviceName);
                 }
 
                 // 瀹夊叏鏇存柊鐘舵�佸埌鏁版嵁搴�
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotStateManager.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotStateManager.cs
index 4aaae62..5c1ecba 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotStateManager.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotStateManager.cs
@@ -1,6 +1,5 @@
-using Microsoft.Extensions.Logging;
 using Newtonsoft.Json;
-using WIDESEAWCS_Core.LogHelper;
+using Serilog;
 using WIDESEAWCS_ITaskInfoRepository;
 using WIDESEAWCS_Model.Models;
 
@@ -94,8 +93,7 @@
             if (currentEntity == null)
             {
                 _repository.GetOrCreate(newState.IPAddress, newState.RobotCrane ?? new RobotCraneDevice());
-                _logger.LogDebug("TryUpdateStateSafely锛氬垱寤烘柊鐘舵�侊紝IP: {IpAddress}", ipAddress);
-                QuartzLogger.Debug($"鍒涘缓鏂扮姸鎬侊紝IP: {ipAddress}", ipAddress);
+                QuartzLogHelper.LogDebug(_logger, $"鍒涘缓鏂扮姸鎬侊紝IP: {ipAddress}", ipAddress);
                 return true;
             }
 
@@ -112,8 +110,7 @@
 
             if (!success)
             {
-                _logger.LogWarning("TryUpdateStateSafely锛氱増鏈啿绐侊紝鏇存柊澶辫触锛孖P: {IpAddress}锛屾湡鏈涚増鏈�: {ExpectedVersion}", ipAddress, expectedVersion);
-                QuartzLogger.Warn($"鐗堟湰鍐茬獊锛屾洿鏂板け璐ワ紝IP: {ipAddress}", ipAddress);
+                QuartzLogHelper.LogWarn(_logger, $"TryUpdateStateSafely锛氱増鏈啿绐侊紝鏇存柊澶辫触锛孖P: {ipAddress}锛屾湡鏈涚増鏈�: {expectedVersion}", ipAddress);
             }
 
             return success;
@@ -161,4 +158,4 @@
             return _repository.ToSocketState(entity);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotTaskProcessor.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotTaskProcessor.cs
index 104a1bb..84113a2 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotTaskProcessor.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotTaskProcessor.cs
@@ -1,5 +1,5 @@
-using Microsoft.Extensions.Logging;
 using Newtonsoft.Json;
+using Serilog;
 using WIDESEA_Core;
 using WIDESEAWCS_Common;
 using WIDESEAWCS_Common.HttpEnum;
@@ -176,8 +176,7 @@
             if (result)
             {
                 // 鍙戦�佹垚鍔燂紝璁板綍 Info 鏃ュ織
-                _logger.LogInformation("涓嬪彂鍙栬揣鎸囦护鎴愬姛锛屾寚浠�: {TaskString}锛岃澶�: {DeviceName}", taskString, state.RobotCrane?.DeviceName);
-                QuartzLogger.Info($"涓嬪彂鍙栬揣鎸囦护鎴愬姛锛屾寚浠�: {taskString}", state.RobotCrane?.DeviceName);
+                QuartzLogHelper.LogInfo(_logger, $"涓嬪彂鍙栬揣鎸囦护鎴愬姛锛屾寚浠�: {taskString}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
 
                 // 鏇存柊浠诲姟鐘舵�佷负"鏈哄櫒浜烘墽琛屼腑"
                 task.RobotTaskState = TaskRobotStatusEnum.RobotExecuting.GetHashCode();
@@ -200,8 +199,7 @@
             else
             {
                 // 鍙戦�佸け璐ワ紝璁板綍 Error 鏃ュ織
-                _logger.LogError("涓嬪彂鍙栬揣鎸囦护澶辫触锛屾寚浠�: {TaskString}锛岃澶�: {DeviceName}", taskString, state.RobotCrane?.DeviceName);
-                QuartzLogger.Error($"涓嬪彂鍙栬揣鎸囦护澶辫触锛屾寚浠�: {taskString}", state.RobotCrane?.DeviceName);
+                QuartzLogHelper.LogError(_logger, $"涓嬪彂鍙栬揣鎸囦护澶辫触锛屾寚浠�: {taskString}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
             }
         }
 
@@ -224,7 +222,7 @@
         {
             if (positions == null || positions.Count == 0)
             {
-                _logger.LogWarning("SendSocketRobotFakeBatteryPickAsync锛氬钩闈㈢偣浣嶅垪琛ㄤ负绌猴紝浠诲姟鍙�: {TaskNum}", task.RobotTaskNum);
+                QuartzLogHelper.LogWarn(_logger, $"SendSocketRobotFakeBatteryPickAsync锛氬钩闈㈢偣浣嶅垪琛ㄤ负绌猴紝浠诲姟鍙�: {task.RobotTaskNum}", state.RobotCrane?.DeviceName ?? "Unknown");
                 return;
             }
 
@@ -241,9 +239,7 @@
 
             if (result)
             {
-                _logger.LogInformation("涓嬪彂鍋囩數鑺彇璐ф寚浠ゆ垚鍔燂紝鎸囦护: {TaskString}锛岀偣浣�: {Positions}锛岃澶�: {DeviceName}",
-                    taskString, string.Join(",", positions), state.RobotCrane?.DeviceName);
-                QuartzLogger.Info($"涓嬪彂鍋囩數鑺彇璐ф寚浠ゆ垚鍔燂紝鎸囦护: {taskString}", state.RobotCrane?.DeviceName);
+                QuartzLogHelper.LogInfo(_logger, $"涓嬪彂鍋囩數鑺彇璐ф寚浠ゆ垚鍔燂紝鎸囦护: {taskString}锛岀偣浣�: {string.Join(",", positions)}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
 
                 // 鏇存柊浠诲姟鐘舵�佷负"鏈哄櫒浜烘墽琛屼腑"
                 task.RobotTaskState = TaskRobotStatusEnum.RobotExecuting.GetHashCode();
@@ -258,8 +254,7 @@
             }
             else
             {
-                _logger.LogError("涓嬪彂鍋囩數鑺彇璐ф寚浠ゅけ璐ワ紝鎸囦护: {TaskString}锛岃澶�: {DeviceName}", taskString, state.RobotCrane?.DeviceName);
-                QuartzLogger.Error($"涓嬪彂鍋囩數鑺彇璐ф寚浠ゅけ璐ワ紝鎸囦护: {taskString}", state.RobotCrane?.DeviceName);
+                QuartzLogHelper.LogError(_logger, $"涓嬪彂鍋囩數鑺彇璐ф寚浠ゅけ璐ワ紝鎸囦护: {taskString}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
             }
         }
 
@@ -324,9 +319,7 @@
 
             if (result)
             {
-                _logger.LogInformation("涓嬪彂鎵规鍙栬揣鎸囦护鎴愬姛锛屾寚浠�: {TaskString}锛屾壒娆�: {Range}锛岃澶�: {DeviceName}",
-                    taskString, range, state.RobotCrane?.DeviceName);
-                QuartzLogger.Info($"涓嬪彂鎵规鍙栬揣鎸囦护鎴愬姛锛屾寚浠�: {taskString}锛屾壒娆�: {range}", state.RobotCrane?.DeviceName);
+                QuartzLogHelper.LogInfo(_logger, $"涓嬪彂鎵规鍙栬揣鎸囦护鎴愬姛锛屾寚浠�: {taskString}锛屾壒娆�: {range}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
 
                 task.RobotTaskState = TaskRobotStatusEnum.RobotExecuting.GetHashCode();
                 state.CurrentTask = task;
@@ -338,8 +331,7 @@
             }
             else
             {
-                _logger.LogError("涓嬪彂鎵规鍙栬揣鎸囦护澶辫触锛屾寚浠�: {TaskString}锛岃澶�: {DeviceName}", taskString, state.RobotCrane?.DeviceName);
-                QuartzLogger.Error($"涓嬪彂鎵规鍙栬揣鎸囦护澶辫触锛屾寚浠�: {taskString}", state.RobotCrane?.DeviceName);
+                QuartzLogHelper.LogError(_logger, $"涓嬪彂鎵规鍙栬揣鎸囦护澶辫触锛屾寚浠�: {taskString}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
             }
         }
 
@@ -371,9 +363,7 @@
 
             if (result)
             {
-                _logger.LogInformation("涓嬪彂鍋囩數鑺壒娆″彇璐ф寚浠ゆ垚鍔燂紝鎸囦护: {TaskString}锛屾壒娆�: {Range}锛岃澶�: {DeviceName}",
-                    taskString, range, state.RobotCrane?.DeviceName);
-                QuartzLogger.Info($"涓嬪彂鍋囩數鑺壒娆″彇璐ф寚浠ゆ垚鍔燂紝鎸囦护: {taskString}锛屾壒娆�: {range}", state.RobotCrane?.DeviceName);
+                QuartzLogHelper.LogInfo(_logger, $"涓嬪彂鍋囩數鑺壒娆″彇璐ф寚浠ゆ垚鍔燂紝鎸囦护: {taskString}锛屾壒娆�: {range}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
 
                 task.RobotTaskState = TaskRobotStatusEnum.RobotExecuting.GetHashCode();
                 state.CurrentTask = task;
@@ -385,8 +375,7 @@
             }
             else
             {
-                _logger.LogError("涓嬪彂鍋囩數鑺壒娆″彇璐ф寚浠ゅけ璐ワ紝鎸囦护: {TaskString}锛岃澶�: {DeviceName}", taskString, state.RobotCrane?.DeviceName);
-                QuartzLogger.Error($"涓嬪彂鍋囩數鑺壒娆″彇璐ф寚浠ゅけ璐ワ紝鎸囦护: {taskString}", state.RobotCrane?.DeviceName);
+                QuartzLogHelper.LogError(_logger, $"涓嬪彂鍋囩數鑺壒娆″彇璐ф寚浠ゅけ璐ワ紝鎸囦护: {taskString}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
             }
         }
 
@@ -419,9 +408,7 @@
 
             if (result)
             {
-                _logger.LogInformation("涓嬪彂鏀捐揣鎸囦护鎴愬姛锛屾寚浠�: {TaskString}锛屾壒娆�: {Range}锛岃澶�: {DeviceName}",
-                    taskString, range, state.RobotCrane?.DeviceName);
-                QuartzLogger.Info($"涓嬪彂鏀捐揣鎸囦护鎴愬姛锛屾寚浠�: {taskString}锛屾壒娆�: {range}", state.RobotCrane?.DeviceName);
+                QuartzLogHelper.LogInfo(_logger, $"涓嬪彂鏀捐揣鎸囦护鎴愬姛锛屾寚浠�: {taskString}锛屾壒娆�: {range}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
 
                 task.RobotTaskState = TaskRobotStatusEnum.RobotExecuting.GetHashCode();
                 state.CurrentTask = task;
@@ -433,9 +420,7 @@
             }
             else
             {
-                _logger.LogError("涓嬪彂鏀捐揣鎸囦护澶辫触锛屾寚浠�: {TaskString}锛岃澶�: {DeviceName}",
-                    taskString, state.RobotCrane?.DeviceName);
-                QuartzLogger.Error($"涓嬪彂鏀捐揣鎸囦护澶辫触锛屾寚浠�: {taskString}", state.RobotCrane?.DeviceName);
+                QuartzLogHelper.LogError(_logger, $"涓嬪彂鏀捐揣鎸囦护澶辫触锛屾寚浠�: {taskString}锛岃澶�: {state.RobotCrane?.DeviceName}", state.RobotCrane?.DeviceName);
             }
         }
 
@@ -462,8 +447,7 @@
             var currentTask = state.CurrentTask;
             if (currentTask == null)
             {
-                _logger.LogDebug("HandleInboundTaskAsync锛氬綋鍓嶄换鍔′负绌�");
-                QuartzLogger.Debug($"HandleInboundTaskAsync锛氬綋鍓嶄换鍔′负绌�", state.RobotCrane?.DeviceName ?? "Unknown");
+                QuartzLogHelper.LogDebug(_logger, $"HandleInboundTaskAsync锛氬綋鍓嶄换鍔′负绌�", state.RobotCrane?.DeviceName ?? "Unknown");
                 return false;
             }
 
@@ -573,17 +557,27 @@
             };
 
             // 璁板綍鏃ュ織锛氬紑濮嬭皟鐢� WMS 鍒涘缓鍏ュ簱浠诲姟
-            _logger.LogInformation("HandleInboundTaskAsync锛氳皟鐢╓MS鍒涘缓鍏ュ簱浠诲姟锛屾墭鐩樼爜: {PalletCode}锛屼换鍔$被鍨�: {TaskType}", PalletCode, taskType);
-            QuartzLogger.Info($"璋冪敤WMS鍒涘缓鍏ュ簱浠诲姟锛屾墭鐩樼爜: {PalletCode}锛屼换鍔$被鍨�: {taskType}", state.RobotCrane?.DeviceName ?? "Unknown");
+            QuartzLogHelper.LogInfo(_logger, $"HandleInboundTaskAsync锛氳皟鐢╓MS鍒涘缓鍏ュ簱浠诲姟锛屾墭鐩樼爜: {PalletCode}锛屼换鍔$被鍨�: {taskType}", state.RobotCrane?.DeviceName ?? "Unknown");
 
             // 璋冪敤 WMS 鎺ュ彛鍒涘缓鍏ュ簱浠诲姟
-            var result = _httpClientHelper.Post<WebResponseContent>(nameof(ConfigKey.CreateTaskInboundAsync), taskDto.ToJson());
+            string configKey = nameof(ConfigKey.CreateTaskInboundAsync);
+            string requestParam = taskDto.ToJson();
+            DateTime startTime = DateTime.Now;
+
+            var result = _httpClientHelper.Post<WebResponseContent>(configKey, requestParam);
+
+            if (!result.IsSuccess || !result.Data.Status)
+            {
+                QuartzLogHelper.LogError(_logger, $"璋冪敤WMS鎺ュ彛澶辫触,鎺ュ彛:銆恵configKey}銆�,璇锋眰鍙傛暟:銆恵requestParam}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�", state.RobotCrane?.DeviceName ?? "Unknown");
+                return false;
+            }
+
+            QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鎺ュ彛鎴愬姛,鎺ュ彛:銆恵configKey}銆�,鍝嶅簲鏁版嵁:銆恵result.Data?.Data}銆�,鑰楁椂:{(DateTime.Now - startTime).TotalMilliseconds}ms", state.RobotCrane?.DeviceName ?? "Unknown");
 
             // 濡傛灉璋冪敤澶辫触鎴栬繑鍥為敊璇姸鎬�
             if (!result.Data.Status && result.IsSuccess)
             {
-                _logger.LogError("HandleInboundTaskAsync锛歐MS杩斿洖閿欒鐘舵�侊紝Status: {Status}", result.Data.Status);
-                QuartzLogger.Error($"HandleInboundTaskAsync锛歐MS杩斿洖閿欒鐘舵��", state.RobotCrane?.DeviceName ?? "Unknown");
+                QuartzLogHelper.LogError(_logger, $"HandleInboundTaskAsync锛歐MS杩斿洖閿欒鐘舵�侊紝Status: {result.Data.Status}", state.RobotCrane?.DeviceName ?? "Unknown");
                 return false;
             }
 
@@ -594,8 +588,7 @@
             var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
             if (!content.Status)
             {
-                _logger.LogError("HandleInboundTaskAsync锛氭帴鏀禬MS浠诲姟澶辫触");
-                QuartzLogger.Error($"HandleInboundTaskAsync锛氭帴鏀禬MS浠诲姟澶辫触", state.RobotCrane?.DeviceName ?? "Unknown");
+                QuartzLogHelper.LogError(_logger, $"HandleInboundTaskAsync锛氭帴鏀禬MS浠诲姟澶辫触", state.RobotCrane?.DeviceName ?? "Unknown");
                 return false;
             }
 
@@ -698,7 +691,18 @@
         /// <returns>HTTP 鍝嶅簲缁撴灉</returns>
         public HttpResponseResult<WebResponseContent> PostSplitPalletAsync(StockDTO stockDTO)
         {
-            return _httpClientHelper.Post<WebResponseContent>(nameof(ConfigKey.SplitPalletAsync), stockDTO.ToJson());
+            string configKey = nameof(ConfigKey.SplitPalletAsync);
+            string requestParam = stockDTO.ToJson();
+            DateTime startTime = DateTime.Now;
+
+            var result = _httpClientHelper.Post<WebResponseContent>(configKey, requestParam);
+
+            if (!result.IsSuccess || !result.Data.Status)
+                QuartzLogHelper.LogError(_logger, $"璋冪敤WMS鎺ュ彛澶辫触,鎺ュ彛:銆恵configKey}銆�,璇锋眰鍙傛暟:銆恵requestParam}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�", "RobotTaskProcessor");
+            else
+                QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鎺ュ彛鎴愬姛,鎺ュ彛:銆恵configKey}銆�,鍝嶅簲鏁版嵁:銆恵result.Data?.Data}銆�,鑰楁椂:{(DateTime.Now - startTime).TotalMilliseconds}ms", "RobotTaskProcessor");
+
+            return result;
         }
 
         /// <summary>
@@ -717,7 +721,17 @@
         /// <returns>HTTP 鍝嶅簲缁撴灉</returns>
         public HttpResponseResult<WebResponseContent> PostGroupPalletAsync(string configKey, StockDTO stockDTO)
         {
-            return _httpClientHelper.Post<WebResponseContent>(configKey, stockDTO.ToJson());
+            string requestParam = stockDTO.ToJson();
+            DateTime startTime = DateTime.Now;
+
+            var result = _httpClientHelper.Post<WebResponseContent>(configKey, requestParam);
+
+            if (!result.IsSuccess || !result.Data.Status)
+                QuartzLogHelper.LogError(_logger, $"璋冪敤WMS鎺ュ彛澶辫触,鎺ュ彛:銆恵configKey}銆�,璇锋眰鍙傛暟:銆恵requestParam}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�", "RobotTaskProcessor");
+            else
+                QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鎺ュ彛鎴愬姛,鎺ュ彛:銆恵configKey}銆�,鍝嶅簲鏁版嵁:銆恵result.Data?.Data}銆�,鑰楁椂:{(DateTime.Now - startTime).TotalMilliseconds}ms", "RobotTaskProcessor");
+
+            return result;
         }
 
         /// <summary>
@@ -731,8 +745,19 @@
         /// <returns>HTTP 鍝嶅簲缁撴灉</returns>
         public HttpResponseResult<WebResponseContent> PostSplitPalletConfirmAsync(string palletCode, string deviceName)
         {
+            string configKey = nameof(ConfigKey.SplitPalletConfirm);
             var request = new { PalletCode = palletCode, DeviceName = deviceName };
-            return _httpClientHelper.Post<WebResponseContent>(nameof(ConfigKey.SplitPalletConfirm), request.ToJson());
+            string requestParam = request.ToJson();
+            DateTime startTime = DateTime.Now;
+
+            var result = _httpClientHelper.Post<WebResponseContent>(configKey, requestParam);
+
+            if (!result.IsSuccess || !result.Data.Status)
+                QuartzLogHelper.LogError(_logger, $"璋冪敤WMS鎺ュ彛澶辫触,鎺ュ彛:銆恵configKey}銆�,璇锋眰鍙傛暟:銆恵requestParam}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�", "RobotTaskProcessor");
+            else
+                QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鎺ュ彛鎴愬姛,鎺ュ彛:銆恵configKey}銆�,鍝嶅簲鏁版嵁:銆恵result.Data?.Data}銆�,鑰楁椂:{(DateTime.Now - startTime).TotalMilliseconds}ms", "RobotTaskProcessor");
+
+            return result;
         }
 
         /// <summary>
@@ -746,8 +771,19 @@
         /// <returns>HTTP 鍝嶅簲缁撴灉</returns>
         public HttpResponseResult<WebResponseContent> PostGroupPalletConfirmAsync(string palletCode, string deviceName)
         {
+            string configKey = nameof(ConfigKey.GroupPalletConfirm);
             var request = new { PalletCode = palletCode, DeviceName = deviceName };
-            return _httpClientHelper.Post<WebResponseContent>(nameof(ConfigKey.GroupPalletConfirm), request.ToJson());
+            string requestParam = request.ToJson();
+            DateTime startTime = DateTime.Now;
+
+            var result = _httpClientHelper.Post<WebResponseContent>(configKey, requestParam);
+
+            if (!result.IsSuccess || !result.Data.Status)
+                QuartzLogHelper.LogError(_logger, $"璋冪敤WMS鎺ュ彛澶辫触,鎺ュ彛:銆恵configKey}銆�,璇锋眰鍙傛暟:銆恵requestParam}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�", "RobotTaskProcessor");
+            else
+                QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鎺ュ彛鎴愬姛,鎺ュ彛:銆恵configKey}銆�,鍝嶅簲鏁版嵁:銆恵result.Data?.Data}銆�,鑰楁椂:{(DateTime.Now - startTime).TotalMilliseconds}ms", "RobotTaskProcessor");
+
+            return result;
         }
     }
 }
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotPrefixCommandHandler.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotPrefixCommandHandler.cs
index d7aa124..cf749d9 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotPrefixCommandHandler.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotPrefixCommandHandler.cs
@@ -1,7 +1,9 @@
 using System.Net.Sockets;
+using Serilog;
 using WIDESEAWCS_Common.HttpEnum;
 using WIDESEAWCS_Common.TaskEnum;
 using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_Core.LogHelper;
 using WIDESEAWCS_ITaskInfoService;
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_Tasks.Workflow.Abstractions;
@@ -66,6 +68,11 @@
         private readonly IFakeBatteryPositionService _fakeBatteryPositionService;
 
         /// <summary>
+        /// 鏃ュ織璁板綍鍣�
+        /// </summary>
+        private readonly ILogger _logger;
+
+        /// <summary>
         /// 鏋勯�犲嚱鏁�
         /// </summary>
         /// <param name="robotTaskService">浠诲姟鏈嶅姟</param>
@@ -73,18 +80,21 @@
         /// <param name="stateManager">鐘舵�佺鐞嗗櫒</param>
         /// <param name="socketClientGateway">Socket 缃戝叧</param>
         /// <param name="fakeBatteryPositionService">鍋囩數鑺綅缃湇鍔�</param>
+        /// <param name="logger">鏃ュ織璁板綍鍣�</param>
         public RobotPrefixCommandHandler(
             IRobotTaskService robotTaskService,
             RobotTaskProcessor taskProcessor,
             RobotStateManager stateManager,
             ISocketClientGateway socketClientGateway,
-            IFakeBatteryPositionService fakeBatteryPositionService)
+            IFakeBatteryPositionService fakeBatteryPositionService,
+            ILogger logger)
         {
             _robotTaskService = robotTaskService;
             _taskProcessor = taskProcessor;
             _stateManager = stateManager;
             _socketClientGateway = socketClientGateway;
             _fakeBatteryPositionService = fakeBatteryPositionService;
+            _logger = logger;
         }
 
         /// <summary>
@@ -164,13 +174,13 @@
                 }
                 else
                 {
-                    Console.WriteLine($"RobotJob HandleAsync Warning: Current task not found for RobotTaskId {state.CurrentTask.RobotTaskId}");
+                    QuartzLogHelper.LogWarn(_logger, $"RobotJob HandleAsync Warning: Current task not found for RobotTaskId {state.CurrentTask.RobotTaskId}", state.RobotCrane?.DeviceName ?? "Unknown");
                 }
             }
             catch (Exception ex)
             {
                 // 鎹曡幏骞惰褰曞紓甯革紝闃叉寮傚父鍚戜笂浼犳挱瀵艰嚧娑堟伅澶勭悊涓柇
-                Console.WriteLine($"RobotJob MessageReceived Error: {ex.Message}");
+                QuartzLogHelper.LogError(_logger, ex, $"RobotJob MessageReceived Error: {ex.Message}", $"RobotJob MessageReceived Error: {ex.Message}", state.RobotCrane?.DeviceName ?? "Unknown");
             }
         }
 
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotSimpleCommandHandler.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotSimpleCommandHandler.cs
index 767805f..9f8efa0 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotSimpleCommandHandler.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotSimpleCommandHandler.cs
@@ -1,3 +1,4 @@
+using Serilog;
 using WIDESEAWCS_Common.TaskEnum;
 using WIDESEAWCS_Core.LogHelper;
 using WIDESEAWCS_Model.Models;
@@ -36,13 +37,20 @@
         private readonly ISocketClientGateway _socketClientGateway;
 
         /// <summary>
+        /// 鏃ュ織璁板綍鍣�
+        /// </summary>
+        private readonly ILogger _logger;
+
+        /// <summary>
         /// 鏋勯�犲嚱鏁�
         /// </summary>
         /// <param name="taskProcessor">浠诲姟澶勭悊鍣ㄥ疄渚�</param>
-        public RobotSimpleCommandHandler(RobotTaskProcessor taskProcessor, ISocketClientGateway socketClientGateway)
+        /// <param name="logger">鏃ュ織璁板綍鍣�</param>
+        public RobotSimpleCommandHandler(RobotTaskProcessor taskProcessor, ISocketClientGateway socketClientGateway, ILogger logger)
         {
             _taskProcessor = taskProcessor;
             _socketClientGateway = socketClientGateway;
+            _logger = logger;
         }
 
         /// <summary>
@@ -157,7 +165,7 @@
                             var confirmResult = _taskProcessor.PostSplitPalletConfirmAsync(sourcePallet, state.RobotCrane?.DeviceName);
                             if (!confirmResult.IsSuccess)
                             {
-                                QuartzLogger.Error($"鎵归噺鎷嗙洏纭澶辫触: {confirmResult.ErrorMessage}", state.RobotCrane?.DeviceName ?? "Unknown");
+                                QuartzLogHelper.LogError(_logger, $"鎵归噺鎷嗙洏纭澶辫触: {confirmResult.ErrorMessage}", state.RobotCrane?.DeviceName ?? "Unknown");
                                 return false;
                             }
 
@@ -171,12 +179,12 @@
 
                                 if (_taskProcessor.DeleteTask(currentTask.RobotTaskId) != true)
                                 {
-                                    QuartzLogger.Error($"allpickfinished锛氬垹闄や换鍔¤褰曞け璐ワ紝浠诲姟鍙�: {currentTask.RobotTaskNum}", state.RobotCrane?.DeviceName ?? "Unknown");
+                                    QuartzLogHelper.LogError(_logger, $"allpickfinished锛氬垹闄や换鍔¤褰曞け璐ワ紝浠诲姟鍙�: {currentTask.RobotTaskNum}", state.RobotCrane?.DeviceName ?? "Unknown");
                                     return false;
                                 }
 
                                 await _socketClientGateway.SendToClientAsync(state.IPAddress, $"Swap,diskFinished");
-                                QuartzLogger.Info($"鍙戦�佹秷鎭細銆怱wap,diskFinished銆�", state.RobotCrane.DeviceName);
+                                QuartzLogHelper.LogInfo(_logger, $"鍙戦�佹秷鎭細銆怱wap,diskFinished銆�", state.RobotCrane.DeviceName);
 
                                 state.CurrentTask = null;
                                 state.RobotTaskTotalNum = 0;
@@ -206,12 +214,12 @@
 
                             if (_taskProcessor.DeleteTask(currentTask.RobotTaskId) != true)
                             {
-                                QuartzLogger.Error($"allpickfinished锛氬垹闄や换鍔¤褰曞け璐ワ紝浠诲姟鍙�: {currentTask.RobotTaskNum}", state.RobotCrane?.DeviceName ?? "Unknown");
+                                QuartzLogHelper.LogError(_logger, $"allpickfinished锛氬垹闄や换鍔¤褰曞け璐ワ紝浠诲姟鍙�: {currentTask.RobotTaskNum}", state.RobotCrane?.DeviceName ?? "Unknown");
                                 return false;
                             }
 
                             await _socketClientGateway.SendToClientAsync(state.IPAddress, $"Swap,diskFinished");
-                            QuartzLogger.Info($"鍙戦�佹秷鎭細銆怱wap,diskFinished銆�", state.RobotCrane.DeviceName);
+                            QuartzLogHelper.LogInfo(_logger, $"鍙戦�佹秷鎭細銆怱wap,diskFinished銆�", state.RobotCrane.DeviceName);
 
                             state.ChangePalletPhase = 0;
                             state.CurrentBatchIndex = 1;
@@ -227,7 +235,7 @@
                             var confirmResult = _taskProcessor.PostSplitPalletConfirmAsync(sourcePallet, state.RobotCrane?.DeviceName);
                             if (!confirmResult.IsSuccess)
                             {
-                                QuartzLogger.Error($"鎵归噺鎷嗙洏纭澶辫触: {confirmResult.ErrorMessage}", state.RobotCrane?.DeviceName ?? "Unknown");
+                                QuartzLogHelper.LogError(_logger, $"鎵归噺鎷嗙洏纭澶辫触: {confirmResult.ErrorMessage}", state.RobotCrane?.DeviceName ?? "Unknown");
                                 return false;
                             }
 
@@ -239,12 +247,12 @@
                             // 鍏ュ簱鎴愬姛锛屽垹闄や换鍔¤褰�
                             if (_taskProcessor.DeleteTask(currentTask.RobotTaskId) != true)
                             {
-                                QuartzLogger.Error($"allpickfinished锛氬垹闄や换鍔¤褰曞け璐ワ紝浠诲姟鍙�: {currentTask.RobotTaskNum}", state.RobotCrane?.DeviceName ?? "Unknown");
+                                QuartzLogHelper.LogError(_logger, $"allpickfinished锛氬垹闄や换鍔¤褰曞け璐ワ紝浠诲姟鍙�: {currentTask.RobotTaskNum}", state.RobotCrane?.DeviceName ?? "Unknown");
                                 return false;
                             }
 
                             await _socketClientGateway.SendToClientAsync(state.IPAddress, $"Swap,diskFinished");
-                            QuartzLogger.Info($"鍙戦�佹秷鎭細銆怱wap,diskFinished銆�", state.RobotCrane.DeviceName);
+                            QuartzLogHelper.LogInfo(_logger, $"鍙戦�佹秷鎭細銆怱wap,diskFinished銆�", state.RobotCrane.DeviceName);
                             return true;
                         }
                         return false;
@@ -274,7 +282,7 @@
                             var confirmResult = _taskProcessor.PostGroupPalletConfirmAsync(targetPallet, state.RobotCrane?.DeviceName);
                             if (!confirmResult.IsSuccess)
                             {
-                                QuartzLogger.Error($"鎵归噺缁勭洏纭澶辫触: {confirmResult.ErrorMessage}", state.RobotCrane?.DeviceName ?? "Unknown");
+                                QuartzLogHelper.LogError(_logger, $"鎵归噺缁勭洏纭澶辫触: {confirmResult.ErrorMessage}", state.RobotCrane?.DeviceName ?? "Unknown");
                                 return false;
                             }
 
@@ -288,7 +296,7 @@
 
                                 if (_taskProcessor.DeleteTask(currentTask.RobotTaskId) != true)
                                 {
-                                    QuartzLogger.Error($"allputfinished锛氬垹闄や换鍔¤褰曞け璐ワ紝浠诲姟鍙�: {currentTask.RobotTaskNum}", state.RobotCrane?.DeviceName ?? "Unknown");
+                                    QuartzLogHelper.LogError(_logger, $"allputfinished锛氬垹闄や换鍔¤褰曞け璐ワ紝浠诲姟鍙�: {currentTask.RobotTaskNum}", state.RobotCrane?.DeviceName ?? "Unknown");
                                     return false;
                                 }
 
@@ -297,7 +305,7 @@
                                 state.CellBarcode = new List<string>();
 
                                 await _socketClientGateway.SendToClientAsync(state.IPAddress, $"Swap,diskFinished");
-                                QuartzLogger.Info($"鍙戦�佹秷鎭細銆怱wap,diskFinished銆�", state.RobotCrane.DeviceName);
+                                QuartzLogHelper.LogInfo(_logger, $"鍙戦�佹秷鎭細銆怱wap,diskFinished銆�", state.RobotCrane.DeviceName);
 
                                 state.ChangePalletPhase = 0;
                                 state.CurrentBatchIndex = 1;
@@ -324,7 +332,7 @@
 
                             if (_taskProcessor.DeleteTask(currentTask.RobotTaskId) != true)
                             {
-                                QuartzLogger.Error($"allputfinished锛氬垹闄や换鍔¤褰曞け璐ワ紝浠诲姟鍙�: {currentTask.RobotTaskNum}", state.RobotCrane?.DeviceName ?? "Unknown");
+                                QuartzLogHelper.LogError(_logger, $"allputfinished锛氬垹闄や换鍔¤褰曞け璐ワ紝浠诲姟鍙�: {currentTask.RobotTaskNum}", state.RobotCrane?.DeviceName ?? "Unknown");
                                 return false;
                             }
 
@@ -333,7 +341,7 @@
                             state.CellBarcode = new List<string>();
 
                             await _socketClientGateway.SendToClientAsync(state.IPAddress, $"Swap,diskFinished");
-                            QuartzLogger.Info($"鍙戦�佹秷鎭細銆怱wap,diskFinished銆�", state.RobotCrane.DeviceName);
+                            QuartzLogHelper.LogInfo(_logger, $"鍙戦�佹秷鎭細銆怱wap,diskFinished銆�", state.RobotCrane.DeviceName);
 
                             state.ChangePalletPhase = 0;
                             state.CurrentBatchIndex = 1;
@@ -349,7 +357,7 @@
                             var confirmResult = _taskProcessor.PostGroupPalletConfirmAsync(targetPallet, state.RobotCrane?.DeviceName);
                             if (!confirmResult.IsSuccess)
                             {
-                                QuartzLogger.Error($"鎵归噺缁勭洏纭澶辫触: {confirmResult.ErrorMessage}", state.RobotCrane?.DeviceName ?? "Unknown");
+                                QuartzLogHelper.LogError(_logger, $"鎵归噺缁勭洏纭澶辫触: {confirmResult.ErrorMessage}", state.RobotCrane?.DeviceName ?? "Unknown");
                                 return false;
                             }
 
@@ -363,7 +371,7 @@
                             // 鍏ュ簱鎴愬姛锛屽垹闄や换鍔¤褰�
                             if (_taskProcessor.DeleteTask(currentTask.RobotTaskId) != true)
                             {
-                                QuartzLogger.Error($"allputfinished锛氬垹闄や换鍔¤褰曞け璐ワ紝浠诲姟鍙�: {currentTask.RobotTaskNum}", state.RobotCrane?.DeviceName ?? "Unknown");
+                                QuartzLogHelper.LogError(_logger, $"allputfinished锛氬垹闄や换鍔¤褰曞け璐ワ紝浠诲姟鍙�: {currentTask.RobotTaskNum}", state.RobotCrane?.DeviceName ?? "Unknown");
                                 return false;
                             }
 
@@ -373,7 +381,7 @@
                             state.CellBarcode = new List<string>();  // 娓呯┖鏉$爜鍒楄〃
 
                             await _socketClientGateway.SendToClientAsync(state.IPAddress, $"Group,diskFinished");
-                            QuartzLogger.Info($"鍙戦�佹秷鎭細銆怗roup,diskFinished銆�", state.RobotCrane.DeviceName);
+                            QuartzLogHelper.LogInfo(_logger, $"鍙戦�佹秷鎭細銆怗roup,diskFinished銆�", state.RobotCrane.DeviceName);
                             return true;
                         }
                         return false;
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs
index 2f516f6..158d35c 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs
@@ -1,11 +1,9 @@
-using Microsoft.Extensions.Logging;
-using WIDESEA_Core;
+using Serilog;
 using WIDESEAWCS_Common.TaskEnum;
 using WIDESEAWCS_Core.Helper;
 using WIDESEAWCS_Core.LogHelper;
 using WIDESEAWCS_ITaskInfoService;
 using WIDESEAWCS_Model.Models;
-using WIDESEAWCS_Tasks.SocketServer;
 using WIDESEAWCS_Tasks.Workflow.Abstractions;
 
 namespace WIDESEAWCS_Tasks.Workflow
@@ -123,8 +121,7 @@
                     && (latestState.RobotArmObject.IsNullOrEmpty() || latestState.RobotArmObject == 1)
                     && task.RobotTaskState == TaskRobotStatusEnum.RobotPickFinish.GetHashCode())
                 {
-                    _logger.LogInformation("ExecuteAsync锛氭弧瓒虫斁璐ф潯浠讹紝寮�濮嬩笅鍙戞斁璐т换鍔★紝浠诲姟鍙�: {TaskNum}", task.RobotTaskNum);
-                    QuartzLogger.Info($"ExecuteAsync锛氭弧瓒虫斁璐ф潯浠讹紝寮�濮嬩笅鍙戞斁璐т换鍔�", latestState.RobotCrane?.DeviceName ?? ipAddress);
+                    QuartzLogHelper.LogInfo(_logger, $"ExecuteAsync锛氭弧瓒虫斁璐ф潯浠讹紝寮�濮嬩笅鍙戞斁璐т换鍔�,浠诲姟鍙�: {task.RobotTaskNum}", latestState.RobotCrane?.DeviceName ?? ipAddress);
                     // 鍙戦�佹斁璐ф寚浠�
                     await HandlePickFinishedStateAsync(task, ipAddress);
                 }
@@ -137,11 +134,9 @@
                 // - 浠诲姟鐘舵�佷负 RobotPutFinish 鎴栦笉鏄� RobotExecuting
                 else if ((latestState.CurrentAction == "PutFinished" || latestState.CurrentAction == "AllPutFinished" || latestState.CurrentAction.IsNullOrEmpty())
                     && (latestState.RobotArmObject.IsNullOrEmpty() || latestState.RobotArmObject == 0)
-                    && (task.RobotTaskState == TaskRobotStatusEnum.RobotPutFinish.GetHashCode() || task.RobotTaskState != TaskRobotStatusEnum.RobotExecuting.GetHashCode())
-                    && latestState.BatteryArrived)
+                    && (task.RobotTaskState == TaskRobotStatusEnum.RobotPutFinish.GetHashCode() || task.RobotTaskState != TaskRobotStatusEnum.RobotExecuting.GetHashCode()))
                 {
-                    _logger.LogInformation("ExecuteAsync锛氭弧瓒冲彇璐ф潯浠讹紝寮�濮嬩笅鍙戝彇璐т换鍔★紝浠诲姟鍙�: {TaskNum}", task.RobotTaskNum);
-                    QuartzLogger.Info($"ExecuteAsync锛氭弧瓒冲彇璐ф潯浠讹紝寮�濮嬩笅鍙戝彇璐т换鍔�", latestState.RobotCrane?.DeviceName ?? ipAddress);
+                    QuartzLogHelper.LogInfo(_logger, $"ExecuteAsync锛氭弧瓒冲彇璐ф潯浠讹紝寮�濮嬩笅鍙戝彇璐т换鍔★紝浠诲姟鍙�: {task.RobotTaskNum}", latestState.RobotCrane?.DeviceName ?? ipAddress);
                     // 鍙戦�佸彇璐ф寚浠�
                     await HandlePutFinishedStateAsync(task, ipAddress);
                 }
@@ -229,7 +224,7 @@
                         var positions = _taskProcessor.GetNextAvailableFakeBatteryPositions(Math.Min(4, remainingFake));
                         if (positions.Count == 0)
                         {
-                            _logger.LogError("HandlePickFinishedStateAsync锛氭棤鍙敤鍋囩數鑺偣浣嶏紝浠诲姟鍙�: {TaskNum}", task.RobotTaskNum);
+                            QuartzLogHelper.LogInfo(_logger, $"HandlePickFinishedStateAsync锛氭棤鍙敤鍋囩數鑺偣浣嶏紝浠诲姟鍙�: {task.RobotTaskNum}", state?.RobotCrane?.DeviceName ?? ipAddress);
                             return;
                         }
 
@@ -267,8 +262,7 @@
 
             if (result)
             {
-                _logger.LogInformation("HandlePickFinishedStateAsync锛氫笅鍙戞斁璐ф寚浠ゆ垚鍔燂紝鎸囦护: {TaskString}锛屼换鍔″彿: {TaskNum}", taskString, task.RobotTaskNum);
-                QuartzLogger.Info($"涓嬪彂鏀捐揣鎸囦护鎴愬姛锛屾寚浠�: {taskString}", task.RobotRoadway);
+                QuartzLogHelper.LogInfo(_logger, $"HandlePickFinishedStateAsync锛氫笅鍙戞斁璐ф寚浠ゆ垚鍔燂紝鎸囦护: {taskString}锛屼换鍔″彿: {task.RobotTaskNum}", state?.RobotCrane?.DeviceName ?? ipAddress);
 
                 task.RobotTaskState = TaskRobotStatusEnum.RobotExecuting.GetHashCode();
 
@@ -285,8 +279,7 @@
             }
             else
             {
-                _logger.LogError("HandlePickFinishedStateAsync锛氫笅鍙戞斁璐ф寚浠ゅけ璐ワ紝鎸囦护: {TaskString}锛屼换鍔″彿: {TaskNum}", taskString, task.RobotTaskNum);
-                QuartzLogger.Error($"涓嬪彂鏀捐揣鎸囦护澶辫触锛屾寚浠�: {taskString}", task.RobotRoadway);
+                QuartzLogHelper.LogInfo(_logger, $"HandlePickFinishedStateAsync锛氫笅鍙戞斁璐ф寚浠ゅけ璐ワ紝鎸囦护: {taskString}锛屼换鍔″彿: {task.RobotTaskNum}", state?.RobotCrane?.DeviceName ?? ipAddress);
             }
         }
 
@@ -315,8 +308,7 @@
             RobotSocketState? stateForUpdate = _stateManager.GetState(ipAddress);
             if (stateForUpdate == null)
             {
-                _logger.LogWarning("HandlePutFinishedStateAsync锛氳幏鍙栫姸鎬佸け璐ワ紝IP: {IpAddress}", ipAddress);
-                QuartzLogger.Warn($"HandlePutFinishedStateAsync锛氳幏鍙栫姸鎬佸け璐ワ紝IP: {ipAddress}", ipAddress);
+                QuartzLogHelper.LogInfo(_logger, $"HandlePutFinishedStateAsync锛氳幏鍙栫姸鎬佸け璐ワ紝IP: {ipAddress}", stateForUpdate?.RobotCrane?.DeviceName ?? ipAddress);
                 return;
             }
 
@@ -346,10 +338,7 @@
                 {
                     if (stateForUpdate.CellBarcode.Contains(trayBarcode1) || stateForUpdate.CellBarcode.Contains(trayBarcode2))
                     {
-                        _logger.LogError("HandlePutFinishedStateAsync锛氳鍙栫殑鎵樼洏鏉$爜宸插瓨鍦紝鍙兘瀛樺湪閲嶅锛屼换鍔″彿: {TaskNum}", task.RobotTaskNum);
-                        QuartzLogger.Error($"璇诲彇鐨勬墭鐩樻潯鐮佸凡瀛樺湪锛屽彲鑳藉瓨鍦ㄩ噸澶�", stateForUpdate.RobotCrane.DeviceName);
-
-                        // 鏉$爜閲嶅锛岃褰曢敊璇棩蹇楀苟鍋滄鍚庣画鎿嶄綔(鍚庣画鏀捐揣鏃朵細鐢ㄥ埌杩欎簺鏉$爜淇℃伅锛屼緵鍚庣画鏀捐揣鏃朵娇鐢紝璋冭瘯鍚庡彲鑳戒細鍙栨秷姝ら�昏緫)
+                        QuartzLogHelper.LogInfo(_logger, $"HandlePutFinishedStateAsync锛氳鍙栫殑鎵樼洏鏉$爜宸插瓨鍦紝鍙兘瀛樺湪閲嶅锛屼换鍔″彿: {task.RobotTaskNum}", stateForUpdate?.RobotCrane?.DeviceName ?? ipAddress);
 
                         // 鍙戦�佸彇璐ф寚浠� 鏍囪鎵爜NG锛屾斁璐ф椂涓嶄娇鐢ㄨ繖浜涙潯鐮侊紝骞舵斁鍏G鍙�
                         //await _taskProcessor.SendSocketRobotPickAsync(task, stateForUpdate, true);
@@ -357,8 +346,7 @@
                     }
                     else
                     {
-                        _logger.LogInformation("HandlePutFinishedStateAsync锛氳鍙栫殑鎵樼洏鏉$爜鍞竴锛岀户缁墽琛岋紝浠诲姟鍙�: {TaskNum}", task.RobotTaskNum);
-                        QuartzLogger.Info($"璇诲彇鐨勬墭鐩樻潯鐮佸敮涓�锛岀户缁墽琛�", stateForUpdate.RobotCrane.DeviceName);
+                        QuartzLogHelper.LogInfo(_logger, $"HandlePutFinishedStateAsync锛氳鍙栫殑鎵樼洏鏉$爜鍞竴锛岀户缁墽琛岋紝浠诲姟鍙�: {task.RobotTaskNum}", stateForUpdate?.RobotCrane?.DeviceName ?? ipAddress);
 
                         // 灏嗘潯鐮佹坊鍔犲埌鐘舵�佷腑锛屼緵鍚庣画鏀捐揣鏃朵娇鐢�
                         stateForUpdate.CellBarcode = new List<string>()
@@ -368,8 +356,7 @@
                     }
 
                     // 璁板綍鏃ュ織锛氳鍙栨墭鐩樻潯鐮佹垚鍔�
-                    _logger.LogInformation("HandlePutFinishedStateAsync锛氳鍙栨墭鐩樻潯鐮佹垚鍔�: {Barcode1}+{Barcode2}锛屼换鍔″彿: {TaskNum}", trayBarcode1, trayBarcode2, task.RobotTaskNum);
-                    QuartzLogger.Info($"璇诲彇鎵樼洏鏉$爜鎴愬姛: {trayBarcode1}+{trayBarcode2}", stateForUpdate.RobotCrane.DeviceName);
+                    QuartzLogHelper.LogInfo(_logger, $"HandlePutFinishedStateAsync锛氳鍙栨墭鐩樻潯鐮佹垚鍔�: 銆恵trayBarcode1}銆�-----銆恵trayBarcode2}銆戯紝浠诲姟鍙�: {task.RobotTaskNum}", stateForUpdate?.RobotCrane?.DeviceName ?? ipAddress);
 
                     // 鍙戦�佸彇璐ф寚浠�
                     await _taskProcessor.SendSocketRobotPickAsync(task, stateForUpdate);
@@ -377,9 +364,7 @@
                 else
                 {
                     // 鏉$爜璇诲彇澶辫触锛岃褰曢敊璇棩蹇�
-                    _logger.LogError("HandlePutFinishedStateAsync锛氳鍙栨墭鐩樻潯鐮佸け璐ワ紝浠诲姟鍙�: {TaskNum}锛屼竴鍙蜂綅: {trayBarcode1}锛屼簩鍙蜂綅: {trayBarcode2}", task.RobotTaskNum,trayBarcode1,trayBarcode2);
-                    QuartzLogger.Error($"璇诲彇鎵樼洏鏉$爜澶辫触,涓�鍙蜂綅锛歿trayBarcode1},浜屽彿浣嶏細{trayBarcode2}", stateForUpdate.RobotCrane.DeviceName);
-
+                    QuartzLogHelper.LogInfo(_logger, $"HandlePutFinishedStateAsync锛氳鍙栨墭鐩樻潯鐮佸け璐ワ紝銆恵trayBarcode1}銆�-----銆恵trayBarcode2}銆戯紝浠诲姟鍙�: {task.RobotTaskNum}", stateForUpdate?.RobotCrane?.DeviceName ?? ipAddress);
 
                     // 鍙戦�佸彇璐ф寚浠� 鏍囪鎵爜NG锛屾斁璐ф椂涓嶄娇鐢ㄨ繖浜涙潯鐮侊紝骞舵斁鍏G鍙�
                     //await _taskProcessor.SendSocketRobotPickAsync(task, stateForUpdate, true);
@@ -409,8 +394,8 @@
                 {
                     stateForUpdate.ChangePalletPhase = 1;
                     stateForUpdate.CurrentBatchIndex = 1;
-                    _logger.LogInformation("HandlePutFinishedStateAsync锛氭崲鐩樹换鍔¤繘鍏ユ壒娆℃ā寮忥紝浠诲姟鍙�: {TaskNum}锛屾祦鍚�: {Flow}",
-                        task.RobotTaskNum, isFlowA ? "A" : "B");
+
+                    QuartzLogHelper.LogInfo(_logger, $"HandlePutFinishedStateAsync锛氭崲鐩樹换鍔¤繘鍏ユ壒娆℃ā寮忥紝浠诲姟鍙�: {{TaskNum}}锛屾祦鍚�: {(isFlowA ? "A" : "B")}锛屼换鍔″彿: {task.RobotTaskNum}", stateForUpdate?.RobotCrane?.DeviceName ?? ipAddress);
                     _stateManager.TryUpdateStateSafely(ipAddress, stateForUpdate);
                 }
 
@@ -423,7 +408,8 @@
                         // 姝e父鐢佃姱鍙栧畬锛屽垏鎹㈠埌 Phase 3 鍙栧亣鐢佃姱
                         stateForUpdate.ChangePalletPhase = 3;
                         stateForUpdate.CurrentBatchIndex = 1; // 鍋囩數鑺壒娆′粠澶村紑濮�
-                        _logger.LogInformation("HandlePutFinishedStateAsync锛氭甯哥數鑺彇瀹岋紝鍒囨崲鍒癙hase 3鍙栧亣鐢佃姱锛屼换鍔″彿: {TaskNum}", task.RobotTaskNum);
+
+                        QuartzLogHelper.LogInfo(_logger, $"HandlePutFinishedStateAsync锛氭甯哥數鑺彇瀹岋紝鍒囨崲鍒癙hase 3鍙栧亣鐢佃姱锛屼换鍔″彿: {task.RobotTaskNum}", stateForUpdate?.RobotCrane?.DeviceName ?? ipAddress);
                         _stateManager.TryUpdateStateSafely(ipAddress, stateForUpdate);
                         return;
                     }
@@ -451,7 +437,8 @@
                     {
                         // 鍋囩數鑺叏閮ㄥ鐞嗗畬锛屽垏鎹㈠埌 Phase 5 绛夊緟鍏ュ簱
                         stateForUpdate.ChangePalletPhase = 5;
-                        _logger.LogInformation("HandlePutFinishedStateAsync锛氬亣鐢佃姱澶勭悊瀹屾瘯锛屽垏鎹㈠埌Phase 5绛夊緟鍏ュ簱锛屼换鍔″彿: {TaskNum}", task.RobotTaskNum);
+
+                        QuartzLogHelper.LogInfo(_logger, $"HandlePutFinishedStateAsync锛氬亣鐢佃姱澶勭悊瀹屾瘯锛屽垏鎹㈠埌Phase 5绛夊緟鍏ュ簱锛屼换鍔″彿: {task.RobotTaskNum}", stateForUpdate?.RobotCrane?.DeviceName ?? ipAddress);
                         _stateManager.TryUpdateStateSafely(ipAddress, stateForUpdate);
                         return;
                     }
@@ -462,7 +449,7 @@
                         var positions = _taskProcessor.GetNextAvailableFakeBatteryPositions(Math.Min(4, remainingFake));
                         if (positions.Count == 0)
                         {
-                            _logger.LogError("HandlePutFinishedStateAsync锛氭棤鍙敤鍋囩數鑺偣浣嶏紝浠诲姟鍙�: {TaskNum}", task.RobotTaskNum);
+                            QuartzLogHelper.LogInfo(_logger, $"HandlePutFinishedStateAsync锛氭棤鍙敤鍋囩數鑺偣浣嶏紝浠诲姟鍙�: {task.RobotTaskNum}", stateForUpdate?.RobotCrane?.DeviceName ?? ipAddress);
                             return;
                         }
                         await _taskProcessor.SendSocketRobotFakeBatteryPickAsync(task, stateForUpdate, positions);
@@ -496,4 +483,4 @@
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
index cba170a..7fc1361 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -174,9 +174,8 @@
                 bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
                 if (!flag || value is not CommonStackerCrane commonStackerCrane)
                 {
-                    _logger.Information("Execute锛氬弬鏁版棤鏁堬紝鏈壘鍒� JobParams 鎴栫被鍨嬩笉鍖归厤");
                     // 鍙傛暟鏃犳晥锛岀洿鎺ヨ繑鍥�
-                    QuartzLogHelper.LogWarn(_logger, "Execute锛氬弬鏁版棤鏁�", "Execute锛氬弬鏁版棤鏁�", "CommonStackerCraneJob");
+                    QuartzLogHelper.LogInfo(_logger, "Execute锛氬弬鏁版棤鏁�", "CommonStackerCraneJob");
                     return Task.CompletedTask;
                 }
 
@@ -218,7 +217,7 @@
                 if (stackerCraneTaskCommand == null)
                 {
                     // 鍛戒护鏋勫缓澶辫触
-                    QuartzLogHelper.LogWarn(_logger, "Execute锛氬懡浠ゆ瀯寤哄け璐ワ紝璁惧: {DeviceCode}锛屼换鍔″彿: {TaskNum}", $"鍛戒护鏋勫缓澶辫触锛屼换鍔″彿: {task.TaskNum}", _deviceCode, _deviceCode, task.TaskNum);
+                    QuartzLogHelper.LogInfo(_logger, $"Execute锛氬懡浠ゆ瀯寤哄け璐ワ紝璁惧: {_deviceCode}锛屼换鍔″彿: {task.TaskNum}", _deviceCode);
                     return Task.CompletedTask;
                 }
 
@@ -232,17 +231,17 @@
                     commonStackerCrane.LastTaskType = task.TaskType;
                     _taskService.UpdateTaskStatusToNext(task.TaskNum);
 
-                    QuartzLogHelper.LogInfo(_logger, "Execute锛氬懡浠ゅ彂閫佹垚鍔燂紝璁惧: {DeviceCode}锛屼换鍔″彿: {TaskNum}", $"鍛戒护鍙戦�佹垚鍔燂紝浠诲姟鍙�: {task.TaskNum}", _deviceCode, _deviceCode, task.TaskNum);
+                    QuartzLogHelper.LogInfo(_logger, $"Execute锛氬懡浠ゅ彂閫佹垚鍔燂紝璁惧: {_deviceCode}锛屼换鍔″彿: {task.TaskNum}", _deviceCode);
                 }
                 else
                 {
-                    QuartzLogHelper.LogError(_logger, "Execute锛氬懡浠ゅ彂閫佸け璐ワ紝璁惧: {DeviceCode}锛屼换鍔″彿: {TaskNum}", $"鍛戒护鍙戦�佸け璐�", _deviceCode, _deviceCode, task.TaskNum);
+                    QuartzLogHelper.LogInfo(_logger, $"Execute锛氬懡浠ゅ彂閫佸け璐ワ紝璁惧: {_deviceCode}锛屼换鍔″彿: {task.TaskNum}", _deviceCode);
                 }
             }
             catch (Exception ex)
             {
                 // 璁板綍寮傚父
-                QuartzLogHelper.LogError(_logger, ex, "Execute锛氭墽琛屽紓甯革紝璁惧: {DeviceCode}", $"鎵ц寮傚父: {ex.Message}", _deviceCode, _deviceCode);
+                QuartzLogHelper.LogError(_logger, ex, $"Execute锛氭墽琛屽紓甯革紝璁惧: {_deviceCode}", $"鎵ц寮傚父: {ex.Message}", _deviceCode, _deviceCode);
             }
             finally
             {
@@ -270,7 +269,7 @@
             if (stackerCrane != null)
             {
                 // 璁板綍鏃ュ織
-                QuartzLogHelper.LogInfo(_logger, "CommonStackerCrane_StackerCraneTaskCompletedEventHandler锛氫换鍔″畬鎴愶紝浠诲姟鍙�: {TaskNum}", $"浠诲姟瀹屾垚锛屼换鍔″彿: {e.TaskNum}", stackerCrane.DeviceCode, e.TaskNum);
+                QuartzLogHelper.LogInfo(_logger, $"CommonStackerCrane_StackerCraneTaskCompletedEventHandler锛氫换鍔″畬鎴愶紝浠诲姟鍙�: {e.TaskNum}", stackerCrane.DeviceCode);
 
                 // 鏇存柊浠诲姟鐘舵�佷负瀹屾垚
                 if (_taskService.StackCraneTaskCompleted(e.TaskNum).Status)

--
Gitblit v1.9.3