enhance(enduser):精简终端表计统计所使用的查询语句。

This commit is contained in:
徐涛 2022-09-23 10:26:36 +08:00
parent 2ba64227d0
commit 0169419707
2 changed files with 9 additions and 7 deletions

View File

@ -116,6 +116,7 @@ type EndUserImport struct {
type EndUserPeriodStat struct { type EndUserPeriodStat struct {
CustomerName string `json:"customerName"` CustomerName string `json:"customerName"`
Address string `json:"address"` Address string `json:"address"`
ParkId string `json:"parkId"`
MeterId string `bun:"meter_04kv_id" json:"meterId"` MeterId string `bun:"meter_04kv_id" json:"meterId"`
IsPublicMeter bool `bun:"public_meter" json:"isPublicMeter"` IsPublicMeter bool `bun:"public_meter" json:"isPublicMeter"`
Kind int8 `bun:"-" json:"pvKind"` Kind int8 `bun:"-" json:"pvKind"`

View File

@ -410,7 +410,7 @@ func (es _EndUserService) StatEndUserRecordInPeriod(requestUser, requestPark, st
ctx, cancel := global.TimeoutContext(120) ctx, cancel := global.TimeoutContext(120)
defer cancel() defer cancel()
var endUserSums []model.EndUserPeriodStat var endUserSums []model.EndUserPeriodStat
err := cond.Column("eud.meter_04kv_id"). err := cond.Column("eud.meter_04kv_id", "eud.park_id").
ColumnExpr("sum(?) as overall", bun.Ident("eud.overall")). ColumnExpr("sum(?) as overall", bun.Ident("eud.overall")).
ColumnExpr("sum(?) as overall_fee", bun.Ident("eud.overall_fee")). ColumnExpr("sum(?) as overall_fee", bun.Ident("eud.overall_fee")).
ColumnExpr("sum(?) as critical", bun.Ident("eud.critical")). ColumnExpr("sum(?) as critical", bun.Ident("eud.critical")).
@ -421,23 +421,24 @@ func (es _EndUserService) StatEndUserRecordInPeriod(requestUser, requestPark, st
ColumnExpr("sum(?) as valley_fee", bun.Ident("eud.valley_fee")). ColumnExpr("sum(?) as valley_fee", bun.Ident("eud.valley_fee")).
ColumnExpr("sum(?) as final_diluted", bun.Ident("eud.final_diluted")). ColumnExpr("sum(?) as final_diluted", bun.Ident("eud.final_diluted")).
Where("report.published = ?", true). Where("report.published = ?", true).
Group("eud.meter_04kv_id"). Group("eud.meter_04kv_id", "eud.park_id").
Scan(ctx, &endUserSums) Scan(ctx, &endUserSums)
if err != nil { if err != nil {
return make([]model.EndUserPeriodStat, 0), fmt.Errorf("未能完成终端用户在指定期限内的统计,%w", err) return make([]model.EndUserPeriodStat, 0), fmt.Errorf("未能完成终端用户在指定期限内的统计,%w", err)
} }
meterIds := lo.Reduce( parkIds := lo.Reduce(
endUserSums, endUserSums,
func(acc mapset.Set[string], elem model.EndUserPeriodStat, _ int) mapset.Set[string] { func(acc mapset.Set[string], elem model.EndUserPeriodStat, _ int) mapset.Set[string] {
acc.Add(elem.MeterId) acc.Add(elem.ParkId)
return acc return acc
}, },
mapset.NewSet[string](), mapset.NewSet[string](),
) )
meterArchives := make([]model.Meter04KV, 0) meterArchives := make([]model.Meter04KV, 0)
if len(meterIds.ToSlice()) > 0 { if len(parkIds.ToSlice()) > 0 {
err = global.DB.NewSelect().Model(&meterArchives).Relation("ParkDetail"). err = global.DB.NewSelect().
Where("code in (?)", bun.In(meterIds.ToSlice())). Model(&meterArchives).Relation("ParkDetail").
Where("park_id in (?)", bun.In(parkIds.ToSlice())).
Scan(ctx) Scan(ctx)
if err != nil { if err != nil {
return make([]model.EndUserPeriodStat, 0), fmt.Errorf("未能获取到终端表计的最新基础档案,%w", err) return make([]model.EndUserPeriodStat, 0), fmt.Errorf("未能获取到终端表计的最新基础档案,%w", err)