diff --git a/service/calculate.go b/service/calculate.go index 7e8deec..1dee27d 100644 --- a/service/calculate.go +++ b/service/calculate.go @@ -91,36 +91,70 @@ func (_CalculateService) ComprehensivelyCalculateReport(reportId string) (err er } // 计算户表总电费和公共总电费以及相应的摊薄 - summary.CustomerConsumptionFee = decimal.NewNullDecimal( - summary.CustomerConsumption.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), - ) - summary.CustomerConsumptionCriticalFee = decimal.NewNullDecimal( - summary.CustomerConsumptionCritical.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), - ) - summary.CustomerConsumptionPeakFee = decimal.NewNullDecimal( - summary.CustomerConsumptionPeak.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), - ) - summary.CustomerConsumptionFlatFee = decimal.NewNullDecimal( - summary.CustomerConsumptionFlat.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), - ) - summary.CustomerConsumptionValleyFee = decimal.NewNullDecimal( - summary.CustomerConsumptionValley.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), - ) - summary.PublicConsumptionFee = decimal.NewNullDecimal( - summary.PublicConsumption.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), - ) - summary.PublicConsumptionCriticalFee = decimal.NewNullDecimal( - summary.PublicConsumptionCritical.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), - ) - summary.PublicConsumptionPeakFee = decimal.NewNullDecimal( - summary.PublicConsumptionPeak.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), - ) - summary.PublicConsumptionFlatFee = decimal.NewNullDecimal( - summary.PublicConsumptionFlat.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), - ) - summary.PublicConsumptionValleyFee = decimal.NewNullDecimal( - summary.PublicConsumptionValley.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), - ) + if reportIndex.SubmeterType == model.CUSTOMER_METER_NON_PV { + summary.CustomerConsumptionFee = decimal.NewNullDecimal( + summary.CustomerConsumption.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), + ) + summary.CustomerConsumptionCriticalFee = decimal.NewNullDecimal( + summary.CustomerConsumptionCritical.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), + ) + summary.CustomerConsumptionPeakFee = decimal.NewNullDecimal( + summary.CustomerConsumptionPeak.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), + ) + summary.CustomerConsumptionFlatFee = decimal.NewNullDecimal( + summary.CustomerConsumptionFlat.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), + ) + summary.CustomerConsumptionValleyFee = decimal.NewNullDecimal( + summary.CustomerConsumptionValley.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), + ) + summary.PublicConsumptionFee = decimal.NewNullDecimal( + summary.PublicConsumption.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), + ) + summary.PublicConsumptionCriticalFee = decimal.NewNullDecimal( + summary.PublicConsumptionCritical.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), + ) + summary.PublicConsumptionPeakFee = decimal.NewNullDecimal( + summary.PublicConsumptionPeak.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), + ) + summary.PublicConsumptionFlatFee = decimal.NewNullDecimal( + summary.PublicConsumptionFlat.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), + ) + summary.PublicConsumptionValleyFee = decimal.NewNullDecimal( + summary.PublicConsumptionValley.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), + ) + } + if reportIndex.SubmeterType == model.CUSTOMER_METER_PV { + summary.CustomerConsumptionFee = decimal.NewNullDecimal( + summary.CustomerConsumption.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), + ) + summary.CustomerConsumptionCriticalFee = decimal.NewNullDecimal( + summary.CustomerConsumptionCritical.Decimal.Mul(summary.CriticalPrice.Decimal).RoundBank(2), + ) + summary.CustomerConsumptionPeakFee = decimal.NewNullDecimal( + summary.CustomerConsumptionPeak.Decimal.Mul(summary.PeakPrice.Decimal).RoundBank(2), + ) + summary.CustomerConsumptionFlatFee = decimal.NewNullDecimal( + summary.CustomerConsumptionFlat.Decimal.Mul(summary.FlatPrice.Decimal).RoundBank(2), + ) + summary.CustomerConsumptionValleyFee = decimal.NewNullDecimal( + summary.CustomerConsumptionValley.Decimal.Mul(summary.ValleyPrice.Decimal).RoundBank(2), + ) + summary.PublicConsumptionFee = decimal.NewNullDecimal( + summary.PublicConsumption.Decimal.Mul(summary.OverallPrice.Decimal).RoundBank(2), + ) + summary.PublicConsumptionCriticalFee = decimal.NewNullDecimal( + summary.PublicConsumptionCritical.Decimal.Mul(summary.CriticalPrice.Decimal).RoundBank(2), + ) + summary.PublicConsumptionPeakFee = decimal.NewNullDecimal( + summary.PublicConsumptionPeak.Decimal.Mul(summary.PeakPrice.Decimal).RoundBank(2), + ) + summary.PublicConsumptionFlatFee = decimal.NewNullDecimal( + summary.PublicConsumptionFlat.Decimal.Mul(summary.FlatPrice.Decimal).RoundBank(2), + ) + summary.PublicConsumptionValleyFee = decimal.NewNullDecimal( + summary.PublicConsumptionValley.Decimal.Mul(summary.ValleyPrice.Decimal).RoundBank(2), + ) + } if summary.Overall.Abs().GreaterThan(decimal.Zero) { summary.PublicConsumptionProportion = decimal.NewNullDecimal( summary.PublicConsumption.Decimal.Div(summary.Overall).RoundBank(15),