[计算相关]计算所有表计的总电量(完成)
This commit is contained in:
parent
f688f50ecb
commit
8fc463bd9d
|
@ -1 +1,39 @@
|
|||
package calculate
|
||||
|
||||
import (
|
||||
"electricity_bill_calc/model/calculate"
|
||||
"github.com/shopspring/decimal"
|
||||
)
|
||||
|
||||
// 计算已经启用的商铺面积和
|
||||
func TotalConsumptionCalculate(tenements []calculate.PrimaryTenementStatistics,
|
||||
summary calculate.Summary) decimal.Decimal {
|
||||
var areaMaters []calculate.Meter
|
||||
for _, t := range tenements {
|
||||
areaMaters = append(areaMaters, t.Meters...)
|
||||
}
|
||||
|
||||
areaMaters = removeDuplicates(areaMaters)
|
||||
|
||||
var areaTotal float64
|
||||
for _, m := range areaMaters {
|
||||
areaTotal += m.Detail.Area.Decimal.InexactFloat64()
|
||||
}
|
||||
|
||||
areaTotal += summary.OverallArea.InexactFloat64()
|
||||
|
||||
return decimal.NewFromFloat(areaTotal)
|
||||
|
||||
}
|
||||
|
||||
func removeDuplicates(meters []calculate.Meter) []calculate.Meter {
|
||||
result := make([]calculate.Meter, 0, len(meters))
|
||||
seen := make(map[string]bool)
|
||||
for _, meter := range meters {
|
||||
if !seen[meter.Code] {
|
||||
seen[meter.Code] = true
|
||||
result = append(result, meter)
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ import (
|
|||
// 核算园区中的全部商户表计电量用电
|
||||
func TenementMetersCalculate(report *model.ReportIndex, PeriodStart time.Time,
|
||||
PeriodEnd time.Time, meterDetails []*model.MeterDetail,
|
||||
summary calculate.Summary) ([]model.TenementMeter, error) {
|
||||
summary calculate.Summary) ([]calculate.PrimaryTenementStatistics, error) {
|
||||
tenements, err := repository.CalculateRepository.GetAllTenements(report.Id)
|
||||
if err != nil {
|
||||
fmt.Println("tenement 0", err)
|
||||
|
@ -40,7 +40,7 @@ func TenementMetersCalculate(report *model.ReportIndex, PeriodStart time.Time,
|
|||
return nil, err
|
||||
}
|
||||
|
||||
var tenementReports []model.Tenement
|
||||
var tenementReports []calculate.PrimaryTenementStatistics
|
||||
|
||||
for _, tenement := range tenements {
|
||||
var meters []model.TenementMeter
|
||||
|
@ -65,30 +65,10 @@ func TenementMetersCalculate(report *model.ReportIndex, PeriodStart time.Time,
|
|||
return nil, err
|
||||
}
|
||||
|
||||
report := model.Tenement{
|
||||
Id: pt.Tenement.Id,
|
||||
Park: pt.Tenement.Park,
|
||||
FullName: pt.Tenement.FullName,
|
||||
ShortName: pt.Tenement.ShortName,
|
||||
Abbr: pt.Tenement.Abbr,
|
||||
Address: pt.Tenement.Address,
|
||||
ContactName: pt.Tenement.ContactName,
|
||||
ContactPhone: pt.Tenement.ContactPhone,
|
||||
Building: pt.Tenement.Building,
|
||||
BuildingName: pt.Tenement.BuildingName,
|
||||
OnFloor: pt.Tenement.OnFloor,
|
||||
InvoiceInfo: pt.Tenement.InvoiceInfo,
|
||||
MovedInAt: pt.Tenement.MovedInAt,
|
||||
MovedOutAt: pt.Tenement.MovedOutAt,
|
||||
CreatedAt: pt.Tenement.CreatedAt,
|
||||
LastModifiedAt: pt.Tenement.LastModifiedAt,
|
||||
DeletedAt: pt.Tenement.DeletedAt,
|
||||
tenementReports = append(tenementReports, pt)
|
||||
}
|
||||
|
||||
tenementReports = append(tenementReports, report)
|
||||
}
|
||||
|
||||
return tenementMeterRelations, nil
|
||||
return tenementReports, nil
|
||||
}
|
||||
|
||||
//TODO: 2023.08.02 此方法未完成此方法主要用于。确定指定商户在指定时间段内的所有表计读数(完成)
|
||||
|
|
|
@ -55,12 +55,16 @@ func MainCalculateProcess(rid string) {
|
|||
return
|
||||
}
|
||||
|
||||
// 获取所有的物业表计,然后对所有的物业表计电量进行计算。
|
||||
parkMetersReports, err := MetersParkCalculate(*report, periodStart.Time, periodEnd.Time, meterDetails, summary)
|
||||
if err != nil {
|
||||
fmt.Println("8", err)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Println(meterRelations, tenementReports, poolingMetersReports, parkMetersReports)
|
||||
//计算所有表计的总电量
|
||||
parkTotal := TotalConsumptionCalculate(tenementReports, summary)
|
||||
|
||||
fmt.Println(meterRelations, poolingMetersReports, parkMetersReports, parkTotal)
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user