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.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.function.Consumer;
|
||||
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.notification.NotificationSender;
|
||||
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.clearing.AssetOperationListRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.AssetOperationRequest;
|
||||
|
|
@ -207,6 +211,11 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
|||
.toArray(new String[0]))
|
||||
)) != null;
|
||||
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) {
|
||||
IValidator validator = sDf57Validator.apply(sdf57);
|
||||
Optional<EnumMessage> error = validator.tillFirstError();
|
||||
|
|
@ -308,6 +317,7 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
|||
registryB.getId());
|
||||
return new AssetTrio(registryF, registryB, registry);
|
||||
});
|
||||
acceptAMAT_Gvtf.accept(asts.a__t());
|
||||
InOutDirection direction = IEnumKey.getEnumByKey(InOutDirection.class, stmt.getInOutDirection());
|
||||
boolean dm_tWasCreated = false;
|
||||
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);
|
||||
statementCred.map(stmt -> new StmtCmpAcc(stmt, companyCred, accountCred)).ifPresent(registersUpdate);
|
||||
}
|
||||
if (!gvtfIds.isEmpty()) {
|
||||
kafka.sendRequestToQueue(Task.GVTF.topic(), gvtfRequest(gvtfIds));
|
||||
}
|
||||
if (sessionIsNeededFlag.get()) {
|
||||
if (!timeService.timeForXdep()) {
|
||||
EnumMessage err = new EnumMessage(ClearingError.XdepTimeIntervalNotMatch);
|
||||
|
|
@ -718,6 +731,14 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
|||
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 final ImdgPredicateBuilder pb;
|
||||
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__V;
|
||||
public final static RegistryTradingParams _S_T;
|
||||
public final static RegistryTradingParams AMAT;
|
||||
|
||||
static {
|
||||
OS_T = new RegistryTradingParams(RegistryDesignation.O,
|
||||
|
|
@ -269,6 +270,10 @@ public record RegistryTradingParams(RegistryDesignation registryDesignation,
|
|||
RegistryInstrumentType.S,
|
||||
null,
|
||||
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