From e3a2ea164fa3ccde6a1dfc24e99d4eb9b065f69b Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期二, 16 一月 2024 14:26:55 +0800
Subject: [PATCH] PCS

---
 代码管理/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/partial/dt_stationinfo.cs                                         |   21 
 代码管理/PCS/WCS_Server/WIDESEA_Comm/LogInfo/WriteDBLog.cs                                                                   |    3 
 代码管理/PCS/WCS_Client/public/index.html                                                                                    |    2 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Melsec/MelsecMcClient.cs                                                       |    4 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_System/dt_log_pcsController.cs                                    |   21 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Upload/20231220/VV_Dispatch/b2660e45-900f-40ec-8a4a-fb4dc13842da_CADReader.exe        |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/c12e0782-1973-4b9d-b7ac-a1e7d2355bb2_error.png            |    0 
 代码管理/PCS/WCS_Server/WIDESEA_System/Repositories/System/dt_log_pcsRepository.cs                                           |   24 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_System/Partial/dt_log_pcsController.cs                            |   33 
 代码管理/PCS/WCS_Server/WIDESEA_Comm/LogInfo/WriteLog.cs                                                                     |   88 +
 代码管理/PCS/WCS_Server/WIDESEA_WCS/WCSClient/DBExtension.cs                                                                 |   60 +
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Download/20231220/Template/调度信息20231220090759.xlsx                                    |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Jobs/JobBase.cs                                                                          |   81 +
 代码管理/PCS/WCS_Client/public/pcs_logo.png                                                                                  |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/a63b0c06-6694-4366-b926-68f2134c4025_TSW449_3_C1_S2.SPF   |  195 +++
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/dt_MachineinfoService.cs                                                    |   27 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/Partial/VV_DispatchController.cs                              |   10 
 代码管理/PCS/WCS_Server/WIDESEA_System/Services/System/dt_log_pcsService.cs                                                  |   27 
 代码管理/PCS/WCS_Client/public/pcs_log.png                                                                                   |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Upload/20231220/VV_Dispatch/386607d7-fcf9-46bf-9449-0d1d962acc56_太原重工流程疑问.xlsx        |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/工单信息20240108145121.xlsx                                 |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/调度信息20240108170025.xlsx                                 |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Siemens/SiemensPLCClient.cs                                                    |    8 
 代码管理/PCS/WCS_Client/src/extension/widesea_wcs/wcs/VV_Dispatch.js                                                         |   21 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/wwwroot/Upload/Tables/Sys_User/202401091425048266/微信图片_20220505095142.jpg             |    0 
 代码管理/PCS/WCS_Client/src/views/widesea_wcs/wcs/dt_plcinfodetail.vue                                                       |    1 
 代码管理/PCS/WCS_Client/src/extension/widesea_wcs/wcs/dt_Machineinfo.js                                                      |  147 ++
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Upload/20231220/VV_Dispatch/7c10cb80-b2d0-42f7-a2a4-b75b913a5283_CADReader.exe        |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Repositories/system/dt_stationinfoRepository.cs                                          |   24 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240109/Sys_DictionaryList/_微信图片_20220505095142.jpg                           |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/调度信息20240108171108.xlsx                                 |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/WCSClient/DBItemGroup.cs                                                                 |    2 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/Partial/dt_MachineinfoController.cs                           |   56 +
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/工单信息20240108154639.xlsx                                 |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/调度信息20240108172416.xlsx                                 |    0 
 代码管理/PCS/WCS_Server/WIDESEA_System/IServices/System/Partial/Idt_log_pcsService.cs                                        |   13 
 代码管理/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/partial/dt_Machineinfo.cs                                            |   21 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/35c8a51b-b899-411b-9f3b-e12b2a79e03d_TSW449_3_103_PAR.SPF |  102 +
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/dt_MachineinfoService.cs                                            |  164 ++
 代码管理/PCS/WCS_Server/WIDESEA_System/IRepositories/System/Idt_log_pcsRepository.cs                                         |   18 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Upload/20231220/VV_Dispatch/5a8b9fc7-1ed4-411a-99dc-1e8769650591_太重项目疑问点.xlsx         |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/200d388e-8b66-44a2-8e65-a6656639af41_TSW449_3_103_PAR.SPF |  102 +
 代码管理/PCS/WCS_Client/src/views/widesea_system/system/dt_log_pcs.vue                                                       |   68 +
 代码管理/PCS/WCS_Server/WIDESEA_WCS/WCSClient/ModelBus/ModelBusClient.cs                                                     |    4 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/WIDESEA_WCS.csproj                                                                       |    4 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/dt_MachineinfoController.cs                                   |   21 
 代码管理/PCS/WCS_Client/src/views/widesea_wcs/wcs/VV_Dispatch.vue                                                            |    2 
 代码管理/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/dt_Machineinfo.cs                                                    |   96 +
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Repositories/WCS/dt_MachineinfoRepository.cs                                             |   24 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/wwwroot/Upload/Tables/Sys_User/202401081736421771/微信图片_20220505095142.jpg             |    0 
 代码管理/PCS/WCS_Client/public/pcs.png                                                                                       |    0 
 代码管理/PCS/WCS_Server/WIDESEA_System/Services/System/Partial/dt_log_pcsService.cs                                          |   41 
 代码管理/PCS/WCS_Server/WIDESEA_System/IServices/System/Idt_log_pcsService.cs                                                |   12 
 代码管理/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/dt_log_pcs.cs                                                     |   84 +
 代码管理/PCS/WCS_Client/src/extension/widesea_system/system/dt_log_pcs.js                                                    |   96 +
 代码管理/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/dt_plcinfodetail.cs                                                  |    9 
 代码管理/PCS/WCS_Client/src/views/widesea_wcs/wcs/dt_plcinfohead.vue                                                         |    1 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Services/system/Partial/dt_stationinfoService.cs                                         |   41 
 代码管理/PCS/WCS_Client/public/pcs_x.png                                                                                     |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/VV_DispatchService.cs                                               |  166 ++
 代码管理/PCS/WCS_Client/src/assets/imgs/pcs_x.png                                                                            |    0 
 代码管理/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs                                                 |  139 ++
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs                                                                 |   34 
 代码管理/PCS/WCS_Client/src/assets/imgs/pcs_log.png                                                                          |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Jobs/One_two_unitJob.cs                                                                  |  208 +++
 代码管理/PCS/WCS_Server/WIDESEA_Entity/MappingConfiguration/WCS/dt_MachineinfoMapConfig.cs                                   |   16 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/IRepositories/system/Idt_stationinfoRepository.cs                                        |   18 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/dt_equipmentinfoService.cs                                          |    9 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/wwwroot/Upload/Tables/T/202401091511391477/微信图片_20220505095142.jpg                    |    0 
 代码管理/PCS/WCS_Client/src/views/Login.vue                                                                                  |    2 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/VV_Dispatch/_TSW449_3_103_PAR.SPF                                     |  102 +
 代码管理/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/LocationCreation.cs                                                      |   42 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/56cdc468-bdf6-4ae1-b456-1020d7986e76_太原重工.xlsx            |    0 
 代码管理/PCS/WCS_Client/src/router/viewGird.js                                                                               |   10 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/IServices/system/Idt_stationinfoService.cs                                               |   12 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Partial/Idt_MachineinfoService.cs                                          |   25 
 代码管理/PCS/WCS_Server/WIDESEA_Comm/DBItem/GDXDB.cs                                                                         |   57 +
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/dt_stationinfoController.cs                                   |   21 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Download/20240109/Template/调度信息20240109112529.xlsx                                    |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Services/system/dt_stationinfoService.cs                                                 |   27 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/e007f116-b9d4-493b-899d-783a802069e7_TSW449_3_103_PAR.SPF |  102 +
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Download/20231220/Template/调度信息20231220095958.xlsx                                    |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Download/20240108/Template/调度信息20240108171608.xlsx                                    |    0 
 代码管理/PCS/WCS_Client/vue.config.js                                                                                        |    2 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/工单信息20240108151140.xlsx                                 |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Download/20240108/Template/调度信息20240108151655.xlsx                                    |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/IServices/system/Partial/Idt_stationinfoService.cs                                       |   13 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/Partial/dt_stationinfoController.cs                           |   33 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Idt_MachineinfoService.cs                                                  |   12 
 代码管理/PCS/WCS_Server/WIDESEA_Entity/MappingConfiguration/System/dt_log_pcsMapConfig.cs                                    |   16 
 代码管理/PCS/WCS_Client/src/assets/imgs/pcs.png                                                                              |    0 
 代码管理/PCS/WCS_Server/WIDESEA_Entity/MappingConfiguration/System/dt_stationinfoMapConfig.cs                                |   16 
 代码管理/PCS/WCS_Client/src/views/Index.vue                                                                                  |    4 
 代码管理/PCS/WCS_Client/src/views/Upload.vue                                                                                 |  238 ++++
 代码管理/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Partial/IVV_DispatchService.cs                                             |    6 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/IRepositories/WCS/Idt_MachineinfoRepository.cs                                           |   18 
 代码管理/PCS/WCS_Client/src/assets/imgs/pcs_logo.png                                                                         |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Upload/20231220/VV_Dispatch/3a206465-b647-4a96-8504-0281697d2373_CADReader.exe        |    0 
 代码管理/PCS/WCS_Client/config/buttons.js                                                                                    |   31 
 代码管理/PCS/WCS_Client/src/views/widesea_wcs/wcs/dt_Machineinfo.vue                                                         |   67 +
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/工单信息20240108155539.xlsx                                 |    0 
 代码管理/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/partial/dt_log_pcs.cs                                             |   21 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/WCSClient/PLCClient.cs                                                                   |    8 
 103 files changed, 3,182 insertions(+), 71 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/config/buttons.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/config/buttons.js"
index 0c35d18..890cd2d 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/config/buttons.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/config/buttons.js"
@@ -61,16 +61,26 @@
         this.import();
     }
 }
-    // , {
-    // name: "瀵� 鍑�",
-    // icon: 'el-icon-bottom',
-    // type: 'success',
-    // plain: true,
-    // value: 'Export',
-    // onClick: function () {
-    //     this.export();
-    // }
-// }
+    , {
+    name: "瀵� 鍑�",
+    icon: 'el-icon-bottom',
+    type: 'success',
+    plain: true,
+    value: 'Export',
+    onClick: function () {
+        this.export();
+    }
+}
+, {
+    name: "涓� 浼�",
+    icon: 'el-icon-bottom',
+    type: 'success',
+    plain: true,
+    value: 'Upload',
+    onClick: function () {
+        this.upload();
+    }
+}
     // , {
     //     name: "鏁版嵁缁撴瀯",
     //     icon: 'ios-cog',
@@ -80,6 +90,7 @@
     //         this.openViewColumns();
     //     }
     // }
+    
 ]
 
 export default buttons
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/public/index.html" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/public/index.html"
index 548664e..fea1de1 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/public/index.html"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/public/index.html"
@@ -7,7 +7,7 @@
   <meta name="viewport" content="width=device-width,initial-scale=1.0">
   <meta name="keywords" content=".netccore,dotnet core,vue,element,element plus,vue3" />
   <meta name="description" content="" />
-  <link rel="icon" href="<%= BASE_URL %>wcslogo.png">
+  <link rel="icon" href="<%= BASE_URL %>pcs_logo.png">
   <title><%= htmlWebpackPlugin.options.title %></title>
 </head>
 
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/public/pcs.png" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/public/pcs.png"
new file mode 100644
index 0000000..85b32eb
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/public/pcs.png"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/public/pcs_log.png" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/public/pcs_log.png"
new file mode 100644
index 0000000..379dc92
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/public/pcs_log.png"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/public/pcs_logo.png" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/public/pcs_logo.png"
new file mode 100644
index 0000000..233366f
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/public/pcs_logo.png"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/public/pcs_x.png" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/public/pcs_x.png"
new file mode 100644
index 0000000..9f2f5ad
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/public/pcs_x.png"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/pcs.png" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/pcs.png"
new file mode 100644
index 0000000..85b32eb
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/pcs.png"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/pcs_log.png" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/pcs_log.png"
new file mode 100644
index 0000000..379dc92
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/pcs_log.png"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/pcs_logo.png" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/pcs_logo.png"
new file mode 100644
index 0000000..233366f
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/pcs_logo.png"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/pcs_x.png" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/pcs_x.png"
new file mode 100644
index 0000000..9f2f5ad
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/pcs_x.png"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/extension/widesea_system/system/dt_log_pcs.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/extension/widesea_system/system/dt_log_pcs.js"
new file mode 100644
index 0000000..91cef30
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/extension/widesea_system/system/dt_log_pcs.js"
@@ -0,0 +1,96 @@
+import logDetial from "@/views/widesea_system/dialog/logDetial.vue"
+
+let extension = {
+  components: {
+    //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+    gridHeader: logDetial,
+    gridBody: '',
+    gridFooter: '',
+    //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+    modelHeader: '',
+    modelBody: '',
+    modelFooter: ''
+  },
+  tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+  buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+  methods: {
+    //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+    onInit() {
+      this.setFiexdSearchForm(true);
+
+      //榛樿鏌ヨ鍓�7澶╂棩蹇�
+      let dateNow = this.base.getDate(true);
+      let beginDate = this.base.addDays(dateNow, -7);
+      beginDate = beginDate.substring(0, 11) + '00:00:00'
+      let startDate = this.base.addDays(dateNow, 1);
+      this.searchFormFields.createtime = [beginDate, startDate];
+
+      //鑷畾涔夊垪棰滆壊
+      this.columns.forEach(x => {
+        if (x.field == "status") {
+          x.getColor = (row, column) => {
+            if (row != null) {
+              if (row.status == "Sucess") {
+                return "success";
+              } else if (row.status == "Error") {
+                return "error";
+              } else {
+                return "primary";
+              }
+            }
+          }
+        }
+      });
+
+      //娣诲姞璇︽儏鍒�
+      let options = {
+        field: 'oper',
+        title: '鎿嶄綔',
+        type: 'text',
+        width: 30,
+        formatter: (row) => {
+          return '<a class="default_a" href="javascript:void(0);">璇︽儏</a>'
+        },
+        click: (row, column, event) => {
+          this.$refs.gridHeader.rowData = row;
+          this.$refs.gridHeader.showDetialBox = true;
+        }
+      };
+      this.columns.push(options)
+
+    },
+    onInited() {
+      this.height = this.height - 120;
+    },
+    searchBefore(param) {
+      //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+      //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+      return true;
+    },
+    searchAfter(result) {
+      //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+      return true;
+    },
+    addBefore(formData) {
+      //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+      return true;
+    },
+    updateBefore(formData) {
+      //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+      return true;
+    },
+    rowClick({ row, column, event }) {
+      //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+      // this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+    },
+    modelOpenAfter(row) {
+      //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+      //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+      //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+      //(3)this.editFormFields.瀛楁='xxx';
+      //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+      //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+    }
+  }
+};
+export default extension;
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/extension/widesea_wcs/wcs/VV_Dispatch.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/extension/widesea_wcs/wcs/VV_Dispatch.js"
index d0bbd3f..4472d0c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/extension/widesea_wcs/wcs/VV_Dispatch.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/extension/widesea_wcs/wcs/VV_Dispatch.js"
@@ -5,12 +5,13 @@
 **甯哥敤绀轰緥瑙侊細http://v2.volcore.xyz/document/vueDev
 **鍚庡彴鎿嶄綔瑙侊細http://v2.volcore.xyz/document/netCoreDev
 *****************************************************************************************/
+import Upload from "@/views/Upload"
 //姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
 
 let extension = {
   components: {
     //鏌ヨ鐣岄潰鎵╁睍缁勪欢
-    gridHeader: '',
+    gridHeader: Upload,
     gridBody: '',
     gridFooter: '',
     //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
@@ -38,6 +39,15 @@
           this.startServe();
         }
       }
+      // , {
+      //   name: "涓婁紶鏂囦欢",
+      //   // icon: 'el-icon-video-play',
+      //   index: 5,
+      //   type: 'primary',
+      //   onClick: function () {
+      //     this.Upload();
+      //   }
+      // }
     ], box: [], detail: []
   }, //鎵╁睍鐨勬寜閽�
   methods: {
@@ -150,23 +160,26 @@
     //鍚姩鏈嶅姟
     startServe() {
       this.http.post('/api/VV_Dispatch/StartServe', {}, true).then((x) => {
+        this.search();
         if (!x.status) return this.$error(x.message);
         this.$success(x.message);
-        this.search();
         this.$emit("onChangeWCSState", true);
       });
     },
     //鍏抽棴鏈嶅姟
     CloseServe() {
       this.http.post('/api/VV_Dispatch/CloseServe', {}, true).then((x) => {
+        this.search();
         if (!x.status) return this.$error(x.message);
         this.$success(x.message);
-        this.search();
         //閲嶆柊鍔犺浇椤甸潰
         // location.reload()
         this.$emit("onChangeWCSState", false);
       });
-    }
+    },
+    Upload() {
+      this.$refs.gridHeader.detialBox=true;
+    },
   }
 };
 export default extension;
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/extension/widesea_wcs/wcs/dt_Machineinfo.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/extension/widesea_wcs/wcs/dt_Machineinfo.js"
new file mode 100644
index 0000000..aa45eea
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/extension/widesea_wcs/wcs/dt_Machineinfo.js"
@@ -0,0 +1,147 @@
+/*****************************************************************************************
+**  Author:jxx 2022
+**  QQ:283591387
+**瀹屾暣鏂囨。瑙侊細http://v2.volcore.xyz/document/api 銆愪唬鐮佺敓鎴愰〉闈iewGrid銆�
+**甯哥敤绀轰緥瑙侊細http://v2.volcore.xyz/document/vueDev
+**鍚庡彴鎿嶄綔瑙侊細http://v2.volcore.xyz/document/netCoreDev
+*****************************************************************************************/
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+import Upload from "@/views/Upload"
+let extension = {
+  components: {
+    //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+    gridHeader: Upload,
+    gridBody: '',
+    gridFooter: '',
+    //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+    modelHeader: '',
+    modelBody: '',
+    modelFooter: ''
+  },
+  tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+  buttons: { view: [
+    {
+      name: "涓婁紶鏂囦欢",
+      // icon: 'el-icon-video-play',
+      index: 5,
+      type: 'primary',
+      onClick: function () {
+        this.$refs.gridHeader.detialBox=true;
+      }
+    }
+  ], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+  methods: {
+     //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+    onInit() {  //妗嗘灦鍒濆鍖栭厤缃墠锛�
+        //绀轰緥锛氬湪鎸夐挳鐨勬渶鍓嶉潰娣诲姞涓�涓寜閽�
+        //   this.buttons.unshift({  //涔熷彲浠ョ敤push鎴栬�卻plice鏂规硶鏉ヤ慨鏀筨uttons鏁扮粍
+        //     name: '鎸夐挳', //鎸夐挳鍚嶇О
+        //     icon: 'el-icon-document', //鎸夐挳鍥炬爣vue2鐗堟湰瑙乮view鏂囨。icon锛寁ue3鐗堟湰瑙乪lement ui鏂囨。icon(娉ㄦ剰涓嶆槸element puls鏂囨。)
+        //     type: 'primary', //鎸夐挳鏍峰紡vue2鐗堟湰瑙乮view鏂囨。button锛寁ue3鐗堟湰瑙乪lement ui鏂囨。button
+        //     onClick: function () {
+        //       this.$Message.success('鐐瑰嚮浜嗘寜閽�');
+        //     }
+        //   });
+
+        //绀轰緥锛氳缃慨鏀规柊寤恒�佺紪杈戝脊鍑烘瀛楁鏍囩鐨勯暱搴�
+        // this.boxOptions.labelWidth = 150;
+        this.columns.push({
+          field: '鎿嶄綔',
+          title: '鎿嶄綔',
+          width: 150,
+          fixed: 'right',
+          align: 'center',
+          render: (h, { row, column, index }) => {
+            return h('div', {}, [
+              h(
+                'span',
+                {
+                  style: {
+                    'cursor': 'pointer',
+                    'padding': '5px 10px',
+                    'border-radius': '3px',
+                    'background-color': '#67c23a',
+                    'color': '#fff',
+                    'font-size': '13px ',
+                  },
+                  onClick: (e) => {
+                    this.request('UpdateEnable', row);
+                    // this.request(row);
+                  }
+                },
+                '鍏佽'
+              ),
+              h(
+                'span',
+                {
+                  style: {
+                    'cursor': 'pointer',
+                    'margin-left': "10px",
+                    'padding': '5px 10px',
+                    'border-radius': '3px',
+                    'background-color': '#f56c6c',
+                    'color': '#fff',
+                    'font-size': '13px ',
+                  },
+                  onClick: (e) => {
+                    this.request('UpdateDisEnable', row);
+                    // this.request(row);
+                  }
+                },
+                '绂佹'
+              )
+            ]);
+          }
+        });
+    },
+    request(action,row) {
+      // let url = `api/VV_Dispatch/${action}`;
+      let url = `/api/dt_Machineinfo/${action}`;
+      // let params = {
+      //   Name: row.Name,
+      //   Enable:row.Enable
+      // }
+      this.http.post(url , row, true).then((x) => {
+        if (!x.status) return this.$error(x.message);
+        this.$success(x.message);
+        // this.refresh();
+        this.search();
+      });
+    },
+    onInited() {
+      //妗嗘灦鍒濆鍖栭厤缃悗
+      //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+      //this.detailOptions.columns.forEach(column=>{ });
+    },
+    searchBefore(param) {
+      //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+      //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+      return true;
+    },
+    searchAfter(result) {
+      //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+      return true;
+    },
+    addBefore(formData) {
+      //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+      return true;
+    },
+    updateBefore(formData) {
+      //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+      return true;
+    },
+    rowClick({ row, column, event }) {
+      //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+      // this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+    },
+    modelOpenAfter(row) {
+      //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+      //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+      //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+      //(3)this.editFormFields.瀛楁='xxx';
+      //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+      //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+    }
+  }
+};
+export default extension;
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/router/viewGird.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/router/viewGird.js"
index c19a4e1..f5ece9d 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/router/viewGird.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/router/viewGird.js"
@@ -173,6 +173,14 @@
     path: '/dt_ActualProduction_hty',
     name: 'dt_ActualProduction_hty',
     component: () => import('@/views/Work/widesea_wcs/tomes/dt_ActualProduction_hty.vue')
-  }]
+  }    ,{
+        path: '/dt_Machineinfo',
+        name: 'dt_Machineinfo',
+        component: () => import('@/views/widesea_wcs/wcs/dt_Machineinfo.vue')
+    }    ,{
+        path: '/dt_log_pcs',
+        name: 'dt_log_pcs',
+        component: () => import('@/views/widesea_system/system/dt_log_pcs.vue')
+    }]
 
 export default viewgird
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Index.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Index.vue"
index e18bef9..510be12 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Index.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Index.vue"
@@ -14,7 +14,7 @@
     </div>
     <div class="vol-container" :style="{ left: menuWidth - 1 + 'px' }">
       <div class="vol-header">
-        <div class="project-name">WCS_鏍囧噯鐗�</div>
+        <div class="project-name">PCS</div>
         <div class="header-text">
           <!-- <div class="h-link">
             <a
@@ -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_x.png");
+var imgUrl = require("@/assets/imgs/pcs_x.png");
 var $this;
 var $interval;
 var $indexDate;
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Login.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Login.vue"
index 1862a14..3a18553 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Login.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Login.vue"
@@ -1,6 +1,6 @@
 <template>
   <div class="login-container">
-    <div class="project-name">WIDESEA_WCS</div>
+    <div class="project-name">WIDESEA_PCS</div>
     <div class="login-form">
       <div class="form-user" @keypress="loginPress">
         <div class="login-text">
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Upload.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Upload.vue"
new file mode 100644
index 0000000..f88618a
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Upload.vue"
@@ -0,0 +1,238 @@
+<template>
+    <el-dialog v-model="detialBox" title="涓婁紶DNC鏂囦欢" :close-on-press-escape="false" :width="width"
+      :fullscreen="fullscreen" :draggable="draggable" :modal="modal" :before-close="handleClose">
+    <div class="upload-container">
+        
+      <a :href="template.url" ref="template"></a>
+      <div class="button-group">
+        <el-upload
+          style="float: left"
+          ref="uploadFile"
+          :max-size="maxSize"
+          :on-change="clearMsg"
+          :before-upload="beforeUpload"
+          :action="url"
+          :change="handleFileChange"
+        >
+        <!-- <input type="file"  @change="handleFileChange"> -->
+          <el-button size="small"
+            ><i class="el-icon-folder-opened"></i>閫夋嫨鏂囦欢</el-button
+          >
+        </el-upload>
+        <el-button
+          v-if="template.url"
+          style="margin-left: 10px"
+          type="primary"
+          size="small"
+          @click="dowloadTemplate"
+          :loading="loadingStatus"
+        >
+       <i class="el-icon-bottom"></i>
+          涓嬭浇妯℃澘</el-button
+        >
+        <el-button
+          type="success"
+          style="margin-left: 10px"
+          size="small"
+          @click="upload"
+          :loading="loadingStatus"
+        >
+            <i class="el-icon-top"></i>
+          涓婁紶鏂囦欢</el-button
+        >
+      </div>
+      <div class="alert">
+        <el-alert title="涓婁紶璇存槑" type="warning" :closable="false" show-icon
+          >鍙兘涓婁紶<!--excel鏂囦欢,-->鏂囦欢澶у皬涓嶈秴杩噞{ maxSize }}M鐨勬枃浠�</el-alert
+        >
+      </div>
+  
+      <div v-if="file">
+        <h3>鏂囦欢鍒楄〃</h3>
+        <div class="file-info">
+          <span>鏂囦欢鍚嶏細{{ file.name }}</span>
+          <span>澶у皬{{ (file.size / 1024).toFixed(2) }}KB</span>
+        </div>
+      </div>
+      <div v-show="message" class="v-r-message">
+        <h3 class="title">涓婁紶缁撴灉</h3>
+        <div class="text" :class="resultClass" v-html="message"></div>
+      </div>
+      <slot></slot>
+      
+    </div>
+    </el-dialog>
+  </template>
+  <script>
+  //鐩墠鍙敮鎸佸崟涓狤xcel涓婁紶锛屽叾浠栧姛鑳藉紑鍙戜腑...
+  export default {
+    components: {},
+    props: {
+      url: {
+        type: String,
+        default: ''
+      },
+      template: {
+        //涓嬭浇妯℃澘閰嶇疆
+        type: Object,
+        default: () => {
+          return {
+            url: '', //妯℃澘涓嬭浇璺緞锛屽鏋滄病鏈夋ā鏉胯矾寰勶紝鍒欎笉鏄剧ず涓嬭浇妯℃澘鍔熻兘
+            fileName: '鏈畾涔夋枃浠跺悕' //涓嬭浇妯℃澘鐨勬枃浠跺悕
+          };
+        }
+      },
+      importExcelBefore: {
+        type: Function,
+        default: (file) => {
+          return true;
+        }
+      }
+    },
+    data() {
+      return {
+        detialBox:false,
+        maxSize: 10,
+        model: true,
+        file: null,
+        loadingStatus: false,
+        message: '',
+        resultClass: ''
+      };
+    },
+    methods: {
+      handleFileChange(event) {
+      const file = event.target.files[0]; // 鑾峰彇绗竴涓�夊畾鐨勬枃浠跺璞�
+      console.log('鏂囦欢璺緞:', file.path); // 杈撳嚭鏂囦欢璺緞鍒版帶鍒跺彴
+      
+      // 濡傛灉鎯宠繘琛屽叾浠栨搷浣滄垨鑰呭彂閫佹枃浠惰矾寰勭粰鏈嶅姟鍣ㄧ瓑锛屽彲浠ュ湪杩欓噷缂栧啓鐩稿簲閫昏緫
+    },
+      clearMsg() {
+        this.message = '';
+      },
+      reset() {
+        this.file = null;
+        this.message = '';
+        this.resultClass = '';
+      },
+      getFileType() {
+        let fileName =
+          this.file.name
+            .split('.')
+            .pop()
+            .toLocaleLowerCase() || '';
+        // if (['numbers', 'csv', 'xls', 'xlsx','SPF'].indexOf(fileName) == -1) {
+        //   this.$Message.error('鍙兘閫夋嫨excel鏂囦欢');
+        //   return false;
+        // }
+        return true;
+      },
+      beforeUpload(file) {
+        this.file = file;
+        if (!this.getFileType()) {
+          return false;
+        }
+        return false;
+      },
+      upload() {
+        // let _url = this.url;
+        let _url = "http://localhost:8099/api/dt_Machineinfo/Upload";
+        if (!_url) {
+          return this.$Message.error('娌℃湁閰嶇疆濂経rl');
+        }
+   
+        if (!this.file) {
+          return this.$Message.error('璇烽�夋嫨鏂囦欢');
+        }
+        var formData = new FormData();
+        formData.append('fileInput', this.file);
+        // if (!this.importExcelBefore(formData)) {
+        //   return;
+        // }
+        this.loadingStatus = true;
+        this.http.post(_url, formData).then(
+          (x) => {
+            // this.$refs.uploadFile.clearFiles();
+            this.loadingStatus = false;
+            this.file = null;
+            if (x.status) {
+              this.$emit('importExcelAfter', x);
+            }
+  
+            this.message = x.message;
+            this.resultClass = x.status ? 'v-r-success' : 'v-r-error';
+          },
+          (error) => {
+            this.loadingStatus = false;
+          }
+        );
+      },
+      dowloadTemplate() {
+        let url = this.template.url;
+        let xmlResquest = new XMLHttpRequest();
+        xmlResquest.open('GET', url, true);
+        xmlResquest.setRequestHeader('Content-type', 'application/json');
+        xmlResquest.setRequestHeader(
+          'Authorization',
+          this.$store.getters.getToken()
+        );
+        let fileName = this.template.fileName + '.xlsx';
+        let elink = this.$refs.template;
+        xmlResquest.responseType = 'blob';
+        let $_vue = this;
+        this.loadingStatus = true;
+        xmlResquest.onload = function(oEvent) {
+          $_vue.loadingStatus = false;
+          if (xmlResquest.response.type == 'application/json') {
+            return $_vue.message.error('鏈壘鍒颁笅杞芥枃浠�');
+          }
+          let content = xmlResquest.response;
+          elink.download = fileName;
+          let blob = new Blob([content]);
+          elink.href = URL.createObjectURL(blob);
+          elink.click();
+        };
+        xmlResquest.send();
+      }
+    }
+  };
+  </script>
+  <style lang="less" scoped>
+  .upload-container {
+    min-height: 270px !important;
+    display: inline-block;
+    width: 100%;
+    padding: 10px;
+    border: 1px dashed #989898;
+    min-height: 250px;
+    border-radius: 5px;
+    .alert {
+      margin-top: 12px;
+    }
+    .el-button-group > * {
+      display: flex;
+    }
+    h3 {
+      margin: 9px 0px;
+    }
+    .file-info > span {
+      margin-right: 20px;
+    }
+    .v-r-message {
+      margin-top: 10px;
+      .title {
+        margin-bottom: 2px;
+      }
+      > .text {
+        font-size: 13px;
+      }
+      .v-r-success {
+        color: #02b702;
+      }
+      .v-r-error {
+        color: #dc0909;
+      }
+    }
+  }
+  </style>
+  
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/widesea_system/system/dt_log_pcs.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/widesea_system/system/dt_log_pcs.vue"
new file mode 100644
index 0000000..51e266b
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/widesea_system/system/dt_log_pcs.vue"
@@ -0,0 +1,68 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wcs/wcs/dt_log.js姝ゅ缂栧啓
+ -->
+ <template>
+    <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+        :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+        :table="table" :extend="extend">
+    </view-grid>
+</template>
+<script>
+import extend from "@/extension/widesea_system/system/dt_log_pcs.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+    setup() {
+        const table = ref({
+            key: 'id',
+            footer: "Foots",
+            cnName: '鏃ュ織鏌ヨ',
+            name: 'wcs/dt_log_pcs',
+            url: "/dt_log_pcs/",
+            sortName: "createtime"
+        });
+        const editFormFields = ref({});
+        const editFormOptions = ref([]);
+        const searchFormFields = ref({ "describe": "", "status": "", "info": "", "createtime": "", "createuser": "", "dataForm": "" });
+        const searchFormOptions = ref([
+            [
+                { "title": "鍚嶇О", "field": "describe", "type": "like" },
+                { "title": "璇︾粏淇℃伅", "field": "info", "type": "like" },
+                { "title": "鍒涘缓鐢ㄦ埛", "field": "createuser", "type": "like" },
+
+            ],
+            [
+                { "title": "鍒涘缓鏃堕棿", "field": "createtime", "type": "datetime" },
+                { "title": "鏉ユ簮", "field": "dataForm", "type": "like" },
+                { "dataKey": "LogState", "data": [], "title": "鐘舵��", "field": "status", "type": "select" }
+            ]
+        ]);
+        const columns = ref([{ field: 'id', title: 'id', type: 'guid', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+        { field: 'describe', title: '鍚嶇О', type: 'string', width: 110, align: 'left', sort: true },
+        { field: 'info', title: '璇︾粏淇℃伅', type: 'string', width: 150, align: 'left' },
+        { field: 'status', title: '鐘舵��', bind: { key: 'LogState' }, type: 'string', width: 40, align: 'left' },
+        { field: 'createuser', title: '鍒涘缓鐢ㄦ埛', type: 'string', width: 60, align: 'left' },
+        { field: 'createtime', title: '鍒涘缓鏃堕棿', type: 'string ', width: 90, align: 'left' },
+        { field: 'dataForm', title: '鏉ユ簮', type: 'string', width: 60, align: 'left' }]);
+        const detail = ref({
+            cnName: "#detailCnName",
+            table: "#detailTable",
+            columns: [],
+            sortName: "",
+            key: ""
+        });
+        return {
+            table,
+            extend,
+            editFormFields,
+            editFormOptions,
+            searchFormFields,
+            searchFormOptions,
+            columns,
+            detail,
+        };
+    },
+});
+</script>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/widesea_wcs/wcs/VV_Dispatch.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/widesea_wcs/wcs/VV_Dispatch.vue"
index 36c5c96..a176ece 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/widesea_wcs/wcs/VV_Dispatch.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/widesea_wcs/wcs/VV_Dispatch.vue"
@@ -73,7 +73,7 @@
         { field: 'ClassName', title: '璋冨害绫诲瀷', type: 'string', width: 120, require: true, align: 'left' },
         { field: 'IntervalSecond', title: '璋冨害鏃堕棿(s)', type: 'int', width: 110, require: true, align: 'left' },
         { field: 'Remark', title: '鎻忚堪', type: 'string', width: 220, align: 'left' },
-        { field: 'Enable', title: '鏄惁鍚敤', bind: { key: 'EqStatus' }, type: 'string', width: 110, require: true, align: 'left' },
+        { field: 'Enable', title: '鏄惁鍚敤',hidden: true, bind: { key: 'EqStatus' }, type: 'string', width: 110, require: true, align: 'left' },
         { field: 'IsRun', title: '杩愯鐘舵��', type: 'string', width: 110, require: true, align: 'left' },
         ]);
         const detail = ref({
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/widesea_wcs/wcs/dt_Machineinfo.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/widesea_wcs/wcs/dt_Machineinfo.vue"
new file mode 100644
index 0000000..f02da2b
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/widesea_wcs/wcs/dt_Machineinfo.vue"
@@ -0,0 +1,67 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wcs/wcs/dt_Machineinfo.js姝ゅ缂栧啓
+ -->
+<template>
+    <view-grid ref="grid"
+               :columns="columns"
+               :detail="detail"
+               :editFormFields="editFormFields"
+               :editFormOptions="editFormOptions"
+               :searchFormFields="searchFormFields"
+               :searchFormOptions="searchFormOptions"
+               :table="table"
+               :extend="extend">
+    </view-grid>
+</template>
+<script>
+    import extend from "@/extension/widesea_wcs/wcs/dt_Machineinfo.js";
+    import { ref, defineComponent } from "vue";
+    export default defineComponent({
+        setup() {
+            const table = ref({
+                key: 'ID',
+                footer: "Foots",
+                cnName: '鏈哄簥淇℃伅',
+                name: 'wcs/dt_Machineinfo',
+                url: "/dt_Machineinfo/",
+                sortName: "ID"
+            });
+            const editFormFields = ref({"Name":"","IP":"","User":"","Password":"","FolderName":""});
+            const editFormOptions = ref([[{"title":"鏈哄簥鍚�","required":true,"field":"Name"}],
+                              [{"title":"IP鍦板潃","required":true,"field":"IP"}],
+                              [{"title":"璐﹀彿","field":"User"}],
+                              [{"title":"瀵嗙爜","field":"Password"}],
+                              [{"title":"鏂囦欢澶瑰悕绉�","required":true,"field":"FolderName"}]]);
+            const searchFormFields = ref({"Name":""});
+            const searchFormOptions = ref([[{"title":"鏈哄簥鍚�","field":"Name","type":"like"}]]);
+            const columns = ref([{field:'ID',title:'涓婚敭',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'},
+                       {field:'Name',title:'鏈哄簥鍚�',type:'string',sort:true,width:120,require:true,align:'left',sort:true},
+                       {field:'IP',title:'IP鍦板潃',type:'string',width:120,require:true,align:'left'},
+                       {field:'FolderName',title:'鏂囦欢澶瑰悕绉�',type:'string',width:120,require:true,align:'left'},
+                       {field:'User',title:'璐﹀彿',type:'string',width:120,align:'left'},
+                       {field:'Password',title:'瀵嗙爜',type:'string',width:120,align:'left'},
+                       {field:'Enable',title:'鏄惁鍚敤',bind: { key: 'Enables' },type:'int',width:110,align:'left'},
+                       {field:'remark',title:'澶囨敞',type:'string',width:120,hidden:true,align:'left'}]);
+            const detail = ref({
+                cnName: "#detailCnName",
+                table: "#detailTable",
+                columns: [],
+                sortName: "",
+                key: ""
+            });
+            return {
+                table,
+                extend,
+                editFormFields,
+                editFormOptions,
+                searchFormFields,
+                searchFormOptions,
+                columns,
+                detail,
+            };
+        },
+    });
+</script>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/widesea_wcs/wcs/dt_plcinfodetail.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/widesea_wcs/wcs/dt_plcinfodetail.vue"
index 153f12c..a9e1ebd 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/widesea_wcs/wcs/dt_plcinfodetail.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/widesea_wcs/wcs/dt_plcinfodetail.vue"
@@ -40,6 +40,7 @@
                        {field:'plcdetail_valtype',title:'鏁版嵁绫诲瀷',type:'string',width:110,align:'left'},
                        {field:'plcdetail_len',title:'闀垮害',type:'int',width:110,align:'left'},
                        {field:'plcdetail_name',title:'淇″彿鍚嶇О',type:'string',width:110,align:'left'},
+                       {field:'plcdetail_number',title:'璁惧鍚嶇О',type:'string',width:110,align:'left'},
                        {field:'plcdetail_opratortype',title:'澶勭悊鏂规硶',type:'string',width:110,align:'left'},
                        {field:'plcdetail_remark',title:'澶囨敞',type:'string',width:220,align:'left'}]);
             const detail = ref({
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/widesea_wcs/wcs/dt_plcinfohead.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/widesea_wcs/wcs/dt_plcinfohead.vue"
index efbd675..89e6b05 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/widesea_wcs/wcs/dt_plcinfohead.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/widesea_wcs/wcs/dt_plcinfohead.vue"
@@ -60,6 +60,7 @@
             { field: 'plcdetail_value', title: '鍋忕Щ鍦板潃', type: 'string', width: 90, readonly: true, align: 'left', sort: true },
             { field: 'plcdetail_valtype', title: '鏁版嵁绫诲瀷', type: 'string', width: 90, readonly: true, align: 'left', sort: true },
             { field: 'plcdetail_len', title: '闀垮害', type: 'string', width: 90, readonly: true, align: 'left', sort: true },
+            // { field: 'plcdetail_number', title: '璁惧鍚嶇О', type: 'string', width: 90, readonly: true, align: 'left', sort: true },
             { field: 'plcdetail_opratortype', title: '澶勭悊鏂规硶', type: 'string', width: 90, readonly: true, align: 'left', sort: true },
             { field: 'plcdetail_remark', title: '澶囨敞', type: 'string', width: 90, readonly: true, align: 'left' },
             ],
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/vue.config.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/vue.config.js"
index 7f036cf..3f1d0f0 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/vue.config.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/vue.config.js"
@@ -31,7 +31,7 @@
     config.plugins.delete('prefetch');
     //鑷笅瀹氫箟title
     config.plugin('html').tap((args) => {
-      args[0].title = 'WCS';
+      args[0].title = 'PCS';
       return args;
     });
 
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/DBItem/GDXDB.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/DBItem/GDXDB.cs"
new file mode 100644
index 0000000..2892d87
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/DBItem/GDXDB.cs"
@@ -0,0 +1,57 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Comm.ItemDB
+{
+    public partial class GDXDB
+    {
+        public event Action<GDXDB> OnReadSignal;
+        /// <summary>
+        /// 璁惧鍚�
+        /// </summary>
+        public string R_Name { get; set; }
+        /// <summary>
+        /// 杞﹁疆SN鍙�
+        /// </summary>
+        public string R_wheel_SN { get; set; }
+        /// <summary>
+        /// 杞﹁疆绫诲瀷
+        /// </summary>
+        public short R_wheel_type { get; set; }
+        /// <summary>
+        /// 闆朵欢鐘舵��
+        /// </summary>
+        public byte R_part_status { get; set; }
+        /// <summary>
+        /// 闆朵欢宸ヨ壓
+        /// </summary>
+        public byte R_part_process { get; set; }
+        public bool machine_nr;
+        public bool R_machine_nr
+        {
+            get
+            {
+                return machine_nr;
+            }
+            set
+            {
+                if (value && (R_Name == "4.24" || R_Name == "5.24" || R_Name == "6.24"))
+                {
+                    ReadSignal(this);
+                }
+                machine_nr = value;
+            }
+        }
+        public byte R_direction { get; set; }
+        public void ReadSignal(GDXDB reader)
+        {
+            Task.Run(() =>
+            {
+                OnReadSignal?.Invoke(reader);
+            });
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/LogInfo/WriteDBLog.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/LogInfo/WriteDBLog.cs"
index 9b9a704..9513bfa 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/LogInfo/WriteDBLog.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/LogInfo/WriteDBLog.cs"
@@ -86,7 +86,8 @@
         {
             try
             {
-                dt_log log = new dt_log();
+                //dt_log log = new dt_log();
+                dt_log_pcs log = new dt_log_pcs();
                 log.id = Guid.NewGuid();
                 log.createtime = DateTime.Now;
                 log.dataForm = dataFrom;
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/LogInfo/WriteLog.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/LogInfo/WriteLog.cs"
index 34f0b1f..4295f6c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/LogInfo/WriteLog.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/LogInfo/WriteLog.cs"
@@ -1,4 +1,5 @@
 锘縰sing Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -6,6 +7,7 @@
 using System.Reflection.Metadata;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Core.Extensions;
 
 namespace WIDESEA_Comm.LogInfo
 {
@@ -14,6 +16,11 @@
     /// </summary>
     public partial class WriteLog
     {
+        private int fileSize;
+        public static WriteLog log;
+        static string EquipName;
+        private string logFileName;
+        public string FileLogPath { set; get; }
         /// <summary>
         /// 鍐欏叆鏃ュ織(涓嶈澶氱嚎绋嬫搷浣滃悓涓�鏂囦欢锛屼竴涓澶囦竴涓枃浠跺す)
         /// </summary>
@@ -51,5 +58,86 @@
             }
             catch { }
         }
+        public static WriteLog Info(string equipName)
+        {
+            EquipName = equipName;
+            //if (log == null)
+            log = new WriteLog("Info" + equipName);
+            log.FileLogPath = AppContext.BaseDirectory + "\\log\\Info\\" + DateTime.Now.ToString("yyyyMMdd") /*+ "\\" + EquipName + "_" + DateTime.Now.ToString("yyyyMMdd")*/ + "\\";
+            return log;
+        }
+        private WriteLog(string equipName)
+        {
+            //鍒濆鍖栧ぇ浜�399M鏃ュ織鏂囦欢灏嗚嚜鍔ㄥ垹闄�;
+
+            this.fileSize = 2048 * 1024 * 200;//50M   2048 * 1024 * 200= 419430000瀛楄妭(b)=399.9996185鍏嗗瓧鑺�(mb)
+
+            //榛樿璺緞
+
+            //this.FileLogPath = AppContext.BaseDirectory + "\\log\\" + EquipName + "\\";
+            EquipName = equipName;
+            if (!string.IsNullOrEmpty(equipName))
+                this.logFileName = equipName + "_log" + DateTime.Now.ToString("yyyyMMdd") + ".log";
+            else
+                this.logFileName = "log" + DateTime.Now.ToString("yyyyMMdd") + ".log";
+            //this.logFileName = EquipName + "_log" + DateTime.Now.ToString("yyyyMMdd") + ".log";
+        }
+        object flag = new object();
+        public void Write(string Message, string equipName)
+        {
+            lock (flag)
+            {
+                if (!string.IsNullOrEmpty(equipName))
+                    this.logFileName = equipName + "_log" + DateTime.Now.ToString("yyyyMMdd") + ".log";
+                else
+                    this.logFileName = "log" + DateTime.Now.ToString("yyyyMMdd") + ".log";
+                this.Write(this.logFileName, Message, equipName);
+            }
+        }
+        public void Write(string LogFileName, string Message, string equipName)
+        {
+
+            //DirectoryInfo path=new DirectoryInfo(LogFileName);
+            //濡傛灉鏃ュ織鏂囦欢鐩綍涓嶅瓨鍦�,鍒欏垱寤�
+            if (!Directory.Exists(this.FileLogPath))
+            {
+                Directory.CreateDirectory(this.FileLogPath);
+            }
+
+            FileInfo finfo = new FileInfo(this.FileLogPath + LogFileName);
+            if (finfo.Exists && finfo.Length > fileSize)
+            {
+                finfo.Delete();
+            }
+            try
+            {
+                FileStream fs = new FileStream(this.FileLogPath + LogFileName, FileMode.Append);
+                StreamWriter strwriter = new StreamWriter(fs);
+                try
+                {
+
+                    DateTime d = DateTime.Now;
+                    strwriter.WriteLine("鏃堕棿:" + d.ToString());
+                    strwriter.WriteLine(Message);
+                    strwriter.WriteLine();
+                    strwriter.Flush();
+                }
+                catch (Exception ee)
+                {
+                    //Console.WriteLine("鏃ュ織鏂囦欢鍐欏叆澶辫触淇℃伅:" + ee.ToString());
+                }
+                finally
+                {
+                    strwriter.Close();
+                    strwriter = null;
+                    fs.Close();
+                    fs = null;
+                }
+            }
+            catch (Exception ee)
+            {
+                //Console.WriteLine("鏃ュ織鏂囦欢娌℃湁鎵撳紑,璇︾粏淇℃伅濡備笅:");
+            }
+        }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/dt_log_pcs.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/dt_log_pcs.cs"
new file mode 100644
index 0000000..b1c1ea7
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/dt_log_pcs.cs"
@@ -0,0 +1,84 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *濡傛灉鏁版嵁搴撳瓧娈靛彂鐢熷彉鍖栵紝璇峰湪浠g爜鐢熷櫒閲嶆柊鐢熸垚姝odel
+ */
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Entity.SystemModels;
+
+namespace WIDESEA_Entity.DomainModels
+{
+    [Entity(TableCnName = "鏃ュ織绠$悊", TableName = "dt_log")]
+    public partial class dt_log_pcs : BaseEntity
+    {
+        /// <summary>
+        ///
+        /// </summary>
+        [Key]
+        [Display(Name = "id")]
+        [Column(TypeName = "uniqueidentifier")]
+        [Editable(true)]
+        [Required(AllowEmptyStrings = false)]
+        public Guid id { get; set; }
+
+        /// <summary>
+        ///姒傝
+        /// </summary>
+        [Display(Name = "姒傝")]
+        [MaxLength(255)]
+        [Column(TypeName = "nvarchar(255)")]
+        [Editable(true)]
+        public string describe { get; set; }
+
+        /// <summary>
+        ///璇︾粏璇存槑鍜屽弬鏁扮瓑
+        /// </summary>
+        [Display(Name = "璇︾粏璇存槑鍜屽弬鏁扮瓑")]
+        [Editable(true)]
+        public string info { get; set; }
+
+        /// <summary>
+        ///鎴愬姛/澶辫触
+        /// </summary>
+        [Display(Name = "鎴愬姛/澶辫触")]
+        [MaxLength(255)]
+        [Column(TypeName = "varchar(255)")]
+        [Editable(true)]
+        public string status { get; set; }
+
+        /// <summary>
+        ///鍒涘缓鐢ㄦ埛
+        /// </summary>
+        [Display(Name = "鍒涘缓鐢ㄦ埛")]
+        [MaxLength(255)]
+        [Column(TypeName = "varchar(255)")]
+        [Editable(true)]
+        public string createuser { get; set; }
+
+        /// <summary>
+        ///鍒涘缓鏃堕棿
+        /// </summary>
+        [Display(Name = "鍒涘缓鏃堕棿")]
+        [Column(TypeName = "datetime")]
+        public DateTime? createtime { get; set; }
+
+        /// <summary>
+        ///鏁版嵁鏉ユ簮
+        /// </summary>
+        [Display(Name = "鏁版嵁鏉ユ簮")]
+        [MaxLength(255)]
+        [Column(TypeName = "varchar(255)")]
+        [Editable(true)]
+        public string dataForm { get; set; }
+
+        /// <summary>
+        /// 绯荤粺绫诲瀷wcs
+        /// </summary>
+        //public int systemType { get; set; } = 1;
+    }
+}
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs"
new file mode 100644
index 0000000..363ff30
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs"
@@ -0,0 +1,139 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *濡傛灉鏁版嵁搴撳瓧娈靛彂鐢熷彉鍖栵紝璇峰湪浠g爜鐢熷櫒閲嶆柊鐢熸垚姝odel
+ */
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Entity.SystemModels;
+
+namespace WIDESEA_Entity.DomainModels
+{
+    [Entity(TableCnName = "搴撲綅淇℃伅",TableName = "dt_stationinfo")]
+    public partial class dt_stationinfo:BaseEntity
+    {
+        /// <summary>
+       ///
+       /// </summary>
+       [Display(Name ="id")]
+       [Column(TypeName="uniqueidentifier")]
+       [Editable(true)]
+       [Required(AllowEmptyStrings=false)]
+       public Guid id { get; set; }
+
+       /// <summary>
+       ///缂撳瓨鏋剁紪鍙�
+       /// </summary>
+       [Display(Name ="缂撳瓨鏋剁紪鍙�")]
+       [MaxLength(30)]
+       [Column(TypeName="nvarchar(30)")]
+       [Editable(true)]
+       public string stationCode { get; set; }
+
+       /// <summary>
+       ///鐗╂枡绫诲瀷
+       /// </summary>
+       [Display(Name ="鐗╂枡绫诲瀷")]
+       [MaxLength(25)]
+       [Column(TypeName="nvarchar(25)")]
+       [Editable(true)]
+       public string stationType { get; set; }
+
+       /// <summary>
+       ///鍖哄煙
+       /// </summary>
+       [Display(Name ="鍖哄煙")]
+       [MaxLength(15)]
+       [Column(TypeName="nvarchar(15)")]
+       [Editable(true)]
+       [Required(AllowEmptyStrings=false)]
+       public string area { get; set; }
+
+       /// <summary>
+       ///鏄惁鍚敤
+       /// </summary>
+       [Display(Name ="鏄惁鍚敤")]
+       [Column(TypeName="bit")]
+       [Editable(true)]
+       [Required(AllowEmptyStrings=false)]
+       public bool enable { get; set; }
+
+       /// <summary>
+       ///璐т綅鐘舵��
+       /// </summary>
+       [Display(Name ="璐т綅鐘舵��")]
+       [MaxLength(255)]
+       [Column(TypeName="varchar(255)")]
+       [Editable(true)]
+       public string location_state { get; set; }
+
+       /// <summary>
+       ///鏈�鍚庣姸鎬佹敼鍙樻椂闂�
+       /// </summary>
+       [Display(Name ="鏈�鍚庣姸鎬佹敼鍙樻椂闂�")]
+       [Column(TypeName="datetime")]
+       [Editable(true)]
+       public DateTime? lastUpdateTime { get; set; }
+
+       /// <summary>
+       ///杞﹁疆鏁伴噺
+       /// </summary>
+       [Display(Name ="杞﹁疆鏁伴噺")]
+       [Column(TypeName="int")]
+       public int? quantity { get; set; }
+
+       /// <summary>
+       ///杞﹁疆SN鍙�
+       /// </summary>
+       [Display(Name ="杞﹁疆SN鍙�")]
+       [MaxLength(500)]
+       [Column(TypeName="nvarchar(500)")]
+       public string bindSN { get; set; }
+
+       /// <summary>
+       ///鎵樼洏鐘舵��
+       /// </summary>
+       [Display(Name ="鎵樼洏鐘舵��")]
+       [MaxLength(100)]
+       [Column(TypeName="nvarchar(100)")]
+       public string tray_status { get; set; }
+
+       /// <summary>
+       ///澶囨敞
+       /// </summary>
+       [Display(Name ="澶囨敞")]
+       [MaxLength(100)]
+       [Column(TypeName="nvarchar(100)")]
+       [Editable(true)]
+       public string remark { get; set; }
+
+       /// <summary>
+       ///涓婚敭
+       /// </summary>
+       [Key]
+       [Display(Name ="涓婚敭")]
+       [Column(TypeName="int")]
+       [Required(AllowEmptyStrings=false)]
+       public int zj { get; set; }
+
+       /// <summary>
+       ///琛�
+       /// </summary>
+       [Display(Name ="琛�")]
+       [Column(TypeName="int")]
+       public int? line { get; set; }
+
+       /// <summary>
+       ///鍒�
+       /// </summary>
+       [Display(Name ="鍒�")]
+       [Column(TypeName="int")]
+       public int? column { get; set; }
+
+       
+    }
+}
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/partial/dt_log_pcs.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/partial/dt_log_pcs.cs"
new file mode 100644
index 0000000..2bd72cc
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/partial/dt_log_pcs.cs"
@@ -0,0 +1,21 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *濡傛灉鏁版嵁搴撳瓧娈靛彂鐢熷彉鍖栵紝璇峰湪浠g爜鐢熷櫒閲嶆柊鐢熸垚姝odel
+ */
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Entity.SystemModels;
+
+namespace WIDESEA_Entity.DomainModels
+{
+    
+    public partial class dt_log_pcs
+    {
+        //姝ゅ閰嶇疆瀛楁(瀛楁閰嶇疆瑙佹model鐨勫彟涓�涓猵artial),濡傛灉琛ㄤ腑娌℃湁姝ゅ瓧娈佃鍔犱笂 [NotMapped]灞炴�э紝鍚﹀垯浼氬紓甯�
+    }
+}
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/partial/dt_stationinfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/partial/dt_stationinfo.cs"
new file mode 100644
index 0000000..6069ad0
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/partial/dt_stationinfo.cs"
@@ -0,0 +1,21 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *濡傛灉鏁版嵁搴撳瓧娈靛彂鐢熷彉鍖栵紝璇峰湪浠g爜鐢熷櫒閲嶆柊鐢熸垚姝odel
+ */
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Entity.SystemModels;
+
+namespace WIDESEA_Entity.DomainModels
+{
+    
+    public partial class dt_stationinfo
+    {
+        //姝ゅ閰嶇疆瀛楁(瀛楁閰嶇疆瑙佹model鐨勫彟涓�涓猵artial),濡傛灉琛ㄤ腑娌℃湁姝ゅ瓧娈佃鍔犱笂 [NotMapped]灞炴�э紝鍚﹀垯浼氬紓甯�
+    }
+}
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/dt_Machineinfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/dt_Machineinfo.cs"
new file mode 100644
index 0000000..d8d6b71
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/dt_Machineinfo.cs"
@@ -0,0 +1,96 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *濡傛灉鏁版嵁搴撳瓧娈靛彂鐢熷彉鍖栵紝璇峰湪浠g爜鐢熷櫒閲嶆柊鐢熸垚姝odel
+ */
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Entity.SystemModels;
+
+namespace WIDESEA_Entity.DomainModels
+{
+    [Entity(TableCnName = "鏈哄簥淇℃伅",TableName = "dt_Machineinfo")]
+    public partial class dt_Machineinfo:BaseEntity
+    {
+        /// <summary>
+       ///涓婚敭
+       /// </summary>
+       [Key]
+       [Display(Name ="涓婚敭")]
+       [Column(TypeName="int")]
+       [Editable(true)]
+       [Required(AllowEmptyStrings=false)]
+       public int ID { get; set; }
+
+       /// <summary>
+       ///鏈哄簥鍚�
+       /// </summary>
+       [Display(Name ="鏈哄簥鍚�")]
+       [MaxLength(100)]
+       [Column(TypeName="nvarchar(100)")]
+       [Editable(true)]
+       [Required(AllowEmptyStrings=false)]
+       public string Name { get; set; }
+
+       /// <summary>
+       ///IP鍦板潃
+       /// </summary>
+       [Display(Name ="IP鍦板潃")]
+       [MaxLength(100)]
+       [Column(TypeName="nvarchar(100)")]
+       [Editable(true)]
+       [Required(AllowEmptyStrings=false)]
+       public string IP { get; set; }
+
+       /// <summary>
+       ///鏂囦欢澶瑰悕绉�
+       /// </summary>
+       [Display(Name ="鏂囦欢澶瑰悕绉�")]
+       [MaxLength(100)]
+       [Column(TypeName="nvarchar(100)")]
+       [Editable(true)]
+       [Required(AllowEmptyStrings=false)]
+       public string FolderName { get; set; }
+
+       /// <summary>
+       ///璐﹀彿
+       /// </summary>
+       [Display(Name ="璐﹀彿")]
+       [MaxLength(100)]
+       [Column(TypeName="nvarchar(100)")]
+       [Editable(true)]
+       public string User { get; set; }
+
+       /// <summary>
+       ///瀵嗙爜
+       /// </summary>
+       [Display(Name ="瀵嗙爜")]
+       [MaxLength(100)]
+       [Column(TypeName="nvarchar(100)")]
+       [Editable(true)]
+       public string Password { get; set; }
+
+       /// <summary>
+       ///鏄惁鍚敤
+       /// </summary>
+       [Display(Name ="鏄惁鍚敤")]
+       [Column(TypeName="int")]
+       [Editable(true)]
+       public int? Enable { get; set; }
+
+       /// <summary>
+       ///澶囨敞
+       /// </summary>
+       [Display(Name ="澶囨敞")]
+       [MaxLength(100)]
+       [Column(TypeName="nvarchar(100)")]
+       [Editable(true)]
+       public string remark { get; set; }
+
+       
+    }
+}
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/dt_plcinfodetail.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/dt_plcinfodetail.cs"
index 571c184..9bab559 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/dt_plcinfodetail.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/dt_plcinfodetail.cs"
@@ -80,6 +80,15 @@
         public string plcdetail_name { get; set; }
 
         /// <summary>
+        ///璁惧鍚嶇О
+        /// </summary>
+        [Display(Name = "璁惧鍚嶇О")]
+        [MaxLength(50)]
+        [Column(TypeName = "nvarchar(100)")]
+        [Editable(true)]
+        public string plcdetail_number { get; set; }
+
+        /// <summary>
         ///澶勭悊鏂规硶
         /// </summary>
         [Display(Name = "澶勭悊鏂规硶")]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/partial/dt_Machineinfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/partial/dt_Machineinfo.cs"
new file mode 100644
index 0000000..f54095e
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/partial/dt_Machineinfo.cs"
@@ -0,0 +1,21 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *濡傛灉鏁版嵁搴撳瓧娈靛彂鐢熷彉鍖栵紝璇峰湪浠g爜鐢熷櫒閲嶆柊鐢熸垚姝odel
+ */
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Entity.SystemModels;
+
+namespace WIDESEA_Entity.DomainModels
+{
+    
+    public partial class dt_Machineinfo
+    {
+        //姝ゅ閰嶇疆瀛楁(瀛楁閰嶇疆瑙佹model鐨勫彟涓�涓猵artial),濡傛灉琛ㄤ腑娌℃湁姝ゅ瓧娈佃鍔犱笂 [NotMapped]灞炴�э紝鍚﹀垯浼氬紓甯�
+    }
+}
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/MappingConfiguration/System/dt_log_pcsMapConfig.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/MappingConfiguration/System/dt_log_pcsMapConfig.cs"
new file mode 100644
index 0000000..0e2fa8a
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/MappingConfiguration/System/dt_log_pcsMapConfig.cs"
@@ -0,0 +1,16 @@
+using WIDESEA_Entity.MappingConfiguration;
+using WIDESEA_Entity.DomainModels;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+
+namespace WIDESEA_Entity.MappingConfiguration
+{
+    public class dt_log_pcsMapConfig : EntityMappingConfiguration<dt_log_pcs>
+    {
+        public override void Map(EntityTypeBuilder<dt_log_pcs>
+        builderTable)
+        {
+          //b.Property(x => x.StorageName).HasMaxLength(45);
+        }
+     }
+}
+
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/MappingConfiguration/System/dt_stationinfoMapConfig.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/MappingConfiguration/System/dt_stationinfoMapConfig.cs"
new file mode 100644
index 0000000..e219956
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/MappingConfiguration/System/dt_stationinfoMapConfig.cs"
@@ -0,0 +1,16 @@
+using WIDESEA_Entity.MappingConfiguration;
+using WIDESEA_Entity.DomainModels;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+
+namespace WIDESEA_Entity.MappingConfiguration
+{
+    public class dt_stationinfoMapConfig : EntityMappingConfiguration<dt_stationinfo>
+    {
+        public override void Map(EntityTypeBuilder<dt_stationinfo>
+        builderTable)
+        {
+          //b.Property(x => x.StorageName).HasMaxLength(45);
+        }
+     }
+}
+
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/MappingConfiguration/WCS/dt_MachineinfoMapConfig.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/MappingConfiguration/WCS/dt_MachineinfoMapConfig.cs"
new file mode 100644
index 0000000..33fce91
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/MappingConfiguration/WCS/dt_MachineinfoMapConfig.cs"
@@ -0,0 +1,16 @@
+using WIDESEA_Entity.MappingConfiguration;
+using WIDESEA_Entity.DomainModels;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+
+namespace WIDESEA_Entity.MappingConfiguration
+{
+    public class dt_MachineinfoMapConfig : EntityMappingConfiguration<dt_Machineinfo>
+    {
+        public override void Map(EntityTypeBuilder<dt_Machineinfo>
+        builderTable)
+        {
+          //b.Property(x => x.StorageName).HasMaxLength(45);
+        }
+     }
+}
+
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_System/IRepositories/System/Idt_log_pcsRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_System/IRepositories/System/Idt_log_pcsRepository.cs"
new file mode 100644
index 0000000..d54d209
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_System/IRepositories/System/Idt_log_pcsRepository.cs"
@@ -0,0 +1,18 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *Repository鎻愪緵鏁版嵁搴撴搷浣滐紝濡傛灉瑕佸鍔犳暟鎹簱鎿嶄綔璇峰湪褰撳墠鐩綍涓婸artial鏂囦欢澶笽dt_log_pcsRepository缂栧啓鎺ュ彛
+ */
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Entity.DomainModels;
+using WIDESEA_Core.Extensions.AutofacManager;
+namespace WIDESEA_System.IRepositories
+{
+    public partial interface Idt_log_pcsRepository : IDependency,IRepository<dt_log_pcs>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_System/IServices/System/Idt_log_pcsService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_System/IServices/System/Idt_log_pcsService.cs"
new file mode 100644
index 0000000..2218f5d
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_System/IServices/System/Idt_log_pcsService.cs"
@@ -0,0 +1,12 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ */
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Entity.DomainModels;
+
+namespace WIDESEA_System.IServices
+{
+    public partial interface Idt_log_pcsService : IService<dt_log_pcs>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_System/IServices/System/Partial/Idt_log_pcsService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_System/IServices/System/Partial/Idt_log_pcsService.cs"
new file mode 100644
index 0000000..66645e0
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_System/IServices/System/Partial/Idt_log_pcsService.cs"
@@ -0,0 +1,13 @@
+/*
+*鎵�鏈夊叧浜巇t_log_pcs绫荤殑涓氬姟浠g爜鎺ュ彛搴斿湪姝ゅ缂栧啓
+*/
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Entity.DomainModels;
+using WIDESEA_Core.Utilities;
+using System.Linq.Expressions;
+namespace WIDESEA_System.IServices
+{
+    public partial interface Idt_log_pcsService
+    {
+    }
+ }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_System/Repositories/System/dt_log_pcsRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_System/Repositories/System/dt_log_pcsRepository.cs"
new file mode 100644
index 0000000..2abb44a
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_System/Repositories/System/dt_log_pcsRepository.cs"
@@ -0,0 +1,24 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *Repository鎻愪緵鏁版嵁搴撴搷浣滐紝濡傛灉瑕佸鍔犳暟鎹簱鎿嶄綔璇峰湪褰撳墠鐩綍涓婸artial鏂囦欢澶筪t_log_pcsRepository缂栧啓浠g爜
+ */
+using WIDESEA_System.IRepositories;
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Core.EFDbContext;
+using WIDESEA_Core.Extensions.AutofacManager;
+using WIDESEA_Entity.DomainModels;
+
+namespace WIDESEA_System.Repositories
+{
+    public partial class dt_log_pcsRepository : RepositoryBase<dt_log_pcs> , Idt_log_pcsRepository
+    {
+    public dt_log_pcsRepository(VOLContext dbContext)
+    : base(dbContext)
+    {
+
+    }
+    public static Idt_log_pcsRepository Instance
+    {
+      get {  return AutofacContainerModule.GetService<Idt_log_pcsRepository>(); } }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_System/Services/System/Partial/dt_log_pcsService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_System/Services/System/Partial/dt_log_pcsService.cs"
new file mode 100644
index 0000000..a2377b4
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_System/Services/System/Partial/dt_log_pcsService.cs"
@@ -0,0 +1,41 @@
+/*
+ *鎵�鏈夊叧浜巇t_log_pcs绫荤殑涓氬姟浠g爜搴斿湪姝ゅ缂栧啓
+*鍙娇鐢╮epository.璋冪敤甯哥敤鏂规硶锛岃幏鍙朎F/Dapper绛変俊鎭�
+*濡傛灉闇�瑕佷簨鍔¤浣跨敤repository.DbContextBeginTransaction
+*涔熷彲浣跨敤DBServerProvider.鎵嬪姩鑾峰彇鏁版嵁搴撶浉鍏充俊鎭�
+*鐢ㄦ埛淇℃伅銆佹潈闄愩�佽鑹茬瓑浣跨敤UserContext.Current鎿嶄綔
+*dt_log_pcsService瀵瑰銆佸垹銆佹敼鏌ャ�佸鍏ャ�佸鍑恒�佸鏍镐笟鍔′唬鐮佹墿灞曞弬鐓erviceFunFilter
+*/
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Core.Extensions.AutofacManager;
+using WIDESEA_Entity.DomainModels;
+using System.Linq;
+using WIDESEA_Core.Utilities;
+using System.Linq.Expressions;
+using WIDESEA_Core.Extensions;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.AspNetCore.Http;
+using WIDESEA_System.IRepositories;
+
+namespace WIDESEA_System.Services
+{
+    public partial class dt_log_pcsService
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        private readonly Idt_log_pcsRepository _repository;//璁块棶鏁版嵁搴�
+
+        [ActivatorUtilitiesConstructor]
+        public dt_log_pcsService(
+            Idt_log_pcsRepository dbRepository,
+            IHttpContextAccessor httpContextAccessor
+            )
+        : base(dbRepository)
+        {
+            _httpContextAccessor = httpContextAccessor;
+            _repository = dbRepository;
+            //澶氱鎴蜂細鐢ㄥ埌杩檌nit浠g爜锛屽叾浠栨儏鍐靛彲浠ヤ笉鐢�
+            //base.Init(dbRepository);
+        }
+  }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_System/Services/System/dt_log_pcsService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_System/Services/System/dt_log_pcsService.cs"
new file mode 100644
index 0000000..f655cbb
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_System/Services/System/dt_log_pcsService.cs"
@@ -0,0 +1,27 @@
+/*
+ *Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,姝ゅ浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *鎵�鏈変笟鍔$紪鍐欏叏閮ㄥ簲鍦≒artial鏂囦欢澶逛笅dt_log_pcsService涓嶪dt_log_pcsService涓紪鍐�
+ */
+using WIDESEA_System.IRepositories;
+using WIDESEA_System.IServices;
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Core.Extensions.AutofacManager;
+using WIDESEA_Entity.DomainModels;
+
+namespace WIDESEA_System.Services
+{
+    public partial class dt_log_pcsService : ServiceBase<dt_log_pcs, Idt_log_pcsRepository>
+    , Idt_log_pcsService, IDependency
+    {
+    public dt_log_pcsService(Idt_log_pcsRepository repository)
+    : base(repository)
+    {
+    Init(repository);
+    }
+    public static Idt_log_pcsService Instance
+    {
+      get { return AutofacContainerModule.GetService<Idt_log_pcsService>(); } }
+    }
+ }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IRepositories/WCS/Idt_MachineinfoRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IRepositories/WCS/Idt_MachineinfoRepository.cs"
new file mode 100644
index 0000000..e560d4d
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IRepositories/WCS/Idt_MachineinfoRepository.cs"
@@ -0,0 +1,18 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *Repository鎻愪緵鏁版嵁搴撴搷浣滐紝濡傛灉瑕佸鍔犳暟鎹簱鎿嶄綔璇峰湪褰撳墠鐩綍涓婸artial鏂囦欢澶笽dt_MachineinfoRepository缂栧啓鎺ュ彛
+ */
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Entity.DomainModels;
+using WIDESEA_Core.Extensions.AutofacManager;
+namespace WIDESEA_WCS.IRepositories
+{
+    public partial interface Idt_MachineinfoRepository : IDependency,IRepository<dt_Machineinfo>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IRepositories/system/Idt_stationinfoRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IRepositories/system/Idt_stationinfoRepository.cs"
new file mode 100644
index 0000000..630ee50
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IRepositories/system/Idt_stationinfoRepository.cs"
@@ -0,0 +1,18 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *Repository鎻愪緵鏁版嵁搴撴搷浣滐紝濡傛灉瑕佸鍔犳暟鎹簱鎿嶄綔璇峰湪褰撳墠鐩綍涓婸artial鏂囦欢澶笽dt_stationinfoRepository缂栧啓鎺ュ彛
+ */
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Entity.DomainModels;
+using WIDESEA_Core.Extensions.AutofacManager;
+namespace WIDESEA_WCS.IRepositories
+{
+    public partial interface Idt_stationinfoRepository : IDependency,IRepository<dt_stationinfo>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Idt_MachineinfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Idt_MachineinfoService.cs"
new file mode 100644
index 0000000..5d3f97e
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Idt_MachineinfoService.cs"
@@ -0,0 +1,12 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ */
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Entity.DomainModels;
+
+namespace WIDESEA_WCS.IServices
+{
+    public partial interface Idt_MachineinfoService : IService<dt_Machineinfo>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Partial/IVV_DispatchService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Partial/IVV_DispatchService.cs"
index fec9196..ea73e05 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Partial/IVV_DispatchService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Partial/IVV_DispatchService.cs"
@@ -40,6 +40,10 @@
         /// </summary>
         /// <returns></returns>
         public WebResponseContent CheckServeState();
-
+        /// <summary>
+        /// 涓婁紶鏂囦欢
+        /// </summary>
+        /// <returns></returns>
+        //public WebResponseContent Upload(List<Microsoft.AspNetCore.Http.IFormFile> files);
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Partial/Idt_MachineinfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Partial/Idt_MachineinfoService.cs"
new file mode 100644
index 0000000..454daf8
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Partial/Idt_MachineinfoService.cs"
@@ -0,0 +1,25 @@
+/*
+*鎵�鏈夊叧浜巇t_Machineinfo绫荤殑涓氬姟浠g爜鎺ュ彛搴斿湪姝ゅ缂栧啓
+*/
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Entity.DomainModels;
+using WIDESEA_Core.Utilities;
+using System.Linq.Expressions;
+using Microsoft.AspNetCore.Mvc;
+namespace WIDESEA_WCS.IServices
+{
+    public partial interface Idt_MachineinfoService
+    {
+        /// <summary>
+        /// 淇敼浼犺緭鏂囦欢鐘舵��
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent UpdateEnable(string saveModel);
+        /// <summary>
+        /// 浼犺緭鏂囦欢鐘舵�佽涓虹姝�
+        /// </summary>
+        /// <param name="saveModel"></param>
+        /// <returns></returns>
+        public WebResponseContent UpdateDisEnable(string saveModel);
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/system/Idt_stationinfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/system/Idt_stationinfoService.cs"
new file mode 100644
index 0000000..9724b40
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/system/Idt_stationinfoService.cs"
@@ -0,0 +1,12 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ */
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Entity.DomainModels;
+
+namespace WIDESEA_WCS.IServices
+{
+    public partial interface Idt_stationinfoService : IService<dt_stationinfo>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/system/Partial/Idt_stationinfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/system/Partial/Idt_stationinfoService.cs"
new file mode 100644
index 0000000..b16f26a
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/system/Partial/Idt_stationinfoService.cs"
@@ -0,0 +1,13 @@
+/*
+*鎵�鏈夊叧浜巇t_stationinfo绫荤殑涓氬姟浠g爜鎺ュ彛搴斿湪姝ゅ缂栧啓
+*/
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Entity.DomainModels;
+using WIDESEA_Core.Utilities;
+using System.Linq.Expressions;
+namespace WIDESEA_WCS.IServices
+{
+    public partial interface Idt_stationinfoService
+    {
+    }
+ }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/JobBase.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/JobBase.cs"
new file mode 100644
index 0000000..47e48c8
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/JobBase.cs"
@@ -0,0 +1,81 @@
+锘縰sing Quartz;
+using System.Diagnostics;
+using WIDESEA_Comm.LogInfo;
+
+namespace WIDESEA_WCS.Jobs
+{
+    public class JobBase
+    {
+        /// <summary>
+        /// 鎵ц鎸囧畾浠诲姟
+        /// </summary>
+        /// <param name="context"></param>
+        /// <param name="action"></param>
+        public string ExecuteJob(IJobExecutionContext context, Func<string> func)
+        {
+            //璁板綍Job鏃堕棿
+            Stopwatch stopwatch = new Stopwatch();
+            //JOBID
+            string jobid = context.JobDetail.Key.Name;
+            //JOB缁勫悕
+            string groupName = context.JobDetail.Key.Group;
+            //鏃ュ織
+            string jobHistory = $"銆恵DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}銆戙�愭墽琛屽紑濮嬨�戙�怚d锛歿jobid}锛岀粍鍒細{groupName}銆�";
+            //鑰楁椂
+            double taskSeconds = 0;
+            try
+            {
+                stopwatch.Start();
+                func();//鎵ц浠诲姟
+                stopwatch.Stop();
+                jobHistory += $"锛屻�恵DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}銆戙�愭墽琛屾垚鍔熴��";
+            }
+            catch (Exception ex)
+            {
+                JobExecutionException e2 = new JobExecutionException(ex);
+                //true  鏄珛鍗抽噸鏂版墽琛屼换鍔� 
+                e2.RefireImmediately = true;
+                jobHistory += $"锛屻�恵DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}銆戙�愭墽琛屽け璐�:{ex.Message}銆�";
+            }
+            finally
+            {
+                taskSeconds = Math.Round(stopwatch.Elapsed.TotalSeconds, 3);
+                jobHistory += $"锛屻�恵DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}銆戙�愭墽琛岀粨鏉熴��(鑰楁椂:{taskSeconds}绉�)";
+            }
+
+            return jobHistory;
+        }
+
+        public void ExecuteJob(IJobExecutionContext context, Action<IJobExecutionContext> action)
+        {
+            //璁板綍Job鏃堕棿
+            Stopwatch stopwatch = new Stopwatch();
+            //JOBID
+            string jobid = context.JobDetail.Key.Name;
+            //JOB缁勫悕
+            string groupName = context.JobDetail.Key.Group;
+            //鏃ュ織
+            string jobHistory = $"銆愮粍鍒細{groupName}銆�";
+            //鑰楁椂
+            double taskSeconds = 0;
+            try
+            {
+                stopwatch.Start();
+                action(context);//鎵ц浠诲姟
+                stopwatch.Stop();
+                jobHistory += $",銆愭墽琛屾垚鍔熴��";
+            }
+            catch (Exception ex)
+            {
+                jobHistory += $",銆愭墽琛屽け璐�:{ex.Message}銆�";
+            }
+            finally
+            {
+                taskSeconds = Math.Round(stopwatch.Elapsed.TotalSeconds);
+                jobHistory += $"(鑰楁椂:{taskSeconds}绉�)";
+                if (taskSeconds > 1 || jobHistory.Contains("鎵ц澶辫触"))
+                    WriteLog.Info(jobid + "鎵ц璁板綍").Write(jobHistory, jobid + "鎵ц璁板綍");
+            }
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/One_two_unitJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/One_two_unitJob.cs"
new file mode 100644
index 0000000..4d1d7fc
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/One_two_unitJob.cs"
@@ -0,0 +1,208 @@
+锘縰sing FreeSql;
+using Quartz;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Comm.ItemDB;
+using WIDESEA_Comm.LogInfo;
+using WIDESEA_Core.EFDbContext;
+using WIDESEA_Entity.DomainModels;
+using WIDESEA_WCS.IRepositories;
+using WIDESEA_WCS.IServices;
+using WIDESEA_WCS.Repositories;
+using WIDESEA_WCS.Services;
+using WIDESEA_WCS.WCSClient;
+using static System.Collections.Specialized.BitVector32;
+
+namespace WIDESEA_WCS
+{
+    /// <summary>
+    /// 涓�浜屽崟鍏冭皟搴�
+    /// </summary>
+    [DisallowConcurrentExecution]
+    public class One_two_unitJob : IJob
+    {
+        public Task Execute(IJobExecutionContext context)
+        {
+            try
+            {
+                var client = context.JobDetail.JobDataMap.Get("JobParams") as PLCClient;
+                if (client == null)
+                {
+                    return Task.CompletedTask;
+                }
+
+                //鑷姩閲嶈繛
+                if (!client.IsConnected)
+                {
+                    client.Connect();
+                    return Task.CompletedTask;
+                }
+
+                DoAction(client);
+            }
+            catch { }
+            return Task.CompletedTask;
+        }
+        static List<GDXDB> gDXDBs = new List<GDXDB>();
+        private void DoAction(PLCClient client)
+        {
+            try
+            {
+                #region 璇诲啓鏂规硶銆佹棩蹇椼�佹墽琛屾椂闂�
+                //client.Write("DB400.DBX0", "123456");
+                //client.WriteByOrder("R_wheel_SN", "123456", "4.1");
+                //client.WriteByOrder("R_wheel_SN", "666666", "4.2");
+
+                //var res = client.Read<string>("DB400.DBX0", 20);
+                //var res1 = client.ReadByOrder<string>("R_wheel_SN", "4.1");
+                //var res2 = client.ReadByOrder<string>("R_wheel_SN", "4.2");
+
+                //鏃ュ織鍐欏叆
+                //WriteDBLog.Info("涓�浜屽崟鍏冭皟搴�", "4.1:" + res1 + ";4.2:" + res2, "PCS");
+
+                //鎵ц瀹屾垚鏃堕棿
+                //Console.WriteLine(DateTime.Now);
+                #endregion 
+
+                #region     娣诲姞PLC鍦板潃淇℃伅
+                //VOLContext Context = new VOLContext();
+                //Idt_plcinfodetailRepository dt_PlcinfodetailService = new dt_plcinfodetailRepository(Context);
+                //List<dt_plcinfodetail> plcinfodetails = new List<dt_plcinfodetail>();
+                //for (int i = 106; i <= 110; i++)
+                //{
+                //    dt_plcinfodetail dt_Plcinfodetail = new dt_plcinfodetail()
+                //    {
+                //        plcdetail_id = Guid.NewGuid(),
+                //        plcdetail_iotype = "One_two_unit",
+                //        plcdetail_db = "DB400",
+                //        plcdetail_value = "DBX" + ((i - 1) * 30),
+                //        plcdetail_valtype = "string",
+                //        plcdetail_len = 20,
+                //        plcdetail_name = "R_wheel_SN",
+                //        plcdetail_number = "7." + (i - 80),
+                //        plcdetail_remark = "璇诲彇杞﹁疆SN鍙�"
+                //    };
+                //    plcinfodetails.Add(dt_Plcinfodetail);
+                //    dt_plcinfodetail dt_Plcinfodetail1 = new dt_plcinfodetail()
+                //    {
+                //        plcdetail_id = Guid.NewGuid(),
+                //        plcdetail_iotype = "One_two_unit",
+                //        plcdetail_db = "DB400",
+                //        plcdetail_value = "DBX" + ((i - 1) * 30 + 20),
+                //        plcdetail_valtype = "int",
+                //        plcdetail_name = "R_wheel_type",
+                //        plcdetail_number = "7." + (i - 80),
+                //        plcdetail_remark = "璇诲彇杞﹁疆绫诲瀷"
+                //    };
+                //    plcinfodetails.Add(dt_Plcinfodetail1);
+                //    dt_plcinfodetail dt_Plcinfodetail2 = new dt_plcinfodetail()
+                //    {
+                //        plcdetail_id = Guid.NewGuid(),
+                //        plcdetail_iotype = "One_two_unit",
+                //        plcdetail_db = "DB400",
+                //        plcdetail_value = "DBX" + ((i - 1) * 30 + 22),
+                //        plcdetail_valtype = "byte",
+                //        plcdetail_name = "R_part_status",
+                //        plcdetail_number = "7." + (i - 80),
+                //        plcdetail_remark = "璇诲彇杞﹁疆闆朵欢鐘舵��"
+                //    };
+                //    plcinfodetails.Add(dt_Plcinfodetail2);
+                //    dt_plcinfodetail dt_Plcinfodetail3 = new dt_plcinfodetail()
+                //    {
+                //        plcdetail_id = Guid.NewGuid(),
+                //        plcdetail_iotype = "One_two_unit",
+                //        plcdetail_db = "DB400",
+                //        plcdetail_value = "DBX" + ((i - 1) * 30 + 23),
+                //        plcdetail_valtype = "byte",
+                //        plcdetail_name = "R_part_process",
+                //        plcdetail_number = "7." + (i - 80),
+                //        plcdetail_remark = "璇诲彇杞﹁疆闆朵欢宸ヨ壓"
+                //    };
+                //    plcinfodetails.Add(dt_Plcinfodetail3);
+                //    dt_plcinfodetail dt_Plcinfodetail4 = new dt_plcinfodetail()
+                //    {
+                //        plcdetail_id = Guid.NewGuid(),
+                //        plcdetail_iotype = "One_two_unit",
+                //        plcdetail_db = "DB400",
+                //        plcdetail_value = "DBX" + ((i - 1) * 30 + 24),
+                //        plcdetail_valtype = "byte",
+                //        plcdetail_name = "R_machine_nr",
+                //        plcdetail_number = "7." + (i - 80),
+                //        plcdetail_remark = "璇诲彇杈婇亾machine_nr"
+                //    };
+                //    plcinfodetails.Add(dt_Plcinfodetail4);
+                //    dt_plcinfodetail dt_Plcinfodetail5 = new dt_plcinfodetail()
+                //    {
+                //        plcdetail_id = Guid.NewGuid(),
+                //        plcdetail_iotype = "One_two_unit",
+                //        plcdetail_db = "DB400",
+                //        plcdetail_value = "DBX" + ((i - 1) * 30 + 25),
+                //        plcdetail_valtype = "byte",
+                //        plcdetail_name = "R_direction",
+                //        plcdetail_number = "7." + (i - 80),
+                //        plcdetail_remark = "璇诲彇杈婇亾direction"
+                //    };
+                //    plcinfodetails.Add(dt_Plcinfodetail5);
+                //}
+                //dt_PlcinfodetailService.AddRange(plcinfodetails, true);
+                #endregion
+
+                VOLContext Context = new VOLContext();
+                Idt_plcinfoheadRepository repository = new dt_plcinfoheadRepository(Context);
+                Idt_plcinfodetailRepository plcRepository = new dt_plcinfodetailRepository(Context);
+
+                PropertyInfo[] propertyInfos = typeof(GDXDB).GetProperties();//鑾峰彇鎵�鏈夊睘鎬�
+                var plc = repository.FindFirst(x => x.plcinfo_name == client.PLCName);
+                var numbers = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep).GroupBy(x => x.plcdetail_number).ToList();
+                foreach (var number in numbers)
+                {
+                    GDXDB dBItem = gDXDBs.Where(x => x.R_Name == number.Key).FirstOrDefault();
+                    if (dBItem == null)
+                    {
+                        dBItem = new();
+                        dBItem.OnReadSignal += HandleReadSignal;
+                        gDXDBs.Add(dBItem);
+                        //object obj = dBItem.R_part_status;
+                        //dBItem.R_part_status = client.Read<byte>(number.Key);
+                    }
+                    List<dt_plcinfodetail> details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == number.Key).ToList();
+                    for (int i = 0; i < propertyInfos.Length; i++)
+                    {
+                        if (i == 0)
+                        {
+                            dBItem.R_Name = number.Key;
+                        }
+                        else
+                        {
+                            object readData = DBExtension.Read(details.Where(x => x.plcdetail_name == propertyInfos[i].Name).FirstOrDefault(), client);
+                            if (readData != null) { }
+                            object obj = propertyInfos[i].GetValue(dBItem);
+                            if (obj != readData)
+                                propertyInfos[i].SetValue(dBItem, readData);
+                        }
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine(ex.Message);
+            }
+        }
+
+        public void HandleReadSignal(GDXDB DBItem)
+        {
+            VOLContext Context = new VOLContext();
+            Idt_ActualProductionRepository repository = new dt_ActualProductionRepository(Context);
+            var info = repository.FindFirst(x => x.SN == DBItem.R_wheel_SN);//鏌ヨ杞﹁疆鐨勮缁嗕俊鎭�
+            if (info != null)
+            {
+                //鍛婅瘔妗佹灦
+
+            }
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs"
new file mode 100644
index 0000000..b9ae9b1
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs"
@@ -0,0 +1,34 @@
+锘縰sing Quartz;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_WCS.Jobs;
+using WIDESEA_WCS.JobsPart.Common;
+using WIDESEA_WCS.WCSClient;
+using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;
+
+namespace WIDESEA_WCS
+{
+    [DisallowConcurrentExecution]
+    public class AutoTaskJob : JobBase, IJob
+    {
+        LocationCreation Creation = new LocationCreation();
+        public Task Execute(IJobExecutionContext context)
+        {
+            try
+            {
+                ExecuteJob(context, DoAction);
+            }
+            catch { }
+            return Task.CompletedTask;
+        }
+
+        private void DoAction(IJobExecutionContext context)
+        {
+            //throw new NotImplementedException();
+            Creation.HCJCreation();
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/LocationCreation.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/LocationCreation.cs"
new file mode 100644
index 0000000..103a191
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/LocationCreation.cs"
@@ -0,0 +1,42 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.FreeDB;
+using WIDESEA_Entity.DomainModels;
+
+namespace WIDESEA_WCS.JobsPart.Common
+{
+    public class LocationCreation
+    {
+        FreeDB freeDB = new FreeDB();
+        public void HCJCreation()
+        {
+            try
+            {
+                List<dt_stationinfo> stationinfos = new List<dt_stationinfo>();
+                for (int i = 1; i <= 3; i++)
+                {
+                    for (int j = 1; j <= 3; j++)
+                    {
+                        dt_stationinfo stationinfo = new dt_stationinfo();
+                        stationinfo.id = Guid.NewGuid();
+                        stationinfo.stationCode = "X0" + i + (i <= 9 ? "00" + i : "0" + i) + (j <= 9 ? "00" + j : "0" + j);
+                        stationinfo.area = "5";
+                        stationinfo.enable = true;
+                        stationinfo.line = i;
+                        stationinfo.column = j;
+                        stationinfos.Add(stationinfo);
+                    }
+                }
+                freeDB.AddRange(stationinfos);
+            }
+            catch (Exception ex)
+            {
+
+                throw;
+            }
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Repositories/WCS/dt_MachineinfoRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Repositories/WCS/dt_MachineinfoRepository.cs"
new file mode 100644
index 0000000..ad41643
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Repositories/WCS/dt_MachineinfoRepository.cs"
@@ -0,0 +1,24 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *Repository鎻愪緵鏁版嵁搴撴搷浣滐紝濡傛灉瑕佸鍔犳暟鎹簱鎿嶄綔璇峰湪褰撳墠鐩綍涓婸artial鏂囦欢澶筪t_MachineinfoRepository缂栧啓浠g爜
+ */
+using WIDESEA_WCS.IRepositories;
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Core.EFDbContext;
+using WIDESEA_Core.Extensions.AutofacManager;
+using WIDESEA_Entity.DomainModels;
+
+namespace WIDESEA_WCS.Repositories
+{
+    public partial class dt_MachineinfoRepository : RepositoryBase<dt_Machineinfo> , Idt_MachineinfoRepository
+    {
+    public dt_MachineinfoRepository(VOLContext dbContext)
+    : base(dbContext)
+    {
+
+    }
+    public static Idt_MachineinfoRepository Instance
+    {
+      get {  return AutofacContainerModule.GetService<Idt_MachineinfoRepository>(); } }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Repositories/system/dt_stationinfoRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Repositories/system/dt_stationinfoRepository.cs"
new file mode 100644
index 0000000..40638f4
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Repositories/system/dt_stationinfoRepository.cs"
@@ -0,0 +1,24 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *Repository鎻愪緵鏁版嵁搴撴搷浣滐紝濡傛灉瑕佸鍔犳暟鎹簱鎿嶄綔璇峰湪褰撳墠鐩綍涓婸artial鏂囦欢澶筪t_stationinfoRepository缂栧啓浠g爜
+ */
+using WIDESEA_WCS.IRepositories;
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Core.EFDbContext;
+using WIDESEA_Core.Extensions.AutofacManager;
+using WIDESEA_Entity.DomainModels;
+
+namespace WIDESEA_WCS.Repositories
+{
+    public partial class dt_stationinfoRepository : RepositoryBase<dt_stationinfo> , Idt_stationinfoRepository
+    {
+    public dt_stationinfoRepository(VOLContext dbContext)
+    : base(dbContext)
+    {
+
+    }
+    public static Idt_stationinfoRepository Instance
+    {
+      get {  return AutofacContainerModule.GetService<Idt_stationinfoRepository>(); } }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/VV_DispatchService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/VV_DispatchService.cs"
index d1723f7..9322093 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/VV_DispatchService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/VV_DispatchService.cs"
@@ -1,11 +1,15 @@
 using Microsoft.AspNetCore.Http;
 using Microsoft.Extensions.DependencyInjection;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
 using Quartz;
 using Quartz.Impl.Matchers;
+using System.Diagnostics;
 using WIDESEA_Comm.LogInfo;
 using WIDESEA_Core.Extensions;
 using WIDESEA_Core.Extensions.AutofacManager;
 using WIDESEA_Core.FreeDB;
+using WIDESEA_Core.ManageUser;
+using WIDESEA_Core.Services;
 using WIDESEA_Core.Utilities;
 using WIDESEA_Entity.DomainModels;
 using WIDESEA_WCS.IRepositories;
@@ -65,18 +69,21 @@
                     {
                         if (cooRes.Status)
                         {
+                            WriteDBLog.Success($"寮�鍚湇鍔�", new { 鏁版嵁 = "鏈嶅姟鍚姩鎴愬姛锛�" }, "PCS", UserContext.Current.UserTrueName);
                             return webResponse.OK("鏈嶅姟鍚姩鎴愬姛锛�");
                         }
                         else
                         {
                             //杩斿洖PLC寮傚父
+                            WriteDBLog.Error($"寮�鍚湇鍔�", new { 鏁版嵁 = cooRes }, "PCS", UserContext.Current.UserTrueName);
                             return cooRes;
                         }
                     }
                     else
                     {
                         //璋冨害鍚姩澶辫触锛屽叧闂叏閮�
-                        WriteLog.Write_Log("鏈嶅姟", "鏈嶅姟", "鍚姩鏈嶅姟\n[璋冨害寮傚父]" + startRes.Message);
+                        //WriteLog.Write_Log("鏈嶅姟", "鏈嶅姟", "鍚姩鏈嶅姟\n[璋冨害寮傚父]" + startRes.Message);
+                        WriteDBLog.Error($"寮�鍚湇鍔�", new { 鏁版嵁 = startRes.Message }, "PCS", UserContext.Current.UserTrueName);
                         return startRes;
                     }
                 }
@@ -87,7 +94,8 @@
             }
             catch (Exception ex)
             {
-                WriteLog.Write_Log("鏈嶅姟", "鏈嶅姟", "鍚姩鏈嶅姟\n[寮傚父]" + ex.Message);
+                //WriteLog.Write_Log("鏈嶅姟", "鏈嶅姟", "鍚姩鏈嶅姟\n[寮傚父]" + ex.Message);
+                WriteDBLog.Error($"寮�鍚湇鍔�", new { 鏁版嵁 = ex.Message }, "PCS", UserContext.Current.UserTrueName);
                 return webResponse.Error($"寮傚父锛寋ex.Message}");
             }
         }
@@ -125,7 +133,8 @@
             var plcList = freeDB.Select<dt_plcinfohead>().Where("EXISTS (select * from dt_equipmentinfo where equipment_state='Enable' and equipment_name=a.plcinfo_name)").ToList();
             if (plcList.Count == 0)
             {
-                throw new Exception("鏈厤缃换浣昉LC杩炴帴瀵硅薄锛�");
+                return content.OK();
+                //throw new Exception("鏈厤缃换浣昉LC杩炴帴瀵硅薄锛�");
             }
 
             var detialList = freeDB.Select<dt_plcinfodetail>().ToList();
@@ -227,6 +236,8 @@
                 {
                     order.dbAddress = item.plcdetail_db + "." + item.plcdetail_value;
                 }
+                order.dataLen = item.plcdetail_len;
+                order.Methods = item.plcdetail_number;//
                 itmes.Add(order);
             }
             return itmes;
@@ -252,10 +263,13 @@
                 scheduler.Shutdown();
                 Console.WriteLine("鏈嶅姟鍏抽棴鎴愬姛锛�");
                 WriteLog.Write_Log("鏈嶅姟", "鏈嶅姟", "鏈嶅姟鍏抽棴鎴愬姛!");
+                WriteDBLog.Success($"鍏抽棴鏈嶅姟", new { 鏁版嵁 = "鏈嶅姟鍏抽棴鎴愬姛锛�" }, "PCS", UserContext.Current.UserTrueName);
             }
             catch (Exception ex)
             {
                 WriteLog.Write_Log("鏈嶅姟", "鏈嶅姟", "鍏抽棴鏈嶅姟\n[寮傚父]" + ex.Message);
+                WriteDBLog.Error($"鍏抽棴鏈嶅姟", new { 鏁版嵁 = ex.Message }, "PCS", UserContext.Current.UserTrueName);
+                return webResponse.Error(ex.Message);
             }
             return webResponse.OK("鏈嶅姟鍏抽棴鎴愬姛锛�");
         }
@@ -268,28 +282,40 @@
         public WebResponseContent StartJob(string jobName)
         {
             WebResponseContent webResponse = new WebResponseContent();
-            if (!scheduler.IsRun())
+            try
             {
-                return webResponse.Error("璇峰厛鍚姩鏈嶅姟锛�");
-            }
-            var jobData = freeDB.Select<VV_Dispatch>().Where(t => t.JobName == jobName).First();
-            if (jobData == null)
-            {
-                webResponse.Error($"璋冨害{jobName}涓嶅瓨鍦紒");
-            }
-            else
-            {
-                var job = scheduler.GetJobByJobName(jobName);
-                if (job != null)
+                if (!scheduler.IsRun())
                 {
-                    webResponse.Error($"璋冨害{jobName}宸叉槸鎵ц鐘舵�侊紒");
+                    throw new Exception("璇峰厛鍚姩鏈嶅姟锛�");
+                    //return webResponse.Error("璇峰厛鍚姩鏈嶅姟锛�");
+                }
+                var jobData = freeDB.Select<VV_Dispatch>().Where(t => t.JobName == jobName).First();
+                if (jobData == null)
+                {
+                    throw new Exception($"璋冨害{jobName}涓嶅瓨鍦紒");
+                    //webResponse.Error($"璋冨害{jobName}涓嶅瓨鍦紒");
                 }
                 else
                 {
-                    scheduler.AddJob(jobData);
-                    webResponse.OK("璋冨害娣诲姞鎴愬姛");
+                    var job = scheduler.GetJobByJobName(jobName);
+                    if (job != null)
+                    {
+                        throw new Exception($"璋冨害{jobName}宸叉槸鎵ц鐘舵�侊紒");
+                        //webResponse.Error($"璋冨害{jobName}宸叉槸鎵ц鐘舵�侊紒");
+                    }
+                    else
+                    {
+                        scheduler.AddJob(jobData);
+                        webResponse.OK($"璋冨害{jobName}鎵ц鎴愬姛锛�");
+                    }
                 }
             }
+            catch (Exception ex)
+            {
+                WriteDBLog.Error($"鎵ц{jobName}璋冨害", new { 鏁版嵁 = ex.Message }, "PCS", UserContext.Current.UserTrueName);
+                return webResponse.Error(ex.Message);
+            }
+            WriteDBLog.Success($"鎵ц{jobName}璋冨害", new { 鏁版嵁 = jobName + "鎵ц鎴愬姛锛�" }, "PCS", UserContext.Current.UserTrueName);
             return webResponse;
         }
 
@@ -302,25 +328,37 @@
         public WebResponseContent CloseJob(string jobName)
         {
             WebResponseContent webResponse = new WebResponseContent();
-            if (!scheduler.IsRun())
+            try
             {
-                return webResponse.Error("璇峰厛鍚姩鏈嶅姟锛�");
-            }
+                if (!scheduler.IsRun())
+                {
+                    throw new Exception("璇峰厛鍚姩鏈嶅姟锛�");
+                    //return webResponse.Error("璇峰厛鍚姩鏈嶅姟锛�");
+                }
 
-            var job = scheduler.GetJobByJobName(jobName);
-            if (job == null)
-            {
-                return webResponse.Error($"浠诲姟{jobName},涓嶅瓨鍦紒");
+                var job = scheduler.GetJobByJobName(jobName);
+                if (job == null)
+                {
+                    throw new Exception($"浠诲姟{jobName},涓嶅瓨鍦紒");
+                    //return webResponse.Error($"浠诲姟{jobName},涓嶅瓨鍦紒");
+                }
+                var res = scheduler.RemoveJob(job);
+                if (res)
+                {
+                    webResponse.OK($"璋冨害{jobName}鏆傚仠鎴愬姛锛�");
+                }
+                else
+                {
+                    throw new Exception($"璋冨害{jobName}鏆傚仠澶辫触锛�");
+                    //webResponse.Error($"璋冨害{jobName}鍏抽棴澶辫触锛�");
+                }
             }
-            var res = scheduler.RemoveJob(job);
-            if (res)
+            catch (Exception ex)
             {
-                webResponse.OK($"璋冨害{jobName}鍏抽棴鎴愬姛锛�");
+                WriteDBLog.Error($"鏆傚仠{jobName}璋冨害", new { 鏁版嵁 = ex.Message }, "PCS", UserContext.Current.UserTrueName);
+                return webResponse.Error(ex.Message);
             }
-            else
-            {
-                webResponse.Error($"璋冨害{jobName}鍏抽棴澶辫触锛�");
-            }
+            WriteDBLog.Success($"鏆傚仠{jobName}璋冨害", new { 鏁版嵁 = jobName + "鏆傚仠鎴愬姛锛�" }, "PCS", UserContext.Current.UserTrueName);
             return webResponse;
         }
 
@@ -365,5 +403,69 @@
             }
             return data;
         }
+
+        public override WebResponseContent Upload(List<IFormFile> files)
+        {
+            #region
+            WebResponseContent Response = new WebResponseContent();
+            if (files == null || files.Count == 0) return Response.Error("璇蜂笂浼犳枃浠�");
+
+            string msg = "";
+            string IP = "\\\\" + "192.168.1.35" + "\\ipc$";
+            string password = "971204";
+            string User = "dell";
+
+            int i = 0;
+            string filePath = $"\\\\192.168.1.35\\TextTest";
+            string fullPath = filePath.MapPath(true);
+            Process process = new Process();
+            try
+            {
+                process.StartInfo.FileName = "cmd.exe";
+                process.StartInfo.UseShellExecute = false;
+                process.StartInfo.RedirectStandardInput = true;
+                process.StartInfo.RedirectStandardOutput = true;
+                process.StartInfo.RedirectStandardError = true;
+                process.StartInfo.CreateNoWindow = true;
+                process.Start();
+                string dosLine = "net use " + IP + " " + password + " /user:" + User;
+                process.StandardInput.WriteLine(dosLine);
+                process.StandardInput.WriteLine("exit");
+                while (!process.HasExited)
+                {
+                    process.WaitForExit(1000);
+                }
+                msg = process.StandardError.ReadToEnd();
+                process.StandardError.Close();
+                if (msg != "")
+                    throw new Exception(msg);
+                if (!Directory.Exists(fullPath)) Directory.CreateDirectory(fullPath);
+                for (i = 0; i < files.Count; i++)
+                {
+                    string fileName = files[i].FileName;
+                    fullPath = fullPath + "/" + fileName;
+                    using (var stream = new FileStream(fullPath, FileMode.Create))
+                    {
+                        files[i].CopyTo(stream);
+                    }
+                    //FileStream outFileStream = new FileStream(fullPath, FileMode.Create);
+                    //files[i].CopyTo(outFileStream);
+                }
+                return Response.OK("鏂囦欢涓婁紶鎴愬姛", filePath);
+            }
+            catch (Exception ex)
+            {
+                //return Response.Error(ex.Message);
+                Logger.Error($"涓婁紶鏂囦欢澶辫触锛歿typeof(T).GetEntityTableCnName()},璺緞锛歿filePath},澶辫触鏂囦欢:{files[i]},{ex.Message + ex.StackTrace}");
+                return Response.Error("鏂囦欢涓婁紶澶辫触");
+            }
+            finally
+            {
+                process.Close();
+                process.Dispose();
+            }
+
+            #endregion
+        }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/dt_MachineinfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/dt_MachineinfoService.cs"
new file mode 100644
index 0000000..4ce3614
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/dt_MachineinfoService.cs"
@@ -0,0 +1,164 @@
+/*
+ *鎵�鏈夊叧浜巇t_Machineinfo绫荤殑涓氬姟浠g爜搴斿湪姝ゅ缂栧啓
+*鍙娇鐢╮epository.璋冪敤甯哥敤鏂规硶锛岃幏鍙朎F/Dapper绛変俊鎭�
+*濡傛灉闇�瑕佷簨鍔¤浣跨敤repository.DbContextBeginTransaction
+*涔熷彲浣跨敤DBServerProvider.鎵嬪姩鑾峰彇鏁版嵁搴撶浉鍏充俊鎭�
+*鐢ㄦ埛淇℃伅銆佹潈闄愩�佽鑹茬瓑浣跨敤UserContext.Current鎿嶄綔
+*dt_MachineinfoService瀵瑰銆佸垹銆佹敼鏌ャ�佸鍏ャ�佸鍑恒�佸鏍镐笟鍔′唬鐮佹墿灞曞弬鐓erviceFunFilter
+*/
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Core.Extensions.AutofacManager;
+using WIDESEA_Entity.DomainModels;
+using System.Linq;
+using WIDESEA_Core.Utilities;
+using System.Linq.Expressions;
+using WIDESEA_Core.Extensions;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.AspNetCore.Http;
+using WIDESEA_WCS.IRepositories;
+using Newtonsoft.Json;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
+using System.Diagnostics;
+using WIDESEA_Core.Services;
+using WIDESEA_Comm.LogInfo;
+using WIDESEA_Core.ManageUser;
+
+namespace WIDESEA_WCS.Services
+{
+    public partial class dt_MachineinfoService
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        private readonly Idt_MachineinfoRepository _repository;//璁块棶鏁版嵁搴�
+
+        [ActivatorUtilitiesConstructor]
+        public dt_MachineinfoService(
+            Idt_MachineinfoRepository dbRepository,
+            IHttpContextAccessor httpContextAccessor
+            )
+        : base(dbRepository)
+        {
+            _httpContextAccessor = httpContextAccessor;
+            _repository = dbRepository;
+            //澶氱鎴蜂細鐢ㄥ埌杩檌nit浠g爜锛屽叾浠栨儏鍐靛彲浠ヤ笉鐢�
+            //base.Init(dbRepository);
+        }
+        public override WebResponseContent Update(SaveModel saveModel)
+        {
+            return base.Update(saveModel);
+        }
+
+        #region 浼犺緭鏂囦欢鐘舵�佽涓哄厑璁�
+        public WebResponseContent UpdateEnable(string saveModel)
+        {
+            WebResponseContent content = new WebResponseContent();
+            var model = JsonConvert.DeserializeObject<dt_Machineinfo>(saveModel);
+            model.Enable = 1;
+            var cont = _repository.Update(model, true);
+            if (cont > 0)
+                content.OK(model.Name + "璁剧疆涓哄厑璁镐紶杈撴枃浠舵垚鍔燂紒");
+            else
+                content.Error(model.Name + "璁剧疆涓哄厑璁镐紶杈撴枃浠跺け璐ワ紒");
+            //var
+            return content;
+        }
+        #endregion
+
+        #region 浼犺緭鏂囦欢鐘舵�佽涓虹姝�
+        public WebResponseContent UpdateDisEnable(string saveModel)
+        {
+            WebResponseContent content = new WebResponseContent();
+            var model = JsonConvert.DeserializeObject<dt_Machineinfo>(saveModel);
+            model.Enable = 0;
+            var cont = _repository.Update(model, true);
+            if (cont > 0)
+                content.OK(model.Name + "璁剧疆涓虹姝紶杈撴枃浠舵垚鍔燂紒");
+            else
+                content.Error(model.Name + "璁剧疆涓虹姝紶杈撴枃浠跺け璐ワ紒");
+            //var
+            return content;
+        }
+        #endregion
+
+        #region 杩滅▼鏂囦欢浼犺緭
+        public override WebResponseContent Upload(List<IFormFile> files)
+        {
+
+            WebResponseContent Response = new WebResponseContent();
+            if (files == null || files.Count == 0) return Response.Error("璇蜂笂浼犳枃浠�");
+            List<string> requestTemps = new List<string>();
+
+            string filePath = "";
+            var Machineinfos = _repository.Find(x => x.Enable == 1);
+            if (Machineinfos.Count < 1)
+                return Response.Error("鏈壘鍒板厑璁镐紶杈撴枃浠剁殑鏈哄簥锛�");
+            try
+            {
+                foreach (var machineinfo in Machineinfos)
+                {
+                    Process process = new Process();
+                    process.StartInfo.FileName = "cmd.exe";
+                    process.StartInfo.UseShellExecute = false;
+                    process.StartInfo.RedirectStandardInput = true;
+                    process.StartInfo.RedirectStandardOutput = true;
+                    process.StartInfo.RedirectStandardError = true;
+                    process.StartInfo.CreateNoWindow = true;
+                    process.Start();
+                    string IP = "\\\\" + machineinfo.IP + "\\ipc$";
+                    filePath = $"\\\\" + machineinfo.IP + "\\" + machineinfo.FolderName;
+                    string fullPath = filePath.MapPath(true);
+                    string fileName = "";
+                    try
+                    {
+                        string dosLine = "net use " + IP + " " + machineinfo.Password + " /user:" + machineinfo.User;
+                        process.StandardInput.WriteLine(dosLine);
+                        process.StandardInput.WriteLine("exit");
+                        while (!process.HasExited)
+                        {
+                            process.WaitForExit(1000);
+                        }
+                        string msg = process.StandardError.ReadToEnd();
+                        process.StandardError.Close();
+                        if (msg != "")
+                            throw new Exception(machineinfo.Name + msg);
+                        if (!Directory.Exists(fullPath)) Directory.CreateDirectory(fullPath);
+                        int i = 0;
+                        for (i = 0; i < files.Count; i++)
+                        {
+                            fileName = files[i].FileName;
+                            fullPath = fullPath + "/" + fileName;
+                            using (var stream = new FileStream(fullPath, FileMode.Create))
+                            {
+                                files[i].CopyTo(stream);
+                            }
+                            //FileStream outFileStream = new FileStream(fullPath, FileMode.Create);
+                            //files[i].CopyTo(outFileStream);
+                            var requestTemp = machineinfo.Name + "锛氫笅杞芥枃浠惰矾寰勶細" + fullPath + ";涓嬭浇鏂囦欢鍚嶇О锛�" + fileName + ";涓嬭浇鎴愬姛锛�";
+                            requestTemps.Add(requestTemp);
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        var requestTemp = machineinfo.Name + "锛氫笅杞芥枃浠惰矾寰勶細" + fullPath + ";涓嬭浇鏂囦欢鍚嶇О锛�" + fileName + ";涓嬭浇澶辫触锛�" + ex.Message;
+                        requestTemps.Add(requestTemp);
+                        throw;
+                    }
+                    finally
+                    {
+                        process.Close();
+                        process.Dispose();
+                    }
+                }
+                WriteDBLog.Success($"鏈哄簥绋嬪簭涓嬭浇", new { 鏁版嵁 = requestTemps }, "PCS", UserContext.Current.UserTrueName);
+                return Response.OK("鏂囦欢浼犺緭鎴愬姛锛�", filePath);
+            }
+            catch (Exception ex)
+            {
+                WriteDBLog.Error($"鏈哄簥绋嬪簭涓嬭浇", new { 鏁版嵁 = requestTemps }, "PCS", UserContext.Current.UserTrueName);
+                return Response.Error(ex.Message + "鏂囦欢浼犺緭澶辫触锛�");
+            }
+        }
+        #endregion
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/dt_equipmentinfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/dt_equipmentinfoService.cs"
index d34772e..12eb0bd 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/dt_equipmentinfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/dt_equipmentinfoService.cs"
@@ -20,6 +20,7 @@
 using WIDESEA_Core.FreeDB;
 using WIDESEA_Comm.LogInfo;
 using WIDESEA_Core.ManageUser;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
 
 namespace WIDESEA_WCS.Services
 {
@@ -49,6 +50,7 @@
         public WebResponseContent ChangEquipmentState(SaveModel model)
         {
             WebResponseContent content = new WebResponseContent();
+            List<dt_equipmentinfo> equipmentinfos = new List<dt_equipmentinfo>();
             try
             {
                 FreeDB freeDB = new FreeDB();
@@ -58,12 +60,15 @@
                     keys.Add(Guid.Parse(item.ToString()));
                 }
                 int res = freeDB.Update<dt_equipmentinfo>().Set(t => t.equipment_state == model.Extra.ToString()).Where(t => keys.Contains(t.equipment_id)).ExecuteAffrows();
+                equipmentinfos = freeDB.Select<dt_equipmentinfo>().Where(x => keys.Contains(x.equipment_id)).ToList();
                 content.OK();
-                WriteLog.Write_Log("鍩虹淇℃伅淇敼", "updateEqState", UserContext.Current.UserName + "淇敼鎴愬姛," + res, model);
+                //WriteLog.Write_Log("鍩虹淇℃伅淇敼", "updateEqState", UserContext.Current.UserName + "淇敼鎴愬姛," + res, model);
+                WriteDBLog.Success($"{(model.Extra.ToString() == "Enable" ? "鍚敤璁惧" : "绂佺敤璁惧")}", new { 鏁版嵁 = equipmentinfos }, "PCS", UserContext.Current.UserTrueName);
             }
             catch (Exception ex)
             {
-                WriteLog.Write_Log("鍩虹淇℃伅淇敼", "updateEqState", UserContext.Current.UserName + "淇敼寮傚父," + ex.Message, model);
+                //WriteLog.Write_Log("鍩虹淇℃伅淇敼", "updateEqState", UserContext.Current.UserName + "淇敼寮傚父," + ex.Message, model);
+                WriteDBLog.Error($"{(model.Extra.ToString() == "Enable" ? "鍚敤璁惧" : "绂佺敤璁惧")}", new { 鏁版嵁 = equipmentinfos }, "PCS", UserContext.Current.UserTrueName);
                 content.Error(ex.Message);
             }
             return content;
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/dt_MachineinfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/dt_MachineinfoService.cs"
new file mode 100644
index 0000000..5294550
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/dt_MachineinfoService.cs"
@@ -0,0 +1,27 @@
+/*
+ *Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,姝ゅ浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *鎵�鏈変笟鍔$紪鍐欏叏閮ㄥ簲鍦≒artial鏂囦欢澶逛笅dt_MachineinfoService涓嶪dt_MachineinfoService涓紪鍐�
+ */
+using WIDESEA_WCS.IRepositories;
+using WIDESEA_WCS.IServices;
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Core.Extensions.AutofacManager;
+using WIDESEA_Entity.DomainModels;
+
+namespace WIDESEA_WCS.Services
+{
+    public partial class dt_MachineinfoService : ServiceBase<dt_Machineinfo, Idt_MachineinfoRepository>
+    , Idt_MachineinfoService, IDependency
+    {
+    public dt_MachineinfoService(Idt_MachineinfoRepository repository)
+    : base(repository)
+    {
+    Init(repository);
+    }
+    public static Idt_MachineinfoService Instance
+    {
+      get { return AutofacContainerModule.GetService<Idt_MachineinfoService>(); } }
+    }
+ }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/system/Partial/dt_stationinfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/system/Partial/dt_stationinfoService.cs"
new file mode 100644
index 0000000..ee2f977
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/system/Partial/dt_stationinfoService.cs"
@@ -0,0 +1,41 @@
+/*
+ *鎵�鏈夊叧浜巇t_stationinfo绫荤殑涓氬姟浠g爜搴斿湪姝ゅ缂栧啓
+*鍙娇鐢╮epository.璋冪敤甯哥敤鏂规硶锛岃幏鍙朎F/Dapper绛変俊鎭�
+*濡傛灉闇�瑕佷簨鍔¤浣跨敤repository.DbContextBeginTransaction
+*涔熷彲浣跨敤DBServerProvider.鎵嬪姩鑾峰彇鏁版嵁搴撶浉鍏充俊鎭�
+*鐢ㄦ埛淇℃伅銆佹潈闄愩�佽鑹茬瓑浣跨敤UserContext.Current鎿嶄綔
+*dt_stationinfoService瀵瑰銆佸垹銆佹敼鏌ャ�佸鍏ャ�佸鍑恒�佸鏍镐笟鍔′唬鐮佹墿灞曞弬鐓erviceFunFilter
+*/
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Core.Extensions.AutofacManager;
+using WIDESEA_Entity.DomainModels;
+using System.Linq;
+using WIDESEA_Core.Utilities;
+using System.Linq.Expressions;
+using WIDESEA_Core.Extensions;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.AspNetCore.Http;
+using WIDESEA_WCS.IRepositories;
+
+namespace WIDESEA_WCS.Services
+{
+    public partial class dt_stationinfoService
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        private readonly Idt_stationinfoRepository _repository;//璁块棶鏁版嵁搴�
+
+        [ActivatorUtilitiesConstructor]
+        public dt_stationinfoService(
+            Idt_stationinfoRepository dbRepository,
+            IHttpContextAccessor httpContextAccessor
+            )
+        : base(dbRepository)
+        {
+            _httpContextAccessor = httpContextAccessor;
+            _repository = dbRepository;
+            //澶氱鎴蜂細鐢ㄥ埌杩檌nit浠g爜锛屽叾浠栨儏鍐靛彲浠ヤ笉鐢�
+            //base.Init(dbRepository);
+        }
+  }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/system/dt_stationinfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/system/dt_stationinfoService.cs"
new file mode 100644
index 0000000..33b0fa7
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/system/dt_stationinfoService.cs"
@@ -0,0 +1,27 @@
+/*
+ *Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,姝ゅ浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *鎵�鏈変笟鍔$紪鍐欏叏閮ㄥ簲鍦≒artial鏂囦欢澶逛笅dt_stationinfoService涓嶪dt_stationinfoService涓紪鍐�
+ */
+using WIDESEA_WCS.IRepositories;
+using WIDESEA_WCS.IServices;
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Core.Extensions.AutofacManager;
+using WIDESEA_Entity.DomainModels;
+
+namespace WIDESEA_WCS.Services
+{
+    public partial class dt_stationinfoService : ServiceBase<dt_stationinfo, Idt_stationinfoRepository>
+    , Idt_stationinfoService, IDependency
+    {
+    public dt_stationinfoService(Idt_stationinfoRepository repository)
+    : base(repository)
+    {
+    Init(repository);
+    }
+    public static Idt_stationinfoService Instance
+    {
+      get { return AutofacContainerModule.GetService<Idt_stationinfoService>(); } }
+    }
+ }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/DBExtension.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/DBExtension.cs"
new file mode 100644
index 0000000..753da87
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/DBExtension.cs"
@@ -0,0 +1,60 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Entity.DomainModels;
+
+namespace WIDESEA_WCS.WCSClient
+{
+    public class DBExtension
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="detail">璁惧淇℃伅鍦板潃</param>
+        /// <param name="client"></param>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
+        public static object Read(dt_plcinfodetail detail, PLCClient client)
+        {
+            
+                if (detail.plcdetail_valtype == typeof(int).Name.ToLower())//4瀛楄妭,鏈夌鍙风被鍨�
+                {
+                    return (client.Read<int>(detail.plcdetail_db+"."+detail.plcdetail_value));
+                }
+                else if (detail.plcdetail_valtype == typeof(uint).Name.ToLower())//4瀛楄妭,鏃犵鍙风被鍨�
+                {
+                    return (client.Read<uint>(detail.plcdetail_db + "." + detail.plcdetail_value));
+                }
+                else if (detail.plcdetail_valtype == typeof(short).Name.ToLower())//2瀛楄妭,鏈夌鍙风被鍨�,鏈�甯哥敤
+                {
+                    return (client.Read<short>(detail.plcdetail_db + "." + detail.plcdetail_value));
+                }
+                else if (detail.plcdetail_valtype == typeof(ushort).Name.ToLower())//2瀛楄妭,鏃犵鍙风被鍨�
+                {
+                    return (client.Read<ushort>(detail.plcdetail_db + "." + detail.plcdetail_value));
+                }
+                else if (detail.plcdetail_valtype == typeof(float).Name.ToLower())//娴偣鍨�
+                {
+                    return (client.Read<float>(detail.plcdetail_db + "." + detail.plcdetail_value));
+                }
+                else if (detail.plcdetail_valtype == typeof(bool).Name.ToLower())
+                {
+                    return (client.Read<bool>(detail.plcdetail_db + "." + detail.plcdetail_value));
+                }
+                else if (detail.plcdetail_valtype == typeof(byte).Name.ToLower())//瀛楄妭
+                {
+                    return (client.Read<byte>(detail.plcdetail_db + "." + detail.plcdetail_value));
+                }
+                else if (detail.plcdetail_valtype == typeof(string).Name.ToLower())//瀛楃涓�
+                {
+                    return (client.Read<string>(detail.plcdetail_db + "." + detail.plcdetail_value, detail.plcdetail_len.GetValueOrDefault()));
+                }
+                else
+                {
+                    throw new Exception($"銆恵detail.plcdetail_remark}銆�,DB鍦板潃{detail.plcdetail_db + "." + detail.plcdetail_value},鏈畾涔夋暟鎹被鍨媨detail.plcdetail_valtype}");
+                }
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/DBItemGroup.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/DBItemGroup.cs"
index 5a94f14..be54bb2 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/DBItemGroup.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/DBItemGroup.cs"
@@ -26,7 +26,7 @@
         /// <summary>
         /// 鏁版嵁闀垮害
         /// </summary>
-        public int dataLen { get; set; }
+        public int? dataLen { get; set; }
 
         /// <summary>
         /// 澶勭悊鏂规硶
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Melsec/MelsecMcClient.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Melsec/MelsecMcClient.cs"
index c4c078b..bc682d6 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Melsec/MelsecMcClient.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Melsec/MelsecMcClient.cs"
@@ -129,7 +129,7 @@
         /// </summary>
         /// <param name="orderName">IO鐐瑰悕绉�</param>
         /// <returns></returns>
-        public override DataType ReadByOrder<DataType>(string orderName)
+        public override DataType ReadByOrder<DataType>(string orderName, string Method = null)
         {
             var item = itemGroups.Where(t => t.name.Equals(orderName)).FirstOrDefault();
             if (item == null)
@@ -244,7 +244,7 @@
         /// </summary>
         /// <param name="orderName"></param>
         /// <exception cref="Exception"></exception>
-        public override bool WriteByOrder(string orderName, object value)
+        public override bool WriteByOrder(string orderName, object value, string Method = null)
         {
             lock (_lockWrite)
             {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/ModelBus/ModelBusClient.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/ModelBus/ModelBusClient.cs"
index d647e0c..d9b2286 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/ModelBus/ModelBusClient.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/ModelBus/ModelBusClient.cs"
@@ -129,7 +129,7 @@
         /// </summary>
         /// <param name="orderName">IO鐐瑰悕绉�</param>
         /// <returns></returns>
-        public override DataType ReadByOrder<DataType>(string orderName)
+        public override DataType ReadByOrder<DataType>(string orderName, string Method = null)
         {
             var item = itemGroups.Where(t => t.name.Equals(orderName)).FirstOrDefault();
             if (item == null)
@@ -244,7 +244,7 @@
         /// </summary>
         /// <param name="orderName"></param>
         /// <exception cref="Exception"></exception>
-        public override bool WriteByOrder(string orderName, object value)
+        public override bool WriteByOrder(string orderName, object value, string Method = null)
         {
             lock (_lockWrite)
             {
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/PLCClient.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/PLCClient.cs"
index 616a98e..1ddf692 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/PLCClient.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/PLCClient.cs"
@@ -113,11 +113,15 @@
         /// <param name="orderName"></param>
         /// <returns></returns>
         /// <exception cref="NotImplementedException"></exception>
-        public virtual DataType ReadByOrder<DataType>(string orderName)
+        public virtual DataType ReadByOrder<DataType>(string orderName, string Method = null)
         {
             throw new NotImplementedException();
         }
 
+        public object ReadValues(string equipNum)
+        {
+            throw new NotImplementedException();
+        }
         /// <summary>
         /// 鍐欏叆鏁版嵁锛屾牴鎹瓺B鍦板潃
         /// </summary>
@@ -137,7 +141,7 @@
         /// <param name="value"></param>
         /// <returns></returns>
         /// <exception cref="NotImplementedException"></exception>
-        public virtual bool WriteByOrder(string orderName , object value)
+        public virtual bool WriteByOrder(string orderName, object value, string Method = null)
         {
             throw new NotImplementedException();
         }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Siemens/SiemensPLCClient.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Siemens/SiemensPLCClient.cs"
index 9fa4c15..8922db1 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Siemens/SiemensPLCClient.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Siemens/SiemensPLCClient.cs"
@@ -145,9 +145,10 @@
         /// </summary>
         /// <param name="orderName">IO鐐瑰悕绉�</param>
         /// <returns></returns>
-        public override DataType ReadByOrder<DataType>(string orderName)
+        public override DataType ReadByOrder<DataType>(string orderName, string Method = null)
         {
             var item = itemGroups.Where(t => t.name.Equals(orderName)).FirstOrDefault();
+            if (Method != null) { item = itemGroups.Where(t => t.name.Equals(orderName) && t.Methods.Equals(Method)).FirstOrDefault(); }
             if (item == null)
             {
                 throw new Exception($"PLC{PLCName},鏈畾涔夋寚浠orderName}");
@@ -188,7 +189,7 @@
             else if (typeof(DataType) == typeof(string))//瀛楃涓�
             {
                 var str = GetContent(siemensPLCClient.ReadString(item.dbAddress, (ushort)item.dataLen), item).ToString();
-                str = str.Replace("\0", "");
+                str = str.Replace("\0", "")?.Replace("\\", "")?.Replace("\u0014", "")?.Replace("?\u0006", "");
                 return (DataType)(str as object);
             }
             else
@@ -264,11 +265,12 @@
         /// </summary>
         /// <param name="orderName"></param>
         /// <exception cref="Exception"></exception>
-        public override bool WriteByOrder(string orderName, object value)
+        public override bool WriteByOrder(string orderName, object value, string Method = null)
         {
             lock (_lockWrite)
             {
                 var item = itemGroups.Where(t => t.name.Equals(orderName)).FirstOrDefault();
+                if (Method != null) { item = itemGroups.Where(t => t.name.Equals(orderName) && t.Methods.Equals(Method)).FirstOrDefault(); }
                 if (item == null)
                 {
                     throw new Exception($"PLC{PLCName},鏈畾涔夋寚浠orderName}");
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WIDESEA_WCS.csproj" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WIDESEA_WCS.csproj"
index 9e3dead..5b7e0f6 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WIDESEA_WCS.csproj"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WIDESEA_WCS.csproj"
@@ -13,10 +13,6 @@
   </ItemGroup>
 
   <ItemGroup>
-    <Folder Include="JobsPart\" />
-  </ItemGroup>
-
-  <ItemGroup>
     <PackageReference Include="HslCommunication" Version="11.3.3" />
     <PackageReference Include="Quartz" Version="3.6.3" />
   </ItemGroup>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_System/Partial/dt_log_pcsController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_System/Partial/dt_log_pcsController.cs"
new file mode 100644
index 0000000..b546eae
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_System/Partial/dt_log_pcsController.cs"
@@ -0,0 +1,33 @@
+/*
+ *鎺ュ彛缂栧啓澶�...
+*濡傛灉鎺ュ彛闇�瑕佸仛Action鐨勬潈闄愰獙璇侊紝璇峰湪Action涓婁娇鐢ㄥ睘鎬�
+*濡�: [ApiActionPermission("dt_log_pcs",Enums.ActionPermissionOptions.Search)]
+ */
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.AspNetCore.Http;
+using WIDESEA_Entity.DomainModels;
+using WIDESEA_System.IServices;
+
+namespace WIDESEA_System.Controllers
+{
+    public partial class dt_log_pcsController
+    {
+        private readonly Idt_log_pcsService _service;//璁块棶涓氬姟浠g爜
+        private readonly IHttpContextAccessor _httpContextAccessor;
+
+        [ActivatorUtilitiesConstructor]
+        public dt_log_pcsController(
+            Idt_log_pcsService service,
+            IHttpContextAccessor httpContextAccessor
+        )
+        : base(service)
+        {
+            _service = service;
+            _httpContextAccessor = httpContextAccessor;
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_System/dt_log_pcsController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_System/dt_log_pcsController.cs"
new file mode 100644
index 0000000..f37df56
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_System/dt_log_pcsController.cs"
@@ -0,0 +1,21 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *濡傛灉瑕佸鍔犳柟娉曡鍦ㄥ綋鍓嶇洰褰曚笅Partial鏂囦欢澶筪t_log_pcsController缂栧啓
+ */
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core.Controllers.Basic;
+using WIDESEA_Entity.AttributeManager;
+using WIDESEA_System.IServices;
+namespace WIDESEA_System.Controllers
+{
+    [Route("api/dt_log_pcs")]
+    [PermissionTable(Name = "dt_log_pcs")]
+    public partial class dt_log_pcsController : ApiBaseController<Idt_log_pcsService>
+    {
+        public dt_log_pcsController(Idt_log_pcsService service)
+        : base(service)
+        {
+        }
+    }
+}
+
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/Partial/VV_DispatchController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/Partial/VV_DispatchController.cs"
index c588a39..f45b7b5 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/Partial/VV_DispatchController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/Partial/VV_DispatchController.cs"
@@ -81,5 +81,15 @@
         {
             return _service.CheckServeState();
         }
+
+        ///// <summary>
+        ///// 涓婁紶鏂囦欢
+        ///// </summary>
+        ///// <returns></returns>
+        //[HttpGet, HttpPost, Route("UploadFile"), AllowAnonymous]
+        //public WebResponseContent Upload(List<IFormFile> files)
+        //{
+        //    return _service.Upload(files);
+        //}
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/Partial/dt_MachineinfoController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/Partial/dt_MachineinfoController.cs"
new file mode 100644
index 0000000..89b6ccc
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/Partial/dt_MachineinfoController.cs"
@@ -0,0 +1,56 @@
+/*
+ *鎺ュ彛缂栧啓澶�...
+*濡傛灉鎺ュ彛闇�瑕佸仛Action鐨勬潈闄愰獙璇侊紝璇峰湪Action涓婁娇鐢ㄥ睘鎬�
+*濡�: [ApiActionPermission("dt_Machineinfo",Enums.ActionPermissionOptions.Search)]
+ */
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.AspNetCore.Http;
+using WIDESEA_Entity.DomainModels;
+using WIDESEA_WCS.IServices;
+using Microsoft.AspNetCore.Authorization;
+using WIDESEA_Core.Utilities;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using Newtonsoft.Json;
+
+namespace WIDESEA_WCS.Controllers
+{
+    public partial class dt_MachineinfoController
+    {
+        private readonly Idt_MachineinfoService _service;//璁块棶涓氬姟浠g爜
+        private readonly IHttpContextAccessor _httpContextAccessor;
+
+        [ActivatorUtilitiesConstructor]
+        public dt_MachineinfoController(
+            Idt_MachineinfoService service,
+            IHttpContextAccessor httpContextAccessor
+        )
+        : base(service)
+        {
+            _service = service;
+            _httpContextAccessor = httpContextAccessor;
+        }
+
+        /// <summary>
+        /// 浼犺緭鏂囦欢鐘舵�佽涓哄厑璁�
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost, Route("UpdateEnable"), AllowAnonymous]
+        public WebResponseContent UpdateEnable([FromBody] object saveModel)
+        {
+            return _service.UpdateEnable(JsonConvert.SerializeObject(saveModel));
+        }
+        /// <summary>
+        /// 浼犺緭鏂囦欢鐘舵�佽涓虹姝�
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost, Route("UpdateDisEnable"), AllowAnonymous]
+        public WebResponseContent UpdateDisEnable([FromBody] object saveModel)
+        {
+            return _service.UpdateDisEnable(JsonConvert.SerializeObject(saveModel));
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/Partial/dt_stationinfoController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/Partial/dt_stationinfoController.cs"
new file mode 100644
index 0000000..e9a0093
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/Partial/dt_stationinfoController.cs"
@@ -0,0 +1,33 @@
+/*
+ *鎺ュ彛缂栧啓澶�...
+*濡傛灉鎺ュ彛闇�瑕佸仛Action鐨勬潈闄愰獙璇侊紝璇峰湪Action涓婁娇鐢ㄥ睘鎬�
+*濡�: [ApiActionPermission("dt_stationinfo",Enums.ActionPermissionOptions.Search)]
+ */
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.AspNetCore.Http;
+using WIDESEA_Entity.DomainModels;
+using WIDESEA_WCS.IServices;
+
+namespace WIDESEA_WCS.Controllers
+{
+    public partial class dt_stationinfoController
+    {
+        private readonly Idt_stationinfoService _service;//璁块棶涓氬姟浠g爜
+        private readonly IHttpContextAccessor _httpContextAccessor;
+
+        [ActivatorUtilitiesConstructor]
+        public dt_stationinfoController(
+            Idt_stationinfoService service,
+            IHttpContextAccessor httpContextAccessor
+        )
+        : base(service)
+        {
+            _service = service;
+            _httpContextAccessor = httpContextAccessor;
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/dt_MachineinfoController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/dt_MachineinfoController.cs"
new file mode 100644
index 0000000..d90d011
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/dt_MachineinfoController.cs"
@@ -0,0 +1,21 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *濡傛灉瑕佸鍔犳柟娉曡鍦ㄥ綋鍓嶇洰褰曚笅Partial鏂囦欢澶筪t_MachineinfoController缂栧啓
+ */
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core.Controllers.Basic;
+using WIDESEA_Entity.AttributeManager;
+using WIDESEA_WCS.IServices;
+namespace WIDESEA_WCS.Controllers
+{
+    [Route("api/dt_Machineinfo")]
+    [PermissionTable(Name = "dt_Machineinfo")]
+    public partial class dt_MachineinfoController : ApiBaseController<Idt_MachineinfoService>
+    {
+        public dt_MachineinfoController(Idt_MachineinfoService service)
+        : base(service)
+        {
+        }
+    }
+}
+
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/dt_stationinfoController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/dt_stationinfoController.cs"
new file mode 100644
index 0000000..60ea504
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/dt_stationinfoController.cs"
@@ -0,0 +1,21 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *濡傛灉瑕佸鍔犳柟娉曡鍦ㄥ綋鍓嶇洰褰曚笅Partial鏂囦欢澶筪t_stationinfoController缂栧啓
+ */
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core.Controllers.Basic;
+using WIDESEA_Entity.AttributeManager;
+using WIDESEA_WCS.IServices;
+namespace WIDESEA_WCS.Controllers
+{
+    [Route("api/dt_stationinfo")]
+    [PermissionTable(Name = "dt_stationinfo")]
+    public partial class dt_stationinfoController : ApiBaseController<Idt_stationinfoService>
+    {
+        public dt_stationinfoController(Idt_stationinfoService service)
+        : base(service)
+        {
+        }
+    }
+}
+
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/20231220/Template/\350\260\203\345\272\246\344\277\241\346\201\25720231220090759.xlsx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/20231220/Template/\350\260\203\345\272\246\344\277\241\346\201\25720231220090759.xlsx"
new file mode 100644
index 0000000..7eb5a09
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/20231220/Template/\350\260\203\345\272\246\344\277\241\346\201\25720231220090759.xlsx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/20231220/Template/\350\260\203\345\272\246\344\277\241\346\201\25720231220095958.xlsx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/20231220/Template/\350\260\203\345\272\246\344\277\241\346\201\25720231220095958.xlsx"
new file mode 100644
index 0000000..8afad9f
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/20231220/Template/\350\260\203\345\272\246\344\277\241\346\201\25720231220095958.xlsx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/20240108/Template/\350\260\203\345\272\246\344\277\241\346\201\25720240108151655.xlsx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/20240108/Template/\350\260\203\345\272\246\344\277\241\346\201\25720240108151655.xlsx"
new file mode 100644
index 0000000..6295737
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/20240108/Template/\350\260\203\345\272\246\344\277\241\346\201\25720240108151655.xlsx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/20240108/Template/\350\260\203\345\272\246\344\277\241\346\201\25720240108171608.xlsx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/20240108/Template/\350\260\203\345\272\246\344\277\241\346\201\25720240108171608.xlsx"
new file mode 100644
index 0000000..22f2e76
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/20240108/Template/\350\260\203\345\272\246\344\277\241\346\201\25720240108171608.xlsx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/20240109/Template/\350\260\203\345\272\246\344\277\241\346\201\25720240109112529.xlsx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/20240109/Template/\350\260\203\345\272\246\344\277\241\346\201\25720240109112529.xlsx"
new file mode 100644
index 0000000..3990b25
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/20240109/Template/\350\260\203\345\272\246\344\277\241\346\201\25720240109112529.xlsx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/\345\267\245\345\215\225\344\277\241\346\201\25720240108145121.xlsx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/\345\267\245\345\215\225\344\277\241\346\201\25720240108145121.xlsx"
new file mode 100644
index 0000000..e98b29f
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/\345\267\245\345\215\225\344\277\241\346\201\25720240108145121.xlsx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/\345\267\245\345\215\225\344\277\241\346\201\25720240108151140.xlsx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/\345\267\245\345\215\225\344\277\241\346\201\25720240108151140.xlsx"
new file mode 100644
index 0000000..9971f64
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/\345\267\245\345\215\225\344\277\241\346\201\25720240108151140.xlsx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/\345\267\245\345\215\225\344\277\241\346\201\25720240108154639.xlsx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/\345\267\245\345\215\225\344\277\241\346\201\25720240108154639.xlsx"
new file mode 100644
index 0000000..d45d2ae
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/\345\267\245\345\215\225\344\277\241\346\201\25720240108154639.xlsx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/\345\267\245\345\215\225\344\277\241\346\201\25720240108155539.xlsx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/\345\267\245\345\215\225\344\277\241\346\201\25720240108155539.xlsx"
new file mode 100644
index 0000000..1e593ac
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/\345\267\245\345\215\225\344\277\241\346\201\25720240108155539.xlsx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/\350\260\203\345\272\246\344\277\241\346\201\25720240108170025.xlsx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/\350\260\203\345\272\246\344\277\241\346\201\25720240108170025.xlsx"
new file mode 100644
index 0000000..33d406c
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/\350\260\203\345\272\246\344\277\241\346\201\25720240108170025.xlsx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/\350\260\203\345\272\246\344\277\241\346\201\25720240108171108.xlsx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/\350\260\203\345\272\246\344\277\241\346\201\25720240108171108.xlsx"
new file mode 100644
index 0000000..86b5ab5
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/\350\260\203\345\272\246\344\277\241\346\201\25720240108171108.xlsx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/\350\260\203\345\272\246\344\277\241\346\201\25720240108172416.xlsx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/\350\260\203\345\272\246\344\277\241\346\201\25720240108172416.xlsx"
new file mode 100644
index 0000000..d56a0b8
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Download/ExcelExport/20240108/\350\260\203\345\272\246\344\277\241\346\201\25720240108172416.xlsx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20231220/VV_Dispatch/386607d7-fcf9-46bf-9449-0d1d962acc56_\345\244\252\345\216\237\351\207\215\345\267\245\346\265\201\347\250\213\347\226\221\351\227\256.xlsx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20231220/VV_Dispatch/386607d7-fcf9-46bf-9449-0d1d962acc56_\345\244\252\345\216\237\351\207\215\345\267\245\346\265\201\347\250\213\347\226\221\351\227\256.xlsx"
new file mode 100644
index 0000000..f268b9f
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20231220/VV_Dispatch/386607d7-fcf9-46bf-9449-0d1d962acc56_\345\244\252\345\216\237\351\207\215\345\267\245\346\265\201\347\250\213\347\226\221\351\227\256.xlsx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20231220/VV_Dispatch/3a206465-b647-4a96-8504-0281697d2373_CADReader.exe" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20231220/VV_Dispatch/3a206465-b647-4a96-8504-0281697d2373_CADReader.exe"
new file mode 100644
index 0000000..49d38d4
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20231220/VV_Dispatch/3a206465-b647-4a96-8504-0281697d2373_CADReader.exe"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20231220/VV_Dispatch/5a8b9fc7-1ed4-411a-99dc-1e8769650591_\345\244\252\351\207\215\351\241\271\347\233\256\347\226\221\351\227\256\347\202\271.xlsx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20231220/VV_Dispatch/5a8b9fc7-1ed4-411a-99dc-1e8769650591_\345\244\252\351\207\215\351\241\271\347\233\256\347\226\221\351\227\256\347\202\271.xlsx"
new file mode 100644
index 0000000..3fcfa61
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20231220/VV_Dispatch/5a8b9fc7-1ed4-411a-99dc-1e8769650591_\345\244\252\351\207\215\351\241\271\347\233\256\347\226\221\351\227\256\347\202\271.xlsx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20231220/VV_Dispatch/7c10cb80-b2d0-42f7-a2a4-b75b913a5283_CADReader.exe" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20231220/VV_Dispatch/7c10cb80-b2d0-42f7-a2a4-b75b913a5283_CADReader.exe"
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20231220/VV_Dispatch/7c10cb80-b2d0-42f7-a2a4-b75b913a5283_CADReader.exe"
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20231220/VV_Dispatch/b2660e45-900f-40ec-8a4a-fb4dc13842da_CADReader.exe" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20231220/VV_Dispatch/b2660e45-900f-40ec-8a4a-fb4dc13842da_CADReader.exe"
new file mode 100644
index 0000000..49d38d4
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20231220/VV_Dispatch/b2660e45-900f-40ec-8a4a-fb4dc13842da_CADReader.exe"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/VV_Dispatch/_TSW449_3_103_PAR.SPF" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/VV_Dispatch/_TSW449_3_103_PAR.SPF"
new file mode 100644
index 0000000..6d7b841
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/VV_Dispatch/_TSW449_3_103_PAR.SPF"
@@ -0,0 +1,102 @@
+
+;************************************************
+;TYHI
+;Wheel: YD918 / TSW_449_3
+;************************************************
+;PROGRAM-TYPE: Parameter Program
+
+;VERSION:,2023 /10/23
+;************************************************
+
+
+;N1145 N_CHUCK_JAWS=1 ;TYPE OF CHUCK JAWS USED, 0...4 ALLOWED
+;************************************************
+; DECLARATION OF THE WOKRING RANGE OF THE CHUCK *
+;************************************************
+N100 DEF REAL L_SPOS_SET
+N110 DEF REAL L_OFFSET
+N120 DEF REAL L_SPOS_LOWER
+N130 DEF REAL L_SPOS_UPPER
+
+N140 L_SPOS_SET=133+180
+N150 L_OFFSET=2
+N160 CHUCK_S1=90  ;鏂板鍙傛暟A闈㈠姞宸ユ椂,澶瑰叿鏉剧揣绫诲瀷缂栧彿
+N170 CHUCK_S2=91  ;鏂板鍙傛暟A闈㈠姞宸ユ椂,澶瑰叿鏉剧揣绫诲瀷缂栧彿
+;**************************************************
+;* POSITION OF MAIN SPINDLE FOR AUTOMATIC LOADING *
+;**************************************************
+N180 L_SPOS_LOWER=L_SPOS_SET-L_OFFSET
+N190 L_SPOS_UPPER=L_SPOS_SET+L_OFFSET
+
+N200 IF (L_SPOS_LOWER<0.0) OR (L_SPOS_UPPER>360.0)
+N210 AAA:
+N220 MSG("缁欏畾涓昏酱瀹氬悜瑙掑害涓婁笅闄愬�间笉鍦�0~360搴﹁寖鍥村唴")
+N230 M0
+N240 GOTOB AAA
+N250 ENDIF
+
+N260 N_SPOS_GANTRY_LOWER=L_SPOS_LOWER
+N270 N_SPOS_GANTRY_UPPER=L_SPOS_UPPER
+N280 N_SPOS_GANTRY_LOWER_OP2=L_SPOS_LOWER
+N290 N_SPOS_GANTRY_UPPER_OP2=L_SPOS_UPPER
+;*********************************
+;*       鍔犲伐鍙傛暟璁惧畾(涓�)        *
+;*********************************
+N1000 WHEEL_UNMACHINED=138.5      ;鏈姞宸ヨ溅杞疆杈嬪搴�
+N1005 WHEEL_MACHINED=131.5        ;鍔犲伐鍚庣殑杞緥瀹藉害
+N1010 SYM_FACTOR=0.5              ;浣欓噺鍒嗗竷绯绘暟
+N1015 FLAT=0.14                   ;杞紭璋冩暣閲�
+;*********************************
+;*       鍔犲伐鍙傛暟璁惧畾(浜�)        *
+;*********************************
+N1020 V_CUT=120     ;           ;绮楀姞宸ョ嚎閫熷害
+N1025 V_CUT_FINE=120;           ;绮惧姞宸ョ嚎閫熷害
+N1030 V_CUT_BORE=120
+N1035 BASE_F=1                  ;绮楀姞宸ヨ繘缁欓�熷害
+N1040 BASE_F_FINE=1             ;绮惧姞宸ヨ繘缁欓�熷害
+;*********************************
+;*       鍔犲伐鍙傛暟璁惧畾(涓�)        *
+;*********************************
+N1045 TREAD_DIAM_SETPOINT =918.8      ;韪忛潰鐩村緞璁惧畾鍊�
+N1055 TREAD_DIAM = TREAD_DIAM_SETPOINT ;韪忛潰鐩村緞
+
+;N1075 TREAD_DIAM_MVAL_OFFSET = 0.0     ;韪忛潰浣欓噺
+;N1080 TREAD_DIAM_MACH_ALLOWANCE =4.5   ;韪忛潰浣欓噺鍏佸樊
+N1085 WHEEL_HEIGHT=WHEEL_MACHINED
+N1090 TREAD_HEIGHT_S2=65              ;S2鐨勮妭鍦嗛珮搴�
+N1095 TREAD_HEIGHT_S1=WHEEL_HEIGHT-TREAD_HEIGHT_S2
+;                                       ;S1鐨勮妭鍦嗛珮搴�
+N1100 HUB_DIAM_S1=247.5                ;S1鐨勮疆姣傜洿寰�
+N1105 HUB_DIAM_S2=247.5                 ;S2鐨勮疆姣傜洿寰�
+N1110 HUB_HEIGHT_S1=160.5                 ;澶栬緥闈㈠埌鍐呮瘋鐨勮窛绂�
+N1115 HUB_HEIGHT_S2=161              ;鍐呰緥闈㈠埌澶栨瘋鐨勮窛绂�
+N1120 BOTTOM_DIAM_S1=803                ;鍐呰緥鐩村緞
+N1125 BOTTOM_DIAM_S2=798                ;澶栬緥鐩村緞
+N1130 GLOBAL_ALLOWANCE=0                ;鍏ㄥ眬浣欓噺
+N1135 TREAD_ALLOWANCE=0.8               ;韪忛潰浣欓噺
+N1140 BORE_DIAM=183.5                   ;杞瘋瀛斿緞
+;*********************************
+;*    閽冲彛鍙傛暟璁惧畾锛堜笉璁惧畾锛�      *
+;*********************************
+;*******N1145 CLAMPING_JAW_HIGH_S1=126.5  ;S1閽冲彛楂樺害
+;*******N1150 CLAMPING_JAW_HIGH_S2=154    ;S2閽冲彛楂樺害
+
+;*********************************
+;* PARAMETERS FOR CHUCK FLUSHING *
+;*********************************
+N300 N_WITH_FLUSHING=1         ;Chuck-Flushing after OP2?
+N310 N_WITH_FLUSHING_WPTURN=1  ;Chuck-Flushing after OP1?
+N320 N_FLUSHTIME=15            ;flushing time after OP2 (s)
+N330 N_FLUSHTIME_WPTURN=10     ;flushing time after OP1 (s)
+N340 N_FLUSH_SPSPEED=70        ;spindle speed flushing OP2 (max. 25/min
+N350 N_FLUSH_SPSPEED_WPTURN=50;spindle speed flushing OP1 (max. 25/min)
+N360 N_FLUSHPOS_XR=500          ;Position X-Axis
+N370 N_FLUSHPOS_ZR=580          ;Position Z-Axis
+N380 N_FLUSHPOS_XL=500         ;Position U-Axis
+N390 N_FLUSHPOS_ZL=580         ;Position W-Axis
+;******************
+;* AUX PARAMETERS *
+;******************
+N400 N_WITH_APP_MON=0 ;1       ;pneumatic contact monitoring workpiece/chuck on/off
+N410 STOPRE
+N420 M17
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/200d388e-8b66-44a2-8e65-a6656639af41_TSW449_3_103_PAR.SPF" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/200d388e-8b66-44a2-8e65-a6656639af41_TSW449_3_103_PAR.SPF"
new file mode 100644
index 0000000..6d7b841
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/200d388e-8b66-44a2-8e65-a6656639af41_TSW449_3_103_PAR.SPF"
@@ -0,0 +1,102 @@
+
+;************************************************
+;TYHI
+;Wheel: YD918 / TSW_449_3
+;************************************************
+;PROGRAM-TYPE: Parameter Program
+
+;VERSION:,2023 /10/23
+;************************************************
+
+
+;N1145 N_CHUCK_JAWS=1 ;TYPE OF CHUCK JAWS USED, 0...4 ALLOWED
+;************************************************
+; DECLARATION OF THE WOKRING RANGE OF THE CHUCK *
+;************************************************
+N100 DEF REAL L_SPOS_SET
+N110 DEF REAL L_OFFSET
+N120 DEF REAL L_SPOS_LOWER
+N130 DEF REAL L_SPOS_UPPER
+
+N140 L_SPOS_SET=133+180
+N150 L_OFFSET=2
+N160 CHUCK_S1=90  ;鏂板鍙傛暟A闈㈠姞宸ユ椂,澶瑰叿鏉剧揣绫诲瀷缂栧彿
+N170 CHUCK_S2=91  ;鏂板鍙傛暟A闈㈠姞宸ユ椂,澶瑰叿鏉剧揣绫诲瀷缂栧彿
+;**************************************************
+;* POSITION OF MAIN SPINDLE FOR AUTOMATIC LOADING *
+;**************************************************
+N180 L_SPOS_LOWER=L_SPOS_SET-L_OFFSET
+N190 L_SPOS_UPPER=L_SPOS_SET+L_OFFSET
+
+N200 IF (L_SPOS_LOWER<0.0) OR (L_SPOS_UPPER>360.0)
+N210 AAA:
+N220 MSG("缁欏畾涓昏酱瀹氬悜瑙掑害涓婁笅闄愬�间笉鍦�0~360搴﹁寖鍥村唴")
+N230 M0
+N240 GOTOB AAA
+N250 ENDIF
+
+N260 N_SPOS_GANTRY_LOWER=L_SPOS_LOWER
+N270 N_SPOS_GANTRY_UPPER=L_SPOS_UPPER
+N280 N_SPOS_GANTRY_LOWER_OP2=L_SPOS_LOWER
+N290 N_SPOS_GANTRY_UPPER_OP2=L_SPOS_UPPER
+;*********************************
+;*       鍔犲伐鍙傛暟璁惧畾(涓�)        *
+;*********************************
+N1000 WHEEL_UNMACHINED=138.5      ;鏈姞宸ヨ溅杞疆杈嬪搴�
+N1005 WHEEL_MACHINED=131.5        ;鍔犲伐鍚庣殑杞緥瀹藉害
+N1010 SYM_FACTOR=0.5              ;浣欓噺鍒嗗竷绯绘暟
+N1015 FLAT=0.14                   ;杞紭璋冩暣閲�
+;*********************************
+;*       鍔犲伐鍙傛暟璁惧畾(浜�)        *
+;*********************************
+N1020 V_CUT=120     ;           ;绮楀姞宸ョ嚎閫熷害
+N1025 V_CUT_FINE=120;           ;绮惧姞宸ョ嚎閫熷害
+N1030 V_CUT_BORE=120
+N1035 BASE_F=1                  ;绮楀姞宸ヨ繘缁欓�熷害
+N1040 BASE_F_FINE=1             ;绮惧姞宸ヨ繘缁欓�熷害
+;*********************************
+;*       鍔犲伐鍙傛暟璁惧畾(涓�)        *
+;*********************************
+N1045 TREAD_DIAM_SETPOINT =918.8      ;韪忛潰鐩村緞璁惧畾鍊�
+N1055 TREAD_DIAM = TREAD_DIAM_SETPOINT ;韪忛潰鐩村緞
+
+;N1075 TREAD_DIAM_MVAL_OFFSET = 0.0     ;韪忛潰浣欓噺
+;N1080 TREAD_DIAM_MACH_ALLOWANCE =4.5   ;韪忛潰浣欓噺鍏佸樊
+N1085 WHEEL_HEIGHT=WHEEL_MACHINED
+N1090 TREAD_HEIGHT_S2=65              ;S2鐨勮妭鍦嗛珮搴�
+N1095 TREAD_HEIGHT_S1=WHEEL_HEIGHT-TREAD_HEIGHT_S2
+;                                       ;S1鐨勮妭鍦嗛珮搴�
+N1100 HUB_DIAM_S1=247.5                ;S1鐨勮疆姣傜洿寰�
+N1105 HUB_DIAM_S2=247.5                 ;S2鐨勮疆姣傜洿寰�
+N1110 HUB_HEIGHT_S1=160.5                 ;澶栬緥闈㈠埌鍐呮瘋鐨勮窛绂�
+N1115 HUB_HEIGHT_S2=161              ;鍐呰緥闈㈠埌澶栨瘋鐨勮窛绂�
+N1120 BOTTOM_DIAM_S1=803                ;鍐呰緥鐩村緞
+N1125 BOTTOM_DIAM_S2=798                ;澶栬緥鐩村緞
+N1130 GLOBAL_ALLOWANCE=0                ;鍏ㄥ眬浣欓噺
+N1135 TREAD_ALLOWANCE=0.8               ;韪忛潰浣欓噺
+N1140 BORE_DIAM=183.5                   ;杞瘋瀛斿緞
+;*********************************
+;*    閽冲彛鍙傛暟璁惧畾锛堜笉璁惧畾锛�      *
+;*********************************
+;*******N1145 CLAMPING_JAW_HIGH_S1=126.5  ;S1閽冲彛楂樺害
+;*******N1150 CLAMPING_JAW_HIGH_S2=154    ;S2閽冲彛楂樺害
+
+;*********************************
+;* PARAMETERS FOR CHUCK FLUSHING *
+;*********************************
+N300 N_WITH_FLUSHING=1         ;Chuck-Flushing after OP2?
+N310 N_WITH_FLUSHING_WPTURN=1  ;Chuck-Flushing after OP1?
+N320 N_FLUSHTIME=15            ;flushing time after OP2 (s)
+N330 N_FLUSHTIME_WPTURN=10     ;flushing time after OP1 (s)
+N340 N_FLUSH_SPSPEED=70        ;spindle speed flushing OP2 (max. 25/min
+N350 N_FLUSH_SPSPEED_WPTURN=50;spindle speed flushing OP1 (max. 25/min)
+N360 N_FLUSHPOS_XR=500          ;Position X-Axis
+N370 N_FLUSHPOS_ZR=580          ;Position Z-Axis
+N380 N_FLUSHPOS_XL=500         ;Position U-Axis
+N390 N_FLUSHPOS_ZL=580         ;Position W-Axis
+;******************
+;* AUX PARAMETERS *
+;******************
+N400 N_WITH_APP_MON=0 ;1       ;pneumatic contact monitoring workpiece/chuck on/off
+N410 STOPRE
+N420 M17
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/35c8a51b-b899-411b-9f3b-e12b2a79e03d_TSW449_3_103_PAR.SPF" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/35c8a51b-b899-411b-9f3b-e12b2a79e03d_TSW449_3_103_PAR.SPF"
new file mode 100644
index 0000000..6d7b841
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/35c8a51b-b899-411b-9f3b-e12b2a79e03d_TSW449_3_103_PAR.SPF"
@@ -0,0 +1,102 @@
+
+;************************************************
+;TYHI
+;Wheel: YD918 / TSW_449_3
+;************************************************
+;PROGRAM-TYPE: Parameter Program
+
+;VERSION:,2023 /10/23
+;************************************************
+
+
+;N1145 N_CHUCK_JAWS=1 ;TYPE OF CHUCK JAWS USED, 0...4 ALLOWED
+;************************************************
+; DECLARATION OF THE WOKRING RANGE OF THE CHUCK *
+;************************************************
+N100 DEF REAL L_SPOS_SET
+N110 DEF REAL L_OFFSET
+N120 DEF REAL L_SPOS_LOWER
+N130 DEF REAL L_SPOS_UPPER
+
+N140 L_SPOS_SET=133+180
+N150 L_OFFSET=2
+N160 CHUCK_S1=90  ;鏂板鍙傛暟A闈㈠姞宸ユ椂,澶瑰叿鏉剧揣绫诲瀷缂栧彿
+N170 CHUCK_S2=91  ;鏂板鍙傛暟A闈㈠姞宸ユ椂,澶瑰叿鏉剧揣绫诲瀷缂栧彿
+;**************************************************
+;* POSITION OF MAIN SPINDLE FOR AUTOMATIC LOADING *
+;**************************************************
+N180 L_SPOS_LOWER=L_SPOS_SET-L_OFFSET
+N190 L_SPOS_UPPER=L_SPOS_SET+L_OFFSET
+
+N200 IF (L_SPOS_LOWER<0.0) OR (L_SPOS_UPPER>360.0)
+N210 AAA:
+N220 MSG("缁欏畾涓昏酱瀹氬悜瑙掑害涓婁笅闄愬�间笉鍦�0~360搴﹁寖鍥村唴")
+N230 M0
+N240 GOTOB AAA
+N250 ENDIF
+
+N260 N_SPOS_GANTRY_LOWER=L_SPOS_LOWER
+N270 N_SPOS_GANTRY_UPPER=L_SPOS_UPPER
+N280 N_SPOS_GANTRY_LOWER_OP2=L_SPOS_LOWER
+N290 N_SPOS_GANTRY_UPPER_OP2=L_SPOS_UPPER
+;*********************************
+;*       鍔犲伐鍙傛暟璁惧畾(涓�)        *
+;*********************************
+N1000 WHEEL_UNMACHINED=138.5      ;鏈姞宸ヨ溅杞疆杈嬪搴�
+N1005 WHEEL_MACHINED=131.5        ;鍔犲伐鍚庣殑杞緥瀹藉害
+N1010 SYM_FACTOR=0.5              ;浣欓噺鍒嗗竷绯绘暟
+N1015 FLAT=0.14                   ;杞紭璋冩暣閲�
+;*********************************
+;*       鍔犲伐鍙傛暟璁惧畾(浜�)        *
+;*********************************
+N1020 V_CUT=120     ;           ;绮楀姞宸ョ嚎閫熷害
+N1025 V_CUT_FINE=120;           ;绮惧姞宸ョ嚎閫熷害
+N1030 V_CUT_BORE=120
+N1035 BASE_F=1                  ;绮楀姞宸ヨ繘缁欓�熷害
+N1040 BASE_F_FINE=1             ;绮惧姞宸ヨ繘缁欓�熷害
+;*********************************
+;*       鍔犲伐鍙傛暟璁惧畾(涓�)        *
+;*********************************
+N1045 TREAD_DIAM_SETPOINT =918.8      ;韪忛潰鐩村緞璁惧畾鍊�
+N1055 TREAD_DIAM = TREAD_DIAM_SETPOINT ;韪忛潰鐩村緞
+
+;N1075 TREAD_DIAM_MVAL_OFFSET = 0.0     ;韪忛潰浣欓噺
+;N1080 TREAD_DIAM_MACH_ALLOWANCE =4.5   ;韪忛潰浣欓噺鍏佸樊
+N1085 WHEEL_HEIGHT=WHEEL_MACHINED
+N1090 TREAD_HEIGHT_S2=65              ;S2鐨勮妭鍦嗛珮搴�
+N1095 TREAD_HEIGHT_S1=WHEEL_HEIGHT-TREAD_HEIGHT_S2
+;                                       ;S1鐨勮妭鍦嗛珮搴�
+N1100 HUB_DIAM_S1=247.5                ;S1鐨勮疆姣傜洿寰�
+N1105 HUB_DIAM_S2=247.5                 ;S2鐨勮疆姣傜洿寰�
+N1110 HUB_HEIGHT_S1=160.5                 ;澶栬緥闈㈠埌鍐呮瘋鐨勮窛绂�
+N1115 HUB_HEIGHT_S2=161              ;鍐呰緥闈㈠埌澶栨瘋鐨勮窛绂�
+N1120 BOTTOM_DIAM_S1=803                ;鍐呰緥鐩村緞
+N1125 BOTTOM_DIAM_S2=798                ;澶栬緥鐩村緞
+N1130 GLOBAL_ALLOWANCE=0                ;鍏ㄥ眬浣欓噺
+N1135 TREAD_ALLOWANCE=0.8               ;韪忛潰浣欓噺
+N1140 BORE_DIAM=183.5                   ;杞瘋瀛斿緞
+;*********************************
+;*    閽冲彛鍙傛暟璁惧畾锛堜笉璁惧畾锛�      *
+;*********************************
+;*******N1145 CLAMPING_JAW_HIGH_S1=126.5  ;S1閽冲彛楂樺害
+;*******N1150 CLAMPING_JAW_HIGH_S2=154    ;S2閽冲彛楂樺害
+
+;*********************************
+;* PARAMETERS FOR CHUCK FLUSHING *
+;*********************************
+N300 N_WITH_FLUSHING=1         ;Chuck-Flushing after OP2?
+N310 N_WITH_FLUSHING_WPTURN=1  ;Chuck-Flushing after OP1?
+N320 N_FLUSHTIME=15            ;flushing time after OP2 (s)
+N330 N_FLUSHTIME_WPTURN=10     ;flushing time after OP1 (s)
+N340 N_FLUSH_SPSPEED=70        ;spindle speed flushing OP2 (max. 25/min
+N350 N_FLUSH_SPSPEED_WPTURN=50;spindle speed flushing OP1 (max. 25/min)
+N360 N_FLUSHPOS_XR=500          ;Position X-Axis
+N370 N_FLUSHPOS_ZR=580          ;Position Z-Axis
+N380 N_FLUSHPOS_XL=500         ;Position U-Axis
+N390 N_FLUSHPOS_ZL=580         ;Position W-Axis
+;******************
+;* AUX PARAMETERS *
+;******************
+N400 N_WITH_APP_MON=0 ;1       ;pneumatic contact monitoring workpiece/chuck on/off
+N410 STOPRE
+N420 M17
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/56cdc468-bdf6-4ae1-b456-1020d7986e76_\345\244\252\345\216\237\351\207\215\345\267\245.xlsx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/56cdc468-bdf6-4ae1-b456-1020d7986e76_\345\244\252\345\216\237\351\207\215\345\267\245.xlsx"
new file mode 100644
index 0000000..240b6c4
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/56cdc468-bdf6-4ae1-b456-1020d7986e76_\345\244\252\345\216\237\351\207\215\345\267\245.xlsx"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/a63b0c06-6694-4366-b926-68f2134c4025_TSW449_3_C1_S2.SPF" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/a63b0c06-6694-4366-b926-68f2134c4025_TSW449_3_C1_S2.SPF"
new file mode 100644
index 0000000..2588a0a
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/a63b0c06-6694-4366-b926-68f2134c4025_TSW449_3_C1_S2.SPF"
@@ -0,0 +1,195 @@
+;************************************************
+;TYHI
+;Wheel: YD1000 / TSW_449_3
+;************************************************
+;PROGRAM-TYPE: machining program
+;CHANNEL: 1 (RIGHT)
+;MACHINING SIDE: 2
+;VERSION: 2023/10/23
+;************************************************
+
+;********
+;* INIT *
+;********
+N1000 DEF BOOL CM_SWORD=0
+N1010 CLEARM ;for testing purposes
+N1020 N_CHKCH(1) ;in channel 1?
+;H11=18812 ;artis program no
+
+;************************************************
+;*                       坐标系赋值                       *
+;************************************************
+N1030 BLANK_STOCK=WHEEL_UNMACHINED-WHEEL_MACHINED
+N1040 IF BLANK_STOCK<0.5 GOTOF AA1
+N1050 BLANK_STOCK_S2=BLANK_STOCK*SYM_FACTOR
+N1060 STOPRE
+N1070 $P_UIFR[1,AX2,TR]=CLAMPING_JAW_HIGH_S1+BLANK_STOCK_S2
+;通道(1),,G54第2轴赋值
+N1080 $P_UIFR[1,AX5,TR]=CLAMPING_JAW_HIGH_S1+BLANK_STOCK_S2
+;通道(1),,G54第5轴赋值
+N1090 $P_UIFR[2,AX2,TR]=CLAMPING_JAW_HIGH_S2   
+;;通道(1),,G55第2轴赋值
+N1100 $P_UIFR[2,AX2,TR]=CLAMPING_JAW_HIGH_S2   
+;;通道(1),,G55第5轴赋值
+N1110  STOPRE;;停止预读
+N1120 IDS=101 DO R60=($AA_TOTAL_OVR[SP]/100)   
+; ;双通道转速等待程序生效
+;************************************************
+;*                 双通道检查                  *
+;************************************************
+N1130  STOPRE;
+N1140 IF NOT N_TWOCHANNELS
+N1150  MSG("WARNING, CHANNEL-SYNC VIA N_TWOCHANNELS DESELECTED! PRESS NC-START TO MACHINE...")
+N1160  M0
+N1170  MSG("")
+N1180  STOPRE
+N1190 ENDIF
+
+N1200 DIAMON M41 ;(直径编程,工作台M41)
+
+N1210 CUT_MEM=R119 ;维修标记设定
+N1220 STOPRE
+
+N1230 N_WAITM(51)  ;__sync for selection CUT_MEM
+
+N1240 IF (CUT_MEM==0) GOTOF CUT_MEM_0
+N1250 IF (CUT_MEM==1) GOTOF CUT_MEM_1
+N1260 IF (CUT_MEM==2)
+N1270   CM_SWORD=1
+N1280   GOTOF CUT_MEM_2
+N1290 ENDIF
+N1300 IF (CUT_MEM==3) GOTOF CUT_MEM_3
+N1310 IF (CUT_MEM==4) GOTOF CUT_MEM_4
+
+N1320 CUT_MEM_0:  ;;正常加工
+
+;************************************************
+;   换刀 T1 R12.5
+;************************************************
+
+N1330 T1
+N1340 M06
+N1350 D1
+;H12=101 ; artis tool number 
+N1360 G55
+
+;************************************************
+;OUTER TYRE FACE
+;************************************************
+
+N1370 IF NOT N_TWOCHANNELS
+N1380  G96 S=V_CUT M3
+N1390 ELSE
+N1400  G95
+N1410  LIMS=(V_CUT/($PI*(TREAD_DIAM+2*28)/1000))
+N1420 ENDIF
+N1430 G0 X=TREAD_DIAM+15*2 Z=WHEEL_HEIGHT-6
+N1440 N_WAITM(1) ;__WAIT FOR START MACHINING__
+
+;M136 ; Artis monitoring on
+N1450 OFFN=GLOBAL_ALLOWANCE
+N1460 G1 G41 X=TREAD_DIAM Z=WHEEL_HEIGHT-6 F=0.8 M50 M8
+N1470 G1  Z=WHEEL_HEIGHT ANG=-45
+N1480  X=BOTTOM_DIAM_S2-5*2 F=1.15
+N1490 G0 G40 X=IC($P_TOOLR*(-2)) Z=IC(GLOBAL_ALLOWANCE+TREAD_ALLOWANCE+3) ;
+
+;************************************************
+;TREAD FIRST PART COARSE (VARIABLE WHEEL HEIGHT)
+;************************************************
+
+N1500 OFFN=1.5+GLOBAL_ALLOWANCE
+N1510 G0  X=TREAD_DIAM Z=WHEEL_HEIGHT+GLOBAL_ALLOWANCE+TREAD_ALLOWANCE+10
+N1520 G1 G42 X=TREAD_DIAM-(9.787)*2 Z=WHEEL_HEIGHT F=BASE_F*1.3
+N1220  G1  X=TREAD_DIAM-(3.163)*2 Z=TREAD_HEIGHT_S2+60.507 F=BASE_F*1.3
+N1225  G1  X=TREAD_DIAM-(0.614)*2 Z=TREAD_HEIGHT_S2+9.521  F=1.3
+
+N1225 G2  X=TREAD_DIAM+(1.009)*2 Z=TREAD_HEIGHT_S2-10.587 CR=330 F=1.3
+N1225 G2  X=TREAD_DIAM+(2.378)*2 Z=TREAD_HEIGHT_S2-19.332 CR=100 F=2.5
+N1570 G0 G40 G64 X=TREAD_DIAM+30 Z=WHEEL_HEIGHT+50 LIMS=140 M9
+;M135 ; Artis monitoring off
+;************************************************
+;PATH-CTRL-MODE TO OUTER HUB FACE
+;************************************************
+
+N1580 N_WAITM(3) ;_SYNC HUB FACE
+
+;************************************************
+;OUTER HUB FACE
+;************************************************
+;M136 ; Artis monitoring on
+N1590  X=HUB_DIAM_S2+20*2 
+N1600 OFFN=GLOBAL_ALLOWANCE
+N1610  X=HUB_DIAM_S2+20*2 Z=HUB_HEIGHT_S2+GLOBAL_ALLOWANCE
+N1620 G96 S=V_CUT-50 M3
+N1630 G1 G41 G64 X=HUB_DIAM_S2+5*2 Z=HUB_HEIGHT_S2 F=1.3 M50 M8
+N1640    X=BORE_DIAM-10*2 Z=HUB_HEIGHT_S2 F=BASE_F*1.1
+N1650 G0 G40 G97 Z=250 M9
+N1660  G0  X=400
+;M135 ; Artis monitoring off
+N1670 SETM(4) ;__SET HUB FACE MACHINED__
+;************************************************
+;TOOL CHANGE T2
+;************************************************
+N1680 G0 G153 D0 X=750*2 Z=580 M9
+N1690 G75 X0 Z0 M05
+;N1370 N_DISABLE
+
+N1700 STOPRE
+N1710 CUT_MEM_1: CUT_MEM=1
+N1720 CUT_MEM_2:
+
+N1730 T2
+N1740 M06
+N1750 D1
+;H12=102 ; Artis tool number 
+N1760 G55
+N1770 SETM(5);鎹㈠垁瀹屾垚
+N1780 N_WAITM(6);绛夊緟杞�?
+;************************************************
+;TREAD 1ND PART FINISH
+;************************************************
+N1790 G0 G40 X=TREAD_DIAM-($P_TOOLR*2) Z=WHEEL_HEIGHT+100 D1
+
+N1800 IF CM_SWORD==0
+N1810   N_WAITFORSPINDLE_VEL(V_CUT_FINE+60,"<")
+N1820 ELSE
+N1830   G96 S=V_CUT_FINE M3
+N1840 ENDIF
+
+;N1425 N_ENABLE  
+;M136 ; Artis monitoring on
+N1850 OFFN=GLOBAL_ALLOWANCE M8 M50
+N1860 G0   Z=WHEEL_HEIGHT+GLOBAL_ALLOWANCE+20
+N1870 G1 G42 X=TREAD_DIAM-(9.787)*2 Z=WHEEL_HEIGHT F=BASE_F*0.5 ;M826 M791 
+N1220  G1  X=TREAD_DIAM-(3.163)*2  Z=TREAD_HEIGHT_S2+60.507 F=BASE_F*0.4
+N1225  G1  X=TREAD_DIAM-(0.614)*2  Z=TREAD_HEIGHT_S2+9.521-FLAT   F=1.1
+N1225 G2  X=TREAD_DIAM+(1.009)*2   Z=TREAD_HEIGHT_S2-10.587-FLAT CR=330
+N1225 G2  X=TREAD_DIAM+(2.378)*2   Z=TREAD_HEIGHT_S2-19.332-FLAT CR=100 
+N1225  G2 X=TREAD_DIAM+(8.168)*2   Z=TREAD_HEIGHT_S2-28.092-FLAT CR=14   F=0.4
+N1930 G0 G40 G64 X=TREAD_DIAM+50 Z=WHEEL_HEIGHT+50 LIMS=140 M9 OFFN=0
+;M135 ; Artis monitoring off
+N1940 SETM(13)
+N1950 G75 X0 Z0
+N1960 STOPRE
+N1970 CUT_MEM_3: CUT_MEM=3
+
+;N1980 N_WAITM(7) ;__WAIT FOR BOTTOM FINISHD
+N1990 CUT_MEM_4: 
+
+;N2000 SETM(8)  ;  __SET M42
+;N2010 N_DISABLE
+
+N2020 N_WAITM(11)
+N2030 G95 M3 S20
+N2040 M41
+
+N2050 STOPRE
+N2060 CUT_MEM=0
+
+;M27 ; ARTIS AUS
+;*********************
+;**END OF SUBPROGRAM**
+;*********************
+N2070 M17
+
+
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/c12e0782-1973-4b9d-b7ac-a1e7d2355bb2_error.png" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/c12e0782-1973-4b9d-b7ac-a1e7d2355bb2_error.png"
new file mode 100644
index 0000000..d479f96
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/c12e0782-1973-4b9d-b7ac-a1e7d2355bb2_error.png"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/e007f116-b9d4-493b-899d-783a802069e7_TSW449_3_103_PAR.SPF" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/e007f116-b9d4-493b-899d-783a802069e7_TSW449_3_103_PAR.SPF"
new file mode 100644
index 0000000..6d7b841
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240108/dt_Workinfo/e007f116-b9d4-493b-899d-783a802069e7_TSW449_3_103_PAR.SPF"
@@ -0,0 +1,102 @@
+
+;************************************************
+;TYHI
+;Wheel: YD918 / TSW_449_3
+;************************************************
+;PROGRAM-TYPE: Parameter Program
+
+;VERSION:,2023 /10/23
+;************************************************
+
+
+;N1145 N_CHUCK_JAWS=1 ;TYPE OF CHUCK JAWS USED, 0...4 ALLOWED
+;************************************************
+; DECLARATION OF THE WOKRING RANGE OF THE CHUCK *
+;************************************************
+N100 DEF REAL L_SPOS_SET
+N110 DEF REAL L_OFFSET
+N120 DEF REAL L_SPOS_LOWER
+N130 DEF REAL L_SPOS_UPPER
+
+N140 L_SPOS_SET=133+180
+N150 L_OFFSET=2
+N160 CHUCK_S1=90  ;鏂板鍙傛暟A闈㈠姞宸ユ椂,澶瑰叿鏉剧揣绫诲瀷缂栧彿
+N170 CHUCK_S2=91  ;鏂板鍙傛暟A闈㈠姞宸ユ椂,澶瑰叿鏉剧揣绫诲瀷缂栧彿
+;**************************************************
+;* POSITION OF MAIN SPINDLE FOR AUTOMATIC LOADING *
+;**************************************************
+N180 L_SPOS_LOWER=L_SPOS_SET-L_OFFSET
+N190 L_SPOS_UPPER=L_SPOS_SET+L_OFFSET
+
+N200 IF (L_SPOS_LOWER<0.0) OR (L_SPOS_UPPER>360.0)
+N210 AAA:
+N220 MSG("缁欏畾涓昏酱瀹氬悜瑙掑害涓婁笅闄愬�间笉鍦�0~360搴﹁寖鍥村唴")
+N230 M0
+N240 GOTOB AAA
+N250 ENDIF
+
+N260 N_SPOS_GANTRY_LOWER=L_SPOS_LOWER
+N270 N_SPOS_GANTRY_UPPER=L_SPOS_UPPER
+N280 N_SPOS_GANTRY_LOWER_OP2=L_SPOS_LOWER
+N290 N_SPOS_GANTRY_UPPER_OP2=L_SPOS_UPPER
+;*********************************
+;*       鍔犲伐鍙傛暟璁惧畾(涓�)        *
+;*********************************
+N1000 WHEEL_UNMACHINED=138.5      ;鏈姞宸ヨ溅杞疆杈嬪搴�
+N1005 WHEEL_MACHINED=131.5        ;鍔犲伐鍚庣殑杞緥瀹藉害
+N1010 SYM_FACTOR=0.5              ;浣欓噺鍒嗗竷绯绘暟
+N1015 FLAT=0.14                   ;杞紭璋冩暣閲�
+;*********************************
+;*       鍔犲伐鍙傛暟璁惧畾(浜�)        *
+;*********************************
+N1020 V_CUT=120     ;           ;绮楀姞宸ョ嚎閫熷害
+N1025 V_CUT_FINE=120;           ;绮惧姞宸ョ嚎閫熷害
+N1030 V_CUT_BORE=120
+N1035 BASE_F=1                  ;绮楀姞宸ヨ繘缁欓�熷害
+N1040 BASE_F_FINE=1             ;绮惧姞宸ヨ繘缁欓�熷害
+;*********************************
+;*       鍔犲伐鍙傛暟璁惧畾(涓�)        *
+;*********************************
+N1045 TREAD_DIAM_SETPOINT =918.8      ;韪忛潰鐩村緞璁惧畾鍊�
+N1055 TREAD_DIAM = TREAD_DIAM_SETPOINT ;韪忛潰鐩村緞
+
+;N1075 TREAD_DIAM_MVAL_OFFSET = 0.0     ;韪忛潰浣欓噺
+;N1080 TREAD_DIAM_MACH_ALLOWANCE =4.5   ;韪忛潰浣欓噺鍏佸樊
+N1085 WHEEL_HEIGHT=WHEEL_MACHINED
+N1090 TREAD_HEIGHT_S2=65              ;S2鐨勮妭鍦嗛珮搴�
+N1095 TREAD_HEIGHT_S1=WHEEL_HEIGHT-TREAD_HEIGHT_S2
+;                                       ;S1鐨勮妭鍦嗛珮搴�
+N1100 HUB_DIAM_S1=247.5                ;S1鐨勮疆姣傜洿寰�
+N1105 HUB_DIAM_S2=247.5                 ;S2鐨勮疆姣傜洿寰�
+N1110 HUB_HEIGHT_S1=160.5                 ;澶栬緥闈㈠埌鍐呮瘋鐨勮窛绂�
+N1115 HUB_HEIGHT_S2=161              ;鍐呰緥闈㈠埌澶栨瘋鐨勮窛绂�
+N1120 BOTTOM_DIAM_S1=803                ;鍐呰緥鐩村緞
+N1125 BOTTOM_DIAM_S2=798                ;澶栬緥鐩村緞
+N1130 GLOBAL_ALLOWANCE=0                ;鍏ㄥ眬浣欓噺
+N1135 TREAD_ALLOWANCE=0.8               ;韪忛潰浣欓噺
+N1140 BORE_DIAM=183.5                   ;杞瘋瀛斿緞
+;*********************************
+;*    閽冲彛鍙傛暟璁惧畾锛堜笉璁惧畾锛�      *
+;*********************************
+;*******N1145 CLAMPING_JAW_HIGH_S1=126.5  ;S1閽冲彛楂樺害
+;*******N1150 CLAMPING_JAW_HIGH_S2=154    ;S2閽冲彛楂樺害
+
+;*********************************
+;* PARAMETERS FOR CHUCK FLUSHING *
+;*********************************
+N300 N_WITH_FLUSHING=1         ;Chuck-Flushing after OP2?
+N310 N_WITH_FLUSHING_WPTURN=1  ;Chuck-Flushing after OP1?
+N320 N_FLUSHTIME=15            ;flushing time after OP2 (s)
+N330 N_FLUSHTIME_WPTURN=10     ;flushing time after OP1 (s)
+N340 N_FLUSH_SPSPEED=70        ;spindle speed flushing OP2 (max. 25/min
+N350 N_FLUSH_SPSPEED_WPTURN=50;spindle speed flushing OP1 (max. 25/min)
+N360 N_FLUSHPOS_XR=500          ;Position X-Axis
+N370 N_FLUSHPOS_ZR=580          ;Position Z-Axis
+N380 N_FLUSHPOS_XL=500         ;Position U-Axis
+N390 N_FLUSHPOS_ZL=580         ;Position W-Axis
+;******************
+;* AUX PARAMETERS *
+;******************
+N400 N_WITH_APP_MON=0 ;1       ;pneumatic contact monitoring workpiece/chuck on/off
+N410 STOPRE
+N420 M17
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240109/Sys_DictionaryList/_\345\276\256\344\277\241\345\233\276\347\211\207_20220505095142.jpg" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240109/Sys_DictionaryList/_\345\276\256\344\277\241\345\233\276\347\211\207_20220505095142.jpg"
new file mode 100644
index 0000000..17ba539
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Upload/20240109/Sys_DictionaryList/_\345\276\256\344\277\241\345\233\276\347\211\207_20220505095142.jpg"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/wwwroot/Upload/Tables/Sys_User/202401081736421771/\345\276\256\344\277\241\345\233\276\347\211\207_20220505095142.jpg" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/wwwroot/Upload/Tables/Sys_User/202401081736421771/\345\276\256\344\277\241\345\233\276\347\211\207_20220505095142.jpg"
new file mode 100644
index 0000000..17ba539
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/wwwroot/Upload/Tables/Sys_User/202401081736421771/\345\276\256\344\277\241\345\233\276\347\211\207_20220505095142.jpg"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/wwwroot/Upload/Tables/Sys_User/202401091425048266/\345\276\256\344\277\241\345\233\276\347\211\207_20220505095142.jpg" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/wwwroot/Upload/Tables/Sys_User/202401091425048266/\345\276\256\344\277\241\345\233\276\347\211\207_20220505095142.jpg"
new file mode 100644
index 0000000..17ba539
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/wwwroot/Upload/Tables/Sys_User/202401091425048266/\345\276\256\344\277\241\345\233\276\347\211\207_20220505095142.jpg"
Binary files differ
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/wwwroot/Upload/Tables/T/202401091511391477/\345\276\256\344\277\241\345\233\276\347\211\207_20220505095142.jpg" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/wwwroot/Upload/Tables/T/202401091511391477/\345\276\256\344\277\241\345\233\276\347\211\207_20220505095142.jpg"
new file mode 100644
index 0000000..17ba539
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/wwwroot/Upload/Tables/T/202401091511391477/\345\276\256\344\277\241\345\233\276\347\211\207_20220505095142.jpg"
Binary files differ

--
Gitblit v1.9.3