fix(#27): 修复用户电量电费详细为空

This commit is contained in:
ZiHangQin 2023-08-15 14:13:25 +08:00
parent 7d3fafeb04
commit 2844db1a86
4 changed files with 39 additions and 43 deletions

View File

@ -60,7 +60,7 @@ type TenementCharge struct {
LossPooled decimal.Decimal `json:"loss_pooled"`
PublicPooled decimal.Decimal `json:"public_pooled"`
FinalCharges decimal.Decimal `json:"final_charges"`
Loss decimal.Decimal `json:"loss"`
Loss model.ConsumptionUnit `json:"loss"`
Submeters []*Meter `json:"submeters"`
Poolings []*Meter `json:"poolings"`
}

View File

@ -501,57 +501,53 @@ func (cr _CalculateRepository) SaveReportTenement(tx pgx.Tx, report model.Report
defer cancel()
insertQuery := cr.ds.
Insert("report_tenement")
//var values []goqu.Record
var rows []goqu.Record
for _, tenement := range tenements {
//charge := findTenementCharge(tenementCharges, tenement.Id)
for _, charge := range tenementCharges {
tenementStr, _ := json.Marshal(tenement)
overallStr, _ := json.Marshal(charge.Overall)
criticalStr, _ := json.Marshal(charge.Critical)
peakStr, _ := json.Marshal(charge.Peak)
flatStr, _ := json.Marshal(charge.Flat)
valleyStr, _ := json.Marshal(charge.Valley)
lossStr, _ := json.Marshal(charge.Loss)
meters, _ := json.Marshal(convertToNestedMeters(charge.Submeters))
pooled, _ := json.Marshal(convertToNestedMeters(charge.Poolings))
fmt.Println(report.Id, tenement.Id, "123")
insertQuery = insertQuery.
Cols(
"report_id", "tenement_id", "tenement_detail", "calc_period", "overall", "critical", "peak", "flat", "valley", "loss", "basic_fee_pooled",
"adjust_fee_pooled", "loss_fee_pooled", "final_charge", "invoice", "meters", "pooled",
).
Vals(goqu.Vals{report.Id,
tenement.Id,
tenementStr,
report.Period,
overallStr,
criticalStr,
peakStr,
flatStr,
valleyStr,
lossStr,
charge.BasicFee,
charge.AdjustFee,
charge.LossPooled,
charge.PublicPooled,
charge.FinalCharges,
meters,
pooled})
tenementCharge := findTenementCharge(tenementCharges, tenement.Id)
tenementDetail, _ := json.Marshal(tenement)
overallJSON, _ := json.Marshal(tenementCharge.Overall)
criticalJSON, _ := json.Marshal(tenementCharge.Critical)
peakJSON, _ := json.Marshal(tenementCharge.Peak)
flatJSON, _ := json.Marshal(tenementCharge.Flat)
valleyJSON, _ := json.Marshal(tenementCharge.Valley)
lossJSON, _ := json.Marshal(tenementCharge.Loss)
submetersJSON, _ := json.Marshal(convertToNestedMeters(tenementCharge.Submeters))
poolingsJSON, _ := json.Marshal(convertToNestedMeters(tenementCharge.Poolings))
row := goqu.Record{
"report_id": report.Id,
"tenement_id": tenement.Id,
"tenement_detail": tenementDetail,
"calc_period": report.Period,
"overall": overallJSON,
"critical": criticalJSON,
"peak": peakJSON,
"flat": flatJSON,
"valley": valleyJSON,
"loss": lossJSON,
"basic_fee_pooled": tenementCharge.BasicFee,
"adjust_fee_pooled": tenementCharge.AdjustFee,
"loss_fee_pooled": tenementCharge.LossPooled,
"final_pooled": tenementCharge.PublicPooled,
"final_charge": tenementCharge.FinalCharges,
"meters": submetersJSON,
"pooled": poolingsJSON,
}
rows = append(rows, row)
}
sql, params, err := insertQuery.Prepared(true).ToSQL()
sql, params, err := insertQuery.Rows(rows).Prepared(true).ToSQL()
if err != nil {
fmt.Println(err)
}
fmt.Println("====================================================================", sql)
_, err = tx.Exec(ctx, sql, params...)
if err != nil {
fmt.Println(err.Error())
return err
}
fmt.Println("保存成功")
return nil
}

View File

@ -151,9 +151,9 @@ func CalculateLossPooling(report model.ReportIndex, summary calculate.Summary, m
/// 计算所有商户类型表计的全周期电量。
func CalculateTenementConsumptions(meters MeterMap) (map[string]decimal.Decimal, error) {
func CalculateTenementConsumptions(meters *MeterMap) (map[string]decimal.Decimal, error) {
consumptions := make(map[string]decimal.Decimal)
for _, meter := range meters {
for _, meter := range *meters {
if meter.Detail.MeterType == model.METER_INSTALLATION_TENEMENT {
amount, ok := consumptions[meter.Code]
if !ok {
@ -163,7 +163,7 @@ func CalculateTenementConsumptions(meters MeterMap) (map[string]decimal.Decimal,
consumptions[meter.Code] = amount
}
}
for _, meter := range meters {
for _, meter := range *meters {
if meter.Detail.MeterType == model.METER_INSTALLATION_TENEMENT {
amount, ok := consumptions[meter.Code]
if !ok {

View File

@ -110,7 +110,7 @@ func MainCalculateProcess(rid string) error {
return err
}
// 计算所有商户类型表计的全周期电量,并根据全周期电量计算共用过同一表计的商户的二次分摊比例。
_, err = CalculateTenementConsumptions(meters)
_, err = CalculateTenementConsumptions(&meters)
if err != nil {
fmt.Println("16", err)
return err