ssy99 0d99692938 feat: 최초 커밋
기존 프로그램 업로드
2025-04-30 16:36:46 +09:00

203 lines
10 KiB
VB.net

Imports MySql.Data.MySqlClient
Imports Renci.SshNet
Module mySQLModule
'' MySQL 접속 정보
Private Const LocalHostIP As String = "192.168.0.250"
Private Const UserName As String = "root"
Private Const UserPasswrod As String = "JOMT1646db!!"
Private DataBaseName As String = "jomtOrderTestDB"
Private Conn As String = "Server=" + LocalHostIP + ";DataBase=" + DataBaseName + ";user=" + UserName + ";password=" + UserPasswrod + ";"
Private sqlCon As New MySqlConnection(Conn)
Private sqlCmd As New MySqlCommand()
Private sqlData As MySqlDataReader '' SQL Server와 연결을 유지한 상태에서 한번에 한 레코드(One Row)씩 데이타를 가져오는데 사용된다
Public sqlDataQuery() As Object
Public Const SaleDB As String = "jomtTesterDB.jomtSalesPackingTbl"
Public Const NonTDDB As String = "jomtTesterDB.jomtNonTDTbl"
Public Const CartTDDB As String = "jomtTesterDB.jomtCartridgeTbl"
Public Const OrderDB As String = "jomtOrderDB.jomtOrderTbl"
Public Const PlistDB As String = "jomtTesterDB.jomtProdList"
Public Function GetDBConn() As MySqlConnection
Try
If sqlCon.State <> ConnectionState.Open Then
sqlCon.Open()
End If
Return sqlCon
Catch ex As Exception
MsgBox("MySQL Command Error:" + vbCrLf + Err.Description)
Return Nothing
End Try
End Function
Public Function FindSerialsByDate(targetDate As Date) As ValueTuple(Of List(Of String), List(Of String))
Using conn As MySqlConnection = GetDBConn()
Dim getSerialCmd As New MySqlCommand("SELECT Serial_Number FROM jomtOrderDB.jomtOrderTbl
WHERE Invoice_Number IS NOT NULL
AND Serial_Number IS NOT NULL
AND LENGTH(Serial_Number) > 11
AND LEFT(Serial_Number, 1) < '8'
AND Shipment_Date = @date", conn)
getSerialCmd.Parameters.AddWithValue("@date", targetDate)
Dim serials As New List(Of String)
Dim unmatchedSerials As New List(Of String)
Using reader As MySqlDataReader = getSerialCmd.ExecuteReader()
While reader.Read()
Dim raw = reader("Serial_Number").ToString().Trim()
If raw.Contains("/") Then
serials.AddRange(raw.Split("/"c).Select(Function(s) s.Trim()).Where(Function(s) s.Length > 0))
unmatchedSerials.Add(raw.Split("/"c).Select(Function(s) s.Trim()).FirstOrDefault(Function(s) s.Length > 0))
ElseIf raw.Length > 0 Then
serials.Add(raw)
End If
End While
End Using
Return (serials.ToList(), unmatchedSerials.ToList())
End Using
End Function
Public Sub FillFromOrderTblByLike(dtoMap As Dictionary(Of String, GenuineProductDto), likeClauses As List(Of String))
Using conn As MySqlConnection = GetDBConn()
For Each clause In likeClauses
Dim query As String =
"SELECT Serial_Number, Item_Code, Item_Name, Invoice_Number, Packing_Code, DATE_FORMAT(Shipment_Date, '%Y-%m-%d') AS Shipment_Date, " &
"Account_Name, Order_Code, Orderer_Name, Receiver_Name, Phone_Number, Address, Refer " &
"FROM jomtOrderDB.jomtOrderTbl " &
"WHERE " & clause
Using cmd As New MySqlCommand(query, conn)
Using reader = cmd.ExecuteReader()
While reader.Read()
Dim serialRaw = reader("Serial_Number").ToString().Trim()
Dim serials = serialRaw.Split("/"c)
For Each sn In serials
Dim key = sn.Trim()
If dtoMap.ContainsKey(key) Then
Dim dto = dtoMap(key)
dto.ModelCode = reader("Item_Code").ToString()
dto.Model = reader("Item_Name").ToString()
dto.InvoiceNumber = reader("Invoice_Number").ToString()
dto.PackingSn = reader("Packing_Code").ToString()
dto.BuyDate = reader("Shipment_Date").ToString()
dto.SalesStore = reader("Account_Name").ToString()
dto.SalesOrderNo = reader("Order_Code").ToString()
dto.OrderName = reader("Orderer_Name").ToString()
dto.RecipientName = reader("Receiver_Name").ToString()
dto.OrderHp = reader("Phone_Number").ToString()
dto.OrderAddress = reader("Address").ToString()
dto.Note = reader("Refer").ToString()
End If
Next
End While
End Using
End Using
Next
End Using
End Sub
Public Sub FillFromOrderTblByIn(dtoMap As Dictionary(Of String, GenuineProductDto), inClauses As List(Of String))
Dim serials = dtoMap.Keys.ToList()
Dim missingItemCodeSNs As New List(Of String)
Using conn As MySqlConnection = GetDBConn()
For Each clause In inClauses
Dim query As String =
"SELECT Serial_Number, Item_Code, Item_Name, Invoice_Number, Packing_Code, DATE_FORMAT(Shipment_Date, '%Y-%m-%d') AS Shipment_Date, " &
"Account_Name, Order_Code, Orderer_Name, Receiver_Name, Phone_Number, Address, Refer " &
"FROM jomtOrderDB.jomtOrderTbl " &
"WHERE Serial_Number IN " & clause
Using cmd As New MySqlCommand(query, conn)
Using reader = cmd.ExecuteReader()
While reader.Read()
Dim sn = reader("Serial_Number").ToString().Trim()
If dtoMap.ContainsKey(sn) Then
Dim dto = dtoMap(sn)
dto.ModelCode = reader("Item_Code").ToString()
dto.Model = reader("Item_Name").ToString()
dto.InvoiceNumber = reader("Invoice_Number").ToString()
dto.PackingSn = reader("Packing_Code").ToString()
dto.BuyDate = reader("Shipment_Date").ToString()
dto.SalesStore = reader("Account_Name").ToString()
dto.SalesOrderNo = reader("Order_Code").ToString()
dto.OrderName = reader("Orderer_Name").ToString()
dto.RecipientName = reader("Receiver_Name").ToString()
dto.OrderHp = reader("Phone_Number").ToString()
dto.OrderAddress = reader("Address").ToString()
dto.Note = reader("Refer").ToString()
End If
End While
End Using
End Using
Next
End Using
End Sub
Public Sub FillFromProductTbl(dtoMap As Dictionary(Of String, GenuineProductDto), inClauses As List(Of String))
Dim serials = dtoMap.Keys.ToList()
Using conn As MySqlConnection = GetDBConn()
For Each clause In inClauses
Dim query As String =
"SELECT Product_SN, FaceCart_SN, EyeCart_SN " &
"FROM jomtTesterDB.jomtProductTbl " &
"WHERE Product_SN IN " & clause
Using cmd As New MySqlCommand(query, conn)
Using reader = cmd.ExecuteReader()
While reader.Read()
Dim sn = reader("Product_SN").ToString()
If dtoMap.ContainsKey(sn) Then
dtoMap(sn).FaceSn = reader("FaceCart_SN").ToString()
dtoMap(sn).EyeSn = reader("EyeCart_SN").ToString()
End If
End While
End Using
End Using
Next
End Using
End Sub
Public Sub FillFromProdData(dtoMap As Dictionary(Of String, GenuineProductDto), inClauses As List(Of String))
Dim serials = dtoMap.Keys.ToList()
Using conn As MySqlConnection = GetDBConn()
For Each clause In inClauses
Dim query As String =
"SELECT Product_SN, Ct_Abroad AS Country, DATE_FORMAT(P3_DateTime, '%Y-%m-%d') AS MfgDate " &
"FROM jomtTesterDB.jomtCartridgeTbl WHERE Product_SN IN " & clause &
"UNION ALL " &
"SELECT Product_SN, Abroad AS Country, DATE_FORMAT(DateTime, '%Y-%m-%d') AS MfgDate " &
"FROM jomtTesterDB.jomtDeviceTbl WHERE Product_SN IN " & clause &
"UNION ALL " &
"SELECT Product_SN, Ct_Abroad AS Country, DATE_FORMAT(P3_DateTime, '%Y-%m-%d') AS MfgDate " &
"FROM jomtTesterDB.jomtNonTDTbl WHERE Product_SN IN " & clause
Using cmd As New MySqlCommand(query, conn)
Using reader = cmd.ExecuteReader()
While reader.Read()
Dim sn = reader("Product_SN").ToString()
If dtoMap.ContainsKey(sn) AndAlso String.IsNullOrEmpty(dtoMap(sn).CountryCode) Then
dtoMap(sn).CountryCode = reader("Country").ToString()
dtoMap(sn).ManufactureDate = reader("MfgDate").ToString()
End If
End While
End Using
End Using
Next
End Using
End Sub
End Module