From a699ec37293462e17e1b1261bcda5325c1b4840b Mon Sep 17 00:00:00 2001
From: Admin <Admin@ADMIN>
Date: 星期五, 23 一月 2026 13:55:56 +0800
Subject: [PATCH] 优化wmsjob

---
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-wal |    0 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json                         |  116 +-----
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs                                       |   39 ++
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs                                  |    7 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs                                |    7 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db          |    0 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-shm      |    0 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/IService.cs                                        |    2 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WMSCruJob.cs                                         |  390 ++++------------------
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db     |    0 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-wal      |    0 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs                                     |   18 +
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs                                   |    1 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs                                |   20 +
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MESTaskService.cs                                    |   49 ++
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/Partial/SCExecutionBlock.cs                          |  189 +++++++++++
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-shm |    0 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json                                |  158 +++-----
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs                                     |    3 
 19 files changed, 464 insertions(+), 535 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db"
index 214c32e..ea99ff4 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-shm" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-shm"
index fd184cc..f2dd972 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-shm"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-shm"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-wal" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-wal"
index 9ab76e6..e811849 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-wal"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-wal"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db"
index 982bdc7..9e30996 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-shm" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-shm"
index b9ca43f..69dfd88 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-shm"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-shm"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-wal" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-wal"
index 4a4f661..6f009ad 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-wal"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-wal"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json"
index 1204094..3ebc1f5 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json"
@@ -3,36 +3,20 @@
   "WorkspaceRootPath": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\",
   "Documents": [
     {
-      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\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:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\mestaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\mestaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\wmscrujob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\wmscrujob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\wcstaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\wcstaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.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\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_core\\baseservices\\servicebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\baseservices\\servicebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\mestaskcontroller.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\\mestaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\partial\\scexecutionblock.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\partial\\scexecutionblock.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\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:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_model\\models\\taskinfo\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\taskinfo\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     }
   ],
   "DocumentGroupContainers": [
@@ -46,68 +30,29 @@
           "Children": [
             {
               "$type": "Document",
-              "DocumentIndex": 4,
-              "Title": "ServiceBase.cs",
-              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseServices\\ServiceBase.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Core\\BaseServices\\ServiceBase.cs",
-              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseServices\\ServiceBase.cs",
-              "RelativeToolTip": "WIDESEA_Core\\BaseServices\\ServiceBase.cs",
-              "ViewState": "AgIAABYCAAAAAAAAAAAkwCUCAAANAAAAAAAAAA==",
+              "DocumentIndex": 2,
+              "Title": "SCExecutionBlock.cs",
+              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\Partial\\SCExecutionBlock.cs",
+              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\Partial\\SCExecutionBlock.cs",
+              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\Partial\\SCExecutionBlock.cs",
+              "RelativeToolTip": "WIDESEA_TaskInfoService\\Partial\\SCExecutionBlock.cs",
+              "ViewState": "AgIAAEIAAAAAAAAAAADwv1MAAAAhAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-22T07:17:23.833Z",
+              "WhenOpened": "2026-01-23T03:23:03.598Z",
               "IsPinned": true,
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 0,
-              "Title": "TaskService.cs",
-              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
-              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\TaskService.cs",
-              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
-              "RelativeToolTip": "WIDESEA_TaskInfoService\\TaskService.cs",
-              "ViewState": "AgIAAGQCAAAAAAAAAADgv4oCAAC4AAAAAAAAAA==",
+              "Title": "MESTaskService.cs",
+              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\MESTaskService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\MESTaskService.cs",
+              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\MESTaskService.cs",
+              "RelativeToolTip": "WIDESEA_TaskInfoService\\MESTaskService.cs",
+              "ViewState": "AgIAAHAAAAAAAAAAAAAIwIsAAAAwAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-22T06:53:09.745Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 3,
-              "Title": "WCSTaskController.cs",
-              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
-              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvxwAAAAiAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-22T06:53:05.769Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 5,
-              "Title": "MesTaskController.cs",
-              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
-              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
-              "ViewState": "AgIAAAwAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-22T06:53:03.269Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 7,
-              "Title": "Dt_Task.cs",
-              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
-              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
-              "ViewState": "AgIAAHcAAAAAAAAAAAAqwJYAAAAmAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-22T06:36:14.643Z",
+              "WhenOpened": "2026-01-23T05:00:11.69Z",
               "EditorCaption": ""
             },
             {
@@ -118,35 +63,22 @@
               "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\WMSCruJob.cs",
               "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WMSCruJob.cs",
               "RelativeToolTip": "WIDESEA_TaskInfoService\\WMSCruJob.cs",
-              "ViewState": "AgIAABsBAAAAAAAAAAAtwDEBAABHAAAAAAAAAA==",
+              "ViewState": "AgIAACwAAAAAAAAAAAAowLsAAAARAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-22T06:23:38.441Z",
+              "WhenOpened": "2026-01-23T04:18:33.989Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 2,
-              "Title": "WCSTaskService.cs",
-              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs",
-              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\WCSTaskService.cs",
-              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs",
-              "RelativeToolTip": "WIDESEA_TaskInfoService\\WCSTaskService.cs",
-              "ViewState": "AgIAAAsAAAAAAAAAAAAcwCgAAABpAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-22T03:56:43.195Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 6,
+              "DocumentIndex": 3,
               "Title": "TaskController.cs",
               "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
               "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
               "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
-              "ViewState": "AgIAABIAAAAAAAAAAAAAABwAAAAjAAAAAAAAAA==",
+              "ViewState": "AgIAAAYAAAAAAAAAAAAAABAAAAAUAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-21T09:31:31.363Z",
+              "WhenOpened": "2026-01-23T03:12:18.887Z",
               "EditorCaption": ""
             }
           ]
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json"
index 14d066b..6abe4ae 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json"
@@ -3,6 +3,14 @@
   "WorkspaceRootPath": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\",
   "Documents": [
     {
+      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\partial\\scexecutionblock.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\partial\\scexecutionblock.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{CE0DB91F-5A68-448E-A419-4C26B5039F51}|WIDESEA_ITaskInfoService\\WIDESEA_ITaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\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:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\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,28 +19,12 @@
       "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\wmscrujob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\wcstaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\wcstaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.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\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_core\\baseservices\\servicebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\baseservices\\servicebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\mestaskcontroller.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\\mestaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\mestaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\mestaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\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:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_model\\models\\taskinfo\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\taskinfo\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     }
   ],
   "DocumentGroupContainers": [
@@ -42,111 +34,85 @@
       "DocumentGroups": [
         {
           "DockedWidth": 200,
-          "SelectedChildIndex": 1,
+          "SelectedChildIndex": 0,
           "Children": [
             {
               "$type": "Document",
-              "DocumentIndex": 4,
-              "Title": "ServiceBase.cs",
-              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseServices\\ServiceBase.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Core\\BaseServices\\ServiceBase.cs",
-              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseServices\\ServiceBase.cs",
-              "RelativeToolTip": "WIDESEA_Core\\BaseServices\\ServiceBase.cs",
-              "ViewState": "AgIAABYCAAAAAAAAAAAkwCUCAAANAAAAAAAAAA==",
+              "DocumentIndex": 0,
+              "Title": "SCExecutionBlock.cs",
+              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\Partial\\SCExecutionBlock.cs",
+              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\Partial\\SCExecutionBlock.cs",
+              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\Partial\\SCExecutionBlock.cs",
+              "RelativeToolTip": "WIDESEA_TaskInfoService\\Partial\\SCExecutionBlock.cs",
+              "ViewState": "AgIAAJAAAAAAAAAAAAAiwF8AAAAiAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-22T07:17:23.833Z",
+              "WhenOpened": "2026-01-23T03:23:03.598Z",
               "IsPinned": true,
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 0,
-              "Title": "TaskService.cs",
-              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
-              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\TaskService.cs",
-              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
-              "RelativeToolTip": "WIDESEA_TaskInfoService\\TaskService.cs",
-              "ViewState": "AgIAAFoCAAAAAAAAAAAAAIoCAAAuAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-22T06:53:09.745Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 3,
-              "Title": "WCSTaskController.cs",
-              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
-              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAADwvxwAAAAiAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-22T06:53:05.769Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 5,
-              "Title": "MesTaskController.cs",
-              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
-              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
-              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
-              "ViewState": "AgIAAAwAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-22T06:53:03.269Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 7,
-              "Title": "Dt_Task.cs",
-              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
-              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
-              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
-              "RelativeToolTip": "WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
-              "ViewState": "AgIAAHcAAAAAAAAAAAAqwJYAAAAmAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-22T06:36:14.643Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
               "DocumentIndex": 1,
-              "Title": "WMSCruJob.cs",
-              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WMSCruJob.cs",
-              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\WMSCruJob.cs",
-              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WMSCruJob.cs",
-              "RelativeToolTip": "WIDESEA_TaskInfoService\\WMSCruJob.cs",
-              "ViewState": "AgIAABsBAAAAAAAAAAAtwDEBAABHAAAAAAAAAA==",
+              "Title": "ITaskService.cs",
+              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_ITaskInfoService\\ITaskService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_ITaskInfoService\\ITaskService.cs",
+              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_ITaskInfoService\\ITaskService.cs",
+              "RelativeToolTip": "WIDESEA_ITaskInfoService\\ITaskService.cs",
+              "ViewState": "AgIAADUAAAAAAAAAAAAIwHQAAAAjAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-22T06:23:38.441Z",
+              "WhenOpened": "2026-01-23T05:14:10.683Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 2,
-              "Title": "WCSTaskService.cs",
-              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs",
-              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\WCSTaskService.cs",
-              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs",
-              "RelativeToolTip": "WIDESEA_TaskInfoService\\WCSTaskService.cs",
-              "ViewState": "AgIAAAsAAAAAAAAAAAAcwCgAAABpAAAAAAAAAA==",
+              "Title": "TaskService.cs",
+              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\TaskService.cs",
+              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
+              "RelativeToolTip": "WIDESEA_TaskInfoService\\TaskService.cs",
+              "ViewState": "AgIAAKACAAAAAAAAAAAAAL0CAAAPAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-22T03:56:43.195Z",
+              "WhenOpened": "2026-01-23T05:06:05.315Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 6,
+              "DocumentIndex": 4,
+              "Title": "MESTaskService.cs",
+              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\MESTaskService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\MESTaskService.cs",
+              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\MESTaskService.cs",
+              "RelativeToolTip": "WIDESEA_TaskInfoService\\MESTaskService.cs",
+              "ViewState": "AgIAAAsAAAAAAAAAAAAgwCEAAAAjAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-23T05:00:11.69Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 3,
+              "Title": "WMSCruJob.cs",
+              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WMSCruJob.cs",
+              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\WMSCruJob.cs",
+              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WMSCruJob.cs",
+              "RelativeToolTip": "WIDESEA_TaskInfoService\\WMSCruJob.cs",
+              "ViewState": "AgIAAGkAAAAAAAAAAAAgwHwAAABKAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-23T04:18:33.989Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 5,
               "Title": "TaskController.cs",
               "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
               "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
               "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
               "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
-              "ViewState": "AgIAABIAAAAAAAAAAAAAABwAAAAjAAAAAAAAAA==",
+              "ViewState": "AgIAAAYAAAAAAAAAAAAAABAAAAAUAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-21T09:31:31.363Z",
+              "WhenOpened": "2026-01-23T03:12:18.887Z",
               "EditorCaption": ""
             }
           ]
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs"
index 2398b4d..ecc8fb6 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs"
@@ -199,6 +199,11 @@
             return BaseDal.QueryData(x => x.RoadwayNo == roadway && x.LocationType == Locationtype && x.Row==row && x.Layer== Layer && x.Column== Column).FirstOrDefault();
         }
 
+        public Dt_LocationInfo? FindStorageLocation(string LocationCode)
+        {
+            return BaseDal.QueryData(x => x.LocationCode == LocationCode).FirstOrDefault();
+        }
+
 
         //鏌ユ壘鏂拌揣浣�
         public Dt_LocationInfo? GetLocation(string roadway, int Locationtype)
@@ -267,7 +272,7 @@
             }
         }
 
-        private int judgmentRow(string RoadwayNo, int locrow)
+        public int judgmentRow(string RoadwayNo, int locrow)
         {
             if (RoadwayNo == "1" || RoadwayNo == "3")
             {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs"
index b36b961..c22ec14 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs"
@@ -50,7 +50,6 @@
         /// <param name="entity"></param>
         /// <returns>褰卞搷琛屾暟</returns>
         int AddData(TEntity entity);
-        TEntity AddDataId(TEntity entity);
 
         bool AddData<TChild>(TEntity entity, Expression<Func<TEntity, List<TChild>>> expression) where TChild : class, new();
 
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs"
index e68a3c7..02c8e89 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs"
@@ -123,13 +123,6 @@
             IInsertable<TEntity> insert = _db.Insertable(entity);
             return insert.ExecuteReturnIdentity();
         }
-
-        public virtual TEntity AddDataId(TEntity entity)
-        {
-            IInsertable<TEntity> insert = _db.Insertable(entity);
-            return insert.ExecuteReturnEntity();
-        }
-
         public virtual bool AddData<TChild>(TEntity entity, Expression<Func<TEntity, List<TChild>>> expression) where TChild : class, new()
         {
             return _db.InsertNav(entity).Include(expression).ExecuteCommand();
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/IService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/IService.cs"
index a5cb22c..e6ae6f5 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/IService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/IService.cs"
@@ -28,6 +28,8 @@
         /// <returns></returns>
         WebResponseContent AddData(TEntity entity);
 
+
+
         /// <summary>
         /// 娣诲姞鏁版嵁
         /// </summary>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs"
index 6b3275f..6da1ea8 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs"
@@ -390,6 +390,9 @@
             }
         }
 
+
+
+
         /// <summary>
         /// 娣诲姞鏁版嵁
         /// </summary>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs"
index 3c4f9bc..58966f3 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs"
@@ -75,9 +75,25 @@
         /// <returns></returns>
         Dt_LocationInfo? ShallowGetLocation(string roadway, int Locationtype, int row, int Layer, int Column);
 
+        /// <summary>
+        /// 鏌ユ壘璐т綅
+        /// </summary>
+        /// <param name="LocationCode">璐т綅缂栧彿</param>
+        /// <returns></returns>
+        Dt_LocationInfo? FindStorageLocation(string LocationCode);
 
+        /// <summary>
+        /// 鍒ゆ柇琛�
+        /// </summary>
+        /// <param name="RoadwayNo">宸烽亾缂栧彿</param>
+        /// <param name="locrow">琛�</param>
+        /// <returns></returns>
+        int judgmentRow(string RoadwayNo, int locrow);
+
+        //鑾峰彇搴撲綅绔嬩綋鍥炬暟鎹�
+        #region 鑾峰彇搴撲綅绔嬩綋鍥炬暟鎹�
         WebResponseContent GetArea();
         WebResponseContent GetLocationStatus(int WarehouseId, string RoadwayNo);
-
+        #endregion
     }
-    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs"
index b52ac3a..c7bbfbe 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs"
@@ -98,5 +98,23 @@
         /// 浠诲姟寮傚父
         MES_parameter ToMES_TaskException(string TransNo, string EquipmentType, string EquipmentNumber, string ErrorInfo);
         #endregion
+
+
+        #region 浠诲姟闃熷垪锛岃幏鍙栦换鍔℃ā鍧�
+        //鑾峰彇浠诲姟闃熷垪
+        List<Dt_Task> GetaskQueue(string deviceId);
+
+        //鏍规嵁璁惧鑾峰彇鏄惁鏈夊湪鎵ц鐨勪换鍔�
+        bool CurrentTaskProgress(string deviceId);
+
+        //鑾峰彇杈撻�佺嚎闇�瑕佷笅鍙戠殑浠诲姟
+        List<Dt_Task> GetaskQueuePLC();
+
+        //鑾峰彇鏄惁鏈夌Щ搴撲换鍔�
+        Dt_Task GeRelocationTaskQueue(string LocationCode);
+
+        //鍒ゆ柇褰撳墠鍫嗗灈鏈烘槸鍚︽湁绉诲簱浠诲姟
+        bool RelocationTaskProgress(string deviceId);
+        #endregion
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MESTaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MESTaskService.cs"
index ddc2e8f..2c12e3e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MESTaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MESTaskService.cs"
@@ -23,6 +23,7 @@
 using WIDESEA_Core.Helper;
 using WIDESEA_DTO.Inbound;
 using WIDESEA_DTO.Task;
+using WIDESEA_ITaskInfoService;
 using WIDESEA_Model.Models;
 using static WIDESEA_ITaskInfoService.ITaskService;
 
@@ -30,6 +31,7 @@
 {
     public partial class TaskService
     {
+        public static List<string> InStationareaList = new List<string>() { "1113", "1114", "1115", "1116", "1117", "1118", "1119", "1120", "1121", "1122" };
         //鍏ュ簱锛岀┖鐩樺洖搴�
         public ApiResponse AddInStoreDoc(MES_InTask mES_In)
         {
@@ -108,20 +110,41 @@
                 task.Creater = "MES";
                 task.CreateDate = DateTime.Now;
 
-                /*Dt_StockInfo dt_StockInfo = new Dt_StockInfo();
-                dt_StockInfo.PalletCode = task.PalletCode;
-                dt_StockInfo.PalletType = task.PalletType;
-                dt_StockInfo.WarehouseId = task.WarehouseId;
-                dt_StockInfo.StockStatus = (int)StockStatusEmun.鍏ュ簱涓�;
-                dt_StockInfo.Creater = "MWS";
-                dt_StockInfo.CreateDate = DateTime.Now;*/
+                int taskid=BaseDal.AddData(task);
 
-                _unitOfWorkManage.BeginTran();
-                BaseDal.AddData(task);
-                //_stockInfoService.Repository.AddData(dt_StockInfo);
-                _unitOfWorkManage.CommitTran();
-                WriteLog.Write_Log("MES_鎺ユ敹鍏ュ簱浠诲姟涓嬪彂", $"鍙嶉淇℃伅", "鎴愬姛", $"浠诲姟娣诲姞鎴愬姛锛屾墭鐩樻潯鐮侊細{task.PalletCode}");
-                return apiResponse.OK();
+                //鍒涘缓浠诲姟鍚庯紝鍒ゆ柇鏄惁鏄骇绾垮洖搴撶殑浠诲姟
+                if (!InStationareaList.Contains(task.SourceAddress))
+                {
+                    WriteLog.Write_Log("MES_鎺ユ敹鍏ュ簱浠诲姟涓嬪彂", $"鍙嶉淇℃伅", "鎴愬姛", $"浠诲姟娣诲姞鎴愬姛锛屾墭鐩樻潯鐮侊細{task.PalletCode}");
+                    return apiResponse.OK();
+                }
+                else
+                {
+                    WCSginseng result = PLC_IssueTasks(
+                        task.TaskId,
+                        int.Parse(task.Roadway),
+                        task.TaskNum,
+                        task.PalletCode,
+                        int.Parse(task.PalletType),
+                        task.CurrentAddress,
+                        task.NextAddress,
+                        "");
+                    if (result.IsSuccess)
+                    {
+
+                        task.TaskStatus = (int)InTaskStatusEnum.PLC_InExecuting;
+                        string Result = MesInTaskStatusEnum.Start.GetDescription();
+                        BaseDal.UpdateData(task);
+                        //璋冨彇涓婃父绯荤粺鍙嶉寮�濮嬩换鍔�
+                        InStoreDocCallback(task.TaskNum, Result, "鎿嶄綔鎴愬姛", task.PalletCode, "");
+                        return apiResponse.OK();
+                    }
+                    else
+                    {
+                        BaseDal.DeleteData(task);
+                        return apiResponse.Error($"涓嬪彂浠诲姟澶辫触锛屼笅鍙慦CS澶辫触锛屽師鍥狅細{result.Message}");
+                    }
+                }
             }
             catch (Exception ex)
             {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/Partial/SCExecutionBlock.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/Partial/SCExecutionBlock.cs"
new file mode 100644
index 0000000..914a397
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/Partial/SCExecutionBlock.cs"
@@ -0,0 +1,189 @@
+锘縰sing MailKit.Search;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Logging;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Reflection.Metadata;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common.LocationEnum;
+using WIDESEA_Common.Log;
+using WIDESEA_Common.StockEnum;
+using WIDESEA_Common.TaskEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.Inbound;
+using WIDESEA_DTO.Task;
+using WIDESEA_Model.Models;
+using static WIDESEA_ITaskInfoService.ITaskService;
+
+namespace WIDESEA_TaskInfoService
+{
+    public partial class WMSCruJob
+    {
+        /// <summary>
+        /// 鍒ゆ柇宸烽亾鍐呯Щ搴�
+        /// </summary>
+        /// <param name="TaskNum"></param>
+        /// <param name="SourceAddress"></param>
+        /// <returns></returns>
+        public WebResponseContent JudgmentIsRelocations(Dt_Task dt_Task)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                string Locationcodeadd = dt_Task.TaskType == (int)TaskTypeEnum.Inbound ? dt_Task.NextAddress : dt_Task.CurrentAddress;
+                Dt_LocationInfo dt_Location = _locationInfoService.FindStorageLocation(Locationcodeadd);
+                if (dt_Location == null) { return content.Error("鏈兘鏌ユ壘鍒板簱浣�"); }
+                if (dt_Location.RoadwayNo == "5") return content.OK();    //娴呰揣浣嶇洿鎺ヨ繑鍥烇紝鍙笅鍙戝嚭鍏ュ彛浠诲姟
+                if(dt_Location.Depth == 1 && dt_Task.TaskType== (int)TaskTypeEnum.Outbound) return content.OK();
+
+                int locrow = _locationInfoService.judgmentRow(dt_Location.RoadwayNo, dt_Location.Row);
+                Dt_LocationInfo shallowLocation = _locationInfoService.ShallowGetLocation(dt_Location.RoadwayNo, dt_Location.LocationType, locrow, dt_Location.Layer, dt_Location.Column);
+                if (dt_Location.Depth == 1 && dt_Task.TaskType == (int)TaskTypeEnum.Inbound)
+                {
+                    if (shallowLocation.LocationStatus == (int)LocationStatusEnum.InStock) return content.OK();
+                    return content.Error();
+                }
+                if (shallowLocation.LocationStatus == (int)LocationStatusEnum.Free) return content.OK();
+
+                //鍒ゆ柇鏄惁鏈夌Щ搴撲换鍔�
+
+                var TransferTask = _taskService.GeRelocationTaskQueue(shallowLocation.LocationCode);
+                if (TransferTask != null)
+                {
+                    //杩涜涓嬪彂缁欏爢鍨涙満浠诲姟
+                    WCSginseng result = _taskService.SC_IssueTasks(TransferTask.TaskId,int.Parse(TransferTask.Roadway),TransferTask.TaskNum,TransferTask.PalletCode,int.Parse(TransferTask.PalletType),TransferTask.CurrentAddress,TransferTask.NextAddress,dt_Task.TargetAddress);
+                    if (result.IsSuccess)
+                    {
+                        TransferTask.TaskStatus = (int)RelocationTaskStatusEnum.RelocationExecuting;
+                        _taskService.UpdateData(TransferTask);
+                        return content.OK();
+                    }
+                    else
+                    {
+                        UpdateTaskStatus(dt_Task, result,
+                        successStatus: dt_Task.TaskStatus == (int)InTaskStatusEnum.PLC_InFinish ? (int)InTaskStatusEnum.SC_IntExecuting : (int)OutTaskStatusEnum.SC_OutExecuting, 1);
+
+                        WriteLog.Write_Log("WMS_鍒ゆ柇宸烽亾鍐呯Щ搴�", $"鍒ゆ柇绉诲簱", "澶辫触", $"鍘熷洜锛歿result.Message}");
+                        return content.Error();
+                    }
+                }
+
+                var CuttTransferTask = _taskService.RelocationTaskProgress(dt_Task.Roadway);
+                //鍒ゆ柇褰撳墠鏄惁鏈夌Щ搴撲换鍔�
+                if (CuttTransferTask != null) return content.Error();
+
+
+                if (shallowLocation.LocationStatus != (int)LocationStatusEnum.InStock) return content.Error();
+
+                //鐢熸垚绉诲簱浠诲姟
+                return content = GenerateTransferTask(shallowLocation.LocationCode);
+            }
+            catch (Exception ex)
+            {
+                WriteLog.Write_Log("WMS_鍒ゆ柇宸烽亾鍐呯Щ搴�", $"鍒ゆ柇绉诲簱", "澶辫触,鏂规硶鍐呮晠闅�", $"鍘熷洜锛歿ex.Message}");
+                return content.Error();
+
+            }
+        }
+
+
+        public WebResponseContent GenerateTransferTask(string shallowLocation)
+        {
+            WebResponseContent webResponse = new WebResponseContent();
+            try
+            {
+                Dt_LocationInfo OriginalLocation = _locationInfoService.Repository.QueryData(x => x.LocationCode == shallowLocation).FirstOrDefault();
+                Dt_StockInfo dt_StockInfo = _stockInfoService.Repository.QueryData(x => x.LocationCode == shallowLocation).FirstOrDefault();
+                Dt_LocationInfo newLocation = _locationInfoService.GetLocation(OriginalLocation.RoadwayNo, OriginalLocation.LocationType);
+                List<Dt_LocationInfo> dt_Locations = new List<Dt_LocationInfo>();
+
+                MES_parameter mES_Parame = _taskService.ApplicationChangeStorageLocation(dt_StockInfo.PalletCode, OriginalLocation.LocationCode, newLocation.LocationCode);
+                if (mES_Parame != null)
+                {
+                    if (mES_Parame.Result == "Y")
+                    {
+                        //杩涜鐢熸垚浠诲姟锛屼笅鍙戜换鍔¤嚦MES
+                        Dt_Task task = new Dt_Task();
+                        task.TaskNum = "0";
+                        task.PalletCode = dt_StockInfo.PalletCode;
+                        task.PalletType = dt_StockInfo.PalletType;
+                        task.Roadway = OriginalLocation.RoadwayNo;
+                        task.TaskType = (int)TaskTypeEnum.Relocation;
+                        task.TaskStatus = (int)RelocationTaskStatusEnum.RelocationNew;
+                        task.SourceAddress = OriginalLocation.LocationCode;
+                        task.TargetAddress = newLocation.LocationCode;
+                        task.CurrentAddress = OriginalLocation.LocationCode;
+                        task.NextAddress = newLocation.LocationCode;
+                        task.WarehouseId = OriginalLocation.WarehouseId;
+                        task.OrderNo = "";
+                        task.Grade = 1;
+                        task.Creater = "MES";
+                        task.CreateDate = DateTime.Now;
+
+                        OriginalLocation.LocationStatus = (int)LocationStatusEnum.Lock;
+                        newLocation.LocationStatus = (int)LocationStatusEnum.Lock;
+                        dt_StockInfo.StockStatus = (int)StockStatusEmun.绉诲簱閿佸畾;
+
+                        dt_Locations.Add(OriginalLocation);
+                        dt_Locations.Add(newLocation);
+
+                        _unitOfWorkManage.BeginTran();
+
+                        int TaskId = _taskService.Repository.AddData(task);
+                        _locationInfoService.UpdateData(dt_Locations);
+                        _stockInfoService.UpdateData(dt_StockInfo);
+                        _unitOfWorkManage.CommitTran();
+
+
+                        //return webResponse.Error("宸茬敓鎴愮Щ搴撲换鍔�");
+                        //杩涜涓嬪彂缁欏爢鍨涙満浠诲姟
+                        WCSginseng result = _taskService.SC_IssueTasks(
+                            TaskId,
+                            int.Parse(task.Roadway),
+                            task.TaskNum,
+                            task.PalletCode,
+                            int.Parse(task.PalletType),
+                            task.CurrentAddress,
+                            task.NextAddress,
+                            task.TargetAddress);
+                        if (result.IsSuccess)
+                        {
+                            task.TaskStatus = (int)RelocationTaskStatusEnum.RelocationExecuting;
+                            _taskService.UpdateData(task);
+                            return webResponse.OK();
+                        }
+                        else
+                        {
+                            WriteLog.Write_Log("WMS_鍒ゆ柇宸烽亾鍐呯Щ搴�", $"绉诲簱浠诲姟鐢熸垚鏂规硶", "涓嬪彂绉诲簱澶辫触", $"鍘熷洜锛歿result.Message}");
+
+                            return webResponse.Error();
+                        }
+                    }
+                    else
+                    {
+                        WriteLog.Write_Log("WMS_鍒ゆ柇宸烽亾鍐呯Щ搴�", $"绉诲簱浠诲姟鐢熸垚鏂规硶", "鐢宠MES绉诲簱", $"鐢宠鍌ㄤ綅寮傚姩锛孧ES涓嶅厑璁哥Щ鍔�");
+                        return webResponse.Error();
+                    }
+                }
+                else
+                {
+                    WriteLog.Write_Log("WMS_鍒ゆ柇宸烽亾鍐呯Щ搴�", $"绉诲簱浠诲姟鐢熸垚鏂规硶", "鐢宠MES绉诲簱,杩斿洖绌�", $"鐢宠鍌ㄤ綅寮傚姩锛孧ES杩斿洖涓虹┖");
+                    return webResponse.Error();
+                }
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();
+                WriteLog.Write_Log("WMS_鍒ゆ柇宸烽亾鍐呯Щ搴�", $"绉诲簱浠诲姟鐢熸垚鏂规硶", "绯荤粺鏁呴殰", $"鍘熷洜锛歿ex.Message}");
+                return webResponse.Error();
+            }
+        }
+
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
index 4408ee1..1059b9f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
@@ -96,7 +96,7 @@
 
         public WebResponseContent CESTEXT()
         {
-            WriteLog.Write_Log("鎺ユ敹MES鍏ュ簱浠诲姟涓嬪彂", $"浠诲姟鎺ユ敹鍙傛暟", "鎴愬姛", $"鍙傛暟锛�234jkljsldafjlasdf");
+
             return WebResponseContent.Instance.OK();
         }
 
@@ -668,5 +668,42 @@
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
+    
+        
+
+
+        //浠诲姟鑾峰彇
+        public List<Dt_Task> GetaskQueue(string deviceId)
+        {
+            return BaseDal.QueryData(x => x.Roadway == deviceId && (x.TaskStatus == (int)InTaskStatusEnum.PLC_InFinish || x.TaskStatus == (int)OutTaskStatusEnum.OutNew) && x.NumberSsuances==0);
+        }
+
+        //鑾峰彇褰撳墠鍫嗗灈鏈烘墽琛岀殑浠诲姟
+        public bool CurrentTaskProgress(string deviceId)
+        {
+           int taskcount=BaseDal.QueryData(x => x.Roadway == deviceId && (x.TaskStatus == (int)InTaskStatusEnum.SC_IntExecuting || x.TaskStatus == (int)OutTaskStatusEnum.SC_OutExecuting || x.TaskStatus == (int)RelocationTaskStatusEnum.RelocationExecuting)).Count();
+            if (taskcount == 0) return false;
+            return true;
+        }
+
+        //鑾峰彇鍫嗗灈鏈哄畬鎴愶紝涓嬪彂杈撻�佺嚎鐨勪换鍔�
+        public static List<string> OutSCList = new List<string>() { "1109", "1105", "1210", "1212", "1214" };
+        public List<Dt_Task> GetaskQueuePLC()
+        {
+            return BaseDal.QueryData(x => x.TaskStatus == (int)OutTaskStatusEnum.SC_OutFinish && OutSCList.Contains(x.CurrentAddress));
+        }
+
+        //鑾峰彇鏄惁鏈夌Щ搴撶殑浠诲姟
+        public Dt_Task GeRelocationTaskQueue(string LocationCode)
+        {
+            return BaseDal.QueryData(x => x.TaskStatus == (int)RelocationTaskStatusEnum.RelocationNew && x.CurrentAddress == LocationCode).FirstOrDefault();
+        }
+
+        public bool RelocationTaskProgress(string deviceId)
+        {
+            int taskcount = BaseDal.QueryData(x => x.Roadway == deviceId && x.TaskStatus == (int)RelocationTaskStatusEnum.RelocationExecuting).Count();
+            if (taskcount == 0) return false;
+            return true;
+        }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WMSCruJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WMSCruJob.cs"
index f186aaf..b75d4a9 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WMSCruJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WMSCruJob.cs"
@@ -40,6 +40,7 @@
     {
         private readonly ILogger<WMSCruJob> _logger;
         private Timer _timer;
+        private Timer _timer2;
         private readonly ITaskService _taskService;
         private readonly ILocationInfoService _locationInfoService;
         private readonly IStockInfoService _stockInfoService;
@@ -56,113 +57,74 @@
             _taskService=taskService;
         }
         private static readonly object _taskProcessLock = new object();
-        private const int TASK_PROCESS_TIMEOUT = 3000; // 3绉掕秴鏃�
+        private const int TASK_PROCESS_TIMEOUT = 2000; // 2绉掕秴鏃�
+
+        private static readonly object _taskProcessLockPLC = new object();
+        private const int TASK_PROCESS_TIMEOUTPLC = 3000; // 2绉掕秴鏃�
+
+        
+        private readonly Queue<int> _deviceQueueSC = new Queue<int>();
 
         public Task StartAsync(CancellationToken cancellationToken)
         {
-            _timer = new Timer(DoWorkWheel, null, TimeSpan.Zero, TimeSpan.FromSeconds(3));
+            // 鍒濆鍖栬澶囬槦鍒楋紙1-5锛�
+            for (int i = 1; i <= 5; i++)
+            {
+                _deviceQueueSC.Enqueue(i);
+            }
+
+            _timer = new Timer(SCProcessNextDevice, null, TimeSpan.Zero, TimeSpan.FromSeconds(2));
+            _timer2 = new Timer(PLCDoDeciceWork, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2));
             return Task.CompletedTask;
         }
 
-        public static List<string> InStationareaList = new List<string>() { "1113", "1114", "1115", "1116", "1117", "1118", "1119", "1120", "1121", "1122" };
-
-        private void DoWorkWheel(object state)
+        //鍫嗗灈鏈洪槦鍒�
+        private void SCProcessNextDevice(object state)
         {
-            if (!Monitor.TryEnter(_taskProcessLock, TASK_PROCESS_TIMEOUT))
-            {
-                return;
-            }
-
+            if (!Monitor.TryEnter(_taskProcessLock, TASK_PROCESS_TIMEOUT)) return;
             try
             {
-                // 瀹氫箟鐘舵�佸父閲忥紝閬垮厤榄旀硶鏁板瓧
-                const int PLC_IN_FINISH = (int)InTaskStatusEnum.PLC_InFinish;
-                const int PLC_IN_InNew = (int)InTaskStatusEnum.InNew;
-                const int OUT_NEW = (int)OutTaskStatusEnum.OutNew;
-                const int SC_OUT_FINISH = (int)OutTaskStatusEnum.SC_OutFinish;
-                const int SC_IN_EXECUTING = (int)InTaskStatusEnum.SC_IntExecuting;
-                const int SC_OUT_EXECUTING = (int)OutTaskStatusEnum.SC_OutExecuting;
-                const int RELOCATION_EXECUTING = (int)RelocationTaskStatusEnum.RelocationExecuting;
-                const int PLC_OUT_EXECUTING = (int)OutTaskStatusEnum.PLC_OutExecuting;
+                if (_deviceQueueSC.Count == 0)
+                    return;
 
-                // 鑾峰彇褰撳墠浠诲姟鏁版嵁
-                List<Dt_Task> allTasks = _taskService.Repository.QueryData();
+                int deviceId = _deviceQueueSC.Dequeue();
 
-                // 鑾峰彇宸烽亾瓒呰繃3涓换鍔$殑璺
-                HashSet<string> excludedRoadways = allTasks
-                    .Where(x => x.NumberSsuances > 3)
-                    .Select(x => x.Roadway)
-                    .Distinct()
-                    .ToHashSet();
-
-                // 杩囨护闇�瑕佸鐞嗙殑浠诲姟
-                List<Dt_Task> tasksToProcess = allTasks
-                    .Where(x =>
-                        (x.TaskStatus == PLC_IN_FINISH ||
-                         x.TaskStatus == OUT_NEW ||
-                         x.TaskStatus == SC_OUT_FINISH || (x.TaskStatus == PLC_IN_InNew && InStationareaList.Contains(x.SourceAddress))) &&
-                        !excludedRoadways.Contains(x.Roadway))
-                    .ToList();
-
-                // 鎸夌姸鎬佸垎缁勫鐞嗭紝鍑忓皯閲嶅鏌ヨ
-                ProcessInAndNewTasks(tasksToProcess, allTasks, excludedRoadways);   //涓嬪彂鍫嗗灈鏈�
-                ProcessOutFinishTasks(tasksToProcess, allTasks);    //涓嬪彂杈撻�佺嚎浠诲姟
-                ProcessInPalltask(tasksToProcess, allTasks);
-
-            }
-            catch (Exception ex)
-            {
-                Console.WriteLine($"浠诲姟澶勭悊寮傚父锛歿ex.Message}");
+                try
+                {
+                    SCDoDeviceWork(deviceId);
+                    _deviceQueueSC.Enqueue(deviceId);  
+                }
+                catch (Exception ex)
+                {
+                    _deviceQueueSC.Enqueue(deviceId);
+                    Console.WriteLine($"璁惧 {deviceId} 鎵ц澶辫触: {ex.Message}");
+                }
             }
             finally
             {
-                // 蹇呴』閲婃斁閿侊紝鍚﹀垯浼氬鑷存閿�
                 Monitor.Exit(_taskProcessLock);
             }
-
-
         }
 
-        private void ProcessInAndNewTasks(List<Dt_Task> tasksToProcess, List<Dt_Task> allTasks, HashSet<string> excludedRoadways)
+        //鎵ц鏂规硶
+        private void SCDoDeviceWork(int deviceId)
         {
             const int PLC_IN_FINISH = (int)InTaskStatusEnum.PLC_InFinish;
-            const int OUT_NEW = (int)OutTaskStatusEnum.OutNew;
             const int SC_IN_EXECUTING = (int)InTaskStatusEnum.SC_IntExecuting;
             const int SC_OUT_EXECUTING = (int)OutTaskStatusEnum.SC_OutExecuting;
-            const int RELOCATION_EXECUTING = (int)RelocationTaskStatusEnum.RelocationExecuting;
-            const int RELOCCATION_NEW = (int)RelocationTaskStatusEnum.RelocationNew;
-
-            var inAndNewTasks = tasksToProcess
-                .Where(x => x.TaskStatus == PLC_IN_FINISH || x.TaskStatus == OUT_NEW).OrderBy(x=>x.CreateDate)
-                .ToList();
-            if(inAndNewTasks.Count > 0)
+            try
             {
-                foreach (var task in inAndNewTasks)
+                //鍒ゆ柇褰撳墠鍫嗗灈鏈烘槸鍚︽湁鎵ц浠诲姟
+                if (_taskService.CurrentTaskProgress(deviceId.ToString())) return;
+                // 鑾峰彇褰撳墠鍫嗗灈鏈轰换鍔�
+                List<Dt_Task> taskList = _taskService.GetaskQueue(deviceId.ToString());
+                if (taskList.Count == 0) return;
+
+                foreach (Dt_Task task in taskList)
                 {
-                    // 妫�鏌ュ悓涓�宸烽亾鏄惁鏈夋鍦ㄦ墽琛岀殑浠诲姟
-                    bool hasExecutingTask = allTasks.Any(x =>
-                        x.TaskId != task.TaskId &&
-                        x.Roadway == task.Roadway &&
-                        (x.TaskStatus == SC_IN_EXECUTING ||
-                         x.TaskStatus == SC_OUT_EXECUTING ||
-                         x.TaskStatus == RELOCATION_EXECUTING));
-
-                    if (hasExecutingTask)
-                        continue;
-
-                    if (task.TaskStatus == OUT_NEW)
-                    {
-                        bool SCNewTasks = allTasks.Any(x => x.TaskStatus != OUT_NEW && x.TargetAddress == task.TargetAddress);
-                        if (SCNewTasks)
-                            continue;
-                    }
-
-                    //鍒ゆ柇鏄惁闇�瑕佺Щ搴�
                     WebResponseContent webResponse = JudgmentIsRelocations(task);
-                    if (!webResponse.Status) continue;
+                    if (!webResponse.Status) return;
 
-
-                    // 涓嬪彂鍫嗗灈鏈轰换鍔�
                     WCSginseng result = _taskService.SC_IssueTasks(
                         task.TaskId,
                         int.Parse(task.Roadway),
@@ -175,78 +137,43 @@
 
                     UpdateTaskStatus(task, result,
                         successStatus: task.TaskStatus == PLC_IN_FINISH ? SC_IN_EXECUTING : SC_OUT_EXECUTING, 1);
+                    return;
                 }
             }
-
-            
-        }
-
-        private void ProcessOutFinishTasks(List<Dt_Task> tasksToProcess, List<Dt_Task> allTasks)
-        {
-            const int SC_OUT_FINISH = (int)OutTaskStatusEnum.SC_OutFinish;
-            const int PLC_OUT_EXECUTING = (int)OutTaskStatusEnum.PLC_OutExecuting;
-
-            var outFinishTasks = tasksToProcess
-                .Where(x => x.TaskStatus == SC_OUT_FINISH)
-                .ToList();
-            if(outFinishTasks.Count > 0)
+            catch (Exception ex)
             {
-                foreach (var task in outFinishTasks)
-                {
-                    // 妫�鏌ュ悓涓�宸烽亾鏄惁鏈夊叾浠栧凡瀹屾垚鐨勪换鍔�
-                    bool hasOtherFinishTask = allTasks.Any(x =>
-                        x.Roadway == task.Roadway &&
-                        x.TaskStatus == SC_OUT_FINISH &&
-                        x.TaskId != task.TaskId);
-
-                    if (hasOtherFinishTask)
-                        continue;
-
-                    // 涓嬪彂PLC浠诲姟
-                    WCSginseng result = _taskService.PLC_IssueTasks(
-                        task.TaskId,
-                        int.Parse(task.Roadway),
-                        task.TaskNum,
-                        task.PalletCode,
-                        int.Parse(task.PalletType),
-                        task.CurrentAddress,
-                        task.NextAddress,
-                        "");
-
-                    UpdateTaskStatus(task, result, PLC_OUT_EXECUTING, 2);
-                }
+                Console.WriteLine($"浠诲姟澶勭悊寮傚父锛歿ex.Message}");
             }
-
-            
         }
 
-        private void ProcessInPalltask(List<Dt_Task> tasksToProcess, List<Dt_Task> allTasks)
+        private void PLCDoDeciceWork(object state)
         {
-            const int PLC_IN_InNew = (int)InTaskStatusEnum.InNew;
-            const int PLC_PLC_INEXECUTING = (int)InTaskStatusEnum.PLC_InExecuting;
-            var outFinishTasks = tasksToProcess
-                .Where(x => x.TaskStatus == PLC_IN_InNew && InStationareaList.Contains(x.SourceAddress))
-                .ToList();
-            if(outFinishTasks.Count > 0)
+            if (!Monitor.TryEnter(_taskProcessLockPLC, TASK_PROCESS_TIMEOUTPLC)) return;
+            try
             {
-                foreach (var task in outFinishTasks)
+                // 鑾峰彇褰撳墠浠诲姟鏁版嵁
+                List<Dt_Task> allTasks = _taskService.GetaskQueuePLC();
+                if (allTasks.Count == 0) return;
+                foreach (var task in allTasks)
                 {
                     // 涓嬪彂PLC浠诲姟
-                    WCSginseng result = _taskService.PLC_IssueTasks(
-                        task.TaskId,
-                        int.Parse(task.Roadway),
-                        task.TaskNum,
-                        task.PalletCode,
-                        int.Parse(task.PalletType),
-                        task.CurrentAddress,
-                        task.NextAddress,
-                        "");
-
-                    UpdateTaskStatus(task, result, PLC_PLC_INEXECUTING, 2);
+                    WCSginseng result = _taskService.PLC_IssueTasks(task.TaskId, int.Parse(task.Roadway), task.TaskNum, task.PalletCode, int.Parse(task.PalletType), task.CurrentAddress, task.NextAddress, "");
+                    UpdateTaskStatus(task, result, (int)OutTaskStatusEnum.PLC_OutExecuting, 2);
                 }
             }
+            catch (Exception ex)
+            {
+                Console.WriteLine($"鍫嗗灈鏈哄畬鎴愶紝涓嬪彂杈撻�佺嚎鎵ц浠诲姟澶辫触锛� 鍘熷洜: {ex.Message}");
+            }
+            finally
+            {
+                Monitor.Exit(_taskProcessLockPLC);
+            }
         }
+        
 
+        
+        //淇敼鐘舵��
         private void UpdateTaskStatus(Dt_Task task, WCSginseng result, int successStatus,int statype)
         {
             if (result.IsSuccess)
@@ -258,11 +185,6 @@
                     string Result = MesOutTaskStatusEnum.Start.GetDescription();
                     //璋冨彇涓婃父绯荤粺鍙嶉寮�濮嬩换鍔�
                     _taskService.OutStoreDocCallback(task.TaskNum,Result, "鎿嶄綔鎴愬姛");
-                }else if(task.TaskStatus == (int)InTaskStatusEnum.PLC_InExecuting)
-                {
-                    string Result = MesInTaskStatusEnum.Start.GetDescription();
-                    //璋冨彇涓婃父绯荤粺鍙嶉寮�濮嬩换鍔�
-                    _taskService.InStoreDocCallback(task.TaskNum, Result, "鎿嶄綔鎴愬姛",task.PalletCode,"");
                 }
             }
             else
@@ -275,6 +197,8 @@
         }
 
 
+        
+
         public Task StopAsync(CancellationToken cancellationToken)
         {
             _timer?.Dispose();
@@ -284,184 +208,6 @@
         public void Dispose()
         {
             throw new NotImplementedException();
-        }
-
-        /// <summary>
-        /// 鍒ゆ柇宸烽亾鍐呯Щ搴�
-        /// </summary>
-        /// <param name="TaskNum"></param>
-        /// <param name="SourceAddress"></param>
-        /// <returns></returns>
-        public WebResponseContent JudgmentIsRelocations(Dt_Task dt_Task)
-        {
-            const int PLC_IN_FINISH = (int)InTaskStatusEnum.PLC_InFinish;
-            const int SC_IN_EXECUTING = (int)InTaskStatusEnum.SC_IntExecuting;
-            const int SC_OUT_EXECUTING = (int)OutTaskStatusEnum.SC_OutExecuting;
-            WebResponseContent content = new WebResponseContent();
-            try
-            {
-                string Locationcodeadd = dt_Task.TaskType == (int)TaskTypeEnum.Inbound ? dt_Task.NextAddress:  dt_Task.CurrentAddress ;
-
-                Dt_LocationInfo dt_Location = _locationInfoService.Repository.QueryData(x => x.LocationCode == Locationcodeadd).FirstOrDefault();
-                if(dt_Location == null) { return content.Error("鏈兘鏌ユ壘鍒板簱浣�"); }
-                if (dt_Location.Depth == 1 || dt_Location.RoadwayNo == "5") return content.OK();
-                int locrow = judgmentRow(dt_Location.RoadwayNo, dt_Location.Row);
-                Dt_LocationInfo shallowLocation = _locationInfoService.Repository.QueryData(x => x.RoadwayNo == dt_Location.RoadwayNo && x.Row == locrow && x.Layer == dt_Location.Layer && x.Column == dt_Location.Column).FirstOrDefault();
-                if (shallowLocation.LocationStatus == (int)LocationStatusEnum.Free) return content.OK();
-                
-
-                //鍒ゆ柇鏄惁鏈夌Щ搴撲换鍔�
-                var TransferTask = _taskService.Repository.QueryData(x=>x.TaskStatus== (int)RelocationTaskStatusEnum.RelocationNew && x.CurrentAddress== shallowLocation.LocationCode).FirstOrDefault();
-                if(TransferTask != null)
-                {
-                    //杩涜涓嬪彂缁欏爢鍨涙満浠诲姟
-                    WCSginseng result = _taskService.SC_IssueTasks(
-                        TransferTask.TaskId,
-                        int.Parse(TransferTask.Roadway),
-                        TransferTask.TaskNum,
-                        TransferTask.PalletCode,
-                        int.Parse(TransferTask.PalletType),
-                        TransferTask.CurrentAddress,
-                        TransferTask.NextAddress,
-                        dt_Task.TargetAddress);
-                    if (result.IsSuccess)
-                    {
-                        TransferTask.TaskStatus = (int)RelocationTaskStatusEnum.RelocationExecuting;
-                        _taskService.UpdateData(TransferTask);
-                        return content.OK();
-                    }
-                    else
-                    {
-                        UpdateTaskStatus(dt_Task, result,
-                        successStatus: dt_Task.TaskStatus == PLC_IN_FINISH ? SC_IN_EXECUTING : SC_OUT_EXECUTING, 1);
-
-                        WriteLog.GetLog("鍒ゆ柇宸烽亾鍐呯Щ搴�").Write($"涓嬪彂鍫嗗灈鏈轰换鍔″け璐ワ紝鍘熷洜锛歿result.Message}", $"鐢熸垚绉诲簱浠诲姟:GenerateTransferTask");
-                        return content.Error();
-                    }
-                }
-
-                var CuttTransferTask = _taskService.Repository.QueryData(x => x.TaskStatus == (int)RelocationTaskStatusEnum.RelocationNew).FirstOrDefault();
-                //鍒ゆ柇褰撳墠鏄惁鏈夌Щ搴撲换鍔�
-                if (CuttTransferTask!=null) return content.Error();
-
-
-                if (shallowLocation.LocationStatus != (int)LocationStatusEnum.InStock) return content.Error();
-
-                //鐢熸垚绉诲簱浠诲姟锛岃繘琛屼笅鍙�
-                return content =GenerateTransferTask(shallowLocation.LocationCode);
-            }
-            catch (Exception ex)
-            {
-                WriteLog.GetLog("鍒ゆ柇宸烽亾鍐呯Щ搴�").Write($"鍒ゆ柇绉诲簱澶辫触锛屽師鍥狅細{ex.Message}", $"鍒ゆ柇宸烽亾鍐呯Щ搴撴柟娉�:JudgmentIsRelocations");
-                return content.Error();
-                
-            }
-        }
-        
-        private int judgmentRow(string RoadwayNo,int locrow)
-        {
-            if (RoadwayNo == "1" || RoadwayNo == "3")
-            {
-                return locrow == 1 ? 2 : 3;
-            }
-            else if (RoadwayNo == "2" || RoadwayNo == "4")
-            {
-                return locrow == 5 ? 6 : 7;
-            }
-            else
-            {
-                return 0;
-            }
-        }
-    
-        public WebResponseContent GenerateTransferTask(string shallowLocation)
-        {
-            WebResponseContent webResponse=new WebResponseContent();
-            try
-            {
-                Dt_LocationInfo OriginalLocation = _locationInfoService.Repository.QueryData(x => x.LocationCode == shallowLocation).FirstOrDefault();
-                Dt_StockInfo dt_StockInfo = _stockInfoService.Repository.QueryData(x => x.LocationCode == shallowLocation).FirstOrDefault();
-                Dt_LocationInfo newLocation = _locationInfoService.GetLocation(OriginalLocation.RoadwayNo, OriginalLocation.LocationType);
-                List<Dt_LocationInfo> dt_Locations = new List<Dt_LocationInfo>();
-
-                MES_parameter mES_Parame = _taskService.ApplicationChangeStorageLocation(dt_StockInfo.PalletCode, OriginalLocation.LocationCode, newLocation.LocationCode);
-                if (mES_Parame != null)
-                {
-                    if (mES_Parame.Result == "Y")
-                    {
-                        //杩涜鐢熸垚浠诲姟锛屼笅鍙戜换鍔¤嚦MES
-                        Dt_Task task = new Dt_Task();
-                        task.TaskNum = "0";
-                        task.PalletCode = dt_StockInfo.PalletCode;
-                        task.PalletType = dt_StockInfo.PalletType;
-                        task.Roadway = OriginalLocation.RoadwayNo;
-                        task.TaskType = (int)TaskTypeEnum.Relocation;
-                        task.TaskStatus = (int)RelocationTaskStatusEnum.RelocationNew;
-                        task.SourceAddress = OriginalLocation.LocationCode;
-                        task.TargetAddress = newLocation.LocationCode;
-                        task.CurrentAddress = OriginalLocation.LocationCode;
-                        task.NextAddress = newLocation.LocationCode;
-                        task.WarehouseId = OriginalLocation.WarehouseId;
-                        task.OrderNo = "";
-                        task.Grade = 1;
-                        task.Creater = "MES";
-                        task.CreateDate = DateTime.Now;
-
-                        OriginalLocation.LocationStatus = (int)LocationStatusEnum.Lock;
-                        newLocation.LocationStatus = (int)LocationStatusEnum.Lock;
-                        dt_StockInfo.StockStatus = (int)StockStatusEmun.绉诲簱閿佸畾;
-
-                        dt_Locations.Add(OriginalLocation);
-                        dt_Locations.Add(newLocation);
-
-                        _unitOfWorkManage.BeginTran();
-                        _taskService.AddData(task);
-                        _locationInfoService.UpdateData(dt_Locations);
-                        _stockInfoService.UpdateData(dt_StockInfo);
-                        _unitOfWorkManage.CommitTran();
-
-
-                        return webResponse.Error("宸茬敓鎴愮Щ搴撲换鍔�");
-                        //杩涜涓嬪彂缁欏爢鍨涙満浠诲姟
-                        /*WCSginseng result = _taskService.SC_IssueTasks(
-                            task.TaskId,
-                            int.Parse(task.Roadway),
-                            task.TaskNum,
-                            task.PalletCode,
-                            int.Parse(task.PalletType),
-                            task.CurrentAddress,
-                            task.NextAddress,
-                            task.TargetAddress);
-                        if (result.IsSuccess)
-                        {
-                            task.TaskStatus = (int)RelocationTaskStatusEnum.RelocationExecuting;
-                            _taskService.UpdateData(task);
-                            return webResponse.OK();
-                        }
-                        else
-                        {
-                            WriteLog.GetLog("鍒ゆ柇宸烽亾鍐呯Щ搴�").Write($"涓嬪彂鍫嗗灈鏈轰换鍔″け璐ワ紝鍘熷洜锛歿result.Message}", $"鐢熸垚绉诲簱浠诲姟:GenerateTransferTask");
-                            return webResponse.Error();
-                        }*/
-                    }
-                    else
-                    {
-                        WriteLog.GetLog("鍒ゆ柇宸烽亾鍐呯Щ搴�").Write($"鐢宠鍌ㄤ綅寮傚姩锛孧ES涓嶅厑璁哥Щ鍔�", $"鐢熸垚绉诲簱浠诲姟:GenerateTransferTask");
-                        return webResponse.Error();
-                    }
-                }
-                else
-                {
-                    WriteLog.GetLog("鍒ゆ柇宸烽亾鍐呯Щ搴�").Write($"鐢宠鍌ㄤ綅寮傚姩锛孧ES杩斿洖涓虹┖", $"鐢熸垚绉诲簱浠诲姟:GenerateTransferTask");
-                    return webResponse.Error();
-                }
-            }
-            catch (Exception ex)
-            {
-                _unitOfWorkManage.RollbackTran();
-                WriteLog.GetLog("鍒ゆ柇宸烽亾鍐呯Щ搴�").Write($"鐢熸垚绉诲簱浠诲姟澶辫触锛歿ex.Message}", $"鐢熸垚绉诲簱浠诲姟:GenerateTransferTask");
-                return webResponse.Error();
-            }
         }
     }
 }

--
Gitblit v1.9.3