From 3de39066b5894850d0f0dc311b60cc09f599a025 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期四, 26 二月 2026 14:30:06 +0800
Subject: [PATCH] 修复图片导入;重构路由和堆垛机命令

---
 Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs                          |   14 
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/RouterController.cs            |    2 
 .gitignore                                                                                        |    2 
 Code/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v18/DocumentLayout.json                          |  183 ++--
 Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/GradingMachine/InputDto.cs                                 |   34 +
 Code/WCS/WIDESEAWCS_Client/src/components/basic/VolForm.vue                                       |    3 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/GradingMachine/OutPutDto.cs                                |   44 +
 Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs                            |  149 ++++
 Code/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/18.0.988.22099/CodeChunks.db      |    0 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockService.cs                                 |    2 
 Code/WCS/WIDESEAWCS_Client/src/views/charts/bigdata/chart-options.js                              |    2 
 Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/18.0.988.22099/SemanticSymbols.db |    0 
 Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v18/DocumentLayout.json                          |  241 +++++-
 Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs                          |    6 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HTTP/HttpRequestConfig.cs                          |   39 +
 项目资料/设备协议/高常温堆垛机与输送线/WCS-输送线对接协议说明-V260202.docx                                                   |    0 
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskCommand.cs            |   14 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs                                           |    5 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs                               |   12 
 Code/WCS/WIDESEAWCS_Client/src/views/system/UserInfo.vue                                          |    3 
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs              |   28 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HTTP/HttpResponseResult.cs                         |   68 ++
 Code/WCS/WIDESEAWCS_Client/src/components/basic/VolUpload.vue                                     |    5 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockDTO.cs                                          |   13 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs                             |    8 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs                                 |  193 ++++++
 Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockController.cs                 |   11 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs                                   |   14 
 Code/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/18.0.988.22099/SemanticSymbols.db |    0 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HTTP/HttpClientHelper.cs                           |  269 ++++++++
 Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v18/DocumentLayout.backup.json                   |  317 ++++++++-
 Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs               |   48 +
 Code/WCS/WIDESEAWCS_Client/src/components/basic/VolTable.vue                                      |    3 
 Code/WCS/WIDESEAWCS_Client/src/views/Index.vue                                                    |    5 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs                               |   28 
 Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs                             |    6 
 Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/18.0.988.22099/CodeChunks.db      |    0 
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs                          |  125 ++-
 38 files changed, 1,605 insertions(+), 291 deletions(-)

diff --git a/.gitignore b/.gitignore
index 75836c7..b069244 100644
--- a/.gitignore
+++ b/.gitignore
@@ -413,3 +413,5 @@
 /Code/WMS/WIDESEA_WMSServer/.vs/CopilotSnapshots
 /Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/copilot-chat
 /Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v18
+/Code/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices
+/Code/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/18.0.988.22099
diff --git a/Code/WCS/WIDESEAWCS_Client/src/components/basic/VolForm.vue b/Code/WCS/WIDESEAWCS_Client/src/components/basic/VolForm.vue
index 3e6b9b1..6e1d0b0 100644
--- a/Code/WCS/WIDESEAWCS_Client/src/components/basic/VolForm.vue
+++ b/Code/WCS/WIDESEAWCS_Client/src/components/basic/VolForm.vue
@@ -519,6 +519,7 @@
 //琛ㄥ崟楠岃瘉娉ㄦ剰锛氭瘡娆¢獙璇侀兘蹇呴』鎵цcallback,鍚﹀垯楠岃瘉涓嶆墽琛屽洖璋冩柟娉�
 const colPow = Math.pow(10, 3);
 import FormExpand from './VolForm/VolFormRender';
+import errorImgSrc from '@/assets/imgs/error-img.png';
 import {
   defineAsyncComponent,
   defineComponent,
@@ -830,7 +831,7 @@
   data() {
     return {
       // remoteCall: true,
-      errorImg: 'this.src="' + require('@/assets/imgs/error-img.png') + '"'
+      errorImg: 'this.src="' + errorImgSrc + '"'
       // span: 1,
       // rangeFields: [],
     };
diff --git a/Code/WCS/WIDESEAWCS_Client/src/components/basic/VolTable.vue b/Code/WCS/WIDESEAWCS_Client/src/components/basic/VolTable.vue
index af51360..0ae8a91 100644
--- a/Code/WCS/WIDESEAWCS_Client/src/components/basic/VolTable.vue
+++ b/Code/WCS/WIDESEAWCS_Client/src/components/basic/VolTable.vue
@@ -486,6 +486,7 @@
 </template>
 <script>
 import VolTableRender from "./VolTable/VolTableRender";
+import errorImgSrc from "@/assets/imgs/error.png";
 let _errMsg;
 import { defineComponent, defineAsyncComponent } from "vue";
 export default defineComponent({
@@ -659,7 +660,7 @@
       realMaxHeight: 0,
       enableEdit: false, // 鏄惁鍚〃鏍肩敤缂栬緫鍔熻兘
       empty: this.allowEmpty ? "" : "--",
-      defaultImg: 'this.src="' + require("@/assets/imgs/error.png") + '"',
+      defaultImg: 'this.src="' + errorImgSrc + '"',
       loading: false,
       footer: {},
       total: 0,
diff --git a/Code/WCS/WIDESEAWCS_Client/src/components/basic/VolUpload.vue b/Code/WCS/WIDESEAWCS_Client/src/components/basic/VolUpload.vue
index 4c7d696..af56d40 100644
--- a/Code/WCS/WIDESEAWCS_Client/src/components/basic/VolUpload.vue
+++ b/Code/WCS/WIDESEAWCS_Client/src/components/basic/VolUpload.vue
@@ -83,7 +83,8 @@
   </div>
 </template>
 <script>
-let OSS = require('ali-oss');
+import OSS from 'ali-oss';
+import errorImgSrc from '@/assets/imgs/error-img.png';
 export default {
   components: {},
   props: {
@@ -213,7 +214,7 @@
   },
   data() {
     return {
-      errorImg: 'this.src="' + require('@/assets/imgs/error-img.png') + '"',
+      errorImg: 'this.src="' + errorImgSrc + '"',
       changed: false, //鎵嬪姩涓婁紶鎴愬姛鍚庣姝㈤噸澶嶄笂浼狅紝蹇呴』閲嶆柊閫夋嫨
       model: true,
       files: [],
diff --git a/Code/WCS/WIDESEAWCS_Client/src/views/Index.vue b/Code/WCS/WIDESEAWCS_Client/src/views/Index.vue
index 117f31b..553d045 100644
--- a/Code/WCS/WIDESEAWCS_Client/src/views/Index.vue
+++ b/Code/WCS/WIDESEAWCS_Client/src/views/Index.vue
@@ -120,7 +120,8 @@
 import VolMenu from "@/components/basic/VolElementMenu.vue";
 import Message from "./index/Message.vue";
 import MessageConfig from "./index/MessageConfig.js";
-var imgUrl = require("@/assets/imgs/wcs_x.png");
+import imgUrl from "@/assets/imgs/wcs_x.png";
+import errorImgSrc from "@/assets/imgs/error-img.png";
 var $this;
 var $interval;
 var $indexDate;
@@ -200,7 +201,7 @@
       },
     ]);
     const errorImg = ref(
-      'this.src="' + require("@/assets/imgs/error-img.png") + '"'
+      'this.src="' + errorImgSrc + '"'
     );
     const selectId = ref("1");
     // 銆愰椤点�戞爣绛惧簭鍙�(褰撳墠鍙抽敭閫変腑鐨勮彍鍗�)
diff --git a/Code/WCS/WIDESEAWCS_Client/src/views/charts/bigdata/chart-options.js b/Code/WCS/WIDESEAWCS_Client/src/views/charts/bigdata/chart-options.js
index fe30d3e..4c88e96 100644
--- a/Code/WCS/WIDESEAWCS_Client/src/views/charts/bigdata/chart-options.js
+++ b/Code/WCS/WIDESEAWCS_Client/src/views/charts/bigdata/chart-options.js
@@ -1,4 +1,4 @@
-var echarts = require("echarts");
+import * as echarts from "echarts";
 let chartLeft1 = {
   tooltip: {
     trigger: "axis",
diff --git a/Code/WCS/WIDESEAWCS_Client/src/views/system/UserInfo.vue b/Code/WCS/WIDESEAWCS_Client/src/views/system/UserInfo.vue
index 32eb1d3..c99a5f8 100644
--- a/Code/WCS/WIDESEAWCS_Client/src/views/system/UserInfo.vue
+++ b/Code/WCS/WIDESEAWCS_Client/src/views/system/UserInfo.vue
@@ -55,6 +55,7 @@
 <script>
 import VolForm from "@/components/basic/VolForm.vue";
 import VolBox from "@/components/basic/VolBox.vue";
+import errorImgSrc from "@/assets/imgs/error-img.png";
 export default {
   components: {
     VolForm,
@@ -119,7 +120,7 @@
   },
   data() {
     return {
-      errorImg: 'this.src="' + require("@/assets/imgs/error-img.png") + '"',
+      errorImg: 'this.src="' + errorImgSrc + '"',
       modifyOptions: {
         model: false,
         fields: { oldPwd: "", newPwd: "", newPwd1: "" },
diff --git a/Code/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/18.0.988.22099/CodeChunks.db b/Code/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/18.0.988.22099/CodeChunks.db
index 76803fd..0581831 100644
--- a/Code/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/18.0.988.22099/CodeChunks.db
+++ b/Code/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/18.0.988.22099/CodeChunks.db
Binary files differ
diff --git a/Code/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/18.0.988.22099/SemanticSymbols.db b/Code/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/18.0.988.22099/SemanticSymbols.db
index e2055c1..a99aecc 100644
--- a/Code/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/18.0.988.22099/SemanticSymbols.db
+++ b/Code/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/18.0.988.22099/SemanticSymbols.db
Binary files differ
diff --git a/Code/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v18/DocumentLayout.json b/Code/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v18/DocumentLayout.json
index 8b0088c..448b756 100644
--- a/Code/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v18/DocumentLayout.json
+++ b/Code/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v18/DocumentLayout.json
@@ -3,28 +3,24 @@
   "WorkspaceRootPath": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\",
   "Documents": [
     {
+      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_tasks\\stackercranejob\\stackercranetaskcommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\stackercranejob\\stackercranetaskcommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
       "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_tasks\\stackercranejob\\commonstackercranejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\stackercranejob\\commonstackercranejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
+      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_quartzjob\\service\\routerservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\service\\routerservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\basicinfo\\routercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\basicinfo\\routercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
       "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_tasks\\conveyorlinenewjob\\commonconveyorlinenewjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\conveyorlinenewjob\\commonconveyorlinenewjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_tasks\\stackercranejob\\stackercrane-command-config.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
-      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\stackercranejob\\stackercrane-command-config.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_tasks\\formationstackercranejob\\formationstackercranetaskcommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\formationstackercranejob\\formationstackercranetaskcommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_quartzjob\\stackercrane\\common\\commonstackercrane.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\stackercrane\\common\\commonstackercrane.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_tasks\\robotjob\\robotjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\robotjob\\robotjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_tasks\\conveyorlinenewjob\\conveyorlinedispatchhandler.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -33,6 +29,10 @@
     {
       "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|solutionrelative:wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_tasks\\robotjob\\robotjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\robotjob\\robotjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_core\\http\\httprequesthelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -82,73 +82,8 @@
       "DocumentGroups": [
         {
           "DockedWidth": 200,
-          "SelectedChildIndex": 9,
+          "SelectedChildIndex": 3,
           "Children": [
-            {
-              "$type": "Document",
-              "DocumentIndex": 2,
-              "Title": "stackercrane-command-config.json",
-              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\stackercrane-command-config.json",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\stackercrane-command-config.json",
-              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\stackercrane-command-config.json",
-              "RelativeToolTip": "WIDESEAWCS_Tasks\\StackerCraneJob\\stackercrane-command-config.json",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
-              "WhenOpened": "2026-02-11T09:00:04.156Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 3,
-              "Title": "FormationStackerCraneTaskCommand.cs",
-              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\FormationStackerCraneJob\\FormationStackerCraneTaskCommand.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\FormationStackerCraneJob\\FormationStackerCraneTaskCommand.cs",
-              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\FormationStackerCraneJob\\FormationStackerCraneTaskCommand.cs",
-              "RelativeToolTip": "WIDESEAWCS_Tasks\\FormationStackerCraneJob\\FormationStackerCraneTaskCommand.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABcAAAAxAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-02-11T08:10:49.516Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 4,
-              "Title": "CommonStackerCrane.cs",
-              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\StackerCrane\\Common\\CommonStackerCrane.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\StackerCrane\\Common\\CommonStackerCrane.cs",
-              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\StackerCrane\\Common\\CommonStackerCrane.cs",
-              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\StackerCrane\\Common\\CommonStackerCrane.cs",
-              "ViewState": "AgIAAFMBAAAAAAAAAAAhwGABAAAUAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-02-11T08:04:32.94Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 6,
-              "Title": "ConveyorLineDispatchHandler.cs",
-              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineNewJob\\ConveyorLineDispatchHandler.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\ConveyorLineNewJob\\ConveyorLineDispatchHandler.cs",
-              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineNewJob\\ConveyorLineDispatchHandler.cs",
-              "RelativeToolTip": "WIDESEAWCS_Tasks\\ConveyorLineNewJob\\ConveyorLineDispatchHandler.cs",
-              "ViewState": "AgIAAC0AAAAAAAAAAAAAwN8AAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-02-11T07:30:22.279Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 8,
-              "Title": "HttpRequestHelper.cs",
-              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Http\\HttpRequestHelper.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Http\\HttpRequestHelper.cs",
-              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Http\\HttpRequestHelper.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Http\\HttpRequestHelper.cs",
-              "ViewState": "AgIAAKMAAAAAAAAAAAAAAL8AAAArAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-02-11T03:19:21.556Z",
-              "EditorCaption": ""
-            },
             {
               "$type": "Bookmark",
               "Name": "ST:128:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
@@ -163,26 +98,90 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 1,
+              "DocumentIndex": 0,
+              "Title": "StackerCraneTaskCommand.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneTaskCommand.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneTaskCommand.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneTaskCommand.cs",
+              "RelativeToolTip": "WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneTaskCommand.cs",
+              "ViewState": "AgIAAB0AAAAAAAAAAADwvy8AAAAVAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-26T03:17:06.278Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 2,
+              "Title": "RouterService.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\RouterService.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Service\\RouterService.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\RouterService.cs",
+              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Service\\RouterService.cs",
+              "ViewState": "AgIAAJgBAAAAAAAAAAAYwK8BAAA6AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-26T02:17:43.536Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 3,
+              "Title": "RouterController.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\BasicInfo\\RouterController.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\BasicInfo\\RouterController.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\BasicInfo\\RouterController.cs",
+              "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\BasicInfo\\RouterController.cs",
+              "ViewState": "AgIAACQAAAAAAAAAAAAywDUAAAA5AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-26T02:17:32.741Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 5,
+              "Title": "ConveyorLineDispatchHandler.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineNewJob\\ConveyorLineDispatchHandler.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\ConveyorLineNewJob\\ConveyorLineDispatchHandler.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineNewJob\\ConveyorLineDispatchHandler.cs",
+              "RelativeToolTip": "WIDESEAWCS_Tasks\\ConveyorLineNewJob\\ConveyorLineDispatchHandler.cs",
+              "ViewState": "AgIAAN8AAAAAAAAAAAAuwN8AAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-11T07:30:22.279Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 8,
+              "Title": "HttpRequestHelper.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Http\\HttpRequestHelper.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Http\\HttpRequestHelper.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Http\\HttpRequestHelper.cs",
+              "RelativeToolTip": "WIDESEAWCS_Core\\Http\\HttpRequestHelper.cs",
+              "ViewState": "AgIAAKMAAAAAAAAAAAAAAL8AAAArAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-11T03:19:21.556Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 4,
               "Title": "CommonConveyorLineNewJob.cs",
               "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineNewJob\\CommonConveyorLineNewJob.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\ConveyorLineNewJob\\CommonConveyorLineNewJob.cs",
               "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineNewJob\\CommonConveyorLineNewJob.cs",
               "RelativeToolTip": "WIDESEAWCS_Tasks\\ConveyorLineNewJob\\CommonConveyorLineNewJob.cs",
-              "ViewState": "AgIAAEMAAAAAAAAAAAAlwFUAAAAdAAAAAAAAAA==",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAFUAAAAdAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2026-02-11T03:12:22.118Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 0,
+              "DocumentIndex": 1,
               "Title": "CommonStackerCraneJob.cs",
               "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
               "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
               "RelativeToolTip": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
-              "ViewState": "AgIAACIAAAAAAAAAAAAAADYAAACLAAAAAAAAAA==",
+              "ViewState": "AgIAAEcAAAAAAAAAAAAewFwAAAAcAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2026-02-11T01:01:05.138Z",
               "EditorCaption": ""
@@ -213,16 +212,15 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 7,
+              "DocumentIndex": 6,
               "Title": "TaskService.cs",
               "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\TaskService.cs",
               "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs",
               "RelativeToolTip": "WIDESEAWCS_TaskInfoService\\TaskService.cs",
-              "ViewState": "AgIAAEEBAAAAAAAAAAAhwE4BAAAiAAAAAAAAAA==",
+              "ViewState": "AgIAAMUAAAAAAAAAAAAjwNUAAAA8AAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-02-10T06:11:48.071Z",
-              "EditorCaption": ""
+              "WhenOpened": "2026-02-10T06:11:48.071Z"
             },
             {
               "$type": "Document",
@@ -246,8 +244,7 @@
               "RelativeToolTip": "WIDESEAWCS_Common\\HttpEnum\\ConfigKey.cs",
               "ViewState": "AgIAAA4AAAAAAAAAAADwvy8AAAAYAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-02-09T01:45:04.7Z",
-              "EditorCaption": ""
+              "WhenOpened": "2026-02-09T01:45:04.7Z"
             },
             {
               "$type": "Document",
@@ -311,7 +308,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 5,
+              "DocumentIndex": 7,
               "Title": "RobotJob.cs",
               "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RobotJob\\RobotJob.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\RobotJob\\RobotJob.cs",
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs
index 4bf89ae..3cdd283 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs
@@ -363,34 +363,24 @@
             // 閬嶅巻鎵�鏈夌粨鏉熺殑璺敱
             foreach (var item in dt_Routers)
             {
-                // 鑾峰彇褰撳墠璺敱鐨勫瓙璺敱
-                string routes = $"{item.NextPosi},";
-                // 鑾峰彇褰撳墠璺敱鐨勭埗璺敱
-                string str = GetPreviousRoutes(item.StartPosi, allRouters, item.InOutType);
-                // 濡傛灉鐖惰矾鐢变笉涓虹┖
-                if (!string.IsNullOrEmpty(str))
+                // 鑾峰彇鎵�鏈夊彲鑳界殑瀹屾暣璺緞
+                List<List<string>> allPaths = GetAllPaths(item.StartPosi, item.NextPosi, allRouters, item.InOutType);
+
+                // 涓烘瘡鏉$嫭绔嬭矾寰勭敓鎴愮粨鏋�
+                foreach (var path in allPaths)
                 {
-                    // 鍘绘帀鏈�鍚庝竴涓�楀彿
-                    if (str.EndsWith(","))
-                        str = str.Substring(0, str.Length - 1);
-                    // 灏嗙埗璺敱娣诲姞鍒板瓙璺敱涓�
-                    routes += str;
-                }
-                // 濡傛灉褰撳墠璺敱鏄叆鍙�
-                if (item.InOutType == RouterInOutType.In.ObjToInt())
-                {
-                    // 灏嗗瓙璺敱鍙嶈浆骞舵坊鍔犲埌data涓�
-                    List<string> itemRouters = routes.Split(",").Reverse().ToList();
-                    object obj = new { type = RouterInOutType.In, routes = itemRouters };
-                    data.Add(obj);
-                }
-                // 濡傛灉褰撳墠璺敱鏄嚭鍙�
-                else
-                {
-                    // 灏嗗瓙璺敱鍙嶈浆骞舵坊鍔犲埌data涓�
-                    List<string> itemRouters = routes.Split(",").Reverse().ToList();
-                    object obj = new { type = RouterInOutType.Out, routes = itemRouters };
-                    data.Add(obj);
+                    // 濡傛灉褰撳墠璺敱鏄叆鍙�
+                    if (item.InOutType == RouterInOutType.In.ObjToInt())
+                    {
+                        object obj = new { type = RouterInOutType.In, routes = path };
+                        data.Add(obj);
+                    }
+                    // 濡傛灉褰撳墠璺敱鏄嚭鍙�
+                    else
+                    {
+                        object obj = new { type = RouterInOutType.Out, routes = path };
+                        data.Add(obj);
+                    }
                 }
             }
 
@@ -398,42 +388,61 @@
             return data;
         }
 
-        private string GetPreviousRoutes(string startPosi, List<Dt_Router> allRouters, int routerType)
+        /// <summary>
+        /// 鑾峰彇浠庤捣鐐瑰埌缁堢偣鐨勬墍鏈夊畬鏁磋矾寰�
+        /// </summary>
+        /// <param name="startPosi">褰撳墠璧峰浣嶇疆</param>
+        /// <param name="endPosi">缁堢偣浣嶇疆</param>
+        /// <param name="allRouters">鎵�鏈夎矾鐢辨暟鎹�</param>
+        /// <param name="routerType">璺敱绫诲瀷</param>
+        /// <returns>鎵�鏈夊畬鏁磋矾寰勫垪琛紝姣忔潯璺緞鏄粠璧风偣鍒扮粓鐐圭殑浣嶇疆鍒楄〃</returns>
+        private List<List<string>> GetAllPaths(string startPosi, string endPosi, List<Dt_Router> allRouters, int routerType)
         {
-            // 瀹氫箟涓�涓┖瀛楃涓瞨outers
-            string routers = string.Empty;
-            // 鍒ゆ柇startPosi鏄惁涓虹┖
-            if (!string.IsNullOrEmpty(startPosi))
+            List<List<string>> result = new List<List<string>>();
+
+            // 浠庣粓鐐瑰紑濮嬪弽鍚戞煡鎵炬墍鏈夎矾寰�
+            List<List<string>> reversePaths = new List<List<string>>();
+            BuildReversePaths(startPosi, new List<string> { endPosi, startPosi }, allRouters, routerType, reversePaths);
+
+            // 灏嗗弽鍚戣矾寰勮浆涓烘鍚戯紙浠庤捣鐐瑰埌缁堢偣锛�
+            foreach (var reversePath in reversePaths)
             {
-                // 鍒ゆ柇routers鏄惁浠ラ�楀彿缁撳熬
-                if (!routers.EndsWith(","))
-                    // 濡傛灉涓嶆槸锛屽垯灏唖tartPosi娣诲姞鍒皉outers涓紝骞跺湪鍚庨潰鍔犱笂閫楀彿
-                    routers += $"{startPosi},";
-                else
-                    // 濡傛灉鏄紝鍒欏皢startPosi娣诲姞鍒皉outers涓�
-                    routers += $"{startPosi}";
+                result.Add(reversePath.AsEnumerable().Reverse().ToList());
             }
-            // 浠巃llRouters涓瓫閫夊嚭NextPosi绛変簬startPosi涓擨nOutType绛変簬routerType鐨勫厓绱狅紝骞惰浆鎹负List
-            List<Dt_Router> preRouters = allRouters.Where(x => x.NextPosi == startPosi && x.InOutType == routerType).ToList();
-            // 閬嶅巻preRouters涓殑姣忎釜鍏冪礌
-            foreach (var item in preRouters)
+
+            return result;
+        }
+
+        /// <summary>
+        /// 閫掑綊鏋勫缓鍙嶅悜璺緞锛堜粠缁堢偣鍚戣捣鐐规煡鎵撅級
+        /// </summary>
+        /// <param name="currentStartPosi">褰撳墠鑺傜偣鐨勮捣濮嬩綅缃�</param>
+        /// <param name="currentPath">褰撳墠宸叉瀯寤虹殑璺緞锛堝弽鍚戯紝浠庣粓鐐瑰紑濮嬶級</param>
+        /// <param name="allRouters">鎵�鏈夎矾鐢辨暟鎹�</param>
+        /// <param name="routerType">璺敱绫诲瀷</param>
+        /// <param name="result">鏀堕泦鎵�鏈夊畬鏁磋矾寰�</param>
+        private void BuildReversePaths(string currentStartPosi, List<string> currentPath, List<Dt_Router> allRouters, int routerType, List<List<string>> result)
+        {
+            // 鏌ユ壘褰撳墠鑺傜偣鐨勫墠缃妭鐐癸紙NextPosi绛変簬褰撳墠StartPosi鐨勮矾鐢憋級
+            List<Dt_Router> preRouters = allRouters.Where(x => x.NextPosi == currentStartPosi && x.InOutType == routerType).ToList();
+
+            // 濡傛灉娌℃湁鍓嶇疆鑺傜偣锛岃鏄庡凡缁忓埌杈捐矾寰勮捣鐐癸紝淇濆瓨褰撳墠璺緞
+            if (preRouters.Count == 0)
             {
-                // 璋冪敤GetPreviousRoutes鏂规硶锛屼紶鍏tem.StartPosi銆乤llRouters鍜宺outerType锛屽苟灏嗚繑鍥炲�艰祴缁檚tr
-                string str = GetPreviousRoutes(item.StartPosi, allRouters, routerType);
-                // 鍒ゆ柇str鏄惁涓虹┖
-                if (!string.IsNullOrEmpty(str))
-                {
-                    // 鍒ゆ柇routers鏄惁浠ラ�楀彿缁撳熬
-                    if (routers.EndsWith(","))
-                        // 濡傛灉鏄紝鍒欏皢str娣诲姞鍒皉outers涓�
-                        routers += $"{str}";
-                    else
-                        // 濡傛灉涓嶆槸锛屽垯灏唖tr娣诲姞鍒皉outers涓紝骞跺湪鍚庨潰鍔犱笂閫楀彿
-                        routers += $"{str},";
-                }
+                result.Add(new List<string>(currentPath));
+                return;
             }
-            // 杩斿洖routers
-            return routers;
+
+            // 瀵规瘡涓墠缃妭鐐癸紝鍒涘缓鏂扮殑璺緞鍒嗘敮
+            foreach (var preRouter in preRouters)
+            {
+                // 鍒涘缓鏂扮殑璺緞鍓湰
+                List<string> newPath = new List<string>(currentPath);
+                newPath.Add(preRouter.StartPosi);
+
+                // 閫掑綊鏌ユ壘鍓嶇疆鑺傜偣
+                BuildReversePaths(preRouter.StartPosi, newPath, allRouters, routerType, result);
+            }
         }
 
         /// <summary>
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/RouterController.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/RouterController.cs
index 7e813ee..fabcc24 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/RouterController.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/RouterController.cs
@@ -21,7 +21,7 @@
 
 namespace WIDESEAWCS_Server.Controllers.BasicInfo
 {
-    [Route("Router")]
+    [Route("api/Router")]
     [ApiController]
     public class RouterController : ApiBaseController<IRouterService, Dt_Router>
     {
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
index 147c902..c312236 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -86,10 +86,10 @@
                     Dt_Task? task = GetTask(commonStackerCrane);
                     if (task != null)
                     {
-                        var stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task);
+                        object? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task);
                         if (stackerCraneTaskCommand != null)
                         {
-                            bool sendFlag = commonStackerCrane.SendCommand(stackerCraneTaskCommand);
+                            bool sendFlag = SendStackerCraneCommand(commonStackerCrane, stackerCraneTaskCommand);
                             if (sendFlag)
                             {
                                 commonStackerCrane.LastTaskType = task.TaskType;
@@ -152,10 +152,10 @@
 
             if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
             {
-                if (IsOutTaskStationAvailable(task))
-                {
+                //if (IsOutTaskStationAvailable(task))
+                //{
                     return task;
-                }
+                //}
 
                 List<string> otherOutStationCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress, task.TaskType)
                     .Select(x => x.ChildPosi).ToList();
@@ -201,7 +201,7 @@
         /// <summary>
         /// 浠诲姟瀹炰綋杞崲鎴愬懡浠odel
         /// </summary>
-        public dynamic? ConvertToStackerCraneTaskCommand([NotNull] Dt_Task task)
+        public object? ConvertToStackerCraneTaskCommand([NotNull] Dt_Task task)
         {
             // 鏍规嵁閰嶇疆鍒ゆ柇鍛戒护绫诲瀷
             string commandType = GetCommandType(task.Roadway);
@@ -211,6 +211,16 @@
             {
                 "Formation" => BuildCommand(task, CreateFormationCommand(task)),
                 _ => BuildCommand(task, CreateStandardCommand(task))
+            };
+        }
+
+        private static bool SendStackerCraneCommand(IStackerCrane commonStackerCrane, object command)
+        {
+            return command switch
+            {
+                FormationStackerCraneTaskCommand formationCommand => commonStackerCrane.SendCommand(formationCommand),
+                StackerCraneTaskCommand standardCommand => commonStackerCrane.SendCommand(standardCommand),
+                _ => false
             };
         }
 
@@ -236,15 +246,15 @@
         {
             return new StackerCraneTaskCommand
             {
-                Barcode = task.PalletCode,
+                //Barcode = task.PalletCode,
                 TaskNum = task.TaskNum,
                 WorkType = 1,
-                TrayType = 0
+                WorkAction = 1
             };
         }
 
         /// <summary>
-        /// 鍒涘缓缁勭洏鍫嗗灈鏈哄懡浠�
+        /// 鍒涘缓鍒嗗鍫嗗灈鏈哄懡浠�
         /// </summary>
         private static FormationStackerCraneTaskCommand CreateFormationCommand(Dt_Task task)
         {
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskCommand.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskCommand.cs
index bcdd8c1..15c31c5 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskCommand.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskCommand.cs
@@ -29,6 +29,10 @@
     {
         #region <Public Menber>
         /// <summary>
+        /// 浣滀笟鍛戒护
+        /// </summary>
+        public short WorkAction { get; set; }
+        /// <summary>
         /// 浠诲姟鍙�
         /// </summary>
         public int TaskNum { get; set; }
@@ -39,9 +43,10 @@
         public short WorkType { get; set; }
 
         /// <summary>
-        /// 鎵樼洏绫诲瀷
+        /// 鏃犳晥瀛楁
         /// </summary>
-        public short TrayType { get; set; }
+        [DataLength(6)]
+        public string FieldName { get; set; } = "";
 
         /// <summary>
         /// 璧峰琛�
@@ -73,11 +78,6 @@
         /// </summary>
         public short EndLayer { get; set; }
 
-        /// <summary>
-        /// 鎵樼洏鍙�
-        /// </summary>
-        [DataLength(25)]
-        public string Barcode { get; set; }
         #endregion <Public Menber>
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/18.0.988.22099/CodeChunks.db b/Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/18.0.988.22099/CodeChunks.db
index 9059c09..8d1b80a 100644
--- a/Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/18.0.988.22099/CodeChunks.db
+++ b/Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/18.0.988.22099/CodeChunks.db
Binary files differ
diff --git a/Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/18.0.988.22099/SemanticSymbols.db b/Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/18.0.988.22099/SemanticSymbols.db
index a15ed03..8ca01ad 100644
--- a/Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/18.0.988.22099/SemanticSymbols.db
+++ b/Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/18.0.988.22099/SemanticSymbols.db
Binary files differ
diff --git a/Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v18/DocumentLayout.backup.json b/Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v18/DocumentLayout.backup.json
index cf03539..1035c30 100644
--- a/Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v18/DocumentLayout.backup.json
+++ b/Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v18/DocumentLayout.backup.json
@@ -3,36 +3,84 @@
   "WorkspaceRootPath": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\",
   "Documents": [
     {
-      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_stockservice\\stockserivce.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|solutionrelative:widesea_stockservice\\stockserivce.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_model\\models\\stock\\dt_stockinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\stock\\dt_stockinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_dto\\task\\createtaskdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\task\\createtaskdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
       "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{CE0DB91F-5A68-448E-A419-4C26B5039F51}|WIDESEA_ITaskInfoService\\WIDESEA_ITaskInfoService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{CE0DB91F-5A68-448E-A419-4C26B5039F51}|WIDESEA_ITaskInfoService\\WIDESEA_ITaskInfoService.csproj|solutionrelative:widesea_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{49716D78-720D-475D-948C-0FC6C5F079E5}|WIDESEA_IStockService\\WIDESEA_IStockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_istockservice\\istockservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{49716D78-720D-475D-948C-0FC6C5F079E5}|WIDESEA_IStockService\\WIDESEA_IStockService.csproj|solutionrelative:widesea_istockservice\\istockservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
       "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_dto\\stock\\stockdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\stock\\stockdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_core\\helper\\http\\httpclienthelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\helper\\http\\httpclienthelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_wmsserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_core\\helper\\http\\httprequestconfig.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\helper\\http\\httprequestconfig.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_core\\helper\\http\\httpresponseresult.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\helper\\http\\httpresponseresult.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_dto\\task\\createtaskdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\task\\createtaskdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_ibasicservice\\ilocationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|solutionrelative:widesea_ibasicservice\\ilocationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_model\\models\\stock\\dt_stockinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\stock\\dt_stockinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_basicservice\\locationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|solutionrelative:widesea_basicservice\\locationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_stockservice\\stockviewservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|solutionrelative:widesea_stockservice\\stockviewservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_core\\baserepository\\irepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\baserepository\\irepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_dto\\gradingmachine\\inputdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\gradingmachine\\inputdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_dto\\gradingmachine\\outputdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\gradingmachine\\outputdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{49716D78-720D-475D-948C-0FC6C5F079E5}|WIDESEA_IStockService\\WIDESEA_IStockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_istockservice\\istockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{49716D78-720D-475D-948C-0FC6C5F079E5}|WIDESEA_IStockService\\WIDESEA_IStockService.csproj|solutionrelative:widesea_istockservice\\istockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_stockservice\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|solutionrelative:widesea_stockservice\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_stockservice\\stockserivce.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|solutionrelative:widesea_stockservice\\stockserivce.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_core\\baserepository\\repositorybase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\baserepository\\repositorybase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     }
   ],
   "DocumentGroupContainers": [
@@ -42,19 +90,58 @@
       "DocumentGroups": [
         {
           "DockedWidth": 200,
-          "SelectedChildIndex": 6,
+          "SelectedChildIndex": 16,
           "Children": [
             {
               "$type": "Document",
-              "DocumentIndex": 2,
-              "Title": "Dt_StockInfo.cs",
-              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
-              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
-              "ViewState": "AgIAACYAAAAAAAAAAAAQwDIAAAAeAAAAAAAAAA==",
+              "DocumentIndex": 5,
+              "Title": "Program.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Program.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Program.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Program.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Program.cs",
+              "ViewState": "AgIAADsAAAAAAAAAAAAqwEIAAAAvAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-02-11T01:12:04.794Z",
+              "WhenOpened": "2026-02-25T02:24:12.114Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 7,
+              "Title": "HttpResponseResult.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\HTTP\\HttpResponseResult.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Helper\\HTTP\\HttpResponseResult.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\HTTP\\HttpResponseResult.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Helper\\HTTP\\HttpResponseResult.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAASAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-25T01:56:34.362Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 6,
+              "Title": "HttpRequestConfig.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\HTTP\\HttpRequestConfig.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Helper\\HTTP\\HttpRequestConfig.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\HTTP\\HttpRequestConfig.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Helper\\HTTP\\HttpRequestConfig.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAYAAAAWAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-25T01:56:26.626Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 4,
+              "Title": "HttpClientHelper.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\HTTP\\HttpClientHelper.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Helper\\HTTP\\HttpClientHelper.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\HTTP\\HttpClientHelper.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Helper\\HTTP\\HttpClientHelper.cs",
+              "ViewState": "AgIAADEAAAAAAAAAAAAewEQAAAAtAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-25T01:55:24.973Z",
               "EditorCaption": ""
             },
             {
@@ -67,91 +154,207 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 4,
+              "DocumentIndex": 15,
+              "Title": "OutPutDto.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\GradingMachine\\OutPutDto.cs",
+              "RelativeDocumentMoniker": "WIDESEA_DTO\\GradingMachine\\OutPutDto.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\GradingMachine\\OutPutDto.cs",
+              "RelativeToolTip": "WIDESEA_DTO\\GradingMachine\\OutPutDto.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAAQAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-16T04:20:27.945Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 14,
+              "Title": "InputDto.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\GradingMachine\\InputDto.cs",
+              "RelativeDocumentMoniker": "WIDESEA_DTO\\GradingMachine\\InputDto.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\GradingMachine\\InputDto.cs",
+              "RelativeToolTip": "WIDESEA_DTO\\GradingMachine\\InputDto.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABgAAAAQAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-16T03:59:05.513Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 19,
+              "Title": "RepositoryBase.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseRepository\\RepositoryBase.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\BaseRepository\\RepositoryBase.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseRepository\\RepositoryBase.cs",
+              "RelativeToolTip": "WIDESEA_Core\\BaseRepository\\RepositoryBase.cs",
+              "ViewState": "AgIAALgDAAAAAAAAAAAhwMsDAAAZAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-14T08:55:16.1Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 13,
+              "Title": "IRepository.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseRepository\\IRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\BaseRepository\\IRepository.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseRepository\\IRepository.cs",
+              "RelativeToolTip": "WIDESEA_Core\\BaseRepository\\IRepository.cs",
+              "ViewState": "AgIAAIIBAAAAAAAAAAAWwLMBAAASAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-14T08:53:36.522Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 12,
+              "Title": "StockViewService.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockService\\StockViewService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_StockService\\StockViewService.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockService\\StockViewService.cs",
+              "RelativeToolTip": "WIDESEA_StockService\\StockViewService.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAEwAAAA/AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-11T07:14:32.478Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 9,
+              "Title": "ILocationInfoService.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\ILocationInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_IBasicService\\ILocationInfoService.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\ILocationInfoService.cs",
+              "RelativeToolTip": "WIDESEA_IBasicService\\ILocationInfoService.cs",
+              "ViewState": "AgIAADsAAAAAAAAAAAA2wEIAAAAxAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-11T02:33:03.398Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 11,
+              "Title": "LocationInfoService.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\LocationInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_BasicService\\LocationInfoService.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\LocationInfoService.cs",
+              "RelativeToolTip": "WIDESEA_BasicService\\LocationInfoService.cs",
+              "ViewState": "AgIAAJIAAAAAAAAAAADgv6gAAAAjAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-11T02:22:42.847Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 10,
+              "Title": "Dt_StockInfo.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\Stock\\Dt_StockInfo.cs",
+              "ViewState": "AgIAAEAAAAAAAAAAAAAkwFIAAAAeAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-11T01:38:37.887Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 17,
+              "Title": "StockInfoService.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockService\\StockInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_StockService\\StockInfoService.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockService\\StockInfoService.cs",
+              "RelativeToolTip": "WIDESEA_StockService\\StockInfoService.cs",
+              "ViewState": "AgIAACIAAAAAAAAAAAAIwDwAAAA5AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-11T01:23:56.94Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 16,
+              "Title": "IStockInfoService.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStockService\\IStockInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_IStockService\\IStockInfoService.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStockService\\IStockInfoService.cs",
+              "RelativeToolTip": "WIDESEA_IStockService\\IStockInfoService.cs",
+              "ViewState": "AgIAABIAAAAAAAAAAAAIwCsAAAAzAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-11T01:21:54.522Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 0,
               "Title": "TaskController.cs",
               "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
               "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
               "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABwAAAAfAAAAAAAAAA==",
+              "ViewState": "AgIAABgAAAAAAAAAAAAgwEgAAAAeAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-02-09T01:23:19.844Z"
+              "WhenOpened": "2026-02-09T01:23:19.844Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 3,
+              "DocumentIndex": 8,
               "Title": "CreateTaskDto.cs",
               "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Task\\CreateTaskDto.cs",
               "RelativeDocumentMoniker": "WIDESEA_DTO\\Task\\CreateTaskDto.cs",
               "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Task\\CreateTaskDto.cs",
               "RelativeToolTip": "WIDESEA_DTO\\Task\\CreateTaskDto.cs",
-              "ViewState": "AgIAABUAAAAAAAAAAAAAAA4AAAARAAAAAAAAAA==",
+              "ViewState": "AgIAABEAAAAAAAAAAADwvw4AAAARAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2026-02-06T07:58:13.932Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 5,
+              "DocumentIndex": 2,
               "Title": "ITaskService.cs",
               "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_ITaskInfoService\\ITaskService.cs",
               "RelativeDocumentMoniker": "WIDESEA_ITaskInfoService\\ITaskService.cs",
               "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_ITaskInfoService\\ITaskService.cs",
               "RelativeToolTip": "WIDESEA_ITaskInfoService\\ITaskService.cs",
-              "ViewState": "AgIAACsAAAAAAAAAAIBHwCkAAAAXAAAAAAAAAA==",
+              "ViewState": "AgIAAE0AAAAAAAAAAAAlwGMAAAA+AAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2026-02-06T07:00:19.697Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 0,
+              "DocumentIndex": 1,
               "Title": "TaskService.cs",
               "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
               "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\TaskService.cs",
               "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
               "RelativeToolTip": "WIDESEA_TaskInfoService\\TaskService.cs",
-              "ViewState": "AgIAAGQAAAAAAAAAAAApwIsAAAAAAAAAAAAAAA==",
+              "ViewState": "AgIAANcAAAAAAAAAAAAkwC8BAAAfAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2026-02-06T06:34:59.734Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 7,
+              "DocumentIndex": 3,
               "Title": "StockDTO.cs",
               "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Stock\\StockDTO.cs",
               "RelativeDocumentMoniker": "WIDESEA_DTO\\Stock\\StockDTO.cs",
               "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Stock\\StockDTO.cs",
               "RelativeToolTip": "WIDESEA_DTO\\Stock\\StockDTO.cs",
-              "ViewState": "AgIAABsAAAAAAAAAAAA1wBYAAABBAAAAAAAAAA==",
+              "ViewState": "AgIAABwAAAAAAAAAAAAUwBYAAABBAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-02-06T02:56:51.397Z"
+              "WhenOpened": "2026-02-06T02:56:51.397Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 6,
-              "Title": "IStockService.cs",
-              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStockService\\IStockService.cs",
-              "RelativeDocumentMoniker": "WIDESEA_IStockService\\IStockService.cs",
-              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStockService\\IStockService.cs",
-              "RelativeToolTip": "WIDESEA_IStockService\\IStockService.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABsAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-02-06T02:13:53.794Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 1,
+              "DocumentIndex": 18,
               "Title": "StockSerivce.cs",
               "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockService\\StockSerivce.cs",
               "RelativeDocumentMoniker": "WIDESEA_StockService\\StockSerivce.cs",
               "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockService\\StockSerivce.cs",
               "RelativeToolTip": "WIDESEA_StockService\\StockSerivce.cs",
-              "ViewState": "AgIAAAkAAAAAAAAAAAAkwI8AAAAzAAAAAAAAAA==",
+              "ViewState": "AgIAAHsAAAAAAAAAAAA5wJEAAAAJAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-02-06T01:53:49.077Z",
-              "EditorCaption": ""
+              "WhenOpened": "2026-02-06T01:53:49.077Z"
             }
           ]
         }
diff --git a/Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v18/DocumentLayout.json b/Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v18/DocumentLayout.json
index 9d7c12a..1035c30 100644
--- a/Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v18/DocumentLayout.json
+++ b/Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v18/DocumentLayout.json
@@ -3,6 +3,10 @@
   "WorkspaceRootPath": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\",
   "Documents": [
     {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
       "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
@@ -11,44 +15,72 @@
       "RelativeMoniker": "D:0:0:{CE0DB91F-5A68-448E-A419-4C26B5039F51}|WIDESEA_ITaskInfoService\\WIDESEA_ITaskInfoService.csproj|solutionrelative:widesea_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_stockservice\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|solutionrelative:widesea_stockservice\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_dto\\stock\\stockdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\stock\\stockdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_basicservice\\locationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|solutionrelative:widesea_basicservice\\locationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_core\\helper\\http\\httpclienthelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\helper\\http\\httpclienthelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_stockservice\\stockserivce.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|solutionrelative:widesea_stockservice\\stockserivce.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_wmsserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_stockservice\\stockviewservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|solutionrelative:widesea_stockservice\\stockviewservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_core\\helper\\http\\httprequestconfig.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\helper\\http\\httprequestconfig.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_ibasicservice\\ilocationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|solutionrelative:widesea_ibasicservice\\ilocationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{49716D78-720D-475D-948C-0FC6C5F079E5}|WIDESEA_IStockService\\WIDESEA_IStockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_istockservice\\istockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{49716D78-720D-475D-948C-0FC6C5F079E5}|WIDESEA_IStockService\\WIDESEA_IStockService.csproj|solutionrelative:widesea_istockservice\\istockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_core\\helper\\http\\httpresponseresult.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\helper\\http\\httpresponseresult.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_dto\\task\\createtaskdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\task\\createtaskdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_ibasicservice\\ilocationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{5F260E03-095A-4870-8419-5B72CB62929E}|WIDESEA_IBasicService\\WIDESEA_IBasicService.csproj|solutionrelative:widesea_ibasicservice\\ilocationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_model\\models\\stock\\dt_stockinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\stock\\dt_stockinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_dto\\stock\\stockdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\stock\\stockdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_basicservice\\locationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D11C804C-2FF4-4C18-A3EE-2F0574427BB3}|WIDESEA_BasicService\\WIDESEA_BasicService.csproj|solutionrelative:widesea_basicservice\\locationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_stockservice\\stockviewservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|solutionrelative:widesea_stockservice\\stockviewservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_core\\baserepository\\irepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\baserepository\\irepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_dto\\gradingmachine\\inputdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\gradingmachine\\inputdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_dto\\gradingmachine\\outputdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\gradingmachine\\outputdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{49716D78-720D-475D-948C-0FC6C5F079E5}|WIDESEA_IStockService\\WIDESEA_IStockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_istockservice\\istockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{49716D78-720D-475D-948C-0FC6C5F079E5}|WIDESEA_IStockService\\WIDESEA_IStockService.csproj|solutionrelative:widesea_istockservice\\istockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_stockservice\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|solutionrelative:widesea_stockservice\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_stockservice\\stockserivce.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|solutionrelative:widesea_stockservice\\stockserivce.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_core\\baserepository\\repositorybase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\baserepository\\repositorybase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     }
   ],
   "DocumentGroupContainers": [
@@ -58,43 +90,154 @@
       "DocumentGroups": [
         {
           "DockedWidth": 200,
-          "SelectedChildIndex": 11,
+          "SelectedChildIndex": 16,
           "Children": [
             {
               "$type": "Document",
               "DocumentIndex": 5,
+              "Title": "Program.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Program.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Program.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Program.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Program.cs",
+              "ViewState": "AgIAADsAAAAAAAAAAAAqwEIAAAAvAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-25T02:24:12.114Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 7,
+              "Title": "HttpResponseResult.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\HTTP\\HttpResponseResult.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Helper\\HTTP\\HttpResponseResult.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\HTTP\\HttpResponseResult.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Helper\\HTTP\\HttpResponseResult.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAASAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-25T01:56:34.362Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 6,
+              "Title": "HttpRequestConfig.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\HTTP\\HttpRequestConfig.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Helper\\HTTP\\HttpRequestConfig.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\HTTP\\HttpRequestConfig.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Helper\\HTTP\\HttpRequestConfig.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAYAAAAWAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-25T01:56:26.626Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 4,
+              "Title": "HttpClientHelper.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\HTTP\\HttpClientHelper.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Helper\\HTTP\\HttpClientHelper.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Helper\\HTTP\\HttpClientHelper.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Helper\\HTTP\\HttpClientHelper.cs",
+              "ViewState": "AgIAADEAAAAAAAAAAAAewEQAAAAtAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-25T01:55:24.973Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:128:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{40ea2e6b-2121-4bb8-a43e-c83c04b51041}"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 15,
+              "Title": "OutPutDto.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\GradingMachine\\OutPutDto.cs",
+              "RelativeDocumentMoniker": "WIDESEA_DTO\\GradingMachine\\OutPutDto.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\GradingMachine\\OutPutDto.cs",
+              "RelativeToolTip": "WIDESEA_DTO\\GradingMachine\\OutPutDto.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAAQAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-16T04:20:27.945Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 14,
+              "Title": "InputDto.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\GradingMachine\\InputDto.cs",
+              "RelativeDocumentMoniker": "WIDESEA_DTO\\GradingMachine\\InputDto.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\GradingMachine\\InputDto.cs",
+              "RelativeToolTip": "WIDESEA_DTO\\GradingMachine\\InputDto.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABgAAAAQAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-16T03:59:05.513Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 19,
+              "Title": "RepositoryBase.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseRepository\\RepositoryBase.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\BaseRepository\\RepositoryBase.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseRepository\\RepositoryBase.cs",
+              "RelativeToolTip": "WIDESEA_Core\\BaseRepository\\RepositoryBase.cs",
+              "ViewState": "AgIAALgDAAAAAAAAAAAhwMsDAAAZAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-14T08:55:16.1Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 13,
+              "Title": "IRepository.cs",
+              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseRepository\\IRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\BaseRepository\\IRepository.cs",
+              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseRepository\\IRepository.cs",
+              "RelativeToolTip": "WIDESEA_Core\\BaseRepository\\IRepository.cs",
+              "ViewState": "AgIAAIIBAAAAAAAAAAAWwLMBAAASAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-02-14T08:53:36.522Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 12,
               "Title": "StockViewService.cs",
               "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockService\\StockViewService.cs",
               "RelativeDocumentMoniker": "WIDESEA_StockService\\StockViewService.cs",
               "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockService\\StockViewService.cs",
               "RelativeToolTip": "WIDESEA_StockService\\StockViewService.cs",
-              "ViewState": "AgIAADYAAAAAAAAAAAAAAEwAAAA/AAAAAAAAAA==",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAEwAAAA/AAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2026-02-11T07:14:32.478Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 6,
+              "DocumentIndex": 9,
               "Title": "ILocationInfoService.cs",
               "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\ILocationInfoService.cs",
               "RelativeDocumentMoniker": "WIDESEA_IBasicService\\ILocationInfoService.cs",
               "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\ILocationInfoService.cs",
               "RelativeToolTip": "WIDESEA_IBasicService\\ILocationInfoService.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAEIAAAAaAAAAAAAAAA==",
+              "ViewState": "AgIAADsAAAAAAAAAAAA2wEIAAAAxAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2026-02-11T02:33:03.398Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 3,
+              "DocumentIndex": 11,
               "Title": "LocationInfoService.cs",
               "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\LocationInfoService.cs",
               "RelativeDocumentMoniker": "WIDESEA_BasicService\\LocationInfoService.cs",
               "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\LocationInfoService.cs",
               "RelativeToolTip": "WIDESEA_BasicService\\LocationInfoService.cs",
-              "ViewState": "AgIAAHkAAAAAAAAAAAApwIsAAAAsAAAAAAAAAA==",
+              "ViewState": "AgIAAJIAAAAAAAAAAADgv6gAAAAjAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2026-02-11T02:22:42.847Z",
               "EditorCaption": ""
@@ -114,47 +257,37 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 2,
+              "DocumentIndex": 17,
               "Title": "StockInfoService.cs",
               "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockService\\StockInfoService.cs",
               "RelativeDocumentMoniker": "WIDESEA_StockService\\StockInfoService.cs",
               "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockService\\StockInfoService.cs",
               "RelativeToolTip": "WIDESEA_StockService\\StockInfoService.cs",
-              "ViewState": "AgIAAB4AAAAAAAAAAAAjwDAAAAAgAAAAAAAAAA==",
+              "ViewState": "AgIAACIAAAAAAAAAAAAIwDwAAAA5AAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-02-11T01:23:56.94Z",
-              "EditorCaption": ""
+              "WhenOpened": "2026-02-11T01:23:56.94Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 7,
+              "DocumentIndex": 16,
               "Title": "IStockInfoService.cs",
               "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStockService\\IStockInfoService.cs",
               "RelativeDocumentMoniker": "WIDESEA_IStockService\\IStockInfoService.cs",
               "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStockService\\IStockInfoService.cs",
               "RelativeToolTip": "WIDESEA_IStockService\\IStockInfoService.cs",
-              "ViewState": "AgIAAAMAAAAAAAAAAAAuwCEAAAAsAAAAAAAAAA==",
+              "ViewState": "AgIAABIAAAAAAAAAAAAIwCsAAAAzAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-02-11T01:21:54.522Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Bookmark",
-              "Name": "ST:128:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
-            },
-            {
-              "$type": "Bookmark",
-              "Name": "ST:0:0:{40ea2e6b-2121-4bb8-a43e-c83c04b51041}"
+              "WhenOpened": "2026-02-11T01:21:54.522Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 9,
+              "DocumentIndex": 0,
               "Title": "TaskController.cs",
               "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
               "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
               "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
-              "ViewState": "AgIAAA8AAAAAAAAAAAAAAAIAAAAfAAAAAAAAAA==",
+              "ViewState": "AgIAABgAAAAAAAAAAAAgwEgAAAAeAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2026-02-09T01:23:19.844Z",
               "EditorCaption": ""
@@ -167,61 +300,61 @@
               "RelativeDocumentMoniker": "WIDESEA_DTO\\Task\\CreateTaskDto.cs",
               "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Task\\CreateTaskDto.cs",
               "RelativeToolTip": "WIDESEA_DTO\\Task\\CreateTaskDto.cs",
-              "ViewState": "AgIAACEAAAAAAAAAAAAywA4AAAARAAAAAAAAAA==",
+              "ViewState": "AgIAABEAAAAAAAAAAADwvw4AAAARAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2026-02-06T07:58:13.932Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 1,
+              "DocumentIndex": 2,
               "Title": "ITaskService.cs",
               "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_ITaskInfoService\\ITaskService.cs",
               "RelativeDocumentMoniker": "WIDESEA_ITaskInfoService\\ITaskService.cs",
               "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_ITaskInfoService\\ITaskService.cs",
               "RelativeToolTip": "WIDESEA_ITaskInfoService\\ITaskService.cs",
-              "ViewState": "AgIAACcAAAAAAAAAAIA+wEcAAABXAAAAAAAAAA==",
+              "ViewState": "AgIAAE0AAAAAAAAAAAAlwGMAAAA+AAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2026-02-06T07:00:19.697Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 0,
+              "DocumentIndex": 1,
               "Title": "TaskService.cs",
               "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
               "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\TaskService.cs",
               "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
               "RelativeToolTip": "WIDESEA_TaskInfoService\\TaskService.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAB0AAABOAAAAAAAAAA==",
+              "ViewState": "AgIAANcAAAAAAAAAAAAkwC8BAAAfAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2026-02-06T06:34:59.734Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 11,
+              "DocumentIndex": 3,
               "Title": "StockDTO.cs",
               "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Stock\\StockDTO.cs",
               "RelativeDocumentMoniker": "WIDESEA_DTO\\Stock\\StockDTO.cs",
               "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Stock\\StockDTO.cs",
               "RelativeToolTip": "WIDESEA_DTO\\Stock\\StockDTO.cs",
-              "ViewState": "AgIAABsAAAAAAAAAAAA1wBYAAABBAAAAAAAAAA==",
+              "ViewState": "AgIAABwAAAAAAAAAAAAUwBYAAABBAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-02-06T02:56:51.397Z"
+              "WhenOpened": "2026-02-06T02:56:51.397Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 4,
+              "DocumentIndex": 18,
               "Title": "StockSerivce.cs",
               "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockService\\StockSerivce.cs",
               "RelativeDocumentMoniker": "WIDESEA_StockService\\StockSerivce.cs",
               "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockService\\StockSerivce.cs",
               "RelativeToolTip": "WIDESEA_StockService\\StockSerivce.cs",
-              "ViewState": "AgIAAEQAAAAAAAAAAAAswB0AAAAVAAAAAAAAAA==",
+              "ViewState": "AgIAAHsAAAAAAAAAAAA5wJEAAAAJAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-02-06T01:53:49.077Z",
-              "EditorCaption": ""
+              "WhenOpened": "2026-02-06T01:53:49.077Z"
             }
           ]
         }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs
index cfa497c..8e323e3 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs
@@ -1,6 +1,7 @@
 锘縰sing SqlSugar;
 using WIDESEA_Common.CommonEnum;
 using WIDESEA_Common.LocationEnum;
+using WIDESEA_Common.TaskEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
@@ -14,9 +15,14 @@
     public partial class LocationInfoService : ServiceBase<Dt_LocationInfo, IRepository<Dt_LocationInfo>>, ILocationInfoService
     {
         public IRepository<Dt_LocationInfo> Repository => BaseDal;
+        public IRepository<Dt_Task> _taskRepository { get; }
 
-        public LocationInfoService(IRepository<Dt_LocationInfo> BaseDal) : base(BaseDal)
+        public IRepository<Dt_StockInfo> _stockInfoRepository { get; set; }
+
+        public LocationInfoService(IRepository<Dt_LocationInfo> BaseDal, IRepository<Dt_Task> taskRepository, IRepository<Dt_StockInfo> stockInfoRepository) : base(BaseDal)
         {
+            _taskRepository = taskRepository;
+            _stockInfoRepository = stockInfoRepository;
         }
 
         /// <summary>
@@ -142,6 +148,11 @@
             return await BaseDal.QueryFirstAsync(x => x.RoadwayNo == roadwayNo && x.LocationCode == locationCode);
         }
 
+        public async Task<Dt_LocationInfo> GetLocationInfoAsync( string locationCode)
+        {
+            return await BaseDal.QueryFirstAsync(x=>x.LocationCode == locationCode);
+        }
+
         /// <summary>
         /// 鏇存柊璐т綅淇℃伅
         /// </summary>
@@ -149,5 +160,141 @@
         {
             return await BaseDal.UpdateDataAsync(locationInfo);
         }
+
+
+        /// <summary>
+        /// 妫�鏌ュ苟鐢熸垚绉诲簱浠诲姟鎴栬繑鍥炲嚭搴撲换鍔�
+        /// </summary>
+        /// <param name="locationID">浠诲姟鍙�</param>
+        /// <returns>浠诲姟瀵硅薄</returns>
+        public async Task<Dt_Task> TransferCheckAsync(int taskNum)
+        {
+            try
+            {
+                // 鏍规嵁浠诲姟鍙疯幏鍙栦换鍔�
+                var outboundTask = await _taskRepository.QueryFirstAsync(x => x.TaskNum == taskNum);
+                if (outboundTask == null)
+                    return null;
+
+                var location = await BaseDal.QueryFirstAsync(x => x.LocationCode == outboundTask.SourceAddress);
+
+                // 妫�鏌ユ槸鍚﹂渶瑕佽繘琛岀Щ搴�
+                if (CheckForInternalTransfer(location))
+                {
+                    // 璁$畻瀵瑰簲浣嶇疆鐨勭浉瀵瑰簱浣� 锛堝鏁拌鐨勪笅涓�琛屾垨鑰呭伓鏁拌鐨勪笂涓�琛岋級
+                    var newLocationID = GetRelativeLocationID(location);
+
+                    // 鑾峰彇鏂扮殑搴撲綅鐨勪换鍔�
+                    var internalTransferTask = await _taskRepository.QueryFirstAsync(x => x.SourceAddress == newLocationID && x.Roadway == outboundTask.Roadway);
+
+                    // 濡傛灉鏂扮殑搴撲綅娌℃湁鎵惧埌瀵瑰簲鐨勪换鍔�
+                    if (internalTransferTask == null)
+                    {
+                        return await HandleNoTaskAtLocation(outboundTask.SourceAddress, newLocationID, outboundTask);
+                    }
+
+                    // 鐩存帴杩斿洖涓�娣变綅鍑哄簱浠诲姟
+                    return internalTransferTask;
+                }
+
+                // 杩斿洖褰撳墠搴撲綅鐨勫嚭搴撲换鍔�
+                return outboundTask;
+            }
+            catch (Exception)
+            {
+                return null;
+            }
+        }
+
+
+        #region 绉诲簱鏂规硶
+
+        /// <summary>
+        /// 璁$畻鐩稿鐨勫簱浣岻D
+        /// </summary>
+        /// <param name="locationID">褰撳墠搴撲綅ID</param>
+        /// <returns>鐩稿鐨勫簱浣岻D</returns>
+        private string GetRelativeLocationID(Dt_LocationInfo locationInfo)
+        {
+            int line = locationInfo.Row;
+
+            // 璁$畻鐩稿鐨勮揣浣嶈鍊硷紝濂囨暟琛岀殑涓嬩竴琛屾垨鑰呭伓鏁拌鐨勪笂涓�琛�
+            int relativeLine = line % 2 == 1 ? line + 1 : line - 1;
+
+            // 鏋勫缓鏂扮殑搴撲綅ID
+            string[] newLocationParts = new string[] { relativeLine.ToString().PadLeft(3, '0'), locationInfo.Column.ToString(), locationInfo.Layer.ToString() };
+            return string.Join("-", newLocationParts);
+        }
+
+        /// <summary>
+        /// 澶勭悊娌℃湁浠诲姟鐨勫簱浣嶆儏鍐�
+        /// </summary>
+        /// <param name="originalLocationID">鍘熷搴撲綅ID</param>
+        /// <param name="newLocationID">鏂扮殑搴撲綅ID</param>
+        /// <param name="outboundTask">鍑哄簱浠诲姟</param>
+        /// <returns>鐢熸垚鐨勭Щ搴撲换鍔℃垨鍘熷鍑哄簱浠诲姟</returns>
+        private async Task<Dt_Task> HandleNoTaskAtLocation(string originalLocationID, string newLocationID, Dt_Task outboundTask)
+        {
+            // 鍒ゆ柇璇ヤ綅缃槸鍚︽湁搴撳瓨
+            var stockInfo = await _stockInfoRepository.QueryFirstAsync(x => x.LocationCode == newLocationID);
+
+            if (stockInfo == null)
+            {
+                // 濡傛灉娌℃湁搴撳瓨锛岀洿鎺ヨ繑鍥炲綋鍓嶅嚭搴撲换鍔�
+                return outboundTask;
+            }
+            else
+            {
+                // 濡傛灉鏈夊簱瀛橈紝鐢熸垚绉诲簱浠诲姟
+                var emptyLocation = await GetTransferLocationEmptyAsync(outboundTask.Roadway);
+                var taskNo = await _taskRepository.GetTaskNo();
+                Dt_Task newTransferTask = new Dt_Task()
+                {
+                    CreateDate = DateTime.Now,
+                    Creater = App.User.UserName,
+                    CurrentAddress = originalLocationID,
+                    Grade = 99,
+                    NextAddress = emptyLocation.LocationCode,
+                    PalletCode = stockInfo.PalletCode,
+                    Remark = "绉诲簱",
+                    Roadway = stockInfo.LocationDetails.RoadwayNo,
+                    SourceAddress = originalLocationID,
+                    TaskNum = taskNo,
+                    TargetAddress = emptyLocation.LocationCode,
+                    TaskType = TaskTypeEnum.Relocation.GetHashCode(),
+                };
+
+                return await _taskRepository.Db.Insertable(newTransferTask).ExecuteReturnEntityAsync();
+            }
+        }
+
+        /// <summary>
+        /// 鏍规嵁璐т綅鏄惁闇�瑕佺Щ搴�
+        /// </summary>
+        /// <param name="locationID">璐т綅ID</param>
+        /// <returns>鏄惁闇�瑕佺Щ搴�</returns>
+        private bool CheckForInternalTransfer(Dt_LocationInfo location)
+        {
+            return location.Depth == 2 ? true : false;
+        }
+
+        /// <summary>
+        /// 鏍规嵁宸烽亾鑾峰彇浜屾繁浣嶇殑绌哄簱浣�
+        /// </summary>
+        /// <param name="roadway">宸烽亾</param>
+        /// <returns>璐т綅瀵硅薄</returns>
+        private async Task<Dt_LocationInfo> GetTransferLocationEmptyAsync(string roadway)
+        {
+            return await BaseDal.QueryFirstAsync(x => x.Depth == 2 && x.LocationStatus == (LocationStatusEnum.Free.GetHashCode()) && x.RoadwayNo == roadway);
+
+            //Db.Queryable<Dt_LocationInfo>()
+            //.Where(x => x.Status == LocationEnum.Free.ObjToInt())
+            //.Where(x => x.Depth == 2.ToString())
+            //.Where(x => x.Roadway == roadway)
+            //.First();
+        }
+
+        #endregion 绉诲簱鏂规硶
+
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs
index c22ec14..25931e9 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs
@@ -428,5 +428,11 @@
         //    Expression<Func<T, T2, T3, TResult>> selectExpression,
         //    Expression<Func<T, T2, T3, bool>> whereLambda = null) where T : class, new();
         //Task<PageModel<TEntity>> QueryPage(PaginationModel pagination);
+
+        /// <summary>
+        /// 鑾峰彇浠诲姟缂栧彿
+        /// </summary>
+        /// <returns></returns>
+        Task<int> GetTaskNo();
     }
 }
\ No newline at end of file
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs
index 41c5bd7..2e82046 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs
@@ -968,6 +968,12 @@
             }
             return DeleteData(entities);
         }
+
+        public Task<int> GetTaskNo()
+        {
+            string sql = "select next value for dbo.GetTaskNum";
+            return Db.Ado.SqlQuerySingleAsync<int>(sql);
+        }
         //List<TResult> QueryMuch<T, T2, T3, TResult>(
         //    Expression<Func<T, T2, T3, object[]>> joinExpression,
         //    Expression<Func<T, T2, T3, TResult>> selectExpression,
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HTTP/HttpClientHelper.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HTTP/HttpClientHelper.cs
new file mode 100644
index 0000000..36346a8
--- /dev/null
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HTTP/HttpClientHelper.cs
@@ -0,0 +1,269 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Http;
+using System.Net.Http.Headers;
+using System.Reflection.Metadata;
+using System.Text;
+using System.Text.Json;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Logging;
+using Newtonsoft.Json;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core
+{
+    public class HttpClientHelper
+    {
+        private readonly IHttpClientFactory _httpClientFactory;
+
+        public HttpClientHelper(IHttpClientFactory httpClientFactory, IConfiguration configuration = null)
+        {
+            _httpClientFactory = httpClientFactory ?? throw new ArgumentNullException(nameof(httpClientFactory));
+        }
+
+        /// <summary>
+        /// POST璇锋眰
+        /// </summary>
+        /// <param name="url">璇锋眰URL</param>
+        /// <param name="content">璇锋眰鍐呭</param>
+        /// <param name="mediaType">濯掍綋绫诲瀷</param>
+        /// <param name="config">璇锋眰閰嶇疆</param>
+        /// <returns></returns>
+        public HttpResponseResult Post(string url, string content, string contentType = "application/json", HttpRequestConfig? config = null)
+        {
+            HttpResponseResult httpResponseResult = ExecuteAsync(async (client) =>
+            {
+                var request = new HttpRequestMessage(HttpMethod.Post, url);
+                request.Content = new StringContent(content ?? string.Empty, Encoding.UTF8, contentType);
+                SetRequestHeaders(request, config?.Headers);
+                return await client.SendAsync(request);
+            }, config, $"POST {url}").Result;
+            httpResponseResult.ApiUrl = url;
+            return httpResponseResult;
+        }
+
+        public HttpResponseResult Get(string url, HttpRequestConfig? config = null)
+        {
+            HttpResponseResult httpResponseResult = ExecuteAsync(async (client) =>
+            {
+                var request = new HttpRequestMessage(HttpMethod.Get, url);
+                SetRequestHeaders(request, config?.Headers);
+                return await client.SendAsync(request);
+            }, config, $"GET {url}").Result;
+
+            httpResponseResult.ApiUrl = url;
+            return httpResponseResult;
+        }
+
+
+        /// <summary>
+        /// POST璇锋眰
+        /// </summary>
+        /// <param name="url">璇锋眰URL</param>
+        /// <param name="content">璇锋眰鍐呭</param>
+        /// <param name="mediaType">濯掍綋绫诲瀷</param>
+        /// <param name="config">璇锋眰閰嶇疆</param>
+        /// <returns></returns>
+        public HttpResponseResult<TResponse> Post<TResponse>(string url, string content, string contentType = "application/json", HttpRequestConfig? config = null)
+        {
+
+            HttpResponseResult httpResponseResult = Post(url, content, contentType, config);
+
+            HttpResponseResult<TResponse> result = new HttpResponseResult<TResponse>
+            {
+                IsSuccess = httpResponseResult.IsSuccess,
+                StatusCode = httpResponseResult.StatusCode,
+                Content = httpResponseResult.Content,
+                Headers = httpResponseResult.Headers,
+                Duration = httpResponseResult.Duration,
+                ErrorMessage = httpResponseResult.ErrorMessage,
+                Exception = httpResponseResult.Exception
+            };
+
+            if (result.IsSuccess && !string.IsNullOrEmpty(result.Content))
+            {
+                try
+                {
+                    TResponse? response = JsonConvert.DeserializeObject<TResponse>(result.Content);
+                    if (response != null)
+                    {
+                        result.Data = response;
+                    }
+                    else
+                    {
+                        result.IsSuccess = false;
+                        result.ErrorMessage = "鍙嶅簭鍒楀寲缁撴灉涓簄ull";
+                    }
+                }
+                catch (Exception ex)
+                {
+                    result.IsSuccess = false;
+                    result.ErrorMessage = $"鍙嶅簭鍒楀寲澶辫触: {ex.Message}";
+                    result.Exception = ex;
+                }
+            }
+
+            return result;
+        }
+
+        public HttpResponseResult<TResponse> Get<TResponse>(string url, HttpRequestConfig? config = null)
+        {
+            HttpResponseResult httpResponseResult = Get(url, config);
+
+            HttpResponseResult<TResponse> result = new HttpResponseResult<TResponse>
+            {
+                IsSuccess = httpResponseResult.IsSuccess,
+                StatusCode = httpResponseResult.StatusCode,
+                Content = httpResponseResult.Content,
+                Headers = httpResponseResult.Headers,
+                Duration = httpResponseResult.Duration,
+                ErrorMessage = httpResponseResult.ErrorMessage,
+                Exception = httpResponseResult.Exception
+            };
+
+            if (result.IsSuccess && !string.IsNullOrEmpty(result.Content))
+            {
+                try
+                {
+                    TResponse? response = JsonConvert.DeserializeObject<TResponse>(result.Content);
+                    if (response != null)
+                    {
+                        result.Data = response;
+                    }
+                    else
+                    {
+                        result.IsSuccess = false;
+                        result.ErrorMessage = "鍙嶅簭鍒楀寲缁撴灉涓簄ull";
+                    }
+                }
+                catch (Exception ex)
+                {
+                    result.IsSuccess = false;
+                    result.ErrorMessage = $"鍙嶅簭鍒楀寲澶辫触: {ex.Message}";
+                    result.Exception = ex;
+                }
+            }
+
+            return result;
+        }
+
+        /// <summary>
+        /// 鎵цHTTP璇锋眰
+        /// </summary>
+        private async Task<HttpResponseResult> ExecuteAsync(Func<HttpClient, Task<HttpResponseMessage>> requestFunc, HttpRequestConfig? config, string requestInfo)
+        {
+            var result = new HttpResponseResult();
+            var stopwatch = System.Diagnostics.Stopwatch.StartNew();
+            config ??= new HttpRequestConfig();
+
+            try
+            {
+                using var client = CreateHttpClient(config);
+                HttpResponseMessage? response = null;
+                Exception? lastException = null;
+
+                // 閲嶈瘯鏈哄埗
+                for (int retry = 0; retry <= config.MaxRetryCount; retry++)
+                {
+                    try
+                    {
+                        response = await requestFunc(client);
+                        if (response.StatusCode == System.Net.HttpStatusCode.OK)
+                            break;
+                    }
+                    catch (Exception ex) when (retry < config.MaxRetryCount)
+                    {
+                        lastException = ex;
+                        if (config.EnableLogging)
+                        {
+                            // TODO锛氭棩蹇楄褰�
+                        }
+                        await Task.Delay(config.RetryIntervalMs, default);
+                    }
+                }
+
+                if (response == null)
+                {
+                    throw lastException ?? new HttpRequestException("璇锋眰澶辫触");
+                }
+
+                result.StatusCode = response.StatusCode;
+                result.IsSuccess = response.IsSuccessStatusCode;
+
+                // 璇诲彇鍝嶅簲鍐呭
+                result.Content = await response.Content.ReadAsStringAsync();
+
+                // 鑾峰彇鍝嶅簲澶�
+                result.Headers = new Dictionary<string, IEnumerable<string>>();
+                foreach (var header in response.Headers)
+                {
+                    result.Headers[header.Key] = header.Value;
+                }
+                foreach (var header in response.Content.Headers)
+                {
+                    result.Headers[header.Key] = header.Value;
+                }
+
+                if (config.EnableLogging)
+                {
+                    // TODO锛氭棩蹇楄褰�
+                }
+            }
+            catch (Exception ex)
+            {
+                result.IsSuccess = false;
+                result.ErrorMessage = ex.Message;
+                result.Exception = ex;
+
+                if (config.EnableLogging)
+                {
+                    // TODO锛氭棩蹇楄褰�
+                }
+            }
+            finally
+            {
+                stopwatch.Stop();
+                result.Duration = stopwatch.ElapsedMilliseconds;
+            }
+
+            return result;
+        }
+
+        /// <summary>
+        /// 鍒涘缓HttpClient
+        /// </summary>
+        private HttpClient CreateHttpClient(HttpRequestConfig config)
+        {
+            var client = _httpClientFactory.CreateClient();
+            client.Timeout = TimeSpan.FromMilliseconds(config.TimeoutMs);
+
+            // 璁剧疆榛樿璇锋眰澶�
+            client.DefaultRequestHeaders.Clear();
+            client.DefaultRequestHeaders.Accept.Clear();
+            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
+
+            return client;
+        }
+
+
+        /// <summary>
+        /// 璁剧疆璇锋眰澶�
+        /// </summary>
+        private void SetRequestHeaders(HttpRequestMessage request, Dictionary<string, string>? headers)
+        {
+            if (headers != null)
+            {
+                foreach (var header in headers)
+                {
+                    if (!request.Headers.Contains(header.Key))
+                    {
+                        request.Headers.Add(header.Key, header.Value);
+                    }
+                }
+            }
+        }
+
+    }
+}
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HTTP/HttpRequestConfig.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HTTP/HttpRequestConfig.cs
new file mode 100644
index 0000000..f6b1831
--- /dev/null
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HTTP/HttpRequestConfig.cs
@@ -0,0 +1,39 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core
+{
+    /// <summary>
+    /// HTTP璇锋眰閰嶇疆
+    /// </summary>
+    public class HttpRequestConfig
+    {
+        /// <summary>
+        /// 瓒呮椂鏃堕棿锛堟绉掞級
+        /// </summary>
+        public int TimeoutMs { get; set; } = 300000;
+
+        /// <summary>
+        /// 鏈�澶ч噸璇曟鏁�
+        /// </summary>
+        public int MaxRetryCount { get; set; } = 3;
+
+        /// <summary>
+        /// 閲嶈瘯闂撮殧锛堟绉掞級
+        /// </summary>
+        public int RetryIntervalMs { get; set; } = 1000;
+
+        /// <summary>
+        /// 璇锋眰澶�
+        /// </summary>
+        public Dictionary<string, string> Headers { get; set; } = new Dictionary<string, string>();
+
+        /// <summary>
+        /// 鏄惁鍚敤鏃ュ織
+        /// </summary>
+        public bool EnableLogging { get; set; } = true;
+    }
+}
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HTTP/HttpResponseResult.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HTTP/HttpResponseResult.cs
new file mode 100644
index 0000000..9b2e48d
--- /dev/null
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HTTP/HttpResponseResult.cs
@@ -0,0 +1,68 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core
+{
+    /// <summary>
+    /// HTTP鍝嶅簲缁撴灉
+    /// </summary>
+    public class HttpResponseResult
+    {
+        /// <summary>
+        /// 鏄惁鎴愬姛
+        /// </summary>
+        public bool IsSuccess { get; set; }
+
+        /// <summary>
+        /// HTTP鐘舵�佺爜
+        /// </summary>
+        public HttpStatusCode StatusCode { get; set; }
+
+        /// <summary>
+        /// 鍝嶅簲鍐呭
+        /// </summary>
+        public string Content { get; set; }
+
+        /// <summary>
+        /// 鍝嶅簲澶�
+        /// </summary>
+        public Dictionary<string, IEnumerable<string>> Headers { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鑰楁椂锛堟绉掞級
+        /// </summary>
+        public long Duration { get; set; }
+
+        /// <summary>
+        /// 閿欒淇℃伅
+        /// </summary>
+        public string ErrorMessage { get; set; }
+
+        /// <summary>
+        /// 寮傚父淇℃伅
+        /// </summary>
+        public Exception Exception { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string ApiUrl { get; set; }
+    }
+
+
+    /// <summary>
+    /// HTTP鍝嶅簲缁撴灉锛堟硾鍨嬶級
+    /// </summary>
+    public class HttpResponseResult<T> : HttpResponseResult
+    {
+        /// <summary>
+        /// 鍙嶅簭鍒楀寲鍚庣殑鏁版嵁
+        /// </summary>
+        public T Data { get; set; }
+    }
+
+}
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/GradingMachine/InputDto.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/GradingMachine/InputDto.cs
new file mode 100644
index 0000000..342713e
--- /dev/null
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/GradingMachine/InputDto.cs
@@ -0,0 +1,34 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO
+{
+    /// <summary>
+    /// 鍒嗗鏌滆緭鍏to
+    /// </summary>
+    public class InputDto
+    {
+        /// <summary>
+        /// 鎵樼洏鍙�
+        /// </summary>
+        public string PalletCode { get; set; }
+
+        /// <summary>
+        /// 璐т綅鍙�
+        /// </summary>
+        public string LocationCode { get; set; }
+
+        /// <summary>
+        /// 璐т綅鐘舵��
+        /// </summary>
+        public int LocationStatus { get; set; }
+
+        /// <summary>
+        /// 鏄惁姝e父NG娴佺▼
+        /// </summary>
+        public int IsNG { get; set; }
+    }
+}
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/GradingMachine/OutPutDto.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/GradingMachine/OutPutDto.cs
new file mode 100644
index 0000000..2abbf02
--- /dev/null
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/GradingMachine/OutPutDto.cs
@@ -0,0 +1,44 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO
+{
+    /// <summary>
+    /// 鍒嗗鏌滆緭鍑篋to
+    /// </summary>
+    public class OutPutDto
+    {
+        /// <summary>
+        /// 璐т綅鍙�
+        /// </summary>
+        public string LocationCode { get;set; }
+
+        /// <summary>
+        /// 鎵樼洏鍙�
+        /// </summary>
+        public string PalletCode { get; set; }
+
+        /// <summary>
+        /// 璐т綅鐘舵��
+        /// </summary>
+        public int LocationStatus { get; set; }
+
+        /// <summary>
+        /// 鏄惁姝e父娴佺▼
+        /// </summary>
+        public int IsNormalProcedure { get; set; }
+
+        /// <summary>
+        /// 閫氶亾鍙�
+        /// </summary>
+        public string Channel { get;set; }
+
+        /// <summary>
+        /// 鐢佃姱鏉$爜
+        /// </summary>
+        public string CellCode { get; set; }
+    }
+}
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockDTO.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockDTO.cs
index 7271d09..549b809 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockDTO.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockDTO.cs
@@ -45,4 +45,17 @@
         /// </summary>
         public string CellBarcode { get; set; }
     }
+
+
+    public class StockInfoDTO
+    {
+        /// <summary>
+        /// 鎵樼洏鐮�
+        /// </summary>
+        public string PalletCode { get; set; }
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string TaskNum { get; set; }
+    }
 }
\ No newline at end of file
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs
index c418fde..86c7f41 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs
@@ -72,5 +72,19 @@
         /// <param name="RoadwayNo">宸烽亾</param>
         /// <returns></returns>
         public Task<Dt_LocationInfo?> GetLocationInfo(string RoadwayNo, string locationCode);
+
+        /// <summary>
+        /// 鑾峰彇璐т綅淇℃伅
+        /// </summary>
+        /// <param name="locationCode"></param>
+        /// <returns></returns>
+        public Task<Dt_LocationInfo> GetLocationInfoAsync(string locationCode);
+
+        /// <summary>
+        /// 妫�鏌ュ苟鐢熸垚绉诲簱浠诲姟鎴栬繑鍥炲嚭搴撲换鍔�
+        /// </summary>
+        /// <param name="locationID">浠诲姟鍙�</param>
+        /// <returns>浠诲姟瀵硅薄</returns>
+        public Task<Dt_Task> TransferCheckAsync(int taskNum);
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs
index d542082..5c20e6d 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs
@@ -34,5 +34,13 @@
         /// <param name="stockInfo"></param>
         /// <returns></returns>
         public Task<bool> UpdateStockAsync(Dt_StockInfo stockInfo);
+
+        /// <summary>
+        /// 妫�绱㈡寚瀹氭墭鐩樺湪缁欏畾浣嶇疆鐨勫簱瀛樿缁嗕俊鎭��
+        /// </summary>
+        /// <param name="palletCode">璇锋眰搴撳瓨淇℃伅鐨勬墭鐩樺敮涓�鏍囪瘑绗︺�備笉鑳戒负 null 鎴栫┖銆�</param>
+        /// <param name="locationCode">琛ㄧず鎵樼洏瀛樺偍浣嶇疆鐨勪唬鐮併�備笉鑳戒负 null 鎴栫┖銆�</param>
+        /// <returns>琛ㄧず寮傛鎿嶄綔鐨勪换鍔°�備换鍔$粨鏋滃寘鍚竴涓� <see cref="Dt_StockInfo"/> 瀵硅薄锛岃瀵硅薄鍖呭惈鎸囧畾鎵樼洏鍜屼綅缃殑搴撳瓨璇︾粏淇℃伅銆傚鏋滄湭鎵惧埌鍖归厤鐨勫簱瀛樹俊鎭紝鍒欒繑鍥� null銆�</returns>
+        public Task<Dt_StockInfo> GetStockInfoAsync(string palletCode, string locationCode);
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockService.cs
index aa5e341..8a564e5 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockService.cs
@@ -23,5 +23,7 @@
         Task<bool> ChangePallet(StockDTO stock);
 
         Task<bool> SplitPallet(StockDTO stock);
+
+        Task<bool> UpdateStockInfo(StockInfoDTO stock);
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs
index f644d6d..3b2639e 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs
@@ -70,5 +70,33 @@
         /// 鍑哄簱浠诲姟瀹屾垚 锛氫慨鏀瑰簱瀛橈紝淇敼璐т綅鐘舵�侊紝鍒犻櫎浠诲姟鏁版嵁锛屾坊鍔犲巻鍙蹭换鍔℃暟鎹�
         /// </summary>
         public Task<WebResponseContent> OutboundFinishTaskAsync(CreateTaskDto taskDto);
+
+        /// <summary>
+        /// 鍫嗗灈鏈哄彇鏀捐揣瀹屾垚鍚庣墿娴侀�氱煡鍖栨垚鍒嗗鏌滃畬鎴愪俊鍙�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        public Task<WebResponseContent> InOrOutCompletedAsync(InputDto input);
+
+        /// <summary>
+        /// 鍖栨垚鍒嗗鏌滃畾鏃跺悜鐗╂祦鏇存柊鍒嗗鏌滅姸鎬佷俊鎭�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        public Task<WebResponseContent> SendLocationStatusAsync(InputDto input);
+
+        /// <summary>
+        /// 鍒嗗鏌滃伐浣滃畬鎴愬悗璋冪敤姝ゆ帴鍙i�氱煡鐗╂祦鍑哄簱
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        public Task<WebResponseContent> RequestOutboundAsync(InputDto input);
+
+        /// <summary>
+        /// 鍏ュ簱瀹屾垚鍒嗗璋冪敤鑾峰彇鎵樼洏涓婃瘡涓�氶亾鐢佃姱
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        public Task<WebResponseContent> GetPalletCodeCellAsync(InputDto input);
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs
index 81e2309..6ade9de 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs
@@ -50,5 +50,17 @@
         {
             return await BaseDal.UpdateDataAsync(stockInfo);
         }
+
+
+        /// <summary>
+        /// 妫�绱㈡寚瀹氭墭鐩樺湪缁欏畾浣嶇疆鐨勫簱瀛樿缁嗕俊鎭��
+        /// </summary>
+        /// <param name="palletCode">璇锋眰搴撳瓨淇℃伅鐨勬墭鐩樺敮涓�鏍囪瘑绗︺�備笉鑳戒负 null 鎴栫┖銆�</param>
+        /// <param name="locationCode">琛ㄧず鎵樼洏瀛樺偍浣嶇疆鐨勪唬鐮併�備笉鑳戒负 null 鎴栫┖銆�</param>
+        /// <returns>琛ㄧず寮傛鎿嶄綔鐨勪换鍔°�備换鍔$粨鏋滃寘鍚竴涓� <see cref="Dt_StockInfo"/> 瀵硅薄锛岃瀵硅薄鍖呭惈鎸囧畾鎵樼洏鍜屼綅缃殑搴撳瓨璇︾粏淇℃伅銆傚鏋滄湭鎵惧埌鍖归厤鐨勫簱瀛樹俊鎭紝鍒欒繑鍥� null銆�</returns>
+        public async Task<Dt_StockInfo> GetStockInfoAsync(string palletCode, string locationCode)
+        {
+            return await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode && x.LocationCode == locationCode);
+        }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs
index 64f19fc..bbe42f9 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs
@@ -145,6 +145,20 @@
             return await StockInfoDetailService.Repository.DeleteDataAsync(detailEntities);
         }
 
+        public async Task<bool> UpdateStockInfo(StockInfoDTO stock)
+        {
+            if (stock == null) return false;
+
+            var existingStock = StockInfoService.Repository.QueryFirst(s => s.PalletCode == stock.PalletCode);
+            if (existingStock == null) return false;
+
+            existingStock.LocationCode = "";
+            existingStock.LocationId = 0;
+
+            return await StockInfoService.Repository.UpdateDataAsync(existingStock);
+        }
+
+
         private static List<Dt_StockInfoDetail_Hty> CreateDetailHistory(IEnumerable<Dt_StockInfoDetail> details, string operateType)
         {
             var now = DateTime.Now;
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
index 4400580..e779cc8 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -1,10 +1,14 @@
 锘縰sing AutoMapper;
+using Microsoft.AspNetCore.Components.Forms;
 using SqlSugar;
+using System.Text.Json;
 using WIDESEA_Common.LocationEnum;
 using WIDESEA_Common.TaskEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO;
 using WIDESEA_DTO.Task;
 using WIDESEA_IBasicService;
 using WIDESEA_IStockService;
@@ -18,6 +22,7 @@
         private readonly IMapper _mapper;
         private readonly IStockInfoService _stockInfoService;
         private readonly ILocationInfoService _locationInfoService;
+        private readonly HttpClientHelper _httpClientHelper;
 
         public IRepository<Dt_Task> Repository => BaseDal;
 
@@ -34,11 +39,13 @@
             IRepository<Dt_Task> BaseDal,
             IMapper mapper,
             IStockInfoService stockInfoService,
-            ILocationInfoService locationInfoService) : base(BaseDal)
+            ILocationInfoService locationInfoService,
+            HttpClientHelper httpClientHelper) : base(BaseDal)
         {
             _mapper = mapper;
             _stockInfoService = stockInfoService;
             _locationInfoService = locationInfoService;
+            _httpClientHelper = httpClientHelper;
         }
 
         /// <summary>
@@ -243,5 +250,189 @@
                 return WebResponseContent.Instance.Error($"瀹屾垚浠诲姟澶辫触: {ex.Message}");
             }
         }
+
+        #region 鍒嗗鏌滄帴鍙�
+
+        /// <summary>
+        /// 鍫嗗灈鏈哄彇鏀捐揣瀹屾垚鍚庣墿娴侀�氱煡鍖栨垚鍒嗗鏌滃畬鎴愪俊鍙�
+        /// </summary>
+        public async Task<WebResponseContent> InOrOutCompletedAsync(InputDto input)
+        {
+            WebResponseContent content = new WebResponseContent();
+            if (string.IsNullOrWhiteSpace(input.PalletCode) || string.IsNullOrWhiteSpace(input.LocationCode))
+            {
+                return content.Error($"鎵樼洏鍙锋垨鑰呰揣浣嶇紪鍙蜂笉鑳戒负绌�");
+            }
+
+            try
+            {
+                var stockInfo = await _stockInfoService.GetStockInfoAsync(input.PalletCode, input.LocationCode);
+                if (stockInfo == null)
+                {
+                    var location = await _locationInfoService.GetLocationInfoAsync(input.LocationCode);
+
+                    OutPutDto outPutDto = new OutPutDto()
+                    {
+                        LocationCode = input.LocationCode,
+                        PalletCode = input.PalletCode,
+                        IsNormalProcedure = 1,
+                        LocationStatus = location.LocationStatus
+                    };
+                    content.OK(data: outPutDto);
+                }
+                else
+                {
+                    OutPutDto outPutDto = new OutPutDto()
+                    {
+                        LocationCode = input.LocationCode,
+                        PalletCode = input.PalletCode,
+                        IsNormalProcedure = 1,
+                        LocationStatus = stockInfo.LocationDetails.LocationStatus
+                    };
+                    content.OK(data: outPutDto);
+                }
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+
+            return content;
+        }
+
+        /// <summary>
+        /// 鍖栨垚鍒嗗鏌滃畾鏃跺悜鐗╂祦鏇存柊鍒嗗鏌滅姸鎬佷俊鎭�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        public async Task<WebResponseContent> SendLocationStatusAsync(InputDto input)
+        {
+            WebResponseContent content = new WebResponseContent();
+            if (string.IsNullOrWhiteSpace(input.LocationCode))
+            {
+                return content.Error($"璐т綅缂栧彿涓嶈兘涓虹┖");
+            }
+
+            try
+            {
+                var result = await _locationInfoService.Db.Updateable<Dt_LocationInfo>()
+                    .SetColumns(s => new Dt_LocationInfo
+                    {
+                        LocationStatus = input.LocationStatus
+                    }).Where(s => s.LocationCode == input.LocationCode).ExecuteCommandAsync() > 0;
+
+                if (result)
+                {
+                    content.OK("鏇存柊鎴愬姛");
+                }
+                else
+                {
+                    content.Error("鏇存柊澶辫触");
+                }
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+
+        /// <summary>
+        /// 鍒嗗鏌滃伐浣滃畬鎴愬悗璋冪敤姝ゆ帴鍙i�氱煡鐗╂祦鍑哄簱
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        public async Task<WebResponseContent> RequestOutboundAsync(InputDto input)
+        {
+            WebResponseContent content = new WebResponseContent();
+            if (string.IsNullOrWhiteSpace(input.LocationCode) || string.IsNullOrWhiteSpace(input.PalletCode))
+            {
+                return content.Error($"鎵樼洏鍙锋垨鑰呰揣浣嶇紪鍙蜂笉鑳戒负绌�");
+            }
+            try
+            {
+                var stock = await _stockInfoService.GetStockInfoAsync(input.PalletCode, input.LocationCode);
+                if (stock == null)
+                {
+                    content.Error("鏈壘鍒板搴旂殑鎵樼洏");
+                }
+                else
+                {
+                    var taskList = new Dt_Task
+                    {
+                        WarehouseId = stock.WarehouseId,
+                        PalletCode = stock.PalletCode,
+                        PalletType = stock.PalletType,
+                        SourceAddress = stock.LocationCode,
+                        CurrentAddress = stock.LocationCode,
+                        NextAddress = "10080",
+                        TargetAddress = "10081",
+                        Roadway = stock.LocationDetails.RoadwayNo,
+                        TaskType = TaskTypeEnum.Outbound.GetHashCode(),
+                        TaskStatus = TaskStatusEnum.New.GetHashCode(),
+                        Grade = 1,
+                        TaskNum = await BaseDal.GetTaskNo(),
+                        Creater = "system",
+                    };
+
+                    var result = await BaseDal.AddDataAsync(taskList) > 0;
+                    var wmstaskDto = result ? _mapper.Map<WMSTaskDTO>(taskList) : null;
+
+
+                    var httpResponse = _httpClientHelper.Post<WebResponseContent>("http://logistics-service/api/logistics/notifyoutbound", JsonSerializer.Serialize(wmstaskDto)).Data;
+                    if (result && httpResponse != null)
+                    {
+                        content.OK("鍑哄簱璇锋眰鎴愬姛");
+                    }
+                    else
+                    {
+                        content.Error("鍑哄簱璇锋眰澶辫触");
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+
+        /// <summary>
+        /// 鍏ュ簱瀹屾垚鍒嗗璋冪敤鑾峰彇鎵樼洏涓婃瘡涓�氶亾鐢佃姱
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        public async Task<WebResponseContent> GetPalletCodeCellAsync(InputDto input)
+        {
+            WebResponseContent content = new WebResponseContent();
+            if (string.IsNullOrWhiteSpace(input.PalletCode) || string.IsNullOrWhiteSpace(input.LocationCode))
+            {
+                return content.Error($"鎵樼洏鍙锋垨鑰呰揣浣嶇紪鍙蜂笉鑳戒负绌�");
+            }
+            try
+            {
+                var stockInfo = await _stockInfoService.GetStockInfoAsync(input.PalletCode, input.LocationCode);
+                if (stockInfo == null)
+                {
+                    return content.Error("鏈壘鍒板搴旂殑鎵樼洏");
+                }
+                var outPutDtos = stockInfo.Details.Select(x => new OutPutDto()
+                {
+                    LocationCode = input.LocationCode,
+                    PalletCode = input.PalletCode,
+                    IsNormalProcedure = 1,
+                    LocationStatus = stockInfo.LocationDetails.LocationStatus,
+                    CellCode = x.SerialNumber,
+                    Channel = x.InboundOrderRowNo.ToString()
+                }).ToList();
+                return content.OK(data: outPutDtos);
+            }
+            catch (Exception ex)
+            {
+                return content.Error(ex.Message);
+            }
+        }
+
+        #endregion
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockController.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockController.cs
index ee093bd..b5f60ef 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockController.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockController.cs
@@ -52,5 +52,16 @@
         {
             return await Service.SplitPallet(stock);
         }
+
+        /// <summary>
+        /// 鏇存柊搴撳瓨淇℃伅锛堢粍鐩樸�佹崲鐩樸�佹媶鐩樺悗璋冪敤姝ゆ帴鍙f洿鏂板簱瀛樹俊鎭級
+        /// </summary>
+        /// <param name="stock"></param>
+        /// <returns></returns>
+        [HttpGet, HttpPost, Route("UpdateStockInfoAsync"), AllowAnonymous]
+        public async Task<bool> UpdateStockInfo([FromBody] StockInfoDTO stock)
+        {
+            return await Service.UpdateStockInfo(stock);
+        }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs
index ad0b435..c0c9b7f 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs
@@ -4,6 +4,7 @@
 using WIDESEA_Common.CommonEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseController;
+using WIDESEA_DTO;
 using WIDESEA_DTO.Stock;
 using WIDESEA_DTO.Task;
 using WIDESEA_ITaskInfoService;
@@ -27,9 +28,54 @@
         /// </summary>
         /// <param name="taskDto"></param>
         /// <returns></returns>
-        public async Task<WebResponseContent?> CreateTaskInboundAsync(CreateTaskDto taskDto)
+        [HttpPost("CreateTaskInbound"),AllowAnonymous]
+        public async Task<WebResponseContent?> CreateTaskInboundAsync([FromBody] CreateTaskDto taskDto)
         {
             return await Service.CreateTaskInboundAsync(taskDto);
         }
+
+        /// <summary>
+        /// 鍫嗗灈鏈哄彇鏀捐揣瀹屾垚鍚庣墿娴侀�氱煡鍖栨垚鍒嗗鏌滃畬鎴愪俊鍙�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("InOrOutCompleted"), AllowAnonymous]
+        public async Task<WebResponseContent?> InOrOutCompletedAsync([FromBody] InputDto input)
+        {
+            return await Service.InOrOutCompletedAsync(input);
+        }
+
+        /// <summary>
+        /// 鍖栨垚鍒嗗鏌滃畾鏃跺悜鐗╂祦鏇存柊鍒嗗鏌滅姸鎬佷俊鎭�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("SendLocationStatus"), AllowAnonymous]
+        public async Task<WebResponseContent?> SendLocationStatusAsync([FromBody] InputDto input)
+        {
+            return await Service.SendLocationStatusAsync(input);
+        }
+
+        /// <summary>
+        /// 鍒嗗鏌滃伐浣滃畬鎴愬悗璋冪敤姝ゆ帴鍙i�氱煡鐗╂祦鍑哄簱
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("RequestOutbound"), AllowAnonymous]
+        public async Task<WebResponseContent?> RequestOutboundAsync([FromBody] InputDto input)
+        {
+            return await Service.RequestOutboundAsync(input);
+        }
+
+        /// <summary>
+        /// 鍏ュ簱瀹屾垚鍒嗗璋冪敤鑾峰彇鎵樼洏涓婃瘡涓�氶亾鐢佃姱
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("GetPalletCodeCell"), AllowAnonymous]
+        public async Task<WebResponseContent?> GetPalletCodeCellAsync([FromBody] InputDto input)
+        {
+            return await Service.GetPalletCodeCellAsync(input);
+        }
     }
 }
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs
index 1b0c26a..26e3d14 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs
@@ -64,6 +64,8 @@
     options.Filters.Add(typeof(ActionExecuteFilter));
 });
 
+builder.Services.AddScoped<HttpClientHelper>();
+
 builder.Services.AddAuthorizationSetup();
 
 builder.Services.AddIpPolicyRateLimitSetup(builder.Configuration);//IPLimit限流 启动服务
@@ -112,7 +114,6 @@
 //todo
 //app.UseRecordAccessLogsMiddle();
 
-app.UseCors(AppSettings.Get(new string[] { "Cors", "PolicyName" }));
 
 DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();
 defaultFilesOptions.DefaultFileNames.Clear();
@@ -131,6 +132,8 @@
 
 app.UseRouting();
 
+app.UseCors(AppSettings.Get(new string[] { "Cors", "PolicyName" }));
+
 app.UseAuthentication();
 app.UseAuthorization();
 
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\350\256\276\345\244\207\345\215\217\350\256\256/\351\253\230\345\270\270\346\270\251\345\240\206\345\236\233\346\234\272\344\270\216\350\276\223\351\200\201\347\272\277/WCS-\350\276\223\351\200\201\347\272\277\345\257\271\346\216\245\345\215\217\350\256\256\350\257\264\346\230\216-V260202.docx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\350\256\276\345\244\207\345\215\217\350\256\256/\351\253\230\345\270\270\346\270\251\345\240\206\345\236\233\346\234\272\344\270\216\350\276\223\351\200\201\347\272\277/WCS-\350\276\223\351\200\201\347\272\277\345\257\271\346\216\245\345\215\217\350\256\256\350\257\264\346\230\216-V260202.docx"
index 5ca1c16..4f1ed57 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\350\256\276\345\244\207\345\215\217\350\256\256/\351\253\230\345\270\270\346\270\251\345\240\206\345\236\233\346\234\272\344\270\216\350\276\223\351\200\201\347\272\277/WCS-\350\276\223\351\200\201\347\272\277\345\257\271\346\216\245\345\215\217\350\256\256\350\257\264\346\230\216-V260202.docx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\350\256\276\345\244\207\345\215\217\350\256\256/\351\253\230\345\270\270\346\270\251\345\240\206\345\236\233\346\234\272\344\270\216\350\276\223\351\200\201\347\272\277/WCS-\350\276\223\351\200\201\347\272\277\345\257\271\346\216\245\345\215\217\350\256\256\350\257\264\346\230\216-V260202.docx"
Binary files differ

--
Gitblit v1.9.3