forked from free-lancers/electricity_bill_calc_service
fix(#10): 修复创建报表错误
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"context"
|
||||
"electricity_bill_calc/global"
|
||||
"electricity_bill_calc/logger"
|
||||
"electricity_bill_calc/model"
|
||||
@@ -322,43 +323,47 @@ func (cr _CalculateRepository) ClearReportContent(tx pgx.Tx, rid string) error {
|
||||
|
||||
return nil
|
||||
}
|
||||
func (cr _CalculateRepository) SaveReportPublics(tx pgx.Tx, rid string, meters []calculate.Meter) error {
|
||||
ctx, cancel := global.TimeoutContext()
|
||||
defer cancel()
|
||||
func (cr _CalculateRepository) SaveReportPublics(tx pgx.Tx, ctx context.Context, rid string, meters []calculate.Meter) error {
|
||||
if len(meters) == 0 {
|
||||
// 如果没有公共表计则直接返回
|
||||
return nil
|
||||
}
|
||||
// 准备插入表达式
|
||||
insertExpr := cr.ds.Insert("report_public_consumption").
|
||||
Cols(
|
||||
"report_id", "park_meter_id", "overall", "critical", "peak", "flat", "valley",
|
||||
"loss_adjust", "consumption_total", "loss_adjust_total", "final_total",
|
||||
).Prepared(true)
|
||||
// 添加值到插入表达式中
|
||||
|
||||
for _, meter := range meters {
|
||||
insertExpr = insertExpr.Vals([]interface{}{
|
||||
// 准备插入表达式
|
||||
insertExpr := cr.ds.Insert("report_public_consumption").
|
||||
Cols(
|
||||
"report_id", "park_meter_id", "overall", "critical", "peak", "flat", "valley",
|
||||
"loss_adjust", "consumption_total", "loss_adjust_total", "final_total",
|
||||
)
|
||||
// 添加值到插入表达式中
|
||||
overall,_ := json.Marshal(meter.Overall)
|
||||
criyical,_ := json.Marshal(meter.Critical)
|
||||
peak,_ := json.Marshal(meter.Peak)
|
||||
flat,_ := json.Marshal(meter.Flat)
|
||||
valley,_ := json.Marshal(meter.Valley)
|
||||
adjustLoss,_ := json.Marshal(meter.AdjustLoss)
|
||||
insertExpr = insertExpr.Vals(goqu.Vals{
|
||||
rid,
|
||||
meter.Code,
|
||||
meter.Overall.Fee,
|
||||
meter.Critical.Fee,
|
||||
meter.Peak.Fee,
|
||||
meter.Flat.Fee,
|
||||
meter.Valley.Fee,
|
||||
meter.AdjustLoss.Fee,
|
||||
overall,
|
||||
criyical,
|
||||
peak,
|
||||
flat,
|
||||
valley,
|
||||
adjustLoss,
|
||||
meter.Overall.Fee,
|
||||
meter.AdjustLoss.Fee,
|
||||
meter.Overall.Fee.Add(meter.AdjustLoss.Fee),
|
||||
})
|
||||
}
|
||||
|
||||
// 执行插入语句
|
||||
inserSql, insertArgs, err := insertExpr.Prepared(true).ToSQL()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if _, err := tx.Exec(ctx, inserSql, insertArgs); err != nil {
|
||||
return fmt.Errorf("保存报表核算概要失败: %w", err)
|
||||
// 执行插入语句
|
||||
inserSql, insertArgs, _ := insertExpr.ToSQL()
|
||||
fmt.Println(inserSql)
|
||||
_, err := tx.Exec(ctx, inserSql, insertArgs...)
|
||||
if err != nil {
|
||||
_ = tx.Rollback(ctx)
|
||||
return fmt.Errorf("保存报表核算概要失败: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -454,10 +459,15 @@ func (cr _CalculateRepository) SaveReportPoolings(tx pgx.Tx,
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
overall,_ := json.Marshal(meter.Overall)
|
||||
criyical,_ := json.Marshal(meter.Critical)
|
||||
peak,_ := json.Marshal(meter.Peak)
|
||||
flat,_ := json.Marshal(meter.Flat)
|
||||
valley,_ := json.Marshal(meter.Valley)
|
||||
|
||||
insertQuery := goqu.Insert("report_pooled_consumption").
|
||||
Cols("report_id", "pooled_meter_id", "overall", "critical", "peak", "flat", "valley", "pooled_area", "diluted").
|
||||
Vals(goqu.Vals{rid, meter.Code, meter.Overall, meter.Critical, meter.Peak, meter.Flat, meter.Valley, meter.CoveredArea, submetersJSON})
|
||||
Vals(goqu.Vals{rid, meter.Code, overall, criyical, peak, flat, valley, meter.CoveredArea, submetersJSON})
|
||||
|
||||
insertQueries = append(insertQueries, *insertQuery)
|
||||
}
|
||||
|
Reference in New Issue
Block a user