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 }