Subversion Repositories SmartDukaan

Rev

Rev 35453 | Rev 35631 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 35453 Rev 35454
Line 260... Line 260...
260
 
260
 
261
        List<RbmArrViewModel> rbmArrViewModels = new ArrayList<>();
261
        List<RbmArrViewModel> rbmArrViewModels = new ArrayList<>();
262
 
262
 
263
        if (!todayRbmTargetsList.isEmpty()) {
263
        if (!todayRbmTargetsList.isEmpty()) {
264
 
264
 
-
 
265
            // OPTIMIZED: Pre-build maps for O(1) lookup instead of O(n) filter in each iteration
-
 
266
            // Map key: "authId-warehouseId"
-
 
267
            Map<String, Double> mtdAchievedMap = mtdAchievedTargetModels.stream()
-
 
268
                    .collect(Collectors.groupingBy(
-
 
269
                            x -> x.getAuthId() + "-" + x.getWarehouseId(),
-
 
270
                            Collectors.summingDouble(MTDAchievedTargetModel::getAcheivedMonthlyTarget)
-
 
271
                    ));
-
 
272
 
-
 
273
            Map<String, TodayAchievedMovementModel> todayAchievedMap = todayAchievedMovementModels.stream()
-
 
274
                    .collect(Collectors.toMap(
-
 
275
                            x -> x.getAuthId() + "-" + x.getWarehouseId(),
-
 
276
                            x -> x,
-
 
277
                            (a, b) -> a
-
 
278
                    ));
-
 
279
 
-
 
280
            Map<String, RbmTargets> todayRbmTargetsMap = todayRbmTargetsList.stream()
-
 
281
                    .collect(Collectors.toMap(
-
 
282
                            x -> x.getRbmAuthId() + "-" + x.getWarehouseId(),
-
 
283
                            x -> x,
-
 
284
                            (a, b) -> a
-
 
285
                    ));
-
 
286
 
265
            for (WarehouseRbmTargetModel rbmTarget : warehouseRbmTargetModels) {
287
            for (WarehouseRbmTargetModel rbmTarget : warehouseRbmTargetModels) {
266
 
288
 
-
 
289
                String lookupKey = rbmTarget.getAuthId() + "-" + rbmTarget.getWarehouseId();
-
 
290
 
267
                float monthlyTarget = rbmTarget.getMonthlyTarget();
291
                float monthlyTarget = rbmTarget.getMonthlyTarget();
268
                float achievedSoFar = (float) mtdAchievedTargetModels.stream()
292
                float achievedSoFar = mtdAchievedMap.getOrDefault(lookupKey, 0.0).floatValue();
269
                        .filter(x -> x.getAuthId() == rbmTarget.getAuthId() && x.getWarehouseId() == rbmTarget.getWarehouseId())
-
 
270
                        .mapToDouble(MTDAchievedTargetModel::getAcheivedMonthlyTarget)
-
 
271
                        .sum();
-
 
272
 
293
 
273
                float remainingTarget = monthlyTarget - achievedSoFar;
294
                float remainingTarget = monthlyTarget - achievedSoFar;
274
 
295
 
275
                float todayTarget = (remainingWorkingDaysCount > 0 && remainingTarget > 0) ? remainingTarget / remainingWorkingDaysCount : 0;
296
                float todayTarget = (remainingWorkingDaysCount > 0 && remainingTarget > 0) ? remainingTarget / remainingWorkingDaysCount : 0;
276
 
297
 
277
                String warehouseName = ProfitMandiConstants.WAREHOUSE_MAP.getOrDefault(rbmTarget.getWarehouseId(), "Unknown");
298
                String warehouseName = ProfitMandiConstants.WAREHOUSE_MAP.getOrDefault(rbmTarget.getWarehouseId(), "Unknown");
278
 
299
 
279
                LOGGER.info("rbmTarget ==== {}", rbmTarget);
300
                LOGGER.info("rbmTarget ==== {}", rbmTarget);
280
 
301
 
281
                TodayAchievedMovementModel todayAchievedMovementModel = todayAchievedMovementModels.stream()
302
                TodayAchievedMovementModel todayAchievedMovementModel = todayAchievedMap.get(lookupKey);
282
                        .filter(x -> x.getAuthId() == rbmTarget.getAuthId() && x.getWarehouseId() == rbmTarget.getWarehouseId())
-
 
283
                        .findFirst()
-
 
284
                        .orElse(null);
-
 
285
 
-
 
286
 
303
 
287
                Optional<RbmTargets> optionalTodayRbmTargets = todayRbmTargetsList.stream()
304
                RbmTargets todayRbmTargets = todayRbmTargetsMap.get(lookupKey);
288
                        .filter(x -> x.getRbmAuthId() == rbmTarget.getAuthId() && x.getWarehouseId() == rbmTarget.getWarehouseId())
-
 
289
                        .findFirst();
-
 
290
 
305
 
291
                if (optionalTodayRbmTargets.isPresent()) {
306
                if (todayRbmTargets != null) {
292
                    RbmTargets todayRbmTargets = optionalTodayRbmTargets.get();
-
 
293
                    LOGGER.info("todayRbmTargets {}", todayRbmTargets);
307
                    LOGGER.info("todayRbmTargets {}", todayRbmTargets);
294
                    RbmArrViewModel viewModel = new RbmArrViewModel();
308
                    RbmArrViewModel viewModel = new RbmArrViewModel();
295
 
309
 
296
                    viewModel.setAuthId(rbmTarget.getAuthId());
310
                    viewModel.setAuthId(rbmTarget.getAuthId());
297
                    viewModel.setRbmName(rbmTarget.getRbmName());
311
                    viewModel.setRbmName(rbmTarget.getRbmName());
Line 348... Line 362...
348
 
362
 
349
        int remainingWorkingDaysCount = (int) getRemainingDaysInMonth(todayDate);
363
        int remainingWorkingDaysCount = (int) getRemainingDaysInMonth(todayDate);
350
 
364
 
351
        List<WarehouseMobileStockByMovementModel> warehouseMobileStockByMovementModels = getWarehouseMobileStockByMovement();
365
        List<WarehouseMobileStockByMovementModel> warehouseMobileStockByMovementModels = getWarehouseMobileStockByMovement();
352
 
366
 
-
 
367
        // OPTIMIZED: Pre-build maps for O(1) lookup instead of O(n) filter in each iteration
-
 
368
        Map<String, Double> mtdAchievedMap = mtdAchievedTargetModels.stream()
-
 
369
                .collect(Collectors.groupingBy(
-
 
370
                        x -> x.getAuthId() + "-" + x.getWarehouseId(),
-
 
371
                        Collectors.summingDouble(MTDAchievedTargetModel::getAcheivedMonthlyTarget)
-
 
372
                ));
-
 
373
 
-
 
374
        Map<Integer, WarehouseMobileStockByMovementModel> warehouseStockMap = warehouseMobileStockByMovementModels.stream()
-
 
375
                .collect(Collectors.toMap(
-
 
376
                        WarehouseMobileStockByMovementModel::getWarehouseId,
-
 
377
                        x -> x,
-
 
378
                        (a, b) -> a
-
 
379
                ));
-
 
380
 
353
        for (WarehouseRbmTargetModel rbmTarget : warehouseRbmTargetModels) {
381
        for (WarehouseRbmTargetModel rbmTarget : warehouseRbmTargetModels) {
354
 
382
 
-
 
383
            String lookupKey = rbmTarget.getAuthId() + "-" + rbmTarget.getWarehouseId();
-
 
384
 
355
            float monthlyTarget = rbmTarget.getMonthlyTarget();
385
            float monthlyTarget = rbmTarget.getMonthlyTarget();
356
            float achievedSoFar = (float) mtdAchievedTargetModels.stream()
386
            float achievedSoFar = mtdAchievedMap.getOrDefault(lookupKey, 0.0).floatValue();
357
                    .filter(x -> x.getAuthId() == rbmTarget.getAuthId() && x.getWarehouseId() == rbmTarget.getWarehouseId())
-
 
358
                    .mapToDouble(MTDAchievedTargetModel::getAcheivedMonthlyTarget)
-
 
359
                    .sum();
-
 
360
 
387
 
361
 
388
 
362
            float remainingTarget = monthlyTarget - achievedSoFar;
389
            float remainingTarget = monthlyTarget - achievedSoFar;
363
            LOGGER.info("remainingTarget {}", remainingTarget);
390
            LOGGER.info("remainingTarget {}", remainingTarget);
364
 
391
 
365
            float todayTarget = (remainingWorkingDaysCount > 0 && remainingTarget > 0) ? remainingTarget / remainingWorkingDaysCount : 0;
392
            float todayTarget = (remainingWorkingDaysCount > 0 && remainingTarget > 0) ? remainingTarget / remainingWorkingDaysCount : 0;
366
            LOGGER.info("todayTarget {}", todayTarget);
393
            LOGGER.info("todayTarget {}", todayTarget);
367
 
394
 
368
            // Get the warehouse stock data
395
            // Get the warehouse stock data
369
            WarehouseMobileStockByMovementModel warehouseMobileStockByMovementModel = warehouseMobileStockByMovementModels.stream()
396
            WarehouseMobileStockByMovementModel warehouseMobileStockByMovementModel = warehouseStockMap.get(rbmTarget.getWarehouseId());
370
                    .filter(x -> x.getWarehouseId() == rbmTarget.getWarehouseId()).findFirst().orElse(null);
-
 
371
 
397
 
372
 
398
 
373
            if (warehouseMobileStockByMovementModel != null) {
399
            if (warehouseMobileStockByMovementModel != null) {
374
 
400
 
375
                // Total stock value for this warehouse
401
                // Total stock value for this warehouse