From 2cc4dfef234b47bef364edf798b5051a25f33217 Mon Sep 17 00:00:00 2001
From: hutongqing <hutongqing@hnkhzn.com>
Date: 星期五, 30 八月 2024 10:58:56 +0800
Subject: [PATCH] 1

---
 WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Models/Dt_Router.cs                                          |    2 
 WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json                                     | 1141 ++++++++++++------------------------------
 WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs                                       |   47 +
 WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs                         |    3 
 WIDESEAWCS_Server/WIDESEAWCS_Server/Program.cs                                                      |    2 
 WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/d432f789-86c0-4e8a-a056-700bfe523798.vsidx |    0 
 WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/QuartzNet/JobFactory.cs                                      |    1 
 WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs                                     |    5 
 WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs                         |   90 ++
 WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/IDispatchInfoService.cs                              |    1 
 WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs                                         |   62 ++
 WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine.cs                           |   47 +
 WIDESEAWCS_Server/WIDESEAWCS_Model/Models/System/Sys_DictionaryList.cs                              |    2 
 WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/43e13bd9-f8d3-454f-9a4f-1b1d51741150.vsidx |    0 
 WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/2f837522-9b6d-41cb-92d7-533c1d9bb909.vsidx |    0 
 WIDESEAWCS_Server/WIDESEAWCS_Communicator/BaseCommunicator.cs                                       |    4 
 WIDESEAWCS_Client/src/views/system/Sys_Menu.vue                                                     |   40 
 WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Repository/RouterRepository.cs                               |    5 
 WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/RouterController.cs                       |    2 
 WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/57b01f95-2389-4f2b-a60f-15733dafcedd.vsidx |    0 
 WIDESEAWCS_Server/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj                                              |    4 
 WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_MenuService.cs                                    |    2 
 WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_MenuService.cs                                      |   15 
 WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/86c97b31-f4c8-46ca-90c0-b311702fcc53.vsidx |    0 
 WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/StackerCrane/CommonStackerCrane.cs                           |   53 +
 /dev/null                                                                                           |    0 
 WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj                                          |    4 
 WIDESEAWCS_Client/src/views/system/Sys_Dictionary.vue                                               |    7 
 WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/DeviceBase/IDevice.cs                                        |    4 
 WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/IRouterService.cs                                    |    4 
 WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Repository/IRouterRepository.cs                              |    4 
 WIDESEAWCS_Server/WIDESEAWCS_Communicator/Siemens/SiemensS7Communicator.cs                          |   35 +
 WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/DTO/RoutersAddDTO.cs                                         |    0 
 WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/System/Sys_MenuController.cs                        |    7 
 34 files changed, 679 insertions(+), 914 deletions(-)

diff --git a/WIDESEAWCS_Client/src/views/system/Sys_Dictionary.vue b/WIDESEAWCS_Client/src/views/system/Sys_Dictionary.vue
index eeaf5ea..5ceafd6 100644
--- a/WIDESEAWCS_Client/src/views/system/Sys_Dictionary.vue
+++ b/WIDESEAWCS_Client/src/views/system/Sys_Dictionary.vue
@@ -37,7 +37,6 @@
       parentId: "",
       orderNo: "",
       enable: "",
-      createDate: "",
       dbSql: "",
       remark: "",
       systemType: 1,
@@ -57,12 +56,6 @@
           required: true,
           field: "enable",
           type: "select",
-        },
-        {
-          title: "鍒涘缓鏃堕棿",
-          field: "createDate",
-          disabled: true,
-          type: "datetime",
         },
       ],
       [
diff --git a/WIDESEAWCS_Client/src/views/system/Sys_Menu.vue b/WIDESEAWCS_Client/src/views/system/Sys_Menu.vue
index b56c380..93feed5 100644
--- a/WIDESEAWCS_Client/src/views/system/Sys_Menu.vue
+++ b/WIDESEAWCS_Client/src/views/system/Sys_Menu.vue
@@ -176,7 +176,7 @@
         tigger = true;
         let menuId = this.fields.menuId;
         this.http
-          .post("/api/menu/delMenu?menuId=" + menuId, {}, "姝e湪鍒犻櫎鏁版嵁....")
+          .post("/api/Sys_Menu/delMenu?menuId=" + menuId, {}, "姝e湪鍒犻櫎鏁版嵁....")
           .then((x) => {
             if (!x.status) return this.$Message.error(x.message);
             this.$refs.form.reset();
@@ -227,6 +227,7 @@
             orderNo: this.fields.orderNo,
             parentId: this.fields.parentId,
           });
+          console.log(this.tree)
         });
       });
     },
@@ -247,6 +248,9 @@
       this.getTreeItem(node[node.length > 1 ? node.length - 1 : 0]);
     }
   },
+  created(){
+
+  },
   setup() {
     const tree = ref([]);
     const actionValues = ref([]);
@@ -257,8 +261,8 @@
       { text: "缂栬緫", value: "Update" },
       { text: "瀵煎叆", value: "Import" },
       { text: "瀵煎嚭", value: "Export" },
-      { text: "涓婁紶", value: "Upload" },
-      { text: "瀹℃牳", value: "Audit" },
+      // { text: "涓婁紶", value: "Upload" },
+      // { text: "瀹℃牳", value: "Audit" },
     ]);
     const actions = ref([]);
     actionValues.value = action.value.map((x) => {
@@ -268,9 +272,6 @@
       http.post("/api/Sys_Menu/getMenu", {}, true).then((x) => {
         x.forEach(item => {
           item.icon = 'el-icon-menu';
-          if (item.menuType == 1 && !item.parentId) {
-            // item.name="(app)"+item.name;
-          }
         })
         
         tree.value = x;
@@ -293,7 +294,6 @@
       icon: "",
       orderNo: "",
       enable: 1,
-      menuType: null,
       createDate: "",
       creator: "",
       modifyDate: "",
@@ -379,19 +379,19 @@
             { key: 0, value: "绂佺敤" },
           ],
         },
-        {
-          // 2022.03.26澧炵Щ鍔ㄧ鍔犺彍鍗曠被鍨�
-          title: "鑿滃崟绫诲瀷",
-          field: "menuType",
-          required: true,
-          type: "select",
-          colSize: 4,
-          data: [
-            { key: 1, value: "WCS鑿滃崟" },
-            { key: 0, value: "WMS鑿滃崟" },
-            { key: 99, value: "鍏辩敤" }
-          ],
-        },
+        // {
+        //   // 2022.03.26澧炵Щ鍔ㄧ鍔犺彍鍗曠被鍨�
+        //   title: "鑿滃崟绫诲瀷",
+        //   field: "menuType",
+        //   required: true,
+        //   type: "select",
+        //   colSize: 4,
+        //   data: [
+        //     { key: 1, value: "WCS鑿滃崟" },
+        //     { key: 0, value: "WMS鑿滃崟" },
+        //     { key: 99, value: "鍏辩敤" }
+        //   ],
+        // },
         {
           title: "鍥炬爣Icon",
           field: "icon",
diff --git a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/1843fe6d-1907-4ed3-a4dd-e84dd8936927.vsidx b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/2f837522-9b6d-41cb-92d7-533c1d9bb909.vsidx
similarity index 60%
rename from WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/1843fe6d-1907-4ed3-a4dd-e84dd8936927.vsidx
rename to WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/2f837522-9b6d-41cb-92d7-533c1d9bb909.vsidx
index 62912d3..35caa62 100644
--- a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/1843fe6d-1907-4ed3-a4dd-e84dd8936927.vsidx
+++ b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/2f837522-9b6d-41cb-92d7-533c1d9bb909.vsidx
Binary files differ
diff --git a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/32c5916d-65bb-438b-9e5d-c00e23dc21a0.vsidx b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/32c5916d-65bb-438b-9e5d-c00e23dc21a0.vsidx
deleted file mode 100644
index 467cf05..0000000
--- a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/32c5916d-65bb-438b-9e5d-c00e23dc21a0.vsidx
+++ /dev/null
Binary files differ
diff --git a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/43e13bd9-f8d3-454f-9a4f-1b1d51741150.vsidx b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/43e13bd9-f8d3-454f-9a4f-1b1d51741150.vsidx
new file mode 100644
index 0000000..6b10266
--- /dev/null
+++ b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/43e13bd9-f8d3-454f-9a4f-1b1d51741150.vsidx
Binary files differ
diff --git a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/57b01f95-2389-4f2b-a60f-15733dafcedd.vsidx b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/57b01f95-2389-4f2b-a60f-15733dafcedd.vsidx
new file mode 100644
index 0000000..b57cabf
--- /dev/null
+++ b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/57b01f95-2389-4f2b-a60f-15733dafcedd.vsidx
Binary files differ
diff --git a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/5b8285ca-24aa-4af3-8df7-9efc192c6a87.vsidx b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/5b8285ca-24aa-4af3-8df7-9efc192c6a87.vsidx
deleted file mode 100644
index dc66475..0000000
--- a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/5b8285ca-24aa-4af3-8df7-9efc192c6a87.vsidx
+++ /dev/null
Binary files differ
diff --git a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/86c97b31-f4c8-46ca-90c0-b311702fcc53.vsidx b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/86c97b31-f4c8-46ca-90c0-b311702fcc53.vsidx
new file mode 100644
index 0000000..310501d
--- /dev/null
+++ b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/86c97b31-f4c8-46ca-90c0-b311702fcc53.vsidx
Binary files differ
diff --git a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/b3e9f823-2eb5-4161-b8d9-12710cb88c79.vsidx b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/b3e9f823-2eb5-4161-b8d9-12710cb88c79.vsidx
deleted file mode 100644
index 5605115..0000000
--- a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/b3e9f823-2eb5-4161-b8d9-12710cb88c79.vsidx
+++ /dev/null
Binary files differ
diff --git a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/b6011de2-6b92-44e3-9e30-3a4ddf14264f.vsidx b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/b6011de2-6b92-44e3-9e30-3a4ddf14264f.vsidx
deleted file mode 100644
index b24918d..0000000
--- a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/b6011de2-6b92-44e3-9e30-3a4ddf14264f.vsidx
+++ /dev/null
Binary files differ
diff --git a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/d432f789-86c0-4e8a-a056-700bfe523798.vsidx b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/d432f789-86c0-4e8a-a056-700bfe523798.vsidx
new file mode 100644
index 0000000..69ee128
--- /dev/null
+++ b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/d432f789-86c0-4e8a-a056-700bfe523798.vsidx
Binary files differ
diff --git a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json
index 66d1404..100ce6f 100644
--- a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json
+++ b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json
@@ -3,228 +3,104 @@
   "WorkspaceRootPath": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\",
   "Documents": [
     {
-      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_quartzjob\\service\\deviceprotocolservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\service\\deviceprotocolservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_core\\wideseawcs_core.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|",
+      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\wideseawcs_core.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_core\\middlewares\\exceptionhandlermiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\middlewares\\exceptionhandlermiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_quartzjob\\service\\routerservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\service\\routerservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_quartzjob\\models\\dt_deviceinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_quartzjob\\models\\dt_router.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\models\\dt_router.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_tasks\\stackercranejob\\commonstackercranejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\stackercranejob\\commonstackercranejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\conveyorlinejob\\commonconveyorlinejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|solutionrelative:wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_server\\controllers\\basicinfo\\routercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\basicinfo\\routercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_quartzjob\\service\\irouterservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\service\\irouterservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_quartzjob\\service\\idispatchinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\service\\idispatchinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_quartzjob\\repository\\routerrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\repository\\routerrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_quartzjob\\repository\\irouterrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\repository\\irouterrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_quartzjob\\repository\\ideviceprotocolrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\repository\\ideviceprotocolrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_quartzjob\\repository\\idispatchinforepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\repository\\idispatchinforepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_quartzjob\\models\\dt_deviceinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\models\\dt_deviceinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_quartzjob\\models\\dt_dispatchinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\models\\dt_dispatchinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_tasks\\wideseawcs_tasks.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|",
+      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\wideseawcs_tasks.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_communicator\\siemens\\siemenss7communicator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|solutionrelative:wideseawcs_communicator\\siemens\\siemenss7communicator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_quartzjob\\stackercrane\\commonstackercrane.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\stackercrane\\commonstackercrane.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_tasks\\stackercranejob\\stackercranedbname.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\stackercranejob\\stackercranedbname.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_tasks\\stackercranejob\\stackercranetaskcommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\stackercranejob\\stackercranetaskcommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_quartzjob\\conveyorline\\commonconveyorline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\conveyorline\\commonconveyorline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_quartzjob\\devicebase\\idevice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\devicebase\\idevice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_quartzjob\\models\\dt_deviceprotocol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\models\\dt_deviceprotocol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_server\\controllers\\quartzjob\\deviceprotocolcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\quartzjob\\deviceprotocolcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_communicator\\siemens\\siemensdbdatatype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|solutionrelative:wideseawcs_communicator\\siemens\\siemensdbdatatype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_server\\controllers\\quartzjob\\deviceinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\quartzjob\\deviceinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_quartzjob\\service\\ideviceprotocolservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\service\\ideviceprotocolservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\basecontroller\\apibasecontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\basecontroller\\apibasecontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
-      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\middlewares\\httprequestmiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\middlewares\\httprequestmiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\filter\\apiauthorizefilter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\filter\\apiauthorizefilter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\middlewares\\middlewarehelpers.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\middlewares\\middlewarehelpers.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\middlewares\\apilogmiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\middlewares\\apilogmiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\helper\\httpcontexthelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\helper\\httpcontexthelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\seed\\dbcontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\seed\\dbcontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\httpcontextuser\\aspnetuser.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\httpcontextuser\\aspnetuser.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\extensions\\httpcontextsetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\extensions\\httpcontextsetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\aop\\logaop.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\aop\\logaop.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\middlewares\\swaggermiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\middlewares\\swaggermiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\middlewares\\swaggerauthmiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\middlewares\\swaggerauthmiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\middlewares\\iplimitmiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\middlewares\\iplimitmiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\extensions\\dbsetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\extensions\\dbsetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\extensions\\autofacmoduleregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\extensions\\autofacmoduleregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\extensions\\applicationsetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\extensions\\applicationsetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\extensions\\alloptionregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\extensions\\alloptionregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\extensions\\swaggersetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\extensions\\swaggersetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\filter\\actionexecutefilter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\filter\\actionexecutefilter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\authorization\\authorizationsetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\authorization\\authorizationsetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\authorization\\authorizationresponse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\authorization\\authorizationresponse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_server\\controllers\\system\\sys_usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\system\\sys_usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\authorization\\jwthelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\authorization\\jwthelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{A14242DD-DA06-4DC3-8598-1761AA7C76D1}|WIDESEAWCS_SystemServices\\WIDESEAWCS_SystemServices.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_systemservices\\sys_userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{A14242DD-DA06-4DC3-8598-1761AA7C76D1}|WIDESEAWCS_SystemServices\\WIDESEAWCS_SystemServices.csproj|solutionrelative:wideseawcs_systemservices\\sys_userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_quartzjob\\quartzextensions\\quartzjobhostedservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\quartzextensions\\quartzjobhostedservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\baseservices\\iservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\baseservices\\iservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_server\\wideseawcs_server.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|",
-      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\wideseawcs_server.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_quartzjob\\models\\dt_dispatchinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\models\\dt_dispatchinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_quartzjob\\models\\dt_deviceprotocoldetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\models\\dt_deviceprotocoldetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_model\\models\\taskinfo\\dt_taskexecutedetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|solutionrelative:wideseawcs_model\\models\\taskinfo\\dt_taskexecutedetail.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_model\\models\\taskinfo\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|solutionrelative:wideseawcs_model\\models\\taskinfo\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_model\\models\\basicinfo\\dt_router.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|solutionrelative:wideseawcs_model\\models\\basicinfo\\dt_router.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_server\\filter\\automappersetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\filter\\automappersetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\extensions\\sqlsugarsetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\extensions\\sqlsugarsetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\extensions\\miniprofilersetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\extensions\\miniprofilersetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\extensions\\memorycachesetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\extensions\\memorycachesetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\extensions\\ippolicyratelimitsetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\extensions\\ippolicyratelimitsetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\extensions\\corssetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\extensions\\corssetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\db\\repositorysetting.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\db\\repositorysetting.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\db\\maindb.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\db\\maindb.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\db\\basedbconfig.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\db\\basedbconfig.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\core\\internalapp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\core\\internalapp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\core\\iconfigurableoptions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\core\\iconfigurableoptions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\core\\configurableoptions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\core\\configurableoptions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\caches\\sqlsugarcacheservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\caches\\sqlsugarcacheservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\caches\\icaching.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\caches\\icaching.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\caches\\caching.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\caches\\caching.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_core\\aop\\sqlsugaraop.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\aop\\sqlsugaraop.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\wideseawcs_communicator\\basecommunicator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|solutionrelative:wideseawcs_communicator\\basecommunicator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     }
   ],
   "DocumentGroupContainers": [
@@ -234,8 +110,86 @@
       "DocumentGroups": [
         {
           "DockedWidth": 200,
-          "SelectedChildIndex": 10,
+          "SelectedChildIndex": 0,
           "Children": [
+            {
+              "$type": "Document",
+              "DocumentIndex": 0,
+              "Title": "WIDESEAWCS_Core",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj",
+              "RelativeToolTip": "WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj",
+              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
+              "WhenOpened": "2024-08-30T02:52:55.547Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 6,
+              "Title": "RouterController.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\BasicInfo\\RouterController.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\BasicInfo\\RouterController.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\BasicInfo\\RouterController.cs",
+              "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\BasicInfo\\RouterController.cs",
+              "ViewState": "AQIAAAAAAAAAAAAAAAAAAA8AAAAfAAAA",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-08-30T01:49:09.79Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 1,
+              "Title": "RouterService.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\RouterService.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Service\\RouterService.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\RouterService.cs",
+              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Service\\RouterService.cs",
+              "ViewState": "AQIAABYAAAAAAAAAAAAAwEEAAAAJAAAA",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-08-30T01:47:20.004Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 7,
+              "Title": "IRouterService.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\IRouterService.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Service\\IRouterService.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\IRouterService.cs",
+              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Service\\IRouterService.cs",
+              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAYAAAAjAAAA",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-08-30T01:47:06.865Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 8,
+              "Title": "IDispatchInfoService.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\IDispatchInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Service\\IDispatchInfoService.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\IDispatchInfoService.cs",
+              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Service\\IDispatchInfoService.cs",
+              "ViewState": "AQIAAAAAAAAAAAAAAAAAABYAAAAjAAAA",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-08-30T01:47:00.849Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 9,
+              "Title": "RouterRepository.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Repository\\RouterRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Repository\\RouterRepository.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Repository\\RouterRepository.cs",
+              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Repository\\RouterRepository.cs",
+              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAUAAAAlAAAA",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-08-30T01:46:26.867Z",
+              "EditorCaption": ""
+            },
             {
               "$type": "Bookmark",
               "Name": "ST:12:0:{2456bd12-ecf7-4988-a4a6-67d49173f565}"
@@ -254,676 +208,241 @@
             },
             {
               "$type": "Document",
+              "DocumentIndex": 5,
+              "Title": "TaskService.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\TaskService.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs",
+              "RelativeToolTip": "WIDESEAWCS_TaskInfoService\\TaskService.cs",
+              "ViewState": "AQIAABEAAAAAAAAAAAASwCsAAABNAAAA",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-08-29T11:58:29.741Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
               "DocumentIndex": 4,
-              "Title": "DeviceProtocolController.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\QuartzJob\\DeviceProtocolController.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\QuartzJob\\DeviceProtocolController.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\QuartzJob\\DeviceProtocolController.cs",
-              "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\QuartzJob\\DeviceProtocolController.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAABEAAAAnAAAA",
+              "Title": "CommonConveyorLineJob.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs",
+              "RelativeToolTip": "WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs",
+              "ViewState": "AQIAAFYAAAAAAAAAAAAIwBsAAAAdAAAA",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T01:57:14.144Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 8,
-              "Title": "appsettings.json",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\appsettings.json",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\appsettings.json",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\appsettings.json",
-              "RelativeToolTip": "WIDESEAWCS_Server\\appsettings.json",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAABgAAAATAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
-              "WhenOpened": "2024-08-28T01:43:48.493Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 7,
-              "Title": "ApiBaseController.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\BaseController\\ApiBaseController.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\BaseController\\ApiBaseController.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\BaseController\\ApiBaseController.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\BaseController\\ApiBaseController.cs",
-              "ViewState": "AQIAADIAAAAAAAAAAIA6wF4AAABEAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T02:01:07.973Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 12,
-              "Title": "ApiLogMiddleware.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Middlewares\\ApiLogMiddleware.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Middlewares\\ApiLogMiddleware.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Middlewares\\ApiLogMiddleware.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Middlewares\\ApiLogMiddleware.cs",
-              "ViewState": "AQIAAAMAAAAAAAAAAAAuwBUAAAAvAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T08:05:02.326Z"
+              "WhenOpened": "2024-08-29T11:32:06.014Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 3,
-              "Title": "Dt_DeviceProtocol.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Models\\Dt_DeviceProtocol.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Models\\Dt_DeviceProtocol.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Models\\Dt_DeviceProtocol.cs",
-              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Models\\Dt_DeviceProtocol.cs",
-              "ViewState": "AQIAABgAAAAAAAAAAAAAACYAAAApAAAA",
+              "Title": "CommonStackerCraneJob.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
+              "RelativeToolTip": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
+              "ViewState": "AQIAABoAAAAAAAAAAADwvzwAAAAhAAAA",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T01:47:31.274Z"
+              "WhenOpened": "2024-08-29T11:10:29.565Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
               "DocumentIndex": 2,
+              "Title": "Dt_Router.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Models\\Dt_Router.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Models\\Dt_Router.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Models\\Dt_Router.cs",
+              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Models\\Dt_Router.cs",
+              "ViewState": "AQIAAEwAAAAAAAAAAAAgwAoAAAAlAAAA",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-08-30T01:45:37.749Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 10,
+              "Title": "IRouterRepository.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Repository\\IRouterRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Repository\\IRouterRepository.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Repository\\IRouterRepository.cs",
+              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Repository\\IRouterRepository.cs",
+              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAUAAAAlAAAA",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-08-30T01:46:15.196Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 11,
+              "Title": "IDeviceProtocolRepository.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Repository\\IDeviceProtocolRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Repository\\IDeviceProtocolRepository.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Repository\\IDeviceProtocolRepository.cs",
+              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Repository\\IDeviceProtocolRepository.cs",
+              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-08-30T01:46:13.262Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 12,
+              "Title": "IDispatchInfoRepository.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Repository\\IDispatchInfoRepository.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Repository\\IDispatchInfoRepository.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Repository\\IDispatchInfoRepository.cs",
+              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Repository\\IDispatchInfoRepository.cs",
+              "ViewState": "AQIAAAAAAAAAAAAAAAAAABoAAAApAAAA",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-08-30T01:46:08.776Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 13,
               "Title": "Dt_DeviceInfo.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Models\\Dt_DeviceInfo.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Models\\Dt_DeviceInfo.cs",
               "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Models\\Dt_DeviceInfo.cs",
               "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Models\\Dt_DeviceInfo.cs",
-              "ViewState": "AQIAACgAAAAAAAAAAAAxwGoAAAAIAAAA",
+              "ViewState": "AQIAAAAAAAAAAAAAAAAAABoAAAAlAAAA",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T01:53:23.226Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 0,
-              "Title": "DeviceProtocolService.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\DeviceProtocolService.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Service\\DeviceProtocolService.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\DeviceProtocolService.cs",
-              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Service\\DeviceProtocolService.cs",
-              "ViewState": "AQIAAEAAAAAAAAAAAAAuwEkAAAAkAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T07:37:15.84Z",
+              "WhenOpened": "2024-08-30T01:45:36.363Z",
               "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 1,
-              "Title": "ExceptionHandlerMiddleware.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Middlewares\\ExceptionHandlerMiddleware.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Middlewares\\ExceptionHandlerMiddleware.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Middlewares\\ExceptionHandlerMiddleware.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Middlewares\\ExceptionHandlerMiddleware.cs",
-              "ViewState": "AQIAABsAAAAAAAAAAAAuwAwAAAArAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T08:05:00.601Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 20,
-              "Title": "IpLimitMiddleware.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Middlewares\\IpLimitMiddleware.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Middlewares\\IpLimitMiddleware.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Middlewares\\IpLimitMiddleware.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Middlewares\\IpLimitMiddleware.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T08:04:59.762Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 10,
-              "Title": "ApiAuthorizeFilter.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Filter\\ApiAuthorizeFilter.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Filter\\ApiAuthorizeFilter.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Filter\\ApiAuthorizeFilter.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Filter\\ApiAuthorizeFilter.cs",
-              "ViewState": "AQIAADIAAAAAAAAAAAArwE0AAABOAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T06:31:50.139Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 6,
-              "Title": "IDeviceProtocolService.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\IDeviceProtocolService.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Service\\IDeviceProtocolService.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\IDeviceProtocolService.cs",
-              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Service\\IDeviceProtocolService.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAuwCAAAAAIAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T07:37:27.87Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 9,
-              "Title": "HttpRequestMiddleware.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Middlewares\\HttpRequestMiddleware.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Middlewares\\HttpRequestMiddleware.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Middlewares\\HttpRequestMiddleware.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Middlewares\\HttpRequestMiddleware.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAABQAAABZAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T07:05:00.511Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 5,
-              "Title": "DeviceInfoController.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\QuartzJob\\DeviceInfoController.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\QuartzJob\\DeviceInfoController.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\QuartzJob\\DeviceInfoController.cs",
-              "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\QuartzJob\\DeviceInfoController.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAABcAAAA+AAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T01:58:40.244Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 11,
-              "Title": "MiddlewareHelpers.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Middlewares\\MiddlewareHelpers.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Middlewares\\MiddlewareHelpers.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Middlewares\\MiddlewareHelpers.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Middlewares\\MiddlewareHelpers.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAABIAAAA5AAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T08:04:57.054Z"
             },
             {
               "$type": "Document",
               "DocumentIndex": 14,
-              "Title": "DBContext.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Seed\\DBContext.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Seed\\DBContext.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Seed\\DBContext.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Seed\\DBContext.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T07:06:19.46Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 13,
-              "Title": "HttpContextHelper.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Helper\\HttpContextHelper.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Helper\\HttpContextHelper.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Helper\\HttpContextHelper.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Helper\\HttpContextHelper.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAAA4AAAAkAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T07:06:26.224Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 16,
-              "Title": "HttpContextSetup.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\HttpContextSetup.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Extensions\\HttpContextSetup.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\HttpContextSetup.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Extensions\\HttpContextSetup.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:52:55.361Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 15,
-              "Title": "AspNetUser.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\HttpContextUser\\AspNetUser.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\HttpContextUser\\AspNetUser.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\HttpContextUser\\AspNetUser.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\HttpContextUser\\AspNetUser.cs",
-              "ViewState": "AQIAAE4AAAAAAAAAAAAowC0AAAAjAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T06:26:07.062Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 21,
-              "Title": "DbSetup.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\DbSetup.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Extensions\\DbSetup.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\DbSetup.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Extensions\\DbSetup.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:52:54.182Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 22,
-              "Title": "AutofacModuleRegister.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\AutofacModuleRegister.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Extensions\\AutofacModuleRegister.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\AutofacModuleRegister.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Extensions\\AutofacModuleRegister.cs",
-              "ViewState": "AQIAAAYAAAAAAAAAAAAAABIAAAAFAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:52:32.561Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 19,
-              "Title": "SwaggerAuthMiddleware.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Middlewares\\SwaggerAuthMiddleware.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Middlewares\\SwaggerAuthMiddleware.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Middlewares\\SwaggerAuthMiddleware.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Middlewares\\SwaggerAuthMiddleware.cs",
-              "ViewState": "AQIAAA4AAAAAAAAAAADwvwAAAAAAAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T08:04:52.726Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 17,
-              "Title": "LogAOP.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\AOP\\LogAOP.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\AOP\\LogAOP.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\AOP\\LogAOP.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\AOP\\LogAOP.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:51:44.291Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 23,
-              "Title": "ApplicationSetup.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\ApplicationSetup.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Extensions\\ApplicationSetup.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\ApplicationSetup.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Extensions\\ApplicationSetup.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:52:28.653Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 24,
-              "Title": "AllOptionRegister.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\AllOptionRegister.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Extensions\\AllOptionRegister.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\AllOptionRegister.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Extensions\\AllOptionRegister.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:52:27.634Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 18,
-              "Title": "SwaggerMiddleware.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Middlewares\\SwaggerMiddleware.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Middlewares\\SwaggerMiddleware.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Middlewares\\SwaggerMiddleware.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Middlewares\\SwaggerMiddleware.cs",
-              "ViewState": "AQIAABEAAAAAAAAAAADwvwAAAAAAAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T08:04:48.721Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 25,
-              "Title": "SwaggerSetup.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\SwaggerSetup.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Extensions\\SwaggerSetup.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\SwaggerSetup.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Extensions\\SwaggerSetup.cs",
-              "ViewState": "AQIAAB4AAAAAAAAAAAAEwDUAAABUAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:53:18.229Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 31,
-              "Title": "Sys_UserService.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_SystemServices\\Sys_UserService.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_SystemServices\\Sys_UserService.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_SystemServices\\Sys_UserService.cs",
-              "RelativeToolTip": "WIDESEAWCS_SystemServices\\Sys_UserService.cs",
-              "ViewState": "AQIAAIkAAAAAAAAAAAAcwAAAAAAkAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T03:49:44.756Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 32,
-              "Title": "QuartzJobHostedService.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\QuartzExtensions\\QuartzJobHostedService.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\QuartzExtensions\\QuartzJobHostedService.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\QuartzExtensions\\QuartzJobHostedService.cs",
-              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\QuartzExtensions\\QuartzJobHostedService.cs",
-              "ViewState": "AQIAAC0AAAAAAAAAAAAAwEcAAAB5AAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T06:10:25.295Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 33,
-              "Title": "IService.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\BaseServices\\IService.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\BaseServices\\IService.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\BaseServices\\IService.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\BaseServices\\IService.cs",
-              "ViewState": "AQIAAEcAAAAAAAAAAAAjwGkAAAAbAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T02:04:11.581Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 30,
-              "Title": "JwtHelper.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Authorization\\JwtHelper.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Authorization\\JwtHelper.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Authorization\\JwtHelper.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Authorization\\JwtHelper.cs",
-              "ViewState": "AQIAABoAAAAAAAAAAAAWwDcAAAAeAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:51:42.453Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 39,
-              "Title": "Dt_Router.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\BasicInfo\\Dt_Router.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\BasicInfo\\Dt_Router.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\BasicInfo\\Dt_Router.cs",
-              "RelativeToolTip": "WIDESEAWCS_Model\\Models\\BasicInfo\\Dt_Router.cs",
-              "ViewState": "AQIAAAYAAAAAAAAAAAAAABQAAAAIAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T01:49:41.909Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 38,
-              "Title": "Dt_Task.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\TaskInfo\\Dt_Task.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\TaskInfo\\Dt_Task.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\TaskInfo\\Dt_Task.cs",
-              "RelativeToolTip": "WIDESEAWCS_Model\\Models\\TaskInfo\\Dt_Task.cs",
-              "ViewState": "AQIAABIAAAAAAAAAAAAAACQAAAAIAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T01:51:06.375Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 26,
-              "Title": "ActionExecuteFilter.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Filter\\ActionExecuteFilter.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Filter\\ActionExecuteFilter.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Filter\\ActionExecuteFilter.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Filter\\ActionExecuteFilter.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T06:31:49.487Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 28,
-              "Title": "AuthorizationResponse.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Authorization\\AuthorizationResponse.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Authorization\\AuthorizationResponse.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Authorization\\AuthorizationResponse.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Authorization\\AuthorizationResponse.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:51:39.476Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 27,
-              "Title": "AuthorizationSetup.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Authorization\\AuthorizationSetup.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Authorization\\AuthorizationSetup.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Authorization\\AuthorizationSetup.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Authorization\\AuthorizationSetup.cs",
-              "ViewState": "AQIAABQAAAAAAAAAAADwvwAAAAAAAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:51:40.668Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 29,
-              "Title": "Sys_UserController.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\Sys_UserController.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\System\\Sys_UserController.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\Sys_UserController.cs",
-              "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\System\\Sys_UserController.cs",
-              "ViewState": "AQIAACwAAAAAAAAAAAAnwEQAAABKAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T03:49:03.307Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 37,
-              "Title": "Dt_TaskExecuteDetail.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\TaskInfo\\Dt_TaskExecuteDetail.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\TaskInfo\\Dt_TaskExecuteDetail.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\TaskInfo\\Dt_TaskExecuteDetail.cs",
-              "RelativeToolTip": "WIDESEAWCS_Model\\Models\\TaskInfo\\Dt_TaskExecuteDetail.cs",
-              "ViewState": "AQIAABgAAAAAAAAAAAAAACQAAAAIAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T01:48:05.083Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 34,
-              "Title": "WIDESEAWCS_Server",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj",
-              "RelativeToolTip": "WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
-              "WhenOpened": "2024-08-27T07:56:47.128Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 36,
-              "Title": "Dt_DeviceProtocolDetail.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Models\\Dt_DeviceProtocolDetail.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Models\\Dt_DeviceProtocolDetail.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Models\\Dt_DeviceProtocolDetail.cs",
-              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Models\\Dt_DeviceProtocolDetail.cs",
-              "ViewState": "AQIAABUAAAAAAAAAAAAAACcAAAAIAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T01:54:33.711Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 35,
               "Title": "Dt_DispatchInfo.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Models\\Dt_DispatchInfo.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Models\\Dt_DispatchInfo.cs",
               "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Models\\Dt_DispatchInfo.cs",
               "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Models\\Dt_DispatchInfo.cs",
-              "ViewState": "AQIAABsAAAAAAAAAAAAAAC4AAAAkAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-28T01:55:11.759Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 40,
-              "Title": "AutoMapperSetup.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Filter\\AutoMapperSetup.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Filter\\AutoMapperSetup.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Filter\\AutoMapperSetup.cs",
-              "RelativeToolTip": "WIDESEAWCS_Server\\Filter\\AutoMapperSetup.cs",
               "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T08:11:36.519Z"
+              "WhenOpened": "2024-08-30T01:45:37.059Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 41,
-              "Title": "SqlsugarSetup.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\SqlsugarSetup.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Extensions\\SqlsugarSetup.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\SqlsugarSetup.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Extensions\\SqlsugarSetup.cs",
-              "ViewState": "AQIAAAYAAAAAAAAAAAAAAAAAAAAAAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:53:07.406Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 42,
-              "Title": "MiniProfilerSetup.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\MiniProfilerSetup.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Extensions\\MiniProfilerSetup.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\MiniProfilerSetup.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Extensions\\MiniProfilerSetup.cs",
+              "DocumentIndex": 18,
+              "Title": "StackerCraneDBName.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs",
+              "RelativeToolTip": "WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs",
               "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:53:05.014Z"
+              "WhenOpened": "2024-08-29T11:30:57.917Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 43,
-              "Title": "MemoryCacheSetup.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\MemoryCacheSetup.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Extensions\\MemoryCacheSetup.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\MemoryCacheSetup.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Extensions\\MemoryCacheSetup.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+              "DocumentIndex": 19,
+              "Title": "StackerCraneTaskCommand.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneTaskCommand.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneTaskCommand.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneTaskCommand.cs",
+              "RelativeToolTip": "WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneTaskCommand.cs",
+              "ViewState": "AQIAABgAAAAAAAAAAAAuwBsAAAA4AAAA",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:53:03.987Z"
+              "WhenOpened": "2024-08-29T11:10:38.27Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 44,
-              "Title": "IpPolicyRateLimitSetup.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\IpPolicyRateLimitSetup.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Extensions\\IpPolicyRateLimitSetup.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\IpPolicyRateLimitSetup.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Extensions\\IpPolicyRateLimitSetup.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+              "DocumentIndex": 17,
+              "Title": "CommonStackerCrane.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\StackerCrane\\CommonStackerCrane.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\StackerCrane\\CommonStackerCrane.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\StackerCrane\\CommonStackerCrane.cs",
+              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\StackerCrane\\CommonStackerCrane.cs",
+              "ViewState": "AQIAAAAAAAAAAAAAAAAAAHsBAAANAAAA",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:52:57.581Z"
+              "WhenOpened": "2024-08-29T11:04:46.116Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 45,
-              "Title": "CorsSetup.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\CorsSetup.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Extensions\\CorsSetup.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\CorsSetup.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Extensions\\CorsSetup.cs",
-              "ViewState": "AQIAAA4AAAAAAAAAAADwvwAAAAAAAAAA",
+              "DocumentIndex": 16,
+              "Title": "SiemensS7Communicator.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Communicator\\Siemens\\SiemensS7Communicator.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Communicator\\Siemens\\SiemensS7Communicator.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Communicator\\Siemens\\SiemensS7Communicator.cs",
+              "RelativeToolTip": "WIDESEAWCS_Communicator\\Siemens\\SiemensS7Communicator.cs",
+              "ViewState": "AQIAAAAAAAAAAAAAAAAAACABAAAjAAAA",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:52:50.096Z"
+              "WhenOpened": "2024-08-29T10:58:24.015Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 46,
-              "Title": "RepositorySetting.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\DB\\RepositorySetting.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\DB\\RepositorySetting.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\DB\\RepositorySetting.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\DB\\RepositorySetting.cs",
-              "ViewState": "AQIAABQAAAAAAAAAAADwvwAAAAAAAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:52:19.638Z"
+              "DocumentIndex": 15,
+              "Title": "WIDESEAWCS_Tasks.csproj",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj",
+              "RelativeToolTip": "WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj",
+              "ViewState": "AQIAAAAAAAAAAAAAAADwvwAAAAAAAAAA",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
+              "WhenOpened": "2024-08-29T11:11:54.978Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 47,
-              "Title": "MainDb.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\DB\\MainDb.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\DB\\MainDb.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\DB\\MainDb.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\DB\\MainDb.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+              "DocumentIndex": 20,
+              "Title": "CommonConveyorLine.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\ConveyorLine\\CommonConveyorLine.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\ConveyorLine\\CommonConveyorLine.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\ConveyorLine\\CommonConveyorLine.cs",
+              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\ConveyorLine\\CommonConveyorLine.cs",
+              "ViewState": "AQIAAIoAAAAAAAAAAAA+wLoAAABAAAAA",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:52:18.738Z"
+              "WhenOpened": "2024-08-29T11:16:55.244Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 48,
-              "Title": "BaseDBConfig.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\DB\\BaseDBConfig.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\DB\\BaseDBConfig.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\DB\\BaseDBConfig.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\DB\\BaseDBConfig.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+              "DocumentIndex": 21,
+              "Title": "IDevice.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\DeviceBase\\IDevice.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\DeviceBase\\IDevice.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\DeviceBase\\IDevice.cs",
+              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\DeviceBase\\IDevice.cs",
+              "ViewState": "AQIAABYAAAAAAAAAAAAAwBsAAAANAAAA",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:52:17.238Z"
+              "WhenOpened": "2024-08-29T11:16:45.45Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 49,
-              "Title": "InternalApp.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Core\\InternalApp.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Core\\InternalApp.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Core\\InternalApp.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Core\\InternalApp.cs",
-              "ViewState": "AQIAAAkAAAAAAAAAAAAAAAAAAAAAAAAA",
+              "DocumentIndex": 22,
+              "Title": "Dt_DeviceProtocol.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Models\\Dt_DeviceProtocol.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Models\\Dt_DeviceProtocol.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Models\\Dt_DeviceProtocol.cs",
+              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Models\\Dt_DeviceProtocol.cs",
+              "ViewState": "AQIAAFgAAAAAAAAAAAA3wGAAAAAoAAAA",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:52:12.55Z"
+              "WhenOpened": "2024-08-29T11:14:33.434Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 50,
-              "Title": "IConfigurableOptions.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Core\\IConfigurableOptions.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Core\\IConfigurableOptions.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Core\\IConfigurableOptions.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Core\\IConfigurableOptions.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+              "DocumentIndex": 23,
+              "Title": "SiemensDBDataType.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Communicator\\Siemens\\SiemensDBDataType.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Communicator\\Siemens\\SiemensDBDataType.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Communicator\\Siemens\\SiemensDBDataType.cs",
+              "RelativeToolTip": "WIDESEAWCS_Communicator\\Siemens\\SiemensDBDataType.cs",
+              "ViewState": "AQIAAB0AAAAAAAAAAAAwwEsAAAAzAAAA",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:52:10.931Z"
+              "WhenOpened": "2024-08-29T11:00:58.514Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 51,
-              "Title": "ConfigurableOptions.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Core\\ConfigurableOptions.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Core\\ConfigurableOptions.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Core\\ConfigurableOptions.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Core\\ConfigurableOptions.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+              "DocumentIndex": 24,
+              "Title": "BaseCommunicator.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Communicator\\BaseCommunicator.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Communicator\\BaseCommunicator.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Communicator\\BaseCommunicator.cs",
+              "RelativeToolTip": "WIDESEAWCS_Communicator\\BaseCommunicator.cs",
+              "ViewState": "AQIAAGAAAAAAAAAAAAAmwDMAAAAnAAAA",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:52:08.71Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 52,
-              "Title": "SqlSugarCacheService.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Caches\\SqlSugarCacheService.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Caches\\SqlSugarCacheService.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Caches\\SqlSugarCacheService.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Caches\\SqlSugarCacheService.cs",
-              "ViewState": "AQIAAAYAAAAAAAAAAAAAAAAAAAAAAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:51:58.833Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 53,
-              "Title": "ICaching.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Caches\\ICaching.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Caches\\ICaching.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Caches\\ICaching.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Caches\\ICaching.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:51:57.17Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 54,
-              "Title": "Caching.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Caches\\Caching.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Caches\\Caching.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Caches\\Caching.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\Caches\\Caching.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:51:53.111Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 55,
-              "Title": "SqlSugarAop.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\AOP\\SqlSugarAop.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\AOP\\SqlSugarAop.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\AOP\\SqlSugarAop.cs",
-              "RelativeToolTip": "WIDESEAWCS_Core\\AOP\\SqlSugarAop.cs",
-              "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-08-27T07:51:46.878Z"
+              "WhenOpened": "2024-08-29T10:57:42.018Z"
             }
           ]
         }
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Communicator/BaseCommunicator.cs b/WIDESEAWCS_Server/WIDESEAWCS_Communicator/BaseCommunicator.cs
index d781b94..d028bd8 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Communicator/BaseCommunicator.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Communicator/BaseCommunicator.cs
@@ -21,7 +21,7 @@
 
 namespace WIDESEAWCS_Communicator
 {
-    public abstract class BaseCommunicator
+    public abstract class BaseCommunicator: IDisposable
     {
         /// <summary>
         /// 鏋勯�犲嚱鏁�
@@ -108,5 +108,7 @@
         public abstract T ReadCustomer<T>(string address) where T : IDataTransfer, new();
 
         public abstract bool WriteCustomer<T>(string address, [NotNull] T value) where T : IDataTransfer, new();
+
+        public abstract void Dispose();
     }
 }
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Siemens/SiemensS7Communicator.cs b/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Siemens/SiemensS7Communicator.cs
index e504bdc..3c1846f 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Siemens/SiemensS7Communicator.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Siemens/SiemensS7Communicator.cs
@@ -27,6 +27,7 @@
 using System.Diagnostics.CodeAnalysis;
 using System.Linq;
 using System.Net;
+using System.Net.NetworkInformation;
 using System.Reflection;
 using System.Text;
 using System.Threading.Tasks;
@@ -38,7 +39,7 @@
     /// 瑗块棬瀛怱7閫氳绫�
     /// </summary>
     [Description("瑗块棬瀛怱7")]
-    public class SiemensS7 : BaseCommunicator, IDisposable
+    public class SiemensS7 : BaseCommunicator
     {
         #region Private Member
         /// <summary>
@@ -67,6 +68,8 @@
         private string _name;
 
         private ILogNet _logNet;
+
+        private bool _isPing = true;
         #endregion Private Member
 
         #region Public Member
@@ -272,6 +275,29 @@
                 throw new CommunicationException($"璇诲彇鏁版嵁寮傚父,閿欒淇℃伅:{ex.Message}", CommunicationErrorType.ReadException, innerException: ex);
             }
         }
+
+        private void Ping()
+        {
+            Task.Run(() =>
+            {
+                while (_isPing)
+                {
+                    try
+                    {
+                        IPStatus status = plc.IpAddressPing();
+                        if (status == IPStatus.Success)
+                            _connected = true;
+                        else
+                            _connected = false;
+                    }
+                    finally
+                    {
+                        Thread.Sleep(100);
+                    }
+                }
+            });
+
+        }
         #endregion
 
         #region Public Method
@@ -284,6 +310,7 @@
         {
             try
             {
+
                 //瀹炰緥鍖栦竴涓タ闂ㄥ瓙鐨凷7鍗忚鐨勯�氳瀵硅薄
                 plc = new SiemensS7Net(SiemensPLCS.S1500)
                 {
@@ -297,7 +324,7 @@
                     LogNet.WriteInfo(Name, string.Format(CommunicationInfoMessage.ConnectSuccess, _ipAddress, _port));
                 else
                     LogNet.WriteError(Name, string.Format(CommunicationExceptionMessage.ConnectFaild, _ipAddress, _port, operateResult.Message));
-
+                Ping();
                 return operateResult.IsSuccess;
             }
             catch (Exception ex)
@@ -625,9 +652,11 @@
         #endregion
 
         // 鏄惧紡瀹炵幇IDisposable鎺ュ彛浠ユ彁渚涘瀮鍦惧洖鏀舵椂鐨勬竻鐞�  
-        public void Dispose()
+        public override void Dispose()
         {
+            _isPing = false;
             Disconnect();
+            plc.Dispose();
             GC.SuppressFinalize(this);
         }
 
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj b/WIDESEAWCS_Server/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj
index 98532af..cc0b784 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj
+++ b/WIDESEAWCS_Server/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj
@@ -10,4 +10,8 @@
 		<ProjectReference Include="..\WIDESEAWCS_Model\WIDESEAWCS_Model.csproj" />
 	</ItemGroup>
 
+	<ItemGroup>
+	  <Folder Include="BasicInfo\" />
+	</ItemGroup>
+
 </Project>
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_MenuService.cs b/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_MenuService.cs
index fb220a0..7325119 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_MenuService.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_MenuService.cs
@@ -22,5 +22,7 @@
         object GetTreeItem(int menuId);
 
         WebResponseContent Save(Sys_Menu menu);
+
+        WebResponseContent DelMenu(int menuId);
     }
 }
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs b/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
index 63d9db2..535f501 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
@@ -24,6 +24,7 @@
 using System.Threading.Tasks;
 using WIDESEAWCS_Core;
 using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Enums;
 using WIDESEAWCS_DTO.TaskInfo;
 using WIDESEAWCS_Model.Models;
 
@@ -54,36 +55,44 @@
         WebResponseContent ReceiveWMSTask([NotNull] List<WMSTaskDTO> taskDTOs);
 
         /// <summary>
-        /// 
+        /// 鏍规嵁鎵樼洏鍙枫�佽捣濮嬪湴鍧�鍚慦MS璇锋眰浠诲姟
         /// </summary>
-        /// <param name="palletCode"></param>
-        /// <param name="sourceAddress"></param>
+        /// <param name="palletCode">鎵樼洏鍙�</param>
+        /// <param name="sourceAddress">璧峰鍦板潃</param>
         /// <returns></returns>
-        WebResponseContent RequestWMsTask(string palletCode, string sourceAddress);
+        WebResponseContent RequestWMSTask(string palletCode, string sourceAddress);
 
         /// <summary>
-        /// 
+        /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎鏈墽琛岀殑浠诲姟
         /// </summary>
-        /// <param name="deviceNo"></param>
-        /// <param name="currentAddress"></param>
+        /// <param name="deviceNo">璁惧缂栧彿</param>
+        /// <param name="currentAddress">褰撳墠鍦板潃</param>
         /// <returns></returns>
         Dt_Task QueryConveyorLineTask(string deviceNo, string currentAddress);
 
         /// <summary>
-        /// 
+        /// 鏍规嵁浠诲姟鍙枫�佷笅涓�鍦板潃鏌ヨ杈撻�佺嚎鎵ц涓殑浠诲姟
         /// </summary>
-        /// <param name="taskNum"></param>
-        /// <param name="nextAddress"></param>
+        /// <param name="taskNum">浠诲姟鍙�</param>
+        /// <param name="nextAddress">涓嬩竴鍦板潃</param>
         /// <returns></returns>
         Dt_Task QueryExecutingConveyorLineTask(int taskNum, string nextAddress);
 
         /// <summary>
-        /// 
+        /// 鏍规嵁浠诲姟鍙枫�佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎瀹屾垚鐨勪换鍔�
         /// </summary>
-        /// <param name="taskNum"></param>
-        /// <param name="currentAddress"></param>
+        /// <param name="taskNum">浠诲姟鍙�</param>
+        /// <param name="currentAddress">褰撳墠鍦板潃</param>
         /// <returns></returns>
         Dt_Task QueryCompletedConveyorLineTask(int taskNum, string currentAddress);
+
+        /// <summary>
+        /// 鏍规嵁璁惧缂栧彿銆佷换鍔$被鍨嬪垎缁�(鍙��)鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鏂板鐨勪换鍔�
+        /// </summary>
+        /// <param name="deviceNo">璁惧缂栧彿</param>
+        /// <param name="taskTypeGroup">浠诲姟绫诲瀷鍒嗙粍(鍙��)</param>
+        /// <returns></returns>
+        Dt_Task? QuertStackerCraneTask(string deviceNo, TaskTypeGroup? taskTypeGroup = null);
 
         /// <summary>
         /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鏂板鐨勪换鍔�
@@ -137,13 +146,19 @@
         /// <param name="taskNum">浠诲姟鍙�</param>
         WebResponseContent UpdateTaskStatusToNext(int taskNum);
 
+        /// <summary>
+        /// 灏嗕换鍔$姸鎬佷慨鏀逛负涓嬩竴涓姸鎬�
+        /// </summary>
+        /// <param name="task">浠诲姟瀹炰綋瀵硅薄</param>
+        /// <returns></returns>
         WebResponseContent UpdateTaskStatusToNext([NotNull] Dt_Task task);
 
         /// <summary>
-        /// 
+        /// 鏍规嵁浠诲姟鍙枫�佸綋鍓嶅湴鍧�鏇存柊浠诲姟浣嶇疆淇℃伅
         /// </summary>
-        /// <param name="taskNum"></param>
-        /// <param name="currentAddress"></param>
+        /// <param name="taskNum">浠诲姟鍙�</param>
+        /// <param name="currentAddress">褰撳墠鍦板潃</param>
+        /// <returns></returns>
         Dt_Task? UpdatePosition(int taskNum, string currentAddress);
 
         /// <summary>
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/System/Sys_DictionaryList.cs b/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/System/Sys_DictionaryList.cs
index 27d89e8..bd9251a 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/System/Sys_DictionaryList.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/System/Sys_DictionaryList.cs
@@ -34,7 +34,7 @@
         /// 鏁版嵁婧怚D
         /// </summary>
         [SugarColumn(IsNullable = false, ColumnDescription = "鏁版嵁婧怚D")]
-        public string DicId { get; set; }
+        public int DicId { get; set; }
 
         /// <summary>
         /// 鏄惁鍙敤
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj b/WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj
index 2ee5dd7..ac30e83 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj
@@ -15,4 +15,8 @@
 		<ProjectReference Include="..\WIDESEAWCS_Core\WIDESEAWCS_Core.csproj" />
 	</ItemGroup>
 
+	<ItemGroup>
+	  <Folder Include="Models\BasicInfo\" />
+	</ItemGroup>
+
 </Project>
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine.cs b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine.cs
index ccf896d..0ed332f 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine.cs
@@ -30,7 +30,7 @@
 
 namespace WIDESEAWCS_QuartzJob
 {
-    [Description("閫氱敤杈撻�佺嚎")]
+    [Description("杈撻�佺嚎")]
     public class CommonConveyorLine : IConveyorLine
     {
         #region Private Member
@@ -38,22 +38,30 @@
         /// 鍫嗗灈鏈洪�氳瀵硅薄
         /// </summary>
         private readonly BaseCommunicator _communicator;
+
         /// <summary>
         /// 鍫嗗灈鏈哄崗璁俊鎭�
         /// </summary>
         private readonly List<DeviceProDTO> _deviceProDTOs;
+
         /// <summary>
         /// 鍫嗗灈鏈哄崗璁槑缁嗕俊鎭�
         /// </summary>
         private readonly List<DeviceProtocolDetailDTO> _deviceProtocolDetailDTOs;
+
         /// <summary>
         /// 璁惧缂栧彿
         /// </summary>
         public readonly string _deviceCode;
+
         /// <summary>
         /// 璁惧鍚嶇О
         /// </summary>
         public readonly string _deviceName;
+
+        private bool _heartStatr = true;
+
+        private bool _isConnected = true;
         #endregion
 
         #region Public Member
@@ -69,7 +77,7 @@
 
         public bool IsFault => false;
 
-        public bool IsConnected => Communicator.IsConnected;
+        public bool IsConnected => Communicator.IsConnected && _isConnected;
 
         public DeviceStatus Status => DeviceStatus.Offline;
         #endregion
@@ -90,15 +98,40 @@
             _deviceProtocolDetailDTOs = deviceProtocolDetailDTOs;
             _deviceCode = deviceCode;
             _deviceName = deviceName;
+            CheckConnect();
         }
         #endregion
 
         #region Private Method
+        private void CheckConnect()
+        {
+            Task.Run(() =>
+            {
+                while (_heartStatr)
+                {
+                    try
+                    {
+                        DeviceProDTO? devicePro = _deviceProDTOs.FirstOrDefault();
+                        if (devicePro == null)
+                            _isConnected = false;
+                        else
+                            Communicator.ReadAsObj(devicePro.DeviceProAddress, devicePro.DeviceDataType);
+                        _isConnected = true;
+                    }
+                    catch (Exception ex)
+                    {
+                        _isConnected = false;
+                    }
+                    Thread.Sleep(500);
+                }
+            });
+        }
         #endregion
 
         #region Public Method
         public TRsult GetValue<TEnum, TRsult>(TEnum value, string deviceChildCode) where TEnum : Enum
         {
+            if (!IsConnected) throw new Exception($"閫氳杩炴帴閿欒锛岃妫�鏌ョ綉缁�");
             DeviceProDTO? devicePro = _deviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == value.ToString() && x.DeviceChildCode == deviceChildCode);
             return devicePro == null ? throw new Exception() : (TRsult)Communicator.ReadAsObj(devicePro.DeviceProAddress, devicePro.DeviceDataType);
         }
@@ -110,6 +143,7 @@
 
         public bool SendCommand<T>(T command, string deviceChildCode) where T : IDataTransfer, new()
         {
+            if (!IsConnected) throw new Exception($"閫氳杩炴帴閿欒锛岃妫�鏌ョ綉缁�");
             DeviceProDTO? devicePro = _deviceProDTOs.Where(x => x.DeviceProParamType == nameof(DeviceCommand) && x.DeviceChildCode == deviceChildCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
             if (devicePro == null)
             {
@@ -124,6 +158,7 @@
 
         public T ReadCustomer<T>(string deviceChildCode) where T : IDataTransfer, new()
         {
+            if (!IsConnected) throw new Exception($"閫氳杩炴帴閿欒锛岃妫�鏌ョ綉缁�");
             DeviceProDTO? devicePro = _deviceProDTOs.Where(x => x.DeviceProParamType == "ReadDeviceCommand" && x.DeviceChildCode == deviceChildCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
 
             if (devicePro == null)
@@ -140,6 +175,7 @@
             where TEnum : Enum
             where TValue : notnull
         {
+            if (!IsConnected) throw new Exception($"閫氳杩炴帴閿欒锛岃妫�鏌ョ綉缁�");
             DeviceProDTO? devicePro = _deviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == @enum.ToString() && x.DeviceChildCode == deviceChildCode);
             return devicePro == null ? throw new Exception() : Communicator.WriteObj(devicePro.DeviceProAddress, devicePro.DeviceDataType, value);
         }
@@ -170,6 +206,13 @@
             //todo 閫氳鏈繛鎺ユ椂鎶涘嚭寮傚父
             return false;
         }
+
+        public void Dispose()
+        {
+            _heartStatr = false;
+            _communicator.Dispose();
+            GC.SuppressFinalize(this);
+        }
         #endregion
     }
 }
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_DTO/BasicInfo/RoutersAddDTO.cs b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/DTO/RoutersAddDTO.cs
similarity index 100%
rename from WIDESEAWCS_Server/WIDESEAWCS_DTO/BasicInfo/RoutersAddDTO.cs
rename to WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/DTO/RoutersAddDTO.cs
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/DeviceBase/IDevice.cs b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/DeviceBase/IDevice.cs
index 68fad27..18c0de4 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/DeviceBase/IDevice.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/DeviceBase/IDevice.cs
@@ -27,7 +27,7 @@
     /// <summary>
     /// 璁惧鎺ュ彛灞�
     /// </summary>
-    public interface IDevice
+    public interface IDevice : IDisposable
     {
         /// <summary>
         /// 璁惧缂栧彿
@@ -53,6 +53,6 @@
         /// 璁惧鐘舵��(绌洪棽/杩愯涓�...)
         /// </summary>
         DeviceStatus Status { get; }
-        
+
     }
 }
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_Router.cs b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Models/Dt_Router.cs
similarity index 98%
rename from WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_Router.cs
rename to WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Models/Dt_Router.cs
index 5264d6f..988c1ad 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_Router.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Models/Dt_Router.cs
@@ -8,7 +8,7 @@
 using WIDESEAWCS_Core.DB.Models;
 using WIDESEAWCS_Core.Enums;
 
-namespace WIDESEAWCS_Model.Models
+namespace WIDESEAWCS_QuartzJob.Models
 {
     [SugarTable(nameof(Dt_Router), "璁惧璺敱閰嶇疆")]
     public class Dt_Router : BaseEntity
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/QuartzNet/JobFactory.cs b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/QuartzNet/JobFactory.cs
index ba049e8..96adb62 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/QuartzNet/JobFactory.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/QuartzNet/JobFactory.cs
@@ -46,6 +46,7 @@
         {
             try
             {
+                Console.Out.WriteLine(1);
                 IServiceScope serviceScope = _serviceProvider.CreateScope();
                 IJob? job = serviceScope.ServiceProvider.GetService(bundle.JobDetail.JobType) as IJob;
                 return job;
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/IRouterRepository.cs b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Repository/IRouterRepository.cs
similarity index 75%
rename from WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/IRouterRepository.cs
rename to WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Repository/IRouterRepository.cs
index 1406e72..4854b7c 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoRepository/IRouterRepository.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Repository/IRouterRepository.cs
@@ -4,9 +4,9 @@
 using System.Text;
 using System.Threading.Tasks;
 using WIDESEAWCS_Core.BaseRepository;
-using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob.Models;
 
-namespace WIDESEAWCS_IBasicInfoRepository
+namespace WIDESEAWCS_QuartzJob.Repository
 {
     public interface IRouterRepository : IRepository<Dt_Router>
     {
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/RouterRepository.cs b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Repository/RouterRepository.cs
similarity index 76%
rename from WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/RouterRepository.cs
rename to WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Repository/RouterRepository.cs
index 84b2869..bd21d93 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoRepository/RouterRepository.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Repository/RouterRepository.cs
@@ -4,10 +4,9 @@
 using System.Text;
 using System.Threading.Tasks;
 using WIDESEAWCS_Core.BaseRepository;
-using WIDESEAWCS_IBasicInfoRepository;
-using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob.Models;
 
-namespace WIDESEAWCS_BasicInfoRepository
+namespace WIDESEAWCS_QuartzJob.Repository
 {
     public class RouterRepository : RepositoryBase<Dt_Router>, IRouterRepository
     {
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/IDispatchInfoService.cs b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/IDispatchInfoService.cs
index 1714b5a..75a0d0b 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/IDispatchInfoService.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/IDispatchInfoService.cs
@@ -21,7 +21,6 @@
 using System.Text;
 using System.Threading.Tasks;
 using WIDESEAWCS_Core.BaseServices;
-
 using WIDESEAWCS_QuartzJob.DTO;
 using WIDESEAWCS_QuartzJob.Models;
 
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IRouterService.cs b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/IRouterService.cs
similarity index 88%
rename from WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IRouterService.cs
rename to WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/IRouterService.cs
index bfab351..ff3d8c0 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IRouterService.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/IRouterService.cs
@@ -6,9 +6,9 @@
 using WIDESEAWCS_Core;
 using WIDESEAWCS_Core.BaseServices;
 using WIDESEAWCS_DTO.BasicInfo;
-using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob.Models;
 
-namespace WIDESEAWCS_IBasicInfoService
+namespace WIDESEAWCS_QuartzJob.Service
 {
     public interface IRouterService : IService<Dt_Router>
     {
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/RouterService.cs b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs
similarity index 98%
rename from WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/RouterService.cs
rename to WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs
index df14638..f469b47 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/RouterService.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs
@@ -8,11 +8,9 @@
 using WIDESEAWCS_Core.BaseServices;
 using WIDESEAWCS_Core.Enums;
 using WIDESEAWCS_DTO.BasicInfo;
-using WIDESEAWCS_IBasicInfoRepository;
-using WIDESEAWCS_IBasicInfoService;
-using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob.Models;
 using WIDESEAWCS_QuartzJob.Repository;
+using WIDESEAWCS_QuartzJob.Service;
 
 namespace WIDESEAWCS_BasicInfoService
 {
@@ -25,6 +23,7 @@
             _deviceProtocolRepository = deviceProtocolRepository;
             _deviceInfoRepository = deviceInfoRepository;
         }
+
         //todo 鏂规硶闇�浼樺寲
         public List<Dt_Router> QueryNextRoutes(string startPosi, string endPosi)
         {
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/StackerCrane/CommonStackerCrane.cs b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/StackerCrane/CommonStackerCrane.cs
index e67f1e5..045573d 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/StackerCrane/CommonStackerCrane.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/StackerCrane/CommonStackerCrane.cs
@@ -37,14 +37,14 @@
     /// <summary>
     /// 涓�鑸爢鍨涙満瀹炵幇绫伙紝瀹炵幇鍫嗗灈鏈烘帴鍙e眰
     /// </summary>
-    [Description("閫氱敤鍫嗗灈鏈�")]
+    [Description("鍫嗗灈鏈�")]
     public class CommonStackerCrane : IStackerCrane
     {
         #region Private Member
         /// <summary>
         /// 鍫嗗灈鏈洪�氳瀵硅薄
         /// </summary>
-        private readonly BaseCommunicator _communicator;
+        private BaseCommunicator _communicator;
         /// <summary>
         /// 鍫嗗灈鏈哄崗璁俊鎭�
         /// </summary>
@@ -66,7 +66,11 @@
         /// </summary>
         private int _lastTaskNum;
 
-        private bool _isChecked;
+        private bool _isChecked = false;
+
+        private bool _heartStatr = true;
+
+        private bool _isConnected = true;
         #endregion Private Member
 
         #region Public Member
@@ -148,7 +152,7 @@
         /// <summary>
         /// 閫氳鏄惁宸茶繛鎺�
         /// </summary>
-        public bool IsConnected => Communicator.IsConnected;
+        public bool IsConnected => Communicator.IsConnected && _isConnected;
 
         /// <summary>
         /// 鍫嗗灈鏈轰换鍔″畬鎴愪簨浠�
@@ -184,6 +188,7 @@
             _deviceProtocolDetailDTOs = deviceProtocolDetailDTOs;
             _deviceCode = deviceCode;
             _deviceName = deviceName;
+            CheckConnect();
         }
         #endregion
 
@@ -314,6 +319,30 @@
         {
             return value.Equals(paramValue);
         }
+
+        private void CheckConnect()
+        {
+            Task.Run(() =>
+            {
+                while (_heartStatr)
+                {
+                    try
+                    {
+                        DeviceProDTO? devicePro = _deviceProDTOs.FirstOrDefault();
+                        if (devicePro == null)
+                            _isConnected = false;
+                        else
+                            Communicator.ReadAsObj(devicePro.DeviceProAddress, devicePro.DeviceDataType);
+                        _isConnected = true;
+                    }
+                    catch (Exception ex)
+                    {
+                        _isConnected = false;
+                    }
+                    Thread.Sleep(500);
+                }
+            });
+        }
         #endregion
 
         #region Public Method
@@ -322,8 +351,9 @@
         /// </summary>
         /// <param name="command">浠诲姟鍛戒护</param>
         /// <returns></returns>
-        public bool SendCommand<T>(T command)where T : IDataTransfer, new()
+        public bool SendCommand<T>(T command) where T : IDataTransfer, new()
         {
+            if (!IsConnected) throw new Exception($"閫氳杩炴帴閿欒锛岃妫�鏌ョ綉缁�");
             DeviceProDTO? devicePro = _deviceProDTOs.Where(x => x.DeviceProParamType == nameof(DeviceCommand)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
             if (devicePro == null)
             {
@@ -413,6 +443,7 @@
         /// <exception cref="Exception"></exception>
         public TRsult GetValue<TEnum, TRsult>(TEnum value) where TEnum : Enum
         {
+            if (!IsConnected) throw new Exception($"閫氳杩炴帴閿欒锛岃妫�鏌ョ綉缁�");
             DeviceProDTO? devicePro = _deviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == value.ToString());
             return devicePro == null ? throw new Exception() : (TRsult)Communicator.ReadAsObj(devicePro.DeviceProAddress, devicePro.DeviceDataType);
         }
@@ -423,9 +454,9 @@
         public void Heartbeat()
         {
 
-            //todo 蹇冭烦鍐欏叆
-            throw new NotImplementedException();
         }
+
+        
 
         /// <summary>
         /// 鏍规嵁鍙傛暟鍚嶇О鍐欏叆鍫嗗灈鏈哄搴旂殑鏁版嵁銆�
@@ -440,9 +471,17 @@
             where TEnum : Enum
             where TValue : notnull
         {
+            if (!IsConnected) throw new Exception($"閫氳杩炴帴閿欒锛岃妫�鏌ョ綉缁�");
             DeviceProDTO? devicePro = _deviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == @enum.ToString());
             return devicePro == null ? throw new Exception() : Communicator.WriteObj(devicePro.DeviceProAddress, devicePro.DeviceDataType, value);
         }
+
+        public void Dispose()
+        {
+            _heartStatr = false;
+            _communicator.Dispose();
+            GC.SuppressFinalize(this);
+        }
         #endregion
     }
 }
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/RouterController.cs b/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/RouterController.cs
index 9b3923b..c76f27c 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/RouterController.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/RouterController.cs
@@ -14,10 +14,10 @@
 using WIDESEAWCS_Core.Enums;
 using WIDESEAWCS_Core.Helper;
 using WIDESEAWCS_DTO.BasicInfo;
-using WIDESEAWCS_IBasicInfoService;
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob.Models;
 using WIDESEAWCS_QuartzJob.Repository;
+using WIDESEAWCS_QuartzJob.Service;
 
 namespace WIDESEAWCS_Server.Controllers.BasicInfo
 {
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/System/Sys_MenuController.cs b/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/System/Sys_MenuController.cs
index 1df21dc..8f61352 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/System/Sys_MenuController.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/System/Sys_MenuController.cs
@@ -37,7 +37,7 @@
         [HttpPost, Route("save")]
         public ActionResult Save([FromBody] Sys_Menu menu)
         {
-            if (App.User.IsSuperAdmin)
+            if (App.User.UserId == 1)
             {
                 return Json(Service.Save(menu));
             }
@@ -46,5 +46,10 @@
                 return Json(WebResponseContent.Instance.Error("浠呴檺瓒呯骇绠$悊鍛樹慨鏀规暟鎹�"));
             }
         }
+        [HttpPost, Route("delMenu")]
+        public WebResponseContent DelMenu(int menuId)
+        {
+            return Service.DelMenu(menuId);
+        }
     }
 }
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Server/Program.cs b/WIDESEAWCS_Server/WIDESEAWCS_Server/Program.cs
index 751d478..4f4e913 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Server/Program.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Server/Program.cs
@@ -61,7 +61,7 @@
 
 builder.Services.AddHttpContextSetup();
 
-//builder.Services.AddHostedService<QuartzJobHostedService>();
+builder.Services.AddHostedService<QuartzJobHostedService>();
 
 builder.Services.AddMvc(options =>
 {
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_MenuService.cs b/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_MenuService.cs
index 90931c6..d6446e1 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_MenuService.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_MenuService.cs
@@ -146,7 +146,8 @@
                 bool _changed = false;
                 if (menu.MenuId <= 0)
                 {
-                    BaseDal.AddData(menu);
+                    int id = BaseDal.AddData(menu);
+                    menu.MenuId = id;
                 }
                 else
                 {
@@ -173,5 +174,17 @@
             return webResponse;
 
         }
+
+        public WebResponseContent DelMenu(int menuId)
+        {
+            WebResponseContent webResponse = new WebResponseContent();
+            if(BaseDal.QueryFirst(x=>x.ParentId == menuId) != null)
+            {
+                return webResponse = WebResponseContent.Instance.Error("褰撳墠鑿滃崟瀛樺湪瀛愯彍鍗�,璇峰厛鍒犻櫎瀛愯彍鍗�!");
+            }
+            BaseDal.DeleteDataById(menuId);
+
+            return webResponse = WebResponseContent.Instance.OK("鍒犻櫎鎴愬姛");
+        }
     }
 }
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs b/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
index a479655..5a0ccf0 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -30,11 +30,11 @@
 using WIDESEAWCS_Core.BaseServices;
 using WIDESEAWCS_Core.Enums;
 using WIDESEAWCS_DTO.TaskInfo;
-using WIDESEAWCS_IBasicInfoRepository;
-using WIDESEAWCS_IBasicInfoService;
 using WIDESEAWCS_ITaskInfoRepository;
 using WIDESEAWCS_ITaskInfoService;
 using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob.Models;
+using WIDESEAWCS_QuartzJob.Service;
 
 namespace WIDESEAWCS_TaskInfoService
 {
@@ -121,7 +121,13 @@
             return content;
         }
 
-        public WebResponseContent RequestWMsTask(string palletCode, string sourceAddress)
+        /// <summary>
+        /// 鏍规嵁鎵樼洏鍙枫�佽捣濮嬪湴鍧�鍚慦MS璇锋眰浠诲姟
+        /// </summary>
+        /// <param name="palletCode">鎵樼洏鍙�</param>
+        /// <param name="sourceAddress">璧峰鍦板潃</param>
+        /// <returns></returns>
+        public WebResponseContent RequestWMSTask(string palletCode, string sourceAddress)
         {
             WebResponseContent content = new WebResponseContent();
             try
@@ -148,19 +154,54 @@
             return content;
         }
 
+        /// <summary>
+        /// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎鏈墽琛岀殑浠诲姟
+        /// </summary>
+        /// <param name="deviceNo">璁惧缂栧彿</param>
+        /// <param name="currentAddress">褰撳墠鍦板潃</param>
+        /// <returns></returns>
         public Dt_Task QueryConveyorLineTask(string deviceNo, string currentAddress)
         {
             return BaseDal.QueryFirst(x => (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) && x.CurrentAddress == currentAddress, TaskOrderBy);
         }
 
+        /// <summary>
+        /// 鏍规嵁浠诲姟鍙枫�佷笅涓�鍦板潃鏌ヨ杈撻�佺嚎鎵ц涓殑浠诲姟
+        /// </summary>
+        /// <param name="taskNum">浠诲姟鍙�</param>
+        /// <param name="nextAddress">涓嬩竴鍦板潃</param>
+        /// <returns></returns>
         public Dt_Task QueryExecutingConveyorLineTask(int taskNum, string nextAddress)
         {
-            return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.NextAddress == nextAddress, TaskOrderBy);
+            return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.NextAddress == nextAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting), TaskOrderBy);
         }
 
+        /// <summary>
+        /// 鏍规嵁浠诲姟鍙枫�佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎瀹屾垚鐨勪换鍔�
+        /// </summary>
+        /// <param name="taskNum">浠诲姟鍙�</param>
+        /// <param name="currentAddress">褰撳墠鍦板潃</param>
+        /// <returns></returns>
         public Dt_Task QueryCompletedConveyorLineTask(int taskNum, string currentAddress)
         {
-            return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.CurrentAddress == currentAddress, TaskOrderBy);
+            return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.CurrentAddress == currentAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InFinish || x.TaskState == (int)TaskOutStatusEnum.Line_OutFinish), TaskOrderBy);
+        }
+
+        /// <summary>
+        /// 鏍规嵁璁惧缂栧彿銆佷换鍔$被鍨嬪垎缁�(鍙��)鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鏂板鐨勪换鍔�
+        /// </summary>
+        /// <param name="deviceNo">璁惧缂栧彿</param>
+        /// <param name="taskTypeGroup">浠诲姟绫诲瀷鍒嗙粍(鍙��)</param>
+        /// <returns></returns>
+        public Dt_Task? QuertStackerCraneTask(string deviceNo, TaskTypeGroup? taskTypeGroup = null)
+        {
+            if(taskTypeGroup == null)
+                return BaseDal.QueryFirst(x => x.Roadway == deviceNo && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy);
+            if(taskTypeGroup.Value == TaskTypeGroup.InboundGroup)
+                return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish, TaskOrderBy);
+            if(taskTypeGroup.Value == TaskTypeGroup.OutbondGroup)
+                return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy);
+            return null;
         }
 
         /// <summary>
@@ -285,6 +326,11 @@
             return content;
         }
 
+        /// <summary>
+        /// 灏嗕换鍔$姸鎬佷慨鏀逛负涓嬩竴涓姸鎬�
+        /// </summary>
+        /// <param name="task">浠诲姟瀹炰綋瀵硅薄</param>
+        /// <returns></returns>
         public WebResponseContent UpdateTaskStatusToNext([NotNull] Dt_Task task)
         {
             WebResponseContent content = new WebResponseContent();
@@ -345,6 +391,12 @@
             return content;
         }
 
+        /// <summary>
+        /// 鏍规嵁浠诲姟鍙枫�佸綋鍓嶅湴鍧�鏇存柊浠诲姟浣嶇疆淇℃伅
+        /// </summary>
+        /// <param name="taskNum">浠诲姟鍙�</param>
+        /// <param name="currentAddress">褰撳墠鍦板潃</param>
+        /// <returns></returns>
         public Dt_Task? UpdatePosition(int taskNum, string currentAddress)
         {
             try
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs b/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
index cf2f6af..67bdf60 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
@@ -26,11 +26,11 @@
 using System.Threading.Tasks;
 using WIDESEAWCS_Core;
 using WIDESEAWCS_Core.Helper;
-using WIDESEAWCS_IBasicInfoService;
 using WIDESEAWCS_ITaskInfoService;
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob;
 using WIDESEAWCS_QuartzJob.DTO;
+using WIDESEAWCS_QuartzJob.Service;
 using WIDESEAWCS_Tasks.ConveyorLineJob;
 
 namespace WIDESEAWCS_Tasks
@@ -53,33 +53,40 @@
 
         public Task Execute(IJobExecutionContext context)
         {
+            Console.Out.WriteLine(DateTime.Now);
             try
             {
                 CommonConveyorLine conveyorLine = (CommonConveyorLine)context.JobDetail.JobDataMap.Get("JobParams");
                 if (conveyorLine != null)
                 {
                     List<string> childDeviceCodes = _routerService.QueryAllPositions(conveyorLine.DeviceCode);
-
+                    List<Task> tasks = new List<Task>();
                     foreach (string childDeviceCode in childDeviceCodes)
                     {
-                        ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(childDeviceCode);
-                        if (command != null)
-                        {
-                            DeviceProtocolDetailDTO? deviceProtocolDetail = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.ProtocalDetailValue == command.InteractiveSignal.ToString() && x.DeviceProParamName == nameof(ConveyorLineTaskCommand.InteractiveSignal));
-                            if (deviceProtocolDetail != null)
+                        //Task task = Task.Run(() =>
+                        //{
+                            ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(childDeviceCode);
+                            if (command != null)
                             {
-                                MethodInfo? method = GetType().GetMethod(deviceProtocolDetail.ProtocolDetailType);
-                                if (method != null)
+                                DeviceProtocolDetailDTO? deviceProtocolDetail = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.ProtocalDetailValue == command.InteractiveSignal.ToString() && x.DeviceProParamName == nameof(ConveyorLineTaskCommand.InteractiveSignal));
+                                if (deviceProtocolDetail != null)
                                 {
-                                    method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode });
-                                }
-                                else
-                                {
-                                    //todo 鏈壘鍒板搴斿鐞嗘柟娉�
+                                    MethodInfo? method = GetType().GetMethod(deviceProtocolDetail.ProtocolDetailType);
+                                    if (method != null)
+                                    {
+                                        method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode });
+                                    }
+                                    else
+                                    {
+                                        //todo 鏈壘鍒版柟娉曟椂
+                                    }
                                 }
                             }
-                        }
+                        //});
+                        //tasks.Add(task);
                     }
+
+                    Task.WaitAll(tasks.ToArray());
                 }
 
             }
@@ -87,26 +94,41 @@
             {
                 Console.Out.WriteLine(nameof(CommonConveyorLineJob) + ":" + ex.ToString());
             }
-
+            finally
+            {
+                Console.Out.WriteLine(DateTime.Now);
+            }
             return Task.CompletedTask;
         }
 
+        /// <summary>
+        /// 杈撻�佺嚎璇锋眰鍏ュ簱
+        /// </summary>
+        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+        /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
         public void RequestInbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command,string childDeviceCode)
         {
-            if (_taskService.RequestWMsTask(command.Barcode, childDeviceCode).Status)
+            if (_taskService.RequestWMSTask(command.Barcode, childDeviceCode).Status)
             {
                 Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
                 if (task != null)
                 {
                     ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task);
                     taskCommand.InteractiveSignal = command.InteractiveSignal;
-                    bool t = conveyorLine.SendCommand(taskCommand, childDeviceCode);
+                    conveyorLine.SendCommand(taskCommand, childDeviceCode);
 
                     _taskService.UpdateTaskStatusToNext(task);
                 }
             }
         }
 
+        /// <summary>
+        /// 杈撻�佺嚎璇锋眰鍏ュ簱涓嬩竴鍦板潃
+        /// </summary>
+        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+        /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
         public void RequestInNextAddress(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
         {
             Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
@@ -117,11 +139,17 @@
                 {
                     ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(newTask);
                     taskCommand.InteractiveSignal = command.InteractiveSignal;
-                    bool t = conveyorLine.SendCommand(taskCommand, childDeviceCode);
+                    conveyorLine.SendCommand(taskCommand, childDeviceCode);
                 }
             }
         }
 
+        /// <summary>
+        /// 杈撻�佺嚎鍏ュ簱瀹屾垚
+        /// </summary>
+        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+        /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
         public void ConveyorLineInFinish(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
         {
             Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
@@ -133,6 +161,12 @@
             }
         }
 
+        /// <summary>
+        /// 杈撻�佺嚎璇锋眰鍑轰俊鎭�
+        /// </summary>
+        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+        /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
         public void RequestOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
         {
             Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
@@ -140,12 +174,18 @@
             {
                 ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task);
                 taskCommand.InteractiveSignal = command.InteractiveSignal;
-                bool t = conveyorLine.SendCommand(taskCommand, childDeviceCode);
+                conveyorLine.SendCommand(taskCommand, childDeviceCode);
 
                 _taskService.UpdateTaskStatusToNext(task);
             }
         }
 
+        /// <summary>
+        /// 杈撻�佺嚎璇锋眰鍑哄簱涓嬩竴鍦板潃
+        /// </summary>
+        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+        /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
         public void RequestOutNextAddress(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
         {
             Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
@@ -156,17 +196,23 @@
                 {
                     ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(newTask);
                     taskCommand.InteractiveSignal = command.InteractiveSignal;
-                    bool t = conveyorLine.SendCommand(taskCommand, childDeviceCode);
+                    conveyorLine.SendCommand(taskCommand, childDeviceCode);
                 }
             }
         }
 
+        /// <summary>
+        /// 杈撻�佺嚎鍑哄簱瀹屾垚
+        /// </summary>
+        /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+        /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
         public void ConveyorLineOutFinish(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
         {
             Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
             if (task != null)
             {
-                bool t = conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode);
+                conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode);
                 WebResponseContent content = _taskService.UpdateTaskStatusToNext(task);
                 Console.Out.WriteLine(content.Serialize());
             }
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs b/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
index e126961..5e14f93 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -7,12 +7,13 @@
 using System.Text;
 using System.Threading.Tasks;
 using WIDESEAWCS_Core.Enums;
-using WIDESEAWCS_IBasicInfoService;
 using WIDESEAWCS_ITaskInfoRepository;
 using WIDESEAWCS_ITaskInfoService;
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob;
 using WIDESEAWCS_QuartzJob.DeviceBase;
+using WIDESEAWCS_QuartzJob.Models;
+using WIDESEAWCS_QuartzJob.Service;
 using WIDESEAWCS_QuartzJob.StackerCrane.Enum;
 using WIDESEAWCS_Tasks.StackerCraneJob;
 

--
Gitblit v1.9.3