初始化提交
仓库转移到Gitea,初始化提交,可能丢失以前的git版本日志
This commit is contained in:
146
UTS_Core/Compress/Compress.vb
Normal file
146
UTS_Core/Compress/Compress.vb
Normal file
@@ -0,0 +1,146 @@
|
||||
Imports System.IO
|
||||
Imports SharpCompress.Archives
|
||||
Imports SharpCompress.Archives.Zip
|
||||
Imports SharpCompress.Common
|
||||
Imports SharpCompress.Readers
|
||||
Imports SharpCompress.Writers
|
||||
|
||||
Namespace Compress
|
||||
Public Class Compress
|
||||
''' <summary>
|
||||
''' 压缩文件夹到zip文件
|
||||
''' </summary>
|
||||
''' <param name="dirPath">需要压缩的文件夹</param>
|
||||
''' <param name="zipPath">压缩后的zip文件路径</param>
|
||||
Public Shared Sub SaveDirToZip(dirPath As String, zipPath As String)
|
||||
Using fileStream As FileStream = File.OpenWrite(zipPath)
|
||||
Using archive As ZipArchive = ZipArchive.Create()
|
||||
archive.AddAllFromDirectory(dirPath)
|
||||
archive.SaveTo(fileStream)
|
||||
End Using
|
||||
End Using
|
||||
End Sub
|
||||
|
||||
|
||||
Public Shared Sub LoadFromZip(dirPath As String, zipPath As String)
|
||||
Using fileStream As FileStream = File.OpenRead(zipPath)
|
||||
Using reader As IReader = ReaderFactory.Open(fileStream)
|
||||
Dim options As New ExtractionOptions With {.ExtractFullPath = True, .Overwrite = True, .PreserveFileTime = True}
|
||||
|
||||
While reader.MoveToNextEntry
|
||||
If reader.Entry.IsDirectory = False Then
|
||||
reader.WriteEntryToDirectory(dirPath, options)
|
||||
End If
|
||||
End While
|
||||
End Using
|
||||
End Using
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 压缩文件至Zip文件
|
||||
''' </summary>
|
||||
''' <param name="filePath">被压缩的文件路径</param>
|
||||
''' <param name="zipFilePath">压缩文件路径</param>
|
||||
Public Shared Sub SaveFileToZip(filePath As String, zipFilePath As String)
|
||||
If File.Exists(zipFilePath) Then File.Delete(zipFilePath)
|
||||
Using tarStream As FileStream = File.OpenWrite(zipFilePath)
|
||||
|
||||
Using writer As IWriter = WriterFactory.Open(tarStream, ArchiveType.Zip, CompressionType.None)
|
||||
writer.Write(Path.GetFileName(filePath), File.OpenRead(filePath), File.GetLastWriteTimeUtc(filePath))
|
||||
End Using
|
||||
End Using
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 压缩指定文件夹至tar格式文件,不会生成根文件目录
|
||||
''' </summary>
|
||||
''' <param name="tarFilename">压缩文件名</param>
|
||||
''' <param name="sourceDirectory">源文件夹</param>
|
||||
Public Shared Sub TarCreateFromStream(tarFilename As String, sourceDirectory As String)
|
||||
Dim filesPath As String = sourceDirectory
|
||||
Using tarStream As FileStream = File.OpenWrite(tarFilename)
|
||||
Using writer As IWriter = WriterFactory.Open(tarStream, ArchiveType.Tar, CompressionType.GZip)
|
||||
writer.WriteAll(filesPath, "*", SearchOption.AllDirectories)
|
||||
End Using
|
||||
End Using
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 压缩指定文件列表到tar格式文件
|
||||
''' </summary>
|
||||
''' <param name="fileList">文件列表</param>
|
||||
''' <param name="tarFilePath">压缩文件路径</param>
|
||||
''' <param name="dirFullPath">压缩文件所在文件夹路径</param>
|
||||
Public Shared Sub TarFiles(fileList As List(Of String), tarFilePath As String, dirFullPath As String)
|
||||
If File.Exists(tarFilePath) Then File.Delete(tarFilePath)
|
||||
Using tarStream As FileStream = File.OpenWrite(tarFilePath)
|
||||
Using writer As IWriter = WriterFactory.Open(tarStream, ArchiveType.Tar, CompressionType.GZip)
|
||||
For i As Integer = 0 To fileList.Count - 1
|
||||
If Right(fileList.Item(i), 1) = "\" OrElse Right(fileList.Item(i), 1) = "/" Then
|
||||
writer.WriteAll($"{dirFullPath}\{fileList.Item(i)}", "*", SearchOption.AllDirectories)
|
||||
Else
|
||||
writer.Write(fileList.Item(i), File.OpenRead($"{dirFullPath}\{fileList.Item(i)}"), File.GetLastWriteTimeUtc($"{dirFullPath}\{fileList.Item(i)}"))
|
||||
End If
|
||||
Next
|
||||
End Using
|
||||
End Using
|
||||
GC.Collect() '回收资源
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 填充文件表,供压缩文件使用
|
||||
''' </summary>
|
||||
''' <param name="fileList">文件列表</param>
|
||||
''' <param name="dir">需要压缩的文件夹</param>
|
||||
''' <param name="prefix">文件前缀</param>
|
||||
Public Shared Sub FillFileList(fileList As List(Of String), dir As String, prefix As String)
|
||||
For Each fName As String In Directory.GetFiles(dir)
|
||||
fileList.Add($"{prefix}/{Path.GetFileName(fName) }")
|
||||
Next
|
||||
|
||||
For Each dirName As String In Directory.GetDirectories(dir)
|
||||
FillFileList(fileList, dirName, $"{prefix}/{Path.GetFileName(dirName)}")
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Public Shared Sub TarFiles(fileList As List(Of String), filePathList As List(Of String), tarFileName As String)
|
||||
If File.Exists(tarFileName) Then File.Delete(tarFileName)
|
||||
Using tarStream As FileStream = File.OpenWrite(tarFileName)
|
||||
Using writer As IWriter = WriterFactory.Open(tarStream, ArchiveType.Tar, CompressionType.GZip)
|
||||
For i As Integer = 0 To fileList.Count - 1
|
||||
If Right(fileList.Item(i), 1) = "\" OrElse Right(fileList.Item(i), 1) = "/" Then
|
||||
writer.WriteAll($"{filePathList(i)}", "*", SearchOption.AllDirectories)
|
||||
Else
|
||||
writer.Write(fileList.Item(i), File.OpenRead($"{filePathList(i)}"), File.GetLastWriteTimeUtc($"{filePathList(i)}"))
|
||||
End If
|
||||
Next
|
||||
End Using
|
||||
End Using
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 解压Tar格式文件夹
|
||||
''' </summary>
|
||||
''' <param name="filePath">文件路径</param>
|
||||
''' <param name="destDirectory">目标文件夹</param>
|
||||
Public Shared Sub TarExtractToDirectory(filePath As String, destDirectory As String)
|
||||
Using tar As Stream = File.OpenRead(filePath)
|
||||
Using reader As IReader = ReaderFactory.Open(tar)
|
||||
While reader.MoveToNextEntry
|
||||
If Not reader.Entry.IsDirectory Then
|
||||
Dim a As New ExtractionOptions With {
|
||||
.ExtractFullPath = True,
|
||||
.Overwrite = True,
|
||||
.PreserveFileTime = True
|
||||
}
|
||||
reader.WriteEntryToDirectory(destDirectory, a)
|
||||
End If
|
||||
End While
|
||||
End Using
|
||||
End Using
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
15
UTS_Core/Database/Base/ColumnSchema.vb
Normal file
15
UTS_Core/Database/Base/ColumnSchema.vb
Normal file
@@ -0,0 +1,15 @@
|
||||
|
||||
Namespace Database.Base
|
||||
''' <summary>
|
||||
''' Contains the schema of a single DB column.
|
||||
''' </summary>
|
||||
Public Class ColumnSchema
|
||||
Public ColumnName As String
|
||||
Public ColumnType As String
|
||||
Public Length As Integer
|
||||
Public IsNullable As Boolean
|
||||
Public DefaultValue As String
|
||||
Public IsIdentity As Boolean
|
||||
Public IsCaseSensitivity As Boolean? = Nothing
|
||||
End Class
|
||||
End NameSpace
|
||||
297
UTS_Core/Database/Base/CommandHelpers.vb
Normal file
297
UTS_Core/Database/Base/CommandHelpers.vb
Normal file
@@ -0,0 +1,297 @@
|
||||
Imports System.Text
|
||||
|
||||
Namespace Database.Base
|
||||
|
||||
Public MustInherit Class CommandHelpers
|
||||
Public Overridable Function Search(param As SearchParams) As String
|
||||
Dim searchString As New StringBuilder
|
||||
|
||||
'基础查询
|
||||
searchString.Append("Select")
|
||||
searchString.Append(" ")
|
||||
searchString.Append($"{String.Join(",", param.SearchColNames)}")
|
||||
searchString.Append(" ")
|
||||
searchString.Append("From")
|
||||
searchString.Append(" ")
|
||||
searchString.Append($"`{param.TableName}`")
|
||||
|
||||
'筛选条件
|
||||
If param.SearchCondition IsNot Nothing Then
|
||||
If param.SearchCondition.Count > 0 Then
|
||||
searchString.Append(" ")
|
||||
searchString.Append("Where")
|
||||
For i As Integer = 0 To param.SearchCondition.Count - 1
|
||||
If i > 0 Then
|
||||
searchString.Append(" ")
|
||||
searchString.Append(param.SearchCondition(i).LogicPrevious.ToString())
|
||||
End If
|
||||
searchString.Append(param.SearchCondition(i).ToString())
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
'排序与排序方式
|
||||
If param.OrderType <> SearchParams.OrderTypeEnum.None Then
|
||||
searchString.Append($" Order By {param.OrderColName} {param.OrderType}")
|
||||
End If
|
||||
|
||||
'返回结果行数
|
||||
If param.Limit > -1 Then
|
||||
searchString.Append($" Limit {param.Limit}")
|
||||
End If
|
||||
|
||||
searchString.Append(";")
|
||||
Return searchString.ToString()
|
||||
End Function
|
||||
|
||||
|
||||
Public Overridable Function SearchAll(tableName As String) As String
|
||||
Return $"Select * FROM `{tableName}`;"
|
||||
End Function
|
||||
|
||||
Public Overridable Function SearchAll(tableName As String, condition As String) As String
|
||||
Return $"Select * FROM `{tableName}` WHERE {condition};"
|
||||
End Function
|
||||
|
||||
Public Overridable Function Search(columnName As List(Of String), tableName As String) As String
|
||||
Dim colNameString As New StringBuilder
|
||||
For i As Integer = 0 To columnName.Count - 1
|
||||
If i = 0 Then
|
||||
colNameString.Append($"`{columnName(i)}`")
|
||||
Else
|
||||
colNameString.Append($",`{columnName(i)}`")
|
||||
End If
|
||||
Next
|
||||
|
||||
Return $"Select {colNameString} FROM `{tableName}`;"
|
||||
End Function
|
||||
|
||||
Public Overridable Function Search(columnName As String, tableName As String) As String
|
||||
Return $"Select {columnName} FROM `{tableName}`;"
|
||||
End Function
|
||||
|
||||
Public Overridable Function Search(columnName As String, tableName As String, condition As String) As String
|
||||
Return $"Select {columnName} FROM `{tableName}` WHERE {condition};"
|
||||
End Function
|
||||
|
||||
Public Overridable Function Search(columnName As String, tableName As String, condition As String, limit As Integer) As String
|
||||
Return $"Select {columnName} FROM `{tableName}` WHERE {condition} Limit {limit};"
|
||||
End Function
|
||||
|
||||
Public Overridable Function SearchDistinct(columnName As String, tableName As String) As String
|
||||
Return $"Select Distinct {columnName} FROM `{tableName}`;"
|
||||
End Function
|
||||
|
||||
Public Overridable Function SearchDistinct(columnName As String, tableName As String, condition As String) As String
|
||||
Return $"Select Distinct {columnName} FROM `{tableName}` WHERE {condition};"
|
||||
End Function
|
||||
|
||||
Public Overridable Function SearchDescOrder(columnName As String, tableName As String, orderCol As String) As String
|
||||
Return $"Select {columnName} FROM `{tableName}` Order By {orderCol} Desc;"
|
||||
End Function
|
||||
|
||||
Public Overridable Function SearchDescOrder(columnName As String, tableName As String, orderCol As String, limit As Integer) As String
|
||||
Return $"Select {columnName} FROM `{tableName}` Order By {orderCol} Desc Limit {limit};"
|
||||
End Function
|
||||
|
||||
Public Overridable Function SearchDescOrder(columnName As String, ByVal tableName As String, ByVal condition As String, ByVal orderCol As String) As String
|
||||
Return $"Select {columnName} FROM `{tableName}` WHERE {condition} Order By `{orderCol}` Desc;"
|
||||
End Function
|
||||
|
||||
Public Overridable Function SearchDescOrder(columnName As String, ByVal tableName As String, ByVal condition As String, ByVal orderCol As String, limit As Integer) As String
|
||||
Return $"Select {columnName} FROM `{tableName}` WHERE {condition} Order By `{orderCol}` Desc Limit {limit};"
|
||||
End Function
|
||||
|
||||
Public Overridable Function SearchAscOrder(ByVal columnName As String, ByVal tableName As String, ByVal orderCol As String) As String
|
||||
Return $"Select {columnName} FROM `{tableName}` Order By {orderCol} Asc;"
|
||||
End Function
|
||||
|
||||
|
||||
Public Overridable Function SearchAscOrder(ByVal columnName As String, ByVal tableName As String, ByVal condition As String, ByVal orderCol As String) As String
|
||||
Return $"Select {columnName} FROM `{tableName}` WHERE {condition} Order By {orderCol} Asc;"
|
||||
End Function
|
||||
|
||||
Public Overridable Function SearchNullTable(tableName As String) As String
|
||||
Return $"Select * FROM `{tableName}` Where Limit 0;"
|
||||
End Function
|
||||
|
||||
|
||||
Public Overridable Function Insert(ByVal tableName As String, ByVal values As String) As String
|
||||
Return $"Insert into `{tableName}` Values ( {values} );"
|
||||
End Function
|
||||
|
||||
Public Overridable Function Insert(ByVal tableName As String, ByVal colNames As String, ByVal values As String) As String
|
||||
Return $"Insert into `{tableName}` ({colNames}) Values ( {values} );"
|
||||
End Function
|
||||
|
||||
Public Overridable Function Insert(tableName As String, dicNameValues As Dictionary(Of String, String)) As String
|
||||
Dim colNames As New StringBuilder
|
||||
Dim values As New StringBuilder
|
||||
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
|
||||
If colNames.Length = 0 Then
|
||||
colNames.Append($"`{keyValuePair.Key}`")
|
||||
values.Append($"'{keyValuePair.Value}'")
|
||||
Else
|
||||
colNames.Append($",`{keyValuePair.Key}`")
|
||||
values.Append($",'{keyValuePair.Value}'")
|
||||
End If
|
||||
Next
|
||||
Return Insert(tableName, colNames.ToString(), values.ToString())
|
||||
End Function
|
||||
|
||||
Public Overridable Function InsertByParameters(tableName As String, dicNameValues As Dictionary(Of String, String)) As String
|
||||
Dim colNames As New StringBuilder
|
||||
Dim values As New StringBuilder
|
||||
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
|
||||
If colNames.Length = 0 Then
|
||||
colNames.Append($"`{keyValuePair.Key}`")
|
||||
values.Append($"{keyValuePair.Value}")
|
||||
Else
|
||||
colNames.Append($",`{keyValuePair.Key}`")
|
||||
values.Append($",{keyValuePair.Value}")
|
||||
End If
|
||||
Next
|
||||
Return Insert(tableName, colNames.ToString(), values.ToString())
|
||||
End Function
|
||||
|
||||
|
||||
Public Overridable Function AddCol(ByVal tableName As String, ByVal colName As String, ByVal colType As String, Optional isNull As Boolean = True) As String
|
||||
Return $"Alter Table `{tableName}` Add `{colName}` {colType} {IIf(isNull, "Default Null", "Not Null")};"
|
||||
End Function
|
||||
|
||||
Public Overridable Function AddCol(ByVal tableName As String, colParam As DatabaseData) As String
|
||||
Dim sb As New StringBuilder
|
||||
sb.Append($"Alter Table `{tableName}` ")
|
||||
sb.Append("Add ")
|
||||
sb.Append(colParam.ToAddColString())
|
||||
Return sb.ToString()
|
||||
End Function
|
||||
|
||||
|
||||
Public Overridable Function AddCols(tableName As String, colList As List(Of DatabaseData)) As String
|
||||
Dim sb As New StringBuilder
|
||||
sb.Append($"Alter Table `{tableName}` ")
|
||||
sb.Append("Add ")
|
||||
sb.Append("( ")
|
||||
|
||||
sb.Append(colList(0).ToAddColString())
|
||||
For i As Integer = 1 To colList.Count - 1
|
||||
sb.Append($",{colList(i).ToAddColString()}")
|
||||
Next
|
||||
|
||||
sb.Append(");")
|
||||
|
||||
Return sb.ToString()
|
||||
End Function
|
||||
|
||||
|
||||
Public Overridable Function Update(ByVal tableName As String, ByVal destStr As String, ByVal condition As String) As String
|
||||
Return $"Update `{tableName}` Set {destStr} Where {condition};"
|
||||
End Function
|
||||
|
||||
Public Overridable Function Update(ByVal tableName As String, dicNameValues As Dictionary(Of String, String), ByVal condition As String) As String
|
||||
Dim destStr As New StringBuilder
|
||||
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
|
||||
If destStr.Length = 0 Then
|
||||
destStr.Append($"`{keyValuePair.Key}` = '{keyValuePair.Value}'")
|
||||
Else
|
||||
destStr.Append($",`{keyValuePair.Key}` = '{keyValuePair.Value}'")
|
||||
End If
|
||||
Next
|
||||
Return Update(tableName, destStr.ToString(), condition)
|
||||
End Function
|
||||
|
||||
Public Overridable Function Update(ByVal tableName As String, names() As String, values() As String, condition As String) As String
|
||||
Dim destStr As New StringBuilder
|
||||
If names.Length <> values.Length Then
|
||||
Throw New Exception("DBHelpers_Update:names.Length <> values.Length")
|
||||
End If
|
||||
|
||||
For i As Integer = 0 To names.Length - 1
|
||||
If i = 0 Then
|
||||
destStr.Append($"{names(i)} = '{values(i)}'")
|
||||
Else
|
||||
destStr.Append($",{names(i)} = '{values(i)}'")
|
||||
End If
|
||||
Next
|
||||
|
||||
Return Update(tableName, destStr.ToString(), condition)
|
||||
End Function
|
||||
|
||||
Public Overridable Function DeleteRows(ByVal tableName As String, ByVal condition As String) As String
|
||||
Return $"Delete From `{tableName}` Where {condition};"
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 清空数据表
|
||||
''' </summary>
|
||||
''' <param name="tableName">数据表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DeleteTable(ByVal tableName As String) As String
|
||||
Return $"Delete From `{tableName}`;"
|
||||
End Function
|
||||
|
||||
Public Overridable Function DropCol(ByVal tableName As String, ByVal colName As String) As String
|
||||
Return $"Alter Table `{tableName}` Drop Column `{colName}`;"
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 删除数据表
|
||||
''' </summary>
|
||||
''' <param name="tableName">数据表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DropTable(ByVal tableName As String) As String
|
||||
Return $"Drop Table `{tableName}`;"
|
||||
End Function
|
||||
|
||||
Public Overridable Function CreateTable(ByVal tableName As String, ByVal createStr As String) As String
|
||||
Return $"Create Table `{tableName}` ( {createStr} );"
|
||||
End Function
|
||||
|
||||
Public Overridable Function CreateTableWhenNotExists(tableName As String, createStr As String) As String
|
||||
Return $"Create Table if not exists `{tableName}` ( {createStr} );"
|
||||
End Function
|
||||
|
||||
|
||||
Public Overridable Function CreateLikeTable(tableName As String, baseTableName As String) As String
|
||||
Return $"create table `{tableName}` like `{baseTableName}`;"
|
||||
End Function
|
||||
|
||||
Public Overridable Function CreateLikeTableNotExists(tableName As String, baseTableName As String) As String
|
||||
Return $"create table if not exists `{tableName}` like `{baseTableName}`;"
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 创建表,同时复制基础表数据(不包含原表索引与主键)
|
||||
''' 若想复制表结构加数据,则先复制表结构创建表,再拷贝数据
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="baseTableName">基础表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function CreateCopyTable(tableName As String, baseTableName As String) As String
|
||||
Return $"create table `{tableName}` as select * from `{baseTableName}`;"
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 不存在表时即创建表,同时复制基础表数据(不包含原表索引与主键)
|
||||
''' 若想复制表结构加数据,则先复制表结构创建表,再拷贝数据
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="baseTableName">基础表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function CreateCopyTableNotExists(tableName As String, baseTableName As String) As String
|
||||
Return $"create table if not exists `{tableName}` as select * from `{baseTableName}`;"
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 复制基础表数据到新表中
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="baseTableName">基础表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function InsertCopyTable(tableName As String, baseTableName As String) As String
|
||||
Return $"insert into `{tableName}` select * from `{baseTableName}`;"
|
||||
End Function
|
||||
End Class
|
||||
End Namespace
|
||||
94
UTS_Core/Database/Base/DatabaseData.vb
Normal file
94
UTS_Core/Database/Base/DatabaseData.vb
Normal file
@@ -0,0 +1,94 @@
|
||||
Imports System.Text
|
||||
|
||||
Namespace Database.Base
|
||||
Public Class DatabaseData
|
||||
Enum TypeEnum
|
||||
[Bit]
|
||||
[Char]
|
||||
[Date]
|
||||
[DateTime]
|
||||
[Double]
|
||||
[Enum]
|
||||
[Float]
|
||||
[Int]
|
||||
[IntUnsigned]
|
||||
[Json]
|
||||
[Text]
|
||||
[Time]
|
||||
Varchar
|
||||
[Year]
|
||||
End Enum
|
||||
|
||||
''' <summary>
|
||||
''' 列名
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property ColumnName() As String
|
||||
|
||||
''' <summary>
|
||||
''' 当前值
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property Value() As String
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 默认值
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property DefaultValue() As String
|
||||
|
||||
''' <summary>
|
||||
''' 数据类型
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property DataType() As TypeEnum
|
||||
|
||||
''' <summary>
|
||||
''' 数据类型长度
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property DataTypeLength() As Integer
|
||||
|
||||
''' <summary>
|
||||
''' 是否允许为空
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property IsNull() As Boolean = True
|
||||
|
||||
''' <summary>
|
||||
''' 是否自动增长
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property IsAutoIncrement() As Boolean
|
||||
|
||||
''' <summary>
|
||||
''' 是否为主键
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property IsPrimaryKey() As Boolean
|
||||
|
||||
Public Function ToAddColString() As String
|
||||
Dim sb As New StringBuilder
|
||||
sb.Append($"`{ColumnName}`")
|
||||
|
||||
Select Case DataType
|
||||
Case TypeEnum.Char, TypeEnum.Varchar
|
||||
sb.Append($" {DataType}({DataTypeLength}) ")
|
||||
Case TypeEnum.Int
|
||||
sb.Append($" {DataType}")
|
||||
If IsAutoIncrement Then sb.Append($" AUTO_INCREMENT")
|
||||
Case Else
|
||||
sb.Append($" {DataType}")
|
||||
End Select
|
||||
|
||||
sb.Append(IIf(IsNull, " Default Null", " Not Null"))
|
||||
|
||||
If IsPrimaryKey Then
|
||||
sb.Append($" PRIMARY KEY")
|
||||
End If
|
||||
|
||||
Return sb.ToString()
|
||||
End Function
|
||||
End Class
|
||||
End Namespace
|
||||
12
UTS_Core/Database/Base/DatabaseSchema.vb
Normal file
12
UTS_Core/Database/Base/DatabaseSchema.vb
Normal file
@@ -0,0 +1,12 @@
|
||||
Imports System.Collections.Generic
|
||||
|
||||
Namespace Database.Base
|
||||
|
||||
''' <summary>
|
||||
''' Contains the entire database schema
|
||||
''' </summary>
|
||||
Public Class DatabaseSchema
|
||||
Public Tables As List(Of TableSchema) = New List(Of TableSchema)()
|
||||
Public Views As List(Of ViewSchema) = New List(Of ViewSchema)()
|
||||
End Class
|
||||
End NameSpace
|
||||
11
UTS_Core/Database/Base/ForeignKeySchema.vb
Normal file
11
UTS_Core/Database/Base/ForeignKeySchema.vb
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
Namespace Database.Base
|
||||
Public Class ForeignKeySchema
|
||||
Public TableName As String
|
||||
Public ColumnName As String
|
||||
Public ForeignTableName As String
|
||||
Public ForeignColumnName As String
|
||||
Public CascadeOnDelete As Boolean
|
||||
Public IsNullable As Boolean
|
||||
End Class
|
||||
End NameSpace
|
||||
16
UTS_Core/Database/Base/IndexSchema.vb
Normal file
16
UTS_Core/Database/Base/IndexSchema.vb
Normal file
@@ -0,0 +1,16 @@
|
||||
Imports System.Collections.Generic
|
||||
|
||||
Namespace Database.Base
|
||||
|
||||
|
||||
Public Class IndexSchema
|
||||
Public IndexName As String
|
||||
Public IsUnique As Boolean
|
||||
Public Columns As List(Of IndexColumn)
|
||||
End Class
|
||||
|
||||
Public Class IndexColumn
|
||||
Public ColumnName As String
|
||||
Public IsAscending As Boolean
|
||||
End Class
|
||||
End NameSpace
|
||||
7
UTS_Core/Database/Base/InsertParams.vb
Normal file
7
UTS_Core/Database/Base/InsertParams.vb
Normal file
@@ -0,0 +1,7 @@
|
||||
Namespace Database.Base
|
||||
Public Class InsertParams
|
||||
Public Property TableName() As String
|
||||
|
||||
Public Property InsertKeyValue As Dictionary(Of String, String)
|
||||
End Class
|
||||
End Namespace
|
||||
71
UTS_Core/Database/Base/SearchCondition.vb
Normal file
71
UTS_Core/Database/Base/SearchCondition.vb
Normal file
@@ -0,0 +1,71 @@
|
||||
Imports System.Text
|
||||
|
||||
Namespace Database.Base
|
||||
Public Class SearchCondition
|
||||
Enum ConditionType
|
||||
LessThan
|
||||
GreaterThen
|
||||
EqualTo
|
||||
LessThanOrEqualTo
|
||||
GreaterThenOrEqualTo
|
||||
End Enum
|
||||
|
||||
Enum LogicType
|
||||
[And]
|
||||
[Or]
|
||||
[Not]
|
||||
End Enum
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 判断列名
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property ColName() As String
|
||||
|
||||
''' <summary>
|
||||
''' 判断条件
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property Condition() As ConditionType = ConditionType.EqualTo
|
||||
|
||||
''' <summary>
|
||||
''' 判断值
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property ColValue() As String
|
||||
|
||||
''' <summary>
|
||||
''' 当前条件与上一个条件的逻辑关系
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property LogicPrevious() As LogicType = LogicType.And
|
||||
|
||||
''' <summary>
|
||||
''' 将当前条件转换为字符串,不支持将条件逻辑关系同时转换
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Overrides Function ToString() As String
|
||||
Dim stringBuilder As New StringBuilder
|
||||
stringBuilder.Append(" ")
|
||||
stringBuilder.Append(ColName)
|
||||
|
||||
Select Case Condition
|
||||
Case ConditionType.EqualTo
|
||||
stringBuilder.Append("=")
|
||||
Case ConditionType.LessThan
|
||||
stringBuilder.Append("<")
|
||||
Case ConditionType.LessThanOrEqualTo
|
||||
stringBuilder.Append("<=")
|
||||
Case ConditionType.GreaterThen
|
||||
stringBuilder.Append(">")
|
||||
Case ConditionType.GreaterThenOrEqualTo
|
||||
stringBuilder.Append(">=")
|
||||
End Select
|
||||
|
||||
stringBuilder.Append($"'{ColValue}'")
|
||||
|
||||
Return stringBuilder.ToString()
|
||||
End Function
|
||||
End Class
|
||||
End Namespace
|
||||
46
UTS_Core/Database/Base/SearchParams.vb
Normal file
46
UTS_Core/Database/Base/SearchParams.vb
Normal file
@@ -0,0 +1,46 @@
|
||||
Namespace Database.Base
|
||||
Public Class SearchParams
|
||||
Enum OrderTypeEnum
|
||||
None
|
||||
Desc
|
||||
Asc
|
||||
End Enum
|
||||
|
||||
''' <summary>
|
||||
''' 查询条件的表名
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property TableName() As String
|
||||
|
||||
''' <summary>
|
||||
''' 当IsSearchAllCols = False时,查询返回列名集合
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property SearchColNames() As String()
|
||||
|
||||
''' <summary>
|
||||
''' 查询的条件
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property SearchCondition() As List(Of SearchCondition)
|
||||
|
||||
''' <summary>
|
||||
''' 排序方式
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property OrderType As OrderTypeEnum = OrderTypeEnum.None
|
||||
|
||||
''' <summary>
|
||||
''' 但需要排序时排序列名
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property OrderColName() As String
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 从返回结果提取指定行的内容
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property Limit() As Integer = 0
|
||||
End Class
|
||||
End Namespace
|
||||
14
UTS_Core/Database/Base/TableSchema.vb
Normal file
14
UTS_Core/Database/Base/TableSchema.vb
Normal file
@@ -0,0 +1,14 @@
|
||||
Imports System.Collections.Generic
|
||||
|
||||
Namespace Database.Base
|
||||
|
||||
|
||||
Public Class TableSchema
|
||||
Public TableName As String
|
||||
Public TableSchemaName As String
|
||||
Public Columns As List(Of ColumnSchema)
|
||||
Public PrimaryKey As List(Of String)
|
||||
Public ForeignKeys As List(Of ForeignKeySchema)
|
||||
Public Indexes As List(Of IndexSchema)
|
||||
End Class
|
||||
End NameSpace
|
||||
71
UTS_Core/Database/Base/TriggerBuilder.vb
Normal file
71
UTS_Core/Database/Base/TriggerBuilder.vb
Normal file
@@ -0,0 +1,71 @@
|
||||
Imports System.Collections.Generic
|
||||
Imports System.Text
|
||||
|
||||
Namespace Database.Base
|
||||
|
||||
Public Module TriggerBuilder
|
||||
Public Function GetForeignKeyTriggers(ByVal dt As TableSchema) As IList(Of TriggerSchema)
|
||||
Dim result As IList(Of TriggerSchema) = New List(Of TriggerSchema)()
|
||||
For Each fks As ForeignKeySchema In dt.ForeignKeys
|
||||
result.Add(GenerateInsertTrigger(fks))
|
||||
result.Add(GenerateUpdateTrigger(fks))
|
||||
result.Add(GenerateDeleteTrigger(fks))
|
||||
Next
|
||||
Return result
|
||||
End Function
|
||||
|
||||
Private Function MakeTriggerName(ByVal fks As ForeignKeySchema, ByVal prefix As String) As String
|
||||
Return prefix & "_" & fks.TableName & "_" & fks.ColumnName & "_" & fks.ForeignTableName & "_" & fks.ForeignColumnName
|
||||
End Function
|
||||
|
||||
Public Function GenerateInsertTrigger(ByVal fks As ForeignKeySchema) As TriggerSchema
|
||||
Dim trigger As TriggerSchema = New TriggerSchema()
|
||||
trigger.Name = MakeTriggerName(fks, "fki")
|
||||
trigger.Type = TriggerType.Before
|
||||
trigger.Event = TriggerEvent.Insert
|
||||
trigger.Table = fks.TableName
|
||||
Dim nullString As String = ""
|
||||
|
||||
If fks.IsNullable Then
|
||||
nullString = " NEW." & fks.ColumnName & " IS NOT NULL AND"
|
||||
End If
|
||||
|
||||
trigger.Body = "SELECT RAISE(ROLLBACK, 'insert on table " & fks.TableName & " violates foreign key constraint " & trigger.Name & "')" & " WHERE" & nullString & " (SELECT " & fks.ForeignColumnName & " FROM " & fks.ForeignTableName & " WHERE " & fks.ForeignColumnName & " = NEW." & fks.ColumnName & ") IS NULL; "
|
||||
Return trigger
|
||||
End Function
|
||||
|
||||
Public Function GenerateUpdateTrigger(ByVal fks As ForeignKeySchema) As TriggerSchema
|
||||
Dim trigger As TriggerSchema = New TriggerSchema()
|
||||
trigger.Name = MakeTriggerName(fks, "fku")
|
||||
trigger.Type = TriggerType.Before
|
||||
trigger.Event = TriggerEvent.Update
|
||||
trigger.Table = fks.TableName
|
||||
Dim triggerName As String = trigger.Name
|
||||
Dim nullString As String = ""
|
||||
|
||||
If fks.IsNullable Then
|
||||
nullString = " NEW." & fks.ColumnName & " IS NOT NULL AND"
|
||||
End If
|
||||
|
||||
trigger.Body = "SELECT RAISE(ROLLBACK, 'update on table " & fks.TableName & " violates foreign key constraint " & triggerName & "')" & " WHERE" & nullString & " (SELECT " & fks.ForeignColumnName & " FROM " & fks.ForeignTableName & " WHERE " & fks.ForeignColumnName & " = NEW." & fks.ColumnName & ") IS NULL; "
|
||||
Return trigger
|
||||
End Function
|
||||
|
||||
Public Function GenerateDeleteTrigger(ByVal fks As ForeignKeySchema) As TriggerSchema
|
||||
Dim trigger As TriggerSchema = New TriggerSchema()
|
||||
trigger.Name = MakeTriggerName(fks, "fkd")
|
||||
trigger.Type = TriggerType.Before
|
||||
trigger.Event = TriggerEvent.Delete
|
||||
trigger.Table = fks.ForeignTableName
|
||||
Dim triggerName as String = trigger.Name
|
||||
|
||||
If Not fks.CascadeOnDelete Then
|
||||
trigger.Body = "SELECT RAISE(ROLLBACK, 'delete on table " & fks.ForeignTableName & " violates foreign key constraint " & triggerName & "')" & " WHERE (SELECT " & fks.ColumnName & " FROM " & fks.TableName & " WHERE " & fks.ColumnName & " = OLD." & fks.ForeignColumnName & ") IS NOT NULL; "
|
||||
Else
|
||||
trigger.Body = "DELETE FROM [" & fks.TableName & "] WHERE " & fks.ColumnName & " = OLD." & fks.ForeignColumnName & "; "
|
||||
End If
|
||||
|
||||
Return trigger
|
||||
End Function
|
||||
End Module
|
||||
End NameSpace
|
||||
20
UTS_Core/Database/Base/TriggerSchema.vb
Normal file
20
UTS_Core/Database/Base/TriggerSchema.vb
Normal file
@@ -0,0 +1,20 @@
|
||||
Namespace Database.Base
|
||||
Public Enum TriggerEvent
|
||||
Delete
|
||||
Update
|
||||
Insert
|
||||
End Enum
|
||||
|
||||
Public Enum TriggerType
|
||||
After
|
||||
Before
|
||||
End Enum
|
||||
|
||||
Public Class TriggerSchema
|
||||
Public Name As String
|
||||
Public [Event] As TriggerEvent
|
||||
Public Type As TriggerType
|
||||
Public Body As String
|
||||
Public Table As String
|
||||
End Class
|
||||
End Namespace
|
||||
17
UTS_Core/Database/Base/ViewSchema.vb
Normal file
17
UTS_Core/Database/Base/ViewSchema.vb
Normal file
@@ -0,0 +1,17 @@
|
||||
|
||||
Namespace Database.Base
|
||||
''' <summary>
|
||||
''' Describes a single view schema
|
||||
''' </summary>
|
||||
Public Class ViewSchema
|
||||
''' <summary>
|
||||
''' Contains the view name
|
||||
''' </summary>
|
||||
Public ViewName As String
|
||||
|
||||
''' <summary>
|
||||
''' Contains the view SQL statement
|
||||
''' </summary>
|
||||
Public ViewSql As String
|
||||
End Class
|
||||
End NameSpace
|
||||
744
UTS_Core/Database/DbCmdHelper.vb
Normal file
744
UTS_Core/Database/DbCmdHelper.vb
Normal file
@@ -0,0 +1,744 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database.Mssql
|
||||
Imports UTS_Core.Database.Mysql
|
||||
Imports UTS_Core.Database.Sqlite
|
||||
|
||||
Namespace Database
|
||||
''' <summary>
|
||||
''' 数据库语句助手
|
||||
''' 时间:2020-12-21
|
||||
''' 作者:ML
|
||||
''' 版本:1.0
|
||||
'''
|
||||
''' 注意:添加一条数据库帮助语句时,需要考虑Mysql/Sqlite/Mssql等数据库是否支持命令,不支持则需要在对应帮助类中重写该帮助语句
|
||||
''' 注意:Sqlite数据库与大多数据库不相同,DB开头数据库语句大多不适用
|
||||
'''
|
||||
''' </summary>
|
||||
Public MustInherit Class DbCmdHelper
|
||||
Protected FiledSuffix As Char
|
||||
Protected FiledPrefix As Char
|
||||
|
||||
Public Shared Function CreateCmdHelper(type As DbExecutor.DbTypeEnum) As DbCmdHelper
|
||||
Select Case type
|
||||
Case DbExecutor.DbTypeEnum.Mysql
|
||||
Return New MysqlCmdHelper()
|
||||
Case DbExecutor.DbTypeEnum.Mssql
|
||||
Return New MssqlCmdHelper()
|
||||
Case DbExecutor.DbTypeEnum.Sqlite
|
||||
Return New SqliteCmdHelper()
|
||||
Case Else
|
||||
Throw New Exception($"CreateCmdHelper :Unknown Type {type}")
|
||||
End Select
|
||||
End Function
|
||||
|
||||
|
||||
#Region "访问单数据库连接"
|
||||
''' <summary>
|
||||
''' 查询指定数据表符合条件的所有数据
|
||||
''' </summary>
|
||||
''' <param name="tableName">指定表名</param>
|
||||
''' <param name="condition">查询条件,</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function SearchAll(tableName As String, Optional condition As String = "") As String
|
||||
If String.IsNullOrWhiteSpace(condition) Then
|
||||
Return $"Select * FROM {FiledSuffix}{tableName}{FiledPrefix};"
|
||||
Else
|
||||
Return $"Select * FROM {FiledSuffix}{tableName}{FiledPrefix} WHERE {condition};"
|
||||
End If
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 查询表符合条件的所有指定列的数据
|
||||
''' </summary>
|
||||
''' <param name="columnName">列名集合,需要返回多列时用','符号分隔列名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="condition">条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function Search(columnName As String, tableName As String, Optional condition As String = "") As String
|
||||
If String.IsNullOrWhiteSpace(condition) Then
|
||||
Return $"Select {columnName} FROM {FiledSuffix}{tableName}{FiledPrefix};"
|
||||
Else
|
||||
Return $"Select {columnName} FROM {FiledSuffix}{tableName}{FiledPrefix} WHERE {condition};"
|
||||
End If
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 查询表符合条件的所有指定列的数据
|
||||
''' </summary>
|
||||
''' <param name="columnName">表名</param>
|
||||
''' <param name="tableName">条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function Search(columnName As List(Of String), tableName As String, Optional condition As String = "") As String
|
||||
Dim colNameString As New StringBuilder
|
||||
For i As Integer = 0 To columnName.Count - 1
|
||||
If i = 0 Then
|
||||
colNameString.Append($"{FiledSuffix}{columnName(i)}{FiledPrefix}")
|
||||
Else
|
||||
colNameString.Append($",{FiledSuffix}{columnName(i)}{FiledPrefix}")
|
||||
End If
|
||||
Next
|
||||
|
||||
If String.IsNullOrWhiteSpace(condition) Then
|
||||
Return $"Select {colNameString} FROM {FiledSuffix}{tableName}{FiledPrefix};"
|
||||
Else
|
||||
Return $"Select {colNameString} FROM {FiledSuffix}{tableName}{FiledPrefix} Where {condition};"
|
||||
End If
|
||||
End Function
|
||||
|
||||
Public Overridable Function SearchOrder(columnName As List(Of String), tableName As String, Optional orderString As String = "") As String
|
||||
Dim colNameString As New StringBuilder
|
||||
For i As Integer = 0 To columnName.Count - 1
|
||||
If i = 0 Then
|
||||
colNameString.Append($"{FiledSuffix}{columnName(i)}{FiledPrefix}")
|
||||
Else
|
||||
colNameString.Append($",{FiledSuffix}{columnName(i)}{FiledPrefix}")
|
||||
End If
|
||||
Next
|
||||
|
||||
If String.IsNullOrWhiteSpace(orderString) Then
|
||||
Return $"Select {colNameString} FROM {FiledSuffix}{tableName}{FiledPrefix};"
|
||||
Else
|
||||
Return $"Select {colNameString} FROM {FiledSuffix}{tableName}{FiledPrefix} {orderString};"
|
||||
End If
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 查询指定表包含的内容行数
|
||||
''' </summary>
|
||||
''' <param name="tableName">数据表名</param>
|
||||
''' <param name="condition">查询条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function SearchCount(tableName As String, Optional condition As String = "") As String
|
||||
Return Search("count(*)", tableName, condition)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 查询指定数据表的信息
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function SearchTableInfo(tableName As String) As String
|
||||
Return $"Select * from information_schema.tables where table_name = '{tableName}';"
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 查询指定数据表是否存在的信息,返回查询当前表在数据库中存在的数量
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function SearchTableExists(tableName As String) As String
|
||||
Return $"Select count(*) from information_schema.tables where table_name = '{tableName}';"
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 数据表插入一行数据
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="colNames">列名字符串</param>
|
||||
''' <param name="values">列值字符串</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function Insert(tableName As String, colNames As String, values As String) As String
|
||||
Return $"Insert into {FiledSuffix}{tableName}{FiledPrefix} ({colNames}) Values ( {values} );"
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 数据表插入一行数据
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="dicNameValues">列名与列值键值对</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function Insert(tableName As String, dicNameValues As Dictionary(Of String, String)) As String
|
||||
Dim colNames As New StringBuilder
|
||||
Dim values As New StringBuilder
|
||||
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
|
||||
If colNames.Length = 0 Then
|
||||
colNames.Append($"{FiledSuffix}{keyValuePair.Key}{FiledPrefix}")
|
||||
values.Append($"'{keyValuePair.Value}'")
|
||||
Else
|
||||
colNames.Append($",{FiledSuffix}{keyValuePair.Key}{FiledPrefix}")
|
||||
values.Append($",'{keyValuePair.Value}'")
|
||||
End If
|
||||
Next
|
||||
Return Insert(tableName, colNames.ToString(), values.ToString())
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 数据表插入一行,通过命令参数方式执行时使用
|
||||
''' </summary>
|
||||
''' <param name="tableName"></param>
|
||||
''' <param name="dicNameValues"></param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function InsertParam(tableName As String, dicNameValues As Dictionary(Of String, String)) As String
|
||||
Dim colNames As New StringBuilder
|
||||
Dim values As New StringBuilder
|
||||
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
|
||||
If colNames.Length = 0 Then
|
||||
colNames.Append($"{FiledSuffix}{keyValuePair.Key}{FiledPrefix}")
|
||||
values.Append($"{keyValuePair.Value}")
|
||||
Else
|
||||
colNames.Append($",{FiledSuffix}{keyValuePair.Key}{FiledPrefix}")
|
||||
values.Append($",{keyValuePair.Value}")
|
||||
End If
|
||||
Next
|
||||
Return Insert(tableName, colNames.ToString(), values.ToString())
|
||||
End Function
|
||||
Public Overridable Function InsertParam(dbnema As String, tableName As String, dicNameValues As Dictionary(Of String, String)) As String
|
||||
Dim colNames As New StringBuilder
|
||||
Dim values As New StringBuilder
|
||||
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
|
||||
If colNames.Length = 0 Then
|
||||
colNames.Append($"{FiledSuffix}{keyValuePair.Key}{FiledPrefix}")
|
||||
values.Append($"'{keyValuePair.Value}'")
|
||||
Else
|
||||
colNames.Append($",{FiledSuffix}{keyValuePair.Key}{FiledPrefix}")
|
||||
values.Append($",'{keyValuePair.Value}'")
|
||||
End If
|
||||
Next
|
||||
tableName = $"{dbnema}`.`{tableName}"
|
||||
Return Insert(tableName, colNames.ToString(), values.ToString())
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 数据表插入一行,通过命令参数方式执行时使用,参数名由@{ColName}
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="colNames">字段列表</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function InsertParam(tableName As String, colNames As List(Of String)) As String
|
||||
Dim colNameString As New StringBuilder
|
||||
Dim values As New StringBuilder
|
||||
For Each colName As String In colNames
|
||||
If colNameString.Length = 0 Then
|
||||
colNameString.Append($"{FiledSuffix}{colName}{FiledPrefix}")
|
||||
values.Append($"@{colName}")
|
||||
Else
|
||||
colNameString.Append($",{FiledSuffix}{colName}{FiledPrefix}")
|
||||
values.Append($",@{colName}")
|
||||
End If
|
||||
Next
|
||||
Return Insert(tableName, colNameString.ToString(), values.ToString())
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 更新指定表数据
|
||||
''' </summary>
|
||||
''' <param name="tableName">指定表名</param>
|
||||
''' <param name="destStr">更新字符串</param>
|
||||
''' <param name="condition"></param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function Update(tableName As String, destStr As String, condition As String) As String
|
||||
Return $"Update {FiledSuffix}{tableName}{FiledPrefix} Set {destStr} Where {condition};"
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 更新指定表数据
|
||||
''' </summary>
|
||||
''' <param name="tableName">指定表名</param>
|
||||
''' <param name="dicNameValues">更新列名与列值键值对</param>
|
||||
''' <param name="condition">更新列索引条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function Update(tableName As String, dicNameValues As Dictionary(Of String, String), condition As String) As String
|
||||
Dim destStr As New StringBuilder
|
||||
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
|
||||
If destStr.Length = 0 Then
|
||||
destStr.Append($"{FiledSuffix}{keyValuePair.Key}{FiledPrefix} = '{keyValuePair.Value}'")
|
||||
Else
|
||||
destStr.Append($",{FiledSuffix}{keyValuePair.Key}{FiledPrefix} = '{keyValuePair.Value}'")
|
||||
End If
|
||||
Next
|
||||
Return Update(tableName, destStr.ToString(), condition)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 更新指定数据库中指定表数据,参数名由@{ColName}
|
||||
''' </summary>
|
||||
''' <param name="tableName">指定表名</param>
|
||||
''' <param name="colNames">更新列名的集合</param>
|
||||
''' <param name="condition">更新列索引条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function UpdateParam(tableName As String, colNames As List(Of String), condition As String) As String
|
||||
Dim destStr As New StringBuilder
|
||||
For Each colName As String In colNames
|
||||
If destStr.Length = 0 Then
|
||||
destStr.Append($"{FiledSuffix}{colName}{FiledPrefix} = @{colName}")
|
||||
Else
|
||||
destStr.Append($",{FiledSuffix}{colName}{FiledPrefix} = @{colName}")
|
||||
End If
|
||||
Next
|
||||
Return Update(tableName, destStr.ToString(), condition)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 指定数据表增加一列数据
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="colName">列名</param>
|
||||
''' <param name="colType">列类型</param>
|
||||
''' <param name="isNull">是否允许为空</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function AddCol(tableName As String, colName As String, colType As String, Optional isNull As Boolean = True) As String
|
||||
Return $"Alter Table {FiledSuffix}{tableName}{FiledPrefix} Add {FiledSuffix}{colName}{FiledPrefix} {colType} {IIf(isNull, "Default Null", "Not Null")};"
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 数据表删除一列数据
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="colName">需要删除的列名,仅一列</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DropCol(tableName As String, colName As String) As String
|
||||
Return $"Alter Table {FiledSuffix}{tableName}{FiledPrefix} Drop Column {FiledSuffix}{colName}{FiledPrefix};"
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 删除指定表多行数据
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="condition">条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DeleteRows(tableName As String, condition As String) As String
|
||||
Return $"Delete From {FiledSuffix}{tableName}{FiledPrefix} Where {condition};"
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 创建数据表
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="createStr">创建表的列信息字符串</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function CreateTable(tableName As String, createStr As String) As String
|
||||
Return $"Create Table {FiledSuffix}{tableName}{FiledPrefix} ( {createStr} );"
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 创建数据表,如果存在则不创建
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="createStr">创建表的列信息字符串</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function CreateTableWhenNotExists(tableName As String, createStr As String) As String
|
||||
Return $"Create Table if not exists {FiledSuffix}{tableName}{FiledPrefix} ( {createStr} );"
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 清空数据表,表依旧存在
|
||||
''' </summary>
|
||||
''' <param name="tableName">数据表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DeleteTable(tableName As String) As String
|
||||
Return $"Delete From {FiledSuffix}{tableName}{FiledPrefix};"
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 删除数据表
|
||||
''' </summary>
|
||||
''' <param name="tableName">数据表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DropTable(tableName As String) As String
|
||||
Return $"Drop Table {FiledSuffix}{tableName}{FiledPrefix};"
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 删除数据表
|
||||
''' </summary>
|
||||
''' <param name="tableName">数据表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DropTableWhenExists(tableName As String) As String
|
||||
Return $"Drop Table If Exists {FiledSuffix}{tableName}{FiledPrefix};"
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
|
||||
#Region "访问多数据库连接"
|
||||
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 查询指定数据库中指定数据表符合条件的所有指定列的数据
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="ColsName">列名集合,需要返回多列时用','符号分隔列名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="condition">条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbSearch(dbName As String, colsName As String, tableName As String, Optional condition As String = "") As String
|
||||
Dim cmdText As New StringBuilder
|
||||
cmdText.Append($"Select {colsName} From ")
|
||||
|
||||
If String.IsNullOrEmpty(dbName) = False Then
|
||||
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
|
||||
End If
|
||||
|
||||
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
|
||||
|
||||
If String.IsNullOrWhiteSpace(condition) = False Then
|
||||
cmdText.Append($" WHERE {condition}")
|
||||
End If
|
||||
|
||||
cmdText.Append($";")
|
||||
Return cmdText.ToString()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 查询指定数据库中指定数据表符合条件的所有指定列的去重数据
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="ColsName">列名集合,需要返回多列时用','符号分隔列名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="condition">条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbDistinctSearch(dbName As String, colsName As String, tableName As String, Optional condition As String = "") As String
|
||||
Dim cmdText As New StringBuilder
|
||||
cmdText.Append($"Select Distinct {colsName} From ")
|
||||
|
||||
If String.IsNullOrEmpty(dbName) = False Then
|
||||
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
|
||||
End If
|
||||
|
||||
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
|
||||
|
||||
If String.IsNullOrWhiteSpace(condition) = False Then
|
||||
cmdText.Append($" WHERE {condition}")
|
||||
End If
|
||||
|
||||
cmdText.Append($";")
|
||||
Return cmdText.ToString()
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 查询指定数据库中指定数据表符合条件的所有指定列的数据
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="columnName">表名</param>
|
||||
''' <param name="tableName">条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbSearch(dbName As String, columnName As List(Of String), tableName As String, Optional condition As String = "") As String
|
||||
Dim colNameString As New StringBuilder
|
||||
For i As Integer = 0 To columnName.Count - 1
|
||||
If i = 0 Then
|
||||
colNameString.Append($"{FiledSuffix}{columnName(i)}{FiledPrefix}")
|
||||
Else
|
||||
colNameString.Append($",{FiledSuffix}{columnName(i)}{FiledPrefix}")
|
||||
End If
|
||||
Next
|
||||
|
||||
Return DbSearch(dbName, colNameString.ToString(), tableName, condition)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 查询指定表包含的内容行数
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">数据表名</param>
|
||||
''' <param name="condition">查询条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbSearchCount(dbName As String, tableName As String, Optional condition As String = "") As String
|
||||
Return DbSearch(dbName, "count(*)", tableName, condition)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 查询指定数据库中指定数据表符合条件的所有数据
|
||||
'''
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">数据表名</param>
|
||||
''' <param name="condition">查询条件(可选)</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbSearchAll(dbName As String, tableName As String, Optional condition As String = "") As String
|
||||
Return DbSearch(dbName, "*", tableName, condition)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 查询指定数据库中指定数据表的信息
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbSearchTableInfo(dbName As String, tableName As String) As String
|
||||
Return DbSearch("", "*", "information_schema.tables", "table_schema = '{dbName}' and table_name = '{tableName}'")
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 查询指定数据表是否存在的信息,返回查询当前表在指定数据库中存在的数量
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbSearchTableExists(dbName As String, tableName As String) As String
|
||||
Return DbSearch("", "count(*)", "information_schema.tables", "table_schema = '{dbName}' and table_name = '{tableName}'")
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 指定数据库中数据表插入一行数据
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="colNames">列名字符串</param>
|
||||
''' <param name="values">列值字符串</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbInsert(dbName As String, tableName As String, colNames As String, values As String) As String
|
||||
Dim cmdText As New StringBuilder
|
||||
cmdText.Append($"Insert into ")
|
||||
If String.IsNullOrEmpty(dbName) = False Then
|
||||
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
|
||||
End If
|
||||
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
|
||||
cmdText.Append($" ({colNames}) Values ( {values} );")
|
||||
Return cmdText.ToString()
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 指定数据库中数据表插入一行数据
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="dicNameValues">列名与列值键值对</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbInsert(dbName As String, tableName As String, dicNameValues As Dictionary(Of String, String)) As String
|
||||
Dim colNames As New StringBuilder
|
||||
Dim values As New StringBuilder
|
||||
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
|
||||
If colNames.Length = 0 Then
|
||||
colNames.Append($"{FiledSuffix}{keyValuePair.Key}{FiledPrefix}")
|
||||
values.Append($"'{keyValuePair.Value}'")
|
||||
Else
|
||||
colNames.Append($",{FiledSuffix}{keyValuePair.Key}{FiledPrefix}")
|
||||
values.Append($",'{keyValuePair.Value}'")
|
||||
End If
|
||||
Next
|
||||
|
||||
Return DbInsert(dbName, tableName, colNames.ToString(), values.ToString())
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 指定数据库中数据表插入一行,通过命令参数方式执行时使用,参数名由@{ColName}
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName"></param>
|
||||
''' <param name="colNames">需要插入列名的集合</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbInsertParam(dbName As String, tableName As String, colNames As List(Of String)) As String
|
||||
Dim colNameBuilder As New StringBuilder
|
||||
Dim valueBuilder As New StringBuilder
|
||||
For Each colName As String In colNames
|
||||
If colNameBuilder.Length = 0 Then
|
||||
colNameBuilder.Append($"{FiledSuffix}{colName}{FiledPrefix}")
|
||||
valueBuilder.Append($"@{colName}")
|
||||
Else
|
||||
colNameBuilder.Append($",{FiledSuffix}{colName}{FiledPrefix}")
|
||||
valueBuilder.Append($",@{colName}")
|
||||
End If
|
||||
Next
|
||||
'insert into dbName.tablename (1,2,3) value (@1,@2,@3)
|
||||
Return DbInsert(dbName, tableName, colNameBuilder.ToString(), valueBuilder.ToString())
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 更新指定数据库中指定表数据
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">指定表名</param>
|
||||
''' <param name="destStr">更新字符串</param>
|
||||
''' <param name="condition"></param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbUpdate(dbName As String, tableName As String, destStr As String, condition As String) As String
|
||||
Dim cmdText As New StringBuilder
|
||||
cmdText.Append($"Update ")
|
||||
If String.IsNullOrEmpty(dbName) = False Then
|
||||
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
|
||||
End If
|
||||
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
|
||||
cmdText.Append($" Set {destStr} Where {condition};")
|
||||
Return cmdText.ToString()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 更新指定数据库中指定表数据,参数名由@{ColName}
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">指定表名</param>
|
||||
''' <param name="colNames">更新列名的集合</param>
|
||||
''' <param name="condition">更新列索引条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbUpdateParam(dbName As String, tableName As String, colNames As List(Of String), condition As String) As String
|
||||
Dim destStr As New StringBuilder
|
||||
For Each colName As String In colNames
|
||||
If destStr.Length = 0 Then
|
||||
destStr.Append($"{FiledSuffix}{colName}{FiledPrefix} = @{colName}")
|
||||
Else
|
||||
destStr.Append($",{FiledSuffix}{colName}{FiledPrefix} = @{colName}")
|
||||
End If
|
||||
Next
|
||||
Return DbUpdate(dbName, tableName, destStr.ToString(), condition)
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 更新指定数据库中指定表数据
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">指定表名</param>
|
||||
''' <param name="filedDictionary">更新列名与列值键值对</param>
|
||||
''' <param name="condition">更新列索引条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbUpdate(dbName As String, tableName As String, filedDictionary As Dictionary(Of String, String), condition As String) As String
|
||||
Dim destStr As New StringBuilder
|
||||
For Each filed As KeyValuePair(Of String, String) In filedDictionary
|
||||
If destStr.Length = 0 Then
|
||||
destStr.Append($"{FiledSuffix}{filed.Key}{FiledPrefix} = '{filed.Value}'")
|
||||
Else
|
||||
destStr.Append($",{FiledSuffix}{filed.Key}{FiledPrefix} = '{filed.Value}'")
|
||||
End If
|
||||
Next
|
||||
Return DbUpdate(dbName, tableName, destStr.ToString(), condition)
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 指定数据库中指定数据表增加一列数据
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="colName">列名</param>
|
||||
''' <param name="colType">列类型</param>
|
||||
''' <param name="isNull">是否允许为空</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbAddCol(dbName As String, tableName As String, colName As String, colType As String, Optional isNull As Boolean = True) As String
|
||||
Dim cmdText As New StringBuilder
|
||||
cmdText.Append($"Alter Table ")
|
||||
If String.IsNullOrEmpty(dbName) = False Then
|
||||
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
|
||||
End If
|
||||
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
|
||||
cmdText.Append($" Add {FiledSuffix}{colName}{FiledPrefix} {colType} {IIf(isNull, "Default Null", "Not Null")};")
|
||||
|
||||
Return cmdText.ToString()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 指定数据库中数据表删除一列数据
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="colName">需要删除的列名,仅一列</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbDropCol(dbName As String, tableName As String, colName As String) As String
|
||||
Dim cmdText As New StringBuilder
|
||||
cmdText.Append($"Alter Table ")
|
||||
If String.IsNullOrEmpty(dbName) = False Then
|
||||
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
|
||||
End If
|
||||
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
|
||||
cmdText.Append($" Drop Column {FiledSuffix}{colName}{FiledPrefix};")
|
||||
|
||||
Return cmdText.ToString()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 指定数据库中指定表删除多行数据
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="condition">条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbDeleteRows(dbName As String, tableName As String, condition As String) As String
|
||||
Dim cmdText As New StringBuilder
|
||||
cmdText.Append($"Delete From ")
|
||||
If String.IsNullOrEmpty(dbName) = False Then
|
||||
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
|
||||
End If
|
||||
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
|
||||
cmdText.Append($" Where {condition};")
|
||||
|
||||
Return cmdText.ToString()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 指定数据库中创建数据表
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="createStr">创建表的列信息字符串</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbCreateTable(dbName As String, tableName As String, createStr As String) As String
|
||||
Dim cmdText As New StringBuilder
|
||||
cmdText.Append($"Create Table ")
|
||||
If String.IsNullOrEmpty(dbName) = False Then
|
||||
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
|
||||
End If
|
||||
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
|
||||
cmdText.Append($" ( {createStr} );")
|
||||
|
||||
Return cmdText.ToString()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 指定数据库中创建数据表,如果存在则不创建
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="createStr">创建表的列信息字符串</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbCreateTableWhenNotExists(dbName As String, tableName As String, createStr As String) As String
|
||||
Dim cmdText As New StringBuilder
|
||||
cmdText.Append($"Create Table if not exists ")
|
||||
If String.IsNullOrEmpty(dbName) = False Then
|
||||
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
|
||||
End If
|
||||
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
|
||||
cmdText.Append($" ( {createStr} );")
|
||||
|
||||
Return cmdText.ToString()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 清空指定数据库中数据表,表依旧存在
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">数据表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbDeleteTable(dbName As String, tableName As String) As String
|
||||
Dim cmdText As New StringBuilder
|
||||
cmdText.Append($"Delete From ")
|
||||
If String.IsNullOrEmpty(dbName) = False Then
|
||||
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
|
||||
End If
|
||||
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
|
||||
cmdText.Append($";")
|
||||
|
||||
Return cmdText.ToString()
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 删除指定数据库中数据表
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">数据表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbDropTable(dbName As String, tableName As String) As String
|
||||
Dim cmdText As New StringBuilder
|
||||
cmdText.Append($"Drop Table ")
|
||||
If String.IsNullOrEmpty(dbName) = False Then
|
||||
cmdText.Append($"{FiledSuffix}{dbName}{FiledPrefix}.")
|
||||
End If
|
||||
cmdText.Append($"{FiledSuffix}{tableName}{FiledPrefix}")
|
||||
cmdText.Append($";")
|
||||
|
||||
Return cmdText.ToString()
|
||||
End Function
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
703
UTS_Core/Database/DbCmdHelper_20211102_修改字段修饰符前.vb
Normal file
703
UTS_Core/Database/DbCmdHelper_20211102_修改字段修饰符前.vb
Normal file
@@ -0,0 +1,703 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database.Mssql
|
||||
Imports UTS_Core.Database.Mysql
|
||||
Imports UTS_Core.Database.Sqlite
|
||||
|
||||
Namespace Database
|
||||
''' <summary>
|
||||
''' 数据库语句助手
|
||||
''' 时间:2020-12-21
|
||||
''' 作者:ML
|
||||
''' 版本:1.0
|
||||
'''
|
||||
''' 注意:添加一条数据库帮助语句时,需要考虑Mysql/Sqlite/Mssql等数据库是否支持命令,不支持则需要在对应帮助类中重写该帮助语句
|
||||
''' 注意:Sqlite数据库与大多数据库不相同,DB开头数据库语句大多不适用
|
||||
'''
|
||||
''' </summary>
|
||||
Public MustInherit Class DbCmdHelper
|
||||
Protected FiledSuffix As Char
|
||||
Protected FiledPrefix As Char
|
||||
|
||||
Public Shared Function CreateCmdHelper(type As DbExecutor.DbTypeEnum) As DbCmdHelper
|
||||
Select Case type
|
||||
Case DbExecutor.DbTypeEnum.Mysql
|
||||
Return New MysqlCmdHelper()
|
||||
Case DbExecutor.DbTypeEnum.Mssql
|
||||
Return New MssqlCmdHelper()
|
||||
Case DbExecutor.DbTypeEnum.Sqlite
|
||||
Return New SqliteCmdHelper()
|
||||
Case Else
|
||||
Throw New Exception($"CreateCmdHelper :Unknown Type {type}")
|
||||
End Select
|
||||
End Function
|
||||
|
||||
|
||||
#Region "访问单数据库连接"
|
||||
''' <summary>
|
||||
''' 查询指定数据表符合条件的所有数据
|
||||
''' </summary>
|
||||
''' <param name="tableName">指定表名</param>
|
||||
''' <param name="condition">查询条件,</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function SearchAll(tableName As String, Optional condition As String = "") As String
|
||||
If String.IsNullOrWhiteSpace(condition) Then
|
||||
Return $"Select * FROM `{tableName}`;"
|
||||
Else
|
||||
Return $"Select * FROM `{tableName}` WHERE {condition};"
|
||||
End If
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 查询表符合条件的所有指定列的数据
|
||||
''' </summary>
|
||||
''' <param name="columnName">列名集合,需要返回多列时用','符号分隔列名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="condition">条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function Search(columnName As String, tableName As String, Optional condition As String = "") As String
|
||||
If String.IsNullOrWhiteSpace(condition) Then
|
||||
Return $"Select {columnName} FROM `{tableName}`;"
|
||||
Else
|
||||
Return $"Select {columnName} FROM `{tableName}` WHERE {condition};"
|
||||
End If
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 查询表符合条件的所有指定列的数据
|
||||
''' </summary>
|
||||
''' <param name="columnName">表名</param>
|
||||
''' <param name="tableName">条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function Search(columnName As List(Of String), tableName As String, Optional condition As String = "") As String
|
||||
Dim colNameString As New StringBuilder
|
||||
For i As Integer = 0 To columnName.Count - 1
|
||||
If i = 0 Then
|
||||
colNameString.Append($"`{columnName(i)}`")
|
||||
Else
|
||||
colNameString.Append($",`{columnName(i)}`")
|
||||
End If
|
||||
Next
|
||||
|
||||
If String.IsNullOrWhiteSpace(condition) Then
|
||||
Return $"Select {colNameString} FROM `{tableName}`;"
|
||||
Else
|
||||
Return $"Select {colNameString} FROM `{tableName}` Where {condition};"
|
||||
End If
|
||||
End Function
|
||||
|
||||
Public Overridable Function SearchOrder(columnName As List(Of String), tableName As String, Optional orderString As String = "") As String
|
||||
Dim colNameString As New StringBuilder
|
||||
For i As Integer = 0 To columnName.Count - 1
|
||||
If i = 0 Then
|
||||
colNameString.Append($"`{columnName(i)}`")
|
||||
Else
|
||||
colNameString.Append($",`{columnName(i)}`")
|
||||
End If
|
||||
Next
|
||||
|
||||
If String.IsNullOrWhiteSpace(orderString) Then
|
||||
Return $"Select {colNameString} FROM `{tableName}`;"
|
||||
Else
|
||||
Return $"Select {colNameString} FROM `{tableName}` {orderString};"
|
||||
End If
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 查询指定表包含的内容行数
|
||||
''' </summary>
|
||||
''' <param name="tableName">数据表名</param>
|
||||
''' <param name="condition">查询条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function SearchCount(tableName As String, Optional condition As String = "") As String
|
||||
Return Search("count(*)", tableName, condition)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 查询指定数据表的信息
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function SearchTableInfo(tableName As String) As String
|
||||
Return $"Select * from information_schema.tables where table_name = '{tableName}';"
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 查询指定数据表是否存在的信息,返回查询当前表在数据库中存在的数量
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function SearchTableExists(tableName As String) As String
|
||||
Return $"Select count(*) from information_schema.tables where table_name = '{tableName}';"
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 数据表插入一行数据
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="colNames">列名字符串</param>
|
||||
''' <param name="values">列值字符串</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function Insert(tableName As String, colNames As String, values As String) As String
|
||||
Return $"Insert into `{tableName}` ({colNames}) Values ( {values} );"
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 数据表插入一行数据
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="dicNameValues">列名与列值键值对</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function Insert(tableName As String, dicNameValues As Dictionary(Of String, String)) As String
|
||||
Dim colNames As New StringBuilder
|
||||
Dim values As New StringBuilder
|
||||
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
|
||||
If colNames.Length = 0 Then
|
||||
colNames.Append($"`{keyValuePair.Key}`")
|
||||
values.Append($"'{keyValuePair.Value}'")
|
||||
Else
|
||||
colNames.Append($",`{keyValuePair.Key}`")
|
||||
values.Append($",'{keyValuePair.Value}'")
|
||||
End If
|
||||
Next
|
||||
Return Insert(tableName, colNames.ToString(), values.ToString())
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 数据表插入一行,通过命令参数方式执行时使用
|
||||
''' </summary>
|
||||
''' <param name="tableName"></param>
|
||||
''' <param name="dicNameValues"></param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function InsertParam(tableName As String, dicNameValues As Dictionary(Of String, String)) As String
|
||||
Dim colNames As New StringBuilder
|
||||
Dim values As New StringBuilder
|
||||
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
|
||||
If colNames.Length = 0 Then
|
||||
colNames.Append($"`{keyValuePair.Key}`")
|
||||
values.Append($"{keyValuePair.Value}")
|
||||
Else
|
||||
colNames.Append($",`{keyValuePair.Key}`")
|
||||
values.Append($",{keyValuePair.Value}")
|
||||
End If
|
||||
Next
|
||||
Return Insert(tableName, colNames.ToString(), values.ToString())
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 数据表插入一行,通过命令参数方式执行时使用,参数名由@{ColName}
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="colNames">字段列表</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function InsertParam(tableName As String, colNames As List(Of String)) As String
|
||||
Dim colNameString As New StringBuilder
|
||||
Dim values As New StringBuilder
|
||||
For Each colName As String In colNames
|
||||
If colNameString.Length = 0 Then
|
||||
colNameString.Append($"`{colName}`")
|
||||
values.Append($"@{colName}")
|
||||
Else
|
||||
colNameString.Append($",`{colName}`")
|
||||
values.Append($",@{colName}")
|
||||
End If
|
||||
Next
|
||||
Return Insert(tableName, colNameString.ToString(), values.ToString())
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 更新指定表数据
|
||||
''' </summary>
|
||||
''' <param name="tableName">指定表名</param>
|
||||
''' <param name="destStr">更新字符串</param>
|
||||
''' <param name="condition"></param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function Update(tableName As String, destStr As String, condition As String) As String
|
||||
Return $"Update `{tableName}` Set {destStr} Where {condition};"
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 更新指定表数据
|
||||
''' </summary>
|
||||
''' <param name="tableName">指定表名</param>
|
||||
''' <param name="dicNameValues">更新列名与列值键值对</param>
|
||||
''' <param name="condition">更新列索引条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function Update(tableName As String, dicNameValues As Dictionary(Of String, String), condition As String) As String
|
||||
Dim destStr As New StringBuilder
|
||||
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
|
||||
If destStr.Length = 0 Then
|
||||
destStr.Append($"`{keyValuePair.Key}` = '{keyValuePair.Value}'")
|
||||
Else
|
||||
destStr.Append($",`{keyValuePair.Key}` = '{keyValuePair.Value}'")
|
||||
End If
|
||||
Next
|
||||
Return Update(tableName, destStr.ToString(), condition)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 更新指定数据库中指定表数据,参数名由@{ColName}
|
||||
''' </summary>
|
||||
''' <param name="tableName">指定表名</param>
|
||||
''' <param name="colNames">更新列名的集合</param>
|
||||
''' <param name="condition">更新列索引条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function UpdateParam(tableName As String, colNames As List(Of String), condition As String) As String
|
||||
Dim destStr As New StringBuilder
|
||||
For Each colName As String In colNames
|
||||
If destStr.Length = 0 Then
|
||||
destStr.Append($"`{colName}` = @{colName}")
|
||||
Else
|
||||
destStr.Append($",`{colName}` = @{colName}")
|
||||
End If
|
||||
Next
|
||||
Return Update(tableName, destStr.ToString(), condition)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 指定数据表增加一列数据
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="colName">列名</param>
|
||||
''' <param name="colType">列类型</param>
|
||||
''' <param name="isNull">是否允许为空</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function AddCol(tableName As String, colName As String, colType As String, Optional isNull As Boolean = True) As String
|
||||
Return $"Alter Table `{tableName}` Add `{colName}` {colType} {IIf(isNull, "Default Null", "Not Null")};"
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 数据表删除一列数据
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="colName">需要删除的列名,仅一列</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DropCol(tableName As String, colName As String) As String
|
||||
Return $"Alter Table `{tableName}` Drop Column `{colName}`;"
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 删除指定表多行数据
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="condition">条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DeleteRows(tableName As String, condition As String) As String
|
||||
Return $"Delete From `{tableName}` Where {condition};"
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 创建数据表
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="createStr">创建表的列信息字符串</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function CreateTable(tableName As String, createStr As String) As String
|
||||
Return $"Create Table `{tableName}` ( {createStr} );"
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 创建数据表,如果存在则不创建
|
||||
''' </summary>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="createStr">创建表的列信息字符串</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function CreateTableWhenNotExists(tableName As String, createStr As String) As String
|
||||
Return $"Create Table if not exists `{tableName}` ( {createStr} );"
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 清空数据表,表依旧存在
|
||||
''' </summary>
|
||||
''' <param name="tableName">数据表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DeleteTable(tableName As String) As String
|
||||
Return $"Delete From `{tableName}`;"
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 删除数据表
|
||||
''' </summary>
|
||||
''' <param name="tableName">数据表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DropTable(tableName As String) As String
|
||||
Return $"Drop Table `{tableName}`;"
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 删除数据表
|
||||
''' </summary>
|
||||
''' <param name="tableName">数据表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DropTableWhenExists(tableName As String) As String
|
||||
Return $"Drop Table If Exists `{tableName}`;"
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
|
||||
#Region "访问多数据库连接"
|
||||
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 查询指定数据库中指定数据表符合条件的所有指定列的数据
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="ColsName">列名集合,需要返回多列时用','符号分隔列名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="condition">条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbSearch(dbName As String, colsName As String, tableName As String, Optional condition As String = "") As String
|
||||
Dim cmdText As New StringBuilder
|
||||
cmdText.Append($"Select {colsName} From ")
|
||||
|
||||
If String.IsNullOrEmpty(dbName) = False Then
|
||||
cmdText.Append($"`{dbName}`.")
|
||||
End If
|
||||
|
||||
cmdText.Append($"`{tableName}`")
|
||||
|
||||
If String.IsNullOrWhiteSpace(condition) = False Then
|
||||
cmdText.Append($" WHERE {condition}")
|
||||
End If
|
||||
|
||||
cmdText.Append($";")
|
||||
Return cmdText.ToString()
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 查询指定数据库中指定数据表符合条件的所有指定列的数据
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="columnName">表名</param>
|
||||
''' <param name="tableName">条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbSearch(dbName As String, columnName As List(Of String), tableName As String, Optional condition As String = "") As String
|
||||
Dim colNameString As New StringBuilder
|
||||
For i As Integer = 0 To columnName.Count - 1
|
||||
If i = 0 Then
|
||||
colNameString.Append($"`{columnName(i)}`")
|
||||
Else
|
||||
colNameString.Append($",`{columnName(i)}`")
|
||||
End If
|
||||
Next
|
||||
|
||||
Return DbSearch(dbName, colNameString.ToString(), tableName, condition)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 查询指定表包含的内容行数
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">数据表名</param>
|
||||
''' <param name="condition">查询条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbSearchCount(dbName As String, tableName As String, Optional condition As String = "") As String
|
||||
Return DbSearch(dbName, "count(*)", tableName, condition)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 查询指定数据库中指定数据表符合条件的所有数据
|
||||
'''
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">数据表名</param>
|
||||
''' <param name="condition">查询条件(可选)</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbSearchAll(dbName As String, tableName As String, Optional condition As String = "") As String
|
||||
Return DbSearch(dbName, "*", tableName, condition)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 查询指定数据库中指定数据表的信息
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbSearchTableInfo(dbName As String, tableName As String) As String
|
||||
Return DbSearch("", "*", "information_schema.tables", "table_schema = '{dbName}' and table_name = '{tableName}'")
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 查询指定数据表是否存在的信息,返回查询当前表在指定数据库中存在的数量
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbSearchTableExists(dbName As String, tableName As String) As String
|
||||
Return DbSearch("", "count(*)", "information_schema.tables", "table_schema = '{dbName}' and table_name = '{tableName}'")
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 指定数据库中数据表插入一行数据
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="colNames">列名字符串</param>
|
||||
''' <param name="values">列值字符串</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbInsert(dbName As String, tableName As String, colNames As String, values As String) As String
|
||||
Dim cmdText As New StringBuilder
|
||||
cmdText.Append($"Insert into ")
|
||||
If String.IsNullOrEmpty(dbName) = False Then
|
||||
cmdText.Append($"`{dbName}`.")
|
||||
End If
|
||||
cmdText.Append($"`{tableName}`")
|
||||
cmdText.Append($" ({colNames}) Values ( {values} );")
|
||||
Return cmdText.ToString()
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 指定数据库中数据表插入一行数据
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="dicNameValues">列名与列值键值对</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbInsert(dbName As String, tableName As String, dicNameValues As Dictionary(Of String, String)) As String
|
||||
Dim colNames As New StringBuilder
|
||||
Dim values As New StringBuilder
|
||||
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
|
||||
If colNames.Length = 0 Then
|
||||
colNames.Append($"`{keyValuePair.Key}`")
|
||||
values.Append($"'{keyValuePair.Value}'")
|
||||
Else
|
||||
colNames.Append($",`{keyValuePair.Key}`")
|
||||
values.Append($",'{keyValuePair.Value}'")
|
||||
End If
|
||||
Next
|
||||
|
||||
Return DbInsert(dbName, tableName, colNames.ToString(), values.ToString())
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 指定数据库中数据表插入一行,通过命令参数方式执行时使用,参数名由@{ColName}
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName"></param>
|
||||
''' <param name="colNames">需要插入列名的集合</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbInsertParam(dbName As String, tableName As String, colNames As List(Of String)) As String
|
||||
Dim colNameBuilder As New StringBuilder
|
||||
Dim valueBuilder As New StringBuilder
|
||||
For Each colName As String In colNames
|
||||
If colNameBuilder.Length = 0 Then
|
||||
colNameBuilder.Append($"`{colName}`")
|
||||
valueBuilder.Append($"@{colName}")
|
||||
Else
|
||||
colNameBuilder.Append($",`{colName}`")
|
||||
valueBuilder.Append($",@{colName}")
|
||||
End If
|
||||
Next
|
||||
'insert into dbName.tablename (1,2,3) value (@1,@2,@3)
|
||||
Return DbInsert(dbName, tableName, colNameBuilder.ToString(), valueBuilder.ToString())
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 更新指定数据库中指定表数据
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">指定表名</param>
|
||||
''' <param name="destStr">更新字符串</param>
|
||||
''' <param name="condition"></param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbUpdate(dbName As String, tableName As String, destStr As String, condition As String) As String
|
||||
Dim cmdText As New StringBuilder
|
||||
cmdText.Append($"Update ")
|
||||
If String.IsNullOrEmpty(dbName) = False Then
|
||||
cmdText.Append($"`{dbName}`.")
|
||||
End If
|
||||
cmdText.Append($"`{tableName}`")
|
||||
cmdText.Append($" Set {destStr} Where {condition};")
|
||||
Return cmdText.ToString()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 更新指定数据库中指定表数据,参数名由@{ColName}
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">指定表名</param>
|
||||
''' <param name="colNames">更新列名的集合</param>
|
||||
''' <param name="condition">更新列索引条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbUpdateParam(dbName As String, tableName As String, colNames As List(Of String), condition As String) As String
|
||||
Dim destStr As New StringBuilder
|
||||
For Each colName As String In colNames
|
||||
If destStr.Length = 0 Then
|
||||
destStr.Append($"`{colName}` = @{colName}")
|
||||
Else
|
||||
destStr.Append($",`{colName}` = @{colName}")
|
||||
End If
|
||||
Next
|
||||
Return DbUpdate(dbName, tableName, destStr.ToString(), condition)
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 更新指定数据库中指定表数据
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">指定表名</param>
|
||||
''' <param name="filedDictionary">更新列名与列值键值对</param>
|
||||
''' <param name="condition">更新列索引条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbUpdate(dbName As String, tableName As String, filedDictionary As Dictionary(Of String, String), condition As String) As String
|
||||
Dim destStr As New StringBuilder
|
||||
For Each filed As KeyValuePair(Of String, String) In filedDictionary
|
||||
If destStr.Length = 0 Then
|
||||
destStr.Append($"`{filed.Key}` = '{filed.Value}'")
|
||||
Else
|
||||
destStr.Append($",`{filed.Key}` = '{filed.Value}'")
|
||||
End If
|
||||
Next
|
||||
Return DbUpdate(dbName, tableName, destStr.ToString(), condition)
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 指定数据库中指定数据表增加一列数据
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="colName">列名</param>
|
||||
''' <param name="colType">列类型</param>
|
||||
''' <param name="isNull">是否允许为空</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbAddCol(dbName As String, tableName As String, colName As String, colType As String, Optional isNull As Boolean = True) As String
|
||||
Dim cmdText As New StringBuilder
|
||||
cmdText.Append($"Alter Table ")
|
||||
If String.IsNullOrEmpty(dbName) = False Then
|
||||
cmdText.Append($"`{dbName}`.")
|
||||
End If
|
||||
cmdText.Append($"`{tableName}`")
|
||||
cmdText.Append($" Add `{colName}` {colType} {IIf(isNull, "Default Null", "Not Null")};")
|
||||
|
||||
Return cmdText.ToString()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 指定数据库中数据表删除一列数据
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="colName">需要删除的列名,仅一列</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbDropCol(dbName As String, tableName As String, colName As String) As String
|
||||
Dim cmdText As New StringBuilder
|
||||
cmdText.Append($"Alter Table ")
|
||||
If String.IsNullOrEmpty(dbName) = False Then
|
||||
cmdText.Append($"`{dbName}`.")
|
||||
End If
|
||||
cmdText.Append($"`{tableName}`")
|
||||
cmdText.Append($" Drop Column `{colName}`;")
|
||||
|
||||
Return cmdText.ToString()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 指定数据库中指定表删除多行数据
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="condition">条件</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbDeleteRows(dbName As String, tableName As String, condition As String) As String
|
||||
Dim cmdText As New StringBuilder
|
||||
cmdText.Append($"Delete From ")
|
||||
If String.IsNullOrEmpty(dbName) = False Then
|
||||
cmdText.Append($"`{dbName}`.")
|
||||
End If
|
||||
cmdText.Append($"`{tableName}`")
|
||||
cmdText.Append($" Where {condition};")
|
||||
|
||||
Return cmdText.ToString()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 指定数据库中创建数据表
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="createStr">创建表的列信息字符串</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbCreateTable(dbName As String, tableName As String, createStr As String) As String
|
||||
Dim cmdText As New StringBuilder
|
||||
cmdText.Append($"Create Table ")
|
||||
If String.IsNullOrEmpty(dbName) = False Then
|
||||
cmdText.Append($"`{dbName}`.")
|
||||
End If
|
||||
cmdText.Append($"`{tableName}`")
|
||||
cmdText.Append($" ( {createStr} );")
|
||||
|
||||
Return cmdText.ToString()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 指定数据库中创建数据表,如果存在则不创建
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">表名</param>
|
||||
''' <param name="createStr">创建表的列信息字符串</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbCreateTableWhenNotExists(dbName As String, tableName As String, createStr As String) As String
|
||||
Dim cmdText As New StringBuilder
|
||||
cmdText.Append($"Create Table if not exists ")
|
||||
If String.IsNullOrEmpty(dbName) = False Then
|
||||
cmdText.Append($"`{dbName}`.")
|
||||
End If
|
||||
cmdText.Append($"`{tableName}`")
|
||||
cmdText.Append($" ( {createStr} );")
|
||||
|
||||
Return cmdText.ToString()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 清空指定数据库中数据表,表依旧存在
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">数据表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbDeleteTable(dbName As String, tableName As String) As String
|
||||
Dim cmdText As New StringBuilder
|
||||
cmdText.Append($"Delete From ")
|
||||
If String.IsNullOrEmpty(dbName) = False Then
|
||||
cmdText.Append($"`{dbName}`.")
|
||||
End If
|
||||
cmdText.Append($"`{tableName}`")
|
||||
cmdText.Append($";")
|
||||
|
||||
Return cmdText.ToString()
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 删除指定数据库中数据表
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tableName">数据表名</param>
|
||||
''' <returns></returns>
|
||||
Public Overridable Function DbDropTable(dbName As String, tableName As String) As String
|
||||
Dim cmdText As New StringBuilder
|
||||
cmdText.Append($"Drop Table ")
|
||||
If String.IsNullOrEmpty(dbName) = False Then
|
||||
cmdText.Append($"`{dbName}`.")
|
||||
End If
|
||||
cmdText.Append($"`{tableName}`")
|
||||
cmdText.Append($";")
|
||||
|
||||
Return cmdText.ToString()
|
||||
End Function
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||
511
UTS_Core/Database/DbExecutor.vb
Normal file
511
UTS_Core/Database/DbExecutor.vb
Normal file
@@ -0,0 +1,511 @@
|
||||
Imports System.Data.Common
|
||||
Imports System.Data.SqlClient
|
||||
Imports System.Data.SQLite
|
||||
Imports MySql.Data.MySqlClient
|
||||
Imports UTS_Core.Database.Mssql
|
||||
Imports UTS_Core.Database.Mysql
|
||||
Imports UTS_Core.Database.Sqlite
|
||||
|
||||
|
||||
Namespace Database
|
||||
''' <summary>
|
||||
''' 数据库通用命令执行器
|
||||
''' 时间:2020-12-21
|
||||
''' 作者:ML
|
||||
''' 版本:1.0
|
||||
''' </summary>
|
||||
Public Class DbExecutor
|
||||
Implements IDisposable
|
||||
''' <summary>
|
||||
''' 数据库类型,目前支持Mysql与Sqlite
|
||||
''' </summary>
|
||||
Enum DbTypeEnum
|
||||
Mysql
|
||||
Sqlite
|
||||
Mssql
|
||||
End Enum
|
||||
|
||||
|
||||
Private ReadOnly _connectionString As String '数据库连接语句
|
||||
|
||||
Private ReadOnly _dbType As DbTypeEnum '数据库类型
|
||||
|
||||
Private _connection As DbConnection '数据库连接句柄
|
||||
|
||||
Private _command As DbCommand '数据库命令句柄
|
||||
|
||||
Private _dataAdapter As DbDataAdapter '数据库查询填充器句柄
|
||||
|
||||
Private _transaction As DbTransaction '数据库事务句柄
|
||||
|
||||
Private _commandHelper As DbCmdHelper '数据库语句填充助手
|
||||
|
||||
Sub New(type As DbTypeEnum, connectionString As String)
|
||||
_dbType = type
|
||||
_connectionString = connectionString
|
||||
InitByDbType(_dbType)
|
||||
End Sub
|
||||
|
||||
Private Sub InitByDbType(type As DbTypeEnum)
|
||||
Select Case type
|
||||
Case DbTypeEnum.Mysql
|
||||
_connection = New MySqlConnection()
|
||||
_command = _connection.CreateCommand()
|
||||
_dataAdapter = New MySqlDataAdapter() With {.MissingSchemaAction = MissingSchemaAction.AddWithKey}
|
||||
|
||||
_commandHelper = New MysqlCmdHelper()
|
||||
Case DbTypeEnum.Sqlite
|
||||
_connection = New SQLiteConnection()
|
||||
_command = _connection.CreateCommand()
|
||||
_dataAdapter = New SQLiteDataAdapter() With {.MissingSchemaAction = MissingSchemaAction.AddWithKey}
|
||||
|
||||
_commandHelper = New SqliteCmdHelper()
|
||||
Case DbTypeEnum.Mssql
|
||||
_connection = New SqlConnection()
|
||||
_command = _connection.CreateCommand()
|
||||
_dataAdapter = New SqlDataAdapter() With {.MissingSchemaAction = MissingSchemaAction.AddWithKey}
|
||||
|
||||
_commandHelper = New MssqlCmdHelper()
|
||||
End Select
|
||||
End Sub
|
||||
|
||||
|
||||
Public ReadOnly Property DatabaseType() As DbTypeEnum
|
||||
Get
|
||||
Return _dbType
|
||||
End Get
|
||||
'Set(value As DbTypeEnum)
|
||||
' _dbType = value
|
||||
' '执行上一个数据库的关闭操作
|
||||
' InitByDbType(_dbType)
|
||||
'End Set
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property Connection() As DbConnection
|
||||
Get
|
||||
Return _connection
|
||||
End Get
|
||||
End Property
|
||||
|
||||
|
||||
Public ReadOnly Property Command() As DbCommand
|
||||
Get
|
||||
Return _command
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property CmdHelper() As DbCmdHelper
|
||||
Get
|
||||
Return _commandHelper
|
||||
End Get
|
||||
End Property
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 打开数据库连接
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Function Open() As Boolean
|
||||
If _connection Is Nothing Then Return False
|
||||
If String.IsNullOrWhiteSpace(_connectionString) Then Return False
|
||||
Try
|
||||
_connection.ConnectionString = _connectionString
|
||||
_connection.Open()
|
||||
Catch ex As Exception
|
||||
Throw
|
||||
End Try
|
||||
Return True
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 打开数据库连接
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Async Function OpenAsync() As Task(Of Boolean)
|
||||
If _connection Is Nothing Then Return False
|
||||
If String.IsNullOrWhiteSpace(_connectionString) Then Return False
|
||||
Try
|
||||
_connection.ConnectionString = _connectionString
|
||||
Await _connection.OpenAsync()
|
||||
Catch ex As Exception
|
||||
Throw
|
||||
End Try
|
||||
Return True
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 关闭数据库连接
|
||||
''' </summary>
|
||||
Public Sub Close()
|
||||
If _connection Is Nothing Then Return
|
||||
If _connection.State = ConnectionState.Closed Then Return
|
||||
_connection.Close()
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 创建当前连接的命令执行句柄
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Function CreateCommand() As DbCommand
|
||||
Return _connection.CreateCommand()
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 运行非查询语句,返回执行该语句受到影响的行数
|
||||
''' </summary>
|
||||
''' <param name="commandText">执行的数据库命令文本</param>
|
||||
''' <returns></returns>
|
||||
Public Function ExecuteNonQuery(commandText As String) As Integer
|
||||
Dim result As Integer
|
||||
Try
|
||||
_command.CommandText = commandText
|
||||
result = _command.ExecuteNonQuery()
|
||||
Catch ex As Exception
|
||||
Throw
|
||||
End Try
|
||||
Return result
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 运行非查询语句,返回执行该语句受到影响的行数
|
||||
''' </summary>
|
||||
''' <param name="commandText">执行的数据库命令文本</param>
|
||||
''' <returns></returns>
|
||||
Public Async Function ExecuteNonQueryAsync(commandText As String) As Task(Of Integer)
|
||||
Dim result As Integer
|
||||
Try
|
||||
_command.CommandText = commandText
|
||||
result = Await _command.ExecuteNonQueryAsync()
|
||||
Catch ex As Exception
|
||||
Throw
|
||||
End Try
|
||||
Return result
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 使用命令参数模式执行非查询语句,返回执行该语句受到影响的行数
|
||||
''' </summary>
|
||||
''' <param name="commandText">执行的数据库命令文本</param>
|
||||
''' <param name="commandParams">执行的数据库命令参数</param>
|
||||
''' <returns></returns>
|
||||
Public Function ExecuteNonQuery(commandText As String, commandParams As DbParameterCollection) As Integer
|
||||
Dim result As Integer
|
||||
Try
|
||||
_command.CommandText = commandText
|
||||
_command.Parameters.Clear()
|
||||
For Each param As DbParameter In commandParams
|
||||
_command.Parameters.Add(param)
|
||||
Next
|
||||
result = _command.ExecuteNonQuery()
|
||||
Catch ex As Exception
|
||||
Throw
|
||||
End Try
|
||||
Return result
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 使用命令参数模式执行非查询语句,返回执行该语句受到影响的行数
|
||||
''' </summary>
|
||||
''' <param name="commandText">执行的数据库命令文本</param>
|
||||
''' <param name="commandParams">执行的数据库命令参数</param>
|
||||
''' <returns></returns>
|
||||
Public Async Function ExecuteNonQueryAsync(commandText As String, commandParams As DbParameterCollection) As Task(Of Integer)
|
||||
Dim result As Integer
|
||||
Try
|
||||
_command.CommandText = commandText
|
||||
_command.Parameters.Clear()
|
||||
For Each param As DbParameter In commandParams
|
||||
_command.Parameters.Add(param)
|
||||
Next
|
||||
result = Await _command.ExecuteNonQueryAsync()
|
||||
Catch ex As Exception
|
||||
Throw
|
||||
End Try
|
||||
Return result
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 执行数据库语句,返回数据库读取流的句柄
|
||||
''' </summary>
|
||||
''' <param name="commandText">执行的数据库命令文本</param>
|
||||
''' <returns></returns>
|
||||
Public Function ExecuteReader(commandText As String) As DbDataReader
|
||||
Dim result As DbDataReader
|
||||
Try
|
||||
_command.CommandText = commandText
|
||||
result = _command.ExecuteReader()
|
||||
Catch ex As Exception
|
||||
Throw
|
||||
End Try
|
||||
Return result
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 执行数据库语句,返回数据库读取流的句柄
|
||||
''' </summary>
|
||||
''' <param name="commandText">执行的数据库命令文本</param>
|
||||
''' <returns></returns>
|
||||
Public Async Function ExecuteReaderAsync(commandText As String) As Task(Of DbDataReader)
|
||||
Dim result As DbDataReader
|
||||
Try
|
||||
_command.CommandText = commandText
|
||||
result = Await _command.ExecuteReaderAsync()
|
||||
Catch ex As Exception
|
||||
Throw
|
||||
End Try
|
||||
Return result
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 使用命令参数模式执行数据库语句,返回数据库读取流的句柄
|
||||
''' </summary>
|
||||
''' <param name="commandText">执行的数据库命令文本</param>
|
||||
''' <param name="commandParams">执行的数据库命令参数</param>
|
||||
''' <returns></returns>
|
||||
Public Function ExecuteReader(commandText As String, commandParams As DbParameterCollection) As DbDataReader
|
||||
Dim result As DbDataReader
|
||||
Try
|
||||
_command.CommandText = commandText
|
||||
_command.Parameters.Clear()
|
||||
For Each param As DbParameter In commandParams
|
||||
_command.Parameters.Add(param)
|
||||
Next
|
||||
result = _command.ExecuteReader()
|
||||
Catch ex As Exception
|
||||
Throw
|
||||
End Try
|
||||
Return result
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 使用命令参数模式执行数据库语句,返回数据库读取流的句柄
|
||||
''' </summary>
|
||||
''' <param name="commandText">执行的数据库命令文本</param>
|
||||
''' <param name="commandParams">执行的数据库命令参数</param>
|
||||
''' <returns></returns>
|
||||
Public Async Function ExecuteReaderAsync(commandText As String, commandParams As DbParameterCollection) As Task(Of DbDataReader)
|
||||
Dim result As DbDataReader
|
||||
Try
|
||||
_command.CommandText = commandText
|
||||
_command.Parameters.Clear()
|
||||
For Each param As DbParameter In commandParams
|
||||
_command.Parameters.Add(param)
|
||||
Next
|
||||
result = Await _command.ExecuteReaderAsync()
|
||||
Catch ex As Exception
|
||||
Throw
|
||||
End Try
|
||||
Return result
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 执行数据库语句,返回查询结果的第一行第一列的内容
|
||||
''' </summary>
|
||||
''' <param name="commandText">执行的数据库命令文本</param>
|
||||
''' <returns></returns>
|
||||
Public Function ExecuteScalar(commandText As String) As Object
|
||||
Dim result As Object
|
||||
Try
|
||||
_command.CommandText = commandText
|
||||
result = _command.ExecuteScalar()
|
||||
Catch ex As Exception
|
||||
Throw
|
||||
End Try
|
||||
Return result
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 执行数据库语句,返回查询结果的第一行第一列的内容
|
||||
''' </summary>
|
||||
''' <param name="commandText">执行的数据库命令文本</param>
|
||||
''' <returns></returns>
|
||||
Public Async Function ExecuteScalarAsync(commandText As String) As Task(Of Object)
|
||||
Dim result As Object
|
||||
Try
|
||||
_command.CommandText = commandText
|
||||
result = Await _command.ExecuteScalarAsync()
|
||||
Catch ex As Exception
|
||||
Throw
|
||||
End Try
|
||||
Return result
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 使用命令参数模式执行数据库语句,返回查询结果的第一行第一列的内容
|
||||
''' </summary>
|
||||
''' <param name="commandText">执行的数据库命令文本</param>
|
||||
''' <param name="commandParams">执行的数据库命令参数</param>
|
||||
''' <returns></returns>
|
||||
Public Function ExecuteScalar(commandText As String, commandParams As DbParameterCollection) As Object
|
||||
Dim result As Object
|
||||
Try
|
||||
_command.CommandText = commandText
|
||||
_command.Parameters.Clear()
|
||||
For Each param As DbParameter In commandParams
|
||||
_command.Parameters.Add(param)
|
||||
Next
|
||||
result = _command.ExecuteScalar()
|
||||
Catch ex As Exception
|
||||
Throw
|
||||
End Try
|
||||
Return result
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 使用命令参数模式执行数据库语句,返回查询结果的第一行第一列的内容
|
||||
''' </summary>
|
||||
''' <param name="commandText">执行的数据库命令文本</param>
|
||||
''' <param name="commandParams">执行的数据库命令参数</param>
|
||||
''' <returns></returns>
|
||||
Public Async Function ExecuteScalarAsync(commandText As String, commandParams As DbParameterCollection) As Task(Of Object)
|
||||
Dim result As Object
|
||||
Try
|
||||
_command.CommandText = commandText
|
||||
_command.Parameters.Clear()
|
||||
For Each param As DbParameter In commandParams
|
||||
_command.Parameters.Add(param)
|
||||
Next
|
||||
result = Await _command.ExecuteScalarAsync()
|
||||
Catch ex As Exception
|
||||
Throw
|
||||
End Try
|
||||
Return result
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 执行数据库语句,返回执行结果返回的数据表,常用于查询命令
|
||||
''' </summary>
|
||||
''' <param name="commandText">执行的数据库命令文本</param>
|
||||
''' <returns></returns>
|
||||
Public Function ExecuteDataTable(commandText As String, Optional withKey As Boolean = True) As DataTable
|
||||
Dim dataTable As New DataTable
|
||||
Try
|
||||
_command.CommandText = commandText
|
||||
If withKey Then
|
||||
_dataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
|
||||
Else
|
||||
_dataAdapter.MissingSchemaAction = MissingSchemaAction.Add
|
||||
End If
|
||||
_dataAdapter.SelectCommand = _command
|
||||
_dataAdapter.Fill(dataTable)
|
||||
|
||||
Catch ex As Exception
|
||||
MsgBox(ex.Message)
|
||||
End Try
|
||||
Return dataTable
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 执行数据库语句,返回执行结果返回的数据表,常用于查询命令
|
||||
''' </summary>
|
||||
''' <param name="commandText">执行的数据库命令文本</param>
|
||||
''' <param name="commandParams">执行的数据库命令参数</param>
|
||||
''' <returns></returns>
|
||||
Public Function ExecuteDataTable(commandText As String, commandParams As DbParameterCollection) As DataTable
|
||||
Dim dataTable As New DataTable
|
||||
Try
|
||||
_command.CommandText = commandText
|
||||
_command.Parameters.Clear()
|
||||
For Each param As DbParameter In commandParams
|
||||
_command.Parameters.Add(param)
|
||||
Next
|
||||
_dataAdapter.SelectCommand = _command
|
||||
_dataAdapter.Fill(dataTable)
|
||||
Catch ex As Exception
|
||||
Throw
|
||||
End Try
|
||||
Return dataTable
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 开启事务
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Function BeginTransaction() As DbTransaction
|
||||
_transaction = _connection.BeginTransaction()
|
||||
Return _transaction
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 提交事务
|
||||
''' </summary>
|
||||
Public Sub CommitTransaction()
|
||||
Try
|
||||
_transaction.Commit()
|
||||
Catch ex As Exception
|
||||
Throw
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 回滚事务
|
||||
''' </summary>
|
||||
Public Sub RollbackTransaction()
|
||||
Try
|
||||
_transaction.Rollback()
|
||||
Catch ex As Exception
|
||||
Throw
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 创建数据参数
|
||||
''' </summary>
|
||||
''' <param name="type">参数数据类型</param>
|
||||
''' <param name="ParameterName">参数名称</param>
|
||||
''' <param name="value">参数值</param>
|
||||
''' <returns></returns>
|
||||
Public Function CreateDbParameter(type As DbType, parameterName As String, value As Object) As DbParameter
|
||||
Dim dbParam As DbParameter = _command.CreateParameter()
|
||||
dbParam.DbType = type
|
||||
dbParam.ParameterName = parameterName
|
||||
dbParam.Value = value
|
||||
Return dbParam
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 添加数据参数
|
||||
''' </summary>
|
||||
''' <param name="type"></param>
|
||||
''' <param name="parameterName"></param>
|
||||
''' <param name="value"></param>
|
||||
''' <returns></returns>
|
||||
Public Function AddDbParameter(type As DbType, parameterName As String, value As Object) As DbParameter
|
||||
Dim dbParam As DbParameter = _command.CreateParameter()
|
||||
dbParam.DbType = type
|
||||
dbParam.ParameterName = parameterName
|
||||
dbParam.Value = value
|
||||
_command.Parameters.Add(dbParam)
|
||||
Return dbParam
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 清空数据
|
||||
''' </summary>
|
||||
Public Sub ClearDbParameter()
|
||||
_command.Parameters.Clear()
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 回收资源
|
||||
''' </summary>
|
||||
Public Sub Dispose() Implements IDisposable.Dispose
|
||||
If _connection IsNot Nothing Then
|
||||
If _connection.State = ConnectionState.Open Then
|
||||
_connection.Close()
|
||||
End If
|
||||
_connection.Dispose()
|
||||
End If
|
||||
|
||||
If _command IsNot Nothing Then _command.Dispose()
|
||||
If _dataAdapter IsNot Nothing Then _dataAdapter.Dispose()
|
||||
|
||||
GC.Collect() '对所有缓存垃圾进行回收
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
10
UTS_Core/Database/Mssql/MssqlCmdHelper.vb
Normal file
10
UTS_Core/Database/Mssql/MssqlCmdHelper.vb
Normal file
@@ -0,0 +1,10 @@
|
||||
Namespace Database.Mssql
|
||||
Public Class MssqlCmdHelper
|
||||
Inherits DbCmdHelper
|
||||
|
||||
Sub New()
|
||||
FiledSuffix = "["c
|
||||
FiledPrefix = "]"c
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
222
UTS_Core/Database/Mysql/DataParam.vb
Normal file
222
UTS_Core/Database/Mysql/DataParam.vb
Normal file
@@ -0,0 +1,222 @@
|
||||
Imports System.Text
|
||||
|
||||
Namespace Database.Mysql
|
||||
Public Class DataParam
|
||||
Enum DataTypeEnum
|
||||
'###############################数值类型#############################
|
||||
''' <summary>
|
||||
''' 1 byte,小整数值
|
||||
''' </summary>
|
||||
Tinyint
|
||||
|
||||
''' <summary>
|
||||
''' 2 bytes,大整数值
|
||||
''' </summary>
|
||||
Smallint
|
||||
|
||||
''' <summary>
|
||||
''' 3 bytes,大整数值
|
||||
''' </summary>
|
||||
Mediumint
|
||||
|
||||
''' <summary>
|
||||
''' 4 bytes,大整数值
|
||||
''' </summary>
|
||||
Int
|
||||
|
||||
''' <summary>
|
||||
''' 4 bytes,大整数值
|
||||
''' </summary>
|
||||
[Integer]
|
||||
|
||||
''' <summary>
|
||||
''' 8 bytes,极大整数值
|
||||
''' </summary>
|
||||
Bigint
|
||||
|
||||
''' <summary>
|
||||
''' 4 bytes,单精度浮点数值
|
||||
''' </summary>
|
||||
Float
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 8 bytes,双精度浮点数值
|
||||
''' </summary>
|
||||
[Double]
|
||||
|
||||
|
||||
|
||||
'####################日期类型###############################
|
||||
|
||||
''' <summary>
|
||||
''' 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2.小数值
|
||||
''' </summary>
|
||||
[Decimal]
|
||||
|
||||
''' <summary>
|
||||
''' 3 bytes,日期值,YYYY-MM-DD
|
||||
''' </summary>
|
||||
[Date]
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 3 bytes,时间值或持续时间,HH:MM:SS
|
||||
''' </summary>
|
||||
Time
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 1 bytes,年份值,YYYY
|
||||
''' </summary>
|
||||
Year
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 8 bytes,混合日期和时间值,YYYY-MM-DD HH:MM:SS
|
||||
''' </summary>
|
||||
Datetime
|
||||
|
||||
''' <summary>
|
||||
''' 4 bytes,混合日期和时间值,时间戳,YYYYMMDD HHMMSS
|
||||
''' </summary>
|
||||
Timestamp
|
||||
|
||||
|
||||
'####################字符类型###############################
|
||||
|
||||
''' <summary>
|
||||
''' 0-255 bytes,定长字符串
|
||||
''' </summary>
|
||||
[Char]
|
||||
|
||||
''' <summary>
|
||||
''' 0-65535 bytes,变长字符串
|
||||
''' </summary>
|
||||
Varchar
|
||||
|
||||
''' <summary>
|
||||
''' 0-255 bytes,不超过 255 个字符的二进制字符串
|
||||
''' </summary>
|
||||
Tinyblob
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 0-255 bytes,短文本字符串
|
||||
''' </summary>
|
||||
Tinytext
|
||||
|
||||
''' <summary>
|
||||
''' 0-65 535 bytes,二进制形式的长文本数据
|
||||
''' </summary>
|
||||
Blob
|
||||
|
||||
''' <summary>
|
||||
''' 0-65 535 bytes,长文本数据
|
||||
''' </summary>
|
||||
Text
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 0-16 777 215 bytes,二进制形式的中等长度文本数据
|
||||
''' </summary>
|
||||
Mediumblob
|
||||
|
||||
''' <summary>
|
||||
''' 0-16 777 215 bytes,中等长度文本数据
|
||||
''' </summary>
|
||||
Mediumtext
|
||||
|
||||
''' <summary>
|
||||
''' 0-4 294 967 295 bytes,二进制形式的极大文本数据
|
||||
''' </summary>
|
||||
Longblob
|
||||
|
||||
''' <summary>
|
||||
''' 0-4 294 967 295 bytes,极大文本数据
|
||||
''' </summary>
|
||||
Longtext
|
||||
End Enum
|
||||
|
||||
''' <summary>
|
||||
''' 列名
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property ColumnName() As String
|
||||
|
||||
''' <summary>
|
||||
''' 当前值
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property Value() As String
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 默认值
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property DefaultValue() As String
|
||||
|
||||
''' <summary>
|
||||
''' 数据类型
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property DataType() As DataTypeEnum
|
||||
|
||||
''' <summary>
|
||||
''' 数据类型长度
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property DataTypeLength() As Integer
|
||||
|
||||
''' <summary>
|
||||
''' 数据类型是否带符号
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property IsUnsigned() As Boolean
|
||||
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 是否允许为空
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property IsNull() As Boolean = True
|
||||
|
||||
''' <summary>
|
||||
''' 是否自动增长
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property IsAutoIncrement() As Boolean
|
||||
|
||||
''' <summary>
|
||||
''' 是否为主键
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property IsPrimaryKey() As Boolean
|
||||
|
||||
Public Function ToAddColString() As String
|
||||
Dim sb As New StringBuilder
|
||||
sb.Append($"`{ColumnName}`")
|
||||
|
||||
Select Case DataType
|
||||
Case DataTypeEnum.Varchar,DataTypeEnum.[Char]
|
||||
sb.Append($" {DataType}({DataTypeLength}) ")
|
||||
Case DataTypeEnum.Int
|
||||
sb.Append($" {DataType}")
|
||||
if IsUnsigned Then sb.Append($" Unsigned")
|
||||
If IsAutoIncrement Then sb.Append($" AUTO_INCREMENT")
|
||||
Case Else
|
||||
sb.Append($" {DataType}")
|
||||
End Select
|
||||
|
||||
sb.Append(IIf(IsNull, " Default Null", " Not Null"))
|
||||
|
||||
If IsPrimaryKey Then
|
||||
sb.Append($" PRIMARY KEY")
|
||||
End If
|
||||
|
||||
Return sb.ToString()
|
||||
End Function
|
||||
End Class
|
||||
End Namespace
|
||||
13
UTS_Core/Database/Mysql/MysqlCmdHelper.vb
Normal file
13
UTS_Core/Database/Mysql/MysqlCmdHelper.vb
Normal file
@@ -0,0 +1,13 @@
|
||||
Imports System.Text
|
||||
|
||||
Namespace Database.Mysql
|
||||
Public Class MysqlCmdHelper
|
||||
Inherits DbCmdHelper
|
||||
|
||||
Sub New
|
||||
FiledSuffix = "`"c
|
||||
FiledPrefix = "`"c
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
106
UTS_Core/Database/Sqlite/DataParam.vb
Normal file
106
UTS_Core/Database/Sqlite/DataParam.vb
Normal file
@@ -0,0 +1,106 @@
|
||||
Imports System.Text
|
||||
|
||||
Namespace Database.Sqlite
|
||||
Public Class DataParam
|
||||
Enum DataTypeEnum
|
||||
Varchar
|
||||
Nchar
|
||||
Blob
|
||||
Bit
|
||||
Datetime
|
||||
[Decimal]
|
||||
Real
|
||||
UniqueIdentifier
|
||||
Int
|
||||
[Integer]
|
||||
TinyInt
|
||||
[Single]
|
||||
Nvarchar
|
||||
SmallInt
|
||||
SmallUint
|
||||
Uint
|
||||
UnsignedInteger
|
||||
End Enum
|
||||
|
||||
''' <summary>
|
||||
''' 列名
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property ColumnName() As String
|
||||
|
||||
''' <summary>
|
||||
''' 当前值
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property Value() As String
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 默认值
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property DefaultValue() As String
|
||||
|
||||
''' <summary>
|
||||
''' 数据类型
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property DataType() As DataTypeEnum
|
||||
|
||||
''' <summary>
|
||||
''' 数据类型长度
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property DataTypeLength() As Integer
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 是否允许为空
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property IsNull() As Boolean = True
|
||||
|
||||
''' <summary>
|
||||
''' 是否自动增长
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property IsAutoIncrement() As Boolean
|
||||
|
||||
''' <summary>
|
||||
''' 是否为主键
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property IsPrimaryKey() As Boolean
|
||||
|
||||
''' <summary>
|
||||
''' 是否为唯一值
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property IsUnique() As Boolean
|
||||
|
||||
|
||||
Public Function ToAddColString() As String
|
||||
Dim sb As New StringBuilder
|
||||
sb.Append($"`{ColumnName}`")
|
||||
|
||||
Select Case DataType
|
||||
Case DataTypeEnum.Varchar, DataTypeEnum.Nchar, DataTypeEnum.Nvarchar
|
||||
sb.Append($" {DataType}({DataTypeLength}) ")
|
||||
Case DataTypeEnum.Int,DataTypeEnum.Integer
|
||||
sb.Append($" {DataType}")
|
||||
Case Else
|
||||
sb.Append($" {DataType}")
|
||||
End Select
|
||||
|
||||
If IsAutoIncrement Then sb.Append($" AUTOINCREMENT")
|
||||
|
||||
sb.Append(IIf(IsNull, " Default Null", " Not Null"))
|
||||
|
||||
If IsPrimaryKey Then
|
||||
sb.Append($" PRIMARY KEY")
|
||||
End If
|
||||
|
||||
Return sb.ToString()
|
||||
End Function
|
||||
End Class
|
||||
End Namespace
|
||||
20
UTS_Core/Database/Sqlite/SqliteCmdHelper.vb
Normal file
20
UTS_Core/Database/Sqlite/SqliteCmdHelper.vb
Normal file
@@ -0,0 +1,20 @@
|
||||
Namespace Database.Sqlite
|
||||
Public Class SqliteCmdHelper
|
||||
Inherits DbCmdHelper
|
||||
|
||||
Sub New()
|
||||
FiledSuffix = "["c
|
||||
FiledPrefix = "]"c
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 查询指定数据表的信息
|
||||
''' </summary>
|
||||
''' <param name="tableName"></param>
|
||||
''' <returns></returns>
|
||||
Public Overrides Function SearchTableInfo(tableName As String) As String
|
||||
Return $"select * from sqlite_master where tbl_name = '{tableName}';"
|
||||
End Function
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
4
UTS_Core/Document/Version.txt
Normal file
4
UTS_Core/Document/Version.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
Uts_Core V0.1
|
||||
1.测试流程基本编辑完成,后续可能会增加表格树状节点。
|
||||
2.自动获取串口功能完成,串口通讯与数据处理功能尚待商榷。
|
||||
3.测试流程功能尚未添加。
|
||||
48
UTS_Core/EnumExtend/EnumExtender.vb
Normal file
48
UTS_Core/EnumExtend/EnumExtender.vb
Normal file
@@ -0,0 +1,48 @@
|
||||
Imports System.ComponentModel
|
||||
Imports System.Reflection
|
||||
|
||||
Namespace EnumExtend
|
||||
''' <summary>
|
||||
''' 枚举扩展类
|
||||
''' </summary>
|
||||
Public Class EnumExtender
|
||||
''' <summary>
|
||||
''' 获取枚举描述特性
|
||||
''' </summary>
|
||||
''' <param name="enumValue">需要获取特性的枚举值</param>
|
||||
''' <returns>枚举描述特性</returns>
|
||||
Public Shared Function GetEnumDescription(enumValue As [Enum]) As String
|
||||
Dim field As FieldInfo = enumValue.GetType().GetField(enumValue.ToString())
|
||||
Dim attributes() As DescriptionAttribute =
|
||||
DirectCast(field.GetCustomAttributes(GetType(DescriptionAttribute),
|
||||
False), DescriptionAttribute())
|
||||
If attributes.Length > 0 Then
|
||||
Return attributes(0).Description
|
||||
Else
|
||||
Return field.Name
|
||||
End If
|
||||
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 获取当前枚举所有描述特性值,未填的枚举采用枚举名
|
||||
''' </summary>
|
||||
''' <param name="enumType">枚举类型</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function GetEnumAllDesc(enumType As Type) As String()
|
||||
Dim fields As FieldInfo() = enumType.GetFields( BindingFlags.Static Or BindingFlags.Public)
|
||||
Dim fieldsDesc As New List(Of String)
|
||||
For Each field As FieldInfo In fields
|
||||
Dim attributes() As DescriptionAttribute =
|
||||
DirectCast(field.GetCustomAttributes(GetType(DescriptionAttribute),
|
||||
False), DescriptionAttribute())
|
||||
If attributes.Length > 0 Then
|
||||
fieldsDesc.Add(attributes(0).Description)
|
||||
Else
|
||||
fieldsDesc.Add(field.Name)
|
||||
End If
|
||||
Next
|
||||
Return fieldsDesc.ToArray()
|
||||
End Function
|
||||
End Class
|
||||
End Namespace
|
||||
539
UTS_Core/Expression/StringExpression.vb
Normal file
539
UTS_Core/Expression/StringExpression.vb
Normal file
@@ -0,0 +1,539 @@
|
||||
Imports System.Text
|
||||
|
||||
Namespace Expression
|
||||
''' <summary>
|
||||
''' 字符算数表达式求和
|
||||
''' </summary>
|
||||
Public Class StringExpression
|
||||
''' <summary>精度</summary>
|
||||
Private Shared _doublePrecision As Double = 0.000001
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 替换占位符
|
||||
''' </summary>
|
||||
''' <param name="str">字符串表达式</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function UseMarkSymbolReplace(str As String) As String
|
||||
Dim destString As New StringBuilder
|
||||
str = str.Replace(" ", "")
|
||||
|
||||
str = str.Replace(">>", "r") 'right move
|
||||
str = str.Replace("<<", "l") ' left move
|
||||
str = str.Replace("||", "o") 'or
|
||||
str = str.Replace("&&", "a") 'and
|
||||
str = str.Replace(">=", "g") 'greater equal
|
||||
str = str.Replace("<=", "s") 'small equal
|
||||
str = str.Replace("<>", "u") 'unequal
|
||||
str = str.Replace("!=", "u") 'unequal
|
||||
str = str.Replace("==", "e") 'equal
|
||||
|
||||
|
||||
For i As Integer = 0 To str.Length - 1 '替换负号
|
||||
If i = 0 Then
|
||||
If str.Chars(i) = "-"c Then
|
||||
destString.Append("0"c)
|
||||
End If
|
||||
destString.Append(str.Chars(i))
|
||||
ElseIf str.Chars(i) = "-"c AndAlso str.Chars(i - 1) = "("c Then
|
||||
destString.Append("0"c)
|
||||
destString.Append(str.Chars(i))
|
||||
Else
|
||||
destString.Append(str.Chars(i))
|
||||
End If
|
||||
Next
|
||||
Return destString.ToString()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 替换表达式式中的十六进制占位符为实际内容,例如替换B4为buf中的第4位即buf(4)的值
|
||||
''' </summary>
|
||||
''' <param name="buf"></param>
|
||||
''' <param name="expressionString"></param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function ReplaceBytes(buf() As Byte, expressionString As String) As String
|
||||
Dim ch As Char
|
||||
Dim count As Integer = 0
|
||||
Dim str As String = ""
|
||||
Dim tmp As Integer
|
||||
For i As Integer = 0 To expressionString.Length - 1
|
||||
If expressionString.Chars(i) = "B"c Then
|
||||
ch = expressionString.Chars(i + count + 1)
|
||||
While IsNumeric(ch)
|
||||
count += 1
|
||||
If i + count + 1 >= expressionString.Length Then Exit While
|
||||
ch = expressionString.Chars(i + count + 1)
|
||||
End While
|
||||
If count <= 0 Then Return ""
|
||||
Dim st As String = Mid(expressionString, i + 1 + 1, count)
|
||||
tmp = Convert.ToInt32(st)
|
||||
If tmp > buf.Length - 1 Then Return ""
|
||||
str += buf(tmp).ToString
|
||||
i += count
|
||||
count = 0
|
||||
Else
|
||||
str += expressionString.Chars(i)
|
||||
End If
|
||||
Next
|
||||
Return str
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 获取表达式转换后的结果是否为真,0、false、空字符为假,1,true为真, 其余为通过计算不为0判断真假
|
||||
''' </summary>
|
||||
''' <param name="exp"></param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function GetBooleanResult(exp As String) As Boolean
|
||||
If exp Is Nothing Then Return False
|
||||
If String.IsNullOrWhiteSpace(exp) Then Return False
|
||||
exp = exp.ToLower()
|
||||
If exp.Equals($"false") Then Return False
|
||||
If exp.Equals($"true") Then Return True
|
||||
|
||||
exp = exp.Replace("false", "0"c)
|
||||
exp = exp.Replace("true", "1"c)
|
||||
|
||||
Dim str As String = GetDoubleExpressionResult(exp).ToString()
|
||||
Console.WriteLine($"Result:{str}")
|
||||
Return Math.Abs(GetDoubleExpressionResult(exp) - 0) > _doublePrecision
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 获取double类型运算式字符串后缀表达式
|
||||
''' </summary>
|
||||
''' <param name="str">字符串表达式</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function GetDoubleExpressionResult(str As String) As Double
|
||||
Dim isNum As Boolean
|
||||
Dim numStack As New Stack(Of Double)
|
||||
Dim operatorStack As New Stack(Of Char)
|
||||
Dim num1, num2 As Double
|
||||
Dim priority As Integer
|
||||
Dim ch As Char
|
||||
str = UseMarkSymbolReplace(str)
|
||||
For i As Integer = 0 To str.Length - 1
|
||||
ch = str.Chars(i)
|
||||
If ch >= "0"c AndAlso ch <= "9"c Then '数字处理
|
||||
Dim tmpStr As String = String.Empty
|
||||
Dim len As Integer = 1
|
||||
tmpStr += ch
|
||||
isNum = True
|
||||
While isNum
|
||||
If i + len >= str.Length Then Exit While
|
||||
ch = str.Chars(i + len)
|
||||
If ch >= "0"c AndAlso ch <= "9"c Then
|
||||
tmpStr += ch
|
||||
len += 1
|
||||
ElseIf ch = "."c Then
|
||||
tmpStr += ch
|
||||
len += 1
|
||||
Else
|
||||
isNum = False
|
||||
End If
|
||||
End While
|
||||
numStack.Push(Double.Parse(tmpStr))
|
||||
i += len - 1
|
||||
ElseIf CheckCharValidity(ch) = 1 Then '运算符号
|
||||
If operatorStack.Count = 0 Then
|
||||
operatorStack.Push(ch)
|
||||
Else
|
||||
priority = GetCharacterPriority(ch) '获取当前符号的优先级
|
||||
While operatorStack.Count > 0 AndAlso GetCharacterPriority(operatorStack.Peek) < 11 AndAlso priority <= GetCharacterPriority(operatorStack.Peek)
|
||||
num1 = numStack.Pop
|
||||
num2 = numStack.Pop
|
||||
numStack.Push(GetDoubleResult(num2, num1, operatorStack.Pop))
|
||||
End While
|
||||
If priority = 0 Then '为后半边括号
|
||||
operatorStack.Pop()
|
||||
Else '为前半边括号
|
||||
operatorStack.Push(ch)
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
If i = str.Length - 1 Then
|
||||
priority = -1
|
||||
While operatorStack.Count > 0 AndAlso GetCharacterPriority(operatorStack.Peek) < 11 AndAlso priority <= GetCharacterPriority(operatorStack.Peek)
|
||||
num1 = numStack.Pop
|
||||
num2 = numStack.Pop
|
||||
numStack.Push(GetDoubleResult(num2, num1, operatorStack.Pop))
|
||||
End While
|
||||
End If
|
||||
Next
|
||||
|
||||
Return Math.Round(numStack.Pop, 3) '计算保留小数位三位
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 获取小数类型运算结果
|
||||
''' </summary>
|
||||
''' <param name="num1">浮点型数1</param>
|
||||
''' <param name="num2">浮点型数2</param>
|
||||
''' <param name="c">运算符</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function GetDoubleResult(num1 As Double, num2 As Double, c As Char) As Double
|
||||
Dim result As Double
|
||||
Select Case c
|
||||
Case "*"c
|
||||
result = num1 * num2
|
||||
Case "/"c
|
||||
If Math.Abs(num2 - 0) < _doublePrecision Then Throw New Exception($"除数为0执行失败")
|
||||
result = num1 / num2
|
||||
Case "%"c
|
||||
result = num1 Mod num2
|
||||
Case "+"c
|
||||
result = num1 + num2
|
||||
Case "-"c
|
||||
result = num1 - num2
|
||||
Case "l"c '左移
|
||||
result = CInt(num1) << CInt(num2)
|
||||
Case "r"c '右移
|
||||
result = CInt(num1) >> CInt(num2)
|
||||
Case "&"c
|
||||
result = CInt(num1) And CInt(num2)
|
||||
Case "^"c
|
||||
result = CInt(num1) Xor CInt(num2)
|
||||
Case "|"c
|
||||
result = CInt(num1) Or CInt(num2)
|
||||
|
||||
Case ">"c '大于等于
|
||||
result = CInt(IIf(num1 > num2, 1, 0))
|
||||
Case "<"c '大于等于
|
||||
result = CInt(IIf(num1 < num2, 1, 0))
|
||||
Case "="c '等于
|
||||
result = CInt(IIf(Math.Abs(num1 - num2) < _doublePrecision, 1, 0))
|
||||
Case "g"c '大于等于
|
||||
result = CInt(IIf(num1 >= num2, 1, 0))
|
||||
Case "s"c '小于等于
|
||||
result = CInt(IIf(num1 <= num2, 1, 0))
|
||||
Case "u"c '不等于
|
||||
result = CInt(IIf(Math.Abs(num1 - num2) > _doublePrecision, 1, 0))
|
||||
Case "e"c '等于
|
||||
result = CInt(IIf(Math.Abs(num1 - num2) < _doublePrecision, 1, 0))
|
||||
|
||||
Case "a"c '逻辑与
|
||||
If num1 > 0 AndAlso num2 > 0 Then
|
||||
result = 1
|
||||
Else
|
||||
result = 0
|
||||
End If
|
||||
Case "o"c '逻辑或
|
||||
If num1 > 0 OrElse num2 > 0 Then
|
||||
result = 1
|
||||
Else
|
||||
result = 0
|
||||
End If
|
||||
Case Else
|
||||
Throw New Exception($"未知的操作符:[{c}]")
|
||||
End Select
|
||||
Return result
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 获取符号的优先级
|
||||
''' </summary>
|
||||
''' <param name="c">运算符号</param>
|
||||
''' <returns></returns>
|
||||
Private Shared Function GetCharacterPriority(c As Char) As Integer
|
||||
Dim intNum As Integer
|
||||
Select Case c
|
||||
Case "("c
|
||||
intNum = 11
|
||||
Case "*"c, "/"c, "%"c
|
||||
intNum = 10
|
||||
Case "+"c, "-"c
|
||||
intNum = 9
|
||||
Case "l"c, "r"c
|
||||
intNum = 8
|
||||
Case ">"c, "<"c, "b"c, "s"c
|
||||
intNum = 7
|
||||
Case "="c, "u"c, "e"c
|
||||
intNum = 6
|
||||
Case "&"c
|
||||
intNum = 5
|
||||
Case "^"c
|
||||
intNum = 4
|
||||
Case "|"c
|
||||
intNum = 3
|
||||
Case "a"c
|
||||
intNum = 2
|
||||
Case "o"c
|
||||
intNum = 1
|
||||
Case ")"c
|
||||
intNum = 0
|
||||
Case Else
|
||||
Throw New Exception($"未知的操作符:[{c}]")
|
||||
End Select
|
||||
Return intNum
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 校验字符合法性,0为数字,1为运算符,-1为未使用的运算符
|
||||
''' </summary>
|
||||
''' <param name="c">需要校验的字符</param>
|
||||
''' <returns></returns>
|
||||
Private Shared Function CheckCharValidity(c As Char) As Integer
|
||||
Select Case c
|
||||
Case "1"c, "2"c, "3"c, "4"c, "5"c, "6"c, "7"c, "8"c, "9"c, "0"c
|
||||
|
||||
Return 0
|
||||
Case "+"c, "-"c, "*"c, "/"c, "%"c, "^"c, "|"c, "&"c, "("c, ")"c, "o"c, "a"c, "l"c, "r"c, "."c,
|
||||
"u"c, "g"c, "s"c, "<"c, ">"c, "="c, "e"c
|
||||
|
||||
Return 1
|
||||
Case Else
|
||||
Return -1
|
||||
End Select
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 校验运算式字符串合法性(todo:待进一步完善检测逻辑)
|
||||
''' </summary>
|
||||
''' <param name="str">需要校验的字符串</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function CheckExpressionString(str As String) As Boolean
|
||||
str = str.Replace(" ", "")
|
||||
For i As Integer = 0 To str.Length - 1
|
||||
If CheckCharValidity(str.Chars(i)) = -1 Then
|
||||
Return False
|
||||
End If
|
||||
Next
|
||||
Return True
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
|
||||
'''' <summary>
|
||||
'''' 获取int类型运算式字符串后缀表达式
|
||||
'''' </summary>
|
||||
'''' <param name="str">字符串表达式</param>
|
||||
'''' <returns></returns>
|
||||
'Public Shared Function GetIntegerExpressionResult(str As String) As Integer
|
||||
' Dim isNum As Boolean
|
||||
' Dim numberStack As New Stack(Of Integer)
|
||||
' Dim operatorStack As New Stack(Of Char)
|
||||
' Dim num1, num2, priority As Integer
|
||||
' str = UseMarkSymbolReplace(str, False)
|
||||
|
||||
' For Each c As Char In str
|
||||
' If c >= "0"c AndAlso c <= "9"c Then
|
||||
' If isNum Then
|
||||
' Dim tmp As Integer = numberStack.Pop
|
||||
' tmp = tmp * 10 + Integer.Parse(c.ToString)
|
||||
' numberStack.Push(tmp)
|
||||
' Else
|
||||
' numberStack.Push(Integer.Parse(c.ToString))
|
||||
' isNum = True
|
||||
' End If
|
||||
' ElseIf CheckCharValidity(c) = 1 Then
|
||||
' isNum = False
|
||||
' If operatorStack.Count = 0 Then
|
||||
' operatorStack.Push(c)
|
||||
' Else
|
||||
' priority = GetCharacterPriority(c)
|
||||
' While operatorStack.Count > 0 AndAlso GetCharacterPriority(operatorStack.Peek) < 11 AndAlso priority <= GetCharacterPriority(operatorStack.Peek)
|
||||
' num1 = numberStack.Pop
|
||||
' num2 = numberStack.Pop
|
||||
' numberStack.Push(GetIntegerResult(num2, num1, operatorStack.Pop))
|
||||
' End While
|
||||
' If priority = 0 Then
|
||||
' operatorStack.Pop()
|
||||
' Else
|
||||
' operatorStack.Push(c)
|
||||
' End If
|
||||
' End If
|
||||
' End If
|
||||
|
||||
' If c = str.Chars(str.Length - 1) Then
|
||||
' priority = GetCharacterPriority(c)
|
||||
' While operatorStack.Count > 0 AndAlso GetCharacterPriority(operatorStack.Peek) < 11 AndAlso priority <= GetCharacterPriority(operatorStack.Peek)
|
||||
' num1 = numberStack.Pop
|
||||
' num2 = numberStack.Pop
|
||||
' numberStack.Push(GetIntegerResult(num2, num1, operatorStack.Pop))
|
||||
' End While
|
||||
' End If
|
||||
' Next
|
||||
|
||||
' Return numberStack.Pop
|
||||
'End Function
|
||||
|
||||
'''' <summary>
|
||||
'''' 获取整形的运算结果
|
||||
'''' </summary>
|
||||
'''' <param name="num1">整数1</param>
|
||||
'''' <param name="num2">整数2</param>
|
||||
'''' <param name="c">运算符</param>
|
||||
'''' <returns>预算结果</returns>
|
||||
'Public Shared Function GetIntegerResult(num1 As Integer, num2 As Integer, c As Char) As Integer
|
||||
' Dim result As Integer
|
||||
' Select Case c
|
||||
' Case "*"c
|
||||
' result = num1 * num2
|
||||
' Case "/"c
|
||||
' result = num1 \ num2
|
||||
' Case "%"c
|
||||
' result = num1 Mod num2
|
||||
' Case "+"c
|
||||
' result = num1 + num2
|
||||
' Case "-"c
|
||||
' result = num1 - num2
|
||||
' Case "L"c
|
||||
' result = num1 << num2
|
||||
' Case "R"c
|
||||
' result = num1 >> num2
|
||||
' Case "&"c
|
||||
' result = num1 And num2
|
||||
' Case "^"c
|
||||
' result = num1 Xor num2
|
||||
' Case "|"c
|
||||
' result = num1 Or num2
|
||||
|
||||
' Case ">"c '大于等于
|
||||
' result = CInt(IIf(num1 > num2, 1, 0))
|
||||
' Case "<"c '大于等于
|
||||
' result = CInt(IIf(num1 < num2, 1, 0))
|
||||
' Case "="c '等于
|
||||
' result = CInt(IIf(num1 = num2, 1, 0))
|
||||
' Case "g"c '大于等于
|
||||
' result = CInt(IIf(num1 >= num2, 1, 0))
|
||||
' Case "l"c '小于等于
|
||||
' result = CInt(IIf(num1 <= num2, 1, 0))
|
||||
' Case "u"c '不等于
|
||||
' result = CInt(IIf(num1 <> num2, 1, 0))
|
||||
' Case "e"c '等于
|
||||
' result = CInt(IIf(num1 = num2, 1, 0))
|
||||
|
||||
' Case "A"c
|
||||
' If num1 > 0 AndAlso num2 > 0 Then
|
||||
' result = 1
|
||||
' Else
|
||||
' result = 0
|
||||
' End If
|
||||
' Case "O"c
|
||||
' If num1 > 0 OrElse num2 > 0 Then
|
||||
' result = 1
|
||||
' Else
|
||||
' result = 0
|
||||
' End If
|
||||
' Case Else
|
||||
' Throw New Exception($"未知的操作符:[{c}]")
|
||||
' End Select
|
||||
' Return result
|
||||
'End Function
|
||||
|
||||
|
||||
' Private Shared ReadOnly _operateList As New List(Of Char) From {"+"c, "*"c, "/"c, "%"c, "-"c, "^"c, "|"c, "&"c}
|
||||
|
||||
|
||||
|
||||
'Private Shared Function CheckDoubleResultChar(exp As String) As Boolean
|
||||
' For i As Integer = 0 To exp.Length - 1
|
||||
' If exp.Chars(i) > "0"c AndAlso exp.Chars(i) < "9"c Then
|
||||
' '有效数字
|
||||
' Continue For
|
||||
' End If
|
||||
|
||||
|
||||
' Select Case exp.Chars(i)
|
||||
' Case "-"c
|
||||
' '减运算符前不能为运算符
|
||||
|
||||
|
||||
' Case "+"c, "*"c, "/"c, "%"c
|
||||
' '运算符前后位必须为数字
|
||||
' If i = 0 Then Return False '不能为开头
|
||||
' If i = exp.Length - 1 Then Return False '不能为结尾
|
||||
' ' If exp.Chars(i + 1) Then Return False'下一位不能
|
||||
|
||||
' Case "!"c'是否应该支持
|
||||
' '按位操作前后须有数字
|
||||
|
||||
' Case "^"c
|
||||
' '按位操作前后须有数字
|
||||
|
||||
' Case "|"c
|
||||
' '按位操作前后须有数字
|
||||
|
||||
' '逻辑操作前后须有数字
|
||||
|
||||
|
||||
' '确定是否为逻辑操作
|
||||
|
||||
' Case "&"c
|
||||
' '按位操作前后须有数字
|
||||
|
||||
' '逻辑操作前后须有数字
|
||||
|
||||
|
||||
' '确定是否为逻辑操作
|
||||
|
||||
' Case ">"c
|
||||
' '判断逻辑符或是组合符号
|
||||
|
||||
' Case "<"c
|
||||
' '判断逻辑符或是组合符号
|
||||
|
||||
' Case "="c
|
||||
|
||||
' '判断逻辑符或是组合符号
|
||||
|
||||
' Case "."c
|
||||
' '前后必为数字
|
||||
|
||||
' Case "("c
|
||||
' '括号必须匹配
|
||||
|
||||
' Case ")"c
|
||||
' '括号必须匹配
|
||||
|
||||
' Case " "c
|
||||
' '空格忽略
|
||||
|
||||
' Case Else
|
||||
|
||||
|
||||
' End Select
|
||||
' Next
|
||||
|
||||
|
||||
' Return False
|
||||
'End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 返回表达式的值 'Momo 2022-11-10 增加 、Momo 2023-12-15 错误时抛出错误而不是弹窗
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Shared Function ExecuteLimit(ByVal strExpression As String, ByRef dblResult As String) As Boolean
|
||||
'检测有无需要计算的表达式
|
||||
If String.IsNullOrWhiteSpace(strExpression) Then
|
||||
'’MsgBox(strExpression & " 是空白值或表达式,执行失败!")
|
||||
'Throw New Exception(strExpression & " 是空白值或表达式,执行失败!") 'Momo 2023-12-15 错误时抛出错误而不是弹窗
|
||||
Return False
|
||||
End If
|
||||
|
||||
'检测表达式的有效性
|
||||
If StringExpression.CheckExpressionString(strExpression) = False Then
|
||||
'’MsgBox(strExpression & " 是无效值或表达式,执行失败!")
|
||||
'Throw New Exception(strExpression & " 是无效值或表达式,执行失败!") 'Momo 2023-12-15 错误时抛出错误而不是弹窗
|
||||
Return False
|
||||
End If
|
||||
|
||||
Try
|
||||
dblResult = StringExpression.GetDoubleExpressionResult(strExpression).ToString()
|
||||
Return True
|
||||
Catch ex As Exception
|
||||
'’MsgBox(strExpression & " 表达式计算失败,执行失败!")
|
||||
'Throw New Exception(strExpression & " 表达式计算失败,执行失败!") 'Momo 2023-12-15 错误时抛出错误而不是弹窗
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
248
UTS_Core/ImageProcessor/ImageProcessor.vb
Normal file
248
UTS_Core/ImageProcessor/ImageProcessor.vb
Normal file
@@ -0,0 +1,248 @@
|
||||
Imports System.Drawing
|
||||
Imports System.Drawing.Imaging
|
||||
Imports System.IO
|
||||
Imports System.Windows.Forms
|
||||
|
||||
Namespace ImageProcessor
|
||||
Public Class ImageProcessor
|
||||
Public Shared Function GetBitmapImage(path As String) As Image
|
||||
Using fileStream As New FileStream(path, FileMode.Open, FileAccess.Read)
|
||||
Dim byteLength As Integer = CInt(fileStream.Length)
|
||||
Dim fileBytes(byteLength - 1) As Byte
|
||||
fileStream.Read(fileBytes, 0, byteLength)
|
||||
fileStream.Close()
|
||||
Return Image.FromStream(New MemoryStream(fileBytes))
|
||||
End Using
|
||||
End Function
|
||||
|
||||
Public Shared Function ImagePathToBytes(path As String) As Byte()
|
||||
Using fileStream As New FileStream(path, FileMode.Open, FileAccess.Read)
|
||||
Dim byteLength As Integer = CInt(fileStream.Length)
|
||||
Dim fileBytes(byteLength - 1) As Byte
|
||||
fileStream.Read(fileBytes, 0, byteLength)
|
||||
fileStream.Close()
|
||||
Return fileBytes
|
||||
End Using
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 将图像格式转换为二进制数组,以jpeg的格式
|
||||
''' </summary>
|
||||
''' <param name="img"></param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function ImageToBytes(img As Image) As Byte()
|
||||
Dim ms As New MemoryStream()
|
||||
If img Is Nothing Then Return New Byte() {}
|
||||
img.Save(ms, ImageFormat.Jpeg)
|
||||
Return ms.GetBuffer()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 将图像格式转换为二进制数组
|
||||
''' </summary>
|
||||
''' <param name="img">图像</param>
|
||||
''' <param name="format">图像格式</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function ImageToBytes(img As Image, format As ImageFormat) As Byte()
|
||||
Dim ms As New MemoryStream()
|
||||
If img Is Nothing Then Return New Byte() {}
|
||||
img.Save(ms, format)
|
||||
Return ms.GetBuffer()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 将二进制数组转换为图像格式
|
||||
''' </summary>
|
||||
''' <param name="bytes"></param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function BytesToImage(bytes() As Byte) As Image
|
||||
Dim ms As New MemoryStream(bytes)
|
||||
Dim img As Image = Nothing
|
||||
Try
|
||||
img = Image.FromStream(ms)
|
||||
Catch ex As Exception
|
||||
Console.WriteLine($"BytesToImage Error:{ex.Message}")
|
||||
End Try
|
||||
Return img
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 将图片变更为String格式,默认PNG格式保存
|
||||
''' </summary>
|
||||
''' <param name="img"></param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function ImageToString(img As Image) As String
|
||||
If img Is Nothing Then Return String.Empty
|
||||
Using ms As New MemoryStream()
|
||||
img.Save(ms, ImageFormat.Png) 'png格式支持存储文件中并还原,其他格式存在问题
|
||||
Dim buffer6() As Byte = ms.GetBuffer
|
||||
|
||||
Return Convert.ToBase64String(buffer6)
|
||||
End Using
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 将图片变更为String格式
|
||||
''' </summary>
|
||||
''' <param name="img"></param>
|
||||
''' <param name="format">保存格式</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function ImageToString(img As Image, format As Imaging.ImageFormat) As String
|
||||
If img Is Nothing Then Return String.Empty
|
||||
Using ms As New MemoryStream()
|
||||
img.Save(ms, format)
|
||||
Dim buffer() As Byte = ms.GetBuffer
|
||||
Return Convert.ToBase64String(buffer)
|
||||
End Using
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 将图片string还原为图片格式
|
||||
''' </summary>
|
||||
''' <param name="imgString"></param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function StringToImage(imgString As String) As Image
|
||||
If String.IsNullOrEmpty(imgString) Then Return Nothing
|
||||
Using ms As New MemoryStream(Convert.FromBase64String(imgString))
|
||||
Return Image.FromStream(ms, True)
|
||||
End Using
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 压缩图像到指定的高度与宽度
|
||||
''' </summary>
|
||||
''' <param name="bitmap">图像</param>
|
||||
''' <param name="maxWidth">指定的宽度</param>
|
||||
''' <param name="maxHeight">指定的高度</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function CompressImageWithSize(bitmap As Image, Optional maxWidth As Integer = 120, Optional maxHeight As Integer = 90) As System.Drawing.Bitmap
|
||||
If bitmap Is Nothing Then Return Nothing
|
||||
|
||||
Dim actualWidth As Integer = CInt(IIf(bitmap.Width < maxWidth, bitmap.Width, maxWidth))
|
||||
Dim actualHeight As Integer = CInt(IIf(bitmap.Height < maxHeight, bitmap.Height, maxHeight))
|
||||
Dim actualBitmap As New System.Drawing.Bitmap(actualWidth, actualHeight)
|
||||
|
||||
Using g As Graphics = System.Drawing.Graphics.FromImage(actualBitmap)
|
||||
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default
|
||||
g.DrawImage(bitmap, New System.Drawing.Rectangle(0, 0, actualWidth, actualHeight), New System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.GraphicsUnit.Pixel)
|
||||
End Using
|
||||
|
||||
Return actualBitmap
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 压缩图像,根据宽度比
|
||||
''' </summary>
|
||||
''' <param name="bitmap">图像</param>
|
||||
''' <param name="maxWidth">指定的宽度</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function CompressImageWithWidth(bitmap As Bitmap, Optional maxWidth As Integer = 600) As System.Drawing.Bitmap
|
||||
If bitmap Is Nothing Then Return Nothing
|
||||
If bitmap.Width = maxWidth Then Return bitmap
|
||||
|
||||
Dim actualWidth As Integer = CInt(IIf(bitmap.Width < maxWidth, bitmap.Width, maxWidth))
|
||||
Dim actualHeight As Integer = CInt(Math.Round(bitmap.Height * (actualWidth / bitmap.Width)))
|
||||
|
||||
Dim actualBitmap As New System.Drawing.Bitmap(actualWidth, actualHeight)
|
||||
|
||||
Using g As Graphics = System.Drawing.Graphics.FromImage(actualBitmap)
|
||||
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default
|
||||
g.DrawImage(bitmap, New System.Drawing.Rectangle(0, 0, actualWidth, actualHeight), New System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.GraphicsUnit.Pixel)
|
||||
End Using
|
||||
Return actualBitmap
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 压缩图像,根据高度比
|
||||
''' </summary>
|
||||
''' <param name="bitmap">图像</param>
|
||||
''' <param name="maxHeight">指定的高度</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function CompressImageWithHeight(bitmap As Bitmap, Optional maxHeight As Integer = 450) As System.Drawing.Bitmap
|
||||
If bitmap Is Nothing Then Return Nothing
|
||||
If bitmap.Height < maxHeight Then Return bitmap
|
||||
|
||||
Dim actualHeight As Integer = CInt(IIf(bitmap.Height < maxHeight, bitmap.Height, maxHeight))
|
||||
Dim actualWidth As Integer = CInt(Math.Round(bitmap.Width * (actualHeight / bitmap.Height)))
|
||||
|
||||
Dim actualBitmap As New System.Drawing.Bitmap(actualWidth, actualHeight)
|
||||
|
||||
Using g As Graphics = System.Drawing.Graphics.FromImage(actualBitmap)
|
||||
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default
|
||||
g.DrawImage(bitmap, New System.Drawing.Rectangle(0, 0, actualWidth, actualHeight), New System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.GraphicsUnit.Pixel)
|
||||
End Using
|
||||
Return actualBitmap
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 按指定比例有损的压缩图像
|
||||
''' </summary>
|
||||
''' <param name="bitmap"></param>
|
||||
''' <param name="encoding"></param>
|
||||
''' <param name="quality"></param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function CompressImageWithQuality(bitmap As Bitmap, encoding As Imaging.ImageCodecInfo, Optional quality As Integer = 20) As Bitmap
|
||||
If bitmap Is Nothing Then Return Nothing
|
||||
Dim ps As New System.Drawing.Imaging.EncoderParameters(1)
|
||||
ps.Param(0) = New EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality)
|
||||
|
||||
Dim ms As New MemoryStream
|
||||
bitmap.Save(ms, encoding, ps)
|
||||
|
||||
Dim compressedBitmap As New System.Drawing.Bitmap(ms)
|
||||
|
||||
Return compressedBitmap
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 获取图片的代码器信息
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Shared Function GetImageEncoders() As Dictionary(Of String, System.Drawing.Imaging.ImageCodecInfo)
|
||||
Dim result As New Dictionary(Of String, System.Drawing.Imaging.ImageCodecInfo)
|
||||
Dim encoders As List(Of ImageCodecInfo) = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders().ToList()
|
||||
|
||||
For Each encode As ImageCodecInfo In encoders
|
||||
result.Add(encode.MimeType, encode)
|
||||
Next
|
||||
Return result
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 截取整个电脑屏幕
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Shared Function CaptureScreen() As Image
|
||||
Dim startPoint As New Point(0, 0)
|
||||
Dim regionSize As New Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height)
|
||||
Dim pic As New Bitmap(regionSize.Width, regionSize.Height)
|
||||
|
||||
Using g As Graphics = Graphics.FromImage(pic)
|
||||
g.CopyFromScreen(startPoint, startPoint, regionSize)
|
||||
End Using
|
||||
|
||||
Return pic
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 截取整个电脑屏幕,并指定文件路径下生成jpg格式文件。
|
||||
''' </summary>
|
||||
Public Shared Sub SaveScreenCapture(path As String)
|
||||
Dim startPoint As New Point(0, 0)
|
||||
Dim regionSize As New Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height)
|
||||
Dim pic As New Bitmap(regionSize.Width, regionSize.Height)
|
||||
|
||||
Using g As Graphics = Graphics.FromImage(pic)
|
||||
g.CopyFromScreen(startPoint, startPoint, regionSize)
|
||||
pic.Save(path, ImageFormat.Jpeg)
|
||||
End Using
|
||||
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
13
UTS_Core/My Project/Application.Designer.vb
generated
Normal file
13
UTS_Core/My Project/Application.Designer.vb
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
'------------------------------------------------------------------------------
|
||||
' <auto-generated>
|
||||
' 此代码由工具生成。
|
||||
' 运行时版本:4.0.30319.42000
|
||||
'
|
||||
' 对此文件的更改可能会导致不正确的行为,并且如果
|
||||
' 重新生成代码,这些更改将会丢失。
|
||||
' </auto-generated>
|
||||
'------------------------------------------------------------------------------
|
||||
|
||||
Option Strict On
|
||||
Option Explicit On
|
||||
|
||||
10
UTS_Core/My Project/Application.myapp
Normal file
10
UTS_Core/My Project/Application.myapp
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<MySubMain>false</MySubMain>
|
||||
<SingleInstance>false</SingleInstance>
|
||||
<ShutdownMode>0</ShutdownMode>
|
||||
<EnableVisualStyles>true</EnableVisualStyles>
|
||||
<AuthenticationMode>0</AuthenticationMode>
|
||||
<ApplicationType>1</ApplicationType>
|
||||
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
|
||||
</MyApplicationData>
|
||||
35
UTS_Core/My Project/AssemblyInfo.vb
Normal file
35
UTS_Core/My Project/AssemblyInfo.vb
Normal file
@@ -0,0 +1,35 @@
|
||||
Imports System
|
||||
Imports System.Reflection
|
||||
Imports System.Runtime.InteropServices
|
||||
|
||||
' 有关程序集的一般信息由以下
|
||||
' 控制。更改这些特性值可修改
|
||||
' 与程序集关联的信息。
|
||||
|
||||
'查看程序集特性的值
|
||||
|
||||
<Assembly: AssemblyTitle("UTS_Core")>
|
||||
<Assembly: AssemblyDescription("")>
|
||||
<Assembly: AssemblyCompany("")>
|
||||
<Assembly: AssemblyProduct("UTS_Core")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2020")>
|
||||
<Assembly: AssemblyTrademark("")>
|
||||
|
||||
<Assembly: ComVisible(False)>
|
||||
|
||||
'如果此项目向 COM 公开,则下列 GUID 用于 typelib 的 ID
|
||||
<Assembly: Guid("af21bb12-fc57-4d45-9cdf-0ecf12840569")>
|
||||
|
||||
' 程序集的版本信息由下列四个值组成:
|
||||
'
|
||||
' 主版本
|
||||
' 次版本
|
||||
' 生成号
|
||||
' 修订号
|
||||
'
|
||||
'可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
|
||||
'通过使用 "*",如下所示:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("1.0.0.0")>
|
||||
<Assembly: AssemblyFileVersion("1.0.0.0")>
|
||||
63
UTS_Core/My Project/Resources.Designer.vb
generated
Normal file
63
UTS_Core/My Project/Resources.Designer.vb
generated
Normal file
@@ -0,0 +1,63 @@
|
||||
'------------------------------------------------------------------------------
|
||||
' <auto-generated>
|
||||
' 此代码由工具生成。
|
||||
' 运行时版本:4.0.30319.42000
|
||||
'
|
||||
' 对此文件的更改可能会导致不正确的行为,并且如果
|
||||
' 重新生成代码,这些更改将会丢失。
|
||||
' </auto-generated>
|
||||
'------------------------------------------------------------------------------
|
||||
|
||||
Option Strict On
|
||||
Option Explicit On
|
||||
|
||||
Imports System
|
||||
|
||||
Namespace My.Resources
|
||||
|
||||
'此类是由 StronglyTypedResourceBuilder
|
||||
'类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
||||
'若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
||||
'(以 /str 作为命令选项),或重新生成 VS 项目。
|
||||
'''<summary>
|
||||
''' 一个强类型的资源类,用于查找本地化的字符串等。
|
||||
'''</summary>
|
||||
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0"), _
|
||||
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
|
||||
Friend Module Resources
|
||||
|
||||
Private resourceMan As Global.System.Resources.ResourceManager
|
||||
|
||||
Private resourceCulture As Global.System.Globalization.CultureInfo
|
||||
|
||||
'''<summary>
|
||||
''' 返回此类使用的缓存的 ResourceManager 实例。
|
||||
'''</summary>
|
||||
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
|
||||
Get
|
||||
If Object.ReferenceEquals(resourceMan, Nothing) Then
|
||||
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("UTS_Core.Resources", GetType(Resources).Assembly)
|
||||
resourceMan = temp
|
||||
End If
|
||||
Return resourceMan
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' 重写当前线程的 CurrentUICulture 属性,对
|
||||
''' 使用此强类型资源类的所有资源查找执行重写。
|
||||
'''</summary>
|
||||
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Friend Property Culture() As Global.System.Globalization.CultureInfo
|
||||
Get
|
||||
Return resourceCulture
|
||||
End Get
|
||||
Set
|
||||
resourceCulture = value
|
||||
End Set
|
||||
End Property
|
||||
End Module
|
||||
End Namespace
|
||||
117
UTS_Core/My Project/Resources.resx
Normal file
117
UTS_Core/My Project/Resources.resx
Normal file
@@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
133
UTS_Core/My Project/Settings.Designer.vb
generated
Normal file
133
UTS_Core/My Project/Settings.Designer.vb
generated
Normal file
@@ -0,0 +1,133 @@
|
||||
'------------------------------------------------------------------------------
|
||||
' <auto-generated>
|
||||
' 此代码由工具生成。
|
||||
' 运行时版本:4.0.30319.42000
|
||||
'
|
||||
' 对此文件的更改可能会导致不正确的行为,并且如果
|
||||
' 重新生成代码,这些更改将会丢失。
|
||||
' </auto-generated>
|
||||
'------------------------------------------------------------------------------
|
||||
|
||||
Option Strict On
|
||||
Option Explicit On
|
||||
|
||||
|
||||
Namespace My
|
||||
|
||||
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.6.0.0"), _
|
||||
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Partial Friend NotInheritable Class MySettings
|
||||
Inherits Global.System.Configuration.ApplicationSettingsBase
|
||||
|
||||
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
|
||||
|
||||
#Region "My.Settings 自动保存功能"
|
||||
#If _MyType = "WindowsForms" Then
|
||||
Private Shared addedHandler As Boolean
|
||||
|
||||
Private Shared addedHandlerLockObject As New Object
|
||||
|
||||
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)
|
||||
If My.Application.SaveMySettingsOnExit Then
|
||||
My.Settings.Save()
|
||||
End If
|
||||
End Sub
|
||||
#End If
|
||||
#End Region
|
||||
|
||||
Public Shared ReadOnly Property [Default]() As MySettings
|
||||
Get
|
||||
|
||||
#If _MyType = "WindowsForms" Then
|
||||
If Not addedHandler Then
|
||||
SyncLock addedHandlerLockObject
|
||||
If Not addedHandler Then
|
||||
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
|
||||
addedHandler = True
|
||||
End If
|
||||
End SyncLock
|
||||
End If
|
||||
#End If
|
||||
Return defaultInstance
|
||||
End Get
|
||||
End Property
|
||||
|
||||
<Global.System.Configuration.UserScopedSettingAttribute(), _
|
||||
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||
Global.System.Configuration.DefaultSettingValueAttribute("False")> _
|
||||
Public Property IsAutoLogin() As Boolean
|
||||
Get
|
||||
Return CType(Me("IsAutoLogin"),Boolean)
|
||||
End Get
|
||||
Set
|
||||
Me("IsAutoLogin") = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
<Global.System.Configuration.UserScopedSettingAttribute(), _
|
||||
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||
Global.System.Configuration.DefaultSettingValueAttribute("False")> _
|
||||
Public Property IsRecordPassWord() As Boolean
|
||||
Get
|
||||
Return CType(Me("IsRecordPassWord"),Boolean)
|
||||
End Get
|
||||
Set
|
||||
Me("IsRecordPassWord") = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
<Global.System.Configuration.UserScopedSettingAttribute(), _
|
||||
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||
Global.System.Configuration.DefaultSettingValueAttribute("")> _
|
||||
Public Property UserAccount() As String
|
||||
Get
|
||||
Return CType(Me("UserAccount"),String)
|
||||
End Get
|
||||
Set
|
||||
Me("UserAccount") = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
<Global.System.Configuration.UserScopedSettingAttribute(), _
|
||||
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||
Global.System.Configuration.DefaultSettingValueAttribute("")> _
|
||||
Public Property UserPassword() As String
|
||||
Get
|
||||
Return CType(Me("UserPassword"),String)
|
||||
End Get
|
||||
Set
|
||||
Me("UserPassword") = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
<Global.System.Configuration.UserScopedSettingAttribute(), _
|
||||
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||
Global.System.Configuration.DefaultSettingValueAttribute("0")> _
|
||||
Public Property SpcMain_SplitterDistance() As Integer
|
||||
Get
|
||||
Return CType(Me("SpcMain_SplitterDistance"),Integer)
|
||||
End Get
|
||||
Set
|
||||
Me("SpcMain_SplitterDistance") = value
|
||||
End Set
|
||||
End Property
|
||||
End Class
|
||||
End Namespace
|
||||
|
||||
Namespace My
|
||||
|
||||
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
|
||||
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
|
||||
Friend Module MySettingsProperty
|
||||
|
||||
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
|
||||
Friend ReadOnly Property Settings() As Global.UTS_Core.My.MySettings
|
||||
Get
|
||||
Return Global.UTS_Core.My.MySettings.Default
|
||||
End Get
|
||||
End Property
|
||||
End Module
|
||||
End Namespace
|
||||
21
UTS_Core/My Project/Settings.settings
Normal file
21
UTS_Core/My Project/Settings.settings
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="My" GeneratedClassName="MySettings" UseMySettingsClassName="true">
|
||||
<Profiles />
|
||||
<Settings>
|
||||
<Setting Name="IsAutoLogin" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="IsRecordPassWord" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="UserAccount" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="UserPassword" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="SpcMain_SplitterDistance" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
||||
164
UTS_Core/Security/Aes128.vb
Normal file
164
UTS_Core/Security/Aes128.vb
Normal file
@@ -0,0 +1,164 @@
|
||||
Imports System.Security.Cryptography
|
||||
Imports System.Text
|
||||
|
||||
Namespace Security
|
||||
|
||||
Public Class Aes128
|
||||
'todo:解密秘钥不应出现明文,考虑修改为十六进制数组
|
||||
''' <summary>服务器密钥</summary>
|
||||
Public Shared ReadOnly ServerAesKey As String = "^5GHo96tr5ff&*Hphg7665^fyu&uOhj0j[0[(jOIhI&g77FgghO*hhHY8h(*H&-987OygO8yg*yS$&G&aG9*&6g96*&7^RA65s76r*&&G(*(7(Gyg7#7Ff7F*&(*&&^"
|
||||
|
||||
''' <summary>
|
||||
''' 加密文本为Base64编码
|
||||
''' </summary>
|
||||
''' <param name="source">需要加密字符串</param>
|
||||
''' <param name="key">密钥</param>
|
||||
''' <returns></returns>
|
||||
''' <remarks></remarks>
|
||||
Public Shared Function EncryptStr(source As String, key As String) As String
|
||||
|
||||
Dim inBuff As Byte()
|
||||
Dim crypt As ICryptoTransform
|
||||
Dim msp As New MD5CryptoServiceProvider
|
||||
Using encrypt As Aes = Aes.Create("AES")
|
||||
Dim keyBytes() As Byte = msp.ComputeHash(Encoding.UTF8.GetBytes(key))
|
||||
encrypt.BlockSize = keyBytes.Length * 8
|
||||
encrypt.Key = keyBytes
|
||||
encrypt.IV = keyBytes
|
||||
encrypt.Mode = CipherMode.CBC
|
||||
encrypt.Padding = PaddingMode.PKCS7
|
||||
crypt = encrypt.CreateEncryptor()
|
||||
End Using
|
||||
inBuff = Encoding.UTF8.GetBytes(source)
|
||||
msp.Dispose()
|
||||
Return Convert.ToBase64String(crypt.TransformFinalBlock(inBuff, 0, inBuff.Length))
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 加密文本为Base64编码
|
||||
''' </summary>
|
||||
''' <param name="source">需要加密字符串</param>
|
||||
''' <param name="key">密钥</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function EncryptStr(ByVal source As String, key() As Byte) As String
|
||||
Dim inBuff As Byte()
|
||||
Dim crypt As ICryptoTransform
|
||||
Dim msp As New MD5CryptoServiceProvider
|
||||
Using encrypt As Aes = Aes.Create("AES")
|
||||
Dim keyBytes() As Byte = msp.ComputeHash(key)
|
||||
encrypt.BlockSize = keyBytes.Length * 8
|
||||
encrypt.Key = keyBytes
|
||||
encrypt.IV = keyBytes
|
||||
encrypt.Mode = CipherMode.CBC
|
||||
encrypt.Padding = PaddingMode.PKCS7
|
||||
crypt = encrypt.CreateEncryptor()
|
||||
End Using
|
||||
inBuff = Encoding.UTF8.GetBytes(source)
|
||||
msp.Dispose()
|
||||
Return Convert.ToBase64String(crypt.TransformFinalBlock(inBuff, 0, inBuff.Length))
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 加密文本为Base64编码
|
||||
''' </summary>
|
||||
''' <param name="source">需要加密字符串</param>
|
||||
''' <param name="key">密钥</param>
|
||||
''' <param name="encode">密钥转换字符编码</param>
|
||||
''' <returns></returns>
|
||||
''' <remarks></remarks>
|
||||
Public Shared Function EncryptStr(ByVal source As String, ByVal key As String, ByVal encode As Encoding) As String
|
||||
|
||||
Dim inBuff As Byte()
|
||||
Dim crypt As ICryptoTransform
|
||||
Dim msp As New MD5CryptoServiceProvider
|
||||
Using encrypt As Aes = Aes.Create("AES")
|
||||
Dim keyBytes() As Byte = msp.ComputeHash(encode.GetBytes(key))
|
||||
encrypt.BlockSize = keyBytes.Length * 8
|
||||
encrypt.Key = keyBytes
|
||||
encrypt.IV = keyBytes
|
||||
encrypt.Mode = CipherMode.CBC
|
||||
encrypt.Padding = PaddingMode.PKCS7
|
||||
crypt = encrypt.CreateEncryptor()
|
||||
End Using
|
||||
inBuff = encode.GetBytes(source)
|
||||
msp.Dispose()
|
||||
Return Convert.ToBase64String(crypt.TransformFinalBlock(inBuff, 0, inBuff.Length))
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 解密Base64编码的字符串
|
||||
''' </summary>
|
||||
''' <param name="encodedStr">需要解密字符串</param>
|
||||
''' <param name="key">密钥</param>
|
||||
''' <returns></returns>
|
||||
''' <remarks></remarks>
|
||||
Public Shared Function DecryptStr(ByVal encodedStr As String, ByVal key As String) As String
|
||||
Dim inBuff As Byte()
|
||||
Dim crypt As ICryptoTransform
|
||||
Dim msp As New MD5CryptoServiceProvider
|
||||
Using decrypt As Aes = Aes.Create("AES")
|
||||
Dim keyBytes() As Byte = msp.ComputeHash(Encoding.UTF8.GetBytes(key)) '设置密钥
|
||||
decrypt.BlockSize = keyBytes.Length * 8
|
||||
decrypt.Key = keyBytes
|
||||
decrypt.IV = keyBytes
|
||||
decrypt.Mode = CipherMode.CBC
|
||||
decrypt.Padding = PaddingMode.PKCS7
|
||||
crypt = decrypt.CreateDecryptor()
|
||||
End Using
|
||||
inBuff = Convert.FromBase64String(encodedStr)
|
||||
msp.Dispose()
|
||||
Return Encoding.UTF8.GetString(crypt.TransformFinalBlock(inBuff, 0, inBuff.Length))
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 解密Base64编码的字符串
|
||||
''' </summary>
|
||||
''' <param name="encodedStr">需要解密字符串</param>
|
||||
''' <param name="key">密钥</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function DecryptStr(encodedStr As String, key() As Byte) As String
|
||||
Dim inBuff As Byte()
|
||||
Dim crypt As ICryptoTransform
|
||||
Dim msp As New MD5CryptoServiceProvider
|
||||
Using decrypt As Aes = Aes.Create("AES")
|
||||
Dim keyBytes() As Byte = msp.ComputeHash(key)
|
||||
decrypt.BlockSize = keyBytes.Length * 8
|
||||
decrypt.Key = keyBytes
|
||||
decrypt.IV = keyBytes
|
||||
decrypt.Mode = CipherMode.CBC
|
||||
decrypt.Padding = PaddingMode.PKCS7
|
||||
crypt = decrypt.CreateDecryptor()
|
||||
End Using
|
||||
inBuff = Convert.FromBase64String(encodedStr)
|
||||
msp.Dispose()
|
||||
Return Encoding.UTF8.GetString(crypt.TransformFinalBlock(inBuff, 0, inBuff.Length))
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 解密Base64编码的字符串
|
||||
''' </summary>
|
||||
''' <param name="encodedStr">需要解密字符串</param>
|
||||
''' <param name="key">密钥</param>
|
||||
''' <param name="encode">密钥转换字符编码</param>
|
||||
''' <returns></returns>
|
||||
''' <remarks></remarks>
|
||||
Public Shared Function DecryptStr(ByVal encodedStr As String, ByVal key As String, ByVal encode As Encoding) As String
|
||||
Dim inBuff As Byte()
|
||||
Dim crypt As ICryptoTransform
|
||||
Dim msp As New MD5CryptoServiceProvider
|
||||
Using decrypt As Aes = Aes.Create("AES")
|
||||
Dim keyBytes() As Byte = msp.ComputeHash(encode.GetBytes(key)) '设置密钥
|
||||
decrypt.BlockSize = keyBytes.Length * 8
|
||||
decrypt.Key = keyBytes
|
||||
decrypt.IV = keyBytes
|
||||
decrypt.Mode = CipherMode.CBC
|
||||
decrypt.Padding = PaddingMode.PKCS7
|
||||
crypt = decrypt.CreateDecryptor()
|
||||
End Using
|
||||
inBuff = Convert.FromBase64String(encodedStr)
|
||||
msp.Dispose()
|
||||
Return encode.GetString(crypt.TransformFinalBlock(inBuff, 0, inBuff.Length))
|
||||
End Function
|
||||
End Class
|
||||
End Namespace
|
||||
40
UTS_Core/Security/MD5.vb
Normal file
40
UTS_Core/Security/MD5.vb
Normal file
@@ -0,0 +1,40 @@
|
||||
Imports System.Security.Cryptography
|
||||
Imports System.Text
|
||||
|
||||
Namespace Security
|
||||
Public Class Md5
|
||||
''' <summary>
|
||||
''' 获取字符串的MD5值
|
||||
''' </summary>
|
||||
''' <param name="str">需要求MD5的原文字符串</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function GetStringMd5(str As String) As String
|
||||
Dim md5Hasher As New MD5CryptoServiceProvider()
|
||||
Dim data As Byte() = md5Hasher.ComputeHash(Encoding.UTF8.GetBytes(str))
|
||||
Dim fileMd5 As New StringBuilder()
|
||||
Dim i As Integer
|
||||
For i = 0 To data.Length - 1
|
||||
fileMd5.Append(data(i).ToString("X2"))
|
||||
Next
|
||||
|
||||
Return fileMd5.ToString()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 获取文件的MD5值
|
||||
''' </summary>
|
||||
''' <param name="filepath">文件路径</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function GetFileMd5(filepath As String) As String
|
||||
Dim md5Hasher As New MD5CryptoServiceProvider()
|
||||
Dim data As Byte() = md5Hasher.ComputeHash(IO.File.ReadAllBytes(filepath))
|
||||
Dim fileMd5 As New StringBuilder()
|
||||
Dim i As Integer
|
||||
For i = 0 To data.Length - 1
|
||||
fileMd5.Append(data(i).ToString("X2"))
|
||||
Next
|
||||
|
||||
Return fileMd5.ToString()
|
||||
End Function
|
||||
End Class
|
||||
End Namespace
|
||||
62
UTS_Core/Serialize/Serializer.vb
Normal file
62
UTS_Core/Serialize/Serializer.vb
Normal file
@@ -0,0 +1,62 @@
|
||||
Imports System.IO
|
||||
Imports System.Xml.Serialization
|
||||
|
||||
Namespace Serialize
|
||||
|
||||
Public Class Serializer
|
||||
''' <summary>
|
||||
''' 将类对象序列化为xml文件
|
||||
''' </summary>
|
||||
''' <param name="path"></param>
|
||||
''' <param name="srcObject"></param>
|
||||
Public Shared Sub SerializeToXml(path As String, srcObject As Object)
|
||||
Dim serializer As New XmlSerializer(srcObject.GetType)
|
||||
Dim xmlString As String = String.Empty
|
||||
|
||||
Using writer As New StringWriter
|
||||
serializer.Serialize(writer, srcObject)
|
||||
xmlString = writer.ToString()
|
||||
End Using
|
||||
|
||||
Using ws As New StreamWriter(path)
|
||||
ws.Write(xmlString)
|
||||
End Using
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 将类对象序列化为xml文件
|
||||
''' </summary>
|
||||
''' <param name="path"></param>
|
||||
''' <param name="srcObject"></param>
|
||||
Public Shared Sub SerializeToXml(Of T)(path As String, srcObject As T)
|
||||
Dim serializer As New XmlSerializer(GetType(T))
|
||||
Dim xmlString As String
|
||||
|
||||
Using writer As New StringWriter
|
||||
serializer.Serialize(writer, srcObject)
|
||||
xmlString = writer.ToString()
|
||||
End Using
|
||||
|
||||
Using ws As New StreamWriter(path)
|
||||
ws.Write(xmlString)
|
||||
End Using
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 从Xml文件中反序列化成指定类
|
||||
''' </summary>
|
||||
''' <typeparam name="T"></typeparam>
|
||||
''' <param name="path"></param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function DeserializeFormXml(Of T)(path As String) As T
|
||||
Dim serializer As New XmlSerializer(GetType(T))
|
||||
|
||||
Using reader As New StreamReader(path)
|
||||
Return CType(serializer.Deserialize(reader), T)
|
||||
End Using
|
||||
End Function
|
||||
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
1948
UTS_Core/UTSModule/DbConnect/DbConnector.vb
Normal file
1948
UTS_Core/UTSModule/DbConnect/DbConnector.vb
Normal file
File diff suppressed because it is too large
Load Diff
24
UTS_Core/UTSModule/DbTableModel/Customer/FolwCtrTable.vb
Normal file
24
UTS_Core/UTSModule/DbTableModel/Customer/FolwCtrTable.vb
Normal file
@@ -0,0 +1,24 @@
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
''' <summary>
|
||||
''' 生产流程签名表,待删除
|
||||
''' </summary>
|
||||
Public Class FlowCtrTable
|
||||
Enum ColNamesEnum
|
||||
ID
|
||||
''' <summary>
|
||||
''' 项目唯一标识
|
||||
''' </summary>
|
||||
ProjectID
|
||||
''' <summary>
|
||||
''' 产品序号唯一标识
|
||||
''' </summary>
|
||||
DUT_SN
|
||||
''' <summary>
|
||||
''' 流程签名
|
||||
''' </summary>
|
||||
ProcessRecord
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_FlowCtr"
|
||||
End Class
|
||||
End Namespace
|
||||
59
UTS_Core/UTSModule/DbTableModel/Customer/ImportInfoTable.vb
Normal file
59
UTS_Core/UTSModule/DbTableModel/Customer/ImportInfoTable.vb
Normal file
@@ -0,0 +1,59 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
''' <summary>
|
||||
''' Sn关联信息表
|
||||
''' </summary>
|
||||
Public Class ImportInfoTable
|
||||
|
||||
Enum ColNames
|
||||
''' <summary>
|
||||
''' 索引
|
||||
''' </summary>
|
||||
ID
|
||||
''' <summary>
|
||||
''' 项目唯一标识
|
||||
''' </summary>
|
||||
ProjectID
|
||||
''' <summary>
|
||||
''' 产品序号唯一标识
|
||||
''' </summary>
|
||||
Barcode
|
||||
''' <summary>
|
||||
''' 录入时间
|
||||
''' </summary>
|
||||
ImportDateTime
|
||||
''' <summary>
|
||||
''' 更新时间,用于同步下载
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_ImportInfo"
|
||||
|
||||
''' <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,")
|
||||
builder.Append($"`{ColNames.ProjectID}` int(11) NOT NULL DEFAULT -1 COMMENT '项目唯一标识',")
|
||||
builder.Append($"`{ColNames.Barcode}` varchar(32) NOT NULL COMMENT '产品序号唯一标识',")
|
||||
builder.Append($"`{ColNames.ImportDateTime}` datetime NOT NULL DEFAULT current_timestamp() COMMENT '录入时间',")
|
||||
builder.Append($"`{ColNames.UpdateTime}` datetime NOT NULL DEFAULT current_timestamp() COMMENT '更新时间',")
|
||||
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
|
||||
53
UTS_Core/UTSModule/DbTableModel/Customer/LogTable.vb
Normal file
53
UTS_Core/UTSModule/DbTableModel/Customer/LogTable.vb
Normal file
@@ -0,0 +1,53 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
''' <summary>
|
||||
''' 用户操作记录总表
|
||||
''' </summary>
|
||||
Public Class LogTable
|
||||
Enum ColNamesEnum
|
||||
ID
|
||||
''' <summary>
|
||||
''' 操作者
|
||||
''' </summary>
|
||||
UserID
|
||||
''' <summary>
|
||||
''' 操作时间
|
||||
''' </summary>
|
||||
DateTime
|
||||
''' <summary>
|
||||
''' 操作内容说明
|
||||
''' </summary>
|
||||
Operation
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_Log"
|
||||
|
||||
''' <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($"`{ColNamesEnum.ID}` int(11) Not NULL,")
|
||||
builder.Append($"`{ColNamesEnum.UserID}` int(11) DEFAULT NULL COMMENT '用户索引',")
|
||||
builder.Append($"`{ColNamesEnum.DateTime}` datetime DEFAULT NULL COMMENT '操作时间',")
|
||||
builder.Append($"`{ColNamesEnum.Operation}` varchar(254) DEFAULT NULL COMMENT '操作内容说明',")
|
||||
|
||||
builder.Append($"PRIMARY KEY (`{ColNamesEnum.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
|
||||
116
UTS_Core/UTSModule/DbTableModel/Customer/OrderInternalTable.vb
Normal file
116
UTS_Core/UTSModule/DbTableModel/Customer/OrderInternalTable.vb
Normal file
@@ -0,0 +1,116 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
Public Class OrderInternalTable
|
||||
Enum ColNames
|
||||
''' <summary>
|
||||
''' 内部订单索引
|
||||
''' </summary>
|
||||
ID
|
||||
|
||||
''' <summary>
|
||||
''' 订单ID
|
||||
''' </summary>
|
||||
OrderID
|
||||
|
||||
''' <summary>
|
||||
''' 内部单号
|
||||
''' </summary>
|
||||
InternalNo
|
||||
|
||||
''' <summary>
|
||||
''' 订单所属公司索引
|
||||
''' </summary>
|
||||
CompanyID
|
||||
|
||||
''' <summary>
|
||||
''' 产品索引
|
||||
''' </summary>
|
||||
ProductID
|
||||
|
||||
''' <summary>
|
||||
''' 产品类型索引
|
||||
''' </summary>
|
||||
ProductTypeID
|
||||
|
||||
''' <summary>
|
||||
''' 创建时间
|
||||
''' </summary>
|
||||
CreateTime
|
||||
|
||||
''' <summary>
|
||||
''' 修改日期
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
|
||||
''' <summary>
|
||||
''' 目标产量
|
||||
''' </summary>
|
||||
ObjectiveYield
|
||||
|
||||
''' <summary>
|
||||
''' 累计目标产量
|
||||
''' </summary>
|
||||
ObjectiveYieldTotal
|
||||
|
||||
''' <summary>
|
||||
''' 订单状态
|
||||
''' </summary>
|
||||
OrderStatus
|
||||
|
||||
''' <summary>
|
||||
''' 交货时间
|
||||
''' </summary>
|
||||
DeliveryTime
|
||||
|
||||
''' <summary>
|
||||
''' 适用站位
|
||||
''' </summary>
|
||||
Station
|
||||
|
||||
''' <summary>
|
||||
''' 条码范围
|
||||
''' </summary>
|
||||
BarCode
|
||||
End Enum
|
||||
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_OrderInternal"
|
||||
|
||||
''' <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,")
|
||||
builder.Append($"`{ColNames.OrderID}` int(11) NOT NULL COMMENT '订单ID',")
|
||||
builder.Append($"`{ColNames.CompanyID}` int(11) NOT NULL COMMENT '订单所属公司索引',")
|
||||
builder.Append($"`{ColNames.ProductTypeID}` int(11) NOT NULL COMMENT '产品类型索引',")
|
||||
builder.Append($"`{ColNames.ProductID}` int(11) NOT NULL COMMENT '产品索引',")
|
||||
builder.Append($"`{ColNames.OrderStatus}` int(11) NOT NULL COMMENT '订单状态',")
|
||||
builder.Append($"`{ColNames.InternalNo}` varchar(64) NOT NULL COMMENT '内部单号',")
|
||||
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.DeliveryTime}` datetime DEFAULT NULL COMMENT '交货时间',")
|
||||
builder.Append($"`{ColNames.ObjectiveYield}` int(11) DEFAULT NULL COMMENT '目标产量',")
|
||||
builder.Append($"`{ColNames.ObjectiveYieldTotal}` int(11) DEFAULT NULL COMMENT '累计目标产量',")
|
||||
builder.Append($"`{ColNames.Station}` varchar(64) DEFAULT NULL ,")
|
||||
builder.Append($"`{ColNames.BarCode}` varchar(254) DEFAULT NULL ,")
|
||||
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
|
||||
98
UTS_Core/UTSModule/DbTableModel/Customer/OrdersTable.vb
Normal file
98
UTS_Core/UTSModule/DbTableModel/Customer/OrdersTable.vb
Normal file
@@ -0,0 +1,98 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
''' <summary>
|
||||
''' 客户订单表
|
||||
''' </summary>
|
||||
Public Class OrdersTable
|
||||
Enum ColNames
|
||||
''' <summary>
|
||||
''' 订单索引
|
||||
''' </summary>
|
||||
ID
|
||||
|
||||
''' <summary>
|
||||
''' 公司索引
|
||||
''' </summary>
|
||||
CompanyID
|
||||
|
||||
''' <summary>
|
||||
''' 订单生产产品索引
|
||||
''' </summary>
|
||||
ProductID
|
||||
|
||||
''' <summary>
|
||||
''' 订单号
|
||||
''' </summary>
|
||||
OrderNo
|
||||
|
||||
''' <summary>
|
||||
''' 生产数量
|
||||
''' </summary>
|
||||
OrderCount
|
||||
|
||||
''' <summary>
|
||||
''' 交货日期
|
||||
''' </summary>
|
||||
DeliveryTime
|
||||
|
||||
''' <summary>
|
||||
''' 订单生成日期
|
||||
''' </summary>
|
||||
CreateTime
|
||||
|
||||
''' <summary>
|
||||
''' 修改日期
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
|
||||
''' <summary>
|
||||
''' 成本单价
|
||||
''' </summary>
|
||||
CostPrice
|
||||
|
||||
''' <summary>
|
||||
''' 销售单价
|
||||
''' </summary>
|
||||
TransactPrice
|
||||
|
||||
''' <summary>
|
||||
''' 订单状态
|
||||
''' </summary>
|
||||
OrderStatus
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_Orders"
|
||||
|
||||
''' <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 '订单索引',")
|
||||
builder.Append($"`{ColNames.CompanyID}` int(11) NOT NULL COMMENT '所属厂商索引',")
|
||||
builder.Append($"`{ColNames.ProductID}` int(11) NOT NULL COMMENT '订单生产产品索引',")
|
||||
builder.Append($"`{ColNames.OrderNo}` varchar(64) NOT NULL DEFAULT '' COMMENT '订单号',")
|
||||
builder.Append($"`{ColNames.OrderCount}` int(11) NOT NULL DEFAULT 0 COMMENT '生产数量',")
|
||||
builder.Append($"`{ColNames.DeliveryTime}` datetime DEFAULT NULL COMMENT '交货日期',")
|
||||
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.CostPrice}` float DEFAULT NULL COMMENT '成本单价',")
|
||||
builder.Append($"`{ColNames.TransactPrice}` float DEFAULT NULL COMMENT '销售单价',")
|
||||
builder.Append($"`{ColNames.OrderStatus}` int(11) DEFAULT NULL COMMENT '订单状态',")
|
||||
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
|
||||
@@ -0,0 +1,52 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
Public Class ProductTypesTable
|
||||
Enum ColNames
|
||||
ID
|
||||
''' <summary>
|
||||
''' 产品类型
|
||||
''' </summary>
|
||||
ProductType
|
||||
|
||||
''' <summary>
|
||||
''' 修改日期
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
|
||||
''' <summary>
|
||||
''' 备注
|
||||
''' </summary>
|
||||
Remark
|
||||
End Enum
|
||||
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_ProductTypes"
|
||||
|
||||
''' <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,")
|
||||
builder.Append($"`{ColNames.ProductType}` varchar(255) Not NULL,")
|
||||
builder.Append($"`{ColNames.UpdateTime}` datetime NOT NULL DEFAULT current_timestamp() COMMENT '更新时间',")
|
||||
builder.Append($"`{ColNames.Remark}` varchar(255) DEFAULT NULL,")
|
||||
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
|
||||
@@ -0,0 +1,59 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
Public Class ProductionLineTable
|
||||
Enum ColNames
|
||||
''' <summary>
|
||||
''' 产线索引
|
||||
''' </summary>
|
||||
ID
|
||||
|
||||
''' <summary>
|
||||
''' 产线名称
|
||||
''' </summary>
|
||||
Name
|
||||
|
||||
''' <summary>
|
||||
''' 产线描述
|
||||
''' </summary>
|
||||
Description
|
||||
|
||||
''' <summary>
|
||||
''' 修改日期
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
|
||||
''' <summary>
|
||||
''' 备注
|
||||
''' </summary>
|
||||
Remark
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_ProductionLine"
|
||||
|
||||
''' <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,")
|
||||
builder.Append($"`{ColNames.Name}` varchar(64) NOT NULL DEFAULT '' COMMENT '产线名',")
|
||||
builder.Append($"`{ColNames.Description}` varchar(255) DEFAULT NULL COMMENT '工艺说明',")
|
||||
builder.Append($"`{ColNames.UpdateTime}` datetime NOT NULL DEFAULT current_timestamp() COMMENT '更新时间',")
|
||||
builder.Append($"`{ColNames.Remark}` varchar(255) DEFAULT NULL COMMENT '备注',")
|
||||
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
|
||||
@@ -0,0 +1,99 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
Public Class ProductionPlanTable
|
||||
Enum ColNames
|
||||
''' <summary>
|
||||
''' 生产计划索引
|
||||
''' </summary>
|
||||
ID
|
||||
|
||||
''' <summary>
|
||||
''' 订单索引
|
||||
''' </summary>
|
||||
OrderID
|
||||
|
||||
''' <summary>
|
||||
''' 内部订单
|
||||
''' </summary>
|
||||
OrderInternalID
|
||||
|
||||
''' <summary>
|
||||
''' 站位索引
|
||||
''' </summary>
|
||||
StationID
|
||||
|
||||
''' <summary>
|
||||
''' 产线索引
|
||||
''' </summary>
|
||||
ProductionLineID
|
||||
|
||||
''' <summary>
|
||||
''' 生产时间
|
||||
''' </summary>
|
||||
ProductionTime
|
||||
|
||||
''' <summary>
|
||||
''' 修改日期
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
|
||||
''' <summary>
|
||||
''' 已完成产量
|
||||
''' </summary>
|
||||
ActualOutput
|
||||
|
||||
''' <summary>
|
||||
''' 目标产量
|
||||
''' </summary>
|
||||
ObjectiveYield
|
||||
|
||||
''' <summary>
|
||||
''' 累计目标产量
|
||||
''' </summary>
|
||||
ObjectiveYieldTotal
|
||||
|
||||
''' <summary>
|
||||
''' 备注
|
||||
''' </summary>
|
||||
Remark
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_ProductionPlan"
|
||||
|
||||
''' <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 '生产计划索引',")
|
||||
builder.Append($"`{ColNames.OrderID}` int(11) NOT NULL COMMENT '订单索引',")
|
||||
builder.Append($"`{ColNames.OrderInternalID}` int(11) NOT NULL COMMENT '内部单ID',")
|
||||
builder.Append($"`{ColNames.StationID}` int(11) NOT NULL COMMENT '工艺站ID',")
|
||||
builder.Append($"`{ColNames.ProductionLineID}` int(11) NOT NULL COMMENT '产线索引',")
|
||||
builder.Append($"`{ColNames.ProductionTime}` datetime NOT NULL COMMENT '生产时间',")
|
||||
builder.Append($"`{ColNames.UpdateTime}` datetime NOT NULL DEFAULT current_timestamp() COMMENT '更新时间',")
|
||||
builder.Append($"`{ColNames.ActualOutput}` int(11) NOT NULL COMMENT '已完成产量',")
|
||||
builder.Append($"`{ColNames.ObjectiveYield}` int(11) NOT NULL COMMENT '目标产量',")
|
||||
builder.Append($"`{ColNames.ObjectiveYieldTotal}` int(11) NOT NULL COMMENT '累计目标产量',")
|
||||
builder.Append($"`{ColNames.Remark}` varchar(255) DEFAULT NULL COMMENT '备注',")
|
||||
|
||||
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
|
||||
116
UTS_Core/UTSModule/DbTableModel/Customer/ProjectTable.vb
Normal file
116
UTS_Core/UTSModule/DbTableModel/Customer/ProjectTable.vb
Normal file
@@ -0,0 +1,116 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
''' <summary>
|
||||
''' 项目总表
|
||||
''' </summary>
|
||||
Public Class ProjectTable
|
||||
Enum ColNames
|
||||
''' <summary>
|
||||
''' 项目唯一标识
|
||||
''' </summary>
|
||||
ID
|
||||
''' <summary>
|
||||
''' 项目类型索引
|
||||
''' </summary>
|
||||
ProductTypeID
|
||||
''' <summary>
|
||||
''' 项目名称
|
||||
''' </summary>
|
||||
ProjectName
|
||||
''' <summary>
|
||||
''' 项目描述
|
||||
''' </summary>
|
||||
Description
|
||||
''' <summary>
|
||||
''' 创建人
|
||||
''' </summary>
|
||||
UserID
|
||||
''' <summary>
|
||||
''' 创建时间
|
||||
''' </summary>
|
||||
CreateTime
|
||||
|
||||
''' <summary>
|
||||
''' 修改日期
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
|
||||
''' <summary>
|
||||
''' 备注
|
||||
''' </summary>
|
||||
Remark
|
||||
|
||||
''' <summary>
|
||||
''' 预览图
|
||||
''' </summary>
|
||||
ImageName
|
||||
|
||||
''' <summary>
|
||||
''' 预览图
|
||||
''' </summary>
|
||||
PreviewImage
|
||||
|
||||
''' <summary>
|
||||
''' 单价
|
||||
''' </summary>
|
||||
Price
|
||||
|
||||
''' <summary>
|
||||
''' 单价单位
|
||||
''' </summary>
|
||||
Currency
|
||||
''' <summary>
|
||||
''' 当前项目是否有效
|
||||
''' </summary>
|
||||
IsValid
|
||||
''' <summary>
|
||||
''' 最后有效日期
|
||||
''' </summary>
|
||||
EolDate
|
||||
|
||||
''' <summary>
|
||||
''' 录入条码总表类型,0无订单,1有订单
|
||||
''' </summary>
|
||||
SnType
|
||||
End Enum
|
||||
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_Project"
|
||||
|
||||
''' <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,")
|
||||
builder.Append($"`{ColNames.ProductTypeID}` int(11) Not NULL,")
|
||||
builder.Append($"`{ColNames.ProjectName}` varchar(64) Not NULL,")
|
||||
builder.Append($"`{ColNames.Description}` varchar(64) DEFAULT NULL,")
|
||||
builder.Append($"`{ColNames.UserID}` int(11) Not NULL,")
|
||||
builder.Append($"`{ColNames.CreateTime}` datetime NOT NULL DEFAULT current_timestamp(),")
|
||||
builder.Append($"`{ColNames.UpdateTime}` datetime NOT NULL DEFAULT current_timestamp() COMMENT '更新时间',")
|
||||
builder.Append($"`{ColNames.EolDate}` datetime DEFAULT NULL,")
|
||||
builder.Append($"`{ColNames.Remark}` varchar(255) DEFAULT NULL,")
|
||||
builder.Append($"`{ColNames.ImageName}` varchar(255) DEFAULT NULL,")
|
||||
builder.Append($"`{ColNames.PreviewImage}` mediumblob DEFAULT NULL,")
|
||||
builder.Append($"`{ColNames.Price}` float(10,2) DEFAULT NULL,")
|
||||
builder.Append($"`{ColNames.Currency}` varchar(10) DEFAULT NULL,")
|
||||
builder.Append($"`{ColNames.IsValid}` tinyint(4) DEFAULT 1,")
|
||||
builder.Append($"`{ColNames.SnType}` int(11) NOT NULL DEFAULT 1,")
|
||||
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
|
||||
@@ -0,0 +1,71 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
''' <summary>
|
||||
''' 不良代码类型表
|
||||
''' </summary>
|
||||
Public Class RejectsExplainTable
|
||||
|
||||
Enum ColNames
|
||||
''' <summary>
|
||||
''' 索引
|
||||
''' </summary>
|
||||
ID
|
||||
|
||||
''' <summary>
|
||||
''' 所属维修分类索引
|
||||
''' </summary>
|
||||
Matlab
|
||||
|
||||
''' <summary>
|
||||
''' 名称
|
||||
''' </summary>
|
||||
Introductions
|
||||
|
||||
''' <summary>
|
||||
''' 创建日期
|
||||
''' </summary>
|
||||
CreateTime
|
||||
|
||||
''' <summary>
|
||||
''' 更新时间
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
|
||||
''' <summary>
|
||||
''' 备注
|
||||
''' </summary>
|
||||
Remark
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_RejectsExplain"
|
||||
|
||||
|
||||
''' <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 '不良代码索引',")
|
||||
builder.Append($"`{ColNames.Matlab}` varchar(255) NOT NULL COMMENT '不良品代码',")
|
||||
builder.Append($"`{ColNames.Introductions}` varchar(255) NOT NULL COMMENT '不良品说明',")
|
||||
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.Remark}` varchar(254) DEFAULT NULL COMMENT '备注',")
|
||||
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
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
Public Class RepairLogTable
|
||||
Enum ColNamesEnum
|
||||
''' <summary>
|
||||
''' 维修日志索引
|
||||
''' </summary>
|
||||
ID
|
||||
|
||||
''' <summary>
|
||||
''' 维修产品索引
|
||||
''' </summary>
|
||||
ProductID
|
||||
|
||||
''' <summary>
|
||||
''' 维修产品条码
|
||||
''' </summary>
|
||||
DUT_SN
|
||||
|
||||
''' <summary>
|
||||
''' 产品错误代码
|
||||
''' </summary>
|
||||
ErrCode
|
||||
|
||||
''' <summary>
|
||||
''' 维修原因类型
|
||||
''' </summary>
|
||||
RepairType
|
||||
|
||||
''' <summary>
|
||||
''' 维修人工注释
|
||||
''' </summary>
|
||||
RepairComment
|
||||
|
||||
''' <summary>
|
||||
''' 维修产品日期
|
||||
''' </summary>
|
||||
RepairDate
|
||||
|
||||
''' <summary>
|
||||
''' 维修产品结果
|
||||
''' </summary>
|
||||
RepairResult
|
||||
|
||||
''' <summary>
|
||||
''' 产品图像文件名1
|
||||
''' </summary>
|
||||
ProductImg1
|
||||
|
||||
''' <summary>
|
||||
''' 产品图像文件名2
|
||||
''' </summary>
|
||||
ProductImg2
|
||||
|
||||
''' <summary>
|
||||
''' 产品图像文件名3
|
||||
''' </summary>
|
||||
ProductImg3
|
||||
|
||||
''' <summary>
|
||||
''' 产品图像文件名4
|
||||
''' </summary>
|
||||
ProductImg4
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_RepairLog"
|
||||
|
||||
''' <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($"`{ColNamesEnum.ID}` int(11) NOT NULL AUTO_INCREMENT COMMENT '维修日志索引',")
|
||||
builder.Append($"`{ColNamesEnum.ProductID}` int(11) Not NULL COMMENT '维修产品索引',")
|
||||
builder.Append($"`{ColNamesEnum.DUT_SN}` varchar(32) Not NULL COMMENT '维修产品条码',")
|
||||
builder.Append($"`{ColNamesEnum.ErrCode}` varchar(32) DEFAULT NULL COMMENT '产品错误代码',")
|
||||
builder.Append($"`{ColNamesEnum.RepairType}` int(11) DEFAULT NULL COMMENT '维修原因类型',")
|
||||
builder.Append($"`{ColNamesEnum.RepairComment}` varchar(254) DEFAULT NULL COMMENT '维修人工注释',")
|
||||
builder.Append($"`{ColNamesEnum.RepairDate}` datetime DEFAULT NULL COMMENT '维修产品日期',")
|
||||
builder.Append($"`{ColNamesEnum.RepairResult}` bit(1) Not NULL DEFAULT 0 COMMENT '维修产品结果',")
|
||||
builder.Append($"`{ColNamesEnum.ProductImg1}` varchar(64) DEFAULT NULL COMMENT '产品图像文件名1',")
|
||||
builder.Append($"`{ColNamesEnum.ProductImg2}` varchar(64) DEFAULT NULL COMMENT '产品图像文件名2',")
|
||||
builder.Append($"`{ColNamesEnum.ProductImg3}` varchar(64) DEFAULT NULL COMMENT '产品图像文件名3',")
|
||||
builder.Append($"`{ColNamesEnum.ProductImg4}` varchar(64) DEFAULT NULL COMMENT '产品图像文件名4',")
|
||||
builder.Append($"PRIMARY KEY (`{ColNamesEnum.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
|
||||
161
UTS_Core/UTSModule/DbTableModel/Customer/RepairLogTable.vb
Normal file
161
UTS_Core/UTSModule/DbTableModel/Customer/RepairLogTable.vb
Normal file
@@ -0,0 +1,161 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
Public Class RepairLogTable
|
||||
Enum ColNames
|
||||
''' <summary>
|
||||
''' 维修日志索引
|
||||
''' </summary>
|
||||
ID
|
||||
|
||||
''' <summary>
|
||||
''' 维修产品索引
|
||||
''' </summary>
|
||||
ProductID
|
||||
|
||||
''' <summary>
|
||||
''' 所属站位索引
|
||||
''' </summary>
|
||||
StationID
|
||||
|
||||
''' <summary>
|
||||
''' 所属订单索引
|
||||
''' </summary>
|
||||
OrderID
|
||||
|
||||
''' <summary>
|
||||
''' 维修所属测试日志索引
|
||||
''' </summary>
|
||||
TestLogID
|
||||
|
||||
''' <summary>
|
||||
''' 维修产品条码
|
||||
''' </summary>
|
||||
DUT_SN
|
||||
|
||||
''' <summary>
|
||||
''' 测试日志所属测试流程名称
|
||||
''' </summary>
|
||||
TestPlan
|
||||
|
||||
''' <summary>
|
||||
''' 产品测试日志失败步骤名
|
||||
''' </summary>
|
||||
FailSteps
|
||||
|
||||
''' <summary>
|
||||
''' 产品测试日志失败信息
|
||||
''' </summary>
|
||||
FailMsg
|
||||
|
||||
''' <summary>
|
||||
''' 产品测试日志错误代码
|
||||
''' </summary>
|
||||
ErrCode
|
||||
|
||||
''' <summary>
|
||||
''' 维修产品日期
|
||||
''' </summary>
|
||||
RepairDate
|
||||
|
||||
''' <summary>
|
||||
''' 当条记录更新时间
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
|
||||
''' <summary>
|
||||
''' 维修原因类型
|
||||
''' </summary>
|
||||
RepairType
|
||||
|
||||
''' <summary>
|
||||
''' 维修原因
|
||||
''' </summary>
|
||||
RepairReason
|
||||
|
||||
''' <summary>
|
||||
''' 维修来源
|
||||
''' </summary>
|
||||
RepairSource
|
||||
|
||||
''' <summary>
|
||||
''' 维修来源订单号
|
||||
''' </summary>
|
||||
DocuNumber
|
||||
|
||||
''' <summary>
|
||||
''' 维修人工注释
|
||||
''' </summary>
|
||||
RepairComment
|
||||
|
||||
''' <summary>
|
||||
''' 维修产品结果索引
|
||||
''' </summary>
|
||||
RepairResult
|
||||
|
||||
''' <summary>
|
||||
''' 产品图像文件名1
|
||||
''' </summary>
|
||||
ProductImg1
|
||||
|
||||
''' <summary>
|
||||
''' 产品图像文件名2
|
||||
''' </summary>
|
||||
ProductImg2
|
||||
|
||||
''' <summary>
|
||||
''' 产品图像文件名3
|
||||
''' </summary>
|
||||
ProductImg3
|
||||
|
||||
''' <summary>
|
||||
''' 产品图像文件名4
|
||||
''' </summary>
|
||||
ProductImg4
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_RepairLog"
|
||||
|
||||
''' <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 '维修日志索引',")
|
||||
builder.Append($"`{ColNames.ProductID}` int(11) Not NULL COMMENT '维修产品索引',")
|
||||
builder.Append($"`{ColNames.StationID}` int(11) Not NULL COMMENT '站位索引',")
|
||||
builder.Append($"`{ColNames.OrderID}` int(11) Not NULL COMMENT '订单索引',")
|
||||
builder.Append($"`{ColNames.TestLogID}` int(11) Not NULL COMMENT '测试记录索引',")
|
||||
builder.Append($"`{ColNames.DUT_SN}` varchar(64) NOT NULL COMMENT '维修产品条码',")
|
||||
builder.Append($"`{ColNames.TestPlan}` varchar(64) DEFAULT NULL COMMENT '测试流程名称',")
|
||||
builder.Append($"`{ColNames.FailSteps}` varchar(254) DEFAULT NULL COMMENT '错误步骤',")
|
||||
builder.Append($"`{ColNames.FailMsg}` varchar(254) DEFAULT NULL COMMENT '错误提示信息',")
|
||||
builder.Append($"`{ColNames.ErrCode}` varchar(32) DEFAULT NULL COMMENT '产品错误代码',")
|
||||
builder.Append($"`{ColNames.RepairDate}` datetime NOT NULL DEFAULT current_timestamp() COMMENT '维修产品日期',")
|
||||
builder.Append($"`{ColNames.UpdateTime}` datetime NOT NULL DEFAULT current_timestamp() COMMENT '更新时间',")
|
||||
builder.Append($"`{ColNames.RepairType}` int(11) NOT NULL COMMENT '维修类型索引',")
|
||||
builder.Append($"`{ColNames.RepairReason}` int(11) NOT NULL COMMENT '维修原因索引',")
|
||||
builder.Append($"`{ColNames.RepairSource}` int(11) NOT NULL COMMENT '维修来源索引',")
|
||||
builder.Append($"`{ColNames.DocuNumber}` varchar(64) DEFAULT NULL COMMENT '返修来源订单号',")
|
||||
builder.Append($"`{ColNames.RepairComment}` varchar(254) DEFAULT NULL COMMENT '维修人工注释',")
|
||||
builder.Append($"`{ColNames.RepairResult}` int(11) NOT NULL DEFAULT 0 COMMENT '维修产品结果',")
|
||||
builder.Append($"`{ColNames.ProductImg1}` varchar(64) DEFAULT NULL COMMENT '产品图像文件名1',")
|
||||
builder.Append($"`{ColNames.ProductImg2}` varchar(64) DEFAULT NULL COMMENT '产品图像文件名2',")
|
||||
builder.Append($"`{ColNames.ProductImg3}` varchar(64) DEFAULT NULL COMMENT '产品图像文件名3',")
|
||||
builder.Append($"`{ColNames.ProductImg4}` varchar(64) DEFAULT NULL COMMENT '产品图像文件名4',")
|
||||
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
|
||||
@@ -0,0 +1,70 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
''' <summary>
|
||||
''' 维修原因类型表
|
||||
''' </summary>
|
||||
Public Class RepairReasonTable
|
||||
|
||||
Enum ColNames
|
||||
''' <summary>
|
||||
''' 索引
|
||||
''' </summary>
|
||||
ID
|
||||
|
||||
''' <summary>
|
||||
''' 所属维修分类索引
|
||||
''' </summary>
|
||||
RepairType
|
||||
|
||||
''' <summary>
|
||||
''' 名称
|
||||
''' </summary>
|
||||
Name
|
||||
|
||||
''' <summary>
|
||||
''' 创建日期
|
||||
''' </summary>
|
||||
CreateTime
|
||||
|
||||
''' <summary>
|
||||
''' 更新时间
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
|
||||
''' <summary>
|
||||
''' 备注
|
||||
''' </summary>
|
||||
Remark
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_RepairReason"
|
||||
|
||||
|
||||
''' <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 '维修类型索引',")
|
||||
builder.Append($"`{ColNames.RepairType}` int(11) NOT NULL COMMENT '所属维修分类索引',")
|
||||
builder.Append($"`{ColNames.Name}` varchar(254) NOT NULL COMMENT '名称',")
|
||||
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.Remark}` varchar(254) DEFAULT NULL COMMENT '备注',")
|
||||
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
|
||||
130
UTS_Core/UTSModule/DbTableModel/Customer/RepairRequestTable.vb
Normal file
130
UTS_Core/UTSModule/DbTableModel/Customer/RepairRequestTable.vb
Normal file
@@ -0,0 +1,130 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
''' <summary>
|
||||
''' 维修原因类型表
|
||||
''' </summary>
|
||||
Public Class RepairRequestTable
|
||||
|
||||
Enum ColNames
|
||||
''' <summary>
|
||||
''' 索引
|
||||
''' </summary>
|
||||
ID
|
||||
|
||||
''' <summary>
|
||||
''' 报修人员
|
||||
''' </summary>
|
||||
UserID
|
||||
|
||||
''' <summary>
|
||||
''' 报修单号
|
||||
''' </summary>
|
||||
RepairRequestNum
|
||||
|
||||
''' <summary>
|
||||
''' 产品类型
|
||||
''' </summary>
|
||||
ProductID
|
||||
|
||||
''' <summary>
|
||||
''' 产品条码
|
||||
''' </summary>
|
||||
Barcode
|
||||
|
||||
''' <summary>
|
||||
''' 产品图像
|
||||
''' </summary>
|
||||
ProductImage
|
||||
|
||||
''' <summary>
|
||||
''' 不良品来源
|
||||
''' </summary>
|
||||
RejectSource
|
||||
|
||||
''' <summary>
|
||||
''' 不良代码
|
||||
''' </summary>
|
||||
RejectCode
|
||||
|
||||
''' <summary>
|
||||
''' 不良说明
|
||||
''' </summary>
|
||||
RejectDesc
|
||||
|
||||
''' <summary>
|
||||
''' 创建日期
|
||||
''' </summary>
|
||||
CreateTime
|
||||
|
||||
''' <summary>
|
||||
''' 更新时间
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
|
||||
''' <summary>
|
||||
''' 维修进度
|
||||
''' </summary>
|
||||
RepairProgress
|
||||
|
||||
''' <summary>
|
||||
''' 维修结果
|
||||
''' </summary>
|
||||
RepairResult
|
||||
|
||||
''' <summary>
|
||||
''' 维修记录索引
|
||||
''' </summary>
|
||||
RepairLogID
|
||||
|
||||
''' <summary>
|
||||
''' 维修人员
|
||||
''' </summary>
|
||||
Repairier
|
||||
|
||||
''' <summary>
|
||||
''' 备注
|
||||
''' </summary>
|
||||
Remark
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_RepairRequest"
|
||||
|
||||
|
||||
''' <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 '维修类型索引',")
|
||||
builder.Append($"`{ColNames.UserID}` int(11) NOT NULL COMMENT '报修人员',")
|
||||
builder.Append($"`{ColNames.RepairRequestNum}` varchar(254) NOT NULL COMMENT '报修单号',")
|
||||
builder.Append($"`{ColNames.ProductID}` int(11) NOT NULL COMMENT '产品类型',")
|
||||
builder.Append($"`{ColNames.Barcode}` varchar(64) NOT NULL COMMENT '产品条码',")
|
||||
builder.Append($"`{ColNames.ProductImage}` varchar(254) DEFAULT NULL COMMENT '产品图像',")
|
||||
builder.Append($"`{ColNames.RejectSource}` varchar(254) DEFAULT NULL COMMENT '不良品来源',")
|
||||
builder.Append($"`{ColNames.RejectCode}` varchar(254) DEFAULT NULL COMMENT '不良代码',")
|
||||
builder.Append($"`{ColNames.RejectDesc}` varchar(254) DEFAULT NULL COMMENT '不良说明',")
|
||||
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.RepairProgress}` varchar(64) DEFAULT NULL COMMENT '维修进度',")
|
||||
builder.Append($"`{ColNames.RepairResult}` int(11) DEFAULT NULL COMMENT '维修结果',")
|
||||
builder.Append($"`{ColNames.RepairLogID}` int(11) DEFAULT NULL COMMENT '维修记录索引',")
|
||||
builder.Append($"`{ColNames.Repairier}` int(11) DEFAULT NULL COMMENT '维修人员',")
|
||||
builder.Append($"`{ColNames.Remark}` varchar(254) DEFAULT NULL COMMENT '备注',")
|
||||
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
|
||||
@@ -0,0 +1,63 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
|
||||
Public Class RepairResultTable
|
||||
Enum ColNames
|
||||
''' <summary>
|
||||
''' 索引
|
||||
''' </summary>
|
||||
ID
|
||||
''' <summary>
|
||||
''' 维修结果名称
|
||||
''' </summary>
|
||||
Name
|
||||
|
||||
''' <summary>
|
||||
''' 创建时间
|
||||
''' </summary>
|
||||
CreateTime
|
||||
|
||||
''' <summary>
|
||||
''' 修改日期
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
|
||||
''' <summary>
|
||||
''' 备注
|
||||
''' </summary>
|
||||
Remark
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_RepairResults"
|
||||
|
||||
''' <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 '维修结果索引',")
|
||||
builder.Append($"`{ColNames.Name}` varchar(254) NOT NULL COMMENT '维修结果名称',")
|
||||
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.Remark}` varchar(254) DEFAULT NULL COMMENT '备注',")
|
||||
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
|
||||
@@ -0,0 +1,60 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
|
||||
Public Class RepairSourceTable
|
||||
Enum ColNames
|
||||
''' <summary>
|
||||
''' 维修来源索引
|
||||
''' </summary>
|
||||
ID
|
||||
''' <summary>
|
||||
''' 维修来源名称
|
||||
''' </summary>
|
||||
Name
|
||||
|
||||
''' <summary>
|
||||
''' 创建时间
|
||||
''' </summary>
|
||||
CreateTime
|
||||
|
||||
''' <summary>
|
||||
''' 修改日期
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
|
||||
''' <summary>
|
||||
''' 备注
|
||||
''' </summary>
|
||||
Remark
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_RepairSource"
|
||||
|
||||
''' <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 '维修来源索引',")
|
||||
builder.Append($"`{ColNames.Name}` varchar(254) NOT NULL COMMENT '维修来源名称',")
|
||||
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.Remark}` varchar(254) DEFAULT NULL COMMENT '备注',")
|
||||
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
|
||||
62
UTS_Core/UTSModule/DbTableModel/Customer/RepairTypesTable.vb
Normal file
62
UTS_Core/UTSModule/DbTableModel/Customer/RepairTypesTable.vb
Normal file
@@ -0,0 +1,62 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
''' <summary>
|
||||
''' 维修原因类型表
|
||||
''' </summary>
|
||||
Public Class RepairTypesTable
|
||||
|
||||
Enum ColNames
|
||||
''' <summary>
|
||||
''' 维修类型索引
|
||||
''' </summary>
|
||||
ID
|
||||
''' <summary>
|
||||
''' 维修类型说明
|
||||
''' </summary>
|
||||
Name
|
||||
|
||||
''' <summary>
|
||||
''' 创建时间
|
||||
''' </summary>
|
||||
CreateTime
|
||||
|
||||
''' <summary>
|
||||
''' 修改日期
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
|
||||
''' <summary>
|
||||
''' 备注
|
||||
''' </summary>
|
||||
Remark
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_RepairTypes"
|
||||
|
||||
''' <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 '维修类型索引',")
|
||||
builder.Append($"`{ColNames.Name}` varchar(254) NOT NULL COMMENT '维修类型名称',")
|
||||
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.Remark}` varchar(254) DEFAULT NULL COMMENT '备注',")
|
||||
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
|
||||
211
UTS_Core/UTSModule/DbTableModel/Customer/SnListTable.vb
Normal file
211
UTS_Core/UTSModule/DbTableModel/Customer/SnListTable.vb
Normal file
@@ -0,0 +1,211 @@
|
||||
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
|
||||
61
UTS_Core/UTSModule/DbTableModel/Customer/SnRulesTable.vb
Normal file
61
UTS_Core/UTSModule/DbTableModel/Customer/SnRulesTable.vb
Normal file
@@ -0,0 +1,61 @@
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
''' <summary>
|
||||
''' 产品需要索引客户订单号表
|
||||
''' </summary>
|
||||
Public Class SnRulesTable
|
||||
Enum ColNamesEnum
|
||||
''' <summary>
|
||||
''' 索引,暂无作用
|
||||
''' </summary>
|
||||
ID
|
||||
|
||||
''' <summary>
|
||||
''' 客户订单索引
|
||||
''' </summary>
|
||||
OrderID
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 内部订单号
|
||||
''' </summary>
|
||||
OrderInternalID
|
||||
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 产品索引
|
||||
''' </summary>
|
||||
ProductID
|
||||
|
||||
''' <summary>
|
||||
''' 工作站索引集合以,分割
|
||||
''' </summary>
|
||||
StationIDs
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 创建时间
|
||||
''' </summary>
|
||||
CreateTime
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' SN前缀
|
||||
''' </summary>
|
||||
Sn_Prefix
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' SN起始号
|
||||
''' </summary>
|
||||
Sn_Start
|
||||
|
||||
''' <summary>
|
||||
''' SN结束号
|
||||
''' </summary>
|
||||
Sn_End
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_SnRules"
|
||||
End Class
|
||||
End NameSpace
|
||||
134
UTS_Core/UTSModule/DbTableModel/Customer/StationListTable.vb
Normal file
134
UTS_Core/UTSModule/DbTableModel/Customer/StationListTable.vb
Normal file
@@ -0,0 +1,134 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
''' <summary>
|
||||
''' 产品工艺站总表
|
||||
''' </summary>
|
||||
Public Class StationListTable
|
||||
|
||||
Enum ColNames
|
||||
''' <summary>
|
||||
''' 工艺站索引
|
||||
''' </summary>
|
||||
ID
|
||||
''' <summary>
|
||||
''' 项目索引
|
||||
''' </summary>
|
||||
ProjectID
|
||||
''' <summary>
|
||||
''' 工艺站名称
|
||||
''' </summary>
|
||||
StationName
|
||||
''' <summary>
|
||||
''' 工艺站类型
|
||||
''' </summary>
|
||||
StationType
|
||||
''' <summary>
|
||||
''' 工艺站序号,从1开始
|
||||
''' </summary>
|
||||
ArtworkOrder
|
||||
''' <summary>
|
||||
''' Sn总表序号
|
||||
''' </summary>
|
||||
SnListOrder
|
||||
''' <summary>
|
||||
''' 工艺站描述
|
||||
''' </summary>
|
||||
StationDesc
|
||||
|
||||
''' <summary>
|
||||
''' 最后更新日期(重复字段等待删除)
|
||||
''' </summary>
|
||||
LastUpdateDate
|
||||
|
||||
''' <summary>
|
||||
''' 修改日期
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
|
||||
''' <summary>
|
||||
''' 测试记录表名
|
||||
''' </summary>
|
||||
LogTableName
|
||||
''' <summary>
|
||||
''' 预览图片
|
||||
''' </summary>
|
||||
PreviewImage
|
||||
''' <summary>
|
||||
''' 备注
|
||||
''' </summary>
|
||||
Remark
|
||||
''' <summary>
|
||||
''' 最新测试包名
|
||||
''' </summary>
|
||||
PacketName
|
||||
|
||||
''' <summary>
|
||||
''' 最新包MD5
|
||||
''' </summary>
|
||||
PacketMd5
|
||||
|
||||
''' <summary>
|
||||
''' 当前站位是否有效
|
||||
''' </summary>
|
||||
Isvalid
|
||||
''' <summary>
|
||||
''' 站位条码生成规则,1系统生成,2客户录入
|
||||
''' </summary>
|
||||
SnType
|
||||
|
||||
''' <summary>
|
||||
''' 编辑密码
|
||||
''' </summary>
|
||||
EditPwd
|
||||
|
||||
''' <summary>
|
||||
''' 发布密码
|
||||
''' </summary>
|
||||
ReleasePwd
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_StationList"
|
||||
|
||||
''' <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 '工艺站索引',")
|
||||
builder.Append($"`{ColNames.ProjectID}` int(11) NOT NULL COMMENT '项目ID',")
|
||||
builder.Append($"`{ColNames.StationName}` varchar(128) NOT NULL COMMENT '工艺站名',")
|
||||
builder.Append($"`{ColNames.StationType}` varchar(128) NOT NULL COMMENT '工艺站类型',")
|
||||
builder.Append($"`{ColNames.ArtworkOrder}` int(11) NOT NULL COMMENT '测试站位序号',")
|
||||
builder.Append($"`{ColNames.SnListOrder}` int(11) NOT NULL COMMENT 'SN总表序号',")
|
||||
builder.Append($"`{ColNames.StationDesc}` varchar(128) DEFAULT NULL COMMENT '站位描述',")
|
||||
builder.Append($"`{ColNames.LastUpdateDate}` datetime DEFAULT NULL COMMENT '最后一次更新日期时间',")
|
||||
builder.Append($"`{ColNames.UpdateTime}` datetime NOT NULL DEFAULT current_timestamp() COMMENT '更新时间',")
|
||||
builder.Append($"`{ColNames.LogTableName}` varchar(128) DEFAULT NULL COMMENT '测试记录表名',")
|
||||
builder.Append($"`{ColNames.PreviewImage}` mediumblob DEFAULT NULL COMMENT '预览图片',")
|
||||
builder.Append($"`{ColNames.Remark}` varchar(128) DEFAULT NULL COMMENT ' 备注',")
|
||||
builder.Append($"`{ColNames.PacketName}` varchar(128) DEFAULT NULL COMMENT '最新测试包名',")
|
||||
builder.Append($"`{ColNames.PacketMd5}` varchar(32) DEFAULT NULL COMMENT '测试站包MD5值',")
|
||||
builder.Append($"`{ColNames.Isvalid}` tinyint(4) not NULL DEFAULT 1 COMMENT '是否有效',")
|
||||
builder.Append($"`{ColNames.SnType}` int(11) not NULL DEFAULT 1,")
|
||||
builder.Append($"`{ColNames.EditPwd}` varchar(32) DEFAULT NULL COMMENT '编辑密码',")
|
||||
builder.Append($"`{ColNames.ReleasePwd}` varchar(32) DEFAULT NULL COMMENT '发布密码',")
|
||||
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
|
||||
@@ -0,0 +1,132 @@
|
||||
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
Public Class StationPacketReleaseLogTable
|
||||
Enum ColNames
|
||||
''' <summary>
|
||||
''' 工艺站包索引
|
||||
''' </summary>
|
||||
ID
|
||||
|
||||
''' <summary>
|
||||
''' 项目索引
|
||||
''' </summary>
|
||||
ProjectID
|
||||
|
||||
''' <summary>
|
||||
''' 站位索引
|
||||
''' </summary>
|
||||
StationID
|
||||
|
||||
''' <summary>
|
||||
''' 创建时间
|
||||
''' </summary>
|
||||
CreateTime
|
||||
|
||||
''' <summary>
|
||||
''' 更新时间
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
|
||||
''' <summary>
|
||||
''' 当前包名
|
||||
''' </summary>
|
||||
PacketName
|
||||
|
||||
''' <summary>
|
||||
''' 当前包MD5值
|
||||
''' </summary>
|
||||
PacketMd5
|
||||
|
||||
''' <summary>
|
||||
''' 记录本版本更改内容
|
||||
''' </summary>
|
||||
Description
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 当前包是否有效
|
||||
''' </summary>
|
||||
IsValid
|
||||
|
||||
''' <summary>
|
||||
''' 登录用户索引
|
||||
''' </summary>
|
||||
UserID
|
||||
|
||||
''' <summary>
|
||||
''' 登录用户名称
|
||||
''' </summary>
|
||||
UserName
|
||||
|
||||
''' <summary>
|
||||
''' 发布电脑的公网IP
|
||||
''' </summary>
|
||||
PublicIP
|
||||
|
||||
''' <summary>
|
||||
''' 发布电脑用户名
|
||||
''' </summary>
|
||||
ComputerName
|
||||
|
||||
''' <summary>
|
||||
''' 发布电脑的SID
|
||||
''' </summary>
|
||||
SID
|
||||
|
||||
''' <summary>
|
||||
''' 备注
|
||||
''' </summary>
|
||||
Remark
|
||||
End Enum
|
||||
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_TP_Release_Log"
|
||||
|
||||
''' <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 '工艺站包索引',")
|
||||
builder.Append($"`{ColNames.ProjectID}` int(11) NOT NULL COMMENT '项目ID',")
|
||||
builder.Append($"`{ColNames.StationID}` int(11) NOT NULL COMMENT '站位索引',")
|
||||
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.Description}` text NOT NULL COMMENT '版本说明',")
|
||||
builder.Append($"`{ColNames.Remark}` varchar(128) DEFAULT NULL COMMENT ' 备注',")
|
||||
builder.Append($"`{ColNames.PacketName}` varchar(128) NOT NULL COMMENT '工艺站包包名',")
|
||||
builder.Append($"`{ColNames.PacketMd5}` varchar(32) NOT NULL COMMENT '工艺站包MD5值',")
|
||||
builder.Append($"`{ColNames.IsValid}` tinyint(4) NOT NULL DEFAULT 1 COMMENT '是否有效',")
|
||||
|
||||
builder.Append($"`{ColNames.UserID}` int(11) NOT NULL COMMENT '登录用户索引',")
|
||||
builder.Append($"`{ColNames.UserName}` varchar(254) NOT NULL COMMENT '登录用户名称',")
|
||||
builder.Append($"`{ColNames.PublicIP}` varchar(64) NOT NULL COMMENT '发布电脑的公网IP',")
|
||||
builder.Append($"`{ColNames.ComputerName}` varchar(254) NOT NULL COMMENT '发布电脑用户名',")
|
||||
builder.Append($"`{ColNames.SID}` varchar(64) NOT NULL COMMENT '发布电脑的SID',")
|
||||
|
||||
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
|
||||
|
||||
212
UTS_Core/UTSModule/DbTableModel/Customer/SyncListTable.vb
Normal file
212
UTS_Core/UTSModule/DbTableModel/Customer/SyncListTable.vb
Normal file
@@ -0,0 +1,212 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
''' <summary>
|
||||
''' 用户数据库同步总表
|
||||
''' </summary>
|
||||
Public Class SyncListTable
|
||||
Enum ColNamesEnum
|
||||
ID
|
||||
''' <summary>
|
||||
''' 需要同步的数据表名
|
||||
''' </summary>
|
||||
TableName
|
||||
''' <summary>
|
||||
''' 数据表版本编号
|
||||
''' </summary>
|
||||
RevisionID
|
||||
''' <summary>
|
||||
''' 最近同步的本地时间
|
||||
''' </summary>
|
||||
SyncTime
|
||||
''' <summary>
|
||||
''' 同步类型,如全表下载(all),或是增量下载(new)
|
||||
''' </summary>
|
||||
SyncType
|
||||
''' <summary>
|
||||
''' 同步时需要更新的数据列
|
||||
''' </summary>
|
||||
SyncCols
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_SyncList"
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 根据数据库类型,返回建表语句
|
||||
''' </summary>
|
||||
''' <param name="dbType">数据库类型</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function CreateTableString(dbType As DbExecutor.DbTypeEnum) As String
|
||||
Dim createStr As New StringBuilder
|
||||
Select Case dbType
|
||||
Case DbExecutor.DbTypeEnum.Sqlite
|
||||
createStr.Append($"Create Table If Not Exists `{TableName}`")
|
||||
createStr.Append(" (")
|
||||
createStr.Append($"`{ColNamesEnum.ID}` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.TableName}` varchar(254) NOT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.RevisionID}` integer NOT NULL Default 0 ,")
|
||||
createStr.Append($"`{ColNamesEnum.SyncTime}` dateTime NOT NULL DEFAULT '2000-01-01 00:00:00' ,")
|
||||
createStr.Append($"`{ColNamesEnum.SyncType}` varchar(254) NOT NULL DEFAULT 'ALL' ,")
|
||||
createStr.Append($"`{ColNamesEnum.SyncCols}` varchar(254) NOT NULL DEFAULT '*' ")
|
||||
createStr.Append(" );")
|
||||
Case DbExecutor.DbTypeEnum.Mysql
|
||||
createStr.Append($"Create Table If Not Exists `{TableName}`")
|
||||
createStr.Append(" (")
|
||||
createStr.Append($"`{ColNamesEnum.ID}` int(11) Not NULL AUTO_INCREMENT,")
|
||||
createStr.Append($"`{ColNamesEnum.TableName}` varchar(254) Not NULL COMMENT '需同步的表名',")
|
||||
createStr.Append($"`{ColNamesEnum.RevisionID}` int(11) Not NULL DEFAULT 0 COMMENT '表版本编号',")
|
||||
createStr.Append($"`{ColNamesEnum.SyncType}` varchar(254) NOT NULL DEFAULT 'ALL' COMMENT '同步类型',")
|
||||
createStr.Append($"`{ColNamesEnum.SyncCols}` varchar(254) NOT NULL DEFAULT '*' COMMENT '同步列名',")
|
||||
createStr.Append($"PRIMARY KEY (`ID`)")
|
||||
createStr.Append(" );")
|
||||
Case Else
|
||||
Throw New Exception($"Invalid db type:{dbType}")
|
||||
End Select
|
||||
|
||||
Return createStr.ToString()
|
||||
End Function
|
||||
|
||||
Public Shared Function CreateTableString(dbName As String, Optional dbType As DbExecutor.DbTypeEnum = DbExecutor.DbTypeEnum.Mysql) As String
|
||||
Dim createStr As New StringBuilder
|
||||
Select Case dbType
|
||||
Case DbExecutor.DbTypeEnum.Sqlite
|
||||
createStr.Append($"Create Table If Not Exists `{TableName}`")
|
||||
createStr.Append(" (")
|
||||
createStr.Append($"`{ColNamesEnum.ID}` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.TableName}` varchar(254) NOT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.RevisionID}` integer NOT NULL Default 0 ,")
|
||||
createStr.Append($"`{ColNamesEnum.SyncTime}` dateTime NOT NULL DEFAULT '2000-01-01 00:00:00' ,")
|
||||
createStr.Append($"`{ColNamesEnum.SyncType}` varchar(254) NOT NULL DEFAULT 'ALL' ,")
|
||||
createStr.Append($"`{ColNamesEnum.SyncCols}` varchar(254) NOT NULL DEFAULT '*' ")
|
||||
createStr.Append(" );")
|
||||
Case DbExecutor.DbTypeEnum.Mysql
|
||||
createStr.Append($"Create Table If Not Exists `{dbName}`.`{TableName}`")
|
||||
createStr.Append(" (")
|
||||
createStr.Append($"`{ColNamesEnum.ID}` int(11) Not NULL AUTO_INCREMENT,")
|
||||
createStr.Append($"`{ColNamesEnum.TableName}` varchar(254) Not NULL COMMENT '需同步的表名',")
|
||||
createStr.Append($"`{ColNamesEnum.RevisionID}` int(11) Not NULL DEFAULT 0 COMMENT '表版本编号',")
|
||||
createStr.Append($"`{ColNamesEnum.SyncType}` varchar(254) NOT NULL DEFAULT 'ALL' COMMENT '同步类型',")
|
||||
createStr.Append($"`{ColNamesEnum.SyncCols}` varchar(254) NOT NULL DEFAULT '*' COMMENT '同步列名',")
|
||||
createStr.Append($"PRIMARY KEY (`ID`)")
|
||||
createStr.Append(" );")
|
||||
Case Else
|
||||
Throw New Exception($"Invalid db type:{dbType}")
|
||||
End Select
|
||||
|
||||
Return createStr.ToString()
|
||||
End Function
|
||||
|
||||
Public Shared Function SyncTrigger(dbName As String, tbName As String) As String
|
||||
Dim builder As New StringBuilder
|
||||
builder.Append(DbAfterDeleteDataTrigger(dbName, tbName))
|
||||
builder.Append(DbAfterInsertDataTrigger(dbName, tbName))
|
||||
' builder.Append(DbAfterUpdateDataTrigger(dbName, tbName))
|
||||
builder.Append(DbBeforUpdateDataTrigger(dbName, tbName))
|
||||
Return builder.ToString()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 添加需要同步的数据表名至同步表中
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tbName">需要同步的数据表名</param>
|
||||
''' <param name="syncType">同步类型,all为全表下载,new为增量下载</param>
|
||||
''' <param name="syncCols">同步时下载的字段,默认为*全字段下载</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function AddSyncTableString(dbName As String, tbName As String,Optional syncType As String = "all",Optional syncCols As String = "*") As String
|
||||
Dim builder As New StringBuilder
|
||||
builder.Append($"Delete from `{dbName}`.`{TableName}` where `{ColNamesEnum.TableName}` = '{tbName}';")
|
||||
builder.Append($"Insert Into `{dbName}`.`{TableName}` (`{ColNamesEnum.TableName}`,`{ColNamesEnum.SyncType}`,`{ColNamesEnum.SyncCols}`) values ('{tbName}','{syncType}','{syncCols}');")
|
||||
Return builder.ToString()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 数据库连接涉及多库操作时,新增数据后更新触发器
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tbName">数据表名</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function DbAfterInsertDataTrigger(dbName As String, tbName As String) As String
|
||||
Dim triggerString As New StringBuilder
|
||||
triggerString.Append($"Create Trigger If Not Exists `{dbName}`.`{tbName}_AfterInsert` ")
|
||||
triggerString.Append($"After Insert On `{dbName}`.`{tbName}` ")
|
||||
triggerString.Append($"For Each Row ")
|
||||
triggerString.Append($"Begin ")
|
||||
|
||||
triggerString.Append($"UPDATE `{dbName}`.`{TableName}` SET `{ColNamesEnum.RevisionID}` = (`{ColNamesEnum.RevisionID}` + 1) where `{ColNamesEnum.TableName}` = '{tbName}';")
|
||||
|
||||
triggerString.Append($"End;")
|
||||
|
||||
Return triggerString.ToString()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 数据库连接涉及多库操作时,更新数据后更新触发器
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tbName">数据表名</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function DbAfterUpdateDataTrigger(dbName As String, tbName As String) As String
|
||||
Dim triggerString As New StringBuilder
|
||||
triggerString.Append($"Create Trigger If Not Exists `{dbName}`.`{tbName}_AfterUpdate` ")
|
||||
triggerString.Append($"After Update On `{dbName}`.`{tbName}` ")
|
||||
triggerString.Append($"For Each Row ")
|
||||
triggerString.Append($"Begin ")
|
||||
|
||||
triggerString.Append($"Set NEW.UpdateTime = NOW();")
|
||||
triggerString.Append($"UPDATE `{dbName}`.`{TableName}` SET `{ColNamesEnum.RevisionID}` = (`{ColNamesEnum.RevisionID}` + 1) where `{ColNamesEnum.TableName}` = '{tbName}';")
|
||||
|
||||
triggerString.Append($"End;")
|
||||
|
||||
Return triggerString.ToString()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 数据库连接涉及多库操作时,更新数据后更新触发器
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tbName">数据表名</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function DbBeforUpdateDataTrigger(dbName As String, tbName As String) As String
|
||||
Dim triggerString As New StringBuilder
|
||||
triggerString.Append($"Create Trigger If Not Exists `{dbName}`.`{tbName}_BeforeUpdate` ")
|
||||
triggerString.Append($"Before Update On `{dbName}`.`{tbName}` ")
|
||||
triggerString.Append($"For Each Row ")
|
||||
triggerString.Append($"Begin ")
|
||||
|
||||
triggerString.Append($"Set NEW.UpdateTime = NOW();")
|
||||
triggerString.Append($"UPDATE `{dbName}`.`{TableName}` SET `{ColNamesEnum.RevisionID}` = (`{ColNamesEnum.RevisionID}` + 1) where `{ColNamesEnum.TableName}` = '{tbName}';")
|
||||
|
||||
triggerString.Append($"End;")
|
||||
|
||||
Return triggerString.ToString()
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 数据库连接涉及多库操作时,删除后更新触发器
|
||||
''' </summary>
|
||||
''' <param name="dbName">数据库名</param>
|
||||
''' <param name="tbName">数据表名</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function DbAfterDeleteDataTrigger(dbName As String, tbName As String) As String
|
||||
Dim triggerString As New StringBuilder
|
||||
triggerString.Append($"Create Trigger If Not Exists `{dbName}`.`{tbName}_AfterDelete` ")
|
||||
triggerString.Append($"After Delete On `{dbName}`.`{tbName}` ")
|
||||
triggerString.Append($"For Each Row ")
|
||||
triggerString.Append($"Begin ")
|
||||
|
||||
triggerString.Append($"UPDATE `{dbName}`.`{TableName}` SET `{ColNamesEnum.RevisionID}` = (`{ColNamesEnum.RevisionID}` + 1) where `{ColNamesEnum.TableName}` = '{tbName}';")
|
||||
|
||||
triggerString.Append($"End;")
|
||||
|
||||
Return triggerString.ToString()
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
End Class
|
||||
|
||||
End Namespace
|
||||
146
UTS_Core/UTSModule/DbTableModel/Customer/TestLogTable.vb
Normal file
146
UTS_Core/UTSModule/DbTableModel/Customer/TestLogTable.vb
Normal file
@@ -0,0 +1,146 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
''' <summary>
|
||||
''' 测试记录表,不同项目不同站表名不同
|
||||
''' </summary>
|
||||
Public Class TestLogTable
|
||||
Enum ColNames
|
||||
ID
|
||||
''' <summary>
|
||||
''' 用户唯一标识
|
||||
''' </summary>
|
||||
UserID
|
||||
|
||||
''' <summary>
|
||||
''' 设备唯一索引
|
||||
''' </summary>
|
||||
ServiceID
|
||||
|
||||
''' <summary>
|
||||
''' 生产线索引
|
||||
''' </summary>
|
||||
ProductionLineID
|
||||
|
||||
''' <summary>
|
||||
''' 内部订单索引
|
||||
''' </summary>
|
||||
OrderID
|
||||
|
||||
''' <summary>
|
||||
''' 应用程序名
|
||||
''' </summary>
|
||||
AppName
|
||||
|
||||
''' <summary>
|
||||
''' 测试流程名
|
||||
''' </summary>
|
||||
TestPlan
|
||||
|
||||
''' <summary>
|
||||
''' 产品SN唯一索引
|
||||
''' </summary>
|
||||
DUT_SN
|
||||
|
||||
''' <summary>
|
||||
''' 测试起始时间
|
||||
''' </summary>
|
||||
StartTime
|
||||
|
||||
''' <summary>
|
||||
''' 测试耗时
|
||||
''' </summary>
|
||||
UsedTime
|
||||
|
||||
''' <summary>
|
||||
''' 测试结果
|
||||
''' </summary>
|
||||
TestResult
|
||||
|
||||
''' <summary>
|
||||
''' 错误代码
|
||||
''' </summary>
|
||||
ErrCode
|
||||
|
||||
''' <summary>
|
||||
''' 失败步骤集合
|
||||
''' </summary>
|
||||
FailSteps
|
||||
|
||||
''' <summary>
|
||||
''' 失败步骤集合
|
||||
''' </summary>
|
||||
FailMsg
|
||||
|
||||
''' <summary>
|
||||
''' 自定义字段,由实际使用中添加字段
|
||||
''' </summary>
|
||||
CustomFiled
|
||||
End Enum
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 数据表名
|
||||
''' </summary>
|
||||
''' <param name="projectIndex">项目索引</param>
|
||||
''' <param name="stationIndex">工艺站索引</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function TableName(projectIndex As Integer, stationIndex As Integer) As String
|
||||
Return $"TBL_{projectIndex}_{stationIndex}_TestLog"
|
||||
End Function
|
||||
|
||||
Public Shared ReadOnly CustomFiledType As String = $"varchar(16)"
|
||||
|
||||
''' <summary>
|
||||
''' 建表语句
|
||||
''' </summary>
|
||||
''' <returns>建表语句</returns>
|
||||
Public Shared Function CreateTableString(dbName As String, tableName As String, Optional dbType As DbExecutor.DbTypeEnum = DbExecutor.DbTypeEnum.Mysql) As String
|
||||
Dim createStr As New StringBuilder
|
||||
If dbType = DbExecutor.DbTypeEnum.Sqlite Then
|
||||
createStr.Append($"Create Table If Not Exists `{tableName}`")
|
||||
createStr.Append(" (")
|
||||
createStr.Append($"`{ColNames.ID}` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,")
|
||||
createStr.Append($"`{ColNames.UserID}` INTEGER,")
|
||||
createStr.Append($"`{ColNames.ServiceID}` INTEGER,")
|
||||
createStr.Append($"`{ColNames.AppName}` varchar(64) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNames.TestPlan}` varchar(128) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNames.DUT_SN}` varchar(32) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNames.StartTime}` datetime DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNames.UsedTime}` double DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNames.TestResult}` int DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNames.ErrCode}` varchar(16) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNames.FailSteps}` varchar(128) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNames.ProductionLineID}` int DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNames.OrderID}` int DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNames.FailMsg}` varchar(254) DEFAULT NULL")
|
||||
createStr.Append(" );")
|
||||
ElseIf dbType = DbExecutor.DbTypeEnum.Mysql Then
|
||||
createStr.Append($"Create Table If Not Exists `{dbName}`.`{tableName}`")
|
||||
createStr.Append(" (")
|
||||
createStr.Append($"`{ColNames.ID}` int(11) NOT NULL AUTO_INCREMENT ,")
|
||||
createStr.Append($"`{ColNames.UserID}` int,")
|
||||
createStr.Append($"`{ColNames.ServiceID}` int,")
|
||||
createStr.Append($"`{ColNames.AppName}` varchar(64) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNames.TestPlan}` varchar(128) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNames.DUT_SN}` varchar(32) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNames.StartTime}` datetime DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNames.UsedTime}` double DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNames.TestResult}` tinyint(1) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNames.ErrCode}` varchar(16) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNames.FailSteps}` varchar(128) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNames.ProductionLineID}` int DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNames.OrderID}` int DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNames.FailMsg}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"PRIMARY KEY (`{ColNames.ID}`)")
|
||||
createStr.Append(" );")
|
||||
Else
|
||||
Throw New Exception($"Unknown Type{dbType}!")
|
||||
End If
|
||||
|
||||
Return createStr.ToString()
|
||||
End Function
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
@@ -0,0 +1,54 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Customer
|
||||
''' <summary>
|
||||
''' 产商的客户总表
|
||||
''' </summary>
|
||||
Public Class VendorCustomerTable
|
||||
Enum ColNames
|
||||
ID
|
||||
|
||||
CustomerAbbr
|
||||
|
||||
CustomerName
|
||||
|
||||
CreateTime
|
||||
|
||||
''' <summary>
|
||||
''' 修改日期
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_Customer"
|
||||
|
||||
''' <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.CustomerAbbr}` varchar(64) NOT NULL COMMENT '客户缩写',")
|
||||
builder.Append($"`{ColNames.CustomerName}` varchar(64) NOT NULL DEFAULT '' COMMENT '客户名称',")
|
||||
builder.Append($"`{ColNames.CreateTime}` datetime NOT NULL DEFAULT current_timestamp() COMMENT '创建时间',")
|
||||
builder.Append($"`{ColNames.UpdateTime}` datetime NOT NULL DEFAULT current_timestamp() COMMENT '更新时间',")
|
||||
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
|
||||
59
UTS_Core/UTSModule/DbTableModel/LocalPrivate/CacheTable.vb
Normal file
59
UTS_Core/UTSModule/DbTableModel/LocalPrivate/CacheTable.vb
Normal file
@@ -0,0 +1,59 @@
|
||||
Imports System.Text
|
||||
|
||||
Namespace UTSModule.DbTableModel.LocalPrivate
|
||||
''' <summary>
|
||||
''' 本地未上传记录缓存表
|
||||
''' </summary>
|
||||
Public Class CacheTable
|
||||
''' <summary>数据库操作记录表枚举值</summary>
|
||||
Enum ColNamesEnum
|
||||
|
||||
''' <summary>序列号</summary>
|
||||
ID
|
||||
|
||||
''' <summary>用户名</summary>
|
||||
[Operator]
|
||||
|
||||
''' <summary>日期时间</summary>
|
||||
DateTime
|
||||
|
||||
''' <summary>数据库语句</summary>
|
||||
SqlCmd
|
||||
|
||||
''' <summary>是否已经同步到远程数据库</summary>
|
||||
IsUpload
|
||||
|
||||
''' <summary>同步出错编码</summary>
|
||||
ErrorCode
|
||||
|
||||
''' <summary>同步出错提示</summary>
|
||||
ErrorMessage
|
||||
|
||||
''' <summary>备注</summary>
|
||||
Remark
|
||||
End Enum
|
||||
|
||||
Public Shared ReadOnly TableName As String = "TBL_Table_CaChe"
|
||||
|
||||
''' <summary>
|
||||
''' Sqlite数据库建表语句
|
||||
''' </summary>
|
||||
''' <returns>建表语句</returns>
|
||||
Public Shared Function CreateTableString() As String
|
||||
Dim createStr As New StringBuilder
|
||||
createStr.Append($"Create Table If Not Exists `{TableName}`")
|
||||
createStr.Append(" (")
|
||||
createStr.Append($"`{ColNamesEnum.ID}` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.DateTime}` DateTime NOT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.Operator }` integer,")
|
||||
createStr.Append($"`{ColNamesEnum.SqlCmd}` text NOT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.IsUpload }` bit NOT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.ErrorCode }` varchar(64) ,")
|
||||
createStr.Append($"`{ColNamesEnum.ErrorMessage }` varchar(255) ,")
|
||||
createStr.Append($"`{ColNamesEnum.Remark}` varchar(255)")
|
||||
createStr.Append(" );")
|
||||
Return createStr.ToString()
|
||||
End Function
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
85
UTS_Core/UTSModule/DbTableModel/Manage/AppListTable.vb
Normal file
85
UTS_Core/UTSModule/DbTableModel/Manage/AppListTable.vb
Normal file
@@ -0,0 +1,85 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
Public Class AppListTable
|
||||
Enum ColNamesEnum
|
||||
''' <summary>
|
||||
'''索引
|
||||
''' </summary>
|
||||
ID
|
||||
|
||||
''' <summary>
|
||||
''' 数据服务索引
|
||||
''' </summary>
|
||||
ServiceID
|
||||
|
||||
''' <summary>
|
||||
''' 软件名
|
||||
''' </summary>
|
||||
AppName
|
||||
|
||||
''' <summary>
|
||||
''' 软件版本
|
||||
''' </summary>
|
||||
AppVersion
|
||||
|
||||
''' <summary>
|
||||
''' 注册日期与时间
|
||||
''' </summary>
|
||||
RegisterDateTime
|
||||
|
||||
''' <summary>
|
||||
''' 最后活动日期与时间
|
||||
''' </summary>
|
||||
LastActiveDateTime
|
||||
|
||||
''' <summary>
|
||||
''' 最后活动信息
|
||||
''' </summary>
|
||||
LastInfomation
|
||||
|
||||
''' <summary>
|
||||
''' 备注
|
||||
''' </summary>
|
||||
Remark
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_UTS_Manage_AppList"
|
||||
|
||||
|
||||
Public Shared Function CreateTableString(dbName As String, Optional dbType As DbExecutor.DbTypeEnum = DbExecutor.DbTypeEnum.Mysql) As String
|
||||
Dim createStr As New StringBuilder
|
||||
If dbType = DbExecutor.DbTypeEnum.Sqlite Then
|
||||
createStr.Append($"Create Table If Not Exists `{TableName}`")
|
||||
createStr.Append(" (")
|
||||
createStr.Append($"`{ColNamesEnum.ID}` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.ServiceID}` int(11) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.AppName}` varchar(254) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.AppVersion}` varchar(64) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.LastInfomation}` varchar(254) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.RegisterDateTime}` DateTime DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.LastActiveDateTime}` DateTime DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.Remark}` text DEFAULT NULL ")
|
||||
createStr.Append(" );")
|
||||
ElseIf dbType = DbExecutor.DbTypeEnum.Mysql Then
|
||||
createStr.Append($"Create Table If Not Exists `{dbName}`.`{TableName}`")
|
||||
createStr.Append(" (")
|
||||
createStr.Append($"`{ColNamesEnum.ID}` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.ServiceID}` int(11) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.AppName}` varchar(254) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.AppVersion}` varchar(64) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.LastInfomation}` varchar(254) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.RegisterDateTime}` DateTime DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.LastActiveDateTime}` DateTime DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.Remark}` text DEFAULT NULL ,")
|
||||
createStr.Append($"PRIMARY KEY (`{ColNamesEnum.ID}`)")
|
||||
createStr.Append(" );")
|
||||
Else
|
||||
Throw New Exception($"Unknown Type{dbType}!")
|
||||
End If
|
||||
|
||||
Return createStr.ToString()
|
||||
End Function
|
||||
End Class
|
||||
End Namespace
|
||||
106
UTS_Core/UTSModule/DbTableModel/Manage/AppLogTable.vb
Normal file
106
UTS_Core/UTSModule/DbTableModel/Manage/AppLogTable.vb
Normal file
@@ -0,0 +1,106 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
Public Class AppLogTable
|
||||
Enum ColNamesEnum
|
||||
''' <summary>
|
||||
''' 索引
|
||||
''' </summary>
|
||||
ID
|
||||
|
||||
''' <summary>
|
||||
''' 数据服务索引
|
||||
''' </summary>
|
||||
ServiceID
|
||||
|
||||
''' <summary>
|
||||
''' 软件名称
|
||||
''' </summary>
|
||||
AppName
|
||||
|
||||
''' <summary>
|
||||
''' App版本
|
||||
''' </summary>
|
||||
AppVersion
|
||||
|
||||
''' <summary>
|
||||
''' 测试项目名
|
||||
''' </summary>
|
||||
ProjectName
|
||||
|
||||
''' <summary>
|
||||
''' 测试站名
|
||||
''' </summary>
|
||||
StationName
|
||||
|
||||
''' <summary>
|
||||
''' 测试流程名
|
||||
''' </summary>
|
||||
TestPlan
|
||||
|
||||
''' <summary>
|
||||
''' 生成日期
|
||||
''' </summary>
|
||||
DateTime
|
||||
|
||||
''' <summary>
|
||||
''' 日志类型
|
||||
''' </summary>
|
||||
LogType
|
||||
|
||||
''' <summary>
|
||||
''' 日志内容
|
||||
''' </summary>
|
||||
LogText
|
||||
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_UTS_Manage_AppLog"
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 建表语句
|
||||
''' </summary>
|
||||
''' <returns>建表语句</returns>
|
||||
Public Shared Function CreateTableString(dbName As String, Optional dbType As DbExecutor.DbTypeEnum = DbExecutor.DbTypeEnum.Mysql) As String
|
||||
Dim createStr As New StringBuilder
|
||||
If dbType = DbExecutor.DbTypeEnum.Sqlite Then
|
||||
createStr.Append($"Create Table If Not Exists `{TableName}`")
|
||||
createStr.Append(" (")
|
||||
createStr.Append($"`{ColNamesEnum.ID}` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.ServiceID}` int(11) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.AppName}` varchar(254) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.AppVersion}` varchar(64) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.ProjectName}` varchar(64) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.StationName}` varchar(64) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.TestPlan}` varchar(254) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.DateTime}` DateTime DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.LogType}` varchar(32) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.LogText}` text DEFAULT NULL ")
|
||||
createStr.Append(" );")
|
||||
ElseIf dbType = DbExecutor.DbTypeEnum.Mysql Then
|
||||
createStr.Append($"Create Table If Not Exists `{dbName}`.`{TableName}`")
|
||||
createStr.Append(" (")
|
||||
createStr.Append($"`{ColNamesEnum.ID}` int(11) NOT NULL AUTO_INCREMENT ,")
|
||||
createStr.Append($"`{ColNamesEnum.ServiceID}` int(11) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.AppName}` varchar(254) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.AppVersion}` varchar(64) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.ProjectName}` varchar(64) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.StationName}` varchar(64) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.TestPlan}` varchar(254) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.DateTime}` DateTime DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.LogType}` varchar(32) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.LogText}` text DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.ID}` int(11) NOT NULL AUTO_INCREMENT ,")
|
||||
createStr.Append($"PRIMARY KEY (`{ColNamesEnum.ID}`)")
|
||||
createStr.Append(" );")
|
||||
Else
|
||||
Throw New Exception($"Unknown Type{dbType}!")
|
||||
End If
|
||||
|
||||
Return createStr.ToString()
|
||||
End Function
|
||||
End Class
|
||||
|
||||
End Namespace
|
||||
32
UTS_Core/UTSModule/DbTableModel/Manage/CustomerListTable.vb
Normal file
32
UTS_Core/UTSModule/DbTableModel/Manage/CustomerListTable.vb
Normal file
@@ -0,0 +1,32 @@
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
''' <summary>
|
||||
''' 客户总表
|
||||
''' </summary>
|
||||
Public Class CustomerListTable
|
||||
Enum ColNamesEnum
|
||||
''' <summary>
|
||||
''' 客户唯一标识
|
||||
''' </summary>
|
||||
ID
|
||||
|
||||
''' <summary>
|
||||
''' 客户公司名
|
||||
''' </summary>
|
||||
CustomerName
|
||||
|
||||
''' <summary>
|
||||
''' 创建日期
|
||||
''' </summary>
|
||||
CreateTime
|
||||
''' <summary>
|
||||
''' 修改日期
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_UTS_Manage_Company"
|
||||
|
||||
End Class
|
||||
|
||||
|
||||
End NameSpace
|
||||
133
UTS_Core/UTSModule/DbTableModel/Manage/DataServiceListTable.vb
Normal file
133
UTS_Core/UTSModule/DbTableModel/Manage/DataServiceListTable.vb
Normal file
@@ -0,0 +1,133 @@
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
Public Class DataServiceListTable
|
||||
Enum ColNames
|
||||
''' <summary>
|
||||
''' 服务索引唯一值
|
||||
''' </summary>
|
||||
ID
|
||||
|
||||
''' <summary>
|
||||
''' 鉴权文件索引
|
||||
''' </summary>
|
||||
LicenseID
|
||||
|
||||
''' <summary>
|
||||
''' 鉴权文件有效日期
|
||||
''' </summary>
|
||||
LicenseValidDateTime
|
||||
|
||||
''' <summary>
|
||||
''' 公司名
|
||||
''' </summary>
|
||||
CompanyName
|
||||
|
||||
''' <summary>
|
||||
''' 服务终端内核
|
||||
''' </summary>
|
||||
TerminalOS
|
||||
|
||||
''' <summary>
|
||||
''' 服务终端类型
|
||||
''' </summary>
|
||||
TerminalType
|
||||
|
||||
''' <summary>
|
||||
''' 服务终端名称
|
||||
''' </summary>
|
||||
TerminalName
|
||||
|
||||
''' <summary>
|
||||
''' 服务自定义标识名称
|
||||
''' </summary>
|
||||
TerminalAlias
|
||||
|
||||
''' <summary>
|
||||
''' 服务MAC地址
|
||||
''' </summary>
|
||||
TerminalMAC
|
||||
|
||||
''' <summary>
|
||||
''' CPU序列号
|
||||
''' </summary>
|
||||
ProcessorId
|
||||
|
||||
''' <summary>
|
||||
''' 服务版本
|
||||
''' </summary>
|
||||
ServiceVersion
|
||||
|
||||
''' <summary>
|
||||
''' 服务注册日期
|
||||
''' </summary>
|
||||
ServiceRegisterDateTime
|
||||
|
||||
''' <summary>
|
||||
'''服务最后活动日期
|
||||
''' </summary>
|
||||
ServiceLastActiveDateTime
|
||||
|
||||
''' <summary>
|
||||
''' 服务是否有效,注册默认有效
|
||||
''' </summary>
|
||||
ServiceValid
|
||||
|
||||
''' <summary>
|
||||
''' 数据服务在线
|
||||
''' </summary>
|
||||
IsOnline
|
||||
|
||||
''' <summary>
|
||||
''' 数据服务在线时间
|
||||
''' </summary>
|
||||
ServiceOnlineDateTime
|
||||
|
||||
''' <summary>
|
||||
''' 数据服务需要人工处理错误信息
|
||||
''' </summary>
|
||||
ErrMsg
|
||||
|
||||
''' <summary>
|
||||
''' 更新服务版本
|
||||
''' </summary>
|
||||
USVer
|
||||
|
||||
''' <summary>
|
||||
''' 更新服务是否在线
|
||||
''' </summary>
|
||||
USIsOnline
|
||||
|
||||
''' <summary>
|
||||
''' 更新服务需要人工处理错误信息
|
||||
''' </summary>
|
||||
USErrMsg
|
||||
|
||||
''' <summary>
|
||||
''' 子网名称
|
||||
''' </summary>
|
||||
BarnchNet
|
||||
|
||||
''' <summary>
|
||||
''' 设备角色
|
||||
''' </summary>
|
||||
Roles
|
||||
|
||||
''' <summary>
|
||||
''' 与子网服务连接状态
|
||||
''' </summary>
|
||||
IsDBProxyConn
|
||||
|
||||
''' <summary>
|
||||
''' 缓存表数量
|
||||
''' </summary>
|
||||
CacheCount
|
||||
|
||||
''' <summary>
|
||||
''' 网上邻居
|
||||
''' </summary>
|
||||
NetworkNeiborhood
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_UTS_Manage_DataServiceList"
|
||||
|
||||
End Class
|
||||
End NameSpace
|
||||
112
UTS_Core/UTSModule/DbTableModel/Manage/DataServiceLogTable.vb
Normal file
112
UTS_Core/UTSModule/DbTableModel/Manage/DataServiceLogTable.vb
Normal file
@@ -0,0 +1,112 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
Public Class DataServiceLogTable
|
||||
Enum ColNames
|
||||
''' <summary>
|
||||
''' 索引
|
||||
''' </summary>
|
||||
ID
|
||||
|
||||
''' <summary>
|
||||
''' 数据服务索引
|
||||
''' </summary>
|
||||
ServiceID
|
||||
|
||||
''' <summary>
|
||||
''' 数据服务版本
|
||||
''' </summary>
|
||||
ServiceVersion
|
||||
|
||||
''' <summary>
|
||||
''' 更新服务版本
|
||||
''' </summary>
|
||||
UpdateServiceVersion
|
||||
|
||||
''' <summary>
|
||||
''' 厂商名称
|
||||
''' </summary>
|
||||
VendorName
|
||||
|
||||
''' <summary>
|
||||
''' 生成日期与时间
|
||||
''' </summary>
|
||||
DateTime
|
||||
|
||||
''' <summary>
|
||||
''' 公网IP
|
||||
''' </summary>
|
||||
PublicIp
|
||||
|
||||
''' <summary>
|
||||
''' 私网IP
|
||||
''' </summary>
|
||||
PrivateIp
|
||||
|
||||
''' <summary>
|
||||
''' Mac地址
|
||||
''' </summary>
|
||||
Mac
|
||||
|
||||
''' <summary>
|
||||
''' 日志类型
|
||||
''' </summary>
|
||||
LogType
|
||||
|
||||
''' <summary>
|
||||
''' 日志内容
|
||||
''' </summary>
|
||||
LogText
|
||||
End Enum
|
||||
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_UTS_Manage_DataServiceLog"
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 建表语句
|
||||
''' </summary>
|
||||
''' <returns>建表语句</returns>
|
||||
Public Shared Function CreateTableString(dbName As String, Optional dbType As DbExecutor.DbTypeEnum = DbExecutor.DbTypeEnum.Mysql) As String
|
||||
Dim createStr As New StringBuilder
|
||||
If dbType = DbExecutor.DbTypeEnum.Sqlite Then
|
||||
createStr.Append($"Create Table If Not Exists `{TableName}`")
|
||||
createStr.Append(" (")
|
||||
createStr.Append($"`{ColNames.ID}` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,")
|
||||
createStr.Append($"`{ColNames.ServiceID}` int(11) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNames.ServiceVersion}` varchar(64) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNames.UpdateServiceVersion}` varchar(64) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNames.VendorName}` varchar(254) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNames.PrivateIp}` varchar(64) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNames.PublicIp}` varchar(64) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNames.DateTime}` DateTime DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNames.LogType}` varchar(32) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNames.LogText}` text DEFAULT NULL ")
|
||||
createStr.Append(" );")
|
||||
ElseIf dbType = DbExecutor.DbTypeEnum.Mysql Then
|
||||
createStr.Append($"Create Table If Not Exists `{dbName}`.`{TableName}`")
|
||||
createStr.Append(" (")
|
||||
createStr.Append($"`{ColNames.ID}` int(11) NOT NULL AUTO_INCREMENT ,")
|
||||
createStr.Append($"`{ColNames.ServiceID}` int(11) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNames.ServiceVersion}` varchar(64) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNames.UpdateServiceVersion}` varchar(64) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNames.VendorName}` varchar(254) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNames.PrivateIp}` varchar(64) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNames.PublicIp}` varchar(64) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNames.DateTime}` DateTime DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNames.LogType}` varchar(32) DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNames.LogText}` text DEFAULT NULL ,")
|
||||
createStr.Append($"`{ColNames.ID}` int(11) NOT NULL AUTO_INCREMENT ,")
|
||||
createStr.Append($"PRIMARY KEY (`{ColNames.ID}`)")
|
||||
createStr.Append(" );")
|
||||
Else
|
||||
Throw New Exception($"Unknown Type{dbType}!")
|
||||
End If
|
||||
|
||||
Return createStr.ToString()
|
||||
End Function
|
||||
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
39
UTS_Core/UTSModule/DbTableModel/Manage/DbListTable.vb
Normal file
39
UTS_Core/UTSModule/DbTableModel/Manage/DbListTable.vb
Normal file
@@ -0,0 +1,39 @@
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
''' <summary>
|
||||
''' 数据库总表
|
||||
''' </summary>
|
||||
Public Class DbListTable
|
||||
Enum ColNamesEnum
|
||||
''' <summary>
|
||||
''' 数据库唯一标识
|
||||
''' </summary>
|
||||
ID
|
||||
''' <summary>
|
||||
''' 所属公司索引
|
||||
''' </summary>
|
||||
CompanyID
|
||||
''' <summary>
|
||||
''' 数据库名
|
||||
''' </summary>
|
||||
DatabaseName
|
||||
''' <summary>
|
||||
''' 数据库用户名
|
||||
''' </summary>
|
||||
DatabaseUser
|
||||
''' <summary>
|
||||
''' 数据库密码
|
||||
''' </summary>
|
||||
DatabasePassword
|
||||
''' <summary>
|
||||
''' 数据库说明
|
||||
''' </summary>
|
||||
DatabaseDesc
|
||||
''' <summary>
|
||||
''' 修改日期
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_UTS_Manage_DBList"
|
||||
End Class
|
||||
End NameSpace
|
||||
48
UTS_Core/UTSModule/DbTableModel/Manage/DevListTable.vb
Normal file
48
UTS_Core/UTSModule/DbTableModel/Manage/DevListTable.vb
Normal file
@@ -0,0 +1,48 @@
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
''' <summary>
|
||||
''' 设备总表
|
||||
''' </summary>
|
||||
Public Class DevListTable
|
||||
Enum ColNamesEnum
|
||||
''' <summary>
|
||||
''' 设备唯一索引
|
||||
''' </summary>
|
||||
ID
|
||||
''' <summary>
|
||||
''' 设备名称
|
||||
''' </summary>
|
||||
DevName
|
||||
''' <summary>
|
||||
''' 设备类型
|
||||
''' </summary>
|
||||
DevType
|
||||
''' <summary>
|
||||
''' 设备MAC地址
|
||||
''' </summary>
|
||||
MAC
|
||||
''' <summary>
|
||||
''' 首次登陆时间
|
||||
''' </summary>
|
||||
FirstLoginDate
|
||||
''' <summary>
|
||||
''' 末次在线时间
|
||||
''' </summary>
|
||||
LastOnlineDate
|
||||
''' <summary>
|
||||
''' 修改日期
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
''' <summary>
|
||||
''' 设备在线状态
|
||||
''' </summary>
|
||||
OnlineStatus
|
||||
''' <summary>
|
||||
''' 是被是否有效
|
||||
''' </summary>
|
||||
Valid
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_UTS_Manage_DevList"
|
||||
|
||||
End Class
|
||||
End NameSpace
|
||||
52
UTS_Core/UTSModule/DbTableModel/Manage/DevLogTable.vb
Normal file
52
UTS_Core/UTSModule/DbTableModel/Manage/DevLogTable.vb
Normal file
@@ -0,0 +1,52 @@
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
''' <summary>
|
||||
''' 设备日志总表
|
||||
''' </summary>
|
||||
Public Class DevLogTable
|
||||
Enum ColNamesEnum
|
||||
ID
|
||||
''' <summary>
|
||||
''' 设备唯一标识
|
||||
''' </summary>
|
||||
DevID
|
||||
''' <summary>
|
||||
''' 操作时间
|
||||
''' </summary>
|
||||
DateTime
|
||||
''' <summary>
|
||||
''' 公网IP
|
||||
''' </summary>
|
||||
Public_IP
|
||||
''' <summary>
|
||||
''' 内网IP
|
||||
''' </summary>
|
||||
Private_IP
|
||||
''' <summary>
|
||||
''' License文件名
|
||||
''' </summary>
|
||||
LicFileName
|
||||
''' <summary>
|
||||
''' 产生日志的APP名
|
||||
''' </summary>
|
||||
AppName
|
||||
''' <summary>
|
||||
''' App版本号
|
||||
''' </summary>
|
||||
AppVersion
|
||||
''' <summary>
|
||||
''' 测试配置文件名称
|
||||
''' </summary>
|
||||
TestPlan
|
||||
''' <summary>
|
||||
''' 用户唯一标识
|
||||
''' </summary>
|
||||
UserID
|
||||
''' <summary>
|
||||
''' 操作内容
|
||||
''' </summary>
|
||||
Operation
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_UTS_Manage_DevLog"
|
||||
End Class
|
||||
End NameSpace
|
||||
28
UTS_Core/UTSModule/DbTableModel/Manage/ErrCodeTable.vb
Normal file
28
UTS_Core/UTSModule/DbTableModel/Manage/ErrCodeTable.vb
Normal file
@@ -0,0 +1,28 @@
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
''' <summary>
|
||||
''' 错误代码总表
|
||||
''' </summary>
|
||||
Public Class ErrCodeTable
|
||||
Enum ColNamesEnum
|
||||
''' <summary>
|
||||
''' 错误代码唯一标识
|
||||
''' </summary>
|
||||
ErrCode
|
||||
''' <summary>
|
||||
''' 错误提示信息
|
||||
''' </summary>
|
||||
ErrMsg
|
||||
''' <summary>
|
||||
''' 统计图中提示颜色
|
||||
''' </summary>
|
||||
ErrColor
|
||||
''' <summary>
|
||||
''' 修改日期
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_UTS_Manage_ErrCode"
|
||||
|
||||
End Class
|
||||
End NameSpace
|
||||
34
UTS_Core/UTSModule/DbTableModel/Manage/FtpUserTable.vb
Normal file
34
UTS_Core/UTSModule/DbTableModel/Manage/FtpUserTable.vb
Normal file
@@ -0,0 +1,34 @@
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
Public Class FtpUserTable
|
||||
Enum ColNamesEnum
|
||||
''' <summary>
|
||||
'''索引
|
||||
''' </summary>
|
||||
ID
|
||||
|
||||
''' <summary>
|
||||
''' 数据服务索引
|
||||
''' </summary>
|
||||
FtpService
|
||||
|
||||
''' <summary>
|
||||
''' 软件名
|
||||
''' </summary>
|
||||
FtpPort
|
||||
|
||||
''' <summary>
|
||||
''' 软件版本
|
||||
''' </summary>
|
||||
FtpUser
|
||||
|
||||
''' <summary>
|
||||
''' 注册日期与时间
|
||||
''' </summary>
|
||||
FtpPassword
|
||||
End Enum
|
||||
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_UTS_Manage_FtpList"
|
||||
|
||||
End Class
|
||||
End NameSpace
|
||||
33
UTS_Core/UTSModule/DbTableModel/Manage/LicenseListTable.vb
Normal file
33
UTS_Core/UTSModule/DbTableModel/Manage/LicenseListTable.vb
Normal file
@@ -0,0 +1,33 @@
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
Public Class LicenseListTable
|
||||
Enum ColNamesEnum
|
||||
''' <summary>
|
||||
''' 索引
|
||||
''' </summary>
|
||||
ID
|
||||
|
||||
''' <summary>
|
||||
''' 公司名称
|
||||
''' </summary>
|
||||
CompanyName
|
||||
|
||||
''' <summary>
|
||||
''' 发布日期
|
||||
''' </summary>
|
||||
ReleaseDate
|
||||
|
||||
''' <summary>
|
||||
''' 有效日期
|
||||
''' </summary>
|
||||
ValidDateTime
|
||||
|
||||
''' <summary>
|
||||
''' 备注
|
||||
''' </summary>
|
||||
Remark
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_UTS_Manage_LicenseList"
|
||||
|
||||
End Class
|
||||
End NameSpace
|
||||
27
UTS_Core/UTSModule/DbTableModel/Manage/LogTable.vb
Normal file
27
UTS_Core/UTSModule/DbTableModel/Manage/LogTable.vb
Normal file
@@ -0,0 +1,27 @@
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
''' <summary>
|
||||
''' 操作日志表,对公共库的操作记录
|
||||
''' </summary>
|
||||
Public Class LogTable
|
||||
Enum ColNamesEnum
|
||||
''' <summary>
|
||||
''' 索引,无作用
|
||||
''' </summary>
|
||||
ID
|
||||
''' <summary>
|
||||
''' 用户唯一标识
|
||||
''' </summary>
|
||||
UserID
|
||||
''' <summary>
|
||||
''' 操作时间
|
||||
''' </summary>
|
||||
DateTime
|
||||
''' <summary>
|
||||
''' 具体操作内容
|
||||
''' </summary>
|
||||
Operation
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_UTS_Manage_Log"
|
||||
End Class
|
||||
End NameSpace
|
||||
36
UTS_Core/UTSModule/DbTableModel/Manage/OperationListTable.vb
Normal file
36
UTS_Core/UTSModule/DbTableModel/Manage/OperationListTable.vb
Normal file
@@ -0,0 +1,36 @@
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
''' <summary>
|
||||
''' 功能模块总表
|
||||
''' </summary>
|
||||
Public Class OperationListTable
|
||||
Enum ColNamesEnum
|
||||
''' <summary>
|
||||
''' 功能模块唯一索引
|
||||
''' </summary>
|
||||
ID
|
||||
''' <summary>
|
||||
''' 功能模块名称
|
||||
''' </summary>
|
||||
OperationName
|
||||
''' <summary>
|
||||
''' 功能模块详细说明
|
||||
''' </summary>
|
||||
OperationDesc
|
||||
|
||||
''' <summary>
|
||||
''' 操作级别,读为0,写为1
|
||||
''' </summary>
|
||||
OperationLevel
|
||||
|
||||
''' <summary>
|
||||
''' 修改日期
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_UTS_Manage_OperationList"
|
||||
|
||||
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
11
UTS_Core/UTSModule/DbTableModel/Manage/OrderStatusTable.vb
Normal file
11
UTS_Core/UTSModule/DbTableModel/Manage/OrderStatusTable.vb
Normal file
@@ -0,0 +1,11 @@
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
Public Class OrderStatusTable
|
||||
Enum ColNames
|
||||
ID
|
||||
StatusName
|
||||
Remark
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_UTS_Manage_OrderStatus"
|
||||
End Class
|
||||
End Namespace
|
||||
107
UTS_Core/UTSModule/DbTableModel/Manage/ServiceLogTable.vb
Normal file
107
UTS_Core/UTSModule/DbTableModel/Manage/ServiceLogTable.vb
Normal file
@@ -0,0 +1,107 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
Public Class ServiceLogTable
|
||||
''' <summary>数据库操作记录表枚举值</summary>
|
||||
Enum ColNamesEnum
|
||||
|
||||
''' <summary>日志索引</summary>
|
||||
ID
|
||||
|
||||
''' <summary>厂商名称</summary>
|
||||
CompanyName
|
||||
|
||||
''' <summary>应用名称</summary>
|
||||
AppName
|
||||
|
||||
''' <summary>应用版本</summary>
|
||||
AppVersion
|
||||
|
||||
''' <summary>日志生成日期与时间</summary>
|
||||
DateTime
|
||||
|
||||
''' <summary>设备公网IP</summary>
|
||||
DevPublicIP
|
||||
|
||||
''' <summary>设备内网IP地址</summary>
|
||||
DevPrivateIP
|
||||
|
||||
''' <summary>设备MAC</summary>
|
||||
DevMac
|
||||
|
||||
''' <summary>设备系统版本</summary>
|
||||
DevOS
|
||||
|
||||
''' <summary>设备名称</summary>
|
||||
DevName
|
||||
|
||||
''' <summary>设备用户名</summary>
|
||||
DevUserName
|
||||
|
||||
''' <summary>设备网络状态</summary>
|
||||
DevOnline
|
||||
|
||||
''' <summary>日志类型</summary>
|
||||
LogType
|
||||
|
||||
''' <summary>日志内容</summary>
|
||||
LogText
|
||||
|
||||
End Enum
|
||||
|
||||
Public Shared ReadOnly TableName As String = "TBL_UTS_Manage_ServiceLog"
|
||||
|
||||
''' <summary>
|
||||
''' Sqlite数据库建表语句
|
||||
''' </summary>
|
||||
''' <returns>建表语句</returns>
|
||||
Public Shared Function CreateTableString(Optional dbType As DbExecutor.DbTypeEnum = DbExecutor.DbTypeEnum.Mysql) As String
|
||||
Dim createStr As New StringBuilder
|
||||
If dbType = DbExecutor.DbTypeEnum.Mysql Then
|
||||
|
||||
createStr.Append($"Create Table If Not Exists `{TableName}`")
|
||||
createStr.Append(" (")
|
||||
createStr.Append($"`{ColNamesEnum.ID}` NOT NULL AUTO_INCREMENT ,")
|
||||
createStr.Append($"`{ColNamesEnum.CompanyName}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.AppName}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.AppVersion}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.DateTime}` DateTime NOT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.DevPublicIP}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.DevPrivateIP}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.DevMac}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.DevOS}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.DevName}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.DevUserName}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.DevOnline}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.LogType}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.LogText}` text,")
|
||||
createStr.Append($"PRIMARY KEY (`ID`)")
|
||||
createStr.Append(" );")
|
||||
|
||||
ElseIf dbType = DbExecutor.DbTypeEnum.Sqlite Then
|
||||
|
||||
createStr.Append($"Create Table If Not Exists `{TableName}`")
|
||||
createStr.Append(" (")
|
||||
createStr.Append($"`{ColNamesEnum.ID}` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.CompanyName}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.AppName}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.AppVersion}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.DateTime}` DateTime NOT NULL ,")
|
||||
createStr.Append($"`{ColNamesEnum.DevPublicIP}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.DevPrivateIP}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.DevMac}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.DevOS}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.DevName}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.DevUserName}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.DevOnline}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.LogType}` varchar(254),")
|
||||
createStr.Append($"`{ColNamesEnum.LogText}` text")
|
||||
createStr.Append(" );")
|
||||
End If
|
||||
|
||||
Return createStr.ToString()
|
||||
End Function
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
33
UTS_Core/UTSModule/DbTableModel/Manage/SwReleaseLogTable.vb
Normal file
33
UTS_Core/UTSModule/DbTableModel/Manage/SwReleaseLogTable.vb
Normal file
@@ -0,0 +1,33 @@
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
Public Class SwReleaseLogTable
|
||||
Enum ColNamesEnum
|
||||
''' <summary>
|
||||
''' 应用程序索引
|
||||
''' </summary>
|
||||
ID
|
||||
''' <summary>
|
||||
''' 应用程序名
|
||||
''' </summary>
|
||||
SoftwareName
|
||||
''' <summary>
|
||||
''' 发布版本号
|
||||
''' </summary>
|
||||
ReleaseVersion
|
||||
''' <summary>
|
||||
''' 发布日期
|
||||
''' </summary>
|
||||
ReleaseDate
|
||||
''' <summary>
|
||||
''' 发布用户索引
|
||||
''' </summary>
|
||||
UserID
|
||||
''' <summary>
|
||||
''' 发布说明
|
||||
''' </summary>
|
||||
Remark
|
||||
End Enum
|
||||
|
||||
|
||||
End Class
|
||||
|
||||
End NameSpace
|
||||
40
UTS_Core/UTSModule/DbTableModel/Manage/SwUpdateTable.vb
Normal file
40
UTS_Core/UTSModule/DbTableModel/Manage/SwUpdateTable.vb
Normal file
@@ -0,0 +1,40 @@
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
''' <summary>
|
||||
''' 程序更新软件表
|
||||
''' </summary>
|
||||
Public Class SwUpdateTable
|
||||
Enum ColNamesEnum
|
||||
''' <summary>
|
||||
''' 应用程序索引
|
||||
''' </summary>
|
||||
ID
|
||||
''' <summary>
|
||||
''' 应用程序名
|
||||
''' </summary>
|
||||
SoftwareName
|
||||
''' <summary>
|
||||
''' 最新版本号
|
||||
''' </summary>
|
||||
LastVersion
|
||||
''' <summary>
|
||||
''' 发布日期
|
||||
''' </summary>
|
||||
ReleaseDate
|
||||
''' <summary>
|
||||
''' 二进制文件
|
||||
''' </summary>
|
||||
BinPackage
|
||||
''' <summary>
|
||||
''' MD5校验码
|
||||
''' </summary>
|
||||
BinPackageMd5
|
||||
''' <summary>
|
||||
''' FTP包名
|
||||
''' </summary>
|
||||
PackageName
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_UTS_Manage_SwUpdate"
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
54
UTS_Core/UTSModule/DbTableModel/Manage/SyncListTable.vb
Normal file
54
UTS_Core/UTSModule/DbTableModel/Manage/SyncListTable.vb
Normal file
@@ -0,0 +1,54 @@
|
||||
Imports System.Text
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
''' <summary>
|
||||
''' 需要同步下载表名总表
|
||||
''' </summary>
|
||||
Public Class SyncListTable
|
||||
Enum ColNamesEnum
|
||||
ID
|
||||
''' <summary>
|
||||
''' 表名
|
||||
''' </summary>
|
||||
TableName
|
||||
''' <summary>
|
||||
''' 表版本编号
|
||||
''' </summary>
|
||||
RevisionID
|
||||
''' <summary>
|
||||
''' 同步类型
|
||||
''' </summary>
|
||||
SyncType
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_UTS_Manage_SyncList"
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 根据数据库类型,返回建表语句
|
||||
''' </summary>
|
||||
''' <param name="type">数据库类型</param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function CreateString(type As DbExecutor.DbTypeEnum) As String
|
||||
Dim createStr As New StringBuilder
|
||||
Select Case type
|
||||
Case DbExecutor.DbTypeEnum.Sqlite
|
||||
createStr.Append($"Create Table If Not Exists {TableName}")
|
||||
createStr.Append(" (")
|
||||
createStr.Append($"{Customer.SyncListTable.ColNamesEnum.ID} INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,")
|
||||
createStr.Append($"{Customer.SyncListTable.ColNamesEnum.TableName} varchar(254) NOT NULL ,")
|
||||
createStr.Append($"{Customer.SyncListTable.ColNamesEnum.RevisionID} integer NOT NULL ,")
|
||||
createStr.Append($"{Customer.SyncListTable.ColNamesEnum.SyncType} varchar(254)")
|
||||
createStr.Append(" );")
|
||||
Case DbExecutor.DbTypeEnum.Mysql
|
||||
|
||||
Case Else
|
||||
|
||||
End Select
|
||||
|
||||
Return createStr.ToString()
|
||||
End Function
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
32
UTS_Core/UTSModule/DbTableModel/Manage/TestPlanTipsTable.vb
Normal file
32
UTS_Core/UTSModule/DbTableModel/Manage/TestPlanTipsTable.vb
Normal file
@@ -0,0 +1,32 @@
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
''' <summary>
|
||||
''' 测试计划编辑信息提示
|
||||
''' </summary>
|
||||
Public Class TestPlanTipsTable
|
||||
Enum ColNamesEnum
|
||||
ID
|
||||
''' <summary>
|
||||
''' 列名
|
||||
''' </summary>
|
||||
ColName
|
||||
''' <summary>
|
||||
''' 列类型
|
||||
''' </summary>
|
||||
ColType
|
||||
''' <summary>
|
||||
''' 列描述
|
||||
''' </summary>
|
||||
ColDesc
|
||||
''' <summary>
|
||||
''' 列默认值
|
||||
''' </summary>
|
||||
ColValue
|
||||
''' <summary>
|
||||
''' 修改日期
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_UTS_Manage_TestPlanTips"
|
||||
End Class
|
||||
End NameSpace
|
||||
52
UTS_Core/UTSModule/DbTableModel/Manage/UserListTable.vb
Normal file
52
UTS_Core/UTSModule/DbTableModel/Manage/UserListTable.vb
Normal file
@@ -0,0 +1,52 @@
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
''' <summary>
|
||||
''' 用户总表
|
||||
''' </summary>
|
||||
Public Class UserListTable
|
||||
Enum ColNamesEnum
|
||||
''' <summary>
|
||||
''' 用户ID唯一索引
|
||||
''' </summary>
|
||||
ID
|
||||
''' <summary>
|
||||
''' 用户登陆账号
|
||||
''' </summary>
|
||||
UserName
|
||||
''' <summary>
|
||||
''' 用户密码
|
||||
''' </summary>
|
||||
Password
|
||||
''' <summary>
|
||||
''' 公司索引ID
|
||||
''' </summary>
|
||||
CompanyID
|
||||
|
||||
''' <summary>
|
||||
''' 创建日期
|
||||
''' </summary>
|
||||
CreateTime
|
||||
''' <summary>
|
||||
''' 修改日期
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
''' <summary>
|
||||
''' 手机号码
|
||||
''' </summary>
|
||||
Mobile
|
||||
''' <summary>
|
||||
''' 微信号
|
||||
''' </summary>
|
||||
WeiXin
|
||||
''' <summary>
|
||||
''' 邮箱地址
|
||||
''' </summary>
|
||||
Email
|
||||
''' <summary>
|
||||
''' 是否有效
|
||||
''' </summary>
|
||||
IsValid
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_UTS_Manage_User"
|
||||
End Class
|
||||
End NameSpace
|
||||
@@ -0,0 +1,32 @@
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
''' <summary>
|
||||
''' 用户操作功能权限总表
|
||||
''' </summary>
|
||||
Public Class UserOperationAuthTable
|
||||
Enum ColNamesEnum
|
||||
ID
|
||||
''' <summary>
|
||||
''' 用户唯一标识
|
||||
''' </summary>
|
||||
UserID
|
||||
''' <summary>
|
||||
''' 数据库唯一标识
|
||||
''' </summary>
|
||||
DatabaseID
|
||||
''' <summary>
|
||||
''' 拥有完整权限的功能唯一标识,用,分割
|
||||
''' </summary>
|
||||
FullAccess
|
||||
''' <summary>
|
||||
''' 拥有读写权限的功能唯一标识,用,分割
|
||||
''' </summary>
|
||||
ReadWriteAccess
|
||||
''' <summary>
|
||||
''' 拥有只读权限的功能唯一标识,用,分割
|
||||
''' </summary>
|
||||
ReadOnlyAccess
|
||||
End Enum
|
||||
|
||||
Public Shared Property TableName() As String = "TBL_UTS_Manage_UserAuth_Operation"
|
||||
End Class
|
||||
End NameSpace
|
||||
122
UTS_Core/UTSModule/DbTableModel/Manage/UtsCmdListTable.vb
Normal file
122
UTS_Core/UTSModule/DbTableModel/Manage/UtsCmdListTable.vb
Normal file
@@ -0,0 +1,122 @@
|
||||
Imports System.Text
|
||||
|
||||
Namespace UTSModule.DbTableModel.Manage
|
||||
''' <summary>
|
||||
''' 用户测试命令总表
|
||||
''' </summary>
|
||||
Public Class UtsCmdListTable
|
||||
Enum ColNamesEnum
|
||||
ID
|
||||
CmdType
|
||||
CmdName
|
||||
CmdDesc
|
||||
|
||||
''' <summary>
|
||||
''' 修改日期
|
||||
''' </summary>
|
||||
UpdateTime
|
||||
|
||||
ParamCount
|
||||
|
||||
ParamDesc1
|
||||
ParamType1
|
||||
ParamLower1
|
||||
ParamUpper1
|
||||
ParamValue1
|
||||
|
||||
ParamDesc2
|
||||
ParamType2
|
||||
ParamLower2
|
||||
ParamUpper2
|
||||
ParamValue2
|
||||
|
||||
ParamDesc3
|
||||
ParamType3
|
||||
ParamLower3
|
||||
ParamUpper3
|
||||
ParamValue3
|
||||
|
||||
ParamDesc4
|
||||
ParamType4
|
||||
ParamLower4
|
||||
ParamUpper4
|
||||
ParamValue4
|
||||
|
||||
ParamDesc5
|
||||
ParamType5
|
||||
ParamLower5
|
||||
ParamUpper5
|
||||
ParamValue5
|
||||
|
||||
ParamDesc6
|
||||
ParamType6
|
||||
ParamLower6
|
||||
ParamUpper6
|
||||
ParamValue6
|
||||
End Enum
|
||||
|
||||
Shared ReadOnly Property TableName() As String = "TBL_UTS_Manage_UtsCmdList"
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 建表语句
|
||||
''' </summary>
|
||||
''' <returns>建表语句</returns>
|
||||
Public Shared Function CreateTableString() As String
|
||||
Dim createStr As New StringBuilder
|
||||
createStr.Append($"Create Table If Not Exists `{TableName}`")
|
||||
createStr.Append(" (")
|
||||
createStr.Append($"`{ColNamesEnum.ID}` int(11) NOT NULL AUTO_INCREMENT,")
|
||||
createStr.Append($"`{ColNamesEnum.CmdType}` varchar(254) NOT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.CmdName}` varchar(254) NOT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.CmdDesc}` varchar(254) DEFAULT NULL,")
|
||||
|
||||
' createStr.Append($"{ColNamesEnum.ParamName1} varchar(64) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamDesc1}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamType1}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamLower1}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamUpper1}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamValue1}` varchar(254) DEFAULT NULL,")
|
||||
|
||||
' createStr.Append($"{ColNamesEnum.ParamName2} varchar(64) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamDesc2}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamType2}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamLower2}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamUpper2}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamValue2}` varchar(254) DEFAULT NULL,")
|
||||
|
||||
' createStr.Append($"{ColNamesEnum.ParamName3} varchar(64) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamDesc3}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamType3}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamLower3}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamUpper3}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamValue3}` varchar(254) DEFAULT NULL,")
|
||||
|
||||
' createStr.Append($"{ColNamesEnum.ParamName4} varchar(64) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamDesc4}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamType4}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamLower4}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamUpper4}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamValue4}` varchar(254) DEFAULT NULL,")
|
||||
|
||||
' createStr.Append($"{ColNamesEnum.ParamName5} varchar(64) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamDesc5}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamType5}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamLower5}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamUpper5}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamValue5}` varchar(254) DEFAULT NULL,")
|
||||
|
||||
' createStr.Append($"{ColNamesEnum.ParamName6} varchar(64) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamDesc6}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamType6}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamLower6}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamUpper6}` varchar(254) DEFAULT NULL,")
|
||||
createStr.Append($"`{ColNamesEnum.ParamValue6}` varchar(254) DEFAULT NULL,")
|
||||
|
||||
createStr.Append($"PRIMARY KEY (`{ColNamesEnum.ID}`)")
|
||||
createStr.Append(" );")
|
||||
Return createStr.ToString()
|
||||
End Function
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
9
UTS_Core/UTSModule/DbTableModel/UtsDataTable.vb
Normal file
9
UTS_Core/UTSModule/DbTableModel/UtsDataTable.vb
Normal file
@@ -0,0 +1,9 @@
|
||||
Imports UTS_Core.Database.DbExecutor
|
||||
|
||||
Namespace UTSModule.DbTableModel
|
||||
MustInherit Class UtsDataTable
|
||||
Public Property TableName() As String
|
||||
|
||||
MustOverride Function CreateTableString(Optional dbName As String = "",Optional type As DbTypeEnum = DbTypeEnum.Mysql) As String
|
||||
End Class
|
||||
End Namespace
|
||||
116
UTS_Core/UTSModule/FtpService.vb
Normal file
116
UTS_Core/UTSModule/FtpService.vb
Normal file
@@ -0,0 +1,116 @@
|
||||
Imports System.Text
|
||||
Imports FluentFTP
|
||||
|
||||
Namespace UTSModule
|
||||
Public Class FtpService
|
||||
Private _ftpUser As String
|
||||
Private _ftpPwd As String
|
||||
Private _ftpPort As Integer
|
||||
Private _ftpHost As String
|
||||
|
||||
Sub New(host As String, port As Integer, user As String, pwd As String)
|
||||
_ftpHost = host
|
||||
_ftpPort = port
|
||||
_ftpUser = user
|
||||
_ftpPwd = pwd
|
||||
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' Ftp服务器地址
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property FtpHost As String
|
||||
Get
|
||||
Return _ftpHost
|
||||
End Get
|
||||
Set(value As String)
|
||||
_ftpHost = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
|
||||
Private Sub OnValidateCertificate(control As FtpClient, e As FtpSslValidationEventArgs)
|
||||
e.Accept = True
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' Ftp是否能正常连接,连接正常返回True,连接失败则产生异常
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Function CanConnected() As Boolean
|
||||
Dim result As Boolean
|
||||
Using ftpClient As FtpClient = New FtpClient(_ftpHost, _ftpPort, _ftpUser, _ftpPwd)
|
||||
AddHandler ftpClient.ValidateCertificate, AddressOf OnValidateCertificate
|
||||
ftpClient.EncryptionMode = FtpEncryptionMode.None
|
||||
ftpClient.DataConnectionType = FtpDataConnectionType.PASV
|
||||
ftpClient.Encoding = Encoding.UTF8
|
||||
|
||||
ftpClient.Connect()
|
||||
ftpClient.Disconnect()
|
||||
End Using
|
||||
result = True
|
||||
|
||||
Return result
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 文件是否存在
|
||||
''' </summary>
|
||||
''' <param name="path"></param>
|
||||
''' <returns></returns>
|
||||
Public Function FtpFileExists(path As String) As Boolean
|
||||
Dim result As Boolean
|
||||
Using ftpClient As FtpClient = New FtpClient(_ftpHost, _ftpPort, _ftpUser, _ftpPwd)
|
||||
AddHandler ftpClient.ValidateCertificate, AddressOf OnValidateCertificate
|
||||
ftpClient.EncryptionMode = FtpEncryptionMode.None
|
||||
ftpClient.DataConnectionType = FtpDataConnectionType.PASV
|
||||
ftpClient.Encoding = Encoding.UTF8
|
||||
|
||||
ftpClient.Connect()
|
||||
|
||||
result = ftpClient.FileExists(path)
|
||||
|
||||
ftpClient.Disconnect()
|
||||
End Using
|
||||
|
||||
Return result
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 文件上传
|
||||
''' 将本地指定路径压缩包上传到FTP服务器上manager文件夹下
|
||||
''' </summary>
|
||||
Public Sub FtpUpload(remotePath As String, loadPath As String)
|
||||
Using ftpClient As FtpClient = New FtpClient(_ftpHost, _ftpPort, _ftpUser, _ftpPwd)
|
||||
AddHandler ftpClient.ValidateCertificate, AddressOf OnValidateCertificate
|
||||
ftpClient.EncryptionMode = FtpEncryptionMode.None
|
||||
ftpClient.DataConnectionType = FtpDataConnectionType.PASV
|
||||
ftpClient.Encoding = Encoding.UTF8
|
||||
|
||||
ftpClient.Connect()
|
||||
ftpClient.UploadFile(loadPath, remotePath, FtpRemoteExists.Overwrite, True)
|
||||
ftpClient.Disconnect()
|
||||
End Using
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 文件下载
|
||||
''' 从FTP下载压缩包,到本地指定路径
|
||||
''' </summary>
|
||||
Public Sub FtpDownload(remotePath As String, loadPath As String)
|
||||
Using ftpClient As FtpClient = New FtpClient(_ftpHost, _ftpPort, _ftpUser, _ftpPwd)
|
||||
AddHandler ftpClient.ValidateCertificate, AddressOf OnValidateCertificate
|
||||
ftpClient.EncryptionMode = FtpEncryptionMode.None
|
||||
ftpClient.DataConnectionType = FtpDataConnectionType.PASV
|
||||
ftpClient.Encoding = Encoding.UTF8
|
||||
|
||||
ftpClient.Connect()
|
||||
ftpClient.DownloadFile(loadPath, remotePath)
|
||||
ftpClient.Disconnect()
|
||||
End Using
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
5
UTS_Core/UTSModule/IProcessStation.vb
Normal file
5
UTS_Core/UTSModule/IProcessStation.vb
Normal file
@@ -0,0 +1,5 @@
|
||||
Namespace UTSModule
|
||||
Public Interface IProcessStation
|
||||
Sub StationChanged()
|
||||
End Interface
|
||||
End NameSpace
|
||||
6
UTS_Core/UTSModule/IProductionLine.vb
Normal file
6
UTS_Core/UTSModule/IProductionLine.vb
Normal file
@@ -0,0 +1,6 @@
|
||||
Namespace UTSModule
|
||||
Public Interface IProductionLine
|
||||
Sub ProductionLineChanged()
|
||||
|
||||
End Interface
|
||||
End NameSpace
|
||||
9
UTS_Core/UTSModule/IUtsForm.vb
Normal file
9
UTS_Core/UTSModule/IUtsForm.vb
Normal file
@@ -0,0 +1,9 @@
|
||||
Imports System.Windows.Forms
|
||||
|
||||
Namespace UTSModule
|
||||
Public Interface IUtsForm
|
||||
Sub ShowForm(parentControl As Control)
|
||||
|
||||
Sub RemoveForm()
|
||||
End Interface
|
||||
End Namespace
|
||||
35
UTS_Core/UTSModule/IUtsTest.vb
Normal file
35
UTS_Core/UTSModule/IUtsTest.vb
Normal file
@@ -0,0 +1,35 @@
|
||||
Imports UTS_Core.UTSModule.Test
|
||||
Imports UTS_Core.UTSModule.Test.StatusMonitor
|
||||
|
||||
Namespace UTSModule
|
||||
Public Interface IUtsTest
|
||||
|
||||
Sub TestStart(sender As Object, e As EventArgs)
|
||||
|
||||
Sub TestPass(sender As Object, e As EventArgs)
|
||||
|
||||
Sub TestFail(sender As Object, e As TestFailEventArgs)
|
||||
|
||||
Sub TestPause(sender As Object, e As TestPauseEventArgs)
|
||||
|
||||
Sub TestEnd(sender As Object, e As TestEndEventArgs)
|
||||
|
||||
|
||||
|
||||
Sub TestNodeChanged(sender As Object, e As TestNodeChangedEventArgs)
|
||||
|
||||
Sub TestNodeCompleted(sender As Object, e As TestNodeCompletedEventArgs)
|
||||
|
||||
Sub TestNodeResultChanged(sender As Object, e As TestNodeResultChangedEventArgs)
|
||||
|
||||
Sub TestCountChanged(sender As Object, e As TestCountChangedEventArgs)
|
||||
|
||||
Sub TestStatusChanged(sender As Object, e As TestStatusChangedEventArgs)
|
||||
|
||||
Sub TestTimeChanged(sender As Object, e As TestTimeEventArgs)
|
||||
|
||||
Sub TestProgressChanged(sender As Object, e As TestProgressChangedEventArgs)
|
||||
|
||||
Sub RetryProgressChanged(sender As Object, e As TestProgressChangedEventArgs)
|
||||
End Interface
|
||||
End Namespace
|
||||
505
UTS_Core/UTSModule/License/License.vb
Normal file
505
UTS_Core/UTSModule/License/License.vb
Normal file
@@ -0,0 +1,505 @@
|
||||
Imports System.IO
|
||||
Imports System.Text
|
||||
Imports UTS_Core.DebugLog
|
||||
Imports UTS_Core.Security
|
||||
|
||||
Namespace UTSModule.License
|
||||
|
||||
Public Class License
|
||||
''' <summary> License文件字段枚举 </summary>
|
||||
Private Enum LicenseKeyEnum
|
||||
''' <summary>索引</summary>
|
||||
ID
|
||||
|
||||
''' <summary>客户名</summary>
|
||||
VendorName
|
||||
|
||||
''' <summary>注册日期</summary>
|
||||
AuthorizationDate
|
||||
|
||||
''' <summary>截止日期</summary>
|
||||
ExpirationDate
|
||||
|
||||
''' <summary>管理员账号</summary>
|
||||
DefaultUser
|
||||
|
||||
''' <summary>管理员密码</summary>
|
||||
DefaultPassword
|
||||
|
||||
''' <summary>远程数据库URL或IP</summary>
|
||||
MysqlServer
|
||||
|
||||
''' <summary>远程数据库连接端口</summary>
|
||||
MysqlPort
|
||||
|
||||
''' <summary>远程数据库账号</summary>
|
||||
MysqlUserID
|
||||
|
||||
''' <summary>远程数据库密码</summary>
|
||||
MysqlPassword
|
||||
|
||||
''' <summary>远程数据库私有操作库</summary>
|
||||
MysqlDatabase
|
||||
|
||||
''' <summary>远程数据库共有操作库</summary>
|
||||
PublicDb
|
||||
|
||||
''' <summary>本地数据库存放文件夹</summary>
|
||||
SqliteDir
|
||||
|
||||
''' <summary>本地数据库文件名</summary>
|
||||
SqliteName
|
||||
|
||||
''' <summary>本地数据库密码</summary>
|
||||
SqlitePassword
|
||||
|
||||
''' <summary>Ftp服务器</summary>
|
||||
FtpHost
|
||||
|
||||
''' <summary>Ftp通讯端口</summary>
|
||||
FtpPort
|
||||
|
||||
''' <summary>Ftp通讯账号</summary>
|
||||
FtpUser
|
||||
|
||||
''' <summary>Ftp通讯密码</summary>
|
||||
FtpPwd
|
||||
|
||||
''' <summary>客户MAC地址,锁定|MAC时使用</summary>
|
||||
MAC
|
||||
|
||||
''' <summary>备注</summary>
|
||||
Remark
|
||||
|
||||
''' <summary>UTS版本号</summary>
|
||||
UtsVersion
|
||||
|
||||
''' <summary>签名</summary>
|
||||
Signature
|
||||
End Enum
|
||||
|
||||
''' <summary> License文件校验返回枚举值</summary>
|
||||
Public Enum LicenseCheckCodeEnum
|
||||
|
||||
''' <summary>未找到License</summary>
|
||||
NoLicense
|
||||
|
||||
''' <summary>无法打开License</summary>
|
||||
CantOpenLicense
|
||||
|
||||
''' <summary>无效的License</summary>
|
||||
InvalidLicense
|
||||
|
||||
''' <summary>校验通过</summary>
|
||||
CheckPass
|
||||
End Enum
|
||||
|
||||
|
||||
''' <summary>License校验结果</summary>
|
||||
Public Enum EnLicenseCheckCode
|
||||
''' <summary>校验通过</summary>
|
||||
CheckPass
|
||||
|
||||
''' <summary>无效的客户</summary>
|
||||
InvalidCustomer
|
||||
|
||||
''' <summary>无效的注册日期</summary>
|
||||
InvalidAuthorizationDate
|
||||
|
||||
''' <summary>无效的截止日期</summary>
|
||||
InvalidExpirationDate
|
||||
|
||||
''' <summary>无效的用户</summary>
|
||||
InvalidDefaultUser
|
||||
|
||||
''' <summary>无效的用户密码</summary>
|
||||
InvalidDefaultPassword
|
||||
|
||||
''' <summary>无效的MAC地址</summary>
|
||||
InvalidMac
|
||||
|
||||
''' <summary>无效的UTS版本</summary>
|
||||
InvalidUtsVersion
|
||||
|
||||
''' <summary>无效的签名</summary>
|
||||
InvalidSignature
|
||||
|
||||
''' <summary>无效的数据库地址</summary>
|
||||
InvalidDatabaseServer
|
||||
|
||||
''' <summary>无效的数据库名</summary>
|
||||
InvalidDatabaseName
|
||||
|
||||
''' <summary>无效的数据库用户</summary>
|
||||
InvalidDatabaseUserID
|
||||
|
||||
''' <summary>无效的数据库密码</summary>
|
||||
InvalidDatabaseUserPassword
|
||||
|
||||
''' <summary>无效的数据库端口号</summary>
|
||||
InvalidDatabaseUserPort
|
||||
|
||||
''' <summary>无效的数据库名(sqlite)</summary>
|
||||
InvalidDatabaseFileName
|
||||
|
||||
''' <summary>无效的数据库文件夹名(sqlite)</summary>
|
||||
InvalidDatabaseDirName
|
||||
End Enum
|
||||
|
||||
|
||||
''' <summary>存储License签名校验值</summary>
|
||||
Private ReadOnly _standardSignature As String = "this is a valid license data"
|
||||
|
||||
''' <summary>License密钥</summary>
|
||||
Private ReadOnly _licenseAesKey As String = "8h(*H&-987OygO8yg*yS$&G&aG9*&6g96*&7^RA65s76r*&&G(*(7(Gyg7#7Ff7F*&(*&&^5GHo96tr5ff&*Hphg7665^fyu&uOhj0j[0[(jOIhI&g77FgghO*hhHY"
|
||||
|
||||
Sub New()
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Sub New(licensePath As String)
|
||||
ReadLicenseFile(licensePath)
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 索引
|
||||
''' </summary>
|
||||
''' <returns>索引</returns>
|
||||
Public Property ID() As String
|
||||
|
||||
''' <summary>
|
||||
''' 获取客户名
|
||||
''' </summary>
|
||||
''' <returns>客户名</returns>
|
||||
Public Property VendorName As String
|
||||
|
||||
''' <summary>
|
||||
''' 获取注册日期
|
||||
''' </summary>
|
||||
''' <returns>注册日期</returns>
|
||||
Public Property AuthorizationDate() As String
|
||||
|
||||
''' <summary>
|
||||
''' 获取截止日期
|
||||
''' </summary>
|
||||
''' <returns>截止日期</returns>
|
||||
Public Property ExpirationDate() As String
|
||||
|
||||
''' <summary>
|
||||
''' 获取管理员账号
|
||||
''' </summary>
|
||||
''' <returns>管理员账号</returns>
|
||||
Public Property DefaultUser() As String
|
||||
|
||||
''' <summary>
|
||||
''' 获取管理员密码
|
||||
''' </summary>
|
||||
''' <returns>管理员密码</returns>
|
||||
Public Property DefaultPassword() As String
|
||||
|
||||
''' <summary>
|
||||
''' 远程数据库URL或IP(待删除字段)
|
||||
''' </summary>
|
||||
''' <returns>远程数据库URL或IP</returns>
|
||||
Public Property MysqlServer() As String
|
||||
|
||||
''' <summary>
|
||||
''' 远程数据库连接端口
|
||||
''' </summary>
|
||||
''' <returns>远程数据库连接端口</returns>
|
||||
Public Property MysqlPort() As String
|
||||
|
||||
''' <summary>
|
||||
''' 远程数据库账号
|
||||
''' </summary>
|
||||
''' <returns>远程数据库账号</returns>
|
||||
Public Property MysqlUserID() As String
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 远程数据库密码
|
||||
''' </summary>
|
||||
''' <returns>远程数据库密码</returns>
|
||||
Public Property MysqlPassword() As String
|
||||
|
||||
''' <summary>
|
||||
''' 远程数据库操作库
|
||||
''' </summary>
|
||||
''' <returns>远程数据库操作库</returns>
|
||||
Public Property MysqlDatabase() As String
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 远程数据库公开库
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property PublicDb() As String
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 本地数据库存放文件夹
|
||||
''' </summary>
|
||||
''' <returns>本地数据库存放文件夹</returns>
|
||||
Public Property SqliteDir() As String
|
||||
|
||||
''' <summary>
|
||||
''' 本地数据库文件名
|
||||
''' </summary>
|
||||
''' <returns>本地数据库文件名</returns>
|
||||
Public Property SqliteName() As String
|
||||
|
||||
''' <summary>
|
||||
''' 本地数据库密码
|
||||
''' </summary>
|
||||
''' <returns>本地数据库密码</returns>
|
||||
Public Property SqlitePassword() As String
|
||||
|
||||
''' <summary>
|
||||
''' Ftp服务器地址(待删除字段)
|
||||
''' </summary>
|
||||
''' <returns>Ftp服务器地址</returns>
|
||||
Public Property FtpHost() As String
|
||||
|
||||
''' <summary>
|
||||
''' Ftp服务器端口
|
||||
''' </summary>
|
||||
''' <returns>Ftp服务器端口</returns>
|
||||
Public Property FtpPort() As String
|
||||
|
||||
''' <summary>
|
||||
''' Ftp服务器用户
|
||||
''' </summary>
|
||||
''' <returns>Ftp服务器用户</returns>
|
||||
Public Property FtpUser() As String
|
||||
|
||||
''' <summary>
|
||||
''' Ftp服务器密码
|
||||
''' </summary>
|
||||
''' <returns>Ftp服务器密码</returns>
|
||||
Public Property FtpPwd() As String
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 获取客户MAC地址
|
||||
''' </summary>
|
||||
''' <returns>客户MAC地址</returns>
|
||||
Public Property Mac() As String
|
||||
|
||||
''' <summary>
|
||||
''' 获取备注
|
||||
''' </summary>
|
||||
''' <returns>备注</returns>
|
||||
Public Property Remark() As String
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 获取UTS版本号
|
||||
''' </summary>
|
||||
''' <returns>UTS版本号</returns>
|
||||
Public Property UtsVersion() As String
|
||||
|
||||
''' <summary>
|
||||
''' 获取签名
|
||||
''' </summary>
|
||||
''' <returns>签名</returns>
|
||||
Public Property Signature() As String
|
||||
|
||||
|
||||
Public Function DealLicenseString(strLicense As String) As Boolean
|
||||
strLicense = strLicense.Replace(vbLf, String.Empty)
|
||||
|
||||
Dim lines() As String = strLicense.Split(Chr(13))
|
||||
For Each line As String In lines
|
||||
If String.IsNullOrWhiteSpace(line) Then Continue For
|
||||
Dim keyValues As String() = line.Split("="c)
|
||||
If keyValues.Length = 2 Then
|
||||
keyValues(0) = keyValues(0).Trim()
|
||||
keyValues(1) = keyValues(1).Trim()
|
||||
InitLicenseField(keyValues(0), keyValues(1))
|
||||
Else
|
||||
Throw New Exception($"ReadLicense Error:{LicenseCheckCodeEnum.InvalidLicense}")
|
||||
End If
|
||||
Next
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Private Sub InitLicenseField(key As String, value As String)
|
||||
Dim field As LicenseKeyEnum
|
||||
If [Enum].TryParse(key, field) = False Then
|
||||
ApplicationLog.WriteLog(ApplicationLog.LogTypes.Error, $"Error LicenseField,Key:{key},Value:{value}")
|
||||
Return
|
||||
End If
|
||||
|
||||
Select Case field
|
||||
Case LicenseKeyEnum.ID
|
||||
ID = value
|
||||
Case LicenseKeyEnum.AuthorizationDate
|
||||
AuthorizationDate = value
|
||||
Case LicenseKeyEnum.DefaultPassword
|
||||
DefaultPassword = value
|
||||
Case LicenseKeyEnum.DefaultUser
|
||||
DefaultUser = value
|
||||
Case LicenseKeyEnum.ExpirationDate
|
||||
ExpirationDate = value
|
||||
Case LicenseKeyEnum.MAC
|
||||
Mac = value
|
||||
Case LicenseKeyEnum.Remark
|
||||
Remark = value
|
||||
Case LicenseKeyEnum.Signature
|
||||
Signature = value
|
||||
Case LicenseKeyEnum.UtsVersion
|
||||
UtsVersion = value
|
||||
Case LicenseKeyEnum.VendorName
|
||||
VendorName = value
|
||||
Case LicenseKeyEnum.MysqlServer
|
||||
MysqlServer = value
|
||||
Case LicenseKeyEnum.MysqlPort
|
||||
MysqlPort = value
|
||||
Case LicenseKeyEnum.MysqlUserID
|
||||
MysqlUserID = value
|
||||
Case LicenseKeyEnum.MysqlPassword
|
||||
MysqlPassword = value
|
||||
Case LicenseKeyEnum.MysqlDatabase
|
||||
MysqlDatabase = value
|
||||
Case LicenseKeyEnum.PublicDb
|
||||
PublicDb = value
|
||||
Case LicenseKeyEnum.SqliteDir
|
||||
SqliteDir = value
|
||||
Case LicenseKeyEnum.SqliteName
|
||||
SqliteName = value
|
||||
Case LicenseKeyEnum.SqlitePassword
|
||||
SqlitePassword = value
|
||||
Case LicenseKeyEnum.FtpHost
|
||||
FtpHost = value
|
||||
Case LicenseKeyEnum.FtpPort
|
||||
FtpPort = value
|
||||
Case LicenseKeyEnum.FtpUser
|
||||
FtpUser = value
|
||||
Case LicenseKeyEnum.FtpPwd
|
||||
FtpPwd = value
|
||||
Case Else
|
||||
ApplicationLog.WriteLog(ApplicationLog.LogTypes.Warn, $"Untreated,Key:{key},Value:{value}")
|
||||
End Select
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 读取License文件所有内容,并进行解密,将解密后的内容存入License字典中
|
||||
''' </summary>
|
||||
''' <param name="licensePath">License文件完整路径(含文件名)</param>
|
||||
Public Sub ReadLicenseFile(licensePath As String)
|
||||
If File.Exists(licensePath) = False Then
|
||||
Throw New Exception($"ReadLicense Error:{LicenseCheckCodeEnum.NoLicense}")
|
||||
End If
|
||||
|
||||
Dim strLicense As String = Aes128.DecryptStr(File.ReadAllText(licensePath), _licenseAesKey)
|
||||
DealLicenseString(strLicense)
|
||||
End Sub
|
||||
|
||||
|
||||
Public Function CheckLicense() As Boolean
|
||||
'检测ID字段
|
||||
If String.IsNullOrWhiteSpace(ID) Then
|
||||
Throw New Exception($"Not Found License ID.")
|
||||
End If
|
||||
|
||||
'校验注册日期
|
||||
Dim nowDate As String = Format(Now.Date, "yyyy-MM-dd") & " " & Format(TimeOfDay, "HH:mm:ss")
|
||||
If String.Compare(nowDate, AuthorizationDate, StringComparison.OrdinalIgnoreCase) < 0 Then
|
||||
Throw New Exception($"{EnLicenseCheckCode.InvalidAuthorizationDate}")
|
||||
End If
|
||||
|
||||
'校验截止日期
|
||||
If String.Compare(nowDate, ExpirationDate, StringComparison.OrdinalIgnoreCase) > 0 Then
|
||||
Throw New Exception($"{EnLicenseCheckCode.InvalidExpirationDate}")
|
||||
End If
|
||||
|
||||
'默认用户
|
||||
If String.IsNullOrWhiteSpace(DefaultUser) Then
|
||||
Throw New Exception($"{EnLicenseCheckCode.InvalidDefaultUser}")
|
||||
End If
|
||||
|
||||
'默认用户密码
|
||||
If String.IsNullOrWhiteSpace(DefaultPassword) Then
|
||||
Throw New Exception($"{EnLicenseCheckCode.InvalidDefaultPassword}")
|
||||
End If
|
||||
|
||||
'校验签名
|
||||
If String.Compare(Signature, _standardSignature, True) <> 0 Then
|
||||
Throw New Exception($"{EnLicenseCheckCode.InvalidSignature}")
|
||||
End If
|
||||
|
||||
'校验数据库URL或IP
|
||||
If String.IsNullOrEmpty(MysqlServer) Then
|
||||
Throw New Exception($"{EnLicenseCheckCode.InvalidDatabaseServer}")
|
||||
End If
|
||||
|
||||
If String.IsNullOrEmpty(MysqlDatabase) Then
|
||||
Throw New Exception($"{EnLicenseCheckCode.InvalidDatabaseName}")
|
||||
End If
|
||||
|
||||
If String.IsNullOrEmpty(MysqlPort) Then
|
||||
Throw New Exception($"{EnLicenseCheckCode.InvalidDatabaseUserPort}")
|
||||
End If
|
||||
|
||||
If String.IsNullOrEmpty(MysqlUserID) Then
|
||||
Throw New Exception($"{EnLicenseCheckCode.InvalidDatabaseUserID}")
|
||||
End If
|
||||
|
||||
|
||||
If String.IsNullOrEmpty(MysqlPassword) Then
|
||||
Throw New Exception($"{EnLicenseCheckCode.InvalidDatabaseUserPassword}")
|
||||
End If
|
||||
|
||||
If String.IsNullOrEmpty(SqliteDir) Then
|
||||
Throw New Exception($"{EnLicenseCheckCode.InvalidDatabaseDirName}")
|
||||
End If
|
||||
|
||||
If String.IsNullOrEmpty(SqliteName) Then
|
||||
Throw New Exception($"{EnLicenseCheckCode.InvalidDatabaseFileName}")
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Public Sub SaveLicenseFile(licensePath As String)
|
||||
Dim builder As New StringBuilder
|
||||
builder.Append($"{LicenseKeyEnum.ID} = {ID}{vbCrLf}")
|
||||
builder.Append($"{LicenseKeyEnum.VendorName} = {VendorName}{vbCrLf}")
|
||||
builder.Append($"{LicenseKeyEnum.AuthorizationDate} = {AuthorizationDate}{vbCrLf}")
|
||||
builder.Append($"{LicenseKeyEnum.ExpirationDate} = {ExpirationDate}{vbCrLf}")
|
||||
builder.Append($"{LicenseKeyEnum.DefaultUser} = {DefaultUser}{vbCrLf}")
|
||||
builder.Append($"{LicenseKeyEnum.DefaultPassword} = {DefaultPassword}{vbCrLf}")
|
||||
|
||||
builder.Append($"{LicenseKeyEnum.MysqlServer} = {MysqlServer }{vbCrLf}")
|
||||
builder.Append($"{LicenseKeyEnum.MysqlPort} = {MysqlPort}{vbCrLf}")
|
||||
builder.Append($"{LicenseKeyEnum.MysqlUserID} = {MysqlUserID}{vbCrLf}")
|
||||
builder.Append($"{LicenseKeyEnum.MysqlPassword} = {MysqlPassword}{vbCrLf}")
|
||||
builder.Append($"{LicenseKeyEnum.MysqlDatabase} = {MysqlDatabase}{vbCrLf}")
|
||||
builder.Append($"{LicenseKeyEnum.PublicDb} = {PublicDb}{vbCrLf}")
|
||||
|
||||
builder.Append($"{LicenseKeyEnum.SqliteDir} = {SqliteDir}{vbCrLf}")
|
||||
builder.Append($"{LicenseKeyEnum.SqliteName} = {SqliteName}{vbCrLf}")
|
||||
builder.Append($"{LicenseKeyEnum.SqlitePassword} = {SqlitePassword}{vbCrLf}")
|
||||
|
||||
builder.Append($"{LicenseKeyEnum.FtpHost} = {FtpHost}{vbCrLf}")
|
||||
builder.Append($"{LicenseKeyEnum.FtpPort} = {FtpPort}{vbCrLf}")
|
||||
builder.Append($"{LicenseKeyEnum.FtpUser} = {FtpUser}{vbCrLf}")
|
||||
builder.Append($"{LicenseKeyEnum.FtpPwd} = {FtpPwd}{vbCrLf}")
|
||||
|
||||
builder.Append($"{LicenseKeyEnum.MAC} = {Mac}{vbCrLf}")
|
||||
builder.Append($"{LicenseKeyEnum.Remark} = {Remark}{vbCrLf}")
|
||||
builder.Append($"{LicenseKeyEnum.UtsVersion} = {UtsVersion}{vbCrLf}")
|
||||
builder.Append($"{LicenseKeyEnum.Signature} = {Signature }{vbCrLf}")
|
||||
|
||||
Dim strLicense As String = Aes128.EncryptStr(builder.ToString(), _licenseAesKey)
|
||||
|
||||
File.WriteAllText(licensePath, strLicense)
|
||||
'File.WriteAllText(licensePath, licenseString.ToString())
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
237
UTS_Core/UTSModule/License/Server.vb
Normal file
237
UTS_Core/UTSModule/License/Server.vb
Normal file
@@ -0,0 +1,237 @@
|
||||
Imports System.IO
|
||||
Imports UTS_Core.Security
|
||||
|
||||
Namespace UTSModule.License
|
||||
|
||||
''' <summary>
|
||||
''' 类的作用:获取服务器信息
|
||||
''' 创建人员:ML
|
||||
''' Log编号:1
|
||||
''' 修改描述:创建
|
||||
''' 修改日期:2019-10-15
|
||||
''' 修改人员:ML
|
||||
''' </summary>
|
||||
Public Class Server
|
||||
|
||||
''' <summary> Server文件字段枚举 </summary>
|
||||
Private Enum ServerKeyEnum
|
||||
|
||||
''' <summary>客户名</summary>
|
||||
VendorName
|
||||
|
||||
''' <summary>数据库服务器地址</summary>
|
||||
DataSource
|
||||
|
||||
''' <summary>数据库服务器端口</summary>
|
||||
DbPort
|
||||
|
||||
''' <summary>数据库名</summary>
|
||||
Database
|
||||
|
||||
''' <summary>数据库用户名</summary>
|
||||
DbUser
|
||||
|
||||
''' <summary>数据库用户密码</summary>
|
||||
DbPassword
|
||||
|
||||
''' <summary>Ftp地址</summary>
|
||||
FtpHost
|
||||
|
||||
''' <summary>Ftp端口</summary>
|
||||
FtpPort
|
||||
|
||||
''' <summary>Ftp用户名</summary>
|
||||
FtpUser
|
||||
|
||||
''' <summary>Ftp用户密码</summary>
|
||||
FtpPassword
|
||||
|
||||
End Enum
|
||||
|
||||
''' <summary> Server文件校验返回枚举值</summary>
|
||||
Public Enum ServerCheckCodeEnum
|
||||
|
||||
''' <summary>未找到Server</summary>
|
||||
NoServer
|
||||
|
||||
''' <summary>无法打开Server</summary>
|
||||
CantOpenServer
|
||||
|
||||
''' <summary>无效的Server</summary>
|
||||
InvalidServer
|
||||
|
||||
''' <summary>校验通过</summary>
|
||||
CheckPass
|
||||
|
||||
End Enum
|
||||
|
||||
''' <summary>存储Server校验返回值</summary>
|
||||
Private _checkCode As ServerCheckCodeEnum
|
||||
|
||||
''' <summary>存储Server所有信息</summary>
|
||||
Private _server As Dictionary(Of String, String)
|
||||
|
||||
''' <summary>服务器密钥</summary>
|
||||
Private ReadOnly _serverAesKey As String = "^5GHo96tr5ff&*Hphg7665^fyu&uOhj0j[0[(jOIhI&g77FgghO*hhHY8h(*H&-987OygO8yg*yS$&G&aG9*&6g96*&7^RA65s76r*&&G(*(7(Gyg7#7Ff7F*&(*&&^"
|
||||
|
||||
'''<summary>Server所有可用字段</summary>
|
||||
Private ReadOnly _serverKey() As String = {"VendorName", "DataSource", "DataPort", "Database", "DbUser", "DbPassword", "FtpHost", "FtpPort", "FtpUser", "FtpPassword"}
|
||||
|
||||
''' <summary>
|
||||
''' 获取客户名
|
||||
''' </summary>
|
||||
''' <returns>客户名</returns>
|
||||
Public ReadOnly Property VendorName() As String
|
||||
Get
|
||||
Return _server.Item(_serverKey(ServerKeyEnum.VendorName))
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' 获取服务器名
|
||||
''' </summary>
|
||||
''' <returns>服务器名</returns>
|
||||
Public ReadOnly Property DataSource() As String
|
||||
Get
|
||||
Return _server.Item(_serverKey(ServerKeyEnum.DataSource))
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' 获取服务器端口
|
||||
''' </summary>
|
||||
''' <returns>服务器端口</returns>
|
||||
Public ReadOnly Property DatabasePort() As String
|
||||
Get
|
||||
Return _server.Item(_serverKey(ServerKeyEnum.DbPort))
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' 获取数据库名
|
||||
''' </summary>
|
||||
''' <returns>数据库名</returns>
|
||||
Public ReadOnly Property Database() As String
|
||||
Get
|
||||
Return _server.Item(_serverKey(ServerKeyEnum.Database))
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' 获取数据库用户名
|
||||
''' </summary>
|
||||
''' <returns>数据库用户名</returns>
|
||||
Public ReadOnly Property DatabaseUser() As String
|
||||
Get
|
||||
Return _server.Item(_serverKey(ServerKeyEnum.DbUser))
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' 获取数据库用户密码
|
||||
''' </summary>
|
||||
''' <returns>数据库用户密码</returns>
|
||||
Public ReadOnly Property DatabasePassword() As String
|
||||
Get
|
||||
Return _server.Item(_serverKey(ServerKeyEnum.DbPassword))
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' 获取服务器端口
|
||||
''' </summary>
|
||||
''' <returns>服务器端口</returns>
|
||||
Public ReadOnly Property FtpPort() As String
|
||||
Get
|
||||
Return _server.Item(_serverKey(ServerKeyEnum.FtpPort))
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' 获取数据库名
|
||||
''' </summary>
|
||||
''' <returns>数据库名</returns>
|
||||
Public ReadOnly Property FtpHost() As String
|
||||
Get
|
||||
Return _server.Item(_serverKey(ServerKeyEnum.FtpHost))
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' 获取数据库用户名
|
||||
''' </summary>
|
||||
''' <returns>数据库用户名</returns>
|
||||
Public ReadOnly Property FtpUser() As String
|
||||
Get
|
||||
Return _server.Item(_serverKey(ServerKeyEnum.FtpUser))
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' 获取数据库用户密码
|
||||
''' </summary>
|
||||
''' <returns>数据库用户密码</returns>
|
||||
Public ReadOnly Property FtpPassword() As String
|
||||
Get
|
||||
Return _server.Item(_serverKey(ServerKeyEnum.FtpPassword))
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' 读取Server文件所有内容,并进行解密,将解密后的内容存入Server字典中
|
||||
''' </summary>
|
||||
''' <param name="serverPath">Server文件完整路径(含文件名)</param>
|
||||
''' <returns>读取Server文件的状态</returns>
|
||||
Public Function ReadServerFile(ByVal serverPath As String) As ServerCheckCodeEnum
|
||||
Dim tmp As String
|
||||
Dim fm As FileStream
|
||||
Dim sr As StreamReader
|
||||
If File.Exists(serverPath) Then
|
||||
fm = New FileStream(serverPath, FileMode.Open)
|
||||
sr = New StreamReader(fm)
|
||||
_checkCode = ServerCheckCodeEnum.CheckPass
|
||||
_server = New Dictionary(Of String, String)
|
||||
Try
|
||||
tmp = Aes128.DecryptStr(sr.ReadToEnd, _serverAesKey) 'utf8解密字符串
|
||||
' tmp = ClsAes128.DecryptStr(sr.ReadToEnd, _serverAesKey, Unicode) 'Unicode解密字符串
|
||||
Dim lines() As String = tmp.Split(Chr(13))‘回车切割
|
||||
For i As Integer = 0 To lines.Length - 1
|
||||
tmp = lines(i).Trim(Chr(10))'去除换行
|
||||
Dim str As String() = tmp.Split("="c)
|
||||
If str.Length = 2 Then
|
||||
_server.Add(Trim(str(0)), Trim(str(1)))
|
||||
Debug.Print($"Keys : {_server.Keys.ElementAt(_server.Count - 1)} Value : {_server.Values.ElementAt(_server.Count - 1)}")
|
||||
Else
|
||||
_checkCode = ServerCheckCodeEnum.InvalidServer
|
||||
End If
|
||||
Next
|
||||
Catch ex As Exception
|
||||
_checkCode = ServerCheckCodeEnum.InvalidServer
|
||||
Finally
|
||||
fm.Dispose()
|
||||
sr.Close()
|
||||
End Try
|
||||
Else
|
||||
_checkCode = ServerCheckCodeEnum.NoServer
|
||||
End If
|
||||
Return _checkCode
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 校验Server
|
||||
''' </summary>
|
||||
''' <param name="serverPath">Server文件完整路径(含文件名)</param>
|
||||
''' <returns>校验是否通过</returns>
|
||||
Public Function CheckoutServer(ByVal serverPath As String) As ServerCheckCodeEnum
|
||||
If ReadServerFile(serverPath) = ServerCheckCodeEnum.CheckPass Then
|
||||
'校验厂商(根据是否存在厂商数据库校验)
|
||||
If My.Computer.Network.Ping(_server.Item(_serverKey(ServerKeyEnum.DataSource))) Then
|
||||
|
||||
End If
|
||||
|
||||
End If
|
||||
Return _checkCode
|
||||
End Function
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
9213
UTS_Core/UTSModule/Login/LoginForm.resx
Normal file
9213
UTS_Core/UTSModule/Login/LoginForm.resx
Normal file
File diff suppressed because it is too large
Load Diff
450
UTS_Core/UTSModule/Login/LoginForm.vb
Normal file
450
UTS_Core/UTSModule/Login/LoginForm.vb
Normal file
@@ -0,0 +1,450 @@
|
||||
Imports System.Windows.Forms
|
||||
Imports UTS_Core.My
|
||||
Imports UTS_Core.Security
|
||||
|
||||
Namespace UTSModule.Login
|
||||
Public Class LoginForm
|
||||
Inherits System.Windows.Forms.Form
|
||||
#Region "初始化组件"
|
||||
|
||||
|
||||
Friend WithEvents Label4 As System.Windows.Forms.Label
|
||||
Friend WithEvents CboUserAccount As System.Windows.Forms.ComboBox
|
||||
Friend WithEvents BtnLogin As System.Windows.Forms.Button
|
||||
Friend WithEvents ChkAutoLogin As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents ChkRememb As System.Windows.Forms.CheckBox
|
||||
Friend WithEvents TxtUserPassword As System.Windows.Forms.TextBox
|
||||
Friend WithEvents Label2 As System.Windows.Forms.Label
|
||||
Friend WithEvents Label1 As System.Windows.Forms.Label
|
||||
Friend WithEvents PicLogin As System.Windows.Forms.PictureBox
|
||||
Friend WithEvents TmrAutoLogin As System.Windows.Forms.Timer
|
||||
Friend WithEvents PictureBox1 As PictureBox
|
||||
Friend WithEvents PictureBox2 As PictureBox
|
||||
|
||||
|
||||
|
||||
'Form 重写 Dispose,以清理组件列表。
|
||||
<System.Diagnostics.DebuggerNonUserCode()>
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Windows 窗体设计器所必需的
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'注意: 以下过程是 Windows 窗体设计器所必需的
|
||||
'可以使用 Windows 窗体设计器修改它。
|
||||
'不要使用代码编辑器修改它。
|
||||
<System.Diagnostics.DebuggerStepThrough()>
|
||||
Private Sub InitializeComponent()
|
||||
Me.components = New System.ComponentModel.Container()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(LoginForm))
|
||||
Me.Label4 = New System.Windows.Forms.Label()
|
||||
Me.CboUserAccount = New System.Windows.Forms.ComboBox()
|
||||
Me.BtnLogin = New System.Windows.Forms.Button()
|
||||
Me.ChkAutoLogin = New System.Windows.Forms.CheckBox()
|
||||
Me.ChkRememb = New System.Windows.Forms.CheckBox()
|
||||
Me.TxtUserPassword = New System.Windows.Forms.TextBox()
|
||||
Me.Label2 = New System.Windows.Forms.Label()
|
||||
Me.Label1 = New System.Windows.Forms.Label()
|
||||
Me.PicLogin = New System.Windows.Forms.PictureBox()
|
||||
Me.TmrAutoLogin = New System.Windows.Forms.Timer(Me.components)
|
||||
Me.PictureBox1 = New System.Windows.Forms.PictureBox()
|
||||
Me.PictureBox2 = New System.Windows.Forms.PictureBox()
|
||||
CType(Me.PicLogin, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'Label4
|
||||
'
|
||||
Me.Label4.Location = New System.Drawing.Point(518, 91)
|
||||
Me.Label4.Name = "Label4"
|
||||
Me.Label4.Size = New System.Drawing.Size(18, 21)
|
||||
Me.Label4.TabIndex = 32
|
||||
Me.Label4.Text = "*"
|
||||
Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
|
||||
'
|
||||
'CboUserAccount
|
||||
'
|
||||
Me.CboUserAccount.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.CboUserAccount.FormattingEnabled = True
|
||||
Me.CboUserAccount.ImeMode = System.Windows.Forms.ImeMode.Disable
|
||||
Me.CboUserAccount.Location = New System.Drawing.Point(338, 41)
|
||||
Me.CboUserAccount.MaxLength = 20
|
||||
Me.CboUserAccount.Name = "CboUserAccount"
|
||||
Me.CboUserAccount.Size = New System.Drawing.Size(174, 23)
|
||||
Me.CboUserAccount.TabIndex = 0
|
||||
Me.CboUserAccount.Text = "Qizengbiao"
|
||||
'
|
||||
'BtnLogin
|
||||
'
|
||||
Me.BtnLogin.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
||||
Me.BtnLogin.Font = New System.Drawing.Font("Microsoft Sans Serif", 18.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.BtnLogin.ForeColor = System.Drawing.Color.White
|
||||
Me.BtnLogin.Location = New System.Drawing.Point(304, 162)
|
||||
Me.BtnLogin.Name = "BtnLogin"
|
||||
Me.BtnLogin.Size = New System.Drawing.Size(208, 49)
|
||||
Me.BtnLogin.TabIndex = 2
|
||||
Me.BtnLogin.Text = "登 录"
|
||||
Me.BtnLogin.UseVisualStyleBackColor = True
|
||||
'
|
||||
'ChkAutoLogin
|
||||
'
|
||||
Me.ChkAutoLogin.AutoSize = True
|
||||
Me.ChkAutoLogin.FlatStyle = System.Windows.Forms.FlatStyle.Popup
|
||||
Me.ChkAutoLogin.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.ChkAutoLogin.ForeColor = System.Drawing.Color.White
|
||||
Me.ChkAutoLogin.Location = New System.Drawing.Point(314, 134)
|
||||
Me.ChkAutoLogin.Name = "ChkAutoLogin"
|
||||
Me.ChkAutoLogin.Size = New System.Drawing.Size(72, 19)
|
||||
Me.ChkAutoLogin.TabIndex = 28
|
||||
Me.ChkAutoLogin.TabStop = False
|
||||
Me.ChkAutoLogin.Text = "自动登录"
|
||||
Me.ChkAutoLogin.UseVisualStyleBackColor = True
|
||||
'
|
||||
'ChkRememb
|
||||
'
|
||||
Me.ChkRememb.AutoSize = True
|
||||
Me.ChkRememb.FlatStyle = System.Windows.Forms.FlatStyle.Popup
|
||||
Me.ChkRememb.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.ChkRememb.ForeColor = System.Drawing.Color.White
|
||||
Me.ChkRememb.Location = New System.Drawing.Point(440, 134)
|
||||
Me.ChkRememb.Name = "ChkRememb"
|
||||
Me.ChkRememb.Size = New System.Drawing.Size(72, 19)
|
||||
Me.ChkRememb.TabIndex = 27
|
||||
Me.ChkRememb.TabStop = False
|
||||
Me.ChkRememb.Text = "记住密码"
|
||||
Me.ChkRememb.UseVisualStyleBackColor = True
|
||||
'
|
||||
'TxtUserPassword
|
||||
'
|
||||
Me.TxtUserPassword.ImeMode = System.Windows.Forms.ImeMode.Disable
|
||||
Me.TxtUserPassword.Location = New System.Drawing.Point(338, 88)
|
||||
Me.TxtUserPassword.MaxLength = 20
|
||||
Me.TxtUserPassword.Name = "TxtUserPassword"
|
||||
Me.TxtUserPassword.PasswordChar = Global.Microsoft.VisualBasic.ChrW(42)
|
||||
Me.TxtUserPassword.Size = New System.Drawing.Size(174, 21)
|
||||
Me.TxtUserPassword.TabIndex = 1
|
||||
Me.TxtUserPassword.Text = "Actop00803"
|
||||
'
|
||||
'Label2
|
||||
'
|
||||
Me.Label2.AutoSize = True
|
||||
Me.Label2.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.Label2.ForeColor = System.Drawing.Color.White
|
||||
Me.Label2.Location = New System.Drawing.Point(301, 94)
|
||||
Me.Label2.Name = "Label2"
|
||||
Me.Label2.Size = New System.Drawing.Size(31, 15)
|
||||
Me.Label2.TabIndex = 25
|
||||
Me.Label2.Text = "密码"
|
||||
'
|
||||
'Label1
|
||||
'
|
||||
Me.Label1.AutoSize = True
|
||||
Me.Label1.BackColor = System.Drawing.Color.Transparent
|
||||
Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.Label1.ForeColor = System.Drawing.Color.White
|
||||
Me.Label1.Location = New System.Drawing.Point(301, 49)
|
||||
Me.Label1.Name = "Label1"
|
||||
Me.Label1.Size = New System.Drawing.Size(31, 15)
|
||||
Me.Label1.TabIndex = 24
|
||||
Me.Label1.Text = "账号"
|
||||
Me.Label1.TextAlign = System.Drawing.ContentAlignment.TopRight
|
||||
'
|
||||
'PicLogin
|
||||
'
|
||||
Me.PicLogin.Image = CType(resources.GetObject("PicLogin.Image"), System.Drawing.Image)
|
||||
Me.PicLogin.Location = New System.Drawing.Point(3, 3)
|
||||
Me.PicLogin.Name = "PicLogin"
|
||||
Me.PicLogin.Size = New System.Drawing.Size(275, 242)
|
||||
Me.PicLogin.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage
|
||||
Me.PicLogin.TabIndex = 23
|
||||
Me.PicLogin.TabStop = False
|
||||
'
|
||||
'TmrAutoLogin
|
||||
'
|
||||
Me.TmrAutoLogin.Interval = 3000
|
||||
'
|
||||
'PictureBox1
|
||||
'
|
||||
Me.PictureBox1.Image = CType(resources.GetObject("PictureBox1.Image"), System.Drawing.Image)
|
||||
Me.PictureBox1.Location = New System.Drawing.Point(304, 36)
|
||||
Me.PictureBox1.Name = "PictureBox1"
|
||||
Me.PictureBox1.Size = New System.Drawing.Size(28, 33)
|
||||
Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom
|
||||
Me.PictureBox1.TabIndex = 35
|
||||
Me.PictureBox1.TabStop = False
|
||||
'
|
||||
'PictureBox2
|
||||
'
|
||||
Me.PictureBox2.Image = CType(resources.GetObject("PictureBox2.Image"), System.Drawing.Image)
|
||||
Me.PictureBox2.Location = New System.Drawing.Point(304, 79)
|
||||
Me.PictureBox2.Name = "PictureBox2"
|
||||
Me.PictureBox2.Size = New System.Drawing.Size(28, 33)
|
||||
Me.PictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom
|
||||
Me.PictureBox2.TabIndex = 36
|
||||
Me.PictureBox2.TabStop = False
|
||||
'
|
||||
'LoginForm
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 15.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.BackColor = System.Drawing.Color.DodgerBlue
|
||||
Me.ClientSize = New System.Drawing.Size(544, 249)
|
||||
Me.Controls.Add(Me.PictureBox2)
|
||||
Me.Controls.Add(Me.PictureBox1)
|
||||
Me.Controls.Add(Me.Label4)
|
||||
Me.Controls.Add(Me.CboUserAccount)
|
||||
Me.Controls.Add(Me.BtnLogin)
|
||||
Me.Controls.Add(Me.ChkAutoLogin)
|
||||
Me.Controls.Add(Me.ChkRememb)
|
||||
Me.Controls.Add(Me.TxtUserPassword)
|
||||
Me.Controls.Add(Me.Label2)
|
||||
Me.Controls.Add(Me.Label1)
|
||||
Me.Controls.Add(Me.PicLogin)
|
||||
Me.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134,Byte))
|
||||
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow
|
||||
Me.Icon = CType(resources.GetObject("$this.Icon"),System.Drawing.Icon)
|
||||
Me.MaximizeBox = false
|
||||
Me.MinimizeBox = false
|
||||
Me.Name = "LoginForm"
|
||||
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
|
||||
Me.Text = "Form1"
|
||||
CType(Me.PicLogin,System.ComponentModel.ISupportInitialize).EndInit
|
||||
CType(Me.PictureBox1,System.ComponentModel.ISupportInitialize).EndInit
|
||||
CType(Me.PictureBox2,System.ComponentModel.ISupportInitialize).EndInit
|
||||
Me.ResumeLayout(false)
|
||||
Me.PerformLayout
|
||||
|
||||
End Sub
|
||||
|
||||
Sub New()
|
||||
InitializeComponent()
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
''' <summary>是否记住密码</summary>
|
||||
Private _isRecordPassWord As Boolean
|
||||
|
||||
''' <summary>是否自动登录</summary>
|
||||
Private _isAutoLogin As Boolean
|
||||
|
||||
''' <summary>是否正在登录中</summary>
|
||||
Private _isLogging As Boolean
|
||||
|
||||
|
||||
''' <summary>校验文件信息</summary>
|
||||
Public Property UserLicense As License.License
|
||||
|
||||
''' <summary>用户登录信息</summary>
|
||||
Public Property UserLoginInfo As UserInfo
|
||||
|
||||
|
||||
|
||||
|
||||
''' <summary>修改窗体标题</summary>
|
||||
Private Sub ShowFormTitle()
|
||||
Text = $"{My.Application.Info.ProductName} Login"
|
||||
End Sub
|
||||
|
||||
''' <summary>读取Setting中的缓存量</summary>
|
||||
Private Sub LoadSettings()
|
||||
My.Settings.Reload() '读取Setting中的内容
|
||||
_isAutoLogin = My.Settings.IsAutoLogin
|
||||
_isRecordPassWord = My.Settings.IsRecordPassWord
|
||||
End Sub
|
||||
|
||||
''' <summary>保存Setting中的缓存量</summary>
|
||||
Private Sub SaveSettings()
|
||||
My.Settings.IsAutoLogin = _isAutoLogin
|
||||
My.Settings.IsRecordPassWord = _isRecordPassWord
|
||||
|
||||
If _isRecordPassWord Then
|
||||
Settings.UserAccount = Aes128.EncryptStr(CboUserAccount.Text, Aes128.ServerAesKey)
|
||||
Settings.UserPassword = Aes128.EncryptStr(TxtUserPassword.Text, Aes128.ServerAesKey)
|
||||
Else
|
||||
Settings.UserAccount = String.Empty
|
||||
Settings.UserPassword = String.Empty
|
||||
End If
|
||||
Settings.Save()
|
||||
End Sub
|
||||
|
||||
Private Sub InitChkAutoLogin()
|
||||
ChkAutoLogin.Checked = _isAutoLogin
|
||||
End Sub
|
||||
|
||||
Private Sub InitChkRememb()
|
||||
ChkRememb.Checked = _isRecordPassWord
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 初始化账号控件显示
|
||||
''' </summary>
|
||||
Private Sub InitCboUserAccount()
|
||||
Try
|
||||
CboUserAccount.Text = Aes128.DecryptStr(Settings.UserAccount, Aes128.ServerAesKey)
|
||||
Catch ex As Exception
|
||||
CboUserAccount.Text = String.Empty
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 密码获取与保存机制以后会修改,或加密
|
||||
''' </summary>
|
||||
Private Sub InitTxtUserPassword()
|
||||
Try
|
||||
TxtUserPassword.Text = Aes128.DecryptStr(Settings.UserPassword, Aes128.ServerAesKey)
|
||||
Catch ex As Exception
|
||||
TxtUserPassword.Text = String.Empty
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub InitForm()
|
||||
ShowFormTitle()
|
||||
|
||||
InitChkAutoLogin()
|
||||
InitChkRememb()
|
||||
InitCboUserAccount()
|
||||
InitTxtUserPassword()
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub CloseTipMessage(tipString As String)
|
||||
MessageBox.Show(tipString, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
|
||||
DialogResult = DialogResult.Abort
|
||||
Close()
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub CheckLicense()
|
||||
Try
|
||||
UserLicense = New License.License(UtsRegistry.LicenseFilePath)
|
||||
UserLicense.CheckLicense()
|
||||
|
||||
Catch ex As Exception
|
||||
CloseTipMessage($"Open And Check License Error:{ex.Message}")
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub InitConnectParams()
|
||||
If UserLicense Is Nothing Then
|
||||
Throw New Exception($"License Error:Uninitialized License!")
|
||||
End If
|
||||
|
||||
UtsPath.VendorName = UserLicense.VendorName
|
||||
UtsFtp.InitConnectParams(CInt(UserLicense.FtpPort), UserLicense.FtpUser, UserLicense.FtpPwd)
|
||||
UtsDb.InitConnectParams(UserLicense) '根据License信息,初始化数据库连接信息
|
||||
End Sub
|
||||
|
||||
Private Sub LoginForm_Load(sender As Object, e As EventArgs) Handles Me.Load
|
||||
LoadSettings()
|
||||
InitForm()
|
||||
|
||||
CheckLicense()
|
||||
InitConnectParams()
|
||||
End Sub
|
||||
|
||||
''' <summary>记住密码复选框状态修改触发事件</summary>
|
||||
Private Sub ChkKeepPwd_CheckedChanged(sender As Object, e As EventArgs) Handles ChkRememb.CheckedChanged
|
||||
_isRecordPassWord = ChkRememb.Checked
|
||||
End Sub
|
||||
|
||||
''' <summary>自动登录复选框状态修改触发事件</summary>
|
||||
Private Sub Chk_AutoLogin_CheckedChanged(sender As Object, e As EventArgs) Handles ChkAutoLogin.CheckedChanged
|
||||
_isAutoLogin = ChkAutoLogin.Checked
|
||||
End Sub
|
||||
|
||||
Private Sub LoginForm_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
|
||||
SaveSettings()
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub CheckUserAccount(userAccount As String)
|
||||
If String.IsNullOrWhiteSpace(userAccount) Then
|
||||
Throw New Exception($"请输入用户账号!")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub CheckUserPassword(userPassword As String)
|
||||
If String.IsNullOrWhiteSpace(userPassword) Then
|
||||
Throw New Exception($"请输入密码!")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
Private Function AdminLogin(userAccount As String, userPassword As String) As Boolean
|
||||
Return userAccount = UserLicense.DefaultUser AndAlso userPassword = UserLicense.DefaultPassword
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 使用账号密码登录
|
||||
''' </summary>
|
||||
Private Sub AccountLogin()
|
||||
Dim userAccount As String = CboUserAccount.Text
|
||||
Dim userPassword As String = TxtUserPassword.Text
|
||||
CheckUserAccount(userAccount)
|
||||
CheckUserPassword(userPassword)
|
||||
|
||||
Dim dtUser As DataTable = DbConnect.DbConnector.UtsGetUserInfo(userAccount, userPassword)
|
||||
UserLoginInfo = New UserInfo(dtUser)
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub BtnLogin_Click(sender As Object, e As EventArgs) Handles BtnLogin.Click
|
||||
CloseAutoLogin()
|
||||
If _isLogging Then Return
|
||||
_isLogging = True
|
||||
|
||||
Text = $"{My.Application.Info.ProductName} Login [Logining]"
|
||||
Try
|
||||
AccountLogin() '从云端获取用户信息
|
||||
|
||||
DialogResult = DialogResult.OK
|
||||
Close() '登录完成关闭登录页面
|
||||
Catch ex As Exception
|
||||
Text = $"{My.Application.Info.ProductName} Login [Login failed]"
|
||||
MsgBox(ex.Message, MsgBoxStyle.OkOnly, "登录失败")
|
||||
End Try
|
||||
|
||||
_isLogging = False
|
||||
End Sub
|
||||
|
||||
Private Sub TmrAutoLogin_Tick(sender As Object, e As EventArgs) Handles TmrAutoLogin.Tick
|
||||
BtnLogin.PerformClick()
|
||||
End Sub
|
||||
|
||||
Private Sub LoginForm_Shown(sender As Object, e As EventArgs) Handles Me.Shown
|
||||
If _isAutoLogin Then
|
||||
TmrAutoLogin.Start()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub LoginForm_Activated(sender As Object, e As EventArgs) Handles Me.Activated
|
||||
'设置默认焦点控件
|
||||
BtnLogin.Focus()
|
||||
End Sub
|
||||
|
||||
Private Sub TxtUserPassword_TextChanged(sender As Object, e As EventArgs) Handles TxtUserPassword.TextChanged
|
||||
CloseAutoLogin()
|
||||
End Sub
|
||||
|
||||
Private Sub CboUserAccount_TextChanged(sender As Object, e As EventArgs) Handles CboUserAccount.TextChanged
|
||||
CloseAutoLogin()
|
||||
End Sub
|
||||
|
||||
Private Sub CloseAutoLogin()
|
||||
If TmrAutoLogin.Enabled Then
|
||||
TmrAutoLogin.Stop()
|
||||
Text = $"{My.Application.Info.ProductName} Login [Auto Login Cancelled...]"
|
||||
End If
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
13
UTS_Core/UTSModule/Login/LoginParams.vb
Normal file
13
UTS_Core/UTSModule/Login/LoginParams.vb
Normal file
@@ -0,0 +1,13 @@
|
||||
Namespace UTSModule.Login
|
||||
Public Class LoginParams
|
||||
''' <summary>是否需要显示登陆页面,方便以后编译时,生成不登陆工具</summary>
|
||||
Public Shared IsShowLoginForm As Boolean = True
|
||||
|
||||
''' <summary>是否记住密码</summary>
|
||||
Public Shared IsRecordPassWord As Boolean
|
||||
|
||||
''' <summary>是否自动登录</summary>
|
||||
Public Shared IsAutoLogin As Boolean
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
59
UTS_Core/UTSModule/Login/UserInfo.vb
Normal file
59
UTS_Core/UTSModule/Login/UserInfo.vb
Normal file
@@ -0,0 +1,59 @@
|
||||
Imports UTS_Core.UTSModule.DbTableModel.Manage
|
||||
|
||||
Namespace UTSModule.Login
|
||||
''' <summary>
|
||||
''' 用户信息类
|
||||
''' </summary>
|
||||
Public Class UserInfo
|
||||
Sub New(dataTable As DataTable)
|
||||
If dataTable Is Nothing Then Throw New Exception($"错误的登录信息!")
|
||||
If dataTable.Rows.Count = 0 Then Throw New Exception($"未查询到匹配的账号与密码!")
|
||||
|
||||
InitializeFormDataTable(dataTable)
|
||||
|
||||
If IsValid = False Then Throw New Exception($"账户已冻结!")
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub InitializeFormDataTable(dataTable As DataTable)
|
||||
UserId = CInt(dataTable.Rows(0).Item($"{UserListTable.ColNamesEnum.ID}"))
|
||||
CompanyId = CInt(dataTable.Rows(0).Item($"{UserListTable.ColNamesEnum.CompanyID}"))
|
||||
UserName = dataTable.Rows(0).Item($"{UserListTable.ColNamesEnum.UserName}").ToString
|
||||
PassWord = dataTable.Rows(0).Item($"{UserListTable.ColNamesEnum.Password}").ToString
|
||||
IsValid = CBool(dataTable.Rows(0).Item($"{UserListTable.ColNamesEnum.IsValid}"))
|
||||
Email = dataTable.Rows(0).Item($"{UserListTable.ColNamesEnum.Email}").ToString
|
||||
Mobile = dataTable.Rows(0).Item($"{UserListTable.ColNamesEnum.Mobile}").ToString
|
||||
CreateTime = dataTable.Rows(0).Item($"{UserListTable.ColNamesEnum.CreateTime}").ToString
|
||||
WeChat = dataTable.Rows(0).Item($"{UserListTable.ColNamesEnum.WeiXin}").ToString
|
||||
End Sub
|
||||
|
||||
''' <summary>账号索引</summary>
|
||||
Public Property UserId() As Integer
|
||||
|
||||
''' <summary>公司索引</summary>
|
||||
Public Property CompanyId() As Integer
|
||||
|
||||
''' <summary>获取或设置用户账号</summary>
|
||||
Public Property UserName As String
|
||||
|
||||
''' <summary>获取或设置用户密码</summary>
|
||||
Public Property PassWord As String
|
||||
|
||||
''' <summary>获取或设置用户注册日期</summary>
|
||||
Public Property CreateTime As String
|
||||
|
||||
''' <summary>获取或设置用户电话号码</summary>
|
||||
Public Property Mobile As String
|
||||
|
||||
''' <summary>获取或设置用户微信号</summary>
|
||||
Public Property WeChat As String
|
||||
|
||||
''' <summary>获取或设置用户电子邮箱</summary>
|
||||
Public Property Email As String
|
||||
|
||||
''' <summary>获取或设置用户是否有效</summary>
|
||||
Public Property IsValid As Boolean
|
||||
End Class
|
||||
|
||||
|
||||
End Namespace
|
||||
133
UTS_Core/UTSModule/Production/CustomerOrderManager.vb
Normal file
133
UTS_Core/UTSModule/Production/CustomerOrderManager.vb
Normal file
@@ -0,0 +1,133 @@
|
||||
Imports System.ComponentModel
|
||||
|
||||
Namespace UTSModule.Production
|
||||
Public Enum OrderStatusEnum
|
||||
|
||||
''' <summary>
|
||||
''' 已下单待转内部单
|
||||
''' </summary>
|
||||
<Description("已下单待转M/O")>
|
||||
PlaceOrder = 1
|
||||
|
||||
''' <summary>
|
||||
''' 已转M/O待制条码
|
||||
''' </summary>
|
||||
<Description("已转M/O待制条码")>
|
||||
MOrder = 2
|
||||
|
||||
''' <summary>
|
||||
''' 已制SN待制计划
|
||||
''' </summary>
|
||||
<Description("已制SN待制计划")>
|
||||
SnRules = 3
|
||||
|
||||
''' <summary>
|
||||
''' 已制计划待生产
|
||||
''' </summary>
|
||||
<Description("已制计划待生产")>
|
||||
ProductionPlan = 4
|
||||
|
||||
''' <summary>
|
||||
''' 生产中
|
||||
''' </summary>
|
||||
<Description("生产中")>
|
||||
InProduction = 5
|
||||
|
||||
''' <summary>
|
||||
''' 完成生产
|
||||
''' </summary>
|
||||
<Description("完成生产")>
|
||||
CompleteProduction = 6
|
||||
|
||||
''' <summary>
|
||||
''' 已完成
|
||||
''' </summary>
|
||||
<Description("已完成")>
|
||||
Completed = 7
|
||||
|
||||
''' <summary>
|
||||
''' 取消
|
||||
''' </summary>
|
||||
<Description("取消")>
|
||||
Cancel = -1
|
||||
|
||||
''' <summary>
|
||||
''' 暂停中
|
||||
''' </summary>
|
||||
<Description("暂停中")>
|
||||
Suspend = -2
|
||||
|
||||
End Enum
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 客户订单信息
|
||||
''' </summary>
|
||||
Public Class CustomerOrderManager
|
||||
Sub New()
|
||||
OrderID = -1
|
||||
|
||||
OrderStatus = OrderStatusEnum.Suspend
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 订单索引
|
||||
''' </summary>
|
||||
Public OrderID As Integer
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 订单条码序号字符串
|
||||
''' </summary>
|
||||
Public OrderNo As String
|
||||
|
||||
''' <summary>
|
||||
''' 订单状态
|
||||
''' </summary>
|
||||
|
||||
Public OrderStatus As OrderStatusEnum
|
||||
|
||||
''' <summary>
|
||||
''' 订单总量
|
||||
''' </summary>
|
||||
Public OrderCount As Integer
|
||||
|
||||
''' <summary>
|
||||
''' 订单产品
|
||||
''' </summary>
|
||||
|
||||
Public ProductID As Integer
|
||||
|
||||
''' <summary>
|
||||
''' 订单所属客户索引
|
||||
''' </summary>
|
||||
Public CompanyID As Integer
|
||||
|
||||
''' <summary>
|
||||
''' 订单交期
|
||||
''' </summary>
|
||||
Public DeliveryTime As Date
|
||||
|
||||
''' <summary>
|
||||
''' 订单创建时间
|
||||
''' </summary>
|
||||
Public CreateTime As Date
|
||||
|
||||
''' <summary>
|
||||
''' 成本单价
|
||||
''' </summary>
|
||||
Public CostPrice As Double
|
||||
|
||||
''' <summary>
|
||||
''' 销售单价
|
||||
''' </summary>
|
||||
Public TransactPrice As Double
|
||||
|
||||
|
||||
Public Function IsInitialized() As Boolean
|
||||
If OrderID = -1 Then Return False
|
||||
|
||||
Return True
|
||||
End Function
|
||||
End Class
|
||||
End Namespace
|
||||
30
UTS_Core/UTSModule/Production/ErrCode.vb
Normal file
30
UTS_Core/UTSModule/Production/ErrCode.vb
Normal file
@@ -0,0 +1,30 @@
|
||||
Imports System.Drawing
|
||||
|
||||
Namespace UTSModule.Production
|
||||
|
||||
Public Class ErrCode
|
||||
Sub New ()
|
||||
Code = ""
|
||||
Msg =""
|
||||
Color = Color.White
|
||||
End Sub
|
||||
|
||||
|
||||
Sub New(code As String, msg As String, color As Color)
|
||||
Me.Code = code
|
||||
Me.Msg = msg
|
||||
Me.Color = color
|
||||
End Sub
|
||||
|
||||
Public Property Code() As String
|
||||
|
||||
Public Property Msg() As String
|
||||
|
||||
Public Property Color() As Color
|
||||
|
||||
Public Function CodeEqual(srcCode As String) As Boolean
|
||||
If String.Compare(Code, srcCode, True) = 0 Then Return True
|
||||
Return False
|
||||
End Function
|
||||
End Class
|
||||
End NameSpace
|
||||
111
UTS_Core/UTSModule/Production/ErrCodeManager.vb
Normal file
111
UTS_Core/UTSModule/Production/ErrCodeManager.vb
Normal file
@@ -0,0 +1,111 @@
|
||||
Imports System.Drawing
|
||||
Imports UTS_Core.UTSModule.DbTableModel.Manage.ErrCodeTable
|
||||
|
||||
Namespace UTSModule.Production
|
||||
Public Class ErrCodeManager
|
||||
''' <summary>错误代码管理器,全局唯一</summary>
|
||||
Private Shared _manager As ErrCodeManager
|
||||
|
||||
''' <summary>初始化测试器线程锁</summary>
|
||||
Private Shared ReadOnly InitLock As New Object()
|
||||
|
||||
|
||||
Private ReadOnly _errCodeList As List(Of ErrCode)
|
||||
|
||||
Private ReadOnly _defaultErrCode As ErrCode
|
||||
|
||||
''' <summary>
|
||||
''' 创建单例管理器,并初始化管理器内容
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Shared Function CreateManager() As ErrCodeManager
|
||||
If _manager Is Nothing Then
|
||||
SyncLock InitLock
|
||||
Threading.Thread.MemoryBarrier()
|
||||
If _manager Is Nothing Then
|
||||
_manager = New ErrCodeManager
|
||||
_manager.InitializeErrCode()
|
||||
End If
|
||||
End SyncLock
|
||||
End If
|
||||
Return _manager
|
||||
End Function
|
||||
|
||||
Private Sub New()
|
||||
_errCodeList = New List(Of ErrCode)()
|
||||
|
||||
_defaultErrCode = New ErrCode()
|
||||
End Sub
|
||||
|
||||
Public Sub InitializeErrCode()
|
||||
Dim dtTable As DataTable = DbConnect.DbConnector.GetAllErrCode()
|
||||
_errCodeList.Clear()
|
||||
|
||||
For Each row As DataRow In dtTable.Rows
|
||||
Dim code As String = row($"{ColNamesEnum.ErrCode}").ToString()
|
||||
Dim msg As String = row($"{ColNamesEnum.ErrMsg}").ToString()
|
||||
Dim color As Color = HexStringToColor(row($"{ColNamesEnum.ErrColor}").ToString())
|
||||
_errCodeList.Add(New ErrCode(code, msg, color))
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Public Function IndexOf(code As String) As Integer
|
||||
For i As Integer = 0 To _errCodeList.Count - 1
|
||||
If _errCodeList(i).CodeEqual(code) Then Return i
|
||||
Next
|
||||
Return -1
|
||||
End Function
|
||||
|
||||
Default Public ReadOnly Property Item(index As Integer) As ErrCode
|
||||
Get
|
||||
If index = -1 OrElse index >= _errCodeList.Count Then
|
||||
Return _defaultErrCode
|
||||
End If
|
||||
|
||||
Return _errCodeList(index)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Default Public ReadOnly Property Item(code As String) As ErrCode
|
||||
Get
|
||||
Return Item(IndexOf(code))
|
||||
End Get
|
||||
End Property
|
||||
|
||||
|
||||
Private Function HexStringToColor(hexString As String) As Color
|
||||
Dim val As Integer = Convert.ToInt32(hexString, 16)
|
||||
Return Color.FromArgb(val >> 16 And &HFF, val >> 8 And &HFF, val And &HFF)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 提取错误代码与错误消息字符串中的错误代码
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Shared Function CodeMsgToCode(codeMsg As String) As String
|
||||
Dim length As Integer = codeMsg.IndexOf(":"c)
|
||||
If length > 0 Then Return Mid(codeMsg, 1, codeMsg.IndexOf(":"c))
|
||||
Return codeMsg
|
||||
End Function
|
||||
|
||||
Private Function Count() As Integer
|
||||
Return _errCodeList.Count
|
||||
End Function
|
||||
|
||||
Public Function GetAllCodes() As String()
|
||||
Dim arr(_errCodeList.Count - 1) As String
|
||||
For i As Integer = 0 To _errCodeList.Count - 1
|
||||
arr(i) = _errCodeList(i).Code
|
||||
Next
|
||||
Return arr
|
||||
End Function
|
||||
|
||||
Public Function GetAllCodeAndMsg() As String()
|
||||
Dim arr(_errCodeList.Count - 1) As String
|
||||
For i As Integer = 0 To _errCodeList.Count - 1
|
||||
arr(i) = $"{_errCodeList(i).Code}:{_errCodeList(i).Msg}"
|
||||
Next
|
||||
Return arr
|
||||
End Function
|
||||
End Class
|
||||
End Namespace
|
||||
156
UTS_Core/UTSModule/Production/InternalOrderManager.vb
Normal file
156
UTS_Core/UTSModule/Production/InternalOrderManager.vb
Normal file
@@ -0,0 +1,156 @@
|
||||
Imports System.Threading
|
||||
Imports UTS_Core.UTSModule.DbTableModel.Customer
|
||||
|
||||
Namespace UTSModule.Production
|
||||
''' <summary>
|
||||
''' 内部订单信息
|
||||
''' </summary>
|
||||
Public Class InternalOrderManager
|
||||
|
||||
|
||||
Private Sub New()
|
||||
ID = -1
|
||||
OrderID = -1
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 内部订单索引
|
||||
''' </summary>
|
||||
Public Property ID As Integer
|
||||
|
||||
''' <summary>
|
||||
''' 客户订单索引
|
||||
''' </summary>
|
||||
Public Property OrderID As Integer
|
||||
|
||||
''' <summary>
|
||||
''' 内部订单号字符串
|
||||
''' </summary>
|
||||
Public Property InternalNo As String
|
||||
|
||||
''' <summary>
|
||||
''' 公司索引
|
||||
''' </summary>
|
||||
Public Property CompanyID As Integer
|
||||
|
||||
''' <summary>
|
||||
''' 产品索引
|
||||
''' </summary>
|
||||
Public Property ProductID As Integer
|
||||
|
||||
''' <summary>
|
||||
''' 产品类型索引
|
||||
''' </summary>
|
||||
Public Property ProductTypeID As Integer
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 内部订单创建时间
|
||||
''' </summary>
|
||||
Public Property CreateTime As Date
|
||||
|
||||
''' <summary>
|
||||
''' 订单交期
|
||||
''' </summary>
|
||||
Public Property DeliveryTime As Date
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 目标产能
|
||||
''' </summary>
|
||||
Public Property ObjectiveYield As Integer
|
||||
|
||||
''' <summary>
|
||||
''' 当前总产能
|
||||
''' </summary>
|
||||
Public Property ObjectiveYieldTotal As Integer
|
||||
|
||||
''' <summary>
|
||||
''' 内部订单状态
|
||||
''' </summary>
|
||||
Public Property OrderStatus As Integer
|
||||
|
||||
''' <summary>内部订单管理器</summary>
|
||||
Private Shared _manager As InternalOrderManager
|
||||
|
||||
''' <summary>初始化测试器线程锁</summary>
|
||||
Private Shared ReadOnly InitLock As New Object()
|
||||
|
||||
''' <summary>
|
||||
''' 创建内部订单管理器单例
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Shared Function CreateManager() As InternalOrderManager
|
||||
If _manager Is Nothing Then
|
||||
SyncLock InitLock
|
||||
Thread.MemoryBarrier()
|
||||
If _manager Is Nothing Then
|
||||
_manager = New InternalOrderManager()
|
||||
End If
|
||||
End SyncLock
|
||||
End If
|
||||
|
||||
Return _manager
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 初始化指定内部订单索引的订单详情
|
||||
''' </summary>
|
||||
''' <param name="internalOrderID"></param>
|
||||
Public Sub Initialize(internalOrderID As Integer)
|
||||
Dim dtTable As DataTable = DbConnect.DbConnector.GetInternalOrder(internalOrderID)
|
||||
If dtTable.Rows.Count = 0 Then Return
|
||||
|
||||
ID = internalOrderID
|
||||
|
||||
If Integer.TryParse(dtTable(0)($"{OrderInternalTable.ColNames.OrderID}").ToString, OrderID) = False Then
|
||||
OrderID = -1
|
||||
End If
|
||||
' OrderID = CInt(dtTable(0)($"{OrderInternalTable.ColNames.OrderID}"))
|
||||
|
||||
If Integer.TryParse(dtTable(0)($"{OrderInternalTable.ColNames.OrderStatus}").ToString, OrderStatus) = False Then
|
||||
OrderStatus = 4
|
||||
End If
|
||||
'OrderStatus = CInt(dtTable(0)($"{OrderInternalTable.ColNames.OrderStatus}"))
|
||||
|
||||
If Integer.TryParse(dtTable(0)($"{OrderInternalTable.ColNames.CompanyID}").ToString, CompanyID) = False Then
|
||||
CompanyID = -1
|
||||
End If
|
||||
' CompanyID = CInt(dtTable(0)($"{OrderInternalTable.ColNames.CompanyID}"))
|
||||
|
||||
If Integer.TryParse(dtTable(0)($"{OrderInternalTable.ColNames.ProductID}").ToString, ProductID) = False Then
|
||||
ProductID = -1
|
||||
End If
|
||||
' ProductID = CInt(dtTable(0)($"{OrderInternalTable.ColNames.ProductID}"))
|
||||
|
||||
If Integer.TryParse(dtTable(0)($"{OrderInternalTable.ColNames.ProductTypeID}").ToString, ProductTypeID) = False Then
|
||||
ProductTypeID = -1
|
||||
End If
|
||||
'ProductTypeID = CInt(dtTable(0)($"{OrderInternalTable.ColNames.ProductTypeID}"))
|
||||
|
||||
If Integer.TryParse(dtTable(0)($"{OrderInternalTable.ColNames.ObjectiveYield}").ToString, ObjectiveYield) = False Then
|
||||
ObjectiveYield = -1
|
||||
End If
|
||||
'ObjectiveYield = CInt(dtTable(0)($"{OrderInternalTable.ColNames.ObjectiveYield}"))
|
||||
|
||||
If Integer.TryParse(dtTable(0)($"{OrderInternalTable.ColNames.ObjectiveYieldTotal}").ToString, ObjectiveYieldTotal) = False Then
|
||||
ObjectiveYieldTotal = -1
|
||||
End If
|
||||
'ObjectiveYieldTotal = CInt(dtTable(0)($"{OrderInternalTable.ColNames.ObjectiveYieldTotal}"))
|
||||
|
||||
If Date.TryParse(dtTable(0)($"{OrderInternalTable.ColNames.CreateTime}").ToString, CreateTime) = False Then
|
||||
CreateTime = Now
|
||||
End If
|
||||
'CreateTime = CDate(dtTable(0)($"{OrderInternalTable.ColNames.CreateTime}"))
|
||||
|
||||
If Date.TryParse(dtTable(0)($"{OrderInternalTable.ColNames.DeliveryTime}").ToString, DeliveryTime) = False Then
|
||||
DeliveryTime = Now
|
||||
End If
|
||||
' DeliveryTime = CDate(dtTable(0)($"{OrderInternalTable.ColNames.DeliveryTime}"))
|
||||
|
||||
InternalNo = CStr(dtTable(0)($"{OrderInternalTable.ColNames.InternalNo}"))
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
|
||||
End Namespace
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user