This commit is contained in:
parent
316871b5c7
commit
4eb63277e0
3 changed files with 44 additions and 0 deletions
|
|
@ -4,12 +4,15 @@ import java.math.BigDecimal;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
@ -36,6 +39,7 @@ import ru.spcex.clearing.error.ClearingError;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.notification.NotificationSender;
|
import ru.spcex.clearing.notification.NotificationSender;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.balance.ReviseAmatRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.AssetOperationListRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.AssetOperationListRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.AssetOperationRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.AssetOperationRequest;
|
||||||
|
|
@ -207,6 +211,11 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
||||||
.toArray(new String[0]))
|
.toArray(new String[0]))
|
||||||
)) != null;
|
)) != null;
|
||||||
sdf = sdf.stream().sorted(Comparator.comparing(SpcexObjectBase::getId)).toList();
|
sdf = sdf.stream().sorted(Comparator.comparing(SpcexObjectBase::getId)).toList();
|
||||||
|
final Set<Long> gvtfIds = new HashSet<>();
|
||||||
|
Consumer<Registry> acceptAMAT_Gvtf = (amat) -> {
|
||||||
|
boolean isAmat = RegistryManager.equalsByCode(RegistryTradingParams.AMAT, amat);
|
||||||
|
if (isAmat) gvtfIds.add(amat.getId());
|
||||||
|
};
|
||||||
for (SDf57 sdf57 : sdf) {
|
for (SDf57 sdf57 : sdf) {
|
||||||
IValidator validator = sDf57Validator.apply(sdf57);
|
IValidator validator = sDf57Validator.apply(sdf57);
|
||||||
Optional<EnumMessage> error = validator.tillFirstError();
|
Optional<EnumMessage> error = validator.tillFirstError();
|
||||||
|
|
@ -308,6 +317,7 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
||||||
registryB.getId());
|
registryB.getId());
|
||||||
return new AssetTrio(registryF, registryB, registry);
|
return new AssetTrio(registryF, registryB, registry);
|
||||||
});
|
});
|
||||||
|
acceptAMAT_Gvtf.accept(asts.a__t());
|
||||||
InOutDirection direction = IEnumKey.getEnumByKey(InOutDirection.class, stmt.getInOutDirection());
|
InOutDirection direction = IEnumKey.getEnumByKey(InOutDirection.class, stmt.getInOutDirection());
|
||||||
boolean dm_tWasCreated = false;
|
boolean dm_tWasCreated = false;
|
||||||
if (!StringUtils.isEmpty(stmt.getContract()) && InOutDirection.in.equals(direction)) {
|
if (!StringUtils.isEmpty(stmt.getContract()) && InOutDirection.in.equals(direction)) {
|
||||||
|
|
@ -522,6 +532,9 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
||||||
statementDeb.map(stmt -> new StmtCmpAcc(stmt, companyDeb, accountDeb)).ifPresent(registersUpdate);
|
statementDeb.map(stmt -> new StmtCmpAcc(stmt, companyDeb, accountDeb)).ifPresent(registersUpdate);
|
||||||
statementCred.map(stmt -> new StmtCmpAcc(stmt, companyCred, accountCred)).ifPresent(registersUpdate);
|
statementCred.map(stmt -> new StmtCmpAcc(stmt, companyCred, accountCred)).ifPresent(registersUpdate);
|
||||||
}
|
}
|
||||||
|
if (!gvtfIds.isEmpty()) {
|
||||||
|
kafka.sendRequestToQueue(Task.GVTF.topic(), gvtfRequest(gvtfIds));
|
||||||
|
}
|
||||||
if (sessionIsNeededFlag.get()) {
|
if (sessionIsNeededFlag.get()) {
|
||||||
if (!timeService.timeForXdep()) {
|
if (!timeService.timeForXdep()) {
|
||||||
EnumMessage err = new EnumMessage(ClearingError.XdepTimeIntervalNotMatch);
|
EnumMessage err = new EnumMessage(ClearingError.XdepTimeIntervalNotMatch);
|
||||||
|
|
@ -718,6 +731,14 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
||||||
r.setUpdated(Instant.now());
|
r.setUpdated(Instant.now());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ReviseAmatRequest gvtfRequest(Set<Long> amatIds) {
|
||||||
|
ReviseAmatRequest payload = new ReviseAmatRequest();
|
||||||
|
ArrayList<Long> ids = new ArrayList<>(amatIds.size());
|
||||||
|
ids.addAll(amatIds);
|
||||||
|
payload.setAmatIds(ids);
|
||||||
|
return payload;
|
||||||
|
}
|
||||||
|
|
||||||
private static class RegistrySearch {
|
private static class RegistrySearch {
|
||||||
private final ImdgPredicateBuilder pb;
|
private final ImdgPredicateBuilder pb;
|
||||||
private final Imdg<Registry> registryImdg;
|
private final Imdg<Registry> registryImdg;
|
||||||
|
|
|
||||||
|
|
@ -122,6 +122,7 @@ public record RegistryTradingParams(RegistryDesignation registryDesignation,
|
||||||
public final static RegistryTradingParams D__I;
|
public final static RegistryTradingParams D__I;
|
||||||
public final static RegistryTradingParams D__V;
|
public final static RegistryTradingParams D__V;
|
||||||
public final static RegistryTradingParams _S_T;
|
public final static RegistryTradingParams _S_T;
|
||||||
|
public final static RegistryTradingParams AMAT;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
OS_T = new RegistryTradingParams(RegistryDesignation.O,
|
OS_T = new RegistryTradingParams(RegistryDesignation.O,
|
||||||
|
|
@ -269,6 +270,10 @@ public record RegistryTradingParams(RegistryDesignation registryDesignation,
|
||||||
RegistryInstrumentType.S,
|
RegistryInstrumentType.S,
|
||||||
null,
|
null,
|
||||||
RegistryUnit.T);
|
RegistryUnit.T);
|
||||||
|
AMAT = new RegistryTradingParams(RegistryDesignation.A,
|
||||||
|
RegistryInstrumentType.M,
|
||||||
|
RegistryCapacity.A,
|
||||||
|
RegistryUnit.T);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
package ru.spcex.clearing.platform.messaging.domain.cud.balance;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
|
public class ReviseAmatRequest {
|
||||||
|
@JsonProperty
|
||||||
|
private List<Long> amatIds = Collections.emptyList();
|
||||||
|
|
||||||
|
public List<Long> getAmatIds() {
|
||||||
|
return amatIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAmatIds(List<Long> amatIds) {
|
||||||
|
this.amatIds = amatIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue