From f142e86b68f5480f342442b1a4ae4c6a4fc3d912 Mon Sep 17 00:00:00 2001
From: hutongqing <hutongqing@hnkhzn.com>
Date: 星期二, 17 十二月 2024 09:08:12 +0800
Subject: [PATCH] 1

---
 WIDESEAWCS_Server/WIDESEAWCS_Communicator/Omron/OmronEtherNetCommunicator.cs                        |   64 ++
 WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs                  |  214 --------
 WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json                                     |  826 ++++++++++++++++++++------------
 WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs                         |    7 
 WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/47f1c681-b60a-42e6-a1ee-65b795a138fe.vsidx |    0 
 WIDESEAWCS_Server/WIDESEAWCS_Communicator/AllenBrandly/AllenBrandlyEtherNetCommunicator.cs          |   84 +++
 WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/DesignTimeBuild/.dtbcache.v2                                |    0 
 /dev/null                                                                                           |    0 
 WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs                         |    9 
 WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.futdcache.v2                                           |    0 
 WIDESEAWCS_Server/WIDESEAWCS_Communicator/Inovance/InovanceTcpCommunicator.cs                       |   82 ++
 WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json                                                |    2 
 WIDESEAWCS_Client/src/views/Index.vue                                                               |    2 
 WIDESEAWCS_Server/WIDESEAWCS_Communicator/BaseCommunicator.cs                                       |   22 
 WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/b8b56c96-5c9f-4b7c-acab-2d88b650b051.vsidx |    0 
 WIDESEAWCS_Server/WIDESEAWCS_Communicator/Modbus/ModbusTcpCommunicator.cs                           |   79 ++
 WIDESEAWCS_Server/WIDESEAWCS_Communicator/WIDESEAWCS_Communicator.csproj                            |    4 
 WIDESEAWCS_Server/WIDESEAWCS_Communicator/Siemens/SiemensS7Communicator.cs                          |   90 +++
 WIDESEAWCS_Client/src/assets/imgs/wcs_x.png                                                         |    0 
 19 files changed, 921 insertions(+), 564 deletions(-)

diff --git a/WIDESEAWCS_Client/src/assets/imgs/wcs_x.png b/WIDESEAWCS_Client/src/assets/imgs/wcs_x.png
new file mode 100644
index 0000000..df6e40c
--- /dev/null
+++ b/WIDESEAWCS_Client/src/assets/imgs/wcs_x.png
Binary files differ
diff --git a/WIDESEAWCS_Client/src/views/Index.vue b/WIDESEAWCS_Client/src/views/Index.vue
index 6a20d4e..fa2bff7 100644
--- a/WIDESEAWCS_Client/src/views/Index.vue
+++ b/WIDESEAWCS_Client/src/views/Index.vue
@@ -120,7 +120,7 @@
 import VolMenu from "@/components/basic/VolElementMenu.vue";
 import Message from "./index/Message.vue";
 import MessageConfig from "./index/MessageConfig.js";
-var imgUrl = require("@/assets/imgs/wcs_logo.png");
+var imgUrl = require("@/assets/imgs/wcs_x.png");
 var $this;
 var $interval;
 var $indexDate;
diff --git a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/DesignTimeBuild/.dtbcache.v2 b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/DesignTimeBuild/.dtbcache.v2
index 0113842..3adb172 100644
--- a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/DesignTimeBuild/.dtbcache.v2
+++ b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/DesignTimeBuild/.dtbcache.v2
Binary files differ
diff --git a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/005d5771-1857-4071-93b7-c64261f27980.vsidx b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/005d5771-1857-4071-93b7-c64261f27980.vsidx
deleted file mode 100644
index 2fa0c27..0000000
--- a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/005d5771-1857-4071-93b7-c64261f27980.vsidx
+++ /dev/null
Binary files differ
diff --git a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/1da9a23b-264a-4b05-b19c-21e0e7e0f19a.vsidx b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/1da9a23b-264a-4b05-b19c-21e0e7e0f19a.vsidx
deleted file mode 100644
index 11dba91..0000000
--- a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/1da9a23b-264a-4b05-b19c-21e0e7e0f19a.vsidx
+++ /dev/null
Binary files differ
diff --git a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/47f1c681-b60a-42e6-a1ee-65b795a138fe.vsidx b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/47f1c681-b60a-42e6-a1ee-65b795a138fe.vsidx
new file mode 100644
index 0000000..46c4831
--- /dev/null
+++ b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/47f1c681-b60a-42e6-a1ee-65b795a138fe.vsidx
Binary files differ
diff --git a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/b8b56c96-5c9f-4b7c-acab-2d88b650b051.vsidx b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/b8b56c96-5c9f-4b7c-acab-2d88b650b051.vsidx
new file mode 100644
index 0000000..515de46
--- /dev/null
+++ b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/b8b56c96-5c9f-4b7c-acab-2d88b650b051.vsidx
Binary files differ
diff --git a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.futdcache.v2 b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.futdcache.v2
index 46fa26f..71b5e89 100644
--- a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.futdcache.v2
+++ b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/.futdcache.v2
Binary files differ
diff --git a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json
index 2b9fda0..07857db 100644
--- a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json
+++ b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json
@@ -3,28 +3,116 @@
   "WorkspaceRootPath": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\",
   "Documents": [
     {
-      "AbsoluteMoniker": "D:0:0:{A14242DD-DA06-4DC3-8598-1761AA7C76D1}|WIDESEAWCS_SystemServices\\WIDESEAWCS_SystemServices.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_systemservices\\sys_dictionaryservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{A14242DD-DA06-4DC3-8598-1761AA7C76D1}|WIDESEAWCS_SystemServices\\WIDESEAWCS_SystemServices.csproj|solutionrelative:wideseawcs_systemservices\\sys_dictionaryservice.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\\dispatchinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\service\\dispatchinfoservice.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:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_model\\wideseawcs_model.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|",
+      "RelativeMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|solutionrelative:wideseawcs_model\\wideseawcs_model.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\\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\\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\\loghelper\\logger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\loghelper\\logger.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\\system\\sys_log.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|solutionrelative:wideseawcs_model\\models\\system\\sys_log.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{C2D3D138-9109-481B-8BEB-A27597890B2C}|WIDESEAWCS_DTO\\WIDESEAWCS_DTO.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_dto\\system\\vuedictionarydto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{C2D3D138-9109-481B-8BEB-A27597890B2C}|WIDESEAWCS_DTO\\WIDESEAWCS_DTO.csproj|solutionrelative:wideseawcs_dto\\system\\vuedictionarydto.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_dictionaryservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{A14242DD-DA06-4DC3-8598-1761AA7C76D1}|WIDESEAWCS_SystemServices\\WIDESEAWCS_SystemServices.csproj|solutionrelative:wideseawcs_systemservices\\sys_dictionaryservice.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\\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:{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:{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:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_communicator\\wideseawcs_communicator.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|",
+      "RelativeMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|solutionrelative:wideseawcs_communicator\\wideseawcs_communicator.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
+    },
+    {
+      "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:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_server\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\program.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\\quartznet\\jobfactory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\quartznet\\jobfactory.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\\allenbrandly\\allenbrandlyethernetcommunicator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|solutionrelative:wideseawcs_communicator\\allenbrandly\\allenbrandlyethernetcommunicator.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:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_core\\utilities\\entityproperties.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\utilities\\entityproperties.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:{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\\common\\commonstackercrane.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\stackercrane\\common\\commonstackercrane.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_server\\controllers\\system\\sys_dictionarycontroller.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_dictionarycontroller.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\\otherdevices\\otherdevice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\otherdevices\\otherdevice.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}"
+    },
+    {
+      "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:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_communicator\\omron\\omronethernetcommunicator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|solutionrelative:wideseawcs_communicator\\omron\\omronethernetcommunicator.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\\modbus\\modbustcpcommunicator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|solutionrelative:wideseawcs_communicator\\modbus\\modbustcpcommunicator.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\\inovance\\inovancetcpcommunicator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|solutionrelative:wideseawcs_communicator\\inovance\\inovancetcpcommunicator.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}",
@@ -35,24 +123,24 @@
       "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:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_server\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\program.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\\quartznet\\schedulercenterserver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\quartznet\\schedulercenterserver.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_dictionarycontroller.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_dictionarycontroller.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:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_core\\seed\\dbseed.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\seed\\dbseed.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:{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:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_quartzjob\\quartzextensions\\jobsetup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -67,28 +155,12 @@
       "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\quartznet\\quartznetextension.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\\dispatchinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\service\\dispatchinfoservice.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\\dto\\dispatchinfodto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\dto\\dispatchinfodto.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\\quartznet\\schedulercenterserver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\quartznet\\schedulercenterserver.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\\jobbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\jobbase.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\\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:{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}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_tasks\\testjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -203,16 +275,8 @@
       "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\dto\\deviceinfodto.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\\quartznet\\jobfactory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\quartznet\\jobfactory.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\\taskexecutedetailservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|solutionrelative:wideseawcs_taskinfoservice\\taskexecutedetailservice.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:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_tasks\\shuttlecarjob\\shuttlecarjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -225,10 +289,6 @@
     {
       "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:{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\\conveyorline\\iconveyorline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -267,10 +327,6 @@
       "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:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|e:\\wideseawcs\\infrastructurewcs\\wideseawcs_server\\wideseawcs_communicator\\wideseawcs_communicator.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|",
-      "RelativeMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|solutionrelative:wideseawcs_communicator\\wideseawcs_communicator.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
-    },
-    {
       "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}"
     },
@@ -285,10 +341,6 @@
     {
       "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\\otherdevices\\otherdevice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\otherdevices\\otherdevice.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\\otherdevices\\iotherdevice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -318,7 +370,7 @@
       "DocumentGroups": [
         {
           "DockedWidth": 200,
-          "SelectedChildIndex": 4,
+          "SelectedChildIndex": 12,
           "Children": [
             {
               "$type": "Bookmark",
@@ -337,81 +389,400 @@
               "Name": "ST:0:0:{65ddf8c3-8f89-4077-a6c6-dbb8853aab13}"
             },
             {
+              "$type": "Bookmark",
+              "Name": "ST:128:0:{1fc202d4-d401-403c-9834-5b218574bb67}"
+            },
+            {
               "$type": "Document",
-              "DocumentIndex": 0,
-              "Title": "Sys_DictionaryService.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_SystemServices\\Sys_DictionaryService.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_SystemServices\\Sys_DictionaryService.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_SystemServices\\Sys_DictionaryService.cs",
-              "RelativeToolTip": "WIDESEAWCS_SystemServices\\Sys_DictionaryService.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-11-28T07:42:40.328Z",
+              "DocumentIndex": 2,
+              "Title": "WIDESEAWCS_Model.csproj",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj",
+              "RelativeToolTip": "WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABYAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
+              "WhenOpened": "2024-12-16T05:55:48.031Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 5,
-              "Title": "Sys_DictionaryController.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryController.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryController.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryController.cs",
-              "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryController.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+              "DocumentIndex": 6,
+              "Title": "Sys_Log.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\System\\Sys_Log.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\System\\Sys_Log.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\System\\Sys_Log.cs",
+              "RelativeToolTip": "WIDESEAWCS_Model\\Models\\System\\Sys_Log.cs",
+              "ViewState": "AgIAADgAAAAAAAAAAAAcwFMAAAAoAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-11-21T01:29:06.865Z"
+              "WhenOpened": "2024-12-12T02:48:02.899Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 5,
+              "Title": "Logger.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\LogHelper\\Logger.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\LogHelper\\Logger.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\LogHelper\\Logger.cs",
+              "RelativeToolTip": "WIDESEAWCS_Core\\LogHelper\\Logger.cs",
+              "ViewState": "AgIAAIIAAAAAAAAAAAAUwJEAAABlAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-12-12T02:46:50.608Z"
             },
             {
               "$type": "Document",
               "DocumentIndex": 12,
+              "Title": "WIDESEAWCS_Communicator.csproj",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj",
+              "RelativeToolTip": "WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAcAAAARAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
+              "WhenOpened": "2024-11-13T02:53:56.497Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 11,
+              "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": "AgIAAAAAAAAAAAAAAAAAAEYAAAAsAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-11-11T02:20:49.51Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 10,
+              "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": "AgIAAAAAAAAAAAAAAAAAAD0AAABYAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-11-14T06:24:51.147Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 1,
               "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": "AgIAABgAAAAAAAAAAAAAADkAAAAeAAAAAAAAAA==",
+              "ViewState": "AgIAACMAAAAAAAAAAADwvzkAAAAeAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-11-11T02:37:35.521Z"
+              "WhenOpened": "2024-11-11T02:37:35.521Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 11,
-              "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": "AgIAACAAAAAAAAAAAAAwwCsAAAAeAAAAAAAAAA==",
+              "DocumentIndex": 0,
+              "Title": "DispatchInfoService.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\DispatchInfoService.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Service\\DispatchInfoService.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\DispatchInfoService.cs",
+              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Service\\DispatchInfoService.cs",
+              "ViewState": "AgIAABgAAAAAAAAAAAArwDwAAAAyAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-11-11T02:36:57.223Z"
+              "WhenOpened": "2024-11-13T01:06:37.692Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 4,
+              "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": "AgIAAC4AAAAAAAAAAAArwEkAAABPAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-12-12T02:48:56.913Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 3,
+              "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": "AgIAADsAAAAAAAAAAAAgwGgAAAAtAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-12-12T02:49:18.98Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 9,
+              "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": "AgIAABYAAAAAAAAAAAAAwAsAAAAmAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-11-13T01:06:40.549Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 15,
+              "Title": "JobFactory.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\QuartzNet\\JobFactory.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\QuartzNet\\JobFactory.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\QuartzNet\\JobFactory.cs",
+              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\QuartzNet\\JobFactory.cs",
+              "ViewState": "AgIAACQAAAAAAAAAAAAEwD0AAAAMAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-11-11T02:29:37.04Z"
             },
             {
               "$type": "Document",
               "DocumentIndex": 8,
+              "Title": "Sys_DictionaryService.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_SystemServices\\Sys_DictionaryService.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_SystemServices\\Sys_DictionaryService.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_SystemServices\\Sys_DictionaryService.cs",
+              "RelativeToolTip": "WIDESEAWCS_SystemServices\\Sys_DictionaryService.cs",
+              "ViewState": "AgIAADkAAAAAAAAAAAAIwEoAAAA7AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-11-28T07:42:40.328Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 7,
+              "Title": "VueDictionaryDTO.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\System\\VueDictionaryDTO.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_DTO\\System\\VueDictionaryDTO.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\System\\VueDictionaryDTO.cs",
+              "RelativeToolTip": "WIDESEAWCS_DTO\\System\\VueDictionaryDTO.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAoAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-11-15T01:47:05.446Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 25,
+              "Title": "OmronEtherNetCommunicator.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Communicator\\Omron\\OmronEtherNetCommunicator.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Communicator\\Omron\\OmronEtherNetCommunicator.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Communicator\\Omron\\OmronEtherNetCommunicator.cs",
+              "RelativeToolTip": "WIDESEAWCS_Communicator\\Omron\\OmronEtherNetCommunicator.cs",
+              "ViewState": "AgIAAEsBAAAAAAAAAAAAAEsBAAAIAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-12-03T06:35:17.529Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 13,
+              "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": "AgIAAAAAAAAAAAAAAAAAABYAAAASAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-11-11T02:34:48.326Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 16,
+              "Title": "AllenBrandlyEtherNetCommunicator.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Communicator\\AllenBrandly\\AllenBrandlyEtherNetCommunicator.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Communicator\\AllenBrandly\\AllenBrandlyEtherNetCommunicator.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Communicator\\AllenBrandly\\AllenBrandlyEtherNetCommunicator.cs",
+              "RelativeToolTip": "WIDESEAWCS_Communicator\\AllenBrandly\\AllenBrandlyEtherNetCommunicator.cs",
+              "ViewState": "AgIAAG4BAAAAAAAAAAArwKUCAAAJAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-12-03T06:35:39.773Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 14,
               "Title": "Program.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Program.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Program.cs",
               "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Program.cs",
               "RelativeToolTip": "WIDESEAWCS_Server\\Program.cs",
-              "ViewState": "AgIAACUAAAAAAAAAAAAAACUAAAADAAAAAAAAAA==",
+              "ViewState": "AgIAACIAAAAAAAAAAAAAAEAAAAA4AAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2024-11-13T03:40:59.936Z"
             },
             {
               "$type": "Document",
+              "DocumentIndex": 23,
+              "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": "AgIAAAAAAAAAAAAAAAAAAFIAAAA6AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-11-11T06:53:45.876Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 20,
+              "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": "AgIAAFkAAAAAAAAAAADwv2wBAAAIAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-12-03T06:52:46.701Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 27,
+              "Title": "InovanceTcpCommunicator.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Communicator\\Inovance\\InovanceTcpCommunicator.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Communicator\\Inovance\\InovanceTcpCommunicator.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Communicator\\Inovance\\InovanceTcpCommunicator.cs",
+              "RelativeToolTip": "WIDESEAWCS_Communicator\\Inovance\\InovanceTcpCommunicator.cs",
+              "ViewState": "AgIAAEkAAAAAAAAAAAAAAEkAAAAIAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-12-03T06:10:31.214Z"
+            },
+            {
+              "$type": "Document",
               "DocumentIndex": 18,
+              "Title": "EntityProperties.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Utilities\\EntityProperties.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Utilities\\EntityProperties.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Utilities\\EntityProperties.cs",
+              "RelativeToolTip": "WIDESEAWCS_Core\\Utilities\\EntityProperties.cs",
+              "ViewState": "AgIAAKYAAAAAAAAAAAAUwAAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-12-04T07:51:53.507Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 17,
+              "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": "AgIAAAAAAAAAAAAAAAAAABcAAAAUAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-12-05T05:59:47.833Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 26,
+              "Title": "ModbusTcpCommunicator.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Communicator\\Modbus\\ModbusTcpCommunicator.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Communicator\\Modbus\\ModbusTcpCommunicator.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Communicator\\Modbus\\ModbusTcpCommunicator.cs",
+              "RelativeToolTip": "WIDESEAWCS_Communicator\\Modbus\\ModbusTcpCommunicator.cs",
+              "ViewState": "AgIAADkBAAAAAAAAAAAAADkBAAAIAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-12-03T06:35:23.258Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 19,
+              "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": "AgIAADEAAAAAAAAAAAAowDoAAAA3AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-12-03T08:11:26.585Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 22,
+              "Title": "OtherDevice.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\OtherDevices\\OtherDevice.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\OtherDevices\\OtherDevice.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\OtherDevices\\OtherDevice.cs",
+              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\OtherDevices\\OtherDevice.cs",
+              "ViewState": "AgIAAIwAAAAAAAAAAAAUwJEAAAAcAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-11-11T03:36:32.34Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 21,
+              "Title": "CommonStackerCrane.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\StackerCrane\\Common\\CommonStackerCrane.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\StackerCrane\\Common\\CommonStackerCrane.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\StackerCrane\\Common\\CommonStackerCrane.cs",
+              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\StackerCrane\\Common\\CommonStackerCrane.cs",
+              "ViewState": "AgIAAMsBAAAAAAAAAAAswHQBAAAaAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-11-11T02:16:12.855Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 24,
+              "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": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-12-03T06:52:46.064Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 31,
+              "Title": "Sys_DictionaryController.cs",
+              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryController.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryController.cs",
+              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryController.cs",
+              "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryController.cs",
+              "ViewState": "AgIAAAsAAAAAAAAAAAASwBcAAAAcAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-11-21T01:29:06.865Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 29,
+              "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": "AgIAAAAAAAAAAAAAAAAAAA4AAABEAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
+              "WhenOpened": "2024-11-14T07:21:55.699Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 30,
               "Title": "SchedulerCenterServer.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\QuartzNet\\SchedulerCenterServer.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\QuartzNet\\SchedulerCenterServer.cs",
               "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\QuartzNet\\SchedulerCenterServer.cs",
               "RelativeToolTip": "WIDESEAWCS_QuartzJob\\QuartzNet\\SchedulerCenterServer.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAMBAAAXAAAAAAAAAA==",
+              "ViewState": "AgIAALMAAAAAAAAAAAAEwOcAAAAUAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2024-11-19T02:46:45.891Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 9,
+              "DocumentIndex": 28,
+              "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": "AgIAAAoAAAAAAAAAAAAvwC4AAABXAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-11-11T06:54:07.273Z"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 33,
               "Title": "DBSeed.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Seed\\DBSeed.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Seed\\DBSeed.cs",
@@ -423,45 +794,19 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 4,
-              "Title": "CommonStackerCrane.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\StackerCrane\\Common\\CommonStackerCrane.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\StackerCrane\\Common\\CommonStackerCrane.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\StackerCrane\\Common\\CommonStackerCrane.cs",
-              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\StackerCrane\\Common\\CommonStackerCrane.cs",
-              "ViewState": "AgIAAHEBAAAAAAAAAAAIwJ0BAAAzAAAAAAAAAA==",
+              "DocumentIndex": 34,
+              "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": "AgIAACAAAAAAAAAAAAAwwCsAAAAeAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-11-11T02:16:12.855Z"
+              "WhenOpened": "2024-11-11T02:36:57.223Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 2,
-              "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": "AgIAAAAAAAAAAAAAAAAAAAsAAAAmAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-11-13T01:06:40.549Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 1,
-              "Title": "VueDictionaryDTO.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\System\\VueDictionaryDTO.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_DTO\\System\\VueDictionaryDTO.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\System\\VueDictionaryDTO.cs",
-              "RelativeToolTip": "WIDESEAWCS_DTO\\System\\VueDictionaryDTO.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-11-15T01:47:05.446Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 3,
+              "DocumentIndex": 32,
               "Title": "IRouterService.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\IRouterService.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Service\\IRouterService.cs",
@@ -473,7 +818,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 14,
+              "DocumentIndex": 36,
               "Title": "QuartzJobAutofacModuleRegister.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\QuartzExtensions\\QuartzJobAutofacModuleRegister.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\QuartzExtensions\\QuartzJobAutofacModuleRegister.cs",
@@ -485,7 +830,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 13,
+              "DocumentIndex": 35,
               "Title": "JobSetup.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\QuartzExtensions\\JobSetup.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\QuartzExtensions\\JobSetup.cs",
@@ -497,31 +842,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 6,
-              "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": "AgIAABoAAAAAAAAAAADwvygAAAAPAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-11-11T06:54:07.273Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 7,
-              "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": "AgIAAAAAAAAAAAAAAAAAABkAAAAdAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
-              "WhenOpened": "2024-11-14T07:21:55.699Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 15,
+              "DocumentIndex": 37,
               "Title": "QuartzNetExtension.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\QuartzNet\\QuartzNetExtension.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\QuartzNet\\QuartzNetExtension.cs",
@@ -533,19 +854,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 10,
-              "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": "AgIAACYAAAAAAAAAAAAEwD0AAAAJAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-11-11T02:34:48.326Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 19,
+              "DocumentIndex": 39,
               "Title": "JobBase.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\JobBase.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\JobBase.cs",
@@ -557,31 +866,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 20,
-              "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": "AgIAAJAAAAAAAAAAAAAAwLsAAAANAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-11-13T06:57:16.632Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 16,
-              "Title": "DispatchInfoService.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\DispatchInfoService.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Service\\DispatchInfoService.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\DispatchInfoService.cs",
-              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\Service\\DispatchInfoService.cs",
-              "ViewState": "AgIAABgAAAAAAAAAAAAEwEMAAAAXAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-11-13T01:06:37.692Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 17,
+              "DocumentIndex": 38,
               "Title": "DispatchInfoDTO.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\DTO\\DispatchInfoDTO.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\DTO\\DispatchInfoDTO.cs",
@@ -593,7 +878,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 27,
+              "DocumentIndex": 45,
               "Title": "StackerCraneDBName.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs",
@@ -605,19 +890,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 21,
-              "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": "AgIAAAAAAAAAAAAAAAAAABIAAAAGAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-11-11T06:53:45.876Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 25,
+              "DocumentIndex": 43,
               "Title": "SchedulerController.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\QuartzJob\\SchedulerController.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\QuartzJob\\SchedulerController.cs",
@@ -629,7 +902,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 22,
+              "DocumentIndex": 40,
               "Title": "TestJob.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\TestJob.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\TestJob.cs",
@@ -641,7 +914,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 28,
+              "DocumentIndex": 46,
               "Title": "CustomAuthorizeFilter.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Filter\\CustomAuthorizeFilter.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Filter\\CustomAuthorizeFilter.cs",
@@ -653,7 +926,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 23,
+              "DocumentIndex": 41,
               "Title": "ServiceBase.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\BaseServices\\ServiceBase.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Core\\BaseServices\\ServiceBase.cs",
@@ -665,7 +938,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 24,
+              "DocumentIndex": 42,
               "Title": "RepositoryBase.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\BaseRepository\\RepositoryBase.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Core\\BaseRepository\\RepositoryBase.cs",
@@ -677,7 +950,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 29,
+              "DocumentIndex": 47,
               "Title": "AutoMapperConfig.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Filter\\AutoMapperConfig.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Filter\\AutoMapperConfig.cs",
@@ -689,7 +962,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 26,
+              "DocumentIndex": 44,
               "Title": "ISchedulerCenter.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\QuartzNet\\ISchedulerCenter.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\QuartzNet\\ISchedulerCenter.cs",
@@ -701,7 +974,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 30,
+              "DocumentIndex": 48,
               "Title": "CustomProfile.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Filter\\CustomProfile.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Filter\\CustomProfile.cs",
@@ -713,7 +986,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 37,
+              "DocumentIndex": 55,
               "Title": "Sys_Menu.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\System\\Sys_Menu.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\System\\Sys_Menu.cs",
@@ -725,7 +998,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 34,
+              "DocumentIndex": 52,
               "Title": "Sys_MenuRepository.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_SystemRepository\\Sys_MenuRepository.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_SystemRepository\\Sys_MenuRepository.cs",
@@ -737,7 +1010,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 36,
+              "DocumentIndex": 54,
               "Title": "ISys_MenuRepository.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_ISystemRepository\\ISys_MenuRepository.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_ISystemRepository\\ISys_MenuRepository.cs",
@@ -749,7 +1022,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 33,
+              "DocumentIndex": 51,
               "Title": "Sys_RoleService.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_SystemServices\\Sys_RoleService.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_SystemServices\\Sys_RoleService.cs",
@@ -761,7 +1034,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 32,
+              "DocumentIndex": 50,
               "Title": "Sys_MenuService.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_SystemServices\\Sys_MenuService.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_SystemServices\\Sys_MenuService.cs",
@@ -773,7 +1046,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 31,
+              "DocumentIndex": 49,
               "Title": "ISys_MenuService.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_ISystemServices\\ISys_MenuService.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_ISystemServices\\ISys_MenuService.cs",
@@ -785,7 +1058,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 42,
+              "DocumentIndex": 60,
               "Title": "index.html",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\index.html",
               "RelativeDocumentMoniker": "WIDESEAWCS_Server\\index.html",
@@ -797,7 +1070,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 41,
+              "DocumentIndex": 59,
               "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",
@@ -809,7 +1082,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 35,
+              "DocumentIndex": 53,
               "Title": "MenuDTO.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\System\\MenuDTO.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_DTO\\System\\MenuDTO.cs",
@@ -821,7 +1094,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 38,
+              "DocumentIndex": 56,
               "Title": "Sys_MenuController.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\Sys_MenuController.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\System\\Sys_MenuController.cs",
@@ -833,7 +1106,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 40,
+              "DocumentIndex": 58,
               "Title": "AutoMapperSetup.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Filter\\AutoMapperSetup.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Filter\\AutoMapperSetup.cs",
@@ -845,7 +1118,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 39,
+              "DocumentIndex": 57,
               "Title": "WIDESEAWCS.xml",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\WIDESEAWCS.xml",
               "RelativeDocumentMoniker": "WIDESEAWCS_Server\\WIDESEAWCS.xml",
@@ -857,7 +1130,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 43,
+              "DocumentIndex": 61,
               "Title": "DispatchInfoController.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\QuartzJob\\DispatchInfoController.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\QuartzJob\\DispatchInfoController.cs",
@@ -869,7 +1142,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 44,
+              "DocumentIndex": 62,
               "Title": "QuartzJobDataTableHostedService.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\QuartzExtensions\\QuartzJobDataTableHostedService.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\QuartzExtensions\\QuartzJobDataTableHostedService.cs",
@@ -881,7 +1154,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 45,
+              "DocumentIndex": 63,
               "Title": "QuartzLogger.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\LogHelper\\QuartzLogger.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Core\\LogHelper\\QuartzLogger.cs",
@@ -893,7 +1166,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 46,
+              "DocumentIndex": 64,
               "Title": "Storage.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Storage.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Storage.cs",
@@ -905,7 +1178,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 48,
+              "DocumentIndex": 66,
               "Title": "ActionDTO.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\System\\ActionDTO.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_DTO\\System\\ActionDTO.cs",
@@ -917,7 +1190,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 47,
+              "DocumentIndex": 65,
               "Title": "UserPermissions.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\System\\UserPermissions.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_DTO\\System\\UserPermissions.cs",
@@ -929,19 +1202,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 50,
-              "Title": "JobFactory.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\QuartzNet\\JobFactory.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\QuartzNet\\JobFactory.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\QuartzNet\\JobFactory.cs",
-              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\QuartzNet\\JobFactory.cs",
-              "ViewState": "AgIAABgAAAAAAAAAAAAAABwAAAARAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-11-11T02:29:37.04Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 49,
+              "DocumentIndex": 67,
               "Title": "DeviceInfoDTO.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\DTO\\DeviceInfoDTO.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\DTO\\DeviceInfoDTO.cs",
@@ -953,19 +1214,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 52,
-              "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": "AgIAADMAAAAAAAAAAAAAwDkAAAAMAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-11-14T06:24:51.147Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 51,
+              "DocumentIndex": 68,
               "Title": "TaskExecuteDetailService.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskExecuteDetailService.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\TaskExecuteDetailService.cs",
@@ -977,7 +1226,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 53,
+              "DocumentIndex": 69,
               "Title": "ShuttleCarJob.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ShuttleCarJob\\ShuttleCarJob.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\ShuttleCarJob\\ShuttleCarJob.cs",
@@ -989,7 +1238,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 55,
+              "DocumentIndex": 71,
               "Title": "Dt_DeviceProtocol.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Models\\Dt_DeviceProtocol.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Models\\Dt_DeviceProtocol.cs",
@@ -1001,7 +1250,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 54,
+              "DocumentIndex": 70,
               "Title": "DeviceProDTO.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\DTO\\DeviceProDTO.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\DTO\\DeviceProDTO.cs",
@@ -1013,19 +1262,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 56,
-              "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": "AgIAALEAAAAAAAAAAAAewNAAAAA+AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-11-11T02:20:49.51Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 57,
+              "DocumentIndex": 72,
               "Title": "IConveyorLine.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\ConveyorLine\\IConveyorLine.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\ConveyorLine\\IConveyorLine.cs",
@@ -1037,7 +1274,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 58,
+              "DocumentIndex": 73,
               "Title": "DeviceProtocolDetailService.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\DeviceProtocolDetailService.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Service\\DeviceProtocolDetailService.cs",
@@ -1049,7 +1286,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 60,
+              "DocumentIndex": 75,
               "Title": "Dt_Router.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Models\\Dt_Router.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Models\\Dt_Router.cs",
@@ -1061,7 +1298,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 61,
+              "DocumentIndex": 76,
               "Title": "Dt_DeviceProtocolDetail.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Models\\Dt_DeviceProtocolDetail.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Models\\Dt_DeviceProtocolDetail.cs",
@@ -1073,7 +1310,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 59,
+              "DocumentIndex": 74,
               "Title": "DeviceInfoService.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\DeviceInfoService.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Service\\DeviceInfoService.cs",
@@ -1085,7 +1322,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 62,
+              "DocumentIndex": 77,
               "Title": "BaseEntity.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\DB\\Models\\BaseEntity.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Core\\DB\\Models\\BaseEntity.cs",
@@ -1097,7 +1334,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 63,
+              "DocumentIndex": 78,
               "Title": "IStackerCrane.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\StackerCrane\\IStackerCrane.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\StackerCrane\\IStackerCrane.cs",
@@ -1109,7 +1346,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 64,
+              "DocumentIndex": 79,
               "Title": "SpeStackerCrane.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\StackerCrane\\Spec\\SpeStackerCrane.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\StackerCrane\\Spec\\SpeStackerCrane.cs",
@@ -1121,7 +1358,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 65,
+              "DocumentIndex": 80,
               "Title": "WIDESEAWCS_Core.csproj",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj",
               "RelativeDocumentMoniker": "WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj",
@@ -1129,23 +1366,12 @@
               "RelativeToolTip": "WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj",
               "ViewState": "AgIAAAAAAAAAAAAAAAAAABoAAABSAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
-              "WhenOpened": "2024-11-13T02:53:57.289Z"
+              "WhenOpened": "2024-11-13T02:53:57.289Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 66,
-              "Title": "WIDESEAWCS_Communicator.csproj",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj",
-              "RelativeToolTip": "WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
-              "WhenOpened": "2024-11-13T02:53:56.497Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 67,
+              "DocumentIndex": 81,
               "Title": "DeviceProtocolService.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Service\\DeviceProtocolService.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Service\\DeviceProtocolService.cs",
@@ -1157,7 +1383,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 68,
+              "DocumentIndex": 82,
               "Title": "InitializationHostServiceSetup.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Extensions\\InitializationHostServiceSetup.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Extensions\\InitializationHostServiceSetup.cs",
@@ -1169,7 +1395,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 69,
+              "DocumentIndex": 83,
               "Title": "SeedDataHostedService.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\HostedService\\SeedDataHostedService.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_Core\\HostedService\\SeedDataHostedService.cs",
@@ -1181,7 +1407,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 70,
+              "DocumentIndex": 84,
               "Title": "IDevice.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\DeviceBase\\IDevice.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\DeviceBase\\IDevice.cs",
@@ -1193,7 +1419,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 73,
+              "DocumentIndex": 86,
               "Title": "ShuttleCar.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\ShuttleCar\\ShuttleCar.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\ShuttleCar\\ShuttleCar.cs",
@@ -1205,7 +1431,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 74,
+              "DocumentIndex": 87,
               "Title": "IShuttleCar.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\ShuttleCar\\IShuttleCar.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\ShuttleCar\\IShuttleCar.cs",
@@ -1217,7 +1443,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 72,
+              "DocumentIndex": 85,
               "Title": "IOtherDevice.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\OtherDevices\\IOtherDevice.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\OtherDevices\\IOtherDevice.cs",
@@ -1229,19 +1455,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 71,
-              "Title": "OtherDevice.cs",
-              "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\OtherDevices\\OtherDevice.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\OtherDevices\\OtherDevice.cs",
-              "ToolTip": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\OtherDevices\\OtherDevice.cs",
-              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\OtherDevices\\OtherDevice.cs",
-              "ViewState": "AgIAAMAAAAAAAAAAAAAQwIEAAAAIAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2024-11-11T03:36:32.34Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 75,
+              "DocumentIndex": 88,
               "Title": "StackerCraneTaskCompletedEventArgs.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\StackerCrane\\StackerCraneTaskCompletedEventArgs.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\StackerCrane\\StackerCraneTaskCompletedEventArgs.cs",
@@ -1253,7 +1467,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 76,
+              "DocumentIndex": 89,
               "Title": "QuartzJobCreateDataTabel.cs",
               "DocumentMoniker": "E:\\WIDESEAWCS\\InfrastructureWCS\\WIDESEAWCS_Server\\WIDESEAWCS_QuartzJob\\Seed\\QuartzJobCreateDataTabel.cs",
               "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\Seed\\QuartzJobCreateDataTabel.cs",
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Communicator/AllenBrandly/AllenBrandlyEtherNetCommunicator.cs b/WIDESEAWCS_Server/WIDESEAWCS_Communicator/AllenBrandly/AllenBrandlyEtherNetCommunicator.cs
index 4587a42..309bc2e 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Communicator/AllenBrandly/AllenBrandlyEtherNetCommunicator.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Communicator/AllenBrandly/AllenBrandlyEtherNetCommunicator.cs
@@ -200,6 +200,38 @@
                     case TypeCode.Char:
                         return plc.Write(address, Convert.ToChar(value));
                     default:
+                        if (value is int[])
+                        {
+                            return plc.Write(address, value as int[]);
+                        }
+                        else if (value is uint[])
+                        {
+                            return plc.Write(address, value as uint[]);
+                        }
+                        else if (value is short[])
+                        {
+                            return plc.Write(address, value as short[]);
+                        }
+                        else if (value is ushort[])
+                        {
+                            return plc.Write(address, value as ushort[]);
+                        }
+                        else if (value is bool[])
+                        {
+                            return plc.Write(address, value as bool[]);
+                        }
+                        else if (value is float[])
+                        {
+                            return plc.Write(address, value as float[]);
+                        }
+                        else if (value is double[])
+                        {
+                            return plc.Write(address, value as double[]);
+                        }
+                        else if (value is byte[])
+                        {
+                            return plc.Write(address, value as byte[]);
+                        }
                         throw new CommunicationException(string.Format(CommunicationExceptionMessage.DataTypeErrorException, type.Name, address), CommunicationErrorType.TypeError);
                 }
             }
@@ -214,29 +246,54 @@
             }
         }
 
-        private object Read(string address, TypeCode typeCode)
+        private object Read(string address, TypeCode typeCode, ushort length = 1)
         {
             try
             {
                 switch (typeCode)
                 {
                     case TypeCode.Int32:
-                        return (int)GetContent(plc.ReadInt32(address), address);
+                        if (length > 1)
+                            return (int[])GetContent(plc.ReadInt32(address, length), address);
+                        else
+                            return (int)GetContent(plc.ReadInt32(address), address);
                     case TypeCode.UInt32:
-                        return (uint)GetContent(plc.ReadUInt32(address), address);
+                        if (length > 1)
+                            return (uint[])GetContent(plc.ReadUInt32(address, length), address);
+                        else
+                            return (uint)GetContent(plc.ReadUInt32(address), address);
                     case TypeCode.Int16:
-                        return (short)GetContent(plc.ReadInt16(address), address);
+                        if (length > 1)
+                            return (short[])GetContent(plc.ReadInt16(address, length), address);
+                        else
+                            return (short)GetContent(plc.ReadInt16(address), address);
                     case TypeCode.UInt16:
-                        return (ushort)GetContent(plc.ReadUInt16(address), address);
+                        if (length > 1)
+                            return (ushort[])GetContent(plc.ReadUInt16(address, length), address);
+                        else
+                            return (ushort)GetContent(plc.ReadUInt16(address), address);
                     case TypeCode.Single:
-                        return (float)GetContent(plc.ReadFloat(address), address);
+                        if (length > 1)
+                            return (float[])GetContent(plc.ReadFloat(address, length), address);
+                        else
+                            return (float)GetContent(plc.ReadFloat(address), address);
                     case TypeCode.Boolean:
-                        return (bool)GetContent(plc.ReadBool(address), address);
+                        if (length > 1)
+                            return (bool[])GetContent(plc.ReadBool(address, length), address);
+                        else
+                            return (bool)GetContent(plc.ReadBool(address), address);
                     case TypeCode.Byte:
+                        if (length > 1)
+                            return (byte)GetContent(plc.Read(address, length), address);
                         return (byte)GetContent(plc.ReadByte(address), address);
                     case TypeCode.String:
-                        return (string)GetContent(plc.ReadString(address), address);
+                        if (length > 1)
+                            return (string)GetContent(plc.ReadString(address, length), address);
+                        else
+                            return (string)GetContent(plc.ReadString(address), address);
                     case TypeCode.Char:
+                        if (length > 1)
+                            return (char)GetContent(plc.Read(address, length), address);
                         return (char)GetContent(plc.ReadByte(address), address);
                     default:
                         throw new CommunicationException(string.Format(CommunicationExceptionMessage.DataTypeErrorException, typeCode.ToString(), address), CommunicationErrorType.TypeError);
@@ -348,6 +405,12 @@
             return (T)Read(address, Type.GetTypeCode(type));
         }
 
+        public override T[] Read<T>(string address, ushort length)
+        {
+            Type type = typeof(T);
+            return (T[])Read(address, Type.GetTypeCode(type), length);
+        }
+
         public override object ReadAsObj(string address, string dataType)
         {
             return Read(address, SiemensDBDataType.GetTypeCode(dataType));
@@ -429,6 +492,11 @@
             return GetResult(Write(address, value), address, value);
         }
 
+        public override bool Write<T>(string address, T[] values)
+        {
+            return GetResult(Write(address, values), address, values);
+        }
+
         public override bool WriteCustomer<T>(string address, [NotNull] T value)
         {
             StringBuilder stringBuilder = new StringBuilder();
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Communicator/BaseCommunicator.cs b/WIDESEAWCS_Server/WIDESEAWCS_Communicator/BaseCommunicator.cs
index 2d53b02..415fc24 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: IDisposable
+    public abstract class BaseCommunicator : IDisposable
     {
         /// <summary>
         /// 鏋勯�犲嚱鏁�
@@ -76,6 +76,15 @@
         /// <summary>
         /// 浠嶱LC璇诲彇鏁版嵁銆�
         /// </summary>
+        /// <typeparam name="T">璇诲彇鏁版嵁鐨勭被鍨嬫硾鍨嬨��</typeparam>
+        /// <param name="address">婧愬湴鍧�锛屽叿浣撴牸寮忓彇鍐充簬浣跨敤鐨勫伐涓氬崗璁��</param>
+        /// <param name="length">璇诲彇鐨勯暱搴︺��</param>
+        /// <returns></returns>
+        public abstract T[] Read<T>(string address, ushort length);
+
+        /// <summary>
+        /// 浠嶱LC璇诲彇鏁版嵁銆�
+        /// </summary>
         /// <param name="address">婧愬湴鍧�锛屽叿浣撴牸寮忓彇鍐充簬浣跨敤鐨勫伐涓氬崗璁��</param>
         /// <param name="dataType">鏁版嵁绫诲瀷銆�</param>
         /// <returns>璇诲彇鍒扮殑鏁版嵁锛屽鏋滆鍙栧け璐ュ垯鍙兘杩斿洖null鎴栨姏鍑哄紓甯搞��</returns>
@@ -92,13 +101,22 @@
         /// <summary>
         /// 鍚慞LC鍐欏叆鏁版嵁銆�  
         /// </summary>
-        /// <typeparam name="T">璇诲彇鏁版嵁鐨勭被鍨嬫硾鍨嬨��</typeparam>
+        /// <typeparam name="T">鍐欏叆鏁版嵁鐨勭被鍨嬫硾鍨嬨��</typeparam>
         /// <param name="address">婧愬湴鍧�锛屽叿浣撴牸寮忓彇鍐充簬浣跨敤鐨勫伐涓氬崗璁��</param>
         /// <param name="value">瑕佸啓鍏ョ殑鏁版嵁銆�</param>
         /// <returns>濡傛灉鍐欏叆鎴愬姛鍒欒繑鍥瀟rue锛屽惁鍒欐姏鍑哄紓甯搞��</returns>
         public abstract bool Write<T>(string address, T value) where T : notnull;
 
         /// <summary>
+        /// 鍚慞LC鍐欏叆鏁版嵁銆�  
+        /// </summary>
+        /// <typeparam name="T">鍐欏叆鏁版嵁鐨勭被鍨嬫硾鍨嬨��</typeparam>
+        /// <param name="address">婧愬湴鍧�锛屽叿浣撴牸寮忓彇鍐充簬浣跨敤鐨勫伐涓氬崗璁��</param>
+        /// <param name="values">瑕佸啓鍏ョ殑鏁版嵁銆�</param>
+        /// <returns></returns>
+        public abstract bool Write<T>(string address, T[] values);
+
+        /// <summary>
         /// 鍚慞LC鍐欏叆鏁版嵁銆�
         /// </summary>
         /// <param name="address">婧愬湴鍧�锛屽叿浣撴牸寮忓彇鍐充簬浣跨敤鐨勫伐涓氬崗璁��</param>
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Inovance/InovanceTcpCommunicator.cs b/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Inovance/InovanceTcpCommunicator.cs
index e896a41..9b37ae6 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Inovance/InovanceTcpCommunicator.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Inovance/InovanceTcpCommunicator.cs
@@ -183,6 +183,38 @@
                     case TypeCode.Char:
                         return plc.Write(address, Convert.ToChar(value));
                     default:
+                        if (value is int[])
+                        {
+                            return plc.Write(address, value as int[]);
+                        }
+                        else if (value is uint[])
+                        {
+                            return plc.Write(address, value as uint[]);
+                        }
+                        else if (value is short[])
+                        {
+                            return plc.Write(address, value as short[]);
+                        }
+                        else if (value is ushort[])
+                        {
+                            return plc.Write(address, value as ushort[]);
+                        }
+                        else if (value is bool[])
+                        {
+                            return plc.Write(address, value as bool[]);
+                        }
+                        else if (value is float[])
+                        {
+                            return plc.Write(address, value as float[]);
+                        }
+                        else if (value is double[])
+                        {
+                            return plc.Write(address, value as double[]);
+                        }
+                        else if (value is byte[])
+                        {
+                            return plc.Write(address, value as byte[]);
+                        }
                         throw new CommunicationException(string.Format(CommunicationExceptionMessage.DataTypeErrorException, type.Name, address), CommunicationErrorType.TypeError);
                 }
             }
@@ -197,29 +229,51 @@
             }
         }
 
-        private object Read(string address, TypeCode typeCode)
+        private object Read(string address, TypeCode typeCode, ushort length = 1)
         {
             try
             {
                 switch (typeCode)
                 {
                     case TypeCode.Int32:
-                        return (int)GetContent(plc.ReadInt32(address), address);
+                        if (length > 1)
+                            return (int[])GetContent(plc.ReadInt32(address, length), address);
+                        else
+                            return (int)GetContent(plc.ReadInt32(address), address);
                     case TypeCode.UInt32:
-                        return (uint)GetContent(plc.ReadUInt32(address), address);
+                        if (length > 1)
+                            return (uint[])GetContent(plc.ReadUInt32(address, length), address);
+                        else
+                            return (uint)GetContent(plc.ReadUInt32(address), address);
                     case TypeCode.Int16:
-                        return (short)GetContent(plc.ReadInt16(address), address);
+                        if (length > 1)
+                            return (short[])GetContent(plc.ReadInt16(address, length), address);
+                        else
+                            return (short)GetContent(plc.ReadInt16(address), address);
                     case TypeCode.UInt16:
-                        return (ushort)GetContent(plc.ReadUInt16(address), address);
+                        if (length > 1)
+                            return (ushort[])GetContent(plc.ReadUInt16(address, length), address);
+                        else
+                            return (ushort)GetContent(plc.ReadUInt16(address), address);
                     case TypeCode.Single:
-                        return (float)GetContent(plc.ReadFloat(address), address);
+                        if (length > 1)
+                            return (float[])GetContent(plc.ReadFloat(address, length), address);
+                        else
+                            return (float)GetContent(plc.ReadFloat(address), address);
                     case TypeCode.Boolean:
-                        return (bool)GetContent(plc.ReadBool(address), address);
+                        if (length > 1)
+                            return (bool[])GetContent(plc.ReadBool(address, length), address);
+                        else
+                            return (bool)GetContent(plc.ReadBool(address), address);
                     case TypeCode.Byte:
+                        if (length > 1)
+                            return (byte)GetContent(plc.Read(address, length), address);
                         return (byte)GetContent(plc.ReadByte(address), address);
                     case TypeCode.String:
-                        return (string)GetContent(plc.ReadString(address, 1), address);
+                        return (string)GetContent(plc.ReadString(address, length), address);
                     case TypeCode.Char:
+                        if (length > 1)
+                            return (char)GetContent(plc.Read(address, length), address);
                         return (char)GetContent(plc.ReadByte(address), address);
                     default:
                         throw new CommunicationException(string.Format(CommunicationExceptionMessage.DataTypeErrorException, typeCode.ToString(), address), CommunicationErrorType.TypeError);
@@ -278,7 +332,7 @@
                 Ping();
                 return operateResult.IsSuccess;
             }
-            catch(Exception ex)
+            catch (Exception ex)
             {
                 LogNet.WriteException(Name, string.Format(CommunicationExceptionMessage.ConnectFaild, _ipAddress, _port, ex.Message), ex);
                 //杩炴帴寮傚父鏃舵姏鍑鸿嚜瀹氫箟寮傚父绫�
@@ -325,6 +379,11 @@
         {
             Type type = typeof(T);
             return (T)Read(address, Type.GetTypeCode(type));
+        }
+        public override T[] Read<T>(string address, ushort length)
+        {
+            Type type = typeof(T);
+            return (T[])Read(address, Type.GetTypeCode(type), length);
         }
 
         public override object ReadAsObj(string address, string dataType)
@@ -409,6 +468,11 @@
             return GetResult(Write(address, value), address, value);
         }
 
+        public override bool Write<T>(string address, T[] values)
+        {
+            return GetResult(Write(address, values), address, values);
+        }
+
 
         public override bool WriteCustomer<T>(string address, [NotNull] T value)
         {
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Modbus/ModbusTcpCommunicator.cs b/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Modbus/ModbusTcpCommunicator.cs
index 7e34627..e4715bf 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Modbus/ModbusTcpCommunicator.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Modbus/ModbusTcpCommunicator.cs
@@ -183,6 +183,38 @@
                     case TypeCode.Char:
                         return plc.Write(address, Convert.ToChar(value));
                     default:
+                        if (value is int[])
+                        {
+                            return plc.Write(address, value as int[]);
+                        }
+                        else if (value is uint[])
+                        {
+                            return plc.Write(address, value as uint[]);
+                        }
+                        else if (value is short[])
+                        {
+                            return plc.Write(address, value as short[]);
+                        }
+                        else if (value is ushort[])
+                        {
+                            return plc.Write(address, value as ushort[]);
+                        }
+                        else if (value is bool[])
+                        {
+                            return plc.Write(address, value as bool[]);
+                        }
+                        else if (value is float[])
+                        {
+                            return plc.Write(address, value as float[]);
+                        }
+                        else if (value is double[])
+                        {
+                            return plc.Write(address, value as double[]);
+                        }
+                        else if (value is byte[])
+                        {
+                            return plc.Write(address, value as byte[]);
+                        }
                         throw new CommunicationException(string.Format(CommunicationExceptionMessage.DataTypeErrorException, type.Name, address), CommunicationErrorType.TypeError);
                 }
             }
@@ -197,30 +229,48 @@
             }
         }
 
-        private object Read(string address, TypeCode typeCode)
+        private object Read(string address, TypeCode typeCode, ushort length = 1)
         {
             try
             {
                 switch (typeCode)
                 {
                     case TypeCode.Int32:
-                        return (int)GetContent(plc.ReadInt32(address), address);
+                        if (length > 1)
+                            return (int[])GetContent(plc.ReadInt32(address, length), address);
+                        else
+                            return (int)GetContent(plc.ReadInt32(address), address);
                     case TypeCode.UInt32:
-                        return (uint)GetContent(plc.ReadUInt32(address), address);
+                        if (length > 1)
+                            return (uint[])GetContent(plc.ReadUInt32(address, length), address);
+                        else
+                            return (uint)GetContent(plc.ReadUInt32(address), address);
                     case TypeCode.Int16:
-                        return (short)GetContent(plc.ReadInt16(address), address);
+                        if (length > 1)
+                            return (short[])GetContent(plc.ReadInt16(address, length), address);
+                        else
+                            return (short)GetContent(plc.ReadInt16(address), address);
                     case TypeCode.UInt16:
-                        return (ushort)GetContent(plc.ReadUInt16(address), address);
+                        if (length > 1)
+                            return (ushort[])GetContent(plc.ReadUInt16(address, length), address);
+                        else
+                            return (ushort)GetContent(plc.ReadUInt16(address), address);
                     case TypeCode.Single:
-                        return (float)GetContent(plc.ReadFloat(address), address);
+                        if (length > 1)
+                            return (float[])GetContent(plc.ReadFloat(address, length), address);
+                        else
+                            return (float)GetContent(plc.ReadFloat(address), address);
                     case TypeCode.Boolean:
-                        return (bool)GetContent(plc.ReadBool(address), address);
+                        if (length > 1)
+                            return (bool[])GetContent(plc.ReadBool(address, length), address);
+                        else
+                            return (bool)GetContent(plc.ReadBool(address), address);
                     case TypeCode.Byte:
-                        return (byte)GetContent(plc.Read(address, 1), address);
+                        return (byte[])GetContent(plc.Read(address, length), address);
                     case TypeCode.String:
-                        return (string)GetContent(plc.ReadString(address, 1), address);
+                        return (string)GetContent(plc.ReadString(address, length), address);
                     case TypeCode.Char:
-                        return (char)GetContent(plc.Read(address, 1), address);
+                        return (char[])GetContent(plc.Read(address, length), address);
                     default:
                         throw new CommunicationException(string.Format(CommunicationExceptionMessage.DataTypeErrorException, typeCode.ToString(), address), CommunicationErrorType.TypeError);
                 }
@@ -324,6 +374,11 @@
             Type type = typeof(T);
             return (T)Read(address, Type.GetTypeCode(type));
         }
+        public override T[] Read<T>(string address, ushort length)
+        {
+            Type type = typeof(T);
+            return (T[])Read(address, Type.GetTypeCode(type), length);
+        }
 
         public override object ReadAsObj(string address, string dataType)
         {
@@ -406,6 +461,10 @@
         {
             return GetResult(Write(address, value), address, value);
         }
+        public override bool Write<T>(string address, T[] values)
+        {
+            return GetResult(Write(address, values), address, values);
+        }
 
         public override bool WriteCustomer<T>(string address, [NotNull] T value)
         {
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Omron/OmronEtherNetCommunicator.cs b/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Omron/OmronEtherNetCommunicator.cs
index d92c782..52a1111 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Omron/OmronEtherNetCommunicator.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Omron/OmronEtherNetCommunicator.cs
@@ -4,6 +4,7 @@
 using HslCommunication.Profinet.Omron;
 using HslCommunication.Profinet.Siemens;
 using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
@@ -200,6 +201,38 @@
                     case TypeCode.Char:
                         return plc.Write(address, Convert.ToChar(value));
                     default:
+                        if (value is int[])
+                        {
+                            return plc.Write(address, value as int[]);
+                        }
+                        else if (value is uint[])
+                        {
+                            return plc.Write(address, value as uint[]);
+                        }
+                        else if (value is short[])
+                        {
+                            return plc.Write(address, value as short[]);
+                        }
+                        else if (value is ushort[])
+                        {
+                            return plc.Write(address, value as ushort[]);
+                        }
+                        else if (value is bool[])
+                        {
+                            return plc.Write(address, value as bool[]);
+                        }
+                        else if (value is float[])
+                        {
+                            return plc.Write(address, value as float[]);
+                        }
+                        else if (value is double[])
+                        {
+                            return plc.Write(address, value as double[]);
+                        }
+                        else if (value is byte[])
+                        {
+                            return plc.Write(address, value as byte[]);
+                        }
                         throw new CommunicationException(string.Format(CommunicationExceptionMessage.DataTypeErrorException, type.Name, address), CommunicationErrorType.TypeError);
                 }
             }
@@ -214,29 +247,47 @@
             }
         }
 
-        private object Read(string address, TypeCode typeCode)
+        private object Read(string address, TypeCode typeCode, ushort length = 1)
         {
             try
             {
                 switch (typeCode)
                 {
                     case TypeCode.Int32:
+                        if (length > 1)
+                            return (int)GetContent(plc.ReadInt32(address, length), address);
                         return (int)GetContent(plc.ReadInt32(address), address);
                     case TypeCode.UInt32:
+                        if (length > 1)
+                            return (uint)GetContent(plc.ReadUInt32(address, length), address);
                         return (uint)GetContent(plc.ReadUInt32(address), address);
                     case TypeCode.Int16:
+                        if (length > 1)
+                            return (short)GetContent(plc.ReadInt16(address, length), address);
                         return (short)GetContent(plc.ReadInt16(address), address);
                     case TypeCode.UInt16:
+                        if (length > 1)
+                            return (ushort)GetContent(plc.ReadUInt16(address, length), address);
                         return (ushort)GetContent(plc.ReadUInt16(address), address);
                     case TypeCode.Single:
+                        if (length > 1)
+                            return (float)GetContent(plc.ReadFloat(address, length), address);
                         return (float)GetContent(plc.ReadFloat(address), address);
                     case TypeCode.Boolean:
+                        if (length > 1)
+                            return (bool)GetContent(plc.ReadBool(address, length), address);
                         return (bool)GetContent(plc.ReadBool(address), address);
                     case TypeCode.Byte:
+                        if (length > 1)
+                            return (byte)GetContent(plc.Read(address, length), address);
                         return (byte)GetContent(plc.ReadByte(address), address);
                     case TypeCode.String:
+                        if (length > 1)
+                            return (string)GetContent(plc.ReadString(address, length), address);
                         return (string)GetContent(plc.ReadString(address), address);
                     case TypeCode.Char:
+                        if (length > 1)
+                            return (char)GetContent(plc.Read(address, length), address);
                         return (char)GetContent(plc.ReadByte(address), address);
                     default:
                         throw new CommunicationException(string.Format(CommunicationExceptionMessage.DataTypeErrorException, typeCode.ToString(), address), CommunicationErrorType.TypeError);
@@ -347,6 +398,12 @@
             return (T)Read(address, Type.GetTypeCode(type));
         }
 
+        public override T[] Read<T>(string address, ushort length)
+        {
+            Type type = typeof(T);
+            return (T[])Read(address, Type.GetTypeCode(type), length);
+        }
+
         public override object ReadAsObj(string address, string dataType)
         {
             return Read(address, SiemensDBDataType.GetTypeCode(dataType));
@@ -428,6 +485,11 @@
             return GetResult(Write(address, value), address, value);
         }
 
+        public override bool Write<T>(string address, T[] values)
+        {
+            return GetResult(Write(address, values), address, values);
+        }
+
         public override bool WriteCustomer<T>(string address, [NotNull] T value)
         {
             StringBuilder stringBuilder = new StringBuilder();
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Siemens/SiemensS7Communicator.cs b/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Siemens/SiemensS7Communicator.cs
index 7ffe969..2f1436a 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Siemens/SiemensS7Communicator.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Communicator/Siemens/SiemensS7Communicator.cs
@@ -20,6 +20,7 @@
 using HslCommunication.LogNet;
 using HslCommunication.Profinet.Siemens;
 using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
 using System;
 using System.Collections;
 using System.Collections.Generic;
@@ -147,6 +148,10 @@
         /// <exception cref="CommunicationException"></exception>
         private bool GetResult<T>(OperateResult operateResult, string address, T value) where T : notnull
         {
+            if (value is Array)
+            {
+                return operateResult.IsSuccess;
+            }
             StringBuilder stringBuilder = new StringBuilder();
             try
             {
@@ -222,6 +227,38 @@
                     case TypeCode.Char:
                         return plc.Write(address, Convert.ToChar(value));
                     default:
+                        if (value is int[])
+                        {
+                            return plc.Write(address, value as int[]);
+                        }
+                        else if (value is uint[])
+                        {
+                            return plc.Write(address, value as uint[]);
+                        }
+                        else if (value is short[])
+                        {
+                            return plc.Write(address, value as short[]);
+                        }
+                        else if (value is ushort[])
+                        {
+                            return plc.Write(address, value as ushort[]);
+                        }
+                        else if (value is bool[])
+                        {
+                            return plc.Write(address, value as bool[]);
+                        }
+                        else if (value is float[])
+                        {
+                            return plc.Write(address, value as float[]);
+                        }
+                        else if (value is double[])
+                        {
+                            return plc.Write(address, value as double[]);
+                        }
+                        else if (value is byte[])
+                        {
+                            return plc.Write(address, value as byte[]);
+                        }
                         throw new CommunicationException(string.Format(CommunicationExceptionMessage.DataTypeErrorException, type.Name, address), CommunicationErrorType.TypeError);
                 }
             }
@@ -236,29 +273,54 @@
             }
         }
 
-        private object Read(string address, TypeCode typeCode)
+        private object Read(string address, TypeCode typeCode, ushort length = 1)
         {
             try
             {
                 switch (typeCode)
                 {
                     case TypeCode.Int32:
-                        return (int)GetContent(plc.ReadInt32(address), address);
+                        if (length > 1)
+                            return (int[])GetContent(plc.ReadInt32(address, length), address);
+                        else
+                            return (int)GetContent(plc.ReadInt32(address), address);
                     case TypeCode.UInt32:
-                        return (uint)GetContent(plc.ReadUInt32(address), address);
+                        if (length > 1)
+                            return (uint[])GetContent(plc.ReadUInt32(address, length), address);
+                        else
+                            return (uint)GetContent(plc.ReadUInt32(address), address);
                     case TypeCode.Int16:
-                        return (short)GetContent(plc.ReadInt16(address), address);
+                        if (length > 1)
+                            return (short[])GetContent(plc.ReadInt16(address, length), address);
+                        else
+                            return (short)GetContent(plc.ReadInt16(address), address);
                     case TypeCode.UInt16:
-                        return (ushort)GetContent(plc.ReadUInt16(address), address);
+                        if (length > 1)
+                            return (ushort[])GetContent(plc.ReadUInt16(address, length), address);
+                        else
+                            return (ushort)GetContent(plc.ReadUInt16(address), address);
                     case TypeCode.Single:
-                        return (float)GetContent(plc.ReadFloat(address), address);
+                        if (length > 1)
+                            return (float[])GetContent(plc.ReadFloat(address, length), address);
+                        else
+                            return (float)GetContent(plc.ReadFloat(address), address);
                     case TypeCode.Boolean:
-                        return (bool)GetContent(plc.ReadBool(address), address);
+                        if (length > 1)
+                            return (bool[])GetContent(plc.ReadBool(address, length), address);
+                        else
+                            return (bool)GetContent(plc.ReadBool(address), address);
                     case TypeCode.Byte:
+                        if (length > 1)
+                            return (byte)GetContent(plc.Read(address, length), address);
                         return (byte)GetContent(plc.ReadByte(address), address);
                     case TypeCode.String:
-                        return (string)GetContent(plc.ReadString(address), address);
+                        if (length > 1)
+                            return (string)GetContent(plc.ReadString(address, length), address);
+                        else
+                            return (string)GetContent(plc.ReadString(address), address);
                     case TypeCode.Char:
+                        if (length > 1)
+                            return (char)GetContent(plc.Read(address, length), address);
                         return (char)GetContent(plc.ReadByte(address), address);
                     default:
                         throw new CommunicationException(string.Format(CommunicationExceptionMessage.DataTypeErrorException, typeCode.ToString(), address), CommunicationErrorType.TypeError);
@@ -386,6 +448,12 @@
             return (T)Read(address, Type.GetTypeCode(type));
         }
 
+        public override T[] Read<T>(string address, ushort length)
+        {
+            Type type = typeof(T);
+            return (T[])Read(address, Type.GetTypeCode(type), length);
+        }
+
         /// <summary>
         /// 浠嶱LC璇诲彇鏁版嵁杩斿洖object銆�
         /// </summary>
@@ -442,6 +510,12 @@
             return GetResult(Write(address, value), address, value);
         }
 
+
+        public override bool Write<T>(string address, T[] values)
+        {
+            return GetResult(Write(address, values), address, values);
+        }
+
         /// <summary>
         /// 鍚慞LC鍐欏叆鏁版嵁銆�
         /// </summary>
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Communicator/WIDESEAWCS_Communicator.csproj b/WIDESEAWCS_Server/WIDESEAWCS_Communicator/WIDESEAWCS_Communicator.csproj
index 0949fd0..26e5603 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Communicator/WIDESEAWCS_Communicator.csproj
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Communicator/WIDESEAWCS_Communicator.csproj
@@ -4,8 +4,8 @@
 		<TargetFramework>net6.0</TargetFramework>
 		<ImplicitUsings>enable</ImplicitUsings>
 		<Nullable>enable</Nullable>
-		<Version>2.2.1</Version>
-		<Description>鏂板缃楀厠闊﹀皵(AB)EtherNet/IP(CIP)閫氳锛圵riteCustomer銆丷eadCustomer鏂规硶闄よタ闂ㄥ瓙PLC涔嬪浠嶄笉鍙敤锛屼娇鐢ㄦ椂娉ㄦ剰锛�</Description>
+		<Version>2.2.2</Version>
+		<Description>鏂板鍚岀被鍨嬫暟鎹鍙�/鍐欏叆鎸囧畾闀垮害鏂规硶</Description>
 	</PropertyGroup>
 
 	<ItemGroup>
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs b/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs
index be0efdc..8bcc888 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs
@@ -22,10 +22,6 @@
 using WIDESEAWCS_Core.Caches;
 using WIDESEAWCS_QuartzJob.DeviceEnum;
 using WIDESEAWCS_Core.Enums;
-using WIDESEAWCS_Common.CommonEnum;
-using WIDESEAWCS_Common.LocationEnum;
-using WIDESEAWCS_Common.OrderEnum;
-using WIDESEAWCS_Common.StockEnum;
 
 namespace WIDESEAWCS_WCSServer.Controllers.System
 {
@@ -354,216 +350,6 @@
                             foreach (var item in enums)
                             {
                                 FieldInfo? fieldInfo = typeof(RouterInOutType).GetField(((RouterInOutType)item).ToString());
-                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                if (description != null)
-                                {
-                                    data.Add(new { key = item.ToString(), value = description.Description });
-                                }
-                                else
-                                {
-                                    data.Add(new { key = item.ToString(), value = item.ToString() });
-                                }
-                                index++;
-                            }
-
-                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
-                        }
-                        break;
-                    case "outboundStatusEnum":
-                        {
-                            List<object> data = new List<object>();
-                            Type type = typeof(OutboundStatusEnum);
-                            List<int> enums = Enum.GetValues(typeof(OutboundStatusEnum)).Cast<int>().ToList();
-                            int index = 0;
-                            foreach (var item in enums)
-                            {
-                                FieldInfo? fieldInfo = typeof(OutboundStatusEnum).GetField(((OutboundStatusEnum)item).ToString());
-                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                if (description != null)
-                                {
-                                    data.Add(new { key = item.ToString(), value = description.Description });
-                                }
-                                else
-                                {
-                                    data.Add(new { key = item.ToString(), value = item.ToString() });
-                                }
-                                index++;
-                            }
-
-                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
-                        }
-                        break;
-                    case "outOrderType":
-                        {
-                            List<object> data = new List<object>();
-
-                            {
-                                Type type = typeof(OutOrderTypeEnum);
-                                List<int> enums = Enum.GetValues(typeof(OutOrderTypeEnum)).Cast<int>().ToList();
-                                int index = 0;
-                                foreach (var item in enums)
-                                {
-                                    FieldInfo? fieldInfo = typeof(OutOrderTypeEnum).GetField(((OutOrderTypeEnum)item).ToString());
-                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                    if (description != null)
-                                    {
-                                        data.Add(new { key = item.ToString(), value = description.Description });
-                                    }
-                                    else
-                                    {
-                                        data.Add(new { key = item.ToString(), value = item.ToString() });
-                                    }
-                                    index++;
-                                }
-                            }
-
-                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
-                        }
-                        break;
-                    case "orderDetailStatusEnum":
-                        {
-                            List<object> data = new List<object>();
-
-                            {
-                                Type type = typeof(OrderDetailStatusEnum);
-                                List<int> enums = Enum.GetValues(typeof(OrderDetailStatusEnum)).Cast<int>().ToList();
-                                int index = 0;
-                                foreach (var item in enums)
-                                {
-                                    FieldInfo? fieldInfo = typeof(OrderDetailStatusEnum).GetField(((OrderDetailStatusEnum)item).ToString());
-                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                    if (description != null)
-                                    {
-                                        data.Add(new { key = item.ToString(), value = description.Description });
-                                    }
-                                    else
-                                    {
-                                        data.Add(new { key = item.ToString(), value = item.ToString() });
-                                    }
-                                    index++;
-                                }
-                            }
-
-                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
-                        }
-                        break;
-                    case "enableEnum":
-                        {
-                            List<object> data = new List<object>();
-
-                            {
-                                Type type = typeof(EnableEnum);
-                                List<int> enums = Enum.GetValues(typeof(EnableEnum)).Cast<int>().ToList();
-                                int index = 0;
-                                foreach (var item in enums)
-                                {
-                                    FieldInfo? fieldInfo = typeof(EnableEnum).GetField(((EnableEnum)item).ToString());
-                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                    if (description != null)
-                                    {
-                                        data.Add(new { key = item.ToString(), value = description.Description });
-                                    }
-                                    else
-                                    {
-                                        data.Add(new { key = item.ToString(), value = item.ToString() });
-                                    }
-                                    index++;
-                                }
-                            }
-
-                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
-                        }
-                        break;
-                    case "enableStatusEnum":
-                        {
-                            List<object> data = new List<object>();
-
-                            {
-                                Type type = typeof(EnableStatusEnum);
-                                List<int> enums = Enum.GetValues(typeof(EnableStatusEnum)).Cast<int>().ToList();
-                                int index = 0;
-                                foreach (var item in enums)
-                                {
-                                    FieldInfo? fieldInfo = typeof(EnableStatusEnum).GetField(((EnableStatusEnum)item).ToString());
-                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                    if (description != null)
-                                    {
-                                        data.Add(new { key = item.ToString(), value = description.Description });
-                                    }
-                                    else
-                                    {
-                                        data.Add(new { key = item.ToString(), value = item.ToString() });
-                                    }
-                                    index++;
-                                }
-                            }
-
-                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
-                        }
-                        break;
-                    case "locationStatusEnum":
-                        {
-                            List<object> data = new List<object>();
-
-                            {
-                                Type type = typeof(LocationStatusEnum);
-                                List<int> enums = Enum.GetValues(typeof(LocationStatusEnum)).Cast<int>().ToList();
-                                int index = 0;
-                                foreach (var item in enums)
-                                {
-                                    FieldInfo? fieldInfo = typeof(LocationStatusEnum).GetField(((LocationStatusEnum)item).ToString());
-                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                    if (description != null)
-                                    {
-                                        data.Add(new { key = item.ToString(), value = description.Description });
-                                    }
-                                    else
-                                    {
-                                        data.Add(new { key = item.ToString(), value = item.ToString() });
-                                    }
-                                    index++;
-                                }
-                            }
-
-                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
-                        }
-                        break;
-                    case "locationTypeEnum":
-                        {
-                            List<object> data = new List<object>();
-
-                            {
-                                Type type = typeof(LocationTypeEnum);
-                                List<int> enums = Enum.GetValues(typeof(LocationTypeEnum)).Cast<int>().ToList();
-                                int index = 0;
-                                foreach (var item in enums)
-                                {
-                                    FieldInfo? fieldInfo = typeof(LocationTypeEnum).GetField(((LocationTypeEnum)item).ToString());
-                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                    if (description != null)
-                                    {
-                                        data.Add(new { key = item.ToString(), value = description.Description });
-                                    }
-                                    else
-                                    {
-                                        data.Add(new { key = item.ToString(), value = item.ToString() });
-                                    }
-                                    index++;
-                                }
-                            }
-
-                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
-                        }
-                        break;
-                    case "stockStatusEmun":
-                        {
-                            List<object> data = new List<object>();
-                            Type type = typeof(StockStatusEmun);
-                            List<int> enums = Enum.GetValues(typeof(StockStatusEmun)).Cast<int>().ToList();
-                            int index = 0;
-                            foreach (var item in enums)
-                            {
-                                FieldInfo? fieldInfo = typeof(StockStatusEmun).GetField(((StockStatusEmun)item).ToString());
                                 DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                 if (description != null)
                                 {
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json b/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json
index 88d870d..f670ace 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json
@@ -12,7 +12,7 @@
   "MainDB": "DB_WIDESEA", //褰撳墠椤圭洰鐨勪富搴擄紝鎵�瀵瑰簲鐨勮繛鎺ュ瓧绗︿覆鐨凟nabled蹇呴』涓簍rue
   //杩炴帴瀛楃涓�
   //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=",
-  "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWCS_GuoDian;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
+  "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWCS_TEST;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
   //璺ㄥ煙
   "Cors": {
     "PolicyName": "CorsIpAccess", //绛栫暐鍚嶇О
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs b/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
index a4b4314..f82ab1f 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
@@ -36,7 +36,7 @@
 namespace WIDESEAWCS_Tasks
 {
     [DisallowConcurrentExecution]
-    public class CommonConveyorLineJob : JobBase, IJob
+    public class CommonConveyorLineJob : JobBase, IJob, IDisposable
     {
         private readonly ITaskService _taskService;
         private readonly ITaskExecuteDetailService _taskExecuteDetailService;
@@ -59,6 +59,8 @@
                 CommonConveyorLine conveyorLine = (CommonConveyorLine)context.JobDetail.JobDataMap.Get("JobParams");
                 if (conveyorLine != null)
                 {
+                    short[] values = conveyorLine.Communicator.Read<short>("DB2.0", 20);
+
                     //bool result = conveyorLine.Communicator.Write("DB1.0", "AAABBB");
                     //string testVal = conveyorLine.Communicator.Read<string>("DB1.0");
 
@@ -221,5 +223,10 @@
                 Console.Out.WriteLine(content.Serialize());
             }
         }
+
+        public void Dispose()
+        {
+            GC.SuppressFinalize(this);
+        }
     }
 }
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs b/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
index 8112fea..1111567 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -44,7 +44,7 @@
                 if (commonStackerCrane != null)
                 {
                     //short a = commonStackerCrane.Communicator.Read<short>("DB2.2.0");
-                    Console.Out.WriteLine(DateTime.Now + "锛�" + commonStackerCrane.DeviceName);
+                    Console.Out.WriteLine(DateTime.Now + "锛�" + ThreadPool.ThreadCount);
                     if (!commonStackerCrane.IsEventSubscribed)
                     {
                         commonStackerCrane.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;//璁㈤槄浠诲姟瀹屾垚浜嬩欢
@@ -288,5 +288,10 @@
             }
             return stackerCraneTaskCommand;
         }
+
+        public void Dispose()
+        {
+            GC.SuppressFinalize(this);
+        }
     }
 }

--
Gitblit v1.9.3