Imports System.Text Imports UTS_Core.UTSModule.DbTableModel.Customer Imports UTS_Core.UTSModule.Station Namespace UTSModule.Test Public Class TestResult ''' ''' 测试结果枚举集合 ''' Enum TestResultEnum Fail Pass End Enum Sub New() UserID = -1 ServiceID = -1 ProductionLineID = -1 OrderID = -1 AppName = String.Empty TestPlan = String.Empty _dutSn = String.Empty TestResult = TestResultEnum.Fail ErrCode = String.Empty FailSteps = New List(Of RowNode)() CustomRecord = New Dictionary(Of String, String)() End Sub ''' ''' 当前用户索引,登陆后填充 ''' ''' Public Property UserID As Integer ''' ''' 当前服务索引,登陆后获取 ''' ''' Public Property ServiceID As Integer ''' ''' 所属产线索引,用户选择后获取 ''' ''' Public Property ProductionLineID As Integer ''' ''' 所属订单索引,用户提供条码,系统自动填充 ''' ''' Public Property OrderID() As Integer ''' ''' 测试程序的名称,登陆后填充 ''' ''' Public Property AppName As String ''' ''' 测试流程名,切换项目流程站后获取 ''' ''' Public Property TestPlan As String Private _dutSn As String ''' ''' 测试产品的索引序号,测试时获取,(使用大写,8字符) ''' ''' Public Property DUT_SN As String Get Return _dutSn End Get Set(value As String) _dutSn = value.ToUpper End Set End Property ''' ''' 测试开始日期与时间,测试时获取 ''' ''' Public Property StartTime As DateTime ''' ''' 测试耗时,测试时获取 ''' ''' Public Property UsedTime As TimeSpan ''' ''' 测试结果,测试时获取 ''' ''' Public Property TestResult As TestResultEnum ''' ''' 错误代码,测试时获取 ''' ''' Public Property ErrCode As String ''' ''' 失败步骤集合,测试时获取 ''' ''' Public Property FailSteps As List(Of RowNode) ''' ''' 自定义记录数据,测试时获取 ''' ''' Public Property CustomRecord() As Dictionary(Of String, String) ''' ''' 切换测试站后,初始话测试结果信息 ''' Public Sub InitTestResult(user As Integer) UserID = user TestResult = TestResultEnum.Fail FailSteps = New List(Of RowNode)() CustomRecord = New Dictionary(Of String, String)() End Sub ''' ''' 开启新一轮测试时,重置测试结果信息 ''' Public Sub ResetTestResult() ErrCode = String.Empty _dutSn = String.Empty TestResult = TestResultEnum.Fail StartTime = Now UsedTime = New TimeSpan() OrderID = -1 FailSteps.Clear() CustomRecord.Clear() End Sub ''' ''' 添加自定义需要记录的测试信息 ''' ''' 记录列名 ''' 记录值 Public Function AddCustomRecord(name As String, value As String) As Boolean If String.Compare(name, $"{TestLogTable.ColNames.DUT_SN}") = 0 Then _dutSn = value Else If CustomRecord.ContainsKey(name) Then CustomRecord(name) = value '已有字段则覆盖原值 Else CustomRecord.Add(name, value) End If End If Return True End Function ''' ''' 将当前测试信息转换为字符键值对 ''' ''' Public Function ToStringDictionary() As Dictionary(Of String, String) Dim dic As New Dictionary(Of String, String) From { {$"{TestLogTable.ColNames.UserID}", UserID.ToString()}, {$"{TestLogTable.ColNames.ServiceID}", ServiceID.ToString()}, {$"{TestLogTable.ColNames.DUT_SN}", _dutSn}, {$"{TestLogTable.ColNames.AppName}", AppName}, {$"{TestLogTable.ColNames.TestPlan}", TestPlan}, {$"{TestLogTable.ColNames.StartTime}", StartTime.ToString("yyyy-MM-dd HH:mm:ss")}, {$"{TestLogTable.ColNames.UsedTime}", UsedTime.TotalSeconds.ToString("F2")}, {$"{TestLogTable.ColNames.TestResult}", IIf(TestResult = TestResultEnum.Fail, 0, 1).ToString()}, {$"{TestLogTable.ColNames.ErrCode}", ErrCode}, {$"{TestLogTable.ColNames.ProductionLineID}", ProductionLineID.ToString()}, {$"{TestLogTable.ColNames.OrderID}", OrderID.ToString()} } '填充失败步骤信息(此处需要一个信息定位失败步骤) Dim steps As New StringBuilder Dim msg As New StringBuilder For Each node As RowNode In FailSteps If steps.Length > 0 Then steps.Append(","c) msg.Append(","c) End If steps.Append(node.RowListIndex) msg.Append(node.Description) msg.Append($" {node.TestReturn.RecordValue} ({node.TestReturn.LowerLimit},{node.TestReturn.UpperLimit})") Next dic.Add($"{TestLogTable.ColNames.FailSteps}", steps.ToString()) dic.Add($"{TestLogTable.ColNames.FailMsg}", msg.ToString()) '填充自定义记录数据字段信息 For Each keyValue As KeyValuePair(Of String, String) In CustomRecord If dic.ContainsKey(keyValue.Key) Then dic(keyValue.Key) = keyValue.Value Else dic.Add(keyValue.Key, keyValue.Value) End If Next Return dic End Function End Class End Namespace