Imports System.Security.Cryptography Imports System.Text Public Class CreateProject Public Property AccountAuth As AccountAuth Private _defalut As Boolean ''' ''' 客户名称 ''' ''' Public Property VerderName As String Public Property DbConnString2 As String = "" ''' ''' 客户索引 ''' ''' Public Property HotelIndex As String Public Property RoomIndex As String ''' ''' 客户索引 ''' ''' Public Property VerderIndex As String Public holtdic As List(Of Dictionary(Of String, String)) Public Userdic As List(Of Dictionary(Of String, String)) Public NStartTime As String = "" Public AppUser As String = "" Private Sub CreateProject_Load(sender As Object, e As EventArgs) Handles MyBase.Load SetRefreshHolte_cbo() Setdepartment_cbo() layer_cbo.SelectedIndex = 0 'If IsNothing(holtdic) And holtdic.Count = 0 Then ' MsgBox("获取酒店项目信息失败,请查询数据库或联系开发者。") 'Else ' For Each index In holtdic ' Holte_cbo.Items.Add(index.Item("HOTEL_NAME_CN")) ' Next 'End If 'If IsNothing(Userdic) And Userdic.Count = 0 Then ' MsgBox("获取人员信息失败,请查询数据库或联系开发者。") 'Else ' For Each index In Userdic ' ManageUser_cbo .Items.Add(index.Item("UserName")) ' Next 'End If End Sub Public department As New Dictionary(Of String, String) Public Sub Setdepartment_cbo() Dim sqlstr As String = "SELECT * FROM `tbl_engineerning_department`" Dim dic = GetSqlTableRowlist(sqlstr) If IsNothing(dic) AndAlso dic.Count < 1 Then Return department_cbo.Items.Clear() department.Clear() For Each index In dic If String.IsNullOrEmpty(index.Item("DepartmentName")) Then Continue For End If If department.ContainsKey(index.Item("DepartmentName")) Then Continue For department_cbo.Items.Add(index.Item("DepartmentName")) department.Add(index.Item("DepartmentName"), index.Item("id")) Next End Sub Public Sub SetRefreshHolte_cbo() If IsNothing(AccountAuth) Then Return If String.IsNullOrEmpty(HotelIndex) Then _defalut = False Else _defalut = True End If Holte_cbo.Items.Clear() Room_cbo.Text = "" For i As Integer = 0 To AccountAuth.HotelData.Count - 1 Dim group As HotelGroup = AccountAuth.HotelData.Item(i) '遍历所有酒店组,将酒店组添加到tree view控件中 'node.Nodes.Add(group.HotelGroupsName) Holte_cbo.Items.Add(group.HotelGroupsName) If _defalut AndAlso group.HotelGroupsId.Equals(VerderIndex) Then 'Holte_cbo.DroppedDown =True Holte_cbo.SelectedIndex = i 'Holte_cbo.DroppedDown =False End If Next End Sub Public Function GetSqlTableRowlist(sqlstr As String) As List(Of Dictionary(Of String, String)) Dim FileMysqlRow As New List(Of Dictionary(Of String, String)) Try Dim dt As DataTable Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, DbConnString2) db.Open() dt = db.ExecuteDataTable(sqlstr) db.Close() End Using For Each dtrow As DataRow In dt.Rows Dim clunm As New Dictionary(Of String, String) For i As Integer = 0 To dt.Columns.Count - 1 'Console.WriteLine("argRoomTypeNodeIdx = " & dtrow.Item(i)) 'If dtrow.Item(i).GetType = "DbNull" Then ' clunm.Add(dt.Columns(i).ColumnName, "") ' Continue For 'End If clunm.Add(dt.Columns(i).ColumnName, dtrow.Item(i).ToString) Next FileMysqlRow.Add(clunm) Next Catch ex As Exception Return Nothing End Try Return FileMysqlRow End Function Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim sqlval As New Dictionary(Of String, String) 'Console .WriteLine (StartTime_tim .Value .ToString("yyyy-MM-dd HH:mm:ss")) 'Console.WriteLine(stringtoByte(UserControl11.ProjectDescription_rictxt.Rtf).ToString) If String.IsNullOrEmpty(Title_txt.Text) Then MsgBox("标题为空!!!") Return End If If String.IsNullOrEmpty(Holte_cbo.Text) Then MsgBox("项目为空!!!") Return End If If String.IsNullOrEmpty(Room_cbo.Text) Then MsgBox("房型为空!!!") Return End If If String.IsNullOrEmpty(RoomID_cbo.Text) Then MsgBox("房间ID为空!!!") Return End If If String.IsNullOrEmpty(StartTime_tim.Text) Then MsgBox("开始时间为空!!!") Return End If If String.IsNullOrEmpty(StopTime_tim.Text) Then MsgBox("截止时间为空!!!") Return End If If String.IsNullOrEmpty(layer_cbo.Text) Then MsgBox("事件类型为空!!!") Return End If If String.IsNullOrEmpty(level_cbo.Text) Then MsgBox("优先级为空!!!") Return End If If String.IsNullOrEmpty(department_cbo.Text) Then MsgBox("处理部门为空!!!") Return End If If String.IsNullOrEmpty(ManageUser_cbo.Text) Then MsgBox("处理人为空!!!") Return End If sqlval.Add("CurrentStatus", 1) sqlval.Add("DateTime", StartTime_tim.Value.ToString("yyyy-MM-dd HH:mm:ss")) sqlval.Add("Proposer", AppUser) sqlval.Add("EventType", layer_cbo.Tag) sqlval.Add("HotelID", Holte_cbo.Text) sqlval.Add("RoomTypeId", Room_cbo.Text) sqlval.Add("RoomID", RoomID_cbo.Tag) sqlval.Add("EventDesc", Title_txt.Text) sqlval.Add("Process_Department", department_cbo.Text) sqlval.Add("Process_Handler", ManageUser_cbo.Text) sqlval.Add("Process_TargetDateTime", StopTime_tim.Value.ToString("yyyy-MM-dd HH:mm:ss")) sqlval.Add("RtfTextMd5", GetStringMd5(UserControl11.ProjectDescription_rictxt.Rtf)) 'UserControl11.ProjectDescription_rictxt.SaveFile(Application.StartupPath & "log.RTF", RichTextBoxStreamType.RichText) 'Console.WriteLine(UserControl11.ProjectDescription_rictxt.Rtf) 'Dim rtf As String = UserControl11.ProjectDescription_rictxt.Rtf 'UserControl11.ProjectDescription_rictxt.Clear() 'UserControl11.ProjectDescription_rictxt.Rtf = rtf 'stringtoByte(UserControl11.ProjectDescription_rictxt.Rtf) 'Dim filepath As String =Application .StartupPath &"\Rtftest1.rtf" ' UserControl11.ProjectDescription_rictxt.SaveFile (filepath,RichTextBoxStreamType .RichText ) 'UserControl11.ProjectDescription_rictxt.p ' Dim buff() As Byte = System.Text.Encoding.Default.GetBytes(UserControl11.ProjectDescription_rictxt.Rtf) Dim sb As New StringBuilder For Each ss In buff sb.Append(ss) sb.Append("|") Next 'Console.WriteLine ("上传:"& ByteToString(buff )) 'Console.WriteLine ("上传:"& sb.ToString) sqlval.Add("RtfText", sb.ToString) If InsertIntoSqlTable("tbl_event_lists", sqlval) Then NStartTime = sqlval.Item("DateTime") Me.DialogResult = System.Windows.Forms.DialogResult.OK Else Return End If End Sub Public Function ByteToString(databuff() As Byte) Dim strData As String = String.Empty For i = 0 To databuff.Length - 1 strData &= $" {Hex(databuff(i)).PadLeft(2, "0"c)}" Next Return strData End Function Public Function stringtoByte(str As String) As Byte() Return Encoding.ASCII.GetBytes(str) End Function Public 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 Public Function InsertIntoSqlTable(tablename As String, sqlval As Dictionary(Of String, String)) As Boolean Dim dt As DataTable Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, DbConnString2) db.Open() dt = db.ExecuteDataTable(db.CmdHelper.Insert(tablename, sqlval)) db.Close() If IsNothing(dt) Then MsgBox($"发布事务失败,请查看数据表:{tablename},或联系开发者。") Return False End If Return True End Using End Function Private Sub Holte_cbo_SelectedValueChanged(sender As Object, e As EventArgs) Handles Holte_cbo.SelectedValueChanged If String.IsNullOrEmpty(HotelIndex) Then _defalut = False Else _defalut = True End If For Each group As HotelGroup In AccountAuth.HotelData If group.HotelGroupsName.Equals(Holte_cbo.Text) Then Room_cbo.Items.Clear() Room_cbo.Text = "" For i As Integer = 0 To group.Hotels.Count - 1 Dim hotel As Hotel = group.Hotels.Item(i) 'tmpHotelInfo.HotelId = hotel.HotelId 'tmpHotelInfo.HotelCode = hotel.Code 'tmpHotelInfo.HotelName = hotel.HotelName Room_cbo.Items.Add(hotel.HotelName) If _defalut AndAlso hotel.Code.Equals(RoomIndex) Then Room_cbo.SelectedIndex = i End If Next End If Next End Sub Private Sub department_cbo_SelectedValueChanged(sender As Object, e As EventArgs) Handles department_cbo.SelectedValueChanged department_cbo.Tag = department.Item(department_cbo.Text) SetManageUser_cbo() End Sub Public ManageUser As New Dictionary(Of String, String) Public Sub SetManageUser_cbo() Dim sqlstr As String = "SELECT * FROM `tbl_engineerning_teammembers`" Dim dic = GetSqlTableRowlist(sqlstr) If IsNothing(dic) AndAlso dic.Count < 1 Then Return ManageUser_cbo.Items.Clear() ManageUser.Clear() For Each index In dic If String.IsNullOrEmpty(index.Item("UserName")) Then Continue For End If If ManageUser.ContainsKey(index.Item("UserName")) Then Continue For ManageUser_cbo.Items.Add(index.Item("UserName")) ManageUser.Add(index.Item("UserName"), index.Item("UserID")) Next End Sub Private Sub ManageUser_cbo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ManageUser_cbo.SelectedIndexChanged ManageUser_cbo.Tag = ManageUser.Item(ManageUser_cbo.Text) End Sub Public Sub Setlayer_cbo() Dim sqlstr As String = "SELECT * FROM `tbl_eventtype_lists`" Dim dic = GetSqlTableRowlist(sqlstr) If IsNothing(dic) AndAlso dic.Count < 1 Then Return layer_cbo.Items.Clear() For Each index In dic If String.IsNullOrEmpty(index.Item("UserName")) Then Continue For End If layer_cbo.Items.Add(index.Item("UserName")) Next End Sub Private Sub layer_cbo_SelectedValueChanged(sender As Object, e As EventArgs) Handles layer_cbo.SelectedValueChanged layer_cbo.Tag = layer_cbo.SelectedIndex + 1 End Sub End Class