Subversion Repositories SmartDukaan

Rev

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

Rev 35559 Rev 35629
Line 1407... Line 1407...
1407
            }
1407
            }
1408
        }
1408
        }
1409
    }
1409
    }
1410
 
1410
 
1411
    @Override
1411
    @Override
-
 
1412
    public void rejectActivatedSchemeIds(List<Integer> schemeIds) throws ProfitMandiBusinessException {
-
 
1413
        List<SchemeInOut> schemeInOuts = schemeInOutRepository.selectBySchemeIds(new HashSet<>(schemeIds));
-
 
1414
        // Filter to CREDITED records that haven't been rolled back
-
 
1415
        List<SchemeInOut> creditedPayouts = schemeInOuts.stream()
-
 
1416
                .filter(x -> SchemePayoutStatus.CREDITED.equals(x.getStatus()) && x.getRolledBackTimestamp() == null)
-
 
1417
                .collect(Collectors.toList());
-
 
1418
        if (creditedPayouts.isEmpty()) return;
-
 
1419
 
-
 
1420
        Map<Integer, Scheme> schemesMap = schemeRepository.selectBySchemeIds(schemeIds).stream()
-
 
1421
                .filter(x -> SchemeType.SPECIAL_SUPPORT.equals(x.getType()))
-
 
1422
                .collect(Collectors.toMap(x -> x.getId(), x -> x));
-
 
1423
        creditedPayouts = creditedPayouts.stream().filter(x -> schemesMap.containsKey(x.getSchemeId()))
-
 
1424
                .collect(Collectors.toList());
-
 
1425
        if (creditedPayouts.isEmpty()) return;
-
 
1426
 
-
 
1427
        Set<Integer> inventoryIds = creditedPayouts.stream().map(SchemeInOut::getInventoryItemId).collect(Collectors.toSet());
-
 
1428
        Map<Integer, InventoryItem> inventoryItemMap = inventoryItemRepository.selectByIds(inventoryIds).stream()
-
 
1429
                .collect(Collectors.toMap(x -> x.getId(), x -> x));
-
 
1430
        List<String> serialNumbers = inventoryItemMap.values().stream().map(InventoryItem::getSerialNumber).collect(Collectors.toList());
-
 
1431
        Map<String, ActivatedImei> activatedImeiMap = activatedImeiRepository.selectBySerialNumbers(serialNumbers).stream()
-
 
1432
                .collect(Collectors.toMap(x -> x.getSerialNumber().toLowerCase(), x -> x, (a, b) -> a));
-
 
1433
 
-
 
1434
        for (SchemeInOut payout : creditedPayouts) {
-
 
1435
            Scheme scheme = schemesMap.get(payout.getSchemeId());
-
 
1436
            InventoryItem ii = inventoryItemMap.get(payout.getInventoryItemId());
-
 
1437
            if (ii == null) continue;
-
 
1438
            ActivatedImei activatedImei = activatedImeiMap.get(ii.getSerialNumber().toLowerCase());
-
 
1439
            if (activatedImei == null || activatedImei.getActivationTimestamp() == null) continue;
-
 
1440
 
-
 
1441
            if (!scheme.isWithinRange(activatedImei.getActivationTimestamp())) {
-
 
1442
                payout.setStatus(SchemePayoutStatus.REJECTED);
-
 
1443
                payout.setRolledBackTimestamp(LocalDateTime.now());
-
 
1444
                payout.setStatusDescription("Rejected, activation on " + FormattingUtils.formatDate(activatedImei.getActivationTimestamp()) + " outside scheme period");
-
 
1445
 
-
 
1446
                List<ScanRecord> scanRecords = scanRecordRepository.selectByInventoryItemId(ii.getId());
-
 
1447
                int orderId = scanRecords.stream()
-
 
1448
                        .filter(x -> x.getOrderId() > 0)
-
 
1449
                        .sorted(Comparator.comparing(ScanRecord::getCreateTimestamp).reversed()).findFirst()
-
 
1450
                        .map(ScanRecord::getOrderId).orElse(0);
-
 
1451
                if (orderId > 0) {
-
 
1452
                    walletService.rollbackAmountFromWallet(ii.getFofoId(), payout.getAmount(), orderId,
-
 
1453
                            WalletReferenceType.SPECIAL_SUPPORT,
-
 
1454
                            "Rejected, activation on " + FormattingUtils.formatDate(activatedImei.getActivationTimestamp()) + " outside scheme period",
-
 
1455
                            LocalDateTime.now());
-
 
1456
                }
-
 
1457
            }
-
 
1458
        }
-
 
1459
    }
-
 
1460
 
-
 
1461
    @Override
1412
    public void processActivatedImeisForSchemes() throws ProfitMandiBusinessException {
1462
    public void processActivatedImeisForSchemes() throws ProfitMandiBusinessException {
1413
        List<SchemesImeisModel> schemesImeisModels = schemeRepository.selectSelectUnpaidSchemes();
1463
        List<SchemesImeisModel> schemesImeisModels = schemeRepository.selectSelectUnpaidSchemes();
1414
        LOGGER.info("Total Size - " + schemesImeisModels.size());
1464
        LOGGER.info("Total Size - " + schemesImeisModels.size());
1415
        List<Integer> orderIds = schemesImeisModels.stream().map(x -> x.getOrderId()).collect(Collectors.toList());
1465
        List<Integer> orderIds = schemesImeisModels.stream().map(x -> x.getOrderId()).collect(Collectors.toList());
1416
        List<FofoOrder> fofoOrders = fofoOrderRepository.selectAllByOrderIds(orderIds);
1466
        List<FofoOrder> fofoOrders = fofoOrderRepository.selectAllByOrderIds(orderIds);