Imports System.Text
Imports UTS_Core.Database

Namespace UTSModule.DbTableModel.Customer
    Public Class SnListTable
        Enum ColNames
            ''' <summary>
            ''' 索引
            ''' </summary>
            ID
            ''' <summary>
            ''' 订单ID
            ''' </summary>
            OrderID
            ''' <summary>
            ''' 内部单ID
            ''' </summary>
            OrderInternalID
            ''' <summary>
            ''' 机型ID
            ''' </summary>
            ProductID
            ''' <summary>
            ''' 条码
            ''' </summary>
            BarCode
            ''' <summary>
            ''' 创建时间
            ''' </summary>
            CreateTime

            ''' <summary>
            ''' 更新时间
            ''' </summary>
            UpdateTime
            ''' <summary>
            ''' 条码生成类型
            ''' </summary>
            SnType

            ''' <summary>
            ''' 参与组装条码
            ''' </summary>
            AssemblySn

            ''' <summary>
            ''' 被组装的时间
            ''' </summary>
            AssemblyTime

            ''' <summary>
            ''' 第1站测试时间
            ''' </summary>
            S1
            ''' <summary>
            ''' 第2站测试时间
            ''' </summary>
            S2
            ''' <summary>
            ''' 第3站测试时间
            ''' </summary>
            S3
            ''' <summary>
            ''' 第4站测试时间
            ''' </summary>
            S4
            ''' <summary>
            ''' 第5站测试时间
            ''' </summary>
            S5
            ''' <summary>
            ''' 第6站测试时间
            ''' </summary>
            S6
            ''' <summary>
            ''' 第7站测试时间
            ''' </summary>
            S7
            ''' <summary>
            ''' 第8站测试时间
            ''' </summary>
            S8
            ''' <summary>
            ''' 第9站测试时间
            ''' </summary>
            S9
            ''' <summary>
            ''' 第10站测试时间
            ''' </summary>
            S10
            ''' <summary>
            ''' 第11站测试时间
            ''' </summary>
            S11
            ''' <summary>
            ''' 第12站测试时间
            ''' </summary>
            S12

            ''' <summary>
            ''' 第1站测试结果
            ''' </summary>
            Result1
            ''' <summary>
            ''' 第2站测试结果
            ''' </summary>
            Result2
            ''' <summary>
            ''' 第3站测试结果
            ''' </summary>
            Result3
            ''' <summary>
            ''' 第4站测试结果
            ''' </summary>
            Result4
            ''' <summary>
            ''' 第5站测试结果
            ''' </summary>
            Result5
            ''' <summary>
            ''' 第6站测试结果
            ''' </summary>
            Result6
            ''' <summary>
            ''' 第7站测试结果
            ''' </summary>
            Result7
            ''' <summary>
            ''' 第8站测试结果
            ''' </summary>
            Result8
            ''' <summary>
            ''' 第9站测试结果
            ''' </summary>
            Result9
            ''' <summary>
            ''' 第10站测试结果
            ''' </summary>
            Result10
            ''' <summary>
            ''' 第11站测试结果
            ''' </summary>
            Result11
            ''' <summary>
            ''' 第12站测试结果
            ''' </summary>
            Result12
        End Enum

        Public Shared Property TableName() As String = "TBL_SnList"

        ''' <summary>
        ''' 建表语句
        ''' </summary>
        ''' <returns>建表语句</returns>
        Public Shared Function CreateTableString(dbName As String, Optional dbType As DbExecutor.DbTypeEnum = DbExecutor.DbTypeEnum.Mysql) As String
            Dim builder As New StringBuilder
            If dbType = DbExecutor.DbTypeEnum.Mysql Then
                builder.Append($"CREATE TABLE If Not Exists `{dbName}`.`{TableName}` ")
                builder.Append("(")

                builder.Append($"`{ColNames.ID}` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',")
                builder.Append($"`{ColNames.OrderID}` int(11) NOT NULL COMMENT '订单ID',")
                builder.Append($"`{ColNames.OrderInternalID}` int(11) NOT NULL COMMENT '内部单ID',")
                builder.Append($"`{ColNames.ProductID}` int(11) NOT NULL COMMENT '机型ID',")
                builder.Append($"`{ColNames.BarCode}` varchar(64) NOT NULL COMMENT '机型ID',")
                builder.Append($"`{ColNames.CreateTime}` datetime NOT NULL DEFAULT current_timestamp() COMMENT '创建时间',")
                builder.Append($"`{ColNames.UpdateTime}` datetime NOT NULL DEFAULT current_timestamp() COMMENT '更新时间',")
                builder.Append($"`{ColNames.SnType}` int(11) NOT NULL DEFAULT 1 COMMENT '条码生成类型',")

                builder.Append($"`{ColNames.AssemblySn}` varchar(254) DEFAULT NULL COMMENT '被组装的条码集合',")
                builder.Append($"`{ColNames.AssemblyTime}` datetime DEFAULT NULL COMMENT '被组装的时间',")

                builder.Append($"`{ColNames.S1}` datetime DEFAULT NULL COMMENT '第1站测试时间',")
                builder.Append($"`{ColNames.S2}` datetime DEFAULT NULL COMMENT '第2站测试时间',")
                builder.Append($"`{ColNames.S3}` datetime DEFAULT NULL COMMENT '第3站测试时间',")
                builder.Append($"`{ColNames.S4}` datetime DEFAULT NULL COMMENT '第4站测试时间',")
                builder.Append($"`{ColNames.S5}` datetime DEFAULT NULL COMMENT '第5站测试时间',")
                builder.Append($"`{ColNames.S6}` datetime DEFAULT NULL COMMENT '第6站测试时间',")
                builder.Append($"`{ColNames.S7}` datetime DEFAULT NULL COMMENT '第7站测试时间',")
                builder.Append($"`{ColNames.S8}` datetime DEFAULT NULL COMMENT '第8站测试时间',")
                builder.Append($"`{ColNames.S9}` datetime DEFAULT NULL COMMENT '第9站测试时间',")
                builder.Append($"`{ColNames.S10}` datetime DEFAULT NULL COMMENT '第10站测试时间',")
                builder.Append($"`{ColNames.S11}` datetime DEFAULT NULL COMMENT '第11站测试时间',")
                builder.Append($"`{ColNames.S12}` datetime DEFAULT NULL COMMENT '第12站测试时间',")

                builder.Append($"`{ColNames.Result1}` tinyint(4) DEFAULT NULL COMMENT '第1站测试结果',")
                builder.Append($"`{ColNames.Result2}` tinyint(4) DEFAULT NULL COMMENT '第2站测试结果',")
                builder.Append($"`{ColNames.Result3}` tinyint(4) DEFAULT NULL COMMENT '第3站测试结果',")
                builder.Append($"`{ColNames.Result4}` tinyint(4) DEFAULT NULL COMMENT '第4站测试结果',")
                builder.Append($"`{ColNames.Result5}` tinyint(4) DEFAULT NULL COMMENT '第5站测试结果',")
                builder.Append($"`{ColNames.Result6}` tinyint(4) DEFAULT NULL COMMENT '第6站测试结果',")
                builder.Append($"`{ColNames.Result7}` tinyint(4) DEFAULT NULL COMMENT '第7站测试结果',")
                builder.Append($"`{ColNames.Result8}` tinyint(4) DEFAULT NULL COMMENT '第8站测试结果',")
                builder.Append($"`{ColNames.Result9}` tinyint(4) DEFAULT NULL COMMENT '第9站测试结果',")
                builder.Append($"`{ColNames.Result10}` tinyint(4) DEFAULT NULL COMMENT '第10站测试结果',")
                builder.Append($"`{ColNames.Result11}` tinyint(4) DEFAULT NULL COMMENT '第11站测试结果',")
                builder.Append($"`{ColNames.Result12}` tinyint(4) DEFAULT NULL COMMENT '第12站测试结果',")

                builder.Append($"PRIMARY KEY (`{ColNames.ID}`) ")

                builder.Append(")")
                builder.Append("ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;")
            Else
                Throw New Exception($"{TableName}-Invalid db type :{dbType}")
            End If

            Return builder.ToString()
        End Function
    End Class
End Namespace