From f3493a6f6f9958cea100ad596fa84239a6e2e962 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期二, 18 六月 2024 16:58:53 +0800
Subject: [PATCH] 获取老PCS下VK、桁架机械手、机床、状态信息

---
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/dt_info_traceService.cs                  |   41 +
 代码管理/PCS/WCS_Server/WIDESEA_Comm/PLCDBItem/VKDBItem.cs                                        |   69 +++
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Common/equipment/GetWheelDate.cs                              |  345 ++++++++++++++++
 代码管理/PCS/WCS_Server/WIDESEA_WCS/WCSClient/DBItemGroup.cs                                      |    5 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Partial/Idt_info_traceService.cs                |   13 
 代码管理/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/dt_info_trace.cs                          |  280 +++++++++++++
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/VV_DispatchService.cs                    |    1 
 代码管理/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/partial/dt_info_trace.cs                  |   21 +
 代码管理/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Idt_info_traceService.cs                        |   12 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/Partial/dt_info_traceController.cs |   33 +
 代码管理/PCS/WCS_Server/WIDESEA_WCS/IRepositories/WCS/Idt_info_traceRepository.cs                 |   18 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/VK4Job.cs                                      |    3 
 代码管理/PCS/WCS_Server/WIDESEA_Entity/MappingConfiguration/WCS/dt_info_traceMapConfig.cs         |   16 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/VK5Job.cs                                      |    3 
 代码管理/PCS/WCS_Server/WIDESEA_Comm/PLCDBItem/MachineDBItem.cs                                   |  182 ++++++++
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Repositories/WCS/dt_info_traceRepository.cs                   |   24 +
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/dt_info_traceController.cs         |   21 +
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/dt_info_traceService.cs                          |   27 +
 代码管理/PCS/WCS_Server/WIDESEA_Comm/PLCDBItem/GantryDBItem.cs                                    |   98 ++++
 19 files changed, 1,209 insertions(+), 3 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/PLCDBItem/GantryDBItem.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/PLCDBItem/GantryDBItem.cs"
new file mode 100644
index 0000000..6221092
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/PLCDBItem/GantryDBItem.cs"
@@ -0,0 +1,98 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Comm
+{
+    public class GantryDBItem
+    {
+        /// <summary>
+        /// VK4妗佹灦鏈烘鎵嬪璞¢泦鍚�
+        /// </summary>
+        public static List<GantryDBItem> VK4GantryDBItem = new List<GantryDBItem>();
+
+        /// <summary>
+        /// VK5妗佹灦鏈烘鎵嬪璞¢泦鍚�
+        /// </summary>
+        public static List<GantryDBItem> VK5GantryDBItem = new List<GantryDBItem>();
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+        /// <summary>
+        /// 鐢垫簮
+        /// </summary>
+        public Boolean power_on { get; set; }
+        /// <summary>
+        /// 鍑嗗杩愯
+        /// </summary>
+        public Boolean ready_for_operate { get; set; }
+        /// <summary>
+        /// 鍑嗗鑷姩鍚姩
+        /// </summary>
+        public Boolean ready_for_auto_start { get; set; }
+        /// <summary>
+        /// 鎿嶄綔妯″紡鎵嬪姩
+        /// </summary>
+        public Boolean state_JOG { get; set; }
+        /// <summary>
+        /// 鎿嶄綔妯″紡(鍗婅嚜鍔�)鎵嬪姩杈撳叆锛岃嚜鍔ㄨ繍琛�
+        /// </summary>
+        public Boolean state_MDA { get; set; }
+        /// <summary>
+        /// 鎿嶄綔妯″紡鑷姩
+        /// </summary>
+        public Boolean state_AUTO { get; set; }
+        /// <summary>
+        /// 閫氫俊
+        /// </summary>
+        public Boolean communication_IO { get; set; }
+        /// <summary>
+        /// 椹卞姩鏁呴殰
+        /// </summary>
+        public Boolean drive_fault { get; set; }
+        /// <summary>
+        /// 闂ㄦ晠闅�
+        /// </summary>
+        public Boolean portal_fault { get; set; }
+        /// <summary>
+        /// 绱ф�ュ仠姝�
+        /// </summary>
+        public Boolean emergency_stop_portal { get; set; }
+        /// <summary>
+        /// 鏁呴殰淇
+        /// </summary>
+        //public Boolean breakdown_repair { get; set; }
+        /// <summary>
+        /// 鏁呴殰缁翠慨
+        /// </summary>
+        //public Boolean breakdown_maintenance { get; set; }
+        /// <summary>
+        /// 鏈哄櫒鏁呴殰杩囩▼鍒囨崲
+        /// </summary>
+        //public Boolean breakdown_changeover { get; set; }
+        /// <summary>
+        /// CNC鍚姩鍜岀▼搴忚繍琛�
+        /// </summary>
+        public Boolean programm_running { get; set; }
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public Int16 gantry_state { get; set; }
+        /// <summary>
+        /// 鏁呴殰淇℃伅閫氶亾
+        /// </summary>
+        //public string fault_channel { get; set; }
+        /// <summary>
+        /// 鏁呴殰淇℃伅杞撮┍鍔ㄥ櫒
+        /// </summary>
+        //public string fault_axes_drives { get; set; }
+        /// <summary>
+        /// 鏁呴殰淇℃伅鐢ㄦ埛鍖�
+        /// </summary>
+        //public string fault_user_0_to1 { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/PLCDBItem/MachineDBItem.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/PLCDBItem/MachineDBItem.cs"
new file mode 100644
index 0000000..48f9b12
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/PLCDBItem/MachineDBItem.cs"
@@ -0,0 +1,182 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Comm
+{
+    public class MachineDBItem
+    {
+        /// <summary>
+        /// VK4鏈哄簥瀵硅薄闆嗗悎
+        /// </summary>
+        public static List<MachineDBItem> VK4MachineDBItem = new List<MachineDBItem>();
+
+        /// <summary>
+        /// VK5鏈哄簥瀵硅薄闆嗗悎
+        /// </summary>
+        public static List<MachineDBItem> VK5MachineDBItem = new List<MachineDBItem>();
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+        /// <summary>
+        /// 鐢垫簮
+        /// </summary>
+        public Boolean Power_on { get; set; }
+        /// <summary>
+        /// 鍑嗗灏辩华
+        /// </summary>
+        public Boolean Ready_for_operate { get; set; }
+        /// <summary>
+        /// 鍑嗗濂借嚜鍔ㄥ惎鍔�
+        /// </summary>
+        public Boolean Ready_for_Auto_start { get; set; }
+        /// <summary>
+        /// 宸ヤ綔妯″紡JOG
+        /// </summary>
+        public Boolean state_JOG { get; set; }
+        /// <summary>
+        /// 杩愯妯″紡MDA
+        /// </summary>
+        public Boolean state_MDA { get; set; }
+        /// <summary>
+        /// 鎿嶄綔妯″紡AUTO
+        /// </summary>
+        public Boolean state_AUTO { get; set; }
+        /// <summary>
+        /// 瀹夊叏闂ㄥ叧闂�
+        /// </summary>
+        public Boolean Safetydoors_closed { get; set; }
+        /// <summary>
+        /// 涓昏浆杞村湪Auto涓繍琛�
+        /// </summary>
+        public Boolean Spindel_running { get; set; }
+        /// <summary>
+        /// 閫氫俊
+        /// </summary>
+        public Boolean Kommunikation_IO { get; set; }
+        /// <summary>
+        /// 娑插帇鏁呴殰
+        /// </summary>
+        public Boolean Hydraulik_fault { get; set; }
+        /// <summary>
+        /// 杩涙枡椹卞姩鏁呴殰
+        /// </summary>
+        public Boolean feeddrive_fault { get; set; }
+        /// <summary>
+        /// 涓婚┍鍔ㄥ櫒鏁呴殰
+        /// </summary>
+        public Boolean Maindrive_fault { get; set; }
+        /// <summary>
+        /// 鏈哄櫒鏁呴殰
+        /// </summary>
+        public Boolean Machine_fault { get; set; }
+        /// <summary>
+        /// 鍐峰嵈鍓傛晠闅�
+        /// </summary>
+        public Boolean Coolant_fault { get; set; }
+        /// <summary>
+        /// 鎺掑睉鏁呴殰
+        /// </summary>
+        public Boolean Chipremoval_fault { get; set; }
+        /// <summary>
+        /// 鍐峰嵈鍓傚噯澶囧伐浣�
+        /// </summary>
+        public Boolean Coolant_ready_operate { get; set; }
+        /// <summary>
+        /// 鎺掑睉鍑嗗宸ヤ綔
+        /// </summary>
+        public Boolean Chipremoval_ready_operat { get; set; }
+        /// <summary>
+        /// 鏈哄櫒绱ф�ュ仠姝�
+        /// </summary>
+        public Boolean Emergency_Stop_machine { get; set; }
+        /// <summary>
+        /// 鏈哄櫒鏁呴殰淇悊
+        /// </summary>
+        public Boolean Breakdown_repair { get; set; }
+        /// <summary>
+        /// 鏈哄櫒鏁呴殰缁存姢
+        /// </summary>
+        public Boolean Breakdown_maintenance { get; set; }
+        /// <summary>
+        /// 鏈哄櫒鏁呴殰鏇存崲
+        /// </summary>
+        public Boolean Breakdown_Toolchange { get; set; }
+        /// <summary>
+        /// 鏈哄櫒鏁呴殰杩囩▼鍒囨崲
+        /// </summary>
+        public Boolean Breakdown_changeover { get; set; }
+        /// <summary>
+        /// CNC鍚姩鍜岀▼搴忚繍琛�
+        /// </summary>
+        public Boolean Programm_running { get; set; }
+        /// <summary>
+        /// 鍔犲伐绗�1闈�
+        /// </summary>
+        public Boolean Prog_sel_side_1 { get; set; }
+        /// <summary>
+        /// 鍔犲伐绗�2闈�
+        /// </summary>
+        public Boolean Prog_sel_side_2 { get; set; }
+        /// <summary>
+        /// 绗�1闈㈠畬鎴�
+        /// </summary>
+        public Boolean programm_side_1_finished { get; set; }
+        /// <summary>
+        /// 瑁呰浇1闈㈠畬鎴�
+        /// </summary>
+        public Boolean load_side_1_finished { get; set; }
+        /// <summary>
+        /// 绗�2闈㈠畬鎴�
+        /// </summary>
+        public Boolean programm_side_2_finished { get; set; }
+        /// <summary>
+        /// 瑁呰浇2闈㈠畬鎴�
+        /// </summary>
+        public Boolean load_side_2_finished { get; set; }
+        /// <summary>
+        /// 宸ュ叿鍒囨崲1
+        /// </summary>
+        public Boolean Toolchange_magazine_1 { get; set; }
+        /// <summary>
+        /// 宸ュ叿鍒囨崲2
+        /// </summary>
+        public Boolean Toolchange_magazine_2 { get; set; }
+        /// <summary>
+        /// 宸ュ叿宸插垏鎹�1
+        /// </summary>
+        public Int16 Changed_tool_mag_1 { get; set; }
+        /// <summary>
+        /// Duplonr宸插垏鎹�1
+        /// </summary>
+        public Int16 Dupl_tool_mag_1 { get; set; }
+        /// <summary>
+        /// 宸ュ叿宸插垏鎹�2
+        /// </summary>
+        public Int16 Changed_tool_mag_2 { get; set; }
+        /// <summary>
+        /// Duplonr宸插垏鎹�2
+        /// </summary>
+        public Int16 Dupl_tool_mag_2 { get; set; }
+        /// <summary>
+        /// 鏈哄櫒涓殑闆朵欢绫诲瀷
+        /// </summary>
+        public Int16 Parttype { get; set; }
+        /// <summary>
+        /// 闆朵欢璁℃暟鍣�
+        /// </summary>
+        public Int32 partcounter { get; set; }
+        /// <summary>
+        /// HMI涓殑鎿嶄綔浜篒D
+        /// </summary>
+        public Int16 operator_ID { get; set; }
+        /// <summary>
+        /// 鏈哄櫒鐘舵��
+        /// </summary>
+        public Int16 machine_state { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/PLCDBItem/VKDBItem.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/PLCDBItem/VKDBItem.cs"
new file mode 100644
index 0000000..342bfca
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/PLCDBItem/VKDBItem.cs"
@@ -0,0 +1,69 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Comm
+{
+    public class VKDBItem
+    {
+        /// <summary>
+        /// VK4鐘舵�佷俊鎭璞¢泦鍚�
+        /// </summary>
+        public static List<VKDBItem> VK4DBItem = new List<VKDBItem>();
+
+        /// <summary>
+        /// VK5鐘舵�佷俊鎭璞¢泦鍚�
+        /// </summary>
+        public static List<VKDBItem> VK5DBItem = new List<VKDBItem>();
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 鐢垫簮
+        /// </summary>
+        public Boolean power_on { get; set; }
+        /// <summary>
+        /// 鍑嗗杩愯
+        /// </summary>
+        public Boolean ready_for_operate { get; set; }
+        /// <summary>
+        /// 鍑嗗鑷姩鍚姩
+        /// </summary>
+        public Boolean ready_for_auto_start { get; set; }
+        /// <summary>
+        /// VK鏁呴殰
+        /// </summary>
+        public Boolean VK_Fault { get; set; }
+        public Boolean bag_out_1_Fault { get; set; }
+        public Boolean bag_in_1_Fault { get; set; }
+        public Boolean bag_out_2_Fault { get; set; }
+        public Boolean bag_in_2_Fault { get; set; }
+        public Boolean safety_OK { get; set; }
+        public Boolean state_JOG_bag1 { get; set; }
+        public Boolean state_AUTO_bag1 { get; set; }
+        public Boolean state_JOG_bag2 { get; set; }
+        public Boolean state_AUTO_bag2 { get; set; }
+        public Boolean state_JOG_bag3 { get; set; }
+        public Boolean state_AUTO_bag3 { get; set; }
+        public Boolean state_JOG_bag4 { get; set; }
+        public Boolean state_AUTO_bag4 { get; set; }
+        public Boolean safetydoor_1_closed { get; set; }
+        public Boolean safetydoor_2_closed { get; set; }
+        public Boolean safetydoor_3_closed { get; set; }
+        public Boolean safetydoor_4_closed { get; set; }
+        public Boolean safetydoor_5_closed { get; set; }
+        public Boolean safetydoor_6_closed { get; set; }
+        public Boolean safetydoor_7_closed { get; set; }
+        public Boolean safetydoor_8_closed { get; set; }
+        public Boolean safetydoor_9_closed { get; set; }
+        /// <summary>
+        /// vk鐘舵��
+        /// </summary>
+        public Int16 vk_state { get; set; }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/dt_info_trace.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/dt_info_trace.cs"
new file mode 100644
index 0000000..66a5c6a
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/dt_info_trace.cs"
@@ -0,0 +1,280 @@
+/*
+ *浠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_info_trace")]
+    public partial class dt_info_trace:BaseEntity
+    {
+        /// <summary>
+       ///
+       /// </summary>
+       //[Display(Name ="ID")]
+       //[Column(TypeName="int")]
+       //[Required(AllowEmptyStrings=false)]
+       //public int ID { get; set; }
+
+        /// <summary>
+        ///涓婚敭
+        /// </summary>
+        [Key]
+        [Display(Name ="涓婚敭")]
+       [Column(TypeName="uniqueidentifier")]
+       [Required(AllowEmptyStrings=false)]
+       public Guid trace_id { get; set; }
+
+       /// <summary>
+       ///杞﹁疆SN鍙�
+       /// </summary>
+       [Display(Name ="杞﹁疆SN鍙�")]
+       [MaxLength(20)]
+       [Column(TypeName="nvarchar(20)")]
+       [Required(AllowEmptyStrings=false)]
+       public string trace_SN { get; set; }
+
+       /// <summary>
+       ///鐘舵��(寰呭姞宸�,宸插姞宸�)
+       /// </summary>
+       [Display(Name ="鐘舵��(寰呭姞宸�,宸插姞宸�)")]
+       [MaxLength(20)]
+       [Column(TypeName="nvarchar(20)")]
+       public string trace_status { get; set; }
+
+       /// <summary>
+       ///宸ヤ綔浠ゅ彿
+       /// </summary>
+       [Display(Name ="宸ヤ綔浠ゅ彿")]
+       [MaxLength(50)]
+       [Column(TypeName="nvarchar(50)")]
+       public string trace_workOrder { get; set; }
+
+       /// <summary>
+       ///浜у搧鍚嶇О
+       /// </summary>
+       [Display(Name ="浜у搧鍚嶇О")]
+       [MaxLength(40)]
+       [Column(TypeName="nvarchar(40)")]
+       public string trace_productName { get; set; }
+
+       /// <summary>
+       ///浜у搧鍥惧彿
+       /// </summary>
+       [Display(Name ="浜у搧鍥惧彿")]
+       [MaxLength(20)]
+       [Column(TypeName="nvarchar(20)")]
+       public string trace_drawingNo { get; set; }
+
+       /// <summary>
+       ///鐔旂偧鐐夊彿
+       /// </summary>
+       [Display(Name ="鐔旂偧鐐夊彿")]
+       [MaxLength(30)]
+       [Column(TypeName="nvarchar(30)")]
+       public string trace_heatBatchID { get; set; }
+
+       /// <summary>
+       ///鐐変唬鍙�
+       /// </summary>
+       [Display(Name ="鐐変唬鍙�")]
+       [MaxLength(20)]
+       [Column(TypeName="nvarchar(20)")]
+       public string trace_heatID { get; set; }
+
+       /// <summary>
+       ///閽㈠澂鍙�
+       /// </summary>
+       [Display(Name ="閽㈠澂鍙�")]
+       [MaxLength(10)]
+       [Column(TypeName="nvarchar(10)")]
+       public string trace_billetID { get; set; }
+
+       /// <summary>
+       ///鐢熶骇绾跨紪鍙�
+       /// </summary>
+       [Display(Name ="鐢熶骇绾跨紪鍙�")]
+       [MaxLength(10)]
+       [Column(TypeName="nvarchar(10)")]
+       public string trace_line_number { get; set; }
+
+       /// <summary>
+       ///涓婄嚎鏃堕棿
+       /// </summary>
+       [Display(Name ="涓婄嚎鏃堕棿")]
+       [Column(TypeName="datetime")]
+       public DateTime? trace_online_time { get; set; }
+
+       /// <summary>
+       ///鏈哄簥缂栧彿
+       /// </summary>
+       [Display(Name ="鏈哄簥缂栧彿")]
+       [MaxLength(10)]
+       [Column(TypeName="nvarchar(10)")]
+       public string trace_mach_number { get; set; }
+
+       /// <summary>
+       ///鍔犲伐寮�濮嬫椂闂�
+       /// </summary>
+       [Display(Name ="鍔犲伐寮�濮嬫椂闂�")]
+       [Column(TypeName="datetime")]
+       public DateTime? trace_mach_start_time { get; set; }
+
+       /// <summary>
+       ///鍔犲伐瀹屾垚鏃堕棿
+       /// </summary>
+       [Display(Name ="鍔犲伐瀹屾垚鏃堕棿")]
+       [Column(TypeName="datetime")]
+       public DateTime? trace_mach_finish_time { get; set; }
+
+       /// <summary>
+       ///鍔犲伐璐ㄩ噺鐘舵��
+       /// </summary>
+       [Display(Name ="鍔犲伐璐ㄩ噺鐘舵��")]
+       [Column(TypeName="int")]
+       public int? trace_mach_statu { get; set; }
+
+       /// <summary>
+       ///瀹屾垚鎯呭喌
+       /// </summary>
+       [Display(Name ="瀹屾垚鎯呭喌")]
+       [Column(TypeName="int")]
+       public int? trace_process { get; set; }
+
+       /// <summary>
+       ///鎿嶄綔浜哄憳
+       /// </summary>
+       [Display(Name ="鎿嶄綔浜哄憳")]
+       [MaxLength(20)]
+       [Column(TypeName="nvarchar(20)")]
+       public string trace_operator { get; set; }
+
+       /// <summary>
+       ///鐝粍
+       /// </summary>
+       [Display(Name ="鐝粍")]
+       [MaxLength(20)]
+       [Column(TypeName="nvarchar(20)")]
+       public string trace_shift { get; set; }
+
+       /// <summary>
+       ///閽㈤敪鍘傚
+       /// </summary>
+       [Display(Name ="閽㈤敪鍘傚")]
+       [MaxLength(50)]
+       [Column(TypeName="nvarchar(50)")]
+       public string trace_manufacturer { get; set; }
+
+       /// <summary>
+       ///涓嬬嚎鏃堕棿
+       /// </summary>
+       [Display(Name ="涓嬬嚎鏃堕棿")]
+       [Column(TypeName="datetime")]
+       public DateTime? trace_offline_time { get; set; }
+
+       /// <summary>
+       ///瑙嗚妫�娴嬬紪鍙�
+       /// </summary>
+       [Display(Name ="瑙嗚妫�娴嬬紪鍙�")]
+       [MaxLength(20)]
+       [Column(TypeName="nvarchar(20)")]
+       public string trace_tcvm_number { get; set; }
+
+       /// <summary>
+       ///瑙嗚妫�娴嬪紑濮嬫椂闂�
+       /// </summary>
+       [Display(Name ="瑙嗚妫�娴嬪紑濮嬫椂闂�")]
+       [Column(TypeName="datetime")]
+       public DateTime? trace_tcvm_start_time { get; set; }
+
+       /// <summary>
+       ///瑙嗚妫�娴嬪畬鎴愭椂闂�
+       /// </summary>
+       [Display(Name ="瑙嗚妫�娴嬪畬鎴愭椂闂�")]
+       [Column(TypeName="datetime")]
+       public DateTime? trace_tcvm_finish_time { get; set; }
+
+       /// <summary>
+       ///妫�娴嬭川閲忕姸鎬�
+       /// </summary>
+       [Display(Name ="妫�娴嬭川閲忕姸鎬�")]
+       [Column(TypeName="int")]
+       public int? trace_tcvm_statu { get; set; }
+
+       /// <summary>
+       ///鍠烽槻閿堟恫鏃堕棿
+       /// </summary>
+       [Display(Name ="鍠烽槻閿堟恫鏃堕棿")]
+       [Column(TypeName="datetime")]
+       public DateTime? trace_liquoring_time { get; set; }
+
+       /// <summary>
+       ///涓嬫枡浣嶇紪鍙�
+       /// </summary>
+       [Display(Name ="涓嬫枡浣嶇紪鍙�")]
+       [MaxLength(20)]
+       [Column(TypeName="nvarchar(20)")]
+       public string trace_bait_number { get; set; }
+
+       /// <summary>
+       ///涓嬫枡鏃堕棿
+       /// </summary>
+       [Display(Name ="涓嬫枡鏃堕棿")]
+       [Column(TypeName="datetime")]
+       public DateTime? trace_baiting_time { get; set; }
+
+       /// <summary>
+       ///鍘诲悜(寰呮搴�,澶栧崗搴�)
+       /// </summary>
+       [Display(Name ="鍘诲悜(寰呮搴�,澶栧崗搴�)")]
+       [MaxLength(20)]
+       [Column(TypeName="nvarchar(20)")]
+       public string trace_direction { get; set; }
+
+       /// <summary>
+       ///鍏ュ簱鏃堕棿
+       /// </summary>
+       [Display(Name ="鍏ュ簱鏃堕棿")]
+       [Column(TypeName="datetime")]
+       public DateTime? trace_in_time { get; set; }
+
+       /// <summary>
+       ///涓婃枡浣嶇紪鍙�
+       /// </summary>
+       [Display(Name ="涓婃枡浣嶇紪鍙�")]
+       [MaxLength(20)]
+       [Column(TypeName="nvarchar(20)")]
+       public string trace_load_number { get; set; }
+
+       /// <summary>
+       ///涓婃枡鏃堕棿
+       /// </summary>
+       [Display(Name ="涓婃枡鏃堕棿")]
+       [Column(TypeName="datetime")]
+       public DateTime? trace_loading_time { get; set; }
+
+       /// <summary>
+       ///缂洪櫡鎻忚堪
+       /// </summary>
+       [Display(Name ="缂洪櫡鎻忚堪")]
+       [Column(TypeName="nvarchar(max)")]
+       public string trace_defect { get; set; }
+
+       /// <summary>
+       ///澶囨敞锛氭敞鎰忎簨椤�
+       /// </summary>
+       [Display(Name ="澶囨敞锛氭敞鎰忎簨椤�")]
+       [Column(TypeName="nvarchar(max)")]
+       public string trace_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/partial/dt_info_trace.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/partial/dt_info_trace.cs"
new file mode 100644
index 0000000..6a00b5f
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/partial/dt_info_trace.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_info_trace
+    {
+        //姝ゅ閰嶇疆瀛楁(瀛楁閰嶇疆瑙佹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/WCS/dt_info_traceMapConfig.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/MappingConfiguration/WCS/dt_info_traceMapConfig.cs"
new file mode 100644
index 0000000..fcc0ca1
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/MappingConfiguration/WCS/dt_info_traceMapConfig.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_info_traceMapConfig : EntityMappingConfiguration<dt_info_trace>
+    {
+        public override void Map(EntityTypeBuilder<dt_info_trace>
+        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_WCS/Common/equipment/GetWheelDate.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/equipment/GetWheelDate.cs"
index 87113ed..25dbade 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/equipment/GetWheelDate.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/equipment/GetWheelDate.cs"
@@ -3,8 +3,10 @@
 using System.Linq;
 using System.Reflection;
 using System.Text;
+using System.Text.RegularExpressions;
 using System.Threading.Tasks;
 using WIDESEA_Comm;
+using WIDESEA_Core.Extensions;
 using WIDESEA_WCS.WCSClient;
 
 namespace WIDESEA_WCS
@@ -12,13 +14,13 @@
     public class GetDate
     {
         /// <summary>
-        /// 鑾峰彇杞﹁疆鏁版嵁
+        /// 鑾峰彇杞﹁疆鏁版嵁淇℃伅
         /// </summary>
         public static List<WheelDBItem> GetWheelDate(PLCClient client)
         {
             List<WheelDBItem> wheelDBItems = new List<WheelDBItem>();
             PropertyInfo[] propertyInfos = typeof(WheelDBItem).GetProperties();
-            var groups = client.itemGroups.OrderBy(x => x.Methods).ThenBy(x => x.name).GroupBy(x => x.Methods).ToList();
+            var groups = client.itemGroups.Where(x => x.opratortype == "wheel").OrderBy(x => x.Methods).ThenBy(x => x.name).GroupBy(x => x.Methods).ToList();
             foreach (var key in groups)
             {
                 WheelDBItem StackerDBItem = new WheelDBItem();
@@ -56,5 +58,344 @@
             }
             return wheelDBItems;
         }
+        /// <summary>
+        /// 鑾峰彇VK鐘舵�佷俊鎭�
+        /// </summary>
+        /// <param name="client"></param>
+        /// <returns></returns>
+        public static List<VKDBItem> GetVKDate(PLCClient client)
+        {
+            List<VKDBItem> vKDBItems = new List<VKDBItem>();
+            PropertyInfo[] propertyInfos = typeof(VKDBItem).GetProperties();
+            var groups = client.itemGroups.Where(x => x.opratortype == "VK").OrderBy(x => x.Methods).ThenBy(x => x.name).GroupBy(x => x.Methods).ToList();
+            foreach (var key in groups)
+            {
+                VKDBItem StackerDBItem = new VKDBItem();
+                foreach (var propertyInfo in propertyInfos)
+                {
+                    if (propertyInfo.Name == "Name")
+                    {
+                        StackerDBItem.Name = key.Key;
+                    }
+                    else
+                    {
+                        DBItemGroup group = key.FirstOrDefault(x => x.name == propertyInfo.Name);
+                        if (group != null)
+                        {
+                            var readData = DBExtension.Read(group, client);
+                            switch (propertyInfo.Name)
+                            {
+                                case "power_on":
+                                    StackerDBItem.power_on = Convert.ToBoolean(readData);
+                                    break;
+                                case "ready_for_operate":
+                                    StackerDBItem.ready_for_operate = Convert.ToBoolean(readData);
+                                    break;
+                                case "ready_for_auto_start":
+                                    StackerDBItem.ready_for_auto_start = Convert.ToBoolean(readData);
+                                    break;
+                                case "VK_Fault":
+                                    StackerDBItem.VK_Fault = Convert.ToBoolean(readData);
+                                    break;
+                                case "bag_out_1_Fault":
+                                    StackerDBItem.bag_out_1_Fault = Convert.ToBoolean(readData);
+                                    break;
+                                case "bag_in_1_Fault":
+                                    StackerDBItem.bag_in_1_Fault = Convert.ToBoolean(readData);
+                                    break;
+                                case "bag_out_2_Fault":
+                                    StackerDBItem.bag_out_2_Fault = Convert.ToBoolean(readData);
+                                    break;
+                                case "bag_in_2_Fault":
+                                    StackerDBItem.bag_in_2_Fault = Convert.ToBoolean(readData);
+                                    break;
+                                case "safety_OK":
+                                    StackerDBItem.safety_OK = Convert.ToBoolean(readData);
+                                    break;
+                                case "state_JOG_bag1":
+                                    StackerDBItem.state_JOG_bag1 = Convert.ToBoolean(readData);
+                                    break;
+                                case "state_AUTO_bag1":
+                                    StackerDBItem.state_AUTO_bag1 = Convert.ToBoolean(readData);
+                                    break;
+                                case "state_JOG_bag2":
+                                    StackerDBItem.state_JOG_bag2 = Convert.ToBoolean(readData);
+                                    break;
+                                case "state_AUTO_bag2":
+                                    StackerDBItem.state_AUTO_bag2 = Convert.ToBoolean(readData);
+                                    break;
+                                case "state_JOG_bag3":
+                                    StackerDBItem.state_JOG_bag3 = Convert.ToBoolean(readData);
+                                    break;
+                                case "state_AUTO_bag3":
+                                    StackerDBItem.state_AUTO_bag3 = Convert.ToBoolean(readData);
+                                    break;
+                                case "state_JOG_bag4":
+                                    StackerDBItem.state_JOG_bag4 = Convert.ToBoolean(readData);
+                                    break;
+                                case "state_AUTO_bag4":
+                                    StackerDBItem.state_AUTO_bag4 = Convert.ToBoolean(readData);
+                                    break;
+                                case "safetydoor_1_closed":
+                                    StackerDBItem.safetydoor_1_closed = Convert.ToBoolean(readData);
+                                    break;
+                                case "safetydoor_2_closed":
+                                    StackerDBItem.safetydoor_2_closed = Convert.ToBoolean(readData);
+                                    break;
+                                case "safetydoor_3_closed":
+                                    StackerDBItem.safetydoor_3_closed = Convert.ToBoolean(readData);
+                                    break;
+                                case "safetydoor_4_closed":
+                                    StackerDBItem.safetydoor_4_closed = Convert.ToBoolean(readData);
+                                    break;
+                                case "safetydoor_5_closed":
+                                    StackerDBItem.safetydoor_5_closed = Convert.ToBoolean(readData);
+                                    break;
+                                case "safetydoor_6_closed":
+                                    StackerDBItem.safetydoor_6_closed = Convert.ToBoolean(readData);
+                                    break;
+                                case "safetydoor_7_closed":
+                                    StackerDBItem.safetydoor_7_closed = Convert.ToBoolean(readData);
+                                    break;
+                                case "safetydoor_8_closed":
+                                    StackerDBItem.safetydoor_8_closed = Convert.ToBoolean(readData);
+                                    break;
+                                case "safetydoor_9_closed":
+                                    StackerDBItem.safetydoor_9_closed = Convert.ToBoolean(readData);
+                                    break;
+                                case "vk_state":
+                                    StackerDBItem.vk_state = Convert.ToInt16(readData);
+                                    break;
+                            }
+                        }
+                    }
+                }
+                vKDBItems.Add(StackerDBItem);
+            }
+            return vKDBItems;
+        }
+        /// <summary>
+        /// 鑾峰彇鏈哄簥鐘舵�佷俊鎭�
+        /// </summary>
+        /// <param name="client"></param>
+        /// <returns></returns>
+        public static List<MachineDBItem> GetMachineDate(PLCClient client)
+        {
+            List<MachineDBItem> machineDBItems = new List<MachineDBItem>();
+            PropertyInfo[] propertyInfos = typeof(MachineDBItem).GetProperties();
+            var groups = client.itemGroups.Where(x => x.opratortype == "machine").OrderBy(x => x.Methods).ThenBy(x => x.name).GroupBy(x => x.Methods).ToList();
+            foreach (var key in groups)
+            {
+                MachineDBItem StackerDBItem = new MachineDBItem();
+                foreach (var propertyInfo in propertyInfos)
+                {
+                    if (propertyInfo.Name == "Name")
+                    {
+                        StackerDBItem.Name = key.Key;
+                    }
+                    else
+                    {
+                        DBItemGroup group = key.FirstOrDefault(x => x.name == propertyInfo.Name);
+                        if (group != null)
+                        {
+                            var readData = DBExtension.Read(group, client);
+                            switch (propertyInfo.Name)
+                            {
+                                case "Power_on":
+                                    StackerDBItem.Power_on = Convert.ToBoolean(readData);
+                                    break;
+                                case "Ready_for_operate":
+                                    StackerDBItem.Ready_for_operate = Convert.ToBoolean(readData);
+                                    break;
+                                case "Ready_for_Auto_start":
+                                    StackerDBItem.Ready_for_Auto_start = Convert.ToBoolean(readData);
+                                    break;
+                                case "state_JOG":
+                                    StackerDBItem.state_JOG = Convert.ToBoolean(readData);
+                                    break;
+                                case "state_MDA":
+                                    StackerDBItem.state_MDA = Convert.ToBoolean(readData);
+                                    break;
+                                case "state_AUTO":
+                                    StackerDBItem.state_AUTO = Convert.ToBoolean(readData);
+                                    break;
+                                case "Safetydoors_closed":
+                                    StackerDBItem.Safetydoors_closed = Convert.ToBoolean(readData);
+                                    break;
+                                case "Spindel_running":
+                                    StackerDBItem.Spindel_running = Convert.ToBoolean(readData);
+                                    break;
+                                case "Kommunikation_IO":
+                                    StackerDBItem.Kommunikation_IO = Convert.ToBoolean(readData);
+                                    break;
+                                case "Hydraulik_fault":
+                                    StackerDBItem.Hydraulik_fault = Convert.ToBoolean(readData);
+                                    break;
+                                case "feeddrive_fault":
+                                    StackerDBItem.feeddrive_fault = Convert.ToBoolean(readData);
+                                    break;
+                                case "Maindrive_fault":
+                                    StackerDBItem.Maindrive_fault = Convert.ToBoolean(readData);
+                                    break;
+                                case "Machine_fault":
+                                    StackerDBItem.Machine_fault = Convert.ToBoolean(readData);
+                                    break;
+                                case "Coolant_fault":
+                                    StackerDBItem.Coolant_fault = Convert.ToBoolean(readData);
+                                    break;
+                                case "Chipremoval_fault":
+                                    StackerDBItem.Chipremoval_fault = Convert.ToBoolean(readData);
+                                    break;
+                                case "Coolant_ready_operate":
+                                    StackerDBItem.Coolant_ready_operate = Convert.ToBoolean(readData);
+                                    break;
+                                case "Chipremoval_ready_operat":
+                                    StackerDBItem.Chipremoval_ready_operat = Convert.ToBoolean(readData);
+                                    break;
+                                case "Emergency_Stop_machine":
+                                    StackerDBItem.Emergency_Stop_machine = Convert.ToBoolean(readData);
+                                    break;
+                                case "Breakdown_repair":
+                                    StackerDBItem.Breakdown_repair = Convert.ToBoolean(readData);
+                                    break;
+                                case "Breakdown_maintenance":
+                                    StackerDBItem.Breakdown_maintenance = Convert.ToBoolean(readData);
+                                    break;
+                                case "Breakdown_Toolchange":
+                                    StackerDBItem.Breakdown_Toolchange = Convert.ToBoolean(readData);
+                                    break;
+                                case "Breakdown_changeover":
+                                    StackerDBItem.Breakdown_changeover = Convert.ToBoolean(readData);
+                                    break;
+                                case "Programm_running":
+                                    StackerDBItem.Programm_running = Convert.ToBoolean(readData);
+                                    break;
+                                case "Prog_sel_side_1":
+                                    StackerDBItem.Prog_sel_side_1 = Convert.ToBoolean(readData);
+                                    break;
+                                case "Prog_sel_side_2":
+                                    StackerDBItem.Prog_sel_side_2 = Convert.ToBoolean(readData);
+                                    break;
+                                case "programm_side_1_finished":
+                                    StackerDBItem.programm_side_1_finished = Convert.ToBoolean(readData);
+                                    break;
+                                case "load_side_1_finished":
+                                    StackerDBItem.load_side_1_finished = Convert.ToBoolean(readData);
+                                    break;
+                                case "programm_side_2_finished":
+                                    StackerDBItem.programm_side_2_finished = Convert.ToBoolean(readData);
+                                    break;
+                                case "load_side_2_finished":
+                                    StackerDBItem.load_side_2_finished = Convert.ToBoolean(readData);
+                                    break;
+                                case "Toolchange_magazine_1":
+                                    StackerDBItem.Toolchange_magazine_1 = Convert.ToBoolean(readData);
+                                    break;
+                                case "Toolchange_magazine_2":
+                                    StackerDBItem.Toolchange_magazine_2 = Convert.ToBoolean(readData);
+                                    break;
+                                case "Changed_tool_mag_1":
+                                    StackerDBItem.Changed_tool_mag_1 = Convert.ToInt16(readData);
+                                    break;
+                                case "Dupl_tool_mag_1":
+                                    StackerDBItem.Dupl_tool_mag_1 = Convert.ToInt16(readData);
+                                    break;
+                                case "Changed_tool_mag_2":
+                                    StackerDBItem.Changed_tool_mag_2 = Convert.ToInt16(readData);
+                                    break;
+                                case "Dupl_tool_mag_2":
+                                    StackerDBItem.Dupl_tool_mag_2 = Convert.ToInt16(readData);
+                                    break;
+                                case "Parttype":
+                                    StackerDBItem.Parttype = Convert.ToInt16(readData);
+                                    break;
+                                case "partcounter":
+                                    StackerDBItem.partcounter = Convert.ToInt32(readData);
+                                    break;
+                                case "operator_ID":
+                                    StackerDBItem.operator_ID = Convert.ToInt16(readData);
+                                    break;
+                                case "machine_state":
+                                    StackerDBItem.machine_state = Convert.ToInt16(readData);
+                                    break;
+                            }
+                        }
+                    }
+                }
+                machineDBItems.Add(StackerDBItem);
+            }
+            return machineDBItems;
+        }
+        /// <summary>
+        /// 鑾峰彇妗佹灦鏈烘鎵嬬姸鎬佷俊鎭�
+        /// </summary>
+        /// <param name="client"></param>
+        /// <returns></returns>
+        public static List<GantryDBItem> GetGantryDate(PLCClient client)
+        {
+            List<GantryDBItem> gantryDBItems = new List<GantryDBItem>();
+            PropertyInfo[] propertyInfos = typeof(GantryDBItem).GetProperties();
+            var groups = client.itemGroups.Where(x => x.opratortype == "Gantry").OrderBy(x => x.Methods).ThenBy(x => x.name).GroupBy(x => x.Methods).ToList();
+            foreach (var key in groups)
+            {
+                GantryDBItem StackerDBItem = new GantryDBItem();
+                foreach (var propertyInfo in propertyInfos)
+                {
+                    if (propertyInfo.Name == "Name")
+                    {
+                        StackerDBItem.Name = key.Key;
+                    }
+                    else
+                    {
+                        DBItemGroup group = key.FirstOrDefault(x => x.name == propertyInfo.Name);
+                        if (group != null)
+                        {
+                            var readData = DBExtension.Read(group, client);
+                            switch (propertyInfo.Name)
+                            {
+                                case "power_on":
+                                    StackerDBItem.power_on = Convert.ToBoolean(readData);
+                                    break;
+                                case "ready_for_operate":
+                                    StackerDBItem.ready_for_operate = Convert.ToBoolean(readData);
+                                    break;
+                                case "ready_for_auto_start":
+                                    StackerDBItem.ready_for_auto_start = Convert.ToBoolean(readData);
+                                    break;
+                                case "state_JOG":
+                                    StackerDBItem.state_JOG = Convert.ToBoolean(readData);
+                                    break;
+                                case "state_MDA":
+                                    StackerDBItem.state_MDA = Convert.ToBoolean(readData);
+                                    break;
+                                case "state_AUTO":
+                                    StackerDBItem.state_AUTO = Convert.ToBoolean(readData);
+                                    break;
+                                case "communication_IO":
+                                    StackerDBItem.communication_IO = Convert.ToBoolean(readData);
+                                    break;
+                                case "drive_fault":
+                                    StackerDBItem.drive_fault = Convert.ToBoolean(readData);
+                                    break;
+                                case "portal_fault":
+                                    StackerDBItem.portal_fault = Convert.ToBoolean(readData);
+                                    break;
+                                case "emergency_stop_portal":
+                                    StackerDBItem.emergency_stop_portal = Convert.ToBoolean(readData);
+                                    break;
+                                case "programm_running":
+                                    StackerDBItem.programm_running = Convert.ToBoolean(readData);
+                                    break;
+                                case "gantry_state":
+                                    StackerDBItem.gantry_state = Convert.ToInt16(readData);
+                                    break;
+                            }
+                        }
+                    }
+                }
+                gantryDBItems.Add(StackerDBItem);
+            }
+            return gantryDBItems;
+        }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IRepositories/WCS/Idt_info_traceRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IRepositories/WCS/Idt_info_traceRepository.cs"
new file mode 100644
index 0000000..6a2b40f
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IRepositories/WCS/Idt_info_traceRepository.cs"
@@ -0,0 +1,18 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *Repository鎻愪緵鏁版嵁搴撴搷浣滐紝濡傛灉瑕佸鍔犳暟鎹簱鎿嶄綔璇峰湪褰撳墠鐩綍涓婸artial鏂囦欢澶笽dt_info_traceRepository缂栧啓鎺ュ彛
+ */
+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_info_traceRepository : IDependency,IRepository<dt_info_trace>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Idt_info_traceService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Idt_info_traceService.cs"
new file mode 100644
index 0000000..181d993
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Idt_info_traceService.cs"
@@ -0,0 +1,12 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ */
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Entity.DomainModels;
+
+namespace WIDESEA_WCS.IServices
+{
+    public partial interface Idt_info_traceService : IService<dt_info_trace>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Partial/Idt_info_traceService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Partial/Idt_info_traceService.cs"
new file mode 100644
index 0000000..f09d26b
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Partial/Idt_info_traceService.cs"
@@ -0,0 +1,13 @@
+/*
+*鎵�鏈夊叧浜巇t_info_trace绫荤殑涓氬姟浠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_info_traceService
+    {
+    }
+ }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/VK4Job.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/VK4Job.cs"
index 616ce49..d5b1976 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/VK4Job.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/VK4Job.cs"
@@ -40,6 +40,9 @@
                 return;
             }
             WheelDBItem.VK4WheelDBItem = GetDate.GetWheelDate(client);
+            VKDBItem.VK4DBItem = GetDate.GetVKDate(client);
+            GantryDBItem.VK4GantryDBItem = GetDate.GetGantryDate(client);
+            MachineDBItem.VK4MachineDBItem = GetDate.GetMachineDate(client);
         }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/VK5Job.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/VK5Job.cs"
index 171d61d..bca36fe 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/VK5Job.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/VK5Job.cs"
@@ -36,6 +36,9 @@
                 return;
             }
             WheelDBItem.VK5WheelDBItem = GetDate.GetWheelDate(client);
+            VKDBItem.VK5DBItem = GetDate.GetVKDate(client);
+            GantryDBItem.VK5GantryDBItem = GetDate.GetGantryDate(client);
+            MachineDBItem.VK5MachineDBItem = GetDate.GetMachineDate(client);
         }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Repositories/WCS/dt_info_traceRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Repositories/WCS/dt_info_traceRepository.cs"
new file mode 100644
index 0000000..f34f910
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Repositories/WCS/dt_info_traceRepository.cs"
@@ -0,0 +1,24 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *Repository鎻愪緵鏁版嵁搴撴搷浣滐紝濡傛灉瑕佸鍔犳暟鎹簱鎿嶄綔璇峰湪褰撳墠鐩綍涓婸artial鏂囦欢澶筪t_info_traceRepository缂栧啓浠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_info_traceRepository : RepositoryBase<dt_info_trace> , Idt_info_traceRepository
+    {
+    public dt_info_traceRepository(VOLContext dbContext)
+    : base(dbContext)
+    {
+
+    }
+    public static Idt_info_traceRepository Instance
+    {
+      get {  return AutofacContainerModule.GetService<Idt_info_traceRepository>(); } }
+    }
+}
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 0cc4927..7a78eac 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"
@@ -238,6 +238,7 @@
                 {
                     order.dbAddress = item.plcdetail_db + "." + item.plcdetail_value;
                 }
+                order.opratortype = item.plcdetail_opratortype;
                 order.dataLen = item.plcdetail_len;
                 order.Methods = item.plcdetail_number;//
                 itmes.Add(order);
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/dt_info_traceService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/dt_info_traceService.cs"
new file mode 100644
index 0000000..d162000
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/dt_info_traceService.cs"
@@ -0,0 +1,41 @@
+/*
+ *鎵�鏈夊叧浜巇t_info_trace绫荤殑涓氬姟浠g爜搴斿湪姝ゅ缂栧啓
+*鍙娇鐢╮epository.璋冪敤甯哥敤鏂规硶锛岃幏鍙朎F/Dapper绛変俊鎭�
+*濡傛灉闇�瑕佷簨鍔¤浣跨敤repository.DbContextBeginTransaction
+*涔熷彲浣跨敤DBServerProvider.鎵嬪姩鑾峰彇鏁版嵁搴撶浉鍏充俊鎭�
+*鐢ㄦ埛淇℃伅銆佹潈闄愩�佽鑹茬瓑浣跨敤UserContext.Current鎿嶄綔
+*dt_info_traceService瀵瑰銆佸垹銆佹敼鏌ャ�佸鍏ャ�佸鍑恒�佸鏍镐笟鍔′唬鐮佹墿灞曞弬鐓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_info_traceService
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        private readonly Idt_info_traceRepository _repository;//璁块棶鏁版嵁搴�
+
+        [ActivatorUtilitiesConstructor]
+        public dt_info_traceService(
+            Idt_info_traceRepository 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/WCS/dt_info_traceService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/dt_info_traceService.cs"
new file mode 100644
index 0000000..1fd9873
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/dt_info_traceService.cs"
@@ -0,0 +1,27 @@
+/*
+ *Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,姝ゅ浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *鎵�鏈変笟鍔$紪鍐欏叏閮ㄥ簲鍦≒artial鏂囦欢澶逛笅dt_info_traceService涓嶪dt_info_traceService涓紪鍐�
+ */
+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_info_traceService : ServiceBase<dt_info_trace, Idt_info_traceRepository>
+    , Idt_info_traceService, IDependency
+    {
+    public dt_info_traceService(Idt_info_traceRepository repository)
+    : base(repository)
+    {
+    Init(repository);
+    }
+    public static Idt_info_traceService Instance
+    {
+      get { return AutofacContainerModule.GetService<Idt_info_traceService>(); } }
+    }
+ }
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 be54bb2..6ae21e6 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"
@@ -27,10 +27,13 @@
         /// 鏁版嵁闀垮害
         /// </summary>
         public int? dataLen { get; set; }
-
         /// <summary>
         /// 澶勭悊鏂规硶
         /// </summary>
+        public string opratortype { get; set; }
+        /// <summary>
+        /// 璁惧鍚嶇О
+        /// </summary>
         public string Methods { get; set; }
     }
 }
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_info_traceController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/Partial/dt_info_traceController.cs"
new file mode 100644
index 0000000..2123609
--- /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_info_traceController.cs"
@@ -0,0 +1,33 @@
+/*
+ *鎺ュ彛缂栧啓澶�...
+*濡傛灉鎺ュ彛闇�瑕佸仛Action鐨勬潈闄愰獙璇侊紝璇峰湪Action涓婁娇鐢ㄥ睘鎬�
+*濡�: [ApiActionPermission("dt_info_trace",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_info_traceController
+    {
+        private readonly Idt_info_traceService _service;//璁块棶涓氬姟浠g爜
+        private readonly IHttpContextAccessor _httpContextAccessor;
+
+        [ActivatorUtilitiesConstructor]
+        public dt_info_traceController(
+            Idt_info_traceService 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_info_traceController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/dt_info_traceController.cs"
new file mode 100644
index 0000000..948bd7c
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/dt_info_traceController.cs"
@@ -0,0 +1,21 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *濡傛灉瑕佸鍔犳柟娉曡鍦ㄥ綋鍓嶇洰褰曚笅Partial鏂囦欢澶筪t_info_traceController缂栧啓
+ */
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core.Controllers.Basic;
+using WIDESEA_Entity.AttributeManager;
+using WIDESEA_WCS.IServices;
+namespace WIDESEA_WCS.Controllers
+{
+    [Route("api/dt_info_trace")]
+    [PermissionTable(Name = "dt_info_trace")]
+    public partial class dt_info_traceController : ApiBaseController<Idt_info_traceService>
+    {
+        public dt_info_traceController(Idt_info_traceService service)
+        : base(service)
+        {
+        }
+    }
+}
+

--
Gitblit v1.9.3