From b50eabbca6c2cddd42263d6b2b83831f305874bd Mon Sep 17 00:00:00 2001 From: ZiHangQin <1420014281@qq.com> Date: Thu, 10 Aug 2023 10:49:40 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=88meter):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=EF=BC=9A=E6=9B=B4=E6=8D=A2=E7=94=B5=E8=A1=A8=E6=97=B6=E7=9A=84?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/meter.go | 7 ++- service/calculate/meters.go | 118 ------------------------------------ service/meter.go | 7 +++ 3 files changed, 13 insertions(+), 119 deletions(-) diff --git a/controller/meter.go b/controller/meter.go index 1c8c8a3..b546eb8 100644 --- a/controller/meter.go +++ b/controller/meter.go @@ -202,7 +202,12 @@ func replaceMeter(c *fiber.Ctx) error { meterLog.Error("无法更换系统中的表计,无法解析表计更换表单", zap.Error(err)) return result.NotAccept(err.Error()) } - return nil + err := service.MeterService.ReplaceMeter(parkId, meterId, &replacementForm.OldReading, replacementForm.NewMeter.Code, replacementForm.NewMeter.Ratio, &replacementForm.NewMeter.Reading) + if err != nil { + meterLog.Error("更换表计出错", zap.Error(err)) + return result.Error(500, err.Error()) + } + return result.Success("更换成功") } // 列出指定公摊表计下的所有关联表计 diff --git a/service/calculate/meters.go b/service/calculate/meters.go index 7dbaade..a275a94 100644 --- a/service/calculate/meters.go +++ b/service/calculate/meters.go @@ -176,124 +176,6 @@ func CalculateTenementConsumptions(meters MeterMap) (map[string]decimal.Decimal, return consumptions, nil } -/* -/// 计算商户表计的公摊分摊 - -func CalculateTenementPoolings(report model.ReportIndex, summary calculate.Summary, meters MeterMap, meterRelations []model.MeterRelation) error { - for _, meter := range meters { - if meter.Detail.MeterType == model.METER_INSTALLATION_TENEMENT { - switch report.PublicPooled { - case model.POOLING_MODE_AREA: - for _, relation := range meterRelations { - if relation.SlaveMeter == meter.Code { - key := Key{ - Code: relation.MasterMeter, - } - parentMeter, ok := meters[key] - if !ok { - return errors.New("父级表记未找到") - } - - poolingAmount := meter.Detail.Area.Decimal.Div(parentMeter.CoveredArea). - Mul(meter.SharedPoolingProportion). - Mul(parentMeter.Overall.Amount).Mul(summary.Overall.Price) - - pooling := calculate.Pooling{ - Code: parentMeter.Code, - Detail: model.ConsumptionUnit{ - Amount: poolingAmount, - Fee: poolingAmount.Mul(summary.Overall.Price), - Price: summary.Overall.Price, - //后续debug此处需要判断, - Proportion: poolingAmount.Div(parentMeter.Overall.Amount), - }, - } - - pooling := calculate.Pooling{ - Code: parentMeter.Code, - Detail: model.ConsumptionUnit{ - Amount: poolingAmount, - Fee: poolingAmount.Mul(summary.Overall.Price), - Price: summary.Overall.Price, - Proportion: poolingAmount.Div(parentMeter.Overall.Amount), - }, - } - meter.PooledPublic = &ConsumptionUnit{ - Amount: poolingAmount, - Fee: new(big.Rat).Mul(poolingAmount, summary.Overall.Price), - Price: summary.Overall.Price, - Proportion: new(big.Rat).Quo(poolingAmount, parentAmount), - } - - meter.Poolings = append(meter.Poolings, pooling) - } - } - - case Consumption: - for _, relation := range meterRelations { - if relation.SlaveMeter == meter.Code { - parentMeter, ok := meters[relation.MasterMeter] - if !ok { - return errors.New("parent meter not found") - } - - if parentMeter.Overall.Amount.Cmp(new(big.Rat)) == 0 { - poolingAmount := new(big.Rat) - parentAmount := new(big.Rat) - - pooling := &Pooling{ - Code: parentMeter.Code, - Detail: &ConsumptionUnit{ - Amount: poolingAmount, - Fee: new(big.Rat), - Price: summary.Overall.Price, - Proportion: new(big.Rat), - }, - } - - meter.PooledPublic = &ConsumptionUnit{ - Amount: poolingAmount, - Fee: new(big.Rat), - Price: summary.Overall.Price, - Proportion: new(big.Rat), - } - - meter.Poolings = append(meter.Poolings, pooling) - } else { - poolingAmount := new(big.Rat).Mul(meter.Overall.Amount, new(big.Rat).Quo(parentMeter.Overall.Amount, parentMeter.Overall.Amount)) - parentAmount := parentMeter.Overall.Amount - - pooling := &Pooling{ - Code: parentMeter.Code, - Detail: &ConsumptionUnit{ - Amount: poolingAmount, - Fee: new(big.Rat).Mul(poolingAmount, summary.Overall.Price), - Price: summary.Overall.Price, - Proportion: new(big.Rat).Quo(poolingAmount, parentAmount), - }, - } - - meter.PooledPublic = &ConsumptionUnit{ - Amount: poolingAmount, - Fee: new(big.Rat).Mul(poolingAmount, summary.Overall.Price), - Price: summary.Overall.Price, - Proportion: new(big.Rat).Quo(poolingAmount, parentAmount), - } - - meter.Poolings = append(meter.Poolings, pooling) - } - } - } - - default: - // handle other pooling modes... - } - } - } - - return nil -} -*/ // 计算商户表计的公摊分摊 func CalculateTenementPoolings(report model.ReportIndex, summary calculate.Summary, meters MeterMap, meterRelations []model.MeterRelation) error { diff --git a/service/meter.go b/service/meter.go index 0fbd15c..372c1a8 100644 --- a/service/meter.go +++ b/service/meter.go @@ -777,3 +777,10 @@ func (ms _MeterService) BatchImportReadings(pid string, file *multipart.FileHead } return make([]excel.ExcelAnalysisError, 0), nil } + +//// 更换系统中的表计 +//func (ms _MeterService) ReplaceMeter(pid string, oldMeterCode string, oldMeterReading vo.MeterReadingForm, +// newMeterCode string, newMeterRatio decimal.Decimal, newMeterDisplayRatio decimal.Decimal, +// newMeterReading vo.NewMeterForReplacingForm) { +// +//} \ No newline at end of file