Merge remote-tracking branch 'origin/master'
This commit is contained in:
91
svc/queries/account_balance_fast.go
Normal file
91
svc/queries/account_balance_fast.go
Normal file
@@ -0,0 +1,91 @@
|
||||
package queries
|
||||
|
||||
import (
|
||||
"bssapp-backend/models"
|
||||
"context"
|
||||
)
|
||||
|
||||
func GetCustomerBalanceList(
|
||||
ctx context.Context,
|
||||
params models.CustomerBalanceListParams,
|
||||
) ([]models.CustomerBalanceListRow, error) {
|
||||
|
||||
//------------------------------------------------
|
||||
// 1️⃣ DATA ÇEK
|
||||
//------------------------------------------------
|
||||
|
||||
balances, err := getFastBalances(ctx, params.SelectedDate)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
masterMap, err := getCariMasterMap(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
//------------------------------------------------
|
||||
// 2️⃣ MERGE
|
||||
//------------------------------------------------
|
||||
|
||||
resultMap := make(map[string]*models.CustomerBalanceListRow)
|
||||
|
||||
for _, b := range balances {
|
||||
|
||||
key := b.CariKodu + "|" + b.CariDoviz
|
||||
|
||||
r, ok := resultMap[key]
|
||||
if !ok {
|
||||
|
||||
r = &models.CustomerBalanceListRow{
|
||||
CariKodu: b.CariKodu,
|
||||
CariDoviz: b.CariDoviz,
|
||||
}
|
||||
|
||||
// Master
|
||||
if m, ok := masterMap[b.CariKodu]; ok {
|
||||
|
||||
r.CariDetay = m.CariDetay
|
||||
r.Piyasa = m.Piyasa
|
||||
r.Temsilci = m.Temsilci
|
||||
|
||||
r.Ozellik03 = m.Ozellik03
|
||||
r.Ozellik05 = m.Ozellik05
|
||||
r.Ozellik06 = m.Ozellik06
|
||||
r.Ozellik07 = m.Ozellik07
|
||||
r.CariIlkGrup = m.Ozellik08
|
||||
}
|
||||
|
||||
resultMap[key] = r
|
||||
}
|
||||
|
||||
//------------------------------------------------
|
||||
// 3️⃣ TOPLA
|
||||
//------------------------------------------------
|
||||
|
||||
if b.PislemTipi == "1_2" {
|
||||
|
||||
r.Bakiye12 += b.Bakiye
|
||||
r.TLBakiye12 += b.KurBakiye
|
||||
r.USDBakiye12 += b.KurBakiye / b.UsdKur
|
||||
|
||||
} else if b.PislemTipi == "1_3" {
|
||||
|
||||
r.Bakiye13 += b.Bakiye
|
||||
r.TLBakiye13 += b.KurBakiye
|
||||
r.USDBakiye13 += b.KurBakiye / b.UsdKur
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------
|
||||
// 4️⃣ SLICE DÖN
|
||||
//------------------------------------------------
|
||||
|
||||
out := make([]models.CustomerBalanceListRow, 0, len(resultMap))
|
||||
|
||||
for _, v := range resultMap {
|
||||
out = append(out, *v)
|
||||
}
|
||||
|
||||
return out, nil
|
||||
}
|
||||
Reference in New Issue
Block a user