From 7e2e9dcd51779821937cf52ccbd23f1b15fb3f54 Mon Sep 17 00:00:00 2001 From: ialbert Date: Thu, 5 Oct 2023 17:40:26 +0300 Subject: [PATCH] NotificationSender objectType Sdf57/Sdf01 revise notification comment & objectType PaymentStateMarkService valueDate/settlementDate conditions AnltSearcher comment TCR 12 symbols planBalance revise notification comment session step 7 fix session step 5 gateway request only for OK groups session step 5 deposit return A**B change on receiver side clearingDate today on POOL PaymentInstruction paymentPurpose fix --- .../notification/NotificationSender.java | 2 +- .../spcex/clearing/service/AnltSearcher.java | 24 +++++---- .../clearing/service/executors/Reviser.java | 6 +-- .../service/registry/AssetTBFProcessing.java | 5 +- .../registry/PaymentStateMarkService.java | 3 ++ .../session/stage/impl/BalanceRevise.java | 2 +- .../impl/FormingPaymentInstructionAssets.java | 49 ++++++++++++++++--- ...ormingPaymentInstructionDepositReturn.java | 1 + .../FormingPaymentInstructionReturnMkr.java | 1 + .../stage/impl/InclusionObligations.java | 3 +- .../stage/impl/InspectionObligations.java | 27 +++++----- .../InspectionObligationsDepositReturn.java | 30 ++++++++++-- .../platform/enumeration/ObjectType.java | 2 +- 13 files changed, 109 insertions(+), 46 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/notification/NotificationSender.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/notification/NotificationSender.java index 523033eab..198b79924 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/notification/NotificationSender.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/notification/NotificationSender.java @@ -22,7 +22,7 @@ public class NotificationSender { public void sendNotification(ObjectType objType, String comment, Priority priority) { NotificationNewRequest reviseNotification = new NotificationNewRequest(); - reviseNotification.setObjectType(ObjectType.rgst.getKey()); + reviseNotification.setObjectType(objType.getKey()); reviseNotification.setComment(comment); reviseNotification.setPriority(priority.getKey()); kafkaSender.sendRequestToQueue(Consts.NOTIFICATION_NEW, reviseNotification); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/AnltSearcher.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/AnltSearcher.java index 4b654bd81..a23a7e0cf 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/AnltSearcher.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/AnltSearcher.java @@ -17,6 +17,10 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IEnumId; +import ru.spcex.platform.utils.text.TextUtil; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; @Component public class AnltSearcher { @@ -83,25 +87,19 @@ public class AnltSearcher { return new AnltSearch(infoAcc, company, tcr); } + private static final Pattern tcrPattern = Pattern.compile("ТКР.*?([0-9A-Z-]{12})"); + private static String getTkrCodeFromComment(String comment) { - if (comment == null) { + if (TextUtil.isEmpty(comment)) { return null; } comment = comment.toUpperCase(); - int tcrIndex = comment.indexOf("ТКР"); - if (tcrIndex == -1) { - return null; - } - if (comment.length() < (tcrIndex + 4)) { - return null; - } - int spaceAfterTCR = comment.indexOf(" ", tcrIndex + 4); - if (spaceAfterTCR == -1) { - comment = comment.substring(tcrIndex + 4); + Matcher matcher = tcrPattern.matcher(comment); + if (matcher.find()) { + return matcher.group(1); } else { - comment = comment.substring(tcrIndex + 4, spaceAfterTCR); + return null; } - return comment.replaceAll("\\s+", ""); } public static class AnltSearch { diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Reviser.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Reviser.java index a2a38a116..11d7b644e 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Reviser.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Reviser.java @@ -25,8 +25,8 @@ import java.util.Optional; @Component public class Reviser { private final Logger log = LoggerFactory.getLogger(Reviser.class); - private static final String reviseFailedMessage = "Сверка остатков денежных средств по результатам клиринговой сессии завершена с ошибками."; - private static final String reviseSuccessMessage = "Сверка остатков денежных средств по результатам клиринговой сессии завершена успешно."; + private static final String reviseFailedMessage = "После сверки обнаружена разница между сверочным и фактическим балансом."; + private static final String reviseSuccessMessage = "Ошибок после получения остатков не обнаружено."; private final Imdg registryImdg; private final Imdg statementImdg; private final Imdg sdf01Imdg; @@ -66,7 +66,7 @@ public class Reviser { log.trace("revise ok for sdf01.id={}, stmt.id={}, registry.id={}", sdf.getId(), statement.get().getId(), registry.get().getId()); } NotificationNewRequest reviseNotification = new NotificationNewRequest(); - reviseNotification.setObjectType(ObjectType.rgst.getKey()); + reviseNotification.setObjectType(ObjectType.diff.getKey()); reviseNotification.setComment(reviseFailed ? reviseFailedMessage : reviseSuccessMessage); reviseNotification.setPriority(reviseFailed ? Priority.HIGH.getKey() : Priority.LOW.getKey()); kafkaSender.sendRequestToQueue(Consts.NOTIFICATION_NEW, reviseNotification); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/AssetTBFProcessing.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/AssetTBFProcessing.java index dd547e258..e1877d5de 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/AssetTBFProcessing.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/AssetTBFProcessing.java @@ -115,7 +115,7 @@ public class AssetTBFProcessing { } } - public void processByAm_f(Registry am_f, BigDecimal sum) { + public Optional processByAm_f(Registry am_f, BigDecimal sum) { Optional am_b = rgsMng.findRegByUnit(am_f.getCompanyId(), am_f.getAccountId(), am_f.getContract(), @@ -128,6 +128,9 @@ public class AssetTBFProcessing { RegistryUnit.T); if (am_b.isPresent() && am_t.isPresent()) { process(am_b.get(), am_t.get(), am_f, sum); + return Optional.of(new AssetTrio(am_f, am_b.get(), am_t.get())); + } else { + return Optional.empty(); } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/PaymentStateMarkService.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/PaymentStateMarkService.java index 3621ce918..93165d80a 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/PaymentStateMarkService.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/PaymentStateMarkService.java @@ -54,6 +54,9 @@ public class PaymentStateMarkService { Collection claimsAndLiabilities = rgsImdg.getCollectionObjectsByPredicate(prdct); Map> groups = claimsAndLiabilities .stream() + .filter(rgs -> rgs.getValueDate() != null) + .filter(rgs -> rgs.getSettlementDate() != null) + .filter(rgs -> rgs.getSettlementDate().isAfter(rgs.getValueDate())) .collect(Collectors.groupingBy(Registry::getGroupId)); log.debug("found {} ({} groups) CM*T/LM*T by {}", claimsAndLiabilities.size(), groups.size(), prdct.toString()); for (Map.Entry> group : groups.entrySet()) { diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/BalanceRevise.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/BalanceRevise.java index 3d2bf6605..c55337788 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/BalanceRevise.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/BalanceRevise.java @@ -166,7 +166,7 @@ public class BalanceRevise implements ISessionStage { NotificationNewRequest nRequest = new NotificationNewRequest(); nRequest.setObjectType(ObjectType.rgst.getKey()); nRequest.setPriority(Priority.HIGH.getKey()); - nRequest.setComment("После сверки обнаружена разница между плановым и фактическим балансом"); + nRequest.setComment("Сверка по результатам клиринговой сессии завершена с ошибками."); kafkaSender.sendRequestToQueue(Consts.NOTIFICATION_NEW, nRequest); return new StageResult<>(new EnumMessage(ClearingError.PlanBalanceReviseError), false); } else { diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionAssets.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionAssets.java index 3d755ab78..89e020f81 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionAssets.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionAssets.java @@ -156,12 +156,6 @@ public class FormingPaymentInstructionAssets implements ISessionStage { for (Registry registry : AMBregistries) { //по каждому AMB регистру создаем PaymentInstruction //проверяем balance посчитанный на шаге 5 - - if (registry.getBalance().compareTo(BigDecimal.ZERO) == 0) { - log.debug("Skip creating paymentInstruction by registry with 0 balance"); - continue; - } - boolean isPositiveBalance = registry.getBalance().compareTo(BigDecimal.ZERO) > 0; Account counterAcc = null; if (AccountType.Clrn.equalsByKey(registry.getAccountType())) { counterAcc = accountImdg.getSingleObjectByID(registry.getAccountId()); @@ -176,12 +170,16 @@ public class FormingPaymentInstructionAssets implements ISessionStage { Account debitLegAccount; Account creditLegAccount; BigDecimal amount; + amount = safeBD(registry.getBalance()).add(adjustAmountByReturns(registry, sessionId)); + boolean isPositiveBalance = amount.compareTo(BigDecimal.ZERO) > 0; + if (amount.compareTo(BigDecimal.ZERO) == 0) { + continue; + } if (isPositiveBalance) { senderId = registry.getCompanyId(); addresseeId = Sender.One.getId(); debitLegAccount = tranAcc; creditLegAccount = counterAcc; - amount = registry.getBalance() == null ? null : registry.getBalance().abs(); Optional payerAmtO = rgsMng.findRelatedAsset( registry.getTradingClearingRegistryId(), registry.getCompanyId(), @@ -196,7 +194,6 @@ public class FormingPaymentInstructionAssets implements ISessionStage { addresseeId = registry.getCompanyId(); debitLegAccount = counterAcc; creditLegAccount = tranAcc; - amount = registry.getBalance() == null ? null : registry.getBalance().abs(); Optional payerAmtO = rgsMng.findRelatedAsset( registry.getTradingClearingRegistryId(), registry.getCompanyId(), @@ -208,6 +205,7 @@ public class FormingPaymentInstructionAssets implements ISessionStage { setUpdatedStoreInImdg(amt, now); }); } + amount = amount.abs(); PaymentInstructionBuilderV2 paymentInstructionBuilder = PaymentInstructionBuilderV2.builder(imdgProvider) .registry(registry) @@ -311,6 +309,41 @@ public class FormingPaymentInstructionAssets implements ISessionStage { return stageResult; } + private BigDecimal adjustAmountByReturns(Registry amb, Long sessionId) {//companyid, tcr/account, sessionId, RUB + Long companyId = amb.getCompanyId(); + Long tradingClearingRegistryId = amb.getTradingClearingRegistryId(); + ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); + ImdgPredicate cL = pb.and( + pb.equals("companyId", companyId), + pb.equals("tradingClearingRegistryId", tradingClearingRegistryId), + pb.equals("registryStatus", RegistryStatus.OK.getKey()), + pb.equals("sessionId", sessionId), + pb.or( + pb.sql(RegistryCodeSqlBuilder.getInstance(LM_T).build()), + pb.sql(RegistryCodeSqlBuilder.getInstance(CM_T).build()) + ) + ); + BigDecimal reduce = registryImdg.getCollectionObjectsByPredicate(cL) + .stream() + .filter(rgs -> rgs.getValueDate() != null) + .filter(rgs -> rgs.getSettlementDate() != null) + .filter(rgs -> rgs.getSettlementDate().isAfter(rgs.getValueDate())) + .map(rgs -> { + if (RegistryDesignation.C.equalsByKey(rgs.getRegistryDesignation())) { + return rgs.getBalance(); + } else { + return rgs.getBalance().abs().negate(); + } + }) + .reduce(BigDecimal.ZERO, BigDecimal::add); + log.debug("{}.id={} {} adjust value {}", + amb.getRegistryCode(), + amb.getId(), + cL, + reduce); + return reduce; + + } private void setUpdatedStoreInImdg(Registry rgs, Instant now) { rgs.setUpdated(now); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionDepositReturn.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionDepositReturn.java index 98bc0be37..61e857492 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionDepositReturn.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionDepositReturn.java @@ -223,6 +223,7 @@ public class FormingPaymentInstructionDepositReturn implements ISessionStage { .tranAcc(tranAcc) .sessionId(sessionId) .paymentPurpose("Возврат депозита " + cm_t.getContract() + " по ТКР " + cm_t.getTradingClearingRegistry()) + .paymentPurposeLmt("Возврат депозита " + lm_t.getContract() + " по ТКР " + lm_t.getTradingClearingRegistry()) .build(); paymentInstructionImdg.insert(pmts.getFirst()); paymentInstructionImdg.insert(pmts.getSecond()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionReturnMkr.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionReturnMkr.java index 435099cd9..2e228364e 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionReturnMkr.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionReturnMkr.java @@ -187,6 +187,7 @@ public class FormingPaymentInstructionReturnMkr implements ISessionStage { .tranAcc(tranAcc) .sessionId(sessionId) .paymentPurpose("Возврат депозита " + cm_t.getContract() + " по ТКР " + cm_t.getTradingClearingRegistry()) + .paymentPurposeLmt("Возврат депозита " + lm_t.getContract() + " по ТКР " + lm_t.getTradingClearingRegistry()) .build(); paymentInstructionImdg.insert(pmts.getFirst()); paymentInstructionImdg.insert(pmts.getSecond()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InclusionObligations.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InclusionObligations.java index 0127c4a2c..d2bcadb50 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InclusionObligations.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InclusionObligations.java @@ -109,7 +109,8 @@ public class InclusionObligations implements ISessionStage { for (Map.Entry> entrySet : registryByGroupId.entrySet()) { log.debug("Processing set of registry with groupId: {}", entrySet.getKey()); for (Registry registry : entrySet.getValue()) { - registry.setRegistryStatus("POOL"); + registry.setRegistryStatus(RegistryStatus.POOL.getKey()); + registry.setClearingDate(LocalDate.now()); registry.setSessionId(sessionId); obtainSessionType(sessionId).ifPresent(st -> registry.setSessionType(st.getKey())); registryImdg.update(registry); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligations.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligations.java index a4161430a..40822eb5d 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligations.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligations.java @@ -134,18 +134,6 @@ public class InspectionObligations implements ISessionStage { } Optional omt = group.stream().filter(rgs -> RegistryManager.equalsByCode(OM_T, rgs)).findFirst(); - if (SessionType.FINL.equals(sessionType) && tradingTimeService.isTradingTime() && omt.isPresent()) { - Optional gatewayReceived = gateway.gatewayRequestAndWait(() -> GatewayRequestCreator.from(omt.get())); - if (gatewayReceived.isEmpty()) { - log.error("Gateway not received response for groupId: {}. ", entry.getKey()); - } - if (!gatewayReceived.orElse(false)) { - checkResults.stream() - .filter(chk -> chk.registry().getId().equals(omt.get().getId())) - .findFirst() - .ifPresent(chk -> chk.isUncovered = true); - } - } for (Registry rgs : group) { Runnable failGroup = () -> Stream.concat(group.stream(), getRefundDateRgsIfPresent(group).stream()) .forEach(registry -> { @@ -170,6 +158,21 @@ public class InspectionObligations implements ISessionStage { continue GROUP; } } + if (SessionType.FINL.equals(sessionType) + && omt.isPresent() + && checkResults.stream().noneMatch(checkResult -> checkResult.isUncovered) + && tradingTimeService.isTradingTime()) { + Optional gatewayReceived = gateway.gatewayRequestAndWait(() -> GatewayRequestCreator.from(omt.get())); + if (gatewayReceived.isEmpty()) { + log.error("Gateway not received response for groupId: {}. ", entry.getKey()); + } + if (!gatewayReceived.orElse(false)) { + checkResults.stream() + .filter(chk -> chk.registry().getId().equals(omt.get().getId())) + .findFirst() + .ifPresent(chk -> chk.isUncovered = true); + } + } defineStatusAndUpdateRegistry(checkResults, group); if (checkResults.stream().noneMatch(checkResult -> checkResult.isUncovered)) { Instant now = Instant.now(); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligationsDepositReturn.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligationsDepositReturn.java index 452ea6e80..e1f7f8c7f 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligationsDepositReturn.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligationsDepositReturn.java @@ -9,6 +9,7 @@ import org.springframework.stereotype.Service; import ru.clearing.classes.statics.data.company.ClearingMemberCategory; import ru.clearing.classes.statics.data.registry.Registry; import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.service.AssetTrio; import ru.spcex.clearing.service.integration.GatewayRequestCreator; import ru.spcex.clearing.service.registry.AssetTBFProcessing; import ru.spcex.clearing.service.registry.RegistryManager; @@ -28,6 +29,7 @@ import java.time.Instant; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.function.BiConsumer; import java.util.stream.Collectors; import static ru.spcex.platform.enumeration.RegistryTradingParams.*; @@ -102,12 +104,14 @@ public class InspectionObligationsDepositReturn implements ISessionStage { for (Map.Entry> entry : registriesByGroupSorted) { List group = entry.getValue(); Optional omtInGroupO = group.stream().filter(registry -> equalByRgs(OM_T, registry)).findFirst(); - if (omtInGroupO.isEmpty()) { - log.error("groupId {} failed to find OM*T registry", entry.getKey()); + Optional tmtInGroupO = group.stream().filter(registry -> equalByRgs(TM_T, registry)).findFirst(); + if (omtInGroupO.isEmpty() || tmtInGroupO.isEmpty()) { + log.error("groupId {} failed to find OM*T/TM*T registry", entry.getKey()); group.forEach(rgs -> updateStatus(rgs, registryStatusFailed())); // FAIL or MNG continue; } Registry omtRgs = omtInGroupO.get(); + Registry tmtRgs = tmtInGroupO.get(); log.debug("groupId={}, OM*T.id={}", entry.getKey(), omtRgs.getId()); BigDecimal omtBalance = safeBD(omtRgs.getBalance()); @@ -139,15 +143,28 @@ public class InspectionObligationsDepositReturn implements ISessionStage { } Optional amfAssetO = searchAssetByOMT(omtRgs); + Optional amfAssetReceiverO = searchAssetByOMT(tmtRgs); 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, registryStatusFailed())); // FAIL or MNG continue; } + if (amfAssetReceiverO.isEmpty()) { + log.error("TM*T register.id={} groupId={} failed to find AM*F asset", tmtRgs.getId(), entry.getKey()); + group.forEach(rgs -> updateStatus(rgs, registryStatusFailed())); // FAIL or MNG + continue; + } Registry amfAsset = amfAssetO.get(); log.debug("groupId={}, AM*F.id={}", entry.getKey(), amfAsset.getId()); BigDecimal amfBalance = safeBD(amfAsset.getBalance()); + BiConsumer processAssetsAndSetSessionId = (amf, amount) -> { + Optional asts = assets.processByAm_f(amf, amount); + if (asts.isPresent()) { + asts.get().a__b().setSessionId(sessionId); + registryImdg.update(asts.get().a__b()); + } + }; Optional dmtInfo = rgsMng.searchDmtInfo(omtRgs); if (dmtInfo.isPresent()) { BigDecimal dmtBalance = safeBD(dmtInfo.get().getBalance()); @@ -158,7 +175,8 @@ public class InspectionObligationsDepositReturn implements ISessionStage { ); if (dmtBalance.compareTo(omtBalance) >= 0 && amfBalance.compareTo(omtBalance) >=0) { group.forEach(rgs -> updateStatus(rgs, RegistryStatus.OK)); - assets.processByAm_f(amfAsset, omtBalance.negate()); + processAssetsAndSetSessionId.accept(amfAsset, omtBalance.negate()); + processAssetsAndSetSessionId.accept(amfAssetReceiverO.get(), omtBalance); // updateStatus(dmtInfo.get(), RegistryStatus.POOL); continue; } else if (SessionType.XDEP.equals(sessionType)) { @@ -177,7 +195,8 @@ public class InspectionObligationsDepositReturn implements ISessionStage { ); if (dmtBalance.compareTo(omtBalance) >= 0 && amfBalance.compareTo(omtBalance) >= 0) { group.forEach(rgs -> updateStatus(rgs, RegistryStatus.OK)); - assets.processByAm_f(amfAsset, omtBalance.negate()); + processAssetsAndSetSessionId.accept(amfAsset, omtBalance.negate()); + processAssetsAndSetSessionId.accept(amfAssetReceiverO.get(), omtBalance); continue; } else if (SessionType.XDEP.equals(sessionType)) { group.forEach(rgs -> updateStatus(rgs, registryStatusFailed(rgs))); @@ -193,7 +212,8 @@ public class InspectionObligationsDepositReturn implements ISessionStage { "FINL, initiator.category='V' and am*f > om*t: setting OK status to group", omtRgs.getId()); group.forEach(rgs -> updateStatus(rgs, RegistryStatus.OK)); - assets.processByAm_f(amfAsset, omtBalance.negate()); + processAssetsAndSetSessionId.accept(amfAsset, omtBalance.negate()); + processAssetsAndSetSessionId.accept(amfAssetReceiverO.get(), omtBalance); } else { log.info("OM*T.id={} -> no DM*X/DM*T(INFO/CLRN) registry found. setting {} status to group", omtRgs.getId(), registryStatusFailed()); diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ObjectType.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ObjectType.java index d3f1475c0..05e64e121 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ObjectType.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ObjectType.java @@ -4,7 +4,7 @@ import ru.spcex.platform.utils.enumeration.IEnumKey; public enum ObjectType implements IEnumKey { statement("STMT"), vfrs("VFRS"), rgst("RGST"), gateway("GTWY"), session("SESN"), - account_block("ACCB"), account_active("ACCA"); + account_block("ACCB"), account_active("ACCA"), diff("DIFF"); private final String key;