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 2d7868c54..42b4d6a73 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 @@ -318,7 +318,7 @@ public class Sdf57Executor extends AbstractExecutor { searchResult.getCompany().getId()); createRegistryIfNeeded.accept(new StmtCmpAcc(stmt, searchResult.getCompany(), searchResult.getAccount())); } else { - log.debug("stmt.id={} comment='{}' error: {}. Creating DMAU registry", + log.debug("stmt.id={} comment='{}' error: {}. Operating through DMAU registry", stmt.getId(), stmt.getComment(), messageResolver.resolve(searchResult.getError())); @@ -341,6 +341,7 @@ public class Sdf57Executor extends AbstractExecutor { .build(); newDmau.setRegistryUnit(RegistryUnit.U.getKey()); newDmau.setRegistryCode(RegistryUtil.clearingCode(newDmau)); + newDmau.setBalance(safeBD(stmt.getAmount())); registryImdg.insert(newDmau); log.debug("stmt.id={} created DMAU.id={}", stmt.getId(), newDmau.getId()); }); 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 3f93c1449..38f582907 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 @@ -6,6 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; +import ru.clearing.classes.statics.data.misc.Session; import ru.clearing.classes.statics.data.registry.Registry; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; @@ -19,12 +20,10 @@ import ru.spcex.platform.imdg.api.ImdgId; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; +import ru.spcex.platform.utils.enumeration.IEnumKey; import java.time.LocalDate; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @@ -36,6 +35,7 @@ public class InclusionObligations implements ISessionStage { private ImdgProvider imdgProvider; private ImdgId idGenerator; private Imdg registryImdg; + private Imdg sessionImdg; private KafkaSender kafkaSender; private final List registryConditions = new ArrayList<>(); private SessionType sessionType; @@ -46,6 +46,7 @@ public class InclusionObligations implements ISessionStage { this.imdgProvider = imdgProvider; this.idGenerator = imdgProvider.getImdgIdGenerator(); this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); + this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); this.rgsPb = registryImdg.predicateBuilder(); } @@ -110,6 +111,7 @@ public class InclusionObligations implements ISessionStage { for (Registry registry : entrySet.getValue()) { registry.setRegistryStatus("POOL"); registry.setSessionId(sessionId); + obtainSessionType(sessionId).ifPresent(st -> registry.setSessionType(st.getKey())); registryImdg.update(registry); } } @@ -117,6 +119,18 @@ public class InclusionObligations implements ISessionStage { return new StageResult(null, true); } + private Optional obtainSessionType(Long sessionId) { + if (this.sessionType != null) { + return Optional.of(this.sessionType); + } + if (sessionId == null) { + return Optional.empty(); + } + Session session = sessionImdg.getSingleObjectByID(sessionId); + SessionType sessionType = IEnumKey.getEnumByKey(SessionType.class, session.getSessionType()); + return Optional.ofNullable(sessionType); + } + public void setSessionType(SessionType sessionType) { this.sessionType = sessionType; } 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 57180074c..24c8ebecc 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 @@ -139,6 +139,7 @@ public class InspectionObligationsDepositReturn implements ISessionStage { group.forEach(rgs -> updateStatus(rgs, RegistryStatus.OK)); } else { group.forEach(rgs -> updateStatus(rgs, registryStatusFailed())); + updateStatus(dmtClnr.get(), registryStatusFailed()); } continue; }