remove C/L
This commit is contained in:
parent
d7b3189a80
commit
360414e75d
13 changed files with 116 additions and 75 deletions
|
|
@ -248,7 +248,7 @@ public class PaymentInstructionBuilderV2 {
|
||||||
ImdgPredicateBuilder pb = rgsImdg.predicateBuilder();
|
ImdgPredicateBuilder pb = rgsImdg.predicateBuilder();
|
||||||
ImdgPredicate prdct = pb.and(
|
ImdgPredicate prdct = pb.and(
|
||||||
pb.equals("sessionId", sessionId),
|
pb.equals("sessionId", sessionId),
|
||||||
pb.sql(RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.CM__).build()),
|
pb.sql(RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.TM__).build()),
|
||||||
pb.equals("companyId", addresseeId),
|
pb.equals("companyId", addresseeId),
|
||||||
pb.equals("accountId", am_b.getAccountId())
|
pb.equals("accountId", am_b.getAccountId())
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,8 @@ import ru.spcex.clearing.session.stage.util.RegistryUtil;
|
||||||
import ru.spcex.platform.enumeration.CompanyRole;
|
import ru.spcex.platform.enumeration.CompanyRole;
|
||||||
import ru.spcex.platform.enumeration.RegistryDesignation;
|
import ru.spcex.platform.enumeration.RegistryDesignation;
|
||||||
import ru.spcex.platform.enumeration.RegistryStatus;
|
import ru.spcex.platform.enumeration.RegistryStatus;
|
||||||
import static ru.spcex.platform.enumeration.RegistryTradingParams.CM_T;
|
import static ru.spcex.platform.enumeration.RegistryTradingParams.OM_T;
|
||||||
import static ru.spcex.platform.enumeration.RegistryTradingParams.LM_T;
|
import static ru.spcex.platform.enumeration.RegistryTradingParams.TM_T;
|
||||||
import ru.spcex.platform.enumeration.RegistryUnit;
|
import ru.spcex.platform.enumeration.RegistryUnit;
|
||||||
import ru.spcex.platform.enumeration.Section;
|
import ru.spcex.platform.enumeration.Section;
|
||||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||||
|
|
@ -50,7 +50,7 @@ public class PaymentStateMarkService {
|
||||||
public void createDmv(Long sessionId) {
|
public void createDmv(Long sessionId) {
|
||||||
ImdgPredicateBuilder pb = rgsImdg.predicateBuilder();
|
ImdgPredicateBuilder pb = rgsImdg.predicateBuilder();
|
||||||
ImdgPredicate prdct = pb.and(
|
ImdgPredicate prdct = pb.and(
|
||||||
pb.sql(RegistryCodeSqlBuilder.getInstance(CM_T, LM_T).build()),
|
pb.sql(RegistryCodeSqlBuilder.getInstance(OM_T, TM_T).build()),
|
||||||
pb.equals("sessionId", sessionId),
|
pb.equals("sessionId", sessionId),
|
||||||
pb.equals("section", Section.MKR.getKey()),
|
pb.equals("section", Section.MKR.getKey()),
|
||||||
pb.equals("registryStatus", RegistryStatus.OK.getKey())
|
pb.equals("registryStatus", RegistryStatus.OK.getKey())
|
||||||
|
|
@ -70,8 +70,8 @@ public class PaymentStateMarkService {
|
||||||
.filter(rgs -> rd.equalsByKey(rgs.getRegistryDesignation()))
|
.filter(rgs -> rd.equalsByKey(rgs.getRegistryDesignation()))
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElse(null);
|
.orElse(null);
|
||||||
Registry cm_t = findRgs.apply(RegistryDesignation.C);
|
Registry cm_t = findRgs.apply(RegistryDesignation.T);
|
||||||
Registry lm_t = findRgs.apply(RegistryDesignation.L);
|
Registry lm_t = findRgs.apply(RegistryDesignation.O);
|
||||||
if (cm_t == null || lm_t == null) {
|
if (cm_t == null || lm_t == null) {
|
||||||
log.warn("groupId {}, coudn't find CM*T or LM*T", groupId);
|
log.warn("groupId {}, coudn't find CM*T or LM*T", groupId);
|
||||||
continue;
|
continue;
|
||||||
|
|
|
||||||
|
|
@ -189,8 +189,8 @@ public class SessionTerminator {
|
||||||
ImdgPredicate prdct = pb.and(
|
ImdgPredicate prdct = pb.and(
|
||||||
pb.equals("sessionId", sessionId),
|
pb.equals("sessionId", sessionId),
|
||||||
pb.or(
|
pb.or(
|
||||||
pb.sql(RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.C__T).build()),
|
// pb.sql(RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.C__T).build()),
|
||||||
pb.sql(RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.L__T).build()),
|
// pb.sql(RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.L__T).build()),
|
||||||
pb.sql(RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.O__T).build()),
|
pb.sql(RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.O__T).build()),
|
||||||
pb.sql(RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.T__T).build())
|
pb.sql(RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.T__T).build())
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
package ru.spcex.clearing.session.stage.impl;
|
package ru.spcex.clearing.session.stage.impl;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
@ -24,7 +32,16 @@ import ru.spcex.clearing.session.stage.ISessionStage;
|
||||||
import ru.spcex.clearing.session.stage.StageResult;
|
import ru.spcex.clearing.session.stage.StageResult;
|
||||||
import ru.spcex.clearing.session.stage.Task;
|
import ru.spcex.clearing.session.stage.Task;
|
||||||
import ru.spcex.clearing.session.stage.task.FormingPaymentInstructionPayload;
|
import ru.spcex.clearing.session.stage.task.FormingPaymentInstructionPayload;
|
||||||
import ru.spcex.platform.enumeration.*;
|
import ru.spcex.platform.enumeration.AccountType;
|
||||||
|
import ru.spcex.platform.enumeration.InstrumentType;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryCapacity;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryDesignation;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryInstrumentType;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryStatus;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryTradingParams;
|
||||||
|
import static ru.spcex.platform.enumeration.RegistryTradingParams.OS_T;
|
||||||
|
import static ru.spcex.platform.enumeration.RegistryTradingParams.TS_T;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryUnit;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgId;
|
import ru.spcex.platform.imdg.api.ImdgId;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
@ -36,14 +53,6 @@ import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
import ru.spcex.platform.utils.enumeration.SimpleMessageResolver;
|
import ru.spcex.platform.utils.enumeration.SimpleMessageResolver;
|
||||||
import ru.spcex.platform.utils.number.BigDecimalUtil;
|
import ru.spcex.platform.utils.number.BigDecimalUtil;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import static ru.spcex.platform.enumeration.RegistryTradingParams.CS_T;
|
|
||||||
import static ru.spcex.platform.enumeration.RegistryTradingParams.LS_T;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||||
public class FormingPaymentInstruction implements ISessionStage {
|
public class FormingPaymentInstruction implements ISessionStage {
|
||||||
|
|
@ -93,10 +102,16 @@ public class FormingPaymentInstruction implements ISessionStage {
|
||||||
|
|
||||||
|
|
||||||
private StageResult formingPaymentInstruction(Long sessionId) {
|
private StageResult formingPaymentInstruction(Long sessionId) {
|
||||||
RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(LS_T, CS_T);
|
RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(OS_T, TS_T);
|
||||||
String registryCodeCondition = registryCodeSqlBuilder.build();
|
String registryCodeCondition = registryCodeSqlBuilder.build();
|
||||||
|
|
||||||
Collection<Registry> obligations = registryImdg.getCollectionObjectsBySQL(registryCodeCondition);
|
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
||||||
|
Collection<Registry> obligations = registryImdg.getCollectionObjectsByPredicate(
|
||||||
|
pb.and(
|
||||||
|
pb.sql(registryCodeCondition),
|
||||||
|
pb.equals("registryStatus", RegistryStatus.OK.getKey())
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
List<Registry> obligationsByMoney = obligations.stream().filter(registry ->
|
List<Registry> obligationsByMoney = obligations.stream().filter(registry ->
|
||||||
new RegistryTradingParams(RegistryDesignation.L, RegistryInstrumentType.M, null, RegistryUnit.T).equalByRegistry(
|
new RegistryTradingParams(RegistryDesignation.L, RegistryInstrumentType.M, null, RegistryUnit.T).equalByRegistry(
|
||||||
|
|
|
||||||
|
|
@ -366,8 +366,8 @@ public class FormingPaymentInstructionAssets implements ISessionStage {
|
||||||
pb.equals("registryStatus", RegistryStatus.OK.getKey()),
|
pb.equals("registryStatus", RegistryStatus.OK.getKey()),
|
||||||
pb.equals("sessionId", sessionId),
|
pb.equals("sessionId", sessionId),
|
||||||
pb.or(
|
pb.or(
|
||||||
pb.sql(RegistryCodeSqlBuilder.getInstance(LM_T).build()),
|
pb.sql(RegistryCodeSqlBuilder.getInstance(OM_T).build()),
|
||||||
pb.sql(RegistryCodeSqlBuilder.getInstance(CM_T).build())
|
pb.sql(RegistryCodeSqlBuilder.getInstance(TM_T).build())
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
BigDecimal reduce = registryImdg.getCollectionObjectsByPredicate(cL)
|
BigDecimal reduce = registryImdg.getCollectionObjectsByPredicate(cL)
|
||||||
|
|
@ -376,7 +376,7 @@ public class FormingPaymentInstructionAssets implements ISessionStage {
|
||||||
.filter(rgs -> rgs.getSettlementDate() != null)
|
.filter(rgs -> rgs.getSettlementDate() != null)
|
||||||
.filter(rgs -> rgs.getSettlementDate().isAfter(rgs.getValueDate()))
|
.filter(rgs -> rgs.getSettlementDate().isAfter(rgs.getValueDate()))
|
||||||
.map(rgs -> {
|
.map(rgs -> {
|
||||||
if (RegistryDesignation.C.equalsByKey(rgs.getRegistryDesignation())) {
|
if (RegistryDesignation.T.equalsByKey(rgs.getRegistryDesignation())) {
|
||||||
return rgs.getBalance();
|
return rgs.getBalance();
|
||||||
} else {
|
} else {
|
||||||
return rgs.getBalance().abs().negate();
|
return rgs.getBalance().abs().negate();
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,15 @@
|
||||||
package ru.spcex.clearing.session.stage.impl;
|
package ru.spcex.clearing.session.stage.impl;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.Stream;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
@ -26,7 +36,15 @@ import ru.spcex.clearing.session.stage.ISessionStage;
|
||||||
import ru.spcex.clearing.session.stage.StageResult;
|
import ru.spcex.clearing.session.stage.StageResult;
|
||||||
import ru.spcex.clearing.session.stage.Task;
|
import ru.spcex.clearing.session.stage.Task;
|
||||||
import ru.spcex.clearing.session.stage.task.FormingPaymentInstructionDealsMkrPayload;
|
import ru.spcex.clearing.session.stage.task.FormingPaymentInstructionDealsMkrPayload;
|
||||||
import ru.spcex.platform.enumeration.*;
|
import ru.spcex.platform.enumeration.AccountStatus;
|
||||||
|
import ru.spcex.platform.enumeration.AccountType;
|
||||||
|
import ru.spcex.platform.enumeration.Allowed;
|
||||||
|
import ru.spcex.platform.enumeration.InstrumentType;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryStatus;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryTradingParams;
|
||||||
|
import static ru.spcex.platform.enumeration.RegistryTradingParams.OM_T;
|
||||||
|
import static ru.spcex.platform.enumeration.RegistryTradingParams.TM_T;
|
||||||
|
import ru.spcex.platform.enumeration.Section;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgId;
|
import ru.spcex.platform.imdg.api.ImdgId;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
@ -40,16 +58,6 @@ import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
import ru.spcex.platform.utils.enumeration.SimpleMessageResolver;
|
import ru.spcex.platform.utils.enumeration.SimpleMessageResolver;
|
||||||
import ru.spcex.platform.utils.number.BigDecimalUtil;
|
import ru.spcex.platform.utils.number.BigDecimalUtil;
|
||||||
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.function.Function;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
import static ru.spcex.platform.enumeration.RegistryTradingParams.CM_T;
|
|
||||||
import static ru.spcex.platform.enumeration.RegistryTradingParams.LM_T;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||||
public class FormingPaymentInstructionDealsFinalMkr implements ISessionStage {
|
public class FormingPaymentInstructionDealsFinalMkr implements ISessionStage {
|
||||||
|
|
@ -104,10 +112,11 @@ public class FormingPaymentInstructionDealsFinalMkr implements ISessionStage {
|
||||||
private Collection<Registry> selectRegistries() {
|
private Collection<Registry> selectRegistries() {
|
||||||
ImdgPredicateBuilder rgsPb = registryImdg.predicateBuilder();
|
ImdgPredicateBuilder rgsPb = registryImdg.predicateBuilder();
|
||||||
RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(
|
RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(
|
||||||
LM_T, CM_T
|
OM_T, TM_T
|
||||||
);
|
);
|
||||||
ImdgPredicate rgsCodePrdct = rgsPb.and(
|
ImdgPredicate rgsCodePrdct = rgsPb.and(
|
||||||
rgsPb.sql(registryCodeSqlBuilder.build()),
|
rgsPb.sql(registryCodeSqlBuilder.build()),
|
||||||
|
rgsPb.equals("registryStatus", RegistryStatus.OK.getKey()),
|
||||||
rgsPb.equals("settlementDate", LocalDate.now()));
|
rgsPb.equals("settlementDate", LocalDate.now()));
|
||||||
Collection<Registry> registries = registryImdg.getCollectionObjectsByPredicate(rgsCodePrdct);
|
Collection<Registry> registries = registryImdg.getCollectionObjectsByPredicate(rgsCodePrdct);
|
||||||
return registries.stream()
|
return registries.stream()
|
||||||
|
|
@ -150,8 +159,8 @@ public class FormingPaymentInstructionDealsFinalMkr implements ISessionStage {
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElse(null);
|
.orElse(null);
|
||||||
//интересуют обязательства и требования по деньгам
|
//интересуют обязательства и требования по деньгам
|
||||||
Registry cm_t = findByCode.apply(CM_T);
|
Registry cm_t = findByCode.apply(TM_T);
|
||||||
Registry lm_t = findByCode.apply(LM_T);
|
Registry lm_t = findByCode.apply(OM_T);
|
||||||
if (cm_t == null || lm_t == null) {
|
if (cm_t == null || lm_t == null) {
|
||||||
log.error("groupId {} cmt_t {} lm_t {} - both must be present", groupId, cm_t, lm_t);
|
log.error("groupId {} cmt_t {} lm_t {} - both must be present", groupId, cm_t, lm_t);
|
||||||
continue;
|
continue;
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ import ru.spcex.platform.enumeration.AccountStatus;
|
||||||
import ru.spcex.platform.enumeration.AccountType;
|
import ru.spcex.platform.enumeration.AccountType;
|
||||||
import ru.spcex.platform.enumeration.Allowed;
|
import ru.spcex.platform.enumeration.Allowed;
|
||||||
import ru.spcex.platform.enumeration.RegistryStatus;
|
import ru.spcex.platform.enumeration.RegistryStatus;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryTradingParams;
|
||||||
import static ru.spcex.platform.enumeration.RegistryTradingParams.*;
|
import static ru.spcex.platform.enumeration.RegistryTradingParams.*;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgId;
|
import ru.spcex.platform.imdg.api.ImdgId;
|
||||||
|
|
@ -110,11 +111,12 @@ public class FormingPaymentInstructionDepositReturn implements ISessionStage {
|
||||||
private StageResult formingPaymentInstruction(Long sessionId) {
|
private StageResult formingPaymentInstruction(Long sessionId) {
|
||||||
Instant now = Instant.now();
|
Instant now = Instant.now();
|
||||||
|
|
||||||
RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(LM_T,CM_T, LS_T, CS_T);
|
RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.OM_T, RegistryTradingParams.TM_T, RegistryTradingParams.OS_T, RegistryTradingParams.TS_T);
|
||||||
String registryCodeCondition = registryCodeSqlBuilder.build();
|
String registryCodeCondition = registryCodeSqlBuilder.build();
|
||||||
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
||||||
ImdgPredicate prdct = pb.and(
|
ImdgPredicate prdct = pb.and(
|
||||||
pb.sql(registryCodeCondition),
|
pb.sql(registryCodeCondition),
|
||||||
|
pb.equals("registryStatus", RegistryStatus.OK.getKey()),
|
||||||
pb.equals("sessionId", sessionId)
|
pb.equals("sessionId", sessionId)
|
||||||
);
|
);
|
||||||
Collection<Registry> obligations = registryImdg.getCollectionObjectsByPredicate(prdct)
|
Collection<Registry> obligations = registryImdg.getCollectionObjectsByPredicate(prdct)
|
||||||
|
|
@ -132,8 +134,8 @@ public class FormingPaymentInstructionDepositReturn implements ISessionStage {
|
||||||
ArrayList<PaymentInstruction> pmtCreated = new ArrayList<>();
|
ArrayList<PaymentInstruction> pmtCreated = new ArrayList<>();
|
||||||
for (Map.Entry<Long, List<Registry>> entry : registriesByGroup.entrySet()) {
|
for (Map.Entry<Long, List<Registry>> entry : registriesByGroup.entrySet()) {
|
||||||
List<Registry> groupRgs = entry.getValue();
|
List<Registry> groupRgs = entry.getValue();
|
||||||
Optional<Registry> lmtO = groupRgs.stream().filter(rgs -> RegistryManager.equalsByCode(LM_T, rgs)).findFirst();
|
Optional<Registry> lmtO = groupRgs.stream().filter(rgs -> RegistryManager.equalsByCode(RegistryTradingParams.OM_T, rgs)).findFirst();
|
||||||
Optional<Registry> cmtO = groupRgs.stream().filter(rgs -> RegistryManager.equalsByCode(CM_T, rgs)).findFirst();
|
Optional<Registry> cmtO = groupRgs.stream().filter(rgs -> RegistryManager.equalsByCode(RegistryTradingParams.TM_T, rgs)).findFirst();
|
||||||
if (lmtO.isEmpty() || cmtO.isEmpty()) {
|
if (lmtO.isEmpty() || cmtO.isEmpty()) {
|
||||||
log.error("groupId {} LM*T or CM*T not found", entry.getKey());
|
log.error("groupId {} LM*T or CM*T not found", entry.getKey());
|
||||||
continue;
|
continue;
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,8 @@ import ru.spcex.platform.enumeration.RegistryDesignation;
|
||||||
import ru.spcex.platform.enumeration.RegistryInstrumentType;
|
import ru.spcex.platform.enumeration.RegistryInstrumentType;
|
||||||
import ru.spcex.platform.enumeration.RegistryStatus;
|
import ru.spcex.platform.enumeration.RegistryStatus;
|
||||||
import ru.spcex.platform.enumeration.RegistryTradingParams;
|
import ru.spcex.platform.enumeration.RegistryTradingParams;
|
||||||
import static ru.spcex.platform.enumeration.RegistryTradingParams.*;
|
import static ru.spcex.platform.enumeration.RegistryTradingParams.AM_B;
|
||||||
|
import static ru.spcex.platform.enumeration.RegistryTradingParams.AM_T;
|
||||||
import ru.spcex.platform.enumeration.RegistryUnit;
|
import ru.spcex.platform.enumeration.RegistryUnit;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgId;
|
import ru.spcex.platform.imdg.api.ImdgId;
|
||||||
|
|
@ -112,12 +113,13 @@ public class FormingPaymentInstructionReturnMkr implements ISessionStage {
|
||||||
|
|
||||||
private StageResult formingPaymentInstruction(Long sessionId) {
|
private StageResult formingPaymentInstruction(Long sessionId) {
|
||||||
Instant now = Instant.now();
|
Instant now = Instant.now();
|
||||||
RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(LM_T, CM_T);
|
RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.OM_T, RegistryTradingParams.TM_T);
|
||||||
String registryCodeCondition = registryCodeSqlBuilder.build();
|
String registryCodeCondition = registryCodeSqlBuilder.build();
|
||||||
|
|
||||||
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
||||||
ImdgPredicate prdct = pb.and(
|
ImdgPredicate prdct = pb.and(
|
||||||
pb.sql(registryCodeCondition),
|
pb.sql(registryCodeCondition),
|
||||||
|
pb.equals("registryStatus", RegistryStatus.OK.getKey()),
|
||||||
pb.equals("sessionId", sessionId)
|
pb.equals("sessionId", sessionId)
|
||||||
);
|
);
|
||||||
Collection<Registry> rgsAll = registryImdg.getCollectionObjectsByPredicate(prdct)
|
Collection<Registry> rgsAll = registryImdg.getCollectionObjectsByPredicate(prdct)
|
||||||
|
|
@ -130,7 +132,7 @@ public class FormingPaymentInstructionReturnMkr implements ISessionStage {
|
||||||
|
|
||||||
log.debug("changing assets by CM*T");
|
log.debug("changing assets by CM*T");
|
||||||
List<Registry> requirementsByMoney = rgsAll.stream()
|
List<Registry> requirementsByMoney = rgsAll.stream()
|
||||||
.filter(registry -> equalByRgs(CM_T, registry))
|
.filter(registry -> equalByRgs(RegistryTradingParams.TM_T, registry))
|
||||||
.toList();
|
.toList();
|
||||||
//изменяем активы по требованиям по деньгам CM_T
|
//изменяем активы по требованиям по деньгам CM_T
|
||||||
for (Registry requirementByMoney : requirementsByMoney) {
|
for (Registry requirementByMoney : requirementsByMoney) {
|
||||||
|
|
@ -155,8 +157,8 @@ public class FormingPaymentInstructionReturnMkr implements ISessionStage {
|
||||||
log.info("registry groups found {}", registriesByGroup.size());
|
log.info("registry groups found {}", registriesByGroup.size());
|
||||||
for (Map.Entry<Long, List<Registry>> entry : registriesByGroup.entrySet()) {
|
for (Map.Entry<Long, List<Registry>> entry : registriesByGroup.entrySet()) {
|
||||||
List<Registry> groupRgs = entry.getValue();
|
List<Registry> groupRgs = entry.getValue();
|
||||||
Optional<Registry> lmtO = groupRgs.stream().filter(rgs -> equalByRgs(LM_T, rgs)).findFirst();
|
Optional<Registry> lmtO = groupRgs.stream().filter(rgs -> equalByRgs(RegistryTradingParams.OM_T, rgs)).findFirst();
|
||||||
Optional<Registry> cmtO = groupRgs.stream().filter(rgs -> equalByRgs(CM_T, rgs)).findFirst();
|
Optional<Registry> cmtO = groupRgs.stream().filter(rgs -> equalByRgs(RegistryTradingParams.TM_T, rgs)).findFirst();
|
||||||
if (lmtO.isEmpty() || cmtO.isEmpty()) {
|
if (lmtO.isEmpty() || cmtO.isEmpty()) {
|
||||||
log.error("LM*T or CM*T not found for group {}", entry.getKey());
|
log.error("LM*T or CM*T not found for group {}", entry.getKey());
|
||||||
continue;
|
continue;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,16 @@
|
||||||
package ru.spcex.clearing.session.stage.impl;
|
package ru.spcex.clearing.session.stage.impl;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.Stream;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
@ -26,7 +37,13 @@ import ru.spcex.clearing.session.stage.ISessionStage;
|
||||||
import ru.spcex.clearing.session.stage.StageResult;
|
import ru.spcex.clearing.session.stage.StageResult;
|
||||||
import ru.spcex.clearing.session.stage.Task;
|
import ru.spcex.clearing.session.stage.Task;
|
||||||
import ru.spcex.clearing.session.stage.task.FormingPaymentInstructionDealsMkrPayload;
|
import ru.spcex.clearing.session.stage.task.FormingPaymentInstructionDealsMkrPayload;
|
||||||
import ru.spcex.platform.enumeration.*;
|
import ru.spcex.platform.enumeration.AccountStatus;
|
||||||
|
import ru.spcex.platform.enumeration.AccountType;
|
||||||
|
import ru.spcex.platform.enumeration.Allowed;
|
||||||
|
import ru.spcex.platform.enumeration.InstrumentType;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryStatus;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryTradingParams;
|
||||||
|
import static ru.spcex.platform.enumeration.RegistryTradingParams.*;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgId;
|
import ru.spcex.platform.imdg.api.ImdgId;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
@ -40,15 +57,6 @@ import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
import ru.spcex.platform.utils.enumeration.SimpleMessageResolver;
|
import ru.spcex.platform.utils.enumeration.SimpleMessageResolver;
|
||||||
import ru.spcex.platform.utils.number.BigDecimalUtil;
|
import ru.spcex.platform.utils.number.BigDecimalUtil;
|
||||||
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.function.Function;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
import static ru.spcex.platform.enumeration.RegistryTradingParams.*;
|
|
||||||
import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD;
|
import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|
@ -106,10 +114,11 @@ public class FormingPaymentInstructionSecondaryT0 implements ISessionStage {
|
||||||
private Collection<Registry> selectRegistries() {
|
private Collection<Registry> selectRegistries() {
|
||||||
ImdgPredicateBuilder rgsPb = registryImdg.predicateBuilder();
|
ImdgPredicateBuilder rgsPb = registryImdg.predicateBuilder();
|
||||||
RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(
|
RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(
|
||||||
CS_T, LS_T
|
RegistryTradingParams.TS_T, RegistryTradingParams.OS_T
|
||||||
);
|
);
|
||||||
ImdgPredicate rgsCodePrdct = rgsPb.and(
|
ImdgPredicate rgsCodePrdct = rgsPb.and(
|
||||||
rgsPb.sql(registryCodeSqlBuilder.build()),
|
rgsPb.sql(registryCodeSqlBuilder.build()),
|
||||||
|
rgsPb.equals("registryStatus", RegistryStatus.OK.getKey()),
|
||||||
rgsPb.equals("settlementDate", LocalDate.now()));
|
rgsPb.equals("settlementDate", LocalDate.now()));
|
||||||
Collection<Registry> registries = registryImdg.getCollectionObjectsByPredicate(rgsCodePrdct);
|
Collection<Registry> registries = registryImdg.getCollectionObjectsByPredicate(rgsCodePrdct);
|
||||||
return registries.stream()
|
return registries.stream()
|
||||||
|
|
@ -151,8 +160,8 @@ public class FormingPaymentInstructionSecondaryT0 implements ISessionStage {
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElse(null);
|
.orElse(null);
|
||||||
//интересуют обязательства и требования по деньгам
|
//интересуют обязательства и требования по деньгам
|
||||||
Registry cs_t = findByCode.apply(CS_T);
|
Registry cs_t = findByCode.apply(RegistryTradingParams.TS_T);
|
||||||
Registry ls_t = findByCode.apply(LS_T);
|
Registry ls_t = findByCode.apply(RegistryTradingParams.OS_T);
|
||||||
if (cs_t == null || ls_t == null) {
|
if (cs_t == null || ls_t == null) {
|
||||||
log.error("groupId {} cmt_t {} ls_t {} - both must be present", groupId, cs_t, ls_t);
|
log.error("groupId {} cmt_t {} ls_t {} - both must be present", groupId, cs_t, ls_t);
|
||||||
continue;
|
continue;
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@ import ru.spcex.platform.enumeration.AccountStatus;
|
||||||
import ru.spcex.platform.enumeration.AccountType;
|
import ru.spcex.platform.enumeration.AccountType;
|
||||||
import ru.spcex.platform.enumeration.Allowed;
|
import ru.spcex.platform.enumeration.Allowed;
|
||||||
import ru.spcex.platform.enumeration.InstrumentType;
|
import ru.spcex.platform.enumeration.InstrumentType;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryStatus;
|
||||||
import ru.spcex.platform.enumeration.RegistryTradingParams;
|
import ru.spcex.platform.enumeration.RegistryTradingParams;
|
||||||
import static ru.spcex.platform.enumeration.RegistryTradingParams.*;
|
import static ru.spcex.platform.enumeration.RegistryTradingParams.*;
|
||||||
import ru.spcex.platform.enumeration.Sender;
|
import ru.spcex.platform.enumeration.Sender;
|
||||||
|
|
@ -118,10 +119,11 @@ public class FormingPaymentInstructionSecurities implements ISessionStage {
|
||||||
private Collection<Registry> selectSecurityRegistries(Long sessionId) {
|
private Collection<Registry> selectSecurityRegistries(Long sessionId) {
|
||||||
ImdgPredicateBuilder rgsPb = registryImdg.predicateBuilder();
|
ImdgPredicateBuilder rgsPb = registryImdg.predicateBuilder();
|
||||||
RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(
|
RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(
|
||||||
CS_T, LS_T
|
RegistryTradingParams.TS_T, RegistryTradingParams.OS_T
|
||||||
);
|
);
|
||||||
ImdgPredicate rgsCodePrdct = rgsPb.and(
|
ImdgPredicate rgsCodePrdct = rgsPb.and(
|
||||||
rgsPb.sql(registryCodeSqlBuilder.build()),
|
rgsPb.sql(registryCodeSqlBuilder.build()),
|
||||||
|
rgsPb.equals("registryStatus", RegistryStatus.OK.getKey()),
|
||||||
rgsPb.equals("sessionId", sessionId),
|
rgsPb.equals("sessionId", sessionId),
|
||||||
rgsPb.equals("settlementDate", LocalDate.now()));
|
rgsPb.equals("settlementDate", LocalDate.now()));
|
||||||
Collection<Registry> registries = registryImdg.getCollectionObjectsByPredicate(rgsCodePrdct);
|
Collection<Registry> registries = registryImdg.getCollectionObjectsByPredicate(rgsCodePrdct);
|
||||||
|
|
@ -171,8 +173,8 @@ public class FormingPaymentInstructionSecurities implements ISessionStage {
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElse(null);
|
.orElse(null);
|
||||||
//интересуют обязательства и требования по деньгам
|
//интересуют обязательства и требования по деньгам
|
||||||
Registry cs_t = findByCode.apply(CS_T);
|
Registry cs_t = findByCode.apply(RegistryTradingParams.TS_T);
|
||||||
Registry ls_t = findByCode.apply(LS_T);
|
Registry ls_t = findByCode.apply(RegistryTradingParams.OS_T);
|
||||||
if (cs_t == null || ls_t == null) {
|
if (cs_t == null || ls_t == null) {
|
||||||
log.error("groupId {} cmt_t {} ls_t {} - both must be present", groupId, cs_t, ls_t);
|
log.error("groupId {} cmt_t {} ls_t {} - both must be present", groupId, cs_t, ls_t);
|
||||||
continue;
|
continue;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package ru.spcex.clearing.session.stage.impl;
|
package ru.spcex.clearing.session.stage.impl;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
@ -22,9 +24,6 @@ import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgId;
|
import ru.spcex.platform.imdg.api.ImdgId;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||||
public class FormingRegistersOnOS implements ISessionStage {
|
public class FormingRegistersOnOS implements ISessionStage {
|
||||||
|
|
@ -45,7 +44,7 @@ public class FormingRegistersOnOS implements ISessionStage {
|
||||||
FormingRegistersOnOSPayload payload = (FormingRegistersOnOSPayload) task.getData();
|
FormingRegistersOnOSPayload payload = (FormingRegistersOnOSPayload) task.getData();
|
||||||
switch (task.getTaskType()) {
|
switch (task.getTaskType()) {
|
||||||
case FormingRegistersOnOS -> {
|
case FormingRegistersOnOS -> {
|
||||||
return createRegistryOnObligationsAndSettlementRequirements(payload.getSessionId());
|
return new StageResult<>(null, true);
|
||||||
}
|
}
|
||||||
default -> {
|
default -> {
|
||||||
throw new IllegalStateException("Unknown task type: " + task.getTaskType());
|
throw new IllegalStateException("Unknown task type: " + task.getTaskType());
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,23 @@
|
||||||
package ru.spcex.clearing.session.stage.payment.group;
|
package ru.spcex.clearing.session.stage.payment.group;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import ru.clearing.classes.statics.data.registry.Registry;
|
import ru.clearing.classes.statics.data.registry.Registry;
|
||||||
import ru.spcex.clearing.service.registry.RegistryManager;
|
import ru.spcex.clearing.service.registry.RegistryManager;
|
||||||
import ru.spcex.platform.enumeration.RegistryTradingParams;
|
import ru.spcex.platform.enumeration.RegistryTradingParams;
|
||||||
|
import static ru.spcex.platform.enumeration.RegistryTradingParams.OS_T;
|
||||||
|
import static ru.spcex.platform.enumeration.RegistryTradingParams.TS_T;
|
||||||
import ru.spcex.platform.utils.collection.Pair;
|
import ru.spcex.platform.utils.collection.Pair;
|
||||||
import ru.spcex.platform.utils.text.TextUtil;
|
import ru.spcex.platform.utils.text.TextUtil;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import static ru.spcex.platform.enumeration.RegistryTradingParams.CS_T;
|
|
||||||
import static ru.spcex.platform.enumeration.RegistryTradingParams.LS_T;
|
|
||||||
|
|
||||||
public class RegistryLiabilitiesGroup {
|
public class RegistryLiabilitiesGroup {
|
||||||
private static final Logger log = LoggerFactory.getLogger(RegistryLiabilitiesGroup.class);
|
private static final Logger log = LoggerFactory.getLogger(RegistryLiabilitiesGroup.class);
|
||||||
|
|
||||||
|
|
@ -25,8 +28,8 @@ public class RegistryLiabilitiesGroup {
|
||||||
.map(entry -> {
|
.map(entry -> {
|
||||||
Long groupId = entry.getKey();
|
Long groupId = entry.getKey();
|
||||||
List<Registry> value = entry.getValue();
|
List<Registry> value = entry.getValue();
|
||||||
Registry ls_t = obtain(value, LS_T);
|
Registry ls_t = obtain(value, OS_T);
|
||||||
Registry cs_t = obtain(value, CS_T);
|
Registry cs_t = obtain(value, TS_T);
|
||||||
if (ls_t == null || cs_t == null) {
|
if (ls_t == null || cs_t == null) {
|
||||||
log.error("groupId {} registries {} failed to find LS_T/CS_T", groupId, value.stream()
|
log.error("groupId {} registries {} failed to find LS_T/CS_T", groupId, value.stream()
|
||||||
.map(Registry::getId)
|
.map(Registry::getId)
|
||||||
|
|
|
||||||
|
|
@ -103,7 +103,7 @@ public record RegistryTradingParams(RegistryDesignation registryDesignation,
|
||||||
public final static RegistryTradingParams DM__;
|
public final static RegistryTradingParams DM__;
|
||||||
public final static RegistryTradingParams AM__;
|
public final static RegistryTradingParams AM__;
|
||||||
public final static RegistryTradingParams AS__;
|
public final static RegistryTradingParams AS__;
|
||||||
public final static RegistryTradingParams CM__;
|
public final static RegistryTradingParams TM__;
|
||||||
public final static RegistryTradingParams C__T;
|
public final static RegistryTradingParams C__T;
|
||||||
public final static RegistryTradingParams O__T;
|
public final static RegistryTradingParams O__T;
|
||||||
public final static RegistryTradingParams T__T;
|
public final static RegistryTradingParams T__T;
|
||||||
|
|
@ -212,7 +212,7 @@ public record RegistryTradingParams(RegistryDesignation registryDesignation,
|
||||||
RegistryInstrumentType.S,
|
RegistryInstrumentType.S,
|
||||||
null,
|
null,
|
||||||
null);
|
null);
|
||||||
CM__ = new RegistryTradingParams(RegistryDesignation.C,
|
TM__ = new RegistryTradingParams(RegistryDesignation.T,
|
||||||
RegistryInstrumentType.M,
|
RegistryInstrumentType.M,
|
||||||
null,
|
null,
|
||||||
null);
|
null);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue