обработка SDF57 проставление баланса при создании DMAU

проставление SessionType на шаге включения в пул
апдейт статуса DM*T(clnr) в fail/manage
This commit is contained in:
ialbert 2023-07-21 19:06:21 +03:00
parent cb03a62265
commit 79e1867e7f
3 changed files with 21 additions and 5 deletions

View file

@ -318,7 +318,7 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
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<SDf57> {
.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());
});

View file

@ -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<Registry> registryImdg;
private Imdg<Session> sessionImdg;
private KafkaSender kafkaSender;
private final List<ImdgPredicate> 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<SessionType> 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;
}

View file

@ -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;
}