Files
ECO2/ArinWarev1/DataSet/Calculator/Result/C사용면적.vb

412 lines
18 KiB
VB.net

''' <summary>
''' 전체존의 사용면적을 계산및 확인(냉,난,조,급,환)
''' </summary>
''' <remarks>전체존의 사용면적을 계산및 확인(냉,난,조,급,환)</remarks>
Public Class C사용면적
''' <summary>
''' 난방
''' </summary>
''' <remarks>난방</remarks>
Property H() As Decimal
Get
If DSETR.사용면적.Rows.Count = 0 Then
LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Return 0
Else
Return TOSG(DSETR.사용면적(0)("H"))
End If
End Get
Set(ByVal value As Decimal)
If DSETR.사용면적.Rows.Count = 0 Then
LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Else
DSETR.사용면적(0)("H") = value
End If
End Set
End Property
''' <summary>
''' 냉방
''' </summary>
''' <remarks>냉방</remarks>
Property C() As Decimal
Get
If DSETR.사용면적.Rows.Count = 0 Then
LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Return 0
Else
Return TOSG(DSETR.사용면적(0)("C"))
End If
End Get
Set(ByVal value As Decimal)
If DSETR.사용면적.Rows.Count = 0 Then
LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Else
DSETR.사용면적(0)("C") = value
End If
End Set
End Property
''' <summary>
''' 조명
''' </summary>
''' <remarks>조명</remarks>
Property L() As Decimal
Get
If DSETR.사용면적.Rows.Count = 0 Then
LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Return 0
Else
Return TOSG(DSETR.사용면적(0)("L"))
End If
End Get
Set(ByVal value As Decimal)
If DSETR.사용면적.Rows.Count = 0 Then
LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Else
DSETR.사용면적(0)("L") = value
End If
End Set
End Property
''' <summary>
''' 급탕
''' </summary>
''' <remarks>급탕</remarks>
Property W() As Decimal
Get
If DSETR.사용면적.Rows.Count = 0 Then
LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Return 0
Else
Return TOSG(DSETR.사용면적(0)("W"))
End If
End Get
Set(ByVal value As Decimal)
If DSETR.사용면적.Rows.Count = 0 Then
LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Else
DSETR.사용면적(0)("W") = value
End If
End Set
End Property
''' <summary>
''' 환기
''' </summary>
''' <remarks>환기</remarks>
Property V() As Decimal
Get
If DSETR.사용면적.Rows.Count = 0 Then
LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Return 0
Else
Return TOSG(DSETR.사용면적(0)("V"))
End If
End Get
Set(ByVal value As Decimal)
If DSETR.사용면적.Rows.Count = 0 Then
LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Else
DSETR.사용면적(0)("V") = value
End If
End Set
End Property
''' <summary>
''' 난방_WF
''' </summary>
''' <remarks>난방</remarks>
Property H_WF() As Decimal
Get
If DSETR.사용면적.Rows.Count = 0 Then
LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Return 0
Else
Return TOSG(DSETR.사용면적(0)("H_WF"))
End If
End Get
Set(ByVal value As Decimal)
If DSETR.사용면적.Rows.Count = 0 Then
LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Else
DSETR.사용면적(0)("H_WF") = value
End If
End Set
End Property
''' <summary>
''' 냉방_WF
''' </summary>
''' <remarks>냉방</remarks>
Property C_WF() As Decimal
Get
If DSETR.사용면적.Rows.Count = 0 Then
LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Return 0
Else
Return TOSG(DSETR.사용면적(0)("C_WF"))
End If
End Get
Set(ByVal value As Decimal)
If DSETR.사용면적.Rows.Count = 0 Then
LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Else
DSETR.사용면적(0)("C_WF") = value
End If
End Set
End Property
''' <summary>
''' 조명_WF
''' </summary>
''' <remarks>조명</remarks>
Property L_WF() As Decimal
Get
If DSETR.사용면적.Rows.Count = 0 Then
LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Return 0
Else
Return TOSG(DSETR.사용면적(0)("L_WF"))
End If
End Get
Set(ByVal value As Decimal)
If DSETR.사용면적.Rows.Count = 0 Then
LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Else
DSETR.사용면적(0)("L_WF") = value
End If
End Set
End Property
''' <summary>
''' 급탕_WF
''' </summary>
''' <remarks>급탕</remarks>
Property W_WF() As Decimal
Get
If DSETR.사용면적.Rows.Count = 0 Then
LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Return 0
Else
Return TOSG(DSETR.사용면적(0)("W_WF"))
End If
End Get
Set(ByVal value As Decimal)
If DSETR.사용면적.Rows.Count = 0 Then
LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Else
DSETR.사용면적(0)("W_WF") = value
End If
End Set
End Property
''' <summary>
''' 환기_WF
''' </summary>
''' <remarks>환기</remarks>
Property V_WF() As Decimal
Get
If DSETR.사용면적.Rows.Count = 0 Then
LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Return 0
Else
Return TOSG(DSETR.사용면적(0)("V_WF"))
End If
End Get
Set(ByVal value As Decimal)
If DSETR.사용면적.Rows.Count = 0 Then
LogSB.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
Else
DSETR.사용면적(0)("V_WF") = value
End If
End Set
End Property
Public Overridable Sub Calc()
pLog.Add(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
pLog.Add(">> C사용면적.Calc")
pLog.Add(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
Dim A_H As Decimal = 0
Dim A_C As Decimal = 0
Dim A_L As Decimal = 0
Dim A_W As Decimal = 0
Dim A_V As Decimal = 0
'//용도별 면적가중치(wf) 추가 '2012.07.01
Dim A_H_wf As Decimal = 0
Dim A_C_wf As Decimal = 0
Dim A_L_wf As Decimal = 0
Dim A_W_wf As Decimal = 0
Dim A_V_wf As Decimal = 0
Dim day_year As Decimal
'//'2012.07.01
If DSETR.사용면적.Rows.Count = 0 Then '//데결과가 없으면 신규줄을 기록한다.
Dim Dr As DSR.사용면적Row = DSETR.사용면적.New사용면적Row
Dr.H = 0 : Dr.C = 0 : Dr.L = 0 : Dr.W = 0 : Dr.V = 0
DSETR.사용면적.Add사용면적Row(Dr)
DSETR.AcceptChanges()
End If
'//건물용도
Dim 건물용도 As Integer = CInt(DSET.tbl_Desc.Rows(0)("isjugo"))
'//A_H,C,W,L,V 의 누적값을 계산(사용면적) '//모든존을 대상으로
For Each Dr존 As DS.tbl_zoneRow In DSET.tbl_zone.Select("code<>'0'", "code")
Dim Dr프로필 As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & Dr존.프로필 & "'")(0), DS.tbl_profileRow)
Dim offset As Integer = 1
If Dr프로필.code = "0016" Then
If Dr존.조명부하산출방법 = "입력치" Then
If Dr존.조명에너지부하율입력치 > 10 Then
offset = ((Dr존.조명에너지부하율입력치 - 10) * 0.4 + 10) / Dr존.조명에너지부하율입력치
End If
ElseIf Dr존.조명부하산출방법 = "계산치" Then
If Dr존.조명에너지부하율계산치 > 10 Then
offset = ((Dr존.조명에너지부하율계산치 - 10) * 0.4 + 10) / Dr존.조명에너지부하율계산치
End If
End If
End If
pLog.Add(String.Format(">> Zone({0})Row Offset={1}", Dr존.code, offset))
'//냉난방(HC) 이거나 난방(H)일경우 난방면적 누적
If Dr존.냉난방방식.IndexOf("") <> -1 OrElse Dr존.냉난방공조.IndexOf("") <> -1 Then
A_H += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수)
If 건물용도 < 10 Then '//주거일경우에
'//연
A_H_wf = A_H
Else
day_year = TOSG(Dr프로필.day01) + TOSG(Dr프로필.day02) + TOSG(Dr프로필.day03) + TOSG(Dr프로필.day04) + TOSG(Dr프로필.day05) + TOSG(Dr프로필.day06) + TOSG(Dr프로필.day07) + TOSG(Dr프로필.day08) + TOSG(Dr프로필.day09) + TOSG(Dr프로필.day10) + TOSG(Dr프로필.day11) + TOSG(Dr프로필.day12)
'A_H_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * (TOSG(Dr프로필.일일운전시간) * Math.Round(day_year / (11 * 250), 3))
A_H_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * Math.Round(TOSG(Dr프로필.일일운전시간) * (day_year / (11 * 250)), 3)
'If Dr프로필.code <> "0010" Then
' A_H_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * Math.Round(TOSG(Dr프로필.일일운전시간) * (day_year / (11 * 250)), 3)
'Else
' A_H_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * Math.Round(TOSG(Dr프로필.일일운전시간) * (day_year / (11 * 250)) / (0.503 / 0.314), 3) '//전산실 용도에 따른 난방 가중치 적용
'End If
End If
pLog.Add(String.Format(">> Zone({0})Row A_H_wf={1}", Dr존.code, A_H_wf))
End If
'//냉난방(hC) 이거나 냉방(C)일경우 냉방면적 누적
If Dr존.냉난방방식.IndexOf("") <> -1 OrElse Dr존.냉난방공조.IndexOf("") <> -1 Then
A_C += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수)
If 건물용도 < 10 Then
A_C_wf = A_C
Else
day_year = TOSG(Dr프로필.day01) + TOSG(Dr프로필.day02) + TOSG(Dr프로필.day03) + TOSG(Dr프로필.day04) + TOSG(Dr프로필.day05) + TOSG(Dr프로필.day06) + TOSG(Dr프로필.day07) + TOSG(Dr프로필.day08) + TOSG(Dr프로필.day09) + TOSG(Dr프로필.day10) + TOSG(Dr프로필.day11) + TOSG(Dr프로필.day12)
'A_C_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * (TOSG(Dr프로필.일일운전시간) * Math.Round(day_year / (11 * 250), 3))
A_C_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * Math.Round(TOSG(Dr프로필.일일운전시간) * (day_year / (11 * 250)), 3)
'If Dr프로필.code <> "0010" Then
' A_C_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * Math.Round(TOSG(Dr프로필.일일운전시간) * (day_year / (11 * 250)), 3)
'Else
' A_C_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * Math.Round(TOSG(Dr프로필.일일운전시간) * (day_year / (11 * 250)) / (0.196 / 0.314), 3) '//전산실 용도에 따른 냉방 가중치 적용
'End If
End If
pLog.Add(String.Format(">> Zone({0})Row A_C={1},A_C_wf={2}", Dr존.code, A_C, A_C_wf))
End If
'//급탕요구량이 있다면 급탕면적 누적
If TOSG(Dr프로필.일일급탕요구량) > 0 Then
A_W += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수)
If 건물용도 < 10 Then
A_W_wf = A_W
Else
day_year = TOSG(Dr프로필.day01) + TOSG(Dr프로필.day02) + TOSG(Dr프로필.day03) + TOSG(Dr프로필.day04) + TOSG(Dr프로필.day05) + TOSG(Dr프로필.day06) + TOSG(Dr프로필.day07) + TOSG(Dr프로필.day08) + TOSG(Dr프로필.day09) + TOSG(Dr프로필.day10) + TOSG(Dr프로필.day11) + TOSG(Dr프로필.day12)
'A_W_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * (TOSG(Dr프로필.일일급탕요구량) * Math.Round(day_year / (30 * 250), 3)) 160211 소수점오류인한 수정
A_W_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * Math.Round(TOSG(Dr프로필.일일급탕요구량) * (day_year / (30 * 250)), 3)
End If
pLog.Add(String.Format(">> Zone({0})Row A_W={1},A_W_wf={2}", Dr존.code, A_W, A_W_wf))
End If
'//조명의 에너지부하율값이 있으면 조명면적 누적
If Dr존.조명에너지부하율계산치 <> "0" OrElse Dr존.조명에너지부하율입력치 <> "0" Then
A_L += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수)
If 건물용도 < 10 Then
'//가스를쓰는 난방 급탕은 계가 발생
A_L_wf = A_L
Else
day_year = TOSG(Dr프로필.day01) + TOSG(Dr프로필.day02) + TOSG(Dr프로필.day03) + TOSG(Dr프로필.day04) + TOSG(Dr프로필.day05) + TOSG(Dr프로필.day06) + TOSG(Dr프로필.day07) + TOSG(Dr프로필.day08) + TOSG(Dr프로필.day09) + TOSG(Dr프로필.day10) + TOSG(Dr프로필.day11) + TOSG(Dr프로필.day12)
'A_L_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * (TOSG(Dr프로필.일일사용시간) * Math.Round(day_year / (9 * 250), 3) * offset)
A_L_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * Math.Round(TOSG(Dr프로필.일일사용시간) * (day_year / (9 * 250)), 3) * offset
End If
pLog.Add(String.Format(">> Zone({0})Row A_L={1},A_L_wf={2}", Dr존.code, A_L, A_L_wf))
End If
'//냉난방공조를 사용하고있다면 환기면적 누적(ZZ:기능없음)
If (Dr존.냉난방공조 <> "기능없음") Then
A_V += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수)
If 건물용도 < 10 Then
A_V_wf = A_V
Else
day_year = TOSG(Dr프로필.day01) + TOSG(Dr프로필.day02) + TOSG(Dr프로필.day03) + TOSG(Dr프로필.day04) + TOSG(Dr프로필.day05) + TOSG(Dr프로필.day06) + TOSG(Dr프로필.day07) + TOSG(Dr프로필.day08) + TOSG(Dr프로필.day09) + TOSG(Dr프로필.day10) + TOSG(Dr프로필.day11) + TOSG(Dr프로필.day12)
'A_V_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * (TOSG(Dr프로필.일일운전시간) * Math.Round(day_year / (11 * 250), 3))
A_V_wf += TOSG(Dr존.면적) * TOSG(Dr존.입력존의수) * Math.Round(TOSG(Dr프로필.일일운전시간) * (day_year / (11 * 250)), 3)
End If
pLog.Add(String.Format(">> Zone({0})Row A_V={1},A_V_wf={2}", Dr존.code, A_V, A_V_wf))
End If
Next
'//저장소에 보관한다.
'//가중치 없는 사용면적
Result.사용면적.H = A_H
Result.사용면적.C = A_C
Result.사용면적.L = A_L
Result.사용면적.W = A_W
Result.사용면적.V = A_V
pLog.Add("C사용면적.CALC 결과 : 가중치없음")
pLog.Add(String.Format("H={0},C={1},L={2},W={3},V={4}", A_H, A_C, A_L, A_W, A_V))
'// 가중치 있는 사용면적 '2013.07.01
Result.사용면적.H_WF = A_H_wf
Result.사용면적.C_WF = A_C_wf
Result.사용면적.L_WF = A_L_wf
Result.사용면적.W_WF = A_W_wf
Result.사용면적.V_WF = A_V_wf
pLog.Add("C사용면적.CALC 결과 : 가중치적용")
pLog.Add(String.Format("H_wf={0},C_wf={1},L_wf={2},W_wf={3},V_wf={4}", A_H_wf, A_C_wf, A_L_wf, A_W_wf, A_V_wf))
End Sub
Private DSETR As DSR
Private Result As CResult
Private DSET As DS
Public Sub New(ByRef pds As DS, ByRef pdsetr As DSR, ByRef presult As CResult)
If Not pLog Is Nothing Then
pLog.Add("New C사용면적", True)
End If
DSET = pds
DSETR = pdsetr
Result = presult
End Sub
End Class