Сессия по возвратам депозитов проверка средств (шаг 5) формирование PaymentInstruction (шаг 7)

This commit is contained in:
ialbert 2023-06-29 14:16:00 +03:00
parent 27e9c75e78
commit d63d080023
2 changed files with 19 additions and 14 deletions

View file

@ -34,7 +34,7 @@ public class ReturnDepositSession extends AbstractSession implements Initializin
private final InclusionObligations inclusionObligations; private final InclusionObligations inclusionObligations;
private final InspectionObligationsDepositReturn inspectionObligationsDepositReturn; private final InspectionObligationsDepositReturn inspectionObligationsDepositReturn;
private final FormingRegistersOnOS formingRegistersOnOS; private final FormingRegistersOnOS formingRegistersOnOS;
private final FormingPaymentInstruction formingPaymentInstruction; private final FormingPaymentInstructionDepositReturn formingPaymentInstruction;
private final UnlockResources unlockResources; private final UnlockResources unlockResources;
private final FinishingSession finishingSession; private final FinishingSession finishingSession;
private final EndStageNotification endStageNotification; private final EndStageNotification endStageNotification;
@ -49,7 +49,7 @@ public class ReturnDepositSession extends AbstractSession implements Initializin
ObligationAdmission obligationsAdmission, ObligationAdmission obligationsAdmission,
InclusionObligations inclusionObligations, InclusionObligations inclusionObligations,
FormingRegistersOnOS formingRegistersOnOS, FormingRegistersOnOS formingRegistersOnOS,
FormingPaymentInstruction formingPaymentInstruction, FormingPaymentInstructionDepositReturn formingPaymentInstruction,
UnlockResources unlockResources, UnlockResources unlockResources,
FinishingSession finishingSession, FinishingSession finishingSession,
EndStageNotification endStageNotification, EndStageNotification endStageNotification,
@ -149,6 +149,8 @@ public class ReturnDepositSession extends AbstractSession implements Initializin
if (paymentResult != null && paymentResult.getStageResult().isEmpty()) { if (paymentResult != null && paymentResult.getStageResult().isEmpty()) {
runStage(TaskType.FormingPaymentInstruction, balanceRevise); runStage(TaskType.FormingPaymentInstruction, balanceRevise);
// finishPart(req); // finishPart(req);
} else {
finishPart(req);
} }
} catch (StageException e) { } catch (StageException e) {
//already logged //already logged

View file

@ -108,32 +108,35 @@ public class InspectionObligationsDepositReturn implements ISessionStage {
continue; continue;
} }
Registry omtRgs = omtInGroupO.get(); Registry omtRgs = omtInGroupO.get();
Optional<Registry> amfAssetO = searchAssetByOMT(omtRgs); log.debug("groupId={}, OM*T.id={}", entry.getKey(), omtRgs.getId());
if (amfAssetO.isEmpty()) {
log.error("OM*T register.id={} groupId={} failed to find AM*F asset", omtRgs.getId(), entry.getKey());
group.forEach(rgs -> updateStatus(rgs, RegistryStatus.MNG));
continue;
}
Registry amfAsset = amfAssetO.get();
log.debug("groupId={}, OM*T.id={}, AM*F.id={}", entry.getKey(), omtRgs.getId(), amfAsset.getId());
BigDecimal omtBalance = safeBD(omtRgs.getBalance()); BigDecimal omtBalance = safeBD(omtRgs.getBalance());
BigDecimal amfBalance = safeBD(amfAsset.getBalance());
Optional<Registry> dmx = searchDmx(omtRgs); Optional<Registry> dmx = searchDmx(omtRgs);
if (dmx.isPresent()) { if (dmx.isPresent()) {
BigDecimal dmxBalance = safeBD(dmx.get().getBalance()); BigDecimal dmxBalance = safeBD(dmx.get().getBalance());
log.debug("OM*T.id={} -> DM*X.id={}, dmxBalance={}, omtBalance={}, amfBalance={}", log.debug("OM*T.id={} -> DM*X.id={}, dmxBalance={}, omtBalance={}",
omtRgs.getId(), omtRgs.getId(),
dmx.get().getId(), dmx.get().getId(),
dmxBalance, omtBalance, amfBalance dmxBalance, omtBalance
); );
if (dmxBalance.compareTo(omtBalance) >= 0 && amfBalance.compareTo(omtBalance) >= 0) { if (dmxBalance.compareTo(omtBalance) >= 0) {
group.forEach(rgs -> updateStatus(rgs, RegistryStatus.OK)); group.forEach(rgs -> updateStatus(rgs, RegistryStatus.OK));
} else { } else {
group.forEach(rgs -> updateStatus(rgs, RegistryStatus.MNG)); group.forEach(rgs -> updateStatus(rgs, RegistryStatus.MNG));
} }
continue; continue;
} }
Optional<Registry> amfAssetO = searchAssetByOMT(omtRgs);
if (amfAssetO.isEmpty()) {
log.error("OM*T register.id={} groupId={} failed to find AM*F asset", omtRgs.getId(), entry.getKey());
group.forEach(rgs -> updateStatus(rgs, RegistryStatus.MNG));
continue;
}
Registry amfAsset = amfAssetO.get();
log.debug("groupId={}, AM*F.id={}", entry.getKey(), amfAsset.getId());
BigDecimal amfBalance = safeBD(amfAsset.getBalance());
Optional<Registry> dmtInfo = searchDmtInfo(omtRgs); Optional<Registry> dmtInfo = searchDmtInfo(omtRgs);
if (dmtInfo.isPresent()) { if (dmtInfo.isPresent()) {
BigDecimal dmtBalance = safeBD(dmtInfo.get().getBalance()); BigDecimal dmtBalance = safeBD(dmtInfo.get().getBalance());