diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java index 3edbe9228..4e49e6232 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java @@ -241,7 +241,7 @@ public class Sdf57Executor extends AbstractExecutor { dm__.getId()); } else if (om_tFound.isPresent()) { Registry om_t = om_tFound.get(); - Registry registryD = copyRegD(om_t, RegistryUnit.T); + Registry registryD = copyRegD(om_t, stmt, RegistryUnit.T); registryImdg.insert(registryD); log.debug("stmt.id={}, sdf57.specif={}, found OM*T.id={} new DM*T.id={}", stmt.getId(), @@ -250,7 +250,7 @@ public class Sdf57Executor extends AbstractExecutor { registryD.getId()); } else if (tm_tFound.isPresent()) { Registry tm_t = tm_tFound.get(); - Registry registryD = copyRegD(tm_t, RegistryUnit.X); + Registry registryD = copyRegD(tm_t, stmt, RegistryUnit.X); registryImdg.insert(registryD); log.debug("stmt.id={}, sdf57.specif={} found TM*T.id={} new DM*X.id={}. Return money identification for Initiator account based on TM*T registry searchin on companyId, accountId, contract and registry_status=PROC|MGN", stmt.getId(), @@ -298,11 +298,12 @@ public class Sdf57Executor extends AbstractExecutor { return rgsF; } - private Registry copyRegD(Registry rgs, RegistryUnit unit) { + private Registry copyRegD(Registry rgs, Statement stmt, RegistryUnit unit) { Registry rgsD = rgs.clone(); rgsD.setRegistryDesignation(RegistryDesignation.D.getKey()); rgsD.setRegistryUnit(unit.getKey()); rgsD.setRegistryCode(RegistryUtil.clearingCode(rgsD)); + rgsD.setBalance(stmt.getAmount()); return rgsD; } 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 d1d1384f8..9087bb228 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 @@ -105,7 +105,7 @@ public class InspectionObligationsDepositReturn implements ISessionStage { 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()); - group.forEach(rgs -> updateStatus(rgs, registryStatusForDmxCheckFailed())); + group.forEach(rgs -> updateStatus(rgs, registryStatusFailed())); continue; } Registry omtRgs = omtInGroupO.get(); @@ -130,8 +130,11 @@ public class InspectionObligationsDepositReturn implements ISessionStage { ); if (dmxBalance.compareTo(omtBalance) >= 0) { group.forEach(rgs -> updateStatus(rgs, RegistryStatus.OK)); + updateStatus(dmx.get(), RegistryStatus.OK); } else { - group.forEach(rgs -> updateStatus(rgs, registryStatusForDmxCheckFailed())); + //для OM*T uncovered остальным фейл + group.forEach(rgs -> updateStatus(rgs, registryStatusFailed(rgs))); + updateStatus(dmx.get(), RegistryStatus.UNCV); } continue; } @@ -139,7 +142,7 @@ public class InspectionObligationsDepositReturn implements ISessionStage { Optional 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, registryStatusForDmxCheckFailed())); + group.forEach(rgs -> updateStatus(rgs, registryStatusFailed())); continue; } @@ -157,7 +160,7 @@ public class InspectionObligationsDepositReturn implements ISessionStage { if (dmtBalance.compareTo(omtBalance) >= 0 && amfBalance.compareTo(omtBalance) >=0) { group.forEach(rgs -> updateStatus(rgs, RegistryStatus.OK)); } else { - group.forEach(rgs -> updateStatus(rgs, registryStatusForDmxCheckFailed())); + group.forEach(rgs -> updateStatus(rgs, registryStatusFailed())); } continue; } @@ -172,13 +175,13 @@ public class InspectionObligationsDepositReturn implements ISessionStage { if (dmtBalance.compareTo(omtBalance) >= 0 && amfBalance.compareTo(omtBalance) >= 0) { group.forEach(rgs -> updateStatus(rgs, RegistryStatus.OK)); } else { - group.forEach(rgs -> updateStatus(rgs, registryStatusForDmxCheckFailed())); + group.forEach(rgs -> updateStatus(rgs, registryStatusFailed())); } continue; } log.info("OM*T.id={} -> no DM*X/DM*T(INFO/CLRN) registry found. setting {} status to group", - omtRgs.getId(), registryStatusForDmxCheckFailed()); - group.forEach(rgs -> updateStatus(rgs, registryStatusForDmxCheckFailed())); + omtRgs.getId(), registryStatusFailed()); + group.forEach(rgs -> updateStatus(rgs, registryStatusFailed())); } return new StageResult<>(null, true); } @@ -247,7 +250,7 @@ public class InspectionObligationsDepositReturn implements ISessionStage { ); } - private RegistryStatus registryStatusForDmxCheckFailed() { + private RegistryStatus registryStatusFailed() { if (SessionType.FINL.equals(sessionType)) { return RegistryStatus.FAIL; } else { @@ -255,6 +258,18 @@ public class InspectionObligationsDepositReturn implements ISessionStage { } } + private RegistryStatus registryStatusFailed(Registry registry) { + if (SessionType.FINL.equals(sessionType)) { + if (equalByRgs(OM_T, registry)) { + return RegistryStatus.UNCV; + } else { + return RegistryStatus.FAIL; + } + } else { + return RegistryStatus.MNG; + } + } + public void setSessionType(SessionType sessionType) { this.sessionType = sessionType; }