fix(report):基本完成报表部分的查询调整。

This commit is contained in:
徐涛 2022-09-19 14:27:25 +08:00
parent 3742a445b7
commit 0355300908
10 changed files with 104 additions and 76 deletions

View File

@ -15,32 +15,32 @@ type EndUserDetail struct {
ReportId string `bun:",pk,notnull" json:"reportId"` ReportId string `bun:",pk,notnull" json:"reportId"`
ParkId string `bun:",pk,notnull" json:"parkId"` ParkId string `bun:",pk,notnull" json:"parkId"`
MeterId string `bun:"meter_04kv_id,pk,notnull" json:"meterId"` MeterId string `bun:"meter_04kv_id,pk,notnull" json:"meterId"`
Seq int64 `bun:"type:bigint,notnull,default:0" json:"seq"` Seq int64 `bun:"type:bigint,notnull" json:"seq"`
Ratio decimal.Decimal `bun:",notnull,default:1" json:"ratio"` Ratio decimal.Decimal `bun:",notnull" json:"ratio"`
Address *string `json:"address"` Address *string `json:"address"`
CustomerName *string `json:"customerName"` CustomerName *string `json:"customerName"`
ContactName *string `json:"contactName"` ContactName *string `json:"contactName"`
ContactPhone *string `json:"contactPhone"` ContactPhone *string `json:"contactPhone"`
IsPublicMeter bool `bun:"public_meter,notnull,default:false" json:"isPublicMeter"` IsPublicMeter bool `bun:"public_meter,notnull" json:"isPublicMeter"`
WillDilute bool `bun:"dilute,notnull,default:false" json:"willDilute"` WillDilute bool `bun:"dilute,notnull" json:"willDilute"`
LastPeriodOverall decimal.Decimal `bun:",notnull,default:0" json:"lastPeriodOverall"` LastPeriodOverall decimal.Decimal `bun:",notnull" json:"lastPeriodOverall"`
LastPeriodCritical decimal.Decimal `bun:",notnull,default:0" json:"lastPeriodCritical"` LastPeriodCritical decimal.Decimal `bun:",notnull" json:"lastPeriodCritical"`
LastPeriodPeak decimal.Decimal `bun:",notnull,default:0" json:"lastPeriodPeak"` LastPeriodPeak decimal.Decimal `bun:",notnull" json:"lastPeriodPeak"`
LastPeriodFlat decimal.Decimal `bun:",notnull,default:0" json:"lastPeriodFlat"` LastPeriodFlat decimal.Decimal `bun:",notnull" json:"lastPeriodFlat"`
LastPeriodValley decimal.Decimal `bun:",notnull,default:0" json:"lastPeriodValley"` LastPeriodValley decimal.Decimal `bun:",notnull" json:"lastPeriodValley"`
CurrentPeriodOverall decimal.Decimal `bun:",notnull,default:0" json:"currentPeriodOverall"` CurrentPeriodOverall decimal.Decimal `bun:",notnull" json:"currentPeriodOverall"`
CurrentPeriodCritical decimal.Decimal `bun:",notnull,default:0" json:"currentPeriodCritical"` CurrentPeriodCritical decimal.Decimal `bun:",notnull" json:"currentPeriodCritical"`
CurrentPeriodPeak decimal.Decimal `bun:",notnull,default:0" json:"currentPeriodPeak"` CurrentPeriodPeak decimal.Decimal `bun:",notnull" json:"currentPeriodPeak"`
CurrentPeriodFlat decimal.Decimal `bun:",notnull,default:0" json:"currentPeriodFlat"` CurrentPeriodFlat decimal.Decimal `bun:",notnull" json:"currentPeriodFlat"`
CurrentPeriodValley decimal.Decimal `bun:",notnull,default:0" json:"currentPeriodValley"` CurrentPeriodValley decimal.Decimal `bun:",notnull" json:"currentPeriodValley"`
AdjustOverall decimal.Decimal `bun:",notnull,default:0" json:"adjustOverall"` AdjustOverall decimal.Decimal `bun:",notnull" json:"adjustOverall"`
AdjustCritical decimal.Decimal `bun:",notnull,default:0" json:"adjustCritical"` AdjustCritical decimal.Decimal `bun:",notnull" json:"adjustCritical"`
AdjustPeak decimal.Decimal `bun:",notnull,default:0" json:"adjustPeak"` AdjustPeak decimal.Decimal `bun:",notnull" json:"adjustPeak"`
AdjustFlat decimal.Decimal `bun:",notnull,default:0" json:"adjustFlat"` AdjustFlat decimal.Decimal `bun:",notnull" json:"adjustFlat"`
AdjustValley decimal.Decimal `bun:",notnull,default:0" json:"adjustValley"` AdjustValley decimal.Decimal `bun:",notnull" json:"adjustValley"`
Overall decimal.NullDecimal `json:"overall"` Overall decimal.NullDecimal `json:"overall"`
OverallFee decimal.NullDecimal `json:"overallFee"` OverallFee decimal.NullDecimal `json:"overallFee"`
OverallProportion decimal.Decimal `bun:",notnull,default:0" json:"-"` OverallProportion decimal.Decimal `bun:",notnull" json:"-"`
Critical decimal.NullDecimal `json:"critical"` Critical decimal.NullDecimal `json:"critical"`
CriticalFee decimal.NullDecimal `json:"criticalFee"` CriticalFee decimal.NullDecimal `json:"criticalFee"`
Peak decimal.NullDecimal `json:"peak"` Peak decimal.NullDecimal `json:"peak"`
@ -58,7 +58,7 @@ type EndUserDetail struct {
FinalDiluted decimal.NullDecimal `json:"finalDiluted"` FinalDiluted decimal.NullDecimal `json:"finalDiluted"`
FinalCharge decimal.NullDecimal `json:"finalCharge"` FinalCharge decimal.NullDecimal `json:"finalCharge"`
Initialize bool `bun:"-" json:"-"` Initialize bool `bun:"-" json:"-"`
Origin *Meter04KV `bun:"rel:belongs-to,join:park_id=park_id,join:meter_04kv_id=code"` Origin *Meter04KV `bun:"rel:belongs-to,join:park_id=park_id,join:meter_04kv_id=code" json:"-"`
} }
var _ bun.BeforeAppendModelHook = (*EndUserDetail)(nil) var _ bun.BeforeAppendModelHook = (*EndUserDetail)(nil)

View File

@ -17,7 +17,7 @@ type Meter04KV struct {
CustomerName *string `json:"customerName" excel:"name"` CustomerName *string `json:"customerName" excel:"name"`
ContactName *string `json:"contactName" excel:"contact"` ContactName *string `json:"contactName" excel:"contact"`
ContactPhone *string `json:"contactPhone" excel:"phone"` ContactPhone *string `json:"contactPhone" excel:"phone"`
Ratio decimal.Decimal `bun:",notnull,default:1" json:"ratio" excel:"ratio"` Ratio decimal.Decimal `bun:",notnull" json:"ratio" excel:"ratio"`
Seq int64 `bun:"type:bigint,notnull" json:"seq" excel:"seq"` Seq int64 `bun:"type:bigint,notnull" json:"seq" excel:"seq"`
IsPublicMeter bool `bun:"public_meter,notnull" json:"isPublicMeter" excel:"public"` IsPublicMeter bool `bun:"public_meter,notnull" json:"isPublicMeter" excel:"public"`
WillDilute bool `bun:"dilute,notnull" json:"willDilute" excel:"dilute"` WillDilute bool `bun:"dilute,notnull" json:"willDilute" excel:"dilute"`

View File

@ -42,6 +42,7 @@ type Park struct {
Enterprise *UserDetail `bun:"rel:belongs-to,join:user_id=id" json:"-"` Enterprise *UserDetail `bun:"rel:belongs-to,join:user_id=id" json:"-"`
MaintenanceFees []*MaintenanceFee `bun:"rel:has-many,join:id=park_id" json:"-"` MaintenanceFees []*MaintenanceFee `bun:"rel:has-many,join:id=park_id" json:"-"`
Meters []*Meter04KV `bun:"rel:has-many,join:id=park_id" json:"-"` Meters []*Meter04KV `bun:"rel:has-many,join:id=park_id" json:"-"`
Reports []*Report `bun:"rel:has-many,join:id=park_id" json:"-"`
} }
type ParkSimplified struct { type ParkSimplified struct {

View File

@ -6,6 +6,6 @@ type Region struct {
bun.BaseModel `bun:"table:region,alias:r"` bun.BaseModel `bun:"table:region,alias:r"`
Code string `bun:",pk,notnull" json:"code"` Code string `bun:",pk,notnull" json:"code"`
Name string `bun:",notnull" json:"name"` Name string `bun:",notnull" json:"name"`
Level int `bun:",notnull,default:0" json:"level"` Level int `bun:",notnull" json:"level"`
Parent string `bun:",notnull,default:'0'" json:"parent"` Parent string `bun:",notnull" json:"parent"`
} }

View File

@ -20,12 +20,12 @@ type Report struct {
Id string `bun:",pk,notnull" json:"id"` Id string `bun:",pk,notnull" json:"id"`
ParkId string `bun:",notnull" json:"parkId"` ParkId string `bun:",notnull" json:"parkId"`
Period time.Time `bun:"type:date,notnull" json:"period" time_format:"simple_date" time_location:"shanghai"` Period time.Time `bun:"type:date,notnull" json:"period" time_format:"simple_date" time_location:"shanghai"`
Category int8 `bun:"type:smallint,notnull,default:0" json:"category"` Category int8 `bun:"type:smallint,notnull" json:"category"`
SubmeterType int8 `bun:"meter_04kv_type,type:smallint,notnull,default:0" json:"meter04kvType"` SubmeterType int8 `bun:"meter_04kv_type,type:smallint,notnull" json:"meter04kvType"`
StepState Steps `bun:"type:jsonb,notnull" json:"stepState"` StepState Steps `bun:"type:jsonb,notnull" json:"stepState"`
Published bool `bun:",notnull,default:false" json:"published"` Published bool `bun:",notnull" json:"published"`
PublishedAt *time.Time `bun:"type:timestamptz,nullzero" json:"publishedAt" time_format:"simple_datetime" time_location:"shanghai"` PublishedAt *time.Time `bun:"type:timestamptz,nullzero" json:"publishedAt" time_format:"simple_datetime" time_location:"shanghai"`
Withdraw int8 `bun:"type:smallint,notnull,default:0" json:"withdraw"` Withdraw int8 `bun:"type:smallint,notnull" json:"withdraw"`
LastWithdrawAppliedAt *time.Time `bun:"type:timestamptz,nullzero" json:"lastWithdrawAppliedAt" time_format:"simple_datetime" time_location:"shanghai"` LastWithdrawAppliedAt *time.Time `bun:"type:timestamptz,nullzero" json:"lastWithdrawAppliedAt" time_format:"simple_datetime" time_location:"shanghai"`
LastWithdrawAuditAt *time.Time `bun:"type:timestamptz,nullzero" json:"lastWithdrawAuditAt" time_format:"simple_datetime" time_location:"shanghai"` LastWithdrawAuditAt *time.Time `bun:"type:timestamptz,nullzero" json:"lastWithdrawAuditAt" time_format:"simple_datetime" time_location:"shanghai"`
Park *Park `bun:"rel:belongs-to,join:park_id=id" json:"-"` Park *Park `bun:"rel:belongs-to,join:park_id=id" json:"-"`
@ -71,9 +71,9 @@ type ReportIndexSimplified struct {
ParkId string `bun:",notnull" json:"parkId"` ParkId string `bun:",notnull" json:"parkId"`
Period Date `bun:"type:date,notnull" json:"period"` Period Date `bun:"type:date,notnull" json:"period"`
StepState Steps `bun:"type:jsonb,notnull" json:"stepState"` StepState Steps `bun:"type:jsonb,notnull" json:"stepState"`
Published bool `bun:",notnull,default:false" json:"published"` Published bool `bun:",notnull" json:"published"`
PublishedAt *time.Time `bun:"type:timestampz" json:"publishedAt" time_format:"simple_datetime" time_location:"shanghai"` PublishedAt *time.Time `bun:"type:timestampz" json:"publishedAt" time_format:"simple_datetime" time_location:"shanghai"`
Withdraw int8 `bun:"type:smallint,notnull,default:0" json:"withdraw"` Withdraw int8 `bun:"type:smallint,notnull" json:"withdraw"`
LastWithdrawAppliedAt *time.Time `bun:"type:timestamptz" json:"lastWithdrawAppliedAt" time_format:"simple_datetime" time_location:"shanghai"` LastWithdrawAppliedAt *time.Time `bun:"type:timestamptz" json:"lastWithdrawAppliedAt" time_format:"simple_datetime" time_location:"shanghai"`
LastWithdrawAuditAt *time.Time `bun:"type:timestamptz" json:"lastWithdrawAuditAt" time_format:"simple_datetime" time_location:"shanghai"` LastWithdrawAuditAt *time.Time `bun:"type:timestamptz" json:"lastWithdrawAuditAt" time_format:"simple_datetime" time_location:"shanghai"`
} }

View File

@ -10,21 +10,21 @@ import (
type ReportSummary struct { type ReportSummary struct {
bun.BaseModel `bun:"table:report_summary,alias:rs"` bun.BaseModel `bun:"table:report_summary,alias:rs"`
ReportId string `bun:",pk,notnull" json:"-"` ReportId string `bun:",pk,notnull" json:"-"`
Overall decimal.Decimal `bun:",notnull,default:0" json:"overall"` Overall decimal.Decimal `bun:",notnull" json:"overall"`
OverallFee decimal.Decimal `bun:",notnull,default:0" json:"overallFee"` OverallFee decimal.Decimal `bun:",notnull" json:"overallFee"`
ConsumptionFee decimal.NullDecimal `json:"consumptionFee"` ConsumptionFee decimal.NullDecimal `json:"consumptionFee"`
OverallPrice decimal.NullDecimal `json:"overallPrice"` OverallPrice decimal.NullDecimal `json:"overallPrice"`
Critical decimal.Decimal `bun:",notnull,default:0" json:"critical"` Critical decimal.Decimal `bun:",notnull" json:"critical"`
CriticalFee decimal.Decimal `bun:",notnull,default:0" json:"criticalFee"` CriticalFee decimal.Decimal `bun:",notnull" json:"criticalFee"`
CriticalPrice decimal.NullDecimal `json:"criticalPrice"` CriticalPrice decimal.NullDecimal `json:"criticalPrice"`
Peak decimal.Decimal `bun:",notnull,default:0" json:"peak"` Peak decimal.Decimal `bun:",notnull" json:"peak"`
PeakFee decimal.Decimal `bun:",notnull,default:0" json:"peakFee"` PeakFee decimal.Decimal `bun:",notnull" json:"peakFee"`
PeakPrice decimal.NullDecimal `json:"peakPrice"` PeakPrice decimal.NullDecimal `json:"peakPrice"`
Flat decimal.Decimal `bun:",notnull,default:0" json:"flat"` Flat decimal.Decimal `bun:",notnull" json:"flat"`
FlatFee decimal.Decimal `bun:",notnull,default:0" json:"flatFee"` FlatFee decimal.Decimal `bun:",notnull" json:"flatFee"`
FlatPrice decimal.NullDecimal `json:"flatPrice"` FlatPrice decimal.NullDecimal `json:"flatPrice"`
Valley decimal.Decimal `bun:",notnull,default:0" json:"valley"` Valley decimal.Decimal `bun:",notnull" json:"valley"`
ValleyFee decimal.Decimal `bun:",notnull,default:0" json:"valleyFee"` ValleyFee decimal.Decimal `bun:",notnull" json:"valleyFee"`
ValleyPrice decimal.NullDecimal `json:"valleyPrice"` ValleyPrice decimal.NullDecimal `json:"valleyPrice"`
Loss decimal.NullDecimal `json:"loss"` Loss decimal.NullDecimal `json:"loss"`
LossFee decimal.NullDecimal `json:"lossFee"` LossFee decimal.NullDecimal `json:"lossFee"`
@ -50,9 +50,9 @@ type ReportSummary struct {
PublicConsumptionFlatFee decimal.NullDecimal `json:"publicConsumptionFlatFee"` PublicConsumptionFlatFee decimal.NullDecimal `json:"publicConsumptionFlatFee"`
PublicConsumptionValley decimal.NullDecimal `json:"publicConsumptionValley"` PublicConsumptionValley decimal.NullDecimal `json:"publicConsumptionValley"`
PublicConsumptionValleyFee decimal.NullDecimal `json:"publicConsumptionValleyFee"` PublicConsumptionValleyFee decimal.NullDecimal `json:"publicConsumptionValleyFee"`
BasicFee decimal.Decimal `bun:",notnull,default:0" json:"basicFee"` BasicFee decimal.Decimal `bun:",notnull" json:"basicFee"`
BasicDilutedPrice decimal.NullDecimal `json:"basicDilutedPrice"` BasicDilutedPrice decimal.NullDecimal `json:"basicDilutedPrice"`
AdjustFee decimal.Decimal `bun:",notnull,default:0" json:"adjustFee"` AdjustFee decimal.Decimal `bun:",notnull" json:"adjustFee"`
AdjustDilutedPrice decimal.NullDecimal `json:"adjustDilutedPrice"` AdjustDilutedPrice decimal.NullDecimal `json:"adjustDilutedPrice"`
MaintenanceDilutedPrice decimal.NullDecimal `json:"maintencanceDilutedPrice"` MaintenanceDilutedPrice decimal.NullDecimal `json:"maintencanceDilutedPrice"`
LossDilutedPrice decimal.NullDecimal `json:"lossDilutedPrice"` LossDilutedPrice decimal.NullDecimal `json:"lossDilutedPrice"`

View File

@ -17,11 +17,11 @@ type UserCharge struct {
Discount decimal.NullDecimal `json:"discount"` Discount decimal.NullDecimal `json:"discount"`
Amount decimal.NullDecimal `json:"amount"` Amount decimal.NullDecimal `json:"amount"`
ChargeTo Date `bun:"type:date,notnull" json:"chargeTo"` ChargeTo Date `bun:"type:date,notnull" json:"chargeTo"`
Settled bool `bun:",notnull,default:false" json:"settled"` Settled bool `bun:",notnull" json:"settled"`
SettledAt *time.Time `bun:"type:timestamptz" json:"settledAt" time_format:"simple_datetime" time_location:"shanghai"` SettledAt *time.Time `bun:"type:timestamptz" json:"settledAt" time_format:"simple_datetime" time_location:"shanghai"`
Cancelled bool `bun:",notnull,default:false" json:"cancelled"` Cancelled bool `bun:",notnull" json:"cancelled"`
CancelledAt *time.Time `bun:"type:timestamptz" json:"cancelledAt" time_format:"simple_datetime" time_location:"shanghai"` CancelledAt *time.Time `bun:"type:timestamptz" json:"cancelledAt" time_format:"simple_datetime" time_location:"shanghai"`
Refunded bool `bun:",notnull,default:false" json:"refunded"` Refunded bool `bun:",notnull" json:"refunded"`
RefundedAt *time.Time `bun:"type:timestamptz" json:"refundedAt" time_format:"simple_datetime" time_location:"shanghai"` RefundedAt *time.Time `bun:"type:timestamptz" json:"refundedAt" time_format:"simple_datetime" time_location:"shanghai"`
Detail *UserDetail `bun:"rel:belongs-to,join:user_id=id" json:"-"` Detail *UserDetail `bun:"rel:belongs-to,join:user_id=id" json:"-"`
} }

View File

@ -1,6 +1,9 @@
package model package model
import ( import (
"context"
"time"
"github.com/shopspring/decimal" "github.com/shopspring/decimal"
"github.com/uptrace/bun" "github.com/uptrace/bun"
) )
@ -12,7 +15,21 @@ type WillDilutedFee struct {
ReportId string `bun:",notnull" json:"reportId"` ReportId string `bun:",notnull" json:"reportId"`
SourceId *string `json:"sourceId"` SourceId *string `json:"sourceId"`
Name string `bun:",notnull" json:"name"` Name string `bun:",notnull" json:"name"`
Fee decimal.Decimal `bun:",notnull,default:0" json:"fee"` Fee decimal.Decimal `bun:",notnull" json:"fee"`
Memo *string `bun:"type:text" json:"memo"` Memo *string `bun:"type:text" json:"memo"`
Origin *MaintenanceFee `bun:"rel:belongs-to,join:source_id=id"` Origin *MaintenanceFee `bun:"rel:belongs-to,join:source_id=id"`
} }
var _ bun.BeforeAppendModelHook = (*WillDilutedFee)(nil)
func (d *WillDilutedFee) BeforeAppendModel(ctx context.Context, query bun.Query) error {
oprTime := time.Now()
switch query.(type) {
case *bun.InsertQuery:
d.CreatedAt = oprTime
d.LastModifiedAt = &oprTime
case *bun.UpdateQuery:
d.LastModifiedAt = &oprTime
}
return nil
}

View File

@ -120,7 +120,7 @@ func (_EndUserService) UpdateEndUserRegisterRecord(tx *bun.Tx, ctx *context.Cont
"current_period_critical", "current_period_critical",
"current_period_peak", "current_period_peak",
"current_period_flat", "current_period_flat",
"current_perios_valley", "current_period_valley",
"adjust_critical", "adjust_critical",
"adjust_peak", "adjust_peak",
"adjust_flat", "adjust_flat",

View File

@ -36,37 +36,34 @@ func (_ReportService) FetchParksWithNewestReport(uid string) ([]model.ParkNewest
ctx, cancel := global.TimeoutContext() ctx, cancel := global.TimeoutContext()
defer cancel() defer cancel()
reports := make([]model.Report, 0) parks := make([]model.Park, 0)
err := global.DB.NewSelect().Model(&reports).Relation("Park"). err := global.DB.NewSelect().Model(&parks).Relation("Reports").
Where("p.user_id = ?", uid). Where("user_id = ?", uid).
Where("p.enabled = ?", true). Where("enabled = ?", true).
Order("created_at asc").
Scan(ctx) Scan(ctx)
if err != nil { if err != nil {
return make([]model.ParkNewestReport, 0), err return make([]model.ParkNewestReport, 0), err
} }
reducedParks := lo.Reduce( reducedParks := lo.Reduce(
reports, parks,
func(acc map[string]model.ParkNewestReport, elem model.Report, index int) map[string]model.ParkNewestReport { func(acc map[string]model.ParkNewestReport, elem model.Park, index int) map[string]model.ParkNewestReport {
if v, ok := acc[elem.Park.Id]; ok { if _, ok := acc[elem.Id]; !ok {
if v.Report == nil || (elem.Period.After(v.Report.Period)) { newestReport := lo.MaxBy(elem.Reports, func(a, b *model.Report) bool {
acc[elem.Park.Id] = model.ParkNewestReport{ return a.Period.After(b.Period)
Report: &elem, })
Park: *elem.Park, acc[elem.Id] = model.ParkNewestReport{
} Report: newestReport,
} Park: elem,
} else {
acc[elem.Park.Id] = model.ParkNewestReport{
Report: &elem,
Park: *elem.Park,
} }
} }
return acc return acc
}, },
make(map[string]model.ParkNewestReport, 0), make(map[string]model.ParkNewestReport, 0),
) )
relations := lo.Map(reports, func(r model.Report, _ int) string { relations := lo.Map(parks, func(r model.Park, _ int) string {
return fmt.Sprintf("report:%s", r.Id) return fmt.Sprintf("park:%s", r.Id)
}) })
relations = append(relations, "park", "report") relations = append(relations, "park", "report")
cache.CacheSearch(reducedParks, relations, "park_newest_report", uid) cache.CacheSearch(reducedParks, relations, "park_newest_report", uid)
@ -81,11 +78,11 @@ func (_ReportService) IsNewPeriodValid(uid, pid string, period time.Time) (bool,
reports = *cachedReport reports = *cachedReport
} else { } else {
err := global.DB.NewSelect().Model(&reports).Relation("Park"). err := global.DB.NewSelect().Model(&reports).Relation("Park").
Where("p.user_id = ?", uid). Where("park.user_id = ?", uid).
Where("r.park_id = ?", pid). Where("r.park_id = ?", pid).
Scan(ctx) Scan(ctx)
if err != nil { if err != nil {
return false, nil return false, err
} }
cache.CacheSearch(reports, []string{"report", "park"}, "park", "user", uid, "park", pid) cache.CacheSearch(reports, []string{"report", "park"}, "park", "user", uid, "park", pid)
} }
@ -430,7 +427,8 @@ func (_ReportService) UpdateMaintenanceFee(feeId string, updates map[string]inte
ctx, cancel := global.TimeoutContext() ctx, cancel := global.TimeoutContext()
defer cancel() defer cancel()
_, err = global.DB.NewUpdate().Model(updates).TableExpr("will_diluted_fee"). updates["last_modified_at"] = lo.ToPtr(time.Now())
_, err = global.DB.NewUpdate().Model(&updates).TableExpr("will_diluted_fee").
Where("id = ?", feeId). Where("id = ?", feeId).
Exec(ctx) Exec(ctx)
cache.AbolishRelation(fmt.Sprintf("will_diluted_fee:%s", feeId)) cache.AbolishRelation(fmt.Sprintf("will_diluted_fee:%s", feeId))
@ -454,6 +452,7 @@ func (_ReportService) ProgressReportWillDilutedFee(report model.Report) (err err
report.StepState.WillDiluted = true report.StepState.WillDiluted = true
_, err = global.DB.NewUpdate().Model(&report). _, err = global.DB.NewUpdate().Model(&report).
WherePK().
Column("step_state"). Column("step_state").
Exec(ctx) Exec(ctx)
cache.AbolishRelation(fmt.Sprintf("report:%s", report.Id)) cache.AbolishRelation(fmt.Sprintf("report:%s", report.Id))
@ -466,6 +465,7 @@ func (_ReportService) ProgressReportRegisterEndUser(report model.Report) (err er
report.StepState.Submeter = true report.StepState.Submeter = true
_, err = global.DB.NewUpdate().Model(&report). _, err = global.DB.NewUpdate().Model(&report).
WherePK().
Column("step_state"). Column("step_state").
Exec(ctx) Exec(ctx)
cache.AbolishRelation(fmt.Sprintf("report:%s", report.Id)) cache.AbolishRelation(fmt.Sprintf("report:%s", report.Id))
@ -478,6 +478,7 @@ func (_ReportService) ProgressReportCalculate(report model.Report) (err error) {
report.StepState.Calculate = true report.StepState.Calculate = true
_, err = global.DB.NewUpdate().Model(&report). _, err = global.DB.NewUpdate().Model(&report).
WherePK().
Column("step_state"). Column("step_state").
Exec(ctx) Exec(ctx)
cache.AbolishRelation(fmt.Sprintf("report:%s", report.Id)) cache.AbolishRelation(fmt.Sprintf("report:%s", report.Id))
@ -492,7 +493,11 @@ func (_ReportService) RetreiveParkEndUserMeterType(reportId string) (int, error)
defer cancel() defer cancel()
var mType int var mType int
err := global.DB.NewSelect().Model((*model.Report)(nil)).Relation("Park"). err := global.DB.NewSelect().Model((*model.Report)(nil)).
Relation("Park", func(q *bun.SelectQuery) *bun.SelectQuery {
return q.Column("meter_04kv_type")
}).
ExcludeColumn("*").
Where("r.id = ?", reportId). Where("r.id = ?", reportId).
Scan(ctx, &mType) Scan(ctx, &mType)
if err != nil { if err != nil {
@ -597,14 +602,19 @@ func (_ReportService) AssembleReportPublicity(reportId string) (*model.Publicity
var report = new(model.Report) var report = new(model.Report)
err := global.DB.NewSelect().Model(report). err := global.DB.NewSelect().Model(report).
Relation("Summary").Relation("WillDilutedFees").Relation("EndUsers"). Relation("Summary").Relation("WillDilutedFees").Relation("EndUsers").
Relation("Park", func(q *bun.SelectQuery) *bun.SelectQuery { Relation("Park").
return q.Relation("Enterprise") Where("r.id = ?", reportId).
}).
Where("id = ?", reportId).
Scan(ctx) Scan(ctx)
if err != nil || report == nil { if err != nil {
return nil, exceptions.NewNotFoundErrorFromError("未找到指定的公示报表", err) return nil, exceptions.NewNotFoundErrorFromError("未找到指定的公示报表", err)
} }
var enterprise = new(model.UserDetail)
err = global.DB.NewSelect().Model(enterprise).
Where("id = ?", report.Park.UserId).
Scan(ctx)
if err != nil {
return nil, exceptions.NewNotFoundErrorFromError("未找到指定公示报表对应的用户信息", err)
}
// 组合数据 // 组合数据
paidPart := model.PaidPart{ paidPart := model.PaidPart{
@ -719,7 +729,7 @@ func (_ReportService) AssembleReportPublicity(reportId string) (*model.Publicity
publicity := &model.Publicity{ publicity := &model.Publicity{
Report: *report, Report: *report,
Park: *report.Park, Park: *report.Park,
User: *report.Park.Enterprise, User: *enterprise,
Paid: paidPart, Paid: paidPart,
EndUser: endUserSummary, EndUser: endUserSummary,
Loss: lossPart, Loss: lossPart,