From a99ceecce8c9a2521ac1fc167f4eff764cbdb123 Mon Sep 17 00:00:00 2001
From: 海波 张 <2956280567@qq.com>
Date: 星期一, 19 五月 2025 17:35:18 +0800
Subject: [PATCH] bug优化

---
 wms/LocationHelper.cs                                   |  217 +++++++++++++++++++++
 .vs/HH.WCS.ZhongCeJinTan/v17/DocumentLayout.backup.json |  120 ++++++-----
 .vs/HH.WCS.ZhongCeJinTan/v17/DocumentLayout.json        |  120 ++++++-----
 api/ApiModel.cs                                         |   10 
 process/TaskProcess.cs                                  |   87 ++++++--
 5 files changed, 426 insertions(+), 128 deletions(-)

diff --git a/.vs/HH.WCS.ZhongCeJinTan/v17/DocumentLayout.backup.json b/.vs/HH.WCS.ZhongCeJinTan/v17/DocumentLayout.backup.json
index 220dbc7..1316727 100644
--- a/.vs/HH.WCS.ZhongCeJinTan/v17/DocumentLayout.backup.json
+++ b/.vs/HH.WCS.ZhongCeJinTan/v17/DocumentLayout.backup.json
@@ -3,20 +3,40 @@
   "WorkspaceRootPath": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\",
   "Documents": [
     {
-      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\core\\taskcore.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:core\\taskcore.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\locationhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:wms\\locationhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\dispatch\\wcstask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:dispatch\\wcstask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\process\\taskprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:process\\taskprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\wmscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:api\\wmscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\process\\taskprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:process\\taskprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\dispatch\\wcstask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:dispatch\\wcstask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|c:\\users\\29562\\source\\repos\\hh-0129_zhongcejintan\\util\\dingtalk.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:util\\dingtalk.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\wmsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:wms\\wmsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\apimodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:api\\apimodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\wcsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:wms\\wcsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\core\\taskcore.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:core\\taskcore.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\taskhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -31,14 +51,6 @@
       "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\locationhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:wms\\locationhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\wmsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:wms\\wmsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
       "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\config\\config.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
       "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:config\\config.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
     },
@@ -49,14 +61,6 @@
     {
       "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\agvcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:api\\agvcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\apimodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:api\\apimodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\wcsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:wms\\wcsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     }
   ],
   "DocumentGroupContainers": [
@@ -66,7 +70,7 @@
       "DocumentGroups": [
         {
           "DockedWidth": 200,
-          "SelectedChildIndex": 12,
+          "SelectedChildIndex": 10,
           "Children": [
             {
               "$type": "Bookmark",
@@ -78,7 +82,20 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 6,
+              "DocumentIndex": 4,
+              "Title": "DingTalk.cs",
+              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\DingTalk.cs",
+              "RelativeDocumentMoniker": "util\\DingTalk.cs",
+              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\DingTalk.cs",
+              "RelativeToolTip": "util\\DingTalk.cs",
+              "ViewState": "AgIAAFQBAAAAAAAAAAAswGsBAAAPAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-05-19T06:20:50.133Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 11,
               "Title": "Program.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\Program.cs",
               "RelativeDocumentMoniker": "Program.cs",
@@ -91,32 +108,33 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 13,
+              "DocumentIndex": 7,
               "Title": "WcsModel.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\WcsModel.cs",
               "RelativeDocumentMoniker": "wms\\WcsModel.cs",
               "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\WcsModel.cs",
               "RelativeToolTip": "wms\\WcsModel.cs",
-              "ViewState": "AgIAAGcAAAAAAAAAAAAswHEAAAAVAAAAAAAAAA==",
+              "ViewState": "AgIAAFQAAAAAAAAAAAAQwFcAAAAVAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-05-14T06:24:55.849Z"
+              "WhenOpened": "2025-05-14T06:24:55.849Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 12,
+              "DocumentIndex": 6,
               "Title": "ApiModel.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\ApiModel.cs",
               "RelativeDocumentMoniker": "api\\ApiModel.cs",
               "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\ApiModel.cs",
               "RelativeToolTip": "api\\ApiModel.cs",
-              "ViewState": "AgIAAEIAAAAAAAAAAAA0wFkAAAAvAAAAAAAAAA==",
+              "ViewState": "AgIAAE0AAAAAAAAAAAA8wGEAAAAmAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-05-14T02:39:17.635Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 4,
+              "DocumentIndex": 9,
               "Title": "TaskHelper.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\TaskHelper.cs",
               "RelativeDocumentMoniker": "wms\\TaskHelper.cs",
@@ -129,7 +147,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 10,
+              "DocumentIndex": 13,
               "Title": "Monitor.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\core\\Monitor.cs",
               "RelativeDocumentMoniker": "core\\Monitor.cs",
@@ -142,7 +160,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 5,
+              "DocumentIndex": 10,
               "Title": "DeviceProcess.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\process\\DeviceProcess.cs",
               "RelativeDocumentMoniker": "process\\DeviceProcess.cs",
@@ -155,33 +173,33 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 1,
+              "DocumentIndex": 3,
               "Title": "WcsTask.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\dispatch\\WcsTask.cs",
               "RelativeDocumentMoniker": "dispatch\\WcsTask.cs",
               "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\dispatch\\WcsTask.cs",
               "RelativeToolTip": "dispatch\\WcsTask.cs",
-              "ViewState": "AgIAAKAAAAAAAAAAAAAYwJgAAAAbAAAAAAAAAA==",
+              "ViewState": "AgIAAI0CAAAAAAAAAAAswKICAABNAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-05-13T09:19:48.409Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 7,
+              "DocumentIndex": 0,
               "Title": "LocationHelper.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\LocationHelper.cs",
               "RelativeDocumentMoniker": "wms\\LocationHelper.cs",
-              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\LocationHelper.cs",
-              "RelativeToolTip": "wms\\LocationHelper.cs",
-              "ViewState": "AgIAAHECAAAAAAAAAAAYwIwCAAAVAAAAAAAAAA==",
+              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\LocationHelper.cs*",
+              "RelativeToolTip": "wms\\LocationHelper.cs*",
+              "ViewState": "AgIAADMCAAAAAAAAAAAQwEwCAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-05-13T09:13:15.283Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 11,
+              "DocumentIndex": 14,
               "Title": "AgvController.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\AgvController.cs",
               "RelativeDocumentMoniker": "api\\AgvController.cs",
@@ -194,7 +212,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 9,
+              "DocumentIndex": 12,
               "Title": "config.json",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\config\\config.json",
               "RelativeDocumentMoniker": "config\\config.json",
@@ -207,26 +225,26 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 0,
+              "DocumentIndex": 8,
               "Title": "TaskCore.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\core\\TaskCore.cs",
               "RelativeDocumentMoniker": "core\\TaskCore.cs",
-              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\core\\TaskCore.cs*",
-              "RelativeToolTip": "core\\TaskCore.cs*",
-              "ViewState": "AgIAADgAAAAAAAAAAAAAwFMAAAAtAAAAAAAAAA==",
+              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\core\\TaskCore.cs",
+              "RelativeToolTip": "core\\TaskCore.cs",
+              "ViewState": "AgIAAEEAAAAAAAAAAAAAwE4AAAAXAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-05-13T01:45:08.835Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 3,
+              "DocumentIndex": 1,
               "Title": "TaskProcess.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\process\\TaskProcess.cs",
               "RelativeDocumentMoniker": "process\\TaskProcess.cs",
-              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\process\\TaskProcess.cs",
-              "RelativeToolTip": "process\\TaskProcess.cs",
-              "ViewState": "AgIAAHgAAAAAAAAAAAAYwJEAAAAAAAAAAAAAAA==",
+              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\process\\TaskProcess.cs*",
+              "RelativeToolTip": "process\\TaskProcess.cs*",
+              "ViewState": "AgIAAAAGAAAAAAAAAAAswCIGAAA/AAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-05-13T00:45:23.095Z",
               "EditorCaption": ""
@@ -239,20 +257,20 @@
               "RelativeDocumentMoniker": "api\\WmsController.cs",
               "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\WmsController.cs",
               "RelativeToolTip": "api\\WmsController.cs",
-              "ViewState": "AgIAALkAAAAAAAAAAAAswMsAAAAkAAAAAAAAAA==",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAB8AAAAoAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-05-12T09:36:08.931Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 8,
+              "DocumentIndex": 5,
               "Title": "WMSModel.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\WMSModel.cs",
               "RelativeDocumentMoniker": "wms\\WMSModel.cs",
               "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\WMSModel.cs",
               "RelativeToolTip": "wms\\WMSModel.cs",
-              "ViewState": "AgIAAK0AAAAAAAAAAAAswLwAAAAHAAAAAAAAAA==",
+              "ViewState": "AgIAAE0CAAAAAAAAAAAQwGICAAARAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-05-12T09:36:05.064Z",
               "EditorCaption": ""
diff --git a/.vs/HH.WCS.ZhongCeJinTan/v17/DocumentLayout.json b/.vs/HH.WCS.ZhongCeJinTan/v17/DocumentLayout.json
index bb8a72c..bcf6bfa 100644
--- a/.vs/HH.WCS.ZhongCeJinTan/v17/DocumentLayout.json
+++ b/.vs/HH.WCS.ZhongCeJinTan/v17/DocumentLayout.json
@@ -3,20 +3,40 @@
   "WorkspaceRootPath": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\",
   "Documents": [
     {
-      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\core\\taskcore.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:core\\taskcore.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\process\\taskprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:process\\taskprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\dispatch\\wcstask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:dispatch\\wcstask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\locationhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:wms\\locationhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\wmscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:api\\wmscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\process\\taskprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:process\\taskprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\dispatch\\wcstask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:dispatch\\wcstask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|c:\\users\\29562\\source\\repos\\hh-0129_zhongcejintan\\util\\dingtalk.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:util\\dingtalk.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\wmsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:wms\\wmsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\apimodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:api\\apimodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\wcsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:wms\\wcsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\core\\taskcore.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:core\\taskcore.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\taskhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -31,14 +51,6 @@
       "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\locationhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:wms\\locationhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\wmsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:wms\\wmsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
       "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\config\\config.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
       "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:config\\config.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
     },
@@ -49,14 +61,6 @@
     {
       "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\agvcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:api\\agvcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\apimodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:api\\apimodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\wcsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{8E589C0D-7D65-474D-8CED-E34E081926A1}|HH.WCS.ZhongCeJinTan.csproj|solutionrelative:wms\\wcsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     }
   ],
   "DocumentGroupContainers": [
@@ -66,7 +70,7 @@
       "DocumentGroups": [
         {
           "DockedWidth": 200,
-          "SelectedChildIndex": 12,
+          "SelectedChildIndex": 14,
           "Children": [
             {
               "$type": "Bookmark",
@@ -78,7 +82,20 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 6,
+              "DocumentIndex": 4,
+              "Title": "DingTalk.cs",
+              "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\DingTalk.cs",
+              "RelativeDocumentMoniker": "util\\DingTalk.cs",
+              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\util\\DingTalk.cs",
+              "RelativeToolTip": "util\\DingTalk.cs",
+              "ViewState": "AgIAAFQBAAAAAAAAAAAswGsBAAAPAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-05-19T06:20:50.133Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 11,
               "Title": "Program.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\Program.cs",
               "RelativeDocumentMoniker": "Program.cs",
@@ -91,32 +108,33 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 13,
+              "DocumentIndex": 7,
               "Title": "WcsModel.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\WcsModel.cs",
               "RelativeDocumentMoniker": "wms\\WcsModel.cs",
               "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\WcsModel.cs",
               "RelativeToolTip": "wms\\WcsModel.cs",
-              "ViewState": "AgIAAGcAAAAAAAAAAAAswHEAAAAVAAAAAAAAAA==",
+              "ViewState": "AgIAAFQAAAAAAAAAAAAQwFcAAAAVAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-05-14T06:24:55.849Z"
+              "WhenOpened": "2025-05-14T06:24:55.849Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 12,
+              "DocumentIndex": 6,
               "Title": "ApiModel.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\ApiModel.cs",
               "RelativeDocumentMoniker": "api\\ApiModel.cs",
               "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\ApiModel.cs",
               "RelativeToolTip": "api\\ApiModel.cs",
-              "ViewState": "AgIAAEIAAAAAAAAAAAA0wFkAAAAvAAAAAAAAAA==",
+              "ViewState": "AgIAAE0AAAAAAAAAAAA8wGEAAAAmAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-05-14T02:39:17.635Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 4,
+              "DocumentIndex": 9,
               "Title": "TaskHelper.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\TaskHelper.cs",
               "RelativeDocumentMoniker": "wms\\TaskHelper.cs",
@@ -129,7 +147,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 10,
+              "DocumentIndex": 13,
               "Title": "Monitor.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\core\\Monitor.cs",
               "RelativeDocumentMoniker": "core\\Monitor.cs",
@@ -142,7 +160,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 5,
+              "DocumentIndex": 10,
               "Title": "DeviceProcess.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\process\\DeviceProcess.cs",
               "RelativeDocumentMoniker": "process\\DeviceProcess.cs",
@@ -155,33 +173,33 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 1,
+              "DocumentIndex": 3,
               "Title": "WcsTask.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\dispatch\\WcsTask.cs",
               "RelativeDocumentMoniker": "dispatch\\WcsTask.cs",
               "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\dispatch\\WcsTask.cs",
               "RelativeToolTip": "dispatch\\WcsTask.cs",
-              "ViewState": "AgIAAKAAAAAAAAAAAAAYwJgAAAAbAAAAAAAAAA==",
+              "ViewState": "AgIAAI0CAAAAAAAAAAAswKICAABNAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-05-13T09:19:48.409Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 7,
+              "DocumentIndex": 1,
               "Title": "LocationHelper.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\LocationHelper.cs",
               "RelativeDocumentMoniker": "wms\\LocationHelper.cs",
-              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\LocationHelper.cs",
-              "RelativeToolTip": "wms\\LocationHelper.cs",
-              "ViewState": "AgIAAHECAAAAAAAAAAAYwIwCAAAVAAAAAAAAAA==",
+              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\LocationHelper.cs*",
+              "RelativeToolTip": "wms\\LocationHelper.cs*",
+              "ViewState": "AgIAAFQDAAAAAAAAAAAQwGkDAAAuAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-05-13T09:13:15.283Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 11,
+              "DocumentIndex": 14,
               "Title": "AgvController.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\AgvController.cs",
               "RelativeDocumentMoniker": "api\\AgvController.cs",
@@ -194,7 +212,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 9,
+              "DocumentIndex": 12,
               "Title": "config.json",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\config\\config.json",
               "RelativeDocumentMoniker": "config\\config.json",
@@ -207,26 +225,26 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 0,
+              "DocumentIndex": 8,
               "Title": "TaskCore.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\core\\TaskCore.cs",
               "RelativeDocumentMoniker": "core\\TaskCore.cs",
-              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\core\\TaskCore.cs*",
-              "RelativeToolTip": "core\\TaskCore.cs*",
-              "ViewState": "AgIAADgAAAAAAAAAAAAAwFAAAAAfAAAAAAAAAA==",
+              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\core\\TaskCore.cs",
+              "RelativeToolTip": "core\\TaskCore.cs",
+              "ViewState": "AgIAAEEAAAAAAAAAAAAAwE4AAAAXAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-05-13T01:45:08.835Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 3,
+              "DocumentIndex": 0,
               "Title": "TaskProcess.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\process\\TaskProcess.cs",
               "RelativeDocumentMoniker": "process\\TaskProcess.cs",
-              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\process\\TaskProcess.cs",
-              "RelativeToolTip": "process\\TaskProcess.cs",
-              "ViewState": "AgIAAHgAAAAAAAAAAAAYwJEAAAAAAAAAAAAAAA==",
+              "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\process\\TaskProcess.cs*",
+              "RelativeToolTip": "process\\TaskProcess.cs*",
+              "ViewState": "AgIAAAYGAAAAAAAAAAAswCYGAABQAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-05-13T00:45:23.095Z",
               "EditorCaption": ""
@@ -239,20 +257,20 @@
               "RelativeDocumentMoniker": "api\\WmsController.cs",
               "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\api\\WmsController.cs",
               "RelativeToolTip": "api\\WmsController.cs",
-              "ViewState": "AgIAALkAAAAAAAAAAAAswMsAAAAkAAAAAAAAAA==",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAB8AAAAoAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-05-12T09:36:08.931Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 8,
+              "DocumentIndex": 5,
               "Title": "WMSModel.cs",
               "DocumentMoniker": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\WMSModel.cs",
               "RelativeDocumentMoniker": "wms\\WMSModel.cs",
               "ToolTip": "C:\\Users\\29562\\source\\repos\\HH-0129_ZhongCeJinTan\\wms\\WMSModel.cs",
               "RelativeToolTip": "wms\\WMSModel.cs",
-              "ViewState": "AgIAAK0AAAAAAAAAAAAswLwAAAAHAAAAAAAAAA==",
+              "ViewState": "AgIAAE0CAAAAAAAAAAAQwGICAAARAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-05-12T09:36:05.064Z",
               "EditorCaption": ""
diff --git a/api/ApiModel.cs b/api/ApiModel.cs
index bb25cbe..12187fe 100644
--- a/api/ApiModel.cs
+++ b/api/ApiModel.cs
@@ -92,7 +92,15 @@
             public string ext_data { get; set; }
         }
 
-
+        /// <summary>
+        /// 鎺ラ┏浣嶅潎琛¤褰�+        /// </summary>
+        public class connectionBalance
+        {
+            public int taskCount { get; set; }
+            public Location loc { get; set; }
+          
+        }
 
         /// <summary>
         /// osttoagv涓婃姤鍏跺畠浜嬩欢淇℃伅
diff --git a/process/TaskProcess.cs b/process/TaskProcess.cs
index d92c906..b89a122 100644
--- a/process/TaskProcess.cs
+++ b/process/TaskProcess.cs
@@ -289,7 +289,7 @@
                         foreach (var item in usableConnectionList.available)
                         {
                             var con = LocationHelper.GetLoc(item);
-                            if (con.S_CODE.Contains(task.S_END_LOC) && con.C_ENABLE=="Y")
+                            if (con.S_CODE.Contains(task.S_END_LOC))
                             {
 
                                 flag = false;
@@ -1308,14 +1308,16 @@
                         var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList);
                         if (usableConnectionList != null && usableConnectionList.code == "0")
                         {
-                            foreach (var item in usableConnectionList.available)
+                            //鏍规嵁鎺ラ┏浣嶄换鍔℃暟閲忚幏鍙栧潎琛℃帴椹充綅闆嗗悎浼樺厛浠诲姟鏁板皯鐨勬帴椹充綅
+                            var balanceConnectionList =  LocationHelper.GetBalanceConnectionList(usableConnectionList.available);
+                            foreach (var item in balanceConnectionList)
                             {
-                                var con = LocationHelper.GetLoc(item);
-                                if (con.N_CURRENT_NUM < 2 && con.C_ENABLE == "Y")
+                                if (item.loc.N_CURRENT_NUM<2)
                                 {
-                                    connection = con.S_CODE;
-                                    connectionArea = con.S_AREA_Name;
+                                    connection = item.loc.S_CODE;
+                                    connectionArea = item.loc.S_AREA_Name;
                                     LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂");
+                                    break;
                                 }
                             }
                         }
@@ -1385,10 +1387,10 @@
                     }
 
 
-                    LogHelper.Info($"ZCSendTask浠诲姟涓嬪彂缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂");
+                    LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂");
 
                     if (end == null) {
-                        LogHelper.Info($"ZCSendTask浠诲姟涓嬪彂澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ENDAREA},娌℃壘鍒扮粓鐐�, "Mes浠诲姟涓嬪彂");
+                        LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ENDAREA},娌℃壘鍒扮粓鐐�, "Mes浠诲姟涓嬪彂");
                         throw new Exception($"缁堢偣搴撳尯{workFlow.ENDAREA},娌℃壘鍒扮粓鐐�);
                     }
 
@@ -1547,6 +1549,19 @@
                         else {
                             //鏍规嵁鍒跺搧缂栧彿瀵绘壘绔嬪簱鍖哄搴旂墿鏂欐墭鐩�                             start = LocationHelper.FindStartcolByLoclistAndItem(strrtList, model.PROD_NO, workFlow.STARTAREA, workFlow.ROADWAY);
+                            if (start==null)
+                            {
+
+                                var itemFlag = LocationHelper.FindStartcolByLoclistAndItemFlag(strrtList, model.PROD_NO, workFlow.STARTAREA);
+                                LogHelper.Info($"ZCSendTask婊℃墭鍑哄簱浠诲姟娌℃壘鍒拌捣鐐癸紝鏍¢獙鏄惁鏈夊簱瀛樹絾鏄澶囨姤璀itemFlag}", "Mes浠诲姟涓嬪彂");
+                                if (itemFlag)
+                                {
+                                    result.errMsg = "婊℃墭鍑哄簱浣滀笟鏈夊簱瀛樹絾璁惧鎶ヨ";
+                                    result.errCode = 2001;
+                                    result.success = true;
+                                    return result;
+                                }
+                            }
                         }
 
 
@@ -1554,6 +1569,19 @@
                     else if (workFlow.FLOWCODE == "7") {
                         //瀵绘壘绔嬪簱鍖虹┖鎵�                         start = LocationHelper.FindStartcolByLoclistAndcntr(strrtList, workFlow.STARTAREA);
+                        if (start == null)
+                        {
+                            var itemFlag = LocationHelper.FindStartcolByLoclistAndcntrFlag(strrtList, workFlow.STARTAREA);
+                            LogHelper.Info($"ZCSendTask绌烘墭鍑哄簱浠诲姟娌℃壘鍒拌捣鐐癸紝鏍¢獙鏄惁鏈夊簱瀛樹絾鏄澶囨姤璀itemFlag}", "Mes浠诲姟涓嬪彂");
+
+                            if (itemFlag)
+                            {
+                                result.errMsg = "绌烘墭鍑哄簱浣滀笟鏈夊簱瀛樹絾璁惧鎶ヨ";
+                                result.errCode = 2001;
+                                result.success = true;
+                                return result;
+                            }
+                        }
                     }
 
 
@@ -1626,24 +1654,37 @@
 
                         //姝e紡浠g爜锛岃皟鐢ㄦ帴鍙e鎵惧彲鐢ㄦ帴椹充綅
                         var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION);
-                        var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList);
-                        if (usableConnectionList != null && usableConnectionList.code == "0")
+                        //var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList);
+                        //if (usableConnectionList != null && usableConnectionList.code == "0")
+                        //{
+                        //    foreach (var item in usableConnectionList.available)
+                        //    {
+                        //        var con = LocationHelper.GetLoc(item);
+                        //        if (con.C_ENABLE == "Y" && con.N_CURRENT_NUM < 2)
+                        //        {
+                        //            connection = con.S_CODE;
+                        //            connectionArea = con.S_AREA_Name;
+                        //            LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂");
+                        //        }
+                        //    }
+                        //}
+                        //else
+                        //{
+                        //    LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂");
+                        //    throw new Exception($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�);
+                        //}                
+
+                        //鏍规嵁鎺ラ┏浣嶄换鍔℃暟閲忚幏鍙栧潎琛℃帴椹充綅闆嗗悎浼樺厛浠诲姟鏁板皯鐨勬帴椹充綅
+                        var balanceConnectionList = LocationHelper.GetBalanceConnectionList(connectionList);
+                        foreach (var item in balanceConnectionList)
                         {
-                            foreach (var item in usableConnectionList.available)
+                            if (item.loc.N_CURRENT_NUM < 2)
                             {
-                                var con = LocationHelper.GetLoc(item);
-                                if (con.C_ENABLE == "Y" && con.N_CURRENT_NUM < 2)
-                                {
-                                    connection = con.S_CODE;
-                                    connectionArea = con.S_AREA_Name;
-                                    LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂");
-                                }
+                                connection = item.loc.S_CODE;
+                                connectionArea = item.loc.S_AREA_Name;
+                                LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂");
+                                break;
                             }
-                        }
-                        else
-                        {
-                            LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂");
-                            throw new Exception($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�);
                         }
 
                         if (connection == "")
diff --git a/wms/LocationHelper.cs b/wms/LocationHelper.cs
index 80debd3..85bafbe 100644
--- a/wms/LocationHelper.cs
+++ b/wms/LocationHelper.cs
@@ -1,6 +1,7 @@
 锘縰sing HH.WCS.ZhongCeJinTan;
 using HH.WCS.ZhongCeJinTan.util;
 using HH.WCS.ZhongCeJinTan.wms;
+using Microsoft.Owin;
 using Newtonsoft.Json;
 using System;
 using System.Collections.Generic;
@@ -9,6 +10,7 @@
 using System.Text;
 using System.Threading.Tasks;
 using Top.Api;
+using static HH.WCS.ZhongCeJinTan.api.ApiModel;
 using static HH.WCS.ZhongCeJinTan.util.Settings;
 using static HH.WCS.ZhongCeJinTan.wms.WcsModel;
 
@@ -96,6 +98,31 @@
             }
             return result;
         }
+
+        /// <summary>
+        /// 杩斿洖鍧囪 鐨勬帴椹充綅闆嗗悎
+        /// </summary>
+        internal static List<connectionBalance> GetBalanceConnectionList(List<string> locList)
+        {
+            var db = new SqlHelper<object>().GetInstance();
+          
+            List<connectionBalance> result = new List<connectionBalance>();
+
+            foreach (var item in locList)
+            {
+                var ConnectionList = 0;
+                ConnectionList = db.Queryable<WMSTask>().Where(a => (a.S_END_LOC.Contains(item) || a.S_START_LOC.Contains(item)) && a.S_B_STATE != "瀹屾垚" && a.S_B_STATE != "鍙栨秷" && a.S_B_STATE != "閿欒").ToList().Count();
+                var re = new connectionBalance();
+                var con = LocationHelper.GetLoc(item);
+                re.loc = con;
+                re.taskCount = ConnectionList;
+                result.Add(re);
+            }
+            return result.OrderBy(a => a.taskCount).ToList();
+        }
+
+
+        
 
         /// <summary>
         /// 鎵剧粓鐐瑰贩閬撳彲鐢ㄧ┖璐т綅
@@ -201,6 +228,97 @@
 
         }
 
+
+        /// <summary>
+        /// 鎵剧粓鐐瑰贩閬撳彲鐢ㄧ┖璐т綅 鍧囪 
+        /// </summary>
+        /// <param name="locations"></param>
+        /// <returns></returns>
+        internal static Location FindBalanceEndcolByLocList(List<Location> locations, string endArea, string rodway = "")
+        {
+            try
+            {
+                var db = new SqlHelper<object>().GetInstance();
+                Location end = null;
+                //鏍规嵁缁堢偣璐т綅鎵剧┖闂茶揣浣�+                var rows = locations.Select(a => a.N_ROW).Distinct().ToList();
+
+                //浣滀笟娴佺▼鐨勫贩閬�+                var xd = new List<string>();
+
+                List<RoadWayEnable> rowdwa = null;
+
+                if (!string.IsNullOrEmpty(rodway))
+                {
+                    xd = rodway.Split('-').ToList();
+                    rowdwa = db.Queryable<RoadWayEnable>().Where(x => x.areaCode == endArea && x.status == "0" && xd.Contains(x.roadWay)).ToList();
+                }
+                else
+                {
+                    //鏌ユ壘鍙敤宸烽亾
+                    rowdwa = db.Queryable<RoadWayEnable>().Where(x => x.areaCode == endArea && x.status == "0").ToList();
+                }
+
+
+
+
+                for (int i = 0; i < rows.Count; i++)
+                {
+                    var rowList = locations.Where(r => r.N_ROW == rows[i]).ToList();
+
+                    var flag = false;
+                    var flag1 = false;
+
+                    foreach (var item in rowdwa)
+                    {
+                        if (rowList.Count(a => a.N_ROADWAY.ToString() == item.roadWay) > 0)
+                        {
+                            flag = true;
+                            break;
+                        }
+
+
+                    }
+
+                    foreach (var item1 in xd)
+                    {
+                        if (rowList.Count(a => a.N_ROADWAY.ToString() != item1) > 0)
+                        {
+                            flag1 = true;
+                            break;
+                        }
+                    }
+
+                    if (flag1 || flag)
+                    {
+                       locations.RemoveAll(a => a.N_ROW == rows[i]);
+                    }
+
+                    if (rowList.Count(a => a.N_CURRENT_NUM == 0) == 0)
+                    {
+                        locations.RemoveAll(a => a.N_ROW == rows[i]);
+                    }
+                }
+
+
+
+                foreach (var item in locations)
+                {
+                    if (item.S_LOCK_STATE=="鏃� && item.N_CURRENT_NUM==0)
+                    {
+                        end = item;
+                        break;
+                    }
+                }
+                return end;
+            }
+            catch (Exception)
+            {
+
+                throw;
+            }
+
+        }
 
         /// <summary>
         /// 鎵剧粓鐐瑰彲鐢ㄧ┖璐т綅鎺掗櫎涓嶅彲鐢ㄥ贩閬�@@ -390,7 +508,7 @@
                 Location start = null;
                 var rowsStart = locations.Select(a => a.N_ROW).Distinct().ToList();
 
-                //鏌ユ壘鍙敤宸烽亾
+                //鏌ユ壘涓嶅彲鐢ㄥ贩閬�                 var rowdwa = db.Queryable<RoadWayEnable>().Where(x => x.areaCode == startArea && x.status == "0").ToList();
 
                 for (int i = 0; i < rowsStart.Count; i++)
@@ -448,6 +566,50 @@
                 throw;
             }
         }
+
+
+        /// <summary>
+        /// 鏍规嵁璧风偣绔嬪簱鍖烘壘绌烘墭 鏍¢獙搴撳瓨
+        /// </summary>
+        /// <param name="locations"></param>
+        /// <returns></returns>
+        internal static bool FindStartcolByLoclistAndcntrFlag(List<Location> locations, string startArea)
+        {
+            var db = new SqlHelper<object>().GetInstance();
+            try
+            {
+                var start = false;
+                var rowsStart = locations.Select(a => a.N_ROW).Distinct().ToList();
+
+  
+                foreach (var item in locations)
+                {
+                    if (item.N_CURRENT_NUM == 0)
+                    {
+                        continue;
+                    }
+                    var tp = db.Queryable<LocCntrRel>().Where(s => s.S_LOC_CODE == item.S_CODE).First();
+
+                    if (tp != null && item.S_LOCK_STATE == "鏃�)
+                    {
+                        var tp1 = db.Queryable<Container>().Where(s => s.S_CODE == tp.S_CNTR_CODE).First();
+
+                        if (tp1 != null && tp1.N_DETAIL_COUNT == 0)
+                        {
+                            return true;
+                        }
+                    }
+                }
+                return start;
+
+            }
+            catch (Exception)
+            {
+
+                throw;
+            }
+        }
+
 
         /// <summary>
         /// 鏍规嵁璧风偣璐ф灦鍖烘壘绌烘墭
@@ -689,9 +851,60 @@
 
                 throw;
             }
-
         }
 
+
+        /// <summary>
+        /// 鏍规嵁鐗╂枡缂栫爜鎵剧珛搴撳尯璧风偣婊¤揣浣�鏍¢獙鏈夊簱瀛樹絾鏄澶囨姤璀�+        /// </summary>
+        /// <param name="locations"></param>
+        /// <returns></returns>
+        internal static bool FindStartcolByLoclistAndItemFlag(List<Location> locations, string itemCode, string endArea)
+        {
+            var db = new SqlHelper<object>().GetInstance();
+            var res = false;
+            try
+            {
+       
+                var rowsStart = locations.Select(a => a.N_ROW).Distinct().ToList();
+
+                DateTime date = DateTime.Now;
+                List<CntrItemRel> startList = new List<CntrItemRel>(); ;
+
+                foreach (var item in locations)
+                {
+                    if (item.N_CURRENT_NUM == 0)
+                    {
+                        continue;
+                    }
+
+                    var tp = db.Queryable<LocCntrRel>().Where(s => s.S_LOC_CODE == item.S_CODE).First();
+
+                   // LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂璧风偣璐т綅瀹瑰櫒淇℃伅" + JsonConvert.SerializeObject(tp), "Mes浠诲姟涓嬪彂");
+                    if (tp != null && item.S_LOCK_STATE == "鏃�)
+                    {
+                        var tp1 = db.Queryable<CntrItemRel>().Where(s => s.S_CNTR_CODE == tp.S_CNTR_CODE).First();
+                        //LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂璧风偣瀹瑰櫒鐗╂枡淇℃伅" + JsonConvert.SerializeObject(tp1), "Mes浠诲姟涓嬪彂");
+
+                        if (tp1 != null && tp1.S_ITEM_CODE == itemCode && tp1.S_ITEM_STATE == "鍚堟牸" && tp1.takeEffectTime < date && tp1.expireTime > date)
+                        {
+                            res = true;
+                            return res;
+                        }
+                    }
+                }
+
+            
+                return res;
+            }
+            catch (Exception)
+            {
+
+                throw;
+            }
+        }
+
+
         /// <summary>
         /// 鏍规嵁鐗╂枡缂栫爜鎵捐揣鏋跺尯璧风偣婊¤揣浣�         /// </summary>

--
Gitblit v1.9.1