| 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);
|