forked from free-lancers/electricity_bill_calc_service
enhance(report):
This commit is contained in:
@@ -7,17 +7,17 @@ import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func MainCalculateProcess(rid string) {
|
||||
func MainCalculateProcess(rid string) error {
|
||||
report, err := repository.ReportRepository.GetReportIndex(rid)
|
||||
if err != nil {
|
||||
fmt.Println("1", err.Error()+"指定报表不存在")
|
||||
return
|
||||
return err
|
||||
}
|
||||
|
||||
reportSummary, err := repository.ReportRepository.RetrieveReportSummary(rid)
|
||||
if err != nil {
|
||||
fmt.Println("2", err.Error()+"指定报表的基本电量电费数据不存在")
|
||||
return
|
||||
return err
|
||||
}
|
||||
|
||||
summary := calculate.FromReportSummary(reportSummary, report)
|
||||
@@ -28,39 +28,39 @@ func MainCalculateProcess(rid string) {
|
||||
meterDetails, err := repository.MeterRepository.AllUsedMetersInReport(report.Id)
|
||||
if err != nil {
|
||||
fmt.Println("3", err)
|
||||
return
|
||||
return err
|
||||
}
|
||||
|
||||
meterRelations, err := repository.CalculateRepository.GetAllPoolingMeterRelations(report.Park, periodStart.Time)
|
||||
if err != nil {
|
||||
fmt.Println("4", err)
|
||||
return
|
||||
return err
|
||||
}
|
||||
_, err = CheckMeterArea(report, meterDetails)
|
||||
if err != nil {
|
||||
fmt.Println("5", err)
|
||||
return
|
||||
return err
|
||||
}
|
||||
|
||||
// 寻找每一个商户的所有表计读数,然后对分配到各个商户的表计读数进行初步的计算.
|
||||
tenementReports, err := TenementMetersCalculate(report, periodStart.Time, periodEnd.Time, meterDetails, summary)
|
||||
if err != nil {
|
||||
fmt.Println("6", err)
|
||||
return
|
||||
return err
|
||||
}
|
||||
|
||||
// 取得所有公摊表计的读数,以及公摊表计对应的分摊表计
|
||||
poolingMetersReports, err := PooledMetersCalculate(report, periodStart.Time, periodEnd.Time, meterDetails, summary)
|
||||
if err != nil {
|
||||
fmt.Println("7", err)
|
||||
return
|
||||
return err
|
||||
}
|
||||
|
||||
// 获取所有的物业表计,然后对所有的物业表计电量进行计算。
|
||||
parkMetersReports, err := MetersParkCalculate(*report, periodStart.Time, periodEnd.Time, meterDetails, summary)
|
||||
if err != nil {
|
||||
fmt.Println("8", err)
|
||||
return
|
||||
return err
|
||||
}
|
||||
|
||||
// 计算所有表计的总电量
|
||||
@@ -70,19 +70,19 @@ func MainCalculateProcess(rid string) {
|
||||
err = LossCalculate(report, &parkMetersReports, &parkTotal, &summary)
|
||||
if err != nil {
|
||||
fmt.Println("9", err)
|
||||
return
|
||||
return err
|
||||
}
|
||||
|
||||
// 计算所有已经启用的商铺面积总和,仅计算所有未迁出的商户的所有表计对应的商铺面积。
|
||||
_, err = EnabledAreaCalculate(&tenementReports, &summary)
|
||||
if err != nil {
|
||||
fmt.Println("10", err)
|
||||
return
|
||||
return err
|
||||
}
|
||||
err = CalculatePrices(&summary)
|
||||
if err != nil {
|
||||
fmt.Println("11", err)
|
||||
return
|
||||
return err
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
@@ -92,7 +92,7 @@ func MainCalculateProcess(rid string) {
|
||||
meters, err := CollectMeters(tenementReports, poolingMetersReports, parkMetersReports)
|
||||
if err != nil {
|
||||
fmt.Println("12", err)
|
||||
return
|
||||
return err
|
||||
}
|
||||
|
||||
// 计算商户的合计电费信息,并归总与商户相关联的表计记录
|
||||
@@ -102,28 +102,28 @@ func MainCalculateProcess(rid string) {
|
||||
err = CalculateBasicPooling(report, &summary, &meters)
|
||||
if err != nil {
|
||||
fmt.Println("13", err)
|
||||
return
|
||||
return err
|
||||
}
|
||||
err = CalculateAdjustPooling(*report, summary, meters)
|
||||
if err != nil {
|
||||
fmt.Println("14", err)
|
||||
return
|
||||
return err
|
||||
}
|
||||
err = CalculateLossPooling(*report, summary, meters)
|
||||
if err != nil {
|
||||
fmt.Println("15", err)
|
||||
return
|
||||
return err
|
||||
}
|
||||
// 计算所有商户类型表计的全周期电量,并根据全周期电量计算共用过同一表计的商户的二次分摊比例。
|
||||
_, err = CalculateTenementConsumptions(meters)
|
||||
if err != nil {
|
||||
fmt.Println("16", err)
|
||||
return
|
||||
return err
|
||||
}
|
||||
err = CalculateTenementPoolings(*report, summary, meters, meterRelations)
|
||||
if err != nil {
|
||||
fmt.Println("17", err)
|
||||
return
|
||||
return err
|
||||
}
|
||||
// 计算商户的合计电费信息,并归总与商户相关联的表计记录
|
||||
tenementCharges = TenementChargeCalculate(tenementReports, summary, meters)
|
||||
@@ -136,33 +136,33 @@ func MainCalculateProcess(rid string) {
|
||||
if err != nil {
|
||||
tx.Rollback(ctx)
|
||||
fmt.Println("18", err)
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
err = SaveSummary(tx, summary)
|
||||
if err != nil {
|
||||
tx.Rollback(ctx)
|
||||
fmt.Println("19", err)
|
||||
|
||||
return err
|
||||
}
|
||||
err = SavePublics(tx, *report, meters)
|
||||
if err != nil {
|
||||
tx.Rollback(ctx)
|
||||
fmt.Println("20", err)
|
||||
|
||||
return err
|
||||
}
|
||||
err = SavePoolings(tx, *report, meters, meterRelations)
|
||||
if err != nil {
|
||||
tx.Rollback(ctx)
|
||||
fmt.Println("21", err)
|
||||
|
||||
return err
|
||||
}
|
||||
err = SaveTenements(tx, *report, tenementReports, tenementCharges)
|
||||
if err != nil {
|
||||
tx.Rollback(ctx)
|
||||
fmt.Println("22", err)
|
||||
|
||||
return err
|
||||
}
|
||||
tx.Commit(ctx)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user