40 lines
932 B
Go
40 lines
932 B
Go
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
|
|
}
|