2024y .
This commit is contained in:
@@ -1,4 +1,7 @@
|
||||
Public Class Frm_Calc
|
||||
|
||||
Dim importok As Boolean = False
|
||||
|
||||
Public Type As Calculator.ECalc
|
||||
Public Overrides Function AcceptChanged() As Boolean
|
||||
|
||||
@@ -16,6 +19,7 @@
|
||||
End Sub
|
||||
|
||||
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
|
||||
Pub.Importsameaddress = False
|
||||
Type = Calculator.ECalc.REq
|
||||
Me.DialogResult = Windows.Forms.DialogResult.OK
|
||||
End Sub
|
||||
@@ -26,6 +30,10 @@
|
||||
End Sub
|
||||
|
||||
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
|
||||
If importok = False AndAlso btImport.Enabled = True Then
|
||||
MsgboxE("외부 신재생 생산량을 지정해주세요.")
|
||||
Return
|
||||
End If
|
||||
Type = Calculator.ECalc.All
|
||||
Me.DialogResult = Windows.Forms.DialogResult.OK
|
||||
End Sub
|
||||
@@ -46,15 +54,324 @@
|
||||
End Sub
|
||||
|
||||
Private Sub Frm_Calc_Load(sender As Object, e As System.EventArgs) Handles Me.Load
|
||||
Pub.Importsameaddress = False
|
||||
Select Case Prj.UserAuthType
|
||||
Case "ADMIN", "BOTH1" '//제한된 사용자만 가능
|
||||
bt_설계개선안.Visible = True
|
||||
Case Else
|
||||
bt_설계개선안.Visible = False
|
||||
End Select
|
||||
|
||||
'//import check
|
||||
Dim bfind As Boolean = DSET1.tbl_new.Select("기기종류='외부신재생'").Length > 0
|
||||
btImport.Enabled = bfind
|
||||
importok = False
|
||||
End Sub
|
||||
|
||||
Private Sub bt_cancel_Click(sender As System.Object, e As System.EventArgs) Handles bt_cancel.Click
|
||||
Me.DialogResult = Windows.Forms.DialogResult.Cancel
|
||||
End Sub
|
||||
|
||||
Private Sub btImport_Click(sender As System.Object, e As System.EventArgs) Handles btImport.Click
|
||||
'//import data
|
||||
Dim Od As New OpenFileDialog
|
||||
'Od.InitialDirectory = TemplateDir.FullName
|
||||
Od.FileName = Prj.FileName
|
||||
If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 추가
|
||||
Od.Filter = "템플릿파일(*.TPL,*.TPLX)|*.tpl;*.tplx|모든파일(*.*)|*.*"
|
||||
Else
|
||||
Od.Filter = "데이터파일(*.ECO,*.ECOX)|*.eco;*.ecox|모든파일(*.*)|*.*"
|
||||
End If
|
||||
Od.FilterIndex = 0
|
||||
If Od.ShowDialog <> Windows.Forms.DialogResult.OK Then Return
|
||||
Open_File(Od.FileName)
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Public Function Open_File(ByVal FileName As String, Optional ByVal SyncServer As Boolean = False, Optional checkVersion As Boolean = True, Optional silent As Boolean = False, Optional isNew As Boolean = False) As Boolean
|
||||
|
||||
If SyncServer Then
|
||||
If Prj.UserId.ToLower().StartsWith("user") Then
|
||||
SyncServer = False
|
||||
End If
|
||||
End If
|
||||
|
||||
pLog.Add("=======================================")
|
||||
pLog.Add(String.Format("Open File = {0}", FileName))
|
||||
pLog.Add("=======================================", True)
|
||||
|
||||
Dim PrjIsError As Boolean = False '//160509
|
||||
|
||||
'//파일을 열어서 템플릿이름을 가져온다
|
||||
Dim FI As New System.IO.FileInfo(FileName)
|
||||
Dim Desbuf() As Byte = {}
|
||||
Dim FS As System.IO.Stream
|
||||
'///////////////////////////////////////////////////////////////////////////////////////////////////2011.03.16 입력파일 변조
|
||||
If Not (Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1") Then '//2011.03.16 추가 //eco 파일 불러올때 ADMIN 제거 'Prj.UserAuthType = "ADMIN" OrElse
|
||||
Dim Source() As Byte = My.Computer.FileSystem.ReadAllBytes(FI.FullName)
|
||||
|
||||
If Source.Length < 4 Then
|
||||
Prj.IsError = True
|
||||
MsgboxE("알수없거나 손상된 파일입니다" + vbCrLf + FI.FullName, True)
|
||||
Return False
|
||||
End If
|
||||
pLog.Add("암호화 해제")
|
||||
Desbuf = DeCryptArea(Source, New Byte() {&HAC, &H29, &H55, &H42})
|
||||
|
||||
Else
|
||||
'tpl file
|
||||
Desbuf = System.IO.File.ReadAllBytes(FileName)
|
||||
' FS = New IO.FileStream(FileName, IO.FileMode.Open)
|
||||
End If
|
||||
|
||||
If FI.Extension.ToLower().EndsWith("x") Then '//확장자가 x로끝나면 압축된 포맷
|
||||
Dim datalen As Integer = BitConverter.ToInt32(Desbuf, 0)
|
||||
Dim RealData(Desbuf.Length - 4 - 1) As Byte
|
||||
Array.Copy(Desbuf, 4, RealData, 0, RealData.Length)
|
||||
Dim DeCompress(datalen - 1) As Byte
|
||||
Array.Clear(DeCompress, 0, DeCompress.Length)
|
||||
Utility.MiniLZO.Decompress(RealData, DeCompress)
|
||||
Array.Resize(Desbuf, DeCompress.Length)
|
||||
Array.Clear(Desbuf, 0, Desbuf.Length)
|
||||
Array.Copy(DeCompress, Desbuf, Desbuf.Length)
|
||||
End If
|
||||
|
||||
|
||||
|
||||
FS = New IO.MemoryStream(Desbuf, True)
|
||||
|
||||
'///////////////////////////////////////////////////////////////////////////////////////////////////2011.03.16 입력파일 변조
|
||||
|
||||
|
||||
|
||||
Dim Br As New IO.BinaryReader(FS, System.Text.Encoding.Default)
|
||||
Dim PrjFileName As String = FileName : Myini.Write("presetting", "filename", Prj.FileName)
|
||||
Dim PrjOpened As Boolean = False
|
||||
|
||||
|
||||
'//세이브파일구조(2)
|
||||
Dim PrjSFType As String = STB(Br.ReadBytes(2))
|
||||
pLog.Add("File Type = " + Prj.SFType)
|
||||
|
||||
Dim DSImport As New DS()
|
||||
|
||||
Dim PrjUIVersion As String
|
||||
Dim PrjLGVersino As String
|
||||
Dim Prjname As String
|
||||
Dim prjdesc As String
|
||||
Dim prjmaketime As String
|
||||
Dim prjedittime As String
|
||||
Dim PrjPassword As String
|
||||
|
||||
If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 추가 //eco 파일 불러올때 ADMIN 제거 'Prj.UserAuthType = "ADMIN" OrElse
|
||||
|
||||
Select Case Prj.SFType
|
||||
Case "00" '//기본버젼
|
||||
PrjUIVersion = STB(Br.ReadBytes(10))
|
||||
PrjLGVersino = STB(Br.ReadBytes(10))
|
||||
Select Case PrjLGVersino
|
||||
Case "2009123100", "2010030700", "2010031400"
|
||||
PrjLGVersino = StartVersion
|
||||
End Select
|
||||
Select Case PrjUIVersion
|
||||
Case "2009123100", "2010030700", "2010031400"
|
||||
PrjUIVersion = StartVersion
|
||||
PrjUIVersion = StartVersion
|
||||
End Select
|
||||
|
||||
Prjname = STB(Br.ReadBytes(100))
|
||||
prjdesc = STB(Br.ReadBytes(256))
|
||||
prjmaketime = STB(Br.ReadBytes(19))
|
||||
prjedittime = STB(Br.ReadBytes(19))
|
||||
' MsgBox(Br.BaseStream.Position)
|
||||
|
||||
|
||||
Dim DS1Len As Int64 = Br.ReadInt64
|
||||
If DS1Len = 0 Then
|
||||
DS1Len = FS.Length - Br.BaseStream.Position - 2
|
||||
End If
|
||||
'MsgBox("pos=" & Br.BaseStream.Position & vbCrLf & DS1Len, MsgBoxStyle.Information, Hex(DS1Len))
|
||||
Dim DS1() As Byte = Nothing
|
||||
Try
|
||||
DS1 = Br.ReadBytes(CInt(DS1Len))
|
||||
Catch ex As Exception
|
||||
Prj.IsError = True
|
||||
MsgBox("파일이 손상되었습니다(Read Data Array)." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1 byteRead Error")
|
||||
End Try
|
||||
|
||||
'MsgBox("pos=" & Br.BaseStream.Position & vbCrLf & DS1.Length, MsgBoxStyle.Information, DS1Len)
|
||||
If Not PrjIsError Then
|
||||
Dim Ms As New IO.MemoryStream(DS1)
|
||||
Try
|
||||
Ms.Position = 0
|
||||
|
||||
Dim tempds As New DS()
|
||||
tempds.ReadXml(Ms)
|
||||
|
||||
DSImport.Clear()
|
||||
DSImport.Merge(tempds) ' DSET1.ReadXml(Ms)
|
||||
DSImport.AcceptChanges()
|
||||
Ms.Close()
|
||||
|
||||
tempds.Dispose()
|
||||
Catch ex As Exception
|
||||
Prj.IsError = True
|
||||
MsgBox("파일이 손상되었습니다(Read DataSet)" & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "DSImport Open Error")
|
||||
End Try
|
||||
|
||||
End If
|
||||
|
||||
Case "01" '//기본버젼(+암호
|
||||
PrjUIVersion = STB(Br.ReadBytes(10))
|
||||
PrjLGVersino = STB(Br.ReadBytes(10))
|
||||
Select Case PrjLGVersino
|
||||
Case "2009123100", "2010030700", "2010031400"
|
||||
PrjLGVersino = StartVersion
|
||||
End Select
|
||||
Select Case PrjUIVersion
|
||||
Case "2009123100", "2010030700", "2010031400"
|
||||
PrjUIVersion = StartVersion
|
||||
End Select
|
||||
Prjname = STB(Br.ReadBytes(100))
|
||||
prjdesc = STB(Br.ReadBytes(256))
|
||||
prjmaketime = STB(Br.ReadBytes(19))
|
||||
prjedittime = STB(Br.ReadBytes(19))
|
||||
PrjPassword = STB(Br.ReadBytes(8)) '//암호에 8바이트할당한다. 즉 8개의문자가가능 한글은 불가로한다
|
||||
' MsgBox(Br.BaseStream.Position)
|
||||
|
||||
'//DS1 데이터초기화 및 오픈
|
||||
DSImport.Clear() : DSImport.AcceptChanges()
|
||||
Dim DS1Len As Int64 = Br.ReadInt64
|
||||
'MsgBox("pos=" & Br.BaseStream.Position & vbCrLf & DS1Len, MsgBoxStyle.Information, Hex(DS1Len))
|
||||
Dim DS1() As Byte = Br.ReadBytes(CInt(DS1Len))
|
||||
'MsgBox("pos=" & Br.BaseStream.Position & vbCrLf & DS1.Length, MsgBoxStyle.Information, DS1Len)
|
||||
Dim Ms As New IO.MemoryStream(DS1)
|
||||
Try
|
||||
|
||||
Dim tempds As New DS()
|
||||
tempds.ReadXml(Ms)
|
||||
|
||||
DSImport.Clear()
|
||||
DSImport.Merge(tempds) ' DSET1.ReadXml(Ms)
|
||||
DSImport.AcceptChanges()
|
||||
Ms.Close()
|
||||
|
||||
tempds.Dispose()
|
||||
Catch ex As Exception
|
||||
MsgBox("파일이 손상되었습니다." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1 Open Error")
|
||||
End Try
|
||||
|
||||
|
||||
PrjIsError = False
|
||||
Case Else
|
||||
MsgBox("파일을 불러올 수 없습니다1", MsgBoxStyle.Critical, "불러오기실패")
|
||||
PrjIsError = True
|
||||
End Select
|
||||
|
||||
|
||||
Else
|
||||
Select Case Prj.SFType
|
||||
Case "10" '//일반공개버전
|
||||
|
||||
|
||||
SyncServer = True ' 2011.06.15 추가 공개버전은 자동적으로 공용코드와 기상코드를 동기화
|
||||
PrjUIVersion = STB(Br.ReadBytes(10))
|
||||
PrjLGVersino = STB(Br.ReadBytes(10))
|
||||
Select Case PrjLGVersino
|
||||
Case "2009123100", "2010030700", "2010031400"
|
||||
PrjLGVersino = StartVersion
|
||||
End Select
|
||||
Select Case PrjUIVersion
|
||||
Case "2009123100", "2010030700", "2010031400"
|
||||
PrjUIVersion = StartVersion
|
||||
PrjUIVersion = StartVersion
|
||||
End Select
|
||||
|
||||
Prjname = STB(Br.ReadBytes(100))
|
||||
prjdesc = STB(Br.ReadBytes(256))
|
||||
prjmaketime = STB(Br.ReadBytes(19))
|
||||
prjedittime = STB(Br.ReadBytes(19))
|
||||
' MsgBox(Br.BaseStream.Position)
|
||||
|
||||
'//DS1 데이터초기화 및 오픈
|
||||
DSImport.Clear() : DSImport.AcceptChanges()
|
||||
Dim DS1Len As Int64 = Br.ReadInt64
|
||||
'MsgBox("pos=" & Br.BaseStream.Position & vbCrLf & DS1Len, MsgBoxStyle.Information, Hex(DS1Len))
|
||||
Dim DS1() As Byte = Br.ReadBytes(CInt(DS1Len))
|
||||
'MsgBox("pos=" & Br.BaseStream.Position & vbCrLf & DS1.Length, MsgBoxStyle.Information, DS1Len)
|
||||
Dim Ms As New IO.MemoryStream(DS1)
|
||||
Try
|
||||
Dim tempds As New DS()
|
||||
tempds.ReadXml(Ms)
|
||||
|
||||
DSImport.Clear()
|
||||
DSImport.Merge(tempds) ' DSET1.ReadXml(Ms)
|
||||
DSImport.AcceptChanges()
|
||||
Ms.Close()
|
||||
|
||||
tempds.Dispose()
|
||||
|
||||
Catch ex As Exception
|
||||
MsgBox("파일이 손상되었습니다." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1 Open Error")
|
||||
End Try
|
||||
|
||||
PrjIsError = False
|
||||
Case Else
|
||||
MsgBox("파일을 불러올 수 없습니다2", MsgBoxStyle.Critical, "불러오기실패")
|
||||
PrjIsError = True
|
||||
End Select
|
||||
End If
|
||||
|
||||
Br.Close()
|
||||
FS.Close()
|
||||
|
||||
pLog.Add(String.Format("Project Name={0},Desc={1},Version={2}", Prj.Name, Prj.Desc, Prj.UIVersion))
|
||||
|
||||
If Not Prj.IsError Then
|
||||
PrjOpened = True
|
||||
|
||||
DSET1.tbl_importdata.Clear()
|
||||
|
||||
If DSImport.tbl_Desc.Rows.Count < 1 Then
|
||||
MsgBox("해당 파일에 건물개요가 없습니다", MsgBoxStyle.Critical, "불러오기실패")
|
||||
Return False
|
||||
End If
|
||||
|
||||
If DSET1.tbl_Desc.Rows.Count < 1 Then
|
||||
MsgBox("현재 파일에 건물개요가 없습니다", MsgBoxStyle.Critical, "불러오기실패")
|
||||
Return False
|
||||
End If
|
||||
|
||||
Dim drdesc As DS.tbl_DescRow = DSImport.tbl_Desc.Rows(0)
|
||||
Dim drdesc_current As DS.tbl_DescRow = DSET1.tbl_Desc.Rows(0)
|
||||
Pub.Importsameaddress = drdesc.buildaddr.Trim() = drdesc_current.buildaddr.Trim()
|
||||
|
||||
For Each dr As DS.tbl_exportdataRow In DSImport.tbl_exportdata
|
||||
Dim newdr As DS.tbl_importdataRow = DSET1.tbl_importdata.Newtbl_importdataRow()
|
||||
newdr.mon = dr.mon
|
||||
newdr.외부전기도입량 = dr.외부전기생산량
|
||||
DSET1.tbl_importdata.Addtbl_importdataRow(newdr)
|
||||
Next
|
||||
|
||||
|
||||
DSET1.tbl_importdata.AcceptChanges()
|
||||
|
||||
If DSET1.tbl_importdata.Rows.Count < 1 Then
|
||||
MsgBox("해당 파일에 외부출력 신재생이 없습니다.", MsgBoxStyle.Critical, "불러오기실패")
|
||||
Return False
|
||||
End If
|
||||
|
||||
importok = True
|
||||
Return True
|
||||
|
||||
Else
|
||||
pLog.Add("Open File Error", True)
|
||||
Return False
|
||||
End If
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
End Class
|
||||
Reference in New Issue
Block a user