From d5fe80c5cb7dc0b209d8fea9faa84c7ca5b20324 Mon Sep 17 00:00:00 2001
From: Admin <Admin@ADMIN>
Date: 星期五, 16 一月 2026 16:07:18 +0800
Subject: [PATCH] 出入库移库完成

---
 项目代码/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                         |  120 +-----
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs                                       |  236 ++++++++---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs                                  |   46 +
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs                                     |    8 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs                     |    9 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskStatusEnum.cs                                    |   44 ++
 项目资料/蓝图文件/鹰美智能工厂立体库项目软件系统蓝图 V6.0.docm                                                                   |    0 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs                                  |   10 
 项目代码/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_WMSServer/Program.cs                                                 |    6 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WMSCruJob.cs                                         |  365 +++++++++++++++++++
 /dev/null                                                                                               |   28 -
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json                                           |   10 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db     |    0 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs                        |   34 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-wal      |    0 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/WCSTaskController.cs                  |    2 
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MESTaskService.cs                                    |   67 ++-
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-shm |    0 
 项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json                                |  114 +----
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Task/WCSTaskDTO.cs                                               |    5 
 23 files changed, 759 insertions(+), 345 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 5b1a90c..aedb6c0 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 90f4c6d..54914d4 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 caa109d..f571c20 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 a8af0f7..f255e55 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 d43aee1..dc23ab7 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 e315a68..e137977 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 3aff31d..74b86a6 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\\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\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{CE0DB91F-5A68-448E-A419-4C26B5039F51}|WIDESEA_ITaskInfoService\\WIDESEA_ITaskInfoService.csproj|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:{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\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.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_dto\\task\\wcstask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\task\\wcstask.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:{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\\partialtaskservice_outbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\partialtaskservice_outbound.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:{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}"
     }
   ],
   "DocumentGroupContainers": [
@@ -47,106 +31,52 @@
             {
               "$type": "Document",
               "DocumentIndex": 0,
-              "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": "AgIAAKsAAAAAAAAAAAAIwLkAAABvAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-15T04:46:32.724Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 1,
               "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": "AgIAAFoAAAAAAAAAAAA1wGkAAAAxAAAAAAAAAA==",
+              "ViewState": "AgIAACsAAAAAAAAAAAAUwEQAAAAuAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-15T03:43:08.208Z",
+              "WhenOpened": "2026-01-15T09:34:50.06Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 2,
-              "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": "AgIAAC0AAAAAAAAAAAAIwEAAAAAiAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-15T03:41:47.98Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 5,
+              "DocumentIndex": 1,
               "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": "AgIAABMAAAAAAAAAAAAewDQAAAAaAAAAAAAAAA==",
+              "ViewState": "AgIAABcAAAAAAAAAAAAmwDQAAAAnAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-15T03:33:32.644Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 6,
-              "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": "AgIAAAYAAAAAAAAAAAAawCQAAAAJAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-15T03:33:19.137Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 4,
-              "Title": "WCStask.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_DTO\\Task\\WCStask.cs",
-              "RelativeDocumentMoniker": "WIDESEA_DTO\\Task\\WCStask.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_DTO\\Task\\WCStask.cs",
-              "RelativeToolTip": "WIDESEA_DTO\\Task\\WCStask.cs",
-              "ViewState": "AgIAAAYAAAAAAAAAAADwvxUAAAAXAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-15T03:30:03.161Z",
+              "WhenOpened": "2026-01-15T09:33:49.567Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 3,
-              "Title": "appsettings.json",
-              "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\\appsettings.json",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\appsettings.json",
-              "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\\appsettings.json",
-              "RelativeToolTip": "WIDESEA_WMSServer\\appsettings.json",
-              "ViewState": "AgIAAAYAAAAAAAAAAADwvx0AAABBAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
-              "WhenOpened": "2026-01-15T03:14:10.484Z",
-              "EditorCaption": ""
+              "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": "AgIAAIEAAAAAAAAAAAAQwAAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-01-15T08:12:36.935Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 7,
-              "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": "AgIAAAYAAAAAAAAAAAAAAB0AAAAJAAAAAAAAAA==",
+              "DocumentIndex": 2,
+              "Title": "PartialTaskService_Outbound.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\\PartialTaskService_Outbound.cs",
+              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\PartialTaskService_Outbound.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\\PartialTaskService_Outbound.cs",
+              "RelativeToolTip": "WIDESEA_TaskInfoService\\PartialTaskService_Outbound.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-15T03:03:40.066Z",
-              "EditorCaption": ""
+              "WhenOpened": "2026-01-15T08:12:32.509Z"
             }
           ]
         }
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 e405a35..119d679 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,36 +3,24 @@
   "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\\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\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{CE0DB91F-5A68-448E-A419-4C26B5039F51}|WIDESEA_ITaskInfoService\\WIDESEA_ITaskInfoService.csproj|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:{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\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
-      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.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_dto\\task\\wcstask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\task\\wcstask.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:{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\\partialtaskservice_outbound.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\partialtaskservice_outbound.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:{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}"
     }
   ],
   "DocumentGroupContainers": [
@@ -47,14 +35,14 @@
             {
               "$type": "Document",
               "DocumentIndex": 0,
-              "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": "AgIAAK4AAAAAAAAAAAAIwLoAAACWAAAAAAAAAA==",
+              "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": "AgIAACIAAAAAAAAAAAAmwCQAAABAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-15T04:46:32.724Z",
+              "WhenOpened": "2026-01-16T02:59:40.766Z",
               "EditorCaption": ""
             },
             {
@@ -65,87 +53,47 @@
               "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": "AgIAAFoAAAAAAAAAAAA1wGkAAAAxAAAAAAAAAA==",
+              "ViewState": "AgIAAC4AAAAAAAAAAAAUwDgAAAAIAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-15T03:43:08.208Z",
+              "WhenOpened": "2026-01-15T09:34:50.06Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 2,
-              "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": "AgIAAC0AAAAAAAAAAAAIwEAAAAAiAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-15T03:41:47.98Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 5,
               "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": "AgIAABMAAAAAAAAAAAAewDQAAAAaAAAAAAAAAA==",
+              "ViewState": "AgIAACAAAAAAAAAAAAAmwDQAAAAaAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-15T03:33:32.644Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 6,
-              "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": "AgIAAAYAAAAAAAAAAAAawCQAAAAJAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-15T03:33:19.137Z",
+              "WhenOpened": "2026-01-15T09:33:49.567Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 4,
-              "Title": "WCStask.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_DTO\\Task\\WCStask.cs",
-              "RelativeDocumentMoniker": "WIDESEA_DTO\\Task\\WCStask.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_DTO\\Task\\WCStask.cs",
-              "RelativeToolTip": "WIDESEA_DTO\\Task\\WCStask.cs",
-              "ViewState": "AgIAAAYAAAAAAAAAAADwvxUAAAAXAAAAAAAAAA==",
+              "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": "AgIAAIEAAAAAAAAAAAAQwAAAAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-15T03:30:03.161Z",
-              "EditorCaption": ""
+              "WhenOpened": "2026-01-15T08:12:36.935Z"
             },
             {
               "$type": "Document",
               "DocumentIndex": 3,
-              "Title": "appsettings.json",
-              "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\\appsettings.json",
-              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\appsettings.json",
-              "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\\appsettings.json",
-              "RelativeToolTip": "WIDESEA_WMSServer\\appsettings.json",
-              "ViewState": "AgIAAAYAAAAAAAAAAADwvx0AAABBAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
-              "WhenOpened": "2026-01-15T03:14:10.484Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 7,
-              "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": "AgIAAAYAAAAAAAAAAAAAAB0AAAAJAAAAAAAAAA==",
+              "Title": "PartialTaskService_Outbound.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\\PartialTaskService_Outbound.cs",
+              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\PartialTaskService_Outbound.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\\PartialTaskService_Outbound.cs",
+              "RelativeToolTip": "WIDESEA_TaskInfoService\\PartialTaskService_Outbound.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-01-15T03:03:40.066Z",
+              "WhenOpened": "2026-01-15T08:12:32.509Z",
               "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 abe2c87..ba0f151 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"
@@ -1,4 +1,5 @@
 锘縰sing HslCommunication.WebSocket;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
 using SqlSugar;
@@ -10,6 +11,7 @@
 using WIDESEA_Common.CommonEnum;
 using WIDESEA_Common.LocationEnum;
 using WIDESEA_Common.StockEnum;
+using WIDESEA_Common.WareHouseEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
@@ -156,24 +158,40 @@
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
-    
-        
+
+
         public string AccessingTunnel(int WarehouseId, int LocationType)
         {
             List<Dt_LocationInfo> locationData = BaseDal.QueryData(x => x.WarehouseId == WarehouseId);
-            var roadwayGroups = locationData
-                .Where(x => x.LocationType == LocationType)
-                .GroupBy(x => x.RoadwayNo)
-                .Select(g => new
-                {
-                    RoadwayNo = g.Key,
-                    LocationCount = g.Count(),
-                    AllLocations = g.ToList()
-                })
-                .OrderByDescending(g => g.LocationCount)  // 鏀逛负闄嶅簭鎺掑簭
-                .FirstOrDefault();  // 鍙栫涓�涓紙鏁伴噺鏈�澶氱殑锛�
+            var roadwayGroups = locationData.Where(x => x.LocationType == LocationType).GroupBy(x => x.RoadwayNo)
+            .Select(g => new
+            {
+                RoadwayNo = g.Key,
+                LocationCount = g.Count(),
+            }).OrderByDescending(g => g.LocationCount).ToList();
 
-            return roadwayGroups.RoadwayNo;
+            int minRequired = 15;
+            if(WarehouseId== (int)WarehouseEnum.YMYL)
+            {
+                if (LocationType == 2) minRequired = 6;
+
+                var selectedRoadway = roadwayGroups.FirstOrDefault(g => g.LocationCount >= minRequired);
+                return selectedRoadway.RoadwayNo;
+            }
+            else
+            {
+                var selectedRoadway = roadwayGroups.FirstOrDefault(g => g.LocationCount >= minRequired);
+                if(selectedRoadway != null)
+                {
+                    return selectedRoadway.RoadwayNo;
+
+                }
+                else
+                {
+                    selectedRoadway = roadwayGroups.FirstOrDefault(g => g.RoadwayNo =="5" && g.LocationCount != 0);
+                }
+                return selectedRoadway.RoadwayNo;
+            }
         }
 
 
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs"
index 3e7c7f8..6aa372a 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Common/StockEnum/StockStatusEmun.cs"
@@ -40,4 +40,14 @@
         [Description("绌烘墭")]
         绌烘墭 = 3,
     }
+
+    public enum OperateType
+    {
+        浜哄伐鍒犻櫎 = 1,
+        鑷姩鍒犻櫎 = 2,
+        浜哄伐鎭㈠ = 3,
+        鑷姩鎭㈠ = 4,
+        浜哄伐瀹屾垚 = 5,
+        鑷姩瀹屾垚 = 6,
+    }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskStatusEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskStatusEnum.cs"
index 08711e7..ccd3f72 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskStatusEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskStatusEnum.cs"
@@ -1,7 +1,9 @@
 锘縰sing System;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.ComponentModel.DataAnnotations;
 using System.Linq;
+using System.Reflection;
 using System.Text;
 using System.Threading.Tasks;
 
@@ -41,7 +43,7 @@
         /// <summary>
         /// 鍫嗗灈鏈哄叆搴撳畬鎴�
         /// </summary>
-        [Description("鍫嗗灈鏈哄嚭搴撳畬鎴�")]
+        [Description("鍫嗗灈鏈哄叆搴撳畬鎴�")]
         SC_OutFinish = 245,
 
         /// <summary>
@@ -147,4 +149,44 @@
     }
     #endregion
 
+    public enum MesOutTaskStatusEnum
+    {
+        /// <summary>
+        /// 鍑哄簱寮�濮�
+        /// </summary>
+        [Display(Name = "Start")]
+        鍑哄簱寮�濮� = 1,
+
+        [Display(Name = "Outstore")]
+        鍑哄簱瀹屾垚 = 2, 
+
+        [Display(Name = "Finish")]
+        鍒拌揪鐩殑鍦� = 3, 
+
+        [Display(Name = "Error")]
+        鎵ц澶辫触 = 4
+    }
+    public enum MesInTaskStatusEnum
+    {
+        /// <summary>
+        /// 鍏ュ簱寮�濮�
+        /// </summary>
+        [Display(Name = "Start")]
+        鍏ュ簱寮�濮� = 1,
+
+        [Display(Name = "Finish")]
+        鍏ュ簱瀹屾垚 = 2,
+
+        [Display(Name = "Error")]
+        鎵ц澶辫触 = 3
+    }
+    public static class EnumExtensions
+    {
+        public static string GetDescription(this Enum value)
+        {
+            var field = value.GetType().GetField(value.ToString());
+            var attribute = field?.GetCustomAttribute<DescriptionAttribute>();
+            return attribute?.Description ?? value.ToString();
+        }
+    }
 }
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Task/WCSTaskDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Task/WCSTaskDTO.cs"
index 9c6037c..58713a5 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Task/WCSTaskDTO.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Task/WCSTaskDTO.cs"
@@ -24,6 +24,11 @@
         public string PalletCode { get; set; }
 
         /// <summary>
+        /// 鎵樼洏绫诲瀷锛�1甯冨嵎 2鏉惧竷鍗凤紙鎴愬搧浠撳彧鏈�1锛夛級
+        /// </summary>
+        public int ContainerType { get; set; }
+
+        /// <summary>
         /// wcs涓婃姤绫诲瀷(1-杈撻�佺嚎锛�2-鍫嗗灈鏈�)
         /// </summary>
         public int TaskType { get; set; }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs"
index cb7817f..e5c4308 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs"
@@ -142,5 +142,13 @@
         [ExporterHeader(DisplayName = "澶囨敞")]
         [SugarColumn(IsNullable = true, Length = 255, ColumnDescription = "澶囨敞")]
         public string Remark { get; set; }
+
+        /// <summary>
+        /// 涓嬪彂娆℃暟
+        /// </summary>
+        [ImporterHeader(Name = "涓嬪彂娆℃暟")]
+        [ExporterHeader(DisplayName = "涓嬪彂娆℃暟")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "涓嬪彂娆℃暟")]
+        public int NumberSsuances { get; set; }
     }
 }
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 f19a9d6..712c319 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"
@@ -45,28 +45,41 @@
                 if (string.IsNullOrWhiteSpace(mES_In.endPosition)) return apiResponse.Error("鐩爣浣嶇疆涓嶈兘涓虹┖");
                 if (string.IsNullOrWhiteSpace(mES_In.containerType)) return apiResponse.Error("杞藉叿绫诲瀷涓嶈兘涓虹┖");  //杞藉叿绫诲瀷锛屽竷鏂�-1锛屾澗甯冨嵎-2锛屾垚鍝�-1
 
-                Dt_Warehouse dt_Warehouse = _warehouseService.QueryWarehouse(mES_In.warehouseNo);
-                if (dt_Warehouse == null) return apiResponse.Error($"WMS鏈兘鏌ヨ閬撳搴斾粨搴擄紝浠撳簱缂栫爜锛歿mES_In.warehouseNo}");
-                int LocationType = 1;
-                if (dt_Warehouse.WarehouseType == (int)WarehouseEnum.YMYL)
-                {
-                    if (mES_In.containerType == "2") LocationType = 2;
-                }
-                else if (dt_Warehouse.WarehouseType == (int)WarehouseEnum.YMCP)
-                {
-                    LocationType = 3;
-                }
-
-                string Roadway = _locationInfoService.AccessingTunnel(dt_Warehouse.WarehouseId, LocationType);
-                if (Roadway == "") return apiResponse.Error($"WMS鏈兘鏌ヨ閬撳搴斿贩閬撶紪鍙凤紝浠撳簱缂栫爜锛歿mES_In.warehouseNo}");
-
-                //鑾峰彇瀵瑰簲PLC绔欏彴淇℃伅
-                Dt_roadwayinfo _Roadwayinfo = _roadWayinfoService.QbtainPlatform(Roadway);
-
                 Dt_Task setask = BaseDal.QueryData(x => x.PalletCode == mES_In.containerNo).FirstOrDefault();
                 if (setask != null) return apiResponse.Error($"WMS宸叉湁褰撳墠浠诲姟锛屼笉鍙噸澶嶄笅鍙戯紝鎵樼洏缂栧彿锛歿mES_In.containerNo}");
 
+                Dt_Warehouse dt_Warehouse = _warehouseService.QueryWarehouse(mES_In.warehouseNo);
+                int LocationType = 1;
+                string Roadway = "0";
 
+                string SourceAddress = mES_In.startPosition;
+                string TargetAddress = "";
+                string CurrentAddress = mES_In.startPosition;
+                string NextAddress = "";
+                int WarehouseId = 0;
+
+                if (dt_Warehouse != null)
+                {
+                    if (dt_Warehouse.WarehouseType == (int)WarehouseEnum.YMYL)
+                    {
+                        if (mES_In.containerType == "2") LocationType = 2;
+                    }
+                    else if (dt_Warehouse.WarehouseType == (int)WarehouseEnum.YMCP)
+                    {
+                        LocationType = 3;
+                    }
+                    Roadway = _locationInfoService.AccessingTunnel(dt_Warehouse.WarehouseId, LocationType);
+                    if (Roadway == "0") return apiResponse.Error($"WMS鏈兘鏌ヨ閬撳搴斿贩閬撶紪鍙凤紝浠撳簱缂栫爜锛歿mES_In.warehouseNo}");
+                    //鑾峰彇瀵瑰簲PLC绔欏彴淇℃伅
+                    Dt_roadwayinfo _Roadwayinfo = _roadWayinfoService.QbtainPlatform(Roadway);
+                    NextAddress = _Roadwayinfo.InStationCode;
+                    WarehouseId = dt_Warehouse.WarehouseId;
+                }
+                else
+                {
+                    TargetAddress = mES_In.endPosition;
+                    NextAddress = mES_In.endPosition;
+                }
                 Dt_Task task = new Dt_Task();
                 task.TaskNum = mES_In.transNo;
                 task.PalletCode = mES_In.containerNo;
@@ -74,27 +87,27 @@
                 task.Roadway = Roadway;
                 task.TaskType = (int)TaskTypeEnum.Inbound;
                 task.TaskStatus = (int)InTaskStatusEnum.InNew;
-                task.SourceAddress = mES_In.startPosition;
-                task.TargetAddress = "";
-                task.CurrentAddress = mES_In.startPosition;
-                task.NextAddress = _Roadwayinfo.InStationCode;
-                task.WarehouseId = dt_Warehouse.WarehouseId;
+                task.SourceAddress = SourceAddress;
+                task.TargetAddress = TargetAddress;
+                task.CurrentAddress = CurrentAddress;
+                task.NextAddress = NextAddress;
+                task.WarehouseId = WarehouseId;
                 task.OrderNo = mES_In.transDate.ToString();
                 task.Grade = 1;
                 task.Creater = "MES";
                 task.CreateDate = DateTime.Now;
 
-                Dt_StockInfo dt_StockInfo = new Dt_StockInfo();
+                /*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;
+                dt_StockInfo.CreateDate = DateTime.Now;*/
 
                 _unitOfWorkManage.BeginTran();
                 BaseDal.AddData(task);
-                _stockInfoService.Repository.AddData(dt_StockInfo);
+                //_stockInfoService.Repository.AddData(dt_StockInfo);
                 _unitOfWorkManage.CommitTran();
                 WriteLog.GetLog("鎺ユ敹MES鍏ュ簱浠诲姟涓嬪彂").Write($"鍙傛暟锛歿mES_In.containerNo}", $"鍏ュ簱浠诲姟娣诲姞鎴愬姛");
                 return apiResponse.OK();
@@ -300,6 +313,7 @@
                 mesInResult.ContainerNo = ContainerNo;
                 mesInResult.LocationCode = LocationCode;
                 mES_Parame = HttpHelper.Post<MES_parameter>(MES_InReporttask, mesInResult, "鍏ュ簱浠诲姟姹囨姤");
+                WriteLog.GetLog("鍏ュ簱浠诲姟鍙嶉鎺ュ彛").Write($"璁㈠崟缂栧彿锛歿TransNo}锛屾墽琛岀粨鏋滐細{Result}锛屾墽琛岀粨鏋滄弿杩帮細{ResultMsg}锛屾墭鐩樻潯鐮侊細{ContainerNo}锛屽簱浣嶇紪鍙凤細{LocationCode}锛屾帴鏀跺埌鐨勫洖鍙傦細{mesInResult.ToJson()}", $"浠诲姟涓婃姤淇℃伅");
                 return mES_Parame;
             }
             catch (Exception ex)
@@ -321,6 +335,7 @@
                 mesInResult.Result = Result;
                 mesInResult.ResultMsg = ResultMsg;
                 mES_Parame = HttpHelper.Post<MES_parameter>(MES_OutReporttask, mesInResult, "鍑哄簱浠诲姟姹囨姤");
+                WriteLog.GetLog("鍑哄簱浠诲姟鍙嶉鎺ュ彛").Write($"璁㈠崟缂栧彿锛歿TransNo}锛屾墽琛岀粨鏋滐細{Result}锛屾墽琛岀粨鏋滄弿杩帮細{ResultMsg}锛屾帴鏀跺埌鐨勫洖鍙傦細{mesInResult.ToJson()}", $"浠诲姟涓婃姤淇℃伅");
                 return mES_Parame;
             }
             catch (Exception ex)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs"
index 7a0dbe1..452afd2 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs"
@@ -1,6 +1,7 @@
 锘縰sing MailKit.Search;
 using Microsoft.Extensions.Logging;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
+using Org.BouncyCastle.Math.EC;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -22,6 +23,7 @@
 {
     public partial class TaskService
     {
+        //WCS鑾峰彇浠诲姟杩涜鍙嶉
         public WebResponseContent PalletInboundTask(WCSTaskDTO wCSTask)
         {
             WebResponseContent webResponse = new WebResponseContent();
@@ -32,26 +34,26 @@
                     return WebResponseContent.Instance.Error($"鏈壘鍒颁换鍔′俊鎭紝鎵樼洏鏉$爜锛歿wCSTask.PalletCode}");
                 if (task.TaskStatus == (int)InTaskStatusEnum.InNew)
                 {
-                    //杩涜璋冨彇杈撻�佺嚎涓嬪彂浠诲姟
-                    WCSginseng WCS_Parame = PLC_IssueTasks(task.TaskId,int.Parse(task.Roadway),task.TaskNum,task.PalletCode, int.Parse(task.PalletType), wCSTask.FromPoint,task.NextAddress,"");
-                    if (WCS_Parame.IsSuccess)
+                    task.TaskStatus = (int)InTaskStatusEnum.PLC_InExecuting;
+                    MES_parameter mES_Parameter = InStoreDocCallback(task.TaskNum, "Start", "鎿嶄綔鎴愬姛", task.PalletCode, "");
+                    if (mES_Parameter.Result == "Y")
                     {
-                        task.TaskStatus = (int)InTaskStatusEnum.PLC_InExecuting;
-                        MES_parameter mES_Parameter = InStoreDocCallback(task.TaskNum, "Start","鎿嶄綔鎴愬姛",task.PalletCode,"");
-                        if (mES_Parameter.Result == "Y")
-                        {
-                            //杩涜淇敼鏁版嵁搴�
-                            BaseDal.UpdateData(task);
-                            return webResponse.OK("涓嬪彂杈撻�佺嚎浠诲姟鎴愬姛");
-                        }
-                        else
-                        {
-                            return webResponse.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg);
-                        }
+                        WCStask wcstaskinfo = new WCStask();
+                        wcstaskinfo.TaskId = task.TaskId;
+                        wcstaskinfo.AreaNo = int.Parse(task.Roadway);
+                        wcstaskinfo.TransNo = task.TaskNum;
+                        wcstaskinfo.ContainerNo = task.PalletCode;
+                        wcstaskinfo.ContainerType = int.Parse(task.PalletType);
+                        wcstaskinfo.FromPoint = wCSTask.FromPoint;
+                        wcstaskinfo.ToPoint = task.NextAddress;
+                        wcstaskinfo.ToStation = "";
+                        //杩涜淇敼鏁版嵁搴�
+                        BaseDal.UpdateData(task);
+                        return webResponse.OK(data: task.ToJson());
                     }
                     else
                     {
-                        return webResponse.Error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛屽師鍥狅細" + WCS_Parame.Message);
+                        return webResponse.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg);
                     }
                 }
                 else
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs"
deleted file mode 100644
index 1b2f7b2..0000000
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs"
+++ /dev/null
@@ -1,28 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Core.Enums;
-using WIDESEA_Core;
-using WIDESEA_DTO.Stock;
-using WIDESEA_Model.Models;
-using WIDESEA_Core.Helper;
-using Microsoft.AspNetCore.Http;
-using System.Reflection.Metadata;
-using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
-using System.Diagnostics;
-using Newtonsoft.Json;
-using System.Security.Policy;
-using static WIDESEA_ITaskInfoService.ITaskService;
-using MailKit.Search;
-using WIDESEA_Common.Log;
-using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
-
-namespace WIDESEA_TaskInfoService
-{
-    public partial class TaskService
-    {
-
-    }
-}
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 c48f46f..2e16a0f 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"
@@ -16,9 +16,14 @@
 #endregion << 鐗� 鏈� 娉� 閲� >>
 
 using AutoMapper;
+using Microsoft.Extensions.Logging;
+using Org.BouncyCastle.Math.EC;
 using SqlSugar;
+using System.ComponentModel;
 using System.Net;
 using System.Reflection;
+using System.Reflection.Emit;
+using System.Threading.Tasks;
 using WIDESEA_Common.LocationEnum;
 using WIDESEA_Common.OtherEnum;
 using WIDESEA_Common.StockEnum;
@@ -26,6 +31,7 @@
 using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
 using WIDESEA_Core.Helper;
 using WIDESEA_DTO.Inbound;
 using WIDESEA_DTO.Task;
@@ -41,13 +47,14 @@
 {
     public partial class TaskService : ServiceBase<Dt_Task, IRepository<Dt_Task>>, ITaskService
     {
+        private readonly ILogger<TaskService> _logger;
         private readonly IMapper _mapper;
         private readonly IUnitOfWorkManage _unitOfWorkManage;
         private readonly IStockInfoService _stockInfoService;
         private readonly ILocationInfoService _locationInfoService;
         private readonly IWarehouseService _warehouseService;
         private readonly IRoadWayinfoService _roadWayinfoService;
-
+        private Timer _timer;
         public IRepository<Dt_Task> Repository => BaseDal;
 
         private Dictionary<string, OrderByType> _taskOrderBy = new()
@@ -60,9 +67,10 @@
 
         public List<int> TaskOutboundTypes => typeof(TaskTypeEnum).GetEnumIndexList();
 
-        public TaskService(IRepository<Dt_Task> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockInfoService stockInfoService, ILocationInfoService locationInfoService,
+        public TaskService(ILogger<TaskService> logger, IRepository<Dt_Task> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockInfoService stockInfoService, ILocationInfoService locationInfoService,
             IWarehouseService warehouseService, IRoadWayinfoService roadWayinfoService) : base(BaseDal)
         {
+            _logger = logger;
             _mapper = mapper;
             _unitOfWorkManage = unitOfWorkManage;
             _stockInfoService = stockInfoService;
@@ -118,99 +126,181 @@
         private WebResponseContent HandleInboundTask(Dt_Task task, int wcsTaskType)
         {
             WebResponseContent content = new WebResponseContent();
-            switch (wcsTaskType)
+            try
             {
-                case 1:
-                    task.TaskStatus = (int)InTaskStatusEnum.PLC_InFinish;
-                    int loctype = 0;
-                    if (task.Roadway == "1" || task.Roadway == "2")
-                    {
-                        if(task.PalletType=="1") loctype = (int)LocationTypeEnum.SmallPallet;
-                        else if(task.PalletType=="2") loctype = (int)LocationTypeEnum.MediumPallet;
-                    }
-                    else
-                    {
-                         loctype = (int)LocationTypeEnum.LargePallet;
-                    }
-                    //鏌ユ壘璐т綅锛屾洿鏂颁换鍔�
-                    Dt_LocationInfo dt_Location=_locationInfoService.GetLocation(task.Roadway, loctype);
-                    Dt_LocationInfo ShallowCargoHold = _locationInfoService.ShallowGetLocation(dt_Location.RoadwayNo, dt_Location.LocationType, dt_Location.Row, dt_Location.Layer, dt_Location.Column);
-                    if(ShallowCargoHold==null) return content.Error($"鏈壘鍒拌璐т綅淇℃伅,璐т綅缂栧彿:{dt_Location.LocationCode}鐨勬祬璐т綅");
-                    if(ShallowCargoHold.LocationStatus != (int)LocationStatusEnum.Free) return content.Error($"浠诲姟鍙凤細{task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode},鏌ユ壘鐨勮揣浣嶆祬璐т綅鏈夎揣锛岃揣浣嶇紪鍙凤細{ShallowCargoHold.LocationCode}");
+                switch (wcsTaskType)
+                {
+                    case 1:
+                        
+                        if(task.TargetAddress == "")
+                        {
+                            int loctype = 0;
+                            if (task.Roadway == "1" || task.Roadway == "2")
+                            {
+                                if (task.PalletType == "1") loctype = (int)LocationTypeEnum.SmallPallet;
+                                else if (task.PalletType == "2") loctype = (int)LocationTypeEnum.MediumPallet;
+                            }
+                            else
+                            {
+                                loctype = (int)LocationTypeEnum.LargePallet;
+                            }
 
-                    task.TargetAddress = dt_Location.LocationCode;
-                    task.CurrentAddress = task.NextAddress;
-                    task.NextAddress= dt_Location.LocationCode;
-                    task.TaskStatus = (int)InTaskStatusEnum.PLC_InFinish;
-                    dt_Location.LocationStatus = (int)LocationStatusEnum.Lock;
+                            //鏌ユ壘璐т綅锛屾洿鏂颁换鍔�
+                            Dt_LocationInfo dt_Location = _locationInfoService.GetLocation(task.Roadway, loctype);
+                            Dt_LocationInfo ShallowCargoHold = _locationInfoService.ShallowGetLocation(dt_Location.RoadwayNo, dt_Location.LocationType, dt_Location.Row, dt_Location.Layer, dt_Location.Column);
+                            if (ShallowCargoHold == null) return content.Error($"鏈壘鍒拌璐т綅淇℃伅,璐т綅缂栧彿:{dt_Location.LocationCode}鐨勬祬璐т綅");
+                            if (ShallowCargoHold.LocationStatus != (int)LocationStatusEnum.Free) return content.Error($"浠诲姟鍙凤細{task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode},鏌ユ壘鐨勮揣浣嶆祬璐т綅鏈夎揣锛岃揣浣嶇紪鍙凤細{ShallowCargoHold.LocationCode}");
 
-                    _locationInfoService.UpdateData(dt_Location);
-                    BaseDal.UpdateData(task);
-                    return content.OK($"宸叉帴鏀跺叆搴撹緭閫佺嚎瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
-                
-                
-                case 2:
-                    //涓婃姤MES浠诲姟瀹屾垚
-                    MES_parameter mES_Parameter = InStoreDocCallback(task.TaskNum, "Finish", "鎿嶄綔鎴愬姛", task.PalletCode, task.TargetAddress);
-                    if (mES_Parameter.Result == "Y")
-                    {
+                            task.TargetAddress = dt_Location.LocationCode;
+                            task.CurrentAddress = task.NextAddress;
+                            task.NextAddress = dt_Location.LocationCode;
+                            task.TaskStatus = (int)InTaskStatusEnum.PLC_InFinish;
 
-                        task.TaskStatus = (int)InTaskStatusEnum.SC_OutFinish;
-                        BaseDal.DeleteData(task);
-                        return content.OK($"宸叉帴鏀跺叆搴撳爢鍨涙満瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
-                    }
-                    else
-                    {
-                        return content.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg);
-                    }
-                default:
-                    return WebResponseContent.Instance.Error($"WCS涓婃姤绫诲瀷閿欒锛歿wcsTaskType}");
+                            dt_Location.LocationStatus = (int)LocationStatusEnum.Lock;
+
+                            Dt_StockInfo dt_StockInfo = new Dt_StockInfo();
+                            dt_StockInfo.PalletCode = task.PalletCode;
+                            dt_StockInfo.PalletType = task.PalletType;
+                            dt_StockInfo.WarehouseId = task.WarehouseId;
+                            dt_StockInfo.LocationCode = dt_Location.LocationCode;
+                            dt_StockInfo.StockStatus = (int)StockStatusEmun.鍏ュ簱涓�;
+                            dt_StockInfo.Creater = "MWS";
+                            dt_StockInfo.CreateDate = DateTime.Now;
+
+                            _unitOfWorkManage.BeginTran();
+                            _stockInfoService.AddData(dt_StockInfo);
+                            _locationInfoService.UpdateData(dt_Location);
+                            BaseDal.UpdateData(task);
+                            _unitOfWorkManage.CommitTran();
+                            return content.OK($"宸叉帴鏀跺叆搴撹緭閫佺嚎瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+                        }
+                        else
+                        {
+                            string Resultplc = MesInTaskStatusEnum.鍏ュ簱瀹屾垚.GetDescription();
+                            MES_parameter mES_PCLParameter = InStoreDocCallback(task.TaskNum, Resultplc, "鎿嶄綔鎴愬姛", task.PalletCode, task.TargetAddress);
+                            if (mES_PCLParameter.Result == "Y")
+                            {
+                                task.TaskStatus = (int)InTaskStatusEnum.PLC_InFinish;
+                                _unitOfWorkManage.BeginTran();
+                                BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
+                                _unitOfWorkManage.CommitTran();
+                                return content.OK($"杈撻�佺嚎浠诲姟宸插弽棣堣嚦涓婃父锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+                            }
+                            else
+                            {
+                                return content.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_PCLParameter.ResultMsg);
+                            }
+                        }
+                    case 2:
+                        string Resultsc = MesInTaskStatusEnum.鍏ュ簱瀹屾垚.GetDescription();
+                        //涓婃姤MES浠诲姟瀹屾垚
+                        MES_parameter mES_Parameter = InStoreDocCallback(task.TaskNum, Resultsc, "鎿嶄綔鎴愬姛", task.PalletCode, task.TargetAddress);
+                        if (mES_Parameter.Result == "Y")
+                        {
+                            Dt_StockInfo dt_Stockowc = _stockInfoService.Repository.QueryData(x => x.PalletCode == task.PalletCode).FirstOrDefault();
+                            Dt_LocationInfo dt_LocationInfo=_locationInfoService.Repository.QueryData(x => x.LocationCode == dt_Stockowc.LocationCode).FirstOrDefault();
+
+                            dt_Stockowc.StockStatus = (int)StockStatusEmun.宸插叆搴�;
+                            dt_LocationInfo.LocationStatus = (int)LocationStatusEnum.InStock;
+                            task.TaskStatus = (int)InTaskStatusEnum.InFinish;
+
+                            _unitOfWorkManage.BeginTran();
+                            _stockInfoService.UpdateData(dt_Stockowc);
+                            _locationInfoService.UpdateData(dt_LocationInfo);
+                            BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
+                            _unitOfWorkManage.CommitTran();
+                            return content.OK($"宸叉帴鏀跺叆搴撳爢鍨涙満瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+                        }
+                        else
+                        {
+                            return content.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg);
+                        }
+                    default:
+                        return content.Error($"WCS涓婃姤绫诲瀷閿欒锛歿wcsTaskType}");
+                }
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();
+                return content.Error($"WCS浠诲姟瀹屾垚鎺ュ彛鏁呴殰锛屽師鍥狅細{ex.Message}");
             }
         }
 
         private WebResponseContent HandleOutboundTask(Dt_Task task, int wcsTaskType)
         {
             WebResponseContent content = new WebResponseContent();
-            switch (wcsTaskType)
+            try
             {
-                case 1:
-                    //涓婃姤MES浠诲姟瀹屾垚
-                    MES_parameter mES_Parameter = OutStoreDocCallback(task.TaskNum, "Finish", "鎿嶄綔鎴愬姛");
-                    if (mES_Parameter.Result == "Y")
-                    {
-                        task.TaskStatus = (int)OutTaskStatusEnum.PLC_OutFinish;
-                        BaseDal.DeleteData(task);
-                        return content.OK($"宸叉帴鏀跺嚭搴撹緭閫佺嚎瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
-                    }
-                    else
-                    {
-                        return content.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg);
-                    }
-                case 2:
-                    //鑾峰彇瀵瑰簲PLC绔欏彴淇℃伅
-                    Dt_roadwayinfo _Roadwayinfo = _roadWayinfoService.QbtainPlatform(task.Roadway);
-                    task.CurrentAddress = _Roadwayinfo.OutStationCode;
-                    task.NextAddress = task.TargetAddress;
-                    task.TaskStatus = (int)OutTaskStatusEnum.SC_OutFinish;
-                    BaseDal.UpdateData(task);
-                    return content.OK($"宸叉帴鏀跺嚭搴撳爢鍨涙満瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
-                default:
-                    return content.Error($"WCS涓婃姤绫诲瀷閿欒锛歿wcsTaskType}");
+                switch (wcsTaskType)
+                {
+                    case 1:
+                        string Resultplc = MesOutTaskStatusEnum.鍒拌揪鐩殑鍦�.GetDescription();
+                        //涓婃姤MES浠诲姟瀹屾垚
+                        MES_parameter mES_Parameter = OutStoreDocCallback(task.TaskNum, Resultplc, "鎿嶄綔鎴愬姛");
+                        if (mES_Parameter.Result == "Y")
+                        {
+                            task.TaskStatus = (int)OutTaskStatusEnum.PLC_OutFinish;
+                            BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
+                            return content.OK($"宸叉帴鏀跺嚭搴撹緭閫佺嚎瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+                        }
+                        else
+                        {
+                            return content.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg);
+                        }
+                    case 2:
+                        //鑾峰彇瀵瑰簲PLC绔欏彴淇℃伅
+                        Dt_roadwayinfo _Roadwayinfo = _roadWayinfoService.QbtainPlatform(task.Roadway);
+                        task.CurrentAddress = _Roadwayinfo.OutStationCode;
+                        task.NextAddress = task.TargetAddress;
+                        task.TaskStatus = (int)OutTaskStatusEnum.SC_OutFinish;
+
+                        Dt_StockInfo dt_Stockowc = _stockInfoService.Repository.QueryData(x => x.PalletCode == task.PalletCode).FirstOrDefault();
+                        Dt_LocationInfo dt_LocationInfo = _locationInfoService.Repository.QueryData(x => x.LocationCode == dt_Stockowc.LocationCode).FirstOrDefault();
+
+                        _unitOfWorkManage.BeginTran();
+                        _stockInfoService.DeleteData(dt_Stockowc);
+                        _locationInfoService.DeleteData(dt_LocationInfo);
+                        BaseDal.UpdateData(task);
+                        _unitOfWorkManage.CommitTran();
+
+
+                        return content.OK($"宸叉帴鏀跺嚭搴撳爢鍨涙満瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+                    default:
+                        return content.Error($"WCS涓婃姤绫诲瀷閿欒锛歿wcsTaskType}");
+                }
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();
+                return content.Error($"WCS浠诲姟瀹屾垚鎺ュ彛鏁呴殰锛屽師鍥狅細{ex.Message}");
             }
         }
 
         private WebResponseContent HandleRelocationTask(Dt_Task task, int wcsTaskType)
         {
+            WebResponseContent responseContent = new WebResponseContent();
             if (wcsTaskType == 2)
             {
-                task.TaskStatus = (int)RelocationTaskStatusEnum.RelocationFinish;
-                BaseDal.UpdateData(task);
-                return WebResponseContent.Instance.OK($"宸叉帴鏀剁Щ搴撳爢鍨涙満瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+                //涓婃姤MES鍫嗗灈鏈虹Щ搴撲换鍔�
+                string Resultplc = MesOutTaskStatusEnum.鍒拌揪鐩殑鍦�.GetDescription();
+                //涓婃姤MES浠诲姟瀹屾垚
+                MES_parameter mES_Parameter = AbnormalStorageLocation(task.PalletCode, task.SourceAddress, task.TargetAddress);
+                if (mES_Parameter.Result == "Y")
+                {
+                    task.TaskStatus = (int)RelocationTaskStatusEnum.RelocationFinish;
+                    BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
+                    return WebResponseContent.Instance.OK($"宸叉帴鏀剁Щ搴撳爢鍨涙満瀹屾垚淇℃伅锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+                }
+                else
+                {
+                    return responseContent.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg);
+                }
             }
             return WebResponseContent.Instance.Error($"WCS涓婃姤绫诲瀷閿欒锛歿wcsTaskType}");
         }
 
 
-       
+        
+
     }
 }
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"
new file mode 100644
index 0000000..6c8aeb1
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WMSCruJob.cs"
@@ -0,0 +1,365 @@
+锘縰sing AutoMapper;
+using MailKit.Search;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Logging;
+using Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Net;
+using System.Reflection.Metadata;
+using System.Security.Policy;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common.LocationEnum;
+using WIDESEA_Common.Log;
+using WIDESEA_Common.OtherEnum;
+using WIDESEA_Common.StockEnum;
+using WIDESEA_Common.TaskEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.Inbound;
+using WIDESEA_DTO.Stock;
+using WIDESEA_DTO.Task;
+using WIDESEA_IBasicService;
+using WIDESEA_IStockService;
+using WIDESEA_ITaskInfoService;
+using WIDESEA_Model.Models;
+using static WIDESEA_ITaskInfoService.ITaskService;
+
+namespace WIDESEA_TaskInfoService
+{
+    public partial class WMSCruJob : IHostedService, IDisposable
+    {
+        private readonly ILogger<WMSCruJob> _logger;
+        private Timer _timer;
+        private readonly ITaskService _taskService;
+        private readonly ILocationInfoService _locationInfoService;
+        private readonly IStockInfoService _stockInfoService;
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+
+
+
+
+        public Task StartAsync(CancellationToken cancellationToken)
+        {
+            _timer = new Timer(DoWorkWheel, null, TimeSpan.Zero, TimeSpan.FromSeconds(3));
+            return Task.CompletedTask;
+        }
+        private void DoWorkWheel(object state)
+        {
+            // 瀹氫箟鐘舵�佸父閲忥紝閬垮厤榄旀硶鏁板瓧
+            const int PLC_IN_FINISH = (int)InTaskStatusEnum.PLC_InFinish;
+            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;
+
+            // 鑾峰彇褰撳墠浠诲姟鏁版嵁
+            List<Dt_Task> allTasks = _taskService.Repository.QueryData();
+
+            // 鑾峰彇宸烽亾瓒呰繃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) &&
+                    !excludedRoadways.Contains(x.Roadway))
+                .ToList();
+
+            // 鎸夌姸鎬佸垎缁勫鐞嗭紝鍑忓皯閲嶅鏌ヨ
+            ProcessInAndNewTasks(tasksToProcess, allTasks, excludedRoadways);   //涓嬪彂鍫嗗灈鏈�
+            ProcessOutFinishTasks(tasksToProcess, allTasks);    //涓嬪彂杈撻�佺嚎浠诲姟
+        }
+
+        private void ProcessInAndNewTasks(List<Dt_Task> tasksToProcess, List<Dt_Task> allTasks, HashSet<string> excludedRoadways)
+        {
+            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();
+
+            foreach (var task in inAndNewTasks)
+            {
+                // 妫�鏌ュ悓涓�宸烽亾鏄惁鏈夋鍦ㄦ墽琛岀殑浠诲姟
+                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;
+
+                //鍒ゆ柇鏄惁闇�瑕佺Щ搴�
+                WebResponseContent webResponse=JudgmentIsRelocations(task);
+                if (!webResponse.Status) continue;
+
+                // 涓嬪彂鍫嗗灈鏈轰换鍔�
+                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);
+
+                UpdateTaskStatus(task, result,
+                    successStatus: task.TaskStatus == PLC_IN_FINISH ? SC_IN_EXECUTING : SC_OUT_EXECUTING,1);
+            }
+        }
+
+        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();
+
+            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);
+            }
+        }
+
+        private void UpdateTaskStatus(Dt_Task task, WCSginseng result, int successStatus,int statype)
+        {
+            if (result.IsSuccess)
+            {
+
+                task.TaskStatus = successStatus;
+                if(task.TaskStatus== (int)OutTaskStatusEnum.SC_OutExecuting)
+                {
+                    string Result = MesOutTaskStatusEnum.鍑哄簱寮�濮�.GetDescription();
+                    //璋冨彇涓婃父绯荤粺鍙嶉寮�濮嬩换鍔�
+                    _taskService.OutStoreDocCallback(task.TaskNum,Result, "鎿嶄綔鎴愬姛");
+                }
+            }
+            else
+            {
+                task.Remark = result.Message;
+                task.NumberSsuances++;
+            }
+
+            _taskService.Repository.UpdateData(task);
+        }
+
+
+        public Task StopAsync(CancellationToken cancellationToken)
+        {
+            _timer?.Dispose();
+            return Task.CompletedTask;
+        }
+
+        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)
+        {
+            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.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();
+                if (shallowLocation.LocationStatus != (int)(int)LocationStatusEnum.InStock) return content.Error();
+
+                //鍒ゆ柇鏄惁鏈夌Щ搴撲换鍔�
+                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,
+                        TransferTask.TargetAddress);
+                    if (result.IsSuccess)
+                    {
+                        return content.OK();
+                    }
+                    else
+                    {
+                        WriteLog.GetLog("鍒ゆ柇宸烽亾鍐呯Щ搴�").Write($"涓嬪彂鍫嗗灈鏈轰换鍔″け璐ワ紝鍘熷洜锛歿result.Message}", $"鐢熸垚绉诲簱浠诲姟:GenerateTransferTask");
+                        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);
+                        //_stockInfoService.Repository.AddData(dt_StockInfo);
+                        _unitOfWorkManage.CommitTran();
+
+                        //杩涜涓嬪彂缁欏爢鍨涙満浠诲姟
+                        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)
+                        {
+                            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();
+            }
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
index a41f86c..426c5b3 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
@@ -22,8 +22,15 @@
         {
         }
 
+        //浠诲姟瀹屾垚
+        [HttpPost, Route("TaskCompleted"), AllowAnonymous]
+        public WebResponseContent TaskCompleted(WCSTaskDTO wCSTask)
+        {
+            return Service.TaskCompleted(wCSTask);
+        }
+
         //WCS鍏ュ簱浠诲姟鑾峰彇
-        [HttpPost, Route("PalletInboundTask")]
+        [HttpPost, Route("PalletInboundTask"), AllowAnonymous]
         public WebResponseContent PalletInboundTask(WCSTaskDTO wCSTask)
         {
             return Service.PalletInboundTask(wCSTask);
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/WCSTaskController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/WCSTaskController.cs"
index 5f664cf..5a4ff8b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/WCSTaskController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/WCSTaskController.cs"
@@ -14,7 +14,7 @@
     /// <summary>
     /// 浠诲姟
     /// </summary>
-    [Route("api/Task")]
+    [Route("api/WCSTask")]
     [ApiController]
     public class WCSTaskController : ApiBaseController<ITaskService, Dt_Task>
     {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
index 1b0c26a..cc4b728 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs"
@@ -1,5 +1,3 @@
-using System.Reflection;
-using System.Text;
 using Autofac;
 using Autofac.Core;
 using Autofac.Extensions.DependencyInjection;
@@ -11,6 +9,8 @@
 using Newtonsoft.Json;
 using Newtonsoft.Json.Converters;
 using Newtonsoft.Json.Serialization;
+using System.Reflection;
+using System.Text;
 using WIDESEA_Core;
 using WIDESEA_Core.Authorization;
 using WIDESEA_Core.BaseServices;
@@ -20,6 +20,7 @@
 using WIDESEA_Core.Helper;
 //using WIDESEA_Core.HostedService;
 using WIDESEA_Core.Middlewares;
+using WIDESEA_TaskInfoService;
 using WIDESEA_WMSServer.Filter;
 
 var builder = WebApplication.CreateBuilder(args);
@@ -94,6 +95,7 @@
 builder.Services.Replace(ServiceDescriptor.Transient<IControllerActivator, ServiceBasedControllerActivator>());
 Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
 
+builder.Services.AddHostedService<WMSCruJob>();
 
 var app = builder.Build();
 
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json"
index 77f1f16..3f45383 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json"
@@ -10,11 +10,11 @@
   "AllowedHosts": "*",
   "ConnectionStringsEncryption": false,
   "MainDB": "DB_WIDESEA", //褰撳墠椤圭洰鐨勪富搴擄紝鎵�瀵瑰簲鐨勮繛鎺ュ瓧绗︿覆鐨凟nabled蹇呴』涓簍rue
-  "MES_InReporttask": "http://172.18.195.201:8889/api/Task/ReceiveTask", //鍏ュ簱鍙嶉淇℃伅
-  "MES_OutReporttask": "http://172.18.195.201:8889/api/Task/ReceiveTask", //鍑哄簱鍙嶉淇℃伅
-  "MES_InventoryUpdateApply": "http://172.18.195.201:8889/api/Task/ReceiveTask", //鍌ㄤ綅寮傚姩鐢宠
-  "MES_InventoryUpdateCallback": "http://172.18.195.201:8889/api/Task/ReceiveTask", //鍌ㄤ綅寮傚姩鐢宠
-  "MES_TaskErrorInfoCallback": "http://172.18.195.201:8889/api/Task/ReceiveTask", //浠诲姟寮傚父涓婃姤
+  "MES_InReporttask": "http://172.18.199.91/api/wms-intelligent-warehouse/public/SanYang/InStoreDocCallback", //鍏ュ簱鍙嶉淇℃伅
+  "MES_OutReporttask": "http://172.18.199.91/api/wms-intelligent-warehouse/public/SanYang/OutStoreDocCallback", //鍑哄簱鍙嶉淇℃伅
+  "MES_InventoryUpdateApply": "http://172.18.199.91/api/wms-intelligent-warehouse/public/SanYang/InventoryUpdateApply", //鍌ㄤ綅寮傚姩鐢宠
+  "MES_InventoryUpdateCallback": "http://172.18.199.91/api/wms-intelligent-warehouse/public/SanYang/InventoryUpdateCallback", //鍌ㄤ綅寮傚姩鐢宠
+  "MES_TaskErrorInfoCallback": "http://172.18.199.91/api/wms-intelligent-warehouse/public/SanYang/TaskErrorInfoCallback", //浠诲姟寮傚父涓婃姤
 
   "WCS_SendConveyorTask": "http://172.18.195.201:8889/api/Task/ReceiveTask", //杈撻�佺嚎浠诲姟涓嬪彂
   "WCS_SendStackerTask": "http://172.18.195.201:8889/api/Task/ReceiveTask", //鍫嗗灈鏈轰换鍔′笅鍙�
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\350\223\235\345\233\276\346\226\207\344\273\266/\351\271\260\347\276\216\346\231\272\350\203\275\345\267\245\345\216\202\347\253\213\344\275\223\345\272\223\351\241\271\347\233\256\350\275\257\344\273\266\347\263\273\347\273\237\350\223\235\345\233\276 V6.0.docm" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\350\223\235\345\233\276\346\226\207\344\273\266/\351\271\260\347\276\216\346\231\272\350\203\275\345\267\245\345\216\202\347\253\213\344\275\223\345\272\223\351\241\271\347\233\256\350\275\257\344\273\266\347\263\273\347\273\237\350\223\235\345\233\276 V6.0.docm"
index 9060514..4823961 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\350\223\235\345\233\276\346\226\207\344\273\266/\351\271\260\347\276\216\346\231\272\350\203\275\345\267\245\345\216\202\347\253\213\344\275\223\345\272\223\351\241\271\347\233\256\350\275\257\344\273\266\347\263\273\347\273\237\350\223\235\345\233\276 V6.0.docm"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\350\223\235\345\233\276\346\226\207\344\273\266/\351\271\260\347\276\216\346\231\272\350\203\275\345\267\245\345\216\202\347\253\213\344\275\223\345\272\223\351\241\271\347\233\256\350\275\257\344\273\266\347\263\273\347\273\237\350\223\235\345\233\276 V6.0.docm"
Binary files differ

--
Gitblit v1.9.3