forked from free-lancers/electricity_bill_calc_service
		
	fix(#27): 修复用户电量电费详细为空
This commit is contained in:
		| @@ -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"` | ||||
| } | ||||
|   | ||||
| @@ -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 | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -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 { | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user