Fix product performance grouped JSON build
This commit is contained in:
@@ -793,6 +793,82 @@ ORDER BY SonIsEmri.dteIslemTarihi DESC, LTRIM(RTRIM(R.sMModelKodu)) ASC
|
||||
return uretimDB.QueryContext(ctx, sqlText, fromDate, search)
|
||||
}
|
||||
|
||||
type ArgeBaggiDepotEntryTotals struct {
|
||||
Ceket float64
|
||||
Pantolon float64
|
||||
Yelek float64
|
||||
}
|
||||
|
||||
// GetArgeBaggiDepotEntryTotals returns operation 985/986/987 quantities keyed
|
||||
// by production work order. The requested work orders are queried in one batch
|
||||
// to avoid an ArgeBAGGI round trip for every list row.
|
||||
func GetArgeBaggiDepotEntryTotals(ctx context.Context, argeDB *sql.DB, workOrders []string) (map[string]ArgeBaggiDepotEntryTotals, error) {
|
||||
out := make(map[string]ArgeBaggiDepotEntryTotals)
|
||||
if argeDB == nil || len(workOrders) == 0 {
|
||||
return out, nil
|
||||
}
|
||||
|
||||
seen := make(map[string]struct{}, len(workOrders))
|
||||
values := make([]string, 0, len(workOrders))
|
||||
for _, raw := range workOrders {
|
||||
value := strings.TrimSpace(raw)
|
||||
if value == "" || value == "0" {
|
||||
continue
|
||||
}
|
||||
if _, exists := seen[value]; exists {
|
||||
continue
|
||||
}
|
||||
seen[value] = struct{}{}
|
||||
values = append(values, value)
|
||||
}
|
||||
if len(values) == 0 {
|
||||
return out, nil
|
||||
}
|
||||
|
||||
placeholders := make([]string, 0, len(values))
|
||||
args := make([]any, 0, len(values))
|
||||
for i, value := range values {
|
||||
placeholders = append(placeholders, fmt.Sprintf("@p%d", i+1))
|
||||
args = append(args, value)
|
||||
}
|
||||
|
||||
sqlText := fmt.Sprintf(`
|
||||
SELECT
|
||||
LTRIM(RTRIM(CONVERT(VARCHAR(64), MN.model_adi))) AS IsEmriNo,
|
||||
SUM(CASE WHEN O.oper_num = 985 THEN CONVERT(float, B.adet) ELSE 0 END) AS CeketDepoGiris,
|
||||
SUM(CASE WHEN O.oper_num = 986 THEN CONVERT(float, B.adet) ELSE 0 END) AS PantolonDepoGiris,
|
||||
SUM(CASE WHEN O.oper_num = 987 THEN CONVERT(float, B.adet) ELSE 0 END) AS YelekDepoGiris
|
||||
FROM dbo.is_acma_bar B
|
||||
INNER JOIN dbo.is_acma I ON I.is_num = B.is_num
|
||||
INNER JOIN dbo.model_def MD ON I.imdef_num = MD.mdef_num
|
||||
INNER JOIN dbo.oper_urun_no O ON B.oper_num = O.oper_num
|
||||
INNER JOIN dbo.model_num MN ON I.model_num = MN.model_num
|
||||
INNER JOIN dbo.bant_no BN ON I.bant_num = BN.bant_no
|
||||
INNER JOIN dbo.model_oper MO ON O.oper_num = MO.oper_num AND MD.mdef_num = MO.model_num
|
||||
INNER JOIN dbo.model_oper_tkp_def TD ON MO.tkp_cik = TD.tkp_cik
|
||||
WHERE B.tarih >= '2025-01-01'
|
||||
AND TD.tkp_cik IN (1,2,3,4,5)
|
||||
AND O.oper_num IN (985,986,987)
|
||||
AND LTRIM(RTRIM(CONVERT(VARCHAR(64), MN.model_adi))) IN (%s)
|
||||
GROUP BY LTRIM(RTRIM(CONVERT(VARCHAR(64), MN.model_adi)))
|
||||
`, strings.Join(placeholders, ","))
|
||||
|
||||
rows, err := argeDB.QueryContext(ctx, sqlText, args...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var workOrder string
|
||||
var totals ArgeBaggiDepotEntryTotals
|
||||
if err := rows.Scan(&workOrder, &totals.Ceket, &totals.Pantolon, &totals.Yelek); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
out[strings.TrimSpace(workOrder)] = totals
|
||||
}
|
||||
return out, rows.Err()
|
||||
}
|
||||
|
||||
func GetProductionHasCostProducts(
|
||||
ctx context.Context,
|
||||
uretimDB *sql.DB,
|
||||
@@ -816,12 +892,22 @@ WITH SonOnMaliyet AS (
|
||||
FROM dbo.spUrtOnMLMas M
|
||||
WHERE LTRIM(RTRIM(M.UrunKodu)) <> ''
|
||||
),
|
||||
SonSiparis AS (
|
||||
SonSiparisSirali AS (
|
||||
SELECT
|
||||
LTRIM(RTRIM(sMModelKodu)) AS UrunKodu,
|
||||
MAX(dteIslemTarihi) AS SonSiparisTarihi
|
||||
FROM dbo.spUrtSiparisDet
|
||||
GROUP BY LTRIM(RTRIM(sMModelKodu))
|
||||
LTRIM(RTRIM(SD.sMModelKodu)) AS UrunKodu,
|
||||
SD.dteIslemTarihi AS SonSiparisTarihi,
|
||||
SM.nUrtSiparisNo,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY LTRIM(RTRIM(SD.sMModelKodu))
|
||||
ORDER BY SD.dteIslemTarihi DESC, SD.nUrtSiparisID DESC
|
||||
) AS rn
|
||||
FROM dbo.spUrtSiparisDet SD
|
||||
INNER JOIN dbo.spUrtSiparis SM ON SM.nUrtSiparisID = SD.nUrtSiparisID
|
||||
),
|
||||
SonSiparis AS (
|
||||
SELECT UrunKodu, SonSiparisTarihi, nUrtSiparisNo
|
||||
FROM SonSiparisSirali
|
||||
WHERE rn = 1
|
||||
)
|
||||
SELECT
|
||||
CASE
|
||||
@@ -831,6 +917,7 @@ SELECT
|
||||
THEN N'FASON ICIN URETILEN'
|
||||
ELSE N'Tanimsiz'
|
||||
END AS UretimSekli,
|
||||
RTRIM(CONVERT(VARCHAR(32), ISNULL(SS.nUrtSiparisNo, 0))) AS nUrtSiparisNo,
|
||||
RTRIM(CONVERT(VARCHAR(32), ISNULL(OM.nOnMLNo, 0))) AS nOnMLNo,
|
||||
LTRIM(RTRIM(ISNULL(OM.UrunKodu, ''))) AS UrunKodu,
|
||||
ISNULL(OM.UrunAdi, '') AS UrunAdi,
|
||||
|
||||
Reference in New Issue
Block a user