package calculate import ( "context" "electricity_bill_calc/model" "electricity_bill_calc/model/calculate" "electricity_bill_calc/repository" "fmt" "github.com/jackc/pgx/v5" ) // 向数据库保存核算概况结果 func SaveSummary(tx pgx.Tx, ctx context.Context, summary calculate.Summary) error { // 保存核算概况结果到数据库 err := repository.CalculateRepository.SaveReportSummary(tx,ctx, summary) if err != nil { return err } return nil } // type MeterMap map[string]map[string]calculate.Meter // 向数据库保存公共表计的计算结果 func SavePublics(tx pgx.Tx, ctx context.Context, report model.ReportIndex, meters MeterMap) error { var filteredMeters []calculate.Meter for _, m := range meters { if m.Detail.MeterType == model.METER_INSTALLATION_PARK { filteredMeters = append(filteredMeters, m) } } fmt.Println(tx) err := repository.CalculateRepository.SaveReportPublics(tx, ctx, report.Id, filteredMeters) if err != nil { return err } return nil } func SavePoolings(tx pgx.Tx, report model.ReportIndex, meters MeterMap, relations []model.MeterRelation) error { var poolingMeters []calculate.Meter var tenementMeters []calculate.Meter // 根据条件筛选 Meter 并保存到对应的数组中 for _, m := range meters { if m.Detail.MeterType == model.METER_INSTALLATION_POOLING { poolingMeters = append(poolingMeters, m) } else if m.Detail.MeterType == model.METER_INSTALLATION_TENEMENT { tenementMeters = append(tenementMeters, m) } } err := repository.CalculateRepository.SaveReportPoolings(tx, report.Id, poolingMeters, relations, tenementMeters) if err != nil { return err } return nil } func SaveTenements(tx pgx.Tx, report model.ReportIndex, tenement []calculate.PrimaryTenementStatistics, tc []calculate.TenementCharge) error { var ts []model.Tenement for _, r := range tenement { ts = append(ts, r.Tenement) } err := repository.CalculateRepository.SaveReportTenement(tx, report, ts, tc) if err != nil { return err } return nil }